/tm_syntax_highlighting

A Rails plugin for code highlighting TextMate-style.

Primary LanguageRubyMIT LicenseMIT

TmSyntaxHighlighting

Important Version 2.0 Notes

This fork of the original tm_syntax_highlithing gem was created for ruby 1.9 compatibility at a time when the ultraviolet gem did not support it. This was done with the spox-ultraviolet fork, however this fork did not support ruby 1.9.3. The original ultraviolet gem has since released a 1.0.0 version that does support 1.9.3, and ostensibly 1.8.7 as well (though I have no plans to test that).

Important: Make sure you don't have spox-ultraviolet installed or it may supercede the regular ultraviolet and break Ruby 1.9.3

So the 2.0 version of this gem should have greatly improved compatibility, but note that the underlying libraries introduced new lang identifiers, so for instance, 'ruby' must be specified as 'source.ruby'. If you're using this plugin you wall want to audit your lang strings for correctness.

Gems, Generators and Versions

TextMate theme based highlighting for Rails 3.

This plugin was originally written by Arya Asemanfar. Rails 3 generator and 1.9.x compatibility by Gabe da Silveira.

I namespaced it as dasil003-tm_syntax_highlighting to avoid interference with the original.

Installation

On Ruby 1.9 you simply install the gem:

$ gem install dasil003-tm_syntax_highlighting

On Ruby 1.8 you will need to install Oniguruma (http://www.geocities.jp/kosako3/oniguruma/). I haven't actually tested this gem under Oniguruma, but ultraviolet claims support, so I will too. If there is a problem in 1.8, please feel free to submit a patch.

CSS Generator

It just copies all the syntax files from ultraviolet into your stylesheets directory. I haven't had time to figure out the Thor setup in Rails 3, so sue me.

# generate all the ultraviolet css theme files in public/stylesheets/syntax/*
$ rails generate syntax_css

Examples

The plugin adds 2 view helper methods: code and syntax_css

code (helper method) usage

code(some_ruby_code, :theme => "twilight", :lang => "source.ruby", :line_numbers => true)

lang and line_numbers are optional. lang will default to plain_text and line_numbers will default to true.

It is HIGHLY recommended that you fragment cache or some other type of caching for code fragments because ultraviolet is fairly slow.

Theme can be an array, and one will be chosen at random.

You can set defaults in an initializer:

# config/initializers/tm_syntax_config.rb
TmSyntaxHighlighting.defaults = {:theme => "sunburst", :line_numbers => true, :lang => "source.ruby"}

Again, theme can be an array and will be chosen at random.

syntax_css (helper_method) usage

The syntax_css method will include the stylesheet tags for the themes. You can call it with a theme name

syntax_css("twilight")

or if you call it with no options, it will include all the css files for the themes used in this request

code(some_ruby_code, :theme => "twilight")
code(some_more_ruby_code, :theme => "sunburst")
...
syntax_css # yields stylesheet tags for both twilight and sunburst