Sha256: 2e572a92e434cef48544b3c7bbfe69944eea2368ff629c008a854c755fb729d6

Contents?: true

Size: 1.43 KB

Versions: 10

Compression:

Stored size: 1.43 KB

Contents

require 'bel_parser/language'
require 'bel_parser/language/expression_validator'
require 'bel_parser/language/syntax_function'
require 'bel_parser/language/syntax_warning'
require 'bel_parser/parsers/ast/node'
require 'concurrent/hash'

module BELParser
  module Script
    module Syntax
      class ExpressionValidation
        extend BELParser::Language::Syntax::SyntaxFunction

        TARGET_NODES = [
          BELParser::Parsers::AST::ObservedTerm,
          BELParser::Parsers::AST::SimpleStatement,
          BELParser::Parsers::AST::NestedStatement
        ]
        EXP_VALIDATOR = BELParser::Language::ExpressionValidator

        def self.map(ast_node, script_context)
          return nil unless TARGET_NODES.include?(ast_node.class)
          return nil unless script_context.key?(:specification)

          validator = expression_validator(script_context)
          validator.validate(ast_node).select(&:failure?)
        end

        def self.expression_validator(script_context)
          unless defined? @expression_validator
            spec, namespaces, uri_reader, url_reader =
              script_context.values_at(
                :specification,
                :namespace_definitions,
                :uri_reader,
                :url_reader)
            @expression_validator = EXP_VALIDATOR.new(
              spec, namespaces, uri_reader, url_reader)
          end
          @expression_validator
        end
      end
    end
  end
end

Version data entries

10 entries across 10 versions & 1 rubygems

Version Path
bel_parser-1.0.0.alpha.51-java lib/bel_parser/script/syntax/expression_validation.rb
bel_parser-1.0.0.alpha.51 lib/bel_parser/script/syntax/expression_validation.rb
bel_parser-1.0.0.alpha.50-java lib/bel_parser/script/syntax/expression_validation.rb
bel_parser-1.0.0.alpha.50 lib/bel_parser/script/syntax/expression_validation.rb
bel_parser-1.0.0.alpha.49-java lib/bel_parser/script/syntax/expression_validation.rb
bel_parser-1.0.0.alpha.49 lib/bel_parser/script/syntax/expression_validation.rb
bel_parser-1.0.0.alpha.48-java lib/bel_parser/script/syntax/expression_validation.rb
bel_parser-1.0.0.alpha.48 lib/bel_parser/script/syntax/expression_validation.rb
bel_parser-1.0.0.alpha.47-java lib/bel_parser/script/syntax/expression_validation.rb
bel_parser-1.0.0.alpha.47 lib/bel_parser/script/syntax/expression_validation.rb