def processStructure(cls, structureElement, signature): """ Генерация элементов RawChord Необходимо расчитать размер в долях :type structureElement: xml.dom.minidom.Element :type signature: Length :rtype: None """ length = getAttr(structureElement, 'length', True, Length.make_validator(signature)) chord = structureElement.getAttribute('name') if structureElement.tagName == 'chord': return RawChord(chord, length) else: raise ParseException(u"Элемент %s не может содержать элемент %s" % (structureElement.parentNode.tagName, structureElement.tagName))
def processElement(self, element): """ Специфичная для класса обработка элемента Конструрием элементы из аттрибутов элемента :type element: xml.dom.minidom.Element :rtype: None """ id = element.getAttribute('id') signature = getAttr(element, 'signature', False, Length.make_validator(), Length(4,4)) title = element.getAttribute('title') key = getAttr(element, 'key', False, validator_key) chords = [self.processStructure(x, signature) for x in iterElements(element)] if not chords: raise ParseException(u"Последовательность %s пуста" % id) self.validate(id, chords, signature) self.values[id] = Progression(signature, title, chords, key)