sourcify 0.3.0 → 0.4.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (69) hide show
  1. data/.infinity_test +32 -0
  2. data/HISTORY.txt +12 -0
  3. data/README.rdoc +69 -30
  4. data/Rakefile +2 -3
  5. data/VERSION +1 -1
  6. data/lib/sourcify.rb +2 -2
  7. data/lib/sourcify/proc.rb +144 -65
  8. data/lib/sourcify/proc/methods.rb +3 -0
  9. data/lib/sourcify/proc/methods/source_location.rb +61 -0
  10. data/lib/sourcify/proc/methods/to_sexp.rb +40 -0
  11. data/lib/sourcify/proc/methods/to_source.rb +48 -0
  12. data/lib/sourcify/proc/parser.rb +36 -17
  13. data/lib/sourcify/proc/scanner.rb +317 -271
  14. data/lib/sourcify/proc/scanner.rl +13 -2
  15. data/lib/sourcify/proc/scanner/extensions.rb +34 -10
  16. data/sourcify.gemspec +36 -6
  17. data/spec/proc/created_on_the_fly_proc_spec.rb +1 -1
  18. data/spec/proc/others_spec.rb +6 -2
  19. data/spec/proc/spec_helper.rb +1 -0
  20. data/spec/proc/to_sexp_from_multi_blocks_w_specified_attached_to_spec.rb +46 -0
  21. data/spec/proc/to_sexp_variables_spec.rb +1 -1
  22. data/spec/proc/to_sexp_w_specified_strip_enclosure_spec.rb +60 -0
  23. data/spec/proc/to_sexp_within_irb_spec.rb +1 -1
  24. data/spec/proc/to_source_from_braced_block_w_nested_braced_block_spec.rb +1 -1
  25. data/spec/proc/to_source_from_braced_block_w_nested_hash_spec.rb +2 -2
  26. data/spec/proc/to_source_from_braced_block_wo_nesting_complication_spec.rb +1 -1
  27. data/spec/proc/to_source_from_do_end_block_w_nested_begin_spec.rb +1 -1
  28. data/spec/proc/to_source_from_do_end_block_w_nested_case_spec.rb +1 -1
  29. data/spec/proc/to_source_from_do_end_block_w_nested_class_spec.rb +1 -1
  30. data/spec/proc/to_source_from_do_end_block_w_nested_do_end_block_spec.rb +1 -1
  31. data/spec/proc/to_source_from_do_end_block_w_nested_for_spec.rb +1 -1
  32. data/spec/proc/to_source_from_do_end_block_w_nested_if_spec.rb +1 -1
  33. data/spec/proc/to_source_from_do_end_block_w_nested_literal_keyword_spec.rb +1 -1
  34. data/spec/proc/to_source_from_do_end_block_w_nested_method_spec.rb +1 -1
  35. data/spec/proc/to_source_from_do_end_block_w_nested_module_spec.rb +1 -1
  36. data/spec/proc/to_source_from_do_end_block_w_nested_unless_spec.rb +1 -1
  37. data/spec/proc/to_source_from_do_end_block_w_nested_until_spec.rb +1 -1
  38. data/spec/proc/to_source_from_do_end_block_w_nested_while_spec.rb +1 -1
  39. data/spec/proc/to_source_from_do_end_block_wo_nesting_complication_spec.rb +1 -1
  40. data/spec/proc/to_source_from_multi_blocks_w_many_matches_spec.rb +20 -126
  41. data/spec/proc/to_source_from_multi_blocks_w_single_match_spec.rb +10 -89
  42. data/spec/proc/to_source_from_multi_blocks_w_specified_attached_to_and_many_matches_spec.rb +45 -0
  43. data/spec/proc/to_source_from_multi_blocks_w_specified_attached_to_and_no_match_spec.rb +45 -0
  44. data/spec/proc/to_source_from_multi_blocks_w_specified_attached_to_and_single_match_spec.rb +22 -0
  45. data/spec/proc/to_source_from_multi_blocks_w_specified_attached_to_spec.rb +83 -0
  46. data/spec/proc/to_source_from_multi_blocks_w_specified_body_matcher_and_many_matches_spec.rb +45 -0
  47. data/spec/proc/to_source_from_multi_blocks_w_specified_body_matcher_and_no_match_spec.rb +45 -0
  48. data/spec/proc/to_source_from_multi_blocks_w_specified_body_matcher_and_single_match_spec.rb +22 -0
  49. data/spec/proc/to_source_from_multi_blocks_w_specified_ignore_nested_spec.rb +43 -0
  50. data/spec/proc/to_source_from_multi_do_end_blocks_w_single_match_spec.rb +1 -1
  51. data/spec/proc/to_source_magic_file_var_spec.rb +1 -1
  52. data/spec/proc/to_source_magic_line_var_spec.rb +1 -1
  53. data/spec/proc/to_source_variables_spec.rb +1 -1
  54. data/spec/proc/to_source_w_specified_strip_enclosure_spec.rb +33 -0
  55. data/spec/proc/to_source_within_irb_spec.rb +1 -1
  56. data/spec/proc_scanner/block_comment_spec.rb +1 -1
  57. data/spec/proc_scanner/double_colons_spec.rb +1 -1
  58. data/spec/proc_scanner/double_quote_str_w_interpolation_spec.rb +9 -9
  59. data/spec/proc_scanner/double_quote_str_wo_interpolation_spec.rb +13 -13
  60. data/spec/proc_scanner/heredoc_spec.rb +1 -1
  61. data/spec/proc_scanner/kw_do_alias1_spec.rb +1 -1
  62. data/spec/proc_scanner/kw_do_alias2_spec.rb +1 -1
  63. data/spec/proc_scanner/per_line_comment_spec.rb +1 -1
  64. data/spec/proc_scanner/single_quote_str_spec.rb +1 -1
  65. data/spec/proc_scanner/slash_operator_spec.rb +75 -0
  66. data/spec/proc_scanner/spec_helper.rb +1 -1
  67. data/spec/spec_helper.rb +53 -45
  68. metadata +46 -16
  69. data/ext/sourcify/extconf.rb +0 -2
