/** * Compresse une variable à X caractères à partir de son nom d'origine et s'assure de l'unicité de son utilisation * @param string $pVariableName Le nom de la variable d'origine * @param int $pTryNum Le numéro d'essais de génération */ private function _compressVariable($pVariableName, $pTryNum = 0) { if (isset($this->_assigned_variables[$pVariableName])) { return $this->_assigned_variables[$pVariableName]; } $suffix = $pTryNum === 0 ? '' : $pTryNum; $pTryNum++; //Compression du nom de la variable, ajout du numéro d'essais $result = CopixFormatter::getReduced($pVariableName, 30 - strlen($suffix)); $result .= $suffix; //On vérifie que le nom trouvé ne corresponds pas déjà à une variable existante. if (in_array($result, $this->_assigned_variables)) { return $this->_compressVariable($pVariableName, $pTryNum); } return $this->_assigned_variables[$pVariableName] = $result; }
public function testReduce() { $this->assertTrue(strlen(CopixFormatter::getReduced('une_super_longue_variable_qui_tue_tellement_elle_est_longue', 20)) <= 20); $this->assertTrue(strlen(CopixFormatter::getReduced('uneSuperLongueVariable', 20)) <= 20); $this->assertEquals(strlen(CopixFormatter::getReduced('abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz_abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz', 20)), 20); }