예제 #1
0
 /**
  *
  *
  */
 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;
 }
예제 #2
0
 /**
  *
  */
 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;
 }