var stringMethods = module.exports = {
firstUpperCase: firstUpperCase,
firstLowerCase: firstLowerCase,
toRegExp: toRegExp,
toFunction: toFunction,
toDate: toDate,
toQueryString: toQueryString,
fromQueryString: fromQueryString,
jsonParse: jsonParse,
hashCode: hashCode,
unPrefix: unPrefix,
format: format
};
Option name | Type | Description |
---|---|---|
self | String | A string that will have its first character replaced |
Returns string with the first character changed to upper case.
function firstUpperCase() {
return this ? this[0].toUpperCase() + this.slice(1) : this;
}
Option name | Type | Description |
---|---|---|
self | String | A string that will have its first character replaced |
Returns string with the first character changed to lower case.
function firstLowerCase() {
return this ? this[0].toLowerCase() + this.slice(1) : this;
}
Option name | Type | Description |
---|---|---|
self | String | string containing regular expression including enclosing "/" symbols and flags |
return | RegExp |
Converts string created by toString
method of RegExp back to RegExp
function toRegExp() {
var rx = this.match(regexpStringPattern);
if (rx) return new RegExp(rx[1], rx[2]);
}
var regexpStringPattern = /^\/(.*)\/([gimy]*)$/;
Option name | Type | Description |
---|---|---|
self | String | string containing full function code |
return | Function |
Converts string created by toString
method of function back to function
function toFunction() {
var func;
var code = 'func = ' + this + ';';
try {
eval(code);
return func;
} catch(e) {
return;
}
}
Option name | Type | Description |
---|---|---|
self | String, Date | string or date object to convert to VALID date |
return | Date |
Converts string to date in a safe way so that the resiult is undefined if date is invalid
function toDate() {
if (! this) return;
try {
var date = new Date(this);
} catch (e) {}
if (date && date.getTime && !isNaN(date.getTime()))
return date;
}
Option name | Type | Description |
---|---|---|
self | Object | The object hash to be converted |
encode | Function | optional function used to encode data, encodeURIComponent is used if not specified |
return | String | the resulting query string |
Convert params object to a url style query string (without "?")
function toQueryString(encode) {
var qs = ''
, params = this || {}
, encode = encode || encodeURIComponent;
__.eachKey.call(params, function(value, key) {
qs += key + '=' + encode(value) + '&';
});
return qs.slice(0, -1);
}
Option name | Type | Description |
---|---|---|
self | String | The string to be converted |
decode | Function | optional decode function, decodeURIComponent will be used if not supplied |
return | Object | The resulting object hash |
Convert url style query string (without "?") into object hash
function fromQueryString(decode) {
var pairs = this.split('&')
, results = {}
, decode = decode || decodeURIComponent;
pairs.forEach(function(pair) {
var splitPair = pair.split('=');
if (splitPair.length < 2) return;
var key = splitPair[0]
, value = decode(splitPair[1] || '');
if (!key) return;
results[key] = value;
});
return results;
}
Option name | Type | Description |
---|---|---|
self | String | JSON string representation of object |
return | Object |
Safe JSON.parse, returns undefined if JSON.parse throws an exception
function jsonParse() {
try {
return JSON.parse(this);
} catch (e) {}
}
Option name | Type | Description |
---|---|---|
self | String | string to convert to hash |
return | Number |
Dan Bernstein's algorythm to create hash from string
function hashCode() {
var hash = 5381
, str = this
, len = str.length;
for (var i = 0; i < len; i++) {
var char = str.charCodeAt(i);
hash = ((hash << 5) + hash) + char;
hash * 33 + c
}
return hash;
}
Option name | Type | Description |
---|---|---|
self | String | |
return | String |
Removes given prefix from the string. If string does not begin from the prefix, returns undefined
function unPrefix(str) {
if (this.indexOf(str) == 0)
return this.replace(str, '');
}
Regex used to identify format vars
var formatRegexp = /\$[0-9]+|\$\$/g;
Option name | Type | Description |
---|---|---|
this | String | The string to be formatted |
args | Array | The values to be formatted |
return | String | The formatted string |
String formatting utility to swap out tokens for variables.
function format() { // , ... arguments
var str = this;
var args = arguments;
return str.replace(formatRegexp, function (item) {
if (item == '$$') return '$';
item = item.slice(1);
return args[item - 1];
});
};