## splunkjs.Utils Module Globals

### bind

##### splunkjs.Utils.bind

Binds a function to a specific object.

#### Syntax

root.bind = function(me, fn)

#### Parameters

Name | Type | Description
--- | --- | ---
me | Object | The object to bind to.
fn | Function | The function to bind.

#### Return

Function.

The bound function.

#### Examples

     var obj = {a: 1, b: function() { console.log(a); }};
     var bound = splunkjs.Utils.bind(obj, obj.b);
     bound(); // prints 1

#### Source (lib/utils.js:43)

    root.bind = function(me, fn) {
        return function() {
            return fn.apply(me, arguments);
        };
    };

### clone

##### splunkjs.Utils.clone

Creates a shallow-cloned copy of an object or array.

#### Syntax

root.clone = function(obj)

#### Parameters

Name | Type | Description
--- | --- | ---
obj | Object,Array | The object or array to clone.

#### Return

Object,Array.

The cloned object or array.

#### Examples

     function() {
         console.log(splunkjs.Utils.clone({foo: "bar"})); // {foo: "bar"}
         console.log(splunkjs.Utils.clone([1,2,3])); // [1,2,3]
     }

#### Source (lib/utils.js:376)

    root.clone = function(obj) {
        if (!root.isObject(obj)) {
            return obj;
        }
        return root.isArray(obj) ? obj.slice() : root.extend({}, obj);
    };

### contains

##### splunkjs.Utils.contains

Indicates whether an array contains a specific object.

#### Syntax

root.contains = function(arr, obj)

#### Parameters

Name | Type | Description
--- | --- | ---
arr | Array | The array to search in.
obj | Anything | The object to search for.

#### Return

Boolean.

`true` if the array contains the object, `false` if not.

#### Examples

     var a = {a: 3};
     var b = [{}, {c: 1}, {b: 1}, a];
     var contained = splunkjs.Utils.contains(b, a); // true

#### Source (lib/utils.js:112)

    root.contains = function(arr, obj) {
        arr = arr || [];
        return (root.indexOf(arr, obj) >= 0);
    };

### endsWith

##### splunkjs.Utils.endsWith

Indicates whether a string ends with a specific suffix.

#### Syntax

root.endsWith = function(original, suffix)

#### Parameters

Name | Type | Description
--- | --- | ---
original | String | The string to search in.
suffix | String | The suffix to search for.

#### Return

Boolean.

`true` if the string ends with the suffix, `false` if not.

#### Examples

     var ends = splunkjs.Utils.endsWith("foo-splunk", "-splunk");

#### Source (lib/utils.js:148)

    root.endsWith = function(original, suffix) {
        var matches = original.match(suffix + "$");
        return matches && matches.length > 0 && matches[0] === suffix;
    };
    var toString = Object.prototype.toString;

### extend

##### splunkjs.Utils.extend

Extends a given object with all the properties from other source objects.

#### Syntax

root.extend = function(obj)

#### Parameters

Name | Type | Description
--- | --- | ---
obj | Object | The object to extend.
sources | Object... | The source objects from which to take properties.

#### Return

Object.

The extended object.

#### Examples

     function() {
         console.log(splunkjs.Utils.extend({foo: "bar"}, {a: 2})); // {foo: "bar", a: 2}
     }

#### Source (lib/utils.js:352)

    root.extend = function(obj) {
        root.forEach(Array.prototype.slice.call(arguments, 1), function(source) {
            for (var prop in source) {
                obj[prop] = source[prop];
            }
        });
        return obj;
    };

### forEach

##### splunkjs.Utils.forEach

Applies an iterator function to each element in an object.

#### Syntax

root.forEach = function(obj, iterator, context)

#### Parameters

Name | Type | Description
--- | --- | ---
obj | Object,Array | An object or array.
iterator | Function | The function to apply to each element: `(element, list, index)`.
context | Object | A context to apply to the function (optional).

#### Examples

     splunkjs.Utils.forEach([1,2,3], function(el) { console.log(el); }); // 1,2,3

#### Source (lib/utils.js:312)

    root.forEach = function(obj, iterator, context) {
        if (obj === null) {
            return;
        }
        if (Array.prototype.forEach && obj.forEach === Array.prototype.forEach) {
            obj.forEach(iterator, context);
        }
        else if (obj.length === +obj.length) {
            for (var i = 0, l = obj.length; i < l; i++) {
                if (i in obj && iterator.call(context, obj[i], i, obj) === {}) {
                    return;
                }
            }
        }
        else {
            for (var key in obj) {
                if (obj.hasOwnProperty(key)) {
                    if (iterator.call(context, obj[key], key, obj) === {}) {
                        return;
                    }
                }
            }
        }
    };

