aboutsummaryrefslogtreecommitdiff
path: root/srcs/phpmyadmin/vendor/twig/extensions
diff options
context:
space:
mode:
authorCharles <sircharlesaze@gmail.com>2020-01-09 10:55:03 +0100
committerCharles <sircharlesaze@gmail.com>2020-01-09 13:09:38 +0100
commit04d6d5ca99ebfd1cebb8ce06618fb3811fc1a8aa (patch)
tree5c691241355c943a3c68ddb06b8cf8c60aa11319 /srcs/phpmyadmin/vendor/twig/extensions
parent7e0d85db834d6351ed85d01e5126ac31dc510b86 (diff)
downloadft_server-04d6d5ca99ebfd1cebb8ce06618fb3811fc1a8aa.tar.gz
ft_server-04d6d5ca99ebfd1cebb8ce06618fb3811fc1a8aa.tar.bz2
ft_server-04d6d5ca99ebfd1cebb8ce06618fb3811fc1a8aa.zip
phpmyadmin working
Diffstat (limited to 'srcs/phpmyadmin/vendor/twig/extensions')
-rw-r--r--srcs/phpmyadmin/vendor/twig/extensions/.travis.yml34
-rw-r--r--srcs/phpmyadmin/vendor/twig/extensions/LICENSE19
-rw-r--r--srcs/phpmyadmin/vendor/twig/extensions/README.rst14
-rw-r--r--srcs/phpmyadmin/vendor/twig/extensions/composer.json32
-rw-r--r--srcs/phpmyadmin/vendor/twig/extensions/lib/Twig/Extensions/Autoloader.php48
-rw-r--r--srcs/phpmyadmin/vendor/twig/extensions/lib/Twig/Extensions/Extension/Array.php56
-rw-r--r--srcs/phpmyadmin/vendor/twig/extensions/lib/Twig/Extensions/Extension/Date.php107
-rw-r--r--srcs/phpmyadmin/vendor/twig/extensions/lib/Twig/Extensions/Extension/I18n.php41
-rw-r--r--srcs/phpmyadmin/vendor/twig/extensions/lib/Twig/Extensions/Extension/Intl.php146
-rw-r--r--srcs/phpmyadmin/vendor/twig/extensions/lib/Twig/Extensions/Extension/Text.php99
-rw-r--r--srcs/phpmyadmin/vendor/twig/extensions/lib/Twig/Extensions/Grammar.php43
-rw-r--r--srcs/phpmyadmin/vendor/twig/extensions/lib/Twig/Extensions/Grammar/Arguments.php26
-rw-r--r--srcs/phpmyadmin/vendor/twig/extensions/lib/Twig/Extensions/Grammar/Array.php26
-rw-r--r--srcs/phpmyadmin/vendor/twig/extensions/lib/Twig/Extensions/Grammar/Body.php43
-rw-r--r--srcs/phpmyadmin/vendor/twig/extensions/lib/Twig/Extensions/Grammar/Boolean.php28
-rw-r--r--srcs/phpmyadmin/vendor/twig/extensions/lib/Twig/Extensions/Grammar/Constant.php41
-rw-r--r--srcs/phpmyadmin/vendor/twig/extensions/lib/Twig/Extensions/Grammar/Expression.php26
-rw-r--r--srcs/phpmyadmin/vendor/twig/extensions/lib/Twig/Extensions/Grammar/Hash.php26
-rw-r--r--srcs/phpmyadmin/vendor/twig/extensions/lib/Twig/Extensions/Grammar/Number.php28
-rw-r--r--srcs/phpmyadmin/vendor/twig/extensions/lib/Twig/Extensions/Grammar/Optional.php73
-rw-r--r--srcs/phpmyadmin/vendor/twig/extensions/lib/Twig/Extensions/Grammar/Switch.php28
-rw-r--r--srcs/phpmyadmin/vendor/twig/extensions/lib/Twig/Extensions/Grammar/Tag.php60
-rw-r--r--srcs/phpmyadmin/vendor/twig/extensions/lib/Twig/Extensions/GrammarInterface.php22
-rw-r--r--srcs/phpmyadmin/vendor/twig/extensions/lib/Twig/Extensions/Node/Trans.php166
-rw-r--r--srcs/phpmyadmin/vendor/twig/extensions/lib/Twig/Extensions/SimpleTokenParser.php138
-rw-r--r--srcs/phpmyadmin/vendor/twig/extensions/lib/Twig/Extensions/TokenParser/Trans.php88
-rw-r--r--srcs/phpmyadmin/vendor/twig/extensions/phpunit.xml.dist25
-rw-r--r--srcs/phpmyadmin/vendor/twig/extensions/src/ArrayExtension.php11
-rw-r--r--srcs/phpmyadmin/vendor/twig/extensions/src/DateExtension.php11
-rw-r--r--srcs/phpmyadmin/vendor/twig/extensions/src/I18nExtension.php11
-rw-r--r--srcs/phpmyadmin/vendor/twig/extensions/src/IntlExtension.php11
-rw-r--r--srcs/phpmyadmin/vendor/twig/extensions/src/Node/TransNode.php11
-rw-r--r--srcs/phpmyadmin/vendor/twig/extensions/src/TextExtension.php11
-rw-r--r--srcs/phpmyadmin/vendor/twig/extensions/src/TokenParser/TransTokenParser.php11
34 files changed, 1560 insertions, 0 deletions
diff --git a/srcs/phpmyadmin/vendor/twig/extensions/.travis.yml b/srcs/phpmyadmin/vendor/twig/extensions/.travis.yml
new file mode 100644
index 0000000..88c7404
--- /dev/null
+++ b/srcs/phpmyadmin/vendor/twig/extensions/.travis.yml
@@ -0,0 +1,34 @@
+language: php
+
+sudo: false
+
+cache:
+ directories:
+ - vendor
+ - $HOME/.composer/cache/files
+
+env:
+ - DEPS=no
+
+before_install:
+ - phpenv config-rm xdebug.ini
+
+before_script:
+ - if [ "$DEPS" == "low" ]; then composer --prefer-lowest --prefer-stable update; fi;
+ - if [ "$DEPS" == "no" ]; then composer install; fi;
+
+script: |
+ ./vendor/bin/simple-phpunit
+
+matrix:
+ include:
+ - php: 5.3
+ dist: precise
+ - php: 5.4
+ - php: 5.5
+ - php: 5.6
+ env: DEPS=low
+ - php: 7.0
+ - php: 7.1
+ - php: 7.2
+ fast_finish: true
diff --git a/srcs/phpmyadmin/vendor/twig/extensions/LICENSE b/srcs/phpmyadmin/vendor/twig/extensions/LICENSE
new file mode 100644
index 0000000..b420d71
--- /dev/null
+++ b/srcs/phpmyadmin/vendor/twig/extensions/LICENSE
@@ -0,0 +1,19 @@
+Copyright (c) 2010-2017 Fabien Potencier
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is furnished
+to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
diff --git a/srcs/phpmyadmin/vendor/twig/extensions/README.rst b/srcs/phpmyadmin/vendor/twig/extensions/README.rst
new file mode 100644
index 0000000..2b4ea92
--- /dev/null
+++ b/srcs/phpmyadmin/vendor/twig/extensions/README.rst
@@ -0,0 +1,14 @@
+Twig Extensions Repository
+==========================
+
+This repository hosts Twig Extensions that do not belong to the core but can
+be nonetheless interesting to share with other developers.
+
+Fork this repository, add your extension, and request a pull.
+
+More Information
+----------------
+
+Read the `documentation`_ for more information.
+
+.. _documentation: http://twig-extensions.readthedocs.io/
diff --git a/srcs/phpmyadmin/vendor/twig/extensions/composer.json b/srcs/phpmyadmin/vendor/twig/extensions/composer.json
new file mode 100644
index 0000000..3644d8e
--- /dev/null
+++ b/srcs/phpmyadmin/vendor/twig/extensions/composer.json
@@ -0,0 +1,32 @@
+{
+ "name": "twig/extensions",
+ "description": "Common additional features for Twig that do not directly belong in core",
+ "keywords": ["i18n","text"],
+ "type": "library",
+ "license": "MIT",
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ }
+ ],
+ "require": {
+ "twig/twig": "^1.27|^2.0"
+ },
+ "require-dev": {
+ "symfony/phpunit-bridge": "^3.4",
+ "symfony/translation": "^2.7|^3.4"
+ },
+ "suggest": {
+ "symfony/translation": "Allow the time_diff output to be translated"
+ },
+ "autoload": {
+ "psr-0": { "Twig_Extensions_": "lib/" },
+ "psr-4": { "Twig\\Extensions\\": "src/" }
+ },
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.5-dev"
+ }
+ }
+}
diff --git a/srcs/phpmyadmin/vendor/twig/extensions/lib/Twig/Extensions/Autoloader.php b/srcs/phpmyadmin/vendor/twig/extensions/lib/Twig/Extensions/Autoloader.php
new file mode 100644
index 0000000..9ad5a46
--- /dev/null
+++ b/srcs/phpmyadmin/vendor/twig/extensions/lib/Twig/Extensions/Autoloader.php
@@ -0,0 +1,48 @@
+<?php
+
+/*
+ * This file is part of Twig.
+ *
+ * (c) 2009 Fabien Potencier
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+@trigger_error('The "Twig_Extensions_Autoloader" class is deprecated since version 1.5. Use Composer instead.', E_USER_DEPRECATED);
+
+/**
+ * Autoloads Twig Extensions classes.
+ *
+ * @author Fabien Potencier <fabien.potencier@symfony-project.com>
+ *
+ * @deprecated since version 1.5, use Composer instead.
+ */
+class Twig_Extensions_Autoloader
+{
+ /**
+ * Registers Twig_Extensions_Autoloader as an SPL autoloader.
+ */
+ public static function register()
+ {
+ spl_autoload_register(array(new self(), 'autoload'));
+ }
+
+ /**
+ * Handles autoloading of classes.
+ *
+ * @param string $class a class name
+ *
+ * @return bool Returns true if the class has been loaded
+ */
+ public static function autoload($class)
+ {
+ if (0 !== strpos($class, 'Twig_Extensions')) {
+ return;
+ }
+
+ if (file_exists($file = __DIR__.'/../../'.str_replace('_', '/', $class).'.php')) {
+ require $file;
+ }
+ }
+}
diff --git a/srcs/phpmyadmin/vendor/twig/extensions/lib/Twig/Extensions/Extension/Array.php b/srcs/phpmyadmin/vendor/twig/extensions/lib/Twig/Extensions/Extension/Array.php
new file mode 100644
index 0000000..a5eaf6d
--- /dev/null
+++ b/srcs/phpmyadmin/vendor/twig/extensions/lib/Twig/Extensions/Extension/Array.php
@@ -0,0 +1,56 @@
+<?php
+
+/**
+ * This file is part of Twig.
+ *
+ * (c) 2009 Fabien Potencier
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/**
+ * @author Ricard Clau <ricard.clau@gmail.com>
+ */
+class Twig_Extensions_Extension_Array extends Twig_Extension
+{
+ /**
+ * {@inheritdoc}
+ */
+ public function getFilters()
+ {
+ $filters = array(
+ new Twig_SimpleFilter('shuffle', 'twig_shuffle_filter'),
+ );
+
+ return $filters;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function getName()
+ {
+ return 'array';
+ }
+}
+
+/**
+ * Shuffles an array.
+ *
+ * @param array|Traversable $array An array
+ *
+ * @return array
+ */
+function twig_shuffle_filter($array)
+{
+ if ($array instanceof Traversable) {
+ $array = iterator_to_array($array, false);
+ }
+
+ shuffle($array);
+
+ return $array;
+}
+
+class_alias('Twig_Extensions_Extension_Array', 'Twig\Extensions\ArrayExtension', false);
diff --git a/srcs/phpmyadmin/vendor/twig/extensions/lib/Twig/Extensions/Extension/Date.php b/srcs/phpmyadmin/vendor/twig/extensions/lib/Twig/Extensions/Extension/Date.php
new file mode 100644
index 0000000..1cdd455
--- /dev/null
+++ b/srcs/phpmyadmin/vendor/twig/extensions/lib/Twig/Extensions/Extension/Date.php
@@ -0,0 +1,107 @@
+<?php
+
+/**
+ * This file is part of Twig.
+ *
+ * (c) 2014 Fabien Potencier
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+use Symfony\Component\Translation\TranslatorInterface;
+use Symfony\Component\Translation\IdentityTranslator;
+
+/**
+ * @author Robin van der Vleuten <robinvdvleuten@gmail.com>
+ */
+class Twig_Extensions_Extension_Date extends Twig_Extension
+{
+ public static $units = array(
+ 'y' => 'year',
+ 'm' => 'month',
+ 'd' => 'day',
+ 'h' => 'hour',
+ 'i' => 'minute',
+ 's' => 'second',
+ );
+
+ /**
+ * @var TranslatorInterface
+ */
+ private $translator;
+
+ public function __construct(TranslatorInterface $translator = null)
+ {
+ // Ignore the IdentityTranslator, otherwise the parameters won't be replaced properly
+ if ($translator instanceof IdentityTranslator) {
+ $translator = null;
+ }
+
+ $this->translator = $translator;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function getFilters()
+ {
+ return array(
+ new Twig_SimpleFilter('time_diff', array($this, 'diff'), array('needs_environment' => true)),
+ );
+ }
+
+ /**
+ * Filter for converting dates to a time ago string like Facebook and Twitter has.
+ *
+ * @param Twig_Environment $env a Twig_Environment instance
+ * @param string|DateTime $date a string or DateTime object to convert
+ * @param string|DateTime $now A string or DateTime object to compare with. If none given, the current time will be used.
+ *
+ * @return string the converted time
+ */
+ public function diff(Twig_Environment $env, $date, $now = null)
+ {
+ // Convert both dates to DateTime instances.
+ $date = twig_date_converter($env, $date);
+ $now = twig_date_converter($env, $now);
+
+ // Get the difference between the two DateTime objects.
+ $diff = $date->diff($now);
+
+ // Check for each interval if it appears in the $diff object.
+ foreach (self::$units as $attribute => $unit) {
+ $count = $diff->$attribute;
+
+ if (0 !== $count) {
+ return $this->getPluralizedInterval($count, $diff->invert, $unit);
+ }
+ }
+
+ return '';
+ }
+
+ protected function getPluralizedInterval($count, $invert, $unit)
+ {
+ if ($this->translator) {
+ $id = sprintf('diff.%s.%s', $invert ? 'in' : 'ago', $unit);
+
+ return $this->translator->transChoice($id, $count, array('%count%' => $count), 'date');
+ }
+
+ if (1 !== $count) {
+ $unit .= 's';
+ }
+
+ return $invert ? "in $count $unit" : "$count $unit ago";
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function getName()
+ {
+ return 'date';
+ }
+}
+
+class_alias('Twig_Extensions_Extension_Date', 'Twig\Extensions\DateExtension', false);
diff --git a/srcs/phpmyadmin/vendor/twig/extensions/lib/Twig/Extensions/Extension/I18n.php b/srcs/phpmyadmin/vendor/twig/extensions/lib/Twig/Extensions/Extension/I18n.php
new file mode 100644
index 0000000..41cb9ce
--- /dev/null
+++ b/srcs/phpmyadmin/vendor/twig/extensions/lib/Twig/Extensions/Extension/I18n.php
@@ -0,0 +1,41 @@
+<?php
+
+/*
+ * This file is part of Twig.
+ *
+ * (c) 2010 Fabien Potencier
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+class Twig_Extensions_Extension_I18n extends Twig_Extension
+{
+ /**
+ * {@inheritdoc}
+ */
+ public function getTokenParsers()
+ {
+ return array(new Twig_Extensions_TokenParser_Trans());
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function getFilters()
+ {
+ return array(
+ new Twig_SimpleFilter('trans', 'gettext'),
+ );
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function getName()
+ {
+ return 'i18n';
+ }
+}
+
+class_alias('Twig_Extensions_Extension_I18n', 'Twig\Extensions\I18nExtension', false);
diff --git a/srcs/phpmyadmin/vendor/twig/extensions/lib/Twig/Extensions/Extension/Intl.php b/srcs/phpmyadmin/vendor/twig/extensions/lib/Twig/Extensions/Extension/Intl.php
new file mode 100644
index 0000000..49b0f88
--- /dev/null
+++ b/srcs/phpmyadmin/vendor/twig/extensions/lib/Twig/Extensions/Extension/Intl.php
@@ -0,0 +1,146 @@
+<?php
+
+/*
+ * This file is part of Twig.
+ *
+ * (c) 2010 Fabien Potencier
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+class Twig_Extensions_Extension_Intl extends Twig_Extension
+{
+ public function __construct()
+ {
+ if (!class_exists('IntlDateFormatter')) {
+ throw new RuntimeException('The native PHP intl extension (http://php.net/manual/en/book.intl.php) is needed to use intl-based filters.');
+ }
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function getFilters()
+ {
+ return array(
+ new Twig_SimpleFilter('localizeddate', 'twig_localized_date_filter', array('needs_environment' => true)),
+ new Twig_SimpleFilter('localizednumber', 'twig_localized_number_filter'),
+ new Twig_SimpleFilter('localizedcurrency', 'twig_localized_currency_filter'),
+ );
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function getName()
+ {
+ return 'intl';
+ }
+}
+
+function twig_localized_date_filter(Twig_Environment $env, $date, $dateFormat = 'medium', $timeFormat = 'medium', $locale = null, $timezone = null, $format = null, $calendar = 'gregorian')
+{
+ $date = twig_date_converter($env, $date, $timezone);
+
+ $formatValues = array(
+ 'none' => IntlDateFormatter::NONE,
+ 'short' => IntlDateFormatter::SHORT,
+ 'medium' => IntlDateFormatter::MEDIUM,
+ 'long' => IntlDateFormatter::LONG,
+ 'full' => IntlDateFormatter::FULL,
+ );
+
+ if (PHP_VERSION_ID < 50500 || !class_exists('IntlTimeZone')) {
+ $formatter = IntlDateFormatter::create(
+ $locale,
+ $formatValues[$dateFormat],
+ $formatValues[$timeFormat],
+ $date->getTimezone()->getName(),
+ 'gregorian' === $calendar ? IntlDateFormatter::GREGORIAN : IntlDateFormatter::TRADITIONAL,
+ $format
+ );
+
+ return $formatter->format($date->getTimestamp());
+ }
+
+ $formatter = IntlDateFormatter::create(
+ $locale,
+ $formatValues[$dateFormat],
+ $formatValues[$timeFormat],
+ IntlTimeZone::createTimeZone($date->getTimezone()->getName()),
+ 'gregorian' === $calendar ? IntlDateFormatter::GREGORIAN : IntlDateFormatter::TRADITIONAL,
+ $format
+ );
+
+ return $formatter->format($date->getTimestamp());
+}
+
+function twig_localized_number_filter($number, $style = 'decimal', $type = 'default', $locale = null)
+{
+ static $typeValues = array(
+ 'default' => NumberFormatter::TYPE_DEFAULT,
+ 'int32' => NumberFormatter::TYPE_INT32,
+ 'int64' => NumberFormatter::TYPE_INT64,
+ 'double' => NumberFormatter::TYPE_DOUBLE,
+ 'currency' => NumberFormatter::TYPE_CURRENCY,
+ );
+
+ $formatter = twig_get_number_formatter($locale, $style);
+
+ if (!isset($typeValues[$type])) {
+ throw new Twig_Error_Syntax(sprintf('The type "%s" does not exist. Known types are: "%s"', $type, implode('", "', array_keys($typeValues))));
+ }
+
+ return $formatter->format($number, $typeValues[$type]);
+}
+
+function twig_localized_currency_filter($number, $currency = null, $locale = null)
+{
+ $formatter = twig_get_number_formatter($locale, 'currency');
+
+ return $formatter->formatCurrency($number, $currency);
+}
+
+/**
+ * Gets a number formatter instance according to given locale and formatter.
+ *
+ * @param string $locale Locale in which the number would be formatted
+ * @param int $style Style of the formatting
+ *
+ * @return NumberFormatter A NumberFormatter instance
+ */
+function twig_get_number_formatter($locale, $style)
+{
+ static $formatter, $currentStyle;
+
+ $locale = null !== $locale ? $locale : Locale::getDefault();
+
+ if ($formatter && $formatter->getLocale() === $locale && $currentStyle === $style) {
+ // Return same instance of NumberFormatter if parameters are the same
+ // to those in previous call
+ return $formatter;
+ }
+
+ static $styleValues = array(
+ 'decimal' => NumberFormatter::DECIMAL,
+ 'currency' => NumberFormatter::CURRENCY,
+ 'percent' => NumberFormatter::PERCENT,
+ 'scientific' => NumberFormatter::SCIENTIFIC,
+ 'spellout' => NumberFormatter::SPELLOUT,
+ 'ordinal' => NumberFormatter::ORDINAL,
+ 'duration' => NumberFormatter::DURATION,
+ );
+
+ if (!isset($styleValues[$style])) {
+ throw new Twig_Error_Syntax(sprintf('The style "%s" does not exist. Known styles are: "%s"', $style, implode('", "', array_keys($styleValues))));
+ }
+
+ $currentStyle = $style;
+
+ $formatter = NumberFormatter::create($locale, $styleValues[$style]);
+
+ return $formatter;
+}
+
+class_alias('Twig_Extensions_Extension_Intl', 'Twig\Extensions\IntlExtension', false);
diff --git a/srcs/phpmyadmin/vendor/twig/extensions/lib/Twig/Extensions/Extension/Text.php b/srcs/phpmyadmin/vendor/twig/extensions/lib/Twig/Extensions/Extension/Text.php
new file mode 100644
index 0000000..52d3591
--- /dev/null
+++ b/srcs/phpmyadmin/vendor/twig/extensions/lib/Twig/Extensions/Extension/Text.php
@@ -0,0 +1,99 @@
+<?php
+
+/**
+ * This file is part of Twig.
+ *
+ * (c) 2009 Fabien Potencier
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/**
+ * @author Henrik Bjornskov <hb@peytz.dk>
+ */
+class Twig_Extensions_Extension_Text extends Twig_Extension
+{
+ /**
+ * {@inheritdoc}
+ */
+ public function getFilters()
+ {
+ return array(
+ new Twig_SimpleFilter('truncate', 'twig_truncate_filter', array('needs_environment' => true)),
+ new Twig_SimpleFilter('wordwrap', 'twig_wordwrap_filter', array('needs_environment' => true)),
+ );
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function getName()
+ {
+ return 'Text';
+ }
+}
+
+if (function_exists('mb_get_info')) {
+ function twig_truncate_filter(Twig_Environment $env, $value, $length = 30, $preserve = false, $separator = '...')
+ {
+ if (mb_strlen($value, $env->getCharset()) > $length) {
+ if ($preserve) {
+ // If breakpoint is on the last word, return the value without separator.
+ if (false === ($breakpoint = mb_strpos($value, ' ', $length, $env->getCharset()))) {
+ return $value;
+ }
+
+ $length = $breakpoint;
+ }
+
+ return rtrim(mb_substr($value, 0, $length, $env->getCharset())).$separator;
+ }
+
+ return $value;
+ }
+
+ function twig_wordwrap_filter(Twig_Environment $env, $value, $length = 80, $separator = "\n", $preserve = false)
+ {
+ $sentences = array();
+
+ $previous = mb_regex_encoding();
+ mb_regex_encoding($env->getCharset());
+
+ $pieces = mb_split($separator, $value);
+ mb_regex_encoding($previous);
+
+ foreach ($pieces as $piece) {
+ while (!$preserve && mb_strlen($piece, $env->getCharset()) > $length) {
+ $sentences[] = mb_substr($piece, 0, $length, $env->getCharset());
+ $piece = mb_substr($piece, $length, 2048, $env->getCharset());
+ }
+
+ $sentences[] = $piece;
+ }
+
+ return implode($separator, $sentences);
+ }
+} else {
+ function twig_truncate_filter(Twig_Environment $env, $value, $length = 30, $preserve = false, $separator = '...')
+ {
+ if (strlen($value) > $length) {
+ if ($preserve) {
+ if (false !== ($breakpoint = strpos($value, ' ', $length))) {
+ $length = $breakpoint;
+ }
+ }
+
+ return rtrim(substr($value, 0, $length)).$separator;
+ }
+
+ return $value;
+ }
+
+ function twig_wordwrap_filter(Twig_Environment $env, $value, $length = 80, $separator = "\n", $preserve = false)
+ {
+ return wordwrap($value, $length, $separator, !$preserve);
+ }
+}
+
+class_alias('Twig_Extensions_Extension_Text', 'Twig\Extensions\TextExtension', false);
diff --git a/srcs/phpmyadmin/vendor/twig/extensions/lib/Twig/Extensions/Grammar.php b/srcs/phpmyadmin/vendor/twig/extensions/lib/Twig/Extensions/Grammar.php
new file mode 100644
index 0000000..b6cc0a7
--- /dev/null
+++ b/srcs/phpmyadmin/vendor/twig/extensions/lib/Twig/Extensions/Grammar.php
@@ -0,0 +1,43 @@
+<?php
+
+/*
+ * This file is part of Twig.
+ *
+ * (c) 2010 Fabien Potencier
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/**
+ * @deprecated since version 1.5
+ */
+abstract class Twig_Extensions_Grammar implements Twig_Extensions_GrammarInterface
+{
+ protected $name;
+ protected $parser;
+
+ /**
+ * @param string $name
+ */
+ public function __construct($name)
+ {
+ $this->name = $name;
+ }
+
+ /**
+ * @param Twig_Parser $parser
+ */
+ public function setParser(Twig_Parser $parser)
+ {
+ $this->parser = $parser;
+ }
+
+ /**
+ * @return string
+ */
+ public function getName()
+ {
+ return $this->name;
+ }
+}
diff --git a/srcs/phpmyadmin/vendor/twig/extensions/lib/Twig/Extensions/Grammar/Arguments.php b/srcs/phpmyadmin/vendor/twig/extensions/lib/Twig/Extensions/Grammar/Arguments.php
new file mode 100644
index 0000000..abb9e0e
--- /dev/null
+++ b/srcs/phpmyadmin/vendor/twig/extensions/lib/Twig/Extensions/Grammar/Arguments.php
@@ -0,0 +1,26 @@
+<?php
+
+/*
+ * This file is part of Twig.
+ *
+ * (c) 2010 Fabien Potencier
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/**
+ * @deprecated since version 1.5
+ */
+class Twig_Extensions_Grammar_Arguments extends Twig_Extensions_Grammar
+{
+ public function __toString()
+ {
+ return sprintf('<%s:arguments>', $this->name);
+ }
+
+ public function parse(Twig_Token $token)
+ {
+ return $this->parser->getExpressionParser()->parseArguments();
+ }
+}
diff --git a/srcs/phpmyadmin/vendor/twig/extensions/lib/Twig/Extensions/Grammar/Array.php b/srcs/phpmyadmin/vendor/twig/extensions/lib/Twig/Extensions/Grammar/Array.php
new file mode 100644
index 0000000..94d7b8c
--- /dev/null
+++ b/srcs/phpmyadmin/vendor/twig/extensions/lib/Twig/Extensions/Grammar/Array.php
@@ -0,0 +1,26 @@
+<?php
+
+/*
+ * This file is part of Twig.
+ *
+ * (c) 2010 Fabien Potencier
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/**
+ * @deprecated since version 1.5
+ */
+class Twig_Extensions_Grammar_Array extends Twig_Extensions_Grammar
+{
+ public function __toString()
+ {
+ return sprintf('<%s:array>', $this->name);
+ }
+
+ public function parse(Twig_Token $token)
+ {
+ return $this->parser->getExpressionParser()->parseArrayExpression();
+ }
+}
diff --git a/srcs/phpmyadmin/vendor/twig/extensions/lib/Twig/Extensions/Grammar/Body.php b/srcs/phpmyadmin/vendor/twig/extensions/lib/Twig/Extensions/Grammar/Body.php
new file mode 100644
index 0000000..b2ac43e
--- /dev/null
+++ b/srcs/phpmyadmin/vendor/twig/extensions/lib/Twig/Extensions/Grammar/Body.php
@@ -0,0 +1,43 @@
+<?php
+
+/*
+ * This file is part of Twig.
+ *
+ * (c) 2010 Fabien Potencier
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/**
+ * @deprecated since version 1.5
+ */
+class Twig_Extensions_Grammar_Body extends Twig_Extensions_Grammar
+{
+ protected $end;
+
+ public function __construct($name, $end = null)
+ {
+ parent::__construct($name);
+
+ $this->end = null === $end ? 'end'.$name : $end;
+ }
+
+ public function __toString()
+ {
+ return sprintf('<%s:body>', $this->name);
+ }
+
+ public function parse(Twig_Token $token)
+ {
+ $stream = $this->parser->getStream();
+ $stream->expect(Twig_Token::BLOCK_END_TYPE);
+
+ return $this->parser->subparse(array($this, 'decideBlockEnd'), true);
+ }
+
+ public function decideBlockEnd(Twig_Token $token)
+ {
+ return $token->test($this->end);
+ }
+}
diff --git a/srcs/phpmyadmin/vendor/twig/extensions/lib/Twig/Extensions/Grammar/Boolean.php b/srcs/phpmyadmin/vendor/twig/extensions/lib/Twig/Extensions/Grammar/Boolean.php
new file mode 100644
index 0000000..578567e
--- /dev/null
+++ b/srcs/phpmyadmin/vendor/twig/extensions/lib/Twig/Extensions/Grammar/Boolean.php
@@ -0,0 +1,28 @@
+<?php
+
+/*
+ * This file is part of Twig.
+ *
+ * (c) 2010 Fabien Potencier
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/**
+ * @deprecated since version 1.5
+ */
+class Twig_Extensions_Grammar_Boolean extends Twig_Extensions_Grammar
+{
+ public function __toString()
+ {
+ return sprintf('<%s:boolean>', $this->name);
+ }
+
+ public function parse(Twig_Token $token)
+ {
+ $this->parser->getStream()->expect(Twig_Token::NAME_TYPE, array('true', 'false'));
+
+ return new Twig_Node_Expression_Constant('true' === $token->getValue() ? true : false, $token->getLine());
+ }
+}
diff --git a/srcs/phpmyadmin/vendor/twig/extensions/lib/Twig/Extensions/Grammar/Constant.php b/srcs/phpmyadmin/vendor/twig/extensions/lib/Twig/Extensions/Grammar/Constant.php
new file mode 100644
index 0000000..8d82b82
--- /dev/null
+++ b/srcs/phpmyadmin/vendor/twig/extensions/lib/Twig/Extensions/Grammar/Constant.php
@@ -0,0 +1,41 @@
+<?php
+
+/*
+ * This file is part of Twig.
+ *
+ * (c) 2010 Fabien Potencier
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/**
+ * @deprecated since version 1.5
+ */
+class Twig_Extensions_Grammar_Constant extends Twig_Extensions_Grammar
+{
+ protected $type;
+
+ public function __construct($name, $type = null)
+ {
+ $this->name = $name;
+ $this->type = null === $type ? Twig_Token::NAME_TYPE : $type;
+ }
+
+ public function __toString()
+ {
+ return $this->name;
+ }
+
+ public function parse(Twig_Token $token)
+ {
+ $this->parser->getStream()->expect($this->type, $this->name);
+
+ return $this->name;
+ }
+
+ public function getType()
+ {
+ return $this->type;
+ }
+}
diff --git a/srcs/phpmyadmin/vendor/twig/extensions/lib/Twig/Extensions/Grammar/Expression.php b/srcs/phpmyadmin/vendor/twig/extensions/lib/Twig/Extensions/Grammar/Expression.php
new file mode 100644
index 0000000..b73156e
--- /dev/null
+++ b/srcs/phpmyadmin/vendor/twig/extensions/lib/Twig/Extensions/Grammar/Expression.php
@@ -0,0 +1,26 @@
+<?php
+
+/*
+ * This file is part of Twig.
+ *
+ * (c) 2010 Fabien Potencier
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/**
+ * @deprecated since version 1.5
+ */
+class Twig_Extensions_Grammar_Expression extends Twig_Extensions_Grammar
+{
+ public function __toString()
+ {
+ return sprintf('<%s>', $this->name);
+ }
+
+ public function parse(Twig_Token $token)
+ {
+ return $this->parser->getExpressionParser()->parseExpression();
+ }
+}
diff --git a/srcs/phpmyadmin/vendor/twig/extensions/lib/Twig/Extensions/Grammar/Hash.php b/srcs/phpmyadmin/vendor/twig/extensions/lib/Twig/Extensions/Grammar/Hash.php
new file mode 100644
index 0000000..5ea3e69
--- /dev/null
+++ b/srcs/phpmyadmin/vendor/twig/extensions/lib/Twig/Extensions/Grammar/Hash.php
@@ -0,0 +1,26 @@
+<?php
+
+/*
+ * This file is part of Twig.
+ *
+ * (c) 2010 Fabien Potencier
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/**
+ * @deprecated since version 1.5
+ */
+class Twig_Extensions_Grammar_Hash extends Twig_Extensions_Grammar
+{
+ public function __toString()
+ {
+ return sprintf('<%s:hash>', $this->name);
+ }
+
+ public function parse(Twig_Token $token)
+ {
+ return $this->parser->getExpressionParser()->parseHashExpression();
+ }
+}
diff --git a/srcs/phpmyadmin/vendor/twig/extensions/lib/Twig/Extensions/Grammar/Number.php b/srcs/phpmyadmin/vendor/twig/extensions/lib/Twig/Extensions/Grammar/Number.php
new file mode 100644
index 0000000..68bbb62
--- /dev/null
+++ b/srcs/phpmyadmin/vendor/twig/extensions/lib/Twig/Extensions/Grammar/Number.php
@@ -0,0 +1,28 @@
+<?php
+
+/*
+ * This file is part of Twig.
+ *
+ * (c) 2010 Fabien Potencier
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/**
+ * @deprecated since version 1.5
+ */
+class Twig_Extensions_Grammar_Number extends Twig_Extensions_Grammar
+{
+ public function __toString()
+ {
+ return sprintf('<%s:number>', $this->name);
+ }
+
+ public function parse(Twig_Token $token)
+ {
+ $this->parser->getStream()->expect(Twig_Token::NUMBER_TYPE);
+
+ return new Twig_Node_Expression_Constant($token->getValue(), $token->getLine());
+ }
+}
diff --git a/srcs/phpmyadmin/vendor/twig/extensions/lib/Twig/Extensions/Grammar/Optional.php b/srcs/phpmyadmin/vendor/twig/extensions/lib/Twig/Extensions/Grammar/Optional.php
new file mode 100644
index 0000000..0cde9bc
--- /dev/null
+++ b/srcs/phpmyadmin/vendor/twig/extensions/lib/Twig/Extensions/Grammar/Optional.php
@@ -0,0 +1,73 @@
+<?php
+
+/*
+ * This file is part of Twig.
+ *
+ * (c) 2010 Fabien Potencier
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/**
+ * @deprecated since version 1.5
+ */
+class Twig_Extensions_Grammar_Optional extends Twig_Extensions_Grammar
+{
+ protected $grammar;
+
+ public function __construct()
+ {
+ $this->grammar = array();
+ foreach (func_get_args() as $grammar) {
+ $this->addGrammar($grammar);
+ }
+ }
+
+ public function __toString()
+ {
+ $repr = array();
+ foreach ($this->grammar as $grammar) {
+ $repr[] = (string) $grammar;
+ }
+
+ return sprintf('[%s]', implode(' ', $repr));
+ }
+
+ public function addGrammar(Twig_Extensions_GrammarInterface $grammar)
+ {
+ $this->grammar[] = $grammar;
+ }
+
+ public function parse(Twig_Token $token)
+ {
+ // test if we have the optional element before consuming it
+ if ($this->grammar[0] instanceof Twig_Extensions_Grammar_Constant) {
+ if (!$this->parser->getStream()->test($this->grammar[0]->getType(), $this->grammar[0]->getName())) {
+ return array();
+ }
+ } elseif ($this->grammar[0] instanceof Twig_Extensions_Grammar_Name) {
+ if (!$this->parser->getStream()->test(Twig_Token::NAME_TYPE)) {
+ return array();
+ }
+ } elseif ($this->parser->getStream()->test(Twig_Token::BLOCK_END_TYPE)) {
+ // if this is not a Constant or a Name, it must be the last element of the tag
+
+ return array();
+ }
+
+ $elements = array();
+ foreach ($this->grammar as $grammar) {
+ $grammar->setParser($this->parser);
+
+ $element = $grammar->parse($token);
+ if (is_array($element)) {
+ $elements = array_merge($elements, $element);
+ } else {
+ $elements[$grammar->getName()] = $element;
+ }
+ }
+
+ return $elements;
+ }
+}
diff --git a/srcs/phpmyadmin/vendor/twig/extensions/lib/Twig/Extensions/Grammar/Switch.php b/srcs/phpmyadmin/vendor/twig/extensions/lib/Twig/Extensions/Grammar/Switch.php
new file mode 100644
index 0000000..407cc20
--- /dev/null
+++ b/srcs/phpmyadmin/vendor/twig/extensions/lib/Twig/Extensions/Grammar/Switch.php
@@ -0,0 +1,28 @@
+<?php
+
+/*
+ * This file is part of Twig.
+ *
+ * (c) 2010 Fabien Potencier
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/**
+ * @deprecated since version 1.5
+ */
+class Twig_Extensions_Grammar_Switch extends Twig_Extensions_Grammar
+{
+ public function __toString()
+ {
+ return sprintf('<%s:switch>', $this->name);
+ }
+
+ public function parse(Twig_Token $token)
+ {
+ $this->parser->getStream()->expect(Twig_Token::NAME_TYPE, $this->name);
+
+ return new Twig_Node_Expression_Constant(true, $token->getLine());
+ }
+}
diff --git a/srcs/phpmyadmin/vendor/twig/extensions/lib/Twig/Extensions/Grammar/Tag.php b/srcs/phpmyadmin/vendor/twig/extensions/lib/Twig/Extensions/Grammar/Tag.php
new file mode 100644
index 0000000..2506efa
--- /dev/null
+++ b/srcs/phpmyadmin/vendor/twig/extensions/lib/Twig/Extensions/Grammar/Tag.php
@@ -0,0 +1,60 @@
+<?php
+
+/*
+ * This file is part of Twig.
+ *
+ * (c) 2010 Fabien Potencier
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/**
+ * @deprecated since version 1.5
+ */
+class Twig_Extensions_Grammar_Tag extends Twig_Extensions_Grammar
+{
+ protected $grammar;
+
+ public function __construct()
+ {
+ $this->grammar = array();
+ foreach (func_get_args() as $grammar) {
+ $this->addGrammar($grammar);
+ }
+ }
+
+ public function __toString()
+ {
+ $repr = array();
+ foreach ($this->grammar as $grammar) {
+ $repr[] = (string) $grammar;
+ }
+
+ return implode(' ', $repr);
+ }
+
+ public function addGrammar(Twig_Extensions_GrammarInterface $grammar)
+ {
+ $this->grammar[] = $grammar;
+ }
+
+ public function parse(Twig_Token $token)
+ {
+ $elements = array();
+ foreach ($this->grammar as $grammar) {
+ $grammar->setParser($this->parser);
+
+ $element = $grammar->parse($token);
+ if (is_array($element)) {
+ $elements = array_merge($elements, $element);
+ } else {
+ $elements[$grammar->getName()] = $element;
+ }
+ }
+
+ $this->parser->getStream()->expect(Twig_Token::BLOCK_END_TYPE);
+
+ return $elements;
+ }
+}
diff --git a/srcs/phpmyadmin/vendor/twig/extensions/lib/Twig/Extensions/GrammarInterface.php b/srcs/phpmyadmin/vendor/twig/extensions/lib/Twig/Extensions/GrammarInterface.php
new file mode 100644
index 0000000..b4854da
--- /dev/null
+++ b/srcs/phpmyadmin/vendor/twig/extensions/lib/Twig/Extensions/GrammarInterface.php
@@ -0,0 +1,22 @@
+<?php
+
+/*
+ * This file is part of Twig.
+ *
+ * (c) 2010 Fabien Potencier
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/**
+ * @deprecated since version 1.5
+ */
+interface Twig_Extensions_GrammarInterface
+{
+ public function setParser(Twig_Parser $parser);
+
+ public function parse(Twig_Token $token);
+
+ public function getName();
+}
diff --git a/srcs/phpmyadmin/vendor/twig/extensions/lib/Twig/Extensions/Node/Trans.php b/srcs/phpmyadmin/vendor/twig/extensions/lib/Twig/Extensions/Node/Trans.php
new file mode 100644
index 0000000..ad65226
--- /dev/null
+++ b/srcs/phpmyadmin/vendor/twig/extensions/lib/Twig/Extensions/Node/Trans.php
@@ -0,0 +1,166 @@
+<?php
+
+/*
+ * This file is part of Twig.
+ *
+ * (c) 2010 Fabien Potencier
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/**
+ * Represents a trans node.
+ *
+ * @author Fabien Potencier <fabien.potencier@symfony-project.com>
+ */
+class Twig_Extensions_Node_Trans extends Twig_Node
+{
+ public function __construct(Twig_Node $body, Twig_Node $plural = null, Twig_Node_Expression $count = null, Twig_Node $notes = null, $lineno, $tag = null)
+ {
+ $nodes = array('body' => $body);
+ if (null !== $count) {
+ $nodes['count'] = $count;
+ }
+ if (null !== $plural) {
+ $nodes['plural'] = $plural;
+ }
+ if (null !== $notes) {
+ $nodes['notes'] = $notes;
+ }
+
+ parent::__construct($nodes, array(), $lineno, $tag);
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function compile(Twig_Compiler $compiler)
+ {
+ $compiler->addDebugInfo($this);
+
+ list($msg, $vars) = $this->compileString($this->getNode('body'));
+
+ if ($this->hasNode('plural')) {
+ list($msg1, $vars1) = $this->compileString($this->getNode('plural'));
+
+ $vars = array_merge($vars, $vars1);
+ }
+
+ $function = $this->getTransFunction($this->hasNode('plural'));
+
+ if ($this->hasNode('notes')) {
+ $message = trim($this->getNode('notes')->getAttribute('data'));
+
+ // line breaks are not allowed cause we want a single line comment
+ $message = str_replace(array("\n", "\r"), ' ', $message);
+ $compiler->write("// notes: {$message}\n");
+ }
+
+ if ($vars) {
+ $compiler
+ ->write('echo strtr('.$function.'(')
+ ->subcompile($msg)
+ ;
+
+ if ($this->hasNode('plural')) {
+ $compiler
+ ->raw(', ')
+ ->subcompile($msg1)
+ ->raw(', abs(')
+ ->subcompile($this->hasNode('count') ? $this->getNode('count') : null)
+ ->raw(')')
+ ;
+ }
+
+ $compiler->raw('), array(');
+
+ foreach ($vars as $var) {
+ if ('count' === $var->getAttribute('name')) {
+ $compiler
+ ->string('%count%')
+ ->raw(' => abs(')
+ ->subcompile($this->hasNode('count') ? $this->getNode('count') : null)
+ ->raw('), ')
+ ;
+ } else {
+ $compiler
+ ->string('%'.$var->getAttribute('name').'%')
+ ->raw(' => ')
+ ->subcompile($var)
+ ->raw(', ')
+ ;
+ }
+ }
+
+ $compiler->raw("));\n");
+ } else {
+ $compiler
+ ->write('echo '.$function.'(')
+ ->subcompile($msg)
+ ;
+
+ if ($this->hasNode('plural')) {
+ $compiler
+ ->raw(', ')
+ ->subcompile($msg1)
+ ->raw(', abs(')
+ ->subcompile($this->hasNode('count') ? $this->getNode('count') : null)
+ ->raw(')')
+ ;
+ }
+
+ $compiler->raw(");\n");
+ }
+ }
+
+ /**
+ * @param Twig_Node $body A Twig_Node instance
+ *
+ * @return array
+ */
+ protected function compileString(Twig_Node $body)
+ {
+ if ($body instanceof Twig_Node_Expression_Name || $body instanceof Twig_Node_Expression_Constant || $body instanceof Twig_Node_Expression_TempName) {
+ return array($body, array());
+ }
+
+ $vars = array();
+ if (count($body)) {
+ $msg = '';
+
+ foreach ($body as $node) {
+ if (get_class($node) === 'Twig_Node' && $node->getNode(0) instanceof Twig_Node_SetTemp) {
+ $node = $node->getNode(1);
+ }
+
+ if ($node instanceof Twig_Node_Print) {
+ $n = $node->getNode('expr');
+ while ($n instanceof Twig_Node_Expression_Filter) {
+ $n = $n->getNode('node');
+ }
+ $msg .= sprintf('%%%s%%', $n->getAttribute('name'));
+ $vars[] = new Twig_Node_Expression_Name($n->getAttribute('name'), $n->getTemplateLine());
+ } else {
+ $msg .= $node->getAttribute('data');
+ }
+ }
+ } else {
+ $msg = $body->getAttribute('data');
+ }
+
+ return array(new Twig_Node(array(new Twig_Node_Expression_Constant(trim($msg), $body->getTemplateLine()))), $vars);
+ }
+
+ /**
+ * @param bool $plural Return plural or singular function to use
+ *
+ * @return string
+ */
+ protected function getTransFunction($plural)
+ {
+ return $plural ? 'ngettext' : 'gettext';
+ }
+}
+
+class_alias('Twig_Extensions_Node_Trans', 'Twig\Extensions\Node\TransNode', false);
diff --git a/srcs/phpmyadmin/vendor/twig/extensions/lib/Twig/Extensions/SimpleTokenParser.php b/srcs/phpmyadmin/vendor/twig/extensions/lib/Twig/Extensions/SimpleTokenParser.php
new file mode 100644
index 0000000..76fa9d3
--- /dev/null
+++ b/srcs/phpmyadmin/vendor/twig/extensions/lib/Twig/Extensions/SimpleTokenParser.php
@@ -0,0 +1,138 @@
+<?php
+
+/*
+ * This file is part of Twig.
+ *
+ * (c) 2010 Fabien Potencier
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+@trigger_error('The grammar feature is deprecated since version 1.5 and will be removed in 2.0.', E_USER_DEPRECATED);
+
+/**
+ * @deprecated since version 1.5
+ */
+abstract class Twig_Extensions_SimpleTokenParser extends Twig_TokenParser
+{
+ /**
+ * Parses a token and returns a node.
+ *
+ * @param Twig_Token $token A Twig_Token instance
+ *
+ * @return Twig_Node A Twig_Node instance
+ */
+ public function parse(Twig_Token $token)
+ {
+ $grammar = $this->getGrammar();
+ if (!is_object($grammar)) {
+ $grammar = self::parseGrammar($grammar);
+ }
+
+ $grammar->setParser($this->parser);
+ $values = $grammar->parse($token);
+
+ return $this->getNode($values, $token->getLine());
+ }
+
+ /**
+ * Gets the grammar as an object or as a string.
+ *
+ * @return string|Twig_Extensions_Grammar A Twig_Extensions_Grammar instance or a string
+ */
+ abstract protected function getGrammar();
+
+ /**
+ * Gets the nodes based on the parsed values.
+ *
+ * @param array $values An array of values
+ * @param int $line The parser line
+ */
+ abstract protected function getNode(array $values, $line);
+
+ protected function getAttribute($node, $attribute, $arguments = array(), $type = Twig_Node_Expression_GetAttr::TYPE_ANY, $line = -1)
+ {
+ return new Twig_Node_Expression_GetAttr(
+ $node instanceof Twig_Node ? $node : new Twig_Node_Expression_Name($node, $line),
+ $attribute instanceof Twig_Node ? $attribute : new Twig_Node_Expression_Constant($attribute, $line),
+ $arguments instanceof Twig_Node ? $arguments : new Twig_Node($arguments),
+ $type,
+ $line
+ );
+ }
+
+ protected function call($node, $attribute, $arguments = array(), $line = -1)
+ {
+ return $this->getAttribute($node, $attribute, $arguments, Twig_Node_Expression_GetAttr::TYPE_METHOD, $line);
+ }
+
+ protected function markAsSafe(Twig_Node $node, $line = -1)
+ {
+ return new Twig_Node_Expression_Filter(
+ $node,
+ new Twig_Node_Expression_Constant('raw', $line),
+ new Twig_Node(),
+ $line
+ );
+ }
+
+ protected function output(Twig_Node $node, $line = -1)
+ {
+ return new Twig_Node_Print($node, $line);
+ }
+
+ protected function getNodeValues(array $values)
+ {
+ $nodes = array();
+ foreach ($values as $value) {
+ if ($value instanceof Twig_Node) {
+ $nodes[] = $value;
+ }
+ }
+
+ return $nodes;
+ }
+
+ public static function parseGrammar($str, $main = true)
+ {
+ static $cursor;
+
+ if (true === $main) {
+ $cursor = 0;
+ $grammar = new Twig_Extensions_Grammar_Tag();
+ } else {
+ $grammar = new Twig_Extensions_Grammar_Optional();
+ }
+
+ while ($cursor < strlen($str)) {
+ if (preg_match('/\s+/A', $str, $match, null, $cursor)) {
+ $cursor += strlen($match[0]);
+ } elseif (preg_match('/<(\w+)(?:\:(\w+))?>/A', $str, $match, null, $cursor)) {
+ $class = sprintf('Twig_Extensions_Grammar_%s', ucfirst(isset($match[2]) ? $match[2] : 'Expression'));
+ if (!class_exists($class)) {
+ throw new Twig_Error_Runtime(sprintf('Unable to understand "%s" in grammar (%s class does not exist)', $match[0], $class));
+ }
+ $grammar->addGrammar(new $class($match[1]));
+ $cursor += strlen($match[0]);
+ } elseif (preg_match('/\w+/A', $str, $match, null, $cursor)) {
+ $grammar->addGrammar(new Twig_Extensions_Grammar_Constant($match[0]));
+ $cursor += strlen($match[0]);
+ } elseif (preg_match('/,/A', $str, $match, null, $cursor)) {
+ $grammar->addGrammar(new Twig_Extensions_Grammar_Constant($match[0], Twig_Token::PUNCTUATION_TYPE));
+ $cursor += strlen($match[0]);
+ } elseif (preg_match('/\[/A', $str, $match, null, $cursor)) {
+ $cursor += strlen($match[0]);
+ $grammar->addGrammar(self::parseGrammar($str, false));
+ } elseif (true !== $main && preg_match('/\]/A', $str, $match, null, $cursor)) {
+ $cursor += strlen($match[0]);
+
+ return $grammar;
+ } else {
+ throw new Twig_Error_Runtime(sprintf('Unable to parse grammar "%s" near "...%s..."', $str, substr($str, $cursor, 10)));
+ }
+ }
+
+ return $grammar;
+ }
+}
diff --git a/srcs/phpmyadmin/vendor/twig/extensions/lib/Twig/Extensions/TokenParser/Trans.php b/srcs/phpmyadmin/vendor/twig/extensions/lib/Twig/Extensions/TokenParser/Trans.php
new file mode 100644
index 0000000..4d4f600
--- /dev/null
+++ b/srcs/phpmyadmin/vendor/twig/extensions/lib/Twig/Extensions/TokenParser/Trans.php
@@ -0,0 +1,88 @@
+<?php
+
+/*
+ * This file is part of Twig.
+ *
+ * (c) 2010 Fabien Potencier
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+class Twig_Extensions_TokenParser_Trans extends Twig_TokenParser
+{
+ /**
+ * {@inheritdoc}
+ */
+ public function parse(Twig_Token $token)
+ {
+ $lineno = $token->getLine();
+ $stream = $this->parser->getStream();
+ $count = null;
+ $plural = null;
+ $notes = null;
+
+ if (!$stream->test(Twig_Token::BLOCK_END_TYPE)) {
+ $body = $this->parser->getExpressionParser()->parseExpression();
+ } else {
+ $stream->expect(Twig_Token::BLOCK_END_TYPE);
+ $body = $this->parser->subparse(array($this, 'decideForFork'));
+ $next = $stream->next()->getValue();
+
+ if ('plural' === $next) {
+ $count = $this->parser->getExpressionParser()->parseExpression();
+ $stream->expect(Twig_Token::BLOCK_END_TYPE);
+ $plural = $this->parser->subparse(array($this, 'decideForFork'));
+
+ if ('notes' === $stream->next()->getValue()) {
+ $stream->expect(Twig_Token::BLOCK_END_TYPE);
+ $notes = $this->parser->subparse(array($this, 'decideForEnd'), true);
+ }
+ } elseif ('notes' === $next) {
+ $stream->expect(Twig_Token::BLOCK_END_TYPE);
+ $notes = $this->parser->subparse(array($this, 'decideForEnd'), true);
+ }
+ }
+
+ $stream->expect(Twig_Token::BLOCK_END_TYPE);
+
+ $this->checkTransString($body, $lineno);
+
+ return new Twig_Extensions_Node_Trans($body, $plural, $count, $notes, $lineno, $this->getTag());
+ }
+
+ public function decideForFork(Twig_Token $token)
+ {
+ return $token->test(array('plural', 'notes', 'endtrans'));
+ }
+
+ public function decideForEnd(Twig_Token $token)
+ {
+ return $token->test('endtrans');
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function getTag()
+ {
+ return 'trans';
+ }
+
+ protected function checkTransString(Twig_Node $body, $lineno)
+ {
+ foreach ($body as $i => $node) {
+ if (
+ $node instanceof Twig_Node_Text
+ ||
+ ($node instanceof Twig_Node_Print && $node->getNode('expr') instanceof Twig_Node_Expression_Name)
+ ) {
+ continue;
+ }
+
+ throw new Twig_Error_Syntax(sprintf('The text to be translated with "trans" can only contain references to simple variables'), $lineno);
+ }
+ }
+}
+
+class_alias('Twig_Extensions_TokenParser_Trans', 'Twig\Extensions\TokenParser\TransTokenParser', false);
diff --git a/srcs/phpmyadmin/vendor/twig/extensions/phpunit.xml.dist b/srcs/phpmyadmin/vendor/twig/extensions/phpunit.xml.dist
new file mode 100644
index 0000000..4d49fa6
--- /dev/null
+++ b/srcs/phpmyadmin/vendor/twig/extensions/phpunit.xml.dist
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<phpunit backupGlobals="false"
+ backupStaticAttributes="false"
+ colors="true"
+ convertErrorsToExceptions="true"
+ convertNoticesToExceptions="true"
+ convertWarningsToExceptions="true"
+ processIsolation="false"
+ stopOnFailure="false"
+ syntaxCheck="false"
+ bootstrap="vendor/autoload.php"
+>
+ <testsuites>
+ <testsuite name="Twig Extensions Test Suite">
+ <directory>./test/Twig/</directory>
+ </testsuite>
+ </testsuites>
+
+ <filter>
+ <whitelist>
+ <directory suffix=".php">./lib/Twig/</directory>
+ </whitelist>
+ </filter>
+</phpunit>
diff --git a/srcs/phpmyadmin/vendor/twig/extensions/src/ArrayExtension.php b/srcs/phpmyadmin/vendor/twig/extensions/src/ArrayExtension.php
new file mode 100644
index 0000000..22ee3ed
--- /dev/null
+++ b/srcs/phpmyadmin/vendor/twig/extensions/src/ArrayExtension.php
@@ -0,0 +1,11 @@
+<?php
+
+namespace Twig\Extensions;
+
+class_exists('Twig_Extensions_Extension_Array');
+
+if (\false) {
+ class ArrayExtension extends \Twig_Extensions_Extension_Array
+ {
+ }
+}
diff --git a/srcs/phpmyadmin/vendor/twig/extensions/src/DateExtension.php b/srcs/phpmyadmin/vendor/twig/extensions/src/DateExtension.php
new file mode 100644
index 0000000..d7a002a
--- /dev/null
+++ b/srcs/phpmyadmin/vendor/twig/extensions/src/DateExtension.php
@@ -0,0 +1,11 @@
+<?php
+
+namespace Twig\Extensions;
+
+class_exists('Twig_Extensions_Extension_Date');
+
+if (\false) {
+ class DateExtension extends \Twig_Extensions_Extension_Date
+ {
+ }
+}
diff --git a/srcs/phpmyadmin/vendor/twig/extensions/src/I18nExtension.php b/srcs/phpmyadmin/vendor/twig/extensions/src/I18nExtension.php
new file mode 100644
index 0000000..c8e3ca9
--- /dev/null
+++ b/srcs/phpmyadmin/vendor/twig/extensions/src/I18nExtension.php
@@ -0,0 +1,11 @@
+<?php
+
+namespace Twig\Extensions;
+
+class_exists('Twig_Extensions_Extension_I18n');
+
+if (\false) {
+ class I18nExtension extends \Twig_Extensions_Extension_I18n
+ {
+ }
+}
diff --git a/srcs/phpmyadmin/vendor/twig/extensions/src/IntlExtension.php b/srcs/phpmyadmin/vendor/twig/extensions/src/IntlExtension.php
new file mode 100644
index 0000000..eac25c1
--- /dev/null
+++ b/srcs/phpmyadmin/vendor/twig/extensions/src/IntlExtension.php
@@ -0,0 +1,11 @@
+<?php
+
+namespace Twig\Extensions;
+
+class_exists('Twig_Extensions_Extension_Intl');
+
+if (\false) {
+ class IntlExtension extends \Twig_Extensions_Extension_Intl
+ {
+ }
+}
diff --git a/srcs/phpmyadmin/vendor/twig/extensions/src/Node/TransNode.php b/srcs/phpmyadmin/vendor/twig/extensions/src/Node/TransNode.php
new file mode 100644
index 0000000..c83e228
--- /dev/null
+++ b/srcs/phpmyadmin/vendor/twig/extensions/src/Node/TransNode.php
@@ -0,0 +1,11 @@
+<?php
+
+namespace Twig\Extensions\Node;
+
+class_exists('Twig_Extensions_Node_Trans');
+
+if (\false) {
+ class TransNode extends \Twig_Extensions_Node_Trans
+ {
+ }
+}
diff --git a/srcs/phpmyadmin/vendor/twig/extensions/src/TextExtension.php b/srcs/phpmyadmin/vendor/twig/extensions/src/TextExtension.php
new file mode 100644
index 0000000..bc25bfe
--- /dev/null
+++ b/srcs/phpmyadmin/vendor/twig/extensions/src/TextExtension.php
@@ -0,0 +1,11 @@
+<?php
+
+namespace Twig\Extensions;
+
+class_exists('Twig_Extensions_Extension_Text');
+
+if (\false) {
+ class TextExtension extends \Twig_Extensions_Extension_Text
+ {
+ }
+}
diff --git a/srcs/phpmyadmin/vendor/twig/extensions/src/TokenParser/TransTokenParser.php b/srcs/phpmyadmin/vendor/twig/extensions/src/TokenParser/TransTokenParser.php
new file mode 100644
index 0000000..fe1f04b
--- /dev/null
+++ b/srcs/phpmyadmin/vendor/twig/extensions/src/TokenParser/TransTokenParser.php
@@ -0,0 +1,11 @@
+<?php
+
+namespace Twig\Extensions\TokenParser;
+
+class_exists('Twig_Extensions_TokenParser_Trans');
+
+if (\false) {
+ class TransTokenParser extends \Twig_Extensions_TokenParser_Trans
+ {
+ }
+}