class 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:
-
name
-
name=value
-
Public Class Methods
new(tag_name, markup, tokens)
click to toggle source
Calls superclass method
# File lib/blastwolf/pygments.rb, line 16 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 <<-eos Syntax Error in tag 'highlight' while parsing the following markup: #{markup} Valid syntax: highlight <lang> [linenos] eos end end
Public Instance Methods
render(context)
click to toggle source
Calls superclass method
# File lib/blastwolf/pygments.rb, line 45 def render(context) if true render_pygments(context, super) else render_codehighlighter(context, super) end end
render_codehighlighter(context, code)
click to toggle source
# File lib/blastwolf/pygments.rb, line 68 def render_codehighlighter(context, code) #The div is required because RDiscount blows ass <<-HTML <div> <pre><code class='#{@lang}'>#{h(code).strip}</code></pre> </div> HTML end
render_pygments(context, code)
click to toggle source
# File lib/blastwolf/pygments.rb, line 53 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