lib/rouge/theme.rb in rouge-0.3.10 vs lib/rouge/theme.rb in rouge-0.4.0
- old
+ new
@@ -18,23 +18,26 @@
return enum_for(:render, selector).to_a.join("\n") unless b
return if empty?
yield "#{selector} {"
- 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|
+ rendered_rules.each do |rule|
yield " #{rule};"
end
-
yield "}"
end
+ def rendered_rules(&b)
+ return enum_for(:rendered_rules) unless b
+ 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(&b)
+ end
end
def styles
@styles ||= self.class.styles.dup
end
@@ -140,14 +143,17 @@
styles.each do |tokname, style|
style.render(css_selector(Token[tokname]), &b)
end
end
+ def style_for(tok)
+ styles.fetch(tok.name) do
+ tok.parent ? style_for(tok.parent) : Style.new(self)
+ end
+ end
+
private
def css_selector(token)
- tokens = [token]
- parent = token.parent
-
inflate_token(token).map do |tok|
raise "unknown token: #{tok.inspect}" if tok.shortname.nil?
single_css_selector(tok)
end.join(', ')