(js) New method String.prototype.fromCSSIdentifier

This commit is contained in:
Francis Lachapelle 2015-06-11 11:45:24 -04:00
parent a70ea38572
commit 5435c2dd04

View file

@ -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;