コード例 #1
0
ファイル: sequence.py プロジェクト: marchon/yay
    def get(self, idx):
        return self.value[int(idx)]
        #b = BoxingFactory.box(self.resolve()[int(idx)])
        #return b

    def resolve(self):
        data = []
        for val in self.value:
            data.append(val.resolve())
        return data

    def __iter__(self):
        return iter(self.value)

    def walk(self):
        for val in self.value:
            yield val

    def clone(self):
        return Sequence([x.clone() for x in self.value])


def box_generator(val):
    return Sequence(list(BoxingFactory.box(itm) for itm in val))


BoxingFactory.register(inspect.isgenerator, box_generator)

BoxingFactory.register(lambda x: isinstance(x, list), box_generator)
コード例 #2
0
ファイル: dj.py プロジェクト: marchon/yay
        return Table(v)

    def get(self, key):
        if key in self.tables:
            return self.tables[key]

        if self.config.get("model"):
            tbl = self.tables[key] = self.get_model(key)
            return tbl

        self.error("'model' not specified")

    def error(self, msg):
        raise RuntimeError(msg)


def lazy_isinstance(classname):
    def _(obj):
        cls = obj.__class__
        if not hasattr(cls, "__mro__"):
            return False
        modname, cname = classname.rsplit(".", 1)
        return any(x.__module__ == modname and x.__name__ == cname for x in cls.__mro__)
    return _

BoxingFactory.register(lazy_isinstance("django.db.models.base.Model"), Instance)
BoxingFactory.register(lazy_isinstance("django.db.models.query.QuerySet"), InstanceList)
BoxingFactory.register(lazy_isinstance("django.db.models.manager.Manager"), InstanceList)

コード例 #3
0
            return self.tables[key]

        if self.config.get("model"):
            tbl = self.tables[key] = self.get_model(key)
            return tbl

        self.error("'model' not specified")

    def error(self, msg):
        raise RuntimeError(msg)


def lazy_isinstance(classname):
    def _(obj):
        cls = obj.__class__
        if not hasattr(cls, "__mro__"):
            return False
        modname, cname = classname.rsplit(".", 1)
        return any(x.__module__ == modname and x.__name__ == cname
                   for x in cls.__mro__)

    return _


BoxingFactory.register(lazy_isinstance("django.db.models.base.Model"),
                       Instance)
BoxingFactory.register(lazy_isinstance("django.db.models.query.QuerySet"),
                       InstanceList)
BoxingFactory.register(lazy_isinstance("django.db.models.manager.Manager"),
                       InstanceList)
コード例 #4
0
            data[key] = self.get(key).resolve()
        return data

    def walk(self):
        for itm in self.value.items():
            yield itm
        yield self.predecessor

    def clone(self):
        p = None
        if self.predecessor:
            p = self.predecessor.clone()

        m = Mapping(p)
        for k, v in self.value.items():
            m.set(k, v.clone())
        return m

    def __iter__(self):
        return iter(BoxingFactory.box(v) for v in sorted(self.keys()))


def box_dict(val):
    m = Mapping(None)
    for k, v in val.items():
        m.set(k, BoxingFactory.box(v))
    return m


BoxingFactory.register(lambda x: isinstance(x, dict), box_dict)
コード例 #5
0
ファイル: sequence.py プロジェクト: marchon/yay
        [x.set_parent(self) for x in value]

    def get(self, idx):
        return self.value[int(idx)]
        #b = BoxingFactory.box(self.resolve()[int(idx)])
        #return b

    def resolve(self):
        data = []
        for val in self.value:
            data.append(val.resolve())
        return data

    def __iter__(self):
        return iter(self.value)

    def walk(self):
        for val in self.value:
            yield val

    def clone(self):
        return Sequence([x.clone() for x in self.value])


def box_generator(val):
    return Sequence(list(BoxingFactory.box(itm) for itm in val))
BoxingFactory.register(inspect.isgenerator, box_generator)

BoxingFactory.register(lambda x: isinstance(x, list), box_generator)