Rubocop: lib/jekyll/converters/markdown/redcarpet_parser.rb
This commit is contained in:
		
							parent
							
								
									0880dc097f
								
							
						
					
					
						commit
						d855ec03ba
					
				|  | @ -1,12 +1,12 @@ | ||||||
| module Jekyll | class Jekyll::Converters::Markdown::RedcarpetParser | ||||||
|   module Converters |  | ||||||
|     class Markdown |  | ||||||
|       class RedcarpetParser |  | ||||||
|   module CommonMethods |   module CommonMethods | ||||||
|     def add_code_tags(code, lang) |     def add_code_tags(code, lang) | ||||||
|       code = code.to_s |       code = code.to_s | ||||||
|             code = code.sub(/<pre>/, "<pre><code class=\"language-#{lang}\" data-lang=\"#{lang}\">") |       code = code.sub( | ||||||
|             code = code.sub(/<\/pre>/, "</code></pre>") |         /<pre>/, | ||||||
|  |         "<pre><code class=\"language-#{lang}\" data-lang=\"#{lang}\">" | ||||||
|  |       ) | ||||||
|  |       code = code.sub(%r!</pre>!, "</code></pre>") | ||||||
|       code |       code | ||||||
|     end |     end | ||||||
|   end |   end | ||||||
|  | @ -17,19 +17,25 @@ module Jekyll | ||||||
|       Jekyll::External.require_with_graceful_fail("pygments") |       Jekyll::External.require_with_graceful_fail("pygments") | ||||||
|       lang = lang && lang.split.first || "text" |       lang = lang && lang.split.first || "text" | ||||||
|       add_code_tags( |       add_code_tags( | ||||||
|               Pygments.highlight(code, :lexer => lang, :options => { :encoding => 'utf-8' }), |         Pygments.highlight( | ||||||
|  |           code, | ||||||
|  |           { | ||||||
|  |             :lexer   => lang, | ||||||
|  |             :options => { :encoding => "utf-8" } | ||||||
|  |           } | ||||||
|  |         ), | ||||||
|         lang |         lang | ||||||
|       ) |       ) | ||||||
|     end |     end | ||||||
|   end |   end | ||||||
| 
 | 
 | ||||||
|   module WithoutHighlighting |   module WithoutHighlighting | ||||||
|           require 'cgi' |     require "cgi" | ||||||
| 
 | 
 | ||||||
|     include CommonMethods |     include CommonMethods | ||||||
| 
 | 
 | ||||||
|     def code_wrap(code) |     def code_wrap(code) | ||||||
|             "<figure class=\"highlight\"><pre>#{CGI::escapeHTML(code)}</pre></figure>" |       "<figure class=\"highlight\"><pre>#{CGI.escapeHTML(code)}</pre></figure>" | ||||||
|     end |     end | ||||||
| 
 | 
 | ||||||
|     def block_code(code, lang) |     def block_code(code, lang) | ||||||
|  | @ -54,25 +60,24 @@ module Jekyll | ||||||
|   end |   end | ||||||
| 
 | 
 | ||||||
|   def initialize(config) |   def initialize(config) | ||||||
|           External.require_with_graceful_fail("redcarpet") |     Jekyll::External.require_with_graceful_fail("redcarpet") | ||||||
|     @config = config |     @config = config | ||||||
|     @redcarpet_extensions = {} |     @redcarpet_extensions = {} | ||||||
|           @config['redcarpet']['extensions'].each { |e| @redcarpet_extensions[e.to_sym] = true } |     @config["redcarpet"]["extensions"].each do |e| | ||||||
|  |       @redcarpet_extensions[e.to_sym] = true | ||||||
|  |     end | ||||||
| 
 | 
 | ||||||
|           @renderer ||= class_with_proper_highlighter(@config['highlighter']) |     @renderer ||= class_with_proper_highlighter(@config["highlighter"]) | ||||||
|   end |   end | ||||||
| 
 | 
 | ||||||
|   def class_with_proper_highlighter(highlighter) |   def class_with_proper_highlighter(highlighter) | ||||||
|  |     Class.new(Redcarpet::Render::HTML) do | ||||||
|       case highlighter |       case highlighter | ||||||
|       when "pygments" |       when "pygments" | ||||||
|             Class.new(Redcarpet::Render::HTML) do |  | ||||||
|         include WithPygments |         include WithPygments | ||||||
|             end |  | ||||||
|       when "rouge" |       when "rouge" | ||||||
|             Class.new(Redcarpet::Render::HTML) do |  | ||||||
|         Jekyll::External.require_with_graceful_fail(%w( |         Jekyll::External.require_with_graceful_fail(%w( | ||||||
|                 rouge |           rouge rouge/plugins/redcarpet | ||||||
|                 rouge/plugins/redcarpet |  | ||||||
|         )) |         )) | ||||||
| 
 | 
 | ||||||
|         unless Gem::Version.new(Rouge.version) > Gem::Version.new("1.3.0") |         unless Gem::Version.new(Rouge.version) > Gem::Version.new("1.3.0") | ||||||
|  | @ -82,21 +87,22 @@ module Jekyll | ||||||
|         include Rouge::Plugins::Redcarpet |         include Rouge::Plugins::Redcarpet | ||||||
|         include CommonMethods |         include CommonMethods | ||||||
|         include WithRouge |         include WithRouge | ||||||
|             end |  | ||||||
|       else |       else | ||||||
|             Class.new(Redcarpet::Render::HTML) do |  | ||||||
|         include WithoutHighlighting |         include WithoutHighlighting | ||||||
|       end |       end | ||||||
|     end |     end | ||||||
|   end |   end | ||||||
| 
 | 
 | ||||||
|   def convert(content) |   def convert(content) | ||||||
|           @redcarpet_extensions[:fenced_code_blocks] = !@redcarpet_extensions[:no_fenced_code_blocks] |     @redcarpet_extensions[:fenced_code_blocks] = \ | ||||||
|           @renderer.send :include, Redcarpet::Render::SmartyPants if @redcarpet_extensions[:smart] |       !@redcarpet_extensions[:no_fenced_code_blocks] | ||||||
|           markdown = Redcarpet::Markdown.new(@renderer.new(@redcarpet_extensions), @redcarpet_extensions) |     if @redcarpet_extensions[:smart] | ||||||
|  |       @renderer.send :include, Redcarpet::Render::SmartyPants | ||||||
|  |     end | ||||||
|  |     markdown = Redcarpet::Markdown.new( | ||||||
|  |       @renderer.new(@redcarpet_extensions), | ||||||
|  |       @redcarpet_extensions | ||||||
|  |     ) | ||||||
|     markdown.render(content) |     markdown.render(content) | ||||||
|   end |   end | ||||||
|       end |  | ||||||
|     end |  | ||||||
|   end |  | ||||||
| end | end | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue