/** * @param phpMorphy_Paradigm_ParadigmInterface $paradigm * @return phpMorphy_Dict_FlexiaModel */ protected function createFlexiaModel(phpMorphy_Paradigm_ParadigmInterface $paradigm) { $flexia_model = new phpMorphy_Dict_FlexiaModel(null); foreach ($paradigm->getAffixes() as $affix) { $ancode = $this->createAncode($affix['pos'], $affix['grammems']); $flexia = new phpMorphy_Dict_Flexia($affix['prefix'], $affix['suffix'], $ancode->getId()); $flexia_model->append($flexia); } return $this->source->appendFlexiaModel($flexia_model); }
protected function readNext(XMLReader $reader) { do { if ($this->isStartElement('flexia_model')) { $flexia_model = new phpMorphy_Dict_FlexiaModel($reader->getAttribute('id')); while ($this->read()) { if ($this->isStartElement('flexia')) { $flexia_model->append(new phpMorphy_Dict_Flexia($reader->getAttribute('prefix'), $reader->getAttribute('suffix'), $reader->getAttribute('ancode_id'))); } elseif ($this->isEndElement('flexia_model')) { break; } } unset($this->current); $this->current = $flexia_model; break; } } while ($this->read()); }
protected function processLine($line) { $line = $this->iconv($this->removeComment($line)); $model = new phpMorphy_Dict_FlexiaModel($this->getPosition()); foreach (explode('%', substr($line, 1)) as $token) { //$parts = array_map('trim', explode('*', $token)); $parts = explode('*', $token); switch (count($parts)) { case 2: $ancode = $parts[1]; $prefix = ''; break; case 3: $ancode = $parts[1]; $prefix = $parts[2]; break; default: throw new phpMorphy_Aot_Mrd_Exception("Invalid flexia string({$token}) in str({$line})"); } $flexia = $parts[0]; $model->append(new phpMorphy_Dict_Flexia($prefix, $flexia, $ancode)); } return $model; }
/** * @param mixed $value * @return void */ public function append($value) { $result = $this->object->append($value); return $result === $this->object ? $this : $result; }