zeevex_delayed 0.9.0 → 0.9.2

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/Rakefile CHANGED
@@ -12,7 +12,7 @@ namespace :spec do
12
12
  current = %x{rvm-prompt v}
13
13
 
14
14
  fail = false
15
- %w{1.8.7 1.9.3 ree}.each do |version|
15
+ %w{1.8.7 1.9.2}.each do |version|
16
16
  puts "Switching to #{version}"
17
17
  Bundler.with_clean_env do
18
18
  system %{bash -c 'source ~/.rvm/scripts/rvm && rvm #{version} && bundle exec rake spec'}
@@ -29,4 +29,10 @@ namespace :spec do
29
29
  end
30
30
  end
31
31
 
32
- task :default => 'spec:platforms'
32
+
33
+ task :repl do
34
+ sh %q{ bundle exec irb -Ilib -rzeevex_delayed }
35
+ end
36
+
37
+
38
+ task :default => 'spec'
@@ -1,5 +1,5 @@
1
1
  module ZeevexDelayed
2
- VERSION = "0.9.0"
2
+
3
3
  end
4
4
 
5
5
  require 'zeevex_delayed/promise'
@@ -1,18 +1,26 @@
1
1
  require 'zeevex_proxy'
2
2
 
3
3
  module ZeevexDelayed
4
- class Promise < ZeevexProxy::Base
4
+ def self.Promise(*args, &block)
5
+ ZeevexDelayed::Promise.new(*args, &block)
6
+ end
7
+
8
+ def self.promise(*args, &block)
9
+ ZeevexDelayed::Promise.new(*args, &block)
10
+ end
11
+
12
+ class Promise < ZeevexProxy::BasicObject
5
13
 
6
- def initialize(obj=nil, &block)
7
- super
14
+ def initialize(&block)
15
+ raise ::ArgumentError, "Must supply a block!" unless block
16
+ super()
8
17
  @__promise_block = block
9
- raise ArgumentError, "Must supply a block!" unless block
10
18
  end
11
-
19
+
12
20
  def method_missing(name, *args, &block)
13
21
  __force__.__send__(name, *args, &block)
14
22
  end
15
-
23
+
16
24
  def __force__
17
25
  unless @__promise_forced
18
26
  @obj = @__promise_block.call
@@ -27,7 +35,7 @@ module Kernel
27
35
  def force_promise(promise)
28
36
  promise.__force__
29
37
  end
30
-
38
+
31
39
  def promise(&block)
32
40
  ZeevexDelayed::Promise.new &block
33
41
  end
@@ -16,11 +16,19 @@ module ZeevexDelayed
16
16
  # go, don't use this.
17
17
  #
18
18
 
19
- class ThreadPromise < ZeevexProxy::Base
19
+ def self.ThreadPromise(*args, &block)
20
+ ZeevexDelayed::ThreadPromise.new(*args, &block)
21
+ end
22
+
23
+ def self.thread_promise(*args, &block)
24
+ ZeevexDelayed::ThreadPromise.new(*args, &block)
25
+ end
26
+
27
+ class ThreadPromise < ZeevexProxy::BasicObject
20
28
 
21
- def initialize(obj=nil, &block)
22
- raise ArgumentError, "Must supply a block!" unless block_given?
23
- super
29
+ def initialize(&block)
30
+ raise ::ArgumentError, "Must supply a block!" unless ::Kernel.block_given?
31
+ super()
24
32
  @__promise_thread_map = {}
25
33
  @__promise_block = block
26
34
  end
@@ -30,10 +38,10 @@ module ZeevexDelayed
30
38
  end
31
39
 
32
40
  def __force__
33
- unless @__promise_thread_map.has_key?(Thread.current.object_id)
34
- @__promise_thread_map[Thread.current.object_id] = @__promise_block.call
41
+ unless @__promise_thread_map.has_key?(::Thread.current.object_id)
42
+ @__promise_thread_map[::Thread.current.object_id] = @__promise_block.call
35
43
  end
36
- @__promise_thread_map[Thread.current.object_id]
44
+ @__promise_thread_map[::Thread.current.object_id]
37
45
  end
38
46
  end
39
47
  end
@@ -1,3 +1,3 @@
1
1
  module ZeevexDelayed
2
- VERSION = "0.9.0"
2
+ VERSION = "0.9.2"
3
3
  end
@@ -61,7 +61,7 @@ shared_examples_for "basic promise" do
61
61
  context "when forcing computation" do
62
62
  it "should respond to __force__" do
63
63
  # check here because respond_to? invoked on a promise would delegate
64
- promise_class.instance_methods.should include("__force__")
64
+ promise_class.instance_methods.map(&:to_s).should include("__force__")
65
65
  end
66
66
 
67
67
  it "should be computed when Kernel#force_promise is called" do
