rdoc 7.1.0 → 8.0.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 (113) hide show
  1. checksums.yaml +4 -4
  2. data/CONTRIBUTING.md +3 -4
  3. data/LICENSE.rdoc +4 -0
  4. data/README.md +43 -2
  5. data/doc/markup_reference/markdown.md +104 -3
  6. data/lib/rdoc/code_object/alias.rb +2 -8
  7. data/lib/rdoc/code_object/any_method.rb +11 -6
  8. data/lib/rdoc/code_object/attr.rb +12 -6
  9. data/lib/rdoc/code_object/class_module.rb +62 -32
  10. data/lib/rdoc/code_object/constant.rb +29 -3
  11. data/lib/rdoc/code_object/context/section.rb +30 -43
  12. data/lib/rdoc/code_object/context.rb +53 -37
  13. data/lib/rdoc/code_object/method_attr.rb +9 -15
  14. data/lib/rdoc/code_object/mixin.rb +3 -0
  15. data/lib/rdoc/code_object/top_level.rb +11 -3
  16. data/lib/rdoc/code_object.rb +2 -4
  17. data/lib/rdoc/comment.rb +1 -66
  18. data/lib/rdoc/cross_reference.rb +8 -30
  19. data/lib/rdoc/encoding.rb +3 -3
  20. data/lib/rdoc/generator/aliki.rb +17 -0
  21. data/lib/rdoc/generator/darkfish.rb +12 -6
  22. data/lib/rdoc/generator/json_index.rb +2 -2
  23. data/lib/rdoc/generator/markup.rb +56 -31
  24. data/lib/rdoc/generator/template/aliki/DESIGN.md +536 -0
  25. data/lib/rdoc/generator/template/aliki/_aside_toc.rhtml +1 -1
  26. data/lib/rdoc/generator/template/aliki/_head.rhtml +6 -1
  27. data/lib/rdoc/generator/template/aliki/_sidebar_extends.rhtml +8 -6
  28. data/lib/rdoc/generator/template/aliki/_sidebar_includes.rhtml +8 -6
  29. data/lib/rdoc/generator/template/aliki/_sidebar_installed.rhtml +1 -1
  30. data/lib/rdoc/generator/template/aliki/_sidebar_pages.rhtml +2 -2
  31. data/lib/rdoc/generator/template/aliki/_sidebar_sections.rhtml +1 -1
  32. data/lib/rdoc/generator/template/aliki/_sidebar_toggle.rhtml +1 -1
  33. data/lib/rdoc/generator/template/aliki/class.rhtml +61 -51
  34. data/lib/rdoc/generator/template/aliki/css/rdoc.css +365 -147
  35. data/lib/rdoc/generator/template/aliki/index.rhtml +1 -1
  36. data/lib/rdoc/generator/template/aliki/js/aliki.js +28 -20
  37. data/lib/rdoc/generator/template/aliki/js/bash_highlighter.js +167 -0
  38. data/lib/rdoc/generator/template/aliki/js/search_controller.js +1 -1
  39. data/lib/rdoc/generator/template/aliki/page.rhtml +1 -1
  40. data/lib/rdoc/generator/template/aliki/servlet_not_found.rhtml +1 -1
  41. data/lib/rdoc/generator/template/aliki/servlet_root.rhtml +2 -2
  42. data/lib/rdoc/generator/template/darkfish/_sidebar_extends.rhtml +8 -6
  43. data/lib/rdoc/generator/template/darkfish/_sidebar_includes.rhtml +8 -6
  44. data/lib/rdoc/generator/template/darkfish/_sidebar_installed.rhtml +1 -1
  45. data/lib/rdoc/generator/template/darkfish/_sidebar_pages.rhtml +1 -1
  46. data/lib/rdoc/generator/template/darkfish/_sidebar_sections.rhtml +1 -1
  47. data/lib/rdoc/generator/template/darkfish/_sidebar_table_of_contents.rhtml +5 -5
  48. data/lib/rdoc/generator/template/darkfish/class.rhtml +18 -21
  49. data/lib/rdoc/generator/template/darkfish/css/rdoc.css +0 -1
  50. data/lib/rdoc/generator/template/darkfish/table_of_contents.rhtml +3 -3
  51. data/lib/rdoc/i18n/text.rb +3 -3
  52. data/lib/rdoc/markdown.kpeg +36 -17
  53. data/lib/rdoc/markdown.rb +324 -125
  54. data/lib/rdoc/markup/document.rb +2 -2
  55. data/lib/rdoc/markup/formatter.rb +128 -115
  56. data/lib/rdoc/markup/heading.rb +3 -6
  57. data/lib/rdoc/markup/indented_paragraph.rb +1 -1
  58. data/lib/rdoc/markup/inline_parser.rb +312 -0
  59. data/lib/rdoc/markup/list.rb +2 -2
  60. data/lib/rdoc/markup/list_item.rb +2 -2
  61. data/lib/rdoc/markup/parser.rb +1 -1
  62. data/lib/rdoc/markup/pre_process.rb +0 -25
  63. data/lib/rdoc/markup/to_ansi.rb +52 -5
  64. data/lib/rdoc/markup/to_bs.rb +23 -43
  65. data/lib/rdoc/markup/to_html.rb +279 -226
  66. data/lib/rdoc/markup/to_html_crossref.rb +122 -136
  67. data/lib/rdoc/markup/to_html_snippet.rb +65 -65
  68. data/lib/rdoc/markup/to_joined_paragraph.rb +0 -5
  69. data/lib/rdoc/markup/to_label.rb +22 -23
  70. data/lib/rdoc/markup/to_markdown.rb +62 -38
  71. data/lib/rdoc/markup/to_rdoc.rb +88 -28
  72. data/lib/rdoc/markup/to_table_of_contents.rb +1 -1
  73. data/lib/rdoc/markup/to_test.rb +9 -1
  74. data/lib/rdoc/markup/to_tt_only.rb +10 -23
  75. data/lib/rdoc/markup/verbatim.rb +1 -1
  76. data/lib/rdoc/markup.rb +8 -30
  77. data/lib/rdoc/options.rb +36 -51
  78. data/lib/rdoc/parser/c.rb +7 -6
  79. data/lib/rdoc/parser/changelog.rb +21 -0
  80. data/lib/rdoc/parser/rbs.rb +275 -0
  81. data/lib/rdoc/parser/ruby.rb +955 -2067
  82. data/lib/rdoc/parser/ruby_colorizer.rb +253 -0
  83. data/lib/rdoc/parser.rb +3 -2
  84. data/lib/rdoc/rbs_helper.rb +186 -0
  85. data/lib/rdoc/rdoc.rb +196 -24
  86. data/lib/rdoc/ri/driver.rb +8 -2
  87. data/lib/rdoc/ri/paths.rb +1 -1
  88. data/lib/rdoc/{servlet.rb → ri/servlet.rb} +5 -5
  89. data/lib/rdoc/ri.rb +4 -3
  90. data/lib/rdoc/rubygems_hook.rb +11 -11
  91. data/lib/rdoc/server.rb +460 -0
  92. data/lib/rdoc/stats.rb +147 -124
  93. data/lib/rdoc/store.rb +212 -4
  94. data/lib/rdoc/task.rb +16 -15
  95. data/lib/rdoc/text.rb +24 -117
  96. data/lib/rdoc/token_stream.rb +11 -33
  97. data/lib/rdoc/version.rb +1 -1
  98. data/lib/rdoc.rb +35 -7
  99. data/lib/rubygems_plugin.rb +2 -11
  100. data/rdoc-logo.svg +43 -0
  101. data/rdoc.gemspec +6 -4
  102. metadata +37 -23
  103. data/lib/rdoc/code_object/anon_class.rb +0 -10
  104. data/lib/rdoc/code_object/ghost_method.rb +0 -6
  105. data/lib/rdoc/code_object/meta_method.rb +0 -6
  106. data/lib/rdoc/markup/attr_changer.rb +0 -22
  107. data/lib/rdoc/markup/attr_span.rb +0 -35
  108. data/lib/rdoc/markup/attribute_manager.rb +0 -432
  109. data/lib/rdoc/markup/attributes.rb +0 -70
  110. data/lib/rdoc/markup/regexp_handling.rb +0 -40
  111. data/lib/rdoc/parser/prism_ruby.rb +0 -1100
  112. data/lib/rdoc/parser/ripper_state_lex.rb +0 -302
  113. data/lib/rdoc/parser/ruby_tools.rb +0 -163
