def process_line(line)
      args = line.split
      cmd = args.shift
      
      catch(:command_not_found) { return process_command(cmd, args) }

      # no matching commands, try to process it as ruby code
      if @allow_ruby
        result = process_ruby_code(line)
        puts "  => #{result.inspect}"
        return result
      end
      
      puts "I don't know the word \"#{cmd}.\""
    end
def process_line(line)
      args = line.split
      cmd = args.shift
      
      catch(:command_not_found) { return process_command(cmd, args) }

      # no matching commands, try to process it as ruby code
      if @allow_ruby
        result = process_ruby_code(line)
        puts "  => #{result.inspect}"
        return result
      end
      
      puts "I don't know the word \"#{cmd}.\""
    end
Executes the given command, which is a String, and returns a String to be
 printed to @output. If a command cannot be found, it is treated as Ruby code
 and is executed within the context of @namespace.

 You can override this method to produce custom results, or you can use the
 +:allow_ruby => false+ option in #run to prevent Ruby code from being executed.