tk_cmd ====== X evaluate expression tree in ec_tk_expr X cmd token - example X tk_re cleanup / rework ================ - ec_completed_item_update() - ec_completed_item_set_display_value() - add_no_match - add_partial_match - check XXX in code - properly manage quotes in shlex X remove the _new() functions - iterate children nodes without chaining them - add a tk vector type: will be used in several nodes (ex: or, seq, ...) - check allocation model everywhere - checkpatch? - use linux style (update .emacs) - better logs - return values - use errno when returning pointers - missing static / const - license: "s/neither the name...may/the names of its contributors may not/" - check all completion nodes X split ecoli_tk.h - cache results when appropriate? - size_t or unsigned int? X rename: X ec_tk -> ec_node X ec_parsed_tk -> ec_parsed X ec_completed_tk -> ec_completed X tk, gen_tk, token, ... -> node X tokens -> input_str / input_strvec ? - use is_err() or errno for funcs returning ptrs, or use errno for all funcs - save node path in completion to fix help string - code coverage - try to hide structures - anything better than weakref? - add get_max_parse_len() for all relevant nodes - add ec_node_defaults.[ch] providing usual implementations of node methods - use vec for strvec dependencies ============ X pass the current parsed state when parsing/completing X new node "once" - new node "condition" logs ==== - register log types yaml ==== X register nodes by name - interface to add attributes: all nodes must be configurable through a generic api - attr string - attr string list - attr node - attr node list - attr int - yaml interface to create nodes - example examples ======== - example which parses arguments (argc/argv) - example that acts as bash completion (ip link ?) - calculator example (var assignation, expression evaluation) - example with libedit - mini script language - configuration file doc === - overview - add api doc in .h - generate automatic api doc - architecture - coding rules, process - each node - allocation model - say that it stops at first match (no ambigous support) - say that completion must be exhaustive build framework =============== - .map files for API - split libs, tests and examples - add make help - add make config - -fvisibility= tests ===== - complete automatic tests with "make test" new nodes ========= - regexp - node which always matches - file + partial completion - ether, ip, network - fusion node: need to match several children, same for completion - float - not encoding ======== - support utf-8 and other encodings - example - documentation netconf example =============== - demonstration example that parses yang file and generate cli ----------------------- readline: [tab] list possible completions (matches only) [?] list what is expected, example: "command [foo] toto|titi|" help("command f") -> foo (help of foo) toto (help of toto) titi (help of titi) (help of int)