serializable_proc 0.3.0 → 0.3.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,3 +1,9 @@
1
+ === 0.3.1 (Aug 18, 2010)
2
+
3
+ * @@_not_isolated_vars now supports :all, which is an alias of :global + :local +
4
+ :instance + :class [#ngty]
5
+ * cleaned up monstrous code [#ngty]
6
+
1
7
  === 0.3.0 (Aug 18, 2010)
2
8
 
3
9
  * added support for defining of custom matchers that enhances static parser to handle
@@ -6,6 +12,7 @@
6
12
  * ensured subclasses of SerializableProc behaves exactly like SerializableProc [#ngty]
7
13
  * partially implemented workaround to ensure the more conservative usages work, quite a
8
14
  number of specs still failing though [#ngty]
15
+ * fixed buggy support for magic variables __FILE__ & __LINE__ [#ngty]
9
16
 
10
17
  === 0.2.0 (Aug 18, 2010)
11
18
 
@@ -38,10 +38,11 @@ code block:
38
38
  $stdout << "WakeUp !!" # $stdout is the $stdout in the execution context
39
39
  end
40
40
 
41
- The following declares all variables as not isolatable:
41
+ Supported values are :global, :class, :instance, :local & :all, with :all overriding
42
+ all others. The following declares all variables as not isolatable:
42
43
 
43
44
  s_proc = SerializableProc.new do
44
- @@_not_isolated_vars = :global, :class, :instance, :local
45
+ @@_not_isolated_vars = :all
45
46
  ...
46
47
  end
47
48
 
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.3.0
1
+ 0.3.1
@@ -42,7 +42,7 @@ end
42
42
  # x, @x, @@x, $x = 'lx', 'ix', 'cx', 'gx'
43
43
  #
44
44
  # s_proc = SerializableProc.new do
45
- # @@_not_isolated_vars = :global, :class, :instance, :local
45
+ # @@_not_isolated_vars = :all
46
46
  # [x, @x, @@x, $x].join(', ')
47
47
  # end
48
48
  #
@@ -51,8 +51,17 @@ end
51
51
  # # Passing Kernel.binding is required to avoid nasty surprises
52
52
  # s_proc.call(binding) # >> "ly, iy, cy, gy"
53
53
  #
54
+ # Supported values include :global, :class, :instance, :local & :all, with :all
55
+ # overriding all others. This can also be used as a workaround for variables that cannot
56
+ # be serialized:
57
+ #
58
+ # SerializableProc.new do
59
+ # @@_not_isolated_vars = :global # don't isolate globals
60
+ # $stdout << 'WAKE UP !!' # $stdout won't be isolated (avoid marshal error)
61
+ # end
62
+ #
54
63
  # Note that it is strongly-advised to append Kernel.binding as the last parameter when
55
- # invoking the proc to avoid unnecessary nasty surprises.
64
+ # invoking the proc to avoid unnecessary nasty surprises. (see #call for more details)
56
65
  #
57
66
  # #2. Marshallable
58
67
  #
@@ -82,16 +91,6 @@ class SerializableProc
82
91
  # def action(&block) ; SerializableProc.new(&block) ; end
83
92
  # action { ... }
84
93
  #
85
- # Fine-tuning of variables isolation can be done by declaring @@_not_isolated_vars
86
- # within the code block:
87
- #
88
- # SerializableProc.new do
89
- # @@_not_isolated_vars = :global # don't isolate globals
90
- # $stdout << 'WAKE UP !!' # $stdout won't be isolated (avoid marshal error)
91
- # end
92
- #
93
- # (see #call for invoking)
94
- #
95
94
  def initialize(&block)
96
95
  file, line = /^#<Proc:0x[0-9A-Fa-f]+@(.+):(\d+).*?>$/.match(block.inspect)[1..2]
97
96
  @file, @line, @arity = File.expand_path(file), line.to_i, block.arity
@@ -4,32 +4,39 @@ class SerializableProc
4
4
  protected
5
5
 
6
6
  def isolated_sexp(sexp)
7
- # TODO: This nasty mess needs some loving touch !!
8
- block_replace = :_serializable_proc_block_scope_marker_
9
- t_sexp = sexp.gsub(s(:scope, s(:block, SexpAny.new)), block_replace)
10
- blocks_pattern = %r{^#{Regexp.quote(t_sexp.inspect).gsub(block_replace.inspect,'(.*?)')}$}
11
- blocks = sexp.inspect.match(blocks_pattern)[1..-1] rescue []
12
- n_sexp_str = nil
7
+ eval (types = isolated_types(sexp)).empty? ? sexp.inspect : (
8
+ bypass_scoping_by_block(sexp) do |sexp_str|
9
+ # NOTE: for performance issue, we play around with the sexp string, rather
10
+ # than the actual sexp.
11
+ isolated_sexp_str_for_typed_vars(sexp_str, types)
12
+ end
13
+ )
14
+ end
13
15
 
14
- unless (types = isolated_types(sexp)).empty?
15
- var_pattern = /^(.*?s\(:)((#{types.join('|')})(asgn|var|vdecl))(,\ :)((|@|@@|\$)([\w]+))(\)|,)/
16
- t_sexp_str = t_sexp.inspect
16
+ def bypass_scoping_by_block(sexp)
17
+ tmp_marker = :_serializable_proc_block_scope_marker_
18
+ s_sexp = sexp.gsub(s(:scope, s(:block, SexpAny.new)), tmp_marker)
19
+ pattern = %r{^#{Regexp.quote(s_sexp.inspect).gsub(tmp_marker.inspect,'(.*?)')}$}
20
+ orig_blocks = sexp.inspect.match(pattern)[1..-1] rescue []
21
+ n_sexp_str = yield(s_sexp.inspect)
22
+ orig_blocks.inject(n_sexp_str) do |sexp_str, block_sexp_str|
23
+ sexp_str.sub(tmp_marker.inspect, block_sexp_str)
24
+ end
25
+ end
17
26
 
18
- while m = t_sexp_str.match(var_pattern)
19
- orig, prepend, _, type, declare, join, var, _, name, append = m[0..-1]
20
- n_sexp_str = isolatable?(var) ?
21
- "#{n_sexp_str}#{prepend}l#{declare.sub('vdecl','asgn')}#{join}#{type}var_#{name}#{append}" :
22
- "#{n_sexp_str}#{orig}"
23
- t_sexp_str.sub!(orig,'')
24
- end
27
+ def isolated_sexp_str_for_typed_vars(o_sexp_str, types)
28
+ n_sexp_str = nil
29
+ var_pattern = /^(.*?s\(:)((#{types.join('|')})(asgn|var|vdecl))(,\ :)((|@|@@|\$)([\w]+))(\)|,)/
25
30
 
26
- n_sexp_str = n_sexp_str.nil? ? nil :
27
- blocks.inject("#{n_sexp_str}#{t_sexp_str}") do |sexp_str, block_str|
28
- sexp_str.sub(block_replace.inspect, block_str)
29
- end
31
+ while m = o_sexp_str.match(var_pattern)
32
+ orig, prepend, _, type, declare, join, var, _, name, append = m[0..-1]
33
+ n_sexp_str = isolatable?(var) ?
34
+ "#{n_sexp_str}#{prepend}l#{declare.sub('vdecl','asgn')}#{join}#{type}var_#{name}#{append}" :
35
+ "#{n_sexp_str}#{orig}"
36
+ o_sexp_str.sub!(orig,'')
30
37
  end
31
38
 
32
- eval(n_sexp_str ? n_sexp_str : sexp.inspect)
39
+ "#{n_sexp_str}#{o_sexp_str}"
33
40
  end
34
41
 
35
42
  def isolated_var(var)
@@ -47,7 +54,8 @@ class SerializableProc
47
54
  types.map{|t| t[0].chr }
48
55
  else
49
56
  sexp_str = Sexp.from_array(diff).inspect
50
- types.map{|t| t[0].chr unless sexp_str.include?("s(:lit, :#{t})") }.compact
57
+ sexp_str.include?("s(:lit, :all)") ? [] :
58
+ types.map{|t| t[0].chr unless sexp_str.include?("s(:lit, :#{t})") }.compact
51
59
  end
52
60
  end
53
61
 
@@ -53,43 +53,47 @@ class SerializableProc
53
53
  end
54
54
 
55
55
  def raw_sexp_and_marker
56
- line = @line
57
56
  begin
58
- raw_sexp_and_marker_by_lineno(@line = line)
57
+ raw_sexp_and_marker_by_lineno(@line)
59
58
  rescue CannotAnalyseCodeError
60
- if RUBY_PLATFORM =~ /java/i
61
- line += 1
62
- retry
63
- else
64
- raise $!
65
- end
59
+ # NOTE: Tmp fix for JRuby's buggy line-numbering within Proc#inspect
60
+ RUBY_PLATFORM =~ /java/i ? (@line += 1 ; retry) : raise($!)
61
+ ensure
62
+ @raw_code = nil
66
63
  end
67
64
  end
68
65
 
69
66
  def raw_sexp_and_marker_by_lineno(lineno)
70
- # TODO: Ugly chunk, need some lovely cleanup !!
71
67
  (%W{#{@klass}\.new lambda|proc|Proc\.new} + matchers).each do |declarative|
72
- regexp = /^((.*?)(#{declarative})(\s*(?:do|\{)\s*(?:\|(?:[^\|]*)\|\s*)?)(.*)?)$/m
73
- raw = raw_code
74
- lines1, lines2 = [(0 .. (lineno - 2)), (lineno.pred .. -1)].map{|r| raw[r] }
75
- prepend, type, block_start, append = lines2[0].match(regexp)[2..5] rescue next
76
-
77
- if lines2[0] =~ /^(.*?\W)?(#{declarative})(\W.*?\W(#{declarative}))+(\W.*)?$/
78
- msg = "Static code analysis can only handle single occurrence of '%s' per line !!" %
79
- declarative.split('|').join("'/'")
80
- raise CannotAnalyseCodeError.new(msg)
81
- elsif lines2[0] =~ /^(.*?\W)?(#{declarative})(\W.*)?$/
82
- marker = "__serializable_proc_marker_#{lineno}__"
83
- line = "#{prepend}proc#{block_start} #{marker}; #{append}"
84
- lines = lines1.join + line + lines2[1..-1].join
85
- return [RUBY_PARSER.parse(lines, @file).inspect, marker]
86
- end
68
+ ensure_no_repeated_occurrence(lineno, declarative)
69
+ args = raw_sexp_and_marker_args(lineno, declarative) and return args
87
70
  end
88
71
  raise CannotAnalyseCodeError.new('Cannot find specified initializer !!')
89
72
  end
90
73
 
74
+ def ensure_no_repeated_occurrence(lineno, declarative)
75
+ if raw_code[lineno.pred] =~ /^(.*?\W)?(#{declarative})(\W.*?\W(#{declarative}))+(\W.*)?$/
76
+ msg = "Static code analysis can only handle single occurrence of '%s' per line !!" %
77
+ declarative.split('|').join("'/'")
78
+ raise CannotAnalyseCodeError.new(msg)
79
+ end
80
+ end
81
+
82
+ def raw_sexp_and_marker_args(lineno, declarative)
83
+ begin
84
+ raise if (line = raw_code[lineno.pred]) !~ /^(.*?\W)?(#{declarative})(\W.*)?$/
85
+ regexp = /^((.*?)(#{declarative})(\s*(?:do|\{)\s*(?:\|(?:[^\|]*)\|\s*)?)(.*)?)$/m
86
+ prepend, type, block_start, append = line.match(regexp)[2..5]
87
+ marker = "__serializable_proc_marker_#{lineno}__"
88
+ raw_code[lineno.pred] = "#{prepend}proc#{block_start} #{marker}; #{append}"
89
+ [RUBY_PARSER.parse(raw_code.join, @file).inspect, marker]
90
+ rescue
91
+ nil
92
+ end
93
+ end
94
+
91
95
  def raw_code
92
- File.readlines(@file)
96
+ @raw_code ||= File.readlines(@file)
93
97
  end
94
98
 
95
99
  end
@@ -5,7 +5,7 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{serializable_proc}
8
- s.version = "0.3.0"
8
+ s.version = "0.3.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"]
@@ -72,13 +72,27 @@ Gem::Specification.new do |s|
72
72
  "spec/spec_helper.rb"
73
73
  ]
74
74
  s.homepage = %q{http://github.com/ngty/serializable_proc}
75
+ s.post_install_message = %q{
76
+ /////////////////////////////////////////////////////////////////////////////////
77
+
78
+ ** SerializableProc **
79
+
80
+ You are installing SerializableProc on a ruby platform & version that supports
81
+ ParseTree. With ParseTree, u can enjoy better performance of SerializableProc,
82
+ as well as other dynamic code analysis goodness, as compared to the default
83
+ implementation using RubyParser's less flexible static code analysis.
84
+
85
+ Anyway, u have been informed, SerializableProc will fallback on its default
86
+ implementation using RubyParser.
87
+
88
+ /////////////////////////////////////////////////////////////////////////////////
89
+ }
75
90
  s.rdoc_options = ["--charset=UTF-8"]
76
91
  s.require_paths = ["lib"]
77
- s.rubygems_version = %q{1.3.6}
92
+ s.rubygems_version = %q{1.3.7}
78
93
  s.summary = %q{Proc that can be serialized (as the name suggests)}
79
94
  s.test_files = [
80
- "spec/spec_helper.rb",
81
- "spec/proc_like/extras_spec.rb",
95
+ "spec/proc_like/extras_spec.rb",
82
96
  "spec/proc_like/invoking_with_local_vars_spec.rb",
83
97
  "spec/proc_like/invoking_with_instance_vars_spec.rb",
84
98
  "spec/proc_like/invoking_with_class_vars_spec.rb",
@@ -110,14 +124,15 @@ Gem::Specification.new do |s|
110
124
  "spec/bounded_vars/local_vars_spec.rb",
111
125
  "spec/bounded_vars/global_vars_spec.rb",
112
126
  "spec/bounded_vars/instance_vars_spec.rb",
113
- "spec/bounded_vars/class_vars_within_block_scope_spec.rb"
127
+ "spec/bounded_vars/class_vars_within_block_scope_spec.rb",
128
+ "spec/spec_helper.rb"
114
129
  ]
115
130
 
116
131
  if s.respond_to? :specification_version then
117
132
  current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
118
133
  s.specification_version = 3
119
134
 
120
- if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
135
+ if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
121
136
  s.add_runtime_dependency(%q<ruby2ruby>, [">= 1.2.4"])
122
137
  s.add_development_dependency(%q<bacon>, [">= 0"])
123
138
  else
@@ -27,7 +27,16 @@ describe 'Extracting class vars' do
27
27
  @@x, @@y = 'awe', 'some'
28
28
  should_have_empty_binding \
29
29
  SerializableProc.new {
30
- @@_not_isolated_vars = :class;
30
+ @@_not_isolated_vars = :class
31
+ @@x + @@y
32
+ }
33
+ end
34
+
35
+ should 'not handle outer-scoped ones if @@_not_isolated_vars includes :all' do
36
+ @@x, @@y = 'awe', 'some'
37
+ should_have_empty_binding \
38
+ SerializableProc.new {
39
+ @@_not_isolated_vars = :all
31
40
  @@x + @@y
32
41
  }
33
42
  end
@@ -36,7 +45,17 @@ describe 'Extracting class vars' do
36
45
  @@x, @@y = 'awe', 'some'
37
46
  should_have_empty_binding \
38
47
  SerializableProc.new {
39
- @@_not_isolated_vars = :class;
48
+ @@_not_isolated_vars = :class
49
+ @@z = 'wonder'
50
+ %w{a b}.each{ puts @@z, @@x, @@y }
51
+ }
52
+ end
53
+
54
+ should "not handle inner-scoped ones if @@_not_isolated_vars includes :all" do
55
+ @@x, @@y = 'awe', 'some'
56
+ should_have_empty_binding \
57
+ SerializableProc.new {
58
+ @@_not_isolated_vars = :all
40
59
  @@z = 'wonder'
41
60
  %w{a b}.each{ puts @@z, @@x, @@y }
42
61
  }
@@ -19,6 +19,15 @@ describe 'Extracting class vars within block scope' do
19
19
  }
20
20
  end
21
21
 
22
+ should "not handle if @@_not_isolated_vars includes :all" do
23
+ @@x = 'ox'
24
+ should_have_empty_binding \
25
+ SerializableProc.new {
26
+ @@_not_isolated_vars = :all
27
+ def test ; @@x = 'cx' ; end
28
+ }
29
+ end
30
+
22
31
  should "not handle if @@_not_isolated_vars excludes :class" do
23
32
  @@x = 'ox'
24
33
  should_have_empty_binding \
@@ -27,7 +27,16 @@ describe 'Extracting global vars' do
27
27
  $x, $y = 'awe', 'some'
28
28
  should_have_empty_binding \
29
29
  SerializableProc.new {
30
- @@_not_isolated_vars = :global;
30
+ @@_not_isolated_vars = :global
31
+ $x + $y
32
+ }
33
+ end
34
+
35
+ should 'not handle outer-scoped ones if @@_not_isolated_vars includes :all' do
36
+ $x, $y = 'awe', 'some'
37
+ should_have_empty_binding \
38
+ SerializableProc.new {
39
+ @@_not_isolated_vars = :all
31
40
  $x + $y
32
41
  }
33
42
  end
@@ -36,7 +45,17 @@ describe 'Extracting global vars' do
36
45
  $x, $y = 'awe', 'some'
37
46
  should_have_empty_binding \
38
47
  SerializableProc.new {
39
- @@_not_isolated_vars = :global;
48
+ @@_not_isolated_vars = :global
49
+ $z = 'wonder'
50
+ %w{a b}.each{ puts $z, $x, $y }
51
+ }
52
+ end
53
+
54
+ should "not handle inner-scoped ones if @@_not_isolated_vars includes :all" do
55
+ $x, $y = 'awe', 'some'
56
+ should_have_empty_binding \
57
+ SerializableProc.new {
58
+ @@_not_isolated_vars = :all
40
59
  $z = 'wonder'
41
60
  %w{a b}.each{ puts $z, $x, $y }
42
61
  }
@@ -19,6 +19,15 @@ describe 'Extracting global vars within block scope' do
19
19
  }
20
20
  end
21
21
 
22
+ should "not handle if @@_not_isolated_vars includes :all" do
23
+ $x = 'ox'
24
+ should_have_empty_binding \
25
+ SerializableProc.new {
26
+ @@_not_isolated_vars = :all
27
+ def test ; $x = 'gx' ; end
28
+ }
29
+ end
30
+
22
31
  should "not handle if @@_not_isolated_vars excludes :global" do
23
32
  $x = 'ox'
24
33
  should_have_empty_binding \
@@ -27,7 +27,16 @@ describe 'Extracting instance vars' do
27
27
  @x, @y = 'awe', 'some'
28
28
  should_have_empty_binding \
29
29
  SerializableProc.new {
30
- @@_not_isolated_vars = :instance;
30
+ @@_not_isolated_vars = :instance
31
+ @x + @y
32
+ }
33
+ end
34
+
35
+ should 'not handle outer-scoped ones if @@_not_isolated_vars includes :all' do
36
+ @x, @y = 'awe', 'some'
37
+ should_have_empty_binding \
38
+ SerializableProc.new {
39
+ @@_not_isolated_vars = :all
31
40
  @x + @y
32
41
  }
33
42
  end
@@ -36,7 +45,17 @@ describe 'Extracting instance vars' do
36
45
  @x, @y = 'awe', 'some'
37
46
  should_have_empty_binding \
38
47
  SerializableProc.new {
39
- @@_not_isolated_vars = :instance;
48
+ @@_not_isolated_vars = :instance
49
+ @z = 'wonder'
50
+ %w{a b}.each{ puts @z, @x, @y }
51
+ }
52
+ end
53
+
54
+ should "not handle inner-scoped ones if @@_not_isolated_vars includes :all" do
55
+ @x, @y = 'awe', 'some'
56
+ should_have_empty_binding \
57
+ SerializableProc.new {
58
+ @@_not_isolated_vars = :all
40
59
  @z = 'wonder'
41
60
  %w{a b}.each{ puts @z, @x, @y }
42
61
  }
@@ -19,6 +19,15 @@ describe 'Extracting instance vars within block scope' do
19
19
  }
20
20
  end
21
21
 
22
+ should "not handle if @@_not_isolated_vars includes :all" do
23
+ @x = 'ox'
24
+ should_have_empty_binding \
25
+ SerializableProc.new {
26
+ @@_not_isolated_vars = :all
27
+ def test ; @x = 'ix' ; end
28
+ }
29
+ end
30
+
22
31
  should "not handle if @@_not_isolated_vars excludes :instance" do
23
32
  @x = 'ox'
24
33
  should_have_empty_binding \
@@ -27,7 +27,16 @@ describe 'Extracting local vars' do
27
27
  x, y = 'awe', 'some'
28
28
  should_have_empty_binding \
29
29
  SerializableProc.new {
30
- @@_not_isolated_vars = :local;
30
+ @@_not_isolated_vars = :local
31
+ x + y
32
+ }
33
+ end
34
+
35
+ should 'not handle outer-scoped ones if @@_not_isolated_vars includes :all' do
36
+ x, y = 'awe', 'some'
37
+ should_have_empty_binding \
38
+ SerializableProc.new {
39
+ @@_not_isolated_vars = :all
31
40
  x + y
32
41
  }
33
42
  end
@@ -36,7 +45,17 @@ describe 'Extracting local vars' do
36
45
  x, y = 'awe', 'some'
37
46
  should_have_empty_binding \
38
47
  SerializableProc.new {
39
- @@_not_isolated_vars = :local;
48
+ @@_not_isolated_vars = :local
49
+ z = 'wonder'
50
+ %w{a b}.each{ puts z, x, y }
51
+ }
52
+ end
53
+
54
+ should "not handle inner-scoped ones if @@_not_isolated_vars includes :all" do
55
+ x, y = 'awe', 'some'
56
+ should_have_empty_binding \
57
+ SerializableProc.new {
58
+ @@_not_isolated_vars = :all
40
59
  z = 'wonder'
41
60
  %w{a b}.each{ puts z, x, y }
42
61
  }
@@ -19,6 +19,15 @@ describe 'Extracting local vars within block scope' do
19
19
  }
20
20
  end
21
21
 
22
+ should "not handle if @@_mingle_vars includes :all" do
23
+ x = 'ox'
24
+ should_have_empty_binding \
25
+ SerializableProc.new {
26
+ @@_mingle_vars = :all
27
+ def test ; x = 'lx' ; end
28
+ }
29
+ end
30
+
22
31
  should "not handle if @@_mingle_vars excludes :local" do
23
32
  x = 'ox'
24
33
  should_have_empty_binding \
metadata CHANGED
@@ -1,15 +1,16 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: serializable_proc
3
3
  version: !ruby/object:Gem::Version
4
+ hash: 17
4
5
  prerelease: false
5
6
  segments:
6
- - 0
7
- - 3
8
- - 0
9
- version: 0.3.0
7
+ - 0
8
+ - 3
9
+ - 1
10
+ version: 0.3.1
10
11
  platform: ruby
11
12
  authors:
12
- - NgTzeYang
13
+ - NgTzeYang
13
14
  autorequire:
14
15
  bindir: bin
15
16
  cert_chain: []
@@ -17,32 +18,36 @@ cert_chain: []
17
18
  date: 2010-08-18 00:00:00 +08:00
18
19
  default_executable:
19
20
  dependencies:
20
- - !ruby/object:Gem::Dependency
21
- name: ruby2ruby
22
- prerelease: false
23
- requirement: &id001 !ruby/object:Gem::Requirement
24
- requirements:
25
- - - ">="
26
- - !ruby/object:Gem::Version
27
- segments:
28
- - 1
29
- - 2
30
- - 4
31
- version: 1.2.4
32
- type: :runtime
33
- version_requirements: *id001
34
- - !ruby/object:Gem::Dependency
35
- name: bacon
36
- prerelease: false
37
- requirement: &id002 !ruby/object:Gem::Requirement
38
- requirements:
39
- - - ">="
40
- - !ruby/object:Gem::Version
41
- segments:
42
- - 0
43
- version: "0"
44
- type: :development
45
- version_requirements: *id002
21
+ - !ruby/object:Gem::Dependency
22
+ name: ruby2ruby
23
+ prerelease: false
24
+ requirement: &id001 !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ">="
28
+ - !ruby/object:Gem::Version
29
+ hash: 23
30
+ segments:
31
+ - 1
32
+ - 2
33
+ - 4
34
+ version: 1.2.4
35
+ type: :runtime
36
+ version_requirements: *id001
37
+ - !ruby/object:Gem::Dependency
38
+ name: bacon
39
+ prerelease: false
40
+ requirement: &id002 !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ">="
44
+ - !ruby/object:Gem::Version
45
+ hash: 3
46
+ segments:
47
+ - 0
48
+ version: "0"
49
+ type: :development
50
+ version_requirements: *id002
46
51
  description: "\n Give & take, serializing a ruby proc is possible, though not a perfect one.\n Requires either ParseTree (faster) or RubyParser (& Ruby2Ruby).\n "
47
52
  email: ngty77@gmail.com
48
53
  executables: []
@@ -50,121 +55,125 @@ executables: []
50
55
  extensions: []
51
56
 
52
57
  extra_rdoc_files:
53
- - LICENSE
54
- - README.rdoc
58
+ - LICENSE
59
+ - README.rdoc
55
60
  files:
56
- - .document
57
- - .gitignore
58
- - HISTORY.txt
59
- - LICENSE
60
- - README.rdoc
61
- - Rakefile
62
- - VERSION
63
- - lib/serializable_proc.rb
64
- - lib/serializable_proc/binding.rb
65
- - lib/serializable_proc/fixes.rb
66
- - lib/serializable_proc/isolatable.rb
67
- - lib/serializable_proc/marshalable.rb
68
- - lib/serializable_proc/parsers.rb
69
- - lib/serializable_proc/parsers/dynamic.rb
70
- - lib/serializable_proc/parsers/static.rb
71
- - serializable_proc.gemspec
72
- - spec/bounded_vars/class_vars_spec.rb
73
- - spec/bounded_vars/class_vars_within_block_scope_spec.rb
74
- - spec/bounded_vars/errors_spec.rb
75
- - spec/bounded_vars/global_vars_spec.rb
76
- - spec/bounded_vars/global_vars_within_block_scope_spec.rb
77
- - spec/bounded_vars/instance_vars_spec.rb
78
- - spec/bounded_vars/instance_vars_within_block_scope_spec.rb
79
- - spec/bounded_vars/local_vars_spec.rb
80
- - spec/bounded_vars/local_vars_within_block_scope_spec.rb
81
- - spec/code_block/errors_spec.rb
82
- - spec/code_block/magic_vars_spec.rb
83
- - spec/code_block/multiple_arities_spec.rb
84
- - spec/code_block/optional_arity_spec.rb
85
- - spec/code_block/renaming_vars_spec.rb
86
- - spec/code_block/single_arity_spec.rb
87
- - spec/code_block/zero_arity_spec.rb
88
- - spec/extending/new_matcher_w_multiple_arities_spec.rb
89
- - spec/extending/new_matcher_w_optional_arity_spec.rb
90
- - spec/extending/new_matcher_w_single_arity_spec.rb
91
- - spec/extending/new_matcher_w_zero_arity_spec.rb
92
- - spec/extending/spec_helper.rb
93
- - spec/extending/subclassing_w_multiple_arities_spec.rb
94
- - spec/extending/subclassing_w_optional_arity_spec.rb
95
- - spec/extending/subclassing_w_single_arity_spec.rb
96
- - spec/extending/subclassing_w_zero_arity_spec.rb
97
- - spec/proc_like/extras_spec.rb
98
- - spec/proc_like/invoking_with_args_spec.rb
99
- - spec/proc_like/invoking_with_class_vars_spec.rb
100
- - spec/proc_like/invoking_with_global_vars_spec.rb
101
- - spec/proc_like/invoking_with_instance_vars_spec.rb
102
- - spec/proc_like/invoking_with_local_vars_spec.rb
103
- - spec/proc_like/marshalling_spec.rb
104
- - spec/proc_like/others_spec.rb
105
- - spec/spec_helper.rb
61
+ - .document
62
+ - .gitignore
63
+ - HISTORY.txt
64
+ - LICENSE
65
+ - README.rdoc
66
+ - Rakefile
67
+ - VERSION
68
+ - lib/serializable_proc.rb
69
+ - lib/serializable_proc/binding.rb
70
+ - lib/serializable_proc/fixes.rb
71
+ - lib/serializable_proc/isolatable.rb
72
+ - lib/serializable_proc/marshalable.rb
73
+ - lib/serializable_proc/parsers.rb
74
+ - lib/serializable_proc/parsers/dynamic.rb
75
+ - lib/serializable_proc/parsers/static.rb
76
+ - serializable_proc.gemspec
77
+ - spec/bounded_vars/class_vars_spec.rb
78
+ - spec/bounded_vars/class_vars_within_block_scope_spec.rb
79
+ - spec/bounded_vars/errors_spec.rb
80
+ - spec/bounded_vars/global_vars_spec.rb
81
+ - spec/bounded_vars/global_vars_within_block_scope_spec.rb
82
+ - spec/bounded_vars/instance_vars_spec.rb
83
+ - spec/bounded_vars/instance_vars_within_block_scope_spec.rb
84
+ - spec/bounded_vars/local_vars_spec.rb
85
+ - spec/bounded_vars/local_vars_within_block_scope_spec.rb
86
+ - spec/code_block/errors_spec.rb
87
+ - spec/code_block/magic_vars_spec.rb
88
+ - spec/code_block/multiple_arities_spec.rb
89
+ - spec/code_block/optional_arity_spec.rb
90
+ - spec/code_block/renaming_vars_spec.rb
91
+ - spec/code_block/single_arity_spec.rb
92
+ - spec/code_block/zero_arity_spec.rb
93
+ - spec/extending/new_matcher_w_multiple_arities_spec.rb
94
+ - spec/extending/new_matcher_w_optional_arity_spec.rb
95
+ - spec/extending/new_matcher_w_single_arity_spec.rb
96
+ - spec/extending/new_matcher_w_zero_arity_spec.rb
97
+ - spec/extending/spec_helper.rb
98
+ - spec/extending/subclassing_w_multiple_arities_spec.rb
99
+ - spec/extending/subclassing_w_optional_arity_spec.rb
100
+ - spec/extending/subclassing_w_single_arity_spec.rb
101
+ - spec/extending/subclassing_w_zero_arity_spec.rb
102
+ - spec/proc_like/extras_spec.rb
103
+ - spec/proc_like/invoking_with_args_spec.rb
104
+ - spec/proc_like/invoking_with_class_vars_spec.rb
105
+ - spec/proc_like/invoking_with_global_vars_spec.rb
106
+ - spec/proc_like/invoking_with_instance_vars_spec.rb
107
+ - spec/proc_like/invoking_with_local_vars_spec.rb
108
+ - spec/proc_like/marshalling_spec.rb
109
+ - spec/proc_like/others_spec.rb
110
+ - spec/spec_helper.rb
106
111
  has_rdoc: true
107
112
  homepage: http://github.com/ngty/serializable_proc
108
113
  licenses: []
109
114
 
110
- post_install_message:
115
+ post_install_message: "\n /////////////////////////////////////////////////////////////////////////////////\n\n ** SerializableProc **\n\n You are installing SerializableProc on a ruby platform & version that supports\n ParseTree. With ParseTree, u can enjoy better performance of SerializableProc,\n as well as other dynamic code analysis goodness, as compared to the default\n implementation using RubyParser's less flexible static code analysis.\n\n Anyway, u have been informed, SerializableProc will fallback on its default\n implementation using RubyParser.\n\n /////////////////////////////////////////////////////////////////////////////////\n "
111
116
  rdoc_options:
112
- - --charset=UTF-8
117
+ - --charset=UTF-8
113
118
  require_paths:
114
- - lib
119
+ - lib
115
120
  required_ruby_version: !ruby/object:Gem::Requirement
121
+ none: false
116
122
  requirements:
117
- - - ">="
118
- - !ruby/object:Gem::Version
119
- segments:
120
- - 0
121
- version: "0"
123
+ - - ">="
124
+ - !ruby/object:Gem::Version
125
+ hash: 3
126
+ segments:
127
+ - 0
128
+ version: "0"
122
129
  required_rubygems_version: !ruby/object:Gem::Requirement
130
+ none: false
123
131
  requirements:
124
- - - ">="
125
- - !ruby/object:Gem::Version
126
- segments:
127
- - 0
128
- version: "0"
132
+ - - ">="
133
+ - !ruby/object:Gem::Version
134
+ hash: 3
135
+ segments:
136
+ - 0
137
+ version: "0"
129
138
  requirements: []
130
139
 
131
140
  rubyforge_project:
132
- rubygems_version: 1.3.6
141
+ rubygems_version: 1.3.7
133
142
  signing_key:
134
143
  specification_version: 3
135
144
  summary: Proc that can be serialized (as the name suggests)
136
145
  test_files:
137
- - spec/spec_helper.rb
138
- - spec/proc_like/extras_spec.rb
139
- - spec/proc_like/invoking_with_local_vars_spec.rb
140
- - spec/proc_like/invoking_with_instance_vars_spec.rb
141
- - spec/proc_like/invoking_with_class_vars_spec.rb
142
- - spec/proc_like/invoking_with_args_spec.rb
143
- - spec/proc_like/others_spec.rb
144
- - spec/proc_like/invoking_with_global_vars_spec.rb
145
- - spec/proc_like/marshalling_spec.rb
146
- - spec/code_block/magic_vars_spec.rb
147
- - spec/code_block/multiple_arities_spec.rb
148
- - spec/code_block/zero_arity_spec.rb
149
- - spec/code_block/errors_spec.rb
150
- - spec/code_block/renaming_vars_spec.rb
151
- - spec/code_block/single_arity_spec.rb
152
- - spec/code_block/optional_arity_spec.rb
153
- - spec/extending/subclassing_w_optional_arity_spec.rb
154
- - spec/extending/subclassing_w_single_arity_spec.rb
155
- - spec/extending/new_matcher_w_multiple_arities_spec.rb
156
- - spec/extending/subclassing_w_zero_arity_spec.rb
157
- - spec/extending/new_matcher_w_single_arity_spec.rb
158
- - spec/extending/subclassing_w_multiple_arities_spec.rb
159
- - spec/extending/new_matcher_w_optional_arity_spec.rb
160
- - spec/extending/new_matcher_w_zero_arity_spec.rb
161
- - spec/extending/spec_helper.rb
162
- - spec/bounded_vars/global_vars_within_block_scope_spec.rb
163
- - spec/bounded_vars/instance_vars_within_block_scope_spec.rb
164
- - spec/bounded_vars/errors_spec.rb
165
- - spec/bounded_vars/local_vars_within_block_scope_spec.rb
166
- - spec/bounded_vars/class_vars_spec.rb
167
- - spec/bounded_vars/local_vars_spec.rb
168
- - spec/bounded_vars/global_vars_spec.rb
169
- - spec/bounded_vars/instance_vars_spec.rb
170
- - spec/bounded_vars/class_vars_within_block_scope_spec.rb
146
+ - spec/proc_like/extras_spec.rb
147
+ - spec/proc_like/invoking_with_local_vars_spec.rb
148
+ - spec/proc_like/invoking_with_instance_vars_spec.rb
149
+ - spec/proc_like/invoking_with_class_vars_spec.rb
150
+ - spec/proc_like/invoking_with_args_spec.rb
151
+ - spec/proc_like/others_spec.rb
152
+ - spec/proc_like/invoking_with_global_vars_spec.rb
153
+ - spec/proc_like/marshalling_spec.rb
154
+ - spec/code_block/magic_vars_spec.rb
155
+ - spec/code_block/multiple_arities_spec.rb
156
+ - spec/code_block/zero_arity_spec.rb
157
+ - spec/code_block/errors_spec.rb
158
+ - spec/code_block/renaming_vars_spec.rb
159
+ - spec/code_block/single_arity_spec.rb
160
+ - spec/code_block/optional_arity_spec.rb
161
+ - spec/extending/subclassing_w_optional_arity_spec.rb
162
+ - spec/extending/subclassing_w_single_arity_spec.rb
163
+ - spec/extending/new_matcher_w_multiple_arities_spec.rb
164
+ - spec/extending/subclassing_w_zero_arity_spec.rb
165
+ - spec/extending/new_matcher_w_single_arity_spec.rb
166
+ - spec/extending/subclassing_w_multiple_arities_spec.rb
167
+ - spec/extending/new_matcher_w_optional_arity_spec.rb
168
+ - spec/extending/new_matcher_w_zero_arity_spec.rb
169
+ - spec/extending/spec_helper.rb
170
+ - spec/bounded_vars/global_vars_within_block_scope_spec.rb
171
+ - spec/bounded_vars/instance_vars_within_block_scope_spec.rb
172
+ - spec/bounded_vars/errors_spec.rb
173
+ - spec/bounded_vars/local_vars_within_block_scope_spec.rb
174
+ - spec/bounded_vars/class_vars_spec.rb
175
+ - spec/bounded_vars/local_vars_spec.rb
176
+ - spec/bounded_vars/global_vars_spec.rb
177
+ - spec/bounded_vars/instance_vars_spec.rb
178
+ - spec/bounded_vars/class_vars_within_block_scope_spec.rb
179
+ - spec/spec_helper.rb