def startLocation(parser, data): attrs = SOX.validatedAttributes(parser, data, locRequired, locOptional) acquirePermission(data, attrs) prev = findComponentData(data) parent = prev['sm.component'] name = attrs.get('name') if data['previous'] is not prev: parser.err("Locations must be directly inside other locations") if isRoot(prev): if name is not None: parser.err("Root location cannot have a 'name'") if 'sm_included_from' in prev: inclattrs = prev['sm_included_from'] name = inclattrs.get('name') if 'class' in inclattrs: attrs['class'] = inclattrs['class'] if 'sm_conflict_manager' in prev: data['sm_conflict_manager'] = prev['sm_conflict_manager'] data['no_resolve'] = True # let the including file do it elif not name: parser.err("Non-root locations must have a 'name'") data.setdefault('sm_conflict_manager', ConflictManager()) loc = makeLocation(parser, data, attrs, parent, name) data['sm.component'] = loc data['sm_container_stack'] = []
def doOffer(parser, data): attrs = SOX.validatedAttributes(parser, data, ( 'path', 'as', )) prev = findComponentData(data) prev['sm.component'].registerLocation(attrs['as'], attrs['path'])
def doContent(parser, data): attrs = SOX.validatedAttributes(parser, data, content_req, content_opt) acquirePermission(data, attrs) acquireHelper(data, attrs) data['sm.content_type'] = evalObject(data, attrs['type']) if 'location' in attrs: registerView(parser, data, attrs, 'peak.web.url', locationView(attrs['location']))
def doView(parser, data): attrs = SOX.validatedAttributes(parser, data, view_required, view_optional) mode, expr = choose(parser, view_one_of, attrs) if mode == 'object': handler = objectView(evalObject(data, expr)) elif mode == 'function': handler = evalObject(data, expr) elif mode == 'expr': g = getGlobals(data['previous']) def handler(ctx, ob, namespace, name, qname, default=NOT_GIVEN): return ctx.childContext(qname, eval(expr, locals(), g)) elif mode == 'attribute': handler = attributeView(expr) elif mode == 'resource': handler = resourceView(expr) registerView(parser, data, attrs, attrs['name'], handler)
def doContainer(parser, data): attrs = SOX.validatedAttributes(parser, data, (), ( 'lookup', 'object', 'permission', )) prev = findComponentData(data) perm = acquirePermission(data, attrs) loc = prev['sm.component'] if ('object' in attrs) == ('lookup' in attrs): parser.err("container must have a 'lookup' or 'object'") elif 'object' in attrs: container = evalObject(data, attrs['object']) else: container = binding.lookupComponent(loc, evalObject(data, attrs['lookup'])) prev['sm_container_stack'].append( lambda: loc.addContainer(container, perm)) data['container'] = container
def fromFile(filename_or_stream, parentComponent, **kw): document = XMIDocument(parentComponent) SOX.load(filename_or_stream, document, namespaces=True) return DM(parentComponent, document=document, **kw)[()]
def doRequire(parser, data): attrs = SOX.validatedAttributes(parser, data, ('permission', ), ('helper', )) acquirePermission(data, attrs) acquireHelper(data, attrs)
def doImport(parser, data): attrs = SOX.validatedAttributes(parser, data, ('module', ), ('as', )) module = str(attrs['module']) as_ = attrs.get('as', module.split('.')[-1]) getGlobals(data['previous'])[as_] = lazyModule(module)
def doAllow(parser, data): attrs = SOX.validatedAttributes(parser, data, ('attributes', ), ('permission', 'helper')) for attr in attrs['attributes'].split(','): registerView(parser, data, attrs, attr, attributeView(attr.strip()))
def setUp(self): self.n = SOX.NegotiatingParser() self.attrs = [] self.log = [] self.n.element_map['nothing'] = self.nothing
def setUp(self): self.object = ob = SOX.load(stream(self.text), namespaces=self.useNS) self.de = ob.documentElement