observables 0.1.2 → 0.1.3

Sign up to get free protection for your applications and to get access to all the features.
@@ -13,7 +13,8 @@ module Observables
13
13
  end
14
14
 
15
15
  def subscribe(pattern=nil,&block)
16
- notifier.subscribe(pattern,&block)
16
+ callback = block || self
17
+ notifier.subscribe(pattern,callback)
17
18
  end
18
19
 
19
20
  def unsubscribe(subscriber)
@@ -31,12 +32,20 @@ module Observables
31
32
  clear_observer
32
33
  opts = args.extract_options!
33
34
  @_observer_owner = args.pop
35
+ @_observer_owner_callback_method = opts[:callback_method] || :child_changed
36
+ @_observer_owner_block = block
37
+
34
38
  pattern = opts[:pattern] || /.*/
35
- callback_method = opts[:callback_method] || :child_changed
36
- @_owner_subscription = subscribe(pattern) do |*args|
37
- block ? block.call(self,*args) :
38
- (@_observer_owner.send(callback_method,self,*args) if @_observer_owner && @_observer_owner.respond_to?(callback_method))
39
- end
39
+ #callback_method = opts[:callback_method] || :child_changed
40
+ @_owner_subscription = subscribe(pattern)
41
+ end
42
+
43
+ def call(*args)
44
+ block = @_observer_owner_block
45
+ callback_method = @_observer_owner_callback_method
46
+
47
+ block ? block.call(self,*args) :
48
+ (@_observer_owner.send(callback_method,self,*args) if @_observer_owner && @_observer_owner.respond_to?(callback_method))
40
49
  end
41
50
 
42
51
  def clear_observer
@@ -85,10 +94,10 @@ module Observables
85
94
  class_eval <<-EOS
86
95
  def #{method}(*args,&block)
87
96
  changes = changes_for(:#{change_type},:#{method},*args,&block)
88
- changing(:#{change_type},:trigger=>:#{method}, :changes=>changes){super}
89
- end
90
- EOS
91
- end
97
+ changing(:#{change_type},:trigger=>:#{method}, :changes=>changes){super}
98
+ end
99
+ EOS
100
+ end
92
101
  end
93
102
  end
94
103
  end
@@ -1,4 +1,4 @@
1
1
  # encoding: UTF-8
2
2
  module Observables
3
- Version = '0.1.2'
3
+ Version = '0.1.3'
4
4
  end
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: observables
3
3
  version: !ruby/object:Gem::Version
4
- hash: 31
4
+ hash: 29
5
5
  prerelease: false
6
6
  segments:
7
7
  - 0
8
8
  - 1
9
- - 2
10
- version: 0.1.2
9
+ - 3
10
+ version: 0.1.3
11
11
  platform: ruby
12
12
  authors:
13
13
  - Nathan Stults
@@ -15,11 +15,14 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2010-10-16 00:00:00 -07:00
18
+ date: 2011-01-13 00:00:00 -08:00
19
19
  default_executable:
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency
22
- requirement: &id001 !ruby/object:Gem::Requirement
22
+ type: :runtime
23
+ name: activesupport
24
+ prerelease: false
25
+ version_requirements: &id001 !ruby/object:Gem::Requirement
23
26
  none: false
24
27
  requirements:
25
28
  - - ~>
@@ -30,12 +33,12 @@ dependencies:
30
33
  - 0
31
34
  - 0
32
35
  version: 3.0.0
36
+ requirement: *id001
37
+ - !ruby/object:Gem::Dependency
33
38
  type: :runtime
34
- name: activesupport
39
+ name: i18n
35
40
  prerelease: false
36
- version_requirements: *id001
37
- - !ruby/object:Gem::Dependency
38
- requirement: &id002 !ruby/object:Gem::Requirement
41
+ version_requirements: &id002 !ruby/object:Gem::Requirement
39
42
  none: false
40
43
  requirements:
41
44
  - - ">="
@@ -44,12 +47,12 @@ dependencies:
44
47
  segments:
45
48
  - 0
46
49
  version: "0"
47
- type: :runtime
48
- name: i18n
49
- prerelease: false
50
- version_requirements: *id002
50
+ requirement: *id002
51
51
  - !ruby/object:Gem::Dependency
52
- requirement: &id003 !ruby/object:Gem::Requirement
52
+ type: :development
53
+ name: rake
54
+ prerelease: false
55
+ version_requirements: &id003 !ruby/object:Gem::Requirement
53
56
  none: false
54
57
  requirements:
55
58
  - - ">="
@@ -58,12 +61,12 @@ dependencies:
58
61
  segments:
59
62
  - 0
60
63
  version: "0"
64
+ requirement: *id003
65
+ - !ruby/object:Gem::Dependency
61
66
  type: :development
62
- name: rake
67
+ name: shoulda
63
68
  prerelease: false
64
- version_requirements: *id003
65
- - !ruby/object:Gem::Dependency
66
- requirement: &id004 !ruby/object:Gem::Requirement
69
+ version_requirements: &id004 !ruby/object:Gem::Requirement
67
70
  none: false
68
71
  requirements:
69
72
  - - ~>
@@ -73,10 +76,7 @@ dependencies:
73
76
  - 2
74
77
  - 11
75
78
  version: "2.11"
76
- type: :development
77
- name: shoulda
78
- prerelease: false
79
- version_requirements: *id004
79
+ requirement: *id004
80
80
  description:
81
81
  email:
82
82
  - hereiam@sonic.net
@@ -88,21 +88,21 @@ extra_rdoc_files: []
88
88
 
89
89
  files:
90
90
  - lib/observables/array_watcher.rb
91
- - lib/observables/hash_watcher.rb
92
- - lib/observables/version.rb
93
91
  - lib/observables/base.rb
94
92
  - lib/observables/collections.rb
93
+ - lib/observables/hash_watcher.rb
94
+ - lib/observables/version.rb
95
+ - lib/observables/extensions/array.rb
95
96
  - lib/observables/extensions/hash.rb
96
97
  - lib/observables/extensions/object.rb
97
- - lib/observables/extensions/array.rb
98
98
  - lib/observables.rb
99
- - test/test_observable_array.rb
99
+ - test/test_base.rb
100
100
  - test/test_array_watcher.rb
101
101
  - test/test_helper.rb
102
- - test/test_hash_watcher.rb
103
102
  - test/test_Observables.rb
104
- - test/test_base.rb
103
+ - test/test_observable_array.rb
105
104
  - test/extensions/test_extensions.rb
105
+ - test/test_hash_watcher.rb
106
106
  - LICENSE
107
107
  - README.rdoc
108
108
  has_rdoc: true