Class: Smartdown::Engine
- Inherits:
-
Object
show all
- Defined in:
- lib/smartdown/engine.rb,
lib/smartdown/engine/state.rb,
lib/smartdown/engine/errors.rb,
lib/smartdown/engine/transition.rb,
lib/smartdown/engine/interpolator.rb,
lib/smartdown/engine/node_presenter.rb,
lib/smartdown/engine/predicate_evaluator.rb,
lib/smartdown/engine/conditional_resolver.rb
Defined Under Namespace
Classes: ConditionalResolver, IndeterminateNextNode, Interpolator, NodePresenter, PredicateEvaluator, State, Transition, UndefinedValue
Instance Attribute Summary collapse
Instance Method Summary
collapse
Constructor Details
#initialize(flow) ⇒ Engine
9
10
11
|
# File 'lib/smartdown/engine.rb', line 9
def initialize(flow)
@flow = flow
end
|
Instance Attribute Details
#flow ⇒ Object
Returns the value of attribute flow.
7
8
9
|
# File 'lib/smartdown/engine.rb', line 7
def flow
@flow
end
|
Instance Method Details
#default_predicates ⇒ Object
21
22
23
24
25
|
# File 'lib/smartdown/engine.rb', line 21
def default_predicates
{
otherwise: ->(_) { true }
}
end
|
#default_start_state ⇒ Object
13
14
15
16
17
18
19
|
# File 'lib/smartdown/engine.rb', line 13
def default_start_state
Smartdown::Engine::State.new(
default_predicates.merge(
current_node: flow.name
)
)
end
|
#evaluate_node(state) ⇒ Object
34
35
36
37
|
# File 'lib/smartdown/engine.rb', line 34
def evaluate_node(state)
current_node = flow.node(state.get(:current_node))
NodePresenter.new.present(current_node, state)
end
|
#process(responses, start_state = nil) ⇒ Object
27
28
29
30
31
32
|
# File 'lib/smartdown/engine.rb', line 27
def process(responses, start_state = nil)
responses.inject(start_state || default_start_state) do |state, input|
current_node = flow.node(state.get(:current_node))
Transition.new(state, current_node, input).next_state
end
end
|