+ Initial commit

This commit is contained in:
Alexander Kiryuhin 2014-02-14 00:17:43 +04:00
commit ea9ef1c67b
8 changed files with 338 additions and 0 deletions

View file

@ -0,0 +1,20 @@
<?php
namespace nxp\RutilsBundle\DependencyInjection;
use Symfony\Component\Config\Definition\Builder\TreeBuilder;
use Symfony\Component\Config\Definition\ConfigurationInterface;
class Configuration implements ConfigurationInterface
{
/**
* {@inheritDoc}
*/
public function getConfigTreeBuilder()
{
$treeBuilder = new TreeBuilder();
$rootNode = $treeBuilder->root('rutils');
return $treeBuilder;
}
}

View file

@ -0,0 +1,28 @@
<?php
namespace nxp\RutilsBundle\DependencyInjection;
use Symfony\Component\DependencyInjection\ContainerBuilder;
use Symfony\Component\Config\FileLocator;
use Symfony\Component\HttpKernel\DependencyInjection\Extension;
use Symfony\Component\DependencyInjection\Loader;
/**
* This is the class that loads and manages your bundle configuration
*
* To learn more see {@link http://symfony.com/doc/current/cookbook/bundles/extension.html}
*/
class nxpRutilsExtension extends Extension
{
/**
* {@inheritDoc}
*/
public function load(array $configs, ContainerBuilder $container)
{
$configuration = new Configuration();
$config = $this->processConfiguration($configuration, $configs);
$loader = new Loader\YamlFileLoader($container, new FileLocator(__DIR__.'/../Resources/config'));
$loader->load('services.yml');
}
}

43
README.md Normal file
View file

@ -0,0 +1,43 @@
Rutils Symfony 2 Bundle
=======================
Простой бандл для Symfony 2 содержащий в себе расширение для Twig, позволяющее использовать функции из библиотеки [RUtils](RUtils: https://github.com/Andre-487/php_rutils/) в шаблонах.
Допускается как вызов в стиле функций:
{{ getPlural(10, ['гвоздь', 'гвоздя', 'гвоздей']) }}
так и в стиле фильтров:
{{ 10 | getPlural(['гвоздь', 'гвоздя', 'гвоздей']) }}
поддерживаются все методы библиотеки:
Числительные:
getInWords\2 - вывод числа прописью
getInWordsInt\2 - вывод числа прописью
getInWordsFloat\2 - вывод числа прописью
getPlural\3 - выбор формы множественного числа и вывод вместе с числом
choosePlural\2 - выбор только формы множественного числа
sumString\3 - выбор формы и вывод прописью
getRubles\2 - вывод суммы денег в рублях
Даты:
ruStrFTime\6 - вывод даты строкой
distanceOfTimeInWords\3 - временной период
getAge\1 - возраст
Транслитерация:
translify\1 - транслитерация
detranslify\1 - обратное преобразование
slugify\1 - подготовка для использования в URL'ях или путях
Типографика:
typography\2
TODO:
* написать нормальную документацию

View file

@ -0,0 +1,5 @@
services:
nxp.twig.rutils_extension:
class: nxp\RutilsBundle\Twig\RutilsExtension
tags:
- { name: twig.extension }

41
Resources/doc/index.rst Normal file
View file

@ -0,0 +1,41 @@
Rutils Symfony 2 Bundle
=======================
Простой бандл для Symfony 2 содержащий в себе расширение для Twig, позволяющее использовать функции из библиотеки RUtils_ в шаблонах.
Допускается как вызов в стиле функций::
{{ getPlural(10, ['гвоздь', 'гвоздя', 'гвоздей']) }}
так и в стиле фильтров::
{{ 10 | getPlural(['гвоздь', 'гвоздя', 'гвоздей']) }}
Поддерживаются все методы библиотеки:
Числительные::
getInWords\2 - вывод числа прописью
getInWordsInt\2 - вывод числа прописью
getInWordsFloat\2 - вывод числа прописью
getPlural\3 - выбор формы множественного числа и вывод вместе с числом
choosePlural\2 - выбор только формы множественного числа
sumString\3 - выбор формы и вывод прописью
getRubles\2 - вывод суммы денег в рублях
Даты::
ruStrFTime\6 - вывод даты строкой
distanceOfTimeInWords\3 - временной период
getAge\1 - возраст
Транслитерация::
translify\1 - транслитерация
detranslify\1 - обратное преобразование
slugify\1 - подготовка для использования в URL'ях или путях
Типографика::
typography\2
TODO::
написать нормальную документацию
.. _RUtils: https://github.com/Andre-487/php_rutils/

170
Twig/RutilsExtension.php Normal file
View file

@ -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';
}
}

22
composer.json Normal file
View file

@ -0,0 +1,22 @@
{
"name": "nxp/rutils-bundle",
"description": "Rutils Symfony 2 bundle",
"minimum-stability": "stable",
"keywords": ["russian", "numbers to text"],
"homepage": "http://github.com/NeonXP/RutilsBundle",
"license": "GPLv3",
"authors": [
{
"name": "Alexander 'NeonXP' Kiryukhin",
"email": "frei@neonxp.info"
}
],
"autoload": {
"psr-0": {"NXP\\RutilsBundle": ""}
},
"require": {
"php": ">=5.4.0",
"symfony/framework-bundle": "~2.2",
"andre_487/php_rutils": "1.1.1"
}
}

9
nxpRutilsBundle.php Normal file
View file

@ -0,0 +1,9 @@
<?php
namespace nxp\RutilsBundle;
use Symfony\Component\HttpKernel\Bundle\Bundle;
class nxpRutilsBundle extends Bundle
{
}