aboutsummaryrefslogtreecommitdiff
path: root/node_modules/montage/core/extras/string.js
blob: 10b69e88c8aeb59bccd2bab9450e938c41340c30 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
/* <copyright>
 This file contains proprietary software owned by Motorola Mobility, Inc.<br/>
 No rights, expressed or implied, whatsoever to this software are provided by Motorola Mobility, Inc. hereunder.<br/>
 (c) Copyright 2011 Motorola Mobility, Inc.  All Rights Reserved.
 </copyright> */
/**
    Defines extensions to native String object.
    @see [String class]{@link external:String}
	@module montage/core/shim/string
*/

/**
 @external String
 */
Object.defineProperties(String.prototype, /** @lends external:String.prototype#*/{
    /**
    @function external:String.addEventListener
    @param {Listener} type The type of event listener.
    @param {Listener} listener The event listener.
    @param {Function} useCapture The capturing function.
    */
    addEventListener: {
        value: function(type, listener, useCapture) {
            //NO OP, on purpose
        }

    },
    /**
     Capitalizes the first letter in the string.
     @function external:String.toCapitalized
     @returns {String} The original string with its first letter capitalized.
     @example
     var fname = "abe";
     var lname = "lincoln";
     var name = fname.toCapitalized() + " " + lname.toCapitalized();
     // name == "Abe Lincoln"
     */
    toCapitalized: {
        value: function() {
            return this.charAt(0).toUpperCase() + this.slice(1);
        }
    },

    /**
     Returns true if the two strings are equal, otherwise returns false.
     @function external:String.equals
     @param {Object} anObject The object to compare to the string.
     @returns {Boolean} Returns true if the string is equal to <code>anObject</code>.
     */
    equals: {
        value: function(anObject) {
            if (this.toString() === anObject) {
                return true;
            }

            if (!anObject || !(anObject instanceof String)) {
                return false;
            }

            return (this == anObject);
        }
    }

});

/**
    Shim implementation of String.isString() for browsers that don't yet support it.
    @function external:String.isString()
    @param {object} obj The object to determine if its a String.
    @returns {boolean} Object.prototype.toString.call(obj) === "[object String]"
*/
if (!String.isString) {
    Object.defineProperty(String, "isString", {
        value: function(obj) {
            return Object.prototype.toString.call(obj) === "[object String]";
        }
    });
}