- def parse_rspec(self, rspec, namespaces={}):
- parser = etree.XMLParser(remove_blank_text=True)
- try:
- tree = etree.parse(rspec, parser)
- except IOError:
- # 'rspec' file doesnt exist. 'rspec' is proably an xml string
- try:
- tree = etree.parse(StringIO(rspec), parser)
- except:
- raise InvalidRSpec('Must specify a xml file or xml string. Received: ' + rspec )
+ def load_rspec_elements(self, rspec_elements):
+ self.elements = {}
+ for rspec_element in rspec_elements:
+ if isinstance(rspec_element, RSpecElement):
+ self.elements[rspec_element.type] = rspec_element
+
+ 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: %s. Must specify a valid RSpecElement" % element_type)
+ self.elements[element_type] = RSpecElement(element_type, element_name, element_path)