class States::Dsl::Naming

Attributes

children[R]
converter[RW]
names[R]
namespace[R]
parent[R]

Public Class Methods

new(parent) click to toggle source
# File lib/states/dsl/naming.rb, line 11
def initialize(parent)
  @parent = parent
  @names = []
  @references = []
  @children = []
  if parent
    @namespace = parent.namespace
    if parent.converter
      self.converter = parent.converter
    end
    parent.children << self
  else
    @namespace = Namespace.new
  end
end

Public Instance Methods

<<(name) click to toggle source
# File lib/states/dsl/naming.rb, line 27
def <<(name)
  nm = StateName.new(name, self)
  @names << nm
  nm
end
convert(str) click to toggle source
# File lib/states/dsl/naming.rb, line 39
def convert(str)
  if converter
    converter.call(str)
  else
    str
  end
end
ref(name) click to toggle source
# File lib/states/dsl/naming.rb, line 33
def ref(name)
  ref = StateReference.new(name, self)
  @references << ref
  ref
end
resolve() click to toggle source
# File lib/states/dsl/naming.rb, line 47
def resolve
  return if @resolved
  if parent
    parent.resolve
  else
    resolve_children
  end
end
resolve_children() click to toggle source
# File lib/states/dsl/naming.rb, line 56
def resolve_children
  @names.each { |name| @namespace.resolve(name) }
  @references.each do |ref|
    ref.resolved_to = @names.detect { |nm| nm.local_name == ref.name }
  end
  @children.each(&:resolve_children)
  @resolved = true
end