[0.4.1] /RU11072716/ распознавание имени, фамилии

This commit is contained in:
Andriy Chaika 2011-07-27 15:53:00 +03:00
parent 3a2d34feae
commit dd3b304fa6
2 changed files with 20 additions and 7 deletions

View File

@ -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);
}
/**
* Если <var>$stopAfter</var> = 0, тогда вырезает $length последних букв с текущего слова (<var>$this->workingWord</var>)
* Если нет, тогда вырезает <var>$stopAfter</var> букв начиная от <var>$length</var> с конца
@ -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 версия языкового файла

View File

@ -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;