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