rdoc 8.0.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 (114) hide show
  1. checksums.yaml +4 -4
  2. data/CONTRIBUTING.md +1 -3
  3. data/RI.md +75 -75
  4. data/exe/rdoc +2 -2
  5. data/lib/rdoc/code_object/alias.rb +71 -69
  6. data/lib/rdoc/code_object/any_method.rb +305 -303
  7. data/lib/rdoc/code_object/attr.rb +150 -148
  8. data/lib/rdoc/code_object/class_module.rb +798 -792
  9. data/lib/rdoc/code_object/constant.rb +175 -173
  10. data/lib/rdoc/code_object/context/section.rb +142 -138
  11. data/lib/rdoc/code_object/context.rb +926 -958
  12. data/lib/rdoc/code_object/extend.rb +7 -5
  13. data/lib/rdoc/code_object/include.rb +7 -5
  14. data/lib/rdoc/code_object/method_attr.rb +326 -319
  15. data/lib/rdoc/code_object/mixin.rb +97 -95
  16. data/lib/rdoc/code_object/normal_class.rb +77 -78
  17. data/lib/rdoc/code_object/normal_module.rb +61 -59
  18. data/lib/rdoc/code_object/require.rb +23 -39
  19. data/lib/rdoc/code_object/single_class.rb +21 -19
  20. data/lib/rdoc/code_object/top_level.rb +212 -219
  21. data/lib/rdoc/code_object.rb +305 -303
  22. data/lib/rdoc/comment.rb +275 -273
  23. data/lib/rdoc/cross_reference.rb +192 -190
  24. data/lib/rdoc/encoding.rb +105 -103
  25. data/lib/rdoc/erb_partial.rb +13 -11
  26. data/lib/rdoc/erbio.rb +29 -27
  27. data/lib/rdoc/generator/aliki.rb +161 -153
  28. data/lib/rdoc/generator/darkfish.rb +645 -635
  29. data/lib/rdoc/generator/json_index.rb +233 -229
  30. data/lib/rdoc/generator/markup.rb +164 -146
  31. data/lib/rdoc/generator/pot/message_extractor.rb +57 -51
  32. data/lib/rdoc/generator/pot/po.rb +52 -51
  33. data/lib/rdoc/generator/pot/po_entry.rb +138 -132
  34. data/lib/rdoc/generator/pot.rb +85 -81
  35. data/lib/rdoc/generator/ri.rb +23 -19
  36. data/lib/rdoc/generator/template/aliki/DESIGN.md +6 -4
  37. data/lib/rdoc/generator/template/aliki/_footer.rhtml +1 -1
  38. data/lib/rdoc/generator/template/aliki/_head.rhtml +10 -10
  39. data/lib/rdoc/generator/template/aliki/_header.rhtml +29 -44
  40. data/lib/rdoc/generator/template/aliki/_sidebar_search.rhtml +4 -4
  41. data/lib/rdoc/generator/template/aliki/css/rdoc.css +207 -178
  42. data/lib/rdoc/generator/template/aliki/js/aliki.js +60 -84
  43. data/lib/rdoc/generator/template/darkfish/_footer.rhtml +1 -1
  44. data/lib/rdoc/generator.rb +48 -46
  45. data/lib/rdoc/i18n/locale.rb +99 -95
  46. data/lib/rdoc/i18n/text.rb +109 -105
  47. data/lib/rdoc/i18n.rb +7 -5
  48. data/lib/rdoc/markdown/byte_runtime.rb +80 -0
  49. data/lib/rdoc/markdown.kpeg +15 -11
  50. data/lib/rdoc/markdown.rb +40 -47
  51. data/lib/rdoc/markup/block_quote.rb +12 -8
  52. data/lib/rdoc/markup/document.rb +127 -123
  53. data/lib/rdoc/markup/formatter.rb +219 -215
  54. data/lib/rdoc/markup/include.rb +33 -29
  55. data/lib/rdoc/markup/indented_paragraph.rb +37 -33
  56. data/lib/rdoc/markup/inline_parser.rb +281 -277
  57. data/lib/rdoc/markup/list.rb +80 -88
  58. data/lib/rdoc/markup/list_item.rb +73 -85
  59. data/lib/rdoc/markup/paragraph.rb +23 -19
  60. data/lib/rdoc/markup/parser.rb +501 -497
  61. data/lib/rdoc/markup/pre_process.rb +283 -279
  62. data/lib/rdoc/markup/raw.rb +2 -2
  63. data/lib/rdoc/markup/rule.rb +16 -12
  64. data/lib/rdoc/markup/to_ansi.rb +143 -139
  65. data/lib/rdoc/markup/to_bs.rb +72 -68
  66. data/lib/rdoc/markup/to_html.rb +594 -565
  67. data/lib/rdoc/markup/to_html_crossref.rb +234 -230
  68. data/lib/rdoc/markup/to_html_snippet.rb +232 -227
  69. data/lib/rdoc/markup/to_joined_paragraph.rb +36 -32
  70. data/lib/rdoc/markup/to_label.rb +63 -59
  71. data/lib/rdoc/markup/to_markdown.rb +212 -208
  72. data/lib/rdoc/markup/to_rdoc.rb +336 -332
  73. data/lib/rdoc/markup/to_table_of_contents.rb +66 -62
  74. data/lib/rdoc/markup/to_test.rb +60 -56
  75. data/lib/rdoc/markup/to_tt_only.rb +84 -80
  76. data/lib/rdoc/markup/verbatim.rb +62 -58
  77. data/lib/rdoc/markup.rb +198 -196
  78. data/lib/rdoc/options.rb +1063 -1061
  79. data/lib/rdoc/parser/c.rb +1039 -1037
  80. data/lib/rdoc/parser/changelog.rb +319 -315
  81. data/lib/rdoc/parser/markdown.rb +17 -13
  82. data/lib/rdoc/parser/rbs.rb +239 -235
  83. data/lib/rdoc/parser/rd.rb +17 -13
  84. data/lib/rdoc/parser/ruby.rb +1245 -1124
  85. data/lib/rdoc/parser/ruby_colorizer.rb +263 -213
  86. data/lib/rdoc/parser/simple.rb +31 -27
  87. data/lib/rdoc/parser/text.rb +12 -8
  88. data/lib/rdoc/parser.rb +228 -220
  89. data/lib/rdoc/rbs_helper.rb +1 -1
  90. data/lib/rdoc/rd/inline.rb +57 -53
  91. data/lib/rdoc/rd.rb +90 -88
  92. data/lib/rdoc/rdoc.rb +500 -491
  93. data/lib/rdoc/ri/driver.rb +1140 -1135
  94. data/lib/rdoc/ri/formatter.rb +7 -3
  95. data/lib/rdoc/ri/paths.rb +140 -136
  96. data/lib/rdoc/ri/servlet.rb +354 -350
  97. data/lib/rdoc/ri/store.rb +4 -2
  98. data/lib/rdoc/ri/task.rb +55 -51
  99. data/lib/rdoc/ri.rb +14 -12
  100. data/lib/rdoc/rubygems_hook.rb +183 -181
  101. data/lib/rdoc/server.rb +349 -347
  102. data/lib/rdoc/stats/normal.rb +46 -42
  103. data/lib/rdoc/stats/quiet.rb +39 -35
  104. data/lib/rdoc/stats/verbose.rb +35 -31
  105. data/lib/rdoc/stats.rb +365 -363
  106. data/lib/rdoc/store.rb +888 -902
  107. data/lib/rdoc/task.rb +260 -256
  108. data/lib/rdoc/text.rb +135 -133
  109. data/lib/rdoc/token_stream.rb +101 -93
  110. data/lib/rdoc/tom_doc.rb +203 -201
  111. data/lib/rdoc/version.rb +1 -1
  112. metadata +4 -5
  113. data/lib/rdoc/markdown/literals.kpeg +0 -21
  114. data/lib/rdoc/markdown/literals.rb +0 -454
