/* Ruby 1.8.4 syntax contributed by Erik Peterson */
dp.sh.Brushes.Ruby = function()
{
  var keywords =  'alias and BEGIN begin break case class def define_method defined do each else elsif ' +
          'END end ensure false for if in module new next nil not or raise redo rescue retry return ' +
          'self super then throw true undef unless until when while yield';

  var builtins =  'Array Bignum Binding Class Continuation Dir Exception FalseClass File::Stat File Fixnum Fload ' +
          'Hash Integer IO MatchData Method Module NilClass Numeric Object Proc Range Regexp String Struct::TMS Symbol ' +
          'ThreadGroup Thread Time TrueClass'

  this.regexList = [
    { regex: dp.sh.RegexLib.SingleLinePerlComments,      css: 'comment' },  // one line comments
    { regex: dp.sh.RegexLib.DoubleQuotedString,        css: 'string' },  // double quoted strings
    { regex: dp.sh.RegexLib.SingleQuotedString,        css: 'string' },  // single quoted strings
    { regex: new RegExp(':[a-z][A-Za-z0-9_]*', 'g'),    css: 'symbol' },  // symbols
    { regex: new RegExp('[\\$|@|@@]\\w+', 'g'),        css: 'variable' },  // $global, @instance, and @@class variables
    { regex: new RegExp(this.GetKeywords(keywords), 'gm'),  css: 'keyword' },  // keywords
    { regex: new RegExp(this.GetKeywords(builtins), 'gm'),  css: 'builtin' }  // builtins
    ];

  this.CssClass = 'dp-rb';
}

dp.sh.Brushes.Ruby.prototype  = new dp.sh.Highlighter();
dp.sh.Brushes.Ruby.Aliases  = ['ruby', 'rails'];
