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