rdoc 6.17.0 → 8.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (169) hide show
  1. checksums.yaml +4 -4
  2. data/CONTRIBUTING.md +193 -0
  3. data/LEGAL.rdoc +6 -0
  4. data/LICENSE.rdoc +4 -0
  5. data/README.md +132 -8
  6. data/RI.md +75 -75
  7. data/doc/markup_reference/markdown.md +659 -0
  8. data/doc/markup_reference/rdoc.rdoc +1169 -0
  9. data/exe/rdoc +2 -2
  10. data/lib/rdoc/code_object/alias.rb +70 -74
  11. data/lib/rdoc/code_object/any_method.rb +308 -293
  12. data/lib/rdoc/code_object/attr.rb +150 -142
  13. data/lib/rdoc/code_object/class_module.rb +802 -715
  14. data/lib/rdoc/code_object/constant.rb +181 -144
  15. data/lib/rdoc/code_object/context/section.rb +140 -130
  16. data/lib/rdoc/code_object/context.rb +925 -941
  17. data/lib/rdoc/code_object/extend.rb +7 -5
  18. data/lib/rdoc/code_object/include.rb +7 -5
  19. data/lib/rdoc/code_object/method_attr.rb +328 -315
  20. data/lib/rdoc/code_object/mixin.rb +97 -92
  21. data/lib/rdoc/code_object/normal_class.rb +77 -78
  22. data/lib/rdoc/code_object/normal_module.rb +61 -59
  23. data/lib/rdoc/code_object/require.rb +23 -39
  24. data/lib/rdoc/code_object/single_class.rb +21 -19
  25. data/lib/rdoc/code_object/top_level.rb +215 -202
  26. data/lib/rdoc/code_object.rb +305 -305
  27. data/lib/rdoc/comment.rb +274 -337
  28. data/lib/rdoc/cross_reference.rb +195 -206
  29. data/lib/rdoc/encoding.rb +105 -103
  30. data/lib/rdoc/erb_partial.rb +13 -11
  31. data/lib/rdoc/erbio.rb +29 -27
  32. data/lib/rdoc/generator/aliki.rb +196 -30
  33. data/lib/rdoc/generator/darkfish.rb +647 -629
  34. data/lib/rdoc/generator/json_index.rb +233 -229
  35. data/lib/rdoc/generator/markup.rb +165 -122
  36. data/lib/rdoc/generator/pot/message_extractor.rb +57 -51
  37. data/lib/rdoc/generator/pot/po.rb +52 -51
  38. data/lib/rdoc/generator/pot/po_entry.rb +138 -132
  39. data/lib/rdoc/generator/pot.rb +85 -81
  40. data/lib/rdoc/generator/ri.rb +23 -19
  41. data/lib/rdoc/generator/template/aliki/DESIGN.md +538 -0
  42. data/lib/rdoc/generator/template/aliki/_aside_toc.rhtml +1 -1
  43. data/lib/rdoc/generator/template/aliki/_footer.rhtml +2 -2
  44. data/lib/rdoc/generator/template/aliki/_head.rhtml +15 -10
  45. data/lib/rdoc/generator/template/aliki/_header.rhtml +29 -44
  46. data/lib/rdoc/generator/template/aliki/_sidebar_extends.rhtml +8 -6
  47. data/lib/rdoc/generator/template/aliki/_sidebar_includes.rhtml +8 -6
  48. data/lib/rdoc/generator/template/aliki/_sidebar_installed.rhtml +1 -1
  49. data/lib/rdoc/generator/template/aliki/_sidebar_pages.rhtml +3 -3
  50. data/lib/rdoc/generator/template/aliki/_sidebar_search.rhtml +3 -3
  51. data/lib/rdoc/generator/template/aliki/_sidebar_sections.rhtml +1 -1
  52. data/lib/rdoc/generator/template/aliki/_sidebar_toggle.rhtml +1 -1
  53. data/lib/rdoc/generator/template/aliki/class.rhtml +71 -61
  54. data/lib/rdoc/generator/template/aliki/css/rdoc.css +796 -323
  55. data/lib/rdoc/generator/template/aliki/index.rhtml +1 -1
  56. data/lib/rdoc/generator/template/aliki/js/aliki.js +119 -113
  57. data/lib/rdoc/generator/template/aliki/js/bash_highlighter.js +167 -0
  58. data/lib/rdoc/generator/template/aliki/js/c_highlighter.js +1 -1
  59. data/lib/rdoc/generator/template/aliki/js/{search.js → search_controller.js} +16 -7
  60. data/lib/rdoc/generator/template/aliki/js/search_navigation.js +105 -0
  61. data/lib/rdoc/generator/template/aliki/js/search_ranker.js +239 -0
  62. data/lib/rdoc/generator/template/aliki/page.rhtml +1 -1
  63. data/lib/rdoc/generator/template/aliki/servlet_not_found.rhtml +1 -1
  64. data/lib/rdoc/generator/template/aliki/servlet_root.rhtml +2 -2
  65. data/lib/rdoc/generator/template/darkfish/_footer.rhtml +1 -1
  66. data/lib/rdoc/generator/template/darkfish/_sidebar_extends.rhtml +8 -6
  67. data/lib/rdoc/generator/template/darkfish/_sidebar_includes.rhtml +8 -6
  68. data/lib/rdoc/generator/template/darkfish/_sidebar_installed.rhtml +1 -1
  69. data/lib/rdoc/generator/template/darkfish/_sidebar_pages.rhtml +2 -2
  70. data/lib/rdoc/generator/template/darkfish/_sidebar_sections.rhtml +1 -1
  71. data/lib/rdoc/generator/template/darkfish/_sidebar_table_of_contents.rhtml +5 -5
  72. data/lib/rdoc/generator/template/darkfish/class.rhtml +29 -32
  73. data/lib/rdoc/generator/template/darkfish/css/rdoc.css +19 -1
  74. data/lib/rdoc/generator/template/darkfish/table_of_contents.rhtml +3 -3
  75. data/lib/rdoc/generator.rb +48 -46
  76. data/lib/rdoc/i18n/locale.rb +99 -95
  77. data/lib/rdoc/i18n/text.rb +109 -105
  78. data/lib/rdoc/i18n.rb +7 -5
  79. data/lib/rdoc/markdown/byte_runtime.rb +80 -0
  80. data/lib/rdoc/markdown.kpeg +52 -33
  81. data/lib/rdoc/markdown.rb +365 -177
  82. data/lib/rdoc/markup/blank_line.rb +25 -23
  83. data/lib/rdoc/markup/block_quote.rb +12 -8
  84. data/lib/rdoc/markup/document.rb +127 -123
  85. data/lib/rdoc/markup/element.rb +21 -0
  86. data/lib/rdoc/markup/formatter.rb +220 -203
  87. data/lib/rdoc/markup/hard_break.rb +30 -27
  88. data/lib/rdoc/markup/heading.rb +163 -77
  89. data/lib/rdoc/markup/include.rb +33 -29
  90. data/lib/rdoc/markup/indented_paragraph.rb +37 -33
  91. data/lib/rdoc/markup/inline_parser.rb +316 -0
  92. data/lib/rdoc/markup/list.rb +80 -88
  93. data/lib/rdoc/markup/list_item.rb +73 -85
  94. data/lib/rdoc/markup/paragraph.rb +23 -19
  95. data/lib/rdoc/markup/parser.rb +501 -497
  96. data/lib/rdoc/markup/pre_process.rb +284 -305
  97. data/lib/rdoc/markup/raw.rb +52 -55
  98. data/lib/rdoc/markup/rule.rb +16 -12
  99. data/lib/rdoc/markup/table.rb +48 -40
  100. data/lib/rdoc/markup/to_ansi.rb +143 -92
  101. data/lib/rdoc/markup/to_bs.rb +86 -102
  102. data/lib/rdoc/markup/to_html.rb +608 -506
  103. data/lib/rdoc/markup/to_html_crossref.rb +219 -210
  104. data/lib/rdoc/markup/to_html_snippet.rb +210 -205
  105. data/lib/rdoc/markup/to_joined_paragraph.rb +40 -41
  106. data/lib/rdoc/markup/to_label.rb +64 -51
  107. data/lib/rdoc/markup/to_markdown.rb +212 -184
  108. data/lib/rdoc/markup/to_rdoc.rb +341 -277
  109. data/lib/rdoc/markup/to_table_of_contents.rb +66 -62
  110. data/lib/rdoc/markup/to_test.rb +62 -50
  111. data/lib/rdoc/markup/to_tt_only.rb +83 -92
  112. data/lib/rdoc/markup/verbatim.rb +62 -58
  113. data/lib/rdoc/markup.rb +196 -215
  114. data/lib/rdoc/options.rb +1063 -1076
  115. data/lib/rdoc/parser/c.rb +1039 -1036
  116. data/lib/rdoc/parser/changelog.rb +320 -287
  117. data/lib/rdoc/parser/markdown.rb +17 -13
  118. data/lib/rdoc/parser/rbs.rb +279 -0
  119. data/lib/rdoc/parser/rd.rb +17 -13
  120. data/lib/rdoc/parser/ruby.rb +1231 -2222
  121. data/lib/rdoc/parser/ruby_colorizer.rb +303 -0
  122. data/lib/rdoc/parser/simple.rb +31 -27
  123. data/lib/rdoc/parser/text.rb +12 -8
  124. data/lib/rdoc/parser.rb +230 -221
  125. data/lib/rdoc/rbs_helper.rb +186 -0
  126. data/lib/rdoc/rd/inline.rb +57 -53
  127. data/lib/rdoc/rd.rb +90 -88
  128. data/lib/rdoc/rdoc.rb +547 -366
  129. data/lib/rdoc/ri/driver.rb +1141 -1130
  130. data/lib/rdoc/ri/formatter.rb +7 -3
  131. data/lib/rdoc/ri/paths.rb +140 -136
  132. data/lib/rdoc/ri/servlet.rb +456 -0
  133. data/lib/rdoc/ri/store.rb +4 -2
  134. data/lib/rdoc/ri/task.rb +55 -51
  135. data/lib/rdoc/ri.rb +14 -11
  136. data/lib/rdoc/rubygems_hook.rb +194 -192
  137. data/lib/rdoc/server.rb +462 -0
  138. data/lib/rdoc/stats/normal.rb +46 -42
  139. data/lib/rdoc/stats/quiet.rb +39 -35
  140. data/lib/rdoc/stats/verbose.rb +35 -31
  141. data/lib/rdoc/stats.rb +363 -338
  142. data/lib/rdoc/store.rb +919 -725
  143. data/lib/rdoc/task.rb +260 -255
  144. data/lib/rdoc/text.rb +164 -240
  145. data/lib/rdoc/token_stream.rb +88 -106
  146. data/lib/rdoc/tom_doc.rb +203 -201
  147. data/lib/rdoc/version.rb +1 -1
  148. data/lib/rdoc.rb +35 -7
  149. data/lib/rubygems_plugin.rb +2 -11
  150. data/rdoc-logo.svg +43 -0
  151. data/rdoc.gemspec +9 -7
  152. metadata +46 -32
  153. data/CONTRIBUTING.rdoc +0 -219
  154. data/ExampleMarkdown.md +0 -39
  155. data/ExampleRDoc.rdoc +0 -210
  156. data/lib/rdoc/code_object/anon_class.rb +0 -10
  157. data/lib/rdoc/code_object/ghost_method.rb +0 -6
  158. data/lib/rdoc/code_object/meta_method.rb +0 -6
  159. data/lib/rdoc/markdown/literals.kpeg +0 -21
  160. data/lib/rdoc/markdown/literals.rb +0 -454
  161. data/lib/rdoc/markup/attr_changer.rb +0 -22
  162. data/lib/rdoc/markup/attr_span.rb +0 -35
  163. data/lib/rdoc/markup/attribute_manager.rb +0 -405
  164. data/lib/rdoc/markup/attributes.rb +0 -70
  165. data/lib/rdoc/markup/regexp_handling.rb +0 -40
  166. data/lib/rdoc/parser/prism_ruby.rb +0 -1100
  167. data/lib/rdoc/parser/ripper_state_lex.rb +0 -302
  168. data/lib/rdoc/parser/ruby_tools.rb +0 -163
  169. data/lib/rdoc/servlet.rb +0 -452
