PugJS syntax template adapter for Django, Jinja2, Mako and Tornado templates - copy of PyJade with the name changed
Project description
PyPugJS
PyPugJS is a fork of PyJade with the name Jade changed to PugsJS.
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 canot supportanything other since I’m not actively using it not will be in the foreseeable 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
Or:
python setup.py install
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.
Django
In settings.py, add a loader to TEMPLATES like so:
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [
os.path.join(BASE_DIR, 'templates')
],
'OPTIONS': {
'context_processors': [
'django.template.context_processors.debug',
'django.template.context_processors.request',
'django.contrib.auth.context_processors.auth',
'django.contrib.messages.context_processors.messages',
],
'loaders': [
# PyPugJS part: ##############################
('pypugjs.ext.django.Loader', (
'django.template.loaders.filesystem.Loader',
'django.template.loaders.app_directories.Loader',
))
],
'builtins': [
'pypugjs.ext.django.templatetags',
],
},
},
]
In case you want to use Djangos translation feature, be sure to put this import statement at the top of your settings.py.
import pypugjs.ext.django # noqa
Jinja2
Just add pypugjs.ext.jinja.PyPugJSExtension as extension
jinja_env = Environment(extensions=['pypugjs.ext.jinja.PyPugJSExtension'])
Mako
Just add pypugjs.ext.mako.preprocessor as preprocessor
from pypugjs.ext.mako import preprocessor as mako_preprocessor
mako.template.Template(haml_source,
preprocessor=mako_preprocessor
)
Flask
Just add pypugjs.ext.jinja.PyPugJSExtension as extension to the environment of the app
app.jinja_env.add_extension('pypugjs.ext.jinja.PyPugJSExtension')
Pyramid
Adjust your “your_project/__init__.py” and add the following line somewhere to in the main() function
config.include('pypugjs.ext.pyramid')
Tornado Templates
Append this after importing tornado.template
from tornado import template
from pypugjs.ext.tornado import patch_tornado
patch_tornado()
(...)
Syntax
Generally the same as the PugJS Node.js 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>
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})
TESTING
You must have nose package installed. You can do the tests with:
./test.sh
TODOs and BUGS
ChangeLog
conditional classes feature (thx to paradoxxxzero)
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 Distribution
Built Distributions
File details
Details for the file pypugjs-5.1.0.tar.gz
.
File metadata
- Download URL: pypugjs-5.1.0.tar.gz
- Upload date:
- Size: 30.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 4286261c723b5d4659c6c3b64e663db30c83974689839b904324776af9176dda |
|
MD5 | 78727ee0c6fe150dd0f8a326069efd3d |
|
BLAKE2b-256 | 6b49ac21d42b2351203a9163b376ec3680959599a67b8dc0c9372f7a25423037 |
File details
Details for the file pypugjs-5.1.0-py3-none-any.whl
.
File metadata
- Download URL: pypugjs-5.1.0-py3-none-any.whl
- Upload date:
- Size: 38.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | e5277dfd99029810af858960e8968f5d98a1ec858ae7011163ddbc7947659afd |
|
MD5 | 05b2a94935a2878f7e558748893ccd79 |
|
BLAKE2b-256 | 58e2b92ea559cdc241fd97d4fe0f9617ae24e767ac15c52cbf7971a92d27c48c |
File details
Details for the file pypugjs-5.1.0-py2.py3-none-any.whl
.
File metadata
- Download URL: pypugjs-5.1.0-py2.py3-none-any.whl
- Upload date:
- Size: 38.3 kB
- Tags: Python 2, Python 3
- Uploaded using Trusted Publishing? No
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 6ee87ab83637f3c3acfd02d054532a4c35e5ca3cf529a8eae750c3e8da0d41ed |
|
MD5 | 739d911ffa849dc3185a747a1c60c1ed |
|
BLAKE2b-256 | 8fc6b34f3f1ed0910ad1359c6be4584fc3bdf6bcb0519aa48283c9a00e0d42e5 |