data/lib/rdoc/markdown.rb CHANGED
@@ -688,6 +688,20 @@ class RDoc::Markdown
688
688
  end
689
689
  end
690
690
 
691
+ # Escape character that has special meaning in RDoc format.
692
+ # To allow rdoc-styled link used in markdown format for now, bracket and brace are not escaped.
693
+
694
+ def rdoc_escape(text)
695
+ text.gsub(/[*+<\\_]/) {|s| "\\#{s}" }
696
+ end
697
+
698
+ # Escape link url that contains brackets.
699
+ # Brackets needs escape because link url will be surrounded by `[]` in RDoc format.
700
+
701
+ def rdoc_link_url_escape(text)
702
+ text.gsub(/[\[\]\\]/) {|s| "\\#{s}" }
703
+ end
704
+
691
705
  ##
692
706
  # :category: Extensions
693
707
  #
@@ -774,6 +788,8 @@ class RDoc::Markdown
774
788
  # the note order list for proper display at the end of the document.
775
789
 
776
790
  def note_for ref
791
+ return unless @note_order
792
+
777
793
  @note_order << ref
778
794
 
779
795
  label = @note_order.length
@@ -1642,7 +1658,7 @@ class RDoc::Markdown
1642
1658
  return _tmp
1643
1659
  end
1644
1660
 
1645
- # BlockQuoteRaw = @StartList:a (">" " "? Line:l { a << l } (!">" !@BlankLine Line:c { a << c })* (@BlankLine:n { a << n })*)+ { inner_parse a.join }
1661
+ # 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 }
1646
1662
  def _BlockQuoteRaw
1647
1663
 
1648
1664
  _save = self.pos
@@ -1704,6 +1720,68 @@ class RDoc::Markdown
1704
1720
  self.pos = _save5
1705
1721
  break
1706
1722
  end
1723
+ _save8 = self.pos
1724
+
1725
+ _save9 = self.pos
1726
+ while true # sequence
1727
+ _tmp = apply(:_AtxStart)
1728
+ unless _tmp
1729
+ self.pos = _save9
1730
+ break
1731
+ end
1732
+ _tmp = _Spacechar()
1733
+ unless _tmp
1734
+ self.pos = _save9
1735
+ end
1736
+ break
1737
+ end # end sequence
1738
+
1739
+ _tmp = _tmp ? nil : true
1740
+ self.pos = _save8
1741
+ unless _tmp
1742
+ self.pos = _save5
1743
+ break
1744
+ end
1745
+ _save10 = self.pos
1746
+ _tmp = apply(:_Bullet)
1747
+ _tmp = _tmp ? nil : true
1748
+ self.pos = _save10
1749
+ unless _tmp
1750
+ self.pos = _save5
1751
+ break
1752
+ end
1753
+ _save11 = self.pos
1754
+ _tmp = apply(:_Enumerator)
1755
+ _tmp = _tmp ? nil : true
1756
+ self.pos = _save11
1757
+ unless _tmp
1758
+ self.pos = _save5
1759
+ break
1760
+ end
1761
+ _save12 = self.pos
1762
+
1763
+ _save13 = self.pos
1764
+ while true # sequence
1765
+ _save14 = self.pos
1766
+ _tmp = begin; github? ; end
1767
+ self.pos = _save14
1768
+ unless _tmp
1769
+ self.pos = _save13
1770
+ break
1771
+ end
1772
+ _tmp = apply(:_Ticks3)
1773
+ unless _tmp
1774
+ self.pos = _save13
1775
+ end
1776
+ break
1777
+ end # end sequence
1778
+
1779
+ _tmp = _tmp ? nil : true
1780
+ self.pos = _save12
1781
+ unless _tmp
1782
+ self.pos = _save5
1783
+ break
1784
+ end
1707
1785
  _tmp = apply(:_Line)
1708
1786
  c = @result
1709
1787
  unless _tmp
@@ -1727,18 +1805,23 @@ class RDoc::Markdown
1727
1805
  end
1728
1806
  while true
1729
1807
 
1730
- _save9 = self.pos
1808
+ _save16 = self.pos
1731
1809
  while true # sequence
1810
+ _tmp = match_string(">")
1811
+ unless _tmp
1812
+ self.pos = _save16
1813
+ break
1814
+ end
1732
1815
  _tmp = _BlankLine()
1733
1816
  n = @result
1734
1817
  unless _tmp
1735
- self.pos = _save9
1818
+ self.pos = _save16
1736
1819
  break
1737
1820
  end
1738
1821
  @result = begin; a << n ; end
1739
1822
  _tmp = true
1740
1823
  unless _tmp
1741
- self.pos = _save9
1824
+ self.pos = _save16
1742
1825
  end
1743
1826
  break
1744
1827
  end # end sequence
@@ -1755,65 +1838,127 @@ class RDoc::Markdown
1755
1838
  if _tmp
1756
1839
  while true
1757
1840
 
1758
- _save10 = self.pos
1841
+ _save17 = self.pos
1759
1842
  while true # sequence
1760
1843
  _tmp = match_string(">")
1761
1844
  unless _tmp
1762
- self.pos = _save10
1845
+ self.pos = _save17
1763
1846
  break
1764
1847
  end
1765
- _save11 = self.pos
1848
+ _save18 = self.pos
1766
1849
  _tmp = match_string(" ")