data/lib/rdoc/markdown.rb CHANGED
@@ -576,7 +576,9 @@ class RDoc::Markdown
576
576
  require_relative 'markup/to_joined_paragraph'
577
577
  require_relative 'markdown/entities'
578
578
 
579
- require_relative 'markdown/literals'
579
+ require_relative 'markdown/byte_runtime'
580
+
581
+ prepend ByteRuntime
580
582
 
581
583
  ##
582
584
  # Supported extensions
@@ -688,6 +690,20 @@ class RDoc::Markdown
688
690
  end
689
691
  end
690
692
 
693
+ # Escape character that has special meaning in RDoc format.
694
+ # To allow rdoc-styled link used in markdown format for now, bracket and brace are not escaped.
695
+
696
+ def rdoc_escape(text)
697
+ text.gsub(/[*+<\\_]/) {|s| "\\#{s}" }
698
+ end
699
+
700
+ # Escape link url that contains brackets.
701
+ # Brackets needs escape because link url will be surrounded by `[]` in RDoc format.
702
+
703
+ def rdoc_link_url_escape(text)
704
+ text.gsub(/[\[\]\\]/) {|s| "\\#{s}" }
705
+ end
706
+
691
707
  ##
692
708
  # :category: Extensions
693
709
  #
@@ -774,6 +790,8 @@ class RDoc::Markdown
774
790
  # the note order list for proper display at the end of the document.
775
791
 
776
792
  def note_for ref
793
+ return unless @note_order
794
+
777
795
  @note_order << ref
778
796
 
779
797
  label = @note_order.length
@@ -817,8 +835,12 @@ class RDoc::Markdown
817
835
  if notes? then
818
836
  @footnotes = {}
819
837
 
820
- setup_parser markdown, @debug
821
- peg_parse 'Notes'
838
+ # A note definition must contain "[^", so documents without one
839
+ # have nothing for the collecting pass to find
840
+ if markdown.include? '[^' then
841
+ setup_parser markdown, @debug
842
+ peg_parse 'Notes'
843
+ end
822
844
 
823
845
  # using note_order on the first pass would be a bug
824
846
  @note_order = []
@@ -875,11 +897,7 @@ class RDoc::Markdown
875
897
  # Wraps `text` in strike markup for rdoc inline formatting
876
898
 
877
899
  def strike text
878
- if text =~ /\A[a-z\d.\/-]+\z/i then
879
- "~#{text}~"
880
- else
881
- "<s>#{text}</s>"
882
- end
900
+ "<del>#{text}</del>"
883
901
  end
884
902
 
885
903
  ##
@@ -935,9 +953,7 @@ class RDoc::Markdown
935
953
 
936
954
 
937
955
  # :stopdoc:
938
- def setup_foreign_grammar
939
- @_grammar_literals = RDoc::Markdown::Literals.new(nil)
940
- end
956
+ def setup_foreign_grammar; end
941
957
 
942
958
  # root = Doc
943
959
  def _root
@@ -946,21 +962,11 @@ class RDoc::Markdown
946
962
  return _tmp
947
963
  end
948
964
 
949
- # Doc = BOM? Block*:a { RDoc::Markup::Document.new(*a.compact) }
965
+ # Doc = Block*:a { RDoc::Markup::Document.new(*a.compact) }
950
966
  def _Doc
951
967
 
952
968
  _save = self.pos
953
969
  while true # sequence
954
- _save1 = self.pos
955
- _tmp = apply(:_BOM)
956
- unless _tmp
957
- _tmp = true
958
- self.pos = _save1
959
- end
960
- unless _tmp
961
- self.pos = _save
962
- break
963
- end
964
970
  _ary = []
965
971
  while true
966
972
  _tmp = apply(:_Block)
@@ -1646,7 +1652,7 @@ class RDoc::Markdown
1646
1652
  return _tmp
1647
1653
  end
1648
1654
 
1649
- # BlockQuoteRaw = @StartList:a (">" " "? Line:l { a << l } (!">" !@BlankLine Line:c { a << c })* (@BlankLine:n { a << n })*)+ { inner_parse a.join }
1655
+ # BlockQuoteRaw = @StartList:a (">" " "? Line:l { a << l } (!">" !@BlankLine !(AtxStart @Spacechar) !Bullet !Enumerator !(&{ github? } Ticks3) Line:c { a << c })* (">" @BlankLine:n { a << n })*)+ { inner_parse a.join }
1650
1656
  def _BlockQuoteRaw
1651
1657
 
1652
1658
  _save = self.pos
@@ -1708,6 +1714,68 @@ class RDoc::Markdown
1708
1714
  self.pos = _save5
1709
1715
  break
1710
1716
  end
1717
+ _save8 = self.pos
1718
+
1719
+ _save9 = self.pos
1720
+ while true # sequence
1721
+ _tmp = apply(:_AtxStart)
1722
+ unless _tmp
1723
+ self.pos = _save9
1724
+ break
1725
+ end
1726
+ _tmp = _Spacechar()
1727
+ unless _tmp
1728
+ self.pos = _save9
1729
+ end
1730
+ break
1731
+ end # end sequence
1732
+
1733
+ _tmp = _tmp ? nil : true
1734
+ self.pos = _save8
1735
+ unless _tmp
1736
+ self.pos = _save5
1737
+ break
1738
+ end
1739
+ _save10 = self.pos
1740
+ _tmp = apply(:_Bullet)
1741
+ _tmp = _tmp ? nil : true
1742
+ self.pos = _save10
1743
+ unless _tmp
1744
+ self.pos = _save5
1745
+ break
1746
+ end
1747
+ _save11 = self.pos
1748
+ _tmp = apply(:_Enumerator)
1749
+ _tmp = _tmp ? nil : true
1750
+ self.pos = _save11
1751
+ unless _tmp
1752
+ self.pos = _save5
1753
+ break
1754
+ end
1755
+ _save12 = self.pos
1756
+
1757
+ _save13 = self.pos
1758
+ while true # sequence
1759
+ _save14 = self.pos
1760
+ _tmp = begin; github? ; end
1761
+ self.pos = _save14
1762
+ unless _tmp
1763
+ self.pos = _save13
1764
+ break
1765
+ end
1766
+ _tmp = apply(:_Ticks3)
1767
+ unless _tmp
1768
+ self.pos = _save13
1769
+ end
1770
+ break
1771
+ end # end sequence
1772
+
1773
+ _tmp = _tmp ? nil : true
1774
+ self.pos = _save12
1775
+ unless _tmp
1776
+ self.pos = _save5
1777
+ break
1778
+ end
1711
1779
  _tmp = apply(:_Line)
