class Nanoc::Filters::ColorizeSyntax::Colorizers::RougeColorizer
Public Instance Methods
postprocess(_language, element)
click to toggle source
# File lib/nanoc/filters/colorize_syntax/colorizers.rb, line 141 def postprocess(_language, element) # Removes the double wrapping. # # Before: # # <pre><code class="language-ruby"><pre class="highlight"><code> # # After: # # <pre><code class="language-ruby highlight"> return if element.name != 'pre' code1 = element.xpath('code').first return if code1.nil? div = code1.xpath('div').first # For Rouge 2.x and 1.x, respectively pre = (div || code1).xpath('pre').first return if pre.nil? code2 = pre.xpath('code').first return if code2.nil? code1.inner_html = code2.inner_html code1['class'] = [code1['class'], pre['class']].compact.join(' ') end
process(code, language, params = {})
click to toggle source
# File lib/nanoc/filters/colorize_syntax/colorizers.rb, line 120 def process(code, language, params = {}) require 'rouge' if params.fetch(:legacy, false) formatter_options = { css_class: params.fetch(:css_class, 'highlight'), inline_theme: params.fetch(:inline_theme, nil), line_numbers: params.fetch(:line_numbers, false), start_line: params.fetch(:start_line, 1), wrap: params.fetch(:wrap, false), } formatter_cls = Rouge::Formatters::HTMLLegacy formatter = formatter_cls.new(formatter_options) else formatter = params.fetch(:formatter, Rouge::Formatters::HTML.new) end lexer = Rouge::Lexer.find_fancy(language, code) || Rouge::Lexers::PlainText formatter.format(lexer.lex(code)) end