Я пишу интерактивную программу Python с командной строкой. Командные строки, которые вводит пользователь, автоматически заполняются с помощью Python Prompt Toolkit и анализируются с помощью argparse. Существует несколько команд, каждая из которых имеет разный синтаксис и завершение. Для этого у меня есть вложенный метод завершения на верхнем уровне, созданный различными классами-обработчиками.
Я хотел бы реализовать команду в следующем формате
Код: Выделить всё
cmd name [--params [key1=value12] [key2=value21] ...]
В зависимости от значения «имя» пользователь может указать дополнительные параметры в форме ключ=значение, при этом количество параметров является переменным. Теоретически я смогу сделать это с помощью NestedCompleter и такого словаря:
Код: Выделить всё
{'key1': {
'value11': None,
'value12': None},
'key2': {
'value21':None,
'value22':None}
}
Тогда я смогу добавить этот словарь к NestedCompleter верхнего уровня.
Проблема в том, что приведенный выше NestedCompleter разделит ключи и значения. с пробелом и не будет работать, если я хочу разделить их знаком «=». Я не уверен, как реализовать NestedCompleter, который может обрабатывать знак «=» как пробел. Есть ли способ сделать это?
Подробнее здесь:
https://stackoverflow.com/questions/790 ... pt-toolkit