1712
1780
  c = @result
1713
1781
  unless _tmp
@@ -1731,18 +1799,23 @@ class RDoc::Markdown
1731
1799
  end
1732
1800
  while true
1733
1801
 
1734
- _save9 = self.pos
1802
+ _save16 = self.pos
1735
1803
  while true # sequence
1804
+ _tmp = match_string(">")
1805
+ unless _tmp
1806
+ self.pos = _save16
1807
+ break
1808
+ end
1736
1809
  _tmp = _BlankLine()
1737
1810
  n = @result
1738
1811
  unless _tmp
1739
- self.pos = _save9
1812
+ self.pos = _save16
1740
1813
  break
1741
1814
  end
1742
1815
  @result = begin; a << n ; end
1743
1816
  _tmp = true
1744
1817
  unless _tmp
1745
- self.pos = _save9
1818
+ self.pos = _save16
1746
1819
  end
1747
1820
  break
1748
1821
  end # end sequence
@@ -1759,65 +1832,127 @@ class RDoc::Markdown
1759
1832
  if _tmp
1760
1833
  while true
1761
1834
 
1762
- _save10 = self.pos
1835
+ _save17 = self.pos
1763
1836
  while true # sequence
1764
1837
  _tmp = match_string(">")
1765
1838
  unless _tmp
1766
- self.pos = _save10
1839
+ self.pos = _save17
1767
1840
  break
1768
1841
  end
1769
- _save11 = self.pos
1842
+ _save18 = self.pos
1770
1843
  _tmp = match_string(" ")
1771
1844
  unless _tmp
1772
1845
  _tmp = true
1773
- self.pos = _save11
1846
+ self.pos = _save18
1774
1847
  end
1775
1848
  unless _tmp
1776
- self.pos = _save10
1849
+ self.pos = _save17
1777
1850
  break
1778
1851
  end
1779
1852
  _tmp = apply(:_Line)
1780
1853
  l = @result
1781
1854
  unless _tmp
1782
- self.pos = _save10
1855
+ self.pos = _save17
1783
1856
  break
1784
1857
  end
1785
1858
  @result = begin; a << l ; end
1786
1859
  _tmp = true
1787
1860
  unless _tmp
1788
- self.pos = _save10
1861
+ self.pos = _save17
1789
1862
  break
1790
1863
  end
1791
1864
  while true
1792
1865
 
1793
- _save13 = self.pos
1866
+ _save20 = self.pos
1794
1867
  while true # sequence
1795
- _save14 = self.pos
1868
+ _save21 = self.pos
1796
1869
  _tmp = match_string(">")
1797
1870
  _tmp = _tmp ? nil : true
1798
- self.pos = _save14
1871
+ self.pos = _save21
1799
1872
  unless _tmp
1800
- self.pos = _save13
1873
+ self.pos = _save20
1801
1874
  break
1802
1875
  end
1803
- _save15 = self.pos
1876
+ _save22 = self.pos
1804
1877
  _tmp = _BlankLine()
1805
1878
  _tmp = _tmp ? nil : true
1806
- self.pos = _save15
1879
+ self.pos = _save22
1807
1880
  unless _tmp
1808
- self.pos = _save13
1881
+ self.pos = _save20
1882
+ break
1883
+ end
1884
+ _save23 = self.pos
1885
+
1886
+ _save24 = self.pos
1887
+ while true # sequence
1888
+ _tmp = apply(:_AtxStart)
1889
+ unless _tmp
1890
+ self.pos = _save24
1891
+ break
1892
+ end
1893
+ _tmp = _Spacechar()
1894
+ unless _tmp
1895
+ self.pos = _save24
1896
+ end
1897
+ break
1898
+ end # end sequence
1899
+
1900
+ _tmp = _tmp ? nil : true
1901
+ self.pos = _save23
1902
+ unless _tmp
1903
+ self.pos = _save20
1904
+ break
1905
+ end
1906
+ _save25 = self.pos
1907
+ _tmp = apply(:_Bullet)
1908
+ _tmp = _tmp ? nil : true
1909
+ self.pos = _save25
1910
+ unless _tmp
1911
+ self.pos = _save20
1912
+ break
1913
+ end
1914
+ _save26 = self.pos
1915
+ _tmp = apply(:_Enumerator)
1916
+ _tmp = _tmp ? nil : true
1917
+ self.pos = _save26
1918
+ unless _tmp
1919
+ self.pos = _save20
1920
+ break
1921
+ end
1922
+ _save27 = self.pos
1923
+
1924
+ _save28 = self.pos
1925
+ while true # sequence
1926
+ _save29 = self.pos
1927
+ _tmp = begin; github? ; end
1928
+ self.pos = _save29
1929
+ unless _tmp
1930
+ self.pos = _save28
1931
+ break
1932
+ end
1933
+ _tmp = apply(:_Ticks3)
1934
+ unless _tmp
1935
+ self.pos = _save28
1936
+ end
1937
+ break
1938
+ end # end sequence
1939
+
1940
+ _tmp = _tmp ? nil : true
1941
+ self.pos = _save27
1942
+ unless _tmp
1943
+ self.pos = _save20
1809
1944
  break
1810
1945
  end
1811
1946
  _tmp = apply(:_Line)
1812
1947
  c = @result
1813
1948
  unless _tmp
1814
- self.pos = _save13
1949
+ self.pos = _save20
1815
1950
  break
1816
1951
  end
1817
1952
  @result = begin; a << c ; end
1818
1953
  _tmp = true
1819
1954
  unless _tmp
1820
- self.pos = _save13
1955
+ self.pos = _save20
1821
1956
  end
1822
1957
  break
1823
1958
  end # end sequence
@@ -1826,23 +1961,28 @@ class RDoc::Markdown
1826
1961
  end
1827
1962
  _tmp = true
1828
1963
  unless _tmp
1829
- self.pos = _save10
1964
+ self.pos = _save17
1830
1965
  break
1831
1966
  end
1832
1967
  while true
1833
1968
 
1834
- _save17 = self.pos
1969
+ _save31 = self.pos
1835
1970
  while true # sequence
1971
+ _tmp = match_string(">")
1972
+ unless _tmp
1973
+ self.pos = _save31
1974
+ break
1975
+ end
1836
1976
  _tmp = _BlankLine()
1837
1977
  n = @result
1838
1978
  unless _tmp
1839
- self.pos = _save17
1979
+ self.pos = _save31
1840
1980
  break
1841
1981
  end
1842
1982
  @result = begin; a << n ; end
1843
1983
  _tmp = true
1844
1984
  unless _tmp
1845
- self.pos = _save17
1985
+ self.pos = _save31
1846
1986
  end
1847
1987
  break
1848
1988
  end # end sequence
@@ -1851,7 +1991,7 @@ class RDoc::Markdown
1851
1991
  end
1852
1992
  _tmp = true
1853
1993
  unless _tmp
1854
- self.pos = _save10
1994
+ self.pos = _save17
1855
1995
  end
1856
1996
  break
1857
1997
  end # end sequence
@@ -8825,27 +8965,34 @@ class RDoc::Markdown
8825
8965
  return _tmp
8826
8966
  end
8827
8967
 
8828
- # HtmlBlock = < (HtmlBlockInTags | HtmlComment | HtmlBlockSelfClosing | HtmlUnclosed) > @BlankLine+ { if html? then RDoc::Markup::Raw.new text end }
8968
+ # HtmlBlock = &"<" < (HtmlBlockInTags | HtmlComment | HtmlBlockSelfClosing | HtmlUnclosed) > @BlankLine+ { if html? then RDoc::Markup::Raw.new text end }
8829
8969
  def _HtmlBlock
8830
8970
 
8831
8971
  _save = self.pos
8832
8972
  while true # sequence
8973
+ _save1 = self.pos
8974
+ _tmp = match_string("<")
8975
+ self.pos = _save1
8976
+ unless _tmp
8977
+ self.pos = _save
8978
+ break
8979
+ end
8833
8980
  _text_start = self.pos
8834
8981
 
8835
- _save1 = self.pos
8982
+ _save2 = self.pos
8836
8983
  while true # choice
8837
8984
  _tmp = apply(:_HtmlBlockInTags)
8838
8985
  break if _tmp
8839
- self.pos = _save1
8986
+ self.pos = _save2
8840
8987
  _tmp = apply(:_HtmlComment)
8841
8988
  break if _tmp
8842
- self.pos = _save1
8989
+ self.pos = _save2
8843
8990
  _tmp = apply(:_HtmlBlockSelfClosing)
8844
8991
  break if _tmp
8845
- self.pos = _save1
8992
+ self.pos = _save2
8846
8993
  _tmp = apply(:_HtmlUnclosed)
8847
8994
  break if _tmp
8848
- self.pos = _save1
8995
+ self.pos = _save2
8849
8996
  break
8850
8997
  end # end choice
8851
8998
 
@@ -8856,7 +9003,7 @@ class RDoc::Markdown
8856
9003
  self.pos = _save
8857
9004
  break
