Des questions techniques et métaphysiques⚓︎
Versions⚓︎
0.8
- Correctif majeur du système de sauvegarde des travaux élèves évitant le problème de doublons et IDE avec les mauvais énoncés : sur le navigateur, cliquer sur outils de développement puis dans la console javascript, écrivez :
localStorage.clear()
. - Ajout d'un nouveau système de gestion des palettes de couleur et des modes jour/nuit. La palette de couleur utilisé par Pyodide-MkDocs est automatiquement la couleur primaire utilisé par le site sous MkDocs.
Il est possible de spécifier les themes de coloration de l'éditeur ACE via le
mkdocs.yml
comme dans l'exemple ci-dessous :extra: ace_style: # https://ace.c9.io/build/kitchen-sink.html pour avoir plus de themes default: crimson_editor # mode jour slate: tomorrow_night_bright # mode nuit # slate: tomorrow_night_bright|youtube (si votre mode sombre est youtube par exemple)
- Ajout d'un système d'activation/désactivation des tests publics.
- Raccourci clavier pour autocomplétion modifié : Alt+Tab ;
- Correction affichage des tooltip pour les boutons ;
- Correction bug existant avec IDE vide et disparition de ligne.
Todo list⚓︎
QCM intégré à MkDocs
intégration de drawSVG
variable dans le mkdocs.yml pour positionner le fichier REM à l'endroit où on le souhaite
Démarrer le comptage des 5 essais avant révélation du code si les premiers tests sont passés.
La fenêtre d’édition est réservée au code de l’élève. Les premiers tests sont dans une fenêtre collée, juste en dessous, visible mais non éditable. Ils peuvent être masqués/affichés.
Amélioration des performances d'affichage
télécharger tous les codes écrits dans les éditeurs de la page en un seul fichier
Doctests
Rendre la couleur de l'IDE plus robuste aux changements de palette
Adaptable size tooltip
Toggle tests on/off
Colorisation automatique de l'IDE
Bug plusieurs onglets: voir
Autocomplétion du code avec une touche simple (pas de Live autocomplétion -_-)
eval
désactivé en fonction de la présence du mot-clé SANS = 'eval,max'
dans l'appel à IDE(..., SANS = ...)
. Prendre en compte les erreurs du créateur SANS = 'eval, MaX , min'
.
Erreur d'assertions et gestion de crash de code
- Mode verbose pour les tests / mode simple
- Mode infini pour les tentatives
sauvegarde des codes lors d'un rechargement de la page (oui!!!!)
gestion des fichiers d'initialisation (pour les codes longs)
Le code solution apparait dans le code source... A cacher d'une manière ou d'une autre
Mode sombre / Mode clair (réglage indépendant du choix de palette)
Caractères non-ASCII pour nom de fichier et contenu
Fichier de remarque,
<nom_du_truc>_rem.txt
- Solution en page externe pour les fichiers longs (exclue du menu de navigation avec le hack)
- Solution en menu déroulant pour les fichiers courts
Modifications des emoji par des svg classe
Infobulles
Chemins relatifs
Nombre d'essais variés
En développement⚓︎
Inclure des fichiers externes avec macros fonctionnels
Jinja syntax to include an external remark file, including an IDE to give the correction :
{% include 'scripts/demo/demo2_rem.txt' %}
This is the future of the online judge
Can include automatically a correction. Needs lots of refactoring though ⏳⏳⏳.
REPL > IDE
Une reprise complète de la dénomination a été faite. Les REPL s'appellent maintenant (et à raison) IDE Merci Fred Leleu pour le travail supplémentaire 😍 .
Fichiers javascripts
C'est le bazar dans l'appel des fichiers JS. Si quelqu'un peut me mettre de l'ordre dans tout cela, je suis preneur !
J'ai repris l'organisation générale. C'est toujours un peu le bazar mais cela me semble acceptable.
Importation automatique de module
Pyodide propose un module micropip
permettant de charger les modules manquants. Nous pourrions faire des interfaces graphiques à l'aide de cela mais est-ce vraiment utile ?
Evaluateur de code
Avec l'utilisation du code de fjunier, nous pourrions intégrer un juge en ligne ? Utile ou non ?
L'évaluateur de code est fonctionnel et permet de faire des benchmarks complexes.
Le bouton du juge en ligne n'apparaitra que s'il existe un fichier de benchmark test_nom_de_script.py
.
Le corrigé n'apparaitra que si un fichier de corr_nom_de_script.py
est présent.
Il faudra créer un pipe pour générer automatiquement un fichier de benchmark depuis un script de corrigé.
Javascript et IDE
La solution avec le -1 dans main.py
, discutée dans le guide technique du IDE, est vraiment naze. Il faut trouver autre chose.
Je devais vraiment dormir. On peut tout simplement ajouter une ligne dans le template Jinja2 main.html
du custom_dir
de mkdocs. Cela permet de charger le javascript nécessaire au bon fonctionnement des IDE sans s'embêter.
Boutons et IDE
La solution avec le -1 dans main.py
, discutée dans le guide technique du IDE, est vraiment naze. Il faut trouver autre chose.
Ajout de boutons permettant de télécharger les scripts écrits et téléverser les scripts disponibles localement. Evaluateur de code ajouté.
Partis pris⚓︎
Namespace partagé
Je trouve ce mode très pratique car on conserve nos fonctions et variables d'un terminal à l'autre au cours d'une leçon.
Pédagogiquement, c'est plus discutable car certaines variables seront initialisées dans le Terminal 1 et utilisées dans le Terminal 2. Cela cache la notion d'initialisation.
IDE vertical
Est-ce vraiment utile de les conserver ?
Cela ralentit le chargement de la page web et consomme des ressources pour l'auto-redimensionnement de la partie terminal du IDE. Cela est spécialement visible sur mobile (ou ce mode est d'ailleurs inutile).
Quelques modifications ont permis de les conserver sans altérer les performances.
macro Python
Ma solution est un peu sale mais a-t-on vraiment le choix avec l'inclusion de balise HTML ?
J'ai choisi de diviser le problème en sous-fonctions. Cela semble plus lisible à présent avec : lecture de fichier avec def read_ext_file()
et def generate_content()
, une seule macro IDE avec deux modes ('v' et 'h' par défaut).
Palette Ideas
// __md_scope=new URL(".",location) // __md_get=(e,=localStorage,t=__md_scope)=>JSON.parse(.getItem(t.pathname+"."+e)) // console.log('BLAM', __md_scope) // console.log('localStorage', localStorage) // console.log('localStorage 2', __md_scope.pathname+"."+"__palette") // console.log('localStorage 3', localStorage.getItem(__md_scope.pathname+"."+"__palette")) // console.log('localStorage 4', __md_get("__palette").index, __md_get("__palette").color.scheme)
Macros Plugin Environment⚓︎
General List⚓︎
All available variables and filters within the macros plugin:
Variable | Type | Content |
---|---|---|
extra | dict | social = [{'icon': 'fontawesome/solid/paper-plane', 'link': 'mailto:prof-bouillot@protonmail.com', 'name': "Écrire à l'auteur"}], site_url = 'https://bouillotvincent.gitlab.io/pyodide-mkdocs/', ace_style [dict] |
config | MkDocsConfig | {'config_file_path': '/builds/bouillotvincent/pyodide-mkdocs/mkdocs.yml', 'site_name': 'Terminal et IDE dans MkDocs', 'nav': [{'Terminal ▶️ et IDE 🖥 dans MkDocs': 'index.md'}, {'Guide du Terminal ⌨️': 'install_term.md'}, {"Guide de l'IDE 🐍": 'install_ide.md'}, {'Avancé ⭐️': 'advanced.md'}, {'Changelog 🧾': 'CHANGELOG.md'}, {'Bac à sable 🧾': 'sandbox.md'}], 'pages': None, 'site_url': 'https://bouillotvincent.gitlab.io/pyodide-mkdocs/', 'site_description': 'Tutoriel pour un IDE et un Terminal dans MkDocs Material', 'site_author': None, 'theme': Theme(name='material', dirs=['/builds/bouillotvincent/pyodide-mkdocs/my_theme_customizations/', '/usr/local/lib/python3.11/site-packages/material', '/usr/local/lib/python3.11/site-packages/mkdocs/templates'], static_templates=['404.html', 'sitemap.xml'], name='material', locale=Locale(language='en', territory=''), language='fr', direction=None, features=['navigation.instant', 'navigation.tabs', 'navigation.tabs.sticky', 'navigation.sections', 'navigation.tracking', 'navigation.top', 'toc.integrate'], palette=[{'media': '(prefers-color-scheme: light)', 'scheme': 'slate', 'primary': 'blue', 'accent': 'blue', 'toggle': {'icon': 'material/weather-night', 'name': 'Passer au mode jour'}}, {'media': '(prefers-color-scheme: dark)', 'scheme': 'default', 'primary': 'indigo', 'accent': 'indigo', 'toggle': {'icon': 'material/weather-sunny', 'name': 'Passer au mode nuit'}}], font=False, icon=None, favicon='assets/icon-py-mkdocs-color.png', logo='assets/thick-apacheairflow.svg'), 'docs_dir': '/builds/bouillotvincent/pyodide-mkdocs/docs', 'site_dir': '/builds/bouillotvincent/pyodide-mkdocs/public', 'copyright': 'Copyleft 🄯 2021 Vincent BOUILLOT\n', 'google_analytics': None, 'dev_addr': _IpAddressValue(host='127.0.0.1', port=8000), 'use_directory_urls': True, 'repo_url': 'https://gitlab.com/bouillotvincent/pyodide-mkdocs', 'repo_name': 'GitLab', 'edit_uri_template': None, 'edit_uri': 'tree/main/docs/', 'extra_css': ['xtra/stylesheets/ajustements.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'], 'extra_templates': [], 'markdown_extensions': ['toc', 'tables', 'fenced_code', 'meta', 'abbr', 'def_list', 'attr_list', 'footnotes', 'admonition', 'pymdownx.details', 'pymdownx.caret', 'pymdownx.mark', 'pymdownx.tilde', 'pymdownx.highlight', 'pymdownx.inlinehilite', 'pymdownx.snippets', 'pymdownx.tasklist', 'pymdownx.tabbed', 'pymdownx.superfences', 'pymdownx.keys', 'pymdownx.emoji', 'pymdownx.arithmatex'], 'mdx_configs': {'pymdownx.tasklist': {'custom_checkbox': True, 'clickable_checkbox': True}, 'pymdownx.tabbed': {'alternate_style': True}, 'pymdownx.superfences': {'preserve_tabs': True}, 'pymdownx.keys': {'separator': '+'}, 'pymdownx.emoji': {'emoji_index': |
environment | dict | system = 'Linux', system_version = '5.4.109+', python_version = '3.11.2', mkdocs_version = '1.4.2', macros_plugin_version = '0.7.0', jinja2_version = '3.1.2' |
plugin | LegacyConfig | {'module_name': 'main', 'modules': [], 'include_dir': '', '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 = True, date [datetime], short_commit = '56895b7', commit = '56895b782fb302fc865a7245d01459c486b5777e', tag = '', author = 'Vincent Bouillot', author_email = 'vincent.bouillot@rx-solutions.com', committer = 'Vincent Bouillot', committer_email = 'vincent.bouillot@rx-solutions.com', date_ISO = 'Thu Mar 30 20:38:10 2023 +0000', message = '[MINOR] IDE : When creating a function inside a class, it fails.', raw = 'commit 56895b782fb302fc865a7245d01459c486b5777e\nAuthor: Vincent Bouillot |
social | list | [{'icon': 'fontawesome/solid/paper-plane', 'link': 'mailto:prof-bouillot@protonmail.com', 'name': "Écrire à l'auteur"}] |
site_url | str | 'https://bouillotvincent.gitlab.io/pyodide-mkdocs/' |
ace_style | dict | default = 'crimson_editor', slate = 'tomorrow_night_bright' |
compteur_exo | int | 0 |
term_counter | int | 2 |
IDE_counter | int | 4 |
macros | SuperDict | context [function], macros_info [function], now [function], fix_url [function], script [function], py [function], html_fig [function], exercice [function], cours [function], ext [function], tit [function], terminal [function], IDEv [function], create_button [function], insert_remark_file [function], IDE [function], mult_col [function], qcm [function], multi_qcm [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 | Page(title='Terminal ▶️ et IDE 🖥 dans MkDocs', url='/pyodide-mkdocs/') Page(title='Guide du Terminal ⌨️', url='/pyodide-mkdocs/install_term/') Page(title='Guide de l'IDE 🐍', url='/pyodide-mkdocs/install_ide/') Page(title='Avancé ⭐️', url='/pyodide-mkdocs/advanced/') Page(title='Changelog 🧾', url='/pyodide-mkdocs/CHANGELOG/') Page(title='Bac à sable 🧾', url='/pyodide-mkdocs/sandbox/') |
files | Files | |
page | Page | Page(title='Des questions techniques et métaphysiques', url='/pyodide-mkdocs/todo/') |
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 | '/builds/bouillotvincent/pyodide-mkdocs/mkdocs.yml' |
site_name | str | 'Terminal et IDE dans MkDocs' |
nav | list | [{'Terminal ▶️ et IDE 🖥 dans MkDocs': 'index.md'}, {'Guide du Terminal ⌨️': 'install_term.md'}, {"Guide de l'IDE 🐍": 'install_ide.md'}, {'Avancé ⭐️': 'advanced.md'}, {'Changelog 🧾': 'CHANGELOG.md'}, {'Bac à sable 🧾': 'sandbox.md'}] |
pages | NoneType | None |
site_url | str | 'https://bouillotvincent.gitlab.io/pyodide-mkdocs/' |
site_description | str | 'Tutoriel pour un IDE et un Terminal dans MkDocs Material' |
site_author | NoneType | None |
theme | Theme | Theme(name='material', dirs=['/builds/bouillotvincent/pyodide-mkdocs/my_theme_customizations/', '/usr/local/lib/python3.11/site-packages/material', '/usr/local/lib/python3.11/site-packages/mkdocs/templates'], static_templates=['404.html', 'sitemap.xml'], name='material', locale=Locale(language='en', territory=''), language='fr', direction=None, features=['navigation.instant', 'navigation.tabs', 'navigation.tabs.sticky', 'navigation.sections', 'navigation.tracking', 'navigation.top', 'toc.integrate'], palette=[{'media': '(prefers-color-scheme: light)', 'scheme': 'slate', 'primary': 'blue', 'accent': 'blue', 'toggle': {'icon': 'material/weather-night', 'name': 'Passer au mode jour'}}, {'media': '(prefers-color-scheme: dark)', 'scheme': 'default', 'primary': 'indigo', 'accent': 'indigo', 'toggle': {'icon': 'material/weather-sunny', 'name': 'Passer au mode nuit'}}], font=False, icon=None, favicon='assets/icon-py-mkdocs-color.png', logo='assets/thick-apacheairflow.svg') |
docs_dir | str | '/builds/bouillotvincent/pyodide-mkdocs/docs' |
site_dir | str | '/builds/bouillotvincent/pyodide-mkdocs/public' |
copyright | str | 'Copyleft 🄯 2021 Vincent BOUILLOT\n' |
google_analytics | NoneType | None |
dev_addr | _IpAddressValue | _IpAddressValue(host='127.0.0.1', port=8000) |
use_directory_urls | bool | True |
repo_url | str | 'https://gitlab.com/bouillotvincent/pyodide-mkdocs' |
repo_name | str | 'GitLab' |
edit_uri_template | NoneType | None |
edit_uri | str | 'tree/main/docs/' |
extra_css | list | ['xtra/stylesheets/ajustements.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'] |
extra_templates | list | [] |
markdown_extensions | list | ['toc', 'tables', 'fenced_code', 'meta', 'abbr', 'def_list', 'attr_list', 'footnotes', 'admonition', 'pymdownx.details', 'pymdownx.caret', 'pymdownx.mark', 'pymdownx.tilde', 'pymdownx.highlight', 'pymdownx.inlinehilite', 'pymdownx.snippets', 'pymdownx.tasklist', 'pymdownx.tabbed', 'pymdownx.superfences', 'pymdownx.keys', 'pymdownx.emoji', 'pymdownx.arithmatex'] |
mdx_configs | dict | pymdownx.tasklist [dict], pymdownx.tabbed [dict], pymdownx.superfences [dict], pymdownx.keys [dict], pymdownx.emoji [dict], pymdownx.arithmatex [dict], toc [dict] |
strict | bool | False |
remote_branch | str | 'gh-pages' |
remote_name | str | 'origin' |
extra | LegacyConfig | {'social': [{'icon': 'fontawesome/solid/paper-plane', 'link': 'mailto:prof-bouillot@protonmail.com', 'name': "Écrire à l'auteur"}], 'site_url': 'https://bouillotvincent.gitlab.io/pyodide-mkdocs/', 'ace_style': {'default': 'crimson_editor', 'slate': 'tomorrow_night_bright'}} |
plugins | PluginCollection | material/search [SearchPlugin], macros [MacrosPlugin] |
hooks | dict | |
watch | list | [] |
Macros⚓︎
These macros have been defined programmatically for this environment (module or pluglets).
Variable | Type | Content |
---|---|---|
{'context': |
SuperDict | {'context': |
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 | True |
date | datetime | datetime.datetime(2023, 3, 30, 20, 38, 10, tzinfo=tzlocal()) |
short_commit | str | '56895b7' |
commit | str | '56895b782fb302fc865a7245d01459c486b5777e' |
tag | str | '' |
author | str | 'Vincent Bouillot' |
author_email | str | 'vincent.bouillot@rx-solutions.com' |
committer | str | 'Vincent Bouillot' |
committer_email | str | 'vincent.bouillot@rx-solutions.com' |
date_ISO | str | 'Thu Mar 30 20:38:10 2023 +0000' |
message | str | '[MINOR] IDE : When creating a function inside a class, it fails.' |
raw | str | 'commit 56895b782fb302fc865a7245d01459c486b5777e\nAuthor: Vincent Bouillot |
root_dir | str | '/builds/bouillotvincent/pyodide-mkdocs' |
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 = 'todo.md', abs_src_path = '/builds/bouillotvincent/pyodide-mkdocs/docs/todo.md', name = 'todo', dest_uri = 'todo/index.html', abs_dest_path = '/builds/bouillotvincent/pyodide-mkdocs/public/todo/index.html', url = 'todo/' |
title | str | 'Des questions techniques et métaphysiques' |
parent | NoneType | None |
children | NoneType | None |
previous_page | NoneType | None |
next_page | NoneType | None |
_Page__active | bool | False |
update_date | str | '2023-03-30' |
canonical_url | str | 'https://bouillotvincent.gitlab.io/pyodide-mkdocs/todo/' |
abs_url | str | '/pyodide-mkdocs/todo/' |
edit_url | str | 'https://gitlab.com/bouillotvincent/pyodide-mkdocs/tree/main/docs/todo.md' |
markdown | str | '# Des questions techniques et métaphysiques\n\n## Versions\n\n???+ warning "0.8"\n\n === "Ajouts majeurs"\n - Correctif majeur du système de sauvegarde des travaux élèves évitant le problème de doublons et IDE avec les mauvais énoncés : sur le navigateur, cliquer sur outils de développement puis dans la console javascript, écrivez : localStorage.clear() .\n - Ajout d\'un nouveau système de gestion des palettes de couleur et des modes jour/nuit. La palette de couleur utilisé par Pyodide-MkDocs est automatiquement la couleur primaire utilisé par le site sous MkDocs. \n Il est possible de spécifier les themes de coloration de l\'éditeur ACE via le `mkdocs.yml` comme dans l\'exemple ci-dessous :\n ```yml\n extra:\n ace_style: # https://ace.c9.io/build/kitchen-sink.html pour avoir plus de themes\n default: crimson_editor # mode jour\n slate: tomorrow_night_bright # mode nuit\n # slate: tomorrow_night_bright|youtube (si votre mode sombre est youtube par exemple)\n ```\n - Ajout d\'un système d\'activation/désactivation des tests publics. \n\n === "Ajouts mineurs"\n - Raccourci clavier pour autocomplétion modifié : ++alt+tab++ ;\n - Correction affichage des tooltip pour les boutons ;\n - Correction bug existant avec IDE vide et disparition de ligne.\n\n## Todo list\n\n:x: QCM intégré à MkDocs\n\n:x: intégration de drawSVG\n\n:x: variable dans le mkdocs.yml pour positionner le fichier REM à l\'endroit où on le souhaite\n\n:x: Démarrer le comptage des 5 essais avant révélation du code si les premiers tests sont passés.\n\n:x: La fenêtre d’édition est réservée au code de l’élève. Les premiers tests sont dans une fenêtre collée, juste en dessous, visible mais non éditable. Ils peuvent être masqués/affichés.\n\n:x: Amélioration des performances d\'affichage\n\n:x: télécharger tous les codes écrits dans les éditeurs de la page en un seul fichier\n\n:x: Doctests\n\n:white_check_mark: Rendre la couleur de l\'IDE plus robuste aux changements de palette\n\n:white_check_mark: Adaptable size tooltip\n\n:white_check_mark: Toggle tests on/off\n\n:white_check_mark: Colorisation automatique de l\'IDE\n\n:white_check_mark: Bug plusieurs onglets: [voir](https://mooc-forums.inria.fr/moocnsi/t/re-pyodide-mkdocs/5715/4)\n\n:white_check_mark: Autocomplétion du code avec une touche simple (pas de Live autocomplétion -_-)\n\n:white_check_mark: `#!python eval` désactivé en fonction de la présence du mot-clé `#!md SANS = \'eval,max\'` dans l\'appel à `#!md IDE(..., SANS = ...)`. Prendre en compte les erreurs du créateur `#!md SANS = \'eval, MaX , min\'`.\n\n:white_check_mark: Erreur d\'assertions et gestion de crash de code\n\n- [x] Mode verbose pour les tests / mode simple\n- [x] Mode infini pour les tentatives\n\n:white_check_mark: sauvegarde des codes lors d\'un rechargement de la page (oui!!!!)\n\n:white_check_mark: gestion des fichiers d\'initialisation (pour les codes longs)\n\n:white_check_mark: Le code solution apparait dans le code source... A cacher d\'une manière ou d\'une autre\n\n:white_check_mark: Mode sombre / Mode clair (réglage indépendant du choix de palette)\n\n:white_check_mark: Caractères non-ASCII pour nom de fichier et contenu\n\n:white_check_mark: Fichier de remarque, ` |
content | NoneType | None |
toc | list | [] |
meta | dict |
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, rv) Create an SGML/XML attribute string based on the items in a dict. All values that are neither |
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. |