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 +4 -4
- data/lib/ext/object_space.rb +25 -0
- data/lib/hyper-state.rb +3 -1
- data/lib/hyperstack/state/observable.rb +22 -0
- data/lib/hyperstack/state/version.rb +1 -1
- metadata +9 -8
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 8c41d6f6cf503727dc54d96011ffb061b738f2dc3e8b49788c37bd8763b94e16
|
4
|
+
data.tar.gz: f4df7162bdfdf5a6cb8e7c8447614377d3c593ef2a314608da4ff45fe330790d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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
|
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
|
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.
|
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-
|
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.
|
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.
|
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.
|
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.
|
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.
|
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.
|
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
|