8858
9005
  end
8859
- _save2 = self.pos
9006
+ _save3 = self.pos
8860
9007
  _tmp = _BlankLine()
8861
9008
  if _tmp
8862
9009
  while true
@@ -8865,7 +9012,7 @@ class RDoc::Markdown
8865
9012
  end
8866
9013
  _tmp = true
8867
9014
  else
8868
- self.pos = _save2
9015
+ self.pos = _save3
8869
9016
  end
8870
9017
  unless _tmp
8871
9018
  self.pos = _save
@@ -9643,7 +9790,7 @@ class RDoc::Markdown
9643
9790
  return _tmp
9644
9791
  end
9645
9792
 
9646
- # Inline = (Str | @Endline | UlOrStarLine | @Space | Strong | Emph | Strike | Image | Link | NoteReference | InlineNote | Code | RawHtml | Entity | EscapedChar | Symbol)
9793
+ # Inline = (Str | @Endline | UlOrStarLine | @Space | Strong | Emph | Strike | Image | Link | NoteReference | InlineNote | Code | RawHtml | StrippedComment | Entity | EscapedChar | Symbol)
9647
9794
  def _Inline
9648
9795
 
9649
9796
  _save = self.pos
@@ -9687,6 +9834,9 @@ class RDoc::Markdown
9687
9834
  _tmp = apply(:_RawHtml)
9688
9835
  break if _tmp
9689
9836
  self.pos = _save
9837
+ _tmp = apply(:_StrippedComment)
9838
+ break if _tmp
9839
+ self.pos = _save
9690
9840
  _tmp = apply(:_Entity)
9691
9841
  break if _tmp
9692
9842
  self.pos = _save
@@ -9735,7 +9885,7 @@ class RDoc::Markdown
9735
9885
  return _tmp
9736
9886
  end
9737
9887
 
9738
- # Str = @StartList:a < @NormalChar+ > { a = text } (StrChunk:c { a << c })* { a }
9888
+ # Str = @StartList:a < @NormalChar+ > { a = text } (StrChunk:c { a << c })* { rdoc_escape(a) }
9739
9889
  def _Str
9740
9890
 
9741
9891
  _save = self.pos
@@ -9796,7 +9946,7 @@ class RDoc::Markdown
9796
9946
  self.pos = _save
9797
9947
  break
9798
9948
  end
9799
- @result = begin; a ; end
9949
+ @result = begin; rdoc_escape(a) ; end
9800
9950
  _tmp = true
9801
9951
  unless _tmp
9802
9952
  self.pos = _save
@@ -9898,7 +10048,7 @@ class RDoc::Markdown
9898
10048
  return _tmp
9899
10049
  end
9900
10050
 
9901
- # EscapedChar = "\\" !@Newline < /[:\\`|*_{}\[\]()#+.!><-]/ > { text }
10051
+ # EscapedChar = "\\" !@Newline < /[:\\`|*_{}\[\]()#+.!><-]/ > { rdoc_escape(text) }
9902
10052
  def _EscapedChar
9903
10053
 
9904
10054
  _save = self.pos
@@ -9925,7 +10075,7 @@ class RDoc::Markdown
9925
10075
  self.pos = _save
9926
10076
  break
9927
10077
  end
9928
- @result = begin; text ; end
10078
+ @result = begin; rdoc_escape(text) ; end
9929
10079
  _tmp = true
9930
10080
  unless _tmp
9931
10081
  self.pos = _save
@@ -10126,7 +10276,7 @@ class RDoc::Markdown
10126
10276
  return _tmp
10127
10277
  end
10128
10278
 
10129
- # Symbol = < @SpecialChar > { text }
10279
+ # Symbol = < @SpecialChar > { rdoc_escape(text) }
10130
10280
  def _Symbol
10131
10281
 
10132
10282
  _save = self.pos
@@ -10140,7 +10290,7 @@ class RDoc::Markdown
10140
10290
  self.pos = _save
10141
10291
  break
10142
10292
  end
10143
- @result = begin; text ; end
10293
+ @result = begin; rdoc_escape(text) ; end
10144
10294
  _tmp = true
10145
10295
  unless _tmp
10146
10296
  self.pos = _save
@@ -11193,7 +11343,7 @@ class RDoc::Markdown
11193
11343
  return _tmp
11194
11344
  end
11195
11345
 
11196
- # ExplicitLink = ExplicitLinkWithLabel:a { "{#{a[:label]}}[#{a[:link]}]" }
11346
+ # ExplicitLink = ExplicitLinkWithLabel:a { "{#{a[:label]}}[#{rdoc_link_url_escape(a[:link])}]" }
11197
11347
  def _ExplicitLink
11198
11348
 
11199
11349
  _save = self.pos
@@ -11204,7 +11354,7 @@ class RDoc::Markdown
11204
11354
  self.pos = _save
11205
11355
  break
11206
11356
  end
11207
- @result = begin; "{#{a[:label]}}[#{a[:link]}]" ; end
11357
+ @result = begin; "{#{a[:label]}}[#{rdoc_link_url_escape(a[:link])}]" ; end
11208
11358
  _tmp = true
11209
11359
  unless _tmp
11210
11360
  self.pos = _save
@@ -13987,7 +14137,7 @@ class RDoc::Markdown
13987
14137
  return _tmp
13988
14138
  end
13989
14139
 
13990
- # RawHtml = < (HtmlComment | HtmlBlockScript | HtmlTag) > { if html? then text else '' end }
14140
+ # RawHtml = < (HtmlBlockScript | HtmlTag) > { html? ? text : '' }
13991
14141
  def _RawHtml
13992
14142
 
13993
14143
  _save = self.pos
@@ -13996,9 +14146,6 @@ class RDoc::Markdown
13996
14146
 
13997
14147
  _save1 = self.pos
13998
14148
  while true # choice
13999
- _tmp = apply(:_HtmlComment)
14000
- break if _tmp
14001
- self.pos = _save1
14002
14149
  _tmp = apply(:_HtmlBlockScript)
14003
14150
  break if _tmp
14004
14151
  self.pos = _save1
@@ -14015,7 +14162,7 @@ class RDoc::Markdown
14015
14162
  self.pos = _save
14016
14163
  break
14017
14164
  end
14018
- @result = begin; if html? then text else '' end ; end
14165
+ @result = begin; html? ? text : '' ; end
14019
14166
  _tmp = true
14020
14167
  unless _tmp
14021
14168
  self.pos = _save
@@ -14027,6 +14174,28 @@ class RDoc::Markdown
14027
14174
  return _tmp
14028
14175
  end
14029
14176
 
14177
+ # StrippedComment = HtmlComment { '' }
14178
+ def _StrippedComment
14179
+
14180
+ _save = self.pos
14181
+ while true # sequence
14182
+ _tmp = apply(:_HtmlComment)
14183
+ unless _tmp
14184
+ self.pos = _save
14185
+ break
14186
+ end
14187
+ @result = begin; '' ; end
14188
+ _tmp = true
14189
+ unless _tmp
14190
+ self.pos = _save
14191
+ end
14192
+ break
14193
+ end # end sequence
14194
+
14195
+ set_failed_rule :_StrippedComment unless _tmp
14196
+ return _tmp
14197
+ end
14198
+
14030
14199
  # BlankLine = @Sp @Newline { "\n" }
14031
14200
  def _BlankLine
14032
14201
 
@@ -14584,42 +14753,35 @@ class RDoc::Markdown
14584
14753
  return _tmp
14585
14754
  end
14586
14755
 
14587
- # Alphanumeric = %literals.Alphanumeric
14756
+ # Alphanumeric = /\p{Word}/
14588
14757
  def _Alphanumeric
14589
- _tmp = @_grammar_literals.external_invoke(self, :_Alphanumeric)
14758
+ _tmp = scan(/\G(?-mix:\p{Word})/)
14590
14759
  set_failed_rule :_Alphanumeric unless _tmp
14591
14760
  return _tmp
14592
14761
  end
14593
14762
 
14594
- # AlphanumericAscii = %literals.AlphanumericAscii
14763
+ # AlphanumericAscii = /[A-Za-z0-9]/
14595
14764
  def _AlphanumericAscii
14596
- _tmp = @_grammar_literals.external_invoke(self, :_AlphanumericAscii)
14765
+ _tmp = scan(/\G(?-mix:[A-Za-z0-9])/)
14597
14766
  set_failed_rule :_AlphanumericAscii unless _tmp
14598
14767
  return _tmp
14599
14768
  end
14600
14769
 
14601
- # BOM = %literals.BOM
14602
- def _BOM
14603
- _tmp = @_grammar_literals.external_invoke(self, :_BOM)
14604
- set_failed_rule :_BOM unless _tmp
14605
- return _tmp
14606
- end
14607
-
14608
- # Newline = %literals.Newline
14770
+ # Newline = /\n|\r\n?|\p{Zl}|\p{Zp}/
14609
14771
  def _Newline
14610
- _tmp = @_grammar_literals.external_invoke(self, :_Newline)
14772
+ _tmp = scan(/\G(?-mix:\n|\r\n?|\p{Zl}|\p{Zp})/)
14611
14773
  set_failed_rule :_Newline unless _tmp
14612
14774
  return _tmp
14613
14775
  end
14614
14776
 
