Example #1
0
 def _types(self, args, lcls):
     if __debug__:
         assert len(args) in {1, 2}, "om:types:(TYPE)[:(init args)], not " + str(args)
     base = args[0].datastr
     from Objects import __all__ as allobj
     if __debug__:
         assert base in allobj, "No such type of '{}'!".format(base)
     topassobj = getattr(__import__('Objects'), base)
     lcls.iv.last = group(data = str(topassobj), baseobj = typeobj(\
         baseclass = group(baseobj = topassobj(), control = args.control)), control = args.control)
Example #2
0
 def _evalargs(self, args, lcls, ignore):
     if __debug__:
         assert len(args) > 0, "No known Obj function '' for Obj '{}'!".format(args)
     # objname = str(lcls.iv.last.data)
     fncname = str(args[0])
     if fncname == '$clone' or fncname == '$copy' and fncname not in ignore:
         lcls.iv.last = lcls.iv.last.deepcopy()
     elif fncname == '$updtype' and fncname not in ignore:
         if __debug__:
             from Objects import arrayobj
             assert isinstance(args[1].baseobj, arrayobj), str(args) + " should be obj:updtype:(type)"
             assert len(args[1]) == 1, str(args) + " should be obj:updtype:(type)"
         last = lcls.iv.last
         args[1][0].evalgrp(lcls)
         if __debug__:
             from Objects import typeobj
             assert isinstance(lcls.iv.last.baseobj, typeobj), "should be obj:updtype:(type)"
         last.baseobj = lcls.iv.last.baseobj.baseclass.baseobj
     elif fncname == '$type' and fncname not in ignore:
         from Group import group # not sure this is the best way
         from Objects import typeobj # to be doing this...
         lcls.iv.last = group(data = type(lcls.iv.last.baseobj).__qualname__, baseobj = typeobj(lcls.iv.last),
                              control = args.control)
     elif fncname == '$str' and fncname not in ignore:
         from Group import group # not sure this is the best way
         from Objects import strobj # to be doing this...
         lcls.iv.last = group(data = lcls.iv.last.data, baseobj = strobj(),
                              control = args.control)
     elif fncname in {'$attrs', '$a'} and fncname not in ignore:
         from Group import group # not sure this is the best way
         from Objects import dictobj # to be doing this...
         lcls.iv.last = group(data = '', baseobj = dictobj(), parens = ('{', '}'),
                              control = args.control,
                              args = lcls.iv.last.attrs)
     elif fncname in {'$setattr', '$sa'} and fncname not in ignore:
         if __debug__:
             assert len(args) == 2, "obj:$setattr:(name, value), not '{}'".format(str(args))
             assert len(args[1]) == 2, "obj:$setattr:(name, value), not '{}'".format(str(args[0]))
         last = lcls.iv.last
         args[1][0].evalgrp(lcls)
         name = lcls.iv.last
         args[1][1].evalgrp(lcls)
         print(name.datastr in last.attrs,name.datastr, last.attrs.keys(), sep = '\t|\t')
         last.attrs[name.datastr] = lcls.iv.last
     elif fncname in {'$getattr', '$ga'} and fncname not in ignore:
         if __debug__:
             assert len(args) == 2, "obj:$getattr:(name), not '{}'".format(str(args))
             assert len(args[1]) == 1, "obj:$getattr:(name), not '{}'".format(str(args[0]))
         last = lcls.iv.last
         # args[1][0].evalgrp(lcls)
         lcls.iv.last = last.attrs[args[1][0].datastr]
     elif fncname in {'$delattr', '$da'} and fncname not in ignore:
         if __debug__:
             assert len(args) == 2, "obj:$delattr:(name), not '{}'".format(str(args))
             assert len(args[1]) == 1, "obj:$delattr:(name), not '{}'".format(str(args[0]))
         last = lcls.iv.last
         # args[1][0].evalgrp(lcls)
         lcls.iv.last = last.attrs[args[1][0].datastr]
         del last.attrs[args[1][0].datastr]
     else:
         if type(self)._evalargs == obj._evalargs:
             raise SyntaxError("No known function '{}' for {} '{}'.".\
                               format(fncname, type(self).__qualname__, lcls.iv.last))
         return NotImplemented
     return lcls.iv.last