Example #1
0
    def assertHasAttr(element: Element,
                      attr: str,
                      throw: bool = True) -> typing.Optional[str]:
        """
		Ensures an element has a specific attribute.
		"""

        if not element.isAttr(attr):
            return Error.handleFromElement(
                element=element,
                attr=None,
                message="Mising mandatory attribute '{}'.".format(attr),
                throw=throw)
        return None
Example #2
0
	def visitElement(self, element: Element, result: typing.List[str],
		nested: typing.Optional[typing.List[str]]) -> typing.List[str]:

		if element.isAttr("type"):

			entity = Type(element=element,
				kind="type",
				underlyingType="fqn_type",
				template="template_resolved" if self.isResolved else "template",
				argumentTemplate="argument_template_resolved" if self.isResolved else None,
				const="const")
			output = self.visitType(entity=entity,
				nested=[] if nested is None else nested,
				parameters=entity.parametersTemplateResolved)

		else:
			Error.assertHasAttr(element=element, attr="value")
			Error.assertTrue(element=element, condition=not nested, message="Value cannot have nested entities.")
			output = self.visitValue(value=element.getAttr("value").value, comment=element.getAttrValue("comment"))

		result.append(output)

		return result