Source: helpers.js

/** @module helpers */

"use strict";

if (!String.prototype.startsWith) {
	Object.defineProperty(String.prototype, 'startsWith', {
		enumerable: false,
		configurable: false,
		writable: false,
		value: function (searchString, position) {
			position = position || 0;
			return this.lastIndexOf(searchString, position) === position;
		}
	});
}

if (!String.prototype.endsWith) {
	Object.defineProperty(String.prototype, 'endsWith', {
		value: function (searchString, position) {
			var subjectString = this.toString();
			if (position === undefined || position > subjectString.length) {
				position = subjectString.length;
			}
			position -= searchString.length;
			var lastIndex = subjectString.indexOf(searchString, position);
			return lastIndex !== -1 && lastIndex === position;
		}
	});
}

module.exports = {
	/**
	 * Split a string by a character, trim the string
	 * and rejoin the string
	 *
	 * @param {String} char
	 * @param {String} string
	 * @return {String}
	 */
	splitTrim: function(char, string) {
		return string.split(char).map(String.trim).join(char);
	},
	/**
	 * Determine whether an object is a string
	 * @param {mixed} obj
	 * @return {bool}
	 */
	isString: function(obj) {
		return (typeof obj === 'string' || obj instanceof String);
	},
	/**
	 * Determine whether an object is numeric
	 * @param {mixed} obj
	 * @return {bool}
	 */
	isNumber: function(obj) {
		return ! isNaN(parseFloat(obj)) && isFinite(obj);
	}
};