@@ -1,126 +1,130 @@
1
1
  # frozen_string_literal: true
2
- ##
3
- # An i18n supported text.
4
- #
5
- # This object provides the following two features:
6
- #
7
- # * Extracts translation messages from wrapped raw text.
8
- # * Translates wrapped raw text in specified locale.
9
- #
10
- # Wrapped raw text is one of String, RDoc::Comment or Array of them.
2
+ module RDoc
3
+ module I18n
4
+ ##
5
+ # An i18n supported text.
6
+ #
7
+ # This object provides the following two features:
8
+ #
9
+ # * Extracts translation messages from wrapped raw text.
10
+ # * Translates wrapped raw text in specified locale.
11
+ #
12
+ # Wrapped raw text is one of String, RDoc::Comment or Array of them.
11
13
 
12
- class RDoc::I18n::Text
14
+ class Text
13
15
 
14
- ##
15
- # Creates a new i18n supported text for +raw+ text.
16
+ ##
17
+ # Creates a new i18n supported text for +raw+ text.
16
18
 
17
- def initialize(raw)
18
- @raw = raw
19
- end
19
+ def initialize(raw)
20
+ @raw = raw
21
+ end
20
22
 
21
- ##
22
- # Extracts translation target messages and yields each message.
23
- #
24
- # Each yielded message is a Hash. It consists of the followings:
25
- #
26
- # :type :: :paragraph
27
- # :paragraph :: String (The translation target message itself.)
28
- # :line_no :: Integer (The line number of the :paragraph is started.)
29
- #
30
- # The above content may be added in the future.
23
+ ##
24
+ # Extracts translation target messages and yields each message.
25
+ #
26
+ # Each yielded message is a Hash. It consists of the followings:
27
+ #
28
+ # :type :: :paragraph
29
+ # :paragraph :: String (The translation target message itself.)
30
+ # :line_no :: Integer (The line number of the :paragraph is started.)
31
+ #
32
+ # The above content may be added in the future.
31
33
 
