Practical Work 04 - Jinja2
Jinja2 is a modern and designer-friendly templating language for Python, modelled after Django’s templates.
Comments
It is important to understand that the Jinja processor parses the source prior to the Markdown processor.
Jinja comments made with {# ... #}
will therefore be removed before the
Markdown parsing, and so whether these comments are in normal text or in a
block of code.
If you need to insert {#
in the text or in the code, you must protect
it between {% raw %}
and {% endraw %}
.
Another method is to write {{ "{#" }}
.
Here is an example with some bash code :
The table length if obtained by ${#table[@]}
.
The string length of the element i
is ${#table[i]}
.
if test ${#foo} -ge 5; then
echo "ok"
fi
The table length if obtained by `:::bash ${{ "{#" }}table[@]}`.
{% raw %}
The string length of the element `i` is `:::bash ${#table[i]}`.
``` bash
if test ${#foo} -ge 5; then
echo "ok"
fi
```
{% endraw %}
Meta variables
Meta variables can be defined at the very top of a document in a YAML header,
delimited by ---
lines.
For instance in this page, the beginning is
---
food: pizza
fruits :
- apples
- pears
- cherries
---
It defines the variable food
as a string and the variable fruits
as a list;
they are stored in the dict {{ page.meta }}
:
Il like eating a {{ page.meta.food }}.
The fruits are: {% for f in fruits %} {{ f }}{% endfor %}.
Il like eating a pizza.
The fruits are: apples pears cherries.
Global variables
The scope of a meta variable is limited to its document.
To define a variable that is visible in all documents, you can set it in a separate file and import it:
In includes/mydefs.html
:
{% set short_url %}http://j.mp/mkdocs-et{% endset %}
In this document:
{% import "includes/mydefs.html" as my %}
The short link to this site is <{{ my.short_url }}>.
The short link to this site is http://j.mp/mkdocs-et.
Global table of content
The markdown tag [TOC]
output the page TOC:
A global TOC can be obtained using Jinja:
{% for page in navigation.pages %}
- [{{ page.title }}](../{{ page.url }}){% endfor %}
will render as
- Main page
- Configuration
- Creating a new site
- L 01 - Markdown syntax
- L 02 - More Markdown
- L 03 - Extended Markdown
- L 04 - Other extensions
- PW 01 - Maths
- PW 02 - Diagrams
- PW 03 - Php form
- PW 04 - Jinja2
- Todo
- About
Macro informations
Here is the output of {{ macros_info() }}
:
Macros Plugin Environment
General List
All available variables and filters within the macros plugin:
Variable | Type | Content |
---|---|---|
extra | dict | social = [{'icon': 'fontawesome/solid/house', 'link': 'https://pageperso.lis-lab.fr/~edouard.thiel/index.html'}] |
config | MkDocsConfig | {'config_file_path': '/home/thiel/.cache/tmp-mkdocs-et-323820/mkdocs.yml', 'site_name': 'Mkdocs-et', 'nav': [{'Main page': 'index.md'}, {'Configuration': 'config.md'}, {'Creating a new site': 'new-site.md'}, {'L 01 - Markdown syntax': 'lec-01-basic.md'}, {'L 02 - More Markdown': 'lec-02-more.md'}, {'L 03 - Extended Markdown': 'lec-03-extend.md'}, {'L 04 - Other extensions': 'lec-04-other.md'}, {'PW 01 - Maths': 'prw-01-maths.md'}, {'PW 02 - Diagrams': 'prw-02-diag.md'}, {'PW 03 - Php form': 'prw-03-php.md'}, {'PW 04 - Jinja2': 'prw-04-jinja.md'}, {'Todo': 'todo.md'}, {'About': 'about.md'}, {'Back': 'https://pageperso.lis-lab.fr/~edouard.thiel/logiciels.html'}], 'pages': None, 'exclude_docs': None, 'not_in_nav': None, 'site_url': 'https://pageperso.lis-lab.fr/~edouard.thiel/mkdocs-et/', 'site_description': 'a bash script to extend Mkdocs', 'site_author': 'Edouard Thiel', 'theme': Theme(name='material', dirs=['/home/thiel/.cache/tmp-mkdocs-et-323820/overrides', '/home/thiel/.local/share/venv-mkdocs-et/lib/python3.8/site-packages/material/templates', '/home/thiel/.local/share/venv-mkdocs-et/lib/python3.8/site-packages/mkdocs/templates'], static_templates={'404.html', 'sitemap.xml'}, name='material', locale=Locale('en'), language='en', direction=None, features=['navigation.top', 'navigation.footer'], font=False, icon={'logo': 'fontawesome/solid/graduation-cap'}, favicon='https://pageperso.lis-lab.fr/~edouard.thiel/favicon.ico', palette={'primary': 'brown', 'accent': 'deep orange'}), 'docs_dir': '/home/thiel/.cache/tmp-mkdocs-et-323820/docs', 'site_dir': '/home/thiel/.cache/tmp-mkdocs-et-323820/site', 'copyright': 'CC BY-SA - Edouard.Thiel@univ-amu.fr', 'google_analytics': None, 'dev_addr': _IpAddressValue(host='127.0.0.1', port=8000), 'use_directory_urls': True, 'repo_url': None, 'repo_name': None, 'edit_uri_template': None, 'edit_uri': None, 'extra_css': ['stylesheets/extra.css'], 'extra_javascript': ['javascripts/config.js', 'https://polyfill.io/v3/polyfill.min.js?features=es6', 'https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js', 'https://cdnjs.cloudflare.com/ajax/libs/tablesort/5.2.1/tablesort.min.js'], 'extra_templates': [], 'markdown_extensions': ['toc', 'tables', 'fenced_code', 'admonition', 'attr_list', 'def_list', 'footnotes', 'md_in_html', 'meta', 'pymdownx.arithmatex', 'pymdownx.details', 'pymdownx.emoji', 'pymdownx.escapeall', 'pymdownx.highlight', 'pymdownx.inlinehilite', 'pymdownx.keys', 'pymdownx.smartsymbols', 'pymdownx.snippets', 'pymdownx.superfences', 'pymdownx.tabbed', 'pymdownx.tasklist', 'pymdownx.tilde'], 'mdx_configs': {'pymdownx.arithmatex': {'generic': True}, 'pymdownx.emoji': {'emoji_index': |
environment | dict | system = 'Linux', system_version = '5.15.0-101-generic', python_version = '3.8.10', mkdocs_version = '1.5.3', macros_plugin_version = '1.0.5', jinja2_version = '3.1.3' |
plugin | LegacyConfig | {'module_name': 'main', 'modules': [], 'render_by_default': True, 'include_dir': 'docs', 'include_yaml': [], 'j2_block_start_string': '', 'j2_block_end_string': '', 'j2_variable_start_string': '', 'j2_variable_end_string': '', 'on_undefined': 'keep', 'on_error_fail': False, 'verbose': False} |
git | dict | status = False, date [NoneType], short_commit = '', commit = '', tag = '', short_tag = '', author = '', author_email = '', committer = '', committer_email = '', date_ISO = '', message = '', raw = '', root_dir = '' |
social | list | [{'icon': 'fontawesome/solid/house', 'link': 'https://pageperso.lis-lab.fr/~edouard.thiel/index.html'}] |
macros | SuperDict | context [function], macros_info [function], now [function], fix_url [function] |
filters | dict | pretty [function] |
filters_builtin | dict | abs [builtin_function_or_method], attr [function], batch [function], capitalize [function], center [function], count [builtin_function_or_method], d [function], default [function], dictsort [function], e [builtin_function_or_method], escape [builtin_function_or_method], filesizeformat [function], first [function], float [function], forceescape [function], format [function], groupby [function], indent [function], int [function], join [function], last [function], length [builtin_function_or_method], list [function], lower [function], items [function], map [function], min [function], max [function], pprint [function], random [function], reject [function], rejectattr [function], replace [function], reverse [function], round [function], safe [function], select [function], selectattr [function], slice [function], sort [function], string [builtin_function_or_method], striptags [function], sum [function], title [function], trim [function], truncate [function], unique [function], upper [function], urlencode [function], urlize [function], wordcount [function], wordwrap [function], xmlattr [function], tojson [function] |
navigation | Navigation | |
files | Files | |
page | Page | Page(title='PW 04 - Jinja2', url='/~edouard.thiel/mkdocs-et/prw-04-jinja/') |
Config Information
Standard MkDocs configuration information. Do not try to modify.
e.g. {{ config.docs_dir }}
See also the MkDocs documentation on the config object.
Variable | Type | Content |
---|---|---|
config_file_path | str | '/home/thiel/.cache/tmp-mkdocs-et-323820/mkdocs.yml' |
site_name | str | 'Mkdocs-et' |
nav | list | [{'Main page': 'index.md'}, {'Configuration': 'config.md'}, {'Creating a new site': 'new-site.md'}, {'L 01 - Markdown syntax': 'lec-01-basic.md'}, {'L 02 - More Markdown': 'lec-02-more.md'}, {'L 03 - Extended Markdown': 'lec-03-extend.md'}, {'L 04 - Other extensions': 'lec-04-other.md'}, {'PW 01 - Maths': 'prw-01-maths.md'}, {'PW 02 - Diagrams': 'prw-02-diag.md'}, {'PW 03 - Php form': 'prw-03-php.md'}, {'PW 04 - Jinja2': 'prw-04-jinja.md'}, {'Todo': 'todo.md'}, {'About': 'about.md'}, {'Back': 'https://pageperso.lis-lab.fr/~edouard.thiel/logiciels.html'}] |
pages | NoneType | None |
exclude_docs | NoneType | None |
not_in_nav | NoneType | None |
site_url | str | 'https://pageperso.lis-lab.fr/~edouard.thiel/mkdocs-et/' |
site_description | str | 'a bash script to extend Mkdocs' |
site_author | str | 'Edouard Thiel' |
theme | Theme | Theme(name='material', dirs=['/home/thiel/.cache/tmp-mkdocs-et-323820/overrides', '/home/thiel/.local/share/venv-mkdocs-et/lib/python3.8/site-packages/material/templates', '/home/thiel/.local/share/venv-mkdocs-et/lib/python3.8/site-packages/mkdocs/templates'], static_templates={'404.html', 'sitemap.xml'}, name='material', locale=Locale('en'), language='en', direction=None, features=['navigation.top', 'navigation.footer'], font=False, icon={'logo': 'fontawesome/solid/graduation-cap'}, favicon='https://pageperso.lis-lab.fr/~edouard.thiel/favicon.ico', palette={'primary': 'brown', 'accent': 'deep orange'}) |
docs_dir | str | '/home/thiel/.cache/tmp-mkdocs-et-323820/docs' |
site_dir | str | '/home/thiel/.cache/tmp-mkdocs-et-323820/site' |
copyright | str | 'CC BY-SA - Edouard.Thiel@univ-amu.fr' |
google_analytics | NoneType | None |
dev_addr | _IpAddressValue | _IpAddressValue(host='127.0.0.1', port=8000) |
use_directory_urls | bool | True |
repo_url | NoneType | None |
repo_name | NoneType | None |
edit_uri_template | NoneType | None |
edit_uri | NoneType | None |
extra_css | list | ['stylesheets/extra.css'] |
extra_javascript | list | ['javascripts/config.js', 'https://polyfill.io/v3/polyfill.min.js?features=es6', 'https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js', 'https://cdnjs.cloudflare.com/ajax/libs/tablesort/5.2.1/tablesort.min.js'] |
extra_templates | list | [] |
markdown_extensions | list | ['toc', 'tables', 'fenced_code', 'admonition', 'attr_list', 'def_list', 'footnotes', 'md_in_html', 'meta', 'pymdownx.arithmatex', 'pymdownx.details', 'pymdownx.emoji', 'pymdownx.escapeall', 'pymdownx.highlight', 'pymdownx.inlinehilite', 'pymdownx.keys', 'pymdownx.smartsymbols', 'pymdownx.snippets', 'pymdownx.superfences', 'pymdownx.tabbed', 'pymdownx.tasklist', 'pymdownx.tilde'] |
mdx_configs | dict | pymdownx.arithmatex [dict], pymdownx.emoji [dict], pymdownx.highlight [dict], pymdownx.snippets [dict], pymdownx.superfences [dict], pymdownx.tabbed [dict], pymdownx.tasklist [dict], pymdownx.tilde [dict] |
strict | bool | False |
remote_branch | str | 'gh-pages' |
remote_name | str | 'origin' |
extra | LegacyConfig | {'social': [{'icon': 'fontawesome/solid/house', 'link': 'https://pageperso.lis-lab.fr/~edouard.thiel/index.html'}]} |
plugins | PluginCollection | material/search [SearchPlugin], mermaid2 [MarkdownMermaidPlugin], macros [MacrosPlugin], glightbox [LightboxPlugin] |
hooks | dict | |
watch | list | [] |
validation | Validation | {'nav': {'omitted_files': 20, 'not_found': 30, 'absolute_links': 20}, 'links': {'not_found': 10, 'absolute_links': 20, 'unrecognized_links': 10}} |
Macros
These macros have been defined programmatically for this environment (module or pluglets).
Variable | Type | Content |
---|---|---|
context | function | (obj, e) Default mkdocs_macro List the defined variables |
macros_info | function | () Test/debug function: list useful documentation on the mkdocs_macro environment. |
now | function | () Get the current time (returns a datetime object). Used alone, it provides a timestamp. To get the year use |
fix_url | function | (url, r) If url is relative, fix it so that it points to the docs diretory. This is necessary because relative links in markdown must be adapted in html ('img/foo.png' => '../img/img.png'). |
Git Information
Information available on the last commit and the git repository containing the documentation project:
e.g. {{ git.message }}
Variable | Type | Content |
---|---|---|
status | bool | False |
date | NoneType | None |
short_commit | str | '' |
commit | str | '' |
tag | str | '' |
short_tag | str | '' |
author | str | '' |
author_email | str | '' |
committer | str | '' |
committer_email | str | '' |
date_ISO | str | '' |
message | str | '' |
raw | str | '' |
root_dir | str | '' |
Page Attributes
Provided by MkDocs. These attributes change for every page (the attributes shown are for this page).
e.g. {{ page.title }}
See also the MkDocs documentation on the page object.
Variable | Type | Content |
---|---|---|
file | File | page [Page], src_uri = 'prw-04-jinja.md', name = 'prw-04-jinja', dest_uri = 'prw-04-jinja/index.html', url = 'prw-04-jinja/', abs_src_path = '/home/thiel/.cache/tmp-mkdocs-et-323820/docs/prw-04-jinja.md', abs_dest_path = '/home/thiel/.cache/tmp-mkdocs-et-323820/site/prw-04-jinja/index.html', inclusion [InclusionLevel] |
title | str | 'PW 04 - Jinja2' |
children | NoneType | None |
previous_page | Page | Page(title='PW 03 - Php form', url='/~edouard.thiel/mkdocs-et/prw-03-php/') |
next_page | Page | Page(title='Todo', url='/~edouard.thiel/mkdocs-et/todo/') |
_Page__active | bool | False |
update_date | str | '2024-04-25' |
canonical_url | str | 'https://pageperso.lis-lab.fr/~edouard.thiel/mkdocs-et/prw-04-jinja/' |
abs_url | str | '/~edouard.thiel/mkdocs-et/prw-04-jinja/' |
edit_url | NoneType | None |
markdown | str | '# Practical Work 04 - Jinja2\n\n[Jinja2][1] is a modern and designer-friendly templating language for Python, \nmodelled after Django’s templates.\n\n[1]: https://jinja.palletsprojects.com/en/2.11.x/templates/\n\n\n## Comments\n\nIt is important to understand that the Jinja processor parses the source prior\nto the Markdown processor.\n\n{% raw %}\nJinja comments made with `{# ... #}` will therefore be removed *before* the \nMarkdown parsing, and so whether these comments are in normal text or in a \nblock of code.\n{% endraw %}\n\nIf you need to insert `{{ "{#" }}` in the text or in the code, you must protect\nit between `:::jinja {{ "{% raw %}" }}` and `:::jinja {{ "{% endraw %}" }}`. \nAnother method is to write {% raw %}`:::jinja {{ "{#" }}`{% endraw %}.\n\nHere is an example with some bash code :\n\n=== "Rendered Output"\n\n The table length if obtained by `:::bash ${{ "{#" }}table[@]}`.\n\n {% raw %}\n The string length of the element `i` is `:::bash ${#table[i]}`.\n\n ``` bash\n if test ${#foo} -ge 5; then\n echo "ok"\n fi\n ```\n {% endraw %}\n\n=== "Markdown"\n {% raw %}\n The table length if obtained by `:::bash ${{ "{#" }}table[@]}`.\n {% endraw %}\n {{ "{% raw %}" }}{% raw %}\n The string length of the element `i` is `:::bash ${#table[i]}`.\n\n ``` bash\n if test ${#foo} -ge 5; then\n echo "ok"\n fi\n ```\n {% endraw %}{{ "{% endraw %}" }}\n\n\n## Meta variables\n\nMeta variables can be defined at the very top of a document in a YAML header,\ndelimited by `---` lines.\n\nFor instance in this page, the beginning is\n\n``` yaml\n---\nfood: pizza\nfruits :\n - apples\n - pears\n - cherries\n---\n```\n\nIt defines the variable `food` as a string and the variable `fruits` as a list;\nthey are stored in the dict `{% raw %}{{ page.meta }}{% endraw %}`:\n\n=== "Markdown"\n {% raw %}\n ``` jinja\n Il like eating a {{ page.meta.food }}.\n\n The fruits are: {% for f in fruits %} {{ f }}{% endfor %}.\n ```\n {% endraw %}\n\n=== "Rendered Output"\n\n Il like eating a {{ page.meta.food }}.\n\n The fruits are: {% for f in fruits %} {{ f }}{% endfor %}.\n\n\n## Global variables\n\nThe scope of a meta variable is limited to its document.\n\nTo define a variable that is visible in all documents, you can set it in a\nseparate file and import it:\n\n=== "Markdown"\n {% raw %}\n In `includes/mydefs.html`:\n\n ``` jinja\n {% set short_url %}http://j.mp/mkdocs-et{% endset %}\n ```\n\n In this document:\n\n ``` jinja\n {% import "includes/mydefs.html" as my %}\n\n The short link to this site is <{{ my.short_url }}>.\n ```\n {% endraw %}\n\n=== "Rendered Output"\n\n {% import "includes/mydefs.html" as my %}\n\n The short link to this site is <{{ my.short_url }}>.\n\n\n## Global table of content\n\nThe markdown tag `[TOC]` output the page TOC:\n\n[TOC]\n\nA global TOC can be obtained using Jinja:\n\n{% raw %}\n``` jinja\n{% for page in navigation.pages %}\n- [{{ page.title }}](../{{ page.url }}){% endfor %}\n```\n{% endraw %}\n\nwill render as\n\n{% for page in navigation.pages %}\n- [{{ page.title }}](../{{ page.url }}){% endfor %}\n\n\n## Macro informations\n\nHere is the output of ```:::jinja {% raw %}{{ macros_info() }}{% endraw %}```:\n\n---\n\n{{ macros_info() }}\n\n\n' |
_title_from_render | NoneType | None |
content | NoneType | None |
toc | list | [] |
meta | dict | food = 'pizza', fruits = ['apples', 'pears', 'cherries'] |
To have all titles of all pages, use:
{% for page in navigation.pages %}
- {{ page.title }}
{% endfor %}
Plugin Filters
These filters are provided as a standard by the macros plugin.
Variable | Type | Content |
---|---|---|
pretty | function | (var_list, rows, header, e) Default mkdocs_macro Prettify a dictionary or object (used for environment documentation, or debugging). |
Builtin Jinja2 Filters
These filters are provided by Jinja2 as a standard.
See also the Jinja2 documentation on builtin filters).
Variable | Type | Content |
---|---|---|
abs | builtin_function_or_method | Return the absolute value of the argument. |
attr | function | (environment, obj, name, value) Get an attribute of an object. |
batch | function | (value, linecount, fill_with, tmp, item) A filter that batches items. It works pretty much like |
capitalize | function | (s) Capitalize a value. The first character will be uppercase, all others lowercase. |
center | function | (value, width) Centers the value in a field of a given width. |
count | builtin_function_or_method | Return the number of items in a container. |
d | function | (value, default_value, boolean) If the value is undefined it will return the passed default value, otherwise the value of the variable. |
default | function | (value, default_value, boolean) If the value is undefined it will return the passed default value, otherwise the value of the variable. |
dictsort | function | (value, case_sensitive, by, reverse, sort_func) Sort a dict and yield (key, value) pairs. Python dicts may not be in the order you want to display them in, so sort them first. |
e | builtin_function_or_method | Replace the characters |
escape | builtin_function_or_method | Replace the characters |
filesizeformat | function | (value, binary, bytes, base, prefixes, i, prefix, unit) Format the value like a 'human-readable' file size (i.e. 13 kB, 4.1 MB, 102 Bytes, etc). Per default decimal prefixes are used (Mega, Giga, etc.), if the second parameter is set to |
first | function | (args, kwargs, b) Return the first item of a sequence. |
float | function | (value, default) Convert the value into a floating point number. If the conversion doesn't work it will return |
forceescape | function | (value) Enforce HTML escaping. This will probably double escape variables. |
format | function | (value, args, kwargs) Apply the given values to a |
groupby | function | (args, kwargs, b) Group a sequence of objects by an attribute using Python's :func: |
indent | function | (s, width, first, blank, newline, rv, lines) Return a copy of the string with each line indented by 4 spaces. The first line and blank lines are not indented by default. |
int | function | (value, default, base) Convert the value into an integer. If the conversion doesn't work it will return |
join | function | (args, kwargs, b) Return a string which is the concatenation of the strings in the sequence. The separator between elements is an empty string per default, you can define it with the optional parameter. |
last | function | (environment, seq) Return the last item of a sequence. |
length | builtin_function_or_method | Return the number of items in a container. |
list | function | (args, kwargs, b) Convert the value into a list. If it was a string the returned list will be a list of characters. |
lower | function | (s) Convert a value to lowercase. |
items | function | (value) Return an iterator over the |
map | function | (args, kwargs, b) Applies a filter on a sequence of objects or looks up an attribute. This is useful when dealing with lists of objects but you are really only interested in a certain value of it. |
min | function | (environment, value, case_sensitive, attribute) Return the smallest item from the sequence. |
max | function | (environment, value, case_sensitive, attribute) Return the largest item from the sequence. |
pprint | function | (value) Pretty print a variable. Useful for debugging. |
random | function | (context, seq) Return a random item from the sequence. |
reject | function | (args, kwargs, b) Filters a sequence of objects by applying a test to each object, and rejecting the objects with the test succeeding. |
rejectattr | function | (args, kwargs, b) Filters a sequence of objects by applying a test to the specified attribute of each object, and rejecting the objects with the test succeeding. |
replace | function | (eval_ctx, s, old, new, count) Return a copy of the value with all occurrences of a substring replaced with a new one. The first argument is the substring that should be replaced, the second is the replacement string. If the optional third argument |
reverse | function | (value, rv, e) Reverse the object or return an iterator that iterates over it the other way round. |
round | function | (value, precision, method, func) Round the number to a given precision. The first parameter specifies the precision (default is |
safe | function | (value) Mark the value as safe which means that in an environment with automatic escaping enabled this variable will not be escaped. |
select | function | (args, kwargs, b) Filters a sequence of objects by applying a test to each object, and only selecting the objects with the test succeeding. |
selectattr | function | (args, kwargs, b) Filters a sequence of objects by applying a test to the specified attribute of each object, and only selecting the objects with the test succeeding. |
slice | function | (args, kwargs, b) Slice an iterator and return a list of lists containing those items. Useful if you want to create a div containing three ul tags that represent columns. |
sort | function | (environment, value, reverse, case_sensitive, attribute, key_func) Sort an iterable using Python's :func: |
string | builtin_function_or_method | Convert an object to a string if it isn't already. This preserves a :class: |
striptags | function | (value) Strip SGML/XML tags and replace adjacent whitespace by one space. |
sum | function | (args, kwargs, b) Returns the sum of a sequence of numbers plus the value of parameter 'start' (which defaults to 0). When the sequence is empty it returns start. |
title | function | (s) Return a titlecased version of the value. I.e. words will start with uppercase letters, all remaining characters are lowercase. |
trim | function | (value, chars) Strip leading and trailing characters, by default whitespace. |
truncate | function | (env, s, length, killwords, end, leeway, result) Return a truncated copy of the string. The length is specified with the first parameter which defaults to |
unique | function | (environment, value, case_sensitive, attribute, getter, seen, item, key) Returns a list of unique items from the given iterable. |
upper | function | (s) Convert a value to uppercase. |
urlencode | function | (value, items) Quote data for use in a URL path or query using UTF-8. |
urlize | function | (eval_ctx, value, trim_url_limit, nofollow, target, rel, extra_schemes, policies, rel_parts, scheme, rv) Convert URLs in text into clickable links. |
wordcount | function | (s) Count the words in that string. |
wordwrap | function | (environment, s, width, break_long_words, wrapstring, break_on_hyphens) Wrap a string to the given width. Existing newlines are treated as paragraphs to be wrapped separately. |
xmlattr | function | (eval_ctx, d, autospace, items, key, value, rv) Create an SGML/XML attribute string based on the items in a dict. |
tojson | function | (eval_ctx, value, indent, policies, dumps, kwargs) Serialize an object to a string of JSON, and mark it safe to render in HTML. This filter is only for use in HTML documents. |