Module: Moult::Parser

Defined in:
lib/moult/parser.rb

Overview

Pure parsing layer: source -> list of MethodDef. No IO beyond optionally reading a file; no git, no scoring. Trivially unit-testable on snippets.

Defined Under Namespace

Classes: Visitor

Class Method Summary collapse

Class Method Details

.parse_file(path) ⇒ Array<MethodDef>

Parameters:

  • path (String)

    file to read and parse

Returns:



23
24
25
# File 'lib/moult/parser.rb', line 23

def parse_file(path)
  parse_source(File.read(path))
end

.parse_source(source) ⇒ Array<MethodDef>

Returns in source order.

Parameters:

  • source (String)

    Ruby source

Returns:



29
30
31
32
33
34
# File 'lib/moult/parser.rb', line 29

def parse_source(source)
  result = Prism.parse(source)
  visitor = Visitor.new
  result.value.accept(visitor)
  visitor.methods
end