sourcify 0.2.3 → 0.3.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.
@@ -91,6 +91,10 @@ module Sourcify
91
91
 
92
92
  ## MACHINE >> String
93
93
  string := |*
94
+
95
+ sqm = '%q' | '%w';
96
+ dqm = '%Q' | '%W' | '%x' | '%r' | '%';
97
+
94
98
  ## == Single quote strings
95
99
  sqs1 = "'" . ([^\']* | ([^\'\\]*[\\][\'][^\']*)*) . '\\\\'* . "'";
96
100
  sqs2 = '~' . ([^\~]* | ([^\~\\]*[\\][\~][^\~]*)*) . '\\\\'* . '~';
@@ -121,8 +125,7 @@ module Sourcify
121
125
  sqs27 = '(' . ([^\)]* | ([^\)\\]*[\\][\)][^\)]*)*) . '\\\\'* . ')';
122
126
  sqs28 = '\\' . ([^\\]* | ([^\)]*[\\][\\][^\\]*)*) . '\\';
123
127
 
124
- sqm = ('%q' | '%w'); (
125
- sqs1 | sqm . sqs1 | sqm . sqs2 | sqm . sqs3 | sqm . sqs4 |
128
+ ( sqs1 | sqm . sqs1 | sqm . sqs2 | sqm . sqs3 | sqm . sqs4 |
126
129
  sqm . sqs5 | sqm . sqs6 | sqm . sqs7 | sqm . sqs8 | sqm . sqs9 |
127
130
  sqm . sqs10 | sqm . sqs11 | sqm . sqs12 | sqm . sqs13 | sqm . sqs14 |
128
131
  sqm . sqs15 | sqm . sqs16 | sqm . sqs17 | sqm . sqs18 | sqm . sqs19 |
@@ -133,61 +136,234 @@ module Sourcify
133
136
  };
134
137
 
135
138
  ## == Double quote strings
136
- dqs1 = '"' . (([^\"]* | ([^\"\\]*[\\][\"][^\"]*)*) -- '#{') . '\\\\'* . ('"' | '#{');
137
- dqs2 = '`' . (([^\`]* | ([^\`\\]*[\\][\`][^\`]*)*) -- '#{') . '\\\\'* . ('`' | '#{');
138
- dqs3 = '/' . (([^\/]* | ([^\/\\]*[\\][\/][^\/]*)*) -- '#{') . '\\\\'* . ('/' | '#{');
139
- dqs4 = "'" . (([^\']* | ([^\'\\]*[\\][\'][^\']*)*) -- '#{') . '\\\\'* . ("'" | '#{');
140
- dqs5 = '~' . (([^\~]* | ([^\~\\]*[\\][\~][^\~]*)*) -- '#{') . '\\\\'* . ('~' | '#{');
141
- dqs6 = '!' . (([^\!]* | ([^\!\\]*[\\][\!][^\!]*)*) -- '#{') . '\\\\'* . ('!' | '#{');
142
- dqs7 = '@' . (([^\@]* | ([^\@\\]*[\\][\@][^\@]*)*) -- '#{') . '\\\\'* . ('@' | '#{');
143
- dqs8 = '#' . (([^\#]* | ([^\#\\]*[\\][\#][^\#]*)*) -- '#{') . '\\\\'* . ('#' | '#{');
144
- dqs9 = '$' . (([^\$]* | ([^\$\\]*[\\][\$][^\$]*)*) -- '#{') . '\\\\'* . ('$' | '#{');
145
- dqs10 = '%' . (([^\%]* | ([^\%\\]*[\\][\%][^\%]*)*) -- '#{') . '\\\\'* . ('%' | '#{');
146
- dqs11 = '^' . (([^\^]* | ([^\^\\]*[\\][\^][^\^]*)*) -- '#{') . '\\\\'* . ('^' | '#{');
147
- dqs12 = '&' . (([^\&]* | ([^\&\\]*[\\][\&][^\&]*)*) -- '#{') . '\\\\'* . ('&' | '#{');
148
- dqs13 = '*' . (([^\*]* | ([^\*\\]*[\\][\*][^\*]*)*) -- '#{') . '\\\\'* . ('*' | '#{');
149
- dqs14 = '-' . (([^\-]* | ([^\-\\]*[\\][\-][^\-]*)*) -- '#{') . '\\\\'* . ('-' | '#{');
150
- dqs15 = '_' . (([^\_]* | ([^\_\\]*[\\][\_][^\_]*)*) -- '#{') . '\\\\'* . ('_' | '#{');
151
- dqs16 = '+' . (([^\+]* | ([^\+\\]*[\\][\+][^\+]*)*) -- '#{') . '\\\\'* . ('+' | '#{');
152
- dqs17 = '=' . (([^\=]* | ([^\=\\]*[\\][\=][^\=]*)*) -- '#{') . '\\\\'* . ('=' | '#{');
153
- dqs18 = '<' . (([^\>]* | ([^\>\\]*[\\][\>][^\>]*)*) -- '#{') . '\\\\'* . ('>' | '#{');
154
- dqs19 = '|' . (([^\|]* | ([^\|\\]*[\\][\|][^\|]*)*) -- '#{') . '\\\\'* . ('|' | '#{');
155
- dqs20 = ':' . (([^\:]* | ([^\:\\]*[\\][\:][^\:]*)*) -- '#{') . '\\\\'* . (':' | '#{');
156
- dqs21 = ';' . (([^\;]* | ([^\;\\]*[\\][\;][^\;]*)*) -- '#{') . '\\\\'* . (';' | '#{');
157
- dqs22 = ',' . (([^\,]* | ([^\,\\]*[\\][\,][^\,]*)*) -- '#{') . '\\\\'* . (',' | '#{');
158
- dqs23 = '.' . (([^\.]* | ([^\.\\]*[\\][\.][^\.]*)*) -- '#{') . '\\\\'* . ('.' | '#{');
159
- dqs24 = '?' . (([^\?]* | ([^\?\\]*[\\][\?][^\?]*)*) -- '#{') . '\\\\'* . ('?' | '#{');
160
- dqs25 = '{' . (([^\}]* | ([^\}\\]*[\\][\}][^\}]*)*) -- '#{') . '\\\\'* . ('}' | '#{');
161
- dqs26 = '[' . (([^\]]* | ([^\]\\]*[\\][\]][^\]]*)*) -- '#{') . '\\\\'* . (']' | '#{');
162
- dqs27 = '(' . (([^\)]* | ([^\)\\]*[\\][\)][^\)]*)*) -- '#{') . '\\\\'* . (')' | '#{');
163
- dqs28 = '\\' . (([^\\]* | ([^\\]*[\\][\\][^\\]*)*) -- '#{') . ('\\' | '#{');
164
-
165
- dqm = ('%Q' | '%W' | '%x' | '%r' | '%'); (
166
- dqs1 | dqs2 | dqs3 | dqm . dqs1 | dqm . dqs2 |
167
- dqm . dqs3 | dqm . dqs4 | dqm . dqs5 | dqm . dqs6 | dqm . dqs7 |
168
- dqm . dqs8 | dqm . dqs9 | dqm . dqs10 | dqm . dqs11 | dqm . dqs12 |
169
- dqm . dqs13 | dqm . dqs14 | dqm . dqs15 | dqm . dqs16 | dqm . dqs17 |
170
- dqm . dqs18 | dqm . dqs19 | dqm . dqs20 | dqm . dqs21 | dqm . dqs22 |
171
- dqm . dqs23 | dqm . dqs24 | dqm . dqs25 | dqm . dqs26 | dqm . dqs27 |
172
- dqm . dqs28
173
- ) => {
174
- if push_dstring(ts, te)
175
- fgoto double_quote_str;
176
- end
177
- };
139
+ (dqm . '"') | '"' => { push_dstring(ts, te); fgoto dstring1; };
140
+ (dqm . "'") | "'" => { push_dstring(ts, te); fgoto dstring2; };
141
+ (dqm . '/') | '/' => { push_dstring(ts, te); fgoto dstring3; };
142
+ (dqm . '`') | '`' => { push_dstring(ts, te); fgoto dstring4; };
143
+ dqm . '~' => { push_dstring(ts, te); fgoto dstring5; };
144
+ dqm . '!' => { push_dstring(ts, te); fgoto dstring6; };
145
+ dqm . '@' => { push_dstring(ts, te); fgoto dstring7; };
146
+ dqm . '#' => { push_dstring(ts, te); fgoto dstring8; };
147
+ dqm . '$' => { push_dstring(ts, te); fgoto dstring9; };
148
+ dqm . '%' => { push_dstring(ts, te); fgoto dstring10; };
149
+ dqm . '^' => { push_dstring(ts, te); fgoto dstring11; };
150
+ dqm . '&' => { push_dstring(ts, te); fgoto dstring12; };
151
+ dqm . '*' => { push_dstring(ts, te); fgoto dstring13; };
152
+ dqm . '-' => { push_dstring(ts, te); fgoto dstring14; };
153
+ dqm . '_' => { push_dstring(ts, te); fgoto dstring15; };
154
+ dqm . '+' => { push_dstring(ts, te); fgoto dstring16; };
155
+ dqm . '=' => { push_dstring(ts, te); fgoto dstring17; };
156
+ dqm . '<' => { push_dstring(ts, te); fgoto dstring18; };
157
+ dqm . '|' => { push_dstring(ts, te); fgoto dstring19; };
158
+ dqm . ':' => { push_dstring(ts, te); fgoto dstring20; };
159
+ dqm . ';' => { push_dstring(ts, te); fgoto dstring21; };
160
+ dqm . ',' => { push_dstring(ts, te); fgoto dstring22; };
161
+ dqm . '.' => { push_dstring(ts, te); fgoto dstring23; };
162
+ dqm . '?' => { push_dstring(ts, te); fgoto dstring24; };
163
+ dqm . '{' => { push_dstring(ts, te); fgoto dstring25; };
164
+ dqm . '[' => { push_dstring(ts, te); fgoto dstring26; };
165
+ dqm . '(' => { push_dstring(ts, te); fgoto dstring27; };
166
+ dqm . '\\' => { push_dstring(ts, te); fgoto dstring28; };
178
167
 
179
168
  ## == Anything accidentally caught
180
169
  any => {
181
170
  push(:any, ts, te)
182
171
  fgoto main;
183
172
  };
184
-
185
173
  *|;
186
174
 
187
- ## MACHINE >> Double quote string
188
- double_quote_str := |*
189
- delimiter = [\~\`\!\@\#\$\%\^\&\*\)\-\_\+\=\}\]\:\;\'\"\>\,\.\?\/\|\\];
190
- (^delimiter* . delimiter) -- ('\\' . delimiter) => {
175
+ ## MACHINES >> Double quote strings
176
+ dstring1 := |*
177
+ [^\"]*[\"] => {
178
+ unless push_dstring(ts, te)
179
+ fgoto main;
180
+ end
181
+ };
182
+ *|;
183
+ dstring2 := |*
184
+ [^\']*[\'] => {
185
+ unless push_dstring(ts, te)
186
+ fgoto main;
187
+ end
188
+ };
189
+ *|;
190
+ dstring3 := |*
191
+ [^\/]*[\/] => {
192
+ unless push_dstring(ts, te)
193
+ fgoto main;
194
+ end
195
+ };
196
+ *|;
197
+ dstring4 := |*
198
+ [^\`]*[\`] => {
199
+ unless push_dstring(ts, te)
200
+ fgoto main;
201
+ end
202
+ };
203
+ *|;
204
+ dstring5 := |*
205
+ [^\~]*[\~] => {
206
+ unless push_dstring(ts, te)
207
+ fgoto main;
208
+ end
209
+ };
210
+ *|;
211
+ dstring6 := |*
212
+ [^\!]*[\!] => {
213
+ unless push_dstring(ts, te)
214
+ fgoto main;
215
+ end
216
+ };
217
+ *|;
218
+ dstring7 := |*
219
+ [^\@]*[\@] => {
220
+ unless push_dstring(ts, te)
221
+ fgoto main;
222
+ end
223
+ };
224
+ *|;
225
+ dstring8 := |*
226
+ [^\#]*[\#] => {
227
+ unless push_dstring(ts, te)
228
+ fgoto main;
229
+ end
230
+ };
231
+ *|;
232
+ dstring9 := |*
233
+ [^\$]*[\$] => {
234
+ unless push_dstring(ts, te)
235
+ fgoto main;
236
+ end
237
+ };
238
+ *|;
239
+ dstring10 := |*
240
+ [^\%]*[\%] => {
241
+ unless push_dstring(ts, te)
242
+ fgoto main;
243
+ end
244
+ };
245
+ *|;
246
+ dstring11 := |*
247
+ [^\^]*[\^] => {
248
+ unless push_dstring(ts, te)
249
+ fgoto main;
250
+ end
251
+ };
252
+ *|;
253
+ dstring12 := |*
254
+ [^\&]*[\&] => {
255
+ unless push_dstring(ts, te)
256
+ fgoto main;
257
+ end
258
+ };
259
+ *|;
260
+ dstring13 := |*
261
+ [^\*]*[\*] => {
262
+ unless push_dstring(ts, te)
263
+ fgoto main;
264
+ end
265
+ };
266
+ *|;
267
+ dstring14 := |*
268
+ [^\-]*[\-] => {
269
+ unless push_dstring(ts, te)
270
+ fgoto main;
271
+ end
272
+ };
273
+ *|;
274
+ dstring15 := |*
275
+ [^\_]*[\_] => {
276
+ unless push_dstring(ts, te)
277
+ fgoto main;
278
+ end
279
+ };
280
+ *|;
281
+ dstring16 := |*
282
+ [^\+]*[\+] => {
283
+ unless push_dstring(ts, te)
284
+ fgoto main;
285
+ end
286
+ };
287
+ *|;
288
+ dstring17 := |*
289
+ [^\=]*[\=] => {
290
+ unless push_dstring(ts, te)
291
+ fgoto main;
292
+ end
293
+ };
294
+ *|;
295
+ dstring18 := |*
296
+ [^\>]*[\>] => {
297
+ unless push_dstring(ts, te)
298
+ fgoto main;
299
+ end
300
+ };
301
+ *|;
302
+ dstring19 := |*
303
+ [^\|]*[\|] => {
304
+ unless push_dstring(ts, te)
305
+ fgoto main;
306
+ end
307
+ };
308
+ *|;
309
+ dstring20 := |*
310
+ [^\:]*[\:] => {
311
+ unless push_dstring(ts, te)
312
+ fgoto main;
313
+ end
314
+ };
315
+ *|;
316
+ dstring21 := |*
317
+ [^\;]*[\;] => {
318
+ unless push_dstring(ts, te)
319
+ fgoto main;
320
+ end
321
+ };
322
+ *|;
323
+ dstring22 := |*
324
+ [^\,]*[\,] => {
325
+ unless push_dstring(ts, te)
326
+ fgoto main;
327
+ end
328
+ };
329
+ *|;
330
+ dstring23 := |*
331
+ [^\.]*[\.] => {
332
+ unless push_dstring(ts, te)
333
+ fgoto main;
334
+ end
335
+ };
336
+ *|;
337
+ dstring24 := |*
338
+ [^\?]*[\?] => {
339
+ unless push_dstring(ts, te)
340
+ fgoto main;
341
+ end
342
+ };
343
+ *|;
344
+ dstring25 := |*
345
+ [^\}]*[\}] => {
346
+ unless push_dstring(ts, te)
347
+ fgoto main;
348
+ end
349
+ };
350
+ *|;
351
+ dstring26 := |*
352
+ [^\]]*[\]] => {
353
+ unless push_dstring(ts, te)
354
+ fgoto main;
355
+ end
356
+ };
357
+ *|;
358
+ dstring27 := |*
359
+ [^\)]*[\)] => {
360
+ unless push_dstring(ts, te)
361
+ fgoto main;
362
+ end
363
+ };
364
+ *|;
365
+ dstring28 := |*
366
+ [^\\]*[\\] => {
191
367
  unless push_dstring(ts, te)
192
368
  fgoto main;
193
369
  end
@@ -5,13 +5,14 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{sourcify}
8
- s.version = "0.2.3"
8
+ s.version = "0.3.0"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["NgTzeYang"]
12
- s.date = %q{2010-09-15}
12
+ s.date = %q{2010-09-24}
13
13
  s.description = %q{}
14
14
  s.email = %q{ngty77@gmail.com}
15
+ s.extensions = ["ext/sourcify/extconf.rb"]
15
16
  s.extra_rdoc_files = [
16
17
  "LICENSE",
17
18
  "README.rdoc"
@@ -41,6 +42,7 @@ Gem::Specification.new do |s|
41
42
  "spec/proc/others_spec.rb",
42
43
  "spec/proc/readme",
43
44
  "spec/proc/to_sexp_variables_spec.rb",
45
+ "spec/proc/to_sexp_within_irb_spec.rb",
44
46
  "spec/proc/to_source_from_braced_block_w_nested_braced_block_spec.rb",
45
47
  "spec/proc/to_source_from_braced_block_w_nested_hash_spec.rb",
46
48
  "spec/proc/to_source_from_braced_block_wo_nesting_complication_spec.rb",
@@ -63,6 +65,7 @@ Gem::Specification.new do |s|
63
65
  "spec/proc/to_source_magic_file_var_spec.rb",
64
66
  "spec/proc/to_source_magic_line_var_spec.rb",
65
67
  "spec/proc/to_source_variables_spec.rb",
68
+ "spec/proc/to_source_within_irb_spec.rb",
66
69
  "spec/proc_scanner/block_comment_spec.rb",
67
70
  "spec/proc_scanner/double_colons_spec.rb",
68
71
  "spec/proc_scanner/double_quote_str_w_interpolation_spec.rb",
@@ -78,6 +81,7 @@ Gem::Specification.new do |s|
78
81
  s.homepage = %q{http://github.com/ngty/sourcify}
79
82
  s.rdoc_options = ["--charset=UTF-8"]
80
83
  s.require_paths = ["lib"]
84
+ s.required_ruby_version = Gem::Requirement.new(">= 1.8.6")
81
85
  s.rubygems_version = %q{1.3.7}
82
86
  s.summary = %q{Workarounds before ruby-core officially supports Proc#to_source (& friends)}
83
87
  s.test_files = [
@@ -100,10 +104,12 @@ Gem::Specification.new do |s|
100
104
  "spec/proc/to_source_from_multi_do_end_blocks_w_single_match_spec.rb",
101
105
  "spec/proc/to_source_from_multi_blocks_w_many_matches_spec.rb",
102
106
  "spec/proc/to_source_from_multi_blocks_w_single_match_spec.rb",
107
+ "spec/proc/to_sexp_within_irb_spec.rb",
103
108
  "spec/proc/to_source_from_do_end_block_w_nested_module_spec.rb",
104
109
  "spec/proc/to_source_from_do_end_block_w_nested_do_end_block_spec.rb",
105
110
  "spec/proc/to_source_from_do_end_block_w_nested_method_spec.rb",
106
111
  "spec/proc/to_source_from_do_end_block_w_nested_class_spec.rb",
112
+ "spec/proc/to_source_within_irb_spec.rb",
107
113
  "spec/proc/to_source_from_do_end_block_w_nested_case_spec.rb",
108
114
  "spec/proc/to_source_magic_line_var_spec.rb",
109
115
  "spec/proc/to_source_from_do_end_block_w_nested_literal_keyword_spec.rb",
@@ -128,13 +134,16 @@ Gem::Specification.new do |s|
128
134
  if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
129
135
  s.add_runtime_dependency(%q<ruby2ruby>, [">= 1.2.5"])
130
136
  s.add_development_dependency(%q<bacon>, [">= 0"])
137
+ s.add_development_dependency(%q<otaku>, [">= 0.4.0"])
131
138
  else
132
139
  s.add_dependency(%q<ruby2ruby>, [">= 1.2.5"])
133
140
  s.add_dependency(%q<bacon>, [">= 0"])
141
+ s.add_dependency(%q<otaku>, [">= 0.4.0"])
134
142
  end
135
143
  else
136
144
  s.add_dependency(%q<ruby2ruby>, [">= 1.2.5"])
137
145
  s.add_dependency(%q<bacon>, [">= 0"])
146
+ s.add_dependency(%q<otaku>, [">= 0.4.0"])
138
147
  end
139
148
  end
140
149
 
@@ -0,0 +1,146 @@
1
+ require File.join(File.dirname(__FILE__), '..', 'spec_helper')
2
+
3
+ describe "Proc#to_sexp within IRB" do
4
+
5
+ class << self
6
+
7
+ def irb_eval(string)
8
+ irb_exec(string)[-1]
9
+ end
10
+
11
+ def equal_to(expected)
12
+ lambda {|found| found == expected }
13
+ end
14
+
15
+ end
16
+
17
+ should 'handle non var' do
18
+ expected = s(:iter, s(:call, nil, :proc, s(:arglist)), nil, s(:call, nil, :x, s(:arglist)))
19
+ irb_eval('lambda { x }.to_sexp').should.be equal_to(expected)
20
+ end
21
+
22
+ should 'handle local var' do
23
+ expected = s(:iter, s(:call, nil, :proc, s(:arglist)), nil, s(:lvar, :x))
24
+ irb_eval(%Q(
25
+ x = 'lx'
26
+ lambda { x }.to_sexp
27
+ )).should.be equal_to(expected)
28
+ end
29
+
30
+ should 'handle class_eval scoped local var' do
31
+ expected =
32
+ s(:iter,
33
+ s(:call, nil, :proc, s(:arglist)),
34
+ nil,
35
+ s(:iter,
36
+ s(:call, s(:const, :Object), :class_eval, s(:arglist)),
37
+ s(:lasgn, :x),
38
+ s(:lasgn, :y, s(:lvar, :x))))
39
+ irb_eval(%Q(
40
+ x = 1
41
+ lambda { Object.class_eval {|x| y = x } }.to_sexp
42
+ )).should.be equal_to(expected)
43
+ end
44
+
45
+ should 'handle instance_eval scoped local var' do
46
+ expected =
47
+ s(:iter,
48
+ s(:call, nil, :proc, s(:arglist)),
49
+ nil,
50
+ s(:iter,
51
+ s(:call, s(:str, "aa"), :instance_eval, s(:arglist)),
52
+ s(:lasgn, :x),
53
+ s(:lasgn, :y, s(:lvar, :x))))
54
+ irb_eval(%Q(
55
+ x = 1
56
+ lambda { 'aa'.instance_eval {|x| y = x } }.to_sexp
57
+ )).should.be equal_to(expected)
58
+ end
59
+
60
+ should 'handle define_method scoped local var' do
61
+ expected =
62
+ s(:iter,
63
+ s(:call, nil, :proc, s(:arglist)),
64
+ nil,
65
+ s(:iter,
66
+ s(:call,
67
+ s(:const, :Object),
68
+ :send,
69
+ s(:arglist, s(:lit, :define_method), s(:lit, :aa))),
70
+ s(:lasgn, :x),
71
+ s(:lasgn, :y, s(:lvar, :x))))
72
+ irb_eval(%Q(
73
+ x = 1
74
+ lambda { Object.send(:define_method, :aa) {|x| y = x } }.to_sexp
75
+ )).should.be equal_to(expected)
76
+ end
77
+
78
+ should 'not handle class scoped local var (simple)' do
79
+ expected =
80
+ s(:iter,
81
+ s(:call, nil, :proc, s(:arglist)),
82
+ nil,
83
+ s(:class, :AA, nil, s(:scope, s(:lasgn, :y, s(:call, nil, :x, s(:arglist))))))
84
+ irb_eval(%Q(
85
+ x = 1
86
+ lambda { class AA ; y = x ; end }.to_sexp
87
+ )).should.be equal_to(expected)
88
+ end
89
+
90
+ should 'not handle class scoped local var (w inheritance)' do
91
+ expected =
92
+ s(:iter,
93
+ s(:call, nil, :proc, s(:arglist)),
94
+ nil,
95
+ s(:class,
96
+ :AA,
97
+ s(:const, :Object),
98
+ s(:scope, s(:lasgn, :y, s(:call, nil, :x, s(:arglist))))))
99
+ irb_eval(%Q(
100
+ x = 1
101
+ lambda { class AA < Object; y = x ; end }.to_sexp
102
+ )).should.be equal_to(expected)
103
+ end
104
+
105
+ should 'not handle class scoped local var (w singleton)' do
106
+ expected =
107
+ s(:iter,
108
+ s(:call, nil, :proc, s(:arglist)),
109
+ nil,
110
+ s(:sclass,
111
+ s(:str, "AA"),
112
+ s(:scope, s(:lasgn, :y, s(:call, nil, :x, s(:arglist))))))
113
+ irb_eval(%Q(
114
+ x = 1
115
+ lambda { class << 'AA'; y = x ; end }.to_sexp
116
+ )).should.be equal_to(expected)
117
+ end
118
+
119
+ should 'not handle module scoped local var' do
120
+ expected =
121
+ s(:iter,
122
+ s(:call, nil, :proc, s(:arglist)),
123
+ nil,
124
+ s(:module, :AA, s(:scope, s(:lasgn, :y, s(:call, nil, :x, s(:arglist))))))
125
+ irb_eval(%Q(
126
+ x = 1
127
+ lambda { module AA ; y = x ; end }.to_sexp
128
+ )).should.be equal_to(expected)
129
+ end
130
+
131
+ should 'not handle method scoped local var' do
132
+ expected =
133
+ s(:iter,
134
+ s(:call, nil, :proc, s(:arglist)),
135
+ nil,
136
+ s(:defn,
137
+ :aa,
138
+ s(:args),
139
+ s(:scope, s(:block, s(:lasgn, :y, s(:call, nil, :x, s(:arglist)))))))
140
+ irb_eval(%Q(
141
+ x = 1
142
+ lambda { def aa ; y = x ; end }.to_sexp
143
+ )).should.be equal_to(expected)
144
+ end
145
+
146
+ end