mr_darcy 0.4.1 → 0.4.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: daed995c326dbe574550d22e13a88d31be6d4cdd
4
- data.tar.gz: 66fdb68f7e247a2410c5771fb6c979fac5eae4f1
3
+ metadata.gz: fc7f7a39633960c2c25aaa833c6c32a1436682f6
4
+ data.tar.gz: 2879b88de3cbc354b378fff40dcb3f052ebe5054
5
5
  SHA512:
6
- metadata.gz: a757c0cc329b5747bf467bb44036044eca65e5d7fe8e6a532262e6216f848bac3c6e61aed79b7e140c912c79a2ab19adb95702ac4f796203dda6e64ef77bebba
7
- data.tar.gz: da4c37e68a05c05bdd3968b1a783bcdca88787cb952b9df32348b7ad59186f8b3ce85cde2ed50114593a1020445718433551b695e5a2d5944b9c0332e2ee81b6
6
+ metadata.gz: 9644421cf5314ee7618b5d01762dbd5f5c56515335910e9275f03f02c1c40d49375184a2e48ac966b8ff784140fa3f8df1e9b373dafb72dcb33562878e511c90
7
+ data.tar.gz: 5062de2330f134e2af6ad98914184cfc1f69c973bad12654ec84159e0fc9b7d7cd808fac177b904063bb1d2af5e21cfd799060d1771cbdd694ef89dcbb0b604a
data/README.md CHANGED
@@ -24,6 +24,10 @@ Or install it yourself as:
24
24
  gem install mr_darcy
