hyper-state 1.0.alpha1.7 → 1.0.alpha1.8
Sign up to get free protection for your applications and to get access to all the features.
- 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
|