public this repo is viewable by everyone
Description: An implementation of markdown in C, using a PEG grammar
Clone URL: git://github.com/jgm/peg-markdown.git
Repo Search:
Added support for single and double quote with smart option.
jgm (author)
13 days ago
commit  29d95747e6b42fba44976ce22cf392d2a1e68504
tree    b6b40995827a6320f676b68f72868e655f8cf5fa
parent  7738d529b1bf0434dceddb0fc89845b156cdaf3c
...
111
112
113
 
 
 
 
 
 
 
 
 
 
114
115
116
...
318
319
320
 
 
 
 
 
 
 
 
 
 
321
322
323
...
475
476
477
 
 
 
 
 
 
 
 
 
 
478
479
480
...
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
...
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
...
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
0
@@ -111,6 +111,16 @@ void print_html_element(element elt, bool obfuscate) {
0
     case ENDASH:
0
         printf("–");
0
         break;
0
+ case SINGLEQUOTED:
0
+ printf("‘");
0
+ print_html_element_list(elt.children, obfuscate);
0
+ printf("’");
0
+ break;
0
+ case DOUBLEQUOTED:
0
+ printf("“");
0
+ print_html_element_list(elt.children, obfuscate);
0
+ printf("”");
0
+ break;
0
     case CODE:
0
         printf("<code>");
0
         print_html_string(elt.contents.str, obfuscate);
0
@@ -318,6 +328,16 @@ void print_latex_element(element elt) {
0
     case ENDASH:
0
         printf("--");
0
         break;
0
+ case SINGLEQUOTED:
0
+ printf("`");
0
+ print_latex_element_list(elt.children);
0
+ printf("'");
0
+ break;
0
+ case DOUBLEQUOTED:
0
+ printf("``");
0
+ print_latex_element_list(elt.children);
0
+ printf("''");
0
+ break;
0
     case CODE:
0
         printf("\\texttt{");
0
         print_latex_string(elt.contents.str);
0
@@ -475,6 +495,16 @@ void print_groff_mm_element(element elt, int count) {
0
     case ENDASH:
0
         printf("\\[en]");
0
         break;
0
+ case SINGLEQUOTED:
0
+ printf("`");
0
+ print_groff_mm_element_list(elt.children);
0
+ printf("'");
0
+ break;
0
+ case DOUBLEQUOTED:
0
+ printf("\\[lq]");
0
+ print_groff_mm_element_list(elt.children);
0
+ printf("\\[rq]");
0
+ break;
0
     case CODE:
0
         printf("\\fC");
0
         print_groff_string(elt.contents.str);
...
748
749
750
751
 
752
753
754
 
755
756
 
 
757
758
759
760
 
 
761
762
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
763
764
765
...
748
749
750
 
751
752
753
 
754
755
 
756
757
758
759
760
 
761
762
763
 
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
0
@@ -748,18 +748,41 @@ SkipBlock = ( !BlankLine Line )+ BlankLine*
0
 
0
 # Syntax extensions
0
 
0
-ExtendedSpecialChar = &{ (syntax_extensions & EXT_SMART) } ('.' | '-')
0
+ExtendedSpecialChar = &{ (syntax_extensions & EXT_SMART) } ('.' | '-' | '\'' | '"' )
0
 
0
 Smart = &{ (syntax_extensions & EXT_SMART) }
0
- ( Ellipsis | Dash )
0
+ ( Ellipsis | Dash | SingleQuoted | DoubleQuoted )
0
 
0
-Ellipsis = ("..." | ". . .") { $$.key = ELLIPSIS; }
0
+Ellipsis = ("..." | ". . .")
0
+ { $$.key = ELLIPSIS; }
0
 
0
 Dash = EmDash | EnDash
0
 
0
-EnDash = '-' &Digit { $$.key = ENDASH; }
0
+EnDash = '-' &Digit
0
+ { $$.key = ENDASH; }
0
 
0
-EmDash = Sp ("---" | "--") Sp { $$.key = EMDASH; }
0
+EmDash = Sp ("---" | "--") Sp
0
+ { $$.key = EMDASH; }
0
+
0
+SingleQuoteStart = '\'' ![)!\],.;:-? \t\n] !( ( "s" | "t" | "m" | "ve" | "ll" | "re" ) !Alphanumeric )
0
+
0
+SingleQuoteEnd = '\'' !Alphanumeric
0
+
0
+SingleQuoted = SingleQuoteStart
0
+ a:StartList
0
+ ( !SingleQuoteEnd b:Inline { pushelt(b, &a); } )+
0
+ SingleQuoteEnd
0
+ { $$ = mk_list(SINGLEQUOTED, a); }
0
+
0
+DoubleQuoteStart = '"'
0
+
0
+DoubleQuoteEnd = '"'
0
+
0
+DoubleQuoted = DoubleQuoteStart
0
+ a:StartList
0
+ ( !DoubleQuoteEnd b:Inline { pushelt(b, &a); } )+
0
+ DoubleQuoteEnd
0
+ { $$ = mk_list(DOUBLEQUOTED, a); }
0
 
0
 %%
0
 
...
30
31
32
 
 
33
34
35
...
30
31
32
33
34
35
36
37
0
@@ -30,6 +30,8 @@ enum keys { LIST, /* A generic list of values. For ordered and bullet lists,
0
             ELLIPSIS,
0
             EMDASH,
0
             ENDASH,
0
+ SINGLEQUOTED,
0
+ DOUBLEQUOTED,
0
             STR,
0
             LINK,
0
             IMAGE,

Comments

    No one has commented yet.