rdoc 2.4.3 → 2.5
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.
- data.tar.gz.sig +0 -0
- data/.autotest +3 -1
- data/History.txt +68 -0
- data/LICENSE.txt +57 -0
- data/Manifest.txt +37 -19
- data/README.txt +2 -12
- data/Rakefile +12 -12
- data/bin/rdoc +4 -4
- data/lib/rdoc.rb +32 -9
- data/lib/rdoc/alias.rb +2 -2
- data/lib/rdoc/any_method.rb +108 -16
- data/lib/rdoc/attr.rb +87 -1
- data/lib/rdoc/class_module.rb +131 -5
- data/lib/rdoc/code_object.rb +28 -5
- data/lib/rdoc/constant.rb +22 -0
- data/lib/rdoc/context.rb +80 -37
- data/lib/rdoc/gauntlet.rb +48 -0
- data/lib/rdoc/generator/darkfish.rb +25 -23
- data/lib/rdoc/generator/markup.rb +6 -29
- data/lib/rdoc/generator/ri.rb +39 -189
- data/lib/rdoc/generator/template/darkfish/classpage.rhtml +17 -1
- data/lib/rdoc/generator/template/darkfish/filepage.rhtml +10 -0
- data/lib/rdoc/generator/template/darkfish/images/brick.png +0 -0
- data/lib/rdoc/generator/template/darkfish/images/brick_link.png +0 -0
- data/lib/rdoc/generator/template/darkfish/images/bullet_black.png +0 -0
- data/lib/rdoc/generator/template/darkfish/images/bullet_toggle_minus.png +0 -0
- data/lib/rdoc/generator/template/darkfish/images/bullet_toggle_plus.png +0 -0
- data/lib/rdoc/generator/template/darkfish/images/date.png +0 -0
- data/lib/rdoc/generator/template/darkfish/images/find.png +0 -0
- data/lib/rdoc/generator/template/darkfish/images/package.png +0 -0
- data/lib/rdoc/generator/template/darkfish/images/page_green.png +0 -0
- data/lib/rdoc/generator/template/darkfish/images/page_white_text.png +0 -0
- data/lib/rdoc/generator/template/darkfish/images/page_white_width.png +0 -0
- data/lib/rdoc/generator/template/darkfish/images/plugin.png +0 -0
- data/lib/rdoc/generator/template/darkfish/images/ruby.png +0 -0
- data/lib/rdoc/generator/template/darkfish/images/tag_green.png +0 -0
- data/lib/rdoc/generator/template/darkfish/images/wrench.png +0 -0
- data/lib/rdoc/generator/template/darkfish/images/wrench_orange.png +0 -0
- data/lib/rdoc/generator/template/darkfish/images/zoom.png +0 -0
- data/lib/rdoc/generator/template/darkfish/index.rhtml +2 -2
- data/lib/rdoc/generator/template/darkfish/rdoc.css +38 -33
- data/lib/rdoc/include.rb +22 -0
- data/lib/rdoc/markup.rb +10 -262
- data/lib/rdoc/markup/attribute_manager.rb +57 -50
- data/lib/rdoc/markup/blank_line.rb +19 -0
- data/lib/rdoc/markup/document.rb +72 -0
- data/lib/rdoc/markup/formatter.rb +118 -0
- data/lib/rdoc/markup/formatter_test_case.rb +341 -0
- data/lib/rdoc/markup/heading.rb +17 -0
- data/lib/rdoc/markup/inline.rb +6 -5
- data/lib/rdoc/markup/list.rb +78 -0
- data/lib/rdoc/markup/list_item.rb +83 -0
- data/lib/rdoc/markup/paragraph.rb +66 -0
- data/lib/rdoc/markup/parser.rb +528 -0
- data/lib/rdoc/markup/rule.rb +17 -0
- data/lib/rdoc/markup/to_ansi.rb +72 -0
- data/lib/rdoc/markup/to_bs.rb +74 -0
- data/lib/rdoc/markup/to_html.rb +106 -172
- data/lib/rdoc/markup/to_html_crossref.rb +10 -4
- data/lib/rdoc/markup/to_rdoc.rb +243 -0
- data/lib/rdoc/markup/to_test.rb +27 -16
- data/lib/rdoc/markup/verbatim.rb +42 -0
- data/lib/rdoc/normal_class.rb +38 -1
- data/lib/rdoc/normal_module.rb +38 -8
- data/lib/rdoc/options.rb +39 -151
- data/lib/rdoc/parser.rb +36 -18
- data/lib/rdoc/parser/c.rb +102 -109
- data/lib/rdoc/parser/ruby.rb +359 -1662
- data/lib/rdoc/parser/ruby_tools.rb +157 -0
- data/lib/rdoc/parser/simple.rb +0 -2
- data/lib/rdoc/rdoc.rb +142 -82
- data/lib/rdoc/ri.rb +10 -0
- data/lib/rdoc/ri/driver.rb +674 -444
- data/lib/rdoc/ri/formatter.rb +2 -651
- data/lib/rdoc/ri/paths.rb +70 -45
- data/lib/rdoc/ri/store.rb +248 -0
- data/lib/rdoc/ruby_lex.rb +1284 -0
- data/lib/rdoc/ruby_token.rb +416 -0
- data/lib/rdoc/single_class.rb +5 -0
- data/lib/rdoc/stats.rb +152 -83
- data/lib/rdoc/task.rb +27 -49
- data/lib/rdoc/text.rb +130 -0
- data/lib/rdoc/tokenstream.rb +28 -9
- data/lib/rdoc/top_level.rb +49 -43
- data/test/hidden.zip.txt +1 -0
- data/test/test_attribute_manager.rb +9 -16
- data/test/test_rdoc_any_method.rb +23 -0
- data/test/test_rdoc_attr.rb +40 -0
- data/test/test_rdoc_class_module.rb +100 -0
- data/test/test_rdoc_code_object.rb +18 -2
- data/test/test_rdoc_context.rb +41 -0
- data/test/test_rdoc_generator_ri.rb +56 -0
- data/test/test_rdoc_markup.rb +21 -610
- data/test/test_rdoc_markup_attribute_manager.rb +14 -17
- data/test/test_rdoc_markup_document.rb +51 -0
- data/test/test_rdoc_markup_paragraph.rb +27 -0
- data/test/test_rdoc_markup_parser.rb +1327 -0
- data/test/test_rdoc_markup_to_ansi.rb +426 -0
- data/test/test_rdoc_markup_to_bs.rb +443 -0
- data/test/test_rdoc_markup_to_html.rb +183 -18
- data/test/test_rdoc_markup_to_html_crossref.rb +1 -3
- data/test/test_rdoc_markup_to_rdoc.rb +426 -0
- data/test/test_rdoc_normal_class.rb +17 -0
- data/test/test_rdoc_normal_module.rb +6 -6
- data/test/test_rdoc_options.rb +41 -0
- data/test/test_rdoc_parser.rb +66 -13
- data/test/test_rdoc_parser_c.rb +93 -38
- data/test/test_rdoc_parser_perl.rb +2 -3
- data/test/test_rdoc_parser_ruby.rb +291 -28
- data/test/test_rdoc_parser_simple.rb +48 -0
- data/test/test_rdoc_rdoc.rb +66 -0
- data/test/test_rdoc_ri_driver.rb +752 -38
- data/test/test_rdoc_ri_paths.rb +39 -0
- data/test/test_rdoc_ri_store.rb +309 -0
- data/test/test_rdoc_text.rb +157 -0
- data/test/test_rdoc_top_level.rb +35 -9
- data/test/xref_data.rb +9 -1
- data/test/xref_test_case.rb +8 -3
- metadata +110 -38
- metadata.gz.sig +0 -0
- data/lib/rdoc/cache.rb +0 -41
- data/lib/rdoc/diagram.rb +0 -340
- data/lib/rdoc/dot.rb +0 -249
- data/lib/rdoc/markup/fragments.rb +0 -377
- data/lib/rdoc/markup/lines.rb +0 -156
- data/lib/rdoc/markup/to_flow.rb +0 -211
- data/lib/rdoc/markup/to_latex.rb +0 -328
- data/lib/rdoc/markup/to_texinfo.rb +0 -73
- data/lib/rdoc/ri/cache.rb +0 -187
- data/lib/rdoc/ri/descriptions.rb +0 -156
- data/lib/rdoc/ri/display.rb +0 -340
- data/lib/rdoc/ri/reader.rb +0 -106
- data/lib/rdoc/ri/util.rb +0 -79
- data/lib/rdoc/ri/writer.rb +0 -68
- data/test/test_rdoc_ri_attribute_formatter.rb +0 -44
- data/test/test_rdoc_ri_default_display.rb +0 -302
- data/test/test_rdoc_ri_formatter.rb +0 -320
- data/test/test_rdoc_ri_html_formatter.rb +0 -141
- data/test/test_rdoc_ri_overstrike_formatter.rb +0 -71
@@ -0,0 +1,416 @@
|
|
1
|
+
#--
|
2
|
+
# irb/ruby-token.rb - ruby tokens
|
3
|
+
# $Release Version: 0.9.5$
|
4
|
+
# $Revision: 11708 $
|
5
|
+
# $Date: 2007-02-12 15:01:19 -0800 (Mon, 12 Feb 2007) $
|
6
|
+
# by Keiju ISHITSUKA(keiju@ruby-lang.org)
|
7
|
+
#++
|
8
|
+
# Definitions of all tokens involved in the lexical analysis.
|
9
|
+
#
|
10
|
+
# This class is not documented because it is so deep in the internals.
|
11
|
+
|
12
|
+
module RDoc::RubyToken
|
13
|
+
# :stopdoc:
|
14
|
+
|
15
|
+
EXPR_BEG = :EXPR_BEG
|
16
|
+
EXPR_MID = :EXPR_MID
|
17
|
+
EXPR_END = :EXPR_END
|
18
|
+
EXPR_ARG = :EXPR_ARG
|
19
|
+
EXPR_FNAME = :EXPR_FNAME
|
20
|
+
EXPR_DOT = :EXPR_DOT
|
21
|
+
EXPR_CLASS = :EXPR_CLASS
|
22
|
+
|
23
|
+
# for ruby 1.4X
|
24
|
+
if !defined?(Symbol)
|
25
|
+
Symbol = Integer
|
26
|
+
end
|
27
|
+
|
28
|
+
def set_token_position(line, char)
|
29
|
+
@prev_line_no = line
|
30
|
+
@prev_char_no = char
|
31
|
+
end
|
32
|
+
|
33
|
+
class Token
|
34
|
+
def initialize(seek, line_no, char_no, text = nil)
|
35
|
+
@seek = seek
|
36
|
+
@line_no = line_no
|
37
|
+
@char_no = char_no
|
38
|
+
@text = text
|
39
|
+
end
|
40
|
+
|
41
|
+
attr :seek
|
42
|
+
attr :line_no
|
43
|
+
attr :char_no
|
44
|
+
|
45
|
+
attr_accessor :text
|
46
|
+
|
47
|
+
def ==(other)
|
48
|
+
self.class == other.class and
|
49
|
+
other.line_no == @line_no and
|
50
|
+
other.char_no == @char_no and
|
51
|
+
other.text == @text
|
52
|
+
end
|
53
|
+
|
54
|
+
##
|
55
|
+
# Because we're used in contexts that expect to return a token, we set the
|
56
|
+
# text string and then return ourselves
|
57
|
+
|
58
|
+
def set_text(text)
|
59
|
+
@text = text
|
60
|
+
self
|
61
|
+
end
|
62
|
+
|
63
|
+
end
|
64
|
+
|
65
|
+
class TkNode < Token
|
66
|
+
def initialize(seek, line_no, char_no, node = nil)
|
67
|
+
super seek, line_no, char_no
|
68
|
+
@node = node
|
69
|
+
end
|
70
|
+
|
71
|
+
attr :node
|
72
|
+
|
73
|
+
def ==(other)
|
74
|
+
self.class == other.class and
|
75
|
+
other.line_no == @line_no and
|
76
|
+
other.char_no == @char_no and
|
77
|
+
other.node == @node
|
78
|
+
end
|
79
|
+
|
80
|
+
def set_text text
|
81
|
+
@node = text
|
82
|
+
self
|
83
|
+
end
|
84
|
+
|
85
|
+
alias text node
|
86
|
+
end
|
87
|
+
|
88
|
+
class TkId < Token
|
89
|
+
def initialize(seek, line_no, char_no, name)
|
90
|
+
super(seek, line_no, char_no)
|
91
|
+
@name = name
|
92
|
+
end
|
93
|
+
attr :name
|
94
|
+
|
95
|
+
def ==(other)
|
96
|
+
self.class == other.class and
|
97
|
+
other.line_no == @line_no and
|
98
|
+
other.char_no == @char_no and
|
99
|
+
other.name == @name
|
100
|
+
end
|
101
|
+
|
102
|
+
def set_text text
|
103
|
+
@name = text
|
104
|
+
self
|
105
|
+
end
|
106
|
+
|
107
|
+
alias text name
|
108
|
+
end
|
109
|
+
|
110
|
+
class TkKW < TkId
|
111
|
+
end
|
112
|
+
|
113
|
+
class TkVal < Token
|
114
|
+
def initialize(seek, line_no, char_no, value = nil)
|
115
|
+
super(seek, line_no, char_no)
|
116
|
+
@value = value
|
117
|
+
end
|
118
|
+
attr_accessor :value
|
119
|
+
|
120
|
+
def ==(other)
|
121
|
+
self.class == other.class and
|
122
|
+
other.line_no == @line_no and
|
123
|
+
other.char_no == @char_no and
|
124
|
+
other.value == @value
|
125
|
+
end
|
126
|
+
|
127
|
+
def set_text text
|
128
|
+
@value = text
|
129
|
+
self
|
130
|
+
end
|
131
|
+
|
132
|
+
alias text value
|
133
|
+
end
|
134
|
+
|
135
|
+
class TkOp < Token
|
136
|
+
def initialize(seek, line_no, char_no, name = nil)
|
137
|
+
super seek, line_no, char_no
|
138
|
+
@name = name
|
139
|
+
end
|
140
|
+
|
141
|
+
attr_accessor :name
|
142
|
+
|
143
|
+
def ==(other)
|
144
|
+
self.class == other.class and
|
145
|
+
other.line_no == @line_no and
|
146
|
+
other.char_no == @char_no and
|
147
|
+
other.name == @name
|
148
|
+
end
|
149
|
+
|
150
|
+
def set_text text
|
151
|
+
@name = text
|
152
|
+
self
|
153
|
+
end
|
154
|
+
|
155
|
+
alias text name
|
156
|
+
end
|
157
|
+
|
158
|
+
class TkOPASGN < TkOp
|
159
|
+
def initialize(seek, line_no, char_no, op)
|
160
|
+
super(seek, line_no, char_no)
|
161
|
+
op = TkReading2Token[op][0] unless op.kind_of?(Symbol)
|
162
|
+
@op = op
|
163
|
+
@text = nil
|
164
|
+
end
|
165
|
+
|
166
|
+
attr :op
|
167
|
+
|
168
|
+
def ==(other)
|
169
|
+
self.class == other.class and
|
170
|
+
other.line_no == @line_no and
|
171
|
+
other.char_no == @char_no and
|
172
|
+
other.op == @op
|
173
|
+
end
|
174
|
+
|
175
|
+
def text
|
176
|
+
@text ||= "#{TkToken2Reading[op]}="
|
177
|
+
end
|
178
|
+
end
|
179
|
+
|
180
|
+
class TkUnknownChar < Token
|
181
|
+
def initialize(seek, line_no, char_no, id)
|
182
|
+
super(seek, line_no, char_no)
|
183
|
+
@name = name
|
184
|
+
end
|
185
|
+
attr :name
|
186
|
+
|
187
|
+
def ==(other)
|
188
|
+
self.class == other.class and
|
189
|
+
other.line_no == @line_no and
|
190
|
+
other.char_no == @char_no and
|
191
|
+
other.name == @name
|
192
|
+
end
|
193
|
+
|
194
|
+
def set_text text
|
195
|
+
@name = text
|
196
|
+
self
|
197
|
+
end
|
198
|
+
|
199
|
+
alias text name
|
200
|
+
end
|
201
|
+
|
202
|
+
class TkError < Token
|
203
|
+
end
|
204
|
+
|
205
|
+
def Token(token, value = nil)
|
206
|
+
value ||= TkToken2Reading[token]
|
207
|
+
|
208
|
+
case token
|
209
|
+
when String
|
210
|
+
if (tk = TkReading2Token[token]).nil?
|
211
|
+
IRB.fail TkReading2TokenNoKey, token
|
212
|
+
end
|
213
|
+
|
214
|
+
tk = Token(tk[0], value)
|
215
|
+
|
216
|
+
if tk.kind_of?(TkOp) then
|
217
|
+
tk.name = token
|
218
|
+
end
|
219
|
+
when Symbol
|
220
|
+
if (tk = TkSymbol2Token[token]).nil?
|
221
|
+
IRB.fail TkSymbol2TokenNoKey, token
|
222
|
+
end
|
223
|
+
|
224
|
+
tk = Token(tk[0], value)
|
225
|
+
else
|
226
|
+
if token.instance_method(:initialize).arity == 3 then
|
227
|
+
tk = token.new(@prev_seek, @prev_line_no, @prev_char_no)
|
228
|
+
tk.set_text value
|
229
|
+
else
|
230
|
+
tk = token.new(@prev_seek, @prev_line_no, @prev_char_no, value)
|
231
|
+
end
|
232
|
+
end
|
233
|
+
|
234
|
+
tk
|
235
|
+
end
|
236
|
+
|
237
|
+
TokenDefinitions = [
|
238
|
+
[:TkCLASS, TkKW, "class", EXPR_CLASS],
|
239
|
+
[:TkMODULE, TkKW, "module", EXPR_BEG],
|
240
|
+
[:TkDEF, TkKW, "def", EXPR_FNAME],
|
241
|
+
[:TkUNDEF, TkKW, "undef", EXPR_FNAME],
|
242
|
+
[:TkBEGIN, TkKW, "begin", EXPR_BEG],
|
243
|
+
[:TkRESCUE, TkKW, "rescue", EXPR_MID],
|
244
|
+
[:TkENSURE, TkKW, "ensure", EXPR_BEG],
|
245
|
+
[:TkEND, TkKW, "end", EXPR_END],
|
246
|
+
[:TkIF, TkKW, "if", EXPR_BEG, :TkIF_MOD],
|
247
|
+
[:TkUNLESS, TkKW, "unless", EXPR_BEG, :TkUNLESS_MOD],
|
248
|
+
[:TkTHEN, TkKW, "then", EXPR_BEG],
|
249
|
+
[:TkELSIF, TkKW, "elsif", EXPR_BEG],
|
250
|
+
[:TkELSE, TkKW, "else", EXPR_BEG],
|
251
|
+
[:TkCASE, TkKW, "case", EXPR_BEG],
|
252
|
+
[:TkWHEN, TkKW, "when", EXPR_BEG],
|
253
|
+
[:TkWHILE, TkKW, "while", EXPR_BEG, :TkWHILE_MOD],
|
254
|
+
[:TkUNTIL, TkKW, "until", EXPR_BEG, :TkUNTIL_MOD],
|
255
|
+
[:TkFOR, TkKW, "for", EXPR_BEG],
|
256
|
+
[:TkBREAK, TkKW, "break", EXPR_END],
|
257
|
+
[:TkNEXT, TkKW, "next", EXPR_END],
|
258
|
+
[:TkREDO, TkKW, "redo", EXPR_END],
|
259
|
+
[:TkRETRY, TkKW, "retry", EXPR_END],
|
260
|
+
[:TkIN, TkKW, "in", EXPR_BEG],
|
261
|
+
[:TkDO, TkKW, "do", EXPR_BEG],
|
262
|
+
[:TkRETURN, TkKW, "return", EXPR_MID],
|
263
|
+
[:TkYIELD, TkKW, "yield", EXPR_END],
|
264
|
+
[:TkSUPER, TkKW, "super", EXPR_END],
|
265
|
+
[:TkSELF, TkKW, "self", EXPR_END],
|
266
|
+
[:TkNIL, TkKW, "nil", EXPR_END],
|
267
|
+
[:TkTRUE, TkKW, "true", EXPR_END],
|
268
|
+
[:TkFALSE, TkKW, "false", EXPR_END],
|
269
|
+
[:TkAND, TkKW, "and", EXPR_BEG],
|
270
|
+
[:TkOR, TkKW, "or", EXPR_BEG],
|
271
|
+
[:TkNOT, TkKW, "not", EXPR_BEG],
|
272
|
+
[:TkIF_MOD, TkKW],
|
273
|
+
[:TkUNLESS_MOD, TkKW],
|
274
|
+
[:TkWHILE_MOD, TkKW],
|
275
|
+
[:TkUNTIL_MOD, TkKW],
|
276
|
+
[:TkALIAS, TkKW, "alias", EXPR_FNAME],
|
277
|
+
[:TkDEFINED, TkKW, "defined?", EXPR_END],
|
278
|
+
[:TklBEGIN, TkKW, "BEGIN", EXPR_END],
|
279
|
+
[:TklEND, TkKW, "END", EXPR_END],
|
280
|
+
[:Tk__LINE__, TkKW, "__LINE__", EXPR_END],
|
281
|
+
[:Tk__FILE__, TkKW, "__FILE__", EXPR_END],
|
282
|
+
|
283
|
+
[:TkIDENTIFIER, TkId],
|
284
|
+
[:TkFID, TkId],
|
285
|
+
[:TkGVAR, TkId],
|
286
|
+
[:TkCVAR, TkId],
|
287
|
+
[:TkIVAR, TkId],
|
288
|
+
[:TkCONSTANT, TkId],
|
289
|
+
|
290
|
+
[:TkINTEGER, TkVal],
|
291
|
+
[:TkFLOAT, TkVal],
|
292
|
+
[:TkSTRING, TkVal],
|
293
|
+
[:TkXSTRING, TkVal],
|
294
|
+
[:TkREGEXP, TkVal],
|
295
|
+
[:TkSYMBOL, TkVal],
|
296
|
+
|
297
|
+
[:TkDSTRING, TkNode],
|
298
|
+
[:TkDXSTRING, TkNode],
|
299
|
+
[:TkDREGEXP, TkNode],
|
300
|
+
[:TkNTH_REF, TkNode],
|
301
|
+
[:TkBACK_REF, TkNode],
|
302
|
+
|
303
|
+
[:TkUPLUS, TkOp, "+@"],
|
304
|
+
[:TkUMINUS, TkOp, "-@"],
|
305
|
+
[:TkPOW, TkOp, "**"],
|
306
|
+
[:TkCMP, TkOp, "<=>"],
|
307
|
+
[:TkEQ, TkOp, "=="],
|
308
|
+
[:TkEQQ, TkOp, "==="],
|
309
|
+
[:TkNEQ, TkOp, "!="],
|
310
|
+
[:TkGEQ, TkOp, ">="],
|
311
|
+
[:TkLEQ, TkOp, "<="],
|
312
|
+
[:TkANDOP, TkOp, "&&"],
|
313
|
+
[:TkOROP, TkOp, "||"],
|
314
|
+
[:TkMATCH, TkOp, "=~"],
|
315
|
+
[:TkNMATCH, TkOp, "!~"],
|
316
|
+
[:TkDOT2, TkOp, ".."],
|
317
|
+
[:TkDOT3, TkOp, "..."],
|
318
|
+
[:TkAREF, TkOp, "[]"],
|
319
|
+
[:TkASET, TkOp, "[]="],
|
320
|
+
[:TkLSHFT, TkOp, "<<"],
|
321
|
+
[:TkRSHFT, TkOp, ">>"],
|
322
|
+
[:TkCOLON2, TkOp, '::'],
|
323
|
+
[:TkCOLON3, TkOp, '::'],
|
324
|
+
#[:OPASGN, TkOp], # +=, -= etc. #
|
325
|
+
[:TkASSOC, TkOp, "=>"],
|
326
|
+
[:TkQUESTION, TkOp, "?"], #?
|
327
|
+
[:TkCOLON, TkOp, ":"], #:
|
328
|
+
|
329
|
+
[:TkfLPAREN, Token, "("], # func( #
|
330
|
+
[:TkfLBRACK, Token, "["], # func[ #
|
331
|
+
[:TkfLBRACE, Token, "{"], # func{ #
|
332
|
+
[:TkSTAR, Token, "*"], # *arg
|
333
|
+
[:TkAMPER, Token, "&"], # &arg #
|
334
|
+
[:TkSYMBEG, Token, ":"], # :SYMBOL
|
335
|
+
|
336
|
+
[:TkGT, TkOp, ">"],
|
337
|
+
[:TkLT, TkOp, "<"],
|
338
|
+
[:TkPLUS, TkOp, "+"],
|
339
|
+
[:TkMINUS, TkOp, "-"],
|
340
|
+
[:TkMULT, TkOp, "*"],
|
341
|
+
[:TkDIV, TkOp, "/"],
|
342
|
+
[:TkMOD, TkOp, "%"],
|
343
|
+
[:TkBITOR, TkOp, "|"],
|
344
|
+
[:TkBITXOR, TkOp, "^"],
|
345
|
+
[:TkBITAND, TkOp, "&"],
|
346
|
+
[:TkBITNOT, TkOp, "~"],
|
347
|
+
[:TkNOTOP, TkOp, "!"],
|
348
|
+
|
349
|
+
[:TkBACKQUOTE, TkOp, "`"],
|
350
|
+
|
351
|
+
[:TkASSIGN, Token, "="],
|
352
|
+
[:TkDOT, Token, "."],
|
353
|
+
[:TkLPAREN, Token, "("], #(exp)
|
354
|
+
[:TkLBRACK, Token, "["], #[arry]
|
355
|
+
[:TkLBRACE, Token, "{"], #{hash}
|
356
|
+
[:TkRPAREN, Token, ")"],
|
357
|
+
[:TkRBRACK, Token, "]"],
|
358
|
+
[:TkRBRACE, Token, "}"],
|
359
|
+
[:TkCOMMA, Token, ","],
|
360
|
+
[:TkSEMICOLON, Token, ";"],
|
361
|
+
|
362
|
+
[:TkCOMMENT, TkVal],
|
363
|
+
[:TkRD_COMMENT],
|
364
|
+
[:TkSPACE, Token, " "],
|
365
|
+
[:TkNL, Token, "\n"],
|
366
|
+
[:TkEND_OF_SCRIPT],
|
367
|
+
|
368
|
+
[:TkBACKSLASH, TkUnknownChar, "\\"],
|
369
|
+
[:TkAT, TkUnknownChar, "@"],
|
370
|
+
[:TkDOLLAR, TkUnknownChar, "$"],
|
371
|
+
]
|
372
|
+
|
373
|
+
# {reading => token_class}
|
374
|
+
# {reading => [token_class, *opt]}
|
375
|
+
TkReading2Token = {}
|
376
|
+
TkToken2Reading = {}
|
377
|
+
TkSymbol2Token = {}
|
378
|
+
|
379
|
+
def self.def_token(token_n, super_token = Token, reading = nil, *opts)
|
380
|
+
token_n = token_n.id2name if token_n.kind_of?(Symbol)
|
381
|
+
if const_defined?(token_n)
|
382
|
+
IRB.fail AlreadyDefinedToken, token_n
|
383
|
+
end
|
384
|
+
token_c = eval("class #{token_n} < #{super_token}; end; #{token_n}")
|
385
|
+
|
386
|
+
if reading
|
387
|
+
TkToken2Reading[token_c] = reading
|
388
|
+
|
389
|
+
return if TkReading2Token[reading]
|
390
|
+
|
391
|
+
if opts.empty?
|
392
|
+
TkReading2Token[reading] = [token_c]
|
393
|
+
else
|
394
|
+
TkReading2Token[reading] = [token_c].concat(opts)
|
395
|
+
end
|
396
|
+
end
|
397
|
+
TkSymbol2Token[token_n.intern] = token_c
|
398
|
+
end
|
399
|
+
|
400
|
+
for defs in TokenDefinitions
|
401
|
+
def_token(*defs)
|
402
|
+
end
|
403
|
+
|
404
|
+
NEWLINE_TOKEN = TkNL.new nil, 0, 0, "\n"
|
405
|
+
|
406
|
+
class TkSYMBOL
|
407
|
+
|
408
|
+
def to_sym
|
409
|
+
@sym ||= text[1..-1].intern
|
410
|
+
end
|
411
|
+
|
412
|
+
end
|
413
|
+
|
414
|
+
# :startdoc:
|
415
|
+
end
|
416
|
+
|
data/lib/rdoc/single_class.rb
CHANGED
data/lib/rdoc/stats.rb
CHANGED
@@ -1,113 +1,177 @@
|
|
1
1
|
require 'rdoc'
|
2
|
-
require 'thread'
|
3
2
|
|
4
3
|
##
|
5
|
-
#
|
4
|
+
# RDoc stats collector
|
6
5
|
|
7
6
|
class RDoc::Stats
|
8
7
|
|
9
|
-
attr_reader :
|
8
|
+
attr_reader :nodoc_constants
|
9
|
+
attr_reader :nodoc_methods
|
10
|
+
|
11
|
+
attr_reader :num_constants
|
10
12
|
attr_reader :num_files
|
11
13
|
attr_reader :num_methods
|
12
|
-
|
14
|
+
|
13
15
|
attr_reader :total_files
|
14
16
|
|
15
17
|
def initialize(total_files, verbosity = 1)
|
16
|
-
@
|
17
|
-
|
18
|
-
|
19
|
-
@
|
20
|
-
@
|
21
|
-
@
|
18
|
+
@nodoc_constants = 0
|
19
|
+
@nodoc_methods = 0
|
20
|
+
|
21
|
+
@num_constants = 0
|
22
|
+
@num_files = 0
|
23
|
+
@num_methods = 0
|
24
|
+
|
22
25
|
@total_files = total_files
|
23
26
|
|
24
27
|
@start = Time.now
|
25
28
|
|
26
29
|
@display = case verbosity
|
27
|
-
when 0 then Quiet.new
|
28
|
-
when 1 then Normal.new
|
29
|
-
else Verbose.new
|
30
|
+
when 0 then Quiet.new total_files
|
31
|
+
when 1 then Normal.new total_files
|
32
|
+
else Verbose.new total_files
|
30
33
|
end
|
31
34
|
end
|
32
|
-
|
33
|
-
def begin_adding
|
34
|
-
@display.begin_adding
|
35
|
+
|
36
|
+
def begin_adding
|
37
|
+
@display.begin_adding
|
35
38
|
end
|
36
39
|
|
37
40
|
def add_alias(as)
|
38
|
-
@
|
39
|
-
|
40
|
-
|
41
|
-
end
|
41
|
+
@display.print_alias as
|
42
|
+
@num_methods += 1
|
43
|
+
@nodoc_methods += 1 if as.document_self and as.comment.empty?
|
42
44
|
end
|
43
45
|
|
44
46
|
def add_class(klass)
|
45
|
-
@
|
46
|
-
|
47
|
-
|
48
|
-
|
47
|
+
@display.print_class klass
|
48
|
+
end
|
49
|
+
|
50
|
+
def add_constant(constant)
|
51
|
+
@display.print_constant constant
|
52
|
+
@num_constants += 1
|
53
|
+
@nodoc_constants += 1 if constant.document_self and constant.comment.empty?
|
49
54
|
end
|
50
55
|
|
51
56
|
def add_file(file)
|
52
|
-
@
|
53
|
-
|
54
|
-
@num_files += 1
|
55
|
-
end
|
57
|
+
@display.print_file @num_files, file
|
58
|
+
@num_files += 1
|
56
59
|
end
|
57
60
|
|
58
61
|
def add_method(method)
|
59
|
-
@
|
60
|
-
|
61
|
-
|
62
|
-
end
|
62
|
+
@display.print_method method
|
63
|
+
@num_methods += 1
|
64
|
+
@nodoc_methods += 1 if method.document_self and method.comment.empty?
|
63
65
|
end
|
64
66
|
|
65
67
|
def add_module(mod)
|
66
|
-
@
|
67
|
-
@display.print_module mod
|
68
|
-
@num_modules += 1
|
69
|
-
end
|
68
|
+
@display.print_module mod
|
70
69
|
end
|
71
|
-
|
70
|
+
|
72
71
|
def done_adding
|
73
|
-
@
|
74
|
-
@display.done_adding
|
75
|
-
end
|
72
|
+
@display.done_adding
|
76
73
|
end
|
77
74
|
|
78
75
|
def print
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
76
|
+
classes = RDoc::TopLevel.classes
|
77
|
+
num_classes = classes.length
|
78
|
+
nodoc_classes = classes.select do |klass|
|
79
|
+
klass.document_self and klass.comment.empty?
|
80
|
+
end.length
|
81
|
+
|
82
|
+
modules = RDoc::TopLevel.modules
|
83
|
+
num_modules = modules.length
|
84
|
+
nodoc_modules = modules.select do |mod|
|
85
|
+
mod.document_self and mod.comment.empty?
|
86
|
+
end.length
|
87
|
+
|
88
|
+
items = num_classes + @num_constants + num_modules + @num_methods
|
89
|
+
doc_items = items -
|
90
|
+
nodoc_classes - @nodoc_constants - nodoc_modules - @nodoc_methods
|
91
|
+
|
92
|
+
percent_doc = doc_items.to_f / items * 100
|
93
|
+
|
94
|
+
puts "Files: %5d" % @num_files
|
95
|
+
puts "Classes: %5d (%5d undocumented)" % [num_classes, nodoc_classes]
|
96
|
+
puts "Constants: %5d (%5d undocumented)" %
|
97
|
+
[@num_constants, @nodoc_constants]
|
98
|
+
puts "Modules: %5d (%5d undocumented)" % [num_modules, nodoc_modules]
|
99
|
+
puts "Methods: %5d (%5d undocumented)" % [@num_methods, @nodoc_methods]
|
100
|
+
puts "%6.2f%% documented" % percent_doc
|
101
|
+
puts
|
102
|
+
puts "Elapsed: %0.1fs" % (Time.now - @start)
|
84
103
|
end
|
85
104
|
|
105
|
+
##
|
106
|
+
# Stats printer that prints nothing
|
107
|
+
|
86
108
|
class Quiet
|
109
|
+
|
110
|
+
def initialize total_files
|
111
|
+
@total_files = total_files
|
112
|
+
end
|
113
|
+
|
114
|
+
##
|
115
|
+
# Prints a message at the beginning of parsing
|
116
|
+
|
87
117
|
def begin_adding(*) end
|
118
|
+
|
119
|
+
##
|
120
|
+
# Prints when an alias is added
|
121
|
+
|
88
122
|
def print_alias(*) end
|
123
|
+
|
124
|
+
##
|
125
|
+
# Prints when a class is added
|
126
|
+
|
89
127
|
def print_class(*) end
|
128
|
+
|
129
|
+
##
|
130
|
+
# Prints when a constant is added
|
131
|
+
|
132
|
+
def print_constant(*) end
|
133
|
+
|
134
|
+
##
|
135
|
+
# Prints when a file is added
|
136
|
+
|
90
137
|
def print_file(*) end
|
138
|
+
|
139
|
+
##
|
140
|
+
# Prints when a method is added
|
141
|
+
|
91
142
|
def print_method(*) end
|
143
|
+
|
144
|
+
##
|
145
|
+
# Prints when a module is added
|
146
|
+
|
92
147
|
def print_module(*) end
|
148
|
+
|
149
|
+
##
|
150
|
+
# Prints when RDoc is done
|
151
|
+
|
93
152
|
def done_adding(*) end
|
153
|
+
|
94
154
|
end
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
155
|
+
|
156
|
+
##
|
157
|
+
# Stats printer that prints just the files being documented with a progress
|
158
|
+
# bar
|
159
|
+
|
160
|
+
class Normal < Quiet
|
161
|
+
|
162
|
+
def begin_adding # :nodoc:
|
163
|
+
puts "Parsing sources..."
|
103
164
|
end
|
104
|
-
|
165
|
+
|
166
|
+
##
|
167
|
+
# Prints a file with a progress bar
|
168
|
+
|
105
169
|
def print_file(files_so_far, filename)
|
106
170
|
progress_bar = sprintf("%3d%% [%2d/%2d] ",
|
107
171
|
100 * (files_so_far + 1) / @total_files,
|
108
172
|
files_so_far + 1,
|
109
173
|
@total_files)
|
110
|
-
|
174
|
+
|
111
175
|
if $stdout.tty?
|
112
176
|
# Print a progress bar, but make sure it fits on a single line. Filename
|
113
177
|
# will be truncated if necessary.
|
@@ -118,59 +182,64 @@ class RDoc::Stats
|
|
118
182
|
filename = filename[(filename.size - max_filename_size) .. -1]
|
119
183
|
filename[0..2] = "..."
|
120
184
|
end
|
121
|
-
|
185
|
+
|
122
186
|
# Pad the line with whitespaces so that leftover output from the
|
123
187
|
# previous line doesn't show up.
|
124
188
|
line = "#{progress_bar}#{filename}"
|
125
189
|
padding = terminal_width - line.size
|
126
|
-
if padding > 0
|
127
|
-
|
128
|
-
end
|
129
|
-
|
190
|
+
line << (" " * padding) if padding > 0
|
191
|
+
|
130
192
|
$stdout.print("#{line}\r")
|
131
193
|
$stdout.flush
|
132
194
|
else
|
133
195
|
puts "#{progress_bar} #{filename}"
|
134
196
|
end
|
135
197
|
end
|
136
|
-
|
137
|
-
def done_adding
|
138
|
-
puts
|
198
|
+
|
199
|
+
def done_adding # :nodoc:
|
200
|
+
puts
|
139
201
|
end
|
140
202
|
|
141
|
-
def print_alias(*) end
|
142
|
-
def print_class(*) end
|
143
|
-
def print_method(*) end
|
144
|
-
def print_module(*) end
|
145
203
|
end
|
146
204
|
|
147
|
-
|
148
|
-
|
149
|
-
|
205
|
+
##
|
206
|
+
# Stats printer that prints everything documented, including the documented
|
207
|
+
# status
|
208
|
+
|
209
|
+
class Verbose < Normal
|
210
|
+
|
211
|
+
##
|
212
|
+
# Returns a marker for RDoc::CodeObject +co+ being undocumented
|
213
|
+
|
214
|
+
def nodoc co
|
215
|
+
" (undocumented)" unless co.documented?
|
150
216
|
end
|
151
|
-
|
152
|
-
def print_alias
|
153
|
-
puts "\t\talias #{as.new_name} #{as.old_name}"
|
217
|
+
|
218
|
+
def print_alias as # :nodoc:
|
219
|
+
puts "\t\talias #{as.new_name} #{as.old_name}#{nodoc as}"
|
154
220
|
end
|
155
221
|
|
156
|
-
def print_class(klass)
|
157
|
-
puts "\tclass #{klass.full_name}"
|
222
|
+
def print_class(klass) # :nodoc:
|
223
|
+
puts "\tclass #{klass.full_name}#{nodoc klass}"
|
158
224
|
end
|
159
225
|
|
160
|
-
def
|
161
|
-
puts
|
226
|
+
def print_constant(constant) # :nodoc:
|
227
|
+
puts "\t\t#{constant.name}#{nodoc constant}"
|
162
228
|
end
|
163
229
|
|
164
|
-
def
|
165
|
-
|
230
|
+
def print_file(files_so_far, file) # :nodoc:
|
231
|
+
super
|
232
|
+
puts
|
166
233
|
end
|
167
234
|
|
168
|
-
def
|
169
|
-
puts "\
|
235
|
+
def print_method(method) # :nodoc:
|
236
|
+
puts "\t\t#{method.singleton ? '::' : '#'}#{method.name}#{nodoc method}"
|
170
237
|
end
|
171
|
-
|
172
|
-
def
|
238
|
+
|
239
|
+
def print_module(mod) # :nodoc:
|
240
|
+
puts "\tmodule #{mod.full_name}#{nodoc mod}"
|
173
241
|
end
|
242
|
+
|
174
243
|
end
|
175
244
|
|
176
245
|
end
|