sourcify 0.2.0 → 0.2.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -89,98 +89,9 @@ module Sourcify
89
89
  };
90
90
  *|;
91
91
 
92
- ## MACHINE >> Double quote string
93
- double_quote_str := |*
94
- delimiter = [\~\`\!\@\#\$\%\^\&\*\)\-\_\+\=\}\]\:\;\'\"\>\,\.\?\/\|\\];
95
- (^delimiter* . delimiter) -- ('\\' . delimiter) => {
96
- unless push_dstring(ts, te)
97
- fgoto main;
98
- end
99
- };
100
- *|;
101
-
102
- ## MACHINE >> Main
103
- main := |*
104
-
105
- ## == Start/end of do..end block
106
-
107
- kw_do => {
108
- push(:kw_do, ts, te)
109
- increment_counter(:do_end)
110
- fgoto new_statement;
111
- };
112
-
113
- kw_end => {
114
- push(:kw_end, ts, te)
115
- decrement_counter(:do_end)
116
- };
117
-
118
- ## == Start/end of {...} block
119
-
120
- lbrace => {
121
- push(:lbrace, ts, te)
122
- increment_counter(:brace)
123
- };
124
-
125
- rbrace => {
126
- push(:rbrace, ts, te)
127
- decrement_counter(:brace)
128
- };
129
-
130
- assoc => {
131
- push(:assoc, ts, te)
132
- fix_counter_false_start(:brace)
133
- };
134
-
135
- label => {
136
- push_label(ts, te)
137
- fix_counter_false_start(:brace)
138
- };
139
-
140
- ## == New statement
141
-
142
- newline => {
143
- push(:newline, ts, te)
144
- increment_lineno
145
- fgoto new_statement;
146
- };
147
-
148
- smcolon | lparen | assgn | kw_then | comma => {
149
- push(:newline_alias, ts, te)
150
- fgoto new_statement;
151
- };
152
-
153
- ## == Comment
154
-
155
- '#' => {
156
- fgoto per_line_comment;
157
- };
158
-
159
- newline . '=begin' . ospaces . (ospaces . ^newline+)* . newline => {
160
- push_comment(ts, te)
161
- increment_lineno
162
- fgoto block_comment;
163
- };
164
-
165
- ## == Misc
166
-
167
- var => { push(:var, ts, te) };
168
- const => { push(:const, ts, te) };
169
- symbol => { push(:symbol, ts, te) };
170
- mspaces => { push(:space, ts, te) };
171
- any => { push(:any, ts, te) };
172
- '&:' . meth => { push(:to_proc, ts, te) };
173
-
174
- ## == Heredoc
175
-
176
- ('<<' | '<<-') . ["']? . (const | var) . ["']? . newline => {
177
- push_heredoc(ts, te)
178
- increment_lineno
179
- fgoto heredoc;
180
- };
181
-
92
+ ## MACHINE >> String
93
+ string := |*
182
94
  ## == Single quote strings
183
-
184
95
  sqs1 = "'" . ([^\']* | ([^\'\\]*[\\][\'][^\']*)*) . '\\\\'* . "'";
185
96
  sqs2 = '~' . ([^\~]* | ([^\~\\]*[\\][\~][^\~]*)*) . '\\\\'* . '~';
186
97
  sqs3 = '`' . ([^\`]* | ([^\`\\]*[\\][\`][^\`]*)*) . '\\\\'* . '`';
@@ -222,7 +133,6 @@ module Sourcify
222
133
  };
223
134
 
224
135
  ## == Double quote strings
225
-
226
136
  dqs1 = '"' . (([^\"]* | ([^\"\\]*[\\][\"][^\"]*)*) -- '#{') . '\\\\'* . ('"' | '#{');
227
137
  dqs2 = '`' . (([^\`]* | ([^\`\\]*[\\][\`][^\`]*)*) -- '#{') . '\\\\'* . ('`' | '#{');
228
138
  dqs3 = '/' . (([^\/]* | ([^\/\\]*[\\][\/][^\/]*)*) -- '#{') . '\\\\'* . ('/' | '#{');
@@ -266,6 +176,107 @@ module Sourcify
266
176
  end
267
177
  };
268
178
 
