Module: Inquirex
- Defined in:
- lib/inquirex.rb,
lib/inquirex/dsl.rb,
lib/inquirex/node.rb,
lib/inquirex/engine.rb,
lib/inquirex/errors.rb,
lib/inquirex/answers.rb,
lib/inquirex/version.rb,
lib/inquirex/evaluator.rb,
lib/inquirex/rules/all.rb,
lib/inquirex/rules/any.rb,
lib/inquirex/definition.rb,
lib/inquirex/rules/base.rb,
lib/inquirex/transition.rb,
lib/inquirex/accumulator.rb,
lib/inquirex/widget_hint.rb,
lib/inquirex/rules/equals.rb,
lib/inquirex/rules/contains.rb,
lib/inquirex/rules/less_than.rb,
lib/inquirex/rules/not_empty.rb,
lib/inquirex/widget_registry.rb,
lib/inquirex/dsl/flow_builder.rb,
lib/inquirex/dsl/rule_helpers.rb,
lib/inquirex/dsl/step_builder.rb,
lib/inquirex/rules/greater_than.rb,
lib/inquirex/validation/adapter.rb,
lib/inquirex/graph/mermaid_exporter.rb,
lib/inquirex/engine/state_serializer.rb,
lib/inquirex/validation/null_adapter.rb
Overview
Declarative, rules-driven questionnaire engine for building conditional intake forms, qualification wizards, and branching surveys.
Defined Under Namespace
Modules: DSL, Errors, Graph, Rules, Validation, WidgetRegistry Classes: Accumulation, Accumulator, Answers, Definition, Engine, Evaluator, Node, Transition, WidgetHint
Constant Summary collapse
- VERSION =
"0.3.0"
Class Method Summary collapse
-
.define(id: nil, version: "1.0.0") { ... } ⇒ Definition
Builds an immutable Definition from the declarative DSL block.
-
.load_dsl(text) ⇒ Definition
Evaluates a string of DSL code and returns the resulting definition.
Class Method Details
.define(id: nil, version: "1.0.0") { ... } ⇒ Definition
Builds an immutable Definition from the declarative DSL block.
89 90 91 92 93 |
# File 'lib/inquirex.rb', line 89 def self.define(id: nil, version: "1.0.0", &) builder = DSL::FlowBuilder.new(id:, version:) builder.instance_eval(&) builder.build end |
.load_dsl(text) ⇒ Definition
Evaluates a string of DSL code and returns the resulting definition. Intended for loading flow definitions from files or stored text.
101 102 103 104 105 106 107 108 109 |
# File 'lib/inquirex.rb', line 101 def self.load_dsl(text) # rubocop:disable Security/Eval eval(text, TOPLEVEL_BINDING.dup, "(dsl)", 1) # rubocop:enable Security/Eval rescue SyntaxError => e raise Errors::DefinitionError, "DSL syntax error: #{e.}" rescue StandardError => e raise Errors::DefinitionError, "DSL evaluation error: #{e.}" end |