redparse 0.8.3 → 0.8.4

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.
data/History.txt CHANGED
@@ -1,4 +1,63 @@
1
- === 0.8.3 / 2009-07-01
1
+ === 0.8.4 / 21dec2009
2
+ * 5 Major Enhancements:
3
+ * OpNode and related modules are now classes
4
+ * parse results are now cached -> substantial speedup on reparse
5
+ * moderate performance improvements for regular parser too
6
+ * inspect now dumps node trees in more readable tree-like output
7
+ * tests now ignore (with a warning) differences in just a :begin node
8
+
9
+ * 18 Minor Enhancements:
10
+ * single code path utility now converts bare => in calls and between [ and ]
11
+ * reworked the way ternary rescue is parsed
12
+ * new build script & gemspec
13
+ * better way to deal with default of :rubyversion parser option
14
+ * various fixes to xform_tree! rewriter utility (still doesn't work, tho)
15
+ * improvements to constructors to make creating nodes by hand more pleasant
16
+ * parser now creates nodes via Node.create
17
+ * use AssignmentRhsListStart/EndToken to delimit right hand sides
18
+ * lhs* and rhs* should be considered unary ops again
19
+ * when parens in assign lhs, treat unary* and single arg like no parens
20
+ * VarNode#ident is now kept in a slot, not an ivar
21
+ * force body of a block to always be a SequenceNode
22
+ * added RedParse::Nodes; include it to get all the redparse node classes
23
+ * have each node class remember a list of its slot names
24
+ * added aliases and accessors in various nodes to make the api nicer
25
+ * moved some utilities into the support libraries where they belong
26
+ * slight improvements to parser compiler
27
+ * added a version of depthwalk which just visits the Nodes of the tree
28
+
29
+ * 18 Bugfixes:
30
+ * parser now runs under MRI 1.9
31
+ * (more?) accurate version of Float#to_s, for 1.8
32
+ * minor tweaks to #unparse
33
+ * value of () is nil, not false
34
+ * get redparse/version.rb relative to current directory from gemspec
35
+ * when comparing trees, more insignificant differences are ignored
36
+ * Node#deep_copy makes more faithful copies now
37
+ * node marshalling should be more reliable
38
+ * tweaks to parse_tree support to improve conformance
39
+ * support automagicness of integer&regexp in flipflop (in parse_tree output)
40
+ * parse_tree's placement of :begin nodes is somewhat better emulated
41
+ * always put parse inputs into binary mode
42
+ * changed some operators (lhs, rescue3 unary* rhs*) to proper precedence
43
+ * numeric literals inserted directly in parsetrees should be autoquoted
44
+ * ensure @lhs_parens set in AssignNode when it should be
45
+ * make sure ListInNode is extended into arrays added to Nodes via writers
46
+ * permit empty symbol LiteralNode to be made
47
+ * fixed bad permissions in gem file
48
+
49
+ * 9 Changes To Tests:
50
+ * test Node trees surviving Marshal/Ron round-trip and deep_copy unscathed
51
+ * tests for many of the new 1.9 syntax constructions
52
+ * parse_tree server process now started in a more portable way
53
+ * lots of new test cases
54
+ * rp-locatetest now has docs on how to use it
55
+ * keep track of problematic files if even the slightest problem occurs
56
+ * enable/disable fuzzing with ENV var rather than comments
57
+ * make sure inputs are unchanged by parse
58
+ * better organized some of the known failing testcases
59
+
60
+ === 0.8.3 / 1jul2009
2
61
  * 7 Minor Enhancements:
3
62
  * most nodes now have startline, endline, and offset
4
63
  * Node.[] is more fun to use now (most attributes can be left off)
@@ -12,7 +71,7 @@
12
71
  * more faithful ParseTree emulation in a couple of cases
13
72
  * minor fixes in node processing for some rare conditions
14
73
 
15
- === 0.8.2 / 2009-04-21
74
+ === 0.8.2 / 21apr2009
16
75
  * 14 Minor Enhancements:
17
76
  * should be no tokens left in Node tree now
18
77
  * lots of code trying to make things faster (no luck so far)
@@ -43,14 +102,14 @@
43
102
  * (so escape translation has to be done later, when Nodes are used)
44
103
  * #to_parsetree of an empty source text should be happier now
45
104
 
46
- === 0.8.1 / 2009-04-21
105
+ === 0.8.1 / 21apr2009
47
106
  * 4 Minor Enhancements:
48
107
  * fixed embarassing permissions problems
49
108
  * version.rb and History.txt were missing from the release
50
109
  * I left off the dependancy on reg, oops!
51
110
  * hacked up tests to ignore sudden problem with extra nils
52
111
 
53
- === 0.8.0 / 2008-10-10
112
+ === 0.8.0 / 10oct2008
54
113
  * 1 Major Enhancement:
55
114
  * Birthday!
56
115
 
data/Makefile ADDED
@@ -0,0 +1,43 @@
1
+ name=RedParse
2
+ lname=redparse
3
+ gemname=redparse
4
+
5
+ #everything after this line is generic
6
+
7
+ version=$(shell ruby -r ./lib/$(lname)/version.rb -e "puts $(name)::VERSION")
8
+ filelist=$(shell git ls-files)
9
+
10
+ .PHONY: all test docs gem tar pkg email
11
+ all: test
12
+
13
+ test:
14
+ ruby -Ilib test/test_all.rb
15
+
16
+ docs:
17
+ rdoc lib/*
18
+
19
+ pkg: gem tar
20
+
21
+ gem:
22
+ gem build $(lname).gemspec
23
+
24
+ tar:
25
+ tar cf - $(filelist) | ( mkdir $(gemname)-$(version); cd $(gemname)-$(version); tar xf - )
26
+ tar czf $(gemname)-$(version).tar.gz $(gemname)-$(version)
27
+ rm -rf $(gemname)-$(version)
28
+
29
+ email: README.txt History.txt
30
+ ruby -e ' \
31
+ require "rubygems"; \
32
+ load "./$(lname).gemspec"; \
33
+ spec= Gem::Specification.list.find{|x| x.name=="$(gemname)"}; \
34
+ puts "\
35
+ Subject: [ANN] $(name) #{spec.version} Released \
36
+ \n\n$(name) version #{spec.version} has been released! \n\n\
37
+ #{Array(spec.homepage).map{|url| " * #{url}\n" }} \
38
+ \n\
39
+ #{$(name)::Description} \
40
+ \n\nChanges:\n\n \
41
+ #{$(name)::Latest_changes} \
42
+ "\
43
+ '
data/README.txt CHANGED
@@ -10,9 +10,11 @@ tool is LALR(1)-equivalent and the 'parse language' is pretty nice,
10
10
  even in it's current crude form.)
11
11
 
12
12
  My intent is to have a completely correct parser for ruby, in 100%
13
- ruby. It's not all there yet, but I'm getting pretty close. Currently,
14
- RedParse can parse slightly in excess of 99% of ruby files found in
15
- the wild. For known problems, see below.
13
+ ruby. Currently, RedParse can parse all known ruby 1.8 constructions
14
+ correctly. There might be some problems with unparsing or otherwise
15
+ working with texts in a character set other than ascii. Some of the
16
+ new ruby 1.9 constructions are supported in 1.9 mode. For more
17
+ details on known problems, see below.
16
18
 
17
19
  == REQUIREMENTS:
18
20
  * RedParse requires RubyLexer, my hand-coded lexer for ruby. It also
@@ -41,6 +43,7 @@ Please see COPYING.LGPL for details.
41
43
  * Pretty AST trees (at least, I think so). (To program for, not
42
44
  necessarily to look at.)
43
45
  * AST trees closely mirror the actual structure of source code.
46
+ * unparser is built in
44
47
  * ParseTree format output too, if you want that.
45
48
  * Did I mention that there's no YACC at all? YACC grammars are
46
49
  notoriously difficult to modify, (I've never successfully done it)
@@ -63,7 +66,6 @@ Please see COPYING.LGPL for details.
63
66
  * Pathetically, ridiculously slow (ok, compiler-compilers are hard...)
64
67
  * Error handling is very minimal right now.
65
68
  * No warnings at all.
66
- * Some expressions aren't parsed correctly. see below.
67
69
  * Unit test takes a fairly long time.
68
70
  * Lots of warnings printed during unit test.
69
71
  * Debugging parse rules is not straightforward.
@@ -71,6 +73,8 @@ Please see COPYING.LGPL for details.
71
73
  * "loosey-goosey" parser happily parses many expressions which normal
72
74
  ruby considers errors.
73
75
 
76
+
77
+
74
78
  == SYNOPSIS:
75
79
 
76
80
  #simple example of usage:
@@ -140,219 +144,150 @@ existing format in the future, but no incompatibility-creating changes.
140
144
  UnAmpNode means UnOpNode with op == "&"
141
145
 
142
146
  Node<Array #abstract ancestor of all nodes
143
- +RescueNode #a rescue clause in a def or begin statement
147
+ +-RescueNode #a rescue clause in a def or begin statement
144
148
  | (exceptions: Array[Expr*], varname: VarNode|nil, action: Expr)
145
- +WhenNode #a when clause in a case statement
149
+ +-WhenNode #a when clause in a case statement
146
150
  | (when: Expr|Array[Expr+] then: Expr|nil )
147
- +ElsifNode #an elsif clause in an if statement
151
+ +-ElsifNode #an elsif clause in an if statement
148
152
  | (elsif: Expr, then: Expr|nil)
149
- +ValueNode #abstract, a node which has a value (an expression)
150
- |+VarNode #represents variables and constants
153
+ +-ValueNode #abstract, a node which has a value (an expression)
154
+ |+-VarNode #represents variables and constants
151
155
  || (ident: String)
152
- |+ListOpNode #abstract, ancestor for nodes which are lists of
156
+ |+-ListOpNode #abstract, ancestor for nodes which are lists of
153
157
  ||| #things separated by some op
154
- ||+SequenceNode #a sequence of statements
158
+ ||+-SequenceNode #a sequence of statements
155
159
  ||| (Array[Expr*])
156
- ||+ConstantNode #a constant expression of the form A::B::C or the like
160
+ ||+-ConstantNode #a constant expression of the form A::B::C or the like
157
161
  || #first expression can be anything
158
162
  || (Array[String|Expr|nil,String+])
159
- |+RawOpNode #ancestor of all operators (but not . :: ; , ?..:)
163
+ |+-RawOpNode #ancestor of all binary operators (except . :: ; , ?..:)
160
164
  ||| (left: Expr, op: String, right: Expr)
161
- ||+OpNode #ancestor of some operators
162
- |||+RangeNode #a range literal node
163
- |||+KeywordOpNode #abstract, ancestor of keyword operators
164
- ||||+LogicalNode #and or && || expressions
165
- ||||+WhileOpNode #while as an operator
166
- ||||+UntilOpNode #until as an operator
167
- ||||+IfOpNode #if as an operator
168
- ||||+UnlessOpNode #unless as an operator
169
- ||||+RescueOpNode #rescue as an operator
170
- |||| (body: Expr, rescues: Array[RescueNode*])
171
- |||+NotEqualNode #!= expressions
172
- |||+MatchNode #=~ expressions
173
- |||+NotMatchNode #!~ expressions
174
- |+LiteralNode #literal symbols, integers
165
+ ||+-RangeNode #a range literal node
166
+ ||+-KeywordOpNode #abstract, ancestor of keyword operators
167
+ |||+-LogicalNode #and or && || expressions
168
+ |||+-WhileOpNode #while as an operator
169
+ |||+-UntilOpNode #until as an operator
170
+ |||+-IfOpNode #if as an operator
171
+ |||+-UnlessOpNode #unless as an operator
172
+ |||+-RescueOpNode #rescue as an operator
173
+ ||| (body: Expr, rescues: Array[RescueNode*])
174
+ ||+-OpNode #ancestor of some binary operators (those with methods hidden in them)
175
+ |||+-NotEqualNode #!= expressions
176
+ |||+-MatchNode #=~ expressions
177
+ |||+-NotMatchNode #!~ expressions
178
+ |+-LiteralNode #literal symbols, integers
175
179
  || (val: Numeric|Symbol|StringNode)
176
- |+StringNode #literal strings
180
+ |+-StringNode #literal strings
177
181
  ||| (Array[(String|Expr)+])
178
- ||+HereDocNode #here documents
179
- |+StringCatNode #adjacent strings are catenated ("foo" "bar" == "foobar")
182
+ ||+-HereDocNode #here documents
183
+ |+-StringCatNode #adjacent strings are catenated ("foo" "bar" == "foobar")
180
184
  || (Array[StringNode+])
181
- |+NopNode #an expression with no tokens at all in it
185
+ |+-NopNode #an expression with no tokens at all in it
182
186
  || (no attributes)
183
- |+VarLikeNode #nil,false,true,__FILE__,__LINE__,self
187
+ |+-VarLikeNode #nil,false,true,__FILE__,__LINE__,self
184
188
  || (name: String)
185
- |+UnOpNode #unary operators
189
+ |+-UnOpNode #unary operators
186
190
  || (op: String, val: Expr)
187
- ||+UnaryStarNode #unary star (splat)
188
- |||+DanglingStarNode #unary star with no argument
189
- ||||| (no attributes)
190
- ||||+DanglingCommaNode #comma with no rhs
191
- || (no attributes)
192
- |+BeginNode #begin..end block
191
+ ||+-UnaryStarNode #unary star (splat)
192
+ |||+-DanglingStarNode #unary star with no argument
193
+ ||||| (no attributes)
194
+ ||||+-DanglingCommaNode #comma with no rhs
195
+ || (no attributes)
196
+ |+-BeginNode #begin..end block
193
197
  || (body: Expr|nil, rescues: Array[RescueNode*],
194
198
  || else: Expr|nil, ensure: Expr|nil)
195
- |+ParenedNode #parenthesized expressions
199
+ |+-ParenedNode #parenthesized expressions
196
200
  || (body: Expr)
197
- |+AssignNode #assignment (including eg +=)
201
+ |+-AssignNode #assignment (including eg +=)
198
202
  || (left:AssigneeList|LValue, op:String ,right:Array[Expr*]|Expr)
199
- |+AssigneeList #abstract, comma-delimited list of assignables
203
+ |+-AssigneeList #abstract, comma-delimited list of assignables
200
204
  ||| (Array[LValue*])
201
- ||+NestedAssign #nested lhs, in parentheses
202
- ||+MultiAssign #regular top-level lhs
203
- ||+BlockParams #block formal parameter list
204
- |+CallSiteNode #abstract, method calls
205
+ ||+-NestedAssign #nested lhs, in parentheses
206
+ ||+-MultiAssign #regular top-level lhs
207
+ ||+-BlockParams #block formal parameter list
208
+ |+-CallSiteNode #abstract, method calls
205
209
  ||| (receiver: Expr|nil, name: String, params: nil|Array[Expr+,UnaryStarNode?,UnAmpNode?],
206
210
  ||| blockparams: BlockParams|nil, block: Expr|nil)
207
- ||+CallNode #normal method calls
208
- ||+KWCallNode #keywords that look (more or less) like methods (BEGIN END yield return break continue next)
209
- |+ArrayLiteralNode #[..]
210
- || (Array[Expr*])
211
- |+IfNode #if..end and unless..end
211
+ ||+-CallNode #normal method calls
212
+ ||+-KWCallNode #keywords that look (more or less) like methods (BEGIN END yield return break continue next)
213
+ |+-ArrayLiteralNode #[..]
214
+ || (Array[Expr*])
215
+ |+-IfNode #if..end and unless..end
212
216
  || (if: Expr, then: Expr|nil, elsifs: Array[ElsifNode+]|nil, else: Expr|nil)
213
- |+LoopNode #while..end and until..end
217
+ |+-LoopNode #while..end and until..end
214
218
  || (while: Expr, do: Expr:nil)
215
- |+CaseNode #case..end
219
+ |+-CaseNode #case..end
216
220
  || (case: Expr|nil, whens: Array[WhenNode*], else: Expr|nil)
217
- |+ForNode #for..end
221
+ |+-ForNode #for..end
218
222
  || (for: LValue, in: Expr, do: Expr|nil)
219
- |+HashLiteralNode #{..}
220
- || (Array[Expr*]) (size must be even)
221
- |+TernaryNode # ? .. :
223
+ |+-HashLiteralNode #{..}
224
+ || (Array[Expr*]) (size must be even)
225
+ |+-TernaryNode # ? .. :
222
226
  || (if: Expr, then: Expr, else: Expr)
223
- |+MethodNode #def..end
227
+ |+-MethodNode #def..end
224
228
  || (receiver:Expr|nil, name:String,
225
229
  || params:Array[VarNode*,AssignNode*,UnaryStarNode?,UnAmpNode?]|nil,
226
230
  || body: Expr|nil, rescues: Array[RescueNode+]|nil, else: Expr|nil, ensure: Expr|nil)
227
- |+AliasNode #alias foo bar
231
+ |+-AliasNode #alias foo bar
228
232
  || (to: String|VarNode|StringNode, from: String|VarNode|StringNode)
229
- |+UndefNode #undef foo
233
+ |+-UndefNode #undef foo
230
234
  || (Array[String|StringNode+])
231
- |+NamespaceNode #abstract
232
- ||+ModuleNode #module..end
235
+ |+-NamespaceNode #abstract
236
+ ||+-ModuleNode #module..end
233
237
  ||| (name: VarNode|ConstantNode, body: Expr|nil
234
238
  ||| rescues: Array[RescueNode+]|nil, else: Expr|nil, ensure: Expr|nil)
235
- ||+ClassNode #class..end
239
+ ||+-ClassNode #class..end
236
240
  ||| (name: VarNode|ConstantNode, parent: Expr|nil, body: Expr|nil,
237
241
  ||| rescues: Array[RescueNode+]|nil, else: Expr|nil, ensure: Expr|nil)
238
- ||+MetaClassNode #class<<x..end
242
+ ||+-MetaClassNode #class<<x..end
239
243
  || (val: Expr, body: Expr|nil,
240
244
  || rescues: Array[RescueNode+]|nil, else: Expr|nil, ensure: Expr|nil)
241
- |+BracketsGetNode #a[b]
245
+ |+-BracketsGetNode #a[b]
242
246
  | (receiver: Expr, params: Array[Expr+,UnaryStarNode?]|nil)
243
247
  |
244
248
  ErrorNode #mixed in to nodes with a syntax error
245
- +MisparsedNode #mismatched braces or begin..end or the like
246
-
247
-
248
-
249
- == Known failing expressions
250
- * The following expressions are known to parse incorrectly currently:
251
- * def foo(a = 1) end; def foo(a=b=c={}) end; def bar(a=b=c=1,d=2) end
252
- * <<-EOS<<__LINE__
253
- EOS
254
- * z = valueo_s rescue "?"
255
- * self.<=>:p8
256
- * return (@images = @old_imgs)
257
- * p ?e.<<?y
258
- * doc_status, err_args = Documeh_status{fcgi_state = 3; docespond do doc_response =fcgi_state = 1; end }
259
- * class A;def b;class <<self;@@p = false end;end;end
260
- * return @senders[1] =
261
- 2
262
-
263
- == Not exactly right, but semantically equivalent
264
- * These don't return exactly the same s-exp as MRI/ParseTree, but close enough:
265
- * for i in (begin
266
- [44,55,66,77,88] end) do p i**Math.sqrt(i) end
267
- * %W"is #{"Slim #{2?"W":"S"}"}#{xx}."
268
- * def d; return (block_given? ? begin; yield f; ensure; f.close; end : f); end
269
- * "#{publi}#{}>"
270
- * /__A#{__FILE__}tcase/n =~ i
249
+ +-MisparsedNode #mismatched braces or begin..end or the like
250
+
251
+ == Known problems with the parser:
252
+ * Encoding of the input is not stored anywhere in resulting parse tree.
253
+ * Ascii, binary, utf-8, and euc encodings are supported, but sjis is not.
254
+
255
+ == Known problems with the unparser:
256
+ * On unparse, here documents are converted into regular strings. For the most
257
+ part, these are exactly equivalent to the original. However, whatever tokens
258
+ appeared between the here document header and body will now show up on a
259
+ different line. If one of those tokens was __LINE__, it will have a
260
+ different value in the unparsed code than it had originally.
261
+ * some floating-point literals don't survive parse/unparse roundtrip intact,
262
+ due to bugs in MRI 1.8's Float#to_s/String#to_f.
263
+ * unparsing of trees whose input was in a character set other than ascii may
264
+ not work.
265
+
266
+ == Known problems with ParseTree compatibility
267
+ * Major:
268
+ * converting non-ascii encoded parsetrees to ParseTree format doesn't work
269
+ * Minor:
270
+ * :begin is not always emitted in the same places as ParseTree does:
271
+ * return begin; f; end
272
+ * string nodes don't always come out the same way as in ParseTree...
273
+ but what I emit is equivalent.
274
+ * %W"is #{"Slim #{2?"W":"S"}"}#{xx}."
275
+ * silly empty case nodes aren't always optimized to nop like in ParseTree.
271
276
 
272
277
  == Bugs in ruby
273
278
  * These expressions don't parse the same as in MRI because of bug(s) in MRI:
274
279
  * p = p m %(1)
275
280
  * p=556;p (e) /a
276
- * c do p (110).m end
281
+ * c do p (110).m end #buggy in 1.8 only, fixed in 1.9
282
+ * module Array ([Array]).first::E; end #buggy in 1.8 only, fixed in 1.9
277
283
 
278
284
  == Bugs in ParseTree
279
285
  * Unit tests see failures in these cases, but due to bugs in ParseTree:
286
+ * doc_status, err_args = Documeh_status{fcgi_state = 3; docespond do doc_response =fcgi_state = 1; end }
280
287
  * case F;when G; else;case; when j; end;end
281
288
  * def foo(a=b=c={}) end
282
289
  * $11111111111111111111111111111111111111111111111111111111111111111111
283
290
  * proc{|&b| }
284
291
  * def sum(options = {:weights => weights = Hash.new(1)}); opt; end
285
-
286
- ==Known failing files
287
- * And here's a list of files which are known to parse incorrectly:
288
-
289
-
290
- activerdf-1.6.10/lib/active_rdf/queryengine/query2jars2.rb
291
- aquarium-0.4.2/spec/aquarium/aspects/aspect_spec.rb
292
- aspectr-0-3-5/lib/aspectr.rb
293
- authorails-1.0.0/lib/initializer.rb
294
- bibliomori-0.2.3/src/filter.rb
295
- cursor-0.9/cursor/circular.rb
296
- cursor-0.9/duck.rb
297
- data_objects-0.9.2/lib/data_objects/transaction.rb
298
- docdiff-0.3.2/docdiff/charstring.rb
299
- extract_curves-0.0.1/ruby_libs/pav/string/observable.rb
300
- extract-curves-0.1.1/ruby_libs/pav/string/observable.rb
301
- gecoder-with-gecode-0.8.2/lib/gecoder/interface/constraints/set/connection.rb
302
- gettext-1.91.0/test/test_gettext.rb
303
- lazytools-0.1.0/lib/dirstructure.rb
304
- lockfile-1.4.3/lib/lockfile-1.4.3.rb
305
- lockfile-1.4.3/lib/lockfile.rb
306
- logging-0.8.0/test/test_logger.rb
307
- logmerge-1.0.0/lib/logmerge/resolv.rb
308
- main-2.8.0/lib/main/base.rb
309
- muding-0.2.0/lib/initializer.rb
310
- net-mdns-0.4/lib/net/dns/resolv.rb
311
- not_naughty-0.5.1/spec/not_naughty_spec.rb
312
- radiant-0.6.7/vendor/rails/railties/lib/initializer.rb
313
- redparse/test/data/def_spec.rb
314
- reg/regcompiler.rb
315
- rgen-0.4.2/redist/xmlscan/tests/deftestcase.rb
316
- rq-3.4.0/lib/rq/lockfile.rb
317
- ruby-ajp-0.2.1/lib/net/ajp13.rb
318
- ruby-contract-0.1.1/lib/contract/overrides.rb
319
- ruby-debug-0.10.0/cli/ruby-debug/processor.rb
320
- rubygame-2.3.0/lib/rubygame/rect.rb
321
- rubygems-update-1.2.0/lib/rubygems/test_utilities.rb
322
- rubylexer/test/data/heremonsters_dos.rb
323
- ruby-nuggets-0.2.1.246/lib/nuggets/array/to_hash.rb
324
- sequel_core-2.2.0/lib/sequel_core/core_sql.rb
325
- skktools/filters/skkdictools.rb
326
- stick-1.3.3/lib/stick/matrix.rb
327
- stomp-1.0.5/lib/stomp.rb
328
- syntax-1.0.0/lib/syntax/lang/ruby.rb
329
- tournament-1.1.0/lib/tournament/bracket.rb
330
- typo-5.0.3.98.1/config/environment.rb
331
- typo-5.0.3.98.1/vendor/syntax/lib/syntax/lang/ruby.rb
332
- /usr/lib/ruby/1.8/docdiff/charstring.rb
333
- /usr/lib/ruby/1.8/puppet/provider/nameservice.rb
334
- /usr/lib/ruby/1.8/qwik/util-css.rb
335
- /usr/lib/ruby/1.8/resolv.rb
336
- /usr/lib/ruby/1.8/rexml/doctype.rb
337
- /usr/lib/ruby/1.8/tkextlib/bwidget/buttonbox.rb
338
- /usr/lib/ruby/1.9.0/resolv.rb
339
- /usr/lib/ruby/1.9.0/rexml/doctype.rb
340
- /usr/share/doc/libtcltk-ruby1.8/examples/tkextlib/tkHTML/ss.rb
341
- /usr/share/doc/libtcltk-ruby1.9/examples/tkextlib/tkHTML/ss.rb
342
- /usr/share/doc/libxml-ruby/tests/tc_xml_parser8.rb
343
- /usr/share/glark/options.rb
344
- /usr/share/hiki/hiki/docdiff/charstring.rb
345
- /usr/share/nadoka/rice/irc.rb
346
- /usr/share/rails/actionpack/test/controller/caching_test.rb
347
- /usr/share/rails/actionpack/test/controller/fragment_store_setting_test.rb
348
- /usr/share/rails/activesupport/lib/active_support/multibyte/handlers/utf8_handler.rb
349
- /usr/share/rails/railties/builtin/rails_info/rails/info.rb
350
- /usr/share/rails/railties/lib/initializer.rb
351
- /usr/share/skktools/filters/skkdictools.rb
352
- /usr/share/tdiary/TC_tdiary-setup.rb
353
- wwwsrv-0.15.3/wwwsrv/fastcgi.rb
354
- xmlscan-0.2.3/tests/deftestcase.rb
355
- ya2yaml-0.26/lib/ya2yaml.rb
356
- ActiveRecord-JDBC-0.5/lib/jdbc_adapter/jdbc_hsqldb.rb
357
- ruby-web-1.1.1/lib/webunit/parser.rb
358
- filemanager-0.2.0/filemanager/app/controllers/fm/filemanager_controller.rb
292
+ * def foo(a = 1) end; def foo(a=b=c={}) end; def bar(a=b=c=1,d=2) end
293
+ * yield [a_i, *p]