src/cm/media/js/lib/yui/yui3-3.15.0/build/template-base/template-base-debug.js
author Yves-Marie Haussonne <ymh.work+github@gmail.com>
Fri, 09 May 2014 18:35:26 +0200
changeset 656 a84519031134
parent 602 e16a97fb364a
permissions -rw-r--r--
add link to "privacy policy" in the header test
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
602
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
     1
YUI.add('template-base', function (Y, NAME) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
     2
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
     3
/**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
     4
Virtual rollup of the `template-base` and `template-micro` modules.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
     5
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
     6
@module template
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
     7
@main template
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
     8
@since 3.8.0
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
     9
**/
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    10
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    11
/**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    12
Provides a generic API for using template engines such as Handlebars and
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    13
`Y.Template.Micro`.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    14
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    15
@module template
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    16
@submodule template-base
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    17
@since 3.8.0
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    18
**/
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    19
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    20
/**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    21
Provides a generic API for using template engines such as Handlebars and
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    22
`Y.Template.Micro`.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    23
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    24
### Examples
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    25
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    26
Using with `Y.Template.Micro` (the default template engine):
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    27
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    28
    YUI().use('template', function (Y) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    29
        var micro = new Y.Template(),
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    30
            html  = micro.render('<%= data.message %>', {message: 'hello!'});
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    31
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    32
        // ...
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    33
    });
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    34
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    35
Using with Handlebars:
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    36
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    37
    YUI().use('template-base', 'handlebars', function (Y) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    38
        var handlebars = new Y.Template(Y.Handlebars),
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    39
            html       = handlebars.render('{{message}}', {message: 'hello!'});
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    40
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    41
        // ...
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    42
    });
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    43
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    44
@class Template
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    45
@param {Mixed} [engine=Y.Template.Micro] Template engine to use, such as
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    46
    `Y.Template.Micro` or `Y.Handlebars`. Defaults to `Y.Template.Micro` if not
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    47
    specified.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    48
@param {Object} [defaults] Default options to use when instance methods are
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    49
    invoked.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    50
@constructor
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    51
@since 3.8.0
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    52
**/
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    53
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    54
function Template(engine, defaults) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    55
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    56
    Default options.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    57
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    58
    @property {Object} defaults
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    59
    @since 3.8.1
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    60
    **/
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    61
    this.defaults = defaults;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    62
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    63
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    64
    Template engine class.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    65
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    66
    @property {Mixed} engine
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    67
    @since 3.8.0
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    68
    **/
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    69
    this.engine = engine || Y.Template.Micro;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    70
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    71
    if (!this.engine) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    72
        Y.error('No template engine loaded.');
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    73
    }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    74
}
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    75
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    76
/**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    77
Registry that maps template names to revived template functions.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    78
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    79
@property _registry
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    80
@type Object
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    81
@static
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    82
@protected
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    83
@since 3.12.0
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    84
**/
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    85
Template._registry = {};
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    86
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    87
/**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    88
Registers a pre-compiled template into the central template registry with a
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    89
given template string, allowing that template to be called and rendered by
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    90
that name using the `Y.Template.render()` static method.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    91
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    92
For example, given the following simple Handlebars template, in `foo.hbs`:
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    93
@example
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    94
    <p>{{tagline}}</p>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    95
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    96
It can be precompiled using the Handlebars CLI, and added into a YUI module
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    97
in the following way. Alternatively, `locator` can be used to automate this
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    98
process for you:
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    99
@example
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   100
    YUI.add('templates-foo', function (Y) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   101
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   102
        var engine = new Y.Template(Y.Handlebars),
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   103
            precompiled;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   104
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   105
        precompiled = // Long precompiled template function here //
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   106
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   107
        Y.Template.register('foo', engine.revive(precompiled));
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   108
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   109
    }, '0.0.1', {requires: ['template-base', 'handlebars-base']});
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   110
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   111
See the `Y.Template#render` method to see how a registered template is used.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   112
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   113
@method register
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   114
@param {String} templateName The template name.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   115
@param {Function} template The function that returns the rendered string. The
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   116
    function should take the following parameters. If a pre-compiled template
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   117
    does not accept these parameters, it is up to the developer to normalize it.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   118
  @param {Object} [template.data] Data object to provide when rendering the
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   119
    template.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   120
  @param {Object} [template.options] Options to pass along to the template
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   121
    engine. See template engine docs for options supported by each engine.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   122
@return {Function} revivedTemplate This is the same function as in `template`,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   123
    and is done to maintain compatibility with the `Y.Template#revive()` method.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   124
@static
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   125
@since 3.12.0
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   126
**/
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   127
Template.register = function (templateName, template) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   128
    Template._registry[templateName] = template;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   129
    return template;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   130
};
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   131
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   132
/**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   133
Returns the registered template function, given the template name. If an
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   134
unregistered template is accessed, this will return `undefined`.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   135
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   136
@method get
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   137
@param {String} templateName The template name.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   138
@return {Function} revivedTemplate The revived template function, or `undefined`
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   139
    if it has not been registered.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   140
@static
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   141
@since 3.12.0
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   142
**/
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   143
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   144
Template.get = function (templateName) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   145
    return Template._registry[templateName];
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   146
}
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   147
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   148
/**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   149
Renders a template into a string, given the registered template name and data
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   150
to be interpolated. The template name must have been registered previously with
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   151
`register()`.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   152
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   153
Once the template has been registered and built into a YUI module, it can be
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   154
listed as a dependency for any other YUI module. Continuing from the above
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   155
example, the registered template can be used in the following way:
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   156
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   157
@example
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   158
    YUI.add('bar', function (Y) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   159
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   160
        var html = Y.Template.render('foo', {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   161
            tagline: '"bar" is now template language agnostic'
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
    }, '0.0.1', {requires: ['template-base', 'templates-foo']});
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   165
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   166
The template can now be used without having to know which specific rendering
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   167
engine generated it.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   168
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   169
@method render
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   170
@param {String} templateName The abstracted name to reference the template.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   171
@param {Object} [data] The data to be interpolated into the template.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   172
@param {Object} [options] Any additional options to be passed into the template.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   173
@return {String} output The rendered result.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   174
@static
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   175
@since 3.12.0
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   176
**/
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   177
Template.render = function (templateName, data, options) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   178
    var template = Template._registry[templateName],
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   179
        result   = '';
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   180
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   181
    if (template) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   182
        result = template(data, options);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   183
    } else {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   184
        Y.error('Unregistered template: "' + templateName + '"');
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   185
    }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   186
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   187
    return result;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   188
};
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   189
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   190
Template.prototype = {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   191
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   192
    Compiles a template with the current template engine and returns a compiled
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   193
    template function.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   194
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   195
    @method compile
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   196
    @param {String} text Template text to compile.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   197
    @param {Object} [options] Options to pass along to the template engine. See
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   198
        template engine docs for options supported by each engine.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   199
    @return {Function} Compiled template function.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   200
    @since 3.8.0
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   201
    **/
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   202
    compile: function (text, options) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   203
        options = options ? Y.merge(this.defaults, options) : this.defaults;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   204
        return this.engine.compile(text, options);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   205
    },
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
    Precompiles a template with the current template engine and returns a string
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   209
    containing JavaScript source code for the precompiled template.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   210
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   211
    @method precompile
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   212
    @param {String} text Template text to compile.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   213
    @param {Object} [options] Options to pass along to the template engine. See
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   214
        template engine docs for options supported by each engine.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   215
    @return {String} Source code for the precompiled template.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   216
    @since 3.8.0
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   217
    **/
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   218
    precompile: function (text, options) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   219
        options = options ? Y.merge(this.defaults, options) : this.defaults;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   220
        return this.engine.precompile(text, options);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   221
    },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   222
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   223
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   224
    Compiles and renders a template with the current template engine in a single
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   225
    step, and returns the rendered result.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   226
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   227
    @method render
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   228
    @param {String} text Template text to render.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   229
    @param {Object} data Data object to provide when rendering the template.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   230
    @param {Object} [options] Options to pass along to the template engine. See
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   231
        template engine docs for options supported by each engine.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   232
    @return {String} Rendered result.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   233
    @since 3.8.0
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   234
    **/
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   235
    render: function (text, data, options) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   236
        options = options ? Y.merge(this.defaults, options) : this.defaults;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   237
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   238
        if (this.engine.render) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   239
            return this.engine.render(text, data, options);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   240
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   241
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   242
        return this.engine.compile(text, options)(data, options);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   243
    },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   244
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   245
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   246
    Revives a precompiled template function into an executable template function
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   247
    using the current template engine. The precompiled code must already have
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   248
    been evaluated; this method won't evaluate it for you.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   249
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   250
    @method revive
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   251
    @param {Function} precompiled Precompiled template function.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   252
    @param {Object} [options] Options to pass along to the template engine. See
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   253
        template engine docs for options supported by each engine.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   254
    @return {Function} Compiled template function.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   255
    @since 3.8.0
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   256
    **/
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   257
    revive: function (precompiled, options) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   258
        options = options ? Y.merge(this.defaults, options) : this.defaults;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   259
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   260
        return this.engine.revive ? this.engine.revive(precompiled, options) :
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   261
                precompiled;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   262
    }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   263
};
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   264
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   265
// Copy existing namespaced properties from Y.Template to the Template function
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   266
// if Y.Template already exists, then make the function the new Y.Template.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   267
// This ensures that other modules can safely add stuff to the Y.Template
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   268
// namespace even if they're loaded before this one.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   269
Y.Template = Y.Template ? Y.mix(Template, Y.Template) : Template;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   270
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   271
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   272
}, '@VERSION@', {"requires": ["yui-base"]});