dci-ruby 2.1.1 → 2.1.2

Sign up to get free protection for your applications and to get access to all the features.
data/.gitignore CHANGED
@@ -50,3 +50,5 @@ pkg
50
50
 
51
51
  # RVM
52
52
  .rvmrc
53
+ .ruby-version
54
+ .ruby-gemset
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- dci-ruby (2.1.0)
4
+ dci-ruby (2.1.1)
5
5
 
6
6
  GEM
7
7
  remote: http://rubygems.org/
@@ -21,7 +21,7 @@ class MoneyTransferContext < DCI::Context
21
21
 
22
22
  def run_transfer_of(amount)
23
23
  self.balance -= amount
24
- puts "\tAccount(\##{account_id}) sent #{amount}€ to Account(\##{target_account.account_id})."
24
+ puts "\t\tAccount(\##{account_id}) sent #{amount}€ to Account(\##{target_account.account_id})."
25
25
  end
26
26
  end
27
27
 
@@ -31,7 +31,7 @@ class MoneyTransferContext < DCI::Context
31
31
 
32
32
  def run_transfer_of(amount)
33
33
  self.balance += amount
34
- puts "\tAccount(\##{account_id}) received #{amount}€ from Account(\##{source_account.account_id})."
34
+ puts "\t\tAccount(\##{account_id}) received #{amount}€ from Account(\##{source_account.account_id})."
35
35
  end
36
36
  end
37
37
 
@@ -39,10 +39,11 @@ class MoneyTransferContext < DCI::Context
39
39
  # Interactions
40
40
 
41
41
  def run(amount=settings(:amount))
42
- puts "Balances Before: #{balances}"
42
+ puts "\nMoney Transfer of #{amount}€ between Account(\##{source_account.account_id}) and Account(\##{target_account.account_id})"
43
+ puts "\tBalances Before: #{balances}"
43
44
  source_account.run_transfer_of(amount)
44
45
  target_account.run_transfer_of(amount)
45
- puts "Balances After: #{balances}"
46
+ puts "\tBalances After: #{balances}"
46
47
  end
47
48
 
48
49
 
@@ -1,7 +1,6 @@
1
1
  require 'dci-ruby/dci/role'
2
2
 
3
3
  module DCI
4
-
5
4
  class Context
6
5
 
7
6
  class << self
@@ -54,8 +53,8 @@ module DCI
54
53
  new_roleklass = roles[new_rolekey]
55
54
  mate_roles = mate_roles_of(new_rolekey)
56
55
  mate_roles.each do |mate_rolekey, mate_roleklass|
57
- mate_roleklass.add_role_reader_for!(new_rolekey)
58
- new_roleklass.add_role_reader_for!(mate_rolekey)
56
+ mate_roleklass.send(:add_role_reader_for!, new_rolekey)
57
+ new_roleklass.send(:add_role_reader_for!, mate_rolekey)
59
58
  end
60
59
  end
61
60
 
@@ -118,17 +117,5 @@ module DCI
118
117
  instance_variable_set(:"@#{rolekey}", role_instance)
119
118
  end
120
119
 
121
- # # For each given pair in vars, define a private method named the key that returns the entry associated value.
122
- # def define_readers_for_no_players(vars={})
123
- # vars.each do |name, value|
124
- # instance_variable_set(:"@#{name}", value)
125
- # singleton_class.class_exec(name.to_sym) do |varkey|
126
- # private
127
- # attr_reader varkey
128
- # end
129
- # end
130
- # end
131
-
132
120
  end
133
-
134
121
  end
@@ -1,5 +1,6 @@
1
- module DCI
1
+ require 'forwardable'
2
2
 
3
+ module DCI
3
4
  class Role
4
5
  extend ::Forwardable
5
6
 
@@ -11,29 +12,58 @@ module DCI
11
12
  super
12
13
  end
13
14
 
15
+ # Defines a public instance_method named role_method_name delegating its behaviour to player#player_methodname
16
+ # Ex: delegate_to_player :fullname, :name #=> def name(*args, &block)
17
+ # player.send(:fullname, *args, &block)
18
+ # end
14
19
  def delegate_to_player(player_methodname, role_method_name = player_methodname)
15
20
  class_eval("def #{role_method_name}(*args, &block); player.send(:#{player_methodname}, *args, &block) end")
16
21
  end
17
22
 
23
+ # Defines a private instance_method named role_method_name delegating its behaviour to player#player_methodname
24
+ # Ex: delegate_to_player :fullname, :name #=> def name(*args, &block)
25
+ # player.send(:fullname, *args, &block)
26
+ # end
27
+ # private :name
18
28
  def private_delegate_to_player(player_methodname, role_method_name = player_methodname)
19
29
  delegate_to_player(player_methodname, role_method_name)
20
30
  private role_method_name
21
31
  end
22
32
 
33
+ # Defines multiple public instance_methods whose names are in the methodnames list
34
+ # delegating their behaviour to their counterparts in player.
35
+ # Ex: delegates_to_player :fullname, :age #=> def fullname(*args, &block)
36
+ # player.send(:fullname, *args, &block)
37
+ # end
38
+ # def age(*args, &block)
39
+ # player.send(:age, *args, &block)
40
+ # end
23
41
  def delegates_to_player(*methodnames)
24
42
  methodnames.each {|methodname| delegate_to_player(methodname)}
25
43
  end
26
44
 
45
+ # Defines multiple private instance_methods whose names are in the methodnames list
46
+ # delegating their behaviour to their counterparts in player.
47
+ # Ex: private_delegates_to_player :fullname, :age #=> def fullname(*args, &block)
48
+ # player.send(:fullname, *args, &block)
49
+ # end
50
+ # def age(*args, &block)
51
+ # player.send(:age, *args, &block)
52
+ # end
53
+ # private :fullname, :age
27
54
  def private_delegates_to_player(*methodnames)
28
55
  methodnames.each {|methodname| private_delegate_to_player(methodname)}
29
56
  end
30
57
 
31
- # Defines a new reader instance method for a context mate role, delegating it to the context object.
32
- def add_role_reader_for!(rolekey)
33
- return if private_method_defined?(rolekey)
34
- define_method(rolekey) {@context.send(rolekey)}
35
- private rolekey
36
- end
58
+
59
+ private
60
+
61
+ # Defines a new private reader instance method for a context mate role, delegating it to the context object.
62
+ def add_role_reader_for!(rolekey)
63
+ return if private_method_defined?(rolekey)
64
+ define_method(rolekey) {@context.send(rolekey)}
65
+ private rolekey
66
+ end
37
67
 
38
68
  end
39
69
 
@@ -1,3 +1,3 @@
1
1
  module DCI
2
- VERSION = "2.1.1"
2
+ VERSION = "2.1.2"
3
3
  end
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dci-ruby
3
3
  version: !ruby/object:Gem::Version
4
- hash: 9
4
+ hash: 15
5
5
  prerelease:
6
6
  segments:
7
7
  - 2
8
8
  - 1
9
- - 1
10
- version: 2.1.1
9
+ - 2
10
+ version: 2.1.2
11
11
  platform: ruby
12
12
  authors:
13
13
  - Lorenzo Tello
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2013-10-30 00:00:00 Z
18
+ date: 2013-11-12 00:00:00 Z
19
19
  dependencies:
20
20
  - !ruby/object:Gem::Dependency
21
21
  name: rspec