Ejemplo n.º 1
0
def obj(definition: Definition) -> Base:
    def inner(definition: Definition, node: Base):
        for m in definition.model:
            if m.type == "object":
                inner_base = Base()
                if m.name:
                    inner_base.__setattr__(m.name, Base())
                    inner_base = inner_base.__getattribute__(m.name)
                inner(m, inner_base)
                node.__setattr__(m.name, inner_base)
            else:
                value = switch(m)
                value = value.__getattribute__(m.name)
                node.__setattr__(m.name, value)

    root = Base()
    named_root = None
    if definition.name:
        root.__setattr__(definition.name, Base())
        named_root = root.__getattribute__(definition.name)

    if named_root:
        inner(definition, named_root)
    else:
        inner(definition, root)
    return root
Ejemplo n.º 2
0
 def inner(definition: Definition, node: Base):
     for m in definition.model:
         if m.type == "object":
             inner_base = Base()
             if m.name:
                 inner_base.__setattr__(m.name, Base())
                 inner_base = inner_base.__getattribute__(m.name)
             inner(m, inner_base)
             node.__setattr__(m.name, inner_base)
         else:
             value = switch(m)
             value = value.__getattribute__(m.name)
             node.__setattr__(m.name, value)
Ejemplo n.º 3
0
def base(name: str, value: Union[bool, str, float, list]):
    if name:
        d = Base()
        d.__setattr__(name, value)
        return d
    return value