Parent

Included Modules

Files

Jekyll::Tags::HighlightBlock

Constants

SYNTAX

The regular expression syntax checker. Start with the language specifier. Follow that by zero or more space separated options that take one of two forms:

  1. name

  2. name=value

Public Class Methods

new(tag_name, markup, tokens) click to toggle source
# File lib/jekyll/tags/highlight.rb, line 14
def initialize(tag_name, markup, tokens)
  super
  if markup.strip =~ SYNTAX
    @lang = $1
    @options = {}
    if defined?($2) && $2 != ''
      $2.split.each do |opt|
        key, value = opt.split('=')
        if value.nil?
          if key == 'linenos'
            value = 'inline'
          else
            value = true
          end
        end
        @options[key] = value
      end
    end
  else
    raise SyntaxError.new Syntax Error in tag 'highlight' while parsing the following markup:  #{markup}Valid syntax: highlight <lang> [linenos]
  end
end

Public Instance Methods

add_code_tags(code, lang) click to toggle source
# File lib/jekyll/tags/highlight.rb, line 75
def add_code_tags(code, lang)
  # Add nested <code> tags to code blocks
  code = code.sub(/<pre>/,'<pre><code class="' + lang + '">')
  code = code.sub(/<\/pre>/,"</code></pre>")
end
render(context) click to toggle source
# File lib/jekyll/tags/highlight.rb, line 43
def render(context)
  if context.registers[:site].pygments
    render_pygments(context, super)
  else
    render_codehighlighter(context, super)
  end
end
render_codehighlighter(context, code) click to toggle source
# File lib/jekyll/tags/highlight.rb, line 66
def render_codehighlighter(context, code)
  #The div is required because RDiscount blows ass
    <div>    <pre><code class='#{@lang}'>#{h(code).strip}</code></pre>  </div>
end
render_pygments(context, code) click to toggle source
# File lib/jekyll/tags/highlight.rb, line 51
def render_pygments(context, code)
  require 'pygments'

  @options[:encoding] = 'utf-8'

  output = add_code_tags(
    Pygments.highlight(code, :lexer => @lang, :options => @options),
    @lang
  )

  output = context["pygments_prefix"] + output if context["pygments_prefix"]
  output = output + context["pygments_suffix"] if context["pygments_suffix"]
  output
end

[Validate]

Generated with the Darkfish Rdoc Generator 2.