Sha256: 03a20d947350354681b10e91e050df58daf33b94f0a1f3463d3e07c62dec1cfa
Contents?: true
Size: 1.03 KB
Versions: 2
Compression:
Stored size: 1.03 KB
Contents
require_relative 'syntax' require_relative 'semantics' module BELParser module Language class ExpressionValidator def initialize(spec, namespaces) @spec = spec @namespaces = namespaces @syntax_functions = Syntax.syntax_functions @semantics_functions = Semantics.semantics_functions end def validate(expression_node) results = syntax(expression_node) if results.empty? results << Syntax::Valid.new(expression_node, @spec) results.concat(semantics(expression_node)) end results end private def syntax(expression_node) expression_node.traverse.flat_map do |node| @syntax_functions.map { |func| func.map(node, @spec, @namespaces) } end.compact end def semantics(expression_node) expression_node.traverse.flat_map do |node| @semantics_functions.map { |func| func.map(node, @spec, @namespaces) } end.compact end end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
bel_parser-1.0.0.alpha.7 | lib/bel_parser/language/expression_validator.rb |
bel_parser-1.0.0.alpha.6 | lib/bel_parser/language/expression_validator.rb |