Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/openresty/lemplate
OpenResty/Lua template framework implementing Perl's TT2 templating language
https://github.com/openresty/lemplate
Last synced: 3 months ago
JSON representation
OpenResty/Lua template framework implementing Perl's TT2 templating language
- Host: GitHub
- URL: https://github.com/openresty/lemplate
- Owner: openresty
- Created: 2017-04-06T20:25:49.000Z (almost 8 years ago)
- Default Branch: master
- Last Pushed: 2019-11-05T09:25:17.000Z (about 5 years ago)
- Last Synced: 2024-02-14T00:52:39.019Z (12 months ago)
- Language: Perl
- Size: 1.13 MB
- Stars: 53
- Watchers: 19
- Forks: 9
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
- Changelog: Changes
Awesome Lists containing this project
- awesome-resty - lemplate
README
# Name
Lemplate - OpenResty/Lua template framework implementing Perl's TT2 templating language
Table of Contents
=================* [Name](#name)
* [Status](#status)
* [Synopsis](#synopsis)
* [Description](#description)
* [HowTo](#howto)
* [Public API](#public-api)
* [Current Support](#current-support)
* [Community](#community)
* [English Mailing List](#english-mailing-list)
* [Chinese Mailing List](#chinese-mailing-list)
* [Code Repository](#code-repository)
* [Bugs and Patches](#bugs-and-patches)
* [Credit](#credit)
* [Author](#author)
* [Copyright](#copyright)
* [See Also](#see-also)# Status
This is still under early development. Check back often.
# Synopsis
From the command-line:
lemplate --compile path/to/lemplate/directory/ > myapp/templates.lua
From OpenResty Lua code:
local templates = require "myapp.templates"
ngx.print(templates.process("homepage.tt2", { var1 = 32, var2 = "foo" }))From the command-line:
lemplate --compile path/to/lemplate/directory/ > myapp/templates.lua
# Description
Lemplate is a templating framework for OpenResty/Lua that is built over
Perl's Template Toolkit (TT2).Lemplate parses TT2 templates using the TT2 Perl framework, but with a twist.
Instead of compiling the templates into Perl code, it compiles them into Lua
that can run on OpenResty.Lemplate then provides a Lua runtime module for processing the template code.
Presto, we have full featured Lua templating language!Combined with OpenResty, Lemplate provides a really simple and powerful way to
do web stuff.[Back to TOC](#table-of-contents)
# HowTo
Lemplate comes with a command line tool call `lemplate` that you use to
precompile your templates into a Lua module file. For example if you have a
template directory called `templates` that contains:$ ls templates/
body.tt2
footer.tt2
header.tt2You might run this command:
$ lemplate --compile template/* > myapp/templates.lua
This will compile all the templates into one Lua module file which can be loaded in your
main OpenResty/Lua application as the module `myapp.templates`.Now all you need to do is load the Lua module file in your OpenResty app:
local templates = require "myapp.templates"
and do the HTML page rendering:
local results = templates.process("some-page.tt2",
{ var1 = val1, var2 = val2, ...})Now you have Lemplate support for these templates in your OpenResty application.
[Back to TOC](#table-of-contents)
# Public API
The Lemplate Lua runtime module has the following API method:
- process(template-name, data)
The `template-name` is a string like `'body.tt2'` that is the name of
the top level template that you wish to process.The optional `data` specifies the data object to be used by the
templates. It can be an object, a function or a url. If it is an object,
it is used directly. If it is a function, the function is called and the
returned object is used.[Back to TOC](#table-of-contents)
# Current Support
The goal of Lemplate is to support all of the Template Toolkit features
that can possibly be supported.Lemplate now supports almost all the TT directives, including:
* Plain text
* [% [GET] variable %]
* [% [SET] variable = value %]
* [% DEFAULT variable = value ... %]
* [% INCLUDE [arguments] %]
* [% PROCESS [arguments] %]
* [% BLOCK name %]
* [% IF condition %]
* [% ELSIF condition %]
* [% ELSE %]
* [% FOR x = y %]
* [% FOR x IN y %]
* [% WHILE expression %]
* [% NEXT %]
* [% LAST %]
* [%# this is a comment %]ALL of the string virtual functions are supported.
ALL of the array virtual functions are supported:
ALL of the hash virtual functions are supported:
MANY of the standard filters are implemented.
The remaining features will be added very soon. See the DESIGN document
in the distro for a list of all features and their progress.[Back to TOC](#table-of-contents)
# Community
## English Mailing List
The [openresty-en](https://groups.google.com/group/openresty-en) mailing list is for English speakers.
[Back to TOC](#table-of-contents)
## Chinese Mailing List
The [openresty](https://groups.google.com/group/openresty) mailing list is for Chinese speakers.
[Back to TOC](#table-of-contents)
# Code Repository
The bleeding edge code is available via Git at
git://github.com/openresty/lemplate.git[Back to TOC](#table-of-contents)
# Bugs and Patches
Please submit bug reports, wishlists, or patches by
1. creating a ticket on the [GitHub Issue Tracker](https://github.com/openresty/lua-nginx-module/issues),
2. or posting to the ["Community"](#community).[Back to TOC](#table-of-contents)
# Credit
This project is based on Ingy dot Net's excellent [Jemplate](https://metacpan.org/pod/Jemplate) project.
[Back to TOC](#table-of-contents)
# Author
Yichun Zhang (agentzh), , OpenResty Inc.
[Back to TOC](#table-of-contents)
# Copyright
Copyright (C) 2016-2017 Yichun Zhang (agentzh). All Rights Reserved.
Copyright (C) 1996-2014 Andy Wardley. All Rights Reserved.
Copyright (c) 2006-2014. Ingy döt Net. All rights reserved.
Copyright (C) 1998-2000 Canon Research Centre Europe Ltd
This module is free software; you can redistribute it and/or modify it under
the same terms as Perl itself.[Back to TOC](#table-of-contents)
# See Also
- Perl TT2 Reference Manual: http://www.template-toolkit.org/docs/manual/index.html
- Jemplate for compiling TT2 templates to client-side JavaScript: http://www.jemplate.net/[Back to TOC](#table-of-contents)