@@ -0,0 +1,22 @@
1
+ require File.join(File.expand_path(File.dirname(__FILE__)), 'spec_helper')
2
+
3
+ describe 'Proc#to_source w specified {:attached_to => ...} & single match' do
4
+
5
+ options = {:attached_to => :watever}
6
+
7
+ should 'handle no nesting on same line' do
8
+ b1 = lambda {|a| @x1+1 }; b2 = watever { @x1+2 }; b3 = lambda { @x1+3 }
9
+ b2.should.be having_source('proc { @x1+2 }', options)
10
+ end
11
+
12
+ should 'handle single level nesting on same line' do
13
+ b1 = lambda {|a| @x2+1 }; b2 = watever { lambda { @x2+2 } }
14
+ b2.should.be having_source('proc { lambda { @x2+2 } }', options)
15
+ end
16
+
17
+ should 'handle multi level nesting on same line' do
18
+ b2 = (lambda {|a| watever { lambda { @x3 } } }).call(1)
19
+ b2.should.be having_source('proc { lambda { @x3 } }', options)
20
+ end
21
+
22
+ end
@@ -0,0 +1,83 @@
1
+ require File.join(File.expand_path(File.dirname(__FILE__)), 'spec_helper')
2
+
3
+ describe 'Proc#to_source w specified {:attached_to => ...}' do
4
+ unless has_parsetree?
5
+
6
+ err1 = Sourcify::MultipleMatchingProcsPerLineError
7
+ err2 = Sourcify::NoMatchingProcError
8
+
9
+ describe '>> w :attached_to as regexp' do
10
+
11
+ should "raise Sourcify::MultipleMatchingProcsPerLineError for multiple matches" do
12
+ b1 = lambda {|a| @x }; b2 = lambda { @x }; b3 = lambda { @x }
13
+ lambda { b2.to_source(:attached_to => /^(?:.*?\W|)lambda(?:\W)/) }.should.raise(err1)
14
+ end
15
+
16
+ should "raise Sourcify::NoMatchingProcError for no match" do
17
+ b1 = lambda {|a| @x }; b2 = lambda { @x }; b3 = lambda { @x }
18
+ lambda { b2.to_source(:attached_to => /^(?:.*?\W|)proc(?:\W)/) }.should.raise(err2)
19
+ end
20
+
21
+ should "handle for single match" do
22
+ b1 = lambda {|a| @x1 }; b2 = proc { @x2 }; b3 = lambda { @x3 }
23
+ b2.should.be having_source('proc { @x2 }', :attached_to => /^(?:.*?\W|)proc(?:\W)/)
24
+ end
25
+
26
+ end
27
+
28
+ describe '>> w :attached_to as string' do
29
+
30
+ should "raise Sourcify::MultipleMatchingProcsPerLineError for multiple matches" do
31
+ b1 = lambda {|a| @x }; b2 = lambda { @x }; b3 = lambda { @x }
32
+ lambda { b2.to_source(:attached_to => 'lambda') }.should.raise(err1)
33
+ end
34
+
35
+ should "raise Sourcify::NoMatchingProcError for no match" do
36
+ b1 = lambda {|a| @x }; b2 = lambda { @x }; b3 = lambda { @x }
37
+ lambda { b2.to_source(:attached_to => 'proc') }.should.raise(err2)
38
+ end
39
+
40
+ should "handle for single match" do
41
+ b1 = lambda {|a| @x1 }; b2 = proc { @x2 }; b3 = lambda { @x3 }
42
+ b2.should.be having_source('proc { @x2 }', :attached_to => 'proc')
43
+ end
44
+
45
+ end
46
+
47
+ describe '>> w :attached_to as symbol' do
48
+
49
+ should "raise Sourcify::MultipleMatchingProcsPerLineError for multiple matches" do
50
+ b1 = lambda {|a| @x }; b2 = lambda { @x }; b3 = lambda { @x }
51
+ lambda { b2.to_source(:attached_to => :lambda) }.should.raise(err1)
52
+ end
53
+
54
+ should "raise Sourcify::NoMatchingProcError for no match" do
55
+ b1 = lambda {|a| @x }; b2 = lambda { @x }; b3 = lambda { @x }
56
+ lambda { b2.to_source(:attached_to => :proc) }.should.raise(err2)
57
+ end
58
+
59
+ should "handle for single match" do
60
+ b1 = lambda {|a| @x1 }; b2 = proc { @x2 }; b3 = lambda { @x3 }
61
+ b2.should.be having_source('proc { @x2 }', :attached_to => :proc)
62
+ end
63
+
64
+ end
65
+
66
+ describe '>> w false start as a result of preceding hash' do
67
+
68
+ option = {:attached_to => :watever}
69
+
70
+ should 'handle for do ... end block' do
71
+ x = watever({:aa => 1, :bb => 3}) do :blah end
72
+ x.should.be having_source('proc { :blah }', option)
73
+ end
74
+
75
+ should 'handle for { ... } block' do
76
+ x = watever({:aa => 1, :bb => 3}) { :blah }
77
+ x.should.be having_source('proc { :blah }', option)
78
+ end
79
+
80
+ end
81
+
82
+ end
83
+ end
@@ -0,0 +1,45 @@
1
+ require File.join(File.expand_path(File.dirname(__FILE__)), 'spec_helper')
2
+
3
+ describe 'Proc#to_source w specified {:attached_to => ...} & single match' do
4
+
5
+ matcher = lambda {|code| code =~ /^(.*\W|)def\W/ }
6
+
7
+ if has_parsetree?
8
+
9
+ should 'handle no nesting on same line' do
10
+ b1 = lambda {|a| @x1+1 }; b2 = lambda { @x1+2 }; b3 = lambda { @x1+3 }
11
+ b2.should.be having_source('proc { @x1+2 }', &matcher)
12
+ end
13
+
14
+ should 'handle single level nesting on same line' do
15
+ b1 = lambda {|a| @x2+1 }; b2 = lambda { lambda { @x2+2 } }
16
+ b2.should.be having_source('proc { lambda { @x2+2 } }', &matcher)
17
+ end
18
+
19
+ should 'handle multi level nesting on same line' do
20
+ b2 = (lambda {|a| lambda { lambda { @x3 } } }).call(1)
21
+ b2.should.be having_source('proc { lambda { @x3 } }', &matcher)
22
+ end
23
+
24
+ else
25
+
26
+ error = Sourcify::MultipleMatchingProcsPerLineError
27
+
28
+ should "raise #{error} w no nesting on same line" do
29
+ b1 = lambda {|a| @x }; b2 = lambda { def a1; end }; b3 = lambda { def a2; end }
30
+ lambda { b2.to_source(&matcher) }.should.raise(error)
31
+ end
32
+
33
+ should "raise #{error} w single level nesting on same line" do
34
+ b1 = lambda {|a| @x }; b2 = lambda { lambda { def bb; end } }
35
+ lambda { b2.to_source(&matcher) }.should.raise(error)
36
+ end
37
+
38
+ should "raise #{error} w multi level nesting on same line" do
39
+ b2 = (lambda {|a| lambda { lambda { def cc; end } } }).call(1)
40
+ lambda { b2.to_source(&matcher) }.should.raise(error)
41
+ end
42
+
43
+ end
44
+
45
+ end
@@ -0,0 +1,45 @@
1
+ require File.join(File.expand_path(File.dirname(__FILE__)), 'spec_helper')
2
+
3
+ describe 'Proc#to_source w specified body matcher & no match' do
4
+
5
+ matcher = lambda {|code| code =~ /^(.*\W|)def\W/ }
6
+
7
+ if has_parsetree?
8
+
9
+ should 'handle no nesting on same line' do
10
+ b1 = lambda do |a| @x1+1 end; b2 = lambda do @x1+2 end; b3 = lambda do @x1+3 end
11
+ b2.should.be having_source('proc { @x1+2 }', &matcher)
12
+ end
13
+
14
+ should 'handle single level nesting on same line' do
15
+ b1 = lambda do |a| @x2+1 end; b2 = lambda do lambda do @x2+2 end end
16
+ b2.should.be having_source('proc { lambda { @x2+2 } }', &matcher)
17
+ end
18
+
19
+ should 'handle multi level nesting on same line' do
20
+ b2 = (lambda do |a| lambda do lambda do @x3 end end end).call(1)
21
+ b2.should.be having_source('proc { lambda { @x3 } }', &matcher)
22
+ end
23
+
24
+ else
25
+
26
+ error = Sourcify::NoMatchingProcError
27
+
28
+ should "raise #{error} w no nesting on same line" do
29
+ b1 = lambda {|a| @x }; b2 = lambda { @x }; b3 = lambda { @x }
30
+ lambda { b2.to_source(&matcher) }.should.raise(error)
31
+ end
32
+
33
+ should "raise #{error} w single level nesting on same line" do
34
+ b1 = lambda {|a| @x }; b2 = lambda { lambda { @x } }
35
+ lambda { b2.to_source(&matcher) }.should.raise(error)
36
+ end
37
+
38
+ should "raise #{error} w multi level nesting on same line" do
39
+ b2 = (lambda {|a| lambda { lambda { @x } } }).call(1)
40
+ lambda { b2.to_source(&matcher) }.should.raise(error)
41
+ end
42
+
43
+ end
44
+
45
+ end
@@ -0,0 +1,22 @@
1
+ require File.join(File.expand_path(File.dirname(__FILE__)), 'spec_helper')
2
+
3
+ describe 'Proc#to_source w specified body matcher & single match' do
4
+
5
+ matcher = lambda {|code| code =~ /^(.*\W|)def\W/ }
6
+
7
+ should 'handle no nesting on same line' do
8
+ b1 = lambda {|a| @x1+1 }; b2 = lambda { @x1+2 }; b3 = lambda { def aa; end }
9
+ b3.should.be having_source('proc { def aa; end }', &matcher)
10
+ end
11
+
12
+ should 'handle single level nesting on same line' do
13
+ b1 = lambda {|a| @x2+1 }; b2 = lambda { def bb; end; lambda { @x2+3 } }
14
+ b2.should.be having_source('proc { def bb; end; lambda { @x2+3 } }', &matcher)
15
+ end
16
+
17
+ should 'handle multi level nesting on same line' do
18
+ b2 = (lambda {|a| lambda { def cc; end; lambda { @x3+3 } } }).call(1)
19
+ b2.should.be having_source('proc { def cc; end; lambda { @x3+3 } }', &matcher)
20
+ end
21
+
22
+ end
@@ -0,0 +1,43 @@
1
+ require File.join(File.expand_path(File.dirname(__FILE__)), 'spec_helper')
2
+
3
+ describe 'Proc#to_source w specified {:ignore_nested => ...}' do
4
+
5
+ options = {:ignore_nested => true}
6
+
7
+ if has_parsetree?
8
+
9
+ should 'handle no nesting on same line' do
10
+ b1 = lambda {|a| @x1+1 }; b2 = lambda { @x1+2 }; b3 = lambda { @x1+3 }
11
+ b2.should.be having_source('proc { @x1+2 }', options)
12
+ end
13
+
14
+ should 'handle single level nesting on same line' do
15
+ b1 = lambda {|a| @x2+1 }; b2 = lambda { lambda { @x2+2 } }
16
+ b2.should.be having_source('proc { lambda { @x2+2 } }', options)
17
+ end
18
+
19
+ should 'handle multi level nesting on same line (w outermost having diff arity)' do
20
+ b2 = (lambda {|a| lambda { lambda { @x3 } } }).call(1)
21
+ b2.should.be having_source('proc { lambda { @x3 } }', options)
22
+ end
23
+
24
+ else
25
+
26
+ should "raise Sourcify::MultipleMatchingProcsPerLineError w no nesting on same line" do
27
+ b1 = lambda {|a| @x1+1 }; b2 = lambda { @x1+2 }; b3 = lambda { @x1+3 }
28
+ lambda { b2.to_source(options) }.should.raise(Sourcify::MultipleMatchingProcsPerLineError)
29
+ end
30
+
31
+ should "handle w single level nesting on same line" do
32
+ b1 = lambda {|a| @x2+1 }; b2 = lambda { lambda { @x2+3 } }
33
+ b2.should.be having_source('proc { lambda { @x2+3 } }', options)
34
+ end
35
+
36
+ should "raise Sourcify::NoMatchingProcError w multi level nesting on same line (w outermost having diff arity)" do
37
+ b2 = (lambda {|a| lambda { lambda { @x3 } } }).call(1)
38
+ lambda { b2.to_source(options) }.should.raise(Sourcify::NoMatchingProcError)
39
+ end
40
+
41
+ end
42
+
43
+ end
@@ -1,4 +1,4 @@
1
- require File.join(File.dirname(__FILE__), '..', 'spec_helper')
1
+ require File.join(File.expand_path(File.dirname(__FILE__)), 'spec_helper')
2
2
 
