def preparse(unparsed, args = [], opts = {})
        case unparsed
        when Hash  then opts.merge! unparsed
        when Array then unparsed.each { |e| preparse(e, args, opts) }
        else args << unparsed.to_s
        end
        [args, opts]
      end
def preparse(unparsed, args = [], opts = {})
        case unparsed
        when Hash  then opts.merge! unparsed
        when Array then unparsed.each { |e| preparse(e, args, opts) }
        else args << unparsed.to_s
        end
        [args, opts]
      end
def preparse ( unparsed , args = [ ] , opts = { } ) case unparsed when Hash then opts . merge! unparsed when Array then unparsed . each { | e | preparse ( e , args , opts ) } else args << unparsed . to_s end [ args , opts ] end
can't use flatten as it will flatten hashes
can t use flatten as it will flatten hashes