diff options
author | Alexander Kiryuhin <frei@neonxp.info> | 2014-02-14 01:11:17 +0400 |
---|---|---|
committer | Alexander Kiryuhin <frei@neonxp.info> | 2014-02-14 01:11:17 +0400 |
commit | 99f34d74e5a89fe4775e474df39acfe57a3fb101 (patch) | |
tree | 030cddf887b3b1a9db04f9e27c459dd74c0775d5 /src/NXP/RutilsBundle/Twig | |
parent | 9dd98088be75efec385c2b7290ba4572990a2c0d (diff) |
~Fix autoloader again
Diffstat (limited to 'src/NXP/RutilsBundle/Twig')
-rw-r--r-- | src/NXP/RutilsBundle/Twig/RutilsExtension.php | 170 |
1 files changed, 170 insertions, 0 deletions
diff --git a/src/NXP/RutilsBundle/Twig/RutilsExtension.php b/src/NXP/RutilsBundle/Twig/RutilsExtension.php new file mode 100644 index 0000000..d4cf8c2 --- /dev/null +++ b/src/NXP/RutilsBundle/Twig/RutilsExtension.php @@ -0,0 +1,170 @@ +<?php +/** + * @author Alexander NeonXP Kiryukhin <frei@neonxp.info> + */ + +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 |