3
3
  describe 'Proc#to_source from multi blocks w single match' do
4
4
 
@@ -1,4 +1,4 @@
1
- require File.join(File.dirname(__FILE__), '..', 'spec_helper')
1
+ require File.join(File.expand_path(File.dirname(__FILE__)), 'spec_helper')
2
2
 
3
3
  describe "Proc#to_source (magic var __FILE__)" do
4
4
 
@@ -1,4 +1,4 @@
1
- require File.join(File.dirname(__FILE__), '..', 'spec_helper')
1
+ require File.join(File.expand_path(File.dirname(__FILE__)), 'spec_helper')
2
2
 
3
3
  describe "Proc#to_source (magic var __LINE__)" do
4
4
 
@@ -1,4 +1,4 @@
1
- require File.join(File.dirname(__FILE__), '..', 'spec_helper')
1
+ require File.join(File.expand_path(File.dirname(__FILE__)), 'spec_helper')
2
2
 
3
3
  describe "Proc#to_source (variables)" do
4
4
 
@@ -0,0 +1,33 @@
1
+ require File.join(File.expand_path(File.dirname(__FILE__)), 'spec_helper')
2
+
3
+ describe 'Proc#to_source w specified {:strip_enclosure => ...}' do
4
+
5
+ describe '>> w true' do
6
+
7
+ options = {:strip_enclosure => true}
8
+
9
+ should 'strip enclosing proc wo arg' do
10
+ lambda { a+b }.should.be having_source('a+b', options)
11
+ end
12
+
13
+ should 'strip enclosing proc w arg' do
14
+ lambda {|a| a+b }.should.be having_source('a+b', options)
15
+ end
16
+
17
+ end
18
+
19
+ describe '>> w false' do
20
+
21
+ options = {:strip_enclosure => false}
22
+
23
+ should 'not strip enclosing proc wo arg' do
24
+ lambda { a+b }.should.be having_source('proc { a+b }', options)
25
+ end
26
+
27
+ should 'not strip enclosing proc w arg' do
28
+ lambda {|a| a+b }.should.be having_source('proc {|a| a+b }', options)
29
+ end
30
+
31
+ end
32
+
33
+ end
@@ -1,4 +1,4 @@
1
- require File.join(File.dirname(__FILE__), '..', 'spec_helper')
1
+ require File.join(File.expand_path(File.dirname(__FILE__)), 'spec_helper')
2
2
 
