hyper-state 1.0.alpha1.7 → 1.0.alpha1.8

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
  SHA256:
3
- metadata.gz: 3a48f43567dbd4be77ee93df1b0de51fa4097169e8643acd510935bb4c6d9708
4
- data.tar.gz: a55d85b356193be51f28bad347eaf70497a62f4c59213202b6cfb8687c5a2d76
3
+ metadata.gz: 8c41d6f6cf503727dc54d96011ffb061b738f2dc3e8b49788c37bd8763b94e16
4
+ data.tar.gz: f4df7162bdfdf5a6cb8e7c8447614377d3c593ef2a314608da4ff45fe330790d
5
5
  SHA512:
6
- metadata.gz: 1e80a2cc027924df1acf000f4a7d6209c97ca878c929edfd07cdbd2518be6f92427d2aa3349767c9ad8b9faa3952a2dc9ef6dad9364414eb61b78134315ea977
7
- data.tar.gz: 10b73543e0b25ef0e528b562ddef5272fefcc2ea1e6bf6c35fed4d99d0788b198ae5d9d7b532ee596d2426f4a31d79a6f8db71c4e553b37ac78554ddac007768
6
+ metadata.gz: 78b10172dff1829f4266edfbecf06d1f24a26969b3c65f5beba0bcb3892342015331027f00d8f10d57386c4b77e277e7332a0b65cf42f45b7c877ce10c016673
7
+ data.tar.gz: afbfcfcec93a744b21c950095d015c7c73b052a8b14382e18d2a46b1fee2967c6158b1ace4ce4e3bd91b5e98bba1b6c6ebb68c88a8390296d8bf44b56010c290
@@ -0,0 +1,25 @@
1
+ module ObjectSpace
2
+ def self.each_object(target_klass, &block)
3
+ klasses = [Object]
4
+ i = 0
5
+ loop do
6
+ klass = klasses[i]
7
+ yield klass
8
+ names = `klass.$$const` && `Object.keys(klass.$$const)`
9
+ names.each do |name|
10
+ begin
11
+ k = klass.const_get(name) rescue nil
12
+ next unless `k.$$const`
13
+ next unless k.respond_to?(:is_a?)
14
+ next if klasses.include?(k)
15
+
16
+ klasses << k if k.is_a? target_klass
17
+ rescue Exception => e
18
+ next
19
+ end
20
+ end if names
21
+ i += 1
22
+ break if i >= klasses.length
23
+ end
24
+ end
25
+ end
data/lib/hyper-state.rb CHANGED
@@ -12,7 +12,9 @@ require 'hyperstack/state/observable'
12
12
  require 'hyperstack/state/observer'
13
13
  require 'hyperstack/state/version'
14
14
 
15
- if RUBY_ENGINE != 'opal'
15
+ if RUBY_ENGINE == 'opal'
16
+ require 'ext/object_space'
17
+ else
16
18
  require 'opal'
17
19
  Opal.append_path(File.expand_path('../', __FILE__).untaint)
18
20
  end
@@ -97,6 +97,28 @@ module Hyperstack
97
97
  state_writer(*names)
98
98
  end
99
99
  end
100
+ # receives is defined at the class an instance level above, but for
101
+ # convenience we also define it as singleton_method on the singleton class allowing this:
102
+ # class Foo
103
+ # class << self
104
+ # receives ...
105
+ # end
106
+ # end
107
+ base.singleton_class.define_singleton_method(:receives) do |*args, &block|
108
+ Internal::Receiver.mount(base, *args, &block)
109
+ end
110
+
111
+ unless base.respond_to? :__hyperstack_state_observer_included
112
+ base.receives Hyperstack::Application::Boot do
113
+ ObjectSpace.each_object(Class) do |klass|
114
+ next unless klass <= base
115
+ next unless klass.respond_to?(:initialize)
116
+ next unless klass.method(:initialize).arity.zero?
117
+ klass.initialize
118
+ end
119
+ end
120
+ base.singleton_class.attr_reader :__hyperstack_state_observer_included
121
+ end
100
122
  end
101
123
  end
102
124
  end
@@ -1,5 +1,5 @@
1
1
  module Hyperstack
2
2
  module State
3
- VERSION = '1.0.alpha1.7'
3
+ VERSION = '1.0.alpha1.8'
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: hyper-state
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.alpha1.7
4
+ version: 1.0.alpha1.8
5
5
  platform: ruby
6
6
  authors:
7
7
  - Mitch VanDuyn
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: exe
12
12
  cert_chain: []
13
- date: 2021-04-05 00:00:00.000000000 Z
13
+ date: 2021-04-13 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: hyperstack-config
@@ -18,14 +18,14 @@ dependencies:
18
18
  requirements:
19
19
  - - '='
20
20
  - !ruby/object:Gem::Version
21
- version: 1.0.alpha1.7
21
+ version: 1.0.alpha1.8
22
22
  type: :runtime
23
23
  prerelease: false
24
24
  version_requirements: !ruby/object:Gem::Requirement
25
25
  requirements:
26
26
  - - '='
27
27
  - !ruby/object:Gem::Version
28
- version: 1.0.alpha1.7
28
+ version: 1.0.alpha1.8
29
29
  - !ruby/object:Gem::Dependency
30
30
  name: bundler
31
31
  requirement: !ruby/object:Gem::Requirement
@@ -60,28 +60,28 @@ dependencies:
60
60
  requirements:
61
61
  - - '='
62
62
  - !ruby/object:Gem::Version
63
- version: 1.0.alpha1.7
63
+ version: 1.0.alpha1.8
64
64
  type: :development
65
65
  prerelease: false
66
66
  version_requirements: !ruby/object:Gem::Requirement
67
67
  requirements:
68
68
  - - '='
69
69
  - !ruby/object:Gem::Version
70
- version: 1.0.alpha1.7
70
+ version: 1.0.alpha1.8
71
71
  - !ruby/object:Gem::Dependency
72
72
  name: hyper-spec
73
73
  requirement: !ruby/object:Gem::Requirement
74
74
  requirements:
75
75
  - - '='
76
76
  - !ruby/object:Gem::Version
77
- version: 1.0.alpha1.7
77
+ version: 1.0.alpha1.8
78
78
  type: :development
79
79
  prerelease: false
80
80
  version_requirements: !ruby/object:Gem::Requirement
81
81
  requirements:
82
82
  - - '='
83
83
  - !ruby/object:Gem::Version
84
- version: 1.0.alpha1.7
84
+ version: 1.0.alpha1.8
85
85
  - !ruby/object:Gem::Dependency
86
86
  name: listen
87
87
  requirement: !ruby/object:Gem::Requirement
@@ -325,6 +325,7 @@ files:
325
325
  - README.md
326
326
  - Rakefile
327
327
  - hyper-state.gemspec
328
+ - lib/ext/object_space.rb
328
329
  - lib/hyper-state.rb
329
330
  - lib/hyperstack/internal/auto_unmount.rb
330
331
  - lib/hyperstack/internal/callbacks.rb