/** * * */ public static function parse(\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; } $fams = $parser->normalizeIdentifier($record[2]); $fam = new \PhpGedcom\Record\Indi\Fams(); $fam->setFams($fams); $parser->forward(); while (!$parser->eof()) { $record = $parser->getCurrentLineRecord(); $recordType = strtoupper(trim($record[1])); $currentDepth = (int) $record[0]; if ($currentDepth <= $depth) { $parser->back(); break; } switch ($recordType) { case 'NOTE': $note = \PhpGedcom\Parser\NoteRef::parse($parser); if ($note) { $fam->addNote($note); } break; default: $parser->logUnhandledRecord(get_class() . ' @ ' . __LINE__); } $parser->forward(); } return $fam; }
/** * */ public static function parse(\PhpGedcom\Parser $parser) { $record = $parser->getCurrentLineRecord(); $depth = (int) $record[0]; $note = new \PhpGedcom\Record\NoteRef(); if (count($record) < 3) { $parser->logSkippedRecord('Missing note information; ' . get_class(), ' @ ' . __LINE__); $parser->skipToNextLevel($depth); return null; } if (preg_match('/^@(.*)@$/', trim($record[2]))) { $note->setIsReference(true); $note->setNote($parser->normalizeIdentifier($record[2])); } else { $before = $parser->getCurrentLine(); $note->setIsReference(false); $note->setNote($parser->parseMultiLineRecord()); } $parser->forward(); while (!$parser->eof()) { $record = $parser->getCurrentLineRecord(); $recordType = strtoupper(trim($record[1])); $currentDepth = (int) $record[0]; if ($currentDepth <= $depth) { $parser->back(); break; } switch ($recordType) { case 'SOUR': $sour = \PhpGedcom\Parser\SourRef::parse($parser); $note->addSour($sour); break; default: $parser->logUnhandledRecord(get_class() . ' @ ' . __LINE__); } $parser->forward(); } return $note; }