1767
1850
  unless _tmp
1768
1851
  _tmp = true
1769
- self.pos = _save11
1852
+ self.pos = _save18
1770
1853
  end
1771
1854
  unless _tmp
1772
- self.pos = _save10
1855
+ self.pos = _save17
1773
1856
  break
1774
1857
  end
1775
1858
  _tmp = apply(:_Line)
1776
1859
  l = @result
1777
1860
  unless _tmp
1778
- self.pos = _save10
1861
+ self.pos = _save17
1779
1862
  break
1780
1863
  end
1781
1864
  @result = begin; a << l ; end
1782
1865
  _tmp = true
1783
1866
  unless _tmp
1784
- self.pos = _save10
1867
+ self.pos = _save17
1785
1868
  break
1786
1869
  end
1787
1870
  while true
1788
1871
 
1789
- _save13 = self.pos
1872
+ _save20 = self.pos
1790
1873
  while true # sequence
1791
- _save14 = self.pos
1874
+ _save21 = self.pos
1792
1875
  _tmp = match_string(">")
1793
1876
  _tmp = _tmp ? nil : true
1794
- self.pos = _save14
1877
+ self.pos = _save21
1795
1878
  unless _tmp
1796
- self.pos = _save13
1879
+ self.pos = _save20
1797
1880
  break
1798
1881
  end
1799
- _save15 = self.pos
1882
+ _save22 = self.pos
1800
1883
  _tmp = _BlankLine()
1801
1884
  _tmp = _tmp ? nil : true
1802
- self.pos = _save15
1885
+ self.pos = _save22
1886
+ unless _tmp
1887
+ self.pos = _save20
1888
+ break
1889
+ end
1890
+ _save23 = self.pos
1891
+
1892
+ _save24 = self.pos
1893
+ while true # sequence
1894
+ _tmp = apply(:_AtxStart)
1895
+ unless _tmp
1896
+ self.pos = _save24
1897
+ break
1898
+ end
1899
+ _tmp = _Spacechar()
1900
+ unless _tmp
1901
+ self.pos = _save24
1902
+ end
1903
+ break
1904
+ end # end sequence
1905
+
1906
+ _tmp = _tmp ? nil : true
1907
+ self.pos = _save23
1908
+ unless _tmp
1909
+ self.pos = _save20
1910
+ break
1911
+ end
1912
+ _save25 = self.pos
1913
+ _tmp = apply(:_Bullet)
1914
+ _tmp = _tmp ? nil : true
1915
+ self.pos = _save25
1916
+ unless _tmp
1917
+ self.pos = _save20
1918
+ break
1919
+ end
1920
+ _save26 = self.pos
1921
+ _tmp = apply(:_Enumerator)
1922
+ _tmp = _tmp ? nil : true
1923
+ self.pos = _save26
1924
+ unless _tmp
1925
+ self.pos = _save20
1926
+ break
1927
+ end
1928
+ _save27 = self.pos
1929
+
1930
+ _save28 = self.pos
1931
+ while true # sequence
1932
+ _save29 = self.pos
1933
+ _tmp = begin; github? ; end
1934
+ self.pos = _save29
1935
+ unless _tmp
1936
+ self.pos = _save28
1937
+ break
1938
+ end
1939
+ _tmp = apply(:_Ticks3)
1940
+ unless _tmp
1941
+ self.pos = _save28
1942
+ end
1943
+ break
1944
+ end # end sequence
1945
+
1946
+ _tmp = _tmp ? nil : true
1947
+ self.pos = _save27
1803
1948
  unless _tmp
1804
- self.pos = _save13
1949
+ self.pos = _save20
1805
1950
  break
1806
1951
  end
1807
1952
  _tmp = apply(:_Line)
1808
1953
  c = @result
1809
1954
  unless _tmp
1810
- self.pos = _save13
1955
+ self.pos = _save20
1811
1956
  break
1812
1957
  end
1813
1958
  @result = begin; a << c ; end
1814
1959
  _tmp = true
1815
1960
  unless _tmp
1816
- self.pos = _save13
1961
+ self.pos = _save20
1817
1962
  end
1818
1963
  break
1819
1964
  end # end sequence
@@ -1822,23 +1967,28 @@ class RDoc::Markdown
1822
1967
  end
1823
1968
  _tmp = true
1824
1969
  unless _tmp
1825
- self.pos = _save10
1970
+ self.pos = _save17
1826
1971
  break
1827
1972
  end
1828
1973
  while true
1829
1974
 
1830
- _save17 = self.pos
1975
+ _save31 = self.pos
1831
1976
  while true # sequence
1977
+ _tmp = match_string(">")
1978
+ unless _tmp
1979
+ self.pos = _save31
1980
+ break
1981
+ end
1832
1982
  _tmp = _BlankLine()
1833
1983
  n = @result
1834
1984
  unless _tmp
1835
- self.pos = _save17
1985
+ self.pos = _save31
1836
1986
  break
1837
1987
  end
1838
1988
  @result = begin; a << n ; end
1839
1989
  _tmp = true
1840
1990
  unless _tmp
1841
- self.pos = _save17
1991
+ self.pos = _save31
1842
1992
  end
1843
1993
  break
1844
1994
  end # end sequence
@@ -1847,7 +1997,7 @@ class RDoc::Markdown
1847
1997
  end
1848
1998
  _tmp = true
1849
1999
  unless _tmp
1850
- self.pos = _save10
2000
+ self.pos = _save17
1851
2001
  end
1852
2002
  break
1853
2003
  end # end sequence
@@ -9639,7 +9789,7 @@ class RDoc::Markdown
9639
9789
  return _tmp
9640
9790
  end
9641
9791
 
9642
- # Inline = (Str | @Endline | UlOrStarLine | @Space | Strong | Emph | Strike | Image | Link | NoteReference | InlineNote | Code | RawHtml | Entity | EscapedChar | Symbol)
9792
+ # Inline = (Str | @Endline | UlOrStarLine | @Space | Strong | Emph | Strike | Image | Link | NoteReference | InlineNote | Code | RawHtml | StrippedComment | Entity | EscapedChar | Symbol)
9643
9793
  def _Inline
9644
9794
 
9645
9795
  _save = self.pos
@@ -9683,6 +9833,9 @@ class RDoc::Markdown
9683
9833
  _tmp = apply(:_RawHtml)
9684
9834
  break if _tmp
9685
9835
  self.pos = _save
9836
+ _tmp = apply(:_StrippedComment)
9837
+ break if _tmp
9838
+ self.pos = _save
9686
9839
  _tmp = apply(:_Entity)
9687
9840
  break if _tmp
9688
9841
  self.pos = _save
@@ -9731,7 +9884,7 @@ class RDoc::Markdown
9731
9884
  return _tmp
9732
9885
  end
9733
9886
 
