class Rugments::Token

Attributes

name[R]
parent[R]
shortname[R]

Public Class Methods

[](qualname) click to toggle source
# File lib/rugments/token.rb, line 16
def [](qualname)
  return qualname unless qualname.is_a?(::String)

  Token.cache[qualname]
end
cache() click to toggle source
# File lib/rugments/token.rb, line 8
def cache
  @cache ||= {}
end
each_token(&b) click to toggle source
# File lib/rugments/token.rb, line 59
def each_token(&b)
  Token.cache.each do |(_, t)|
    b.call(t)
  end
end
inspect() click to toggle source
# File lib/rugments/token.rb, line 22
def inspect
  "<Token #{qualname}>"
end
make_token(name, shortname, &b) click to toggle source
# File lib/rugments/token.rb, line 43
def make_token(name, shortname, &b)
  parent = self
  Class.new(parent) do
    @parent = parent
    @name = name
    @shortname = shortname
    register!
    class_eval(&b) if b
  end
end
matches?(other) click to toggle source
# File lib/rugments/token.rb, line 26
def matches?(other)
  other.token_chain.include? self
end
qualname() click to toggle source
# File lib/rugments/token.rb, line 34
def qualname
  @qualname ||= token_chain.map(&:name).join('.')
end
register!() click to toggle source
# File lib/rugments/token.rb, line 38
def register!
  Token.cache[qualname] = self
  parent.sub_tokens[name] = self
end
sub_tokens() click to toggle source
# File lib/rugments/token.rb, line 12
def sub_tokens
  @sub_tokens ||= {}
end
token(name, shortname, &b) click to toggle source
# File lib/rugments/token.rb, line 54
def token(name, shortname, &b)
  tok = make_token(name, shortname, &b)
  const_set(name, tok)
end
token_chain() click to toggle source
# File lib/rugments/token.rb, line 30
def token_chain
  @token_chain ||= ancestors.take_while { |x| x != Token }.reverse
end