Skip to main content
Help us improve PyPI by participating in user testing. All experience levels needed!

pwt.jinja2js is an extension to the Jinja2 template engine that compiles valid Jinja2 templates containing macros to JavaScript. The JavaScript output can be included via script tags or can be added to the applications JavaScript.

Project description

About

pwt.jinja2js is an extension to the Jinja2 template engine that compiles valid Jinja2 templates containing macros to JavaScript. The JavaScript output can be included via script tags or can be added to the applications JavaScript.

Nutshell

Here a small example of a Jinja template:

{% namespace ns1 %}

{% macro printusers(users) %}
<ul>
{% for user in users %}
    <li><a href="{{ user.url }}">{{ user.username }}</a></li>
{% endfor %}
</ul>
{% endmacro %}

Which after running through the pwt.jinja2js compiler we need up the following JavaScript:

if (typeof ns1 == 'undefined') { var ns1 = {}; }

ns1.printusers = function(opt_data, opt_sb, opt_caller) {
   var output = '';
   output += '\n<ul>\n';
   var userList = opt_data.users;
   var userListLen = userList.length;
   for (var userIndex = 0; userIndex < userListLen; userIndex++) {
       var userData = userList[userIndex];
       output += '\n   <li><a href="' + userData.url + '">' + userData.username + '</a></li>\n';
   }
   output += '\n</ul>\n';
   return output;
}

By slipping a switch we can produce Java Script that takes advantage of Closure Library:

goog.provide('ns1');

goog.require('soy');

ns1.printusers = function(opt_data, opt_sb) {
   var output = opt_sb || new soy.StringBuilder();
   output.append('\n<ul>\n');
   var userList = opt_data.users;
   var userListLen = userList.length;
   for (var userIndex = 0; userIndex < userListLen; userIndex++) {
       var userData = userList[userIndex];
       output.append('\n   <li><a href="', userData.url, '">', userData.username, '</a></li>\n');
   }
   output.append('\n</ul>\n');
   if (!opt_sb) return output.toString();
}

More user documentation is available on the pwt.jinja2js PyPI package page. The Jinja2 site is also available to learn more about the Jinja2 syntax.

Devloper information

In order to get started with this project and to see what it can do:

  • git clone git://github.com/mkerrin/pwt.jinja2js.git
  • cd pwt.jinja2js
  • python bootstrap
  • ./bin/buildout

Testing

To run the tests run

  • ./bin/test -v

To run a basic server in order to run the JavaScript tests.

  • ./bin/serve –reload

To run the JavaScript tests open a browser and load the url:

http://localhost:8000/

There is links to two test suites from there.

Project details


Release history Release notifications

This version
History Node

0.8.1

History Node

0.7.3

History Node

0.7.2

History Node

0.7.1

History Node

0.7.0

History Node

0.6.0

History Node

0.5.1

History Node

0.5

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Filename, size & hash SHA256 hash help File type Python version Upload date
pwt.jinja2js-0.8.1.tar.gz (68.8 kB) Copy SHA256 hash SHA256 Source None Feb 28, 2013

Supported by

Elastic Elastic Search Pingdom Pingdom Monitoring Google Google BigQuery Sentry Sentry Error logging CloudAMQP CloudAMQP RabbitMQ AWS AWS Cloud computing Fastly Fastly CDN DigiCert DigiCert EV certificate StatusPage StatusPage Status page