9734
- # Str = @StartList:a < @NormalChar+ > { a = text } (StrChunk:c { a << c })* { a }
9887
+ # Str = @StartList:a < @NormalChar+ > { a = text } (StrChunk:c { a << c })* { rdoc_escape(a) }
9735
9888
  def _Str
9736
9889
 
9737
9890
  _save = self.pos
@@ -9792,7 +9945,7 @@ class RDoc::Markdown
9792
9945
  self.pos = _save
9793
9946
  break
9794
9947
  end
9795
- @result = begin; a ; end
9948
+ @result = begin; rdoc_escape(a) ; end
9796
9949
  _tmp = true
9797
9950
  unless _tmp
9798
9951
  self.pos = _save
@@ -9894,7 +10047,7 @@ class RDoc::Markdown
9894
10047
  return _tmp
9895
10048
  end
9896
10049
 
9897
- # EscapedChar = "\\" !@Newline < /[:\\`|*_{}\[\]()#+.!><-]/ > { text }
10050
+ # EscapedChar = "\\" !@Newline < /[:\\`|*_{}\[\]()#+.!><-]/ > { rdoc_escape(text) }
9898
10051
  def _EscapedChar
9899
10052
 
9900
10053
  _save = self.pos
@@ -9921,7 +10074,7 @@ class RDoc::Markdown
9921
10074
  self.pos = _save
9922
10075
  break
9923
10076
  end
9924
- @result = begin; text ; end
10077
+ @result = begin; rdoc_escape(text) ; end
9925
10078
  _tmp = true
9926
10079
  unless _tmp
9927
10080
  self.pos = _save
@@ -10122,7 +10275,7 @@ class RDoc::Markdown
10122
10275
  return _tmp
10123
10276
  end
10124
10277
 
10125
- # Symbol = < @SpecialChar > { text }
10278
+ # Symbol = < @SpecialChar > { rdoc_escape(text) }
10126
10279
  def _Symbol
10127
10280
 
10128
10281
  _save = self.pos
@@ -10136,7 +10289,7 @@ class RDoc::Markdown
10136
10289
  self.pos = _save
10137
10290
  break
10138
10291
  end
10139
- @result = begin; text ; end
10292
+ @result = begin; rdoc_escape(text) ; end
10140
10293
  _tmp = true
10141
10294
  unless _tmp
10142
10295
  self.pos = _save
@@ -11189,7 +11342,7 @@ class RDoc::Markdown
11189
11342
  return _tmp
11190
11343
  end
11191
11344
 
11192
- # ExplicitLink = ExplicitLinkWithLabel:a { "{#{a[:label]}}[#{a[:link]}]" }
11345
+ # ExplicitLink = ExplicitLinkWithLabel:a { "{#{a[:label]}}[#{rdoc_link_url_escape(a[:link])}]" }
11193
11346
  def _ExplicitLink
11194
11347
 
11195
11348
  _save = self.pos
@@ -11200,7 +11353,7 @@ class RDoc::Markdown
11200
11353
  self.pos = _save
11201
11354
  break
11202
11355
  end
11203
- @result = begin; "{#{a[:label]}}[#{a[:link]}]" ; end
11356
+ @result = begin; "{#{a[:label]}}[#{rdoc_link_url_escape(a[:link])}]" ; end
11204
11357
  _tmp = true
11205
11358
  unless _tmp
11206
11359
  self.pos = _save
@@ -13983,7 +14136,7 @@ class RDoc::Markdown
13983
14136
  return _tmp
13984
14137
  end
13985
14138
 
13986
- # RawHtml = < (HtmlComment | HtmlBlockScript | HtmlTag) > { if html? then text else '' end }
14139
+ # RawHtml = < (HtmlBlockScript | HtmlTag) > { html? ? text : '' }
13987
14140
  def _RawHtml
13988
14141
 
13989
14142
  _save = self.pos
@@ -13992,9 +14145,6 @@ class RDoc::Markdown
13992
14145
 
13993
14146
  _save1 = self.pos
13994
14147
  while true # choice
13995
- _tmp = apply(:_HtmlComment)
13996
- break if _tmp
13997
- self.pos = _save1
13998
14148
  _tmp = apply(:_HtmlBlockScript)
13999
14149
  break if _tmp
14000
14150
  self.pos = _save1
@@ -14011,7 +14161,7 @@ class RDoc::Markdown
14011
14161
  self.pos = _save
14012
14162
  break
14013
14163
  end
14014
- @result = begin; if html? then text else '' end ; end
14164
+ @result = begin; html? ? text : '' ; end
14015
14165
  _tmp = true
14016
14166
  unless _tmp
14017
14167
  self.pos = _save
@@ -14023,6 +14173,28 @@ class RDoc::Markdown
14023
14173
  return _tmp
14024
14174
  end
14025
14175
 
14176
+ # StrippedComment = HtmlComment { '' }
14177
+ def _StrippedComment
14178
+
14179
+ _save = self.pos
14180
+ while true # sequence
14181
+ _tmp = apply(:_HtmlComment)
14182
+ unless _tmp
14183
+ self.pos = _save
14184
+ break
14185
+ end
14186
+ @result = begin; '' ; end
14187
+ _tmp = true
14188
+ unless _tmp
14189
+ self.pos = _save
14190
+ end
14191
+ break
14192
+ end # end sequence
14193
+
14194
+ set_failed_rule :_StrippedComment unless _tmp
14195
+ return _tmp
14196
+ end
14197
+
14026
14198
  # BlankLine = @Sp @Newline { "\n" }
14027
14199
  def _BlankLine
14028
14200
 
@@ -14615,7 +14787,7 @@ class RDoc::Markdown
14615
14787
  return _tmp
14616
14788
  end
14617
14789
 
14618
- # HexEntity = /&#x/i < /[0-9a-fA-F]+/ > ";" { [text.to_i(16)].pack 'U' }
14790
+ # HexEntity = /&#x/i < /[0-9a-fA-F]+/ > ";" { rdoc_escape([text.to_i(16)].pack('U')) }
14619
14791
  def _HexEntity
14620
14792
 
14621
14793
  _save = self.pos
@@ -14639,7 +14811,7 @@ class RDoc::Markdown
14639
14811
  self.pos = _save
14640
14812
  break
14641
14813
  end
14642
- @result = begin; [text.to_i(16)].pack 'U' ; end
14814
+ @result = begin; rdoc_escape([text.to_i(16)].pack('U')) ; end
14643
14815
  _tmp = true
14644
14816
  unless _tmp
14645
14817
  self.pos = _save
@@ -14651,7 +14823,7 @@ class RDoc::Markdown
14651
14823
  return _tmp
14652
14824
  end
14653
14825
 
14654
- # DecEntity = "&#" < /[0-9]+/ > ";" { [text.to_i].pack 'U' }
14826
+ # DecEntity = "&#" < /[0-9]+/ > ";" { rdoc_escape([text.to_i].pack('U')) }
14655
14827
  def _DecEntity
