398 lines
8.4 KiB
Plaintext
398 lines
8.4 KiB
Plaintext
{
|
|
"cells": [
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 2,
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"import jinja2"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"# variables"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 5,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"your variable value: 100gle\n",
|
|
"\n",
|
|
"inner set variable value: author\n"
|
|
]
|
|
}
|
|
],
|
|
"source": [
|
|
"tpl = \"\"\"\\\n",
|
|
"your variable value: {{ name }}\n",
|
|
"{% set badge=\"author\" %}\n",
|
|
"inner set variable value: {{ badge }}\n",
|
|
"\"\"\"\n",
|
|
"\n",
|
|
"template = jinja2.Template(tpl)\n",
|
|
"s = template.render(name=\"100gle\")\n",
|
|
"print(s)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"# comment"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 50,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"text/plain": [
|
|
"'Hello, world\\n'"
|
|
]
|
|
},
|
|
"execution_count": 50,
|
|
"metadata": {},
|
|
"output_type": "execute_result"
|
|
}
|
|
],
|
|
"source": [
|
|
"tpl = \"\"\"\\\n",
|
|
"Hello, world\n",
|
|
"{# this line wouldn't be rendered. #}\n",
|
|
"\"\"\"\n",
|
|
"\n",
|
|
"template = jinja2.Template(tpl)\n",
|
|
"template.render()\n"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"# for loop"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 10,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
" * Reading\n",
|
|
" * Home Work\n",
|
|
" * Exercise\n",
|
|
"\n"
|
|
]
|
|
}
|
|
],
|
|
"source": [
|
|
"tpl = \"\"\"\\\n",
|
|
"{# use for-loop in jinja2 #}\n",
|
|
"{% for todo in todolist %}\n",
|
|
" * {{ todo }}\n",
|
|
"{% endfor %}\n",
|
|
"\"\"\"\n",
|
|
"\n",
|
|
"todolist = [\"Reading\", \"Home Work\", \"Exercise\"]\n",
|
|
"template = jinja2.Template(tpl, trim_blocks=True)\n",
|
|
"s = template.render(todolist=todolist)\n",
|
|
"print(s)\n"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 11,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
" name: Reading\n",
|
|
" priority: 2\n",
|
|
" name: Home Work\n",
|
|
" priority: 0\n",
|
|
" name: Exercise\n",
|
|
" priority: 1\n",
|
|
"\n"
|
|
]
|
|
}
|
|
],
|
|
"source": [
|
|
"tpl = \"\"\"\\\n",
|
|
"{# use for-loop in jinja2 #}\n",
|
|
"{% for todo in todolist %}\n",
|
|
" {% for key, value in todo.items() %}\n",
|
|
" {{ key }}: {{ value }}\n",
|
|
" {% endfor %}\n",
|
|
"{% endfor %}\n",
|
|
"\"\"\"\n",
|
|
"\n",
|
|
"todolist = [\n",
|
|
" dict(name=\"Reading\", priority=2),\n",
|
|
" dict(name=\"Home Work\", priority=0),\n",
|
|
" dict(name=\"Exercise\", priority=1),\n",
|
|
"]\n",
|
|
"template = jinja2.Template(tpl, trim_blocks=True, lstrip_blocks=True)\n",
|
|
"s = template.render(todolist=todolist)\n",
|
|
"print(s)\n",
|
|
"\n"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"# if-else"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 52,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
" Reading**\n",
|
|
" Home Work\n",
|
|
" Exercise*\n",
|
|
"\n"
|
|
]
|
|
}
|
|
],
|
|
"source": [
|
|
"tpl = \"\"\"\\\n",
|
|
"{% for todo in todolist %}\n",
|
|
" {% if todo.priority == 2 %}\n",
|
|
" {{ todo.name }}**\n",
|
|
" {% elif todo.priority == 1 %}\n",
|
|
" {{ todo.name }}*\n",
|
|
" {% else %}\n",
|
|
" {{ todo.name }}\n",
|
|
" {% endif %}\n",
|
|
"{% endfor %}\n",
|
|
"\"\"\"\n",
|
|
"\n",
|
|
"todolist = [\n",
|
|
" dict(name=\"Reading\", priority=2),\n",
|
|
" dict(name=\"Home Work\", priority=0),\n",
|
|
" dict(name=\"Exercise\", priority=1),\n",
|
|
"]\n",
|
|
"\n",
|
|
"template = jinja2.Template(tpl, lstrip_blocks=True, trim_blocks=True)\n",
|
|
"s = template.render(todolist=todolist)\n",
|
|
"print(s)\n"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"# macros"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 17,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"\n",
|
|
" Reading**\n",
|
|
" Home Work\n",
|
|
" Exercise*\n",
|
|
"\n"
|
|
]
|
|
}
|
|
],
|
|
"source": [
|
|
"tpl = \"\"\"\\\n",
|
|
"{% macro show_todo(name, priority) -%}\n",
|
|
" {% set marker=\"\" %}\n",
|
|
" {% if priority == 2 %}\n",
|
|
" {% set marker = \"**\" %}\n",
|
|
" {% elif priority == 1 %}\n",
|
|
" {% set marker = \"*\" %}\n",
|
|
" {% endif %}\n",
|
|
" {{ name }}{{ marker }}\n",
|
|
"{%- endmacro %}\n",
|
|
"\n",
|
|
"{% for todo in todolist %}\n",
|
|
" {{ show_todo(todo.name, todo.priority) }}\n",
|
|
"{% endfor %}\n",
|
|
"\"\"\"\n",
|
|
"\n",
|
|
"todolist = [\n",
|
|
" dict(name=\"Reading\", priority=2),\n",
|
|
" dict(name=\"Home Work\", priority=0),\n",
|
|
" dict(name=\"Exercise\", priority=1),\n",
|
|
"]\n",
|
|
"\n",
|
|
"template = jinja2.Template(tpl, trim_blocks=True, lstrip_blocks=True)\n",
|
|
"s = template.render(todolist=todolist)\n",
|
|
"print(s)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"# filter"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 15,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
" - before: $10.99, after: 10.99\n",
|
|
" - before: €0.99, after: 0.99\n",
|
|
" - before: ¥100, after: 100\n",
|
|
"\n"
|
|
]
|
|
}
|
|
],
|
|
"source": [
|
|
"def remove_currerncy(val: str):\n",
|
|
" currencies = set(\"$€¥\")\n",
|
|
" if val[0] in currencies:\n",
|
|
" return val[1:]\n",
|
|
" return val\n",
|
|
"\n",
|
|
"tpl = \"\"\"\\\n",
|
|
"{% for value in money %}\n",
|
|
" - before: {{ value }}, after: {{ value|remove_currency}}\n",
|
|
"{% endfor %}\n",
|
|
"\"\"\"\n",
|
|
"\n",
|
|
"money = [\"$10.99\", \"€0.99\", \"¥100\"]\n",
|
|
"\n",
|
|
"\n",
|
|
"env = jinja2.Environment(trim_blocks=True)\n",
|
|
"env.filters[\"remove_currency\"] = remove_currerncy\n",
|
|
"\n",
|
|
"template = env.from_string(tpl)\n",
|
|
"s = template.render(money=money)\n",
|
|
"print(s)\n"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"# inheritance"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 9,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"# bug: TemplateNotFound error should be fixed.\n",
|
|
"\n",
|
|
"Your environment:\n",
|
|
"\n",
|
|
" - python version: 3.9\n",
|
|
" - jinja2: 3.2.x\n",
|
|
" \n",
|
|
"---\n",
|
|
"\n",
|
|
"Bug detail:\n",
|
|
"\n",
|
|
"More description here:\n",
|
|
"\n",
|
|
" ```python\n",
|
|
" ...\n",
|
|
" ```\n",
|
|
"\n"
|
|
]
|
|
}
|
|
],
|
|
"source": [
|
|
"env = jinja2.Environment(\n",
|
|
" trim_blocks=True,\n",
|
|
" loader=jinja2.FileSystemLoader(\"./templates/inheritance/\"),\n",
|
|
")\n",
|
|
"\n",
|
|
"template = env.get_template(\"bug_report.md\")\n",
|
|
"s = template.render(\n",
|
|
" title=\"bug: TemplateNotFound error should be fixed.\",\n",
|
|
" setup=[\n",
|
|
" dict(name=\"python version\", detail=3.9),\n",
|
|
" dict(name=\"jinja2\", detail=\"3.2.x\"),\n",
|
|
" ],\n",
|
|
" description=\"\"\"\\\n",
|
|
"More description here:\n",
|
|
"\n",
|
|
" ```python\n",
|
|
" ...\n",
|
|
" ```\n",
|
|
" \"\"\".strip()\n",
|
|
")\n",
|
|
"print(s)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": []
|
|
}
|
|
],
|
|
"metadata": {
|
|
"kernelspec": {
|
|
"display_name": "Python 3.9.0 ('pandas-startup')",
|
|
"language": "python",
|
|
"name": "python3"
|
|
},
|
|
"language_info": {
|
|
"codemirror_mode": {
|
|
"name": "ipython",
|
|
"version": 3
|
|
},
|
|
"file_extension": ".py",
|
|
"mimetype": "text/x-python",
|
|
"name": "python",
|
|
"nbconvert_exporter": "python",
|
|
"pygments_lexer": "ipython3",
|
|
"version": "3.9.0"
|
|
},
|
|
"orig_nbformat": 4,
|
|
"vscode": {
|
|
"interpreter": {
|
|
"hash": "13977d4cc82dee5f9d9535ceb495bd0ab12a43c33c664e5f0d53c24cf634b67f"
|
|
}
|
|
}
|
|
},
|
|
"nbformat": 4,
|
|
"nbformat_minor": 2
|
|
}
|