fest
fest copied to clipboard
Фильтры для кусков fest-шаблона
Нужен механизм постобработки того, что генерит fest.
Пример сжатия инлайн-скриптов асинхронно:
<?xml version="1.0"?>
<fest:template xmlns:fest="http://fest.mail.ru" context_name="config">
<fest:set name="region-popup">
<... тут html ... >
<script>
<fest:filter name="GCC">
<fest:insert src="region-popup1.js"/>
<fest:insert src="region-popup2.js"/>
<fest:filter name="MPOP">
<fest:value>
"void function(){ var pm = this.__PM={}; pm.init=function(){ ##Reklama/ShowBanner(3846)## } }.call(window)"
</fest:value>
</fest:filter>
</fest:filter>
</script>
</fest:set>
</fest:template>
const fest = require('fest')
, fs = require('fs')
;
fest.compile(template, {
sax: {
trim:true,
xmlns:true
}
, filters: {
MPOP: function() { /* code here */ }
, GCC: function(string, deferred) {
//
exec(
'java gcc -input ' + fileName + '-output ' + outputFileName,
function execProcess(error) {
if( error !== null ) {
deferred.reject('build error: ' + error);
}
else {
deferred.resolve(fs.readFileSync(outputFileName));
}
}
);
}
}
}))
Пример синхронного фильтра Markdown:
<?xml version="1.0"?>
<fest:template xmlns:fest="http://fest.mail.ru" context_name="config">
<fest:set name="help-md">
<fest:filter name="markdown">
<![CDATA[
node-markdown
=============
**node-markdown** is based on [Showdown](http://attacklab.net/showdown/) parser and is meant to parse [Markdown](http://daringfireball.net/projects/markdown/) syntax into HTML code.
Installation
------------
Use `npm` package manager
npm install node-markdown
]]>
</fest:filter>
</fest:set>
</fest:template>
const markdownParser = require("node-markdown").Markdown;
fest.compile(template, {
sax: {
trim:true
}
, filters: {
markdown: function(string) {
return markdownParser(string);
}
}
}))
Мне нужен Markdown. Реально подключить также GCC/UglifyJS, CSSO, SVGO. Можно реализовать после выхода 1.0.0.