class Rouge::Token
Attributes
name[R]
parent[R]
shortname[R]
Public Class Methods
[](qualname)
click to toggle source
# File lib/rouge/token.rb, line 18 def [](qualname) return qualname unless qualname.is_a? ::String Token.cache[qualname] end
cache()
click to toggle source
# File lib/rouge/token.rb, line 10 def cache @cache ||= {} end
each_token(&b)
click to toggle source
# File lib/rouge/token.rb, line 61 def each_token(&b) Token.cache.each do |(_, t)| b.call(t) end end
inspect()
click to toggle source
# File lib/rouge/token.rb, line 24 def inspect "<Token #{qualname}>" end
make_token(name, shortname, &b)
click to toggle source
# File lib/rouge/token.rb, line 45 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/rouge/token.rb, line 28 def matches?(other) other.token_chain.include? self end
qualname()
click to toggle source
# File lib/rouge/token.rb, line 36 def qualname @qualname ||= token_chain.map(&:name).join('.') end
register!()
click to toggle source
# File lib/rouge/token.rb, line 40 def register! Token.cache[self.qualname] = self parent.sub_tokens[self.name] = self end
sub_tokens()
click to toggle source
# File lib/rouge/token.rb, line 14 def sub_tokens @sub_tokens ||= {} end
token(name, shortname, &b)
click to toggle source
# File lib/rouge/token.rb, line 56 def token(name, shortname, &b) tok = make_token(name, shortname, &b) const_set(name, tok) end
token_chain()
click to toggle source
# File lib/rouge/token.rb, line 32 def token_chain @token_chain ||= ancestors.take_while { |x| x != Token }.reverse end