class Rouge::CSSTheme

def css_selector(token)

def css_selector(token)
  inflate_token(token).map do |tok|
    raise "unknown token: #{tok.inspect}" if tok.shortname.nil?
    single_css_selector(tok)
  end.join(', ')
end

def inflate_token(tok, &b)

styled.
the subtokens, except those which are more specifically
as the given token. Essentially this recursively all of
yield all of the tokens that should be styled the same
def inflate_token(tok, &b)
  return enum_for(:inflate_token, tok) unless block_given?
  yield tok
  tok.sub_tokens.each do |(_, st)|
    next if styles[st]
    inflate_token(st, &b)
  end
end

def initialize(opts={})

def initialize(opts={})
  @scope = opts[:scope] || '.highlight'
end

def render(&b)

def render(&b)
  return enum_for(:render).to_a.join("\n") unless b
  # shared styles for tableized line numbers
  yield "#{@scope} table td { padding: 5px; }"
  yield "#{@scope} table pre { margin: 0; }"
  styles.each do |tok, style|
    Style.new(self, style).render(css_selector(tok), &b)
  end
end

def render_base(selector, &b)

def render_base(selector, &b)
  self.class.base_style.render(selector, &b)
end

def single_css_selector(token)

def single_css_selector(token)
  return @scope if token == Text
  "#{@scope} .#{token.shortname}"
end

def style_for(tok)

def style_for(tok)
  self.class.get_style(tok)
end