Exemplo n.º 1
0
def autocomplete(state, code, source='<autocomplete>'):
    ac_state = AcState.clone(state)
    with context(state=ac_state):
        try:
            stmts = parser.parse_stmts(code, source, wrap_syntax_error=False)
        except UnexpectedCharacters as e:
            return {}
        except UnexpectedToken as e:
            tree = autocomplete_tree(e.puppet)
            if tree:
                try:
                    stmts = parser.TreeToAst(code_ref=(code,
                                                       source)).transform(tree)
                except pql_SyntaxError as e:
                    return {}

                _eval_autocomplete(ac_state, stmts[:-1])

                try:
                    eval_autocomplete(ac_state, stmts[-1], True)
                except AutocompleteSuggestions as e:
                    ns, = e.args
                    return ns
                except Signal as e:
                    ac_log.exception(e)

        else:
            _eval_autocomplete(ac_state, stmts)

    return ac_state.get_all_vars_with_rank()
Exemplo n.º 2
0
def _eval_autocomplete(ac_state, stmts):
    for stmt in stmts:
        try:
            eval_autocomplete(ac_state, stmt, False)
        except Signal as e:
            ac_log.exception(e)