serializable_proc 0.3.0 → 0.3.1

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.
@@ -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