more funcs

This commit is contained in:
Jesse Bannon 2023-09-21 00:14:55 -07:00
parent 4f3f2f36fd
commit 0e7f1b20a3
2 changed files with 52 additions and 0 deletions

View file

@ -0,0 +1,44 @@
from ytdl_sub.script.types.resolvable import Boolean
from ytdl_sub.script.types.resolvable import Resolvable
class BooleanFunctions:
@staticmethod
def bool(value: Resolvable) -> Boolean:
return Boolean(bool(value.value))
@staticmethod
def equals(left: Resolvable, right: Resolvable) -> Boolean:
return Boolean(left.value == right.value)
@staticmethod
def lt(left: Resolvable, right: Resolvable) -> Boolean:
return Boolean(left.value < right.value)
@staticmethod
def lte(left: Resolvable, right: Resolvable) -> Boolean:
return Boolean(left.value <= right.value)
@staticmethod
def gt(left: Resolvable, right: Resolvable) -> Boolean:
return Boolean(left.value > right.value)
@staticmethod
def gte(left: Resolvable, right: Resolvable) -> Boolean:
return Boolean(left.value >= right.value)
@staticmethod
def and_(left: Boolean, right: Boolean) -> Boolean:
return Boolean(left.value and right.value)
@staticmethod
def or_(left: Boolean, right: Boolean) -> Boolean:
return Boolean(left.value or right.value)
@staticmethod
def xor(left: Boolean, right: Boolean) -> Boolean:
return Boolean(left.value ^ right.value)
@staticmethod
def not_(value: Boolean) -> Boolean:
return Boolean(not value.value)

View file

@ -38,3 +38,11 @@ class NumericFunctions:
@staticmethod
def mod(value: Integer, modulo: Integer) -> Integer:
return Integer(value=value.value % modulo.value)
@staticmethod
def max(left: Numeric, right: Numeric) -> Numeric:
return _to_numeric(max(left.value, right.value))
@staticmethod
def min(left: Numeric, right: Numeric) -> Numeric:
return _to_numeric(min(left.value, right.value))