def interpret(self, context): list = self.getValue(context) if not list.mutable: raise NotMutableError() value = context.getValue("value") atIndex = context.getValue("atIndex") list.insertValue(value, atIndex)
def assign(self, context, expression): root = self.parent.interpret(context) if not root.mutable: raise NotMutableError() item = self.item.interpret(context) value = expression.interpret(context) root.setItem(context, item, value)
def assignArguments(self, context, local, declaration): arguments = self.makeArguments(context, declaration) for argument in arguments: expression = argument.resolve(local, declaration, True) parameter = argument.getParameter() value = parameter.checkValue(context, expression) if value is not None and parameter.mutable and not value.mutable: from prompto.error.NotMutableError import NotMutableError raise NotMutableError() local.setValue(argument.getName(), value)
def setMember(self, context, attrName, value): if not self.mutable: raise NotMutableError() stacked = activeSetters.__dict__.get(attrName, None) first = stacked is None if first: activeSetters.__dict__[attrName] = context try: self.doSetMember(context, attrName, value, first) finally: if first: del activeSetters.__dict__[attrName]
def interpret(self, context): from prompto.declaration.CategoryDeclaration import CategoryDeclaration cd = context.getRegisteredDeclaration(CategoryDeclaration, self.itype.typeName) if cd is None: raise SyntaxError("Unknown category " + self.itype.typeName) self.checkFirstHomonym(context, cd) instance = self.itype.newInstance(context) instance.mutable = True if self.copyFrom is not None: copyObj = self.copyFrom.interpret(context) if isinstance(copyObj, IInstance): for name in copyObj.getMemberNames(): if name == "dbId": continue elif cd.hasAttribute(context, name): value = copyObj.getMemberValue(context, name) if value is not None and value.mutable and not self.itype.mutable: raise NotMutableError() instance.setMember(context, name, value) elif isinstance(copyObj, DocumentValue): for name in copyObj.getMemberNames(): if name == "dbId": continue elif cd.hasAttribute(context, name): value = copyObj.getMemberValue(context, name) if value is not None and value.mutable and not self.itype.mutable: raise NotMutableError() # TODO convert to attribute type instance.setMember(context, name, value) if self.arguments is not None: for argument in self.arguments: value = argument.getExpression().interpret(context) if value is not None and value.mutable and not self.itype.mutable: raise NotMutableError() instance.setMember(context, argument.getName(), value) instance.mutable = self.itype.mutable return instance
def interpret(self, context): dict = self.getValue(context) if not dict.mutable: raise NotMutableError() value = context.getValue("value") dict.removeValue(value)
def interpret(self, context): dict = self.getValue(context) if not dict.mutable: raise NotMutableError() key = context.getValue("key") dict.removeKey(key)
def interpret(self, context): list = self.getValue(context) if not list.mutable: raise NotMutableError() value = context.getValue("value") list.addValue(value)
def interpret(self, context): list = self.getValue(context) if not list.mutable: raise NotMutableError() item = context.getValue("item") list.removeItem(item)
def assign(self, context, expression): root = self.parent.interpret(context) if not root.mutable: raise NotMutableError() value = expression.interpret(context) root.setMember(context, self.name, value)