Gittern\Hydrator\TreeHydrator::hydrate PHP Méthode

hydrate() public méthode

public hydrate ( RawObject $raw_object )
$raw_object Gittern\Transport\RawObject
    public function hydrate(RawObject $raw_object)
    {
        $tree = new Tree();
        $tree->setSha($raw_object->getSha());
        $reader = new StringReader($raw_object->getData());
        while ($reader->available()) {
            $mode = intval($this->readModeString($reader), 8);
            $name = $this->readName($reader);
            $sha = $reader->readHHex(20);
            $is_tree = (bool) ($mode & 040000);
            if ($is_tree) {
                $node = new Node\TreeNode();
                $node->setTree(new TreeProxy($this->repo, $sha));
            } else {
                $node = new Node\BlobNode();
                $node->setBlob(new BlobProxy($this->repo, $sha));
            }
            $node->setIntegerMode($mode);
            $node->setName($name);
            $tree->addNode($node);
        }
        return $tree;
    }

Usage Example

Exemple #1
0
 public function testCanHydrateTreeWithSpaceInFileName()
 {
     $sha = "deadbeefcafebabefacebadc0ffeebadf00dcafe";
     $blob_line = sprintf("%s %s%s", "100644", 'Test blob.md', pack("H*", "deadbeefcafebabefacebadc0ffeebadf00dface"));
     $raw_object = M::mock('Gittern\\Transport\\RawObject', array('getSha' => $sha, 'getData' => $blob_line));
     $hydrator = new TreeHydrator(M::mock('Gittern\\Repository'));
     $tree = $hydrator->hydrate($raw_object);
     $nodes = $tree->getNodes();
     $this->assertEquals('Test blob.md', $nodes[0]->getName());
 }