/**
* @depends nothing
* @name core.string
* @package jquery-sparkle {@link http://www.balupton/projects/jquery-sparkle}
*/
/**
* Return a new string with any spaces trimmed the left and right of the string
* @version 1.0.0
* @date June 30, 2010
* @package jquery-sparkle {@link http://www.balupton/projects/jquery-sparkle}
* @author Benjamin "balupton" Lupton {@link http://www.balupton.com}
* @copyright (c) 2009-2010 Benjamin Arthur Lupton {@link http://www.balupton.com}
* @license GNU Affero General Public License version 3 {@link http://www.gnu.org/licenses/agpl-3.0.html}
*/
String.prototype.trim = String.prototype.trim || function() {
// Trim off any whitespace from the front and back
return this.replace(/^\s+|\s+$/g, '');
};
/**
* Return a new string with the value stripped from the left and right of the string
* @version 1.1.1
* @date July 22, 2010
* @since 1.0.0, June 30, 2010
* @package jquery-sparkle {@link http://www.balupton/projects/jquery-sparkle}
* @author Benjamin "balupton" Lupton {@link http://www.balupton.com}
* @copyright (c) 2009-2010 Benjamin Arthur Lupton {@link http://www.balupton.com}
* @license GNU Affero General Public License version 3 {@link http://www.gnu.org/licenses/agpl-3.0.html}
*/
String.prototype.strip = String.prototype.strip || function(value,regex){
// Strip a value from left and right, with optional regex support (defaults to false)
value = String(value);
var str = this;
if ( value.length ) {
if ( !(regex||false) ) {
// We must escape value as we do not want regex support
value = value.replace(/([\[\]\(\)\^\$\.\?\|\/\\])/g, '\\$1');
}
str = str.replace(eval('/^'+value+'+|'+value+'+$/g'), '');
}
return String(str);
}
/**
* Return a new string with the value stripped from the left of the string
* @version 1.1.1
* @date July 22, 2010
* @package jquery-sparkle {@link http://www.balupton/projects/jquery-sparkle}
* @author Benjamin "balupton" Lupton {@link http://www.balupton.com}
* @copyright (c) 2009-2010 Benjamin Arthur Lupton {@link http://www.balupton.com}
* @license GNU Affero General Public License version 3 {@link http://www.gnu.org/licenses/agpl-3.0.html}
*/
String.prototype.stripLeft = String.prototype.stripLeft || function(value,regex){
// Strip a value from the left, with optional regex support (defaults to false)
value = String(value);
var str = this;
if ( value.length ) {
if ( !(regex||false) ) {
// We must escape value as we do not want regex support
value = value.replace(/([\[\]\(\)\^\$\.\?\|\/\\])/g, '\\$1');
}
str = str.replace(eval('/^'+value+'+/g'), '');
}
return String(str);
}
/**
* Return a new string with the value stripped from the right of the string
* @version 1.1.1
* @date July 22, 2010
* @package jquery-sparkle {@link http://www.balupton/projects/jquery-sparkle}
* @author Benjamin "balupton" Lupton {@link http://www.balupton.com}
* @copyright (c) 2009-2010 Benjamin Arthur Lupton {@link http://www.balupton.com}
* @license GNU Affero General Public License version 3 {@link http://www.gnu.org/licenses/agpl-3.0.html}
*/
String.prototype.stripRight = String.prototype.stripRight || function(value,regex){
// Strip a value from the right, with optional regex support (defaults to false)
value = String(value);
var str = this;
if ( value.length ) {
if ( !(regex||false) ) {
// We must escape value as we do not want regex support
value = value.replace(/([\[\]\(\)\^\$\.\?\|\/\\])/g, '\\$1');
}
str = str.replace(eval('/'+value+'+$/g'), '');
}
return String(str);
}
/**
* Return a int of the string
* @version 1.0.0
* @date June 30, 2010
* @package jquery-sparkle {@link http://www.balupton/projects/jquery-sparkle}
* @author Benjamin "balupton" Lupton {@link http://www.balupton.com}
* @copyright (c) 2009-2010 Benjamin Arthur Lupton {@link http://www.balupton.com}
* @license GNU Affero General Public License version 3 {@link http://www.gnu.org/licenses/agpl-3.0.html}
*/
String.prototype.toInt = String.prototype.toInt || function(){
// Convert to a Integer
return parseInt(this,10);
};
/**
* Return a new string of the old string wrapped with the start and end values
* @version 1.0.0
* @date June 30, 2010
* @package jquery-sparkle {@link http://www.balupton/projects/jquery-sparkle}
* @author Benjamin "balupton" Lupton {@link http://www.balupton.com}
* @copyright (c) 2009-2010 Benjamin Arthur Lupton {@link http://www.balupton.com}
* @license GNU Affero General Public License version 3 {@link http://www.gnu.org/licenses/agpl-3.0.html}
*/
String.prototype.wrap = String.prototype.wrap || function(start,end){
// Wrap the string
return start+this+end;
};
/**
* Return a new string of a selection of the old string wrapped with the start and end values
* @version 1.0.0
* @date June 30, 2010
* @package jquery-sparkle {@link http://www.balupton/projects/jquery-sparkle}
* @author Benjamin "balupton" Lupton {@link http://www.balupton.com}
* @copyright (c) 2009-2010 Benjamin Arthur Lupton {@link http://www.balupton.com}
* @license GNU Affero General Public License version 3 {@link http://www.gnu.org/licenses/agpl-3.0.html}
*/
String.prototype.wrapSelection = String.prototype.wrapSelection || function(start,end,a,z){
// Wrap the selection
if ( typeof a === 'undefined' || a === null ) a = this.length;
if ( typeof z === 'undefined' || z === null ) z = this.length;
return this.substring(0,a)+start+this.substring(a,z)+end+this.substring(z);
};
/**
* Return a new string of the slug of the old string
* @version 1.1.0
* @date July 16, 2010
* @since 1.0.0, June 30, 2010
* @package jquery-sparkle {@link http://www.balupton/projects/jquery-sparkle}
* @author Benjamin "balupton" Lupton {@link http://www.balupton.com}
* @copyright (c) 2009-2010 Benjamin Arthur Lupton {@link http://www.balupton.com}
* @license GNU Affero General Public License version 3 {@link http://www.gnu.org/licenses/agpl-3.0.html}
*/
String.prototype.toSlug = String.prototype.toSlug || function(){
// Convert a string to a slug
return this.toLowerCase().replace(/[\s_]/g, '-').replace(/[^-a-z0-9]/g, '').replace(/--+/g, '-').replace(/^-+|-+$/g,'');
}
/**
* Return a new JSON object of the old string.
* Turns:
* file.js?a=1&b.c=3.0&b.d=four&a_false_value=false&a_null_value=null
* Into:
* {"a":1,"b":{"c":3,"d":"four"},"a_false_value":false,"a_null_value":null}
* @version 1.1.0
* @date July 16, 2010
* @since 1.0.0, June 30, 2010
* @package jquery-sparkle {@link http://www.balupton/projects/jquery-sparkle}
* @author Benjamin "balupton" Lupton {@link http://www.balupton.com}
* @copyright (c) 2009-2010 Benjamin Arthur Lupton {@link http://www.balupton.com}
* @license GNU Affero General Public License version 3 {@link http://www.gnu.org/licenses/agpl-3.0.html}
*/
String.prototype.queryStringToJSON = String.prototype.queryStringToJSON || function ( )
{ // Turns a params string or url into an array of params
// Prepare
var params = String(this);
// Remove url if need be
params = params.substring(params.indexOf('?')+1);
// params = params.substring(params.indexOf('#')+1);
// Change + to %20, the %20 is fixed up later with the decode
params = params.replace(/\+/g, '%20');
// Do we have JSON string
if ( params.substring(0,1) === '{' && params.substring(params.length-1) === '}' )
{ // We have a JSON string
return eval(decodeURIComponent(params));
}
// We have a params string
params = params.split(/\&(amp\;)?/);
var json = {};
// We have params
for ( var i = 0, n = params.length; i < n; ++i )
{
// Adjust
var param = params[i] || null;
if ( param === null ) { continue; }
param = param.split('=');
if ( param === null ) { continue; }
// ^ We now have "var=blah" into ["var","blah"]
// Get
var key = param[0] || null;
if ( key === null ) { continue; }
if ( typeof param[1] === 'undefined' ) { continue; }
var value = param[1];
// ^ We now have the parts
// Fix
key = decodeURIComponent(key);
value = decodeURIComponent(value);
try {
// value can be converted
value = eval(value);
} catch ( e ) {
// value is a normal string
}
// Set
// window.console.log({'key':key,'value':value}, split);
var keys = key.split('.');
if ( keys.length === 1 )
{ // Simple
json[key] = value;
}
else
{ // Advanced (Recreating an object)
var path = '',
cmd = '';
// Ensure Path Exists
$.each(keys,function(ii,key){
path += '["'+key.replace(/"/g,'\\"')+'"]';
jsonCLOSUREGLOBAL = json; // we have made this a global as closure compiler struggles with evals
cmd = 'if ( typeof jsonCLOSUREGLOBAL'+path+' === "undefined" ) jsonCLOSUREGLOBAL'+path+' = {}';
eval(cmd);
json = jsonCLOSUREGLOBAL;
delete jsonCLOSUREGLOBAL;
});
// Apply Value
jsonCLOSUREGLOBAL = json; // we have made this a global as closure compiler struggles with evals
valueCLOSUREGLOBAL = value; // we have made this a global as closure compiler struggles with evals
cmd = 'jsonCLOSUREGLOBAL'+path+' = valueCLOSUREGLOBAL';
eval(cmd);
json = jsonCLOSUREGLOBAL;
delete jsonCLOSUREGLOBAL;
delete valueCLOSUREGLOBAL;
}
// ^ We now have the parts added to your JSON object
}
return json;
};