Change how Python Cmd Module handles autocompletion

后端 未结 3 1987
旧时难觅i
旧时难觅i 2021-02-04 10:40

I have a Cmd console set up to auto-complete card names for a Magic: the Gathering collection management system.

It uses the text parameter to query the database for car

3条回答
  •  难免孤独
    2021-02-04 10:49

    It shouldn't need to be overly complicated. Something like the following:

    import cmd
    
    completions = [
        'Mage Slayer (Alara Reborn)',
        'Magefire Wings (Alara Reborn)',
        'Sages of the Anima (Alara Reborn)',
        'Sanctum Plowbeast (Alara Reborn)',
        'Sangrite Backlash (Alara Reborn)',
        'Sanity Gnawers (Alara Reborn)',
        'Sen Triplets (Alara Reborn)'
    ]
    
    class mycmd(cmd.Cmd):
        def __init__(self):
            cmd.Cmd.__init__(self)
    
        def do_quit(self, s):
            return True
    
        def do_add(self, s):
            pass
    
        def complete_add(self, text, line, begidx, endidx):
            mline = line.partition(' ')[2]
            offs = len(mline) - len(text)
            return [s[offs:] for s in completions if s.startswith(mline)]
    
    if __name__ == '__main__':
        mycmd().cmdloop()
    

提交回复
热议问题