/**
  * @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 . '}';
 }
Exemplo n.º 2
0
 /**
  * @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);
 }
Exemplo n.º 3
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());
 }
Exemplo n.º 4
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;
 }
 /**
  * @return int
  */
 public function count()
 {
     $result = $this->object->count();
     return $result === $this->object ? $this : $result;
 }
Exemplo n.º 6
0
 private function checkConsistencyForFlexiaModel(phpMorphy_Dict_FlexiaModel $model)
 {
     foreach ($model->getFlexias() as $flexia) {
         if (!$this->ancodes->hasId($flexia->getAncodeId())) {
             return false;
         }
     }
     return true;
 }