Class: Solid::Parser

Inherits:
Object
  • Object
show all
Defined in:
lib/solid/parser.rb

Direct Known Subclasses

Ripper, RubyParser

Defined Under Namespace

Classes: ContextVariable, Literal, LiteralArray, LiteralHash, LiteralRange, MethodCall, Ripper, RubyParser

Constant Summary collapse

BASE_PATH =
File.join(File.expand_path(File.dirname(__FILE__)), 'parser')
KEYWORDS =
{
  'true' => Literal.new(true),
  'false' => Literal.new(false),
  'nil' => Literal.new(nil),
}

Class Attribute Summary collapse

Class Method Summary collapse

Class Attribute Details

.parserObject



88
89
90
91
92
93
94
95
96
97
98
99
100
# File 'lib/solid/parser.rb', line 88

def parser
  @parser || begin
    if defined?(Solid::Parser::RubyParser)
      Solid::Parser::RubyParser
    elsif defined?(Solid::Parser::Ripper)
      Solid::Parser::Ripper
    else
      raise "You need to run MRI (to have Ripper), "\
        "or have 'ruby_parser' in $LOAD_PATH "\
        "or set #{self}.parser yourself"
    end
  end
end

Class Method Details

.parse(string) ⇒ Object



102
103
104
# File 'lib/solid/parser.rb', line 102

def parse(string)
  parser.parse(string)
end