src/cm/media/js/lib/yui/yui_3.10.3/build/substitute/substitute-debug.js
author gibus
Tue, 11 Feb 2014 12:33:25 +0100
changeset 572 93383e54e042
parent 525 89ef5ed3c48b
permissions -rw-r--r--
Font size for piwik optout iframe.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
525
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
     1
/*
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
     2
YUI 3.10.3 (build 2fb5187)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
     3
Copyright 2013 Yahoo! Inc. All rights reserved.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
     4
Licensed under the BSD License.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
     5
http://yuilibrary.com/license/
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
     6
*/
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
     7
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
     8
YUI.add('substitute', function (Y, NAME) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
     9
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    10
/**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    11
 * String variable substitution and string formatting.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    12
 * If included, the substitute method is added to the YUI instance.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    13
 *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    14
 * @module substitute
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    15
 * @deprecated
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    16
 */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    17
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    18
    var L = Y.Lang, DUMP = 'dump', SPACE = ' ', LBRACE = '{', RBRACE = '}',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    19
		savedRegExp =  /(~-(\d+)-~)/g, lBraceRegExp = /\{LBRACE\}/g, rBraceRegExp = /\{RBRACE\}/g,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    20
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    21
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    22
     * The following methods are added to the YUI instance
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    23
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    24
     * <strong>Use `Y.Lang.sub` or `Y.Template` instead.</strong>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    25
     * @class YUI~substitute
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    26
     * @deprecated
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    27
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    28
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    29
/**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    30
<strong>Use `Y.Lang.sub` or `Y.Template` instead.</strong>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    31
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    32
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    33
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    34
Does `{placeholder}` substitution on a string.  The object passed as the
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    35
second parameter provides values to replace the `{placeholder}`s.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    36
{placeholder} token names must match property names of the object.  For
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    37
example
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    38
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    39
`var greeting = Y.substitute("Hello, {who}!", { who: "World" });`
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    40
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    41
`{placeholder}` tokens that are undefined on the object map will be left in
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    42
tact (leaving unsightly "{placeholder}"s in the output string).  If your
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    43
replacement strings *should* include curly braces, use `{LBRACE}` and
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    44
`{RBRACE}` in your object map string value.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    45
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    46
If a function is passed as a third argument, it will be called for each
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    47
{placeholder} found.  The {placeholder} name is passed as the first value
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    48
and the value from the object map is passed as the second.  If the
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    49
{placeholder} contains a space, the first token will be used to identify
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    50
the object map property and the remainder will be passed as a third
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    51
argument to the function.  See below for an example.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    52
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    53
If the value in the object map for a given {placeholder} is an object and
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    54
the `dump` module is loaded, the replacement value will be the string
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    55
result of calling `Y.dump(...)` with the object as input.  Include a
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    56
numeric second token in the {placeholder} to configure the depth of the call
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    57
to `Y.dump(...)`, e.g. "{someObject 2}".  See the
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    58
<a href="../classes/YUI.html#method_dump">`dump`</a> method for details.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    59
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    60
    @method substitute
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    61
    @deprecated
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    62
    @param {string} s The string that will be modified.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    63
    @param {object} o An object containing the replacement values.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    64
    @param {function} f An optional function that can be used to
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    65
                        process each match.  It receives the key,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    66
                        value, and any extra metadata included with
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    67
                        the key inside of the braces.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    68
    @param {boolean} recurse if true, the replacement will be recursive,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    69
                        letting you have replacement tokens in replacement text.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    70
                        The default is false.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    71
    @return {string} the substituted string.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    72
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    73
    @example
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    74
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    75
        function getAttrVal(key, value, name) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    76
            // Return a string describing the named attribute and its value if
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    77
            // the first token is @. Otherwise, return the value from the
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    78
            // replacement object.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    79
            if (key === "@") {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    80
                value += name + " Value: " + myObject.get(name);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    81
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    82
            return value;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    83
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    84
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    85
        // Assuming myObject.set('foo', 'flowers'),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    86
        // => "Attr: foo Value: flowers"
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    87
        var attrVal = Y.substitute("{@ foo}", { "@": "Attr: " }, getAttrVal);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    88
    **/
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    89
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    90
    substitute = function(s, o, f, recurse) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    91
        var i, j, k, key, v, meta, saved = [], token, dump,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    92
            lidx = s.length;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    93
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    94
        for (;;) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    95
            i = s.lastIndexOf(LBRACE, lidx);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    96
            if (i < 0) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    97
                break;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    98
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    99
            j = s.indexOf(RBRACE, i);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   100
            if (i + 1 >= j) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   101
                break;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   102
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   103
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   104
            //Extract key and meta info
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   105
            token = s.substring(i + 1, j);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   106
            key = token;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   107
            meta = null;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   108
            k = key.indexOf(SPACE);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   109
            if (k > -1) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   110
                meta = key.substring(k + 1);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   111
                key = key.substring(0, k);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   112
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   113
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   114
            // lookup the value
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   115
            v = o[key];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   116
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   117
            // if a substitution function was provided, execute it
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   118
            if (f) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   119
                v = f(key, v, meta);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   120
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   121
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   122
            if (L.isObject(v)) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   123
                if (!Y.dump) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   124
                    v = v.toString();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   125
                } else {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   126
                    if (L.isArray(v)) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   127
                        v = Y.dump(v, parseInt(meta, 10));
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   128
                    } else {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   129
                        meta = meta || '';
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   130
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   131
                        // look for the keyword 'dump', if found force obj dump
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   132
                        dump = meta.indexOf(DUMP);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   133
                        if (dump > -1) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   134
                            meta = meta.substring(4);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   135
                        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   136
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   137
                        // use the toString if it is not the Object toString
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   138
                        // and the 'dump' meta info was not found
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   139
                        if (v.toString === Object.prototype.toString ||
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   140
                            dump > -1) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   141
                            v = Y.dump(v, parseInt(meta, 10));
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   142
                        } else {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   143
                            v = v.toString();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   144
                        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   145
                    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   146
                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   147
			} else if (L.isUndefined(v)) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   148
                // This {block} has no replace string. Save it for later.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   149
                v = '~-' + saved.length + '-~';
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   150
					saved.push(token);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   151
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   152
                // break;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   153
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   154
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   155
            s = s.substring(0, i) + v + s.substring(j + 1);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   156
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   157
			if (!recurse) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   158
				lidx = i - 1;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   159
			} 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   160
		}
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   161
		// restore saved {block}s and escaped braces
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   162
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   163
		return s
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   164
			.replace(savedRegExp, function (str, p1, p2) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   165
				return LBRACE + saved[parseInt(p2,10)] + RBRACE;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   166
			})
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   167
			.replace(lBraceRegExp, LBRACE)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   168
			.replace(rBraceRegExp, RBRACE)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   169
		;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   170
	};
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   171
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   172
    Y.substitute = substitute;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   173
    L.substitute = substitute;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   174
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   175
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   176
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   177
}, '3.10.3', {"requires": ["yui-base"], "optional": ["dump"]});