179
+ ## == Anything accidentally caught
180
+ any => {
181
+ push(:any, ts, te)
182
+ fgoto main;
183
+ };
184
+
185
+ *|;
186
+
187
+ ## MACHINE >> Double quote string
188
+ double_quote_str := |*
189
+ delimiter = [\~\`\!\@\#\$\%\^\&\*\)\-\_\+\=\}\]\:\;\'\"\>\,\.\?\/\|\\];
190
+ (^delimiter* . delimiter) -- ('\\' . delimiter) => {
191
+ unless push_dstring(ts, te)
192
+ fgoto main;
193
+ end
194
+ };
195
+ *|;
196
+
197
+ ## MACHINE >> Main
198
+ main := |*
199
+
200
+ ## == Start/end of do..end block
201
+
202
+ kw_do => {
203
+ push(:kw_do, ts, te)
204
+ increment_counter(:do_end)
205
+ fgoto new_statement;
206
+ };
207
+
208
+ kw_end => {
209
+ push(:kw_end, ts, te)
210
+ decrement_counter(:do_end)
211
+ };
212
+
213
+ ## == Start/end of {...} block
214
+
215
+ lbrace => {
216
+ push(:lbrace, ts, te)
217
+ increment_counter(:brace)
218
+ };
219
+
220
+ rbrace => {
221
+ push(:rbrace, ts, te)
222
+ decrement_counter(:brace)
223
+ };
224
+
225
+ assoc => {
226
+ push(:assoc, ts, te)
227
+ fix_counter_false_start(:brace)
228
+ };
229
+
230
+ label => {
231
+ push_label(ts, te)
232
+ fix_counter_false_start(:brace)
233
+ };
234
+
235
+ ## == New statement
236
+
237
+ newline => {
238
+ push(:newline, ts, te)
239
+ increment_lineno
240
+ fgoto new_statement;
241
+ };
242
+
243
+ smcolon | lparen | assgn | kw_then | comma => {
244
+ push(:newline_alias, ts, te)
245
+ fgoto new_statement;
246
+ };
247
+
248
+ ## == Comment
249
+
250
+ '#' => {
251
+ fgoto per_line_comment;
252
+ };
253
+
254
+ newline . '=begin' . ospaces . (ospaces . ^newline+)* . newline => {
255
+ push_comment(ts, te)
256
+ increment_lineno
257
+ fgoto block_comment;
258
+ };
259
+
260
+ ## == Strings
261
+
262
+ ('<<' | '<<-') . ["']? . (const | var) . ["']? . newline => {
263
+ push_heredoc(ts, te)
264
+ increment_lineno
265
+ fgoto heredoc;
266
+ };
267
+
268
+ ('"' | "'" | '`' | '/' | '%') => {
269
+ fhold; fgoto string;
270
+ };
271
+
272
+ ## == Misc
273
+
274
+ var => { push(:var, ts, te) };
275
+ const => { push(:const, ts, te) };
276
+ symbol => { push(:symbol, ts, te) };
277
+ mspaces => { push(:space, ts, te) };
278
+ any => { push(:any, ts, te) };
279
+
269
280
  *|;
270
281
 
271
282
  }%%
@@ -25,7 +25,6 @@ module Sourcify
25
25
  end
26
26
 
27
27
  def push(key, ts, te)
28
- @results << :symbol_to_proc if key == :to_proc && @lineno == 1
29
28
  @tokens << [key, data_frag(ts .. te.pred)]
30
29
  end
31
30
 
data/sourcify.gemspec CHANGED
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{sourcify}
8
- s.version = "0.2.0"
8
+ s.version = "0.2.1"
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-11}
12
+ s.date = %q{2010-09-14}
13
13
  s.description = %q{}
14
14
  s.email = %q{ngty77@gmail.com}
15
15
  s.extra_rdoc_files = [
@@ -73,7 +73,6 @@ Gem::Specification.new do |s|
73
73
  "spec/proc_scanner/per_line_comment_spec.rb",
74
74
  "spec/proc_scanner/single_quote_str_spec.rb",
75
75
  "spec/proc_scanner/spec_helper.rb",
76
- "spec/proc_scanner/to_proc_spec.rb",
77
76
  "spec/spec_helper.rb"
78
77
  ]