14656
14828
 
14657
14829
  _save = self.pos
@@ -14675,7 +14847,7 @@ class RDoc::Markdown
14675
14847
  self.pos = _save
14676
14848
  break
14677
14849
  end
14678
- @result = begin; [text.to_i].pack 'U' ; end
14850
+ @result = begin; rdoc_escape([text.to_i].pack('U')) ; end
14679
14851
  _tmp = true
14680
14852
  unless _tmp
14681
14853
  self.pos = _save
@@ -14687,7 +14859,7 @@ class RDoc::Markdown
14687
14859
  return _tmp
14688
14860
  end
14689
14861
 
14690
- # CharEntity = "&" < /[A-Za-z0-9]+/ > ";" { if entity = HTML_ENTITIES[text] then entity.pack 'U*' else "&#{text};" end }
14862
+ # CharEntity = "&" < /[A-Za-z0-9]+/ > ";" { if entity = HTML_ENTITIES[text] then rdoc_escape(entity.pack('U*')) else "&#{text};" end }
14691
14863
  def _CharEntity
14692
14864
 
14693
14865
  _save = self.pos
@@ -14712,7 +14884,7 @@ class RDoc::Markdown
14712
14884
  break
14713
14885
  end
14714
14886
  @result = begin; if entity = HTML_ENTITIES[text] then
14715
- entity.pack 'U*'
14887
+ rdoc_escape(entity.pack('U*'))
14716
14888
  else
14717
14889
  "&#{text};"
14718
14890
  end
@@ -15306,7 +15478,7 @@ class RDoc::Markdown
15306
15478
  return _tmp
15307
15479
  end
15308
15480
 
15309
- # InlineNote = &{ notes? } "^[" @StartList:a (!"]" Inline:l { a << l })+ "]" { ref = [:inline, @note_order.length] @footnotes[ref] = paragraph a note_for ref }
15481
+ # InlineNote = &{ notes? } "^[" @StartList:a (!"]" Inline:l { a << l })+ "]" { if @note_order ref = [:inline, @note_order.length] @footnotes[ref] = paragraph a note_for ref end }
15310
15482
  def _InlineNote
15311
15483
 
15312
15484
  _save = self.pos
@@ -15397,10 +15569,12 @@ class RDoc::Markdown
15397
15569
  self.pos = _save
15398
15570
  break
15399
15571
  end
15400
- @result = begin; ref = [:inline, @note_order.length]
15401
- @footnotes[ref] = paragraph a
15572
+ @result = begin; if @note_order
15573
+ ref = [:inline, @note_order.length]
15574
+ @footnotes[ref] = paragraph a
15402
15575
 
15403
- note_for ref
15576
+ note_for ref
15577
+ end
15404
15578
  ; end
15405
15579
  _tmp = true
15406
15580
  unless _tmp
@@ -15556,7 +15730,7 @@ class RDoc::Markdown
15556
15730
  return _tmp
15557
15731
  end
15558
15732
 
15559
- # 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 }
15733
+ # 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 }
15560
15734
  def _CodeFence
15561
15735
 
15562
15736
  _save = self.pos
@@ -15598,31 +15772,41 @@ class RDoc::Markdown
15598
15772
  self.pos = _save
15599
15773
  break
15600
15774
  end
15601
- _tmp = apply(:_Spnl)
15775
+ _tmp = _Sp()
15602
15776
  unless _tmp
15603
15777
  self.pos = _save
15604
15778
  break
15605
15779
  end
15606
- _text_start = self.pos
15607
15780
  _save4 = self.pos
15608
-
15781
+ _tmp = _Newline()
15782
+ unless _tmp
15783
+ _tmp = true
15784
+ self.pos = _save4
15785
+ end
15786
+ unless _tmp
15787
+ self.pos = _save
15788
+ break
15789
+ end
15790
+ _text_start = self.pos
15609
15791
  _save5 = self.pos
15610
- while true # choice
15611
- _save6 = self.pos
15612
15792
 
15793
+ _save6 = self.pos
15794
+ while true # choice
15613
15795
  _save7 = self.pos
15796
+
15797
+ _save8 = self.pos
15614
15798
  while true # sequence
15615
- _save8 = self.pos
15799
+ _save9 = self.pos
15616
15800
  _tmp = match_string("`")
15617
15801
  _tmp = _tmp ? nil : true
15618
- self.pos = _save8
15802
+ self.pos = _save9
15619
15803
  unless _tmp
15620
- self.pos = _save7
15804
+ self.pos = _save8
15621
15805
  break
15622
15806
  end
15623
15807
  _tmp = apply(:_Nonspacechar)
15624
15808
  unless _tmp
15625
- self.pos = _save7
15809
+ self.pos = _save8
15626
15810
  end
15627
15811
  break
15628
15812
  end # end sequence
@@ -15630,19 +15814,19 @@ class RDoc::Markdown
15630
15814
  if _tmp
15631
15815
  while true
15632
15816
 
15633
- _save9 = self.pos
15817
+ _save10 = self.pos
15634
15818
  while true # sequence
15635
- _save10 = self.pos
15819
+ _save11 = self.pos
15636
15820
  _tmp = match_string("`")
15637
15821
  _tmp = _tmp ? nil : true
15638
- self.pos = _save10
15822
+ self.pos = _save11
15639
15823
  unless _tmp
15640
- self.pos = _save9
15824
+ self.pos = _save10
15641
15825
  break
15642
15826
  end
15643
15827
  _tmp = apply(:_Nonspacechar)
15644
15828
  unless _tmp
15645
- self.pos = _save9
15829
+ self.pos = _save10
15646
15830
  end
15647
15831
  break
15648
15832
  end # end sequence
@@ -15651,59 +15835,59 @@ class RDoc::Markdown
15651
15835
  end
15652
15836
  _tmp = true
15653
15837
  else
15654
- self.pos = _save6
15838
+ self.pos = _save7
15655
15839
  end
15656
15840
  break if _tmp
15657
- self.pos = _save5
15841
+ self.pos = _save6
15658
15842
 
15659
- _save11 = self.pos
15843
+ _save12 = self.pos
15660
15844
  while true # sequence
15661
- _save12 = self.pos
15845
+ _save13 = self.pos
15662
15846
  _tmp = apply(:_Ticks3)
15663
15847
  _tmp = _tmp ? nil : true
15664
- self.pos = _save12
15848
+ self.pos = _save13
15665
15849
  unless _tmp
15666
- self.pos = _save11
15850
+ self.pos = _save12
15667
15851
  break
15668
15852
  end
