Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/vd2org/j2tools
Tools for jinja2. YamlLoader, plural, t-function and more.
https://github.com/vd2org/j2tools
jinja2 python yaml
Last synced: 4 months ago
JSON representation
Tools for jinja2. YamlLoader, plural, t-function and more.
- Host: GitHub
- URL: https://github.com/vd2org/j2tools
- Owner: vd2org
- License: mit
- Created: 2019-01-11T22:01:50.000Z (about 6 years ago)
- Default Branch: master
- Last Pushed: 2024-02-26T13:10:37.000Z (12 months ago)
- Last Synced: 2024-10-07T22:09:10.148Z (4 months ago)
- Topics: jinja2, python, yaml
- Language: Python
- Homepage:
- Size: 15.6 KB
- Stars: 2
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# DEPRECATED REPOSITORY!
This repository has been deprecated.
New versions can be found here:
- **[YamlLoader for jinja2 template framework](https://github.com/vd2org/jinja2yaml)**
- **[Collection of utils for jinja2](https://github.com/vd2org/jinja2utils)**# j2tools
Useful tools for jinja2## Install
```bash
pip install j2tools
```## Testing
_coming soon_
## YamlLoader
YamlLoader is a template loader for jinja2 template framework.
It loads templates from yaml-files. Useful when you need to
store many small templates in one file.#### Example:
```yaml
# templates.yaml
home:
welcome: |
Welcome, {{username}}!
goodbye: |
Goodbye, {{username}}!
``````python
# main.py
from jinja2 import Environment
from j2tools import YamlLoaderjinja = Environment(loader=YamlLoader('templates.yaml'))
username = 'John Doe'
template1 = jinja.get_template('home/welcome')
rendered1 = template1.render(username=username)
print(rendered1) # Welcome, John Doe!template2 = jinja.get_template('home/goodbye')
rendered2 = template2.render(username=username)
print(rendered2) # Goodbye, John Doe!
```## t_factory
t_facotory is a small tool which helps prefixed templates easily.
See examples below.
#### Example:
```yaml
# templates_en.yaml
home:
welcome: |
Welcome, {{username}}!
goodbye: |
Goodbye, {{username}}!
``````yaml
# templates_ru.yaml
home:
welcome: |
Привет, {{username}}!
goodbye: |
Пока, {{username}}!
``````python
# main.py
from jinja2 import Environment, PrefixLoader
from j2tools import YamlLoader
from j2tools import t_factoryloader = PrefixLoader({
'en': YamlLoader('templates_en.yaml'),
'ru': YamlLoader('templates_ru.yaml'),})
jinja = Environment(loader=loader)
get_t = t_factory(jinja)def print_templates(t, username):
rendered1 = t('home/welcome', username=username)
print(rendered1)
rendered2 = t('home/goodbye', username=username)
print(rendered2)
print_templates(get_t('en'), 'John Doe')
# Expected output:
# Welcome, John Doe!
# Goodbye, John Doe!print_templates(get_t('ru'), 'Иван')
# Expected output:
# Привет, Иван!
# Пока, Иван!
```## plural
`plural` is jinja2 filter function for easy text pluralization.
#### Example:
```yaml
# templates.yaml
info:
users: |
System have {{users}} active {{users|plural('en','user','users')}}.
``````python
# main.py
from jinja2 import Environment
from j2tools import YamlLoader
from j2tools import pluraljinja = Environment(loader=YamlLoader('templates.yaml'))
jinja.filters['plural'] = pluraltemplate1 = jinja.get_template('info/users')
rendered1 = template1.render(users=1)
print(rendered1) # System have 1 active user.
rendered2 = template1.render(users=23)
print(rendered2) # System have 23 active users.
```## elapsed and remaining
Calculates and formats elapsed time to string like this:
`25d 4h 3m 35s`. Can be used as jinja2 filter.#### Example:
```yaml
# templates.yaml
info:
uptime: |
System uptime: {{started|elapsed(show_seconds=True)}}.
newyear: |
To next year remaining {{newyear|remaining}}!
``````python
# main.py
from jinja2 import Environment
from j2tools import YamlLoader
from j2tools import elapsed, remaining
import datetimejinja = Environment(loader=YamlLoader('templates.yaml'))
jinja.filters['elapsed'] = elapsed
jinja.filters['remaining'] = remainingstarted = datetime.datetime.now()
newyear = datetime.datetime(2020, 1, 1, 0, 0, 0)username = 'John Doe'
template1 = jinja.get_template('info/uptime')
rendered1 = template1.render(started=started)
print(rendered1) # System uptime: 25d 4h 3m 35s.template2 = jinja.get_template('info/newyear')
rendered2 = template2.render(newyear=newyear)
print(rendered2) # To next year remaining 295d 10h 13m 10s!
```## uchar
Simple jinja2 function to insert unicode characters
by unicode names. Very useful for inserting emoji.#### Example:
```yaml
# templates.yaml
home:
welcome: |
Welcome, {{username}} {{UN('THUMBS UP SIGN')}}!
``````python
# main.py
from jinja2 import Environment
from j2tools import YamlLoader
from j2tools import ucharjinja = Environment(loader=YamlLoader('templates.yaml'))
jinja.globals['UN'] = uchartemplate1 = jinja.get_template('info/users')
rendered1 = template1.render(username='John Doe')
print(rendered1) # Welcome, John Doe 👍!
```