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