15669
15853
  _tmp = scan(/\G(?-mix:`+)/)
15670
15854
  unless _tmp
15671
- self.pos = _save11
15855
+ self.pos = _save12
15672
15856
  end
15673
15857
  break
15674
15858
  end # end sequence
15675
15859
 
15676
15860
  break if _tmp
15677
- self.pos = _save5
15861
+ self.pos = _save6
15678
15862
  _tmp = apply(:_Spacechar)
15679
15863
  break if _tmp
15680
- self.pos = _save5
15864
+ self.pos = _save6
15681
15865
  _tmp = _Newline()
15682
15866
  break if _tmp
15683
- self.pos = _save5
15867
+ self.pos = _save6
15684
15868
  break
15685
15869
  end # end choice
15686
15870
 
15687
15871
  if _tmp
15688
15872
  while true
15689
15873
 
15690
- _save13 = self.pos
15874
+ _save14 = self.pos
15691
15875
  while true # choice
15692
- _save14 = self.pos
15693
-
15694
15876
  _save15 = self.pos
15877
+
15878
+ _save16 = self.pos
15695
15879
  while true # sequence
15696
- _save16 = self.pos
15880
+ _save17 = self.pos
15697
15881
  _tmp = match_string("`")
15698
15882
  _tmp = _tmp ? nil : true
15699
- self.pos = _save16
15883
+ self.pos = _save17
15700
15884
  unless _tmp
15701
- self.pos = _save15
15885
+ self.pos = _save16
15702
15886
  break
15703
15887
  end
15704
15888
  _tmp = apply(:_Nonspacechar)
15705
15889
  unless _tmp
15706
- self.pos = _save15
15890
+ self.pos = _save16
15707
15891
  end
15708
15892
  break
15709
15893
  end # end sequence
@@ -15711,19 +15895,19 @@ class RDoc::Markdown
15711
15895
  if _tmp
15712
15896
  while true
15713
15897
 
15714
- _save17 = self.pos
15898
+ _save18 = self.pos
15715
15899
  while true # sequence
15716
- _save18 = self.pos
15900
+ _save19 = self.pos
15717
15901
  _tmp = match_string("`")
15718
15902
  _tmp = _tmp ? nil : true
15719
- self.pos = _save18
15903
+ self.pos = _save19
15720
15904
  unless _tmp
15721
- self.pos = _save17
15905
+ self.pos = _save18
15722
15906
  break
15723
15907
  end
15724
15908
  _tmp = apply(:_Nonspacechar)
15725
15909
  unless _tmp
15726
- self.pos = _save17
15910
+ self.pos = _save18
15727
15911
  end
15728
15912
  break
15729
15913
  end # end sequence
@@ -15732,36 +15916,36 @@ class RDoc::Markdown
15732
15916
  end
15733
15917
  _tmp = true
15734
15918
  else
15735
- self.pos = _save14
15919
+ self.pos = _save15
15736
15920
  end
15737
15921
  break if _tmp
15738
- self.pos = _save13
15922
+ self.pos = _save14
15739
15923
 
15740
- _save19 = self.pos
15924
+ _save20 = self.pos
15741
15925
  while true # sequence
15742
- _save20 = self.pos
15926
+ _save21 = self.pos
15743
15927
  _tmp = apply(:_Ticks3)
15744
15928
  _tmp = _tmp ? nil : true
15745
- self.pos = _save20
15929
+ self.pos = _save21
15746
15930
  unless _tmp
15747
- self.pos = _save19
15931
+ self.pos = _save20
15748
15932
  break
15749
15933
  end
15750
15934
  _tmp = scan(/\G(?-mix:`+)/)
15751
15935
  unless _tmp
15752
- self.pos = _save19
15936
+ self.pos = _save20
15753
15937
  end
15754
15938
  break
15755
15939
  end # end sequence
15756
15940
 
15757
15941
  break if _tmp
15758
- self.pos = _save13
15942
+ self.pos = _save14
15759
15943
  _tmp = apply(:_Spacechar)
15760
15944
  break if _tmp
15761
- self.pos = _save13
15945
+ self.pos = _save14
15762
15946
  _tmp = _Newline()
15763
15947
  break if _tmp
15764
- self.pos = _save13
15948
+ self.pos = _save14
15765
15949
  break
15766
15950
  end # end choice
15767
15951
 
@@ -15769,7 +15953,7 @@ class RDoc::Markdown
15769
15953
  end
15770
15954
  _tmp = true
15771
15955
  else
15772
- self.pos = _save4
15956
+ self.pos = _save5
15773
15957
  end
15774
15958
  if _tmp
15775
15959
  text = get_text(_text_start)
@@ -15923,7 +16107,7 @@ class RDoc::Markdown
15923
16107
  return _tmp
15924
16108
  end
15925
16109
 
15926
- # TableRow = ((TableItem:item1 TableItem2*:items { [item1, *items] }):row | TableItem2+:row) "|"? @Newline { row }
16110
+ # TableRow = ((TableItem:item1 TableItem2+:items { [item1, *items] }):row | TableItem2+:row) "|"? @Newline { row }
15927
16111
  def _TableRow
15928
16112
 
15929
16113
  _save = self.pos
@@ -15940,14 +16124,21 @@ class RDoc::Markdown
15940
16124
  self.pos = _save2
15941
16125
  break
15942
16126
  end
16127
+ _save3 = self.pos
15943
16128
  _ary = []
15944
- while true
15945
- _tmp = apply(:_TableItem2)
15946
- _ary << @result if _tmp
15947
- break unless _tmp
16129
+ _tmp = apply(:_TableItem2)
16130
+ if _tmp
16131
+ _ary << @result
16132
+ while true
16133
+ _tmp = apply(:_TableItem2)
16134
+ _ary << @result if _tmp
16135
+ break unless _tmp
16136
+ end
16137
+ _tmp = true
16138
+ @result = _ary
16139
+ else
16140
+ self.pos = _save3
15948
16141
  end
15949
- _tmp = true
15950
- @result = _ary
15951
16142
  items = @result
15952
16143
  unless _tmp
15953
16144
  self.pos = _save2
@@ -16063,7 +16254,7 @@ class RDoc::Markdown
16063
16254
  return _tmp
16064
16255
  end
16065
16256
 
16066
- # TableLine = ((TableAlign:align1 TableAlign2*:aligns {[align1, *aligns] }):line | TableAlign2+:line) "|"? @Newline { line }
16257
+ # TableLine = ((TableAlign:align1 TableAlign2+:aligns {[align1, *aligns] }):line | TableAlign2+:line) "|"? @Newline { line }
16067
16258
  def _TableLine
16068
16259
 
16069
16260
  _save = self.pos
@@ -16080,14 +16271,21 @@ class RDoc::Markdown
16080
16271
  self.pos = _save2
16081
16272
  break
16082
16273
  end
16274
+ _save3 = self.pos
16083
16275
  _ary = []
16084
- while true
16085
- _tmp = apply(:_TableAlign2)
16086
- _ary << @result if _tmp
16087
- break unless _tmp
16276
+ _tmp = apply(:_TableAlign2)
16277
+ if _tmp
16278
+ _ary << @result
16279
+ while true
16280
+ _tmp = apply(:_TableAlign2)
16281
+ _ary << @result if _tmp
16282
+ break unless _tmp
16283
+ end
16284
+ _tmp = true
16285
+ @result = _ary
16286
+ else
16287
+ self.pos = _save3
16088
16288
  end
16089
- _tmp = true
16090
- @result = _ary
16091
16289
  aligns = @result
16092
16290
  unless _tmp
16093
16291
  self.pos = _save2
@@ -16429,7 +16627,7 @@ class RDoc::Markdown
16429
16627
  Rules[:_SetextHeading2] = rule_info("SetextHeading2", "&(@RawLine SetextBottom2) @StartList:a (!@Endline Inline:b { a << b })+ @Sp @Newline SetextBottom2 { RDoc::Markup::Heading.new(2, a.join) }")
16430
16628
  Rules[:_Heading] = rule_info("Heading", "(SetextHeading | AtxHeading)")
16431
16629
  Rules[:_BlockQuote] = rule_info("BlockQuote", "BlockQuoteRaw:a { RDoc::Markup::BlockQuote.new(*a) }")
16432
- Rules[:_BlockQuoteRaw] = rule_info("BlockQuoteRaw", "@StartList:a (\">\" \" \"? Line:l { a << l } (!\">\" !@BlankLine Line:c { a << c })* (@BlankLine:n { a << n })*)+ { inner_parse a.join }")
16630
+ 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 }")
16433
16631
  Rules[:_NonblankIndentedLine] = rule_info("NonblankIndentedLine", "!@BlankLine IndentedLine")
16434
16632
  Rules[:_VerbatimChunk] = rule_info("VerbatimChunk", "@BlankLine*:a NonblankIndentedLine+:b { a.concat b }")
16435
16633
  Rules[:_Verbatim] = rule_info("Verbatim", "VerbatimChunk+:a { RDoc::Markup::Verbatim.new(*a.flatten) }")
@@ -16561,17 +16759,17 @@ class RDoc::Markdown
16561
16759
  Rules[:_InStyleTags] = rule_info("InStyleTags", "StyleOpen (!StyleClose .)* StyleClose")
16562
16760
  Rules[:_StyleBlock] = rule_info("StyleBlock", "< InStyleTags > @BlankLine* { if css? then RDoc::Markup::Raw.new text end }")
16563
16761
  Rules[:_Inlines] = rule_info("Inlines", "(!@Endline Inline:i { i } | @Endline:c !(&{ github? } Ticks3 /[^`\\n]*$/) &Inline { c })+:chunks @Endline? { chunks }")
16564
- Rules[:_Inline] = rule_info("Inline", "(Str | @Endline | UlOrStarLine | @Space | Strong | Emph | Strike | Image | Link | NoteReference | InlineNote | Code | RawHtml | Entity | EscapedChar | Symbol)")
16762
+ Rules[:_Inline] = rule_info("Inline", "(Str | @Endline | UlOrStarLine | @Space | Strong | Emph | Strike | Image | Link | NoteReference | InlineNote | Code | RawHtml | StrippedComment | Entity | EscapedChar | Symbol)")
16565
16763
  Rules[:_Space] = rule_info("Space", "@Spacechar+ { \" \" }")
16566
- Rules[:_Str] = rule_info("Str", "@StartList:a < @NormalChar+ > { a = text } (StrChunk:c { a << c })* { a }")
16764
+ Rules[:_Str] = rule_info("Str", "@StartList:a < @NormalChar+ > { a = text } (StrChunk:c { a << c })* { rdoc_escape(a) }")
16567
16765
  Rules[:_StrChunk] = rule_info("StrChunk", "< (@NormalChar | /_+/ &Alphanumeric)+ > { text }")
16568
- Rules[:_EscapedChar] = rule_info("EscapedChar", "\"\\\\\" !@Newline < /[:\\\\`|*_{}\\[\\]()\#+.!><-]/ > { text }")
16766
+ Rules[:_EscapedChar] = rule_info("EscapedChar", "\"\\\\\" !@Newline < /[:\\\\`|*_{}\\[\\]()\#+.!><-]/ > { rdoc_escape(text) }")
16569
16767
  Rules[:_Entity] = rule_info("Entity", "(HexEntity | DecEntity | CharEntity):a { a }")
16570
16768
  Rules[:_Endline] = rule_info("Endline", "(@LineBreak | @TerminalEndline | @NormalEndline)")
16571
16769
  Rules[:_NormalEndline] = rule_info("NormalEndline", "@Sp @Newline !@BlankLine !\">\" !AtxStart !(Line /={1,}|-{1,}/ @Newline) { \"\\n\" }")
16572
16770
  Rules[:_TerminalEndline] = rule_info("TerminalEndline", "@Sp @Newline @Eof")
16573
16771
  Rules[:_LineBreak] = rule_info("LineBreak", "\" \" @NormalEndline { RDoc::Markup::HardBreak.new }")
16574
- Rules[:_Symbol] = rule_info("Symbol", "< @SpecialChar > { text }")
16772
+ Rules[:_Symbol] = rule_info("Symbol", "< @SpecialChar > { rdoc_escape(text) }")
16575
16773
  Rules[:_UlOrStarLine] = rule_info("UlOrStarLine", "(UlLine | StarLine):a { a }")
16576
16774
  Rules[:_StarLine] = rule_info("StarLine", "(< /\\*{4,}/ > { text } | < @Spacechar /\\*+/ &@Spacechar > { text })")
16577
16775
  Rules[:_UlLine] = rule_info("UlLine", "(< /_{4,}/ > { text } | < @Spacechar /_+/ &@Spacechar > { text })")
@@ -16588,7 +16786,7 @@ class RDoc::Markdown
16588
16786
  Rules[:_ReferenceLink] = rule_info("ReferenceLink", "(ReferenceLinkDouble | ReferenceLinkSingle)")
16589
16787
  Rules[:_ReferenceLinkDouble] = rule_info("ReferenceLinkDouble", "Label:content < Spnl > !\"[]\" Label:label { link_to content, label, text }")
16590
16788
  Rules[:_ReferenceLinkSingle] = rule_info("ReferenceLinkSingle", "Label:content < (Spnl \"[]\")? > { link_to content, content, text }")
16591
- Rules[:_ExplicitLink] = rule_info("ExplicitLink", "ExplicitLinkWithLabel:a { \"{\#{a[:label]}}[\#{a[:link]}]\" }")
16789
+ Rules[:_ExplicitLink] = rule_info("ExplicitLink", "ExplicitLinkWithLabel:a { \"{\#{a[:label]}}[\#{rdoc_link_url_escape(a[:link])}]\" }")
16592
16790
  Rules[:_ExplicitLinkWithLabel] = rule_info("ExplicitLinkWithLabel", "Label:label \"(\" @Sp Source:link Spnl Title @Sp \")\" { { label: label, link: link } }")
16593
16791
  Rules[:_Source] = rule_info("Source", "(\"<\" < SourceContents > \">\" | < SourceContents >) { text }")
16594
16792
  Rules[:_SourceContents] = rule_info("SourceContents", "((!\"(\" !\")\" !\">\" Nonspacechar)+ | \"(\" SourceContents \")\")*")
@@ -16613,7 +16811,8 @@ class RDoc::Markdown
16613
16811
  Rules[:_Ticks4] = rule_info("Ticks4", "\"````\" !\"`\"")
16614
16812
  Rules[:_Ticks5] = rule_info("Ticks5", "\"`````\" !\"`\"")
16615
16813
  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 }")
