(js) New method String.prototype.fromCSSIdentifier
This commit is contained in:
parent
a70ea38572
commit
5435c2dd04
|
@ -98,22 +98,39 @@ String.prototype.asDate = function () {
|
||||||
return newDate;
|
return newDate;
|
||||||
};
|
};
|
||||||
|
|
||||||
String.prototype.asCSSIdentifier = function() {
|
RegExp.escape = function(text) {
|
||||||
var characters = [ '_' , '\\.', '#' , '@' , '\\*', ':' , ';' , ',' , ' ',
|
return text.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, "\\$&");
|
||||||
'\\(', '\\)', '\\[', '\\]', '\\{', '\\}',
|
}
|
||||||
"'", '"', '&', '\\+' ];
|
|
||||||
var escapeds = [ '_U_', '_D_', '_H_', '_A_', '_S_', '_C_', '_SC_', '_CO_', '_SP_',
|
|
||||||
'_LP_', '_RP_', '_LS_', '_RQ_', '_LC_', '_RC_',
|
|
||||||
'_SQ_', '_DQ_', '_AM_', '_P_' ];
|
|
||||||
|
|
||||||
|
var css_invalid_characters = [ '_' , '.', '#' , '@' , '*', ':' , ';' , ',' , ' ',
|
||||||
|
'(', ')', '[', ']', '{', '}',
|
||||||
|
"'", '"', '&', '+' ];
|
||||||
|
var css_escape_characters = [ '_U_', '_D_', '_H_', '_A_', '_S_', '_C_', '_SC_', '_CO_', '_SP_',
|
||||||
|
'_LP_', '_RP_', '_LS_', '_RQ_', '_LC_', '_RC_',
|
||||||
|
'_SQ_', '_DQ_', '_AM_', '_P_' ];
|
||||||
|
|
||||||
|
String.prototype.asCSSIdentifier = function() {
|
||||||
var newString = this;
|
var newString = this;
|
||||||
for (var i = 0; i < characters.length; i++) {
|
for (var i = 0; i < css_invalid_characters.length; i++) {
|
||||||
var re = new RegExp(characters[i], 'g');
|
var re = new RegExp(RegExp.escape(css_invalid_characters[i]), 'g');
|
||||||
newString = newString.replace(re, escapeds[i]);
|
newString = newString.replace(re, css_escape_characters[i]);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (/^\d+/.test(newString)) {
|
if (/^\d/.test(newString))
|
||||||
newString = '_' + newString;
|
newString = '_' + newString;
|
||||||
|
|
||||||
|
return newString;
|
||||||
|
};
|
||||||
|
|
||||||
|
String.prototype.fromCSSIdentifier = function() {
|
||||||
|
var newString = this;
|
||||||
|
|
||||||
|
if (/^_\d/.test(newString))
|
||||||
|
newString = newString.substring(1);
|
||||||
|
|
||||||
|
for (var i = 0; i < css_escape_characters.length; i++) {
|
||||||
|
var re = new RegExp(css_escape_characters[i], 'g');
|
||||||
|
newString = newString.replace(re, css_invalid_characters[i]);
|
||||||
}
|
}
|
||||||
|
|
||||||
return newString;
|
return newString;
|
||||||
|
|
Loading…
Reference in a new issue