def parse(m)
@account.prompt
if @mode == :edit
edit_parser m
return
end
m=~/([A-Za-z0-9_@?"'#!\]\[]+)(.*)/
cmd=$1
arg=$2
arg.strip! if arg
if !cmd
sendto("Huh?")
return
end
c = world.cmds.find(cmd)
check = cmd.gsub(/\?/,"\\?")
check.gsub!(/\#/,"\\#")
check.gsub!(/\[/,"\\[")
check.gsub!(/\]/,"\\]")
get_object(location).exits.keys.grep(/^#{check}/).each do |ex|
c << Command.new(:cmd_go,"go #{ex}",nil)
arg = ex
end
log.debug "parse commands - '#{c.inspect}', arguments - '#{arg}'"
case c.size
when 0
sendto("Huh?")
when 1
self.send(c[0].cmd, arg)
else
ln = "Which did you mean, "
c.each do |x|
ln += "\'" + x.name + "\'"
x.name == c.last.name ? ln += "?" : ln += " or "
end
sendto(ln)
end
rescue Exception
log.fatal $!
end