32
- def extract_messages
33
- parse do |part|
34
- case part[:type]
35
- when :empty_line
36
- # ignore
37
- when :paragraph
38
- yield(part)
34
+ def extract_messages
35
+ parse do |part|
36
+ case part[:type]
37
+ when :empty_line
38
+ # ignore
39
+ when :paragraph
40
+ yield(part)
41
+ end
42
+ end
39
43
  end
40
- end
41
- end
42
44
 
43
- # Translates raw text into +locale+.
44
- def translate(locale)
45
- translated_text = ''
46
- parse do |part|
47
- case part[:type]
48
- when :paragraph
49
- translated_text += locale.translate(part[:paragraph])
50
- when :empty_line
51
- translated_text += part[:line]
52
- else
53
- raise "should not reach here: unexpected type: #{type}"
45
+ # Translates raw text into +locale+.
46
+ def translate(locale)
47
+ translated_text = ''
48
+ parse do |part|
49
+ case part[:type]
50
+ when :paragraph
51
+ translated_text += locale.translate(part[:paragraph])
52
+ when :empty_line
53
+ translated_text += part[:line]
54
+ else
55
+ raise "should not reach here: unexpected type: #{type}"
56
+ end
57
+ end
58
+ translated_text
54
59
  end
55
- end
56
- translated_text
57
- end
58
60
 
59
- private
60
- def parse(&block)
61
- paragraph = ''
62
- paragraph_start_line = 0
63
- line_no = 0
61
+ private
62
+ def parse(&block)
63
+ paragraph = ''
64
+ paragraph_start_line = 0
65
+ line_no = 0
64
66
 
