PugJS syntax template adapter for Django, Jinja2, Mako and Tornado templates
Project description
PyPugJS
PyPugJS is a fork of PyJade with the name Jade changed to PugJS.
Additional disclaimer: Since the original pypugjs died i took the liberty to keep it alive, because since starting to work with the jade compiler for node I hate writing HTML and want to continue using it in my Django projects. I will keep the existing non Django stuff inside the project, but I cannot support anything other since I’m not actively using it not will be in the foreseable future. Tornado, Mako etc. support will be welcome tho!
PyPugJS is a high performance port of PugJS for python, that converts any .pug source into different Template-languages (Django, Jinja2, Mako or Tornado).
UTILITIES
To simply output the conversion to your console:
pypugjs [-c django|jinja|mako|tornado] input.pug [output.html]
INSTALLATION
To install pypugjs:
pip install pypugjs
Now simply name your templates with a `.pug` extension and this PugJS compiler will do the rest. Any templates with other extensions will not be compiled with the pypugjs compiler.
Syntax
Generally the same as the PugJS Node module (except of cases and several other features, which are not implemented) https://github.com/pugjs/pug/blob/master/README.md
Example
This code
!!! 5
html(lang="en")
head
title= pageTitle
script(type='text/javascript').
if (foo) {
bar()
}
body
h1.title PugJS - node template engine
#container
if youAreUsingPugJS
p You are amazing
else
p Get on it!
Converts to
<!DOCTYPE html>
<html lang="en">
<head>
<title>{{pageTitle}}</title>
<script type='text/javascript'>
if (foo) {
bar()
}
</script>
</head>
<body>
<h1 class="title">PugJS - node template engine</h1>
<div id="container">
{%if youAreUsingPugJS%}
<p>You are amazing</p>
{%else%}
<p>Get on it!</p>
{%endif%}
</div>
</body>
</html>
Convert existing templates online with the HTML2Jade converter.
Register filters
If you want to register a function as a filter, you only have to decorate the function with pypugjs.register_filter("filter_name")
import pypugjs
@pypugjs.register_filter('capitalize')
def capitalize(text, ast):
return text.capitalize()
Notable Features
Adding conditional classes:
a(class={'active-class': True, 'another': False})
Define mixins like this mixins/foo.pug:
mixin foo(data)
.foo {{ data }}
And use them in your templates like this:
include mixins/foo.pug
div
+foo(data)
TESTING
To start the testsuite, start the following commands:
make init make test
TODOs and BUGS
See: https://github.com/kakulukia/pypugjs/issues
History
*
django docs: mention not to wrap with django’s caching template loader
updated history
5.8.1
mentioning the flask example in the installation section of the docs
prevent endless recursion in Django template overriding
5.8.0
more details/docs for using pypugjs with jinja2
fixed issue with Jinja Choiceloaders
5.7.2
Fix specifying attributes without commas.
5.7.1
code has been blacked
5.7.0
included encoding detection for template files
5.6.1
fixed documentation for the new translation call
fixed typos in code
added min Django version to the docs
new release script
5.6.0
added enable_pug_translations call
5.5.1
fixed wrong exception handling for visitExtends
5.5.0
better caching for django template loader
loader has been made compatible with django 1.11
5.4.0
added mixing to flask hello world
Clean pipe inserts whitespace This allows for use of a single pipe character on a line to insert a whitespace before or after a tag.
5.3.0
fixed build script adding back all internal packages
5.2.0
fixed recursive import problem
5.1.5
addeded flake8 testing
sorting out old Django version 1.11 and 2.0 are left for travis testing
5.1.4
better release script
5.1.3
cleanup / documentation
extended makefile
5.1.2
added Makefile for testing, installing, releasing, linting …
added coverage reports
package is mainly base on the cookiecutter package
additional release helpers
packages passes flake8 test
5.1.1
conditional classes feature (thx to paradoxxxzero)
mixin support for jinja (matin)
mixin support for django
refactored the django tests to actually use the file loader
some pep8 fixes
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distributions
Built Distribution
File details
Details for the file pypugjs-5.9.1-py2.py3-none-any.whl
.
File metadata
- Download URL: pypugjs-5.9.1-py2.py3-none-any.whl
- Upload date:
- Size: 36.4 kB
- Tags: Python 2, Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.22.0 setuptools/41.2.0 requests-toolbelt/0.8.0 tqdm/4.41.1 CPython/3.8.0
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 2379716a437a6493ba8e1087b452e0356dcc0a0baff437e5a2c9179dfaf61c56 |
|
MD5 | 05cb5f06c662f6e51b433036218aeedc |
|
BLAKE2b-256 | 8439f18e686126a95674a2440c91e59d451f055877d4b387b7a0d5be6b311feb |