Example #1
0
 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;
 }
Example #2
0
 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;
         }
     }
 }