65
- each_line(@raw) do |line|
66
- line_no += 1
67
- case line
68
- when /\A\s*\z/
69
- if paragraph.empty?
70
- emit_empty_line_event(line, line_no, &block)
71
- else
72
- paragraph += line
73
- emit_paragraph_event(paragraph, paragraph_start_line, line_no,
74
- &block)
75
- paragraph = ''
67
+ each_line(@raw) do |line|
68
+ line_no += 1
69
+ case line
70
+ when /\A\s*\z/
71
+ if paragraph.empty?
72
+ emit_empty_line_event(line, line_no, &block)
73
+ else
74
+ paragraph += line
75
+ emit_paragraph_event(paragraph, paragraph_start_line, line_no,
76
+ &block)
77
+ paragraph = ''
78
+ end
79
+ else
80
+ paragraph_start_line = line_no if paragraph.empty?
81
+ paragraph += line
82
+ end
83
+ end
84
+
85
+ unless paragraph.empty?
86
+ emit_paragraph_event(paragraph, paragraph_start_line, line_no, &block)
76
87
  end
77
- else
78
- paragraph_start_line = line_no if paragraph.empty?
79
- paragraph += line
80
88
  end
81
- end
82
89
 
83
- unless paragraph.empty?
84
- emit_paragraph_event(paragraph, paragraph_start_line, line_no, &block)
85
- end
86
- end
90
+ def each_line(raw, &block)
91
+ case raw
92
+ when Comment
93
+ raw.text.each_line(&block)
94
+ when Hash
95
+ raw.each_value do |comments|
96
+ comments.each { |comment| each_line(comment, &block) }
97
+ end
98
+ else
99
+ raw.each_line(&block)
100
+ end
101
+ end
87
102
 
88
- def each_line(raw, &block)
89
- case raw
90
- when RDoc::Comment
91
- raw.text.each_line(&block)
92
- when Hash
93
- raw.each_value do |comments|
94
- comments.each { |comment| each_line(comment, &block) }
103
+ def emit_empty_line_event(line, line_no)
104
+ part = {
105
+ :type => :empty_line,
106
+ :line => line,
107
+ :line_no => line_no,
108
+ }
109
+ yield(part)
95
110
  end
96
- else
97
- raw.each_line(&block)
98
- end
99
- end
100
111
 
101
- def emit_empty_line_event(line, line_no)
102
- part = {
103
- :type => :empty_line,
104
- :line => line,
105
- :line_no => line_no,
106
- }
107
- yield(part)
108
- end
112
+ def emit_paragraph_event(paragraph, paragraph_start_line, line_no, &block)
113
+ paragraph_part = {
114
+ :type => :paragraph,
115
+ :line_no => paragraph_start_line,
116
+ }
117
+ match_data = /(\s*)\z/.match(paragraph)
118
+ if match_data
119
+ paragraph_part[:paragraph] = match_data.pre_match
120
+ yield(paragraph_part)
121
+ emit_empty_line_event(match_data[1], line_no, &block)
122
+ else
123
+ paragraph_part[:paragraph] = paragraph
124
+ yield(paragraph_part)
125
+ end
126
+ end
109
127
 
110
- def emit_paragraph_event(paragraph, paragraph_start_line, line_no, &block)
111
- paragraph_part = {
112
- :type => :paragraph,
113
- :line_no => paragraph_start_line,
114
- }
115
- match_data = /(\s*)\z/.match(paragraph)
116
- if match_data
117
- paragraph_part[:paragraph] = match_data.pre_match
118
- yield(paragraph_part)
119
- emit_empty_line_event(match_data[1], line_no, &block)
120
- else
121
- paragraph_part[:paragraph] = paragraph
122
- yield(paragraph_part)
123
128
  end
124
129
  end
125
-
126
130
  end
data/lib/rdoc/i18n.rb CHANGED
@@ -1,10 +1,12 @@
1
1
  # frozen_string_literal: true
2
- ##
3
- # This module provides i18n related features.
2
+ module RDoc
3
+ ##
4
+ # This module provides i18n related features.
4
5
 
5
- module RDoc::I18n
6
+ module I18n
6
7
 
7
- autoload :Locale, "#{__dir__}/i18n/locale"
8
- require_relative 'i18n/text'
8
+ autoload :Locale, "#{__dir__}/i18n/locale"
9
+ require_relative 'i18n/text'
9
10
 
11
+ end
10
12
  end
