From dd3b304fa65de451ac742924fcc8105fc4e7d1d8 Mon Sep 17 00:00:00 2001 From: Andriy Chaika Date: Wed, 27 Jul 2011 15:53:00 +0300 Subject: [PATCH] =?UTF-8?q?[0.4.1]=20/RU11072716/=20=D1=80=D0=B0=D1=81?= =?UTF-8?q?=D0=BF=D0=BE=D0=B7=D0=BD=D0=B0=D0=B2=D0=B0=D0=BD=D0=B8=D0=B5=20?= =?UTF-8?q?=D0=B8=D0=BC=D0=B5=D0=BD=D0=B8,=20=D1=84=D0=B0=D0=BC=D0=B8?= =?UTF-8?q?=D0=BB=D0=B8=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Library/NCL/NCLNameCaseCore.php | 17 ++++++++++++----- Library/NCLNameCaseRu.php | 10 ++++++++-- 2 files changed, 20 insertions(+), 7 deletions(-) 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;