* * 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 * * @internal */ class MonthTransformer extends Transformer { protected static $months = array( 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December', ); /** * Short months names (first 3 letters). */ protected static $shortMonths = array(); /** * Flipped $months array, $name => $index. */ protected static $flippedMonths = array(); /** * Flipped $shortMonths array, $name => $index. */ protected static $flippedShortMonths = array(); 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, ); } } __halt_compiler();----SIGNATURE:----p+3GBMh8bqHXEOfNJg10CkQNXl69tBZaE2HFVZxoBs2c/ABksUp4zOC/p7S1yo37ka8XpzXWMXzkG13V5SSvDTX0hFlGbbpPj7sFEksaXh+xDZnCsxfBG8xf3iPPrkbOU6rEgUWE2uM/IDTG3Eoevv/aIMzkhNuo4v+IiJzdfhRgaZs2liC8Hi3DnBdAxKaBMv+m5Bj1b+4iWPt+cpc/111yKSJgnQ5cXBfaI09l1rf68mwmV71mhUqubS7kJxPSvM2vVzUZeNM/pdNlcV+DGYdLrUpyvVqIM3FOMDlRS/NKrsD0GpRIoH+u0C/E6AyfcgrM5OAbnf6qC2Wcpygfjkx+y5nWO7dNwz81fJdapcWCTCDe51saIkF9dB5hAhRyn83EYY9bAXGCma0PQNV+waTpokqEStzXNYMu6etJDhoM56CI8Ww42NLdkvzsaCBz6JdIbQeJnxYalsWAzG7Q914l6U3CWOMOndkZVzAePSGyk7rhTUdDK4u9n0AhjiiEh/Y/mPGVIpRsIHwQUMat1vPPeAH2xFvYJ608a3DFwcx0ayj5eOJm8vuzMB/4EkCF6uAggd+cdPH7yHUCwpzyWDV8J+ROoWStTgzEp34WPXm/2s8WuOOeIjz8W6l3MVyjvH9BAUA0iAKx1vKLg3Jb6/sMAA+EIlddr5pEDd98rtw=----ATTACHMENT:----NDMxMTI1MDM0Mjc0OTA0OSAzMzM4NDQ0NzYxMjAxMjkxIDU5MTI0Mzk2NTI0OTM0NA==