14615
- # Spacechar = %literals.Spacechar
14777
+ # Spacechar = /\t|\p{Zs}/
14616
14778
  def _Spacechar
14617
- _tmp = @_grammar_literals.external_invoke(self, :_Spacechar)
14779
+ _tmp = scan(/\G(?-mix:\t|\p{Zs})/)
14618
14780
  set_failed_rule :_Spacechar unless _tmp
14619
14781
  return _tmp
14620
14782
  end
14621
14783
 
14622
- # HexEntity = /&#x/i < /[0-9a-fA-F]+/ > ";" { [text.to_i(16)].pack 'U' }
14784
+ # HexEntity = /&#x/i < /[0-9a-fA-F]+/ > ";" { rdoc_escape([text.to_i(16)].pack('U')) }
14623
14785
  def _HexEntity
14624
14786
 
14625
14787
  _save = self.pos
@@ -14643,7 +14805,7 @@ class RDoc::Markdown
14643
14805
  self.pos = _save
14644
14806
  break
14645
14807
  end
14646
- @result = begin; [text.to_i(16)].pack 'U' ; end
14808
+ @result = begin; rdoc_escape([text.to_i(16)].pack('U')) ; end
14647
14809
  _tmp = true
14648
14810
  unless _tmp
14649
14811
  self.pos = _save
@@ -14655,7 +14817,7 @@ class RDoc::Markdown
14655
14817
  return _tmp
14656
14818
  end
14657
14819
 
14658
- # DecEntity = "&#" < /[0-9]+/ > ";" { [text.to_i].pack 'U' }
14820
+ # DecEntity = "&#" < /[0-9]+/ > ";" { rdoc_escape([text.to_i].pack('U')) }
14659
14821
  def _DecEntity
14660
14822
 
14661
14823
  _save = self.pos
@@ -14679,7 +14841,7 @@ class RDoc::Markdown
14679
14841
  self.pos = _save
14680
14842
  break
14681
14843
  end
14682
- @result = begin; [text.to_i].pack 'U' ; end
14844
+ @result = begin; rdoc_escape([text.to_i].pack('U')) ; end
14683
14845
  _tmp = true
14684
14846
  unless _tmp
14685
14847
  self.pos = _save
@@ -14691,7 +14853,7 @@ class RDoc::Markdown
14691
14853
  return _tmp
14692
14854
  end
14693
14855
 
14694
- # CharEntity = "&" < /[A-Za-z0-9]+/ > ";" { if entity = HTML_ENTITIES[text] then entity.pack 'U*' else "&#{text};" end }
14856
+ # CharEntity = "&" < /[A-Za-z0-9]+/ > ";" { if entity = HTML_ENTITIES[text] then rdoc_escape(entity.pack('U*')) else "&#{text};" end }
14695
14857
  def _CharEntity
14696
14858
 
14697
14859
  _save = self.pos
@@ -14716,7 +14878,7 @@ class RDoc::Markdown
14716
14878
  break
14717
14879
  end
14718
14880
  @result = begin; if entity = HTML_ENTITIES[text] then
14719
- entity.pack 'U*'
14881
+ rdoc_escape(entity.pack('U*'))
14720
14882
  else
14721
14883
  "&#{text};"
14722
14884
  end
@@ -15310,7 +15472,7 @@ class RDoc::Markdown
15310
15472
  return _tmp
15311
15473
  end
15312
15474
 
15313
- # InlineNote = &{ notes? } "^[" @StartList:a (!"]" Inline:l { a << l })+ "]" { ref = [:inline, @note_order.length] @footnotes[ref] = paragraph a note_for ref }
15475
+ # InlineNote = &{ notes? } "^[" @StartList:a (!"]" Inline:l { a << l })+ "]" { if @note_order ref = [:inline, @note_order.length] @footnotes[ref] = paragraph a note_for ref end }
15314
15476
  def _InlineNote
15315
15477
 
15316
15478
  _save = self.pos
@@ -15401,10 +15563,12 @@ class RDoc::Markdown
15401
15563
  self.pos = _save
15402
15564
  break
15403
15565
  end
15404
- @result = begin; ref = [:inline, @note_order.length]
15405
- @footnotes[ref] = paragraph a
15566
+ @result = begin; if @note_order
15567
+ ref = [:inline, @note_order.length]
15568
+ @footnotes[ref] = paragraph a
15406
15569
 
15407
- note_for ref
15570
+ note_for ref
15571
+ end
15408
15572
  ; end
15409
15573
  _tmp = true
15410
15574
  unless _tmp
@@ -15560,7 +15724,7 @@ class RDoc::Markdown
15560
15724
  return _tmp
15561
15725
  end
15562
15726
 
15563
- # CodeFence = &{ github? } Ticks3 (@Sp StrChunk:format)? Spnl < ((!"`" Nonspacechar)+ | !Ticks3 /`+/ | Spacechar | @Newline)+ > Ticks3 @Sp @Newline* { verbatim = RDoc::Markup::Verbatim.new text verbatim.format = format.intern if format.instance_of?(String) verbatim }
15727
+ # CodeFence = &{ github? } Ticks3 (@Sp StrChunk:format)? @Sp @Newline? < ((!"`" Nonspacechar)+ | !Ticks3 /`+/ | Spacechar | @Newline)+ > Ticks3 @Sp @Newline* { verbatim = RDoc::Markup::Verbatim.new text verbatim.format = format.intern if format.instance_of?(String) verbatim }
15564
15728
  def _CodeFence
15565
15729
 
15566
15730
  _save = self.pos
@@ -15602,31 +15766,41 @@ class RDoc::Markdown
15602
15766
  self.pos = _save
15603
15767
  break
15604
15768
  end
15605
- _tmp = apply(:_Spnl)
15769
+ _tmp = _Sp()
15606
15770
  unless _tmp
15607
15771
  self.pos = _save
15608
15772
  break
15609
15773
  end
15610
- _text_start = self.pos
15611
15774
  _save4 = self.pos
15612
-
15775
+ _tmp = _Newline()
15776
+ unless _tmp
15777
+ _tmp = true
15778
+ self.pos = _save4
15779
+ end
15780
+ unless _tmp
15781
+ self.pos = _save
15782
+ break
15783
+ end
15784
+ _text_start = self.pos
15613
15785
  _save5 = self.pos
15614
- while true # choice
15615
- _save6 = self.pos
15616
15786
 
15787
+ _save6 = self.pos
15788
+ while true # choice
15617
15789
  _save7 = self.pos
15790
+
15791
+ _save8 = self.pos
15618
15792
  while true # sequence
15619
- _save8 = self.pos
15793
+ _save9 = self.pos
15620
15794
  _tmp = match_string("`")
15621
15795
  _tmp = _tmp ? nil : true
15622
- self.pos = _save8
15796
+ self.pos = _save9
15623
15797
  unless _tmp
15624
- self.pos = _save7
15798
+ self.pos = _save8
15625
15799
  break
15626
15800
  end
15627
15801
  _tmp = apply(:_Nonspacechar)
15628
15802
  unless _tmp
15629
- self.pos = _save7
15803
+ self.pos = _save8
15630
15804
  end
15631
15805
  break
15632
15806
  end # end sequence
@@ -15634,19 +15808,19 @@ class RDoc::Markdown
15634
15808
  if _tmp
15635
15809
  while true
15636
15810
 
15637
- _save9 = self.pos
15811
+ _save10 = self.pos
15638
15812
  while true # sequence
15639
- _save10 = self.pos
15813
+ _save11 = self.pos
15640
15814
  _tmp = match_string("`")
15641
15815
  _tmp = _tmp ? nil : true
15642
- self.pos = _save10
15816
+ self.pos = _save11
15643
15817
  unless _tmp
15644
- self.pos = _save9
15818
+ self.pos = _save10
15645
15819
  break
15646
15820
  end
15647
15821
  _tmp = apply(:_Nonspacechar)
15648
15822
  unless _tmp
15649
- self.pos = _save9
15823
+ self.pos = _save10
15650
15824
  end
15651
15825
  break
15652
15826
  end # end sequence
@@ -15655,59 +15829,59 @@ class RDoc::Markdown
15655
15829
  end
15656
15830
  _tmp = true
15657
15831
  else
15658
- self.pos = _save6
15832
+ self.pos = _save7
15659
15833
  end
15660
15834
  break if _tmp
15661
- self.pos = _save5
15835
+ self.pos = _save6
15662
15836
 
15663
- _save11 = self.pos
15837
+ _save12 = self.pos
15664
15838
  while true # sequence
15665
- _save12 = self.pos
15839
+ _save13 = self.pos
15666
15840
  _tmp = apply(:_Ticks3)
15667
15841
  _tmp = _tmp ? nil : true
15668
- self.pos = _save12
15842
+ self.pos = _save13
15669
15843
  unless _tmp
15670
- self.pos = _save11
15844
+ self.pos = _save12
15671
15845
  break
15672
15846
  end
