/** * @param phpMorphy_Paradigm_ParadigmInterface[] $paradigmsCollection * @param phpMorphy_UserDict_Pattern $pattern * @param bool $isMatchOnlyLemmas * @return array(0 => phpMorphy_WordForm_WordFormAbstract[], 1 => int[]) */ function findSuitableFormsByPattern($paradigmsCollection, phpMorphy_UserDict_Pattern $pattern, $isMatchOnlyLemmas) { $result = array(); $forms_idx = array(); foreach ($paradigmsCollection as $paradigm) { if ($isMatchOnlyLemmas) { $lemma = $paradigm->getLemma(); if ($pattern->matchWord($lemma)) { $word_form = $paradigm->getWordForm(0); $match_result = $pattern->match($word_form->getWord(), $word_form->getPartOfSpeech(), $word_form->getGrammems()); if ($match_result) { $result[] = $word_form; $forms_idx[] = 0; } } } else { $form_no = 0; foreach ($paradigm as $word_form) { $match_result = $pattern->match($word_form->getWord(), $word_form->getPartOfSpeech(), $word_form->getGrammems()); if ($match_result) { $result[] = $word_form; $forms_idx[] = $form_no; } $form_no++; } } } return array($result, $forms_idx); }
/** * @todo Implement testMatch(). */ public function testMatch() { $this->assertTrue($this->object->match('test', 'pos', array('a', 'c', 'b'))); }