Ejemplo n.º 1
0
def parse_bareword(word):
    if word in COLOR_NAMES:
        return ColorValue.from_name(word)
    elif word == 'null':
        return Null()
    elif word == 'undefined':
        return Undefined()
    elif word == 'true':
        return BooleanValue(True)
    elif word == 'false':
        return BooleanValue(False)
    else:
        return String(word, quotes=None)
Ejemplo n.º 2
0
def blank(*objs):
    """Returns true when the object is false, an empty string, or an empty list"""
    for o in objs:
        if isinstance(o, BooleanValue):
            is_blank = not o
        elif isinstance(o, QuotedStringValue):
            is_blank = not len(o.value.strip())
        elif isinstance(o, List):
            is_blank = all(blank(el) for el in o)
        else:
            is_blank = False

        if not is_blank:
            return BooleanValue(False)

    return BooleanValue(True)
Ejemplo n.º 3
0
def prefixed(prefix, *args):
    to_fnct_str = 'to_' + to_str(prefix).replace('-', '_')
    for arg in List.from_maybe_starargs(args):
        if hasattr(arg, to_fnct_str):
            return BooleanValue(True)
    return BooleanValue(False)
Ejemplo n.º 4
0
 def evaluate(self, calculator, divide=False):
     operand = self.operand.evaluate(calculator, divide=True)
     return BooleanValue(not (operand))
Ejemplo n.º 5
0
 def evaluate(self, calculator, divide=False):
     operands = [
         operand.evaluate(calculator, divide=True)
         for operand in self.operands
     ]
     return BooleanValue(all(operands))
Ejemplo n.º 6
0
def comparable(number1, number2):
    left = number1.to_base_units()
    right = number2.to_base_units()
    return BooleanValue(left.unit_numer == right.unit_numer
                        and left.unit_denom == right.unit_denom)
Ejemplo n.º 7
0
def unitless(value):
    if not isinstance(value, NumberValue):
        raise TypeError("Expected number, got %r" % (value, ))

    return BooleanValue(value.is_unitless)
Ejemplo n.º 8
0
def index(lst, val):
    for i in xrange(len(lst)):
        if lst.value[i] == val:
            return NumberValue(i + 1)
    return BooleanValue(False)