zeevex_delayed 0.9.0 → 0.9.2

Sign up to get free protection for your applications and to get access to all the features.
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