diff --git a/Library/NCL/NCLNameCaseCore.php b/Library/NCL/NCLNameCaseCore.php index 3413a34..56666a1 100644 --- a/Library/NCL/NCLNameCaseCore.php +++ b/Library/NCL/NCLNameCaseCore.php @@ -28,18 +28,17 @@ require_once NCL_DIR . '/NCLNameCaseWord.php'; */ class NCLNameCaseCore extends NCL { + /** * Версия библиотеки * @var string */ protected $version = '0.4.1'; - /** * Версия языкового файла * @var string */ protected $languageBuild = '0'; - /** * Готовность системы: * - Все слова идентифицированы (известо к какой части ФИО относится слово) @@ -144,6 +143,14 @@ class NCLNameCaseCore extends NCL $this->workindLastCache = array(); } + /** + * Если не нужно склонять слово, делает результат таким же как и именительный падеж + */ + protected function makeResultTheSame() + { + $this->lastResult = array_fill(0, $this->CaseCount, $this->workingWord); + } + /** * Если $stopAfter = 0, тогда вырезает $length последних букв с текущего слова ($this->workingWord) * Если нет, тогда вырезает $stopAfter букв начиная от $length с конца @@ -989,7 +996,7 @@ class NCLNameCaseCore extends NCL { $this->setGender($gender); } - + return $this->getFormatted($caseNum, $format); } @@ -1106,7 +1113,7 @@ class NCLNameCaseCore extends NCL { } - + /** * Возвращает версию библиотеки * @return string версия библиотеки @@ -1115,7 +1122,7 @@ class NCLNameCaseCore extends NCL { return $this->version; } - + /** * Возвращает версию использованого языкового файла * @return string версия языкового файла diff --git a/Library/NCLNameCaseRu.php b/Library/NCLNameCaseRu.php index e53d2fb..ccd7d4f 100644 --- a/Library/NCLNameCaseRu.php +++ b/Library/NCLNameCaseRu.php @@ -220,12 +220,18 @@ class NCLNameCaseRu extends NCLNameCaseCore $this->Rule(403); return true; } - else + elseif(!$this->in($this->Last(2, 1), $this->vowels)) { $this->wordForms($this->workingWord, array('ого', 'ому', 'ого', 'им', 'ом'), 2); $this->Rule(404); return true; } + else + { + $this->makeResultTheSame(); + $this->Rule(405); + return true; + } } return false; } @@ -341,7 +347,7 @@ class NCLNameCaseRu extends NCLNameCaseCore if ($this->in($this->Last(3), $this->ovo) or $this->in($this->Last(2), $this->ih)) { $this->Rule(8); - $this->lastResult = array_fill(0, $this->CaseCount, $this->workingWord); + $this->makeResultTheSame(); return true; } return false;