Source of file MonthTransformer.php
Size: 3,333 Bytes - Last Modified: 2013-07-17T08:22:21+02:00
/home/theseer/Downloads/Symfony/vendor/symfony/symfony/src/Symfony/Component/Intl/DateFormatter/DateFormat/MonthTransformer.php
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144 | <?php /* * This file is part of the Symfony package. * * (c) Fabien Potencier <fabien@symfony.com> * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Symfony\Component\Intl\DateFormatter\DateFormat; /** * Parser and formatter for month format * * @author Igor Wiedler <igor@wiedler.ch> */ class MonthTransformer extends Transformer { /** * @var array */ protected static $months = array( 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December' ); /** * Short months names (first 3 letters) * @var array */ protected static $shortMonths = array(); /** * Flipped $months array, $name => $index * @var array */ protected static $flippedMonths = array(); /** * Flipped $shortMonths array, $name => $index * @var array */ protected static $flippedShortMonths = array(); /** * Constructor */ public function __construct() { if (0 === count(self::$shortMonths)) { self::$shortMonths = array_map(function($month) { return substr($month, 0, 3); }, self::$months); self::$flippedMonths = array_flip(self::$months); self::$flippedShortMonths = array_flip(self::$shortMonths); } } /** * {@inheritDoc} */ public function format(\DateTime $dateTime, $length) { $matchLengthMap = array( 1 => 'n', 2 => 'm', 3 => 'M', 4 => 'F', ); if (isset($matchLengthMap[$length])) { return $dateTime->format($matchLengthMap[$length]); } if (5 === $length) { return substr($dateTime->format('M'), 0, 1); } return $this->padLeft($dateTime->format('m'), $length); } /** * {@inheritDoc} */ public function getReverseMatchingRegExp($length) { switch ($length) { case 1: $regExp = '\d{1,2}'; break; case 3: $regExp = implode('|', self::$shortMonths); break; case 4: $regExp = implode('|', self::$months); break; case 5: $regExp = '[JFMASOND]'; break; default: $regExp = '\d{'.$length.'}'; break; } return $regExp; } /** * {@inheritDoc} */ public function extractDateOptions($matched, $length) { if (!is_numeric($matched)) { if (3 === $length) { $matched = self::$flippedShortMonths[$matched] + 1; } elseif (4 === $length) { $matched = self::$flippedMonths[$matched] + 1; } elseif (5 === $length) { // IntlDateFormatter::parse() always returns false for MMMMM or LLLLL $matched = false; } } else { $matched = (int) $matched; } return array( 'month' => $matched, ); } } |