From 2114bb3c2ebab040d712b021ee2386fc6d65a714 Mon Sep 17 00:00:00 2001 From: Parker Moore Date: Wed, 8 May 2013 00:10:18 +0200 Subject: [PATCH] Respect pygments config option in Redcarpet renderer. --- .../converters/markdown/redcarpet_parser.rb | 44 ++++++++++++++----- 1 file changed, 32 insertions(+), 12 deletions(-) diff --git a/lib/jekyll/converters/markdown/redcarpet_parser.rb b/lib/jekyll/converters/markdown/redcarpet_parser.rb index b7a25c46..37e06331 100644 --- a/lib/jekyll/converters/markdown/redcarpet_parser.rb +++ b/lib/jekyll/converters/markdown/redcarpet_parser.rb @@ -2,6 +2,33 @@ module Jekyll module Converters class Markdown class RedcarpetParser + + module CommonMethods + def add_code_tags(code, lang) + code = code.sub(/
/, "
")
+            code = code.sub(/<\/pre>/,"
") + end + end + + class WithPygments < Redcarpet::Render::HTML + include CommonMethods + def block_code(code, lang) + lang = lang && lang.split.first || "text" + output = add_code_tags( + Pygments.highlight(code, :lexer => lang, :options => { :encoding => 'utf-8' }), + lang + ) + end + end + + class WithoutPygments < Redcarpet::Render::HTML + include CommonMethods + def block_code(code, lang) + lang = lang && lang.split.first || "text" + output = add_code_tags(code, lang) + end + end + def initialize(config) require 'redcarpet' require 'pygments' @@ -9,19 +36,12 @@ module Jekyll @redcarpet_extensions = {} @config['redcarpet']['extensions'].each { |e| @redcarpet_extensions[e.to_sym] = true } - @renderer ||= Class.new(Redcarpet::Render::HTML) do - def block_code(code, lang) - lang = lang && lang.split.first || "text" - output = add_code_tags( - Pygments.highlight(code, :lexer => lang, :options => { :encoding => 'utf-8' }), - lang - ) - end + @renderer ||= if @config['pygments'] + WithPygments + else + WithoutPygments + end - def add_code_tags(code, lang) - code = code.sub(/
/, "
")
-              code = code.sub(/<\/pre>/,"
") - end end rescue LoadError STDERR.puts 'You are missing a library required for Markdown. Please run:'