class Middleman::Syntax::SyntaxExtension
Public Instance Methods
after_configuration()
click to toggle source
# File lib/middleman-syntax/extension.rb, line 17 def after_configuration Middleman::Syntax::Highlighter.options = options if app.config[:markdown_engine] == :redcarpet require 'middleman-core/renderers/redcarpet' Middleman::Renderers::MiddlemanRedcarpetHTML.send :include, RedcarpetCodeRenderer elsif app.config[:markdown_engine] == :kramdown require 'kramdown' Kramdown::Converter::Html.class_eval do def convert_codeblock(el, indent) attr = el.attr.dup language = extract_code_language!(attr) Middleman::Syntax::Highlighter.highlight(el.value, language) end end end end
code(language=nil, options={}, &block)
click to toggle source
Output highlighted code. Use like:
<% code('ruby', :line_numbers => true, :start_line => 7) do %> my code <% end %>
To produce the following structure:
<pre class="highlight ruby"> <code>#{your code}</code> </pre>
If no language is provided, then the language name is `plaintext`.
@param [String] language that the Rouge lexer should use @param [Hash] Options to pass to the Rouge formatter & lexer, overriding global options set by :highlighter_options.
# File lib/middleman-syntax/extension.rb, line 51 def code(language=nil, options={}, &block) raise 'The code helper requires a block to be provided.' unless block_given? # Save current buffer for later @_out_buf, _buf_was = "", @_out_buf begin content = capture_html(&block) ensure # Reset stored buffer @_out_buf = _buf_was end content = content.encode(Encoding::UTF_8) concat_content Middleman::Syntax::Highlighter.highlight(content, language, options).html_safe end
convert_codeblock(el, indent)
click to toggle source
# File lib/middleman-syntax/extension.rb, line 25 def convert_codeblock(el, indent) attr = el.attr.dup language = extract_code_language!(attr) Middleman::Syntax::Highlighter.highlight(el.value, language) end