rdoc 4.2.1 → 6.3.1
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of rdoc might be problematic. Click here for more details.
- checksums.yaml +5 -5
- data/CONTRIBUTING.rdoc +8 -7
- data/Gemfile +12 -0
- data/History.rdoc +48 -4
- data/LEGAL.rdoc +2 -2
- data/README.rdoc +5 -5
- data/Rakefile +73 -155
- data/bin/console +7 -0
- data/bin/setup +6 -0
- data/{bin → exe}/rdoc +0 -0
- data/{bin → exe}/ri +0 -0
- data/lib/rdoc/alias.rb +1 -0
- data/lib/rdoc/anon_class.rb +1 -0
- data/lib/rdoc/any_method.rb +59 -14
- data/lib/rdoc/attr.rb +1 -0
- data/lib/rdoc/class_module.rb +5 -2
- data/lib/rdoc/code_object.rb +3 -11
- data/lib/rdoc/code_objects.rb +1 -0
- data/lib/rdoc/comment.rb +32 -11
- data/lib/rdoc/constant.rb +3 -2
- data/lib/rdoc/context/section.rb +7 -13
- data/lib/rdoc/context.rb +78 -23
- data/lib/rdoc/cross_reference.rb +33 -14
- data/lib/rdoc/encoding.rb +92 -55
- data/lib/rdoc/erb_partial.rb +2 -1
- data/lib/rdoc/erbio.rb +8 -3
- data/lib/rdoc/extend.rb +1 -0
- data/lib/rdoc/generator/darkfish.rb +62 -32
- data/lib/rdoc/generator/json_index.rb +8 -5
- data/lib/rdoc/generator/markup.rb +3 -12
- data/lib/rdoc/generator/pot/message_extractor.rb +68 -0
- data/lib/rdoc/generator/pot/po.rb +84 -0
- data/lib/rdoc/generator/pot/po_entry.rb +141 -0
- data/lib/rdoc/generator/pot.rb +4 -3
- data/lib/rdoc/generator/ri.rb +1 -0
- data/lib/rdoc/generator/template/darkfish/_footer.rhtml +2 -2
- data/lib/rdoc/generator/template/darkfish/_head.rhtml +11 -8
- data/lib/rdoc/generator/template/darkfish/_sidebar_VCS_info.rhtml +2 -2
- data/lib/rdoc/generator/template/darkfish/_sidebar_classes.rhtml +2 -2
- data/lib/rdoc/generator/template/darkfish/_sidebar_extends.rhtml +7 -7
- data/lib/rdoc/generator/template/darkfish/_sidebar_in_files.rhtml +2 -2
- data/lib/rdoc/generator/template/darkfish/_sidebar_includes.rhtml +7 -7
- data/lib/rdoc/generator/template/darkfish/_sidebar_installed.rhtml +6 -6
- data/lib/rdoc/generator/template/darkfish/_sidebar_methods.rhtml +5 -5
- data/lib/rdoc/generator/template/darkfish/_sidebar_pages.rhtml +5 -5
- data/lib/rdoc/generator/template/darkfish/_sidebar_parent.rhtml +5 -5
- data/lib/rdoc/generator/template/darkfish/_sidebar_sections.rhtml +4 -4
- data/lib/rdoc/generator/template/darkfish/_sidebar_table_of_contents.rhtml +4 -4
- data/lib/rdoc/generator/template/darkfish/class.rhtml +45 -47
- data/lib/rdoc/generator/template/darkfish/css/fonts.css +6 -6
- data/lib/rdoc/generator/template/darkfish/css/rdoc.css +55 -6
- data/lib/rdoc/generator/template/darkfish/index.rhtml +3 -4
- data/lib/rdoc/generator/template/darkfish/js/darkfish.js +23 -100
- data/lib/rdoc/generator/template/darkfish/js/search.js +32 -31
- data/lib/rdoc/generator/template/darkfish/servlet_root.rhtml +15 -16
- data/lib/rdoc/generator/template/darkfish/table_of_contents.rhtml +16 -16
- data/lib/rdoc/generator/template/json_index/js/navigation.js +4 -41
- data/lib/rdoc/generator/template/json_index/js/searcher.js +7 -6
- data/lib/rdoc/generator.rb +1 -1
- data/lib/rdoc/ghost_method.rb +1 -0
- data/lib/rdoc/i18n/locale.rb +2 -1
- data/lib/rdoc/i18n/text.rb +5 -4
- data/lib/rdoc/i18n.rb +3 -2
- data/lib/rdoc/include.rb +1 -0
- data/lib/rdoc/known_classes.rb +1 -0
- data/lib/rdoc/markdown/entities.rb +1 -0
- data/lib/rdoc/markdown/{literals_1_9.kpeg → literals.kpeg} +1 -0
- data/lib/rdoc/markdown/{literals_1_9.rb → literals.rb} +1 -4
- data/lib/rdoc/markdown.kpeg +94 -51
- data/lib/rdoc/markdown.rb +1171 -619
- data/lib/rdoc/markup/attr_changer.rb +1 -0
- data/lib/rdoc/markup/attr_span.rb +9 -2
- data/lib/rdoc/markup/attribute_manager.rb +115 -49
- data/lib/rdoc/markup/attributes.rb +7 -6
- data/lib/rdoc/markup/blank_line.rb +1 -0
- data/lib/rdoc/markup/block_quote.rb +1 -0
- data/lib/rdoc/markup/document.rb +1 -0
- data/lib/rdoc/markup/formatter.rb +25 -23
- data/lib/rdoc/markup/hard_break.rb +1 -0
- data/lib/rdoc/markup/heading.rb +4 -3
- data/lib/rdoc/markup/include.rb +1 -0
- data/lib/rdoc/markup/indented_paragraph.rb +1 -0
- data/lib/rdoc/markup/list.rb +1 -0
- data/lib/rdoc/markup/list_item.rb +1 -0
- data/lib/rdoc/markup/paragraph.rb +1 -0
- data/lib/rdoc/markup/parser.rb +78 -61
- data/lib/rdoc/markup/pre_process.rb +12 -9
- data/lib/rdoc/markup/raw.rb +1 -0
- data/lib/rdoc/markup/regexp_handling.rb +41 -0
- data/lib/rdoc/markup/rule.rb +1 -0
- data/lib/rdoc/markup/to_ansi.rb +1 -0
- data/lib/rdoc/markup/to_bs.rb +4 -5
- data/lib/rdoc/markup/to_html.rb +71 -25
- data/lib/rdoc/markup/to_html_crossref.rb +41 -25
- data/lib/rdoc/markup/to_html_snippet.rb +10 -9
- data/lib/rdoc/markup/to_joined_paragraph.rb +7 -31
- data/lib/rdoc/markup/to_label.rb +10 -9
- data/lib/rdoc/markup/to_markdown.rb +9 -8
- data/lib/rdoc/markup/to_rdoc.rb +35 -6
- data/lib/rdoc/markup/to_table_of_contents.rb +2 -0
- data/lib/rdoc/markup/to_test.rb +1 -0
- data/lib/rdoc/markup/to_tt_only.rb +3 -2
- data/lib/rdoc/markup/verbatim.rb +1 -0
- data/lib/rdoc/markup.rb +14 -16
- data/lib/rdoc/meta_method.rb +1 -0
- data/lib/rdoc/method_attr.rb +2 -1
- data/lib/rdoc/mixin.rb +1 -0
- data/lib/rdoc/normal_class.rb +3 -2
- data/lib/rdoc/normal_module.rb +1 -0
- data/lib/rdoc/options.rb +92 -58
- data/lib/rdoc/parser/c.rb +219 -223
- data/lib/rdoc/parser/changelog.rb +155 -18
- data/lib/rdoc/parser/markdown.rb +1 -0
- data/lib/rdoc/parser/rd.rb +1 -0
- data/lib/rdoc/parser/ripper_state_lex.rb +590 -0
- data/lib/rdoc/parser/ruby.rb +635 -468
- data/lib/rdoc/parser/ruby_tools.rb +33 -33
- data/lib/rdoc/parser/simple.rb +3 -3
- data/lib/rdoc/parser/text.rb +1 -0
- data/lib/rdoc/parser.rb +17 -50
- data/lib/rdoc/rd/block_parser.rb +66 -65
- data/lib/rdoc/rd/block_parser.ry +3 -3
- data/lib/rdoc/rd/inline.rb +5 -4
- data/lib/rdoc/rd/inline_parser.rb +52 -51
- data/lib/rdoc/rd/inline_parser.ry +1 -1
- data/lib/rdoc/rd.rb +1 -0
- data/lib/rdoc/rdoc.rb +68 -63
- data/lib/rdoc/require.rb +1 -0
- data/lib/rdoc/ri/driver.rb +133 -58
- data/lib/rdoc/ri/formatter.rb +1 -0
- data/lib/rdoc/ri/paths.rb +4 -20
- data/lib/rdoc/ri/store.rb +1 -0
- data/lib/rdoc/ri/task.rb +71 -0
- data/lib/rdoc/ri.rb +1 -0
- data/lib/rdoc/rubygems_hook.rb +5 -12
- data/lib/rdoc/servlet.rb +24 -14
- data/lib/rdoc/single_class.rb +1 -0
- data/lib/rdoc/stats/normal.rb +20 -21
- data/lib/rdoc/stats/quiet.rb +1 -0
- data/lib/rdoc/stats/verbose.rb +1 -0
- data/lib/rdoc/stats.rb +1 -0
- data/lib/rdoc/store.rb +41 -41
- data/lib/rdoc/task.rb +2 -3
- data/lib/rdoc/text.rb +19 -38
- data/lib/rdoc/token_stream.rb +56 -32
- data/lib/rdoc/tom_doc.rb +17 -11
- data/lib/rdoc/top_level.rb +9 -2
- data/lib/rdoc/version.rb +8 -0
- data/lib/rdoc.rb +24 -10
- data/man/ri.1 +247 -0
- data/rdoc.gemspec +248 -0
- metadata +43 -236
- data/.autotest +0 -24
- data/.document +0 -5
- data/Manifest.txt +0 -306
- data/lib/gauntlet_rdoc.rb +0 -84
- data/lib/rdoc/generator/template/darkfish/js/jquery.js +0 -4
- data/lib/rdoc/markdown/literals_1_8.kpeg +0 -18
- data/lib/rdoc/markdown/literals_1_8.rb +0 -416
- data/lib/rdoc/markup/formatter_test_case.rb +0 -767
- data/lib/rdoc/markup/inline.rb +0 -1
- data/lib/rdoc/markup/special.rb +0 -40
- data/lib/rdoc/markup/text_formatter_test_case.rb +0 -114
- data/lib/rdoc/ruby_lex.rb +0 -1377
- data/lib/rdoc/ruby_token.rb +0 -460
- data/lib/rdoc/test_case.rb +0 -217
- data/test/MarkdownTest_1.0.3/Amps and angle encoding.text +0 -21
- data/test/MarkdownTest_1.0.3/Auto links.text +0 -13
- data/test/MarkdownTest_1.0.3/Backslash escapes.text +0 -120
- data/test/MarkdownTest_1.0.3/Blockquotes with code blocks.text +0 -11
- data/test/MarkdownTest_1.0.3/Code Blocks.text +0 -14
- data/test/MarkdownTest_1.0.3/Code Spans.text +0 -6
- data/test/MarkdownTest_1.0.3/Hard-wrapped paragraphs with list-like lines.text +0 -8
- data/test/MarkdownTest_1.0.3/Horizontal rules.text +0 -67
- data/test/MarkdownTest_1.0.3/Inline HTML (Advanced).text +0 -15
- data/test/MarkdownTest_1.0.3/Inline HTML (Simple).text +0 -69
- data/test/MarkdownTest_1.0.3/Inline HTML comments.text +0 -13
- data/test/MarkdownTest_1.0.3/Links, inline style.text +0 -12
- data/test/MarkdownTest_1.0.3/Links, reference style.text +0 -71
- data/test/MarkdownTest_1.0.3/Links, shortcut references.text +0 -20
- data/test/MarkdownTest_1.0.3/Literal quotes in titles.text +0 -7
- data/test/MarkdownTest_1.0.3/Markdown Documentation - Basics.text +0 -306
- data/test/MarkdownTest_1.0.3/Markdown Documentation - Syntax.text +0 -888
- data/test/MarkdownTest_1.0.3/Nested blockquotes.text +0 -5
- data/test/MarkdownTest_1.0.3/Ordered and unordered lists.text +0 -131
- data/test/MarkdownTest_1.0.3/Strong and em together.text +0 -7
- data/test/MarkdownTest_1.0.3/Tabs.text +0 -21
- data/test/MarkdownTest_1.0.3/Tidyness.text +0 -5
- data/test/README +0 -1
- data/test/binary.dat +0 -0
- data/test/hidden.zip.txt +0 -1
- data/test/test.ja.largedoc +0 -3
- data/test/test.ja.rdoc +0 -10
- data/test/test.ja.txt +0 -8
- data/test/test.txt +0 -1
- data/test/test_rdoc_alias.rb +0 -13
- data/test/test_rdoc_any_method.rb +0 -460
- data/test/test_rdoc_attr.rb +0 -190
- data/test/test_rdoc_class_module.rb +0 -1492
- data/test/test_rdoc_code_object.rb +0 -450
- data/test/test_rdoc_comment.rb +0 -504
- data/test/test_rdoc_constant.rb +0 -181
- data/test/test_rdoc_context.rb +0 -901
- data/test/test_rdoc_context_section.rb +0 -130
- data/test/test_rdoc_cross_reference.rb +0 -192
- data/test/test_rdoc_encoding.rb +0 -227
- data/test/test_rdoc_extend.rb +0 -94
- data/test/test_rdoc_generator_darkfish.rb +0 -229
- data/test/test_rdoc_generator_json_index.rb +0 -324
- data/test/test_rdoc_generator_markup.rb +0 -59
- data/test/test_rdoc_generator_pot.rb +0 -91
- data/test/test_rdoc_generator_pot_po.rb +0 -51
- data/test/test_rdoc_generator_pot_po_entry.rb +0 -139
- data/test/test_rdoc_generator_ri.rb +0 -78
- data/test/test_rdoc_i18n_locale.rb +0 -73
- data/test/test_rdoc_i18n_text.rb +0 -123
- data/test/test_rdoc_include.rb +0 -108
- data/test/test_rdoc_markdown.rb +0 -980
- data/test/test_rdoc_markdown_test.rb +0 -1884
- data/test/test_rdoc_markup.rb +0 -95
- data/test/test_rdoc_markup_attribute_manager.rb +0 -364
- data/test/test_rdoc_markup_attributes.rb +0 -39
- data/test/test_rdoc_markup_document.rb +0 -207
- data/test/test_rdoc_markup_formatter.rb +0 -175
- data/test/test_rdoc_markup_hard_break.rb +0 -31
- data/test/test_rdoc_markup_heading.rb +0 -29
- data/test/test_rdoc_markup_include.rb +0 -19
- data/test/test_rdoc_markup_indented_paragraph.rb +0 -53
- data/test/test_rdoc_markup_paragraph.rb +0 -32
- data/test/test_rdoc_markup_parser.rb +0 -1680
- data/test/test_rdoc_markup_pre_process.rb +0 -473
- data/test/test_rdoc_markup_raw.rb +0 -22
- data/test/test_rdoc_markup_to_ansi.rb +0 -369
- data/test/test_rdoc_markup_to_bs.rb +0 -366
- data/test/test_rdoc_markup_to_html.rb +0 -662
- data/test/test_rdoc_markup_to_html_crossref.rb +0 -225
- data/test/test_rdoc_markup_to_html_snippet.rb +0 -711
- data/test/test_rdoc_markup_to_joined_paragraph.rb +0 -32
- data/test/test_rdoc_markup_to_label.rb +0 -112
- data/test/test_rdoc_markup_to_markdown.rb +0 -389
- data/test/test_rdoc_markup_to_rdoc.rb +0 -377
- data/test/test_rdoc_markup_to_table_of_contents.rb +0 -126
- data/test/test_rdoc_markup_to_tt_only.rb +0 -246
- data/test/test_rdoc_markup_verbatim.rb +0 -29
- data/test/test_rdoc_method_attr.rb +0 -193
- data/test/test_rdoc_normal_class.rb +0 -47
- data/test/test_rdoc_normal_module.rb +0 -42
- data/test/test_rdoc_options.rb +0 -766
- data/test/test_rdoc_parser.rb +0 -327
- data/test/test_rdoc_parser_c.rb +0 -1896
- data/test/test_rdoc_parser_changelog.rb +0 -315
- data/test/test_rdoc_parser_markdown.rb +0 -61
- data/test/test_rdoc_parser_rd.rb +0 -55
- data/test/test_rdoc_parser_ruby.rb +0 -3322
- data/test/test_rdoc_parser_simple.rb +0 -115
- data/test/test_rdoc_rd.rb +0 -30
- data/test/test_rdoc_rd_block_parser.rb +0 -535
- data/test/test_rdoc_rd_inline.rb +0 -63
- data/test/test_rdoc_rd_inline_parser.rb +0 -177
- data/test/test_rdoc_rdoc.rb +0 -455
- data/test/test_rdoc_require.rb +0 -25
- data/test/test_rdoc_ri_driver.rb +0 -1436
- data/test/test_rdoc_ri_paths.rb +0 -155
- data/test/test_rdoc_ruby_lex.rb +0 -421
- data/test/test_rdoc_ruby_token.rb +0 -19
- data/test/test_rdoc_rubygems_hook.rb +0 -251
- data/test/test_rdoc_servlet.rb +0 -534
- data/test/test_rdoc_single_class.rb +0 -20
- data/test/test_rdoc_stats.rb +0 -722
- data/test/test_rdoc_store.rb +0 -993
- data/test/test_rdoc_task.rb +0 -173
- data/test/test_rdoc_text.rb +0 -557
- data/test/test_rdoc_token_stream.rb +0 -42
- data/test/test_rdoc_tom_doc.rb +0 -520
- data/test/test_rdoc_top_level.rb +0 -287
- data/test/xref_data.rb +0 -76
- data/test/xref_test_case.rb +0 -67
@@ -1,3 +1,4 @@
|
|
1
|
+
# frozen_string_literal: true
|
1
2
|
##
|
2
3
|
# An array of attributes which parallels the characters in a string.
|
3
4
|
|
@@ -6,16 +7,22 @@ class RDoc::Markup::AttrSpan
|
|
6
7
|
##
|
7
8
|
# Creates a new AttrSpan for +length+ characters
|
8
9
|
|
9
|
-
def initialize(length)
|
10
|
+
def initialize(length, exclusive)
|
10
11
|
@attrs = Array.new(length, 0)
|
12
|
+
@exclusive = exclusive
|
11
13
|
end
|
12
14
|
|
13
15
|
##
|
14
16
|
# Toggles +bits+ from +start+ to +length+
|
15
17
|
def set_attrs(start, length, bits)
|
18
|
+
updated = false
|
16
19
|
for i in start ... (start+length)
|
17
|
-
@attrs[i]
|
20
|
+
if (@exclusive & @attrs[i]) == 0 || (@exclusive & bits) != 0
|
21
|
+
@attrs[i] |= bits
|
22
|
+
updated = true
|
23
|
+
end
|
18
24
|
end
|
25
|
+
updated
|
19
26
|
end
|
20
27
|
|
21
28
|
##
|
@@ -1,3 +1,4 @@
|
|
1
|
+
# frozen_string_literal: true
|
1
2
|
##
|
2
3
|
# Manages changes of attributes in a block of text
|
3
4
|
|
@@ -52,10 +53,14 @@ class RDoc::Markup::AttributeManager
|
|
52
53
|
attr_reader :protectable
|
53
54
|
|
54
55
|
##
|
55
|
-
# And this maps
|
56
|
-
# something like a WikiWord
|
56
|
+
# And this maps _regexp handling_ sequences to a name. A regexp handling
|
57
|
+
# sequence is something like a WikiWord
|
57
58
|
|
58
|
-
attr_reader :
|
59
|
+
attr_reader :regexp_handlings
|
60
|
+
|
61
|
+
##
|
62
|
+
# A bits of exclusive maps
|
63
|
+
attr_reader :exclusive_bitmap
|
59
64
|
|
60
65
|
##
|
61
66
|
# Creates a new attribute manager that understands bold, emphasized and
|
@@ -65,19 +70,20 @@ class RDoc::Markup::AttributeManager
|
|
65
70
|
@html_tags = {}
|
66
71
|
@matching_word_pairs = {}
|
67
72
|
@protectable = %w[<]
|
68
|
-
@
|
73
|
+
@regexp_handlings = []
|
69
74
|
@word_pair_map = {}
|
75
|
+
@exclusive_bitmap = 0
|
70
76
|
@attributes = RDoc::Markup::Attributes.new
|
71
77
|
|
72
|
-
add_word_pair "*", "*", :BOLD
|
73
|
-
add_word_pair "_", "_", :EM
|
74
|
-
add_word_pair "+", "+", :TT
|
78
|
+
add_word_pair "*", "*", :BOLD, true
|
79
|
+
add_word_pair "_", "_", :EM, true
|
80
|
+
add_word_pair "+", "+", :TT, true
|
75
81
|
|
76
|
-
add_html "em", :EM
|
77
|
-
add_html "i", :EM
|
78
|
-
add_html "b", :BOLD
|
79
|
-
add_html "tt", :TT
|
80
|
-
add_html "code", :TT
|
82
|
+
add_html "em", :EM, true
|
83
|
+
add_html "i", :EM, true
|
84
|
+
add_html "b", :BOLD, true
|
85
|
+
add_html "tt", :TT, true
|
86
|
+
add_html "code", :TT, true
|
81
87
|
end
|
82
88
|
|
83
89
|
##
|
@@ -121,29 +127,67 @@ class RDoc::Markup::AttributeManager
|
|
121
127
|
res
|
122
128
|
end
|
123
129
|
|
130
|
+
def exclusive?(attr)
|
131
|
+
(attr & @exclusive_bitmap) != 0
|
132
|
+
end
|
133
|
+
|
134
|
+
NON_PRINTING_START = "\1" # :nodoc:
|
135
|
+
NON_PRINTING_END = "\2" # :nodoc:
|
136
|
+
|
124
137
|
##
|
125
138
|
# Map attributes like <b>text</b>to the sequence
|
126
139
|
# \001\002<char>\001\003<char>, where <char> is a per-attribute specific
|
127
140
|
# character
|
128
141
|
|
129
|
-
def convert_attrs(str, attrs)
|
142
|
+
def convert_attrs(str, attrs, exclusive = false)
|
143
|
+
convert_attrs_matching_word_pairs(str, attrs, exclusive)
|
144
|
+
convert_attrs_word_pair_map(str, attrs, exclusive)
|
145
|
+
end
|
146
|
+
|
147
|
+
def convert_attrs_matching_word_pairs(str, attrs, exclusive)
|
130
148
|
# first do matching ones
|
131
|
-
tags = @matching_word_pairs.
|
149
|
+
tags = @matching_word_pairs.select { |start, bitmap|
|
150
|
+
if exclusive && exclusive?(bitmap)
|
151
|
+
true
|
152
|
+
elsif !exclusive && !exclusive?(bitmap)
|
153
|
+
true
|
154
|
+
else
|
155
|
+
false
|
156
|
+
end
|
157
|
+
}.keys
|
158
|
+
return if tags.empty?
|
159
|
+
all_tags = @matching_word_pairs.keys
|
132
160
|
|
133
|
-
re = /(^|\W)([#{tags}])([#\\]?[\w
|
161
|
+
re = /(^|\W|[#{all_tags.join("")}])([#{tags.join("")}])(\2*[#\\]?[\w:.\/\[\]-]+?\S?)\2(?!\2)([#{all_tags.join("")}]|\W|$)/
|
134
162
|
|
135
|
-
1 while str.gsub!(re)
|
163
|
+
1 while str.gsub!(re) { |orig|
|
136
164
|
attr = @matching_word_pairs[$2]
|
137
|
-
attrs.set_attrs($`.length + $1.length + $2.length, $3.length, attr)
|
138
|
-
|
139
|
-
|
165
|
+
attr_updated = attrs.set_attrs($`.length + $1.length + $2.length, $3.length, attr)
|
166
|
+
if attr_updated
|
167
|
+
$1 + NULL * $2.length + $3 + NULL * $2.length + $4
|
168
|
+
else
|
169
|
+
$1 + NON_PRINTING_START + $2 + NON_PRINTING_END + $3 + NON_PRINTING_START + $2 + NON_PRINTING_END + $4
|
170
|
+
end
|
171
|
+
}
|
172
|
+
str.delete!(NON_PRINTING_START + NON_PRINTING_END)
|
173
|
+
end
|
140
174
|
|
175
|
+
def convert_attrs_word_pair_map(str, attrs, exclusive)
|
141
176
|
# then non-matching
|
142
177
|
unless @word_pair_map.empty? then
|
143
178
|
@word_pair_map.each do |regexp, attr|
|
144
|
-
|
145
|
-
|
146
|
-
|
179
|
+
if !exclusive
|
180
|
+
next if exclusive?(attr)
|
181
|
+
else
|
182
|
+
next if !exclusive?(attr)
|
183
|
+
end
|
184
|
+
1 while str.gsub!(regexp) { |orig|
|
185
|
+
updated = attrs.set_attrs($`.length + $1.length, $2.length, attr)
|
186
|
+
if updated
|
187
|
+
NULL * $1.length + $2 + NULL * $3.length
|
188
|
+
else
|
189
|
+
orig
|
190
|
+
end
|
147
191
|
}
|
148
192
|
end
|
149
193
|
end
|
@@ -152,10 +196,18 @@ class RDoc::Markup::AttributeManager
|
|
152
196
|
##
|
153
197
|
# Converts HTML tags to RDoc attributes
|
154
198
|
|
155
|
-
def convert_html(str, attrs)
|
156
|
-
tags = @html_tags.
|
199
|
+
def convert_html(str, attrs, exclusive = false)
|
200
|
+
tags = @html_tags.select { |start, bitmap|
|
201
|
+
if exclusive && exclusive?(bitmap)
|
202
|
+
true
|
203
|
+
elsif !exclusive && !exclusive?(bitmap)
|
204
|
+
true
|
205
|
+
else
|
206
|
+
false
|
207
|
+
end
|
208
|
+
}.keys.join '|'
|
157
209
|
|
158
|
-
1 while str.gsub!(/<(#{tags})>(.*?)<\/\1>/i) {
|
210
|
+
1 while str.gsub!(/<(#{tags})>(.*?)<\/\1>/i) { |orig|
|
159
211
|
attr = @html_tags[$1.downcase]
|
160
212
|
html_length = $1.length + 2
|
161
213
|
seq = NULL * html_length
|
@@ -165,22 +217,27 @@ class RDoc::Markup::AttributeManager
|
|
165
217
|
end
|
166
218
|
|
167
219
|
##
|
168
|
-
# Converts
|
169
|
-
|
170
|
-
def
|
171
|
-
@
|
220
|
+
# Converts regexp handling sequences to RDoc attributes
|
221
|
+
|
222
|
+
def convert_regexp_handlings str, attrs, exclusive = false
|
223
|
+
@regexp_handlings.each do |regexp, attribute|
|
224
|
+
if exclusive
|
225
|
+
next if !exclusive?(attribute)
|
226
|
+
else
|
227
|
+
next if exclusive?(attribute)
|
228
|
+
end
|
172
229
|
str.scan(regexp) do
|
173
230
|
capture = $~.size == 1 ? 0 : 1
|
174
231
|
|
175
232
|
s, e = $~.offset capture
|
176
233
|
|
177
|
-
attrs.set_attrs s, e - s, attribute | @attributes.
|
234
|
+
attrs.set_attrs s, e - s, attribute | @attributes.regexp_handling
|
178
235
|
end
|
179
236
|
end
|
180
237
|
end
|
181
238
|
|
182
239
|
##
|
183
|
-
# Escapes
|
240
|
+
# Escapes regexp handling sequences of text to prevent conversion to RDoc
|
184
241
|
|
185
242
|
def mask_protected_sequences
|
186
243
|
# protect __send__, __FILE__, etc.
|
@@ -192,7 +249,7 @@ class RDoc::Markup::AttributeManager
|
|
192
249
|
end
|
193
250
|
|
194
251
|
##
|
195
|
-
# Unescapes
|
252
|
+
# Unescapes regexp handling sequences of text
|
196
253
|
|
197
254
|
def unmask_protected_sequences
|
198
255
|
@str.gsub!(/(.)#{PROTECT_ATTR}/, "\\1\000")
|
@@ -204,7 +261,7 @@ class RDoc::Markup::AttributeManager
|
|
204
261
|
#
|
205
262
|
# am.add_word_pair '*', '*', :BOLD
|
206
263
|
|
207
|
-
def add_word_pair(start, stop, name)
|
264
|
+
def add_word_pair(start, stop, name, exclusive = false)
|
208
265
|
raise ArgumentError, "Word flags may not start with '<'" if
|
209
266
|
start[0,1] == '<'
|
210
267
|
|
@@ -219,6 +276,8 @@ class RDoc::Markup::AttributeManager
|
|
219
276
|
|
220
277
|
@protectable << start[0,1]
|
221
278
|
@protectable.uniq!
|
279
|
+
|
280
|
+
@exclusive_bitmap |= bitmap if exclusive
|
222
281
|
end
|
223
282
|
|
224
283
|
##
|
@@ -227,33 +286,40 @@ class RDoc::Markup::AttributeManager
|
|
227
286
|
#
|
228
287
|
# am.add_html 'em', :EM
|
229
288
|
|
230
|
-
def add_html(tag, name)
|
231
|
-
|
289
|
+
def add_html(tag, name, exclusive = false)
|
290
|
+
bitmap = @attributes.bitmap_for name
|
291
|
+
@html_tags[tag.downcase] = bitmap
|
292
|
+
@exclusive_bitmap |= bitmap if exclusive
|
232
293
|
end
|
233
294
|
|
234
295
|
##
|
235
|
-
# Adds a
|
296
|
+
# Adds a regexp handling for +pattern+ with +name+. A simple URL handler
|
236
297
|
# would be:
|
237
298
|
#
|
238
|
-
# @am.
|
299
|
+
# @am.add_regexp_handling(/((https?:)\S+\w)/, :HYPERLINK)
|
239
300
|
|
240
|
-
def
|
241
|
-
|
301
|
+
def add_regexp_handling pattern, name, exclusive = false
|
302
|
+
bitmap = @attributes.bitmap_for(name)
|
303
|
+
@regexp_handlings << [pattern, bitmap]
|
304
|
+
@exclusive_bitmap |= bitmap if exclusive
|
242
305
|
end
|
243
306
|
|
244
307
|
##
|
245
|
-
# Processes +str+ converting attributes, HTML and
|
308
|
+
# Processes +str+ converting attributes, HTML and regexp handlings
|
246
309
|
|
247
310
|
def flow str
|
248
|
-
@str = str
|
311
|
+
@str = str.dup
|
249
312
|
|
250
313
|
mask_protected_sequences
|
251
314
|
|
252
|
-
@attrs = RDoc::Markup::AttrSpan.new @str.length
|
315
|
+
@attrs = RDoc::Markup::AttrSpan.new @str.length, @exclusive_bitmap
|
253
316
|
|
254
|
-
convert_attrs
|
255
|
-
convert_html
|
256
|
-
|
317
|
+
convert_attrs @str, @attrs, true
|
318
|
+
convert_html @str, @attrs, true
|
319
|
+
convert_regexp_handlings @str, @attrs, true
|
320
|
+
convert_attrs @str, @attrs
|
321
|
+
convert_html @str, @attrs
|
322
|
+
convert_regexp_handlings @str, @attrs
|
257
323
|
|
258
324
|
unmask_protected_sequences
|
259
325
|
|
@@ -311,12 +377,12 @@ class RDoc::Markup::AttributeManager
|
|
311
377
|
res << change_attribute(current_attr, new_attr)
|
312
378
|
current_attr = new_attr
|
313
379
|
|
314
|
-
if (current_attr & @attributes.
|
380
|
+
if (current_attr & @attributes.regexp_handling) != 0 then
|
315
381
|
i += 1 while
|
316
|
-
i < str_len and (@attrs[i] & @attributes.
|
382
|
+
i < str_len and (@attrs[i] & @attributes.regexp_handling) != 0
|
317
383
|
|
318
|
-
res << RDoc::Markup::
|
319
|
-
|
384
|
+
res << RDoc::Markup::RegexpHandling.new(current_attr,
|
385
|
+
copy_string(start_pos, i))
|
320
386
|
start_pos = i
|
321
387
|
next
|
322
388
|
end
|
@@ -1,3 +1,4 @@
|
|
1
|
+
# frozen_string_literal: true
|
1
2
|
##
|
2
3
|
# We manage a set of attributes. Each attribute has a symbol name and a bit
|
3
4
|
# value.
|
@@ -5,21 +6,21 @@
|
|
5
6
|
class RDoc::Markup::Attributes
|
6
7
|
|
7
8
|
##
|
8
|
-
# The
|
9
|
+
# The regexp handling attribute type. See RDoc::Markup#add_regexp_handling
|
9
10
|
|
10
|
-
attr_reader :
|
11
|
+
attr_reader :regexp_handling
|
11
12
|
|
12
13
|
##
|
13
14
|
# Creates a new attributes set.
|
14
15
|
|
15
16
|
def initialize
|
16
|
-
@
|
17
|
+
@regexp_handling = 1
|
17
18
|
|
18
19
|
@name_to_bitmap = [
|
19
|
-
[:
|
20
|
+
[:_REGEXP_HANDLING_, @regexp_handling],
|
20
21
|
]
|
21
22
|
|
22
|
-
@next_bitmap = @
|
23
|
+
@next_bitmap = @regexp_handling << 1
|
23
24
|
end
|
24
25
|
|
25
26
|
##
|
@@ -60,7 +61,7 @@ class RDoc::Markup::Attributes
|
|
60
61
|
return enum_for __method__, bitmap unless block_given?
|
61
62
|
|
62
63
|
@name_to_bitmap.each do |name, bit|
|
63
|
-
next if bit == @
|
64
|
+
next if bit == @regexp_handling
|
64
65
|
|
65
66
|
yield name.to_s if (bitmap & bit) != 0
|
66
67
|
end
|
data/lib/rdoc/markup/document.rb
CHANGED
@@ -1,3 +1,4 @@
|
|
1
|
+
# frozen_string_literal: true
|
1
2
|
##
|
2
3
|
# Base class for RDoc markup formatters
|
3
4
|
#
|
@@ -49,7 +50,7 @@ class RDoc::Markup::Formatter
|
|
49
50
|
|
50
51
|
@markup = markup || RDoc::Markup.new
|
51
52
|
@am = @markup.attribute_manager
|
52
|
-
@am.
|
53
|
+
@am.add_regexp_handling(/<br>/, :HARD_BREAK)
|
53
54
|
|
54
55
|
@attributes = @am.attributes
|
55
56
|
|
@@ -77,23 +78,24 @@ class RDoc::Markup::Formatter
|
|
77
78
|
end
|
78
79
|
|
79
80
|
##
|
80
|
-
# Adds a
|
81
|
+
# Adds a regexp handling for links of the form rdoc-...:
|
81
82
|
|
82
|
-
def
|
83
|
-
@markup.
|
83
|
+
def add_regexp_handling_RDOCLINK
|
84
|
+
@markup.add_regexp_handling(/rdoc-[a-z]+:[^\s\]]+/, :RDOCLINK)
|
84
85
|
end
|
85
86
|
|
86
87
|
##
|
87
|
-
# Adds a
|
88
|
+
# Adds a regexp handling for links of the form {<text>}[<url>] and
|
89
|
+
# <word>[<url>]
|
88
90
|
|
89
|
-
def
|
90
|
-
@markup.
|
91
|
-
|
92
|
-
|
93
|
-
|
91
|
+
def add_regexp_handling_TIDYLINK
|
92
|
+
@markup.add_regexp_handling(/(?:
|
93
|
+
\{.*?\} | # multi-word label
|
94
|
+
\b[^\s{}]+? # single-word label
|
95
|
+
)
|
94
96
|
|
95
|
-
|
96
|
-
|
97
|
+
\[\S+?\] # link target
|
98
|
+
/x, :TIDYLINK)
|
97
99
|
end
|
98
100
|
|
99
101
|
##
|
@@ -132,8 +134,8 @@ class RDoc::Markup::Formatter
|
|
132
134
|
when RDoc::Markup::AttrChanger then
|
133
135
|
off_tags res, item
|
134
136
|
on_tags res, item
|
135
|
-
when RDoc::Markup::
|
136
|
-
res <<
|
137
|
+
when RDoc::Markup::RegexpHandling then
|
138
|
+
res << convert_regexp_handling(item)
|
137
139
|
else
|
138
140
|
raise "Unknown flow element: #{item.inspect}"
|
139
141
|
end
|
@@ -143,29 +145,29 @@ class RDoc::Markup::Formatter
|
|
143
145
|
end
|
144
146
|
|
145
147
|
##
|
146
|
-
# Converts added
|
148
|
+
# Converts added regexp handlings. See RDoc::Markup#add_regexp_handling
|
147
149
|
|
148
|
-
def
|
149
|
-
return
|
150
|
+
def convert_regexp_handling target
|
151
|
+
return target.text if in_tt?
|
150
152
|
|
151
153
|
handled = false
|
152
154
|
|
153
|
-
@attributes.each_name_of
|
154
|
-
method_name = "
|
155
|
+
@attributes.each_name_of target.type do |name|
|
156
|
+
method_name = "handle_regexp_#{name}"
|
155
157
|
|
156
158
|
if respond_to? method_name then
|
157
|
-
|
159
|
+
target.text = public_send method_name, target
|
158
160
|
handled = true
|
159
161
|
end
|
160
162
|
end
|
161
163
|
|
162
164
|
unless handled then
|
163
|
-
|
165
|
+
target_name = @attributes.as_string target.type
|
164
166
|
|
165
|
-
raise RDoc::Error, "Unhandled
|
167
|
+
raise RDoc::Error, "Unhandled regexp handling #{target_name}: #{target}"
|
166
168
|
end
|
167
169
|
|
168
|
-
|
170
|
+
target.text
|
169
171
|
end
|
170
172
|
|
171
173
|
##
|
data/lib/rdoc/markup/heading.rb
CHANGED
@@ -1,3 +1,4 @@
|
|
1
|
+
# frozen_string_literal: true
|
1
2
|
##
|
2
3
|
# A heading with a level (1-6) and text
|
3
4
|
|
@@ -22,12 +23,12 @@ RDoc::Markup::Heading =
|
|
22
23
|
return @to_html if @to_html
|
23
24
|
|
24
25
|
markup = RDoc::Markup.new
|
25
|
-
markup.
|
26
|
+
markup.add_regexp_handling RDoc::CrossReference::CROSSREF_REGEXP, :CROSSREF
|
26
27
|
|
27
28
|
@to_html = RDoc::Markup::ToHtml.new nil
|
28
29
|
|
29
|
-
def @to_html.
|
30
|
-
|
30
|
+
def @to_html.handle_regexp_CROSSREF target
|
31
|
+
target.text.sub(/^\\/, '')
|
31
32
|
end
|
32
33
|
|
33
34
|
@to_html
|
data/lib/rdoc/markup/include.rb
CHANGED
data/lib/rdoc/markup/list.rb
CHANGED