annotate Lib/cmd.py @ 1590:ac2e5cc29949 legacy-trunk

Added tests for missing host to open_http and open_gopher
author Guido van Rossum <guido@python.org>
date Mon, 18 Apr 1994 09:39:56 +0000
parents 560ec7030817
children 1940892d2fe3
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
624
0e436200bf12 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1 # A generic class to build line-oriented command interpreters
0e436200bf12 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
2
0e436200bf12 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
3 import string
0e436200bf12 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
4 import sys
0e436200bf12 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
5 import linecache
0e436200bf12 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
6
0e436200bf12 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
7 PROMPT = '(Cmd) '
0e436200bf12 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
8 IDENTCHARS = string.letters + string.digits + '_'
0e436200bf12 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
9
0e436200bf12 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
10 class Cmd:
1315
acdc0b9a6c78 * aifc.py: don't die on invalid MARK chunk
Guido van Rossum <guido@python.org>
parents: 1086
diff changeset
11
acdc0b9a6c78 * aifc.py: don't die on invalid MARK chunk
Guido van Rossum <guido@python.org>
parents: 1086
diff changeset
12 def __init__(self):
624
0e436200bf12 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
13 self.prompt = PROMPT
0e436200bf12 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
14 self.identchars = IDENTCHARS
0e436200bf12 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
15 self.lastcmd = ''
0e436200bf12 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
16
0e436200bf12 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
17 def cmdloop(self):
0e436200bf12 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
18 stop = None
0e436200bf12 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
19 while not stop:
0e436200bf12 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
20 try:
0e436200bf12 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
21 line = raw_input(self.prompt)
0e436200bf12 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
22 except EOFError:
0e436200bf12 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
23 line = 'EOF'
0e436200bf12 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
24 stop = self.onecmd(line)
0e436200bf12 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
25
0e436200bf12 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
26 def onecmd(self, line):
0e436200bf12 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
27 line = string.strip(line)
0e436200bf12 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
28 if not line:
0e436200bf12 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
29 line = self.lastcmd
0e436200bf12 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
30 else:
0e436200bf12 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
31 self.lastcmd = line
0e436200bf12 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
32 i, n = 0, len(line)
0e436200bf12 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
33 while i < n and line[i] in self.identchars: i = i+1
0e436200bf12 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
34 cmd, arg = line[:i], string.strip(line[i:])
0e436200bf12 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
35 if cmd == '':
0e436200bf12 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
36 return self.default(line)
0e436200bf12 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
37 else:
0e436200bf12 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
38 try:
1086
db817f3a1c65 * change default line numbers for 'list' in pdb.py
Guido van Rossum <guido@python.org>
parents: 979
diff changeset
39 func = getattr(self, 'do_' + cmd)
624
0e436200bf12 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
40 except AttributeError:
0e436200bf12 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
41 return self.default(line)
0e436200bf12 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
42 return func(arg)
0e436200bf12 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
43
0e436200bf12 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
44 def default(self, line):
0e436200bf12 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
45 print '*** Unknown syntax:', line
0e436200bf12 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
46
0e436200bf12 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
47 def do_help(self, arg):
0e436200bf12 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
48 if arg:
0e436200bf12 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
49 # XXX check arg syntax
0e436200bf12 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
50 try:
1086
db817f3a1c65 * change default line numbers for 'list' in pdb.py
Guido van Rossum <guido@python.org>
parents: 979
diff changeset
51 func = getattr(self, 'help_' + arg)
624
0e436200bf12 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
52 except:
0e436200bf12 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
53 print '*** No help on', `arg`
0e436200bf12 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
54 return
0e436200bf12 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
55 func()
0e436200bf12 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
56 else:
979
3c55e612a6fc Module getattr doesn't exist any more, it's now called newdir.
Guido van Rossum <guido@python.org>
parents: 650
diff changeset
57 import newdir
1315
acdc0b9a6c78 * aifc.py: don't die on invalid MARK chunk
Guido van Rossum <guido@python.org>
parents: 1086
diff changeset
58 names = newdir.dir(self.__class__)
624
0e436200bf12 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
59 cmds = []
0e436200bf12 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
60 for name in names:
0e436200bf12 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
61 if name[:3] == 'do_':
0e436200bf12 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
62 cmds.append(name[3:])
0e436200bf12 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
63 print cmds