drsi 0.2.0 → 0.2.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: f34d6bd83bc21f9c63c83c31c552e1f48dc42acf
4
- data.tar.gz: 28785a5247013c7ddf5d0da3bae4d01f60308c42
3
+ metadata.gz: bfba058e060a1aeff1bbd634bf58b5c75d2c6f96
4
+ data.tar.gz: be2b11f836e7e14ebdfedce0445132c154bb6ef7
5
5
  SHA512:
6
- metadata.gz: 9b422c3925e5055ddf1053684ec51220d7580a0c67cb0c0f2788d42864f5937a44d80f7f74421330b19a4bc304ca1b0f25a96633692962c786b6a237c72d08de
7
- data.tar.gz: a099dbfa5b9de7ded07c1aed28487ef3242d9eaf9374229ad11a48b53140833ef512cbb5a477f643db089670c2c78ec17c6335e2b58c36b5b4b727933213f50e
6
+ metadata.gz: adbad678c9cf9ae41f91cee89d62a34f4b5fa4783cd7faa161eb1c5afd8727a7c74917202c46f58b35f9409f23d96111465bc3f7169c3a3a7c6c04f4c943d8ef
7
+ data.tar.gz: 3fb6063db4e72a8163e83c04209148d965a80b71ca9484f4a0d01c243dc8d2d0678b9a337eca096f7b822c56a8c994959a9bfd0bd18101a6964688105dc6d2d3
@@ -146,8 +146,8 @@ module DCI
146
146
  end
147
147
 
148
148
  def player_already_playing_role_in_this_context?(player, rolekey)
149
- context = player.send(:context)
150
- return false unless player.send(:rolekey) == rolekey
149
+ context = player.send(:__context)
150
+ return false unless player.send(:__rolekey) == rolekey
151
151
  context == self or context.class == self.class
152
152
  end
153
153
 
@@ -10,7 +10,7 @@ module DCI
10
10
  # Defines a new private reader instance method for a context mate role, delegating it to the context object.
11
11
  def add_role_reader_for!(rolekey)
12
12
  return if private_method_defined?(rolekey)
13
- define_method(rolekey) {context.send(rolekey)}
13
+ define_method(rolekey) {__context.send(rolekey)}
14
14
  private rolekey
15
15
  end
16
16
 
@@ -7,6 +7,7 @@ class Module
7
7
  type = methods_type.to_s.split('_').first.to_sym
8
8
  __add_instance_methods(methods, type)
9
9
  end
10
+ self
10
11
  end
11
12
 
12
13
 
@@ -16,11 +17,7 @@ class Module
16
17
  # Also, set their visibility from 'type' (:public, :protected, :private).
17
18
  def __add_instance_methods(methods, type)
18
19
  module_exec(methods, type) do |methods, type|
19
- methods.each do |method|
20
- define_method(method.name) do |*args, &block|
21
- method.bind(self).call(*args, &block)
22
- end
23
- end
20
+ methods.each {|method| define_method(method.name, method)}
24
21
  send(type, *methods.map(&:name))
25
22
  end
26
23
  end
@@ -8,18 +8,17 @@ require 'drsi/module'
8
8
  # reusing the empty ones or adding and extending new ones when it is needed.
9
9
  module Rolable
10
10
 
11
- # Make an object play (in the given 'context') the role defined as a module in 'role_mod':
11
+ # Make an object play (in the given 'a_context') the role defined as a module in 'role_mod':
12
12
  # - Get or extend a new empty role module,
13
13
  # - Copy role_mod instance_methods into it,
14
- # - Inject context and settings methods.
14
+ # - Inject __context and settings methods.
15
15
  def __play_role!(a_rolekey, role_mod, a_context)
16
- new_role = __next_empty_role
17
- new_role.__copy_instance_methods_from(role_mod)
16
+ new_role = __next_role_for(role_mod)
18
17
  new_role.class_exec(a_context, a_rolekey) do |the_context, the_rolekey|
19
18
  private
20
- define_method(:rolekey) {the_rolekey}
21
- define_method(:context) {the_context}
22
- define_method(:settings) {|*keys| context.send(:settings, *keys)}
19
+ define_method(:__rolekey) {the_rolekey}
20
+ define_method(:__context) {the_context}
21
+ define_method(:settings) {|*keys| __context.send(:settings, *keys)}
23
22
  end
24
23
  end
25
24
 
@@ -49,26 +48,27 @@ module Rolable
49
48
 
