84
84
# : A little insect that is known
85
85
# to enjoy picnics
86
86
#
87
+ # ### Strike
88
+ #
89
+ # Example:
90
+ #
91
+ # ```
92
+ # This is ~~striked~~.
93
+ # ```
94
+ #
95
+ # Produces:
96
+ #
97
+ # This is ~~striked~~.
98
+ #
87
99
# ### Github
88
100
#
89
101
# The #github extension enables a partial set of [Github Flavored Markdown]
193
205
:github,
194
206
:html,
195
207
:notes,
208
+ :strike,
196
209
]
197
210
198
211
# :section: Extensions
243
256
244
257
extension :notes
245
258
259
+ ##
260
+ # Enables the strike extension
261
+
262
+ extension :strike
263
+
246
264
# :section:
247
265
248
266
##
466
484
"<b>#{text}</b>"
467
485
end
468
486
end
487
+
488
+ ##
489
+ # Wraps `text` in strike markup for rdoc inline formatting
490
+
491
+ def strike text
492
+ if text =~ /\A[a-z\d.\/-]+\z/i then
493
+ "~#{text}~"
494
+ else
495
+ "<s>#{text}</s>"
496
+ end
497
+ end
469
498
}
470
499
471
500
root = Doc
@@ -494,27 +523,27 @@ Para = @NonindentSpace Inlines:a @BlankLine+
494
523
Plain = Inlines:a
495
524
{ paragraph a }
496
525
497
- AtxInline = !@Newline !(@Sp? /#*/ @Sp @Newline) Inline
526
+ AtxInline = !@Newline !(@Sp /#*/ @Sp @Newline) Inline
498
527
499
528
AtxStart = < /\#{1,6}/ >
500
529
{ text.length }
501
530
502
- AtxHeading = AtxStart:s @Sp? AtxInline+:a (@Sp? /#*/ @Sp)? @Newline
531
+ AtxHeading = AtxStart:s @Sp AtxInline+:a (@Sp /#*/ @Sp)? @Newline
503
532
{ RDoc::Markup::Heading.new(s, a.join) }
504
533
505
534
SetextHeading = SetextHeading1 | SetextHeading2
506
535
507
- SetextBottom1 = /={3 ,}/ @Newline
536
+ SetextBottom1 = /={1 ,}/ @Newline
508
537
509
- SetextBottom2 = /-{3 ,}/ @Newline
538
+ SetextBottom2 = /-{1 ,}/ @Newline
510
539
511
540
SetextHeading1 = &(@RawLine SetextBottom1)
512
- @StartList:a ( !@Endline Inline:b { a << b } )+ @Sp? @Newline
541
+ @StartList:a ( !@Endline Inline:b { a << b } )+ @Sp @Newline
513
542
SetextBottom1
514
543
{ RDoc::Markup::Heading.new(1, a.join) }
515
544
516
545
SetextHeading2 = &(@RawLine SetextBottom2)
517
- @StartList:a ( !@Endline Inline:b { a << b })+ @Sp? @Newline
546
+ @StartList:a ( !@Endline Inline:b { a << b })+ @Sp @Newline
518
547
SetextBottom2
519
548
{ RDoc::Markup::Heading.new(2, a.join) }
520
549
@@ -733,6 +762,9 @@ HtmlBlockOpenScript = "<" Spnl ("script" | "SCRIPT") Spnl HtmlAttribute* ">"
733
762
HtmlBlockCloseScript = "<" Spnl "/" ("script" | "SCRIPT") Spnl ">"
734
763
HtmlBlockScript = HtmlBlockOpenScript (!HtmlBlockCloseScript .)* HtmlBlockCloseScript
735
764
765
+ HtmlBlockOpenHead = "<" Spnl ("head" | "HEAD") Spnl HtmlAttribute* ">"
766
+ HtmlBlockCloseHead = "<" Spnl "/" ("head" | "HEAD") Spnl ">"
767
+ HtmlBlockHead = HtmlBlockOpenHead (!HtmlBlockCloseHead .)* HtmlBlockCloseHead
736
768
737
769
HtmlBlockInTags = HtmlAnchor
738
770
| HtmlBlockAddress
@@ -768,6 +800,7 @@ HtmlBlockInTags = HtmlAnchor
768
800
| HtmlBlockThead
769
801
| HtmlBlockTr
770
802
| HtmlBlockScript
803
+ | HtmlBlockHead
771
804
772
805
HtmlBlock = < ( HtmlBlockInTags | HtmlComment | HtmlBlockSelfClosing | HtmlUnclosed) >
773
806
@BlankLine+
@@ -871,6 +904,7 @@ Inline = Str
871
904
| @Space
872
905
| Strong
873
906
| Emph
907
+ | Strike
874
908
| Image
875
909
| Link
876
910
| NoteReference
@@ -896,7 +930,7 @@ Entity = ( HexEntity | DecEntity | CharEntity ):a { a }
896
930
Endline = @LineBreak | @TerminalEndline | @NormalEndline
897
931
898
932
NormalEndline = @Sp @Newline !@BlankLine !">" !AtxStart
899
- !(Line /={3 ,}|-{3,}= / @Newline)
933
+ !(Line /={1 ,}|-{1,} / @Newline)
900
934
{ "\n" }
901
935
902
936
TerminalEndline = @Sp @Newline @Eof
@@ -916,46 +950,44 @@ UlLine = < /_{4,}/ > { text } |
916
950
917
951
Emph = EmphStar | EmphUl
918
952
919
- OneStarOpen = !StarLine "*" !@Spacechar !@Newline
920
- OneStarClose = !@Spacechar !@Newline Inline:a "*"
921
- { a }
953
+ Whitespace = @Spacechar | @Newline
922
954
923
- EmphStar = OneStarOpen
955
+ EmphStar = "*" !@Whitespace
924
956
@StartList:a
925
- ( !OneStarClose Inline:l { a << l } )*
926
- OneStarClose:l { a << l }
957
+ ( !"*" Inline:b { a << b }
958
+ | StrongStar:b { a << b }
959
+ )+
960
+ "*"
927
961
{ emphasis a.join }
928
962
929
- OneUlOpen = !UlLine "_" !@Spacechar !@Newline
930
- OneUlClose = !@Spacechar !@Newline Inline:a "_" # !Alphanumeric # TODO check
931
- { a }
932
-
933
- EmphUl = OneUlOpen
963
+ EmphUl = "_" !@Whitespace
934
964
@StartList:a
935
- ( !OneUlClose Inline:l { a << l } )*
936
- OneUlClose:l { a << l }
965
+ ( !"_" Inline:b { a << b }
966
+ | StrongUl:b { a << b }
967
+ )+
968
+ "_"
937
969
{ emphasis a.join }
938
970
939
971
Strong = StrongStar | StrongUl
940
972
941
- TwoStarOpen = !StarLine "**" !@Spacechar !@Newline
942
- TwoStarClose = !@Spacechar !@Newline Inline:a "**" { a }
943
-
944
- StrongStar = TwoStarOpen
973
+ StrongStar = "**" !@Whitespace
945
974
@StartList:a
946
- ( !TwoStarClose Inline:l { a << l } )*
947
- TwoStarClose:l { a << l }
975
+ ( !"**" Inline:b { a << b } )+
976
+ "**"
948
977
{ strong a.join }
949
978
950
- TwoUlOpen = !UlLine "__" !@Spacechar !@Newline
951
- TwoUlClose = !@Spacechar !@Newline Inline:a "__" # !Alphanumeric # TODO check
952
- { a }
979
+ StrongUl = "__" !@Whitespace
980
+ @StartList:a
981
+ ( !"__" Inline:b { a << b } )+
982
+ "__"
983
+ { strong a.join }
953
984
954
- StrongUl = TwoUlOpen
955
- @StartList:a
956
- ( !TwoUlClose Inline:i { a << i } )*
957
- TwoUlClose:l { a << l }
958
- { strong a.join }
985
+ Strike = &{ strike? }
986
+ "~~" !@Whitespace
987
+ @StartList:a
988
+ ( !"~~" Inline:b { a << b } )+
989
+ "~~"
990
+ { strike a.join }
959
991
960
992
# TODO alt text support
961
993
Image = "!" ( ExplicitLink | ReferenceLink ):a
@@ -971,14 +1003,13 @@ ReferenceLinkDouble = Label:content < Spnl > !"[]" Label:label
971
1003
ReferenceLinkSingle = Label:content < (Spnl "[]")? >
972
1004
{ link_to content, content, text }
973
1005
974
- ExplicitLink = Label:l Spnl "(" @Sp Source:s Spnl Title @Sp ")"
1006
+ ExplicitLink = Label:l "(" @Sp Source:s Spnl Title @Sp ")"
975
1007
{ "{#{l}}[#{s}]" }
976
1008
977
1009
Source = ( "<" < SourceContents > ">" | < SourceContents > )
978
1010
{ text }
979
1011
980
1012
SourceContents = ( ( !"(" !")" !">" Nonspacechar )+ | "(" SourceContents ")")*
981
- | ""
982
1013
983
1014
Title = ( TitleSingle | TitleDouble | "" ):a
984
1015
{ a }
@@ -1068,7 +1099,7 @@ Eof = !.
1068
1099
Nonspacechar = !@Spacechar !@Newline .
1069
1100
Sp = @Spacechar*
1070
1101
Spnl = @Sp (@Newline @Sp)?
1071
- SpecialChar = /[*_`&\[\]()<!#\\'"]/ | @ExtendedSpecialChar
1102
+ SpecialChar = /[~ *_`&\[\]()<!#\\'"]/ | @ExtendedSpecialChar
1072
1103
NormalChar = !( @SpecialChar | @Spacechar | @Newline ) .
1073
1104
Digit = [0-9]
1074
1105
@@ -1077,7 +1108,6 @@ Alphanumeric = %literals.Alphanumeric
1077
1108
AlphanumericAscii = %literals.AlphanumericAscii
1078
1109
BOM = %literals.BOM
1079
1110
Newline = %literals.Newline
1080
- NonAlphanumeric = %literals.NonAlphanumeric
1081
1111
Spacechar = %literals.Spacechar
1082
1112
1083
1113
HexEntity = /&#x/i < /[0-9a-fA-F]+/ > ";"
0 commit comments