<?php

/**
 * This file is part of Gitonomy.
 *
 * (c) Alexandre Salomé <alexandre.salome@gmail.com>
 * (c) Julien DIDIER <genzo.wm@gmail.com>
 *
 * This source file is subject to the MIT license that is bundled
 * with this source code in the file LICENSE.
 */

namespace Gitonomy\Git\Parser;

class TreeParser extends ParserBase
{
    public $entries = [];

    protected function doParse()
    {
        while (!$this->isFinished()) {
            $vars = $this->consumeRegexp('/\d{6}/A');
            $mode = $vars[0];
            $this->consume(' ');

            $vars = $this->consumeRegexp('/(blob|tree|commit)/A');
            $type = $vars[0];
            $this->consume(' ');

            $hash = $this->consumeHash();
            $this->consume("\t");

            $name = $this->consumeTo("\n");
            $this->consumeNewLine();

            $this->entries[] = [$mode, $type, $hash, $name];
        }
    }
}
