~landscape/lazr-js/trunk

« back to all changes in this revision

Viewing changes to src-js/lazrjs/yui/3.0.0/build/classnamemanager/classnamemanager.js

  • Committer: Sidnei da Silva
  • Date: 2009-10-21 21:43:07 UTC
  • mfrom: (120.2.15 yui-3.0.0)
  • mto: (124.5.1 trunk)
  • mto: This revision was merged to the branch mainline in revision 126.
  • Revision ID: sidnei.da.silva@canonical.com-20091021214307-mpul9404n317puk5
- Merge from yui-3.0.0, resolving conflicts

Show diffs side-by-side

added added

removed removed

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