def parse (definition)
return definition if definition.is_a?(Array) and definition.size == 3
(return XmlParser.parse(definition)) rescue nil
(return Rufus::Json.decode(definition)) rescue nil
(return ruby_eval(definition)) rescue nil
if definition.index("\n") == nil
raise ArgumentError.new(
"remote process definitions are not allowed"
) if Ruote::Parser.remote?(definition) && @context['remote_definition_allowed'] != true
return parse(open(definition).read)
end
raise ArgumentError.new(
"doesn't know how to parse definition (#{definition.class}) " +
"or error in process definition")
end