Class: Imagen::AST::Parser

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

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(parser_version = Imagen.parser_version) ⇒ Parser

Returns a new instance of Parser.

Parameters:

  • parser_version (String) (defaults to: Imagen.parser_version)

    ruby syntax version



38
39
40
41
42
43
44
45
46
47
48
49
# File 'lib/imagen/ast/parser.rb', line 38

def initialize(parser_version = Imagen.parser_version)
  validate_version(parser_version)

  require "parser/#{parser_version}"

  required_const = if parser_version == 'current'
                     'CurrentRuby'
                   else
                     parser_version.capitalize
                   end
  @parser_klass = ::Parser.const_get(required_const)
end

Class Method Details

.parse(input, file = '(string)') ⇒ Object



33
34
35
# File 'lib/imagen/ast/parser.rb', line 33

def self.parse(input, file = '(string)')
  new.parse(input, file)
end

.parse_file(filename) ⇒ Object



29
30
31
# File 'lib/imagen/ast/parser.rb', line 29

def self.parse_file(filename)
  new.parse_file(filename)
end

Instance Method Details

#parse(input, file = '(string)') ⇒ Object



55
56
57
58
59
# File 'lib/imagen/ast/parser.rb', line 55

def parse(input, file = '(string)')
  buffer = ::Parser::Source::Buffer.new(file)
  buffer.source = input
  parser.parse(buffer)
end

#parse_file(filename) ⇒ Object



51
52
53
# File 'lib/imagen/ast/parser.rb', line 51

def parse_file(filename)
  parse(File.read(filename), filename)
end

#parserObject



61
62
63
64
65
66
67
# File 'lib/imagen/ast/parser.rb', line 61

def parser
  @parser_klass.new(AST::Builder.new).tap do |parser|
    diagnostics = parser.diagnostics
    diagnostics.all_errors_are_fatal = true
    diagnostics.ignore_warnings = true
  end
end