#!/usr/bin/env python
# -*- coding: utf8 -*-
"""Command line interpreter
"""
import cmd

# ____________________________________________________________
# this Cli is a model of a basic use of a simple cmd
class Cli(cmd.Cmd):
    def __init__(self):
        cmd.Cmd.__init__(self)
        self.doc_header = "Documented commands (type help <command>):"
        self.undoc_header = "Undocumented commands"
        self.prompt = "#Prompt> "
        self.intro  = """cli (command line interpreter)
(type help or ? for commands list)"""
        self.ruler = "-"
        
    def emptyline(self):
        print "Type 'exit' to finish withe the session or type ? for help."

    def default(self, line):
        print "unknown command prefix" 
        print "*** unknown syntax : %s (type 'help' for help for a list of valid commands)"%line
        self.emptyline()

    def do_exit(self, line):
        """Exits from the console"""
        return True

    def do_quit(self, line):
        return True

    def do_EOF(self, args):
        """Exit on system end of file character"""
        return True

# ____________________________________________________________
# commands pre and post actions
#    def precmd(self, line):
#        return line
#    def postcmd(self, stop, line):
#        # if there is a problem, just return True : it stops everythings
#        stop = True
#        return stop # quit if stop == True
# ____________________________________________________________
# program pre and post actions
#    def preloop(self):
#        # action for the beginning of the program
#        pass

#    def postloop(self):
#        # action for the end of the program
#        print "exit cli"
# ____________________________________________________________

class HelloCli(Cli):

    def input_hello(self, line):
        return line.replace(",", " and ")

    def output_hello(self, result):
        print result

    def do_hello(self, line):
        self.output_hello("hello, " + self.input_hello(line))
        #return False # if you want to stay into the cli
        return True # if you want to exit

if __name__ == '__main__':
    prompt = HelloCli()
    prompt.cmdloop("intro, modifies Cmd.intro")