Example #1
0
 public function testGroupRanges()
 {
     $r1 = new Reference();
     $r1->addBookChapterAndVerseRange(1, 2, 6, 7);
     $r1->addBookChapterAndVerseRange(1, 2, 10, 14);
     $r1->addBookChapterAndVerseRange(1, 3, 2, 4);
     $groups = $r1->groupRanges();
     $this->assertEquals(2, count($groups));
     list($group1, $group2) = $groups;
     $this->assertEquals(2, count($group1));
     $this->assertEquals(1, count($group2));
     //  Overlapping chapter...
     $r2 = new Reference();
     $r2->addBookAndChapter(1, 2);
     $r2->addBookChapterAndVerse(1, 3, 1);
     $r2->addBookChapterAndVerseRange(1, 3, 7, 8);
     $groups = $r2->groupRanges();
     $this->assertEquals(2, count($groups));
     list($group1, $group2) = $groups;
     $this->assertEquals(1, count($group1));
     $this->assertEquals(1, count($group2));
     // matt+18;19.1,3,5,7 -> 18:1-19:1; 19:3,5,7
     $r3 = new Reference();
     $r3->addBookAndChapter(1, 18);
     $r3->addBookChapterAndVerse(1, 19, 1);
     $r3->addBookChapterAndVerse(1, 19, 3);
     $r3->addBookChapterAndVerse(1, 19, 5);
     $r3->addBookChapterAndVerse(1, 19, 7);
     $groups = $r3->groupRanges();
     $this->assertEquals(2, count($groups));
     list($group1, $group2) = $groups;
     $this->assertEquals(1, count($group1));
     $this->assertEquals(3, count($group2));
 }
Example #2
0
 /**
  * getChapterHandleGrid 
  * 
  * @param Reference $reference 
  * @return array (2-D) of reference handle, ready for use in routes. 
  */
 public function getChapterHandleGrid(Reference $reference, $width = 10)
 {
     if ($quadruple = $reference->getFirstQuadruple()) {
         list($b, $s, $c, $v) = $quadruple;
         $chapters = $this->getChapters($b);
         $handles = [];
         foreach (range(1, $chapters) as $c) {
             $r = $this->createReferenceFromBookAndChapter($b, $c);
             $handles[] = $this->getHandle($r);
         }
         return array_chunk($handles, $width);
     }
     return [];
 }