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