123456789_123456789_123456789_123456789_123456789_

Class: Prism::Translation::RubyParser

Relationships & Source Files
Namespace Children
Classes:
Inherits: Object
Defined in: lib/prism/translation/ruby_parser.rb

Overview

This module is the entry-point for converting a prism syntax tree into the seattlerb/ruby_parser gem’s syntax tree.

Class Method Summary

Instance Method Summary

Class Method Details

.parse(source, filepath = "(string)")

Parse the given source and translate it into the seattlerb/ruby_parser gem’s Sexp format.

[ GitHub ]

  
# File 'lib/prism/translation/ruby_parser.rb', line 1611

def parse(source, filepath = "(string)")
  new.parse(source, filepath)
end

.parse_file(filepath)

Parse the given file and translate it into the seattlerb/ruby_parser gem’s Sexp format.

[ GitHub ]

  
# File 'lib/prism/translation/ruby_parser.rb', line 1617

def parse_file(filepath)
  new.parse_file(filepath)
end

Instance Method Details

#parse(source, filepath = "(string)")

Parse the given source and translate it into the seattlerb/ruby_parser gem’s Sexp format.

[ GitHub ]

  
# File 'lib/prism/translation/ruby_parser.rb', line 1598

def parse(source, filepath = "(string)")
  translate(Prism.parse(source, filepath: filepath, partial_script: true), filepath)
end

#parse_file(filepath)

Parse the given file and translate it into the seattlerb/ruby_parser gem’s Sexp format.

[ GitHub ]

  
# File 'lib/prism/translation/ruby_parser.rb', line 1604

def parse_file(filepath)
  translate(Prism.parse_file(filepath, partial_script: true), filepath)
end

#translate(result, filepath) (private)

Translate the given parse result and filepath into the seattlerb/ruby_parser gem’s Sexp format.

[ GitHub ]

  
# File 'lib/prism/translation/ruby_parser.rb', line 1626

def translate(result, filepath)
  if result.failure?
    error = result.errors.first
    raise ::RubyParser::SyntaxError, "#{filepath}:#{error.location.start_line} :: #{error.message}"
  end

  result.value.accept(Compiler.new(filepath))
end