- PVSM.RU - https://www.pvsm.ru -
Синтаксис Lua позволяет реализовать шаблоны в стиле PHP буквально несколькими регулярными выражениями.
Для начала посмотрим, что из этого выйдет.
<a href="<%url%>"><%label%></a>
Будет
<? if 1 > 2 then ?>
лучше
<? else ?>
хуже
<? end ?>
<ul>
<? for i = 1, 9999 do ?>
<li>ФЗ №<%i%></li>
<? end ?>
</ul>
<html>
<script><? require "scripts" ?></script>
<style><? require "styles" ?></style>
...
<? require 'tracking' ?>
<? function warn() ?>
<b>Вы совершаете уголовно наказуемое деяние!</b>
<? end ?>
...
<? warn() ?>
...
<? --[[ ?>
Больше нечего скрывать
<? --]] ?>
И это все собирается одной командой в обычный модуль Lua:
(echo "return function(_)_[=["; sed -e "s/<%/]=]_(/g; s/%>/)_[=[/g; s/<[?]/]=] /g; s/[?]>/ _[=[/g"; echo "]=] end") < template.tpl > template.lua
На самом деле, для запуска потребуется написать еще одну короткую функцию:
function template.print(data, args, callback)
local callback = callback or print
local function exec(data)
if type(data) == "function" then
local args = args or {}
setmetatable(args, { __index = _G })
setfenv(data, args)
data(exec)
else
callback(tostring(data))
end
end
exec(data)
end
Маленькая библиотека из трех функций доступна в Moon Rocks:
luarocks install template
luarocks, в свою очередь, имеется в репозиториях Ubuntu:
sudo apt-get install luarocks
Проект на GitHub [1].
Автор: dannote
Источник [2]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/programmirovanie/74600
Ссылки в тексте:
[1] Проект на GitHub: https://github.com/dannote/lua-template/
[2] Источник: http://habrahabr.ru/post/243321/
Нажмите здесь для печати.