]> git.immae.eu Git - github/Chocobozzz/PeerTube.git/blobdiff - client/src/app/videos/shared/markdown.service.ts
Add support to video support on client
[github/Chocobozzz/PeerTube.git] / client / src / app / videos / shared / markdown.service.ts
index a275446eba89aa0c2ee95b625f87f6c526d1b575..bd100f0926dcc88b95998f1e1e606dfa27aed3e1 100644 (file)
@@ -4,33 +4,51 @@ import * as MarkdownIt from 'markdown-it'
 
 @Injectable()
 export class MarkdownService {
-  private markdownIt: MarkdownIt.MarkdownIt
+  private textMarkdownIt: MarkdownIt.MarkdownIt
   private linkifier: MarkdownIt.MarkdownIt
+  private enhancedMarkdownIt: MarkdownIt.MarkdownIt
 
   constructor () {
-    this.markdownIt = new MarkdownIt('zero', { linkify: true, breaks: true })
+    this.textMarkdownIt = new MarkdownIt('zero', { linkify: true, breaks: true })
       .enable('linkify')
       .enable('autolink')
       .enable('emphasis')
       .enable('link')
       .enable('newline')
       .enable('list')
-    this.setTargetToLinks(this.markdownIt)
+    this.setTargetToLinks(this.textMarkdownIt)
+
+    this.enhancedMarkdownIt = new MarkdownIt('zero', { linkify: true, breaks: true })
+      .enable('linkify')
+      .enable('autolink')
+      .enable('emphasis')
+      .enable('link')
+      .enable('newline')
+      .enable('list')
+      .enable('image')
+    this.setTargetToLinks(this.enhancedMarkdownIt)
 
     this.linkifier = new MarkdownIt('zero', { linkify: true })
       .enable('linkify')
     this.setTargetToLinks(this.linkifier)
   }
 
-  markdownToHTML (markdown: string) {
-    const html = this.markdownIt.render(markdown)
+  textMarkdownToHTML (markdown: string) {
+    const html = this.textMarkdownIt.render(markdown)
 
-    // Avoid linkify truncated links
-    return html.replace(/<a[^>]+>([^<]+)<\/a>\s*...(<\/p>)?$/mi, '$1...')
+    return this.avoidTruncatedLinks(html)
+  }
+
+  enhancedMarkdownToHTML (markdown: string) {
+    const html = this.enhancedMarkdownIt.render(markdown)
+
+    return this.avoidTruncatedLinks(html)
   }
 
   linkify (text: string) {
-    return this.linkifier.render(text)
+    const html = this.linkifier.render(text)
+
+    return this.avoidTruncatedLinks(html)
   }
 
   private setTargetToLinks (markdownIt: MarkdownIt.MarkdownIt) {
@@ -53,4 +71,8 @@ export class MarkdownService {
       return defaultRender(tokens, idx, options, env, self)
     }
   }
+
+  private avoidTruncatedLinks (html) {
+    return html.replace(/<a[^>]+>([^<]+)<\/a>\s*...(<\/p>)?$/mi, '$1...')
+  }
 }