Class: 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.



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

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

Instance Attribute Details

#queryObject (readonly)

Returns the value of attribute query.



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

def query
  @query
end

Instance Method Details

#compatible?Boolean

Returns:

  • (Boolean)


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

def compatible?
  not failed_requirements.any?
end

#descriptionObject



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

def description
  query.value(LV.description)
end

#effectObject



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

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

#executionObject



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

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

#failed_requirementsObject



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

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

#open_questionsObject



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

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

#questionsObject



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

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



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

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