public function getConjugationTable() { $aFormatedRule = array(); $sFeatureTense = Config::get('jsreal.feature.tense.alias'); $sFeaturePerson = Config::get('jsreal.feature.person.alias'); $sFeatureNumber = Config::get('jsreal.feature.number.alias'); $sFeatureNumberPlural = Config::get('jsreal.feature.number.plural'); $aAutocompletedTense = array(); foreach ($this->aRawRuleList as $aRawRule) { $sTableId = $aRawRule[0]; $sEnding = $aRawRule[1]; $aConjugationList = array(); for ($i = 2, $iLength1 = count($aRawRule); $i < $iLength1; $i++) { $sConjugation = $aRawRule[$i][$j = 0]; $aInformation = array(); for ($j = 1, $iLength2 = count($aRawRule[$i]); $j < $iLength2; $j++) { $aInformation[$this->oDmConverter->getClassName($aRawRule[$i][$j])] = $this->oDmConverter->getProperName($aRawRule[$i][$j]); } if (isset($aInformation[$sFeatureTense])) { if (isset($aInformation[$sFeaturePerson]) && !empty($aInformation[$sFeaturePerson])) { if (empty($aConjugationList[$aInformation[$sFeatureTense]])) { $aConjugationList[$aInformation[$sFeatureTense]] = array('', '', '', '', '', ''); // $aConjugationList[$aInformation[$sFeatureTense]] = // array($sEnding, $sEnding, $sEnding, $sEnding, $sEnding, $sEnding, ); $aAutocompletedTense[] = $aInformation[$sFeatureTense]; } if (isset($aInformation[$sFeatureNumber]) && !empty($aInformation[$sFeatureNumber])) { $iPosition = $aInformation[$sFeatureNumber] === $sFeatureNumberPlural ? $aInformation[$sFeaturePerson] + 3 : $aInformation[$sFeaturePerson]; if (empty($aConjugationList[$aInformation[$sFeatureTense]][$iPosition - 1])) { $aConjugationList[$aInformation[$sFeatureTense]][$iPosition - 1] = $sConjugation; } } else { if (empty($aConjugationList[$aInformation[$sFeatureTense]][$aInformation[$sFeaturePerson] + 3 - 1])) { $aConjugationList[$aInformation[$sFeatureTense]][$aInformation[$sFeaturePerson] + 3 - 1] = $sConjugation; } if (empty($aConjugationList[$aInformation[$sFeatureTense]][$aInformation[$sFeaturePerson] - 1])) { $aConjugationList[$aInformation[$sFeatureTense]][$aInformation[$sFeaturePerson] - 1] = $sConjugation; } } } else { if (!isset($aConjugationList[$aInformation[$sFeatureTense]])) { $aConjugationList[$aInformation[$sFeatureTense]] = $sConjugation; } } } } // Pour compléter avec les terminaisons régulières foreach ($aConjugationList as $sTense => $aTenseConjugation) { if (Arr::isValid($aTenseConjugation) && Arr::in($aAutocompletedTense, $sTense)) { foreach ($aTenseConjugation as $iIndex => $sCurrentConjugation) { if (empty($sCurrentConjugation)) { $aConjugationList[$sTense][$iIndex] = $sEnding; } } } } $aFormatedRule[$sTableId] = array('ending' => $sEnding, $sFeatureTense => $aConjugationList); } return $aFormatedRule; }
protected function addTableIdToVerb(array &$aVerbList, array &$aLexicon) { foreach ($aLexicon as $sUnit => $aInfoList) { if (isset($aLexicon[$sUnit]['V']) && isset($aVerbList[$sUnit])) { // en/fr formats support $uVerbInfo = $aVerbList[$sUnit]; $aLexicon[$sUnit]['V']['tab'] = Arr::isValid($uVerbInfo) ? $uVerbInfo['tab'][0] : $uVerbInfo; } } }