diff --git a/composer.lock b/composer.lock
index fd2c307..0c694fa 100755
--- a/composer.lock
+++ b/composer.lock
@@ -213,16 +213,16 @@
},
{
"name": "twig/twig",
- "version": "v1.44.5",
+ "version": "v1.44.6",
"source": {
"type": "git",
"url": "https://github.com/twigphp/Twig.git",
- "reference": "dd4353357c5a116322e92a00d16043a31881a81e"
+ "reference": "ae39480f010ef88adc7938503c9b02d3baf2f3b3"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/twigphp/Twig/zipball/dd4353357c5a116322e92a00d16043a31881a81e",
- "reference": "dd4353357c5a116322e92a00d16043a31881a81e",
+ "url": "https://api.github.com/repos/twigphp/Twig/zipball/ae39480f010ef88adc7938503c9b02d3baf2f3b3",
+ "reference": "ae39480f010ef88adc7938503c9b02d3baf2f3b3",
"shasum": ""
},
"require": {
@@ -275,7 +275,7 @@
],
"support": {
"issues": "https://github.com/twigphp/Twig/issues",
- "source": "https://github.com/twigphp/Twig/tree/v1.44.5"
+ "source": "https://github.com/twigphp/Twig/tree/v1.44.6"
},
"funding": [
{
@@ -287,7 +287,7 @@
"type": "tidelift"
}
],
- "time": "2021-09-17T08:35:19+00:00"
+ "time": "2021-11-25T13:31:46+00:00"
}
],
"packages-dev": [],
diff --git a/vendor/composer/InstalledVersions.php b/vendor/composer/InstalledVersions.php
index 56e7e74..68434b1 100644
--- a/vendor/composer/InstalledVersions.php
+++ b/vendor/composer/InstalledVersions.php
@@ -32,7 +32,7 @@ class InstalledVersions
'aliases' =>
array (
),
- 'reference' => 'fa83cf8d1315a6fced6e8553e17f0638f4dc5f7a',
+ 'reference' => '54b39af910b0860239a6dde7ec23231716621ce0',
'name' => '__root__',
),
'versions' =>
@@ -44,7 +44,7 @@ class InstalledVersions
'aliases' =>
array (
),
- 'reference' => 'fa83cf8d1315a6fced6e8553e17f0638f4dc5f7a',
+ 'reference' => '54b39af910b0860239a6dde7ec23231716621ce0',
),
'art-of-wifi/unifi-api-client' =>
array (
@@ -75,12 +75,12 @@ class InstalledVersions
),
'twig/twig' =>
array (
- 'pretty_version' => 'v1.44.5',
- 'version' => '1.44.5.0',
+ 'pretty_version' => 'v1.44.6',
+ 'version' => '1.44.6.0',
'aliases' =>
array (
),
- 'reference' => 'dd4353357c5a116322e92a00d16043a31881a81e',
+ 'reference' => 'ae39480f010ef88adc7938503c9b02d3baf2f3b3',
),
),
);
diff --git a/vendor/composer/installed.json b/vendor/composer/installed.json
index fad4219..cebaaac 100755
--- a/vendor/composer/installed.json
+++ b/vendor/composer/installed.json
@@ -216,17 +216,17 @@
},
{
"name": "twig/twig",
- "version": "v1.44.5",
- "version_normalized": "1.44.5.0",
+ "version": "v1.44.6",
+ "version_normalized": "1.44.6.0",
"source": {
"type": "git",
"url": "https://github.com/twigphp/Twig.git",
- "reference": "dd4353357c5a116322e92a00d16043a31881a81e"
+ "reference": "ae39480f010ef88adc7938503c9b02d3baf2f3b3"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/twigphp/Twig/zipball/dd4353357c5a116322e92a00d16043a31881a81e",
- "reference": "dd4353357c5a116322e92a00d16043a31881a81e",
+ "url": "https://api.github.com/repos/twigphp/Twig/zipball/ae39480f010ef88adc7938503c9b02d3baf2f3b3",
+ "reference": "ae39480f010ef88adc7938503c9b02d3baf2f3b3",
"shasum": ""
},
"require": {
@@ -237,7 +237,7 @@
"psr/container": "^1.0",
"symfony/phpunit-bridge": "^4.4.9|^5.0.9"
},
- "time": "2021-09-17T08:35:19+00:00",
+ "time": "2021-11-25T13:31:46+00:00",
"type": "library",
"extra": {
"branch-alias": {
@@ -281,7 +281,7 @@
],
"support": {
"issues": "https://github.com/twigphp/Twig/issues",
- "source": "https://github.com/twigphp/Twig/tree/v1.44.5"
+ "source": "https://github.com/twigphp/Twig/tree/v1.44.6"
},
"funding": [
{
diff --git a/vendor/composer/installed.php b/vendor/composer/installed.php
index f294e4b..1596633 100644
--- a/vendor/composer/installed.php
+++ b/vendor/composer/installed.php
@@ -6,7 +6,7 @@
'aliases' =>
array (
),
- 'reference' => 'fa83cf8d1315a6fced6e8553e17f0638f4dc5f7a',
+ 'reference' => '54b39af910b0860239a6dde7ec23231716621ce0',
'name' => '__root__',
),
'versions' =>
@@ -18,7 +18,7 @@
'aliases' =>
array (
),
- 'reference' => 'fa83cf8d1315a6fced6e8553e17f0638f4dc5f7a',
+ 'reference' => '54b39af910b0860239a6dde7ec23231716621ce0',
),
'art-of-wifi/unifi-api-client' =>
array (
@@ -49,12 +49,12 @@
),
'twig/twig' =>
array (
- 'pretty_version' => 'v1.44.5',
- 'version' => '1.44.5.0',
+ 'pretty_version' => 'v1.44.6',
+ 'version' => '1.44.6.0',
'aliases' =>
array (
),
- 'reference' => 'dd4353357c5a116322e92a00d16043a31881a81e',
+ 'reference' => 'ae39480f010ef88adc7938503c9b02d3baf2f3b3',
),
),
);
diff --git a/vendor/twig/twig/.gitattributes b/vendor/twig/twig/.gitattributes
index 3a3ce6e..c46c1b9 100644
--- a/vendor/twig/twig/.gitattributes
+++ b/vendor/twig/twig/.gitattributes
@@ -1,2 +1,3 @@
+/doc/** export-ignore
/tests export-ignore
/phpunit.xml.dist export-ignore
diff --git a/vendor/twig/twig/CHANGELOG b/vendor/twig/twig/CHANGELOG
index 055d460..ea1319a 100644
--- a/vendor/twig/twig/CHANGELOG
+++ b/vendor/twig/twig/CHANGELOG
@@ -1,3 +1,7 @@
+# 1.44.6 (2021-11-25)
+
+ * Last version for the 1.x series
+
# 1.44.5 (2021-09-17)
* Improve compatibility with PHP 8.1
diff --git a/vendor/twig/twig/README.rst b/vendor/twig/twig/README.rst
index 7bd3954..5c7bb54 100644
--- a/vendor/twig/twig/README.rst
+++ b/vendor/twig/twig/README.rst
@@ -7,7 +7,7 @@ and documentation).
Twig uses a syntax similar to the Django and Jinja template languages which
inspired the Twig runtime environment.
-**Twig version 1 will stop being maintained at the end of November 2021.**
+**Twig version 1 is not maintained anymore.**
Please, upgrade at your earliest convenience.
Sponsors
diff --git a/vendor/twig/twig/doc/.doctor-rst.yaml b/vendor/twig/twig/doc/.doctor-rst.yaml
deleted file mode 100644
index 754f972..0000000
--- a/vendor/twig/twig/doc/.doctor-rst.yaml
+++ /dev/null
@@ -1,55 +0,0 @@
-rules:
- american_english: ~
- avoid_repetetive_words: ~
- blank_line_after_directive: ~
- blank_line_before_directive: ~
- composer_dev_option_not_at_the_end: ~
- correct_code_block_directive_based_on_the_content: ~
- deprecated_directive_should_have_version: ~
- ensure_order_of_code_blocks_in_configuration_block: ~
- extension_xlf_instead_of_xliff: ~
- indention: ~
- lowercase_as_in_use_statements: ~
- max_blank_lines:
- max: 2
- no_blank_line_after_filepath_in_php_code_block: ~
- no_blank_line_after_filepath_in_twig_code_block: ~
- no_blank_line_after_filepath_in_xml_code_block: ~
- no_blank_line_after_filepath_in_yaml_code_block: ~
- no_composer_req: ~
- no_explicit_use_of_code_block_php: ~
- no_inheritdoc: ~
- no_namespace_after_use_statements: ~
- no_php_open_tag_in_code_block_php_directive: ~
- no_space_before_self_xml_closing_tag: ~
- ordered_use_statements: ~
- php_prefix_before_bin_console: ~
- replace_code_block_types: ~
- replacement: ~
- short_array_syntax: ~
- typo: ~
- unused_links: ~
- use_deprecated_directive_instead_of_versionadded: ~
- use_https_xsd_urls: ~
- valid_inline_highlighted_namespaces: ~
- valid_use_statements: ~
- versionadded_directive_should_have_version: ~
- yaml_instead_of_yml_suffix: ~
- yarn_dev_option_at_the_end: ~
-
- versionadded_directive_major_version:
- major_version: 1
-
- versionadded_directive_min_version:
- min_version: '1.0'
-
- deprecated_directive_major_version:
- major_version: 1
-
- deprecated_directive_min_version:
- min_version: '1.0'
-
-whitelist:
- lines:
- - '``C:\\php-sdk\\phpdev\\vcXX\\x86\\php-source-directory\\Release``'
- - 'I like Twig. '
diff --git a/vendor/twig/twig/doc/_build/.requirements.txt b/vendor/twig/twig/doc/_build/.requirements.txt
deleted file mode 100644
index 47f076e..0000000
--- a/vendor/twig/twig/doc/_build/.requirements.txt
+++ /dev/null
@@ -1,6 +0,0 @@
-docutils==0.13.1
-Pygments==2.2.0
-sphinx==1.8.5
-git+https://github.com/fabpot/sphinx-php.git@v2.0.0#egg_name=sphinx-php
-jsx-lexer===0.0.8
-sphinx_rtd_theme==0.5.0
diff --git a/vendor/twig/twig/doc/_build/Makefile b/vendor/twig/twig/doc/_build/Makefile
deleted file mode 100644
index 25b6600..0000000
--- a/vendor/twig/twig/doc/_build/Makefile
+++ /dev/null
@@ -1,153 +0,0 @@
-# Makefile for Sphinx documentation
-#
-
-# You can set these variables from the command line.
-SPHINXOPTS =
-SPHINXBUILD = sphinx-build
-PAPER =
-BUILDDIR = .
-
-# Internal variables.
-PAPEROPT_a4 = -D latex_paper_size=a4
-PAPEROPT_letter = -D latex_paper_size=letter
-ALLSPHINXOPTS = -c $(BUILDDIR) -d $(BUILDDIR)/doctrees $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) ../
-# the i18n builder cannot share the environment and doctrees with the others
-I18NSPHINXOPTS = $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) .
-
-.PHONY: help clean html dirhtml singlehtml pickle json htmlhelp qthelp devhelp epub latex latexpdf text man changes linkcheck doctest gettext
-
-help:
- @echo "Please use \`make ' where is one of"
- @echo " html to make standalone HTML files"
- @echo " dirhtml to make HTML files named index.html in directories"
- @echo " singlehtml to make a single large HTML file"
- @echo " pickle to make pickle files"
- @echo " json to make JSON files"
- @echo " htmlhelp to make HTML files and a HTML help project"
- @echo " qthelp to make HTML files and a qthelp project"
- @echo " devhelp to make HTML files and a Devhelp project"
- @echo " epub to make an epub"
- @echo " latex to make LaTeX files, you can set PAPER=a4 or PAPER=letter"
- @echo " latexpdf to make LaTeX files and run them through pdflatex"
- @echo " text to make text files"
- @echo " man to make manual pages"
- @echo " texinfo to make Texinfo files"
- @echo " info to make Texinfo files and run them through makeinfo"
- @echo " gettext to make PO message catalogs"
- @echo " changes to make an overview of all changed/added/deprecated items"
- @echo " linkcheck to check all external links for integrity"
- @echo " doctest to run all doctests embedded in the documentation (if enabled)"
-
-clean:
- -rm -rf $(BUILDDIR)/*
-
-html:
- $(SPHINXBUILD) -b html $(ALLSPHINXOPTS) $(BUILDDIR)/html
- @echo
- @echo "Build finished. The HTML pages are in $(BUILDDIR)/html."
-
-dirhtml:
- $(SPHINXBUILD) -b dirhtml $(ALLSPHINXOPTS) $(BUILDDIR)/dirhtml
- @echo
- @echo "Build finished. The HTML pages are in $(BUILDDIR)/dirhtml."
-
-singlehtml:
- $(SPHINXBUILD) -b singlehtml $(ALLSPHINXOPTS) $(BUILDDIR)/singlehtml
- @echo
- @echo "Build finished. The HTML page is in $(BUILDDIR)/singlehtml."
-
-pickle:
- $(SPHINXBUILD) -b pickle $(ALLSPHINXOPTS) $(BUILDDIR)/pickle
- @echo
- @echo "Build finished; now you can process the pickle files."
-
-json:
- $(SPHINXBUILD) -b json $(ALLSPHINXOPTS) $(BUILDDIR)/json
- @echo
- @echo "Build finished; now you can process the JSON files."
-
-htmlhelp:
- $(SPHINXBUILD) -b htmlhelp $(ALLSPHINXOPTS) $(BUILDDIR)/htmlhelp
- @echo
- @echo "Build finished; now you can run HTML Help Workshop with the" \
- ".hhp project file in $(BUILDDIR)/htmlhelp."
-
-qthelp:
- $(SPHINXBUILD) -b qthelp $(ALLSPHINXOPTS) $(BUILDDIR)/qthelp
- @echo
- @echo "Build finished; now you can run "qcollectiongenerator" with the" \
- ".qhcp project file in $(BUILDDIR)/qthelp, like this:"
- @echo "# qcollectiongenerator $(BUILDDIR)/qthelp/Symfony.qhcp"
- @echo "To view the help file:"
- @echo "# assistant -collectionFile $(BUILDDIR)/qthelp/Symfony.qhc"
-
-devhelp:
- $(SPHINXBUILD) -b devhelp $(ALLSPHINXOPTS) $(BUILDDIR)/devhelp
- @echo
- @echo "Build finished."
- @echo "To view the help file:"
- @echo "# mkdir -p $$HOME/.local/share/devhelp/Symfony"
- @echo "# ln -s $(BUILDDIR)/devhelp $$HOME/.local/share/devhelp/Symfony"
- @echo "# devhelp"
-
-epub:
- $(SPHINXBUILD) -b epub $(ALLSPHINXOPTS) $(BUILDDIR)/epub
- @echo
- @echo "Build finished. The epub file is in $(BUILDDIR)/epub."
-
-latex:
- $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex
- @echo
- @echo "Build finished; the LaTeX files are in $(BUILDDIR)/latex."
- @echo "Run \`make' in that directory to run these through (pdf)latex" \
- "(use \`make latexpdf' here to do that automatically)."
-
-latexpdf:
- $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex
- @echo "Running LaTeX files through pdflatex..."
- $(MAKE) -C $(BUILDDIR)/latex all-pdf
- @echo "pdflatex finished; the PDF files are in $(BUILDDIR)/latex."
-
-text:
- $(SPHINXBUILD) -b text $(ALLSPHINXOPTS) $(BUILDDIR)/text
- @echo
- @echo "Build finished. The text files are in $(BUILDDIR)/text."
-
-man:
- $(SPHINXBUILD) -b man $(ALLSPHINXOPTS) $(BUILDDIR)/man
- @echo
- @echo "Build finished. The manual pages are in $(BUILDDIR)/man."
-
-texinfo:
- $(SPHINXBUILD) -b texinfo $(ALLSPHINXOPTS) $(BUILDDIR)/texinfo
- @echo
- @echo "Build finished. The Texinfo files are in $(BUILDDIR)/texinfo."
- @echo "Run \`make' in that directory to run these through makeinfo" \
- "(use \`make info' here to do that automatically)."
-
-info:
- $(SPHINXBUILD) -b texinfo $(ALLSPHINXOPTS) $(BUILDDIR)/texinfo
- @echo "Running Texinfo files through makeinfo..."
- make -C $(BUILDDIR)/texinfo info
- @echo "makeinfo finished; the Info files are in $(BUILDDIR)/texinfo."
-
-gettext:
- $(SPHINXBUILD) -b gettext $(I18NSPHINXOPTS) $(BUILDDIR)/locale
- @echo
- @echo "Build finished. The message catalogs are in $(BUILDDIR)/locale."
-
-changes:
- $(SPHINXBUILD) -b changes $(ALLSPHINXOPTS) $(BUILDDIR)/changes
- @echo
- @echo "The overview file is in $(BUILDDIR)/changes."
-
-linkcheck:
- $(SPHINXBUILD) -b linkcheck $(ALLSPHINXOPTS) $(BUILDDIR)/linkcheck
- @echo
- @echo "Link check complete; look for any errors in the above output " \
- "or in $(BUILDDIR)/linkcheck/output.txt."
-
-doctest:
- $(SPHINXBUILD) -b doctest $(ALLSPHINXOPTS) $(BUILDDIR)/doctest
- @echo "Testing of doctests in the sources finished, look at the " \
- "results in $(BUILDDIR)/doctest/output.txt."
diff --git a/vendor/twig/twig/doc/_build/conf.py b/vendor/twig/twig/doc/_build/conf.py
deleted file mode 100644
index 1e3a8ab..0000000
--- a/vendor/twig/twig/doc/_build/conf.py
+++ /dev/null
@@ -1,271 +0,0 @@
-# -*- coding: utf-8 -*-
-#
-# Symfony documentation build configuration file, created by
-# sphinx-quickstart on Sat Jul 28 21:58:57 2012.
-#
-# This file is execfile()d with the current directory set to its containing dir.
-#
-# Note that not all possible configuration values are present in this
-# autogenerated file.
-#
-# All configuration values have a default; values that are commented out
-# serve to show the default.
-
-import sys, os
-
-# If extensions (or modules to document with autodoc) are in another directory,
-# add these directories to sys.path here. If the directory is relative to the
-# documentation root, use os.path.abspath to make it absolute, like shown here.
-#sys.path.append(os.path.abspath('_exts'))
-
-# adding PhpLexer
-from sphinx.highlighting import lexers
-from pygments.lexers.special import TextLexer
-from pygments.lexers.text import RstLexer
-from pygments.lexers.web import PhpLexer
-
-# -- General configuration -----------------------------------------------------
-
-# If your documentation needs a minimal Sphinx version, state it here.
-needs_sphinx = '1.8.5'
-
-# Add any Sphinx extension module names here, as strings. They can be extensions
-# coming with Sphinx (named 'sphinx.ext.*') or your custom ones.
-extensions = [
- 'sphinx.ext.autodoc', 'sphinx.ext.doctest',
- 'sphinx.ext.todo', 'sphinx.ext.coverage', 'sphinx.ext.ifconfig',
- 'sphinx.ext.viewcode', 'sphinx.ext.extlinks',
- 'sensio.sphinx.codeblock', 'sensio.sphinx.configurationblock', 'sensio.sphinx.phpcode', 'sensio.sphinx.bestpractice'
-]
-
-#spelling_show_sugestions=True
-#spelling_lang='en_US'
-#spelling_word_list_filename='_build/spelling_word_list.txt'
-
-# Add any paths that contain templates here, relative to this directory.
-# templates_path = ['_theme/_templates']
-
-# The suffix of source filenames.
-source_suffix = '.rst'
-
-# The encoding of source files.
-#source_encoding = 'utf-8-sig'
-
-# The master toctree document.
-master_doc = 'index'
-
-# General information about the project.
-project = 'Twig'
-copyright = ''
-
-# The version info for the project you're documenting, acts as replacement for
-# |version| and |release|, also used in various other places throughout the
-# built documents.
-#
-# The short X.Y version.
-# version = '2.2'
-# The full version, including alpha/beta/rc tags.
-# release = '2.2.13'
-
-# The language for content autogenerated by Sphinx. Refer to documentation
-# for a list of supported languages.
-#language = None
-
-# There are two options for replacing |today|: either, you set today to some
-# non-false value, then it is used:
-#today = ''
-# Else, today_fmt is used as the format for a strftime call.
-#today_fmt = '%B %d, %Y'
-
-# List of patterns, relative to source directory, that match files and
-# directories to ignore when looking for source files.
-exclude_patterns = ['_build']
-
-# The reST default role (used for this markup: `text`) to use for all documents.
-#default_role = None
-
-# If true, '()' will be appended to :func: etc. cross-reference text.
-#add_function_parentheses = True
-
-# If true, the current module name will be prepended to all description
-# unit titles (such as .. function::).
-#add_module_names = True
-
-# If true, sectionauthor and moduleauthor directives will be shown in the
-# output. They are ignored by default.
-#show_authors = False
-
-# The name of the Pygments (syntax highlighting) style to use.
-#pygments_style = 'symfonycom.sphinx.SensioStyle'
-
-# A list of ignored prefixes for module index sorting.
-#modindex_common_prefix = []
-
-# -- Settings for symfony doc extension ---------------------------------------------------
-
-# enable highlighting for PHP code not between ```` by default
-lexers['php'] = PhpLexer(startinline=True)
-lexers['rst'] = RstLexer()
-
-config_block = {
- 'rst': 'reStructuredText',
-}
-
-# don't enable Sphinx Domains
-primary_domain = None
-
-# set url for API links
-#api_url = 'https://github.com/symfony/symfony/blob/master/src/%s.php'
-
-
-# -- Options for HTML output ---------------------------------------------------
-
-# The theme to use for HTML and HTML Help pages. See the documentation for
-# a list of builtin themes.
-html_theme = "sphinx_rtd_theme"
-
-# Theme options are theme-specific and customize the look and feel of a theme
-# further. For a list of options available for each theme, see the
-# documentation.
-html_theme_options = {
- 'logo_only': True,
- 'prev_next_buttons_location': None,
- 'style_nav_header_background': '#f0f0f0'
-}
-
-# Add any paths that contain custom themes here, relative to this directory.
-#html_theme_path = []
-
-# The name for this set of Sphinx documents. If None, it defaults to
-# " v documentation".
-#html_title = None
-
-# A shorter title for the navigation bar. Default is the same as html_title.
-#html_short_title = None
-
-# The name of an image file (relative to this directory) to place at the top
-# of the sidebar.
-#html_logo = '_static/symfony-logo.svg'
-
-# The name of an image file (within the static path) to use as favicon of the
-# docs. This file should be a Windows icon file (.ico) being 16x16 or 32x32
-# pixels large.
-#html_favicon = None
-
-# Add any paths that contain custom static files (such as style sheets) here,
-# relative to this directory. They are copied after the builtin static files,
-# so a file named "default.css" will overwrite the builtin "default.css".
-#html_static_path = ['_static']
-#html_css_files = ['rtd_custom.css']
-
-# If not '', a 'Last updated on:' timestamp is inserted at every page bottom,
-# using the given strftime format.
-#html_last_updated_fmt = '%b %d, %Y'
-
-# If true, SmartyPants will be used to convert quotes and dashes to
-# typographically correct entities.
-#html_use_smartypants = True
-
-# Custom sidebar templates, maps document names to template names.
-#html_sidebars = {}
-
-# Additional templates that should be rendered to pages, maps page names to
-# template names.
-#html_additional_pages = {}
-
-# If false, no module index is generated.
-#html_domain_indices = True
-
-# If false, no index is generated.
-#html_use_index = True
-
-# If true, the index is split into individual pages for each letter.
-#html_split_index = False
-
-# If true, links to the reST sources are added to the pages.
-#html_show_sourcelink = True
-
-# If true, "Created using Sphinx" is shown in the HTML footer. Default is True.
-#html_show_sphinx = True
-
-# If true, "(C) Copyright ..." is shown in the HTML footer. Default is True.
-#html_show_copyright = True
-
-# If true, an OpenSearch description file will be output, and all pages will
-# contain a tag referring to it. The value of this option must be the
-# base URL from which the finished HTML is served.
-#html_use_opensearch = ''
-
-# This is the file name suffix for HTML files (e.g. ".xhtml").
-#html_file_suffix = None
-
-# Output file base name for HTML help builder.
-htmlhelp_basename = 'Twig'
-
-
-# -- Options for LaTeX output --------------------------------------------------
-
-latex_elements = {
-# The paper size ('letterpaper' or 'a4paper').
-#'papersize': 'letterpaper',
-
-# The font size ('10pt', '11pt' or '12pt').
-#'pointsize': '10pt',
-
-# Additional stuff for the LaTeX preamble.
-#'preamble': '',
-}
-
-# Grouping the document tree into LaTeX files. List of tuples
-# (source start file, target name, title, author, documentclass [howto/manual]).
-#latex_documents = []
-
-# The name of an image file (relative to this directory) to place at the top of
-# the title page.
-#latex_logo = None
-
-# For "manual" documents, if this is true, then toplevel headings are parts,
-# not chapters.
-#latex_use_parts = False
-
-# If true, show page references after internal links.
-#latex_show_pagerefs = False
-
-# If true, show URL addresses after external links.
-#latex_show_urls = False
-
-# Documents to append as an appendix to all manuals.
-#latex_appendices = []
-
-# If false, no module index is generated.
-#latex_domain_indices = True
-
-
-# -- Options for manual page output --------------------------------------------
-
-# One entry per manual page. List of tuples
-# (source start file, name, description, authors, manual section).
-#man_pages = []
-
-# If true, show URL addresses after external links.
-#man_show_urls = False
-
-
-# -- Options for Texinfo output ------------------------------------------------
-
-# Grouping the document tree into Texinfo files. List of tuples
-# (source start file, target name, title, author,
-# dir menu entry, description, category)
-#texinfo_documents = []
-
-# Documents to append as an appendix to all manuals.
-#texinfo_appendices = []
-
-# If false, no module index is generated.
-#texinfo_domain_indices = True
-
-# How to display URL addresses: 'footnote', 'no', or 'inline'.
-#texinfo_show_urls = 'footnote'
-
-# Use PHP syntax highlighting in code examples by default
-highlight_language='php'
diff --git a/vendor/twig/twig/doc/advanced.rst b/vendor/twig/twig/doc/advanced.rst
deleted file mode 100644
index ce97c71..0000000
--- a/vendor/twig/twig/doc/advanced.rst
+++ /dev/null
@@ -1,959 +0,0 @@
-Extending Twig
-==============
-
-Twig can be extended in many ways; you can add extra tags, filters, tests,
-operators, global variables, and functions. You can even extend the parser
-itself with node visitors.
-
-.. note::
-
- The first section of this chapter describes how to extend Twig. If you want
- to reuse your changes in different projects or if you want to share them
- with others, you should then create an extension as described in the
- following section.
-
-.. caution::
-
- When extending Twig without creating an extension, Twig won't be able to
- recompile your templates when the PHP code is updated. To see your changes
- in real-time, either disable template caching or package your code into an
- extension (see the next section of this chapter).
-
-Before extending Twig, you must understand the differences between all the
-different possible extension points and when to use them.
-
-First, remember that Twig has two main language constructs:
-
-* ``{{ }}``: used to print the result of an expression evaluation;
-
-* ``{% %}``: used to execute statements.
-
-To understand why Twig exposes so many extension points, let's see how to
-implement a *Lorem ipsum* generator (it needs to know the number of words to
-generate).
-
-You can use a ``lipsum`` *tag*:
-
-.. code-block:: twig
-
- {% lipsum 40 %}
-
-That works, but using a tag for ``lipsum`` is not a good idea for at least
-three main reasons:
-
-* ``lipsum`` is not a language construct;
-* The tag outputs something;
-* The tag is not flexible as you cannot use it in an expression:
-
- .. code-block:: twig
-
- {{ 'some text' ~ {% lipsum 40 %} ~ 'some more text' }}
-
-In fact, you rarely need to create tags; and that's good news because tags are
-the most complex extension point.
-
-Now, let's use a ``lipsum`` *filter*:
-
-.. code-block:: twig
-
- {{ 40|lipsum }}
-
-Again, it works. But a filter should transform the passed value to something
-else. Here, we use the value to indicate the number of words to generate (so,
-``40`` is an argument of the filter, not the value we want to transform).
-
-Next, let's use a ``lipsum`` *function*:
-
-.. code-block:: twig
-
- {{ lipsum(40) }}
-
-Here we go. For this specific example, the creation of a function is the
-extension point to use. And you can use it anywhere an expression is accepted:
-
-.. code-block:: twig
-
- {{ 'some text' ~ lipsum(40) ~ 'some more text' }}
-
- {% set lipsum = lipsum(40) %}
-
-Lastly, you can also use a *global* object with a method able to generate lorem
-ipsum text:
-
-.. code-block:: twig
-
- {{ text.lipsum(40) }}
-
-As a rule of thumb, use functions for frequently used features and global
-objects for everything else.
-
-Keep in mind the following when you want to extend Twig:
-
-========== ========================== ========== =========================
-What? Implementation difficulty? How often? When?
-========== ========================== ========== =========================
-*macro* simple frequent Content generation
-*global* simple frequent Helper object
-*function* simple frequent Content generation
-*filter* simple frequent Value transformation
-*tag* complex rare DSL language construct
-*test* simple rare Boolean decision
-*operator* simple rare Values transformation
-========== ========================== ========== =========================
-
-Globals
--------
-
-A global variable is like any other template variable, except that it's
-available in all templates and macros::
-
- $twig = new \Twig\Environment($loader);
- $twig->addGlobal('text', new Text());
-
-You can then use the ``text`` variable anywhere in a template:
-
-.. code-block:: twig
-
- {{ text.lipsum(40) }}
-
-Filters
--------
-
-Creating a filter consists of associating a name with a PHP callable::
-
- // an anonymous function
- $filter = new \Twig\TwigFilter('rot13', function ($string) {
- return str_rot13($string);
- });
-
- // or a simple PHP function
- $filter = new \Twig\TwigFilter('rot13', 'str_rot13');
-
- // or a class static method
- $filter = new \Twig\TwigFilter('rot13', ['SomeClass', 'rot13Filter']);
- $filter = new \Twig\TwigFilter('rot13', 'SomeClass::rot13Filter');
-
- // or a class method
- $filter = new \Twig\TwigFilter('rot13', [$this, 'rot13Filter']);
- // the one below needs a runtime implementation (see below for more information)
- $filter = new \Twig\TwigFilter('rot13', ['SomeClass', 'rot13Filter']);
-
-The first argument passed to the ``\Twig\TwigFilter`` constructor is the name
-of the filter you will use in templates and the second one is the PHP callable
-to associate with it.
-
-Then, add the filter to the Twig environment::
-
- $twig = new \Twig\Environment($loader);
- $twig->addFilter($filter);
-
-And here is how to use it in a template:
-
-.. code-block:: twig
-
- {{ 'Twig'|rot13 }}
-
- {# will output Gjvt #}
-
-When called by Twig, the PHP callable receives the left side of the filter
-(before the pipe ``|``) as the first argument and the extra arguments passed
-to the filter (within parentheses ``()``) as extra arguments.
-
-For instance, the following code:
-
-.. code-block:: twig
-
- {{ 'TWIG'|lower }}
- {{ now|date('d/m/Y') }}
-
-is compiled to something like the following::
-
-
-
-
-The ``\Twig\TwigFilter`` class takes an array of options as its last
-argument::
-
- $filter = new \Twig\TwigFilter('rot13', 'str_rot13', $options);
-
-Environment-aware Filters
-~~~~~~~~~~~~~~~~~~~~~~~~~
-
-If you want to access the current environment instance in your filter, set the
-``needs_environment`` option to ``true``; Twig will pass the current
-environment as the first argument to the filter call::
-
- $filter = new \Twig\TwigFilter('rot13', function (\Twig\Environment $env, $string) {
- // get the current charset for instance
- $charset = $env->getCharset();
-
- return str_rot13($string);
- }, ['needs_environment' => true]);
-
-Context-aware Filters
-~~~~~~~~~~~~~~~~~~~~~
-
-If you want to access the current context in your filter, set the
-``needs_context`` option to ``true``; Twig will pass the current context as
-the first argument to the filter call (or the second one if
-``needs_environment`` is also set to ``true``)::
-
- $filter = new \Twig\TwigFilter('rot13', function ($context, $string) {
- // ...
- }, ['needs_context' => true]);
-
- $filter = new \Twig\TwigFilter('rot13', function (\Twig\Environment $env, $context, $string) {
- // ...
- }, ['needs_context' => true, 'needs_environment' => true]);
-
-Automatic Escaping
-~~~~~~~~~~~~~~~~~~
-
-If automatic escaping is enabled, the output of the filter may be escaped
-before printing. If your filter acts as an escaper (or explicitly outputs HTML
-or JavaScript code), you will want the raw output to be printed. In such a
-case, set the ``is_safe`` option::
-
- $filter = new \Twig\TwigFilter('nl2br', 'nl2br', ['is_safe' => ['html']]);
-
-Some filters may need to work on input that is already escaped or safe, for
-example when adding (safe) HTML tags to originally unsafe output. In such a
-case, set the ``pre_escape`` option to escape the input data before it is run
-through your filter::
-
- $filter = new \Twig\TwigFilter('somefilter', 'somefilter', ['pre_escape' => 'html', 'is_safe' => ['html']]);
-
-Variadic Filters
-~~~~~~~~~~~~~~~~
-
-.. versionadded:: 1.19
-
- Support for variadic filters was added in Twig 1.19.
-
-When a filter should accept an arbitrary number of arguments, set the
-``is_variadic`` option to ``true``; Twig will pass the extra arguments as the
-last argument to the filter call as an array::
-
- $filter = new \Twig\TwigFilter('thumbnail', function ($file, array $options = []) {
- // ...
- }, ['is_variadic' => true]);
-
-Be warned that :ref:`named arguments ` passed to a variadic
-filter cannot be checked for validity as they will automatically end up in the
-option array.
-
-Dynamic Filters
-~~~~~~~~~~~~~~~
-
-A filter name containing the special ``*`` character is a dynamic filter and
-the ``*`` part will match any string::
-
- $filter = new \Twig\TwigFilter('*_path', function ($name, $arguments) {
- // ...
- });
-
-The following filters are matched by the above defined dynamic filter:
-
-* ``product_path``
-* ``category_path``
-
-A dynamic filter can define more than one dynamic parts::
-
- $filter = new \Twig\TwigFilter('*_path_*', function ($name, $suffix, $arguments) {
- // ...
- });
-
-The filter receives all dynamic part values before the normal filter arguments,
-but after the environment and the context. For instance, a call to
-``'foo'|a_path_b()`` will result in the following arguments to be passed to the
-filter: ``('a', 'b', 'foo')``.
-
-Deprecated Filters
-~~~~~~~~~~~~~~~~~~
-
-.. versionadded:: 1.21
-
- Support for ``deprecated`` filters was added in Twig 1.21.
-
-You can mark a filter as being deprecated by setting the ``deprecated`` option
-to ``true``. You can also give an alternative filter that replaces the
-deprecated one when that makes sense::
-
- $filter = new \Twig\TwigFilter('obsolete', function () {
- // ...
- }, ['deprecated' => true, 'alternative' => 'new_one']);
-
-When a filter is deprecated, Twig emits a deprecation notice when compiling a
-template using it. See :ref:`deprecation-notices` for more information.
-
-Functions
----------
-
-Functions are defined in the exact same way as filters, but you need to create
-an instance of ``\Twig\TwigFunction``::
-
- $twig = new \Twig\Environment($loader);
- $function = new \Twig\TwigFunction('function_name', function () {
- // ...
- });
- $twig->addFunction($function);
-
-Functions support the same features as filters, except for the ``pre_escape``
-and ``preserves_safety`` options.
-
-Tests
------
-
-Tests are defined in the exact same way as filters and functions, but you need
-to create an instance of ``\Twig\TwigTest``::
-
- $twig = new \Twig\Environment($loader);
- $test = new \Twig\TwigTest('test_name', function () {
- // ...
- });
- $twig->addTest($test);
-
-Tests allow you to create custom application specific logic for evaluating
-boolean conditions. As a simple example, let's create a Twig test that checks if
-objects are 'red'::
-
- $twig = new \Twig\Environment($loader);
- $test = new \Twig\TwigTest('red', function ($value) {
- if (isset($value->color) && $value->color == 'red') {
- return true;
- }
- if (isset($value->paint) && $value->paint == 'red') {
- return true;
- }
- return false;
- });
- $twig->addTest($test);
-
-Test functions must always return ``true``/``false``.
-
-When creating tests you can use the ``node_class`` option to provide custom test
-compilation. This is useful if your test can be compiled into PHP primitives.
-This is used by many of the tests built into Twig::
-
- namespace App;
-
- use Twig\Environment;
- use Twig\Node\Expression\TestExpression;
- use Twig\TwigTest;
-
- $twig = new Environment($loader);
- $test = new TwigTest(
- 'odd',
- null,
- ['node_class' => OddTestExpression::class]);
- $twig->addTest($test);
-
- class OddTestExpression extends TestExpression
- {
- public function compile(\Twig\Compiler $compiler)
- {
- $compiler
- ->raw('(')
- ->subcompile($this->getNode('node'))
- ->raw(' % 2 != 0')
- ->raw(')')
- ;
- }
- }
-
-The above example shows how you can create tests that use a node class. The node
-class has access to one sub-node called ``node``. This sub-node contains the
-value that is being tested. When the ``odd`` filter is used in code such as:
-
-.. code-block:: twig
-
- {% if my_value is odd %}
-
-The ``node`` sub-node will contain an expression of ``my_value``. Node-based
-tests also have access to the ``arguments`` node. This node will contain the
-various other arguments that have been provided to your test.
-
-.. versionadded:: 1.36
-
- Dynamic tests support was added in Twig 1.36.
-
-If you want to pass a variable number of positional or named arguments to the
-test, set the ``is_variadic`` option to ``true``. Tests support dynamic
-names (see dynamic filters for the syntax).
-
-Tags
-----
-
-One of the most exciting features of a template engine like Twig is the
-possibility to define new **language constructs**. This is also the most complex
-feature as you need to understand how Twig's internals work.
-
-Most of the time though, a tag is not needed:
-
-* If your tag generates some output, use a **function** instead.
-
-* If your tag modifies some content and returns it, use a **filter** instead.
-
- For instance, if you want to create a tag that converts a Markdown formatted
- text to HTML, create a ``markdown`` filter instead:
-
- .. code-block:: twig
-
- {{ '**markdown** text'|markdown }}
-
- If you want use this filter on large amounts of text, wrap it with the
- :doc:`apply ` tag:
-
- .. code-block:: twig
-
- {% apply markdown %}
- Title
- =====
-
- Much better than creating a tag as you can **compose** filters.
- {% endapply %}
-
- .. note::
-
- The ``apply`` tag was introduced in Twig 1.40; use the ``filter`` tag with
- previous versions.
-
-* If your tag does not output anything, but only exists because of a side
- effect, create a **function** that returns nothing and call it via the
- :doc:`filter ` tag.
-
- For instance, if you want to create a tag that logs text, create a ``log``
- function instead and call it via the :doc:`do ` tag:
-
- .. code-block:: twig
-
- {% do log('Log some things') %}
-
-If you still want to create a tag for a new language construct, great!
-
-Let's create a ``set`` tag that allows the definition of simple variables from
-within a template. The tag can be used like follows:
-
-.. code-block:: twig
-
- {% set name = "value" %}
-
- {{ name }}
-
- {# should output value #}
-
-.. note::
-
- The ``set`` tag is part of the Core extension and as such is always
- available. The built-in version is slightly more powerful and supports
- multiple assignments by default.
-
-Three steps are needed to define a new tag:
-
-* Defining a Token Parser class (responsible for parsing the template code);
-
-* Defining a Node class (responsible for converting the parsed code to PHP);
-
-* Registering the tag.
-
-Registering a new tag
-~~~~~~~~~~~~~~~~~~~~~
-
-Add a tag by calling the ``addTokenParser`` method on the ``\Twig\Environment``
-instance::
-
- $twig = new \Twig\Environment($loader);
- $twig->addTokenParser(new Project_Set_TokenParser());
-
-Defining a Token Parser
-~~~~~~~~~~~~~~~~~~~~~~~
-
-Now, let's see the actual code of this class::
-
- class Project_Set_TokenParser extends \Twig\TokenParser\AbstractTokenParser
- {
- public function parse(\Twig\Token $token)
- {
- $parser = $this->parser;
- $stream = $parser->getStream();
-
- $name = $stream->expect(\Twig\Token::NAME_TYPE)->getValue();
- $stream->expect(\Twig\Token::OPERATOR_TYPE, '=');
- $value = $parser->getExpressionParser()->parseExpression();
- $stream->expect(\Twig\Token::BLOCK_END_TYPE);
-
- return new Project_Set_Node($name, $value, $token->getLine(), $this->getTag());
- }
-
- public function getTag()
- {
- return 'set';
- }
- }
-
-The ``getTag()`` method must return the tag we want to parse, here ``set``.
-
-The ``parse()`` method is invoked whenever the parser encounters a ``set``
-tag. It should return a ``\Twig\Node\Node`` instance that represents the node (the
-``Project_Set_Node`` calls creating is explained in the next section).
-
-The parsing process is simplified thanks to a bunch of methods you can call
-from the token stream (``$this->parser->getStream()``):
-
-* ``getCurrent()``: Gets the current token in the stream.
-
-* ``next()``: Moves to the next token in the stream, *but returns the old one*.
-
-* ``test($type)``, ``test($value)`` or ``test($type, $value)``: Determines whether
- the current token is of a particular type or value (or both). The value may be an
- array of several possible values.
-
-* ``expect($type[, $value[, $message]])``: If the current token isn't of the given
- type/value a syntax error is thrown. Otherwise, if the type and value are correct,
- the token is returned and the stream moves to the next token.
-
-* ``look()``: Looks at the next token without consuming it.
-
-Parsing expressions is done by calling the ``parseExpression()`` like we did for
-the ``set`` tag.
-
-.. tip::
-
- Reading the existing ``TokenParser`` classes is the best way to learn all
- the nitty-gritty details of the parsing process.
-
-Defining a Node
-~~~~~~~~~~~~~~~
-
-The ``Project_Set_Node`` class itself is quite short::
-
- class Project_Set_Node extends \Twig\Node\Node
- {
- public function __construct($name, \Twig\Node\Expression\AbstractExpression $value, $line, $tag = null)
- {
- parent::__construct(['value' => $value], ['name' => $name], $line, $tag);
- }
-
- public function compile(\Twig\Compiler $compiler)
- {
- $compiler
- ->addDebugInfo($this)
- ->write('$context[\''.$this->getAttribute('name').'\'] = ')
- ->subcompile($this->getNode('value'))
- ->raw(";\n")
- ;
- }
- }
-
-The compiler implements a fluid interface and provides methods that helps the
-developer generate beautiful and readable PHP code:
-
-* ``subcompile()``: Compiles a node.
-
-* ``raw()``: Writes the given string as is.
-
-* ``write()``: Writes the given string by adding indentation at the beginning
- of each line.
-
-* ``string()``: Writes a quoted string.
-
-* ``repr()``: Writes a PHP representation of a given value (see
- ``\Twig\Node\ForNode`` for a usage example).
-
-* ``addDebugInfo()``: Adds the line of the original template file related to
- the current node as a comment.
-
-* ``indent()``: Indents the generated code (see ``\Twig\Node\BlockNode`` for a
- usage example).
-
-* ``outdent()``: Outdents the generated code (see ``\Twig\Node\BlockNode`` for a
- usage example).
-
-.. _creating_extensions:
-
-Creating an Extension
----------------------
-
-The main motivation for writing an extension is to move often used code into a
-reusable class like adding support for internationalization. An extension can
-define tags, filters, tests, operators, functions, and node visitors.
-
-Most of the time, it is useful to create a single extension for your project,
-to host all the specific tags and filters you want to add to Twig.
-
-.. tip::
-
- When packaging your code into an extension, Twig is smart enough to
- recompile your templates whenever you make a change to it (when
- ``auto_reload`` is enabled).
-
-An extension is a class that implements the following interface::
-
- interface Twig_ExtensionInterface
- {
- /**
- * Initializes the runtime environment.
- *
- * This is where you can load some file that contains filter functions for instance.
- *
- * @deprecated since 1.23 (to be removed in 2.0), implement \Twig\Extension\InitRuntimeInterface instead
- */
- function initRuntime(\Twig\Environment $environment);
-
- /**
- * Returns the token parser instances to add to the existing list.
- *
- * @return (Twig_TokenParserInterface|Twig_TokenParserBrokerInterface)[]
- */
- function getTokenParsers();
-
- /**
- * Returns the node visitor instances to add to the existing list.
- *
- * @return \Twig\NodeVisitor\NodeVisitorInterface[]
- */
- function getNodeVisitors();
-
- /**
- * Returns a list of filters to add to the existing list.
- *
- * @return \Twig\TwigFilter[]
- */
- function getFilters();
-
- /**
- * Returns a list of tests to add to the existing list.
- *
- * @return \Twig\TwigTest[]
- */
- function getTests();
-
- /**
- * Returns a list of functions to add to the existing list.
- *
- * @return \Twig\TwigFunction[]
- */
- function getFunctions();
-
- /**
- * Returns a list of operators to add to the existing list.
- *
- * @return array First array of unary operators, second array of binary operators
- */
- function getOperators();
-
- /**
- * Returns a list of global variables to add to the existing list.
- *
- * @return array An array of global variables
- *
- * @deprecated since 1.23 (to be removed in 2.0), implement \Twig\Extension\GlobalsInterface instead
- */
- function getGlobals();
-
- /**
- * Returns the name of the extension.
- *
- * @return string The extension name
- *
- * @deprecated since 1.26 (to be removed in 2.0), not used anymore internally
- */
- function getName();
- }
-
-To keep your extension class clean and lean, inherit from the built-in
-``\Twig\Extension\AbstractExtension`` class instead of implementing the interface as it provides
-empty implementations for all methods::
-
- class Project_Twig_Extension extends \Twig\Extension\AbstractExtension
- {
- }
-
-This extension does nothing for now. We will customize it in the next sections.
-
-.. note::
-
- Prior to Twig 1.26, you must implement the ``getName()`` method which must
- return a unique identifier for the extension.
-
-You can save your extension anywhere on the filesystem, as all extensions must
-be registered explicitly to be available in your templates.
-
-You can register an extension by using the ``addExtension()`` method on your
-main ``Environment`` object::
-
- $twig = new \Twig\Environment($loader);
- $twig->addExtension(new Project_Twig_Extension());
-
-.. tip::
-
- The Twig core extensions are great examples of how extensions work.
-
-Globals
-~~~~~~~
-
-Global variables can be registered in an extension via the ``getGlobals()``
-method::
-
- class Project_Twig_Extension extends \Twig\Extension\AbstractExtension implements \Twig\Extension\GlobalsInterface
- {
- public function getGlobals()
- {
- return [
- 'text' => new Text(),
- ];
- }
-
- // ...
- }
-
-Functions
-~~~~~~~~~
-
-Functions can be registered in an extension via the ``getFunctions()``
-method::
-
- class Project_Twig_Extension extends \Twig\Extension\AbstractExtension
- {
- public function getFunctions()
- {
- return [
- new \Twig\TwigFunction('lipsum', 'generate_lipsum'),
- ];
- }
-
- // ...
- }
-
-Filters
-~~~~~~~
-
-To add a filter to an extension, you need to override the ``getFilters()``
-method. This method must return an array of filters to add to the Twig
-environment::
-
- class Project_Twig_Extension extends \Twig\Extension\AbstractExtension
- {
- public function getFilters()
- {
- return [
- new \Twig\TwigFilter('rot13', 'str_rot13'),
- ];
- }
-
- // ...
- }
-
-Tags
-~~~~
-
-Adding a tag in an extension can be done by overriding the
-``getTokenParsers()`` method. This method must return an array of tags to add
-to the Twig environment::
-
- class Project_Twig_Extension extends \Twig\Extension\AbstractExtension
- {
- public function getTokenParsers()
- {
- return [new Project_Set_TokenParser()];
- }
-
- // ...
- }
-
-In the above code, we have added a single new tag, defined by the
-``Project_Set_TokenParser`` class. The ``Project_Set_TokenParser`` class is
-responsible for parsing the tag and compiling it to PHP.
-
-Operators
-~~~~~~~~~
-
-The ``getOperators()`` methods lets you add new operators. Here is how to add
-the ``!``, ``||``, and ``&&`` operators::
-
- class Project_Twig_Extension extends \Twig\Extension\AbstractExtension
- {
- public function getOperators()
- {
- return [
- [
- '!' => ['precedence' => 50, 'class' => '\Twig\Node\Expression\Unary\NotUnary'],
- ],
- [
- '||' => ['precedence' => 10, 'class' => '\Twig\Node\Expression\Binary\OrBinary', 'associativity' => \Twig\ExpressionParser::OPERATOR_LEFT],
- '&&' => ['precedence' => 15, 'class' => '\Twig\Node\Expression\Binary\AndBinary', 'associativity' => \Twig\ExpressionParser::OPERATOR_LEFT],
- ],
- ];
- }
-
- // ...
- }
-
-Tests
-~~~~~
-
-The ``getTests()`` method lets you add new test functions::
-
- class Project_Twig_Extension extends \Twig\Extension\AbstractExtension
- {
- public function getTests()
- {
- return [
- new \Twig\TwigTest('even', 'twig_test_even'),
- ];
- }
-
- // ...
- }
-
-Definition vs Runtime
-~~~~~~~~~~~~~~~~~~~~~
-
-Twig filters, functions, and tests runtime implementations can be defined as
-any valid PHP callable:
-
-* **functions/static methods**: Simple to implement and fast (used by all Twig
- core extensions); but it is hard for the runtime to depend on external
- objects;
-
-* **closures**: Simple to implement;
-
-* **object methods**: More flexible and required if your runtime code depends
- on external objects.
-
-The simplest way to use methods is to define them on the extension itself::
-
- class Project_Twig_Extension extends \Twig\Extension\AbstractExtension
- {
- private $rot13Provider;
-
- public function __construct($rot13Provider)
- {
- $this->rot13Provider = $rot13Provider;
- }
-
- public function getFunctions()
- {
- return [
- new \Twig\TwigFunction('rot13', [$this, 'rot13']),
- ];
- }
-
- public function rot13($value)
- {
- return $this->rot13Provider->rot13($value);
- }
- }
-
-This is very convenient but not recommended as it makes template compilation
-depend on runtime dependencies even if they are not needed (think for instance
-as a dependency that connects to a database engine).
-
-As of Twig 1.26, you can decouple the extension definitions from their
-runtime implementations by registering a ``\Twig\RuntimeLoader\RuntimeLoaderInterface``
-instance on the environment that knows how to instantiate such runtime classes
-(runtime classes must be autoload-able)::
-
- class RuntimeLoader implements \Twig\RuntimeLoader\RuntimeLoaderInterface
- {
- public function load($class)
- {
- // implement the logic to create an instance of $class
- // and inject its dependencies
- // most of the time, it means using your dependency injection container
- if ('Project_Twig_RuntimeExtension' === $class) {
- return new $class(new Rot13Provider());
- } else {
- // ...
- }
- }
- }
-
- $twig->addRuntimeLoader(new RuntimeLoader());
-
-.. note::
-
- As of Twig 1.32, Twig comes with a PSR-11 compatible runtime loader
- (``\Twig\RuntimeLoader\ContainerRuntimeLoader``).
-
-It is now possible to move the runtime logic to a new
-``Project_Twig_RuntimeExtension`` class and use it directly in the extension::
-
- class Project_Twig_RuntimeExtension
- {
- private $rot13Provider;
-
- public function __construct($rot13Provider)
- {
- $this->rot13Provider = $rot13Provider;
- }
-
- public function rot13($value)
- {
- return $this->rot13Provider->rot13($value);
- }
- }
-
- class Project_Twig_Extension extends \Twig\Extension\AbstractExtension
- {
- public function getFunctions()
- {
- return [
- new \Twig\TwigFunction('rot13', ['Project_Twig_RuntimeExtension', 'rot13']),
- // or
- new \Twig\TwigFunction('rot13', 'Project_Twig_RuntimeExtension::rot13'),
- ];
- }
- }
-
-Testing an Extension
---------------------
-
-Functional Tests
-~~~~~~~~~~~~~~~~
-
-You can create functional tests for extensions by creating the following file
-structure in your test directory::
-
- Fixtures/
- filters/
- foo.test
- bar.test
- functions/
- foo.test
- bar.test
- tags/
- foo.test
- bar.test
- IntegrationTest.php
-
-The ``IntegrationTest.php`` file should look like this::
-
- class Project_Tests_IntegrationTest extends \Twig\Test\IntegrationTestCase
- {
- public function getExtensions()
- {
- return [
- new Project_Twig_Extension1(),
- new Project_Twig_Extension2(),
- ];
- }
-
- public function getFixturesDir()
- {
- return __DIR__.'/Fixtures/';
- }
- }
-
-Fixtures examples can be found within the Twig repository
-`tests/Twig/Fixtures`_ directory.
-
-Node Tests
-~~~~~~~~~~
-
-Testing the node visitors can be complex, so extend your test cases from
-``\Twig\Test\NodeTestCase``. Examples can be found in the Twig repository
-`tests/Twig/Node`_ directory.
-
-.. _`tests/Twig/Fixtures`: https://github.com/twigphp/Twig/tree/1.x/tests/Fixtures
-.. _`tests/Twig/Node`: https://github.com/twigphp/Twig/tree/1.x/tests/Node
diff --git a/vendor/twig/twig/doc/api.rst b/vendor/twig/twig/doc/api.rst
deleted file mode 100644
index 0c50cd7..0000000
--- a/vendor/twig/twig/doc/api.rst
+++ /dev/null
@@ -1,594 +0,0 @@
-Twig for Developers
-===================
-
-This chapter describes the API to Twig and not the template language. It will
-be most useful as reference to those implementing the template interface to
-the application and not those who are creating Twig templates.
-
-Basics
-------
-
-Twig uses a central object called the **environment** (of class
-``\Twig\Environment``). Instances of this class are used to store the
-configuration and extensions, and are used to load templates.
-
-Most applications create one ``\Twig\Environment`` object on application
-initialization and use that to load templates. In some cases, it might be useful
-to have multiple environments side by side, with different configurations.
-
-The typical way to configure Twig to load templates for an application looks
-roughly like this::
-
- require_once '/path/to/vendor/autoload.php';
-
- $loader = new \Twig\Loader\FilesystemLoader('/path/to/templates');
- $twig = new \Twig\Environment($loader, [
- 'cache' => '/path/to/compilation_cache',
- ]);
-
-This creates a template environment with a default configuration and a loader
-that looks up templates in the ``/path/to/templates/`` directory. Different
-loaders are available and you can also write your own if you want to load
-templates from a database or other resources.
-
-.. note::
-
- Notice that the second argument of the environment is an array of options.
- The ``cache`` option is a compilation cache directory, where Twig caches
- the compiled templates to avoid the parsing phase for sub-sequent
- requests. It is very different from the cache you might want to add for
- the evaluated templates. For such a need, you can use any available PHP
- cache library.
-
-Rendering Templates
--------------------
-
-To load a template from a Twig environment, call the ``load()`` method which
-returns a ``\Twig\TemplateWrapper`` instance::
-
- $template = $twig->load('index.html');
-
-.. note::
-
- Before Twig 1.28, use ``loadTemplate()`` instead which returns a
- ``\Twig\Template`` instance.
-
-To render the template with some variables, call the ``render()`` method::
-
- echo $template->render(['the' => 'variables', 'go' => 'here']);
-
-.. note::
-
- The ``display()`` method is a shortcut to output the rendered template.
-
-You can also load and render the template in one fell swoop::
-
- echo $twig->render('index.html', ['the' => 'variables', 'go' => 'here']);
-
-.. versionadded:: 1.28
-
- The possibility to render blocks from the API was added in Twig 1.28.
-
-If a template defines blocks, they can be rendered individually via the
-``renderBlock()`` call::
-
- echo $template->renderBlock('block_name', ['the' => 'variables', 'go' => 'here']);
-
-.. _environment_options:
-
-Environment Options
--------------------
-
-When creating a new ``\Twig\Environment`` instance, you can pass an array of
-options as the constructor second argument::
-
- $twig = new \Twig\Environment($loader, ['debug' => true]);
-
-The following options are available:
-
-* ``debug`` *boolean*
-
- When set to ``true``, the generated templates have a
- ``__toString()`` method that you can use to display the generated nodes
- (default to ``false``).
-
-* ``charset`` *string* (defaults to ``utf-8``)
-
- The charset used by the templates.
-
-* ``base_template_class`` *string* (defaults to ``\Twig\Template``)
-
- The base template class to use for generated
- templates.
-
-* ``cache`` *string* or ``false``
-
- An absolute path where to store the compiled templates, or
- ``false`` to disable caching (which is the default).
-
-* ``auto_reload`` *boolean*
-
- When developing with Twig, it's useful to recompile the
- template whenever the source code changes. If you don't provide a value for
- the ``auto_reload`` option, it will be determined automatically based on the
- ``debug`` value.
-
-* ``strict_variables`` *boolean*
-
- If set to ``false``, Twig will silently ignore invalid
- variables (variables and or attributes/methods that do not exist) and
- replace them with a ``null`` value. When set to ``true``, Twig throws an
- exception instead (default to ``false``).
-
-* ``autoescape`` *string* or *boolean*
-
- If set to ``true``, HTML auto-escaping will be enabled by
- default for all templates (default to ``true``).
-
- As of Twig 1.8, you can set the escaping strategy to use (``html``, ``js``,
- ``false`` to disable).
-
- As of Twig 1.9, you can set the escaping strategy to use (``css``, ``url``,
- ``html_attr``, or a PHP callback that takes the template name and must
- return the escaping strategy to use -- the callback cannot be a function name
- to avoid collision with built-in escaping strategies).
-
- As of Twig 1.17, the ``filename`` escaping strategy (renamed to ``name`` as
- of Twig 1.27) determines the escaping strategy to use for a template based on
- the template filename extension (this strategy does not incur any overhead at
- runtime as auto-escaping is done at compilation time.)
-
-* ``optimizations`` *integer*
-
- A flag that indicates which optimizations to apply
- (default to ``-1`` -- all optimizations are enabled; set it to ``0`` to
- disable).
-
-Loaders
--------
-
-Loaders are responsible for loading templates from a resource such as the file
-system.
-
-Compilation Cache
-~~~~~~~~~~~~~~~~~
-
-All template loaders can cache the compiled templates on the filesystem for
-future reuse. It speeds up Twig a lot as templates are only compiled once.
-
-Built-in Loaders
-~~~~~~~~~~~~~~~~
-
-Here is a list of the built-in loaders:
-
-``\Twig\Loader\FilesystemLoader``
-.................................
-
-.. versionadded:: 1.10
-
- The ``prependPath()`` and support for namespaces were added in Twig 1.10.
-
-.. versionadded:: 1.27
-
- Relative paths support was added in Twig 1.27.
-
-``\Twig\Loader\FilesystemLoader`` loads templates from the file system. This loader
-can find templates in folders on the file system and is the preferred way to
-load them::
-
- $loader = new \Twig\Loader\FilesystemLoader($templateDir);
-
-It can also look for templates in an array of directories::
-
- $loader = new \Twig\Loader\FilesystemLoader([$templateDir1, $templateDir2]);
-
-With such a configuration, Twig will first look for templates in
-``$templateDir1`` and if they do not exist, it will fallback to look for them
-in the ``$templateDir2``.
-
-You can add or prepend paths via the ``addPath()`` and ``prependPath()``
-methods::
-
- $loader->addPath($templateDir3);
- $loader->prependPath($templateDir4);
-
-The filesystem loader also supports namespaced templates. This allows to group
-your templates under different namespaces which have their own template paths.
-
-When using the ``setPaths()``, ``addPath()``, and ``prependPath()`` methods,
-specify the namespace as the second argument (when not specified, these
-methods act on the "main" namespace)::
-
- $loader->addPath($templateDir, 'admin');
-
-Namespaced templates can be accessed via the special
-``@namespace_name/template_path`` notation::
-
- $twig->render('@admin/index.html', []);
-
-``\Twig\Loader\FilesystemLoader`` support absolute and relative paths. Using relative
-paths is preferred as it makes the cache keys independent of the project root
-directory (for instance, it allows warming the cache from a build server where
-the directory might be different from the one used on production servers)::
-
- $loader = new \Twig\Loader\FilesystemLoader('templates', getcwd().'/..');
-
-.. note::
-
- When not passing the root path as a second argument, Twig uses ``getcwd()``
- for relative paths.
-
-``\Twig\Loader\ArrayLoader``
-............................
-
-``\Twig\Loader\ArrayLoader`` loads a template from a PHP array. It is passed an
-array of strings bound to template names::
-
- $loader = new \Twig\Loader\ArrayLoader([
- 'index.html' => 'Hello {{ name }}!',
- ]);
- $twig = new \Twig\Environment($loader);
-
- echo $twig->render('index.html', ['name' => 'Fabien']);
-
-This loader is very useful for unit testing. It can also be used for small
-projects where storing all templates in a single PHP file might make sense.
-
-.. tip::
-
- When using the ``Array`` loaders with a cache mechanism, you should know
- that a new cache key is generated each time a template content "changes"
- (the cache key being the source code of the template). If you don't want to
- see your cache grows out of control, you need to take care of clearing the
- old cache file by yourself.
-
-``\Twig\Loader\ChainLoader``
-............................
-
-``\Twig\Loader\ChainLoader`` delegates the loading of templates to other loaders::
-
- $loader1 = new \Twig\Loader\ArrayLoader([
- 'base.html' => '{% block content %}{% endblock %}',
- ]);
- $loader2 = new \Twig\Loader\ArrayLoader([
- 'index.html' => '{% extends "base.html" %}{% block content %}Hello {{ name }}{% endblock %}',
- 'base.html' => 'Will never be loaded',
- ]);
-
- $loader = new \Twig\Loader\ChainLoader([$loader1, $loader2]);
-
- $twig = new \Twig\Environment($loader);
-
-When looking for a template, Twig tries each loader in turn and returns as soon
-as the template is found. When rendering the ``index.html`` template from the
-above example, Twig will load it with ``$loader2`` but the ``base.html``
-template will be loaded from ``$loader1``.
-
-.. note::
-
- You can also add loaders via the ``addLoader()`` method.
-
-Create your own Loader
-~~~~~~~~~~~~~~~~~~~~~~
-
-All loaders implement the ``\Twig\Loader\LoaderInterface``::
-
- interface Twig_LoaderInterface
- {
- /**
- * Gets the source code of a template, given its name.
- *
- * @param string $name string The name of the template to load
- *
- * @return string The template source code
- *
- * @deprecated since 1.27 (to be removed in 2.0), implement \Twig\Loader\SourceContextLoaderInterface
- */
- function getSource($name);
-
- /**
- * Gets the cache key to use for the cache for a given template name.
- *
- * @param string $name string The name of the template to load
- *
- * @return string The cache key
- */
- function getCacheKey($name);
-
- /**
- * Returns true if the template is still fresh.
- *
- * @param string $name The template name
- * @param timestamp $time The last modification time of the cached template
- */
- function isFresh($name, $time);
- }
-
-The ``isFresh()`` method must return ``true`` if the current cached template
-is still fresh, given the last modification time, or ``false`` otherwise.
-
-.. note::
-
- As of Twig 1.27, you should also implement
- ``\Twig\Loader\SourceContextLoaderInterface`` to avoid deprecation notices.
-
-.. tip::
-
- As of Twig 1.11.0, you can also implement ``\Twig\Loader\ExistsLoaderInterface``
- to make your loader faster when used with the chain loader.
-
-Using Extensions
-----------------
-
-Twig extensions are packages that add new features to Twig. Register an
-extension via the ``addExtension()`` method::
-
- $twig->addExtension(new \Twig\Extension\SandboxExtension());
-
-Twig comes bundled with the following extensions:
-
-* *Twig\Extension\CoreExtension*: Defines all the core features of Twig.
-
-* *Twig\Extension\DebugExtension*: Defines the ``dump`` function to help debug
- template variables.
-
-* *Twig\Extension\EscaperExtension*: Adds automatic output-escaping and the
- possibility to escape/unescape blocks of code.
-
-* *Twig\Extension\SandboxExtension*: Adds a sandbox mode to the default Twig
- environment, making it safe to evaluate untrusted code.
-
-* *Twig\Extension\ProfilerExtension*: Enables the built-in Twig profiler (as of
- Twig 1.18).
-
-* *Twig\Extension\OptimizerExtension*: Optimizes the node tree before
- compilation.
-
-* *Twig\Extension\StringLoaderExtension*: Defines the ``template_from_string``
- function to allow loading templates from string in a template.
-
-The Core, Escaper, and Optimizer extensions are registered by default.
-
-Built-in Extensions
--------------------
-
-This section describes the features added by the built-in extensions.
-
-.. tip::
-
- Read the chapter about :doc:`extending Twig ` to learn how to
- create your own extensions.
-
-Core Extension
-~~~~~~~~~~~~~~
-
-The ``core`` extension defines all the core features of Twig:
-
-* :doc:`Tags `;
-* :doc:`Filters `;
-* :doc:`Functions `;
-* :doc:`Tests `.
-
-Escaper Extension
-~~~~~~~~~~~~~~~~~
-
-The ``escaper`` extension adds automatic output escaping to Twig. It defines a
-tag, ``autoescape``, and a filter, ``raw``.
-
-When creating the escaper extension, you can switch on or off the global
-output escaping strategy::
-
- $escaper = new \Twig\Extension\EscaperExtension('html');
- $twig->addExtension($escaper);
-
-If set to ``html``, all variables in templates are escaped (using the ``html``
-escaping strategy), except those using the ``raw`` filter:
-
-.. code-block:: twig
-
- {{ article.to_html|raw }}
-
-You can also change the escaping mode locally by using the ``autoescape`` tag
-(see the :doc:`autoescape` doc for the syntax used before
-Twig 1.8):
-
-.. code-block:: twig
-
- {% autoescape 'html' %}
- {{ var }}
- {{ var|raw }} {# var won't be escaped #}
- {{ var|escape }} {# var won't be double-escaped #}
- {% endautoescape %}
-
-.. warning::
-
- The ``autoescape`` tag has no effect on included files.
-
-The escaping rules are implemented as follows:
-
-* Literals (integers, booleans, arrays, ...) used in the template directly as
- variables or filter arguments are never automatically escaped:
-
- .. code-block:: html+twig
-
- {{ "Twig " }} {# won't be escaped #}
-
- {% set text = "Twig " %}
- {{ text }} {# will be escaped #}
-
-* Expressions which the result is a literal or a variable marked safe
- are never automatically escaped:
-
- .. code-block:: html+twig
-
- {{ foo ? "Twig " : " Twig" }} {# won't be escaped #}
-
- {% set text = "Twig " %}
- {{ true ? text : " Twig" }} {# will be escaped #}
- {{ false ? text : " Twig" }} {# won't be escaped #}
-
- {% set text = "Twig " %}
- {{ foo ? text|raw : " Twig" }} {# won't be escaped #}
-
-* Escaping is applied before printing, after any other filter is applied:
-
- .. code-block:: twig
-
- {{ var|upper }} {# is equivalent to {{ var|upper|escape }} #}
-
-* The `raw` filter should only be used at the end of the filter chain:
-
- .. code-block:: twig
-
- {{ var|raw|upper }} {# will be escaped #}
-
- {{ var|upper|raw }} {# won't be escaped #}
-
-* Automatic escaping is not applied if the last filter in the chain is marked
- safe for the current context (e.g. ``html`` or ``js``). ``escape`` and
- ``escape('html')`` are marked safe for HTML, ``escape('js')`` is marked
- safe for JavaScript, ``raw`` is marked safe for everything.
-
- .. code-block:: twig
-
- {% autoescape 'js' %}
- {{ var|escape('html') }} {# will be escaped for HTML and JavaScript #}
- {{ var }} {# will be escaped for JavaScript #}
- {{ var|escape('js') }} {# won't be double-escaped #}
- {% endautoescape %}
-
-.. note::
-
- Note that autoescaping has some limitations as escaping is applied on
- expressions after evaluation. For instance, when working with
- concatenation, ``{{ foo|raw ~ bar }}`` won't give the expected result as
- escaping is applied on the result of the concatenation, not on the
- individual variables (so, the ``raw`` filter won't have any effect here).
-
-Sandbox Extension
-~~~~~~~~~~~~~~~~~
-
-The ``sandbox`` extension can be used to evaluate untrusted code. Access to
-unsafe attributes and methods is prohibited. The sandbox security is managed
-by a policy instance. By default, Twig comes with one policy class:
-``\Twig\Sandbox\SecurityPolicy``. This class allows you to white-list some
-tags, filters, properties, and methods::
-
- $tags = ['if'];
- $filters = ['upper'];
- $methods = [
- 'Article' => ['getTitle', 'getBody'],
- ];
- $properties = [
- 'Article' => ['title', 'body'],
- ];
- $functions = ['range'];
- $policy = new \Twig\Sandbox\SecurityPolicy($tags, $filters, $methods, $properties, $functions);
-
-With the previous configuration, the security policy will only allow usage of
-the ``if`` tag, and the ``upper`` filter. Moreover, the templates will only be
-able to call the ``getTitle()`` and ``getBody()`` methods on ``Article``
-objects, and the ``title`` and ``body`` public properties. Everything else
-won't be allowed and will generate a ``\Twig\Sandbox\SecurityError`` exception.
-
-The policy object is the first argument of the sandbox constructor::
-
- $sandbox = new \Twig\Extension\SandboxExtension($policy);
- $twig->addExtension($sandbox);
-
-By default, the sandbox mode is disabled and should be enabled when including
-untrusted template code by using the ``sandbox`` tag:
-
-.. code-block:: twig
-
- {% sandbox %}
- {% include 'user.html' %}
- {% endsandbox %}
-
-You can sandbox all templates by passing ``true`` as the second argument of
-the extension constructor::
-
- $sandbox = new \Twig\Extension\SandboxExtension($policy, true);
-
-Profiler Extension
-~~~~~~~~~~~~~~~~~~
-
-.. versionadded:: 1.18
-
- The Profile extension was added in Twig 1.18.
-
-The ``profiler`` extension enables a profiler for Twig templates; it should
-only be used on your development machines as it adds some overhead::
-
- $profile = new \Twig\Profiler\Profile();
- $twig->addExtension(new \Twig\Extension\ProfilerExtension($profile));
-
- $dumper = new \Twig\Profiler\Dumper\TextDumper();
- echo $dumper->dump($profile);
-
-A profile contains information about time and memory consumption for template,
-block, and macro executions.
-
-You can also dump the data in a `Blackfire.io `_
-compatible format::
-
- $dumper = new \Twig\Profiler\Dumper\BlackfireDumper();
- file_put_contents('/path/to/profile.prof', $dumper->dump($profile));
-
-Upload the profile to visualize it (create a `free account
-`_
-first):
-
-.. code-block:: sh
-
- blackfire --slot=7 upload /path/to/profile.prof
-
-Optimizer Extension
-~~~~~~~~~~~~~~~~~~~
-
-The ``optimizer`` extension optimizes the node tree before compilation::
-
- $twig->addExtension(new \Twig\Extension\OptimizerExtension());
-
-By default, all optimizations are turned on. You can select the ones you want
-to enable by passing them to the constructor::
-
- $optimizer = new \Twig\Extension\OptimizerExtension(\Twig\NodeVisitor\OptimizerNodeVisitor::OPTIMIZE_FOR);
-
- $twig->addExtension($optimizer);
-
-Twig supports the following optimizations:
-
-* ``\Twig\NodeVisitor\OptimizerNodeVisitor::OPTIMIZE_ALL``, enables all optimizations
- (this is the default value).
-
-* ``\Twig\NodeVisitor\OptimizerNodeVisitor::OPTIMIZE_NONE``, disables all optimizations.
- This reduces the compilation time, but it can increase the execution time
- and the consumed memory.
-
-* ``\Twig\NodeVisitor\OptimizerNodeVisitor::OPTIMIZE_FOR``, optimizes the ``for`` tag by
- removing the ``loop`` variable creation whenever possible.
-
-* ``\Twig\NodeVisitor\OptimizerNodeVisitor::OPTIMIZE_RAW_FILTER``, removes the ``raw``
- filter whenever possible.
-
-* ``\Twig\NodeVisitor\OptimizerNodeVisitor::OPTIMIZE_VAR_ACCESS``, simplifies the creation
- and access of variables in the compiled templates whenever possible.
-
-Exceptions
-----------
-
-Twig can throw exceptions:
-
-* ``\Twig\Error\Error``: The base exception for all errors.
-
-* ``\Twig\Error\SyntaxError``: Thrown to tell the user that there is a problem with
- the template syntax.
-
-* ``\Twig\Error\RuntimeError``: Thrown when an error occurs at runtime (when a filter
- does not exist for instance).
-
-* ``\Twig\Error\LoaderError``: Thrown when an error occurs during template loading.
-
-* ``\Twig\Sandbox\SecurityError``: Thrown when an unallowed tag, filter, or
- method is called in a sandboxed template.
diff --git a/vendor/twig/twig/doc/coding_standards.rst b/vendor/twig/twig/doc/coding_standards.rst
deleted file mode 100644
index 721b0f1..0000000
--- a/vendor/twig/twig/doc/coding_standards.rst
+++ /dev/null
@@ -1,101 +0,0 @@
-Coding Standards
-================
-
-When writing Twig templates, we recommend you to follow these official coding
-standards:
-
-* Put one (and only one) space after the start of a delimiter (``{{``, ``{%``,
- and ``{#``) and before the end of a delimiter (``}}``, ``%}``, and ``#}``):
-
- .. code-block:: twig
-
- {{ foo }}
- {# comment #}
- {% if foo %}{% endif %}
-
- When using the whitespace control character, do not put any spaces between
- it and the delimiter:
-
- .. code-block:: twig
-
- {{- foo -}}
- {#- comment -#}
- {%- if foo -%}{%- endif -%}
-
-* Put one (and only one) space before and after the following operators:
- comparison operators (``==``, ``!=``, ``<``, ``>``, ``>=``, ``<=``), math
- operators (``+``, ``-``, ``/``, ``*``, ``%``, ``//``, ``**``), logic
- operators (``not``, ``and``, ``or``), ``~``, ``is``, ``in``, and the ternary
- operator (``?:``):
-
- .. code-block:: twig
-
- {{ 1 + 2 }}
- {{ foo ~ bar }}
- {{ true ? true : false }}
-
-* Put one (and only one) space after the ``:`` sign in hashes and ``,`` in
- arrays and hashes:
-
- .. code-block:: twig
-
- {{ [1, 2, 3] }}
- {{ {'foo': 'bar'} }}
-
-* Do not put any spaces after an opening parenthesis and before a closing
- parenthesis in expressions:
-
- .. code-block:: twig
-
- {{ 1 + (2 * 3) }}
-
-* Do not put any spaces before and after string delimiters:
-
- .. code-block:: twig
-
- {{ 'foo' }}
- {{ "foo" }}
-
-* Do not put any spaces before and after the following operators: ``|``,
- ``.``, ``..``, ``[]``:
-
- .. code-block:: twig
-
- {{ foo|upper|lower }}
- {{ user.name }}
- {{ user[name] }}
- {% for i in 1..12 %}{% endfor %}
-
-* Do not put any spaces before and after the parenthesis used for filter and
- function calls:
-
- .. code-block:: twig
-
- {{ foo|default('foo') }}
- {{ range(1..10) }}
-
-* Do not put any spaces before and after the opening and the closing of arrays
- and hashes:
-
- .. code-block:: twig
-
- {{ [1, 2, 3] }}
- {{ {'foo': 'bar'} }}
-
-* Use lower cased and underscored variable names:
-
- .. code-block:: twig
-
- {% set foo = 'foo' %}
- {% set foo_bar = 'foo' %}
-
-* Indent your code inside tags (use the same indentation as the one used for
- the target language of the rendered template):
-
- .. code-block:: twig
-
- {% block foo %}
- {% if true %}
- true
- {% endif %}
- {% endblock %}
diff --git a/vendor/twig/twig/doc/deprecated.rst b/vendor/twig/twig/doc/deprecated.rst
deleted file mode 100644
index 1d01fcc..0000000
--- a/vendor/twig/twig/doc/deprecated.rst
+++ /dev/null
@@ -1,224 +0,0 @@
-Deprecated Features
-===================
-
-This document lists all deprecated features in Twig. Deprecated features are
-kept for backward compatibility and removed in the next major release (a
-feature that was deprecated in Twig 1.x is removed in Twig 2.0).
-
-Deprecation Notices
--------------------
-
-As of Twig 1.21, Twig generates deprecation notices when a template uses
-deprecated features. See :ref:`deprecation-notices` for more information.
-
-Macros
-------
-
-As of Twig 2.0, macros imported in a file are not available in child templates
-anymore (via an ``include`` call for instance). You need to import macros
-explicitly in each file where you are using them.
-
-Token Parsers
--------------
-
-* As of Twig 1.x, the token parser broker sub-system is deprecated. The
- following class and interface will be removed in 2.0:
-
- * ``Twig_TokenParserBrokerInterface``
- * ``Twig_TokenParserBroker``
-
-* As of Twig 1.27, ``\Twig\Parser::getFilename()`` is deprecated. From a token
- parser, use ``$this->parser->getStream()->getSourceContext()->getPath()`` instead.
-
-* As of Twig 1.27, ``\Twig\Parser::getEnvironment()`` is deprecated.
-
-Extensions
-----------
-
-* As of Twig 1.x, the ability to remove an extension is deprecated and the
- ``\Twig\Environment::removeExtension()`` method will be removed in 2.0.
-
-* As of Twig 1.23, the ``\Twig\Extension\ExtensionInterface::initRuntime()`` method is
- deprecated. You have two options to avoid the deprecation notice: if you
- implement this method to store the environment for your custom filters,
- functions, or tests, use the ``needs_environment`` option instead; if you
- have more complex needs, explicitly implement
- ``\Twig\Extension\InitRuntimeInterface`` (not recommended).
-
-* As of Twig 1.23, the ``\Twig\Extension\ExtensionInterface::getGlobals()`` method is
- deprecated. Implement ``\Twig\Extension\GlobalsInterface`` to avoid
- deprecation notices.
-
-* As of Twig 1.26, the ``\Twig\Extension\ExtensionInterface::getName()`` method is
- deprecated and it is not used internally anymore.
-
-PEAR
-----
-
-PEAR support has been discontinued in Twig 1.15.1, and no PEAR packages are
-provided anymore. Use Composer instead.
-
-Filters
--------
-
-* As of Twig 1.x, use ``\Twig\TwigFilter`` to add a filter. The following
- classes and interfaces will be removed in 2.0:
-
- * ``Twig_FilterInterface``
- * ``Twig_FilterCallableInterface``
- * ``Twig_Filter``
- * ``Twig_Filter_Function``
- * ``Twig_Filter_Method``
- * ``Twig_Filter_Node``
-
-* As of Twig 2.x, the ``Twig_SimpleFilter`` class is deprecated and will be
- removed in Twig 3.x (use ``\Twig\TwigFilter`` instead). In Twig 2.x,
- ``Twig_SimpleFilter`` is just an alias for ``\Twig\TwigFilter``.
-
-Functions
----------
-
-* As of Twig 1.x, use ``\Twig\TwigFunction`` to add a function. The following
- classes and interfaces will be removed in 2.0:
-
- * ``Twig_FunctionInterface``
- * ``Twig_FunctionCallableInterface``
- * ``Twig_Function``
- * ``Twig_Function_Function``
- * ``Twig_Function_Method``
- * ``Twig_Function_Node``
-
-* As of Twig 2.x, the ``Twig_SimpleFunction`` class is deprecated and will be
- removed in Twig 3.x (use ``\Twig\TwigFunction`` instead). In Twig 2.x,
- ``Twig_SimpleFunction`` is just an alias for ``\Twig\TwigFunction``.
-
-Tests
------
-
-* As of Twig 1.x, use ``\Twig\TwigTest`` to add a test. The following classes
- and interfaces will be removed in 2.0:
-
- * ``Twig_TestInterface``
- * ``Twig_TestCallableInterface``
- * ``Twig_Test``
- * ``Twig_Test_Function``
- * ``Twig_Test_Method``
- * ``Twig_Test_Node``
-
-* As of Twig 2.x, the ``Twig_SimpleTest`` class is deprecated and will be
- removed in Twig 3.x (use ``\Twig\TwigTest`` instead). In Twig 2.x,
- ``Twig_SimpleTest`` is just an alias for ``\Twig\TwigTest``.
-
-* The ``sameas`` and ``divisibleby`` tests are deprecated in favor of ``same
- as`` and ``divisible by`` respectively.
-
-Tags
-----
-
-* As of Twig 1.x, the ``raw`` tag is deprecated. You should use ``verbatim``
- instead.
-
-Nodes
------
-
-* As of Twig 1.x, ``Node::toXml()`` is deprecated and will be removed in Twig
- 2.0.
-
-* As of Twig 1.26, ``Node::$nodes`` should only contains ``\Twig\Node\Node``
- instances, storing a ``null`` value is deprecated and won't be possible in
- Twig 2.x.
-
-* As of Twig 1.27, the ``filename`` attribute on ``\Twig\Node\ModuleNode`` is
- deprecated. Use ``getName()`` instead.
-
-* As of Twig 1.27, the ``\Twig\Node\Node::getFilename()/\Twig\Node\Node::getLine()``
- methods are deprecated, use
- ``\Twig\Node\Node::getTemplateName()/\Twig\Node\Node::getTemplateLine()`` instead.
-
-Interfaces
-----------
-
-* As of Twig 2.x, the following interfaces are deprecated and empty (they will
- be removed in Twig 3.0):
-
-* ``Twig_CompilerInterface`` (use ``\Twig\Compiler`` instead)
-* ``Twig_LexerInterface`` (use ``\Twig\Lexer`` instead)
-* ``Twig_NodeInterface`` (use ``\Twig\Node\Node`` instead)
-* ``Twig_ParserInterface`` (use ``\Twig\Parser`` instead)
-* ``\Twig\Loader\ExistsLoaderInterface`` (merged with ``\Twig\Loader\LoaderInterface``)
-* ``\Twig\Loader\SourceContextLoaderInterface`` (merged with ``\Twig\Loader\LoaderInterface``)
-* ``Twig_TemplateInterface`` (use ``\Twig\Template`` instead, and use
- those constants \Twig\Template::ANY_CALL, \Twig\Template::ARRAY_CALL,
- \Twig\Template::METHOD_CALL)
-
-Compiler
---------
-
-* As of Twig 1.26, the ``\Twig\Compiler::getFilename()`` has been deprecated.
- You should not use it anyway as its values is not reliable.
-
-* As of Twig 1.27, the ``\Twig\Compiler::addIndentation()`` has been deprecated.
- Use ``\Twig\Compiler::write('')`` instead.
-
-Loaders
--------
-
-* As of Twig 1.x, ``Twig_Loader_String`` is deprecated and will be removed in
- 2.0. You can render a string via ``\Twig\Environment::createTemplate()``.
-
-* As of Twig 1.27, ``\Twig\Loader\LoaderInterface::getSource()`` is deprecated.
- Implement ``\Twig\Loader\SourceContextLoaderInterface`` instead and use
- ``getSourceContext()``.
-
-Node Visitors
--------------
-
-* Because of the removal of ``Twig_NodeInterface`` in 2.0, you need to extend
- ``\Twig\NodeVisitor\AbstractNodeVisitor`` instead of implementing ``\Twig\NodeVisitor\NodeVisitorInterface``
- directly to make your node visitors compatible with both Twig 1.x and 2.x.
-
-Globals
--------
-
-* As of Twig 2.x, the ability to register a global variable after the runtime
- or the extensions have been initialized is not possible anymore (but
- changing the value of an already registered global is possible).
-
-* As of Twig 1.x, using the ``_self`` global variable to get access to the
- current ``\Twig\Template`` instance is deprecated; most usages only need the
- current template name, which will continue to work in Twig 2.0. In Twig 2.0,
- ``_self`` returns the current template name instead of the current
- ``\Twig\Template`` instance. If you are using ``{{ _self.templateName }}``,
- just replace it with ``{{ _self }}``.
-
-Miscellaneous
--------------
-
-* As of Twig 1.x, ``\Twig\Environment::clearTemplateCache()``,
- ``\Twig\Environment::writeCacheFile()``,
- ``\Twig\Environment::clearCacheFiles()``,
- ``\Twig\Environment::getCacheFilename()``,
- ``\Twig\Environment::getTemplateClassPrefix()``,
- ``\Twig\Environment::getLexer()``, ``\Twig\Environment::getParser()``, and
- ``\Twig\Environment::getCompiler()`` are deprecated and will be removed in 2.0.
-
-* As of Twig 1.x, ``\Twig\Template::getEnvironment()`` and
- ``Twig_TemplateInterface::getEnvironment()`` are deprecated and will be
- removed in 2.0.
-
-* As of Twig 1.21, setting the environment option ``autoescape`` to ``true`` is
- deprecated and will be removed in 2.0. Use ``"html"`` instead.
-
-* As of Twig 1.27, ``\Twig\Error\Error::getTemplateFile()`` and
- ``\Twig\Error\Error::setTemplateFile()`` are deprecated. Use
- ``\Twig\Error\Error::getTemplateName()`` and ``\Twig\Error\Error::setTemplateName()``
- instead.
-
-* As of Twig 1.27, ``\Twig\Template::getSource()`` is deprecated. Use
- ``\Twig\Template::getSourceContext()`` instead.
-
-* As of Twig 1.27, ``\Twig\Parser::addHandler()`` and
- ``\Twig\Parser::addNodeVisitor()`` are deprecated and will be removed in 2.0.
-
-* As of Twig 1.29, some classes are marked as being final via the `@final`
- annotation. Those classes will be marked as final in 2.0.
diff --git a/vendor/twig/twig/doc/filters/abs.rst b/vendor/twig/twig/doc/filters/abs.rst
deleted file mode 100644
index fea1175..0000000
--- a/vendor/twig/twig/doc/filters/abs.rst
+++ /dev/null
@@ -1,18 +0,0 @@
-``abs``
-=======
-
-The ``abs`` filter returns the absolute value.
-
-.. code-block:: twig
-
- {# number = -5 #}
-
- {{ number|abs }}
-
- {# outputs 5 #}
-
-.. note::
-
- Internally, Twig uses the PHP `abs`_ function.
-
-.. _`abs`: https://www.php.net/abs
diff --git a/vendor/twig/twig/doc/filters/batch.rst b/vendor/twig/twig/doc/filters/batch.rst
deleted file mode 100644
index c103c81..0000000
--- a/vendor/twig/twig/doc/filters/batch.rst
+++ /dev/null
@@ -1,48 +0,0 @@
-``batch``
-=========
-
-.. versionadded:: 1.12.3
-
- The ``batch`` filter was added in Twig 1.12.3.
-
-The ``batch`` filter "batches" items by returning a list of lists with the
-given number of items. A second parameter can be provided and used to fill in
-missing items:
-
-.. code-block:: html+twig
-
- {% set items = ['a', 'b', 'c', 'd'] %}
-
-
- {% for row in items|batch(3, 'No item') %}
-
- {% for column in row %}
-
{{ column }}
- {% endfor %}
-
- {% endfor %}
-
-
-The above example will be rendered as:
-
-.. code-block:: html+twig
-
-
-
-
a
-
b
-
c
-
-
-
d
-
No item
-
No item
-
-
-
-Arguments
----------
-
-* ``size``: The size of the batch; fractional numbers will be rounded up
-* ``fill``: Used to fill in missing items
-* ``preserve_keys``: Whether to preserve keys or not
diff --git a/vendor/twig/twig/doc/filters/capitalize.rst b/vendor/twig/twig/doc/filters/capitalize.rst
deleted file mode 100644
index 2353658..0000000
--- a/vendor/twig/twig/doc/filters/capitalize.rst
+++ /dev/null
@@ -1,11 +0,0 @@
-``capitalize``
-==============
-
-The ``capitalize`` filter capitalizes a value. The first character will be
-uppercase, all others lowercase:
-
-.. code-block:: twig
-
- {{ 'my first car'|capitalize }}
-
- {# outputs 'My first car' #}
diff --git a/vendor/twig/twig/doc/filters/convert_encoding.rst b/vendor/twig/twig/doc/filters/convert_encoding.rst
deleted file mode 100644
index 9269efd..0000000
--- a/vendor/twig/twig/doc/filters/convert_encoding.rst
+++ /dev/null
@@ -1,29 +0,0 @@
-``convert_encoding``
-====================
-
-.. versionadded:: 1.4
-
- The ``convert_encoding`` filter was added in Twig 1.4.
-
-The ``convert_encoding`` filter converts a string from one encoding to
-another. The first argument is the expected output charset and the second one
-is the input charset:
-
-.. code-block:: twig
-
- {{ data|convert_encoding('UTF-8', 'iso-2022-jp') }}
-
-.. note::
-
- This filter relies on the `iconv`_ or `mbstring`_ extension, so one of
- them must be installed. In case both are installed, `mbstring`_ is used by
- default (Twig before 1.8.1 uses `iconv`_ by default).
-
-Arguments
----------
-
-* ``to``: The output charset
-* ``from``: The input charset
-
-.. _`iconv`: https://www.php.net/iconv
-.. _`mbstring`: https://www.php.net/mbstring
diff --git a/vendor/twig/twig/doc/filters/date.rst b/vendor/twig/twig/doc/filters/date.rst
deleted file mode 100644
index f719dc6..0000000
--- a/vendor/twig/twig/doc/filters/date.rst
+++ /dev/null
@@ -1,100 +0,0 @@
-``date``
-========
-
-.. versionadded:: 1.1
-
- The timezone support has been added in Twig 1.1.
-
-.. versionadded:: 1.5
-
- The default date format support has been added in Twig 1.5.
-
-.. versionadded:: 1.6.1
-
- The default timezone support has been added in Twig 1.6.1.
-
-.. versionadded:: 1.11.0
-
- The introduction of the false value for the timezone was introduced in Twig 1.11.0
-
-The ``date`` filter formats a date to a given format:
-
-.. code-block:: twig
-
- {{ post.published_at|date("m/d/Y") }}
-
-The format specifier is the same as supported by `date`_,
-except when the filtered data is of type `DateInterval`_, when the format must conform to
-`DateInterval::format`_ instead.
-
-The ``date`` filter accepts strings (it must be in a format supported by the
-`strtotime`_ function), `DateTime`_ instances, or `DateInterval`_ instances. For
-instance, to display the current date, filter the word "now":
-
-.. code-block:: twig
-
- {{ "now"|date("m/d/Y") }}
-
-To escape words and characters in the date format use ``\\`` in front of each
-character:
-
-.. code-block:: twig
-
- {{ post.published_at|date("F jS \\a\\t g:ia") }}
-
-If the value passed to the ``date`` filter is ``null``, it will return the
-current date by default. If an empty string is desired instead of the current
-date, use a ternary operator:
-
-.. code-block:: twig
-
- {{ post.published_at is empty ? "" : post.published_at|date("m/d/Y") }}
-
-If no format is provided, Twig will use the default one: ``F j, Y H:i``. This
-default can be changed by calling the ``setDateFormat()`` method on the
-``core`` extension instance. The first argument is the default format for
-dates and the second one is the default format for date intervals::
-
- $twig = new \Twig\Environment($loader);
- $twig->getExtension('\Twig\Extension\CoreExtension')->setDateFormat('d/m/Y', '%d days');
-
- // before Twig 1.26
- $twig->getExtension('core')->setDateFormat('d/m/Y', '%d days');
-
-Timezone
---------
-
-By default, the date is displayed by applying the default timezone (the one
-specified in php.ini or declared in Twig -- see below), but you can override
-it by explicitly specifying a timezone:
-
-.. code-block:: twig
-
- {{ post.published_at|date("m/d/Y", "Europe/Paris") }}
-
-If the date is already a DateTime object, and if you want to keep its current
-timezone, pass ``false`` as the timezone value:
-
-.. code-block:: twig
-
- {{ post.published_at|date("m/d/Y", false) }}
-
-The default timezone can also be set globally by calling ``setTimezone()``::
-
- $twig = new \Twig\Environment($loader);
- $twig->getExtension('\Twig\Extension\CoreExtension')->setTimezone('Europe/Paris');
-
- // before Twig 1.26
- $twig->getExtension('core')->setTimezone('Europe/Paris');
-
-Arguments
----------
-
-* ``format``: The date format
-* ``timezone``: The date timezone
-
-.. _`strtotime`: https://www.php.net/strtotime
-.. _`DateTime`: https://www.php.net/DateTime
-.. _`DateInterval`: https://www.php.net/DateInterval
-.. _`date`: https://www.php.net/date
-.. _`DateInterval::format`: https://www.php.net/DateInterval.format
diff --git a/vendor/twig/twig/doc/filters/date_modify.rst b/vendor/twig/twig/doc/filters/date_modify.rst
deleted file mode 100644
index 7cd50c2..0000000
--- a/vendor/twig/twig/doc/filters/date_modify.rst
+++ /dev/null
@@ -1,24 +0,0 @@
-``date_modify``
-===============
-
-.. versionadded:: 1.9.0
-
- The date_modify filter has been added in Twig 1.9.0.
-
-The ``date_modify`` filter modifies a date with a given modifier string:
-
-.. code-block:: twig
-
- {{ post.published_at|date_modify("+1 day")|date("m/d/Y") }}
-
-The ``date_modify`` filter accepts strings (it must be in a format supported
-by the `strtotime`_ function) or `DateTime`_ instances. You can combine
-it with the :doc:`date` filter for formatting.
-
-Arguments
----------
-
-* ``modifier``: The modifier
-
-.. _`strtotime`: https://www.php.net/strtotime
-.. _`DateTime`: https://www.php.net/DateTime
diff --git a/vendor/twig/twig/doc/filters/default.rst b/vendor/twig/twig/doc/filters/default.rst
deleted file mode 100644
index 2376fe7..0000000
--- a/vendor/twig/twig/doc/filters/default.rst
+++ /dev/null
@@ -1,42 +0,0 @@
-``default``
-===========
-
-The ``default`` filter returns the passed default value if the value is
-undefined or empty, otherwise the value of the variable:
-
-.. code-block:: twig
-
- {{ var|default('var is not defined') }}
-
- {{ var.foo|default('foo item on var is not defined') }}
-
- {{ var['foo']|default('foo item on var is not defined') }}
-
- {{ ''|default('passed var is empty') }}
-
-When using the ``default`` filter on an expression that uses variables in some
-method calls, be sure to use the ``default`` filter whenever a variable can be
-undefined:
-
-.. code-block:: twig
-
- {{ var.method(foo|default('foo'))|default('foo') }}
-
-Using the ``default`` filter on a boolean variable might trigger unexpected behavior, as
-``false`` is treated as an empty value. Consider using ``??`` instead:
-
-.. code-block:: twig
-
- {% set foo = false %}
- {{ foo|default(true) }} {# true #}
- {{ foo ?? true }} {# false #}
-
-.. note::
-
- Read the documentation for the :doc:`defined<../tests/defined>` and
- :doc:`empty<../tests/empty>` tests to learn more about their semantics.
-
-Arguments
----------
-
-* ``default``: The default value
diff --git a/vendor/twig/twig/doc/filters/escape.rst b/vendor/twig/twig/doc/filters/escape.rst
deleted file mode 100644
index 1592460..0000000
--- a/vendor/twig/twig/doc/filters/escape.rst
+++ /dev/null
@@ -1,129 +0,0 @@
-``escape``
-==========
-
-.. versionadded:: 1.9.0
-
- The ``css``, ``url``, and ``html_attr`` strategies were added in Twig
- 1.9.0.
-
-.. versionadded:: 1.14.0
-
- The ability to define custom escapers was added in Twig 1.14.0.
-
-The ``escape`` filter escapes a string using strategies that depend on the
-context.
-
-By default, it uses the HTML escaping strategy:
-
-.. code-block:: html+twig
-
-
- {{ user.username|escape }}
-
-
-For convenience, the ``e`` filter is defined as an alias:
-
-.. code-block:: html+twig
-
-
- {{ user.username|e }}
-
-
-The ``escape`` filter can also be used in other contexts than HTML thanks to
-an optional argument which defines the escaping strategy to use:
-
-.. code-block:: twig
-
- {{ user.username|e }}
- {# is equivalent to #}
- {{ user.username|e('html') }}
-
-And here is how to escape variables included in JavaScript code:
-
-.. code-block:: twig
-
- {{ user.username|escape('js') }}
- {{ user.username|e('js') }}
-
-The ``escape`` filter supports the following escaping strategies for HTML
-documents:
-
-* ``html``: escapes a string for the **HTML body** context.
-
-* ``js``: escapes a string for the **JavaScript** context.
-
-* ``css``: escapes a string for the **CSS** context. CSS escaping can be
- applied to any string being inserted into CSS and escapes everything except
- alphanumerics.
-
-* ``url``: escapes a string for the **URI or parameter** contexts. This should
- not be used to escape an entire URI; only a subcomponent being inserted.
-
-* ``html_attr``: escapes a string for the **HTML attribute** context.
-
-Note that doing contextual escaping in HTML documents is hard and choosing the
-right escaping strategy depends on a lot of factors. Please, read related
-documentation like `the OWASP prevention cheat sheet
-`_
-to learn more about this topic.
-
-.. note::
-
- Internally, ``escape`` uses the PHP native `htmlspecialchars`_ function
- for the HTML escaping strategy.
-
-.. caution::
-
- When using automatic escaping, Twig tries to not double-escape a variable
- when the automatic escaping strategy is the same as the one applied by the
- escape filter; but that does not work when using a variable as the
- escaping strategy:
-
- .. code-block:: twig
-
- {% set strategy = 'html' %}
-
- {% autoescape 'html' %}
- {{ var|escape('html') }} {# won't be double-escaped #}
- {{ var|escape(strategy) }} {# will be double-escaped #}
- {% endautoescape %}
-
- When using a variable as the escaping strategy, you should disable
- automatic escaping:
-
- .. code-block:: twig
-
- {% set strategy = 'html' %}
-
- {% autoescape 'html' %}
- {{ var|escape(strategy)|raw }} {# won't be double-escaped #}
- {% endautoescape %}
-
-Custom Escapers
----------------
-
-You can define custom escapers by calling the ``setEscaper()`` method on the
-``core`` extension instance. The first argument is the escaper name (to be
-used in the ``escape`` call) and the second one must be a valid PHP callable::
-
- $twig = new \Twig\Environment($loader);
- $twig->getExtension('\Twig\Extension\CoreExtension')->setEscaper('csv', 'csv_escaper');
-
- // before Twig 1.26
- $twig->getExtension('core')->setEscaper('csv', 'csv_escaper');
-
-When called by Twig, the callable receives the Twig environment instance, the
-string to escape, and the charset.
-
-.. note::
-
- Built-in escapers cannot be overridden mainly because they should be
- considered as the final implementation and also for better performance.
-
-Arguments
----------
-
-* ``strategy``: The escaping strategy
-* ``charset``: The string charset
-
-.. _`htmlspecialchars`: https://www.php.net/htmlspecialchars
diff --git a/vendor/twig/twig/doc/filters/filter.rst b/vendor/twig/twig/doc/filters/filter.rst
deleted file mode 100644
index ddd607b..0000000
--- a/vendor/twig/twig/doc/filters/filter.rst
+++ /dev/null
@@ -1,59 +0,0 @@
-``filter``
-==========
-
-.. versionadded:: 1.41
-
- The ``filter`` filter was added in Twig 1.41.
-
-The ``filter`` filter filters elements of a sequence or a mapping using an arrow
-function. The arrow function receives the value of the sequence or mapping:
-
-.. code-block:: twig
-
- {% set sizes = [34, 36, 38, 40, 42] %}
-
- {{ sizes|filter(v => v > 38)|join(', ') }}
- {# output 40, 42 #}
-
-Combined with the ``for`` tag, it allows to filter the items to iterate over:
-
-.. code-block:: twig
-
- {% for v in sizes|filter(v => v > 38) -%}
- {{ v }}
- {% endfor %}
- {# output 40 42 #}
-
-It also works with mappings:
-
-.. code-block:: twig
-
- {% set sizes = {
- xs: 34,
- s: 36,
- m: 38,
- l: 40,
- xl: 42,
- } %}
-
- {% for k, v in sizes|filter(v => v > 38) -%}
- {{ k }} = {{ v }}
- {% endfor %}
- {# output l = 40 xl = 42 #}
-
-The arrow function also receives the key as a second argument:
-
-.. code-block:: twig
-
- {% for k, v in sizes|filter((v, k) => v > 38 and k != "xl") -%}
- {{ k }} = {{ v }}
- {% endfor %}
- {# output l = 40 #}
-
-Note that the arrow function has access to the current context.
-
-Arguments
----------
-
-* ``array``: The sequence or mapping
-* ``arrow``: The arrow function
diff --git a/vendor/twig/twig/doc/filters/first.rst b/vendor/twig/twig/doc/filters/first.rst
deleted file mode 100644
index 30bde3a..0000000
--- a/vendor/twig/twig/doc/filters/first.rst
+++ /dev/null
@@ -1,26 +0,0 @@
-``first``
-=========
-
-.. versionadded:: 1.12.2
-
- The ``first`` filter was added in Twig 1.12.2.
-
-The ``first`` filter returns the first "element" of a sequence, a mapping, or
-a string:
-
-.. code-block:: twig
-
- {{ [1, 2, 3, 4]|first }}
- {# outputs 1 #}
-
- {{ { a: 1, b: 2, c: 3, d: 4 }|first }}
- {# outputs 1 #}
-
- {{ '1234'|first }}
- {# outputs 1 #}
-
-.. note::
-
- It also works with objects implementing the `Traversable`_ interface.
-
-.. _`Traversable`: https://www.php.net/manual/en/class.traversable.php
diff --git a/vendor/twig/twig/doc/filters/format.rst b/vendor/twig/twig/doc/filters/format.rst
deleted file mode 100644
index ec1eb00..0000000
--- a/vendor/twig/twig/doc/filters/format.rst
+++ /dev/null
@@ -1,18 +0,0 @@
-``format``
-==========
-
-The ``format`` filter formats a given string by replacing the placeholders
-(placeholders follows the `sprintf`_ notation):
-
-.. code-block:: twig
-
- {{ "I like %s and %s."|format(foo, "bar") }}
-
- {# outputs I like foo and bar
- if the foo parameter equals to the foo string. #}
-
-.. _`sprintf`: https://www.php.net/sprintf
-
-.. seealso::
-
- :doc:`replace`
diff --git a/vendor/twig/twig/doc/filters/index.rst b/vendor/twig/twig/doc/filters/index.rst
deleted file mode 100644
index 8524fc0..0000000
--- a/vendor/twig/twig/doc/filters/index.rst
+++ /dev/null
@@ -1,41 +0,0 @@
-Filters
-=======
-
-.. toctree::
- :maxdepth: 1
-
- abs
- batch
- capitalize
- convert_encoding
- date
- date_modify
- default
- escape
- filter
- first
- format
- join
- json_encode
- keys
- last
- length
- lower
- map
- merge
- nl2br
- number_format
- raw
- reduce
- replace
- reverse
- round
- slice
- sort
- spaceless
- split
- striptags
- title
- trim
- upper
- url_encode
diff --git a/vendor/twig/twig/doc/filters/join.rst b/vendor/twig/twig/doc/filters/join.rst
deleted file mode 100644
index afd8768..0000000
--- a/vendor/twig/twig/doc/filters/join.rst
+++ /dev/null
@@ -1,36 +0,0 @@
-``join``
-========
-
-.. versionadded:: 1.37
-
- The ``and`` argument was added in Twig 1.37.
-
-The ``join`` filter returns a string which is the concatenation of the items
-of a sequence:
-
-.. code-block:: twig
-
- {{ [1, 2, 3]|join }}
- {# returns 123 #}
-
-The separator between elements is an empty string per default, but you can
-define it with the optional first parameter:
-
-.. code-block:: twig
-
- {{ [1, 2, 3]|join('|') }}
- {# outputs 1|2|3 #}
-
-A second parameter can also be provided that will be the separator used between
-the last two items of the sequence:
-
-.. code-block:: twig
-
- {{ [1, 2, 3]|join(', ', ' and ') }}
- {# outputs 1, 2 and 3 #}
-
-Arguments
----------
-
-* ``glue``: The separator
-* ``and``: The separator for the last pair of input items
diff --git a/vendor/twig/twig/doc/filters/json_encode.rst b/vendor/twig/twig/doc/filters/json_encode.rst
deleted file mode 100644
index 34e7136..0000000
--- a/vendor/twig/twig/doc/filters/json_encode.rst
+++ /dev/null
@@ -1,23 +0,0 @@
-``json_encode``
-===============
-
-The ``json_encode`` filter returns the JSON representation of a value:
-
-.. code-block:: twig
-
- {{ data|json_encode() }}
-
-.. note::
-
- Internally, Twig uses the PHP `json_encode`_ function.
-
-Arguments
----------
-
-* ``options``: A bitmask of `json_encode options`_: ``{{
- data|json_encode(constant('JSON_PRETTY_PRINT')) }}``.
- Combine constants using :ref:`bitwise operators`:
- ``{{ data|json_encode(constant('JSON_PRETTY_PRINT') b-or constant('JSON_HEX_QUOT')) }}``
-
-.. _`json_encode`: https://www.php.net/json_encode
-.. _`json_encode options`: https://www.php.net/manual/en/json.constants.php
diff --git a/vendor/twig/twig/doc/filters/keys.rst b/vendor/twig/twig/doc/filters/keys.rst
deleted file mode 100644
index 5860947..0000000
--- a/vendor/twig/twig/doc/filters/keys.rst
+++ /dev/null
@@ -1,11 +0,0 @@
-``keys``
-========
-
-The ``keys`` filter returns the keys of an array. It is useful when you want to
-iterate over the keys of an array:
-
-.. code-block:: twig
-
- {% for key in array|keys %}
- ...
- {% endfor %}
diff --git a/vendor/twig/twig/doc/filters/last.rst b/vendor/twig/twig/doc/filters/last.rst
deleted file mode 100644
index b9f5ef0..0000000
--- a/vendor/twig/twig/doc/filters/last.rst
+++ /dev/null
@@ -1,26 +0,0 @@
-``last``
-========
-
-.. versionadded:: 1.12.2
-
- The ``last`` filter was added in Twig 1.12.2.
-
-The ``last`` filter returns the last "element" of a sequence, a mapping, or
-a string:
-
-.. code-block:: twig
-
- {{ [1, 2, 3, 4]|last }}
- {# outputs 4 #}
-
- {{ { a: 1, b: 2, c: 3, d: 4 }|last }}
- {# outputs 4 #}
-
- {{ '1234'|last }}
- {# outputs 4 #}
-
-.. note::
-
- It also works with objects implementing the `Traversable`_ interface.
-
-.. _`Traversable`: https://www.php.net/manual/en/class.traversable.php
diff --git a/vendor/twig/twig/doc/filters/length.rst b/vendor/twig/twig/doc/filters/length.rst
deleted file mode 100644
index 37209f8..0000000
--- a/vendor/twig/twig/doc/filters/length.rst
+++ /dev/null
@@ -1,23 +0,0 @@
-``length``
-==========
-
-.. versionadded:: 1.33
-
- Support for the ``__toString()`` magic method has been added in Twig 1.33.
-
-The ``length`` filter returns the number of items of a sequence or mapping, or
-the length of a string.
-
-For objects that implement the ``Countable`` interface, ``length`` will use the
-return value of the ``count()`` method.
-
-For objects that implement the ``__toString()`` magic method (and not ``Countable``),
-it will return the length of the string provided by that method.
-
-For objects that implement the ``Traversable`` interface, ``length`` will use the return value of the ``iterator_count()`` method.
-
-.. code-block:: twig
-
- {% if users|length > 10 %}
- ...
- {% endif %}
diff --git a/vendor/twig/twig/doc/filters/lower.rst b/vendor/twig/twig/doc/filters/lower.rst
deleted file mode 100644
index c0a0e0c..0000000
--- a/vendor/twig/twig/doc/filters/lower.rst
+++ /dev/null
@@ -1,10 +0,0 @@
-``lower``
-=========
-
-The ``lower`` filter converts a value to lowercase:
-
-.. code-block:: twig
-
- {{ 'WELCOME'|lower }}
-
- {# outputs 'welcome' #}
diff --git a/vendor/twig/twig/doc/filters/map.rst b/vendor/twig/twig/doc/filters/map.rst
deleted file mode 100644
index 035e2c0..0000000
--- a/vendor/twig/twig/doc/filters/map.rst
+++ /dev/null
@@ -1,38 +0,0 @@
-``map``
-=======
-
-.. versionadded:: 1.41
-
- The ``map`` filter was added in Twig 1.41.
-
-The ``map`` filter applies an arrow function to the elements of a sequence or a
-mapping. The arrow function receives the value of the sequence or mapping:
-
-.. code-block:: twig
-
- {% set people = [
- {first: "Bob", last: "Smith"},
- {first: "Alice", last: "Dupond"},
- ] %}
-
- {{ people|map(p => "#{p.first} #{p.last}")|join(', ') }}
- {# outputs Bob Smith, Alice Dupond #}
-
-The arrow function also receives the key as a second argument:
-
-.. code-block:: twig
-
- {% set people = {
- "Bob": "Smith",
- "Alice": "Dupond",
- } %}
-
- {{ people|map((last, first) => "#{first} #{last}")|join(', ') }}
- {# outputs Bob Smith, Alice Dupond #}
-
-Note that the arrow function has access to the current context.
-
-Arguments
----------
-
-* ``arrow``: The arrow function
diff --git a/vendor/twig/twig/doc/filters/merge.rst b/vendor/twig/twig/doc/filters/merge.rst
deleted file mode 100644
index 40146b5..0000000
--- a/vendor/twig/twig/doc/filters/merge.rst
+++ /dev/null
@@ -1,48 +0,0 @@
-``merge``
-=========
-
-The ``merge`` filter merges an array with another array:
-
-.. code-block:: twig
-
- {% set values = [1, 2] %}
-
- {% set values = values|merge(['apple', 'orange']) %}
-
- {# values now contains [1, 2, 'apple', 'orange'] #}
-
-New values are added at the end of the existing ones.
-
-The ``merge`` filter also works on hashes:
-
-.. code-block:: twig
-
- {% set items = { 'apple': 'fruit', 'orange': 'fruit', 'peugeot': 'unknown' } %}
-
- {% set items = items|merge({ 'peugeot': 'car', 'renault': 'car' }) %}
-
- {# items now contains { 'apple': 'fruit', 'orange': 'fruit', 'peugeot': 'car', 'renault': 'car' } #}
-
-For hashes, the merging process occurs on the keys: if the key does not
-already exist, it is added but if the key already exists, its value is
-overridden.
-
-.. tip::
-
- If you want to ensure that some values are defined in an array (by given
- default values), reverse the two elements in the call:
-
- .. code-block:: twig
-
- {% set items = { 'apple': 'fruit', 'orange': 'fruit' } %}
-
- {% set items = { 'apple': 'unknown' }|merge(items) %}
-
- {# items now contains { 'apple': 'fruit', 'orange': 'fruit' } #}
-
-.. note::
-
- Internally, Twig uses the PHP `array_merge`_ function. It supports
- Traversable objects by transforming those to arrays.
-
-.. _`array_merge`: https://www.php.net/array_merge
diff --git a/vendor/twig/twig/doc/filters/nl2br.rst b/vendor/twig/twig/doc/filters/nl2br.rst
deleted file mode 100644
index 170609a..0000000
--- a/vendor/twig/twig/doc/filters/nl2br.rst
+++ /dev/null
@@ -1,23 +0,0 @@
-``nl2br``
-=========
-
-.. versionadded:: 1.5
-
- The ``nl2br`` filter was added in Twig 1.5.
-
-The ``nl2br`` filter inserts HTML line breaks before all newlines in a string:
-
-.. code-block:: html+twig
-
- {{ "I like Twig.\nYou will like it too."|nl2br }}
- {# outputs
-
- I like Twig.
- You will like it too.
-
- #}
-
-.. note::
-
- The ``nl2br`` filter pre-escapes the input before applying the
- transformation.
diff --git a/vendor/twig/twig/doc/filters/number_format.rst b/vendor/twig/twig/doc/filters/number_format.rst
deleted file mode 100644
index a417154..0000000
--- a/vendor/twig/twig/doc/filters/number_format.rst
+++ /dev/null
@@ -1,55 +0,0 @@
-``number_format``
-=================
-
-.. versionadded:: 1.5
-
- The ``number_format`` filter was added in Twig 1.5
-
-The ``number_format`` filter formats numbers. It is a wrapper around PHP's
-`number_format`_ function:
-
-.. code-block:: twig
-
- {{ 200.35|number_format }}
-
-You can control the number of decimal places, decimal point, and thousands
-separator using the additional arguments:
-
-.. code-block:: twig
-
- {{ 9800.333|number_format(2, '.', ',') }}
-
-To format negative numbers, wrap the number with parentheses (needed because of
-Twig's :ref:`precedence of operators `:
-
-.. code-block:: twig
-
- {{ -9800.333|number_format(2, '.', ',') }} {# outputs : -9 #}
- {{ (-9800.333)|number_format(2, '.', ',') }} {# outputs : -9,800.33 #}
-
-If no formatting options are provided then Twig will use the default formatting
-options of:
-
-* 0 decimal places.
-* ``.`` as the decimal point.
-* ``,`` as the thousands separator.
-
-These defaults can be changed through the core extension::
-
- $twig = new \Twig\Environment($loader);
- $twig->getExtension('\Twig\Extension\CoreExtension')->setNumberFormat(3, '.', ',');
-
- // before Twig 1.26
- $twig->getExtension('core')->setNumberFormat(3, '.', ',');
-
-The defaults set for ``number_format`` can be over-ridden upon each call using the
-additional parameters.
-
-Arguments
----------
-
-* ``decimal``: The number of decimal points to display
-* ``decimal_point``: The character(s) to use for the decimal point
-* ``thousand_sep``: The character(s) to use for the thousands separator
-
-.. _`number_format`: https://www.php.net/number_format
diff --git a/vendor/twig/twig/doc/filters/raw.rst b/vendor/twig/twig/doc/filters/raw.rst
deleted file mode 100644
index 243037a..0000000
--- a/vendor/twig/twig/doc/filters/raw.rst
+++ /dev/null
@@ -1,38 +0,0 @@
-``raw``
-=======
-
-The ``raw`` filter marks the value as being "safe", which means that in an
-environment with automatic escaping enabled this variable will not be escaped
-if ``raw`` is the last filter applied to it:
-
-.. code-block:: twig
-
- {% autoescape %}
- {{ var|raw }} {# var won't be escaped #}
- {% endautoescape %}
-
-.. note::
-
- **This note only applies to Twig before versions 1.39 and 2.8**.
-
- Be careful when using the ``raw`` filter inside expressions:
-
- .. code-block:: html+twig
-
- {% autoescape %}
- {% set hello = 'Hello' %}
- {% set hola = 'Hola' %}
-
- {{ false ? 'Hola' : hello|raw }}
- does not render the same as
- {{ false ? hola : hello|raw }}
- but renders the same as
- {{ (false ? hola : hello)|raw }}
- {% endautoescape %}
-
- The first ternary statement is not escaped: ``hello`` is marked as being
- safe and Twig does not escape static values (see
- :doc:`escape<../tags/autoescape>`). In the second ternary statement, even
- if ``hello`` is marked as safe, ``hola`` remains unsafe and so is the whole
- expression. The third ternary statement is marked as safe and the result is
- not escaped.
diff --git a/vendor/twig/twig/doc/filters/reduce.rst b/vendor/twig/twig/doc/filters/reduce.rst
deleted file mode 100644
index cc74f58..0000000
--- a/vendor/twig/twig/doc/filters/reduce.rst
+++ /dev/null
@@ -1,33 +0,0 @@
-``reduce``
-==========
-
-.. versionadded:: 1.41
-
- The ``reduce`` filter was added in Twig 1.41.
-
-The ``reduce`` filter iteratively reduces a sequence or a mapping to a single
-value using an arrow function, so as to reduce it to a single value. The arrow
-function receives the return value of the previous iteration and the current
-value of the sequence or mapping:
-
-.. code-block:: twig
-
- {% set numbers = [1, 2, 3] %}
-
- {{ numbers|reduce((carry, v) => carry + v) }}
- {# output 6 #}
-
-The ``reduce`` filter takes an ``initial`` value as a second argument:
-
-.. code-block:: twig
-
- {{ numbers|reduce((carry, v) => carry + v, 10) }}
- {# output 16 #}
-
-Note that the arrow function has access to the current context.
-
-Arguments
----------
-
-* ``arrow``: The arrow function
-* ``initial``: The initial value
diff --git a/vendor/twig/twig/doc/filters/replace.rst b/vendor/twig/twig/doc/filters/replace.rst
deleted file mode 100644
index 5761a21..0000000
--- a/vendor/twig/twig/doc/filters/replace.rst
+++ /dev/null
@@ -1,27 +0,0 @@
-``replace``
-===========
-
-The ``replace`` filter formats a given string by replacing the placeholders
-(placeholders are free-form):
-
-.. code-block:: twig
-
- {{ "I like %this% and %that%."|replace({'%this%': foo, '%that%': "bar"}) }}
-
- {# outputs I like foo and bar
- if the foo parameter equals to the foo string. #}
-
- {# using % as a delimiter is purely conventional and optional #}
-
- {{ "I like this and --that--."|replace({'this': foo, '--that--': "bar"}) }}
-
- {# outputs I like foo and bar #}
-
-Arguments
----------
-
-* ``from``: The placeholder values
-
-.. seealso::
-
- :doc:`format`
diff --git a/vendor/twig/twig/doc/filters/reverse.rst b/vendor/twig/twig/doc/filters/reverse.rst
deleted file mode 100644
index ee40aac..0000000
--- a/vendor/twig/twig/doc/filters/reverse.rst
+++ /dev/null
@@ -1,48 +0,0 @@
-``reverse``
-===========
-
-.. versionadded:: 1.6
-
- Support for strings has been added in Twig 1.6.
-
-The ``reverse`` filter reverses a sequence, a mapping, or a string:
-
-.. code-block:: twig
-
- {% for user in users|reverse %}
- ...
- {% endfor %}
-
- {{ '1234'|reverse }}
-
- {# outputs 4321 #}
-
-.. tip::
-
- For sequences and mappings, numeric keys are not preserved. To reverse
- them as well, pass ``true`` as an argument to the ``reverse`` filter:
-
- .. code-block:: twig
-
- {% for key, value in {1: "a", 2: "b", 3: "c"}|reverse %}
- {{ key }}: {{ value }}
- {%- endfor %}
-
- {# output: 0: c 1: b 2: a #}
-
- {% for key, value in {1: "a", 2: "b", 3: "c"}|reverse(true) %}
- {{ key }}: {{ value }}
- {%- endfor %}
-
- {# output: 3: c 2: b 1: a #}
-
-.. note::
-
- It also works with objects implementing the `Traversable`_ interface.
-
-Arguments
----------
-
-* ``preserve_keys``: Preserve keys when reversing a mapping or a sequence.
-
-.. _`Traversable`: https://www.php.net/Traversable
diff --git a/vendor/twig/twig/doc/filters/round.rst b/vendor/twig/twig/doc/filters/round.rst
deleted file mode 100644
index 1b33830..0000000
--- a/vendor/twig/twig/doc/filters/round.rst
+++ /dev/null
@@ -1,38 +0,0 @@
-``round``
-=========
-
-.. versionadded:: 1.15.0
-
- The ``round`` filter was added in Twig 1.15.0.
-
-The ``round`` filter rounds a number to a given precision:
-
-.. code-block:: twig
-
- {{ 42.55|round }}
- {# outputs 43 #}
-
- {{ 42.55|round(1, 'floor') }}
- {# outputs 42.5 #}
-
-The ``round`` filter takes two optional arguments; the first one specifies the
-precision (default is ``0``) and the second the rounding method (default is
-``common``):
-
-* ``common`` rounds either up or down (rounds the value up to precision decimal
- places away from zero, when it is half way there -- making 1.5 into 2 and
- -1.5 into -2);
-
-* ``ceil`` always rounds up;
-
-* ``floor`` always rounds down.
-
-.. note::
-
- The ``//`` operator is equivalent to ``|round(0, 'floor')``.
-
-Arguments
----------
-
-* ``precision``: The rounding precision
-* ``method``: The rounding method
diff --git a/vendor/twig/twig/doc/filters/slice.rst b/vendor/twig/twig/doc/filters/slice.rst
deleted file mode 100644
index d34f2d6..0000000
--- a/vendor/twig/twig/doc/filters/slice.rst
+++ /dev/null
@@ -1,72 +0,0 @@
-``slice``
-===========
-
-.. versionadded:: 1.6
-
- The ``slice`` filter was added in Twig 1.6.
-
-The ``slice`` filter extracts a slice of a sequence, a mapping, or a string:
-
-.. code-block:: twig
-
- {% for i in [1, 2, 3, 4, 5]|slice(1, 2) %}
- {# will iterate over 2 and 3 #}
- {% endfor %}
-
- {{ '12345'|slice(1, 2) }}
-
- {# outputs 23 #}
-
-You can use any valid expression for both the start and the length:
-
-.. code-block:: twig
-
- {% for i in [1, 2, 3, 4, 5]|slice(start, length) %}
- {# ... #}
- {% endfor %}
-
-As syntactic sugar, you can also use the ``[]`` notation:
-
-.. code-block:: twig
-
- {% for i in [1, 2, 3, 4, 5][start:length] %}
- {# ... #}
- {% endfor %}
-
- {{ '12345'[1:2] }} {# will display "23" #}
-
- {# you can omit the first argument -- which is the same as 0 #}
- {{ '12345'[:2] }} {# will display "12" #}
-
- {# you can omit the last argument -- which will select everything till the end #}
- {{ '12345'[2:] }} {# will display "345" #}
-
-The ``slice`` filter works as the `array_slice`_ PHP function for arrays and
-`mb_substr`_ for strings with a fallback to `substr`_.
-
-If the start is non-negative, the sequence will start at that start in the
-variable. If start is negative, the sequence will start that far from the end
-of the variable.
-
-If length is given and is positive, then the sequence will have up to that
-many elements in it. If the variable is shorter than the length, then only the
-available variable elements will be present. If length is given and is
-negative then the sequence will stop that many elements from the end of the
-variable. If it is omitted, then the sequence will have everything from offset
-up until the end of the variable.
-
-.. note::
-
- It also works with objects implementing the `Traversable`_ interface.
-
-Arguments
----------
-
-* ``start``: The start of the slice
-* ``length``: The size of the slice
-* ``preserve_keys``: Whether to preserve key or not (when the input is an array)
-
-.. _`Traversable`: https://www.php.net/manual/en/class.traversable.php
-.. _`array_slice`: https://www.php.net/array_slice
-.. _`mb_substr`: https://www.php.net/mb-substr
-.. _`substr`: https://www.php.net/substr
diff --git a/vendor/twig/twig/doc/filters/sort.rst b/vendor/twig/twig/doc/filters/sort.rst
deleted file mode 100644
index e8c9b2b..0000000
--- a/vendor/twig/twig/doc/filters/sort.rst
+++ /dev/null
@@ -1,18 +0,0 @@
-``sort``
-========
-
-The ``sort`` filter sorts an array:
-
-.. code-block:: twig
-
- {% for user in users|sort %}
- ...
- {% endfor %}
-
-.. note::
-
- Internally, Twig uses the PHP `asort`_ function to maintain index
- association. It supports Traversable objects by transforming
- those to arrays.
-
-.. _`asort`: https://www.php.net/asort
diff --git a/vendor/twig/twig/doc/filters/spaceless.rst b/vendor/twig/twig/doc/filters/spaceless.rst
deleted file mode 100644
index 3308cda..0000000
--- a/vendor/twig/twig/doc/filters/spaceless.rst
+++ /dev/null
@@ -1,65 +0,0 @@
-``spaceless``
-=============
-
-.. versionadded:: 1.38
-
- The ``spaceless`` filter was added in Twig 1.38.
-
-Use the ``spaceless`` filter to remove whitespace *between HTML tags*, not
-whitespace within HTML tags or whitespace in plain text:
-
-.. code-block:: html+twig
-
- {{
- "
- foo
-
- "|spaceless }}
-
- {# output will be
foo
#}
-
-You can combine ``spaceless`` with the ``apply`` tag to apply the transformation
-on large amounts of HTML:
-
-.. code-block:: html+twig
-
- {% apply spaceless %}
-
- foo
-
- {% endapply %}
-
- {# output will be
foo
#}
-
-.. note::
-
- The ``apply`` tag was introduced in Twig 1.40; use the ``filter`` tag with
- previous versions.
-
-This tag is not meant to "optimize" the size of the generated HTML content but
-merely to avoid extra whitespace between HTML tags to avoid browser rendering
-quirks under some circumstances.
-
-.. caution::
-
- As the filter uses a regular expression behind the scenes, its performance
- is directly related to the text size you are working on (remember that
- filters are executed at runtime).
-
-.. tip::
-
- If you want to optimize the size of the generated HTML content, gzip
- compress the output instead.
-
-.. tip::
-
- If you want to create a tag that actually removes all extra whitespace in
- an HTML string, be warned that this is not as easy as it seems to be
- (think of ``textarea`` or ``pre`` tags for instance). Using a third-party
- library like Tidy is probably a better idea.
-
-.. tip::
-
- For more information on whitespace control, read the
- :ref:`dedicated section ` of the documentation and learn how
- you can also use the whitespace control modifier on your tags.
diff --git a/vendor/twig/twig/doc/filters/split.rst b/vendor/twig/twig/doc/filters/split.rst
deleted file mode 100644
index 7b714ad..0000000
--- a/vendor/twig/twig/doc/filters/split.rst
+++ /dev/null
@@ -1,54 +0,0 @@
-``split``
-=========
-
-.. versionadded:: 1.10.3
-
- The ``split`` filter was added in Twig 1.10.3.
-
-The ``split`` filter splits a string by the given delimiter and returns a list
-of strings:
-
-.. code-block:: twig
-
- {% set foo = "one,two,three"|split(',') %}
- {# foo contains ['one', 'two', 'three'] #}
-
-You can also pass a ``limit`` argument:
-
-* If ``limit`` is positive, the returned array will contain a maximum of
- limit elements with the last element containing the rest of string;
-
-* If ``limit`` is negative, all components except the last -limit are
- returned;
-
-* If ``limit`` is zero, then this is treated as 1.
-
-.. code-block:: twig
-
- {% set foo = "one,two,three,four,five"|split(',', 3) %}
- {# foo contains ['one', 'two', 'three,four,five'] #}
-
-If the ``delimiter`` is an empty string, then value will be split by equal
-chunks. Length is set by the ``limit`` argument (one character by default).
-
-.. code-block:: twig
-
- {% set foo = "123"|split('') %}
- {# foo contains ['1', '2', '3'] #}
-
- {% set bar = "aabbcc"|split('', 2) %}
- {# bar contains ['aa', 'bb', 'cc'] #}
-
-.. note::
-
- Internally, Twig uses the PHP `explode`_ or `str_split`_ (if delimiter is
- empty) functions for string splitting.
-
-Arguments
----------
-
-* ``delimiter``: The delimiter
-* ``limit``: The limit argument
-
-.. _`explode`: https://www.php.net/explode
-.. _`str_split`: https://www.php.net/str_split
diff --git a/vendor/twig/twig/doc/filters/striptags.rst b/vendor/twig/twig/doc/filters/striptags.rst
deleted file mode 100644
index d5f542b..0000000
--- a/vendor/twig/twig/doc/filters/striptags.rst
+++ /dev/null
@@ -1,29 +0,0 @@
-``striptags``
-=============
-
-The ``striptags`` filter strips SGML/XML tags and replace adjacent whitespace
-by one space:
-
-.. code-block:: twig
-
- {{ some_html|striptags }}
-
-You can also provide tags which should not be stripped:
-
-.. code-block:: html+twig
-
- {{ some_html|striptags('
') }}
-
-In this example, the `` ``, `` ``, ``
``, and ``
`` tags won't be
-removed from the string.
-
-.. note::
-
- Internally, Twig uses the PHP `strip_tags`_ function.
-
-Arguments
----------
-
-* ``allowable_tags``: Tags which should not be stripped
-
-.. _`strip_tags`: https://www.php.net/strip_tags
diff --git a/vendor/twig/twig/doc/filters/title.rst b/vendor/twig/twig/doc/filters/title.rst
deleted file mode 100644
index dd0311c..0000000
--- a/vendor/twig/twig/doc/filters/title.rst
+++ /dev/null
@@ -1,11 +0,0 @@
-``title``
-=========
-
-The ``title`` filter returns a titlecased version of the value. Words will
-start with uppercase letters, all remaining characters are lowercase:
-
-.. code-block:: twig
-
- {{ 'my first car'|title }}
-
- {# outputs 'My First Car' #}
diff --git a/vendor/twig/twig/doc/filters/trim.rst b/vendor/twig/twig/doc/filters/trim.rst
deleted file mode 100644
index d830866..0000000
--- a/vendor/twig/twig/doc/filters/trim.rst
+++ /dev/null
@@ -1,47 +0,0 @@
-``trim``
-========
-
-.. versionadded:: 1.32
-
- The ``side`` argument was added in Twig 1.32.
-
-.. versionadded:: 1.6.2
-
- The ``trim`` filter was added in Twig 1.6.2.
-
-The ``trim`` filter strips whitespace (or other characters) from the beginning
-and end of a string:
-
-.. code-block:: twig
-
- {{ ' I like Twig. '|trim }}
-
- {# outputs 'I like Twig.' #}
-
- {{ ' I like Twig.'|trim('.') }}
-
- {# outputs ' I like Twig' #}
-
- {{ ' I like Twig. '|trim(side='left') }}
-
- {# outputs 'I like Twig. ' #}
-
- {{ ' I like Twig. '|trim(' ', 'right') }}
-
- {# outputs ' I like Twig.' #}
-
-.. note::
-
- Internally, Twig uses the PHP `trim`_, `ltrim`_, and `rtrim`_ functions.
-
-Arguments
----------
-
-* ``character_mask``: The characters to strip
-
-* ``side``: The default is to strip from the left and the right (`both`) sides, but `left`
- and `right` will strip from either the left side or right side only
-
-.. _`trim`: https://www.php.net/trim
-.. _`ltrim`: https://www.php.net/ltrim
-.. _`rtrim`: https://www.php.net/rtrim
diff --git a/vendor/twig/twig/doc/filters/upper.rst b/vendor/twig/twig/doc/filters/upper.rst
deleted file mode 100644
index 01c9fbb..0000000
--- a/vendor/twig/twig/doc/filters/upper.rst
+++ /dev/null
@@ -1,10 +0,0 @@
-``upper``
-=========
-
-The ``upper`` filter converts a value to uppercase:
-
-.. code-block:: twig
-
- {{ 'welcome'|upper }}
-
- {# outputs 'WELCOME' #}
diff --git a/vendor/twig/twig/doc/filters/url_encode.rst b/vendor/twig/twig/doc/filters/url_encode.rst
deleted file mode 100644
index eac04f9..0000000
--- a/vendor/twig/twig/doc/filters/url_encode.rst
+++ /dev/null
@@ -1,36 +0,0 @@
-``url_encode``
-==============
-
-.. versionadded:: 1.12.3
-
- Support for encoding an array as query string was added in Twig 1.12.3.
-
-.. versionadded:: 1.16.0
-
- The ``raw`` argument was removed in Twig 1.16.0. Twig now always encodes
- according to RFC 3986.
-
-The ``url_encode`` filter percent encodes a given string as URL segment
-or an array as query string:
-
-.. code-block:: twig
-
- {{ "path-seg*ment"|url_encode }}
- {# outputs "path-seg%2Ament" #}
-
- {{ "string with spaces"|url_encode }}
- {# outputs "string%20with%20spaces" #}
-
- {{ {'param': 'value', 'foo': 'bar'}|url_encode }}
- {# outputs "param=value&foo=bar" #}
-
-.. note::
-
- Internally, Twig uses the PHP `urlencode`_ (or `rawurlencode`_ if you pass
- ``true`` as the first parameter) or the `http_build_query`_ function. Note
- that as of Twig 1.16.0, ``urlencode`` **always** uses ``rawurlencode`` (the
- ``raw`` argument was removed.)
-
-.. _`urlencode`: https://www.php.net/urlencode
-.. _`rawurlencode`: https://www.php.net/rawurlencode
-.. _`http_build_query`: https://www.php.net/http_build_query
diff --git a/vendor/twig/twig/doc/functions/attribute.rst b/vendor/twig/twig/doc/functions/attribute.rst
deleted file mode 100644
index e455342..0000000
--- a/vendor/twig/twig/doc/functions/attribute.rst
+++ /dev/null
@@ -1,27 +0,0 @@
-``attribute``
-=============
-
-.. versionadded:: 1.2
-
- The ``attribute`` function was added in Twig 1.2.
-
-The ``attribute`` function can be used to access a "dynamic" attribute of a
-variable:
-
-.. code-block:: twig
-
- {{ attribute(object, method) }}
- {{ attribute(object, method, arguments) }}
- {{ attribute(array, item) }}
-
-In addition, the ``defined`` test can check for the existence of a dynamic
-attribute:
-
-.. code-block:: twig
-
- {{ attribute(object, method) is defined ? 'Method exists' : 'Method does not exist' }}
-
-.. note::
-
- The resolution algorithm is the same as the one used for the ``.``
- notation, except that the item can be any valid expression.
diff --git a/vendor/twig/twig/doc/functions/block.rst b/vendor/twig/twig/doc/functions/block.rst
deleted file mode 100644
index 49d08a1..0000000
--- a/vendor/twig/twig/doc/functions/block.rst
+++ /dev/null
@@ -1,45 +0,0 @@
-``block``
-=========
-
-.. versionadded:: 1.28
-
- Using ``block`` with the ``defined`` test was added in Twig 1.28.
-
-.. versionadded:: 1.28
-
- Support for the template argument was added in Twig 1.28.
-
-When a template uses inheritance and if you want to print a block multiple
-times, use the ``block`` function:
-
-.. code-block:: html+twig
-
- {% block title %}{% endblock %}
-
-
{{ block('title') }}
-
- {% block body %}{% endblock %}
-
-The ``block`` function can also be used to display one block from another
-template:
-
-.. code-block:: twig
-
- {{ block("title", "common_blocks.twig") }}
-
-Use the ``defined`` test to check if a block exists in the context of the
-current template:
-
-.. code-block:: twig
-
- {% if block("footer") is defined %}
- ...
- {% endif %}
-
- {% if block("footer", "common_blocks.twig") is defined %}
- ...
- {% endif %}
-
-.. seealso::
-
- :doc:`extends<../tags/extends>`, :doc:`parent<../functions/parent>`
diff --git a/vendor/twig/twig/doc/functions/constant.rst b/vendor/twig/twig/doc/functions/constant.rst
deleted file mode 100644
index dc15350..0000000
--- a/vendor/twig/twig/doc/functions/constant.rst
+++ /dev/null
@@ -1,31 +0,0 @@
-``constant``
-============
-
-.. versionadded:: 1.12.1
-
- constant now accepts object instances as the second argument.
-
-.. versionadded:: 1.28
-
- Using ``constant`` with the ``defined`` test was added in Twig 1.28.
-
-``constant`` returns the constant value for a given string:
-
-.. code-block:: twig
-
- {{ some_date|date(constant('DATE_W3C')) }}
- {{ constant('Namespace\\Classname::CONSTANT_NAME') }}
-
-As of 1.12.1 you can read constants from object instances as well:
-
-.. code-block:: twig
-
- {{ constant('RSS', date) }}
-
-Use the ``defined`` test to check if a constant is defined:
-
-.. code-block:: twig
-
- {% if constant('SOME_CONST') is defined %}
- ...
- {% endif %}
diff --git a/vendor/twig/twig/doc/functions/cycle.rst b/vendor/twig/twig/doc/functions/cycle.rst
deleted file mode 100644
index 84cff6a..0000000
--- a/vendor/twig/twig/doc/functions/cycle.rst
+++ /dev/null
@@ -1,28 +0,0 @@
-``cycle``
-=========
-
-The ``cycle`` function cycles on an array of values:
-
-.. code-block:: twig
-
- {% set start_year = date() | date('Y') %}
- {% set end_year = start_year + 5 %}
-
- {% for year in start_year..end_year %}
- {{ cycle(['odd', 'even'], loop.index0) }}
- {% endfor %}
-
-The array can contain any number of values:
-
-.. code-block:: twig
-
- {% set fruits = ['apple', 'orange', 'citrus'] %}
-
- {% for i in 0..10 %}
- {{ cycle(fruits, i) }}
- {% endfor %}
-
-Arguments
----------
-
-* ``position``: The cycle position
diff --git a/vendor/twig/twig/doc/functions/date.rst b/vendor/twig/twig/doc/functions/date.rst
deleted file mode 100644
index 25eb43e..0000000
--- a/vendor/twig/twig/doc/functions/date.rst
+++ /dev/null
@@ -1,55 +0,0 @@
-``date``
-========
-
-.. versionadded:: 1.6
-
- The date function has been added in Twig 1.6.
-
-.. versionadded:: 1.6.1
-
- The default timezone support has been added in Twig 1.6.1.
-
-Converts an argument to a date to allow date comparison:
-
-.. code-block:: html+twig
-
- {% if date(user.created_at) < date('-2days') %}
- {# do something #}
- {% endif %}
-
-The argument must be in one of PHP’s supported `date and time formats`_.
-
-You can pass a timezone as the second argument:
-
-.. code-block:: html+twig
-
- {% if date(user.created_at) < date('-2days', 'Europe/Paris') %}
- {# do something #}
- {% endif %}
-
-If no argument is passed, the function returns the current date:
-
-.. code-block:: html+twig
-
- {% if date(user.created_at) < date() %}
- {# always! #}
- {% endif %}
-
-.. note::
-
- You can set the default timezone globally by calling ``setTimezone()`` on
- the ``core`` extension instance::
-
- $twig = new \Twig\Environment($loader);
- $twig->getExtension('\Twig\Extension\CoreExtension')->setTimezone('Europe/Paris');
-
- // before Twig 1.26
- $twig->getExtension('core')->setTimezone('Europe/Paris');
-
-Arguments
----------
-
-* ``date``: The date
-* ``timezone``: The timezone
-
-.. _`date and time formats`: https://www.php.net/manual/en/datetime.formats.php
diff --git a/vendor/twig/twig/doc/functions/dump.rst b/vendor/twig/twig/doc/functions/dump.rst
deleted file mode 100644
index 24b9825..0000000
--- a/vendor/twig/twig/doc/functions/dump.rst
+++ /dev/null
@@ -1,70 +0,0 @@
-``dump``
-========
-
-.. versionadded:: 1.5
-
- The ``dump`` function was added in Twig 1.5.
-
-The ``dump`` function dumps information about a template variable. This is
-mostly useful to debug a template that does not behave as expected by
-introspecting its variables:
-
-.. code-block:: twig
-
- {{ dump(user) }}
-
-.. note::
-
- The ``dump`` function is not available by default. You must add the
- ``\Twig\Extension\DebugExtension`` extension explicitly when creating your Twig
- environment::
-
- $twig = new \Twig\Environment($loader, [
- 'debug' => true,
- // ...
- ]);
- $twig->addExtension(new \Twig\Extension\DebugExtension());
-
- Even when enabled, the ``dump`` function won't display anything if the
- ``debug`` option on the environment is not enabled (to avoid leaking debug
- information on a production server).
-
-In an HTML context, wrap the output with a ``pre`` tag to make it easier to
-read:
-
-.. code-block:: html+twig
-
-
- {{ dump(user) }}
-
-
-.. tip::
-
- Using a ``pre`` tag is not needed when `XDebug`_ is enabled and
- ``html_errors`` is ``on``; as a bonus, the output is also nicer with
- XDebug enabled.
-
-You can debug several variables by passing them as additional arguments:
-
-.. code-block:: twig
-
- {{ dump(user, categories) }}
-
-If you don't pass any value, all variables from the current context are
-dumped:
-
-.. code-block:: twig
-
- {{ dump() }}
-
-.. note::
-
- Internally, Twig uses the PHP `var_dump`_ function.
-
-Arguments
----------
-
-* ``context``: The context to dump
-
-.. _`XDebug`: https://xdebug.org/docs/display
-.. _`var_dump`: https://www.php.net/var_dump
diff --git a/vendor/twig/twig/doc/functions/include.rst b/vendor/twig/twig/doc/functions/include.rst
deleted file mode 100644
index ee17a13..0000000
--- a/vendor/twig/twig/doc/functions/include.rst
+++ /dev/null
@@ -1,85 +0,0 @@
-``include``
-===========
-
-.. versionadded:: 1.12
-
- The ``include`` function was added in Twig 1.12.
-
-The ``include`` function returns the rendered content of a template:
-
-.. code-block:: twig
-
- {{ include('template.html') }}
- {{ include(some_var) }}
-
-Included templates have access to the variables of the active context.
-
-If you are using the filesystem loader, the templates are looked for in the
-paths defined by it.
-
-The context is passed by default to the template but you can also pass
-additional variables:
-
-.. code-block:: twig
-
- {# template.html will have access to the variables from the current context and the additional ones provided #}
- {{ include('template.html', {foo: 'bar'}) }}
-
-You can disable access to the context by setting ``with_context`` to
-``false``:
-
-.. code-block:: twig
-
- {# only the foo variable will be accessible #}
- {{ include('template.html', {foo: 'bar'}, with_context = false) }}
-
-.. code-block:: twig
-
- {# no variables will be accessible #}
- {{ include('template.html', with_context = false) }}
-
-And if the expression evaluates to a ``\Twig\Template`` or a
-``\Twig\TemplateWrapper`` instance, Twig will use it directly::
-
- // {{ include(template) }}
-
- // deprecated as of Twig 1.28
- $template = $twig->loadTemplate('some_template.twig');
-
- // as of Twig 1.28
- $template = $twig->load('some_template.twig');
-
- $twig->display('template.twig', ['template' => $template]);
-
-When you set the ``ignore_missing`` flag, Twig will return an empty string if
-the template does not exist:
-
-.. code-block:: twig
-
- {{ include('sidebar.html', ignore_missing = true) }}
-
-You can also provide a list of templates that are checked for existence before
-inclusion. The first template that exists will be rendered:
-
-.. code-block:: twig
-
- {{ include(['page_detailed.html', 'page.html']) }}
-
-If ``ignore_missing`` is set, it will fall back to rendering nothing if none
-of the templates exist, otherwise it will throw an exception.
-
-When including a template created by an end user, you should consider
-sandboxing it:
-
-.. code-block:: twig
-
- {{ include('page.html', sandboxed = true) }}
-
-Arguments
----------
-
-* ``template``: The template to render
-* ``variables``: The variables to pass to the template
-* ``with_context``: Whether to pass the current context variables or not
-* ``ignore_missing``: Whether to ignore missing templates or not
-* ``sandboxed``: Whether to sandbox the template or not
diff --git a/vendor/twig/twig/doc/functions/index.rst b/vendor/twig/twig/doc/functions/index.rst
deleted file mode 100644
index 07214a7..0000000
--- a/vendor/twig/twig/doc/functions/index.rst
+++ /dev/null
@@ -1,20 +0,0 @@
-Functions
-=========
-
-.. toctree::
- :maxdepth: 1
-
- attribute
- block
- constant
- cycle
- date
- dump
- include
- max
- min
- parent
- random
- range
- source
- template_from_string
diff --git a/vendor/twig/twig/doc/functions/max.rst b/vendor/twig/twig/doc/functions/max.rst
deleted file mode 100644
index 36098ec..0000000
--- a/vendor/twig/twig/doc/functions/max.rst
+++ /dev/null
@@ -1,21 +0,0 @@
-``max``
-=======
-
-.. versionadded:: 1.15
-
- The ``max`` function was added in Twig 1.15.
-
-``max`` returns the biggest value of a sequence or a set of values:
-
-.. code-block:: twig
-
- {{ max(1, 3, 2) }}
- {{ max([1, 3, 2]) }}
-
-When called with a mapping, max ignores keys and only compares values:
-
-.. code-block:: twig
-
- {{ max({2: "e", 1: "a", 3: "b", 5: "d", 4: "c"}) }}
- {# returns "e" #}
-
diff --git a/vendor/twig/twig/doc/functions/min.rst b/vendor/twig/twig/doc/functions/min.rst
deleted file mode 100644
index ff7503d..0000000
--- a/vendor/twig/twig/doc/functions/min.rst
+++ /dev/null
@@ -1,21 +0,0 @@
-``min``
-=======
-
-.. versionadded:: 1.15
-
- The ``min`` function was added in Twig 1.15.
-
-``min`` returns the lowest value of a sequence or a set of values:
-
-.. code-block:: twig
-
- {{ min(1, 3, 2) }}
- {{ min([1, 3, 2]) }}
-
-When called with a mapping, min ignores keys and only compares values:
-
-.. code-block:: twig
-
- {{ min({2: "e", 3: "a", 1: "b", 5: "d", 4: "c"}) }}
- {# returns "a" #}
-
diff --git a/vendor/twig/twig/doc/functions/parent.rst b/vendor/twig/twig/doc/functions/parent.rst
deleted file mode 100644
index 158bac7..0000000
--- a/vendor/twig/twig/doc/functions/parent.rst
+++ /dev/null
@@ -1,22 +0,0 @@
-``parent``
-==========
-
-When a template uses inheritance, it's possible to render the contents of the
-parent block when overriding a block by using the ``parent`` function:
-
-.. code-block:: html+twig
-
- {% extends "base.html" %}
-
- {% block sidebar %}
-
Table Of Contents
- ...
- {{ parent() }}
- {% endblock %}
-
-The ``parent()`` call will return the content of the ``sidebar`` block as
-defined in the ``base.html`` template.
-
-.. seealso::
-
- :doc:`extends<../tags/extends>`, :doc:`block<../functions/block>`, :doc:`block<../tags/block>`
diff --git a/vendor/twig/twig/doc/functions/random.rst b/vendor/twig/twig/doc/functions/random.rst
deleted file mode 100644
index e0462ad..0000000
--- a/vendor/twig/twig/doc/functions/random.rst
+++ /dev/null
@@ -1,37 +0,0 @@
-``random``
-==========
-
-.. versionadded:: 1.5
-
- The ``random`` function was added in Twig 1.5.
-
-.. versionadded:: 1.6
-
- String and integer handling was added in Twig 1.6.
-
-.. versionadded:: 1.38
-
- The ``max`` argument was added in Twig 1.38.
-
-The ``random`` function returns a random value depending on the supplied
-parameter type:
-
-* a random item from a sequence;
-* a random character from a string;
-* a random integer between 0 and the integer parameter (inclusive).
-* a random integer between the integer parameter (when negative) and 0 (inclusive).
-* a random integer between the first integer and the second integer parameter (inclusive).
-
-.. code-block:: twig
-
- {{ random(['apple', 'orange', 'citrus']) }} {# example output: orange #}
- {{ random('ABC') }} {# example output: C #}
- {{ random() }} {# example output: 15386094 (works as the native PHP mt_rand function) #}
- {{ random(5) }} {# example output: 3 #}
- {{ random(50, 100) }} {# example output: 63 #}
-
-Arguments
----------
-
-* ``values``: The values
-* ``max``: The max value when values is an integer
diff --git a/vendor/twig/twig/doc/functions/range.rst b/vendor/twig/twig/doc/functions/range.rst
deleted file mode 100644
index e537b11..0000000
--- a/vendor/twig/twig/doc/functions/range.rst
+++ /dev/null
@@ -1,58 +0,0 @@
-``range``
-=========
-
-Returns a list containing an arithmetic progression of integers:
-
-.. code-block:: twig
-
- {% for i in range(0, 3) %}
- {{ i }},
- {% endfor %}
-
- {# outputs 0, 1, 2, 3, #}
-
-When step is given (as the third parameter), it specifies the increment (or
-decrement for negative values):
-
-.. code-block:: twig
-
- {% for i in range(0, 6, 2) %}
- {{ i }},
- {% endfor %}
-
- {# outputs 0, 2, 4, 6, #}
-
-.. note::
-
- Note that if the start is greater than the end, ``range`` assumes a step of
- ``-1``:
-
- .. code-block:: twig
-
- {% for i in range(3, 0) %}
- {{ i }},
- {% endfor %}
-
- {# outputs 3, 2, 1, 0, #}
-
-The Twig built-in ``..`` operator is just syntactic sugar for the ``range``
-function (with a step of ``1``, or ``-1`` if the start is greater than the end):
-
-.. code-block:: twig
-
- {% for i in 0..3 %}
- {{ i }},
- {% endfor %}
-
-.. tip::
-
- The ``range`` function works as the native PHP `range`_ function.
-
-Arguments
----------
-
-* ``low``: The first value of the sequence.
-* ``high``: The highest possible value of the sequence.
-* ``step``: The increment between elements of the sequence.
-
-.. _`range`: https://www.php.net/range
diff --git a/vendor/twig/twig/doc/functions/source.rst b/vendor/twig/twig/doc/functions/source.rst
deleted file mode 100644
index 72d9994..0000000
--- a/vendor/twig/twig/doc/functions/source.rst
+++ /dev/null
@@ -1,34 +0,0 @@
-``source``
-==========
-
-.. versionadded:: 1.15
-
- The ``source`` function was added in Twig 1.15.
-
-.. versionadded:: 1.18.3
-
- The ``ignore_missing`` flag was added in Twig 1.18.3.
-
-The ``source`` function returns the content of a template without rendering it:
-
-.. code-block:: twig
-
- {{ source('template.html') }}
- {{ source(some_var) }}
-
-When you set the ``ignore_missing`` flag, Twig will return an empty string if
-the template does not exist:
-
-.. code-block:: twig
-
- {{ source('template.html', ignore_missing = true) }}
-
-The function uses the same template loaders as the ones used to include
-templates. So, if you are using the filesystem loader, the templates are looked
-for in the paths defined by it.
-
-Arguments
----------
-
-* ``name``: The name of the template to read
-* ``ignore_missing``: Whether to ignore missing templates or not
diff --git a/vendor/twig/twig/doc/functions/template_from_string.rst b/vendor/twig/twig/doc/functions/template_from_string.rst
deleted file mode 100644
index ef7a984..0000000
--- a/vendor/twig/twig/doc/functions/template_from_string.rst
+++ /dev/null
@@ -1,45 +0,0 @@
-``template_from_string``
-========================
-
-.. versionadded:: 1.11
-
- The ``template_from_string`` function was added in Twig 1.11.
-
-.. versionadded:: 1.39
-
- The name argument was added in Twig 1.39.
-
-The ``template_from_string`` function loads a template from a string:
-
-.. code-block:: twig
-
- {{ include(template_from_string("Hello {{ name }}")) }}
- {{ include(template_from_string(page.template)) }}
-
-To ease debugging, you can also give the template a name that will be part of
-any related error message:
-
-.. code-block:: twig
-
- {{ include(template_from_string(page.template, "template for page " ~ page.name)) }}
-
-.. note::
-
- The ``template_from_string`` function is not available by default. You
- must add the ``\Twig\Extension\StringLoaderExtension`` extension explicitly when
- creating your Twig environment::
-
- $twig = new \Twig\Environment(...);
- $twig->addExtension(new \Twig\Extension\StringLoaderExtension());
-
-.. note::
-
- Even if you will probably always use the ``template_from_string`` function
- with the ``include`` function, you can use it with any tag or function that
- takes a template as an argument (like the ``embed`` or ``extends`` tags).
-
-Arguments
----------
-
-* ``template``: The template
-* ``name``: A name for the template
diff --git a/vendor/twig/twig/doc/index.rst b/vendor/twig/twig/doc/index.rst
deleted file mode 100644
index 358bd73..0000000
--- a/vendor/twig/twig/doc/index.rst
+++ /dev/null
@@ -1,19 +0,0 @@
-Twig
-====
-
-.. toctree::
- :maxdepth: 2
-
- intro
- installation
- templates
- api
- advanced
- internals
- deprecated
- recipes
- coding_standards
- tags/index
- filters/index
- functions/index
- tests/index
diff --git a/vendor/twig/twig/doc/installation.rst b/vendor/twig/twig/doc/installation.rst
deleted file mode 100644
index fe3bd11..0000000
--- a/vendor/twig/twig/doc/installation.rst
+++ /dev/null
@@ -1,72 +0,0 @@
-Installation
-============
-
-You have multiple ways to install Twig.
-
-Installing the Twig PHP package
--------------------------------
-
-Install `Composer`_ and run the following command:
-
-.. code-block:: bash
-
- composer require "twig/twig:^1.0"
-
-Installing the C extension
---------------------------
-
-.. versionadded:: 1.4
-
- The C extension was added in Twig 1.4.
-
-Twig comes with an **optional** C extension that improves the performance of the
-Twig runtime engine.
-
-Note that this extension does not replace the PHP code but only provides an
-optimized version of the ``\Twig\Template::getAttribute()`` method; you must
-still install the regular PHP code
-
-The C extension is only compatible and useful for **PHP5**.
-
-Install it like any other PHP extensions:
-
-.. code-block:: bash
-
- cd ext/twig
- phpize
- ./configure
- make
- make install
-
-For Windows:
-
-1. Setup the build environment following the `PHP documentation`_
-2. Put Twig's C extension source code into ``C:\php-sdk\phpdev\vcXX\x86\php-source-directory\ext\twig``
-3. Use the ``configure --disable-all --enable-cli --enable-twig=shared`` command instead of step 14
-4. ``nmake``
-5. Copy the ``C:\php-sdk\phpdev\vcXX\x86\php-source-directory\Release_TS\php_twig.dll`` file to your PHP setup.
-
-.. tip::
-
- For Windows ZendServer, ZTS is not enabled as mentioned in `Zend Server FAQ`_.
-
- You have to use ``configure --disable-all --disable-zts --enable-cli
- --enable-twig=shared`` to be able to build the twig C extension for
- ZendServer.
-
- The built DLL will be available in
- ``C:\\php-sdk\\phpdev\\vcXX\\x86\\php-source-directory\\Release``
-
-Finally, enable the extension in your ``php.ini`` configuration file:
-
-.. code-block:: ini
-
- extension=twig.so # For Unix systems
- extension=php_twig.dll # For Windows systems
-
-And from now on, Twig will automatically compile your templates to take
-advantage of the C extension.
-
-.. _`Composer`: https://getcomposer.org/download/
-.. _`PHP documentation`: https://wiki.php.net/internals/windows/stepbystepbuild
-.. _`Zend Server FAQ`: https://www.zend.com/en/products/server/faq#faqD6
diff --git a/vendor/twig/twig/doc/internals.rst b/vendor/twig/twig/doc/internals.rst
deleted file mode 100644
index de4fb9e..0000000
--- a/vendor/twig/twig/doc/internals.rst
+++ /dev/null
@@ -1,145 +0,0 @@
-Twig Internals
-==============
-
-Twig is very extensible and you can hack it. Keep in mind that you
-should probably try to create an extension before hacking the core, as most
-features and enhancements can be handled with extensions. This chapter is also
-useful for people who want to understand how Twig works under the hood.
-
-How does Twig work?
--------------------
-
-The rendering of a Twig template can be summarized into four key steps:
-
-* **Load** the template: If the template is already compiled, load it and go
- to the *evaluation* step, otherwise:
-
- * First, the **lexer** tokenizes the template source code into small pieces
- for easier processing;
-
- * Then, the **parser** converts the token stream into a meaningful tree
- of nodes (the Abstract Syntax Tree);
-
- * Finally, the *compiler* transforms the AST into PHP code.
-
-* **Evaluate** the template: It means calling the ``display()``
- method of the compiled template and passing it the context.
-
-The Lexer
----------
-
-The lexer tokenizes a template source code into a token stream (each token is
-an instance of ``\Twig\Token``, and the stream is an instance of
-``\Twig\TokenStream``). The default lexer recognizes 13 different token types:
-
-* ``\Twig\Token::BLOCK_START_TYPE``, ``\Twig\Token::BLOCK_END_TYPE``: Delimiters for blocks (``{% %}``)
-* ``\Twig\Token::VAR_START_TYPE``, ``\Twig\Token::VAR_END_TYPE``: Delimiters for variables (``{{ }}``)
-* ``\Twig\Token::TEXT_TYPE``: A text outside an expression;
-* ``\Twig\Token::NAME_TYPE``: A name in an expression;
-* ``\Twig\Token::NUMBER_TYPE``: A number in an expression;
-* ``\Twig\Token::STRING_TYPE``: A string in an expression;
-* ``\Twig\Token::OPERATOR_TYPE``: An operator;
-* ``\Twig\Token::PUNCTUATION_TYPE``: A punctuation sign;
-* ``\Twig\Token::INTERPOLATION_START_TYPE``, ``\Twig\Token::INTERPOLATION_END_TYPE`` (as of Twig 1.5): Delimiters for string interpolation;
-* ``\Twig\Token::EOF_TYPE``: Ends of template.
-
-You can manually convert a source code into a token stream by calling the
-``tokenize()`` method of an environment::
-
- $stream = $twig->tokenize(new \Twig\Source($source, $identifier));
-
-.. versionadded:: 1.27
-
- ``\Twig\Source`` was introduced in version 1.27, pass the source and the
- identifier directly on previous versions.
-
-As the stream has a ``__toString()`` method, you can have a textual
-representation of it by echoing the object::
-
- echo $stream."\n";
-
-Here is the output for the ``Hello {{ name }}`` template:
-
-.. code-block:: text
-
- TEXT_TYPE(Hello )
- VAR_START_TYPE()
- NAME_TYPE(name)
- VAR_END_TYPE()
- EOF_TYPE()
-
-.. note::
-
- The default lexer (``\Twig\Lexer``) can be changed by calling
- the ``setLexer()`` method::
-
- $twig->setLexer($lexer);
-
-The Parser
-----------
-
-The parser converts the token stream into an AST (Abstract Syntax Tree), or a
-node tree (an instance of ``\Twig\Node\ModuleNode``). The core extension defines
-the basic nodes like: ``for``, ``if``, ... and the expression nodes.
-
-You can manually convert a token stream into a node tree by calling the
-``parse()`` method of an environment::
-
- $nodes = $twig->parse($stream);
-
-Echoing the node object gives you a nice representation of the tree::
-
- echo $nodes."\n";
-
-Here is the output for the ``Hello {{ name }}`` template:
-
-.. code-block:: text
-
- \Twig\Node\ModuleNode(
- \Twig\Node\TextNode(Hello )
- \Twig\Node\PrintNode(
- \Twig\Node\Expression\NameExpression(name)
- )
- )
-
-.. note::
-
- The default parser (``\Twig\TokenParser\AbstractTokenParser``) can be changed by calling the
- ``setParser()`` method::
-
- $twig->setParser($parser);
-
-The Compiler
-------------
-
-The last step is done by the compiler. It takes a node tree as an input and
-generates PHP code usable for runtime execution of the template.
-
-You can manually compile a node tree to PHP code with the ``compile()`` method
-of an environment::
-
- $php = $twig->compile($nodes);
-
-The generated template for a ``Hello {{ name }}`` template reads as follows
-(the actual output can differ depending on the version of Twig you are
-using)::
-
- /* Hello {{ name }} */
- class __TwigTemplate_1121b6f109fe93ebe8c6e22e3712bceb extends \Twig\Template
- {
- protected function doDisplay(array $context, array $blocks = [])
- {
- // line 1
- echo "Hello ";
- echo twig_escape_filter($this->env, (isset($context["name"]) ? $context["name"] : null), "html", null, true);
- }
-
- // some more code
- }
-
-.. note::
-
- The default compiler (``\Twig\Compiler``) can be changed by calling the
- ``setCompiler()`` method::
-
- $twig->setCompiler($compiler);
diff --git a/vendor/twig/twig/doc/intro.rst b/vendor/twig/twig/doc/intro.rst
deleted file mode 100644
index d28e0fc..0000000
--- a/vendor/twig/twig/doc/intro.rst
+++ /dev/null
@@ -1,80 +0,0 @@
-Introduction
-============
-
-Welcome to the documentation for Twig, the flexible, fast, and secure template
-engine for PHP.
-
-Twig is both designer and developer friendly by sticking to PHP's principles and
-adding functionality useful for templating environments.
-
-The key-features are...
-
-* *Fast*: Twig compiles templates down to plain optimized PHP code. The
- overhead compared to regular PHP code was reduced to the very minimum.
-
-* *Secure*: Twig has a sandbox mode to evaluate untrusted template code. This
- allows Twig to be used as a template language for applications where users
- may modify the template design.
-
-* *Flexible*: Twig is powered by a flexible lexer and parser. This allows the
- developer to define their own custom tags and filters, and to create their own DSL.
-
-Twig is used by many Open-Source projects like Symfony, Drupal8, eZPublish,
-phpBB, Matomo, OroCRM; and many frameworks have support for it as well like
-Slim, Yii, Laravel, and Codeigniter — just to name a few.
-
-.. admonition:: Screencast
-
- Like to learn from video tutorials? Check out the `SymfonyCasts Twig Tutorial`_!
-
-Prerequisites
--------------
-
-Twig 1.x needs at least **PHP 7.2.5** to run.
-
-Installation
-------------
-
-The recommended way to install Twig is via Composer:
-
-.. code-block:: bash
-
- composer require "twig/twig:^1.0"
-
-.. note::
-
- To learn more about the other installation methods, read the
- :doc:`installation` chapter; it also explains how to install
- the Twig C extension.
-
-Basic API Usage
----------------
-
-This section gives you a brief introduction to the PHP API for Twig::
-
- require_once '/path/to/vendor/autoload.php';
-
- $loader = new \Twig\Loader\ArrayLoader([
- 'index' => 'Hello {{ name }}!',
- ]);
- $twig = new \Twig\Environment($loader);
-
- echo $twig->render('index', ['name' => 'Fabien']);
-
-Twig uses a loader (``\Twig\Loader\ArrayLoader``) to locate templates, and an
-environment (``\Twig\Environment``) to store its configuration.
-
-The ``render()`` method loads the template passed as a first argument and
-renders it with the variables passed as a second argument.
-
-As templates are generally stored on the filesystem, Twig also comes with a
-filesystem loader::
-
- $loader = new \Twig\Loader\FilesystemLoader('/path/to/templates');
- $twig = new \Twig\Environment($loader, [
- 'cache' => '/path/to/compilation_cache',
- ]);
-
- echo $twig->render('index.html', ['name' => 'Fabien']);
-
-.. _`SymfonyCasts Twig Tutorial`: https://symfonycasts.com/screencast/twig
diff --git a/vendor/twig/twig/doc/recipes.rst b/vendor/twig/twig/doc/recipes.rst
deleted file mode 100644
index 453bcaa..0000000
--- a/vendor/twig/twig/doc/recipes.rst
+++ /dev/null
@@ -1,568 +0,0 @@
-Recipes
-=======
-
-.. _deprecation-notices:
-
-Displaying Deprecation Notices
-------------------------------
-
-.. versionadded:: 1.21
-
- This works as of Twig 1.21.
-
-Deprecated features generate deprecation notices (via a call to the
-``trigger_error()`` PHP function). By default, they are silenced and never
-displayed nor logged.
-
-To remove all deprecated feature usages from your templates, write and run a
-script along the lines of the following::
-
- require_once __DIR__.'/vendor/autoload.php';
-
- $twig = create_your_twig_env();
-
- $deprecations = new \Twig\Util\DeprecationCollector($twig);
-
- print_r($deprecations->collectDir(__DIR__.'/templates'));
-
-The ``collectDir()`` method compiles all templates found in a directory,
-catches deprecation notices, and return them.
-
-.. tip::
-
- If your templates are not stored on the filesystem, use the ``collect()``
- method instead. ``collect()`` takes a ``Traversable`` which must return
- template names as keys and template contents as values (as done by
- ``\Twig\Util\TemplateDirIterator``).
-
-However, this code won't find all deprecations (like using deprecated some Twig
-classes). To catch all notices, register a custom error handler like the one
-below::
-
- $deprecations = [];
- set_error_handler(function ($type, $msg) use (&$deprecations) {
- if (E_USER_DEPRECATED === $type) {
- $deprecations[] = $msg;
- }
- });
-
- // run your application
-
- print_r($deprecations);
-
-Note that most deprecation notices are triggered during **compilation**, so
-they won't be generated when templates are already cached.
-
-.. tip::
-
- If you want to manage the deprecation notices from your PHPUnit tests, have
- a look at the `symfony/phpunit-bridge
- `_ package, which eases the
- process.
-
-Making a Layout conditional
----------------------------
-
-Working with Ajax means that the same content is sometimes displayed as is,
-and sometimes decorated with a layout. As Twig layout template names can be
-any valid expression, you can pass a variable that evaluates to ``true`` when
-the request is made via Ajax and choose the layout accordingly:
-
-.. code-block:: twig
-
- {% extends request.ajax ? "base_ajax.html" : "base.html" %}
-
- {% block content %}
- This is the content to be displayed.
- {% endblock %}
-
-Making an Include dynamic
--------------------------
-
-When including a template, its name does not need to be a string. For
-instance, the name can depend on the value of a variable:
-
-.. code-block:: twig
-
- {% include var ~ '_foo.html' %}
-
-If ``var`` evaluates to ``index``, the ``index_foo.html`` template will be
-rendered.
-
-As a matter of fact, the template name can be any valid expression, such as
-the following:
-
-.. code-block:: twig
-
- {% include var|default('index') ~ '_foo.html' %}
-
-Overriding a Template that also extends itself
-----------------------------------------------
-
-A template can be customized in two different ways:
-
-* *Inheritance*: A template *extends* a parent template and overrides some
- blocks;
-
-* *Replacement*: If you use the filesystem loader, Twig loads the first
- template it finds in a list of configured directories; a template found in a
- directory *replaces* another one from a directory further in the list.
-
-But how do you combine both: *replace* a template that also extends itself
-(aka a template in a directory further in the list)?
-
-Let's say that your templates are loaded from both ``.../templates/mysite``
-and ``.../templates/default`` in this order. The ``page.twig`` template,
-stored in ``.../templates/default`` reads as follows:
-
-.. code-block:: twig
-
- {# page.twig #}
- {% extends "layout.twig" %}
-
- {% block content %}
- {% endblock %}
-
-You can replace this template by putting a file with the same name in
-``.../templates/mysite``. And if you want to extend the original template, you
-might be tempted to write the following:
-
-.. code-block:: twig
-
- {# page.twig in .../templates/mysite #}
- {% extends "page.twig" %} {# from .../templates/default #}
-
-However, this will not work as Twig will always load the template from
-``.../templates/mysite``.
-
-It turns out it is possible to get this to work, by adding a directory right
-at the end of your template directories, which is the parent of all of the
-other directories: ``.../templates`` in our case. This has the effect of
-making every template file within our system uniquely addressable. Most of the
-time you will use the "normal" paths, but in the special case of wanting to
-extend a template with an overriding version of itself we can reference its
-parent's full, unambiguous template path in the extends tag:
-
-.. code-block:: twig
-
- {# page.twig in .../templates/mysite #}
- {% extends "default/page.twig" %} {# from .../templates #}
-
-.. note::
-
- This recipe was inspired by the following Django wiki page:
- https://code.djangoproject.com/wiki/ExtendingTemplates
-
-Customizing the Syntax
-----------------------
-
-Twig allows some syntax customization for the block delimiters. It's **not**
-recommended to use this feature as templates will be tied with your custom
-syntax. But for specific projects, it can make sense to change the defaults.
-
-To change the block delimiters, you need to create your own lexer object::
-
- $twig = new \Twig\Environment();
-
- $lexer = new \Twig\Lexer($twig, [
- 'tag_comment' => ['{#', '#}'],
- 'tag_block' => ['{%', '%}'],
- 'tag_variable' => ['{{', '}}'],
- 'interpolation' => ['#{', '}'],
- ]);
- $twig->setLexer($lexer);
-
-Here are some configuration example that simulates some other template engines
-syntax::
-
- // Ruby erb syntax
- $lexer = new \Twig\Lexer($twig, [
- 'tag_comment' => ['<%#', '%>'],
- 'tag_block' => ['<%', '%>'],
- 'tag_variable' => ['<%=', '%>'],
- ]);
-
- // SGML Comment Syntax
- $lexer = new \Twig\Lexer($twig, [
- 'tag_comment' => [''],
- 'tag_block' => [''],
- 'tag_variable' => ['${', '}'],
- ]);
-
- // Smarty like
- $lexer = new \Twig\Lexer($twig, [
- 'tag_comment' => ['{*', '*}'],
- 'tag_block' => ['{', '}'],
- 'tag_variable' => ['{$', '}'],
- ]);
-
-Using dynamic Object Properties
--------------------------------
-
-When Twig encounters a variable like ``article.title``, it tries to find a
-``title`` public property in the ``article`` object.
-
-It also works if the property does not exist but is rather defined dynamically
-thanks to the magic ``__get()`` method; you need to also implement the
-``__isset()`` magic method like shown in the following snippet of code::
-
- class Article
- {
- public function __get($name)
- {
- if ('title' == $name) {
- return 'The title';
- }
-
- // throw some kind of error
- }
-
- public function __isset($name)
- {
- if ('title' == $name) {
- return true;
- }
-
- return false;
- }
- }
-
-Accessing the parent Context in Nested Loops
---------------------------------------------
-
-Sometimes, when using nested loops, you need to access the parent context. The
-parent context is always accessible via the ``loop.parent`` variable. For
-instance, if you have the following template data::
-
- $data = [
- 'topics' => [
- 'topic1' => ['Message 1 of topic 1', 'Message 2 of topic 1'],
- 'topic2' => ['Message 1 of topic 2', 'Message 2 of topic 2'],
- ],
- ];
-
-And the following template to display all messages in all topics:
-
-.. code-block:: twig
-
- {% for topic, messages in topics %}
- * {{ loop.index }}: {{ topic }}
- {% for message in messages %}
- - {{ loop.parent.loop.index }}.{{ loop.index }}: {{ message }}
- {% endfor %}
- {% endfor %}
-
-The output will be similar to:
-
-.. code-block:: text
-
- * 1: topic1
- - 1.1: The message 1 of topic 1
- - 1.2: The message 2 of topic 1
- * 2: topic2
- - 2.1: The message 1 of topic 2
- - 2.2: The message 2 of topic 2
-
-In the inner loop, the ``loop.parent`` variable is used to access the outer
-context. So, the index of the current ``topic`` defined in the outer for loop
-is accessible via the ``loop.parent.loop.index`` variable.
-
-Defining undefined Functions and Filters on the Fly
----------------------------------------------------
-
-When a function (or a filter) is not defined, Twig defaults to throw a
-``\Twig\Error\SyntaxError`` exception. However, it can also call a `callback`_ (any
-valid PHP callable) which should return a function (or a filter).
-
-For filters, register callbacks with ``registerUndefinedFilterCallback()``.
-For functions, use ``registerUndefinedFunctionCallback()``::
-
- // auto-register all native PHP functions as Twig functions
- // don't try this at home as it's not secure at all!
- $twig->registerUndefinedFunctionCallback(function ($name) {
- if (function_exists($name)) {
- return new \Twig\TwigFunction($name, $name);
- }
-
- return false;
- });
-
-If the callable is not able to return a valid function (or filter), it must
-return ``false``.
-
-If you register more than one callback, Twig will call them in turn until one
-does not return ``false``.
-
-.. tip::
-
- As the resolution of functions and filters is done during compilation,
- there is no overhead when registering these callbacks.
-
-Validating the Template Syntax
-------------------------------
-
-When template code is provided by a third-party (through a web interface for
-instance), it might be interesting to validate the template syntax before
-saving it. If the template code is stored in a ``$template`` variable, here is
-how you can do it::
-
- try {
- $twig->parse($twig->tokenize(new \Twig\Source($template)));
-
- // the $template is valid
- } catch (\Twig\Error\SyntaxError $e) {
- // $template contains one or more syntax errors
- }
-
-If you iterate over a set of files, you can pass the filename to the
-``tokenize()`` method to get the filename in the exception message::
-
- foreach ($files as $file) {
- try {
- $twig->parse($twig->tokenize(new \Twig\Source($template, $file->getFilename(), $file)));
-
- // the $template is valid
- } catch (\Twig\Error\SyntaxError $e) {
- // $template contains one or more syntax errors
- }
- }
-
-.. versionadded:: 1.27
-
- ``\Twig\Source`` was introduced in version 1.27, pass the source and the
- identifier directly on previous versions.
-
-.. note::
-
- This method won't catch any sandbox policy violations because the policy
- is enforced during template rendering (as Twig needs the context for some
- checks like allowed methods on objects).
-
-Refreshing modified Templates when OPcache or APC is enabled
-------------------------------------------------------------
-
-When using OPcache with ``opcache.validate_timestamps`` set to ``0`` or APC
-with ``apc.stat`` set to ``0`` and Twig cache enabled, clearing the template
-cache won't update the cache.
-
-To get around this, force Twig to invalidate the bytecode cache::
-
- $twig = new \Twig\Environment($loader, [
- 'cache' => new \Twig\Cache\FilesystemCache('/some/cache/path', \Twig\Cache\FilesystemCache::FORCE_BYTECODE_INVALIDATION),
- // ...
- ]);
-
-.. note::
-
- Before Twig 1.22, you should extend ``\Twig\Environment`` instead::
-
- class OpCacheAwareTwigEnvironment extends \Twig\Environment
- {
- protected function writeCacheFile($file, $content)
- {
- parent::writeCacheFile($file, $content);
-
- // Compile cached file into bytecode cache
- if (function_exists('opcache_invalidate') && filter_var(ini_get('opcache.enable'), FILTER_VALIDATE_BOOLEAN)) {
- opcache_invalidate($file, true);
- } elseif (function_exists('apc_compile_file')) {
- apc_compile_file($file);
- }
- }
- }
-
-Reusing a stateful Node Visitor
--------------------------------
-
-When attaching a visitor to a ``\Twig\Environment`` instance, Twig uses it to
-visit *all* templates it compiles. If you need to keep some state information
-around, you probably want to reset it when visiting a new template.
-
-This can be achieved with the following code::
-
- protected $someTemplateState = [];
-
- public function enterNode(Twig_NodeInterface $node, \Twig\Environment $env)
- {
- if ($node instanceof \Twig\Node\ModuleNode) {
- // reset the state as we are entering a new template
- $this->someTemplateState = [];
- }
-
- // ...
-
- return $node;
- }
-
-Using a Database to store Templates
------------------------------------
-
-If you are developing a CMS, templates are usually stored in a database. This
-recipe gives you a simple PDO template loader you can use as a starting point
-for your own.
-
-First, let's create a temporary in-memory SQLite3 database to work with::
-
- $dbh = new PDO('sqlite::memory:');
- $dbh->exec('CREATE TABLE templates (name STRING, source STRING, last_modified INTEGER)');
- $base = '{% block content %}{% endblock %}';
- $index = '
- {% extends "base.twig" %}
- {% block content %}Hello {{ name }}{% endblock %}
- ';
- $now = time();
- $dbh->prepare('INSERT INTO templates (name, source, last_modified) VALUES (?, ?, ?)')->execute(['base.twig', $base, $now]);
- $dbh->prepare('INSERT INTO templates (name, source, last_modified) VALUES (?, ?, ?)')->execute(['index.twig', $index, $now]);
-
-We have created a simple ``templates`` table that hosts two templates:
-``base.twig`` and ``index.twig``.
-
-Now, let's define a loader able to use this database::
-
- class DatabaseTwigLoader implements \Twig\Loader\LoaderInterface, \Twig\Loader\ExistsLoaderInterface, \Twig\Loader\SourceContextLoaderInterface
- {
- protected $dbh;
-
- public function __construct(PDO $dbh)
- {
- $this->dbh = $dbh;
- }
-
- public function getSource($name)
- {
- if (false === $source = $this->getValue('source', $name)) {
- throw new \Twig\Error\LoaderError(sprintf('Template "%s" does not exist.', $name));
- }
-
- return $source;
- }
-
- // \Twig\Loader\SourceContextLoaderInterface as of Twig 1.27
- public function getSourceContext($name)
- {
- if (false === $source = $this->getValue('source', $name)) {
- throw new \Twig\Error\LoaderError(sprintf('Template "%s" does not exist.', $name));
- }
-
- return new \Twig\Source($source, $name);
- }
-
- // \Twig\Loader\ExistsLoaderInterface as of Twig 1.11
- public function exists($name)
- {
- return $name === $this->getValue('name', $name);
- }
-
- public function getCacheKey($name)
- {
- return $name;
- }
-
- public function isFresh($name, $time)
- {
- if (false === $lastModified = $this->getValue('last_modified', $name)) {
- return false;
- }
-
- return $lastModified <= $time;
- }
-
- protected function getValue($column, $name)
- {
- $sth = $this->dbh->prepare('SELECT '.$column.' FROM templates WHERE name = :name');
- $sth->execute([':name' => (string) $name]);
-
- return $sth->fetchColumn();
- }
- }
-
-Finally, here is an example on how you can use it::
-
- $loader = new DatabaseTwigLoader($dbh);
- $twig = new \Twig\Environment($loader);
-
- echo $twig->render('index.twig', ['name' => 'Fabien']);
-
-Using different Template Sources
---------------------------------
-
-This recipe is the continuation of the previous one. Even if you store the
-contributed templates in a database, you might want to keep the original/base
-templates on the filesystem. When templates can be loaded from different
-sources, you need to use the ``\Twig\Loader\ChainLoader`` loader.
-
-As you can see in the previous recipe, we reference the template in the exact
-same way as we would have done it with a regular filesystem loader. This is
-the key to be able to mix and match templates coming from the database, the
-filesystem, or any other loader for that matter: the template name should be a
-logical name, and not the path from the filesystem::
-
- $loader1 = new DatabaseTwigLoader($dbh);
- $loader2 = new \Twig\Loader\ArrayLoader([
- 'base.twig' => '{% block content %}{% endblock %}',
- ]);
- $loader = new \Twig\Loader\ChainLoader([$loader1, $loader2]);
-
- $twig = new \Twig\Environment($loader);
-
- echo $twig->render('index.twig', ['name' => 'Fabien']);
-
-Now that the ``base.twig`` templates is defined in an array loader, you can
-remove it from the database, and everything else will still work as before.
-
-Loading a Template from a String
---------------------------------
-
-From a template, you can load a template stored in a string via the
-``template_from_string`` function (available as of Twig 1.11 via the
-``\Twig\Extension\StringLoaderExtension`` extension):
-
-.. code-block:: twig
-
- {{ include(template_from_string("Hello {{ name }}")) }}
-
-From PHP, it's also possible to load a template stored in a string via
-``\Twig\Environment::createTemplate()`` (available as of Twig 1.18)::
-
- $template = $twig->createTemplate('hello {{ name }}');
- echo $template->render(['name' => 'Fabien']);
-
-.. note::
-
- Never use the ``Twig_Loader_String`` loader, which has severe limitations.
-
-Using Twig and AngularJS in the same Templates
-----------------------------------------------
-
-Mixing different template syntaxes in the same file is not a recommended
-practice as both AngularJS and Twig use the same delimiters in their syntax:
-``{{`` and ``}}``.
-
-Still, if you want to use AngularJS and Twig in the same template, there are
-two ways to make it work depending on the amount of AngularJS you need to
-include in your templates:
-
-* Escaping the AngularJS delimiters by wrapping AngularJS sections with the
- ``{% verbatim %}`` tag or by escaping each delimiter via ``{{ '{{' }}`` and
- ``{{ '}}' }}``;
-
-* Changing the delimiters of one of the template engines (depending on which
- engine you introduced last):
-
- * For AngularJS, change the interpolation tags using the
- ``interpolateProvider`` service, for instance at the module initialization
- time:
-
- .. code-block:: javascript
-
- angular.module('myApp', []).config(function($interpolateProvider) {
- $interpolateProvider.startSymbol('{[').endSymbol(']}');
- });
-
- * For Twig, change the delimiters via the ``tag_variable`` Lexer option::
-
- $env->setLexer(new \Twig\Lexer($env, [
- 'tag_variable' => ['{[', ']}'],
- ]));
-
-.. _callback: https://www.php.net/manual/en/function.is-callable.php
diff --git a/vendor/twig/twig/doc/tags/apply.rst b/vendor/twig/twig/doc/tags/apply.rst
deleted file mode 100644
index 20782ec..0000000
--- a/vendor/twig/twig/doc/tags/apply.rst
+++ /dev/null
@@ -1,24 +0,0 @@
-``apply``
-=========
-
-.. versionadded:: 1.40
-
- The ``apply`` tag was added in Twig 1.40.
-
-The ``apply`` tag allows you to apply Twig filters on a block of template data:
-
-.. code-block:: twig
-
- {% apply upper %}
- This text becomes uppercase
- {% endapply %}
-
-You can also chain filters and pass arguments to them:
-
-.. code-block:: html+twig
-
- {% apply lower|escape('html') %}
- SOME TEXT
- {% endapply %}
-
- {# outputs "<strong>some text</strong>" #}
diff --git a/vendor/twig/twig/doc/tags/autoescape.rst b/vendor/twig/twig/doc/tags/autoescape.rst
deleted file mode 100644
index b2e924d..0000000
--- a/vendor/twig/twig/doc/tags/autoescape.rst
+++ /dev/null
@@ -1,81 +0,0 @@
-``autoescape``
-==============
-
-Whether automatic escaping is enabled or not, you can mark a section of a
-template to be escaped or not by using the ``autoescape`` tag:
-
-.. code-block:: twig
-
- {% autoescape %}
- Everything will be automatically escaped in this block
- using the HTML strategy
- {% endautoescape %}
-
- {% autoescape 'html' %}
- Everything will be automatically escaped in this block
- using the HTML strategy
- {% endautoescape %}
-
- {% autoescape 'js' %}
- Everything will be automatically escaped in this block
- using the js escaping strategy
- {% endautoescape %}
-
- {% autoescape false %}
- Everything will be outputted as is in this block
- {% endautoescape %}
-
-.. note::
-
- Before Twig 1.8, the syntax was different:
-
- .. code-block:: twig
-
- {% autoescape true %}
- Everything will be automatically escaped in this block
- using the HTML strategy
- {% endautoescape %}
-
- {% autoescape false %}
- Everything will be outputted as is in this block
- {% endautoescape %}
-
- {% autoescape true js %}
- Everything will be automatically escaped in this block
- using the js escaping strategy
- {% endautoescape %}
-
-When automatic escaping is enabled everything is escaped by default except for
-values explicitly marked as safe. Those can be marked in the template by using
-the :doc:`raw<../filters/raw>` filter:
-
-.. code-block:: twig
-
- {% autoescape %}
- {{ safe_value|raw }}
- {% endautoescape %}
-
-Functions returning template data (like :doc:`macros` and
-:doc:`parent<../functions/parent>`) always return safe markup.
-
-.. note::
-
- Twig is smart enough to not escape an already escaped value by the
- :doc:`escape<../filters/escape>` filter.
-
-.. note::
-
- Twig does not escape static expressions:
-
- .. code-block:: html+twig
-
- {% set hello = "Hello" %}
- {{ hello }}
- {{ "world" }}
-
- Will be rendered "Hello **world**".
-
-.. note::
-
- The chapter :doc:`Twig for Developers<../api>` gives more information
- about when and how automatic escaping is applied.
diff --git a/vendor/twig/twig/doc/tags/block.rst b/vendor/twig/twig/doc/tags/block.rst
deleted file mode 100644
index 272bc7f..0000000
--- a/vendor/twig/twig/doc/tags/block.rst
+++ /dev/null
@@ -1,12 +0,0 @@
-``block``
-=========
-
-Blocks are used for inheritance and act as placeholders and replacements at
-the same time. They are documented in detail in the documentation for the
-:doc:`extends<../tags/extends>` tag.
-
-Block names must consist of alphanumeric characters, and underscores. The first char can't be a digit and dashes are not permitted.
-
-.. seealso::
-
- :doc:`block<../functions/block>`, :doc:`parent<../functions/parent>`, :doc:`use<../tags/use>`, :doc:`extends<../tags/extends>`
diff --git a/vendor/twig/twig/doc/tags/deprecated.rst b/vendor/twig/twig/doc/tags/deprecated.rst
deleted file mode 100644
index 0d0f82a..0000000
--- a/vendor/twig/twig/doc/tags/deprecated.rst
+++ /dev/null
@@ -1,31 +0,0 @@
-``deprecated``
-==============
-
-.. versionadded:: 1.36
-
- The ``deprecated`` tag was added in Twig 1.36.
-
-Twig generates a deprecation notice (via a call to the ``trigger_error()``
-PHP function) where the ``deprecated`` tag is used in a template:
-
-.. code-block:: twig
-
- {# base.twig #}
- {% deprecated 'The "base.twig" template is deprecated, use "layout.twig" instead.' %}
- {% extends 'layout.twig' %}
-
-Also you can deprecate a block in the following way:
-
-.. code-block:: twig
-
- {% block hey %}
- {% deprecated 'The "hey" block is deprecated, use "greet" instead.' %}
- {{ block('greet') }}
- {% endblock %}
-
- {% block greet %}
- Hey you!
- {% endblock %}
-
-Note that by default, the deprecation notices are silenced and never displayed nor logged.
-See :ref:`deprecation-notices` to learn how to handle them.
diff --git a/vendor/twig/twig/doc/tags/do.rst b/vendor/twig/twig/doc/tags/do.rst
deleted file mode 100644
index af3db64..0000000
--- a/vendor/twig/twig/doc/tags/do.rst
+++ /dev/null
@@ -1,13 +0,0 @@
-``do``
-======
-
-.. versionadded:: 1.5
-
- The ``do`` tag was added in Twig 1.5.
-
-The ``do`` tag works exactly like the regular variable expression (``{{ ...
-}}``) just that it doesn't print anything:
-
-.. code-block:: twig
-
- {% do 1 + 2 %}
diff --git a/vendor/twig/twig/doc/tags/embed.rst b/vendor/twig/twig/doc/tags/embed.rst
deleted file mode 100644
index fe005ac..0000000
--- a/vendor/twig/twig/doc/tags/embed.rst
+++ /dev/null
@@ -1,181 +0,0 @@
-``embed``
-=========
-
-.. versionadded:: 1.8
-
- The ``embed`` tag was added in Twig 1.8.
-
-The ``embed`` tag combines the behavior of :doc:`include` and
-:doc:`extends`.
-It allows you to include another template's contents, just like ``include``
-does. But it also allows you to override any block defined inside the
-included template, like when extending a template.
-
-Think of an embedded template as a "micro layout skeleton".
-
-.. code-block:: twig
-
- {% embed "teasers_skeleton.twig" %}
- {# These blocks are defined in "teasers_skeleton.twig" #}
- {# and we override them right here: #}
- {% block left_teaser %}
- Some content for the left teaser box
- {% endblock %}
- {% block right_teaser %}
- Some content for the right teaser box
- {% endblock %}
- {% endembed %}
-
-The ``embed`` tag takes the idea of template inheritance to the level of
-content fragments. While template inheritance allows for "document skeletons",
-which are filled with life by child templates, the ``embed`` tag allows you to
-create "skeletons" for smaller units of content and re-use and fill them
-anywhere you like.
-
-Since the use case may not be obvious, let's look at a simplified example.
-Imagine a base template shared by multiple HTML pages, defining a single block
-named "content":
-
-.. code-block:: text
-
- ┌─── page layout ─────────────────────┐
- │ │
- │ ┌── block "content" ──┐ │
- │ │ │ │
- │ │ │ │
- │ │ (child template to │ │
- │ │ put content here) │ │
- │ │ │ │
- │ │ │ │
- │ └─────────────────────┘ │
- │ │
- └─────────────────────────────────────┘
-
-Some pages ("foo" and "bar") share the same content structure -
-two vertically stacked boxes:
-
-.. code-block:: text
-
- ┌─── page layout ─────────────────────┐
- │ │
- │ ┌── block "content" ──┐ │
- │ │ ┌─ block "top" ───┐ │ │
- │ │ │ │ │ │
- │ │ └─────────────────┘ │ │
- │ │ ┌─ block "bottom" ┐ │ │
- │ │ │ │ │ │
- │ │ └─────────────────┘ │ │
- │ └─────────────────────┘ │
- │ │
- └─────────────────────────────────────┘
-
-While other pages ("boom" and "baz") share a different content structure -
-two boxes side by side:
-
-.. code-block:: text
-
- ┌─── page layout ─────────────────────┐
- │ │
- │ ┌── block "content" ──┐ │
- │ │ │ │
- │ │ ┌ block ┐ ┌ block ┐ │ │
- │ │ │"left" │ │"right"│ │ │
- │ │ │ │ │ │ │ │
- │ │ │ │ │ │ │ │
- │ │ └───────┘ └───────┘ │ │
- │ └─────────────────────┘ │
- │ │
- └─────────────────────────────────────┘
-
-Without the ``embed`` tag, you have two ways to design your templates:
-
-* Create two "intermediate" base templates that extend the master layout
- template: one with vertically stacked boxes to be used by the "foo" and
- "bar" pages and another one with side-by-side boxes for the "boom" and
- "baz" pages.
-
-* Embed the markup for the top/bottom and left/right boxes into each page
- template directly.
-
-These two solutions do not scale well because they each have a major drawback:
-
-* The first solution may indeed work for this simplified example. But imagine
- we add a sidebar, which may again contain different, recurring structures
- of content. Now we would need to create intermediate base templates for
- all occurring combinations of content structure and sidebar structure...
- and so on.
-
-* The second solution involves duplication of common code with all its negative
- consequences: any change involves finding and editing all affected copies
- of the structure, correctness has to be verified for each copy, copies may
- go out of sync by careless modifications etc.
-
-In such a situation, the ``embed`` tag comes in handy. The common layout
-code can live in a single base template, and the two different content structures,
-let's call them "micro layouts" go into separate templates which are embedded
-as necessary:
-
-Page template ``foo.twig``:
-
-.. code-block:: twig
-
- {% extends "layout_skeleton.twig" %}
-
- {% block content %}
- {% embed "vertical_boxes_skeleton.twig" %}
- {% block top %}
- Some content for the top box
- {% endblock %}
-
- {% block bottom %}
- Some content for the bottom box
- {% endblock %}
- {% endembed %}
- {% endblock %}
-
-And here is the code for ``vertical_boxes_skeleton.twig``:
-
-.. code-block:: html+twig
-
-
- {% block top %}
- Top box default content
- {% endblock %}
-
-
-The goal of the ``vertical_boxes_skeleton.twig`` template being to factor
-out the HTML markup for the boxes.
-
-The ``embed`` tag takes the exact same arguments as the ``include`` tag:
-
-.. code-block:: twig
-
- {% embed "base" with {'foo': 'bar'} %}
- ...
- {% endembed %}
-
- {% embed "base" with {'foo': 'bar'} only %}
- ...
- {% endembed %}
-
- {% embed "base" ignore missing %}
- ...
- {% endembed %}
-
-.. warning::
-
- As embedded templates do not have "names", auto-escaping strategies based
- on the template name won't work as expected if you change the context (for
- instance, if you embed a CSS/JavaScript template into an HTML one). In that
- case, explicitly set the default auto-escaping strategy with the
- ``autoescape`` tag.
-
-.. seealso::
-
- :doc:`include<../tags/include>`
diff --git a/vendor/twig/twig/doc/tags/extends.rst b/vendor/twig/twig/doc/tags/extends.rst
deleted file mode 100644
index 461782a..0000000
--- a/vendor/twig/twig/doc/tags/extends.rst
+++ /dev/null
@@ -1,271 +0,0 @@
-``extends``
-===========
-
-The ``extends`` tag can be used to extend a template from another one.
-
-.. note::
-
- Like PHP, Twig does not support multiple inheritance. So you can only have
- one extends tag called per rendering. However, Twig supports horizontal
- :doc:`reuse