module Webby::Helpers::UltraVioletHelper - webby-0.9.4 Documentation

# module Webby::Helpers::UltraVioletHelper

### Public Instance Methods

uv( *args, &block ) click to toggle source

The `uv` method applies syntax highlighting to source code embedded in a webpage. The UltraViolet highlighting engine is used for the HTML markup of the source code. The page sections to be highlighted are given as blocks of text to the `uv` method.

Options can be passed to the UltraViolet engine via attributes in the `uv` method.

    <% uv( :lang => "ruby", :line_numbers => true ) do -%>
    # Initializer for the class.
    def initialize( string )
      @str = string
    end
    <% end -%>

The supported UltraViolet options are the following:

    :lang           : the language to highlight (ruby, c, html, ...)
                      [defaults to 'ruby']
    :line_numbers   : true or false [defaults to false]
    :theme          : see list of available themes in ultraviolet
                      [defaults to 'mac_classic']

The defaults can be overridden for an entire site by changing the SITE.uv options hash in the Rakefile.

    # File lib/webby/helpers/ultraviolet_helper.rb, line 49
    def uv( *args, &block )
      opts = args.last.instance_of?(Hash) ? args.pop : {}

      text = capture_erb(&block)
      return if text.empty?

      defaults = ::Webby.site.uv
      lang = opts.getopt(:lang, defaults.lang)
      line_numbers = opts.getopt(:line_numbers, defaults.line_numbers)
      theme = opts.getopt(:theme, defaults.theme)

      out = %Q{<div class="UltraViolet">\n}
      out << Uv.parse(text, "xhtml", lang, line_numbers, theme)
      out << %Q{\n</div>}

      # put some guards around the output (specifically for textile)
      out = _guard(out)

      concat_erb(out, block.binding)
      return
    end