79
78
  s.homepage = %q{http://github.com/ngty/sourcify}
@@ -84,7 +83,6 @@ Gem::Specification.new do |s|
84
83
  s.test_files = [
85
84
  "spec/proc_scanner/kw_do_alias1_spec.rb",
86
85
  "spec/proc_scanner/single_quote_str_spec.rb",
87
- "spec/proc_scanner/to_proc_spec.rb",
88
86
  "spec/proc_scanner/kw_do_alias2_spec.rb",
89
87
  "spec/proc_scanner/double_colons_spec.rb",
90
88
  "spec/proc_scanner/block_comment_spec.rb",
@@ -26,7 +26,7 @@ def dump_object_space_procs(debug = false)
26
26
  '== NOTE: dump files can be found at %s' % dump_dir
27
27
 
28
28
  # Core processing
29
- ObjectSpace.each_object(Proc).to_a.
29
+ ObjectSpace.each_object(Proc).to_a.select{|o| o.source_location }.
30
30
  group_by{|o| o.source_location[0] }.each do |ofile, objs|
31
31
  nfile = File.join(dump_dir, ofile.gsub('/','~'))
32
32
  File.open(nfile,'w') do |f|
@@ -17,153 +17,61 @@ describe "Created on the fly proc" do
17
17
  }.should.raise(Sourcify::CannotHandleCreatedOnTheFlyProcError)
18
18
  end
19
19
 
20
- should "not raise even with prepending :to_proc on the same line" do
20
+ should "not raise even with prepending #to_proc on the same line" do
21
21
  x, y = klass.new.method(:test).to_proc, lambda { 1+2 }
22
22
  y.to_source.should.not.be.nil
23
23
  end
24
24
 
25
- should "not raise even with appending :to_proc on the same line" do
25
+ should "not raise even with appending #to_proc on the same line" do
26
26
  x, y = lambda { 1+2 }, klass.new.method(:test).to_proc
27
27
  x.to_source.should.not.be.nil
28
28
  end
29
29
 
30
- should "not raise even with nested :to_proc on the same line" do
30
+ should "not raise even with nested #to_proc on the same line" do
31
31
  x = lambda { klass.new.method(:test).to_proc }
32
32
  x.to_source.should.not.be.nil
33
33
  end
34
34
 
35
- end
36
-
37
- if RUBY_VERSION.include?('1.9.') or RUBY_PLATFORM =~ /java/i
35
+ should "not raise with nested #to_proc on diff line" do
36
+ (
37
+ lambda do
38
+ klass.new.method(:test).to_proc
39
+ end
40
+ ).to_source.should.not.be.nil
41
+ end
38
42
 
39
- describe '&:blah raising Sourcify::CannotHandleCreatedOnTheFlyProcError' do
43
+ end
40
44
 
41
- should "raise when created by &:blah" do
42
- lambda {
43
- x, y = klass.new.test(&:blah), lambda { 1+2 }
44
- x.to_source
45
- }.should.raise(Sourcify::CannotHandleCreatedOnTheFlyProcError)
46
- end
45
+ describe '&:blah raising Sourcify::CannotHandleCreatedOnTheFlyProcError' do
47
46
 
48
- should "not raise even with prepending &:blah on the same line" do
47
+ should "raise when created by &:blah" do
48
+ lambda {
49
49
  x, y = klass.new.test(&:blah), lambda { 1+2 }
50
- y.to_source.should.not.be.nil
51
- end
52
-
53
- should "not raise even with appending &:blah on the same line" do
54
- x, y = lambda { 1+2 }, klass.new.test(&:blah)
55
- x.to_source.should.not.be.nil
56
- end
57
-
58
- should "not raise even with nested &:blah on the same line" do
59
- x = lambda { klass.new.test(&:blah) }
60
- x.to_source.should.not.be.nil
61
- end
62
-
63
- should "not raise with nested &:blah on diff line" do
64
- (
65
- lambda do
66
- klass.new.test(&:blah)
67
- end
68
- ).to_source.should.not.be.nil
69
- end
70
-
50
+ x.to_source
51
+ }.should.raise(Sourcify::CannotHandleCreatedOnTheFlyProcError)
71
52
  end
72
53
 
73
- else
74
-
75
- describe '&:blah raising Sourcify::CannotHandleCreatedOnTheFlyProcError' do
76
-
77
- should "raise w no other proc on the same line" do
78
- lambda {
79
- x = klass.new.test(&:blah)
80
- x.to_source
81
- }.should.raise(Sourcify::CannotHandleCreatedOnTheFlyProcError)
82
- end
83
-
84
- should "raise w prepending proc of different arity on the same line" do
85
- lambda {
86
- y, x = lambda {|a| 1+2 }, klass.new.test(&:blah)
87
- x.to_source
88
- }.should.raise(Sourcify::CannotHandleCreatedOnTheFlyProcError)
89
- end
90
-
91
- should "raise w appending proc of different arity on the same line" do
92
- lambda {
93
- x, y = klass.new.test(&:blah), lambda {|a| 1+2 }
94
- x.to_source
95
- }.should.raise(Sourcify::CannotHandleCreatedOnTheFlyProcError)
96
- end
97
-
98
- should "raise w nested proc of different arity on the same line" do
99
- lambda {
100
- y = lambda {|a| klass.new.test(&:blah) }
101
- x = y.call(1).to_source
102
- }.should.raise(Sourcify::CannotHandleCreatedOnTheFlyProcError)
103
- end
104
-
105
- should "not raise with nested &:blah on diff line" do
106
- (
107
- lambda do
108
- klass.new.test(&:blah)
109
- end
110
- ).to_source.should.not.be.nil
111
- end
54
+ should "not raise even with prepending &:blah on the same line" do
55
+ x, y = klass.new.test(&:blah), lambda { 1+2 }
56
+ y.to_source.should.not.be.nil
57
+ end
112
58
 
59
+ should "not raise even with appending &:blah on the same line" do
60
+ x, y = lambda { 1+2 }, klass.new.test(&:blah)
61
+ x.to_source.should.not.be.nil
113
62
  end
114
63
 
115
- describe '&:blah raising Sourcify::MultipleMatchingProcsPerLineError' do
116
-
117
- should 'raise w prepending proc w zero arg (arity -1) on the same line' do
118
- lambda {
119
- y, x = lambda { 1+2 }, klass.new.test(&:blah)
120
- x.to_source
121
- }.should.raise(Sourcify::MultipleMatchingProcsPerLineError)
122
- end
123
-
124
- should 'raise w appending proc w zero arg (arity -1) on the same line' do
125
- lambda {
126
- x, y = klass.new.test(&:blah), lambda { 1+2 }
127
- x.to_source
128
- }.should.raise(Sourcify::MultipleMatchingProcsPerLineError)
129
- end
130
-
131
- should 'raise w nested proc w zero arg (arity -1) on the same line' do
132
- lambda {
133
- x = lambda { klass.new.test(&:blah) }
134
- x.call.to_source
135
- }.should.raise(Sourcify::MultipleMatchingProcsPerLineError)
136
- end
137
-
138
- should 'raise w prepending proc w single optional arg (arity -1) on the same line' do
139
- lambda {
140
- y, x = lambda {|*a| 1+2 }, klass.new.test(&:blah)
141
- x.to_source
142
- }.should.raise(Sourcify::MultipleMatchingProcsPerLineError)
143
- end
144
-
145
- should 'raise w appending proc w single optional arg (arity -1) on the same line' do
146
- lambda {
147
- x, y = klass.new.test(&:blah), lambda {|*a| 1+2 }
148
- x.to_source
149
- }.should.raise(Sourcify::MultipleMatchingProcsPerLineError)
150
- end
151
-
152
- should 'raise w nested proc w single optional arg (arity -1) on the same line' do
153
- lambda {
154
- x = lambda {|*a| klass.new.test(&:blah) }
155
- x.call.to_source
156
- }.should.raise(Sourcify::MultipleMatchingProcsPerLineError)
157
- end
158
-
159
- should "not raise with nested &:blah on diff line" do
160
- (
161
- lambda do
162
- x = klass.new.test(&:blah)
163
- end
164
- ).to_source.should.not.be.nil
165
- end
64
+ should "not raise even with nested &:blah on the same line" do
65
+ x = lambda { klass.new.test(&:blah) }
66
+ x.to_source.should.not.be.nil
67
+ end
166
68
 
69
+ should "not raise with nested &:blah on diff line" do
70
+ (
71
+ lambda do
72
+ klass.new.test(&:blah)
73
+ end
74
+ ).to_source.should.not.be.nil
167
75
  end
168
76
 
169
77
  end