Class: PikoState

Inherits:
Object
  • Object
show all
Defined in:
lib/piko_state.rb,
lib/piko_state/version.rb

Constant Summary collapse

VERSION =
"1.0.4"

Instance Method Summary collapse

Constructor Details

#initialize {|_self| ... } ⇒ PikoState

Returns a new instance of PikoState.

Yields:

  • (_self)

Yield Parameters:

  • _self (PikoState)

    the object that the method was called on



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

#keysObject



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_allObject



39
40
41
# File 'lib/piko_state.rb', line 39

def start_all
  keys.each { |k| start(k) }
end

#started?(key) ⇒ Boolean

Returns:

  • (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_allObject



43
44
45
# File 'lib/piko_state.rb', line 43

def stop_all
  keys.reverse_each { |k| stop(k) }
end