From ea9ef1c67bef81cdffde7466b55f2e2cf5c6303b Mon Sep 17 00:00:00 2001 From: Alexander Kiryuhin Date: Fri, 14 Feb 2014 00:17:43 +0400 Subject: + Initial commit --- Twig/RutilsExtension.php | 170 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 170 insertions(+) create mode 100644 Twig/RutilsExtension.php (limited to 'Twig') diff --git a/Twig/RutilsExtension.php b/Twig/RutilsExtension.php new file mode 100644 index 0000000..d4cf8c2 --- /dev/null +++ b/Twig/RutilsExtension.php @@ -0,0 +1,170 @@ + + */ + +namespace nxp\RutilsBundle\Twig; + +use php_rutils\RUtils; +use php_rutils\struct\TimeParams; + +class RutilsExtension extends \Twig_Extension +{ + public function getFilters() + { + $numeral = RUtils::numeral(); + $date = RUtils::dt(); + $translit = RUtils::translit(); + $typography = RUtils::typo(); + return [ + new \Twig_SimpleFilter('getInWords', function ($amount, $gender = RUtils::MALE) use ($numeral) { + return $numeral->getInWords($amount, $gender); + }), + new \Twig_SimpleFilter('getInWordsInt', function ($amount, $gender = RUtils::MALE) use ($numeral) { + return $numeral->getInWordsInt($amount, $gender); + }), + new \Twig_SimpleFilter('getInWordsFloat', function ($amount, $gender = RUtils::MALE) use ($numeral) { + return $numeral->getInWordsFloat($amount, $gender); + }), + new \Twig_SimpleFilter('getPlural', function ($amount, array $variants, $absence = null) use ($numeral) { + return $numeral->getPlural($amount, $variants, $absence); + }), + new \Twig_SimpleFilter('choosePlural', function ($amount, array $variants) use ($numeral) { + return $numeral->choosePlural($amount, $variants); + }), + new \Twig_SimpleFilter('sumString', function ($amount, $gender, array $variants = null) use ($numeral) { + return $numeral->sumString($amount, $gender, $variants); + }), + new \Twig_SimpleFilter('getRubles', function ($amount, $zeroForKopeck = false) use ($numeral) { + return $numeral->getRubles($amount, $zeroForKopeck); + }), + new \Twig_SimpleFilter('ruStrFTime', function ( + \DateTime $dateTime, + $format = 'd F Y', + $monthInflected = false, + $dayInflected = false, + $preposition = false, + $timezone = null + ) use ($date) { + $params = TimeParams::create( + [ + 'date' => $dateTime, + 'format' => $format, + 'monthInflected' => $monthInflected, + 'dayInflected' => $dayInflected, + 'preposition' => $preposition, + 'timezone' => $timezone + ] + ); + return $date->ruStrFTime($params); + }), + new \Twig_SimpleFilter('distanceOfTimeInWords', function ( + $toTime, + $fromTime = null, + $accuracy = RUtils::ACCURACY_YEAR + ) use ($date) { + return $date->distanceOfTimeInWords($toTime, $fromTime, $accuracy); + }), + new \Twig_SimpleFilter('getAge', function ($birthDate) use ($date) { + return $date->getAge($birthDate); + }), + new \Twig_SimpleFilter('translify', function ($inString) use ($translit) { + return $translit->translify($inString); + }), + new \Twig_SimpleFilter('detranslify', function ($inString) use ($translit) { + return $translit->detranslify($inString); + }), + new \Twig_SimpleFilter('slugify', function ($inString) use ($translit) { + return $translit->slugify($inString); + }), + new \Twig_SimpleFilter('typography', function ($text, array $rules = null) use ($typography) { + return $typography->typography($text, $rules); + }) + ]; + } + + + public function getFunctions() + { + $numeral = RUtils::numeral(); + $date = RUtils::dt(); + $translit = RUtils::translit(); + $typography = RUtils::typo(); + return [ + new \Twig_SimpleFunction('getInWords', function ($amount, $gender = RUtils::MALE) use ($numeral) { + return $numeral->getInWords($amount, $gender); + }), + new \Twig_SimpleFunction('getInWordsInt', function ($amount, $gender = RUtils::MALE) use ($numeral) { + return $numeral->getInWordsInt($amount, $gender); + }), + new \Twig_SimpleFunction('getInWordsFloat', function ($amount, $gender = RUtils::MALE) use ($numeral) { + return $numeral->getInWordsFloat($amount, $gender); + }), + new \Twig_SimpleFunction('getPlural', function ($amount, array $variants, $absence = null) use ($numeral) { + return $numeral->getPlural($amount, $variants, $absence); + }), + new \Twig_SimpleFunction('choosePlural', function ($amount, array $variants) use ($numeral) { + return $numeral->choosePlural($amount, $variants); + }), + new \Twig_SimpleFunction('sumString', function ($amount, $gender, array $variants = null) use ($numeral) { + return $numeral->sumString($amount, $gender, $variants); + }), + new \Twig_SimpleFunction('getRubles', function ($amount, $zeroForKopeck = false) use ($numeral) { + return $numeral->getRubles($amount, $zeroForKopeck); + }), + new \Twig_SimpleFunction('ruStrFTime', function ( + \DateTime $dateTime, + $format = 'd F Y', + $monthInflected = false, + $dayInflected = false, + $preposition = false, + $timezone = null + ) use ($date) { + $params = TimeParams::create( + [ + 'date' => $dateTime, + 'format' => $format, + 'monthInflected' => $monthInflected, + 'dayInflected' => $dayInflected, + 'preposition' => $preposition, + 'timezone' => $timezone + ] + ); + return $date->ruStrFTime($params); + }), + new \Twig_SimpleFunction('distanceOfTimeInWords', function ( + $toTime, + $fromTime = null, + $accuracy = RUtils::ACCURACY_YEAR + ) use ($date) { + return $date->distanceOfTimeInWords($toTime, $fromTime, $accuracy); + }), + new \Twig_SimpleFunction('getAge', function ($birthDate) use ($date) { + return $date->getAge($birthDate); + }), + new \Twig_SimpleFunction('translify', function ($inString) use ($translit) { + return $translit->translify($inString); + }), + new \Twig_SimpleFunction('detranslify', function ($inString) use ($translit) { + return $translit->detranslify($inString); + }), + new \Twig_SimpleFunction('slugify', function ($inString) use ($translit) { + return $translit->slugify($inString); + }), + new \Twig_SimpleFunction('typography', function ($text, array $rules = null) use ($typography) { + return $typography->typography($text, $rules); + }) + ]; + } + + /** + * Returns the name of the extension. + * + * @return string The extension name + */ + public function getName() + { + return 'rutils_extension'; + } + +} \ No newline at end of file -- cgit v1.2.3