class LittleGhost::Decision
Declarative collection of typed questions for one decision request.
Subclass and declare a model plus one or more typed questions, then call +.ask(state)+ or instantiate the class and call +#ask(state)+.
Public Class Methods
Source
# File lib/little_ghost/decision.rb, line 203 def ask(state, **options) LittleGhost.decide(model: model || raise(ConfigurationError, "Decision model is required"), state:, questions:, **options) end
Runs all declared questions against state.
# File lib/little_ghost/decision.rb, line 196 def choice(id, instructions:, criteria:, **options) = add_question(:choice, id, instructions:, criteria:, **options)
Declares a choice question. Criteria may be an array of labels or a mapping from labels to their descriptions.
Source
# File lib/little_ghost/decision.rb, line 188 def model(value = :__read__) return @model if value == :__read__ @model = value end
Selects a direct target or configured model role for this decision.
# File lib/little_ghost/decision.rb, line 221 def initialize(runtime: LittleGhost.runtime) @runtime = runtime end
Binds this decision instance to a Runtime.
# File lib/little_ghost/decision.rb, line 198 def noul(id, instructions:, criteria: nil, **options) = add_question(:noul, id, instructions:, criteria:, **options)
Declares a yes/no (noul) question, optionally with decision criteria.
Source
# File lib/little_ghost/decision.rb, line 208 def questions = (@questions ||= []).map(&:dup).freeze
Returns the immutable question declarations for this class.
# File lib/little_ghost/decision.rb, line 200 def score(id, instructions:, criteria:, **options) = add_question(:score, id, instructions:, criteria:, **options)
Declares a score question with ordered scoring criteria.
Public Instance Methods
Source
# File lib/little_ghost/decision.rb, line 226 def ask(state, **options) @runtime.decide(model: self.class.model || raise(ConfigurationError, "Decision model is required"), state:, questions: self.class.questions, **options) end
Runs this decision’s questions against state.