### getWithVersion

##### splunkjs.Utils.getWithVersion

Finds a version in a dictionary.

#### Syntax

root.getWithVersion = function(version, map)

#### Parameters

Name | Type | Description
--- | --- | ---
version | String | The version to search for.
map | Object | The dictionary to search.

#### Return

Anything.

The value of the dictionary at the closest version match.

#### Source (lib/utils.js:426)

    root.getWithVersion = function(version, map) {
            map = map || {};
            var currentVersion = (version + "") || "";
            while (currentVersion !== "") {
                if (map.hasOwnProperty(currentVersion)) {
                    return map[currentVersion];
                }
                else {
                    currentVersion = currentVersion.slice(
                        0,
                        currentVersion.lastIndexOf(".")
                    );
                }
            }

            return map["default"];
        };
    })();

### indexOf

##### splunkjs.Utils.indexOf

Searches an array for a specific object and returns its location.

#### Syntax

root.indexOf = function(arr, search)

#### Parameters

Name | Type | Description
--- | --- | ---
arr | Array | The array to search in.
search | Anything | The object to search for.

#### Return

Number.

The index of the object (`search`), or `-1` if the object wasn't found.

#### Examples

     var a = ["a", "b', "c"];
     console.log(splunkjs.Utils.indexOf(a, "b")) //== 1
     console.log(splunkjs.Utils.indexOf(a, "d")) //== -1

#### Source (lib/utils.js:88)

    root.indexOf = function(arr, search) {
        for(var i=0; i<arr.length; i++) {
            if (arr[i] === search) {
                return i;
            }
        }
        return -1;
    };

### isArray

##### splunkjs.Utils.isArray

Indicates whether an argument is an array.

#### Syntax

root.isArray = Array.isArray || function(obj)

#### Parameters

Name | Type | Description
--- | --- | ---
obj | Anything | The argument to evaluate.

#### Return

Boolean.

`true` if the argument is an array, `false` if not.

#### Examples

     function() {
         console.log(splunkjs.Utils.isArray(arguments)); // false
         console.log(splunkjs.Utils.isArray([1,2,3])); // true
     }

#### Source (lib/utils.js:189)

    root.isArray = Array.isArray || function(obj) {
        return toString.call(obj) === '[object Array]';
    };

### isEmpty

##### splunkjs.Utils.isEmpty

Indicates whether an argument is empty.

#### Syntax

root.isEmpty = function(obj)

#### Parameters

Name | Type | Description
--- | --- | ---
obj | Anything | The argument to evaluate.

#### Return

Boolean.

`true` if the argument is empty, `false` if not.

#### Examples

     function() {
         console.log(splunkjs.Utils.isEmpty({})); // true
         console.log(splunkjs.Utils.isEmpty({a: 1})); // false
     }

#### Source (lib/utils.js:285)

    root.isEmpty = function(obj) {
        if (root.isArray(obj) || root.isString(obj)) {
            return obj.length === 0;
        }

        for (var key in obj) {
            if (this.hasOwnProperty.call(obj, key)) {
                return false;
            }
        }

        return true;
    };

### isFunction

##### splunkjs.Utils.isFunction

Indicates whether an argument is a function.

#### Syntax

root.isFunction = function(obj)

#### Parameters

Name | Type | Description
--- | --- | ---
obj | Anything | The argument to evaluate.

#### Return

Boolean.

`true` if the argument is a function, `false` if not.

#### Examples

     function() {
         console.log(splunkjs.Utils.isFunction([1,2,3]); // false
         console.log(splunkjs.Utils.isFunction(function() {})); // true
     }

#### Source (lib/utils.js:208)

    root.isFunction = function(obj) {
        return !!(obj && obj.constructor && obj.call && obj.apply);
    };

### isNumber

##### splunkjs.Utils.isNumber

Indicates whether an argument is a number.

#### Syntax

root.isNumber = function(obj)

#### Parameters

Name | Type | Description
--- | --- | ---
obj | Anything | The argument to evaluate.

#### Return

Boolean.

`true` if the argument is a number, `false` if not.

#### Examples

     function() {
         console.log(splunkjs.Utils.isNumber(1); // true
         console.log(splunkjs.Utils.isNumber(function() {})); // false
     }

#### Source (lib/utils.js:227)

    root.isNumber = function(obj) {
        return !!(obj === 0 || (obj && obj.toExponential && obj.toFixed));
    };

### isObject

##### splunkjs.Utils.isObject

Indicates whether an argument is an object.

#### Syntax

root.isObject = function(obj)

#### Parameters

Name | Type | Description
--- | --- | ---
obj | Anything | The argument to evaluate.

#### Return

Boolean.

`true` if the argument is an object, `false` if not.

#### Examples

     function() {
         console.log(splunkjs.Utils.isObject({abc: "abc"}); // true
         console.log(splunkjs.Utils.isObject("abc"); // false
     }

#### Source (lib/utils.js:265)

    root.isObject = function(obj) {

### isString

##### splunkjs.Utils.isString

Indicates whether an argument is a string.

#### Syntax

root.isString = function(obj)

#### Parameters

Name | Type | Description
--- | --- | ---
obj | Anything | The argument to evaluate.

#### Return

Boolean.

`true` if the argument is a string, `false` if not.

#### Examples

     function() {
         console.log(splunkjs.Utils.isString("abc"); // true
         console.log(splunkjs.Utils.isString(function() {})); // false
     }

#### Source (lib/utils.js:246)

    root.isString = function(obj) {
        return !!(obj === '' || (obj && obj.charCodeAt && obj.substr));
    };

### keyOf

##### splunkjs.Utils.keyOf

Tests whether a value appears in a given object.

#### Syntax

root.keyOf = function(val, obj)

#### Parameters

Name | Type | Description
--- | --- | ---
val | Anything | The value to search for.
obj | Object | The object to search in.

#### Source (lib/utils.js:408)

    root.keyOf = function(val, obj) {
        for (var k in obj) {
            if (obj.hasOwnProperty(k) && obj[k] === val) {
                return k;
            }
        }
        return undefined;
    };

### namespaceFromProperties

##### splunkjs.Utils.namespaceFromProperties

Extracts namespace information from a dictionary of properties. Namespace information includes values for owner, app, and sharing.

#### Syntax

root.namespaceFromProperties = function(props)

#### Parameters

Name | Type | Description
--- | --- | ---
props | Object | The dictionary of properties.

#### Return

Object.

Namespace information from the properties dictionary.

#### Source (lib/utils.js:392)

    root.namespaceFromProperties = function(props) {
        return {
            owner: props.acl.owner,
            app: props.acl.app,
            sharing: props.acl.sharing
        };
    };

### startsWith

##### splunkjs.Utils.startsWith

Indicates whether a string starts with a specific prefix.

#### Syntax

root.startsWith = function(original, prefix)

#### Parameters

Name | Type | Description
--- | --- | ---
original | String | The string to search in.
prefix | String | The prefix to search for.

#### Return

Boolean.

`true` if the string starts with the prefix, `false` if not.

#### Examples

     var starts = splunkjs.Utils.startsWith("splunk-foo", "splunk-");

#### Source (lib/utils.js:130)

    root.startsWith = function(original, prefix) {
        var matches = original.match("^" + prefix);
        return matches && matches.length > 0 && matches[0] === prefix;
    };

### toArray

##### splunkjs.Utils.toArray

Converts an iterable to an array.

#### Syntax

root.toArray = function(iterable)

#### Parameters

Name | Type | Description
--- | --- | ---
iterable | Arguments | The iterable to convert.

#### Return

Array.

The converted array.

#### Examples

     function() {
         console.log(arguments instanceof Array); // false
         var arr = console.log(splunkjs.Utils.toArray(arguments) instanceof Array); // true
     }

#### Source (lib/utils.js:170)

    root.toArray = function(iterable) {
        return Array.prototype.slice.call(iterable);
    };

### trim

##### splunkjs.Utils.trim

Strips a string of all leading and trailing whitespace characters.

#### Syntax

root.trim = function(str)

#### Parameters

Name | Type | Description
--- | --- | ---
str | String | The string to trim.

#### Return

String.

The trimmed string.

#### Examples

     var a = " aaa ";
     var b = splunkjs.Utils.trim(a); //== "aaa"

#### Source (lib/utils.js:62)

    root.trim = function(str) {
        str = str || "";

        if (String.prototype.trim) {
            return String.prototype.trim.call(str);
        }
        else {
            return str.replace(/^\\s\\s*/, '').replace(/\\s\\s*$/, '');
        }
    };