Mercurial > cpython-lru_cache-weakref
annotate Lib/cmd.py @ 5817:48b94de85bf3 legacy-trunk
Extensive changes by AMK.
| author | Guido van Rossum <guido@python.org> |
|---|---|
| date | Thu, 17 Jul 1997 16:29:42 +0000 |
| parents | 1940892d2fe3 |
| children | c9e3ce8e74b5 |
| rev | line source |
|---|---|
| 624 | 1 # A generic class to build line-oriented command interpreters |
| 2 | |
| 3 import string | |
| 4 import sys | |
| 5 import linecache | |
| 6 | |
| 7 PROMPT = '(Cmd) ' | |
| 8 IDENTCHARS = string.letters + string.digits + '_' | |
| 9 | |
| 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 | 13 self.prompt = PROMPT |
| 14 self.identchars = IDENTCHARS | |
| 15 self.lastcmd = '' | |
| 16 | |
| 17 def cmdloop(self): | |
| 18 stop = None | |
| 19 while not stop: | |
| 20 try: | |
| 21 line = raw_input(self.prompt) | |
| 22 except EOFError: | |
| 23 line = 'EOF' | |
| 24 stop = self.onecmd(line) | |
| 25 | |
| 26 def onecmd(self, line): | |
| 27 line = string.strip(line) | |
| 28 if not line: | |
| 29 line = self.lastcmd | |
| 30 else: | |
| 31 self.lastcmd = line | |
| 32 i, n = 0, len(line) | |
| 33 while i < n and line[i] in self.identchars: i = i+1 | |
| 34 cmd, arg = line[:i], string.strip(line[i:]) | |
| 35 if cmd == '': | |
| 36 return self.default(line) | |
| 37 else: | |
| 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 | 40 except AttributeError: |
| 41 return self.default(line) | |
| 42 return func(arg) | |
| 43 | |
| 44 def default(self, line): | |
| 45 print '*** Unknown syntax:', line | |
| 46 | |
| 47 def do_help(self, arg): | |
| 48 if arg: | |
| 49 # XXX check arg syntax | |
| 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 | 52 except: |
| 53 print '*** No help on', `arg` | |
| 54 return | |
| 55 func() | |
| 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__) |
|
1746
1940892d2fe3
Merge alpha100 branch back to main trunk
Guido van Rossum <guido@python.org>
parents:
1435
diff
changeset
|
59 cmds_doc = [] |
|
1940892d2fe3
Merge alpha100 branch back to main trunk
Guido van Rossum <guido@python.org>
parents:
1435
diff
changeset
|
60 cmds_undoc = [] |
|
1940892d2fe3
Merge alpha100 branch back to main trunk
Guido van Rossum <guido@python.org>
parents:
1435
diff
changeset
|
61 help = {} |
|
1940892d2fe3
Merge alpha100 branch back to main trunk
Guido van Rossum <guido@python.org>
parents:
1435
diff
changeset
|
62 for name in names: |
|
1940892d2fe3
Merge alpha100 branch back to main trunk
Guido van Rossum <guido@python.org>
parents:
1435
diff
changeset
|
63 if name[:5] == 'help_': |
|
1940892d2fe3
Merge alpha100 branch back to main trunk
Guido van Rossum <guido@python.org>
parents:
1435
diff
changeset
|
64 help[name[5:]]=1 |
| 624 | 65 for name in names: |
| 66 if name[:3] == 'do_': | |
|
1746
1940892d2fe3
Merge alpha100 branch back to main trunk
Guido van Rossum <guido@python.org>
parents:
1435
diff
changeset
|
67 cmd=name[3:] |
|
1940892d2fe3
Merge alpha100 branch back to main trunk
Guido van Rossum <guido@python.org>
parents:
1435
diff
changeset
|
68 if help.has_key(cmd): |
|
1940892d2fe3
Merge alpha100 branch back to main trunk
Guido van Rossum <guido@python.org>
parents:
1435
diff
changeset
|
69 cmds_doc.append(cmd) |
|
1940892d2fe3
Merge alpha100 branch back to main trunk
Guido van Rossum <guido@python.org>
parents:
1435
diff
changeset
|
70 del help[cmd] |
|
1940892d2fe3
Merge alpha100 branch back to main trunk
Guido van Rossum <guido@python.org>
parents:
1435
diff
changeset
|
71 else: |
|
1940892d2fe3
Merge alpha100 branch back to main trunk
Guido van Rossum <guido@python.org>
parents:
1435
diff
changeset
|
72 cmds_undoc.append(cmd) |
|
1940892d2fe3
Merge alpha100 branch back to main trunk
Guido van Rossum <guido@python.org>
parents:
1435
diff
changeset
|
73 print |
|
1940892d2fe3
Merge alpha100 branch back to main trunk
Guido van Rossum <guido@python.org>
parents:
1435
diff
changeset
|
74 self.print_topics("Documented commands (type help " \ |
|
1940892d2fe3
Merge alpha100 branch back to main trunk
Guido van Rossum <guido@python.org>
parents:
1435
diff
changeset
|
75 "<topic>):",cmds_doc, 15, 80) |
|
1940892d2fe3
Merge alpha100 branch back to main trunk
Guido van Rossum <guido@python.org>
parents:
1435
diff
changeset
|
76 self.print_topics("Miscellaneous help topics:", |
|
1940892d2fe3
Merge alpha100 branch back to main trunk
Guido van Rossum <guido@python.org>
parents:
1435
diff
changeset
|
77 help.keys(), 15, 80) |
|
1940892d2fe3
Merge alpha100 branch back to main trunk
Guido van Rossum <guido@python.org>
parents:
1435
diff
changeset
|
78 self.print_topics("Undocumented commands:", |
|
1940892d2fe3
Merge alpha100 branch back to main trunk
Guido van Rossum <guido@python.org>
parents:
1435
diff
changeset
|
79 cmds_undoc, 15, 80) |
|
1940892d2fe3
Merge alpha100 branch back to main trunk
Guido van Rossum <guido@python.org>
parents:
1435
diff
changeset
|
80 |
|
1940892d2fe3
Merge alpha100 branch back to main trunk
Guido van Rossum <guido@python.org>
parents:
1435
diff
changeset
|
81 def print_topics(self, header, cmds, cmdlen, maxcol): |
|
1940892d2fe3
Merge alpha100 branch back to main trunk
Guido van Rossum <guido@python.org>
parents:
1435
diff
changeset
|
82 if cmds: |
|
1940892d2fe3
Merge alpha100 branch back to main trunk
Guido van Rossum <guido@python.org>
parents:
1435
diff
changeset
|
83 print header; |
|
1940892d2fe3
Merge alpha100 branch back to main trunk
Guido van Rossum <guido@python.org>
parents:
1435
diff
changeset
|
84 print "="*len(header) |
|
1940892d2fe3
Merge alpha100 branch back to main trunk
Guido van Rossum <guido@python.org>
parents:
1435
diff
changeset
|
85 (cmds_per_line,junk)=divmod(maxcol,cmdlen) |
|
1940892d2fe3
Merge alpha100 branch back to main trunk
Guido van Rossum <guido@python.org>
parents:
1435
diff
changeset
|
86 col=cmds_per_line |
|
1940892d2fe3
Merge alpha100 branch back to main trunk
Guido van Rossum <guido@python.org>
parents:
1435
diff
changeset
|
87 for cmd in cmds: |
|
1940892d2fe3
Merge alpha100 branch back to main trunk
Guido van Rossum <guido@python.org>
parents:
1435
diff
changeset
|
88 if col==0: print |
|
1940892d2fe3
Merge alpha100 branch back to main trunk
Guido van Rossum <guido@python.org>
parents:
1435
diff
changeset
|
89 print (("%-"+`cmdlen`+"s") % cmd), |
|
1940892d2fe3
Merge alpha100 branch back to main trunk
Guido van Rossum <guido@python.org>
parents:
1435
diff
changeset
|
90 col = (col+1) % cmds_per_line |
|
1940892d2fe3
Merge alpha100 branch back to main trunk
Guido van Rossum <guido@python.org>
parents:
1435
diff
changeset
|
91 print "\n" |
