Name
cmdloop
Synopsis
c.cmdloop(intro=None)
Performs an entire interactive
session of line-oriented commands. cmdloop starts
by calling c
.preloop( ), then outputs string intro
(c
.intro, if
intro is None). Then
c
.cmdloop enters a
loop. In each iteration of the loop, cmdloop reads
line s with
s
=raw_input(
c
.prompt).
When standard input reaches end-of-file, cmdloop
sets s
='EOF‘. If
s is not 'EOF',
cmdloop preprocesses string
s with
s
=
c
.precmd(
s
),
then calls
flag
=
c
.onecmd(
s
).
When onecmd returns a true value, this is a
tentative request to terminate the command loop. Now
cmdloop calls
flag
=
c
.postcmd(
flag,s
)
to check if the loop should terminate. If
flag is now true, the loop terminates;
otherwise another iteration of the loop executes. If the loop is to
terminate, cmdloop calls
c
.postloop( ), then
terminates. This structure of cmdloop is probably
easiest to understand by showing Python code equivalent to the method
just described:
def cmdloop(self, intro=None):
self.preloop( )
if intro is None: intro = self.intro
print intro
while True:
try: s = raw_input(self.prompt)
except EOFError: s = `EOF'
else: s = self.precmd(s)
flag = self.onecmd(s)
flag = self.postcmd(flag, s)
if flag: break
self.postloop( )
cmdloop is a good example of the design pattern known as Template Method. Such a method performs little substantial work itself; rather, it structures and organizes calls to other methods. Subclasses may override the other methods, to define the details of class behavior ...