diff --git a/output.go b/output.go index fc26a1f..0121087 100644 --- a/output.go +++ b/output.go @@ -212,6 +212,8 @@ func (w *htmlOut) elem(elt *element) *htmlOut { w.inline("", elt) case STRONG: w.inline("", elt) + case STRIKE: + w.inline("", elt) case LIST: w.children(elt) case RAW: diff --git a/parser.leg b/parser.leg index f3278fc..1246a5a 100644 --- a/parser.leg +++ b/parser.leg @@ -71,6 +71,7 @@ const ( HTML EMPH STRONG + STRIKE PLAIN PARA LISTITEM @@ -480,6 +481,7 @@ Inline = Str | Space | Strong | Emph + | Strike | Image | Link | NoteReference @@ -532,6 +534,7 @@ Symbol = < SpecialChar > UlOrStarLine = (UlLine | StarLine) { $$ = p.mkString(yytext) } StarLine = < "****" '*'* > | < Spacechar '*'+ &Spacechar > UlLine = < "____" '_'* > | < Spacechar '_'+ &Spacechar > +TildeLine = < "~~~~" '~'* > | < Spacechar '~'+ &Spacechar > Emph = EmphStar | EmphUl @@ -567,6 +570,15 @@ StrongUl = "__" !Whitespace "__" { $$ = p.mkList(STRONG, a) } +TwoTildeOpen = !TildeLine "~~" !Spacechar !Newline +TwoTildeClose = !Spacechar !Newline a:Inline "~~" { $$ = a; } + +Strike = TwoTildeOpen + a:StartList + ( !TwoTildeClose Inline { a = cons($$, a) } )* + TwoTildeClose { a = cons($$, a) } + { $$ = p.mkList(STRIKE, a) } + Image = '!' ( ExplicitLink | ReferenceLink ) { if $$.key == LINK { $$.key = IMAGE @@ -702,7 +714,7 @@ Nonspacechar = !Spacechar !Newline . Newline = '\n' | '\r' '\n'? Sp = Spacechar* Spnl = Sp (Newline Sp)? -SpecialChar = '*' | '_' | '`' | '&' | '[' | ']' | '(' | ')' | '<' | '!' | '#' | '\\' | '\'' | '"' | ExtendedSpecialChar +SpecialChar = '~' | '*' | '_' | '`' | '&' | '[' | ']' | '(' | ')' | '<' | '!' | '#' | '\\' | '\'' | '"' | ExtendedSpecialChar NormalChar = !( SpecialChar | Spacechar | Newline ) . Alphanumeric = [0-9A-Za-z] | '\200' | '\201' | '\202' | '\203' | '\204' | '\205' | '\206' | '\207' | '\210' | '\211' | '\212' | '\213' | '\214' | '\215' | '\216' | '\217' | '\220' | '\221' | '\222' | '\223' | '\224' | '\225' | '\226' | '\227' | '\230' | '\231' | '\232' | '\233' | '\234' | '\235' | '\236' | '\237' | '\240' | '\241' | '\242' | '\243' | '\244' | '\245' | '\246' | '\247' | '\250' | '\251' | '\252' | '\253' | '\254' | '\255' | '\256' | '\257' | '\260' | '\261' | '\262' | '\263' | '\264' | '\265' | '\266' | '\267' | '\270' | '\271' | '\272' | '\273' | '\274' | '\275' | '\276' | '\277' | '\300' | '\301' | '\302' | '\303' | '\304' | '\305' | '\306' | '\307' | '\310' | '\311' | '\312' | '\313' | '\314' | '\315' | '\316' | '\317' | '\320' | '\321' | '\322' | '\323' | '\324' | '\325' | '\326' | '\327' | '\330' | '\331' | '\332' | '\333' | '\334' | '\335' | '\336' | '\337' | '\340' | '\341' | '\342' | '\343' | '\344' | '\345' | '\346' | '\347' | '\350' | '\351' | '\352' | '\353' | '\354' | '\355' | '\356' | '\357' | '\360' | '\361' | '\362' | '\363' | '\364' | '\365' | '\366' | '\367' | '\370' | '\371' | '\372' | '\373' | '\374' | '\375' | '\376' | '\377' AlphanumericAscii = [A-Za-z0-9] @@ -1032,6 +1044,7 @@ var keynames = [numVAL]string{ HTML: "HTML", EMPH: "EMPH", STRONG: "STRONG", + STRIKE: "STRIKE", PLAIN: "PLAIN", PARA: "PARA", LISTITEM: "LISTITEM", diff --git a/portid b/portid index 7d645f5..259119c 100644 --- a/portid +++ b/portid @@ -1 +1 @@ -208 +9629df92a0de