fest icon indicating copy to clipboard operation
fest copied to clipboard

Фильтры для кусков fest-шаблона

Open termi opened this issue 11 years ago • 1 comments

Нужен механизм постобработки того, что генерит 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);
        }
    }
}))

termi avatar Mar 15 '13 11:03 termi

Мне нужен Markdown. Реально подключить также GCC/UglifyJS, CSSO, SVGO. Можно реализовать после выхода 1.0.0.

eprev avatar Mar 25 '13 09:03 eprev