lib/rouge/theme.rb in rouge-0.0.13 vs lib/rouge/theme.rb in rouge-0.0.14

- old
+ new

@@ -39,18 +39,25 @@ super() @theme = theme merge!(hsh) end + [:fg, :bg].each do |mode| + define_method mode do + return self[mode] unless @theme + @theme.palette(self[mode]) if self[mode] + end + end + def render(selector, &b) return enum_for(:render, selector).to_a.join("\n") unless b return if empty? yield "#{selector} {" - yield " color: #{@theme.palette(self[:fg])};" if self[:fg] - yield " background-color: #{@theme.palette(self[:bg])};" if self[:bg] + yield " color: #{fg};" if fg + yield " background-color: #{bg};" if bg yield " font-weight: bold;" if self[:bold] yield " font-style: italic;" if self[:italic] yield " text-decoration: underline;" if self[:underline] (self[:rules] || []).each do |rule| @@ -86,18 +93,30 @@ @styles = {} def self.styles @styles ||= InheritableHash.new(superclass.styles) end + def self.render(opts={}, &b) + new(opts).render(&b) + end + class << self def style(*tokens) style = tokens.last.is_a?(Hash) ? tokens.pop : {} style = Style.new(self, style) tokens.each do |tok| styles[tok.to_s] = style end + end + + def get_style(token) + token.ancestors do |anc| + return styles[anc.name] if styles[anc.name] + end + + styles['Text'] end def name(n=nil) return @name if n.nil?