/**
  * @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);
 }
Beispiel #2
0
 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());
 }
Beispiel #3
0
 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;
 }