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



34
35
36
37
38
39
40
41
42
43
44
45
# File 'lib/imagen/ast/parser.rb', line 34

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



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

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

.parse_file(filename) ⇒ Object



25
26
27
# File 'lib/imagen/ast/parser.rb', line 25

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

Instance Method Details

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



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

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

#parse_file(filename) ⇒ Object



47
48
49
# File 'lib/imagen/ast/parser.rb', line 47

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

#parserObject



57
58
59
60
61
62
63
# File 'lib/imagen/ast/parser.rb', line 57

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