diff --git a/src/std.py b/src/std.py --- a/src/std.py +++ b/src/std.py @@ -2,7 +2,45 @@ class Number: def __init__(self, x): self.val = x + def __add__(self, other): + return Number(self.val+other.val) + + +class String: + def __init__(self, s): + self.val = s + + @staticmethod + def fromCharCode(x): + return String(chr(x.val)) + + def __add__(self, other): + return String(self.val+other.val) + + def charAt(self, i=None): + i = (i or Number(0)).val + + if 0 <= i < len(self.val): + return String(self.val[i]) + else: + return String("") + + def substr(self, start=None, length=None): + start = (start or Number(0)).val + length = length.val if length is not None else len(self.val) + + if length < 0: + return String("") + + return String(self.val[start:start+length]) + + def slice(self, start=None, end=None): + start = (start or Number(0)).val + end = end.val if end is not None else None + return String(self.val[start:end]) + lib = { + "String": String, "document": {"write": lambda x: print(x.val)} }