16616
- Rules[:_RawHtml] = rule_info("RawHtml", "< (HtmlComment | HtmlBlockScript | HtmlTag) > { if html? then text else '' end }")
16814
+ Rules[:_RawHtml] = rule_info("RawHtml", "< (HtmlBlockScript | HtmlTag) > { html? ? text : '' }")
16815
+ Rules[:_StrippedComment] = rule_info("StrippedComment", "HtmlComment { '' }")
16617
16816
  Rules[:_BlankLine] = rule_info("BlankLine", "@Sp @Newline { \"\\n\" }")
16618
16817
  Rules[:_Quoted] = rule_info("Quoted", "(\"\\\"\" (!\"\\\"\" .)* \"\\\"\" | \"'\" (!\"'\" .)* \"'\")")
16619
16818
  Rules[:_HtmlAttribute] = rule_info("HtmlAttribute", "(AlphanumericAscii | \"-\")+ Spnl (\"=\" Spnl (Quoted | (!\">\" Nonspacechar)+))? Spnl")
@@ -16631,9 +16830,9 @@ class RDoc::Markdown
16631
16830
  Rules[:_BOM] = rule_info("BOM", "%literals.BOM")
16632
16831
  Rules[:_Newline] = rule_info("Newline", "%literals.Newline")
16633
16832
  Rules[:_Spacechar] = rule_info("Spacechar", "%literals.Spacechar")
