Class: Factorix::Dependency::Parser
- Inherits:
-
Object
- Object
- Factorix::Dependency::Parser
- Defined in:
- lib/factorix/dependency/parser.rb
Overview
Parser for MOD dependency strings using Parslet
This class parses dependency strings from info.json files and converts them into Dependency::Entry objects using a PEG-based parser.
Defined Under Namespace
Instance Method Summary collapse
-
#initialize ⇒ Parser
constructor
A new instance of Parser.
-
#parse(dependency_string) ⇒ Entry
Parse a dependency string into a Dependency::Entry object.
Constructor Details
Instance Method Details
#parse(dependency_string) ⇒ Entry
Parse a dependency string into a Dependency::Entry object
103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 |
# File 'lib/factorix/dependency/parser.rb', line 103 def parse(dependency_string) raise DependencyParseError, "dependency_string cannot be nil or empty" if dependency_string.nil? || dependency_string.empty? begin tree = @grammar.parse(dependency_string) data = @transform.apply(tree) mod_name = data[:mod_name].to_s mod = MOD[name: mod_name] type = data.dig(:prefix, :type) || Entry::REQUIRED version_requirement = build_version_requirement(data[:requirement]) Entry[mod:, type:, version_requirement:] rescue Parslet::ParseFailed => e raise DependencyParseError, (dependency_string, e) end end |