50
49
  # Returns the highest role module free of methods. If none, creates a new empty module ready to be filled with
51
50
  # role instance methods.
52
- def __next_empty_role
51
+ def __next_role_for(mod)
53
52
  @__last_role_index = __last_role_index + 1
54
- __add_empty_role! unless __last_role
55
- __last_role
53
+ new_role = __last_role
54
+ new_role ? new_role.__copy_instance_methods_from(mod) : __add_role_for(mod)
56
55
  end
57
56
 
58
57
  # Creates and extends a new module ready to be filled with role instance methods.
59
- def __add_empty_role!
60
- role = Module.new
58
+ def __add_role_for(mod)
59
+ role = mod.dup
61
60
  extend(role)
62
61
  __roles << role
62
+ role
63
63
  end
64
64
 
65
65
  # The context within this object is playing its last role. This method must be overidden in every __role definition module.
66
- def context
66
+ def __context
67
67
  nil
68
68
  end
69
69
 
70
70
  # The rolekey this object is playing its last role. This method must be overidden in every __role definition module.
71
- def rolekey
71
+ def __rolekey
72
72
  nil
73
73
  end
74
74
  end
@@ -1,3 +1,3 @@
1
1
  module Drsi
2
- VERSION = "0.2.0"
2
+ VERSION = "0.2.1"
3
3
  end
@@ -54,7 +54,8 @@ describe 'Role MultiPlayers' do
54
54
 
55
55
  def roles2_have_context_private_access?
56
56
  role2[0..-1].all? do |roleplayer|
57
- [!roleplayer.respond_to?(:context), roleplayer.private_methods.map(&:to_s).include?('context'), roleplayer.send(:context) == self].uniq == [true]
57
+ [!roleplayer.respond_to?(:__context), roleplayer.private_methods.map(&:to_s).include?('__context'), roleplayer.send(:__context) == self,
58
+ !roleplayer.respond_to?(:__rolekey), roleplayer.private_methods.map(&:to_s).include?('__rolekey'), roleplayer.send(:__rolekey) == :role2].uniq == [true]
58
59
  end
59
60
  end
60
61
 
@@ -97,7 +98,7 @@ describe 'Role MultiPlayers' do
97
98
  @testing_roleplayers_context.roles2_external_interfaces_accessible?(@player2.name, @player22.name).should be_true
98
99
  end
99
100
 
100
- it("They have private access to the context.") do
101
+ it("They have private access to the context via #__context.") do
101
102
  @testing_roleplayers_context.roles2_have_context_private_access?.should be_true
102
103
  end
103
104
 
@@ -114,8 +115,8 @@ describe 'Role MultiPlayers' do
114
115
  @player22.name.should eq('player22')
115
116
  expect{@player2.send(:role1)}.to raise_error
116
117
  expect{@player22.send(:role1)}.to raise_error
117
- @player2.send(:context).should be_nil
118
- @player22.send(:context).should be_nil
118
+ @player2.send(:__context).should be_nil
119
+ @player22.send(:__context).should be_nil
119
120
  expect{@player2.send(:settings)}.to raise_error
120
121
  expect{@player22.send(:settings)}.to raise_error
121
122
  end
@@ -39,7 +39,8 @@ describe 'RolePlayers' do
39
39
  end
40
40
 
41
41
  def check_role1_private_context_access
42
- [!role1.respond_to?(:context), role1.private_methods.map(&:to_s).include?('context'), role1.send(:context) == self].uniq == [true]
42
+ [!role1.respond_to?(:__context), role1.private_methods.map(&:to_s).include?('__context'), role1.send(:__context) == self,
43
+ !role1.respond_to?(:__rolekey), role1.private_methods.map(&:to_s).include?('__rolekey'), role1.send(:__rolekey) == :role1].uniq == [true]
43
44
  end
44
45
 
45
46
  def check_role1_settings_access
@@ -95,7 +96,7 @@ describe 'RolePlayers' do
95
96
  @player1.should_not respond_to(:role1method1)
96
97
  @player2.private_methods.map(&:to_s).should_not include(:private_role2method2)
97
98
  @player1.name.should eq('player1')
98
- @player2.send(:context).should be_nil
99
+ @player2.send(:__context).should be_nil
99
100
  expect {@player2.send(:settings)}.to raise_error
100
101
  expect {@player2.send(:role1)}.to raise_error
101
102
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: drsi
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.2.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Lorenzo Tello
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-01-14 00:00:00.000000000 Z
11
+ date: 2014-01-16 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rspec