Exemplo n.º 1
0
 public function testSortKeys()
 {
     $map = new Map(['b' => 'bval', 'a' => 'aval', 'c' => 'cval']);
     $map->sortKeys();
     $this->assertEquals(['a' => 'aval', 'b' => 'bval', 'c' => 'cval'], $map->toArray());
     $map = new Map(['b' => 'bval', 'a' => 'aval', 'c' => 'cval']);
     $map->sortKeys(function ($a, $b) {
         if ($a == $b) {
             return 0;
         }
         return $a < $b ? -1 : 1;
     });
     $this->assertEquals(['a' => 'aval', 'b' => 'bval', 'c' => 'cval'], $map->toArray());
     $map = new Map(['b' => 'bval', 'a' => 'aval', 'c' => 'cval']);
     $map->sortKeys(new StringComparator());
     $this->assertEquals(['a' => 'aval', 'b' => 'bval', 'c' => 'cval'], $map->toArray());
 }
Exemplo n.º 2
0
 /**
  * A list of tags sorted by tag-name
  * 
  * @return ArrayList
  */
 public function getSortedTags()
 {
     if ($this->comparator === null) {
         $this->comparator = new TagNameComparator();
     }
     // 1) group by tag name
     $group = new Map();
     foreach ($this->tags as $tag) {
         if (!$group->has($tag->getTagName())) {
             $group->set($tag->getTagName(), new ArrayList());
         }
         $group->get($tag->getTagName())->add($tag);
     }
     // 2) Sort the group by tag name
     $group->sortKeys(new TagNameComparator());
     // 3) flatten the group
     $sorted = new ArrayList();
     foreach ($group->values() as $tags) {
         $sorted->addAll($tags);
     }
     return $sorted;
 }