class Puppet::Zone::StateMachine

Public Instance Methods

alias_state(state, salias) click to toggle source
# File lib/puppet/type/zone.rb, line 25
def alias_state(state, salias)
  @state_aliases[state] = salias
end
cmp?(a,b) click to toggle source
# File lib/puppet/type/zone.rb, line 47
def cmp?(a,b)
  index(a) < index(b)
end
index(state) click to toggle source
# File lib/puppet/type/zone.rb, line 33
def index(state)
  @sequence.index(name(state))
end
insert_state(name, transitions) click to toggle source

The order of calling #insert_state is important

# File lib/puppet/type/zone.rb, line 20
def insert_state(name, transitions)
  @sequence << name
  @state[name] = transitions
end
name(n) click to toggle source
# File lib/puppet/type/zone.rb, line 29
def name(n)
  @state_aliases[n.to_sym] || n.to_sym
end
sequence(fs, ss) click to toggle source

return all states between fs and ss excluding fs

# File lib/puppet/type/zone.rb, line 38
def sequence(fs, ss)
  fi = index(fs)
  si= index(ss)
  (if fi > si
    then @sequence[si .. fi].map{|i| @state[i]}.reverse
    else @sequence[fi .. si].map{|i| @state[i]}
  end)[1..-1]
end

Public Class Methods

new() click to toggle source

A silly little state machine.

# File lib/puppet/type/zone.rb, line 12
def initialize
  @state = {}
  @sequence = []
  @state_aliases = {}
  @default = nil
end