25
25
  ```
26
26
 
27
+ ## Documentation
28
+
29
+ API Documentation is available on [rdoc.info](http://rdoc.info/gems/mr_darcy/)
30
+
27
31
  ## Usage
28
32
 
29
33
  ### WARNING
@@ -306,7 +310,7 @@ context.transfer(20).fail do
306
310
  # Oh no, Marty doesn't have enough money, let's borrow some from Doc.
307
311
  BankTransfer.new(money_source: doc_brown, money_destination: marty) \
308
312
  .transfer(20).then
309
- # Thy transferring again.
313
+ # Try transferring again.
310
314
  context.transfer(20)
311
315
  end
312
316
  end
@@ -8,14 +8,24 @@ module MrDarcy
8
8
 
9
9
  module_function
10
10
 
11
+ # Set the driver to use for asynchronicity.
12
+ # See #all_drivers for a list of available
13
+ # drivers on your platform.
11
14
  def driver=(driver)
12
15
  @driver=driver
13
16
  end
14
17
 
18
+ # The current driver in use for asynchronicity.
19
+ # Defaults to :Thread
15
20
  def driver
16
21
  @driver ||= :Thread
17
22
  end
18
23
 
24
+ # The available drivers for your combination of Ruby implementation
25
+ # and operating system.
26
+ # Note that this is possible drivers, not that you have the necessary
27
+ # dependencies installed - ie it doesn't check that you have required
28
+ # celluloid before it tries to use it.
19
29
  def all_drivers
20
30
  return @drivers if @drivers && !@drivers.empty?
21
31
  drivers ||= %w| synchronous thread celluloid em |.map(&:to_sym)
@@ -23,11 +33,47 @@ module MrDarcy
23
33
  @drivers = drivers
24
34
  end
25
35
 
36
+ # Generate a new promise with the provided block.
37
+ # Accepts the following options:
38
+ #
39
+ # * driver: override the default driver.
40
+ #
41
+ # :yields: promise
42
+ #
43
+ # Yields a promise into the block as the first
44
+ # argument so that you can resolve or reject from
45
+ # within the block.
46
+ #
47
+ # MrDarcy.promise do |p|
48
+ # r = rand(10)
49
+ # if r > 5
50
+ # p.resolve r
51
+ # else
52
+ # p.reject r
53
+ # end
54
+ # end
26
55
  def promise opts={}, &block
27
56
  driver = opts[:driver] || self.driver
28
57
  MrDarcy::Promise.new driver: driver, &block
29
58
  end
30
59
 
60
+ # Generate a new promise representing a collection
61
+ # of promises.
62
+ # The collection promise resolves once all the
63
+ # collected promises are resolved and rejects
64
+ # as soon as the first promise rejects.
65
+ #
66
+ # This method collects all promises returned
67
+ # from a provided block:
68
+ #
69
+ # MrDarcy.all_promises do
70
+ # 10.times.map do |i|
71
+ # MrDarcy.promise do |p|
72
+ # sleep 1
73
+ # p.resolve i
74
+ # end
75
+ # end
76
+ # end
31
77
  def all_promises opts={}
32
78
  MrDarcy::Promise::Collection.new yield, opts
33
79
  end
@@ -1,11 +1,28 @@
1
+ require 'forwardable'
2
+
3
+ # This class defines the abstract ability to create DCI roles in MrDarcy.
4
+ # Start by subclassing and adding some roles and actions and away you go.
1
5
  module MrDarcy
2
6
  class Context
7
+ extend Forwardable
8
+
9
+ def_delegators :deferred, :result, :rejected?, :resolved?, :unresolved?
3
10
 
4
11
  class << self
12
+ # Defines a role to be mixed into the roll-player
13
+ # when this context is initialized.
14
+ #
15
+ # See MrDarcy::Role#initialize for argument definitions.
5
16
  def role role_name, options={}, &block
6
17
  self.roles[role_name] = Role.new(role_name, options, &block)
7
18
  end
8
19
 
20
+ # Defines an action that can be performed in this
21
+ # context.
22
+ #
23
+ # * action_name: essentially the name of the method defined in this class.
24
+ #
25
+ # Takes a block with which to define the action.
9
26
  def action action_name, &block
10
27
  define_method action_name do |*args|
11
28
  self.then do |value|
@@ -15,14 +32,22 @@ module MrDarcy
15
32
  end
16
33
  end
17
34
 
35
+ # A list of available roles in this context.
18
36
  def roles
19
37
  @roles ||= {}
20
38
  end
21
39
  end
22
40
 
41
+ # Create an instance of the context. You must pass in role-players
42
+ # for all roles defined in this context using a single hash argument
43
+ # of role names (as symbols) to objects.
44
+ #
45
+ # eg:
46
+ #
47
+ # BankTransfer.new money_source: account1, money_destination: account2
23
48
  def initialize role_players={}
24
49
  @driver = role_players.delete(:driver) || MrDarcy.driver
25
- @deferred = Deferred.new(driver: driver) {}
50
+ @deferred = Deferred.new(driver: driver)
26
51
  deferred.resolve nil
27
52
 
28
53
  roles = self.class.roles
@@ -38,6 +63,7 @@ module MrDarcy
38
63
  end
39
64
  end
40
65
 
66
+ # See MrDarcy::Promise::Base#then
41
67
  def then &block
42
68
  deferred.then do |value|
43
69
  self.instance_exec(value, &block)
@@ -45,6 +71,7 @@ module MrDarcy
45
71
  self
46
72
  end
47
73
 
74
+ # See MrDarcy::Promise::Base#fail
48
75
  def fail &block
49
76
  deferred.fail do |value|
50
77
  self.instance_exec(value, &block)
@@ -52,12 +79,7 @@ module MrDarcy
52
79
  self
53
80
  end
54
81
 
55
- %w| result rejected? resolved? unresolved? |.map(&:to_sym).each do |method|
56
- define_method method do
57
- deferred.public_send method
58
- end
59
- end
60
-
82
+ # See MrDarcy::Promise::Base#final
61
83
  def final
62
84
  deferred.final
63
85
  self
@@ -1,26 +1,37 @@
1
+ require 'forwardable'
2
+
1
3
  module MrDarcy
4
+
5
+ # A wrapper around promises that can be externally resolved.
2
6
  class Deferred
7
+ extend Forwardable
3
8
 
4
- attr_accessor :promise, :last_promise
9
+ def_delegators :last_promise, :resolved?, :rejected?, :unresolved?, :resolve, :reject, :final, :result, :raise
5
10
 
6
- %w| resolved? rejected? unresolved? resolve reject final result raise |.map(&:to_sym).each do |method|
7
- define_method method do |*args|
8
- last_promise.public_send method, *args
9
- end
10
- end
11
+ attr_reader :promise, :last_promise
11
12
 
13
+ # See MrDarcy::Promise::Base#then
12
14
  def then &block
13
15
  self.last_promise = last_promise.then(&block)
14
16
  end
15
17
 
18
+ # See MrDarcy::Promise::Base#fail
16
19
  def fail &block
17
20
  self.last_promise = last_promise.fail(&block)
18
21
  end
19
22
 
20
- def initialize opts={}, &block
23
+ # Create a new deferred.
24
+ # Takes the following options:
25
+ #
26
+ # * driver: override the default driver for this promise.
27
+ def initialize opts={}
21
28
  driver = opts[:driver] || MrDarcy.driver
22
29
  self.promise = MrDarcy::Promise.new(driver: driver) {}
23
30
  self.last_promise = promise
24
31
  end
32
+
33
+ private
34
+
35
+ attr_writer :promise, :last_promise
25
36
  end
26
37
  end
@@ -1,4 +1,4 @@
1
- module MrDarcy
1
+ module MrDarcy # :nodoc:
2
2
  module Drivers
3
3
  autoload :Synchronous, File.expand_path('../drivers/synchronous.rb', __FILE__)
4
4
  autoload :Thread, File.expand_path('../drivers/thread.rb', __FILE__)
@@ -1,20 +1,26 @@
1
1
  require 'celluloid/autostart'
2
2
 
3
+ # The backend abstracting for scheduling blocks asynchronously
4
+ # with Celluloid.
5
+
3
6
  module MrDarcy
4
7
  module Drivers
5
8
  module Celluloid
6
9
  module_function
7
10
 
11
+ # Create a new future, and add it to the future stack.
8
12
  def dispatch(&block)
9
13
  futures << ::Celluloid::Future.new(&block)
10
14
  end
11
15
 
16
+ # Iterate the future stack and wait for each to resolve.
12
17
  def wait
13
18
  futures.each do |future|
14
19
  future.value
15
20
  end
16
21
  end
17
22
 
23
+ # Returns the future stack.
18
24
  def futures
19
25
  @futures ||= []
20
26
  end
@@ -1,12 +1,17 @@
1
+ #
2
+ # Driver used for testing synchronously.
3
+
1
4
  module MrDarcy
2
5
  module Drivers
3
6
  module Synchronous
4
7
  module_function
5
8
 
9
+ # Immediately yields whatever block is passed into it.
6
10
  def dispatch
7
11
  yield
8
12
  end
9
13
 
14
+ # Immediately yields whatever block is passed into it.
10
15
  def wait
11
16
  yield
12
17
  end
@@ -1,15 +1,21 @@
1
1
  require 'thread'
2
2
 
3
+ # Backend abstraction for scheduling blocks into threads.
4
+
3
5
  module MrDarcy
4
6
  module Drivers
5
7
  module Thread
6
8
  module_function
7
9
 
10
+ # Create a new thread with the supplied block and store it
11
+ # on the thread stack.
8
12
  def dispatch(&block)
9
13
  @threads ||= []
10
14
  @threads << ::Thread.new(&block)
11
15
  end
12
16
 
17
+ # Iterate through all threads in the thread stack and wait
18
+ # until they are complete.
13
19
  def wait
14
20
  @threads ||= []
15
21
  @threads.each do |thread|
@@ -1,3 +1,4 @@
1
+ # :nodoc:
1
2
  module MrDarcy
2
3
  module Promise
3
4
  autoload :State, File.expand_path('../promise/state', __FILE__)
@@ -1,7 +1,15 @@
1
+ require 'forwardable'
2
+
1
3
  module MrDarcy
2
4
  module Promise
5
+
6
+ # An abstract superclass for all promise implementations.
3
7
  class Base
8
+ extend Forwardable
9
+
10
+ def_delegators :state_machine, :resolved?, :unresolved?, :rejected?
4
11
 
12
+ # Create a new promise and schedule it for execution.
5
13
  def initialize block
6
14
  state
7
15
  schedule_promise do
@@ -10,6 +18,8 @@ module MrDarcy
10
18
  did_initialize
11
19
  end
12
20
 
21
+ # Create a new promise that resolves and calls the supplied
22
+ # block when this promise is resolved.
13
23
  def then &block
14
24
  ensure_child_promise
15
25
  child_promise.resolve_block = block
@@ -17,6 +27,8 @@ module MrDarcy
17
27
  child_promise.promise
18
28
  end
19
29
 
30
+ # Create a new promise that rejects and calls the supplied
31
+ # block when this promise is rejected.
20
32
  def fail &block
21
33
  ensure_child_promise
22
34
  child_promise.reject_block = block
@@ -24,14 +36,19 @@ module MrDarcy
24
36
  child_promise.promise
25
37
  end
26
38
 
39
+ # Wait until the promise is resolved or rejected and return it's
40
+ # result value.
27
41
  def result
28
42
  Kernel::raise "Subclasses must implement me"
29
43
  end
30
44
 
45
+ # Wait until the promise is resolved or rejected and return self.
31
46
  def final
32
47
  Kernel::raise "Subclasses must implement me"
33
48
  end
34
49
 
50
+ # Wait until the promise is resolver or rejected, and if rejected
51
+ # raise the error value in this context.
35
52
  def raise
36
53
  r = result
37
54
  if rejected?
@@ -43,17 +60,13 @@ module MrDarcy
43
60
  end
44
61
  end
45
62
 
46
- %w| resolved? unresolved? rejected? |.map(&:to_sym).each do |method|
47
- define_method method do |*args|
48
- state_machine.public_send(method, *args)
49
- end
50
- end
51
-
63
+ # Resolve this promise with the provided value.
52
64
  def resolve value
53
65
  do_resolve value
54
66
  self
55
67
  end
56
68
 
69
+ # Reject this promise with the provided error/value.
57
70
  def reject exception
58
71
  do_reject exception
59
72
  self
@@ -2,7 +2,14 @@ require 'celluloid/autostart'
2
2
 
3
3
  module MrDarcy
4
4
  module Promise
5
+
6
+ # A specialisation of MrDarcy::Promise::Base to work with
7
+ # Celluloid.
8
+ #
9
+ # See MrDarcy::Promise::Base for method information.
5
10
  class Celluloid < Base
11
+ # Each promise gets it's own actor thread.
12
+ # :nodoc:
6
13
  class Actor
7
14
  include ::Celluloid
8
15
 
@@ -1,5 +1,7 @@
1
1
  module MrDarcy
2
2
  module Promise
3
+ # A special variety of promise created by Base#then and Base#fail
4
+ # methods.
3
5
  class ChildPromise
4
6
 
5
7
  attr_accessor :resolve_block, :reject_block, :promise
@@ -8,6 +10,7 @@ module MrDarcy
8
10
  self.promise = MrDarcy.promise(opts) {}
9
11
  end
10
12
 
13
+ # Called by the parent promise when it resolves.
11
14
  def parent_resolved value
12
15
  begin
13
16
  return resolve_with value unless handles_resolve?
@@ -20,6 +23,7 @@ module MrDarcy
20
23
  end
21
24
  end
22
25
 
26
+ # Called by the parent promise when it rejects.
23
27
  def parent_rejected value
24
28
  begin
25
29
  return reject_with value unless handles_reject?
@@ -1,12 +1,20 @@
1
+ require 'forwardable'
1
2
  require 'thread'
2
3
 
3
4
  module MrDarcy
4
5
  module Promise
5
- class Collection
6
- attr_accessor :promises, :size
7
6
 
7
+ # A meta-promise that represents a collection of other promises and their
8
+ # states.
9
+ class Collection
8
10
  include Enumerable
11
+ extend Forwardable
12
+
13
+ def_delegators :my_promise, :rejected?, :resolved?, :unresolved?, :raise, :result, :then, :fail
9
14
 
15
+ # Creates a meta-promise based on a collection of promises.
16
+ # * promises: an array of promises
17
+ # * opts: options for MrDarcy.promise
10
18
  def initialize promises, opts={}
11
19
  @lock = Mutex.new
12
20
  @promises = []
@@ -18,31 +26,30 @@ module MrDarcy
18
26
  end
19
27
  end
20
28
 
21
- %w| resolved? rejected? unresolved? result raise then fail |.each do |method|
22
- define_method method do |*args,&block|
23
- my_promise.public_send method, *args, &block
24
- end
25
- end
26
-
29
+ # See MrDarcy::Promise::Base#final
27
30
  def final
28
31
  my_promise.final
29
32
  self
30
33
  end
31
34
 
35
+ # Allow iteration of promises for Enumerable.
32
36
  def each &block
33
37
  promises.each &block
34
38
  end
35
39
 
40
+ # Add a new promise to our collection.
36
41
  def push promise
37
42
  @lock.synchronize { @size = @size + 1 }
38
43
  add_promise promise
39
44
  end
40
45
  alias << push
41
46
 
47
+ # Return the number of promises in this collection.
42
48
  def size
43
49
  @lock.synchronize { @size }
44
50
  end
45
51
 
52
+ # Return an array of promises in this collection.
46
53
  def promises
47
54
  @lock.synchronize { @promises }
48
55
  end
@@ -1,29 +1,17 @@
1
+ require 'forwardable'
2
+
1
3
  module MrDarcy
2
4
  module Promise
5
+ # Syntax wrapper around Promise. Can probably be removed now.
3
6
  class DSL
7
+ extend Forwardable
8
+
9
+ def_delegators :@promise, :resolve, :reject, :unresolved?, :resolved?, :rejected?, :then, :fail, :result, :final
4
10
 
5
11
  def initialize promise
6
12
  @promise = promise
7
13
  end
8
14
 
9
- def resolve(value)
10
- promise.resolve value
11
- end
12
-
13
- def reject(exception)
14
- promise.reject exception
15
- end
16
-
17
- %w| unresolved? resolved? rejected? then fail result final |.map(&:to_sym).each do |method|
18
- define_method method do |*args|
19
- promise.public_send method, *args
20
- end
21
- end
22
-
23
- private
24
-
25
- attr_accessor :promise
26
-
27
15
  end
28
16
  end
29
17
  end
@@ -2,6 +2,9 @@ require 'eventmachine'
2
2
 
3
3
  module MrDarcy
4
4
  module Promise
5
+ # EventMachine implementation of promises.
6
+ #
7
+ # See MrDarcy::Promise::Base for method documentation.
5
8
  class EM < Base
6
9
  class DeferrableAdapter
7
10
  include EventMachine::Deferrable
@@ -1,5 +1,6 @@
1
1
  module MrDarcy
2
2
  module Promise
3
+ # Implementation of the State Pattern for Promises.
3
4
  module State
4
5
  autoload :Base, File.expand_path('../state/base', __FILE__)
5
6
  autoload :Unresolved, File.expand_path('../state/unresolved', __FILE__)
@@ -8,6 +9,8 @@ module MrDarcy
8
9
 
9
10
  module_function
10
11
 
12
+ # Return an instance of the correct State class based on the state of
13
+ # the passed in object.
11
14
  def state stateful
12
15
  case stateful.send :state
13
16
  when :unresolved
@@ -1,11 +1,10 @@
1
1
  module MrDarcy
2
2
  module Promise
3
3
  module State
4
+ # Abstract base class for all Promise states.
4
5
  class Base
5
- attr_accessor :stateful
6
-
7
6
  def initialize stateful
8
- self.stateful = stateful
7
+ @stateful = stateful
9
8
  end
10
9
 
11
10
  def unresolved?
@@ -30,6 +29,8 @@ module MrDarcy
30
29
 
31
30
  private
32
31
 
32
+ attr_reader :stateful
33
+
33
34
  def get_state
34
35
  stateful.send :state
35
36
  end
@@ -1,6 +1,7 @@
1
1
  module MrDarcy
2
2
  module Promise
3
3
  module State
4
+ # Represents the rejected state of a promise.
4
5
  class Rejected < Base
5
6
  def rejected?
6
7
  true
@@ -1,6 +1,7 @@
1
1
  module MrDarcy
2
2
  module Promise
3
3
  module State
4
+ # Represents the resolved state of a promise.
4
5
  class Resolved < Base
5
6
  def resolved?
6
7
  true
@@ -1,15 +1,18 @@
1
1
  module MrDarcy
2
2
  module Promise
3
3
  module State
4
+ # Represents the unresolved state of a promise.
4
5
  class Unresolved < Base
5
6
  def unresolved?
6
7
  true
7
8
  end
8
9
 
10
+ # Transition into resolved state.
9
11
  def resolve
10
12
  set_state :resolved
11
13
  end
12
14
 
15
+ # Transition into rejected state.
13
16
  def reject
14
17
  set_state :rejected
15
18
  end
@@ -3,6 +3,8 @@
3
3
 
4
4
  module MrDarcy
5
5
  module Promise
6
+ # An implementation of synchronous promises, only for testing because
7
+ # it violates several rules of promises.
6
8
  class Synchronous < Base
7
9
 
8
10
  def result
@@ -3,6 +3,9 @@ require 'fiber'
3
3
 
4
4
  module MrDarcy
5
5
  module Promise
6
+ # Implementation of promises using Ruby threads and locks.
7
+ #
8
+ # See MrDarcy::Promise::Base for method information.
6
9
  class Thread < Base
7
10
 
8
11
  def initialize *args
@@ -1,3 +1,3 @@
1
1
  module MrDarcy
2
- VERSION = "0.4.1"
2
+ VERSION = "0.4.2"
3
3
  end
@@ -16,10 +16,6 @@ describe MrDarcy::Promise::DSL do
16
16
  it { should respond_to :result }
17
17
  it { should respond_to :final }
18
18
 
19
- describe '.new' do
20
- its(:promise) { should eq promise }
21
- end
22
-
23
19
  describe '#resolve' do
24
20
  subject { dsl.resolve :resolved_value }
25
21
  before { promise.stub :value= => nil, resolve: nil }
@@ -6,8 +6,6 @@ describe MrDarcy::Promise::State::Base do
6
6
  let(:state) { described_class.new stateful }
7
7
  subject { state }
8
8
 
9
- it { should respond_to :stateful }
10
- it { should respond_to :stateful= }
11
9
  it { should respond_to :unresolved? }
12
10
  it { should respond_to :resolved? }
13
11
  it { should respond_to :rejected? }
metadata CHANGED
@@ -1,167 +1,167 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mr_darcy
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.1
4
+ version: 0.4.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - James Harton
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-05-14 00:00:00.000000000 Z
11
+ date: 2014-12-28 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - ~>
17
+ - - "~>"
18
18
  - !ruby/object:Gem::Version
19
19
  version: '1.5'
20
20
  type: :development
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - ~>
24
+ - - "~>"
25
25
  - !ruby/object:Gem::Version
26
26
  version: '1.5'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: rake
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - '>='
31
+ - - ">="
32
32
  - !ruby/object:Gem::Version
33
33
  version: '0'
34
34
  type: :development
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - '>='
38
+ - - ">="
39
39
  - !ruby/object:Gem::Version
40
40
  version: '0'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: rspec
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - '>='
45
+ - - ">="
46
46
  - !ruby/object:Gem::Version
47
47
  version: '0'
48
48
  type: :development
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
- - - '>='
52
+ - - ">="
53
53
  - !ruby/object:Gem::Version
54
54
  version: '0'
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: guard
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
- - - '>='
59
+ - - ">="
60
60
  - !ruby/object:Gem::Version
61
61
  version: '0'
62
62
  type: :development
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
- - - '>='
66
+ - - ">="
67
67
  - !ruby/object:Gem::Version
68
68
  version: '0'
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: guard-rspec
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
- - - '>='
73
+ - - ">="
74
74
  - !ruby/object:Gem::Version
75
75
  version: '0'
76
76
  type: :development
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
- - - '>='
80
+ - - ">="
81
81
  - !ruby/object:Gem::Version
82
82
  version: '0'
83
83
  - !ruby/object:Gem::Dependency
84
84
  name: guard-bundler
85
85
  requirement: !ruby/object:Gem::Requirement
86
86
  requirements:
87
- - - '>='
87
+ - - ">="
88
88
  - !ruby/object:Gem::Version
89
89
  version: '0'
90
90
  type: :development
91
91
  prerelease: false
92
92
  version_requirements: !ruby/object:Gem::Requirement
93
93
  requirements:
94
- - - '>='
94
+ - - ">="
95
95
  - !ruby/object:Gem::Version
96
96
  version: '0'
97
97
  - !ruby/object:Gem::Dependency
98
98
  name: terminal-notifier-guard
99
99
  requirement: !ruby/object:Gem::Requirement
100
100
  requirements:
101
- - - '>='
101
+ - - ">="
102
102
  - !ruby/object:Gem::Version
103
103
  version: '0'
104
104
  type: :development
105
105
  prerelease: false
106
106
  version_requirements: !ruby/object:Gem::Requirement
107
107
  requirements:
108
- - - '>='
108
+ - - ">="
109
109
  - !ruby/object:Gem::Version
110
110
  version: '0'
111
111
  - !ruby/object:Gem::Dependency
112
112
  name: pry
113
113
  requirement: !ruby/object:Gem::Requirement
114
114
  requirements:
115
- - - '>='
115
+ - - ">="
116
116
  - !ruby/object:Gem::Version
117
117
  version: '0'
118
118
  type: :development
119
119
  prerelease: false
120
120
  version_requirements: !ruby/object:Gem::Requirement
121
121
  requirements:
122
- - - '>='
122
+ - - ">="
123
123
  - !ruby/object:Gem::Version
124
124
  version: '0'
125
125
  - !ruby/object:Gem::Dependency
126
126
  name: eventmachine
127
127
  requirement: !ruby/object:Gem::Requirement
128
128
  requirements:
129
- - - '>='
129
+ - - ">="
130
130
  - !ruby/object:Gem::Version
131
131
  version: '0'
132
132
  type: :development
133
133
  prerelease: false
134
134
  version_requirements: !ruby/object:Gem::Requirement
135
135
  requirements:
136
- - - '>='
136
+ - - ">="
137
137
  - !ruby/object:Gem::Version
138
138
  version: '0'
139
139
  - !ruby/object:Gem::Dependency
140
140
  name: em-http-request
141
141
  requirement: !ruby/object:Gem::Requirement
142
142
  requirements:
143
- - - '>='
143
+ - - ">="
144
144
  - !ruby/object:Gem::Version
145
145
  version: '0'
146
146
  type: :development
147
147
  prerelease: false
148
148
  version_requirements: !ruby/object:Gem::Requirement
149
149
  requirements:
150
- - - '>='
150
+ - - ">="
151
151
  - !ruby/object:Gem::Version
152
152
  version: '0'
153
153
  - !ruby/object:Gem::Dependency
154
154
  name: celluloid
155
155
  requirement: !ruby/object:Gem::Requirement
156
156
  requirements:
157
- - - '>='
157
+ - - ">="
158
158
  - !ruby/object:Gem::Version
159
159
  version: '0'
160
160
  type: :development
161
161
  prerelease: false
162
162
  version_requirements: !ruby/object:Gem::Requirement
163
163
  requirements:
164
- - - '>='
164
+ - - ">="
165
165
  - !ruby/object:Gem::Version
166
166
  version: '0'
167
167
  description: |2
@@ -173,8 +173,8 @@ executables: []
173
173
  extensions: []
174
174
  extra_rdoc_files: []
175
175
  files:
176
- - .gitignore
177
- - .travis.yml
176
+ - ".gitignore"
177
+ - ".travis.yml"
178
178
  - Gemfile
179
179
  - Gemfile.lock
180
180
  - Guardfile
@@ -242,17 +242,17 @@ require_paths:
242
242
  - lib
243
243
  required_ruby_version: !ruby/object:Gem::Requirement
244
244
  requirements:
245
- - - '>='
245
+ - - ">="
246
246
  - !ruby/object:Gem::Version
247
247
  version: '0'
248
248
  required_rubygems_version: !ruby/object:Gem::Requirement
249
249
  requirements:
250
- - - '>='
250
+ - - ">="
251
251
  - !ruby/object:Gem::Version
252
252
  version: '0'
253
253
  requirements: []
254
254
  rubyforge_project:
255
- rubygems_version: 2.1.11
255
+ rubygems_version: 2.2.2
256
256
  signing_key:
257
257
  specification_version: 4
258
258
  summary: A mashup of async Promises and DCI in Ruby.