Beispiel #1
0
    def ensure(self, *predicates):
        for pred in predicates:
            ensure(self._test_predicate(pred),
                   lambda: self._format_error(pred),
                   self.exception_type,
                   stack_level=self.stack_level)

        return self.value
Beispiel #2
0
 def or_else(self, func):
     if self:
         return self
     else:
         res = func()
         ensure(isinstance(res, Opt),
                lambda: 'or_else: result Opt expected',
                stack_level=2)
         return res
Beispiel #3
0
 def map(self, func):
     func = to_unary(func)
     if self:
         res = func(self._value)
         ensure(not isinstance(res, Opt),
                lambda: 'map: result Opt not expected',
                stack_level=2)
         return Opt(res)
     else:
         return Opt.none()
Beispiel #4
0
 def get_or_raise(self, exception):
     ensure(self, exception, error_type=OptError)
     return self._value
Beispiel #5
0
 def some(value):
     ensure(value is not None,
            lambda: OptError('value expected, got None'),
            stack_level=2)
     return Opt(value)
Beispiel #6
0
 def and_(self, other):
     ensure(isinstance(other, Opt), lambda: 'Opt expected', stack_level=2)
     return self if not self else other