sourcify 0.1.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.
- data/.document +5 -0
- data/.gitignore +21 -0
- data/HISTORY.txt +4 -0
- data/LICENSE +20 -0
- data/README.rdoc +154 -0
- data/Rakefile +114 -0
- data/VERSION +1 -0
- data/lib/sourcify.rb +12 -0
- data/lib/sourcify/proc.rb +53 -0
- data/lib/sourcify/proc/counter.rb +41 -0
- data/lib/sourcify/proc/lexer.rb +40 -0
- data/lib/sourcify/proc/lexer18.rb +224 -0
- data/lib/sourcify/proc/lexer19.rb +195 -0
- data/lib/sourcify/proc/parser.rb +74 -0
- data/sourcify.gemspec +109 -0
- data/spec/proc/19x_extras.rb +27 -0
- data/spec/proc/readme +5 -0
- data/spec/proc/to_sexp_variables_spec.rb +146 -0
- data/spec/proc/to_source_from_braced_block_w_nested_braced_block_spec.rb +33 -0
- data/spec/proc/to_source_from_braced_block_w_nested_hash_spec.rb +34 -0
- data/spec/proc/to_source_from_braced_block_wo_nesting_complication_spec.rb +46 -0
- data/spec/proc/to_source_from_do_end_block_w_nested_begin_spec.rb +35 -0
- data/spec/proc/to_source_from_do_end_block_w_nested_case_spec.rb +35 -0
- data/spec/proc/to_source_from_do_end_block_w_nested_class_spec.rb +89 -0
- data/spec/proc/to_source_from_do_end_block_w_nested_do_end_block_spec.rb +33 -0
- data/spec/proc/to_source_from_do_end_block_w_nested_for_spec.rb +132 -0
- data/spec/proc/to_source_from_do_end_block_w_nested_if_spec.rb +73 -0
- data/spec/proc/to_source_from_do_end_block_w_nested_method_spec.rb +33 -0
- data/spec/proc/to_source_from_do_end_block_w_nested_module_spec.rb +49 -0
- data/spec/proc/to_source_from_do_end_block_w_nested_unless_spec.rb +73 -0
- data/spec/proc/to_source_from_do_end_block_w_nested_until_spec.rb +176 -0
- data/spec/proc/to_source_from_do_end_block_w_nested_while_spec.rb +176 -0
- data/spec/proc/to_source_from_do_end_block_wo_nesting_complication_spec.rb +46 -0
- data/spec/proc/to_source_from_multi_blocks_w_many_matches_spec.rb +73 -0
- data/spec/proc/to_source_from_multi_blocks_w_single_match_spec.rb +31 -0
- data/spec/proc/to_source_from_multi_do_end_blocks_w_single_match_spec.rb +31 -0
- data/spec/proc/to_source_magic_file_var_spec.rb +127 -0
- data/spec/proc/to_source_magic_line_var_spec.rb +127 -0
- data/spec/proc/to_source_variables_spec.rb +29 -0
- data/spec/spec_helper.rb +41 -0
- metadata +159 -0
@@ -0,0 +1,176 @@
|
|
1
|
+
require File.join(File.dirname(__FILE__), '..', 'spec_helper')
|
2
|
+
|
3
|
+
describe "Proc#to_source from do ... end block (w nested until block)" do
|
4
|
+
|
5
|
+
should 'handle w do' do
|
6
|
+
(
|
7
|
+
lambda do
|
8
|
+
until true do @x1 = 1 end
|
9
|
+
end
|
10
|
+
).should.be having_source(%Q\
|
11
|
+
proc do
|
12
|
+
until true do @x1 = 1 end
|
13
|
+
end
|
14
|
+
\)
|
15
|
+
end
|
16
|
+
|
17
|
+
should 'handle w \ do' do
|
18
|
+
(
|
19
|
+
lambda do
|
20
|
+
until true \
|
21
|
+
do @x1 = 2 end
|
22
|
+
end
|
23
|
+
).should.be having_source(%Q\
|
24
|
+
proc do
|
25
|
+
until true do @x1 = 2 end
|
26
|
+
end
|
27
|
+
\)
|
28
|
+
end
|
29
|
+
|
30
|
+
should 'handle wo do (w newline)' do
|
31
|
+
(
|
32
|
+
lambda do
|
33
|
+
until true
|
34
|
+
@x1 = 3
|
35
|
+
end
|
36
|
+
end
|
37
|
+
).should.be having_source(%Q\
|
38
|
+
proc do
|
39
|
+
until true
|
40
|
+
@x1 = 3
|
41
|
+
end
|
42
|
+
end
|
43
|
+
\)
|
44
|
+
end
|
45
|
+
|
46
|
+
should 'handle wo do (w semicolon)' do
|
47
|
+
(
|
48
|
+
lambda do
|
49
|
+
until true; @x1 = 4; end
|
50
|
+
end
|
51
|
+
).should.be having_source(%Q\
|
52
|
+
proc do
|
53
|
+
until true
|
54
|
+
@x1 = 4
|
55
|
+
end
|
56
|
+
end
|
57
|
+
\)
|
58
|
+
end
|
59
|
+
|
60
|
+
should 'handle nested wo do within w do' do
|
61
|
+
(
|
62
|
+
lambda do
|
63
|
+
until true do
|
64
|
+
until true; @x1 = 5; end
|
65
|
+
end
|
66
|
+
end
|
67
|
+
).should.be having_source(%Q\
|
68
|
+
proc do
|
69
|
+
until true do
|
70
|
+
until true
|
71
|
+
@x1 = 5
|
72
|
+
end
|
73
|
+
end
|
74
|
+
end
|
75
|
+
\)
|
76
|
+
end
|
77
|
+
|
78
|
+
should 'handle nested wo do within wo do' do
|
79
|
+
(
|
80
|
+
lambda do
|
81
|
+
until true
|
82
|
+
until true; @x1 = 6; end
|
83
|
+
end
|
84
|
+
end
|
85
|
+
).should.be having_source(%Q\
|
86
|
+
proc do
|
87
|
+
until true
|
88
|
+
until true
|
89
|
+
@x1 = 6
|
90
|
+
end
|
91
|
+
end
|
92
|
+
end
|
93
|
+
\)
|
94
|
+
end
|
95
|
+
|
96
|
+
should 'handle nested w do within wo do' do
|
97
|
+
(
|
98
|
+
lambda do
|
99
|
+
until true
|
100
|
+
until true do @x1 = 7 end
|
101
|
+
end
|
102
|
+
end
|
103
|
+
).should.be having_source(%Q\
|
104
|
+
proc do
|
105
|
+
until true
|
106
|
+
until true
|
107
|
+
@x1 = 7
|
108
|
+
end
|
109
|
+
end
|
110
|
+
end
|
111
|
+
\)
|
112
|
+
end
|
113
|
+
|
114
|
+
should 'handle nested w do within w do' do
|
115
|
+
(
|
116
|
+
lambda do
|
117
|
+
until true do
|
118
|
+
until true do @x1 = 8 end
|
119
|
+
end
|
120
|
+
end
|
121
|
+
).should.be having_source(%Q\
|
122
|
+
proc do
|
123
|
+
until true
|
124
|
+
until true
|
125
|
+
@x1 = 8
|
126
|
+
end
|
127
|
+
end
|
128
|
+
end
|
129
|
+
\)
|
130
|
+
end
|
131
|
+
|
132
|
+
should 'handle simple modifier' do
|
133
|
+
(
|
134
|
+
lambda do
|
135
|
+
@x1 = 9 until true
|
136
|
+
end
|
137
|
+
).should.be having_source(%Q\
|
138
|
+
proc do
|
139
|
+
@x1 = 9 until true
|
140
|
+
end
|
141
|
+
\)
|
142
|
+
end
|
143
|
+
|
144
|
+
should 'handle block within modifier' do
|
145
|
+
(
|
146
|
+
lambda do
|
147
|
+
@x1 = 10 until (
|
148
|
+
until true do @x1 = 10 end
|
149
|
+
)
|
150
|
+
end
|
151
|
+
).should.be having_source(%Q\
|
152
|
+
proc do
|
153
|
+
@x1 = 10 until (
|
154
|
+
until true do @x1 = 10 end
|
155
|
+
)
|
156
|
+
end
|
157
|
+
\)
|
158
|
+
end
|
159
|
+
|
160
|
+
should 'handle modifier within block' do
|
161
|
+
(
|
162
|
+
lambda do
|
163
|
+
until true
|
164
|
+
@x1 = 11 until true
|
165
|
+
end
|
166
|
+
end
|
167
|
+
).should.be having_source(%Q\
|
168
|
+
proc do
|
169
|
+
until true
|
170
|
+
@x1 = 11 until true
|
171
|
+
end
|
172
|
+
end
|
173
|
+
\)
|
174
|
+
end
|
175
|
+
|
176
|
+
end
|
@@ -0,0 +1,176 @@
|
|
1
|
+
require File.join(File.dirname(__FILE__), '..', 'spec_helper')
|
2
|
+
|
3
|
+
describe "Proc#to_source from do ... end block (w nested while block)" do
|
4
|
+
|
5
|
+
should 'handle w do' do
|
6
|
+
(
|
7
|
+
lambda do
|
8
|
+
while true do @x1 = 1 end
|
9
|
+
end
|
10
|
+
).should.be having_source(%Q\
|
11
|
+
proc do
|
12
|
+
while true do @x1 = 1 end
|
13
|
+
end
|
14
|
+
\)
|
15
|
+
end
|
16
|
+
|
17
|
+
should 'handle w \ do' do
|
18
|
+
(
|
19
|
+
lambda do
|
20
|
+
while true \
|
21
|
+
do @x1 = 2 end
|
22
|
+
end
|
23
|
+
).should.be having_source(%Q\
|
24
|
+
proc do
|
25
|
+
while true do @x1 = 2 end
|
26
|
+
end
|
27
|
+
\)
|
28
|
+
end
|
29
|
+
|
30
|
+
should 'handle wo do (w newline)' do
|
31
|
+
(
|
32
|
+
lambda do
|
33
|
+
while true
|
34
|
+
@x1 = 3
|
35
|
+
end
|
36
|
+
end
|
37
|
+
).should.be having_source(%Q\
|
38
|
+
proc do
|
39
|
+
while true
|
40
|
+
@x1 = 3
|
41
|
+
end
|
42
|
+
end
|
43
|
+
\)
|
44
|
+
end
|
45
|
+
|
46
|
+
should 'handle wo do (w semicolon)' do
|
47
|
+
(
|
48
|
+
lambda do
|
49
|
+
while true; @x1 = 4; end
|
50
|
+
end
|
51
|
+
).should.be having_source(%Q\
|
52
|
+
proc do
|
53
|
+
while true
|
54
|
+
@x1 = 4
|
55
|
+
end
|
56
|
+
end
|
57
|
+
\)
|
58
|
+
end
|
59
|
+
|
60
|
+
should 'handle nested wo do within w do' do
|
61
|
+
(
|
62
|
+
lambda do
|
63
|
+
while true do
|
64
|
+
while true; @x1 = 5; end
|
65
|
+
end
|
66
|
+
end
|
67
|
+
).should.be having_source(%Q\
|
68
|
+
proc do
|
69
|
+
while true do
|
70
|
+
while true
|
71
|
+
@x1 = 5
|
72
|
+
end
|
73
|
+
end
|
74
|
+
end
|
75
|
+
\)
|
76
|
+
end
|
77
|
+
|
78
|
+
should 'handle nested wo do within wo do' do
|
79
|
+
(
|
80
|
+
lambda do
|
81
|
+
while true
|
82
|
+
while true; @x1 = 6; end
|
83
|
+
end
|
84
|
+
end
|
85
|
+
).should.be having_source(%Q\
|
86
|
+
proc do
|
87
|
+
while true
|
88
|
+
while true
|
89
|
+
@x1 = 6
|
90
|
+
end
|
91
|
+
end
|
92
|
+
end
|
93
|
+
\)
|
94
|
+
end
|
95
|
+
|
96
|
+
should 'handle nested w do within wo do' do
|
97
|
+
(
|
98
|
+
lambda do
|
99
|
+
while true
|
100
|
+
while true do @x1 = 7 end
|
101
|
+
end
|
102
|
+
end
|
103
|
+
).should.be having_source(%Q\
|
104
|
+
proc do
|
105
|
+
while true
|
106
|
+
while true
|
107
|
+
@x1 = 7
|
108
|
+
end
|
109
|
+
end
|
110
|
+
end
|
111
|
+
\)
|
112
|
+
end
|
113
|
+
|
114
|
+
should 'handle nested w do within w do' do
|
115
|
+
(
|
116
|
+
lambda do
|
117
|
+
while true do
|
118
|
+
while true do @x1 = 8 end
|
119
|
+
end
|
120
|
+
end
|
121
|
+
).should.be having_source(%Q\
|
122
|
+
proc do
|
123
|
+
while true
|
124
|
+
while true
|
125
|
+
@x1 = 8
|
126
|
+
end
|
127
|
+
end
|
128
|
+
end
|
129
|
+
\)
|
130
|
+
end
|
131
|
+
|
132
|
+
should 'handle simple modifier' do
|
133
|
+
(
|
134
|
+
lambda do
|
135
|
+
@x1 = 9 while true
|
136
|
+
end
|
137
|
+
).should.be having_source(%Q\
|
138
|
+
proc do
|
139
|
+
@x1 = 9 while true
|
140
|
+
end
|
141
|
+
\)
|
142
|
+
end
|
143
|
+
|
144
|
+
should 'handle block within modifier' do
|
145
|
+
(
|
146
|
+
lambda do
|
147
|
+
@x1 = 10 while (
|
148
|
+
while true do @x1 = 10 end
|
149
|
+
)
|
150
|
+
end
|
151
|
+
).should.be having_source(%Q\
|
152
|
+
proc do
|
153
|
+
@x1 = 10 while (
|
154
|
+
while true do @x1 = 10 end
|
155
|
+
)
|
156
|
+
end
|
157
|
+
\)
|
158
|
+
end
|
159
|
+
|
160
|
+
should 'handle modifier within block' do
|
161
|
+
(
|
162
|
+
lambda do
|
163
|
+
while true
|
164
|
+
@x1 = 11 while true
|
165
|
+
end
|
166
|
+
end
|
167
|
+
).should.be having_source(%Q\
|
168
|
+
proc do
|
169
|
+
while true
|
170
|
+
@x1 = 11 while true
|
171
|
+
end
|
172
|
+
end
|
173
|
+
\)
|
174
|
+
end
|
175
|
+
|
176
|
+
end
|
@@ -0,0 +1,46 @@
|
|
1
|
+
require File.join(File.dirname(__FILE__), '..', 'spec_helper')
|
2
|
+
|
3
|
+
describe "Proc#to_source from do ... end block (wo nesting complication)" do
|
4
|
+
|
5
|
+
expected = 'proc { @x%s }'
|
6
|
+
|
7
|
+
should 'handle watever(..) do ... end' do
|
8
|
+
(
|
9
|
+
watever(:a, :b, {:c => 1}) do @x1 end
|
10
|
+
).should.be having_source(expected%1)
|
11
|
+
end
|
12
|
+
|
13
|
+
should 'handle watever(..) \ do ... end' do
|
14
|
+
(
|
15
|
+
watever(:a, :b, {:c => 1}) \
|
16
|
+
do @x2 end
|
17
|
+
).should.be having_source(expected%2)
|
18
|
+
end
|
19
|
+
|
20
|
+
should 'handle watever do ... end' do
|
21
|
+
(
|
22
|
+
watever do @x3 end
|
23
|
+
).should.be having_source(expected%3)
|
24
|
+
end
|
25
|
+
|
26
|
+
should 'handle watever \ do ... end' do
|
27
|
+
(
|
28
|
+
watever \
|
29
|
+
do @x4 end
|
30
|
+
).should.be having_source(expected%4)
|
31
|
+
end
|
32
|
+
|
33
|
+
should 'handle lambda do ... end' do
|
34
|
+
(
|
35
|
+
lambda do @x5 end
|
36
|
+
).should.be having_source(expected%5)
|
37
|
+
end
|
38
|
+
|
39
|
+
should 'handle lambda \ do ... end' do
|
40
|
+
(
|
41
|
+
lambda \
|
42
|
+
do @x6 end
|
43
|
+
).should.be having_source(expected%6)
|
44
|
+
end
|
45
|
+
|
46
|
+
end
|
@@ -0,0 +1,73 @@
|
|
1
|
+
require File.join(File.dirname(__FILE__), '..', 'spec_helper')
|
2
|
+
|
3
|
+
describe 'Proc#to_source from multi blocks w many matches' do
|
4
|
+
|
5
|
+
if Object.const_defined?(:ParseTree)
|
6
|
+
|
7
|
+
expected = 'proc { @x%s }'
|
8
|
+
|
9
|
+
should 'skip non-matching (all do...end blocks)' do
|
10
|
+
(
|
11
|
+
b1 = lambda do |a| @x1 end; b2 = lambda do @x1 end; b3 = lambda do @x10 end; b2
|
12
|
+
).should.be having_source(expected%1)
|
13
|
+
end
|
14
|
+
|
15
|
+
should 'skip non-matching (all {...} blocks)' do
|
16
|
+
(
|
17
|
+
b1 = lambda {|a| @x2 }; b2 = lambda { @x2 }; b3 = lambda { @x20 }; b2
|
18
|
+
).should.be having_source(expected%2)
|
19
|
+
end
|
20
|
+
|
21
|
+
should 'skip non-matching (mixed {...} with do...end blocks)' do
|
22
|
+
(
|
23
|
+
b1 = lambda {|a| @x3 }; b2 = lambda do @x3 end; b3 = lambda { @x30 } ; b2
|
24
|
+
).should.be having_source(expected%3)
|
25
|
+
end
|
26
|
+
|
27
|
+
should 'skip non-matching (mixed do...end with {...} blocks)' do
|
28
|
+
(
|
29
|
+
b1 = lambda do |a| @x4 end; b2 = lambda { @x4 }; b3 = lambda do @x40 end; b2
|
30
|
+
).should.be having_source(expected%4)
|
31
|
+
end
|
32
|
+
|
33
|
+
else
|
34
|
+
|
35
|
+
# Need this line since the parser file is dynamically required, otherwise we will get
|
36
|
+
# undefined constant error
|
37
|
+
require 'sourcify/proc/parser'
|
38
|
+
|
39
|
+
should 'raise Sourcify::MultipleMatchingProcsPerLineError (all do...end blocks)' do
|
40
|
+
lambda {
|
41
|
+
(
|
42
|
+
b1 = lambda do |a| @x1 end; b2 = lambda do @x1 end; b3 = lambda do @x1 end ; b2
|
43
|
+
).to_source
|
44
|
+
}.should.raise(Sourcify::MultipleMatchingProcsPerLineError)
|
45
|
+
end
|
46
|
+
|
47
|
+
should 'raise Sourcify::MultipleMatchingProcsPerLineError (all {...} blocks)' do
|
48
|
+
lambda {
|
49
|
+
(
|
50
|
+
b1 = lambda {|a| @x2 }; b2 = lambda { @x2 }; b3 = lambda { @x2 } ; b2
|
51
|
+
).to_source
|
52
|
+
}.should.raise(Sourcify::MultipleMatchingProcsPerLineError)
|
53
|
+
end
|
54
|
+
|
55
|
+
should 'raise Sourcify::MultipleMatchingProcsPerLineError (mixed {...} w do...end blocks)' do
|
56
|
+
lambda {
|
57
|
+
(
|
58
|
+
b1 = lambda {|a| @x3 }; b2 = lambda do @x3 end; b3 = lambda { @x4 } ; b2
|
59
|
+
).to_source
|
60
|
+
}.should.raise(Sourcify::MultipleMatchingProcsPerLineError)
|
61
|
+
end
|
62
|
+
|
63
|
+
should 'raise Sourcify::MultipleMatchingProcsPerLineError (mixed do...end w {...} blocks)' do
|
64
|
+
lambda {
|
65
|
+
(
|
66
|
+
b1 = lambda do |a| @x4 end; b2 = lambda { @x4 }; b3 = lambda do @x4 end ; b2
|
67
|
+
).to_source
|
68
|
+
}.should.raise(Sourcify::MultipleMatchingProcsPerLineError)
|
69
|
+
end
|
70
|
+
|
71
|
+
end
|
72
|
+
|
73
|
+
end
|