serializable_proc 0.1.0 → 0.1.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.
data/HISTORY.txt CHANGED
@@ -1,4 +1,8 @@
1
- === 0.1.0 (Apr 14, 2010)
1
+ === 0.1.1 (Aug 16, 2010)
2
2
 
3
- = 1st gem release !! [#ngty]
3
+ * acheived compatibility with MRI-1.8.6 [#ngty]
4
+
5
+ === 0.1.0 (Aug 14, 2010)
6
+
7
+ * 1st gem release !! [#ngty]
4
8
 
data/README.rdoc CHANGED
@@ -102,6 +102,12 @@ But the following will work as expected:
102
102
  x_proc = lambda { x }
103
103
  create_serializable_proc(&x_proc)
104
104
 
105
+ == Supported Rubies
106
+
107
+ SerializableProc has been tested to work on the following rubies:
108
+
109
+ 1. MRI 1.8.6, 1.8.7 & 1.9.1
110
+
105
111
  == TODO (just brain-dumping)
106
112
 
107
113
  1. Provide flexibility for user to specify whether global variables should be isolated,
@@ -114,7 +120,8 @@ But the following will work as expected:
114
120
  of ParseTree or RubyParser
115
121
  4. Implement workaround to tackle line-numbering bug in JRuby, which causes the
116
122
  RubyParser-based implementation to fail, for more info abt JRuby's line-numbering
117
- bug, see http://stackoverflow.com/questions/3454838/jruby-line-numbering-problem
123
+ bug, see http://stackoverflow.com/questions/3454838/jruby-line-numbering-problem &
124
+ http://jira.codehaus.org/browse/JRUBY-5014
118
125
 
119
126
  == Note on Patches/Pull Requests
120
127
 
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.1.0
1
+ 0.1.1
@@ -5,6 +5,7 @@ require 'serializable_proc/marshalable'
5
5
  require 'serializable_proc/parsers'
6
6
  require 'serializable_proc/binding'
7
7
  require 'serializable_proc/sandboxer'
8
+ require 'serializable_proc/fixes'
8
9
 
9
10
  begin
10
11
  require 'parse_tree'
@@ -13,7 +13,7 @@ class SerializableProc
13
13
  ignore, var = m[1..2]
14
14
  sexp_str.sub!(ignore,'')
15
15
  begin
16
- val = binding.eval(var) rescue nil
16
+ val = eval(var, binding) rescue nil
17
17
  @vars.update(Sandboxer.fvar(var) => mclone(val))
18
18
  rescue TypeError
19
19
  raise CannotSerializeVariableError.new("Variable #{var} cannot be serialized !!")
@@ -24,8 +24,9 @@ class SerializableProc
24
24
  def eval!
25
25
  @binding ||= (
26
26
  set_vars = @vars.map{|(k,v)| "#{k} = Marshal.load(%|#{mdump(v)}|)" } * '; '
27
- (binding = Kernel.binding).eval(set_vars)
28
- binding.extend(Extensions)
27
+ eval(set_vars, binding = Kernel.binding)
28
+ binding
29
+ # binding.extend(Extensions)
29
30
  )
30
31
  end
31
32
 
@@ -0,0 +1,9 @@
1
+ # NOTE: This file contains hackeries to ensure compatibility with different rubies
2
+
3
+ unless 1.respond_to?(:pred)
4
+ class Integer
5
+ def pred
6
+ self - 1
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,97 @@
1
+ # Generated by jeweler
2
+ # DO NOT EDIT THIS FILE DIRECTLY
3
+ # Instead, edit Jeweler::Tasks in Rakefile, and run the gemspec command
4
+ # -*- encoding: utf-8 -*-
5
+
6
+ Gem::Specification.new do |s|
7
+ s.name = %q{serializable_proc}
8
+ s.version = "0.1.1"
9
+
10
+ s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
+ s.authors = ["NgTzeYang"]
12
+ s.date = %q{2010-08-16}
13
+ s.description = %q{
14
+ Give & take, serializing a ruby proc is possible, though not a perfect one.
15
+ Requires either ParseTree (faster) or RubyParser (& Ruby2Ruby).
16
+ }
17
+ s.email = %q{ngty77@gmail.com}
18
+ s.extra_rdoc_files = [
19
+ "LICENSE",
20
+ "README.rdoc"
21
+ ]
22
+ s.files = [
23
+ ".document",
24
+ ".gitignore",
25
+ "HISTORY.txt",
26
+ "LICENSE",
27
+ "README.rdoc",
28
+ "Rakefile",
29
+ "VERSION",
30
+ "lib/serializable_proc.rb",
31
+ "lib/serializable_proc/binding.rb",
32
+ "lib/serializable_proc/fixes.rb",
33
+ "lib/serializable_proc/marshalable.rb",
34
+ "lib/serializable_proc/parsers.rb",
35
+ "lib/serializable_proc/parsers/pt.rb",
36
+ "lib/serializable_proc/parsers/rp.rb",
37
+ "lib/serializable_proc/sandboxer.rb",
38
+ "serializable_proc.gemspec",
39
+ "spec/extracting_bound_variables_spec.rb",
40
+ "spec/initializing_errors_spec.rb",
41
+ "spec/marshalling_spec.rb",
42
+ "spec/multiple_arities_serializable_proc_spec.rb",
43
+ "spec/one_arity_serializable_proc_spec.rb",
44
+ "spec/optional_arity_serializable_proc_spec.rb",
45
+ "spec/proc_like_spec.rb",
46
+ "spec/spec_helper.rb",
47
+ "spec/zero_arity_serializable_proc_spec.rb"
48
+ ]
49
+ s.homepage = %q{http://github.com/ngty/serializable_proc}
50
+ s.post_install_message = %q{
51
+ /////////////////////////////////////////////////////////////////////////////////
52
+
53
+ ** SerializableProc **
54
+
55
+ You are installing SerializableProc on a ruby platform & version that supports
56
+ ParseTree. With ParseTree, u can enjoy better performance of SerializableProc,
57
+ as well as other dynamic code analysis goodness, as compared to the default
58
+ implementation using RubyParser's less flexible static code analysis.
59
+
60
+ Anyway, u have been informed, SerializableProc will fallback on its default
61
+ implementation using RubyParser.
62
+
63
+ /////////////////////////////////////////////////////////////////////////////////
64
+ }
65
+ s.rdoc_options = ["--charset=UTF-8"]
66
+ s.require_paths = ["lib"]
67
+ s.rubygems_version = %q{1.3.7}
68
+ s.summary = %q{Proc that can be serialized (as the name suggests)}
69
+ s.test_files = [
70
+ "spec/initializing_errors_spec.rb",
71
+ "spec/extracting_bound_variables_spec.rb",
72
+ "spec/one_arity_serializable_proc_spec.rb",
73
+ "spec/zero_arity_serializable_proc_spec.rb",
74
+ "spec/multiple_arities_serializable_proc_spec.rb",
75
+ "spec/marshalling_spec.rb",
76
+ "spec/optional_arity_serializable_proc_spec.rb",
77
+ "spec/spec_helper.rb",
78
+ "spec/proc_like_spec.rb"
79
+ ]
80
+
81
+ if s.respond_to? :specification_version then
82
+ current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
83
+ s.specification_version = 3
84
+
85
+ if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
86
+ s.add_runtime_dependency(%q<ruby2ruby>, [">= 1.2.4"])
87
+ s.add_development_dependency(%q<bacon>, [">= 0"])
88
+ else
89
+ s.add_dependency(%q<ruby2ruby>, [">= 1.2.4"])
90
+ s.add_dependency(%q<bacon>, [">= 0"])
91
+ end
92
+ else
93
+ s.add_dependency(%q<ruby2ruby>, [">= 1.2.4"])
94
+ s.add_dependency(%q<bacon>, [">= 0"])
95
+ end
96
+ end
97
+
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: serializable_proc
3
3
  version: !ruby/object:Gem::Version
4
- hash: 27
4
+ hash: 25
5
5
  prerelease: false
6
6
  segments:
7
7
  - 0
8
8
  - 1
9
- - 0
10
- version: 0.1.0
9
+ - 1
10
+ version: 0.1.1
11
11
  platform: ruby
12
12
  authors:
13
13
  - NgTzeYang
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2010-08-14 00:00:00 +08:00
18
+ date: 2010-08-16 00:00:00 +08:00
19
19
  default_executable:
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency
@@ -67,11 +67,13 @@ files:
67
67
  - VERSION
68
68
  - lib/serializable_proc.rb
69
69
  - lib/serializable_proc/binding.rb
70
+ - lib/serializable_proc/fixes.rb
70
71
  - lib/serializable_proc/marshalable.rb
71
72
  - lib/serializable_proc/parsers.rb
72
73
  - lib/serializable_proc/parsers/pt.rb
73
74
  - lib/serializable_proc/parsers/rp.rb
74
75
  - lib/serializable_proc/sandboxer.rb
76
+ - serializable_proc.gemspec
75
77
  - spec/extracting_bound_variables_spec.rb
76
78
  - spec/initializing_errors_spec.rb
77
79
  - spec/marshalling_spec.rb