/** * @param phpMorphy_Dict_FlexiaModel $model * @return string */ function formatFlexiaModel(phpMorphy_Dict_FlexiaModel $model) { $flexias = array(); $flexia_indent = ' '; foreach ($model as $flexia) { $flexias[] = $flexia_indent . $this->formatFlexia($flexia); } return 'FlexiaModel(id = ' . $this->formatValue($model->getId()) . ') {' . implode(PHP_EOL, $flexias) . PHP_EOL . '}'; }
/** * @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; }
/** * @return int */ public function count() { $result = $this->object->count(); return $result === $this->object ? $this : $result; }
private function checkConsistencyForFlexiaModel(phpMorphy_Dict_FlexiaModel $model) { foreach ($model->getFlexias() as $flexia) { if (!$this->ancodes->hasId($flexia->getAncodeId())) { return false; } } return true; }