Class: Woods::Ast::Parser
- Inherits:
-
Object
- Object
- Woods::Ast::Parser
- Includes:
- SourceSpan
- Defined in:
- lib/woods/ast/parser.rb
Overview
Parser adapter that normalizes Prism and parser gem ASTs to a common Node structure. Auto-detects parser availability at load time.
Instance Method Summary collapse
-
#parse(source) ⇒ Ast::Node
Parse Ruby source into a normalized AST.
-
#prism_available? ⇒ Boolean
Check if Prism is available.
Instance Method Details
#parse(source) ⇒ Ast::Node
Parse Ruby source into a normalized AST.
25 26 27 28 29 30 31 32 33 |
# File 'lib/woods/ast/parser.rb', line 25 def parse(source) if prism_available? parse_with_prism(source) else parse_with_parser_gem(source) end rescue StandardError => e raise Woods::ExtractionError, "Failed to parse source: #{e.}" end |
#prism_available? ⇒ Boolean
Check if Prism is available.
38 39 40 41 42 43 44 45 |
# File 'lib/woods/ast/parser.rb', line 38 def prism_available? return @prism_available unless @prism_available.nil? require 'prism' @prism_available = true rescue LoadError @prism_available = false end |