def initialize(*cmdandarg)
raise ArgumentError if cmdandarg.size == 0
cmdandarg = cmdandarg.dup
@environment =
if Hash === cmdandarg.first
cmdandarg.shift
else
{}
end
@option =
if Hash === cmdandarg.last
cmdandarg.pop
else
{}
end
if cmdandarg.size == 1
cmdandarg = cmdandarg.first
if String === cmdandarg
if SHELL_SPECIALS === cmdandarg
@command = cmdandarg
@argument = []
else
cmd, *arg = self.class.parse_command_with_arg(cmdandarg)
@command = [cmd, cmd]
@argument = arg
end
else
@command = cmdandarg
@argument = []
end
else
cmd = cmdandarg.shift
cmd = (String === cmd) ? [cmd, cmd] : cmd
@command = cmd
@argument = cmdandarg
end
end