Beispiel #1
0
        if self.intp.opts["logger"]:
            summary = ": " + str(self.get("$$doc"))
            args = cntx.dict
            arglist = ["%s=%s" % (i, cntx[i]) for i in sorted([i for i in cntx.dict.keys() if i != "block"], key=lambda x: self.argnamelist.index(x))]
            summary = "%s(%s)%s" % (str(self), ", ".join(arglist), summary)
            
            self.intp.opts["logger"].push(summary)
        
        self.intp.level += 1
        #self.intp.stmtstack.append(self.intp.cstmt)
        try:
            c = self.intp.run(self.block)
        except ReturnI, e:
            if self.intp.opts["logger"]: self.intp.opts["logger"].pop()
            
            if e.args:
                a = list(e.args) if len(e.args) > 1 else e.args[0]
                return OrObject.from_py(a)
            else:
                return
        finally:
            if self.intp.opts["logger"]: self.intp.opts["logger"].pop(certain=False)
            self.intp.level -= 1
            self.intp.cntx.pop()
        return OrObject.from_py(c)

OrObject.register(Function, types.BuiltinFunctionType,
    types.BuiltinMethodType, types.ClassType, types.FunctionType,
    types.GeneratorType, types.LambdaType, types.MethodType,
    types.UnboundMethodType, "a".__add__.__class__) # "a".__add__.__class__ -> method-wrapper type
Beispiel #2
0
from orobject import OrObject

class OrDict(dict, OrObject):
    def __init__(self, *args, **kwargs):
        dict.__init__(self, *args, **kwargs)
        OrObject.__init__(self, "[anon]", OrDict)
    
    def ispy(self): return True
    def topy(self): return self
    
    def __repr__(self):
        if len(self):
            return "[" + dict(self).__repr__()[1:-1] + "]"
        else:
            return "[:]"
    
    def __str__(self):
        if len(self):
            return "[" + dict(self).__str__()[1:-1] + "]"
        else:
            return "[:]"

OrObject.register(OrDict, type({}))
Beispiel #3
0
from number import Number
from orobject import OrObject

inf = Number("Infinity")
true = OrObject.from_py(True)
false = OrObject.from_py(False)
nil = OrObject.from_py(None)

true.set("$$str", lambda: "true")
true.set("$$repr", lambda: "true")
false.set("$$str", lambda: "false")
false.set("$$repr", lambda: "false")
nil.set("$$str", lambda: "nil")
nil.set("$$repr", lambda: "nil")

OrObject.register(lambda x: true if x else false, type(True))
OrObject.register(lambda x: nil, type(None))
Beispiel #4
0
        else:
            try:
                if not valid_f(txt):
                    raise Exception
            except:
                self.buf.append(txt)
                raise IOError("Wrong input format")
            else:
                return coerce_f(txt)

    def write(self, *args, **kwargs):
        p = {
            "sep": " ",
            "end": ""
        }

        p.update(kwargs)

        sep = p["sep"]
        end = p["end"]

        try:
            self.file.write(sep.join(map(str, args)))
            self.file.write(str(end))
        except:
            raise IOError("File not open in write or append mode")

        return self

OrObject.register(File, types.FileType)
Beispiel #5
0
from orobject import OrObject

try:
    from collections import OrderedDict
except:
    from odict import OrderedDict

class ODict(OrderedDict):
    def __init__(self, dict=[], **kwargs):
        if isinstance(dict, OrderedDict):
            dict = dict.items()
        
        OrderedDict.__init__(self, dict + kwargs.items())
    
    def ispy(self): return True
    def topy(self): return self
    
    def __str__(self, fn=str):
        return "{%s}" % ", ".join(
            map(lambda x: ": ".join(map(fn, x)),
                self.items()))
    
    def __repr__(self):
        return self.__str__(repr)

OrObject.register(ODict, OrderedDict)
Beispiel #6
0
from orobject import OrObject

class OrException(OrObject, Exception):
    class_name = "Exception"

    def __init__(self, *args, **kwargs):
        OrObject.__init__(self, "", OrException)
        
        self.args = args
        self.kwargs = kwargs
        self.traceback = []
        
        self.set("traceback", self.traceback)
        self.set("args", self.args)
        self.set("kwargs", self.kwargs)
    
    def __str__(self):
        c = self.get("$$class")
        c = c.class_name if hasattr(c, "class_name") else c.__name__
        return "%s: %s" % (c, str(args[0]))
    
    def __repr__(self):
        return "<" + c + " '" + str(self.args[0]) + "'>"

OrObject.register(OrException, Exception)