@@ -0,0 +1,80 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'strscan'
4
+
5
+ module RDoc
6
+ class Markdown
7
+
8
+ ##
9
+ # Byte-offset replacements for the position helpers of the kpeg-generated
10
+ # parser runtime.
11
+ #
12
+ # The generated runtime addresses +@string+ by character index, which makes
13
+ # every position lookup scan the string from its beginning when the input
14
+ # contains non-ASCII characters, so parse time becomes quadratic in the
15
+ # input size. Generated rule bodies only save and restore +pos+ without
16
+ # inspecting it, so replacing these helpers is enough to switch the whole
17
+ # parser to byte offsets.
18
+ #
19
+ # get_byte (the grammar's `.`) consumes one character and returns its
20
+ # codepoint, exactly like the character-index runtime, so positions always
21
+ # stay on character boundaries and the only observable difference is the
22
+ # position values themselves. The input must be validly encoded in an
23
+ # ASCII-compatible encoding.
24
+ #
25
+ # The error-reporting helpers of the generated runtime (+current_line+,
26
+ # +current_column+, ...) are left as-is and would misreport locations when
27
+ # given byte offsets. They are unreachable: markdown is deliberately
28
+ # designed to parse any input somehow rather than fail (the root rule
29
+ # `Doc = Block*` cannot fail), so a parse failure means a bug in the
30
+ # grammar itself, and nothing in RDoc invokes +raise_error+ or
31
+ # +show_error+. Make these helpers byte-aware before using them for
32
+ # anything.
33
+
34
+ module ByteRuntime
35
+ def set_string(string, pos)
36
+ @string = string
37
+ @string_size = string ? string.bytesize : 0
38
+ @pos = pos
39
+ @position_line_offsets = nil
40
+ @scanner = string ? StringScanner.new(string) : nil
41
+ end
42
+
43
+ def scan(reg)
44
+ @scanner.pos = @pos
45
+ if @scanner.skip(reg)
46
+ @pos = @scanner.pos
47
+ true
48
+ end
49
+ end
50
+
51
+ def match_string(str)
52
+ len = str.bytesize
53
+ if @string.byteslice(@pos, len) == str
54
+ @pos += len
55
+ str
56
+ end
57
+ end
58
+
59
+ def get_byte
60
+ byte = @string.getbyte(@pos)
61
+ return nil unless byte
62
+
63
+ if byte < 0x80
64
+ @pos += 1
65
+ byte
66
+ else
67
+ @scanner.pos = @pos
68
+ # /./ interprets the character in the string's own encoding
69
+ char = @scanner.scan(/./m)
70
+ @pos = @scanner.pos
71
+ char.ord
72
+ end
73
+ end
74
+
75
+ def get_text(start)
76
+ @string.byteslice(start, @pos - start)
77
+ end
78
+ end
79
+ end
80
+ end
@@ -191,7 +191,9 @@
191
191
  require_relative 'markup/to_joined_paragraph'
192
192
  require_relative 'markdown/entities'
193
193
 
194
- require_relative 'markdown/literals'
194
+ require_relative 'markdown/byte_runtime'
195
+
196
+ prepend ByteRuntime
195
197
 
196
198
  ##
197
199
  # Supported extensions
@@ -448,8 +450,12 @@
448
450
  if notes? then
449
451
  @footnotes = {}
450
452
 
451
- setup_parser markdown, @debug
452
- peg_parse 'Notes'
453
+ # A note definition must contain "[^", so documents without one
454
+ # have nothing for the collecting pass to find
455
+ if markdown.include? '[^' then
456
+ setup_parser markdown, @debug
457
+ peg_parse 'Notes'
458
+ end
453
459
 
454
460
  # using note_order on the first pass would be a bug
455
461
  @note_order = []
@@ -563,7 +569,7 @@
563
569
 
564
570
  root = Doc
565
571
 
566
- Doc = BOM? Block*:a { RDoc::Markup::Document.new(*a.compact) }
572
+ Doc = Block*:a { RDoc::Markup::Document.new(*a.compact) }
567
573
 
