Esempio n. 1
0
 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)
Esempio n. 2
0
 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)
Esempio n. 3
0
 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)
Esempio n. 4
0
 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
Esempio n. 6
0
 def interpret(self, context):
     dict = self.getValue(context)
     if not dict.mutable:
         raise NotMutableError()
     value = context.getValue("value")
     dict.removeValue(value)
Esempio n. 7
0
 def interpret(self, context):
     dict = self.getValue(context)
     if not dict.mutable:
         raise NotMutableError()
     key = context.getValue("key")
     dict.removeKey(key)
Esempio n. 8
0
 def interpret(self, context):
     list = self.getValue(context)
     if not list.mutable:
         raise NotMutableError()
     value = context.getValue("value")
     list.addValue(value)
Esempio n. 9
0
 def interpret(self, context):
     list = self.getValue(context)
     if not list.mutable:
         raise NotMutableError()
     item = context.getValue("item")
     list.removeItem(item)
Esempio n. 10
0
 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)