def both_stripper(asker, update, object, a, b):
    keeps = properties.trivial()
    strips = properties.trivial()
    for x in [a, b]:
        keep_or_strip = asker.ask(modifiers_to_strip(update, x, object)).value
        new_keeps = fields.get(asker, fields.implication_about(to_keep()), keep_or_strip)
        keeps = properties.both(keeps, new_keeps)
        new_strips = fields.get(asker, fields.implication_about(to_strip()), keep_or_strip)
        strips = properties.both(strips, new_strips)
    return asker.reply(value=keep_strip(keep=keeps, strip=strips))
 def __init__(self, value=None, answer=None, question=None):
     self.question = question
     if value is None:
         value = properties.trivial()
     if answer is not None:
         value = properties.both(answer_is(answer), value)
     self.value = value
def keep_strip(keep=None, strip=None):
    if keep is None:
        keep = properties.trivial()
    if strip is None:
        strip = properties.trivial()
    return properties.both(
            fields.field_value(to_keep(), keep),
            fields.field_value(to_strip(), strip)
    )
 def bindings(self):
     return frozendict(
          head=quote(self.represents.head),
          bindings=quote(self.represents.bindings),
          _modifier=properties.both(
             has_id(quote(self.represents.id)),
             has_source(quote(self.represents.source))
         )
     )
 def process_both(a, b):
     return properties.both(*[self.process_response(x, Q=Q, handler=handler) for x in (a, b)])
 def process_both(a, b):
     return properties.both(*[self.process_query(x) for x in (a, b)])
 def add(self, new_value):
     return self.set(properties.both(new_value, self.value))
 def add(self, property):
     return Query(question=self.question, other=properties.both(property, self.other))
 def relay(self, m):
     self.to_relay = properties.both(m, self.to_relay)
Exemple #10
0
def set_implication_about(asker, object, new_value, field):
    result = asker.ask(soft_set_implication(object, field, new_value))
    if result.has_answer():
        return result
    else:
        return asker.reply(answer=properties.both(field_value(field, new_value), object))
Exemple #11
0
def set_both_implication(asker, field, new_value, a, b):
    for x, y in [(a, b), (b, a)]:
        r = asker.ask(soft_set_implication(x, field, new_value))
        if r.has_answer():
            return asker.reply(answer=properties.both(r.answer, y))
    return asker.reply(value=unknown())