/** * * */ public static function parse(\PhpGedcom\Parser $parser) { $record = $parser->getCurrentLineRecord(); $identifier = $parser->normalizeIdentifier($record[1]); $depth = (int) $record[0]; $subm = new \PhpGedcom\Record\Subm(); $subm->setSubm($identifier); $parser->getGedcom()->addSubm($subm); $parser->forward(); while (!$parser->eof()) { $record = $parser->getCurrentLineRecord(); $currentDepth = (int) $record[0]; $recordType = strtoupper(trim($record[1])); if ($currentDepth <= $depth) { $parser->back(); break; } switch ($recordType) { case 'NAME': $subm->setName(isset($record[2]) ? trim($record[2]) : ''); break; case 'ADDR': $addr = \PhpGedcom\Parser\Addr::parse($parser); $subm->setAddr($addr); break; case 'PHON': $phone = \PhpGedcom\Parser\Phon::parse($parser); $subm->addPhon($phone); break; case 'NOTE': $note = \PhpGedcom\Parser\NoteRef::parse($parser); if ($note) { $subm->addNote($note); } break; case 'OBJE': $obje = \PhpGedcom\Parser\ObjeRef::parse($parser); $subm->addObje($obje); break; case 'CHAN': $chan = \PhpGedcom\Parser\Chan::parse($parser); $subm->setChan($chan); break; case 'RIN': $subm->setRin(isset($record[2]) ? trim($record[2]) : ''); break; case 'RFN': $subm->setRfn(isset($record[2]) ? trim($record[2]) : ''); break; case 'LANG': $subm->addLang(isset($record[2]) ? trim($record[2]) : ''); break; default: $parser->logUnhandledRecord(get_class() . ' @ ' . __LINE__); } $parser->forward(); } return $subm; }
/** * * */ public static function parse(\PhpGedcom\Parser $parser) { $record = $parser->getCurrentLineRecord(); $identifier = $parser->normalizeIdentifier($record[1]); $depth = (int) $record[0]; $repo = new \PhpGedcom\Record\Repo(); $repo->setId($identifier); $parser->getGedcom()->addRepo($repo); $parser->forward(); while (!$parser->eof()) { $record = $parser->getCurrentLineRecord(); $currentDepth = (int) $record[0]; $recordType = strtoupper(trim($record[1])); if ($currentDepth <= $depth) { $parser->back(); break; } switch ($recordType) { case 'NAME': $repo->setName(trim($record[2])); break; case 'ADDR': $addr = \PhpGedcom\Parser\Addr::parse($parser); $repo->setAddr($addr); break; case 'PHON': $phon = \PhpGedcom\Parser\Phon::parse($parser); $repo->addPhon($phon); break; case 'NOTE': $note = \PhpGedcom\Parser\NoteRef::parse($parser); $repo->addNote($note); break; case 'REFN': $refn = \PhpGedcom\Parser\Refn::parse($parser); $repo->addRefn($refn); break; case 'CHAN': $chan = \PhpGedcom\Parser\Chan::parse($parser); $repo->setChan($chan); break; case 'RIN': $repo->setRin(trim($record[2])); break; default: $parser->logUnhandledRecord(get_class() . ' @ ' . __LINE__); } $parser->forward(); } return $repo; }
/** * * */ public static function parse(\PhpGedcom\Parser $parser) { $record = $parser->getCurrentLineRecord(); $depth = (int) $record[0]; $className = '\\PhpGedcom\\Record\\Indi\\' . ucfirst(strtolower(trim($record[1]))); $attr = new $className(); $attr->setType(trim($record[1])); if (isset($record[2])) { $attr->setAttr(trim($record[2])); } $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 'TYPE': $attr->setType(trim($record[2])); break; case 'DATE': $attr->setDate(trim($record[2])); break; case 'PLAC': $plac = \PhpGedcom\Parser\Indi\Even\Plac::parse($parser); $attr->setPlac($plac); break; case 'ADDR': $attr->setAddr(\PhpGedcom\Parser\Addr::parse($parser)); break; case 'PHON': $phone = \PhpGedcom\Parser\Phon::parse($parser); $attr->addPhon($phone); break; case 'CAUS': $attr->setCaus(trim($record[2])); break; case 'AGE': $attr->setAge(trim($record[2])); break; case 'AGNC': $attr->setAgnc(trim($record[2])); break; case 'SOUR': $sour = \PhpGedcom\Parser\SourRef::parse($parser); $attr->addSour($sour); break; case 'OBJE': $obje = \PhpGedcom\Parser\ObjeRef::parse($parser); $attr->addObje($obje); break; case 'NOTE': $note = \PhpGedcom\Parser\NoteRef::parse($parser); if ($note) { $attr->addNote($note); } break; default: $parser->logUnhandledRecord(get_class() . ' @ ' . __LINE__); } $parser->forward(); } return $attr; }
/** * * */ public static function parse(\PhpGedcom\Parser $parser) { $record = $parser->getCurrentLineRecord(); $depth = (int) $record[0]; $even = new \PhpGedcom\Record\Fam\Even(); if (isset($record[1]) && strtoupper(trim($record[1])) != 'EVEN') { $even->setType(trim($record[1])); } $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 'TYPE': $even->setType(trim($record[2])); break; case 'DATE': $even->setDate(trim($record[2])); break; case 'PLAC': $plac = \PhpGedcom\Parser\Indi\Even\Plac::parse($parser); $even->setPlac($plac); break; case 'ADDR': $addr = \PhpGedcom\Parser\Addr::parse($parser); $even->setAddr($addr); break; case 'PHON': $phone = \PhpGedcom\Parser\Phon::parse($parser); $even->addPhone($phone); break; case 'CAUS': $even->setCaus(trim($record[2])); break; case 'AGE': $even->setAge(trim($record[2])); break; case 'AGNC': $even->setAgnc(trim($record[2])); break; case 'HUSB': $husb = \PhpGedcom\Parser\Fam\Even\Husb::parse($parser); $even->setHusb($husb); break; case 'WIFE': $wife = \PhpGedcom\Parser\Fam\Even\Wife::parse($parser); $even->setWife($wife); break; case 'SOUR': $sour = \PhpGedcom\Parser\SourRef::parse($parser); $even->addSour($sour); break; case 'OBJE': $obje = \PhpGedcom\Parser\ObjeRef::parse($parser); $even->addObje($obje); break; case 'NOTE': $note = \PhpGedcom\Parser\NoteRef::parse($parser); if ($note) { $even->addNote($note); } break; default: $parser->logUnhandledRecord(get_class() . ' @ ' . __LINE__); } $parser->forward(); } return $even; }