コード例 #1
0
ファイル: LimitChars.php プロジェクト: subtonix/aouka_lunch
 /**
  * Limite le nombre de caractères de la chaîne.
  * 
  * @param integer $iMaxLength Nombre maximal de caractères.
  * @param array $aOptions Tableau associatif qui par défaut vaut :<br/>
  * Array(
  *		LimitChars::EXACTLY => false,
  *		LimitChars::MARKER => '...',
  *		LimitChars::INCLUDE_MARKER => true
  * )<br/>
  * où LimitChars::EXACTLY définit si le texte doit exactement respecter la longueur définie $iMaxLength, même dans le cas où la césure survient après des caractères vides;
  * LimitChars::MARKER définit le marker à ajouter après la césure, le cas échéant ;
  * LimitChars::INCLUDE_MARKER définit si les caractères de LimitChars::MARKER doivent être pris en compte par $iMaxLength
  * @throws \Exception
  */
 public function __construct($iMaxLength, $aOptions = array())
 {
     if (!is_int($iMaxLength)) {
         throw ExceptionType::invalidArgument("Argument #1 doit être un entier.", Exception::FROM_HANDLER);
     }
     if (!is_array($aOptions)) {
         throw ExceptionType::invalidArgument("Argument #2 doit être un tableau.", Exception::FROM_HANDLER);
     }
     $this->_iMaxLength = $iMaxLength;
     $this->_bExactly = isset($aOptions[self::EXACTLY]) ? (bool) $aOptions[self::EXACTLY] : false;
     $this->_sTrimMarker = isset($aOptions[self::MARKER]) ? (string) $aOptions[self::MARKER] : Config::get('ellipsis');
     $this->_bIncludeTrimMarker = isset($aOptions[self::INCLUDE_MARKER]) ? (bool) $aOptions[self::INCLUDE_MARKER] : true;
 }
コード例 #2
0
ファイル: LimitWords.php プロジェクト: subtonix/aouka_lunch
 public function __construct($iMaxWords, $aOptions = array())
 {
     if (!is_int($iMaxWords)) {
         throw ExceptionType::invalidArgument("Argument #1 doit être un entier supérieur à 0.", Exception::FROM_HANDLER);
     }
     if (!is_array($aOptions)) {
         throw ExceptionType::invalidArgument("Argument #2 doit être un tableau.", Exception::FROM_HANDLER);
     }
     $this->_iMaxWords = abs($iMaxWords);
     $this->_sTrimMarker = Config::get('ellipsis');
     foreach ($aOptions as $sParam => $mValue) {
         switch ($sParam) {
             case self::LIMIT_CHARS:
                 if (!is_int($mValue) && !is_null($mValue)) {
                     throw ExceptionType::invalidArgument("Argument #2, l'élément {$sParam} doit être un entier ou null.", Exception::FROM_HANDLER);
                 }
                 $this->_iMaxChars = abs($mValue);
                 break;
             case self::WORD_ADDITIONAL_CHARS:
                 if (!is_string($mValue)) {
                     throw ExceptionType::invalidArgument("Argument #2, l'élément {$sParam} doit être une chaîne de caractères.", Exception::FROM_HANDLER);
                 }
                 $this->_sAdditionalChars = $mValue;
                 break;
             case self::INCLUDE_MARKER:
                 $this->_bIncludeTrimMarker = (bool) $mValue;
                 break;
             case self::EXACT_LIMIT_CHARS:
                 $this->_bExactLimitChars = (bool) $mValue;
                 break;
             case self::MARKER:
                 $this->_sTrimMarker = (string) $mValue;
                 break;
         }
     }
 }
コード例 #3
0
ファイル: Base.php プロジェクト: subtonix/aouka_lunch
 public static function buildFromLang($sInputLang, $sSeparator = null)
 {
     $sLang = strtolower($sInputLang);
     if (!self::isValidLang($sLang)) {
         throw ExceptionType::domain("Argument #1 n'est pas une langue valide.", Exception::FROM_LOCALE);
     }
     if ($sSeparator === null) {
         $sSeparator = Config::get('locale.default_separator');
     } else {
         if (!is_string($sSeparator) || !in_array($sSeparator, array('-', '_'))) {
             throw ExceptionType::invalidArgument("Argument #2 doit être une chaîne de caractères ayant pour valeur '-' ou '_'.", Exception::FROM_LOCALE);
         }
     }
     return $sLang . $sSeparator . self::$_aLocaleData[$sLang][0];
 }
コード例 #4
0
ファイル: String.php プロジェクト: subtonix/aouka_lunch
 /**
  * Fixe le type d'encodage à utiliser. Si l'encodage n'est pas préciser, il est détecté automatiquement.
  * 
  * @param string $sInputEncoding Nom de l'encodage à utiliser.
  * @return \Aouka\Text\String
  * @throws \InvalidArgumentException
  * @throws \Exception
  */
 public function setEncoding($sInputEncoding = null)
 {
     // Si l'encodage est renseigné
     if ($sInputEncoding !== null) {
         if (!is_string($sInputEncoding)) {
             throw ExceptionType::invalidArgument("Argument #2 doit être une chaîne de caractères ou être null.", Exception::FROM_STRING);
         }
         // On vérifie qu'il est valide
         $sEncoding = self::isValidEncoding($sInputEncoding);
         if (!$sEncoding) {
             throw ExceptionType::domain("Argument #2 : n'est pas un encodage valide. Les encodages supportés sont décrits sur http://www.php.net/manual/fr/function.mb-list-encodings.php.", Exception::FROM_STRING);
         }
         // Si l'encodage n'est pas renseigné, on tente de le détecter automatiquement si la chaîne passée en paramètre contient au moins un caractère
     } else {
         if ($this->_sString) {
             try {
                 $sEncoding = self::detectEncoding($this->_sString);
             } catch (\Exception $oException) {
                 throw ExceptionType::invalidArgument("Il faut préciser manuellement le type d'encodage pour la chaîne d'entrée.", Exception::FROM_STRING, $oException);
             }
         }
         // Si ce n'est pas le cas, on utilise l'encodage par défaut
         $sEncoding = Config::get('encoding');
     }
     $this->_sEncoding = $sEncoding;
     return $this;
 }
コード例 #5
0
ファイル: LimitRegex.php プロジェクト: subtonix/aouka_lunch
 /**
  * Initialise l'analyseur de position pour la chaîne de caractères.
  */
 protected function _initializePositionAnalyzer()
 {
     // On définit l'expression régulière
     if (Config::get('regex.automatic_utf8_modifier_addition')) {
         $this->_oRegex->addModifiers($this->_m());
     }
     // On instancie l'analyseur de position pour la chaîne de caractères
     $this->_oPositionAnalyzer = new PositionAnalyzer($this->_oString);
     // On fait une analyse de position pour l'expression régulière définie
     $this->_oPositionAnalyzer->getRegexPos($this->_oRegex);
 }