Ejemplo n.º 1
0
    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))
Ejemplo n.º 2
0
    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)