src/cm/media/js/lib/yui/yui3-3.15.0/build/template-micro/template-micro-debug.js
author gibus
Mon, 10 Mar 2014 15:19:48 +0100
changeset 602 e16a97fb364a
permissions -rw-r--r--
Use YUI 3.15
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
602
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
     1
YUI.add('template-micro', function (Y, NAME) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
     2
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
     3
/*jshint expr:true */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
     4
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
     5
/**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
     6
Adds the `Y.Template.Micro` template engine, which provides fast, simple
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
     7
string-based micro-templating similar to ERB or Underscore templates.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
     8
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
     9
@module template
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    10
@submodule template-micro
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    11
@since 3.8.0
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    12
**/
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    13
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    14
/**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    15
Fast, simple string-based micro-templating engine similar to ERB or Underscore
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    16
templates.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    17
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    18
@class Template.Micro
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    19
@static
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    20
@since 3.8.0
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    21
**/
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    22
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    23
// This code was heavily inspired by Underscore.js's _.template() method
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    24
// (written by Jeremy Ashkenas), which was in turn inspired by John Resig's
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    25
// micro-templating implementation.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    26
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    27
var Micro = Y.namespace('Template.Micro');
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    28
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    29
/**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    30
Default options for `Y.Template.Micro`.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    31
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    32
@property {Object} options
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    33
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    34
    @param {RegExp} [options.code] Regex that matches code blocks like
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    35
        `<% ... %>`.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    36
    @param {RegExp} [options.escapedOutput] Regex that matches escaped output
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    37
        tags like `<%= ... %>`.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    38
    @param {RegExp} [options.rawOutput] Regex that matches raw output tags like
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    39
        `<%== ... %>`.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    40
    @param {RegExp} [options.stringEscape] Regex that matches characters that
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    41
        need to be escaped inside single-quoted JavaScript string literals.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    42
    @param {Object} [options.stringReplace] Hash that maps characters matched by
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    43
        `stringEscape` to the strings they should be replaced with. If you add
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    44
        a character to the `stringEscape` regex, you need to add it here too or
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    45
        it will be replaced with an empty string.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    46
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    47
@static
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    48
@since 3.8.0
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    49
**/
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    50
Micro.options = {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    51
    code         : /<%([\s\S]+?)%>/g,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    52
    escapedOutput: /<%=([\s\S]+?)%>/g,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    53
    rawOutput    : /<%==([\s\S]+?)%>/g,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    54
    stringEscape : /\\|'|\r|\n|\t|\u2028|\u2029/g,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    55
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    56
    stringReplace: {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    57
        '\\'    : '\\\\',
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    58
        "'"     : "\\'",
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    59
        '\r'    : '\\r',
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    60
        '\n'    : '\\n',
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    61
        '\t'    : '\\t',
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    62
        '\u2028': '\\u2028',
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    63
        '\u2029': '\\u2029'
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    64
    }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    65
};
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    66
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    67
/**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    68
Compiles a template string into a JavaScript function. Pass a data object to the
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    69
function to render the template using the given data and get back a rendered
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    70
string.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    71
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    72
Within a template, use `<%= ... %>` to output the value of an expression (where
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    73
`...` is the JavaScript expression or data variable to evaluate). The output
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    74
will be HTML-escaped by default. To output a raw value without escaping, use
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    75
`<%== ... %>`, but be careful not to do this with untrusted user input.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    76
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    77
To execute arbitrary JavaScript code within the template without rendering its
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    78
output, use `<% ... %>`, where `...` is the code to be executed. This allows the
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    79
use of if/else blocks, loops, function calls, etc., although it's recommended
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    80
that you avoid embedding anything beyond basic flow control logic in your
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    81
templates.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    82
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    83
Properties of the data object passed to a template function are made available
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    84
on a `data` variable within the scope of the template. So, if you pass in
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    85
the object `{message: 'hello!'}`, you can print the value of the `message`
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    86
property using `<%= data.message %>`.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    87
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    88
@example
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    89
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    90
    YUI().use('template-micro', function (Y) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    91
        var template = '<ul class="<%= data.classNames.list %>">' +
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    92
                           '<% Y.Array.each(data.items, function (item) { %>' +
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    93
                               '<li><%= item %></li>' +
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    94
                           '<% }); %>' +
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    95
                       '</ul>';
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    96
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    97
        // Compile the template into a function.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    98
        var compiled = Y.Template.Micro.compile(template);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    99
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   100
        // Render the template to HTML, passing in the data to use.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   101
        var html = compiled({
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   102
            classNames: {list: 'demo'},
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   103
            items     : ['one', 'two', 'three', 'four']
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   104
        });
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   105
    });
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   106
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   107
@method compile
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   108
@param {String} text Template text to compile.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   109
@param {Object} [options] Options. If specified, these options will override the
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   110
    default options defined in `Y.Template.Micro.options`. See the documentation
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   111
    for that property for details on which options are available.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   112
@return {Function} Compiled template function. Execute this function and pass in
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   113
    a data object to render the template with the given data.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   114
@static
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   115
@since 3.8.0
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   116
**/
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   117
Micro.compile = function (text, options) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   118
    /*jshint evil:true */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   119
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   120
    var blocks     = [],
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   121
        tokenClose = "\uffff",
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   122
        tokenOpen  = "\ufffe",
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   123
        source;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   124
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   125
    options = Y.merge(Micro.options, options);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   126
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   127
    // Parse the input text into a string of JavaScript code, with placeholders
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   128
    // for code blocks. Text outside of code blocks will be escaped for safe
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   129
    // usage within a double-quoted string literal.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   130
    //
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   131
    // $b is a blank string, used to avoid creating lots of string objects.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   132
    //
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   133
    // $v is a function that returns the supplied value if the value is truthy
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   134
    // or the number 0, or returns an empty string if the value is falsy and not
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   135
    // 0.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   136
    //
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   137
    // $t is the template string.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   138
    source = "var $b='', $v=function (v){return v || v === 0 ? v : $b;}, $t='" +
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   139
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   140
        // U+FFFE and U+FFFF are guaranteed to represent non-characters, so no
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   141
        // valid UTF-8 string should ever contain them. That means we can freely
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   142
        // strip them out of the input text (just to be safe) and then use them
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   143
        // for our own nefarious purposes as token placeholders!
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   144
        //
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   145
        // See http://en.wikipedia.org/wiki/Mapping_of_Unicode_characters#Noncharacters
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   146
        text.replace(/\ufffe|\uffff/g, '')
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   147
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   148
        .replace(options.rawOutput, function (match, code) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   149
            return tokenOpen + (blocks.push("'+\n$v(" + code + ")+\n'") - 1) + tokenClose;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   150
        })
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   151
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   152
        .replace(options.escapedOutput, function (match, code) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   153
            return tokenOpen + (blocks.push("'+\n$e($v(" + code + "))+\n'") - 1) + tokenClose;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   154
        })
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   155
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   156
        .replace(options.code, function (match, code) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   157
            return tokenOpen + (blocks.push("';\n" + code + "\n$t+='") - 1) + tokenClose;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   158
        })
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   159
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   160
        .replace(options.stringEscape, function (match) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   161
            return options.stringReplace[match] || '';
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   162
        })
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   163
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   164
        // Replace the token placeholders with code.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   165
        .replace(/\ufffe(\d+)\uffff/g, function (match, index) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   166
            return blocks[parseInt(index, 10)];
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   167
        })
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   168
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   169
        // Remove noop string concatenations that have been left behind.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   170
        .replace(/\n\$t\+='';\n/g, '\n') +
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   171
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   172
        "';\nreturn $t;";
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   173
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   174
    // If compile() was called from precompile(), return precompiled source.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   175
    if (options.precompile) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   176
        return "function (Y, $e, data) {\n" + source + "\n}";
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   177
    }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   178
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   179
    // Otherwise, return an executable function.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   180
    return this.revive(new Function('Y', '$e', 'data', source));
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   181
};
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   182
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   183
/**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   184
Precompiles the given template text into a string of JavaScript source code that
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   185
can be evaluated later in another context (or on another machine) to render the
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   186
template.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   187
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   188
A common use case is to precompile templates at build time or on the server,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   189
then evaluate the code on the client to render a template. The client only needs
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   190
to revive and render the template, avoiding the work of the compilation step.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   191
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   192
@method precompile
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   193
@param {String} text Template text to precompile.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   194
@param {Object} [options] Options. If specified, these options will override the
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   195
    default options defined in `Y.Template.Micro.options`. See the documentation
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   196
    for that property for details on which options are available.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   197
@return {String} Source code for the precompiled template.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   198
@static
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   199
@since 3.8.0
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   200
**/
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   201
Micro.precompile = function (text, options) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   202
    options || (options = {});
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   203
    options.precompile = true;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   204
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   205
    return this.compile(text, options);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   206
};
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   207
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   208
/**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   209
Compiles and renders the given template text in a single step.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   210
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   211
This can be useful for single-use templates, but if you plan to render the same
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   212
template multiple times, it's much better to use `compile()` to compile it once,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   213
then simply call the compiled function multiple times to avoid recompiling.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   214
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   215
@method render
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   216
@param {String} text Template text to render.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   217
@param {Object} data Data to pass to the template.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   218
@param {Object} [options] Options. If specified, these options will override the
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   219
    default options defined in `Y.Template.Micro.options`. See the documentation
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   220
    for that property for details on which options are available.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   221
@return {String} Rendered result.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   222
@static
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   223
@since 3.8.0
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   224
**/
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   225
Micro.render = function (text, data, options) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   226
    return this.compile(text, options)(data);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   227
};
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   228
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   229
/**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   230
Revives a precompiled template function into a normal compiled template function
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   231
that can be called to render the template. The precompiled function must already
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   232
have been evaluated to a function -- you can't pass raw JavaScript code to
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   233
`revive()`.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   234
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   235
@method revive
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   236
@param {Function} precompiled Precompiled template function.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   237
@return {Function} Revived template function, ready to be rendered.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   238
@static
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   239
@since 3.8.0
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   240
**/
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   241
Micro.revive = function (precompiled) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   242
    return function (data) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   243
        data || (data = {});
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   244
        return precompiled.call(data, Y, Y.Escape.html, data);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   245
    };
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   246
};
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   247
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   248
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   249
}, '@VERSION@', {"requires": ["escape"]});