def visible_children(asker, object): expanded = convert.check_hard(asker, is_expanded(), object) object = asker.refresh(object) if not expanded: return asker.reply(answer=T.from_list([])) else: children = asker.ask(fields.get_field(all_children(), object)).firm_answer return asker.reply(answer=children)
def add_children_on_expanded(asker, old, new, bindings): children = [] for p in lists.iterator(asker, lists.from_dict(bindings)): k = asker.ask(fields.get_field(first(), p)).firm_answer v = asker.ask(fields.get_field(second(), p)).firm_answer prefix = strings.string_concat(k, T.from_str(": ")) new_node = node_from_term(asker, v) new_node = updates.update( updates.apply_to(headline(), strings.prepend_str(prefix)), new_node ) children.append(new_node) return asker.reply(answer=updates.update( fields.set_field(all_children(), T.from_list(children)), new ))
import convert import representations import properties import updates import outlines import builtins import computations import term import termtypes import state import views import functions import strings from term import Term as T k = updates.update(updates.trivial(), T.from_int(0)) d = T('test [a]', a=k) Q = T('a question about [this]', this=k) asker = ask.Asker(Q) a = T('a') b = T('b') c = T('c') l1 = T.from_list([a, b, c]) l2 = T.from_list([a, a, a]) l12 = lists.zip(l1, l2) d = dictionaries.from_items(l12)
def render_char(asker, x): return asker.reply(answer=T.simple_str(T.from_list([c])))
def get_starting_view(asker, query): head = fields.get(asker, representations.head(), query) bindings = fields.get(asker, representations.bindings(), query) initial_lines = T.from_list([head, T.from_str("---")]) return asker.reply(answer=view(initial_lines, bindings))
def make_list_expr(l): return T(make_list_expr.head, l=T.from_list(l))