class Taskinator::Visitor::XmlVisitor
Attributes
builder[R]
instance[R]
Public Class Methods
new(builder, instance)
click to toggle source
# File lib/taskinator/xml_visitor.rb, line 19 def initialize(builder, instance) @builder = builder @instance = instance end
to_xml(process)
click to toggle source
# File lib/taskinator/xml_visitor.rb, line 7 def to_xml(process) builder = ::Builder::XmlMarkup.new(:indent => 2) builder.instruct! builder.tag!('process') do XmlVisitor.new(builder, process).visit end end
Public Instance Methods
task_count()
click to toggle source
# File lib/taskinator/xml_visitor.rb, line 105 def task_count end
visit()
click to toggle source
# File lib/taskinator/xml_visitor.rb, line 24 def visit @instance.accept(self) end
visit_args(attribute)
click to toggle source
# File lib/taskinator/xml_visitor.rb, line 97 def visit_args(attribute) values = @instance.send(attribute) builder.tag!('attribute', :name => attribute) do builder.cdata!(values.to_json) end if values && !values.empty? end
visit_attribute(attribute)
click to toggle source
# File lib/taskinator/xml_visitor.rb, line 69 def visit_attribute(attribute) value = @instance.send(attribute) builder.tag!('attribute', :name => attribute, :value => value) if value end
visit_attribute_enum(attribute, type)
click to toggle source
# File lib/taskinator/xml_visitor.rb, line 78 def visit_attribute_enum(attribute, type) visit_attribute(attribute) end
visit_attribute_time(attribute)
click to toggle source
# File lib/taskinator/xml_visitor.rb, line 74 def visit_attribute_time(attribute) visit_attribute(attribute) end
visit_process(attribute)
click to toggle source
# File lib/taskinator/xml_visitor.rb, line 36 def visit_process(attribute) process = @instance.send(attribute) if process p = process.__getobj__ attribs = { :type => p.class.name, :current_state => p.current_state } builder.tag!('process', attribs) do XmlVisitor.new(builder, p).visit write_error(p.error) end end end
visit_process_reference(attribute)
click to toggle source
# File lib/taskinator/xml_visitor.rb, line 82 def visit_process_reference(attribute) process = @instance.send(attribute) builder.tag!('attribute_ref', { :name => attribute, :type => process.__getobj__.class.name, :value => process.uuid }) if process end
visit_task_reference(attribute)
click to toggle source
# File lib/taskinator/xml_visitor.rb, line 87 def visit_task_reference(attribute) task = @instance.send(attribute) builder.tag!('attribute_ref', { :name => attribute, :type => task.__getobj__.class.name, :value => task.uuid }) if task end
visit_tasks(tasks)
click to toggle source
# File lib/taskinator/xml_visitor.rb, line 53 def visit_tasks(tasks) tasks.each do |task| t = task.__getobj__ attribs = { :type => t.class.name, :current_state => t.current_state } builder.tag!('task', attribs) do XmlVisitor.new(builder, t).visit write_error(t.error) end end end
visit_type(attribute)
click to toggle source
# File lib/taskinator/xml_visitor.rb, line 92 def visit_type(attribute) type = @instance.send(attribute) builder.tag!('attribute', { :name => attribute, :value => type.name }) end
write_error(error)
click to toggle source
# File lib/taskinator/xml_visitor.rb, line 28 def write_error(error) return unless error[0] builder.tag!('error', :type => error[0]) do builder.message(error[1]) builder.cdata!(error[2].join("\n")) end end