3
3
  describe "Proc#to_source within IRB" do
4
4
 
@@ -1,4 +1,4 @@
1
- require File.join(File.dirname(__FILE__), 'spec_helper')
1
+ require File.join(File.expand_path(File.dirname(__FILE__)), 'spec_helper')
2
2
 
3
3
  unless has_parsetree?
4
4
  describe "Block comment (=begin ... =end)" do
@@ -1,4 +1,4 @@
1
- require File.join(File.dirname(__FILE__), 'spec_helper')
1
+ require File.join(File.expand_path(File.dirname(__FILE__)), 'spec_helper')
2
2
 
3
3
  unless has_parsetree?
4
4
  describe "Double colons" do
@@ -1,4 +1,4 @@
1
- require File.join(File.dirname(__FILE__), 'spec_helper')
1
+ require File.join(File.expand_path(File.dirname(__FILE__)), 'spec_helper')
2
2
 
3
3
  unless has_parsetree?
4
4
  describe 'Double quote strings (w interpolation)' do
@@ -10,23 +10,23 @@ describe 'Double quote strings (w interpolation)' do
10
10
  ['Q', 'W', 'x', 'r', ''].each do |t|
11
11
 
12
12
  should "handle %#{t}#{q1}...#{q2} (wo nesting (single))" do
