From 86c6cf30578d5efc7d12ed6b77dfab1eb64445ee Mon Sep 17 00:00:00 2001 From: Andriy Chaika Date: Tue, 12 Jul 2011 20:04:13 +0300 Subject: [PATCH] =?UTF-8?q?[0.4.1]=20/RU11071220/=20/UA11071220/=20=D0=98?= =?UTF-8?q?=D1=81=D0=BF=D1=80=D0=B0=D0=B2=D0=BB=D0=B5=D0=BD=D0=B8=D0=B5=20?= =?UTF-8?q?=D0=BF=D1=80=D0=B0=D0=B2=D0=B8=D0=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Library/NCL.NameCase.ru.php | 6 +++--- Library/NCL.NameCase.ua.php | 26 ++++++++++++++++++++------ 2 files changed, 23 insertions(+), 9 deletions(-) diff --git a/Library/NCL.NameCase.ru.php b/Library/NCL.NameCase.ru.php index 65e59ca..c9d51cd 100644 --- a/Library/NCL.NameCase.ru.php +++ b/Library/NCL.NameCase.ru.php @@ -26,7 +26,7 @@ class NCLNameCaseRu extends NCLNameCaseCore * Версия языкового файла * @var string */ - protected $languageBuild = '11071218'; + protected $languageBuild = '11071220'; /** * Количество падежей в языке @@ -642,12 +642,12 @@ class NCLNameCaseRu extends NCLNameCaseCore } //похоже на фамилию - if ($this->in($this->Last(2), array('ов', 'ин', 'ев', 'ёв', 'ый', 'ын', 'ой', 'ко', 'ук', 'як', 'ца', 'их', 'ик', 'ун', 'ок', 'ша', 'ая', 'га', 'ёк', 'аш', 'ив', 'юк', 'ус', 'це', 'ак', 'бр', 'яр', 'де', 'ых', 'уз', 'ах', 'рг', 'ец', 'юр'))) + if ($this->in($this->Last(2), array('ов', 'ин', 'ев', 'ёв', 'ый', 'ын', 'ой', 'ко', 'ук', 'як', 'ца', 'их', 'ик', 'ун', 'ок', 'ша', 'ая', 'га', 'ёк', 'аш', 'ив', 'юк', 'ус', 'це', 'ак', 'бр', 'яр', 'де', 'ых', 'уз', 'ах', 'рг', 'ец', 'юр', 'ич'))) { $second+=0.4; } - if ($this->in($this->Last(3), array('ова', 'ева', 'ёва', 'ына', 'тых', 'рик', 'вач', 'аха', 'шен', 'мей', 'арь', 'вка', 'шир', 'бан', 'тин', 'чий', 'ина', 'гай', 'кий', 'бей'))) + if ($this->in($this->Last(3), array('ова', 'ева', 'ёва', 'ына', 'тых', 'рик', 'вач', 'аха', 'шен', 'мей', 'арь', 'вка', 'шир', 'бан', 'тин', 'чий', 'ина', 'гай', 'кий', 'бей', 'чан', 'ган'))) { $second+=0.4; } diff --git a/Library/NCL.NameCase.ua.php b/Library/NCL.NameCase.ua.php index 8e59f0a..13184c9 100644 --- a/Library/NCL.NameCase.ua.php +++ b/Library/NCL.NameCase.ua.php @@ -27,7 +27,7 @@ class NCLNameCaseUa extends NCLNameCaseCore * Версия языкового файла * @var string */ - protected $languageBuild = '11071218'; + protected $languageBuild = '11071220'; /** * Количество падежей в языке * @var int @@ -81,6 +81,20 @@ class NCLNameCaseUa extends NCLNameCaseCore return $letter; } + /** + * Перевіряє чи символ є апострофом чи не є + * @param string(1) $char симпол для перевірки + * @return bool true якщо символ є апострофом + */ + private function isApostrof($char) + { + if ($this->in($char, ' ' . $this->consonant . $this->vowels)) + { + return false; + } + return true; + } + /** * Чергування українських приголосних * Чергування г к —» ж ч @@ -274,7 +288,7 @@ class NCLNameCaseUa extends NCLNameCaseCore //називному відмінку, у непрямих - о: Антона, Антонові //Чергування і -» о всередині $osLast = NCLStr::substr($osnova, -1, 1); - if ($osLast != 'й' and NCLStr::substr($osnova, -2, 1) == 'і' and !$this->in(NCLStr::substr(NCLStr::strtolower($osnova), -4, 4), array('світ', 'цвіт')) and !$this->inNames($this->workingWord, 'Гліб')) + if ($osLast != 'й' and NCLStr::substr($osnova, -2, 1) == 'і' and !$this->in(NCLStr::substr(NCLStr::strtolower($osnova), -4, 4), array('світ', 'цвіт')) and !$this->inNames($this->workingWord, 'Гліб') and !$this->in($this->Last(2), array('ік'))) { $osnova = NCLStr::substr($osnova, 0, NCLStr::strlen($osnova) - 2) . 'о' . NCLStr::substr($osnova, -1, 1); } @@ -440,7 +454,7 @@ class NCLNameCaseUa extends NCLNameCaseCore elseif ($this->Last(1) == 'я') { - if ($this->in($BeforeLast, $this->vowels)) + if ($this->in($BeforeLast, $this->vowels) or $this->isApostrof($BeforeLast)) { $this->wordForms($this->workingWord, array('ї', 'ї', 'ю', 'єю', 'ї', 'є'), 1); $this->Rule(103); @@ -519,7 +533,7 @@ class NCLNameCaseUa extends NCLNameCaseCore } //Ті що на ськ - if ($this->Last(1) == 'а' and ($this->in($this->Last(3, 2), array('ов', 'ев', 'єв', 'ив', 'ьк', 'тн', 'рн', 'ин')))) + if ($this->Last(1) == 'а' and ($this->in($this->Last(2, 1), 'чнв') or $this->in($this->Last(3, 2), array('ьк')))) { $this->wordForms($this->workingWord, array($BeforeLast . 'ої', $BeforeLast . 'ій', $BeforeLast . 'у', $BeforeLast . 'ою', $BeforeLast . 'ій', $BeforeLast . 'о'), 2); $this->Rule(302); @@ -731,12 +745,12 @@ class NCLNameCaseUa extends NCLNameCaseCore } //похоже на фамилию - if ($this->in($this->Last(2), array('ов', 'ін', 'ев', 'єв', 'ий', 'ин', 'ой', 'ко', 'ук', 'як', 'ца', 'их', 'ик', 'ун', 'ок', 'ша', 'ая', 'га', 'єк', 'аш', 'ив', 'юк', 'ус', 'це', 'ак', 'бр', 'яр', 'іл', 'ів', 'ич', 'сь', 'ей', 'нс', 'яс', 'ер', 'ай', 'ян', 'ах', 'ць', 'ющ', 'іс', 'ач', 'уб', 'ох', 'юх', 'ут', 'ча', 'ул', 'вк', 'зь', 'уц', 'їн', 'де', 'уз', 'юр' /* {endings_name2} */))) + if ($this->in($this->Last(2), array('ов', 'ін', 'ев', 'єв', 'ий', 'ин', 'ой', 'ко', 'ук', 'як', 'ца', 'их', 'ик', 'ун', 'ок', 'ша', 'ая', 'га', 'єк', 'аш', 'ив', 'юк', 'ус', 'це', 'ак', 'бр', 'яр', 'іл', 'ів', 'ич', 'сь', 'ей', 'нс', 'яс', 'ер', 'ай', 'ян', 'ах', 'ць', 'ющ', 'іс', 'ач', 'уб', 'ох', 'юх', 'ут', 'ча', 'ул', 'вк', 'зь', 'уц', 'їн', 'де', 'уз', 'юр', 'ік', 'іч' /* {endings_name2} */))) { $second+=0.4; } - if ($this->in($this->Last(3), array('ова', 'ева', 'єва', 'тих', 'рик', 'вач', 'аха', 'шен', 'мей', 'арь', 'вка', 'шир', 'бан', 'чий', 'іна', 'їна', 'ька', 'ань', 'ива', 'аль', 'ура', 'ран', 'ало', 'ола', 'кур', 'оба', 'оль', 'нта', 'зій', 'ґан', 'іло', 'шта', 'юпа', 'рна', 'бла', 'еїн', 'има', 'мар', 'кар', 'оха', 'чур', 'ниш', 'ета', 'тна', 'зур', 'нір', 'йма', 'орж', 'рба', 'іла', 'лас', 'дід', 'роз', 'аба' /* {endings_name3} */))) + if ($this->in($this->Last(3), array('ова', 'ева', 'єва', 'тих', 'рик', 'вач', 'аха', 'шен', 'мей', 'арь', 'вка', 'шир', 'бан', 'чий', 'іна', 'їна', 'ька', 'ань', 'ива', 'аль', 'ура', 'ран', 'ало', 'ола', 'кур', 'оба', 'оль', 'нта', 'зій', 'ґан', 'іло', 'шта', 'юпа', 'рна', 'бла', 'еїн', 'има', 'мар', 'кар', 'оха', 'чур', 'ниш', 'ета', 'тна', 'зур', 'нір', 'йма', 'орж', 'рба', 'іла', 'лас', 'дід', 'роз', 'аба', 'чан', 'ган' /* {endings_name3} */))) { $second+=0.4; }