module Parsing

Public Class Methods

parse_block(block, local_variables = []) click to toggle source
# File lib/parsing.rb, line 7
def parse_block(block, local_variables = [])
    parser = Parser::CurrentRuby.default_parser
    local_variables.each do |var|
        parser.static_env.declare(var)
    end
    
    parser_source = Parser::Source::Buffer.new('(string)', 1)
    parser_source.source = block.to_source(strip_enclosure: true)
    
    return parser.parse(parser_source)
end
parse_method(method) click to toggle source
# File lib/parsing.rb, line 19
def parse_method(method)
    parser = Parser::CurrentRuby.default_parser
    method.parameters.each do |param|
        parser.static_env.declare(param[1])
    end

    parser_source = Parser::Source::Buffer.new('(string)', 1)
    # TODO: dirty hack necessary because Parser is broken
    parser_source.source = method.source.lines[1..-2].join
    
    return parser.parse(parser_source)
end