src/cm/media/js/lib/yui/yui_3.0.0b1/build/classnamemanager/classnamemanager.js
author raph
Mon, 23 Nov 2009 15:14:29 +0100
changeset 0 40c8f766c9b8
permissions -rw-r--r--
import from internal svn r 4007
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
0
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
     1
/*
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
     2
Copyright (c) 2009, Yahoo! Inc. All rights reserved.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
     3
Code licensed under the BSD License:
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
     4
http://developer.yahoo.net/yui/license.txt
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
     5
version: 3.0.0b1
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
     6
build: 1163
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
     7
*/
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
     8
YUI.add('classnamemanager', function(Y) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
     9
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    10
/**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    11
* Contains a singleton (ClassNameManager) that enables easy creation and caching of 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    12
* prefixed class names.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    13
* @module classnamemanager
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    14
*/
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    15
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    16
/**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    17
 * A singleton class providing: 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    18
 * 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    19
 * <ul>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    20
 *    <li>Easy creation of prefixed class names</li>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    21
 *    <li>Caching of previously created class names for improved performance.</li>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    22
 * </ul>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    23
 * 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    24
 * @class ClassNameManager
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    25
 * @static 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    26
 */
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    27
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    28
// String constants
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    29
var CLASS_NAME_PREFIX = 'classNamePrefix',
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    30
	CLASS_NAME_DELIMITER = 'classNameDelimiter',
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    31
    CONFIG = Y.config;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    32
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    33
// Global config
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    34
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    35
/**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    36
 * Configuration property indicating the prefix for all CSS class names in this YUI instance.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    37
 *
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    38
 * @property Y.config.classNamePrefix
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    39
 * @type {String}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    40
 * @default "yui"
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    41
 * @static
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    42
 */
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    43
CONFIG[CLASS_NAME_PREFIX] = CONFIG[CLASS_NAME_PREFIX] || 'yui';
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    44
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    45
/**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    46
 * Configuration property indicating the delimiter used to compose all CSS class names in
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    47
 * this YUI instance.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    48
 *
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    49
 * @property Y.config.classNameDelimiter
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    50
 * @type {String}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    51
 * @default "-"
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    52
 * @static
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    53
 */
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    54
CONFIG[CLASS_NAME_DELIMITER] = CONFIG[CLASS_NAME_DELIMITER] || '-';
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    55
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    56
Y.ClassNameManager = function () {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    57
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    58
	var sPrefix    = CONFIG[CLASS_NAME_PREFIX],
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    59
		sDelimiter = CONFIG[CLASS_NAME_DELIMITER];
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    60
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    61
	return {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    62
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    63
		/**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    64
		 * Returns a class name prefixed with the the value of the 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    65
		 * <code>Y.config.classNamePrefix</code> attribute + the provided strings.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    66
		 * Uses the <code>Y.config.classNameDelimiter</code> attribute to delimit the 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    67
		 * provided strings. E.g. Y.ClassNameManager.getClassName('foo','bar'); // yui-foo-bar
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    68
		 * 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    69
		 * @method getClassName
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    70
		 * @param {String}+ one or more classname bits to be joined and prefixed
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    71
		 */
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    72
		getClassName: Y.cached(function (c, x) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    73
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    74
			var sClass = sPrefix + sDelimiter + 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    75
                   // ((x) ? Y.Array(arguments, 0, true).join(sDelimiter) : c);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    76
                   ((x) ? Array.prototype.join.call(arguments, sDelimiter) : c);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    77
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    78
			return sClass.replace(/\s/g, '');
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    79
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    80
		})
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    81
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    82
	};
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    83
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    84
}();
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    85
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    86
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    87
}, '3.0.0b1' );