observables 0.1.2 → 0.1.3

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.
@@ -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