]> git.immae.eu Git - github/Chocobozzz/PeerTube.git/blobdiff - client/src/app/videos/shared/markdown.service.ts
Add help to customizations configuration options
[github/Chocobozzz/PeerTube.git] / client / src / app / videos / shared / markdown.service.ts
index bd100f0926dcc88b95998f1e1e606dfa27aed3e1..9d73efa4640695eed3b9c7d2650f13a87472044e 100644 (file)
@@ -4,33 +4,22 @@ import * as MarkdownIt from 'markdown-it'
 
 @Injectable()
 export class MarkdownService {
+  static TEXT_RULES = [
+    'linkify',
+    'autolink',
+    'emphasis',
+    'link',
+    'newline',
+    'list'
+  ]
+  static ENHANCED_RULES = MarkdownService.TEXT_RULES.concat([ 'image' ])
+
   private textMarkdownIt: MarkdownIt.MarkdownIt
-  private linkifier: MarkdownIt.MarkdownIt
   private enhancedMarkdownIt: MarkdownIt.MarkdownIt
 
   constructor () {
-    this.textMarkdownIt = new MarkdownIt('zero', { linkify: true, breaks: true })
-      .enable('linkify')
-      .enable('autolink')
-      .enable('emphasis')
-      .enable('link')
-      .enable('newline')
-      .enable('list')
-    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)
+    this.textMarkdownIt = this.createMarkdownIt(MarkdownService.TEXT_RULES)
+    this.enhancedMarkdownIt = this.createMarkdownIt(MarkdownService.ENHANCED_RULES)
   }
 
   textMarkdownToHTML (markdown: string) {
@@ -45,10 +34,16 @@ export class MarkdownService {
     return this.avoidTruncatedLinks(html)
   }
 
-  linkify (text: string) {
-    const html = this.linkifier.render(text)
+  private createMarkdownIt (rules: string[]) {
+    const markdownIt = new MarkdownIt('zero', { linkify: true, breaks: true })
 
-    return this.avoidTruncatedLinks(html)
+    for (let rule of rules) {
+      markdownIt.enable(rule)
+    }
+
+    this.setTargetToLinks(markdownIt)
+
+    return markdownIt
   }
 
   private setTargetToLinks (markdownIt: MarkdownIt.MarkdownIt) {