class Rouge::Token
Attributes
name[R]
parent[R]
shortname[R]
Public Class Methods
[](qualname)
click to toggle source
# File lib/rouge/token.rb, line 17 def [](qualname) return qualname unless qualname.is_a? ::String Token.cache[qualname] end
cache()
click to toggle source
# File lib/rouge/token.rb, line 9 def cache @cache ||= {} end
each_token(&b)
click to toggle source
# File lib/rouge/token.rb, line 60 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 23 def inspect "<Token #{qualname}>" end
make_token(name, shortname, &b)
click to toggle source
# File lib/rouge/token.rb, line 44 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 27 def matches?(other) other.token_chain.include? self end
qualname()
click to toggle source
# File lib/rouge/token.rb, line 35 def qualname @qualname ||= token_chain.map(&:name).join('.') end
register!()
click to toggle source
# File lib/rouge/token.rb, line 39 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 13 def sub_tokens @sub_tokens ||= {} end
token(name, shortname, &b)
click to toggle source
# File lib/rouge/token.rb, line 55 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 31 def token_chain @token_chain ||= ancestors.take_while { |x| x != Token }.reverse end