15673
15847
  _tmp = scan(/\G(?-mix:`+)/)
15674
15848
  unless _tmp
15675
- self.pos = _save11
15849
+ self.pos = _save12
15676
15850
  end
15677
15851
  break
15678
15852
  end # end sequence
15679
15853
 
15680
15854
  break if _tmp
15681
- self.pos = _save5
15855
+ self.pos = _save6
15682
15856
  _tmp = apply(:_Spacechar)
15683
15857
  break if _tmp
15684
- self.pos = _save5
15858
+ self.pos = _save6
15685
15859
  _tmp = _Newline()
15686
15860
  break if _tmp
15687
- self.pos = _save5
15861
+ self.pos = _save6
15688
15862
  break
15689
15863
  end # end choice
15690
15864
 
15691
15865
  if _tmp
15692
15866
  while true
15693
15867
 
15694
- _save13 = self.pos
15868
+ _save14 = self.pos
15695
15869
  while true # choice
15696
- _save14 = self.pos
15697
-
15698
15870
  _save15 = self.pos
15871
+
15872
+ _save16 = self.pos
15699
15873
  while true # sequence
15700
- _save16 = self.pos
15874
+ _save17 = self.pos
15701
15875
  _tmp = match_string("`")
15702
15876
  _tmp = _tmp ? nil : true
15703
- self.pos = _save16
15877
+ self.pos = _save17
15704
15878
  unless _tmp
15705
- self.pos = _save15
15879
+ self.pos = _save16
15706
15880
  break
15707
15881
  end
15708
15882
  _tmp = apply(:_Nonspacechar)
15709
15883
  unless _tmp
15710
- self.pos = _save15
15884
+ self.pos = _save16
15711
15885
  end
15712
15886
  break
15713
15887
  end # end sequence
@@ -15715,19 +15889,19 @@ class RDoc::Markdown
15715
15889
  if _tmp
15716
15890
  while true
15717
15891
 
15718
- _save17 = self.pos
15892
+ _save18 = self.pos
15719
15893
  while true # sequence
15720
- _save18 = self.pos
15894
+ _save19 = self.pos
15721
15895
  _tmp = match_string("`")
15722
15896
  _tmp = _tmp ? nil : true
15723
- self.pos = _save18
15897
+ self.pos = _save19
15724
15898
  unless _tmp
15725
- self.pos = _save17
15899
+ self.pos = _save18
15726
15900
  break
15727
15901
  end
15728
15902
  _tmp = apply(:_Nonspacechar)
15729
15903
  unless _tmp
15730
- self.pos = _save17
15904
+ self.pos = _save18
15731
15905
  end
15732
15906
  break
15733
15907
  end # end sequence
@@ -15736,36 +15910,36 @@ class RDoc::Markdown
15736
15910
  end
15737
15911
  _tmp = true
15738
15912
  else
15739
- self.pos = _save14
15913
+ self.pos = _save15
15740
15914
  end
15741
15915
  break if _tmp
15742
- self.pos = _save13
15916
+ self.pos = _save14
15743
15917
 
15744
- _save19 = self.pos
15918
+ _save20 = self.pos
15745
15919
  while true # sequence
15746
- _save20 = self.pos
15920
+ _save21 = self.pos
15747
15921
  _tmp = apply(:_Ticks3)
15748
15922
  _tmp = _tmp ? nil : true
15749
- self.pos = _save20
15923
+ self.pos = _save21
15750
15924
  unless _tmp
15751
- self.pos = _save19
15925
+ self.pos = _save20
15752
15926
  break
15753
15927
  end
15754
15928
  _tmp = scan(/\G(?-mix:`+)/)
15755
15929
  unless _tmp
15756
- self.pos = _save19
15930
+ self.pos = _save20
15757
15931
  end
15758
15932
  break
15759
15933
  end # end sequence
15760
15934
 
15761
15935
  break if _tmp
15762
- self.pos = _save13
15936
+ self.pos = _save14
15763
15937
  _tmp = apply(:_Spacechar)
15764
15938
  break if _tmp
15765
- self.pos = _save13
15939
+ self.pos = _save14
15766
15940
  _tmp = _Newline()
15767
15941
  break if _tmp
15768
- self.pos = _save13
15942
+ self.pos = _save14
15769
15943
  break
15770
15944
  end # end choice
15771
15945
 
@@ -15773,7 +15947,7 @@ class RDoc::Markdown
15773
15947
  end
15774
15948
  _tmp = true
15775
15949
  else
15776
- self.pos = _save4
15950
+ self.pos = _save5
15777
15951
  end
15778
15952
  if _tmp
15779
15953
  text = get_text(_text_start)
@@ -15927,7 +16101,7 @@ class RDoc::Markdown
15927
16101
  return _tmp
15928
16102
  end
15929
16103
 
15930
- # TableRow = ((TableItem:item1 TableItem2*:items { [item1, *items] }):row | TableItem2+:row) "|"? @Newline { row }
16104
+ # TableRow = ((TableItem:item1 TableItem2+:items { [item1, *items] }):row | TableItem2+:row) "|"? @Newline { row }
15931
16105
  def _TableRow
15932
16106
 
15933
16107
  _save = self.pos
@@ -15944,14 +16118,21 @@ class RDoc::Markdown
15944
16118
  self.pos = _save2
15945
16119
  break
15946
16120
  end
16121
+ _save3 = self.pos
15947
16122
  _ary = []
15948
- while true
15949
- _tmp = apply(:_TableItem2)
15950
- _ary << @result if _tmp
15951
- break unless _tmp
16123
+ _tmp = apply(:_TableItem2)
16124
+ if _tmp
16125
+ _ary << @result
16126
+ while true
16127
+ _tmp = apply(:_TableItem2)
16128
+ _ary << @result if _tmp
16129
+ break unless _tmp
16130
+ end
16131
+ _tmp = true
16132
+ @result = _ary
16133
+ else
16134
+ self.pos = _save3
15952
16135
  end
15953
- _tmp = true
15954
- @result = _ary
15955
16136
  items = @result
15956
16137
  unless _tmp
15957
16138
  self.pos = _save2
@@ -16067,7 +16248,7 @@ class RDoc::Markdown
16067
16248
  return _tmp
16068
16249
  end
16069
16250
 
16070
- # TableLine = ((TableAlign:align1 TableAlign2*:aligns {[align1, *aligns] }):line | TableAlign2+:line) "|"? @Newline { line }
16251
+ # TableLine = ((TableAlign:align1 TableAlign2+:aligns {[align1, *aligns] }):line | TableAlign2+:line) "|"? @Newline { line }
16071
16252
  def _TableLine
16072
16253
 
16073
16254
  _save = self.pos
@@ -16084,14 +16265,21 @@ class RDoc::Markdown
16084
16265
  self.pos = _save2
16085
16266
  break
16086
16267
  end
16268
+ _save3 = self.pos
16087
16269
  _ary = []
16088
- while true
16089
- _tmp = apply(:_TableAlign2)
16090
- _ary << @result if _tmp
16091
- break unless _tmp
16270
+ _tmp = apply(:_TableAlign2)
16271
+ if _tmp
16272
+ _ary << @result
16273
+ while true
16274
+ _tmp = apply(:_TableAlign2)
16275
+ _ary << @result if _tmp
16276
+ break unless _tmp
16277
+ end
16278
+ _tmp = true
16279
+ @result = _ary
16280
+ else
16281
+ self.pos = _save3
16092
16282
  end
16093
- _tmp = true
16094
- @result = _ary
16095
16283
  aligns = @result
16096
16284
  unless _tmp
16097
16285
  self.pos = _save2
@@ -16419,7 +16607,7 @@ class RDoc::Markdown
16419
16607
 
16420
16608
  Rules = {}
16421
16609
  Rules[:_root] = rule_info("root", "Doc")
16422
- Rules[:_Doc] = rule_info("Doc", "BOM? Block*:a { RDoc::Markup::Document.new(*a.compact) }")
16610
+ Rules[:_Doc] = rule_info("Doc", "Block*:a { RDoc::Markup::Document.new(*a.compact) }")
16423
16611
  Rules[:_Block] = rule_info("Block", "@BlankLine* (BlockQuote | Verbatim | CodeFence | Table | Note | Reference | HorizontalRule | Heading | OrderedList | BulletList | DefinitionList | HtmlBlock | StyleBlock | Para | Plain)")
16424
16612
  Rules[:_Para] = rule_info("Para", "@NonindentSpace Inlines:a @BlankLine+ { paragraph a }")
16425
16613
  Rules[:_Plain] = rule_info("Plain", "Inlines:a { paragraph a }")
@@ -16433,7 +16621,7 @@ class RDoc::Markdown
16433
16621
  Rules[:_SetextHeading2] = rule_info("SetextHeading2", "&(@RawLine SetextBottom2) @StartList:a (!@Endline Inline:b { a << b })+ @Sp @Newline SetextBottom2 { RDoc::Markup::Heading.new(2, a.join) }")
16434
16622
  Rules[:_Heading] = rule_info("Heading", "(SetextHeading | AtxHeading)")
16435
16623
  Rules[:_BlockQuote] = rule_info("BlockQuote", "BlockQuoteRaw:a { RDoc::Markup::BlockQuote.new(*a) }")
16436
- Rules[:_BlockQuoteRaw] = rule_info("BlockQuoteRaw", "@StartList:a (\">\" \" \"? Line:l { a << l } (!\">\" !@BlankLine Line:c { a << c })* (@BlankLine:n { a << n })*)+ { inner_parse a.join }")
16624
+ Rules[:_BlockQuoteRaw] = rule_info("BlockQuoteRaw", "@StartList:a (\">\" \" \"? Line:l { a << l } (!\">\" !@BlankLine !(AtxStart @Spacechar) !Bullet !Enumerator !(&{ github? } Ticks3) Line:c { a << c })* (\">\" @BlankLine:n { a << n })*)+ { inner_parse a.join }")
16437
16625
  Rules[:_NonblankIndentedLine] = rule_info("NonblankIndentedLine", "!@BlankLine IndentedLine")
16438
16626
  Rules[:_VerbatimChunk] = rule_info("VerbatimChunk", "@BlankLine*:a NonblankIndentedLine+:b { a.concat b }")
16439
16627
  Rules[:_Verbatim] = rule_info("Verbatim", "VerbatimChunk+:a { RDoc::Markup::Verbatim.new(*a.flatten) }")
@@ -16555,7 +16743,7 @@ class RDoc::Markdown
16555
16743
  Rules[:_HtmlBlockCloseHead] = rule_info("HtmlBlockCloseHead", "\"<\" Spnl \"/\" (\"head\" | \"HEAD\") Spnl \">\"")
16556
16744
  Rules[:_HtmlBlockHead] = rule_info("HtmlBlockHead", "HtmlBlockOpenHead (!HtmlBlockCloseHead .)* HtmlBlockCloseHead")
16557
16745
  Rules[:_HtmlBlockInTags] = rule_info("HtmlBlockInTags", "(HtmlAnchor | HtmlBlockAddress | HtmlBlockBlockquote | HtmlBlockCenter | HtmlBlockDir | HtmlBlockDiv | HtmlBlockDl | HtmlBlockFieldset | HtmlBlockForm | HtmlBlockH1 | HtmlBlockH2 | HtmlBlockH3 | HtmlBlockH4 | HtmlBlockH5 | HtmlBlockH6 | HtmlBlockMenu | HtmlBlockNoframes | HtmlBlockNoscript | HtmlBlockOl | HtmlBlockP | HtmlBlockPre | HtmlBlockTable | HtmlBlockUl | HtmlBlockDd | HtmlBlockDt | HtmlBlockFrameset | HtmlBlockLi | HtmlBlockTbody | HtmlBlockTd | HtmlBlockTfoot | HtmlBlockTh | HtmlBlockThead | HtmlBlockTr | HtmlBlockScript | HtmlBlockHead)")
16558
- Rules[:_HtmlBlock] = rule_info("HtmlBlock", "< (HtmlBlockInTags | HtmlComment | HtmlBlockSelfClosing | HtmlUnclosed) > @BlankLine+ { if html? then RDoc::Markup::Raw.new text end }")
16746
+ Rules[:_HtmlBlock] = rule_info("HtmlBlock", "&\"<\" < (HtmlBlockInTags | HtmlComment | HtmlBlockSelfClosing | HtmlUnclosed) > @BlankLine+ { if html? then RDoc::Markup::Raw.new text end }")
16559
16747
  Rules[:_HtmlUnclosed] = rule_info("HtmlUnclosed", "\"<\" Spnl HtmlUnclosedType Spnl HtmlAttribute* Spnl \">\"")
16560
16748
  Rules[:_HtmlUnclosedType] = rule_info("HtmlUnclosedType", "(\"HR\" | \"hr\")")
16561
16749
  Rules[:_HtmlBlockSelfClosing] = rule_info("HtmlBlockSelfClosing", "\"<\" Spnl HtmlBlockType Spnl HtmlAttribute* \"/\" Spnl \">\"")
@@ -16565,17 +16753,17 @@ class RDoc::Markdown
16565
16753
  Rules[:_InStyleTags] = rule_info("InStyleTags", "StyleOpen (!StyleClose .)* StyleClose")
16566
16754
  Rules[:_StyleBlock] = rule_info("StyleBlock", "< InStyleTags > @BlankLine* { if css? then RDoc::Markup::Raw.new text end }")
16567
16755
  Rules[:_Inlines] = rule_info("Inlines", "(!@Endline Inline:i { i } | @Endline:c !(&{ github? } Ticks3 /[^`\\n]*$/) &Inline { c })+:chunks @Endline? { chunks }")
16568
- Rules[:_Inline] = rule_info("Inline", "(Str | @Endline | UlOrStarLine | @Space | Strong | Emph | Strike | Image | Link | NoteReference | InlineNote | Code | RawHtml | Entity | EscapedChar | Symbol)")
16756
+ Rules[:_Inline] = rule_info("Inline", "(Str | @Endline | UlOrStarLine | @Space | Strong | Emph | Strike | Image | Link | NoteReference | InlineNote | Code | RawHtml | StrippedComment | Entity | EscapedChar | Symbol)")
16569
16757
  Rules[:_Space] = rule_info("Space", "@Spacechar+ { \" \" }")
16570
- Rules[:_Str] = rule_info("Str", "@StartList:a < @NormalChar+ > { a = text } (StrChunk:c { a << c })* { a }")
16758
+ Rules[:_Str] = rule_info("Str", "@StartList:a < @NormalChar+ > { a = text } (StrChunk:c { a << c })* { rdoc_escape(a) }")
16571
16759
  Rules[:_StrChunk] = rule_info("StrChunk", "< (@NormalChar | /_+/ &Alphanumeric)+ > { text }")
16572
- Rules[:_EscapedChar] = rule_info("EscapedChar", "\"\\\\\" !@Newline < /[:\\\\`|*_{}\\[\\]()\#+.!><-]/ > { text }")
16760
+ Rules[:_EscapedChar] = rule_info("EscapedChar", "\"\\\\\" !@Newline < /[:\\\\`|*_{}\\[\\]()\#+.!><-]/ > { rdoc_escape(text) }")
16573
16761
  Rules[:_Entity] = rule_info("Entity", "(HexEntity | DecEntity | CharEntity):a { a }")
16574
16762
  Rules[:_Endline] = rule_info("Endline", "(@LineBreak | @TerminalEndline | @NormalEndline)")
16575
16763
  Rules[:_NormalEndline] = rule_info("NormalEndline", "@Sp @Newline !@BlankLine !\">\" !AtxStart !(Line /={1,}|-{1,}/ @Newline) { \"\\n\" }")
16576
16764
  Rules[:_TerminalEndline] = rule_info("TerminalEndline", "@Sp @Newline @Eof")
16577
16765
  Rules[:_LineBreak] = rule_info("LineBreak", "\" \" @NormalEndline { RDoc::Markup::HardBreak.new }")
16578
- Rules[:_Symbol] = rule_info("Symbol", "< @SpecialChar > { text }")
16766
+ Rules[:_Symbol] = rule_info("Symbol", "< @SpecialChar > { rdoc_escape(text) }")
16579
16767
  Rules[:_UlOrStarLine] = rule_info("UlOrStarLine", "(UlLine | StarLine):a { a }")
16580
16768
  Rules[:_StarLine] = rule_info("StarLine", "(< /\\*{4,}/ > { text } | < @Spacechar /\\*+/ &@Spacechar > { text })")
16581
16769
  Rules[:_UlLine] = rule_info("UlLine", "(< /_{4,}/ > { text } | < @Spacechar /_+/ &@Spacechar > { text })")
@@ -16592,7 +16780,7 @@ class RDoc::Markdown
16592
16780
  Rules[:_ReferenceLink] = rule_info("ReferenceLink", "(ReferenceLinkDouble | ReferenceLinkSingle)")
16593
16781
  Rules[:_ReferenceLinkDouble] = rule_info("ReferenceLinkDouble", "Label:content < Spnl > !\"[]\" Label:label { link_to content, label, text }")
16594
16782
  Rules[:_ReferenceLinkSingle] = rule_info("ReferenceLinkSingle", "Label:content < (Spnl \"[]\")? > { link_to content, content, text }")
16595
- Rules[:_ExplicitLink] = rule_info("ExplicitLink", "ExplicitLinkWithLabel:a { \"{\#{a[:label]}}[\#{a[:link]}]\" }")
16783
+ Rules[:_ExplicitLink] = rule_info("ExplicitLink", "ExplicitLinkWithLabel:a { \"{\#{a[:label]}}[\#{rdoc_link_url_escape(a[:link])}]\" }")
16596
16784
  Rules[:_ExplicitLinkWithLabel] = rule_info("ExplicitLinkWithLabel", "Label:label \"(\" @Sp Source:link Spnl Title @Sp \")\" { { label: label, link: link } }")
16597
16785
  Rules[:_Source] = rule_info("Source", "(\"<\" < SourceContents > \">\" | < SourceContents >) { text }")
16598
16786
  Rules[:_SourceContents] = rule_info("SourceContents", "((!\"(\" !\")\" !\">\" Nonspacechar)+ | \"(\" SourceContents \")\")*")
@@ -16617,7 +16805,8 @@ class RDoc::Markdown
16617
16805
  Rules[:_Ticks4] = rule_info("Ticks4", "\"````\" !\"`\"")
16618
16806
  Rules[:_Ticks5] = rule_info("Ticks5", "\"`````\" !\"`\"")
16619
16807
  Rules[:_Code] = rule_info("Code", "(Ticks1 < ((!\"`\" Nonspacechar)+ | !Ticks1 /`+/ | !Ticks1 (@Spacechar | @Newline !@BlankLine))+ > Ticks1 | Ticks2 < ((!\"`\" Nonspacechar)+ | !Ticks2 /`+/ | !Ticks2 (@Spacechar | @Newline !@BlankLine))+ > Ticks2 | Ticks3 < ((!\"`\" Nonspacechar)+ | !Ticks3 /`+/ | !Ticks3 (@Spacechar | @Newline !@BlankLine))+ > Ticks3 | Ticks4 < ((!\"`\" Nonspacechar)+ | !Ticks4 /`+/ | !Ticks4 (@Spacechar | @Newline !@BlankLine))+ > Ticks4 | Ticks5 < ((!\"`\" Nonspacechar)+ | !Ticks5 /`+/ | !Ticks5 (@Spacechar | @Newline !@BlankLine))+ > Ticks5) { code text }")
16620
- Rules[:_RawHtml] = rule_info("RawHtml", "< (HtmlComment | HtmlBlockScript | HtmlTag) > { if html? then text else '' end }")
16808
+ Rules[:_RawHtml] = rule_info("RawHtml", "< (HtmlBlockScript | HtmlTag) > { html? ? text : '' }")
16809
+ Rules[:_StrippedComment] = rule_info("StrippedComment", "HtmlComment { '' }")
16621
16810
  Rules[:_BlankLine] = rule_info("BlankLine", "@Sp @Newline { \"\\n\" }")
16622
16811
  Rules[:_Quoted] = rule_info("Quoted", "(\"\\\"\" (!\"\\\"\" .)* \"\\\"\" | \"'\" (!\"'\" .)* \"'\")")
16623
16812
  Rules[:_HtmlAttribute] = rule_info("HtmlAttribute", "(AlphanumericAscii | \"-\")+ Spnl (\"=\" Spnl (Quoted | (!\">\" Nonspacechar)+))? Spnl")
@@ -16630,14 +16819,13 @@ class RDoc::Markdown
16630
16819
  Rules[:_SpecialChar] = rule_info("SpecialChar", "(/[~*_`&\\[\\]()<!\#\\\\'\"]/ | @ExtendedSpecialChar)")
16631
16820
  Rules[:_NormalChar] = rule_info("NormalChar", "!(@SpecialChar | @Spacechar | @Newline) .")
16632
16821
  Rules[:_Digit] = rule_info("Digit", "[0-9]")
16633
- Rules[:_Alphanumeric] = rule_info("Alphanumeric", "%literals.Alphanumeric")
16634
- Rules[:_AlphanumericAscii] = rule_info("AlphanumericAscii", "%literals.AlphanumericAscii")
16635
- Rules[:_BOM] = rule_info("BOM", "%literals.BOM")
16636
- Rules[:_Newline] = rule_info("Newline", "%literals.Newline")
16637
- Rules[:_Spacechar] = rule_info("Spacechar", "%literals.Spacechar")
16638
- Rules[:_HexEntity] = rule_info("HexEntity", "/&\#x/i < /[0-9a-fA-F]+/ > \";\" { [text.to_i(16)].pack 'U' }")
16639
- Rules[:_DecEntity] = rule_info("DecEntity", "\"&\#\" < /[0-9]+/ > \";\" { [text.to_i].pack 'U' }")
16640
- Rules[:_CharEntity] = rule_info("CharEntity", "\"&\" < /[A-Za-z0-9]+/ > \";\" { if entity = HTML_ENTITIES[text] then entity.pack 'U*' else \"&\#{text};\" end }")
16822
+ Rules[:_Alphanumeric] = rule_info("Alphanumeric", "/\\p{Word}/")
16823
+ Rules[:_AlphanumericAscii] = rule_info("AlphanumericAscii", "/[A-Za-z0-9]/")
16824
+ Rules[:_Newline] = rule_info("Newline", "/\\n|\\r\\n?|\\p{Zl}|\\p{Zp}/")
16825
+ Rules[:_Spacechar] = rule_info("Spacechar", "/\\t|\\p{Zs}/")
16826
+ Rules[:_HexEntity] = rule_info("HexEntity", "/&\#x/i < /[0-9a-fA-F]+/ > \";\" { rdoc_escape([text.to_i(16)].pack('U')) }")
16827
+ Rules[:_DecEntity] = rule_info("DecEntity", "\"&\#\" < /[0-9]+/ > \";\" { rdoc_escape([text.to_i].pack('U')) }")
16828
+ Rules[:_CharEntity] = rule_info("CharEntity", "\"&\" < /[A-Za-z0-9]+/ > \";\" { if entity = HTML_ENTITIES[text] then rdoc_escape(entity.pack('U*')) else \"&\#{text};\" end }")
16641
16829
  Rules[:_NonindentSpace] = rule_info("NonindentSpace", "/ {0,3}/")
16642
16830
  Rules[:_Indent] = rule_info("Indent", "/\\t| /")
16643
16831
  Rules[:_IndentedLine] = rule_info("IndentedLine", "Indent Line")
@@ -16650,16 +16838,16 @@ class RDoc::Markdown
16650
16838
  Rules[:_NoteReference] = rule_info("NoteReference", "&{ notes? } RawNoteReference:ref { note_for ref }")
16651
16839
  Rules[:_RawNoteReference] = rule_info("RawNoteReference", "\"[^\" < (!@Newline !\"]\" .)+ > \"]\" { text }")
16652
16840
  Rules[:_Note] = rule_info("Note", "&{ notes? } @NonindentSpace RawNoteReference:ref \":\" @Sp @StartList:a RawNoteBlock:i { a.concat i } (&Indent RawNoteBlock:i { a.concat i })* { @footnotes[ref] = paragraph a nil }")
16653
- Rules[:_InlineNote] = rule_info("InlineNote", "&{ notes? } \"^[\" @StartList:a (!\"]\" Inline:l { a << l })+ \"]\" { ref = [:inline, @note_order.length] @footnotes[ref] = paragraph a note_for ref }")
16841
+ Rules[:_InlineNote] = rule_info("InlineNote", "&{ notes? } \"^[\" @StartList:a (!\"]\" Inline:l { a << l })+ \"]\" { if @note_order ref = [:inline, @note_order.length] @footnotes[ref] = paragraph a note_for ref end }")
16654
16842
  Rules[:_Notes] = rule_info("Notes", "(Note | SkipBlock)*")
16655
16843
  Rules[:_RawNoteBlock] = rule_info("RawNoteBlock", "@StartList:a (!@BlankLine !RawNoteReference OptionallyIndentedLine:l { a << l })+ < @BlankLine* > { a << text } { a }")
16656
- Rules[:_CodeFence] = rule_info("CodeFence", "&{ github? } Ticks3 (@Sp StrChunk:format)? Spnl < ((!\"`\" Nonspacechar)+ | !Ticks3 /`+/ | Spacechar | @Newline)+ > Ticks3 @Sp @Newline* { verbatim = RDoc::Markup::Verbatim.new text verbatim.format = format.intern if format.instance_of?(String) verbatim }")
16844
+ Rules[:_CodeFence] = rule_info("CodeFence", "&{ github? } Ticks3 (@Sp StrChunk:format)? @Sp @Newline? < ((!\"`\" Nonspacechar)+ | !Ticks3 /`+/ | Spacechar | @Newline)+ > Ticks3 @Sp @Newline* { verbatim = RDoc::Markup::Verbatim.new text verbatim.format = format.intern if format.instance_of?(String) verbatim }")
16657
16845
  Rules[:_Table] = rule_info("Table", "&{ github? } TableHead:header TableLine:line TableRow+:body { table = RDoc::Markup::Table.new(header, line, body) parse_table_cells(table) }")
16658
16846
  Rules[:_TableHead] = rule_info("TableHead", "TableItem2+:items \"|\"? @Newline { items }")
16659
- Rules[:_TableRow] = rule_info("TableRow", "((TableItem:item1 TableItem2*:items { [item1, *items] }):row | TableItem2+:row) \"|\"? @Newline { row }")
16847
+ Rules[:_TableRow] = rule_info("TableRow", "((TableItem:item1 TableItem2+:items { [item1, *items] }):row | TableItem2+:row) \"|\"? @Newline { row }")
16660
16848
  Rules[:_TableItem2] = rule_info("TableItem2", "\"|\" TableItem")
16661
16849
  Rules[:_TableItem] = rule_info("TableItem", "< /(?:\\\\.|[^|\\n])+/ > { text.strip.gsub(/\\\\([|])/, '\\1') }")
16662
- Rules[:_TableLine] = rule_info("TableLine", "((TableAlign:align1 TableAlign2*:aligns {[align1, *aligns] }):line | TableAlign2+:line) \"|\"? @Newline { line }")
16850
+ Rules[:_TableLine] = rule_info("TableLine", "((TableAlign:align1 TableAlign2+:aligns {[align1, *aligns] }):line | TableAlign2+:line) \"|\"? @Newline { line }")
16663
16851
  Rules[:_TableAlign2] = rule_info("TableAlign2", "\"|\" @Sp TableAlign")
16664
16852
  Rules[:_TableAlign] = rule_info("TableAlign", "< /:?-+:?/ > @Sp { text.start_with?(\":\") ? (text.end_with?(\":\") ? :center : :left) : (text.end_with?(\":\") ? :right : nil) }")
16665
16853
  Rules[:_DefinitionList] = rule_info("DefinitionList", "&{ definition_lists? } DefinitionListItem+:list { RDoc::Markup::List.new :NOTE, *list.flatten }")