From a7ea2f57e0f0bcb3695749b86674c2d946c05042 Mon Sep 17 00:00:00 2001 From: RA Date: Wed, 26 Aug 2015 14:38:28 +0300 Subject: [PATCH] =?UTF-8?q?fix=20name=5Fcase=20=D0=A2=D1=83=D0=BB=D1=83?= =?UTF-8?q?=D0=B7-=D0=9B=D0=BE=D1=82=D1=80=D0=B5=D0=BA=20fix=20=D0=A4?= =?UTF-8?q?=D1=80=D1=8D=D0=BD=D0=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Library/NCL/NCLNameCaseCore.php | 15 ++++++++++++--- Library/NCLNameCaseRu.php | 4 ++-- 2 files changed, 14 insertions(+), 5 deletions(-) diff --git a/Library/NCL/NCLNameCaseCore.php b/Library/NCL/NCLNameCaseCore.php index 3334305..3580548 100644 --- a/Library/NCL/NCLNameCaseCore.php +++ b/Library/NCL/NCLNameCaseCore.php @@ -612,13 +612,22 @@ class NCLNameCaseCore extends NCL $cnt=count($cur_words); foreach ($cur_words as $k=>$cur_word){ $is_norm_rules=true; + $o_ncw=new NCLNameCaseWord($cur_word); if ( $name_part_letter=='S' && $cnt>1 && $k<$cnt-1 ){ //если первая часть фамилии тоже фамилия, то склоняем по общим правилам //иначе не склоняется - $o_nc = new NCLNameCaseRu(); - $o_nc->detectNamePart( $o_ncw ); - $is_norm_rules=( $o_ncw->getNamePart()==$name_part_letter ); + + $exclusion=array('тулуз');//исключения + $cur_word_=mb_strtolower($cur_word); + if ( !in_array($cur_word_, $exclusion ) ){ + $o_nc = new NCLNameCaseRu(); + $o_nc->detectNamePart( $o_ncw ); + $is_norm_rules=( $o_ncw->getNamePart()=='S' ); + } + else { + $is_norm_rules=false; + } } $this->setWorkingWord($cur_word); diff --git a/Library/NCLNameCaseRu.php b/Library/NCLNameCaseRu.php index 7585a1d..9e255a6 100644 --- a/Library/NCLNameCaseRu.php +++ b/Library/NCLNameCaseRu.php @@ -270,7 +270,7 @@ class NCLNameCaseRu extends NCLNameCaseCore $this->Rule(501); return true; } - if ($this->Last(2, 1) == 'е') + if ($this->Last(2, 1) == 'е' && !in_array($this->Last(3, 1), array('р')))//Лотрек { $this->wordForms($this->workingWord, array('ька', 'ьку', 'ька', 'ьком', 'ьке'), 2); $this->Rule(502); @@ -821,7 +821,7 @@ class NCLNameCaseRu extends NCLNameCaseCore //Исключения if ($this->inNames($namepart, array('Лев', 'Яков', 'Вова', 'Маша', 'Ольга', 'Еремей', 'Исак', 'Исаак', 'Ева', 'Ирина', 'Элькин', 'Мерлин', 'Макс', 'Алекс', 'Франц', 'Питер', 'Пауль', 'Вильям', 'Уильям', - 'Альфонс', 'Ганс', 'Франс', 'Мариа'/*Альфонс Мариа Муха*/, 'Филиппо', 'Андреа', 'Корнелис', + 'Альфонс', 'Ганс', 'Франс', 'Мариа'/*Альфонс Мариа Муха*/, 'Филиппо', 'Андреа', 'Корнелис', 'Фрэнк', 'Бриджет', 'Элизабет', 'Маргарет', 'Джанет'/*женские иностранные*/))) { $first+=10;