<?php

/**
 * php-gedcom
 *
 * php-gedcom is a library for parsing, manipulating, importing and exporting
 * GEDCOM 5.5 files in PHP 5.3+.
 *
 * @author          Kristopher Wilson <kristopherwilson@gmail.com>
 * @copyright       Copyright (c) 2010-2013, Kristopher Wilson
 * @package         php-gedcom
 * @license         MIT
 * @link            http://github.com/mrkrstphr/php-gedcom
 */

namespace AncestorPress\Vendor\PhpGedcom\Parser\Indi;

/**
 *
 *
 */
class Famc extends \AncestorPress\Vendor\PhpGedcom\Parser\Component
{

    /**
     *
     *
     */
    public static function parse(\AncestorPress\Vendor\PhpGedcom\Parser $parser)
    {
        $record = $parser->getCurrentLineRecord();
        $depth = (int) $record[0];

        if (count($record) < 3) {
            $parser->logSkippedRecord('Missing family information; ' . get_class(), ' @ ' . __LINE__);
            $parser->skipToNextLevel($depth);
            return null;
        }

        $famc = $parser->normalizeIdentifier($record[2]);

        $fam = new \AncestorPress\Vendor\PhpGedcom\Record\Indi\Famc();
        $fam->setFamc($famc);

        $parser->forward();

        while (!$parser->eof()) {
            $record = $parser->getCurrentLineRecord();

            if(isset($record[1])){

                $recordType = strtoupper(trim($record[1] ?? ''));
                $currentDepth = (int) $record[0];

                if ($currentDepth <= $depth) {
                    $parser->back();
                    break;
                }

                switch ($recordType) {
                    case 'PEDI':
                        $fam->setPedi(trim($record[2] ?? ''));
                        break;
                    case 'NOTE':
                        $note = \AncestorPress\Vendor\PhpGedcom\Parser\NoteRef::parse($parser);
                        if ($note) {
                            $fam->addNote($note);
                        }
                        break;
                    default:
                        $parser->logUnhandledRecord(get_class() . ' @ ' . __LINE__);
                }
            }

            $parser->forward();
        }

        return $fam;
    }
}
