Class: PikoState
- Inherits:
-
Object
- Object
- PikoState
- Defined in:
- lib/piko_state.rb,
lib/piko_state/version.rb
Constant Summary collapse
- VERSION =
"1.0.4"
Instance Method Summary collapse
- #[](key) ⇒ Object
- #clear! ⇒ Object
- #define(key, start, stop: nil) ⇒ Object
-
#initialize {|_self| ... } ⇒ PikoState
constructor
A new instance of PikoState.
- #keys ⇒ Object
- #reload(key) ⇒ Object
- #start(key) ⇒ Object
- #start_all ⇒ Object
- #started?(key) ⇒ Boolean
- #stop(key) ⇒ Object
- #stop_all ⇒ Object
Constructor Details
#initialize {|_self| ... } ⇒ PikoState
Returns a new instance of PikoState.
4 5 6 7 8 |
# File 'lib/piko_state.rb', line 4 def initialize @definitions = {} # :key => {start:, stop:} @instances = {} # :key => instance yield(self) if block_given? end |
Instance Method Details
#[](key) ⇒ Object
27 28 29 |
# File 'lib/piko_state.rb', line 27 def [](key) start(key) end |
#clear! ⇒ Object
52 53 54 55 |
# File 'lib/piko_state.rb', line 52 def clear! stop_all @definitions.clear end |
#define(key, start, stop: nil) ⇒ Object
10 11 12 |
# File 'lib/piko_state.rb', line 10 def define(key, start, stop: nil) @definitions[key] = {start: start, stop: stop} end |
#keys ⇒ Object
35 36 37 |
# File 'lib/piko_state.rb', line 35 def keys @definitions.keys end |
#reload(key) ⇒ Object
47 48 49 50 |
# File 'lib/piko_state.rb', line 47 def reload(key) stop(key) start(key) end |
#start(key) ⇒ Object
14 15 16 17 18 |
# File 'lib/piko_state.rb', line 14 def start(key) return @instances[key] if @instances.key?(key) # puts "[system] starting #{key}" @instances[key] = @definitions[key][:start].call end |
#start_all ⇒ Object
39 40 41 |
# File 'lib/piko_state.rb', line 39 def start_all keys.each { |k| start(k) } end |
#started?(key) ⇒ Boolean
31 32 33 |
# File 'lib/piko_state.rb', line 31 def started?(key) @instances.key?(key) end |
#stop(key) ⇒ Object
20 21 22 23 24 25 |
# File 'lib/piko_state.rb', line 20 def stop(key) return unless @instances.key?(key) # puts "[system] stopping #{key}" @definitions[key][:stop]&.call(@instances[key]) @instances.delete(key) end |
#stop_all ⇒ Object
43 44 45 |
# File 'lib/piko_state.rb', line 43 def stop_all keys.reverse_each { |k| stop(k) } end |