Class: Model::Action

Inherits:
Object
  • Object
show all
Includes:
QuestionReferences
Defined in:
lib/models/action.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods included from QuestionReferences

#has_condition?, #has_question?, #question, #question_answered?

Constructor Details

#initialize(node, repository) ⇒ Action

Returns a new instance of Action.



9
10
11
# File 'lib/models/action.rb', line 9

def initialize(node, repository)
  @query = NodeQuery.new(node, repository)
end

Instance Attribute Details

#queryObject (readonly)

Returns the value of attribute query.



5
6
7
# File 'lib/models/action.rb', line 5

def query
  @query
end

Instance Method Details

#compatible?Boolean

Returns:

  • (Boolean)


26
27
28
# File 'lib/models/action.rb', line 26

def compatible?
  not failed_requirements.any?
end

#descriptionObject



13
14
15
# File 'lib/models/action.rb', line 13

def description
  query.value(LV.description)
end

#effectObject



46
47
48
# File 'lib/models/action.rb', line 46

def effect
  StateChange.new(query.value(LV.effect), query.repository)
end

#executionObject



42
43
44
# File 'lib/models/action.rb', line 42

def execution
  ActionExecution.new(query.value(LV.executes), query.repository)
end

#failed_requirementsObject



22
23
24
# File 'lib/models/action.rb', line 22

def failed_requirements
  requirements.select {|r| not r.satisfied? }
end

#open_questionsObject



38
39
40
# File 'lib/models/action.rb', line 38

def open_questions
  questions.select { |q| not q.has_answer? }
end

#questionsObject



30
31
32
33
34
35
36
# File 'lib/models/action.rb', line 30

def questions
  q = []
  q << question if has_question?

  with_question = requirements.select { |r| r.has_question? }
  q + with_question.map { |r| r.question }
end

#requirementsObject



17
18
19
20
# File 'lib/models/action.rb', line 17

def requirements
  list = RDF::List.new(query.value(LV.requirement), query.repository)
  list.map { |node| Requirement.new(node, query.repository) }
end