Example #1
0
 def blankLineAfterLiteral(self, oldLines):
     '''
     Guarantee a blank line after literal blocks.
     '''
     lines = [oldLines[0]]  # start with first line...
     for first, second in windowed(oldLines, 2):
         if (first.strip() and first[0].isspace() and second.strip()
                 and not second[0].isspace()):
             lines.append('')
         lines.append(second)
         if '.. parsed-literal::' in second:
             lines.append('   :class: ipython-result')
     return lines
Example #2
0
    def run(self):
        if 'StreamIterator' in self.streamSearch.classes:
            thisStreamIterator = self.streamSearch
        else:
            if self.recurse:
                thisStreamIterator = self.streamSearch.recurse()
            else:
                thisStreamIterator = self.searchStream.iter

            if self.filterNotesAndRests:
                thisStreamIterator.addFilter(
                    filters.ClassFilter('GeneralNote'))
            elif self.filterNotes:
                thisStreamIterator.addFilter(
                    filters.ClassFilter(['Note', 'Chord']))

        self.activeIterator = thisStreamIterator

        streamIteratorEls = list(thisStreamIterator)
        streamLength = len(streamIteratorEls)
        searchLength = len(self.searchList)

        if searchLength == 0:
            raise SearchException('the search Stream or list cannot be empty')

        foundEls = []
        if searchLength > streamLength:
            return foundEls

        for startPosition, streamEls in enumerate(
                windowed(streamIteratorEls, searchLength)):
            result = None
            for j in range(searchLength):
                streamEl = streamEls[j]
                searchEl = self.searchList[j]
                for thisAlgorithm in self.algorithms:
                    result = thisAlgorithm(self, streamEl, searchEl)
                    if result is not None:  # break on True or False
                        break
                if result is False:
                    break
                if result is True:
                    result = None

            if result is not False:
                sm = SearchMatch(streamEls[0], streamEls, startPosition,
                                 self.activeIterator)
                foundEls.append(sm)

        return foundEls
Example #3
0
 def blankLineAfterLiteral(self, oldLines):
     '''
     Guarantee a blank line after literal blocks.
     '''
     lines = [oldLines[0]] # start with first line...
     for first, second in windowed(oldLines, 2):
         if (first.strip()
                 and first[0].isspace()
                 and second.strip()
                 and not second[0].isspace()):
             lines.append('')
         lines.append(second)
         if '.. parsed-literal::' in second:
             lines.append('   :class: ipython-result')
     return lines
Example #4
0
    def run(self):
        if 'StreamIterator' in self.streamSearch.classes:
            thisStreamIterator = self.streamSearch
        else:
            if self.recurse:
                thisStreamIterator = self.streamSearch.recurse()
            else:
                thisStreamIterator = self.searchStream.iter

            if self.filterNotesAndRests:
                thisStreamIterator.addFilter(filters.ClassFilter('GeneralNote'))
            elif self.filterNotes:
                thisStreamIterator.addFilter(filters.ClassFilter(['Note', 'Chord']))

        self.activeIterator = thisStreamIterator

        streamIteratorEls = list(thisStreamIterator)
        streamLength = len(streamIteratorEls)
        searchLength = len(self.searchList)



        if searchLength == 0:
            raise SearchException('the search Stream or list cannot be empty')

        foundEls = []
        if searchLength > streamLength:
            return foundEls

        for startPosition, streamEls in enumerate(windowed(streamIteratorEls, searchLength)):
            result = None
            for j in range(searchLength):
                streamEl = streamEls[j]
                searchEl = self.searchList[j]
                for thisAlgorithm in self.algorithms:
                    result = thisAlgorithm(self, streamEl, searchEl)
                    if result is not None: # break on True or False
                        break
                if result is False:
                    break
                if result is True:
                    result = None

            if result is not False:
                sm = SearchMatch(streamEls[0], streamEls, startPosition, self.activeIterator)
                foundEls.append(sm)

        return foundEls
def streamSearchBase(thisStreamOrIterator, searchList, algorithm=None):
    '''
    A basic search function that is used by other search mechanisms,
    which takes in a stream or StreamIterator and a searchList or stream
    and an algorithm to run on each pair of elements to determine if they match.


    '''
    if algorithm is None:
        raise SearchException('algorithm must be a function not None')

    result = None
    if 'StreamIterator' in thisStreamOrIterator.classes:
        thisStreamIterator = thisStreamOrIterator
    else:
        thisStreamIterator = thisStreamOrIterator.recurse()

    streamIteratorEls = list(thisStreamIterator)
    streamLength = len(streamIteratorEls)
    searchLength = len(searchList)
    if searchLength == 0:
        raise SearchException('the search Stream or list cannot be empty')

    foundEls = []
    if searchLength > streamLength:
        return foundEls

    for startPosition, streamEls in enumerate(
            windowed(streamIteratorEls, searchLength)):
        for j in range(searchLength):
            streamEl = streamEls[j]
            searchEl = searchList[j]
            result = algorithm(streamEl, searchEl)
            if not result:
                break
        if result:
            foundEls.append(startPosition)
    return foundEls
Example #6
0
def streamSearchBase(thisStreamOrIterator, searchList, algorithm=None):
    '''
    A basic search function that is used by other search mechanisms,
    which takes in a stream or StreamIterator and a searchList or stream
    and an algorithm to run on each pair of elements to determine if they match.


    '''
    if algorithm is None:
        raise SearchException('algorithm must be a function not None')

    if 'StreamIterator' in thisStreamOrIterator.classes:
        thisStreamIterator = thisStreamOrIterator
    else:
        thisStreamIterator = thisStreamOrIterator.recurse()

    streamIteratorEls = list(thisStreamIterator)
    streamLength = len(streamIteratorEls)
    searchLength = len(searchList)
    if searchLength == 0:
        raise SearchException('the search Stream or list cannot be empty')

    foundEls = []
    if searchLength > streamLength:
        return foundEls

    for startPosition, streamEls in enumerate(windowed(streamIteratorEls, searchLength)):
        for j in range(searchLength):
            streamEl = streamEls[j]
            searchEl = searchList[j]
            result = algorithm(streamEl, searchEl)
            if not result:
                break
        if result:
            foundEls.append(startPosition)
    return foundEls