+ def register_rspec_element(self, element_type, element_name, element_path):
+ if element_type not in RSpecElements:
+ raise InvalidRSpecElement(element_type,
+ extra="no such element type: {}. Must specify a valid RSpecElement".format(element_type))
+ self.elements[element_type] = RSpecElement(
+ element_type, element_name, element_path)
+
+ def get_rspec_element(self, element_type):
+ if element_type not in self.elements:
+ msg = "ElementType {} not registered for this rspec".format(
+ element_type)
+ raise InvalidRSpecElement(element_type, extra=msg)
+ return self.elements[element_type]
+
+ def get(self, element_type, filter=None, depth=0):
+ if filter is None:
+ filter = {}
+ elements = self.get_elements(element_type, filter)
+ elements = [self.xml.get_element_attributes(
+ elem, depth=depth) for elem in elements]
+ return elements