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(', ')