metadata CHANGED
@@ -1,70 +1,71 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: zeevex_delayed
3
- version: !ruby/object:Gem::Version
4
- prerelease: false
5
- segments:
6
- - 0
7
- - 9
8
- - 0
9
- version: 0.9.0
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.9.2
5
+ prerelease:
10
6
  platform: ruby
11
- authors:
7
+ authors:
12
8
  - Robert Sanders
13
9
  autorequire:
14
10
  bindir: bin
15
11
  cert_chain: []
16
-
17
- date: 2012-05-02 00:00:00 -04:00
18
- default_executable:
19
- dependencies:
20
- - !ruby/object:Gem::Dependency
12
+ date: 2013-06-28 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
21
15
  name: zeevex_proxy
22
- prerelease: false
23
- requirement: &id001 !ruby/object:Gem::Requirement
24
- requirements:
25
- - - ">="
26
- - !ruby/object:Gem::Version
27
- segments:
28
- - 0
29
- version: "0"
16
+ requirement: !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: '0'
30
22
  type: :runtime
31
- version_requirements: *id001
32
- - !ruby/object:Gem::Dependency
33
- name: rspec
34
23
  prerelease: false
35
- requirement: &id002 !ruby/object:Gem::Requirement
36
- requirements:
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ! '>='
28
+ - !ruby/object:Gem::Version
29
+ version: '0'
30
+ - !ruby/object:Gem::Dependency
31
+ name: rspec
32
+ requirement: !ruby/object:Gem::Requirement
33
+ none: false
34
+ requirements:
37
35
  - - ~>
38
- - !ruby/object:Gem::Version
39
- segments:
40
- - 2
41
- - 9
42
- - 0
36
+ - !ruby/object:Gem::Version
43
37
  version: 2.9.0
44
38
  type: :development
45
- version_requirements: *id002
46
- - !ruby/object:Gem::Dependency
47
- name: rake
48
39
  prerelease: false
49
- requirement: &id003 !ruby/object:Gem::Requirement
50
- requirements:
51
- - - ">="
52
- - !ruby/object:Gem::Version
53
- segments:
54
- - 0
55
- version: "0"
40
+ version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ~>
44
+ - !ruby/object:Gem::Version
45
+ version: 2.9.0
46
+ - !ruby/object:Gem::Dependency
47
+ name: rake
48
+ requirement: !ruby/object:Gem::Requirement
49
+ none: false
50
+ requirements:
51
+ - - ! '>='
52
+ - !ruby/object:Gem::Version
53
+ version: '0'
56
54
  type: :development
57
- version_requirements: *id003
55
+ prerelease: false
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ none: false
58
+ requirements:
59
+ - - ! '>='
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
58
62
  description: This gem provides a couple of classes useful for deferred computation.
59
- email:
63
+ email:
60
64
  - robert@zeevex.com
61
65
  executables: []
62
-
63
66
  extensions: []
64
-
65
67
  extra_rdoc_files: []
66
-
67
- files:
68
+ files:
68
69
  - .gitignore
69
70
  - Gemfile
70
71
  - Rakefile
@@ -76,37 +77,37 @@ files:
76
77
  - spec/spec_helper.rb
77
78
  - spec/thread_promise_spec.rb
78
79
  - zeevex_delayed.gemspec
79
- has_rdoc: true
80
- homepage: ""
80
+ homepage: ''
81
81
  licenses: []
82
-
83
82
  post_install_message:
84
83
  rdoc_options: []
85
-
86
- require_paths:
84
+ require_paths:
87
85
  - lib
88
- required_ruby_version: !ruby/object:Gem::Requirement
89
- requirements:
90
- - - ">="
91
- - !ruby/object:Gem::Version
92
- segments:
86
+ required_ruby_version: !ruby/object:Gem::Requirement
87
+ none: false
88
+ requirements:
89
+ - - ! '>='
90
+ - !ruby/object:Gem::Version
91
+ version: '0'
92
+ segments:
93
93
  - 0
94
- version: "0"
95
- required_rubygems_version: !ruby/object:Gem::Requirement
96
- requirements:
97
- - - ">="
98
- - !ruby/object:Gem::Version
99
- segments:
94
+ hash: -1736097360657964090
95
+ required_rubygems_version: !ruby/object:Gem::Requirement
96
+ none: false
97
+ requirements:
98
+ - - ! '>='
99
+ - !ruby/object:Gem::Version
100
+ version: '0'
101
+ segments:
100
102
  - 0
101
- version: "0"
103
+ hash: -1736097360657964090
102
104
  requirements: []
103
-
104
105
  rubyforge_project: zeevex_delayed
105
- rubygems_version: 1.3.6
106
+ rubygems_version: 1.8.25
106
107
  signing_key:
107
108
  specification_version: 3
108
109
  summary: Basic and per-thread promise classes.
109
- test_files:
110
+ test_files:
110
111
  - spec/promise_spec.rb
111
112
  - spec/spec_helper.rb
112
113
  - spec/thread_promise_spec.rb