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?