| Line 645... |
Line 645... |
| 645 |
/**
|
645 |
/**
|
| 646 |
* Test #22
|
646 |
* Test #22
|
| 647 |
*/
|
647 |
*/
|
| 648 |
private function testerNomCompletInfraSpecifique() {
|
648 |
private function testerNomCompletInfraSpecifique() {
|
| 649 |
$noms_erreur = array();
|
649 |
$noms_erreur = array();
|
| - |
|
650 |
$erreur = null;
|
| 650 |
foreach ($this->noms as &$nom) {
|
651 |
foreach ($this->noms as &$nom) {
|
| 651 |
if ($nom['rang'] > $this->manuel['rang_sp']) {
|
652 |
if ($nom['rang'] > $this->manuel['rang_sp']) {
|
| 652 |
$nom_sci_ideal = $this->formaterStyleNomGenre($nom['genre']).' '.
|
653 |
$nom_sci_ideal = $this->formaterStyleNomGenre($nom['genre']).' '.
|
| 653 |
utf8_encode(strtolower(utf8_decode($nom['epithete_sp']))).' '.
|
654 |
utf8_encode(strtolower(utf8_decode($nom['epithete_sp']))).' '.
|
| 654 |
utf8_encode(strtolower(utf8_decode($nom['type_epithete']))).' ';
|
655 |
utf8_encode(strtolower(utf8_decode($nom['type_epithete']))).' ';
|
| Line 835... |
Line 836... |
| 835 |
*/
|
836 |
*/
|
| 836 |
private function testerEpitheteSpSyntaxe() {
|
837 |
private function testerEpitheteSpSyntaxe() {
|
| 837 |
$noms_erreur = array();
|
838 |
$noms_erreur = array();
|
| 838 |
foreach ($this->noms as &$nom) {
|
839 |
foreach ($this->noms as &$nom) {
|
| 839 |
if ($nom['epithete_sp'] != '') {
|
840 |
if ($nom['epithete_sp'] != '') {
|
| 840 |
$formule_hybridite = (strpos($nom, ' x ') !== false);
|
841 |
$formule_hybridite = (strpos($nom['epithete_sp'], ' x ') !== false);
|
| 841 |
$mots = explode(' ', $nom['epithete_sp']);
|
842 |
$mots = explode(' ', $nom['epithete_sp']);
|
| 842 |
foreach ($mots as $mot) {
|
843 |
foreach ($mots as $mot) {
|
| 843 |
// TODO: créer un test qui vérifie la formule d'hybridité en la reconstruisant à partir des parents
|
844 |
// TODO: créer un test qui vérifie la formule d'hybridité en la reconstruisant à partir des parents
|
| 844 |
// afin que seuls des formules valides parviennent à la fonction
|
845 |
// afin que seuls des formules valides parviennent à la fonction
|
| 845 |
// TODO: verifier que l'épithete n'est pas subsp. var. etc... (faire une liste)
|
846 |
if (!(preg_match('/^[+x]$/', $mot) || $this->verifierEpitheteSp($mot) ||
|
| 846 |
if (!(preg_match('/^[+x]$/', $mot) || $this->verifierEpitheteSp($mot) || ($formule_hybridite && verifierEpitheteGenre($mot)))) {
|
847 |
($formule_hybridite && $this->verifierEpitheteGenre($mot) && !$this->verifierEstAbbreviationInfraSp($mot)))) {
|
| 847 |
$epithete_traite = $this->repererEspace($nom['epithete_sp']);
|
848 |
$epithete_traite = $this->repererEspace($nom['epithete_sp']);
|
| 848 |
$noms_erreur[] = array($nom['num_nom'], $epithete_traite, $nom['exclure_taxref']);
|
849 |
$noms_erreur[] = array($nom['num_nom'], $epithete_traite, $nom['exclure_taxref']);
|
| 849 |
break;
|
850 |
break;
|
| 850 |
}
|
851 |
}
|
| 851 |
}
|
852 |
}
|
| Line 1628... |
Line 1629... |
| 1628 |
$ok = true;
|
1629 |
$ok = true;
|
| 1629 |
}
|
1630 |
}
|
| 1630 |
return $ok;
|
1631 |
return $ok;
|
| 1631 |
}
|
1632 |
}
|
| Line -... |
Line 1633... |
| - |
|
1633 |
|
| - |
|
1634 |
private function verifierEstAbbreviationInfraSp($mot) {
|
| - |
|
1635 |
$ok = false;
|
| - |
|
1636 |
if(preg_match($this->manuel['abbr_rangs_infra_specifique'], $mot)) {
|
| - |
|
1637 |
$ok = true;
|
| - |
|
1638 |
}
|
| - |
|
1639 |
return $ok;
|
| - |
|
1640 |
}
|
| 1632 |
|
1641 |
|
| 1633 |
private function formaterStyleNomGenre(&$genre) {
|
1642 |
private function formaterStyleNomGenre(&$genre) {
|
| 1634 |
$genre_fmt = '';
|
1643 |
$genre_fmt = '';
|
| 1635 |
if (preg_match('/^\s*([x+])\s+(.+)$/i', $genre, $match)) {
|
1644 |
if (preg_match('/^\s*([x+])\s+(.+)$/i', $genre, $match)) {
|
| 1636 |
$genre_fmt = utf8_encode(strtolower(utf8_decode($match[1]))).' '.utf8_encode(ucfirst(strtolower(utf8_decode($match[2]))));
|
1645 |
$genre_fmt = utf8_encode(strtolower(utf8_decode($match[1]))).' '.utf8_encode(ucfirst(strtolower(utf8_decode($match[2]))));
|