16634
- Rules[:_HexEntity] = rule_info("HexEntity", "/&\#x/i < /[0-9a-fA-F]+/ > \";\" { [text.to_i(16)].pack 'U' }")
16635
- Rules[:_DecEntity] = rule_info("DecEntity", "\"&\#\" < /[0-9]+/ > \";\" { [text.to_i].pack 'U' }")
16636
- Rules[:_CharEntity] = rule_info("CharEntity", "\"&\" < /[A-Za-z0-9]+/ > \";\" { if entity = HTML_ENTITIES[text] then entity.pack 'U*' else \"&\#{text};\" end }")
16833
+ Rules[:_HexEntity] = rule_info("HexEntity", "/&\#x/i < /[0-9a-fA-F]+/ > \";\" { rdoc_escape([text.to_i(16)].pack('U')) }")
16834
+ Rules[:_DecEntity] = rule_info("DecEntity", "\"&\#\" < /[0-9]+/ > \";\" { rdoc_escape([text.to_i].pack('U')) }")
16835
+ Rules[:_CharEntity] = rule_info("CharEntity", "\"&\" < /[A-Za-z0-9]+/ > \";\" { if entity = HTML_ENTITIES[text] then rdoc_escape(entity.pack('U*')) else \"&\#{text};\" end }")
16637
16836
  Rules[:_NonindentSpace] = rule_info("NonindentSpace", "/ {0,3}/")
16638
16837
  Rules[:_Indent] = rule_info("Indent", "/\\t| /")
16639
16838
  Rules[:_IndentedLine] = rule_info("IndentedLine", "Indent Line")
@@ -16646,16 +16845,16 @@ class RDoc::Markdown
16646
16845
  Rules[:_NoteReference] = rule_info("NoteReference", "&{ notes? } RawNoteReference:ref { note_for ref }")
16647
16846
  Rules[:_RawNoteReference] = rule_info("RawNoteReference", "\"[^\" < (!@Newline !\"]\" .)+ > \"]\" { text }")
16648
16847
  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 }")
16649
- Rules[:_InlineNote] = rule_info("InlineNote", "&{ notes? } \"^[\" @StartList:a (!\"]\" Inline:l { a << l })+ \"]\" { ref = [:inline, @note_order.length] @footnotes[ref] = paragraph a note_for ref }")
16848
+ 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 }")
16650
16849
  Rules[:_Notes] = rule_info("Notes", "(Note | SkipBlock)*")
16651
16850
  Rules[:_RawNoteBlock] = rule_info("RawNoteBlock", "@StartList:a (!@BlankLine !RawNoteReference OptionallyIndentedLine:l { a << l })+ < @BlankLine* > { a << text } { a }")
16652
- 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 }")
16851
+ 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 }")
16653
16852
  Rules[:_Table] = rule_info("Table", "&{ github? } TableHead:header TableLine:line TableRow+:body { table = RDoc::Markup::Table.new(header, line, body) parse_table_cells(table) }")
16654
16853
  Rules[:_TableHead] = rule_info("TableHead", "TableItem2+:items \"|\"? @Newline { items }")
16655
- Rules[:_TableRow] = rule_info("TableRow", "((TableItem:item1 TableItem2*:items { [item1, *items] }):row | TableItem2+:row) \"|\"? @Newline { row }")
16854
+ Rules[:_TableRow] = rule_info("TableRow", "((TableItem:item1 TableItem2+:items { [item1, *items] }):row | TableItem2+:row) \"|\"? @Newline { row }")
16656
16855
  Rules[:_TableItem2] = rule_info("TableItem2", "\"|\" TableItem")
16657
16856
  Rules[:_TableItem] = rule_info("TableItem", "< /(?:\\\\.|[^|\\n])+/ > { text.strip.gsub(/\\\\([|])/, '\\1') }")
16658
- Rules[:_TableLine] = rule_info("TableLine", "((TableAlign:align1 TableAlign2*:aligns {[align1, *aligns] }):line | TableAlign2+:line) \"|\"? @Newline { line }")
16857
+ Rules[:_TableLine] = rule_info("TableLine", "((TableAlign:align1 TableAlign2+:aligns {[align1, *aligns] }):line | TableAlign2+:line) \"|\"? @Newline { line }")
16659
16858
  Rules[:_TableAlign2] = rule_info("TableAlign2", "\"|\" @Sp TableAlign")
16660
16859
  Rules[:_TableAlign] = rule_info("TableAlign", "< /:?-+:?/ > @Sp { text.start_with?(\":\") ? (text.end_with?(\":\") ? :center : :left) : (text.end_with?(\":\") ? :right : nil) }")
16661
16860
  Rules[:_DefinitionList] = rule_info("DefinitionList", "&{ definition_lists? } DefinitionListItem+:list { RDoc::Markup::List.new :NOTE, *list.flatten }")