JSFiddle - React, Tailwind, and code Playground

by lomatek

HTML

<script src="http://www.glicky.com/downloads/purejstemplate_jquery.js"></script>
<div id="w"></div>

JavaScript

_ = {welcome: 'welcome'};
(function() {
    var doT = { version : '0.1.7' };

    if (typeof module !== 'undefined' && module.exports) {
        module.exports = doT;
    } else {
        this.doT = doT;
    }

    doT.templateSettings = {
        //evaluate:    /\{\{([\s\S]+?)\}\}/g,
        //interpolate: /\{\{=([\s\S]+?)\}\}/g,
        evaluate: /<%([\s\S]+?)%>/g,
        interpolate: /<%=([\s\S]+?)%>/g,
        encode:      /\{\{!([\s\S]+?)\}\}/g,
        use:         /\{\{#([\s\S]+?)\}\}/g, //compile time evaluation
        define:      /\{\{##\s*([\w\.$]+)\s*(\:|=)([\s\S]+?)#\}\}/g, //compile time defs
        conditionalStart: /\{\{\?([\s\S]+?)\}\}/g,
        conditionalEnd: /\{\{\?\}\}/g,
        varname: 'it',
        strip : true,
        append: true
    };

    function resolveDefs(c, block, def) {
        return ((typeof block === 'string') ? block : block.toString())
        .replace(c.define, function (match, code, assign, value) {
            if (code.indexOf('def.') === 0) {
                code = code.substring(4);
            }
            if (!(code in def)) {
                if (assign === ':') {
                    def[code]= value;
                } else {
                    eval("def[code]=" + value);
                }
            }
            return '';
        })
        .replace(c.use, function(match, code) {
            var v = eval(code);
            return v ? resolveDefs(c, v, def) : v;
        });
    }

    doT.template = function(tmpl, c, def) {
        c = c || doT.templateSettings;
        var cstart = c.append ? "'+(" : "';out+=(", // optimal choice depends on platform/size of templates
            cend   = c.append ? ")+'" : ");out+='";
        var str = (c.use || c.define) ? resolveDefs(c, tmpl, def || {}) : tmpl;

        str = ("var out='" +
            ((c.strip) ? str.replace(/\s*<!\[CDATA\[\s*|\s*\]\]>\s*|[\r\n\t]|(\/\*[\s\S]*?\*\/)/g, ''): str)
            .replace(/\\/g, '\\\\')
            .replace(/'/g, "\\'")
   ...