[0.4] убрана имплиментация интерфейса. новый метод в NCLNameCaseWord

This commit is contained in:
Andriy Chaika 2011-07-08 15:52:33 +03:00
parent f1cf5f090b
commit 4b00ab2357
5 changed files with 131 additions and 93 deletions

View File

@ -1,9 +1,9 @@
<?php
/**
* @license Dual licensed under the MIT or GPL Version 2 licenses.
* @package NameCaseLib
*/
/**
*
*/
@ -20,32 +20,29 @@ require_once dirname(__FILE__) . '/NCL/NCLNameCaseCore.php';
* @version 0.4
* @package NameCaseLib
*/
class NCLNameCaseRu extends NCLNameCaseCore implements NCLNameCaseInterface
class NCLNameCaseRu extends NCLNameCaseCore
{
/**
* Количество падежей в языке
* @var int
*/
protected $CaseCount = 6;
/**
* Список гласных русского языка
* @var string
*/
private $vowels = "аеёиоуыэюя";
/**
* Список согласных русского языка
* @var string
*/
private $consonant = "бвгджзйклмнпрстфхцчшщ";
/**
* Окончания имен/фамилий, который не склоняются
* @var array
*/
private $ovo = array('ово', 'аго', 'яго', 'ирь');
/**
* Окончания имен/фамилий, который не склоняются
* @var array
@ -475,7 +472,7 @@ class NCLNameCaseRu extends NCLNameCaseCore implements NCLNameCaseInterface
}
return false;
}
/**
* Определение пола по правилам имен
* @param NCLNameCaseWord $word обьект класса слов, для которого нужно определить пол
@ -542,8 +539,8 @@ class NCLNameCaseRu extends NCLNameCaseCore implements NCLNameCaseInterface
$word->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
}
}
/**
/**
* Идетифицирует слово определяе имя это, или фамилия, или отчество
* - <b>N</b> - имя
* - <b>S</b> - фамилия
* - <b>F</b> - отчество
* @param NCLNameCaseWord $word обьект класса слов, который необходимо идентифицировать
*/
protected function detectNamePart(NCLNameCaseWord $word)
protected function detectNamePart(NCLNameCaseWord $word)
{
$namepart = $word->getWord();
$this->setWorkingWord($namepart);

View File

@ -1,9 +1,9 @@
<?php
/**
* @license Dual licensed under the MIT or GPL Version 2 licenses.
* @package NameCaseLib
*/
/**
*
*/
@ -20,7 +20,7 @@ require_once dirname(__FILE__) . '/NCL/NCLNameCaseCore.php';
* @version 0.4
* @package NameCaseLib
*/
class NCLNameCaseUa extends NCLNameCaseCore implements NCLNameCaseInterface
class NCLNameCaseUa extends NCLNameCaseCore
{
/**
@ -28,44 +28,37 @@ class NCLNameCaseUa extends NCLNameCaseCore implements NCLNameCaseInterface
* @var int
*/
protected $CaseCount = 7;
/**
* Список гласных украинского языка
* @var string
*/
private $vowels = 'аеиоуіїєюя';
/**
* Список согласных украинского языка
* @var string
*/
private $consonant = "бвгджзйклмнпрстфхцчшщ";
/**
* Українські шиплячі приголосні
* @var string
*/
private $shyplyachi = "жчшщ";
/**
* Українські нешиплячі приголосні
* @var string
*/
private $neshyplyachi = "бвгдзклмнпрстфхц";
/**
* Українські завжди м’які звуки
* @var string
*/
private $myaki = 'ьюяєї';
/**
* Українські губні звуки
* @var string
*/
private $gubni = 'мвпбф';
/**
* Чергування українських приголосних
* Чергування г к х —» з ц с
@ -82,7 +75,7 @@ class NCLNameCaseUa extends NCLNameCaseCore implements NCLNameCaseInterface
}
return $letter;
}
/**
* Чергування українських приголосних
* Чергування г к —» ж ч
@ -98,7 +91,7 @@ class NCLNameCaseUa extends NCLNameCaseCore implements NCLNameCaseInterface
}
return $letter;
}
/**
* <b>Визначення групи для іменників 2-ї відміни</b>
* 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 об’єкт класу зі словом, для якого необхідно визначити стать

View File

@ -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)
{
}
/**
* Идетифицирует слово определяе имя это, или фамилия, или отчество
* - <b>N</b> - имя
* - <b>S</b> - фамилия
* - <b>F</b> - отчество
* @param NCLNameCaseWord $word обьект класса слов, который необходимо идентифицировать
*/
protected function detectNamePart(NCLNameCaseWord $word)
{
}
}
?>

View File

@ -1,58 +0,0 @@
<?php
/**
* @license Dual licensed under the MIT or GPL Version 2 licenses.
* @package NameCaseLib
*/
/**
* Интерфейс для русского и украинского языка
*
* @author Андрей Чайка <bymer3@gmail.com>
* @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);
}
?>

View File

@ -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 пол текущего слова