Module: StateFu::ArrayWithSymbolAccessor

Included in:
EventArray, StateArray
Defined in:
lib/support/arrays.rb

Overview

Stuff shared between StateArray and EventArray

Instance Method Summary (collapse)

Instance Method Details

- (Object) [](idx)

Pass a symbol to the array and get the object with that .name

<Foo @name=:bob>][:bob

> <Foo @name=:bob>



10
11
12
13
14
15
16
17
18
19
20
# File 'lib/support/arrays.rb', line 10

def []( idx )
  begin
    super( idx )
  rescue TypeError => e
    if idx.respond_to?(:to_sym)
      self.detect { |i| i == idx || i.respond_to?(:name) && i.name == idx.to_sym }
    else
      raise e
    end
  end
end

- (Object) all



37
38
39
# File 'lib/support/arrays.rb', line 37

def all
  self
end

- (Object) except(*syms)

SPECME



29
30
31
# File 'lib/support/arrays.rb', line 29

def except *syms
  reject {|el| syms.flatten.compact.map(&:to_sym).include?(el.to_sym) } #.extend ArrayWithSymbolAccessor
end

- (Object) names

so we can go Machine.states.names mildly helpful with irb + readline



24
25
26
# File 'lib/support/arrays.rb', line 24

def names
  map(&:name)
end

- (Object) only(*syms)



33
34
35
# File 'lib/support/arrays.rb', line 33

def only *syms
  select {|el| syms.flatten.compact.map(&:to_sym).include?(el.to_sym) } #.extend ArrayWithSymbolAccessor
end

- (Object) rand



41
42
43
# File 'lib/support/arrays.rb', line 41

def rand
  self.rand
end