13
- process(" xx %#{t}#{q1}h\#{%#{t}#{q1}ell#{q2}}o#{q2} ").
13
+ process(" xx; %#{t}#{q1}h\#{%#{t}#{q1}ell#{q2}}o#{q2} ").
14
14
  should.include([:dstring, "%#{t}#{q1}h\#{%#{t}#{q1}ell#{q2}}o#{q2}"])
15
15
  end
16
16
 
17
17
  should "handle %#{t}#{q1}...#{q2} (wo nesting (multiple))" do
18
- tokens = process(" xx %#{t}#{q1}h\#{%#{t}#{q1}ell#{q2}}o#{q2} %#{t}#{q1}w\#{%#{t}#{q1}orl#{q2}}d#{q2} ")
18
+ tokens = process(" xx; %#{t}#{q1}h\#{%#{t}#{q1}ell#{q2}}o#{q2} %#{t}#{q1}w\#{%#{t}#{q1}orl#{q2}}d#{q2} ")
19
19
  tokens.should.include([:dstring, "%#{t}#{q1}h\#{%#{t}#{q1}ell#{q2}}o#{q2}"])
20
20
  tokens.should.include([:dstring, "%#{t}#{q1}w\#{%#{t}#{q1}orl#{q2}}d#{q2}"])
