/** * @dataProvider getDiffTestData() */ public function testDiffCanReturnTranslatableString($expected, $translated, $date, $now) { $translator = $this->getMock('Symfony\\Component\\Translation\\TranslatorInterface'); $translator->expects($this->once())->method('transChoice')->with($translated); $extension = new Twig_Extensions_Extension_Date($translator); $extension->diff($this->env, $date, $now); }
/** * Add Twig extensions * * @see Text extensions http://twig.sensiolabs.org/doc/extensions/text.html * @see Intl extensions http://twig.sensiolabs.org/doc/extensions/intl.html * @see Array extension http://twig.sensiolabs.org/doc/extensions/array.html * @see Time extension http://twig.sensiolabs.org/doc/extensions/date.html * * @return array */ public function registerMarkupTags() { $twig = App::make('twig.environment'); $filters = []; // add Text extensions $textExtension = new \Twig_Extensions_Extension_Text(); $textFilters = $textExtension->getFilters(); $filters += ['truncate' => function ($value, $length = 30, $preserve = false, $separator = '...') use($twig, $textFilters) { $callable = $textFilters['0']->getCallable(); return $callable($twig, $value, $length, $preserve, $separator); }, 'wordwrap' => function ($value, $length = 80, $separator = "\n", $preserve = false) use($twig, $textFilters) { $callable = $textFilters['1']->getCallable(); return $callable($twig, $value, $length, $separator, $preserve); }]; // add Intl extensions if php5-intl installed if (class_exists('IntlDateFormatter')) { $intlExtension = new \Twig_Extensions_Extension_Intl(); $intlFilters = $intlExtension->getFilters(); $filters += ['localizeddate' => function ($date, $dateFormat = 'medium', $timeFormat = 'medium', $locale = null, $timezone = null, $format = null) use($twig, $intlFilters) { $callable = $intlFilters['0']->getCallable(); return $callable($twig, $date, $dateFormat, $timeFormat, $locale, $timezone, $format); }, 'localizednumber' => function ($number, $style = 'decimal', $type = 'default', $locale = null) use($twig, $intlFilters) { $callable = $intlFilters['1']->getCallable(); return $callable($twig, $number, $style, $type, $locale); }, 'localizedcurrency' => function ($number, $currency = null, $locale = null) use($twig, $intlFilters) { $callable = $intlFilters['2']->getCallable(); return $callable($twig, $number, $currency, $locale); }]; } // add Array extensions $arrayExtension = new \Twig_Extensions_Extension_Array(); $arrayFilters = $arrayExtension->getFilters(); $filters += ['shuffle' => function ($array) use($twig, $arrayFilters) { $callable = $arrayFilters['0']->getCallable(); return $callable($twig, $array); }]; // add Time extensions $timeExtension = new \Twig_Extensions_Extension_Date(); $timeFilters = $timeExtension->getFilters(); $filters += ['time_diff' => function ($date, $now = null) use($twig, $timeFilters) { $callable = $timeFilters['0']->getCallable(); return $callable($twig, $date, $now); }]; // add PHP functions $filters += ['strftime' => function ($time, $format = '%d.%m.%Y %H:%M:%S') { $timeObj = new Carbon($time); return strftime($format, $timeObj->getTimestamp()); }, 'uppercase' => function ($string) { return strtoupper($string); }, 'lowercase' => function ($string) { return strtolower($string); }, 'ucfirst' => function ($string) { return ucfirst($string); }, 'lcfirst' => function ($string) { return lcfirst($string); }, 'ltrim' => function ($string, $charlist = " \t\n\r\v") { return ltrim($string, $charlist); }, 'rtrim' => function ($string, $charlist = " \t\n\r\v") { return rtrim($string, $charlist); }, 'str_repeat' => function ($string, $multiplier = 1) { return str_repeat($string, $multiplier); }, 'plural' => function ($string, $count = 2) { return str_plural($string, $count); }]; return ['filters' => $filters]; }