# File lib/ruote/parser.rb, line 50
    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