8
8
"regexp"
9
9
"strings"
10
10
11
+ "github.com/cooper/quiki/adminifier/utils"
11
12
"github.com/russross/blackfriday/v2"
12
13
)
13
14
@@ -277,16 +278,16 @@ func (r *QuikiRenderer) RenderNode(w io.Writer, node *blackfriday.Node, entering
277
278
case blackfriday .Text :
278
279
s := string (node .Literal )
279
280
if node .Parent .Type == blackfriday .Link {
280
- r .addText (w , quikiEscLink (s ))
281
+ r .addText (w , utils . EscLink (s ))
281
282
} else if node .Parent .Type == blackfriday .Paragraph && node .Parent .Parent .Type == blackfriday .Item {
282
- r .addText (w , quikiEscListMapValue (s ))
283
+ r .addText (w , utils . EscListMapValue (s ))
283
284
} else if node .Parent .Type == blackfriday .Item {
284
- r .addText (w , quikiEscListMapValue (s ))
285
+ r .addText (w , utils . EscListMapValue (s ))
285
286
} else if node .Parent .Type == blackfriday .Heading {
286
287
r .heading += s
287
- r .addText (w , quikiEscFmt (s ))
288
+ r .addText (w , utils . EscFmt (s ))
288
289
} else {
289
- r .addText (w , quikiEscFmt (s ))
290
+ r .addText (w , utils . EscFmt (s ))
290
291
}
291
292
292
293
// newline
@@ -328,7 +329,7 @@ func (r *QuikiRenderer) RenderNode(w io.Writer, node *blackfriday.Node, entering
328
329
if r .Flags & SkipHTML != 0 {
329
330
break
330
331
}
331
- html := quikiEscFmt (string (node .Literal ))
332
+ html := utils . EscFmt (string (node .Literal ))
332
333
r .addText (w , "[html:" + html + "]" )
333
334
334
335
// link
@@ -344,7 +345,7 @@ func (r *QuikiRenderer) RenderNode(w io.Writer, node *blackfriday.Node, entering
344
345
} else {
345
346
if entering {
346
347
link := string (r .addAbsPrefix (dest ))
347
- link = quikiEscLink (link )
348
+ link = utils . EscLink (link )
348
349
if hashIdx := strings .IndexByte (link , '#' ); hashIdx != - 1 {
349
350
r .linkDest = strings .TrimSuffix (link [:hashIdx ], ".md" ) + link [hashIdx :]
350
351
} else {
@@ -374,7 +375,7 @@ func (r *QuikiRenderer) RenderNode(w io.Writer, node *blackfriday.Node, entering
374
375
dest := node .LinkData .Destination
375
376
dest = r .addAbsPrefix (dest )
376
377
// FIXME: if dest is not relative, we can't display this image
377
- r .addText (w , "~image {\n file: " + quikiEsc (string (dest ))+ ";\n alt: " )
378
+ r .addText (w , "~image {\n file: " + utils . Esc (string (dest ))+ ";\n alt: " )
378
379
} else {
379
380
// FIXME: can we do anything with node.LinkData.Title?
380
381
r .out (w , []byte (";\n }" ))
@@ -385,9 +386,9 @@ func (r *QuikiRenderer) RenderNode(w io.Writer, node *blackfriday.Node, entering
385
386
var code string
386
387
if node .Parent != nil && node .Parent .Parent != nil &&
387
388
node .Parent .Type == blackfriday .Paragraph && node .Parent .Parent .Type == blackfriday .Item {
388
- code = quikiEscListMapValue (string (node .Literal ))
389
+ code = utils . EscListMapValue (string (node .Literal ))
389
390
} else {
390
- code = quikiEscFmt (string (node .Literal ))
391
+ code = utils . EscFmt (string (node .Literal ))
391
392
}
392
393
r .addText (w , "[c]" + code + "[/c]" )
393
394
@@ -448,7 +449,7 @@ func (r *QuikiRenderer) RenderNode(w io.Writer, node *blackfriday.Node, entering
448
449
r .cr (w )
449
450
r .addText (w , "~html {\n " )
450
451
r .indent ++
451
- r .addText (w , quikiEsc (string (node .Literal )))
452
+ r .addText (w , utils . Esc (string (node .Literal )))
452
453
r .indent --
453
454
r .addText (w , "\n }" )
454
455
r .cr (w )
@@ -581,14 +582,14 @@ func (r *QuikiRenderer) RenderNode(w io.Writer, node *blackfriday.Node, entering
581
582
r .cr (w )
582
583
583
584
// TODO: count opening and closing brackets.
584
- // if they match, use brace-escape rather than quikiEsc ()
585
+ // if they match, use brace-escape rather than utils.Esc ()
585
586
r .addText (w , "~code " )
586
587
if lang := codeLanguage (node .Info ); lang != "" {
587
588
r .addText (w , "[" + lang + "] " )
588
589
}
589
590
r .addText (w , "{\n " )
590
591
r .indent ++
591
- r .addText (w , quikiEsc (string (node .Literal )))
592
+ r .addText (w , utils . Esc (string (node .Literal )))
592
593
r .indent --
593
594
r .addText (w , "}" )
594
595
@@ -677,7 +678,7 @@ func (r *QuikiRenderer) RenderNode(w io.Writer, node *blackfriday.Node, entering
677
678
func (r * QuikiRenderer ) RenderFooter (w io.Writer , ast * blackfriday.Node ) {
678
679
// title must be done after the heading is extracted
679
680
if r .Title != "" {
680
- io .WriteString (w , "\n @page.title: " + quikiEscFmt (r .Title )+ ";\n " )
681
+ io .WriteString (w , "\n @page.title: " + utils . EscFmt (r .Title )+ ";\n " )
681
682
}
682
683
}
683
684
@@ -693,44 +694,3 @@ func (r *QuikiRenderer) RenderHeader(w io.Writer, ast *blackfriday.Node) {
693
694
io .WriteString (w , "toc{}\n \n " )
694
695
}
695
696
}
696
-
697
- func quikiEsc (s string ) string {
698
-
699
- // escape existing escapes
700
- s = strings .Replace (s , "\\ " , "\\ \\ " , - 1 )
701
-
702
- // ecape curly brackets
703
- s = strings .Replace (s , "{" , "\\ {" , - 1 )
704
- s = strings .Replace (s , "}" , "\\ }" , - 1 )
705
-
706
- // fix comments (see wikifier#62)
707
- s = strings .Replace (s , "/*" , "\\ /*" , - 1 )
708
-
709
- return s
710
- }
711
-
712
- // like quikiEsc except also escapes formatting tags
713
- func quikiEscFmt (s string ) string {
714
- s = quikiEsc (s )
715
- s = strings .Replace (s , "[" , "\\ [" , - 1 )
716
- s = strings .Replace (s , "]" , "\\ ]" , - 1 )
717
- return s
718
- }
719
-
720
- // like quikiEscFmt except also escapes pipe for [[ links ]]
721
- func quikiEscLink (s string ) string {
722
- s = quikiEscFmt (s )
723
- return strings .Replace (s , "|" , "\\ |" , - 1 )
724
- }
725
-
726
- // like quikiEscFmt except also escapes semicolon
727
- func quikiEscListMapValue (s string ) string {
728
- s = quikiEscFmt (s )
729
- return strings .Replace (s , ";" , "\\ ;" , - 1 )
730
- }
731
-
732
- // like quikiEscFmt except also escapes colon and semicolon
733
- func quikiEscMapKey (s string ) string {
734
- s = quikiEscListMapValue (s )
735
- return strings .Replace (s , ":" , "\\ :" , - 1 )
736
- }
0 commit comments