class Rote::Filters::Syntax

Page filter that supports syntax highlighting for Ruby code, XML and YAML via the (extensible) Syntax (syntax.rubyforge.org/) library. Code is expected to be enclosed by the code macro:

#:code#ruby#
  def amethod(arg)
    puts arg
  end
#:code#

Where the macro argument may be ‘ruby’, ‘xml’, ‘yaml’, or a custom identifier registered (with Syntax) for a custom highlighter.

The macro output will resemble:

<pre class='#{lang}'><code class=#{lang}'>
  ...
</code></pre>

Syntax uses <span> tags for highlighting, with CSS classes used to apply formatting. See syntax.rubyforge.org/chapter-2.html for a list of recognised classes.

Public Class Methods

new(macro_re = MACRO_RE) click to toggle source
# File lib/rote/filters/syntax.rb, line 41
def initialize(macro_re = MACRO_RE)
  super([],macro_re)
end

Public Instance Methods

macro_code(lang,body,raw) click to toggle source

Implementation of the code macro.

# File lib/rote/filters/syntax.rb, line 46
def macro_code(lang,body,raw)
  converter = ::Syntax::Convertors::HTML.for_syntax(lang)
  "<pre class='#{lang}'><code class='#{lang}'>#{converter.convert(body,false)}</code></pre>"
end