Module: Ruby::Rego
- Defined in:
- lib/ruby/rego.rb,
lib/ruby/rego/lexer.rb,
lib/ruby/rego/token.rb,
lib/ruby/rego/value.rb,
lib/ruby/rego/errors.rb,
lib/ruby/rego/parser.rb,
lib/ruby/rego/policy.rb,
lib/ruby/rego/result.rb,
lib/ruby/rego/unifier.rb,
lib/ruby/rego/version.rb,
lib/ruby/rego/ast/base.rb,
lib/ruby/rego/ast/call.rb,
lib/ruby/rego/ast/rule.rb,
lib/ruby/rego/compiler.rb,
lib/ruby/rego/location.rb,
lib/ruby/rego/ast/every.rb,
lib/ruby/rego/ast/query.rb,
lib/ruby/rego/call_name.rb,
lib/ruby/rego/evaluator.rb,
lib/ruby/rego/ast/import.rb,
lib/ruby/rego/ast/module.rb,
lib/ruby/rego/ast/literal.rb,
lib/ruby/rego/ast/package.rb,
lib/ruby/rego/environment.rb,
lib/ruby/rego/memoization.rb,
lib/ruby/rego/ast/unary_op.rb,
lib/ruby/rego/ast/variable.rb,
lib/ruby/rego/lexer/stream.rb,
lib/ruby/rego/parser/query.rb,
lib/ruby/rego/parser/rules.rb,
lib/ruby/rego/ast/binary_op.rb,
lib/ruby/rego/ast/composite.rb,
lib/ruby/rego/ast/reference.rb,
lib/ruby/rego/builtins/base.rb,
lib/ruby/rego/error_payload.rb,
lib/ruby/rego/builtins/types.rb,
lib/ruby/rego/error_handling.rb,
lib/ruby/rego/compiled_module.rb,
lib/ruby/rego/builtins/strings.rb,
lib/ruby/rego/environment_pool.rb,
lib/ruby/rego/ast/comprehension.rb,
lib/ruby/rego/builtins/registry.rb,
lib/ruby/rego/parser/precedence.rb,
lib/ruby/rego/parser/references.rb,
lib/ruby/rego/parser/collections.rb,
lib/ruby/rego/parser/expressions.rb,
lib/ruby/rego/builtins/aggregates.rb,
lib/ruby/rego/lexer/number_reader.rb,
lib/ruby/rego/lexer/string_reader.rb,
lib/ruby/rego/builtins/collections.rb,
lib/ruby/rego/builtins/comparisons.rb,
lib/ruby/rego/builtins/strings/trim.rb,
lib/ruby/rego/environment/overrides.rb,
lib/ruby/rego/builtins/strings/split.rb,
lib/ruby/rego/builtins/strings/concat.rb,
lib/ruby/rego/builtins/strings/search.rb,
lib/ruby/rego/builtins/numeric_helpers.rb,
lib/ruby/rego/builtins/strings/helpers.rb,
lib/ruby/rego/evaluator/rule_evaluator.rb,
lib/ruby/rego/builtins/registry_helpers.rb,
lib/ruby/rego/builtins/strings/case_ops.rb,
lib/ruby/rego/evaluator/binding_helpers.rb,
lib/ruby/rego/builtins/comparisons/casts.rb,
lib/ruby/rego/builtins/strings/substring.rb,
lib/ruby/rego/builtins/strings/formatting.rb,
lib/ruby/rego/builtins/collections/set_ops.rb,
lib/ruby/rego/evaluator/assignment_support.rb,
lib/ruby/rego/evaluator/operator_evaluator.rb,
lib/ruby/rego/evaluator/query_node_builder.rb,
lib/ruby/rego/evaluator/reference_resolver.rb,
lib/ruby/rego/evaluator/variable_collector.rb,
lib/ruby/rego/lexer/template_string_reader.rb,
lib/ruby/rego/with_modifiers/with_modifier.rb,
lib/ruby/rego/builtins/strings/trim_helpers.rb,
lib/ruby/rego/evaluator/expression_dispatch.rb,
lib/ruby/rego/evaluator/rule_value_provider.rb,
lib/ruby/rego/builtins/collections/array_ops.rb,
lib/ruby/rego/evaluator/expression_evaluator.rb,
lib/ruby/rego/builtins/collections/object_ops.rb,
lib/ruby/rego/builtins/strings/number_helpers.rb,
lib/ruby/rego/environment/reference_resolution.rb,
lib/ruby/rego/evaluator/reference_key_resolver.rb,
lib/ruby/rego/evaluator/comprehension_evaluator.rb,
lib/ruby/rego/evaluator/rule_evaluator/bindings.rb,
lib/ruby/rego/evaluator/object_literal_evaluator.rb,
lib/ruby/rego/with_modifiers/with_modifier_applier.rb,
lib/ruby/rego/with_modifiers/with_modifier_context.rb,
lib/ruby/rego/with_modifiers/with_modifier_root_scope.rb,
lib/ruby/rego/with_modifiers/with_modifier_path_override.rb,
lib/ruby/rego/with_modifiers/with_modifier_builtin_override.rb,
lib/ruby/rego/with_modifiers/with_modifier_path_key_resolver.rb
Overview
Ruby Rego implementation namespace.
Defined Under Namespace
Modules: AST, Builtins, CallName, DefaultRuleCallName, EnvironmentOverrides, EnvironmentReferenceResolution, ErrorPayload, Memoization, TokenType, WithModifiers Classes: ArrayValue, BooleanValue, BuiltinArgumentError, CompilationError, CompiledModule, Compiler, DefaultRuleValidator, Environment, EnvironmentPool, Error, EvaluationError, Evaluator, Lexer, LexerError, Location, NullValue, NumberValue, ObjectKeyConflictError, ObjectValue, Parser, ParserError, Policy, Result, ResultBuilder, SetValue, StringValue, Token, TypeError, UndefinedValue, UnificationError, Unifier, Value
Constant Summary collapse
- VERSION =
"0.1.0"- DEFAULT_RULE_CHILD_NODE_EXTRACTORS =
{ AST::BinaryOp => ->(node) { [node.left, node.right] }, AST::UnaryOp => ->(node) { [node.operand] }, AST::ArrayLiteral => :elements.to_proc, AST::SetLiteral => :elements.to_proc, AST::ObjectLiteral => lambda do |node| node.pairs.flat_map { |key_node, value_node| [key_node, value_node] } end, AST::ArrayComprehension => lambda do |node| term = node.term body = Array(node.body) [term] + body end, AST::SetComprehension => lambda do |node| term = node.term body = Array(node.body) [term] + body end, AST::ObjectComprehension => lambda do |node| key_node, value_node = node.term body = Array(node.body) [key_node, value_node] + body end, AST::Call => ->(node) { [node.name] + node.args }, AST::QueryLiteral => ->(node) { [node.expression] + node.with_modifiers }, AST::Every => lambda do |node| body = Array(node.body) [node.key_var, node.value_var, node.domain] + body end, AST::SomeDecl => ->(node) { node.variables + Array(node.collection) }, AST::WithModifier => ->(node) { [node.target, node.value] }, AST::TemplateString => :parts.to_proc }.freeze
Class Method Summary collapse
-
.compile(source) ⇒ CompiledModule
Compile Rego source into an immutable compiled module.
-
.evaluate(source, input: {}, data: {}, query: nil) ⇒ Result?
Evaluate Rego source against input and data.
-
.parse(source) ⇒ AST::Module
Parse Rego source into an AST module.
Class Method Details
.compile(source) ⇒ CompiledModule
Compile Rego source into an immutable compiled module.
50 51 52 53 54 |
# File 'lib/ruby/rego.rb', line 50 def compile(source) ErrorHandling.wrap("compilation") do Compiler.new.compile(parse(source)) end end |
.evaluate(source, input: {}, data: {}, query: nil) ⇒ Result?
Evaluate Rego source against input and data.
:reek:LongParameterList
64 65 66 67 68 69 |
# File 'lib/ruby/rego.rb', line 64 def evaluate(source, input: {}, data: {}, query: nil) compiled_module = compile(source) ErrorHandling.wrap("evaluation") do Evaluator.new(compiled_module, input: input, data: data).evaluate(query) end end |