libs/web: make JS String.format() and String.serialize() available as prototype options, introduce String.nobr()

This commit is contained in:
Jo-Philipp Wich 2012-12-02 14:20:36 +00:00
parent ec1b06c266
commit 564ca0accd

View file

@ -1097,9 +1097,9 @@ function cbi_tag_last(container)
} }
} }
if( ! String.serialize ) String.prototype.serialize = function()
String.serialize = function(o)
{ {
var o = this;
switch(typeof(o)) switch(typeof(o))
{ {
case 'object': case 'object':
@ -1149,11 +1149,9 @@ if( ! String.serialize )
} }
} }
String.prototype.format = function()
if( ! String.format )
String.format = function()
{ {
if (!arguments || arguments.length < 1 || !RegExp) if (!RegExp)
return; return;
var html_esc = [/&/g, '&#38;', /"/g, '&#34;', /'/g, '&#39;', /</g, '&#60;', />/g, '&#62;']; var html_esc = [/&/g, '&#38;', /"/g, '&#34;', /'/g, '&#39;', /</g, '&#60;', />/g, '&#62;'];
@ -1165,7 +1163,7 @@ if( ! String.format )
return s; return s;
} }
var str = arguments[0]; var str = this;
var out = ''; var out = '';
var re = /^(([^%]*)%('.|0|\x20)?(-)?(\d+)?(\.\d+)?(%|b|c|d|u|f|o|s|x|X|q|h|j|t|m))/; var re = /^(([^%]*)%('.|0|\x20)?(-)?(\d+)?(\.\d+)?(%|b|c|d|u|f|o|s|x|X|q|h|j|t|m))/;
var a = b = [], numSubstitutions = 0, numMatches = 0; var a = b = [], numSubstitutions = 0, numMatches = 0;
@ -1184,9 +1182,9 @@ if( ! String.format )
} }
else else
{ {
if (numSubstitutions++ < arguments.length) if (numSubstitutions < arguments.length)
{ {
var param = arguments[numSubstitutions]; var param = arguments[numSubstitutions++];
var pad = ''; var pad = '';
if (pPad && pPad.substr(0,1) == "'") if (pPad && pPad.substr(0,1) == "'")
@ -1310,3 +1308,32 @@ if( ! String.format )
return out + str; return out + str;
} }
String.prototype.nobr = function()
{
return this.replace(/[\s\n]+/g, '&#160;');
}
String.serialize = function()
{
var a = [ ];
for (var i = 1; i < arguments.length; i++)
a.push(arguments[i]);
return ''.serialize.apply(arguments[0], a);
}
String.format = function()
{
var a = [ ];
for (var i = 1; i < arguments.length; i++)
a.push(arguments[i]);
return ''.format.apply(arguments[0], a);
}
String.nobr = function()
{
var a = [ ];
for (var i = 1; i < arguments.length; i++)
a.push(arguments[i]);
return ''.nobr.apply(arguments[0], a);
}