Ejemplo n.º 1
0
 def make_array(self):
     chapter_ranges = []
     for rng in self.ranges:
         min_chapter = Pyricope._get_chapter(min(rng))
         max_chapter = Pyricope._get_chapter(max(rng))
         if min_chapter == max_chapter:
             chapter_ranges.append(rng)
         else:
             chapter_ranges += irange(min(rng),
                                      Pyricope._get_last_verse(self.book,
                                                              min_chapter))
             for chapter in range(min_chapter + 1, max_chapter):
                 chapter_ranges.append(
                     irange(
                         Pyricope._get_first_verse(self.book, chapter),
                         Pyricope._get_last_verse(self.book, chapter)
                     )
                 )
             chapter_ranges.append(
                 irange(
                     Pyricope._get_first_verse(self.book, max_chapter),
                     max(rng)
                 )
             )
     return flatten(chapter_ranges)
Ejemplo n.º 2
0
    def _group_array_into_ranges(cls, ary):
        if not ary:
            return []
        ary = sorted(compact(flatten(ary)))
        
        ranges = []
        range_start = ary.pop(0)
        range_end = range_start
        while True:
            if not ary:
                break
            next_value = ary.pop(0)

            if (next_value == cls._get_next_verse(range_end) or
                next_value == cls._get_start_of_next_chapter(range_end)):
                range_end = next_value
            else:
                ranges.append(irange(range_start, range_end))
                range_start = range_end = next_value
        ranges.append(irange(range_start, range_end))
        return ranges