From 4b00ab2357afbc82127646f046e7ef45cf28114b Mon Sep 17 00:00:00 2001 From: Andriy Chaika Date: Fri, 8 Jul 2011 15:52:33 +0300 Subject: [PATCH] =?UTF-8?q?[0.4]=20=D1=83=D0=B1=D1=80=D0=B0=D0=BD=D0=B0=20?= =?UTF-8?q?=D0=B8=D0=BC=D0=BF=D0=BB=D0=B8=D0=BC=D0=B5=D0=BD=D1=82=D0=B0?= =?UTF-8?q?=D1=86=D0=B8=D1=8F=20=D0=B8=D0=BD=D1=82=D0=B5=D1=80=D1=84=D0=B5?= =?UTF-8?q?=D0=B9=D1=81=D0=B0.=20=D0=BD=D0=BE=D0=B2=D1=8B=D0=B9=20=D0=BC?= =?UTF-8?q?=D0=B5=D1=82=D0=BE=D0=B4=20=D0=B2=20NCLNameCaseWord?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Library/NCL.NameCase.ru.php | 23 +++--- Library/NCL.NameCase.ua.php | 28 +++----- Library/NCL/NCLNameCaseCore.php | 101 +++++++++++++++++++++++++-- Library/NCL/NCLNameCaseInterface.php | 58 --------------- Library/NCL/NCLNameCaseWord.php | 14 ++++ 5 files changed, 131 insertions(+), 93 deletions(-) delete mode 100644 Library/NCL/NCLNameCaseInterface.php diff --git a/Library/NCL.NameCase.ru.php b/Library/NCL.NameCase.ru.php index 110d51d..63394c6 100644 --- a/Library/NCL.NameCase.ru.php +++ b/Library/NCL.NameCase.ru.php @@ -1,9 +1,9 @@ setGender($man, $woman); } - - /** + + /** * Определение пола по правилам фамилий * @param NCLNameCaseWord $word обьект класса слов, для которого нужно определить пол */ @@ -571,8 +568,8 @@ class NCLNameCaseRu extends NCLNameCaseCore implements NCLNameCaseInterface $word->setGender($man, $woman); } - - /** + + /** * Определение пола по правилам отчеств * @param NCLNameCaseWord $word обьект класса слов, для которого нужно определить пол */ @@ -590,14 +587,14 @@ class NCLNameCaseRu extends NCLNameCaseCore implements NCLNameCaseInterface } } - /** + /** * Идетифицирует слово определяе имя это, или фамилия, или отчество * - N - имя * - S - фамилия * - F - отчество * @param NCLNameCaseWord $word обьект класса слов, который необходимо идентифицировать */ - protected function detectNamePart(NCLNameCaseWord $word) + protected function detectNamePart(NCLNameCaseWord $word) { $namepart = $word->getWord(); $this->setWorkingWord($namepart); diff --git a/Library/NCL.NameCase.ua.php b/Library/NCL.NameCase.ua.php index aa233b7..cbb8469 100644 --- a/Library/NCL.NameCase.ua.php +++ b/Library/NCL.NameCase.ua.php @@ -1,9 +1,9 @@ Визначення групи для іменників 2-ї відміни * 1 - тверда @@ -553,7 +546,6 @@ class NCLNameCaseUa extends NCLNameCaseCore implements NCLNameCaseInterface * Функція намагається застосувати ланцюг правил для чоловічих прізвищ * @return boolean true - якщо було задіяно правило з переліку, false - якщо правило не знайдено */ - protected function manSecondName() { return $this->RulesChain('man', array(5, 1, 2, 3, 4)); @@ -595,7 +587,7 @@ class NCLNameCaseUa extends NCLNameCaseCore implements NCLNameCaseInterface } return false; } - + /** * Визначення статі, за правилами імені * @param NCLNameCaseWord $word об’єкт класу зі словом, для якого необхідно визначити стать @@ -612,12 +604,12 @@ class NCLNameCaseUa extends NCLNameCaseCore implements NCLNameCaseInterface { $man+=0.9; } - - if($this->inNames($this->workingWord, 'Петро')) + + if ($this->inNames($this->workingWord, 'Петро')) { $man+=30; } - + if ($this->in($this->Last(2), array('он', 'ов', 'ав', 'ам', 'ол', 'ан', 'рд', 'мп', 'ко', 'ло'))) { $man+=0.5; @@ -650,7 +642,7 @@ class NCLNameCaseUa extends NCLNameCaseCore implements NCLNameCaseInterface $word->setGender($man, $woman); } - + /** * Визначення статі, за правилами прізвища * @param NCLNameCaseWord $word об’єкт класу зі словом, для якого необхідно визначити стать @@ -679,7 +671,7 @@ class NCLNameCaseUa extends NCLNameCaseCore implements NCLNameCaseInterface $word->setGender($man, $woman); } - + /** * Визначення статі, за правилами по-батькові * @param NCLNameCaseWord $word об’єкт класу зі словом, для якого необхідно визначити стать diff --git a/Library/NCL/NCLNameCaseCore.php b/Library/NCL/NCLNameCaseCore.php index cc27e5a..9da782c 100644 --- a/Library/NCL/NCLNameCaseCore.php +++ b/Library/NCL/NCLNameCaseCore.php @@ -14,7 +14,6 @@ if (!defined('NCL_DIR')) require_once NCL_DIR . '/NCL.php'; require_once NCL_DIR . '/NCLStr.php'; -require_once NCL_DIR . '/NCLNameCaseInterface.php'; require_once NCL_DIR . '/NCLNameCaseWord.php'; /** @@ -966,7 +965,7 @@ class NCLNameCaseCore extends NCL $this->AllWordCases(); return $this->getFormatted($caseNum, $format); } - + /** * Определяет пол человека по ФИО * @param string $fullname ФИО @@ -978,15 +977,109 @@ class NCLNameCaseCore extends NCL $this->splitFullName($fullname); return $this->genderAutoDetect(); } - + /** * Возвращает внутренний массив $this->words каждая запись имеет тип NCLNameCaseWord * @return array Массив всех слов в системе */ public function getWordsArray() { - return $this->words; + return $this->words; } + + /** + * Функция пытается применить цыпочку правил для мужских имен + * @return boolean true - если было использовано правило из списка, false - если правило не было найденым + */ + protected function manFirstName() + { + return false; + } + + /** + * Функция пытается применить цыпочку правил для женских имен + * @return boolean true - если было использовано правило из списка, false - если правило не было найденым + */ + protected function womanFirstName() + { + return false; + } + + /** + * Функция пытается применить цыпочку правил для мужских фамилий + * @return boolean true - если было использовано правило из списка, false - если правило не было найденым + */ + protected function manSecondName() + { + return false; + } + + /** + * Функция пытается применить цыпочку правил для женских фамилий + * @return boolean true - если было использовано правило из списка, false - если правило не было найденым + */ + protected function womanSecondName() + { + return false; + } + + /** + * Функция склоняет мужский отчества + * @return boolean true - если слово было успешно изменено, false - если не получилось этого сделать + */ + protected function manFatherName() + { + return false; + } + + /** + * Функция склоняет женские отчества + * @return boolean true - если слово было успешно изменено, false - если не получилось этого сделать + */ + protected function womanFatherName() + { + return false; + } + + /** + * Определение пола по правилам имен + * @param NCLNameCaseWord $word обьект класса слов, для которого нужно определить пол + */ + protected function GenderByFirstName(NCLNameCaseWord $word) + { + + } + + /** + * Определение пола по правилам фамилий + * @param NCLNameCaseWord $word обьект класса слов, для которого нужно определить пол + */ + protected function GenderBySecondName(NCLNameCaseWord $word) + { + + } + + /** + * Определение пола по правилам отчеств + * @param NCLNameCaseWord $word обьект класса слов, для которого нужно определить пол + */ + protected function GenderByFatherName(NCLNameCaseWord $word) + { + + } + + /** + * Идетифицирует слово определяе имя это, или фамилия, или отчество + * - N - имя + * - S - фамилия + * - F - отчество + * @param NCLNameCaseWord $word обьект класса слов, который необходимо идентифицировать + */ + protected function detectNamePart(NCLNameCaseWord $word) + { + + } + } ?> diff --git a/Library/NCL/NCLNameCaseInterface.php b/Library/NCL/NCLNameCaseInterface.php deleted file mode 100644 index c5ad5cf..0000000 --- a/Library/NCL/NCLNameCaseInterface.php +++ /dev/null @@ -1,58 +0,0 @@ - - * @version 0.4 - * @package NameCaseLib - */ -interface NCLNameCaseInterface -{ - - public function setFirstName($firstname=""); - - public function setSecondName($secondname=""); - - public function setFatherName($fathername=""); - - public function setGender($gender=0); - - public function setFullName($secondName="", $firstName="", $fatherName=""); - - public function setName($firstname=""); - - public function setLastName($secondname=""); - - public function setSirname($secondname=""); - - public function genderAutoDetect(); - - public function getFullNameFormat($fullname); - - public function getFirstNameCase($number=null); - - public function getSecondNameCase($number=null); - - public function getFatherNameCase($number=null); - - public function qFirstName($firstName, $CaseNumber=null, $gender=0); - - public function qSecondName($secondName, $CaseNumber=null, $gender=0); - - public function qFatherName($fatherName, $CaseNumber=null, $gender=0); - - public function getFormattedArray($format); - - public function getFormatted($caseNum=0, $format="S N F"); - - public function qFullName($secondName="", $firstName="", $fatherName="", $gender=0, $caseNum=0, $format="S N F"); - - public function q($fullname, $caseNum=null, $gender=null); -} - -?> diff --git a/Library/NCL/NCLNameCaseWord.php b/Library/NCL/NCLNameCaseWord.php index 61e5804..8005fd4 100644 --- a/Library/NCL/NCLNameCaseWord.php +++ b/Library/NCL/NCLNameCaseWord.php @@ -171,6 +171,20 @@ class NCLNameCaseWord return $this->NameCases; } + /** + * Возвращает строку с нужным падежом текущего слова + * @param int $number нужный падеж + * @return string строка с нужным падежом текущего слова + */ + public function getNameCase($number) + { + if(isset($this->NameCases[$number])) + { + return $this->NameCases[$number]; + } + return false; + } + /** * Расчитывает и возвращает пол текущего слова * @return int пол текущего слова