21
21
  end
22
22
 
23
23
  should "handle %#{t}#{q1}...#{q2} (w nesting (single))" do
24
- process(" xx %#{t}#{q1}h\#{%#{t}#{q1}e\#{%#{t}#{q1}l#{q2}}l#{q2}}o#{q2} ").
24
+ process(" xx; %#{t}#{q1}h\#{%#{t}#{q1}e\#{%#{t}#{q1}l#{q2}}l#{q2}}o#{q2} ").
25
25
  should.include([:dstring, "%#{t}#{q1}h\#{%#{t}#{q1}e\#{%#{t}#{q1}l#{q2}}l#{q2}}o#{q2}"])
26
26
  end
27
27
 
28
28
  should "handle %#{t}#{q1}...#{q2} (w nesting (multiple))" do
29
- tokens = process(" xx " +
29
+ tokens = process(" xx; " +
30
30
  "%#{t}#{q1}h\#{%#{t}#{q1}e\#{%#{t}#{q1}l#{q2}}l#{q2}}o#{q2} " +
31
31
  "%#{t}#{q1}w\#{%#{t}#{q1}o\#{%#{t}#{q1}r#{q2}}l#{q2}}d#{q2} "
32
32
  )
@@ -40,22 +40,22 @@ describe 'Double quote strings (w interpolation)' do
40
40
  %w{" / `}.each do |q|
41
41
 
42
42
  should "handle #{q}...#{q} (wo escape (single))" do
43
- process(%Q( xx #{q}hello#{q} )).should.include([:dstring, %Q(#{q}hello#{q})])
43
+ process(%Q( xx; #{q}hello#{q} )).should.include([:dstring, %Q(#{q}hello#{q})])
44
44
  end
45
45
 
46
46
  should "handle #{q}...#{q} (wo escape & multiple)" do
47
- tokens = process(%Q( xx #{q}hello#{q} #{q}world#{q} ))
47
+ tokens = process(%Q( xx; #{q}hello#{q} ; #{q}world#{q} ))
48
48
  tokens.should.include([:dstring, %Q(#{q}hello#{q})])
49
49
  tokens.should.include([:dstring, %Q(#{q}world#{q})])
50
50
  end
51
51
 
52
52
  should "handle #{q}...#{q} (w escape (single))" do
53
- process(%Q( xx #{q}hel\\#{q}lo#{q} )).should.
53
+ process(%Q( xx; #{q}hel\\#{q}lo#{q} )).should.
54
54
  include([:dstring, %Q(#{q}hel\\#{q}lo#{q})])
55
55
  end
56
56
 
57
57
  should "handle #{q}...#{q} (w escape (multiple))" do
58
- process(%Q( xx #{q}h\\#{q}el\\#{q}lo#{q} )).should.include([:dstring, %Q(#{q}h\\#{q}el\\#{q}lo#{q})])
58
+ process(%Q( xx; #{q}h\\#{q}el\\#{q}lo#{q} )).should.include([:dstring, %Q(#{q}h\\#{q}el\\#{q}lo#{q})])
59
59
  end
60
60
 
61
61
  end
@@ -1,4 +1,4 @@
1
- require File.join(File.dirname(__FILE__), 'spec_helper')
1
+ require File.join(File.expand_path(File.dirname(__FILE__)), 'spec_helper')
2
2
 
3
3
  unless has_parsetree?
4
4
  describe 'Double quote strings (wo interpolation)' do
@@ -9,11 +9,11 @@ describe 'Double quote strings (wo interpolation)' do
9
9
  ['Q', 'W', 'x', 'r', ''].each do |t|
10
10
 
11
11
  should "handle %#{t}#{q1}...#{q2} (wo escape (single))" do
12
- process(" xx %#{t}#{q1}hello#{q2} ").should.include([:dstring, "%#{t}#{q1}hello#{q2}"])
12
+ process(" xx; %#{t}#{q1}hello#{q2} ").should.include([:dstring, "%#{t}#{q1}hello#{q2}"])
13
13
  end
14
14
 
15
15
  should "handle %#{t}#{q1}...#{q2} (wo escape (multiple))" do
16
- tokens = process(" xx %#{t}#{q1}hello#{q2} %#{t}#{q1}world#{q2} ")
16
+ tokens = process(" xx; %#{t}#{q1}hello#{q2} %#{t}#{q1}world#{q2} ")
17
17
  tokens.should.include([:dstring, "%#{t}#{q1}hello#{q2}"])
18
18
  tokens.should.include([:dstring, "%#{t}#{q1}world#{q2}"])
19
19
  end
@@ -23,22 +23,22 @@ describe 'Double quote strings (wo interpolation)' do
23
23
  unless q1 == '\\'
24
24
 
25
25
  should "handle %#{t}#{q1}...#{q2} (w escape (single))" do
26
- process(" xx %#{t}#{q1}hel\\#{q2}lo#{q2} ").should.
26
+ process(" xx; %#{t}#{q1}hel\\#{q2}lo#{q2} ").should.
27
27
  include([:dstring, "%#{t}#{q1}hel\\#{q2}lo#{q2}"])
28
28
  end
29
29
 
30
30
  should "handle %#{t}#{q1}...#{q2} (w escape (multiple))" do
31
- process(" xx %#{t}#{q1}h\\#{q2}el\\#{q2}lo#{q2} ").should.
31
+ process(" xx; %#{t}#{q1}h\\#{q2}el\\#{q2}lo#{q2} ").should.
32
32
  include([:dstring, "%#{t}#{q1}h\\#{q2}el\\#{q2}lo#{q2}"])
33
33
  end
34
34
 
35
35
  should "handle %#{t}#{q1}\\\\#{q2}" do
36
- process(" xx %#{t}#{q1}\\\\#{q2} %#{t}#{q2}lo#{q2} ").should.
36
+ process(" xx; %#{t}#{q1}\\\\#{q2} %#{t}#{q2}lo#{q2} ").should.
37
37
  include([:dstring, "%#{t}#{q1}\\\\#{q2}"])
38
38
  end
39
39
 
40
40
  should "handle %#{t}#{q1}#{q2}" do
41
- process(" xx %#{t}#{q1}#{q2} %#{t}#{q2}lo#{q2} ").should.
41
+ process(" xx; %#{t}#{q1}#{q2} %#{t}#{q2}lo#{q2} ").should.
42
42
  include([:dstring, "%#{t}#{q1}#{q2}"])
43
43
  end
44
44
 
@@ -50,27 +50,27 @@ describe 'Double quote strings (wo interpolation)' do
50
50
  %w{" / `}.each do |q|
51
51
 
52
52
  should "handle #{q}...#{q} (wo escape (single))" do
53
- process(%Q( xx #{q}hello#{q} )).should.include([:dstring, %Q(#{q}hello#{q})])
53
+ process(%Q( xx; #{q}hello#{q} )).should.include([:dstring, %Q(#{q}hello#{q})])
54
54
  end
55
55
 
56
56
  should "handle #{q}...#{q} (wo escape & multiple)" do
57
- tokens = process(%Q( xx #{q}hello#{q} #{q}world#{q} ))
57
+ tokens = process(%Q( xx; #{q}hello#{q} ; #{q}world#{q} ))
58
58
  tokens.should.include([:dstring, %Q(#{q}hello#{q})])
59
59
  tokens.should.include([:dstring, %Q(#{q}world#{q})])
60
60
  end
61
61
 
62
62
  should "handle #{q}...#{q} (w escape (single))" do
63
- process(%Q( xx #{q}hel\\#{q}lo#{q} )).should.include([:dstring, %Q(#{q}hel\\#{q}lo#{q})])
63
+ process(%Q( xx; #{q}hel\\#{q}lo#{q} )).should.include([:dstring, %Q(#{q}hel\\#{q}lo#{q})])
64
64
  end
65
65
 
66
66
  should "handle #{q}...#{q} (w escape (multiple))" do
67
- process(%Q( xx #{q}h\\#{q}el\\#{q}lo#{q} )).should.
67
+ process(%Q( xx; #{q}h\\#{q}el\\#{q}lo#{q} )).should.
68
68
  include([:dstring, %Q(#{q}h\\#{q}el\\#{q}lo#{q})])
69
69
  end
70
70
 
71
71
  should "handle #{q}\\\\#{q}" do
72
72
  process(%Q(
73
- aa #{q}\\\\#{q}
73
+ aa; #{q}\\\\#{q}
74
74
  cc
75
75
  #{q}dd#{q}
76
76
  )).should.include([:dstring, "#{q}\\\\#{q}"])
@@ -78,7 +78,7 @@ describe 'Double quote strings (wo interpolation)' do
78
78
 
79
79
  should "handle #{q}#{q}" do
80
80
  process(%Q(
81
- aa #{q}#{q}
81
+ aa; #{q}#{q}
82
82
  cc
83
83
  #{q}dd#{q}
84
84
  )).should.include([:dstring, "#{q}#{q}"])