568
574
  Block = @BlankLine*
569
575
  ( BlockQuote
@@ -867,7 +873,7 @@ HtmlBlockInTags = HtmlAnchor
867
873
  | HtmlBlockScript
868
874
  | HtmlBlockHead
869
875
 
870
- HtmlBlock = < ( HtmlBlockInTags | HtmlComment | HtmlBlockSelfClosing | HtmlUnclosed) >
876
+ HtmlBlock = &"<" < ( HtmlBlockInTags | HtmlComment | HtmlBlockSelfClosing | HtmlUnclosed) >
871
877
  @BlankLine+
872
878
  { if html? then
873
879
  RDoc::Markup::Raw.new text
@@ -1172,12 +1178,10 @@ SpecialChar = /[~*_`&\[\]()<!#\\'"]/ | @ExtendedSpecialChar
1172
1178
  NormalChar = !( @SpecialChar | @Spacechar | @Newline ) .
1173
1179
  Digit = [0-9]
1174
1180
 
1175
- %literals = RDoc::Markdown::Literals
1176
- Alphanumeric = %literals.Alphanumeric
1177
- AlphanumericAscii = %literals.AlphanumericAscii
1178
- BOM = %literals.BOM
1179
- Newline = %literals.Newline
1180
- Spacechar = %literals.Spacechar
1181
+ Alphanumeric = /\p{Word}/
1182
+ AlphanumericAscii = /[A-Za-z0-9]/
1183
+ Newline = /\n|\r\n?|\p{Zl}|\p{Zp}/
1184
+ Spacechar = /\t|\p{Zs}/
1181
1185
 
1182
1186
  HexEntity = /&#x/i < /[0-9a-fA-F]+/ > ";"
1183
1187
  { rdoc_escape([text.to_i(16)].pack('U')) }
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
@@ -833,8 +835,12 @@ class RDoc::Markdown
833
835
  if notes? then
834
836
  @footnotes = {}
835
837
 
836
- setup_parser markdown, @debug
837
- 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
838
844
 
839
845
  # using note_order on the first pass would be a bug
840
846
  @note_order = []
@@ -947,9 +953,7 @@ class RDoc::Markdown
947
953
 
948
954
 
949
955
  # :stopdoc:
950
- def setup_foreign_grammar
951
- @_grammar_literals = RDoc::Markdown::Literals.new(nil)
952
- end
956
+ def setup_foreign_grammar; end
953
957
 
954
958
  # root = Doc
955
959
  def _root
@@ -958,21 +962,11 @@ class RDoc::Markdown
958
962
  return _tmp
959
963
  end
960
964
 
961
- # Doc = BOM? Block*:a { RDoc::Markup::Document.new(*a.compact) }
965
+ # Doc = Block*:a { RDoc::Markup::Document.new(*a.compact) }
962
966
  def _Doc
963
967
 
964
968
  _save = self.pos
965
969
  while true # sequence
966
- _save1 = self.pos
967
- _tmp = apply(:_BOM)
968
- unless _tmp
969
- _tmp = true
970
- self.pos = _save1
971
- end
972
- unless _tmp
973
- self.pos = _save
974
- break
975
- end
976
970
  _ary = []
977
971
  while true
978
972
  _tmp = apply(:_Block)
@@ -8971,27 +8965,34 @@ class RDoc::Markdown
8971
8965
  return _tmp
8972
8966
  end
8973
8967
 
8974
- # 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 }
8975
8969
  def _HtmlBlock
8976
8970
 
8977
8971
  _save = self.pos
8978
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
8979
8980
  _text_start = self.pos
8980
8981
 
8981
- _save1 = self.pos
8982
+ _save2 = self.pos
8982
8983
  while true # choice
8983
8984
  _tmp = apply(:_HtmlBlockInTags)
8984
8985
  break if _tmp
8985
- self.pos = _save1
8986
+ self.pos = _save2
8986
8987
  _tmp = apply(:_HtmlComment)
8987
8988
  break if _tmp
8988
- self.pos = _save1
8989
+ self.pos = _save2
8989
8990
  _tmp = apply(:_HtmlBlockSelfClosing)
8990
8991
  break if _tmp
8991
- self.pos = _save1
8992
+ self.pos = _save2
8992
8993
  _tmp = apply(:_HtmlUnclosed)
8993
8994
  break if _tmp
8994
- self.pos = _save1
8995
+ self.pos = _save2
8995
8996
  break
8996
8997
  end # end choice
8997
8998
 
@@ -9002,7 +9003,7 @@ class RDoc::Markdown
9002
9003
  self.pos = _save
9003
9004
  break
9004
9005
  end
9005
- _save2 = self.pos
9006
+ _save3 = self.pos
9006
9007
  _tmp = _BlankLine()
9007
9008
  if _tmp
9008
9009
  while true
@@ -9011,7 +9012,7 @@ class RDoc::Markdown
9011
9012
  end
9012
9013
  _tmp = true
9013
9014
  else
9014
- self.pos = _save2
9015
+ self.pos = _save3
9015
9016
  end
9016
9017
  unless _tmp
9017
9018
  self.pos = _save
@@ -14752,37 +14753,30 @@ class RDoc::Markdown
14752
14753
  return _tmp
14753
14754
  end
14754
14755
 
14755
- # Alphanumeric = %literals.Alphanumeric
14756
+ # Alphanumeric = /\p{Word}/
14756
14757
  def _Alphanumeric
14757
- _tmp = @_grammar_literals.external_invoke(self, :_Alphanumeric)
14758
+ _tmp = scan(/\G(?-mix:\p{Word})/)
14758
14759
  set_failed_rule :_Alphanumeric unless _tmp
14759
14760
  return _tmp
14760
14761
  end
14761
14762
 
14762
- # AlphanumericAscii = %literals.AlphanumericAscii
14763
+ # AlphanumericAscii = /[A-Za-z0-9]/
14763
14764
  def _AlphanumericAscii
14764
- _tmp = @_grammar_literals.external_invoke(self, :_AlphanumericAscii)
14765
+ _tmp = scan(/\G(?-mix:[A-Za-z0-9])/)
14765
14766
  set_failed_rule :_AlphanumericAscii unless _tmp
14766
14767
  return _tmp
14767
14768
  end
14768
14769
 
14769
- # BOM = %literals.BOM
14770
- def _BOM
14771
- _tmp = @_grammar_literals.external_invoke(self, :_BOM)
14772
- set_failed_rule :_BOM unless _tmp
14773
- return _tmp
14774
- end
14775
-
14776
- # Newline = %literals.Newline
14770
+ # Newline = /\n|\r\n?|\p{Zl}|\p{Zp}/
14777
14771
  def _Newline
14778
- _tmp = @_grammar_literals.external_invoke(self, :_Newline)
14772
+ _tmp = scan(/\G(?-mix:\n|\r\n?|\p{Zl}|\p{Zp})/)
14779
14773
  set_failed_rule :_Newline unless _tmp
14780
14774
  return _tmp
14781
14775
  end
14782
14776
 
14783
- # Spacechar = %literals.Spacechar
14777
+ # Spacechar = /\t|\p{Zs}/
14784
14778
  def _Spacechar
14785
- _tmp = @_grammar_literals.external_invoke(self, :_Spacechar)
14779
+ _tmp = scan(/\G(?-mix:\t|\p{Zs})/)
14786
14780
  set_failed_rule :_Spacechar unless _tmp
14787
14781
  return _tmp
14788
14782
  end
@@ -16613,7 +16607,7 @@ class RDoc::Markdown
16613
16607
 
16614
16608
  Rules = {}
16615
16609
  Rules[:_root] = rule_info("root", "Doc")
16616
- 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) }")
16617
16611
  Rules[:_Block] = rule_info("Block", "@BlankLine* (BlockQuote | Verbatim | CodeFence | Table | Note | Reference | HorizontalRule | Heading | OrderedList | BulletList | DefinitionList | HtmlBlock | StyleBlock | Para | Plain)")
16618
16612
  Rules[:_Para] = rule_info("Para", "@NonindentSpace Inlines:a @BlankLine+ { paragraph a }")
16619
16613
  Rules[:_Plain] = rule_info("Plain", "Inlines:a { paragraph a }")
@@ -16749,7 +16743,7 @@ class RDoc::Markdown
16749
16743
  Rules[:_HtmlBlockCloseHead] = rule_info("HtmlBlockCloseHead", "\"<\" Spnl \"/\" (\"head\" | \"HEAD\") Spnl \">\"")
16750
16744
  Rules[:_HtmlBlockHead] = rule_info("HtmlBlockHead", "HtmlBlockOpenHead (!HtmlBlockCloseHead .)* HtmlBlockCloseHead")
16751
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)")
16752
- 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 }")
16753
16747
  Rules[:_HtmlUnclosed] = rule_info("HtmlUnclosed", "\"<\" Spnl HtmlUnclosedType Spnl HtmlAttribute* Spnl \">\"")
16754
16748
  Rules[:_HtmlUnclosedType] = rule_info("HtmlUnclosedType", "(\"HR\" | \"hr\")")
16755
16749
  Rules[:_HtmlBlockSelfClosing] = rule_info("HtmlBlockSelfClosing", "\"<\" Spnl HtmlBlockType Spnl HtmlAttribute* \"/\" Spnl \">\"")
@@ -16825,11 +16819,10 @@ class RDoc::Markdown
16825
16819
  Rules[:_SpecialChar] = rule_info("SpecialChar", "(/[~*_`&\\[\\]()<!\#\\\\'\"]/ | @ExtendedSpecialChar)")
16826
16820
  Rules[:_NormalChar] = rule_info("NormalChar", "!(@SpecialChar | @Spacechar | @Newline) .")
16827
16821
  Rules[:_Digit] = rule_info("Digit", "[0-9]")
16828
- Rules[:_Alphanumeric] = rule_info("Alphanumeric", "%literals.Alphanumeric")
16829
- Rules[:_AlphanumericAscii] = rule_info("AlphanumericAscii", "%literals.AlphanumericAscii")
16830
- Rules[:_BOM] = rule_info("BOM", "%literals.BOM")
16831
- Rules[:_Newline] = rule_info("Newline", "%literals.Newline")
16832
- Rules[:_Spacechar] = rule_info("Spacechar", "%literals.Spacechar")
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}/")
16833
16826
  Rules[:_HexEntity] = rule_info("HexEntity", "/&\#x/i < /[0-9a-fA-F]+/ > \";\" { rdoc_escape([text.to_i(16)].pack('U')) }")
16834
16827
  Rules[:_DecEntity] = rule_info("DecEntity", "\"&\#\" < /[0-9]+/ > \";\" { rdoc_escape([text.to_i].pack('U')) }")
16835
16828
  Rules[:_CharEntity] = rule_info("CharEntity", "\"&\" < /[A-Za-z0-9]+/ > \";\" { if entity = HTML_ENTITIES[text] then rdoc_escape(entity.pack('U*')) else \"&\#{text};\" end }")
@@ -1,14 +1,18 @@
1
1
  # frozen_string_literal: true
2
- ##
3
- # A quoted section which contains markup items.
2
+ module RDoc
3
+ class Markup
4
+ ##
5
+ # A quoted section which contains markup items.
4
6
 
5
- class RDoc::Markup::BlockQuote < RDoc::Markup::Raw
7
+ class BlockQuote < Markup::Raw
6
8
 
7
- ##
8
- # Calls #accept_block_quote on +visitor+
9
+ ##
10
+ # Calls #accept_block_quote on +visitor+
9
11
 
10
- def accept(visitor)
11
- visitor.accept_block_quote self
12
- end
12
+ def accept(visitor)
13
+ visitor.accept_block_quote self
14
+ end
13
15
 
16
+ end
17
+ end
14
18
  end