(js) New method String.prototype.fromCSSIdentifier

pull/89/head
Francis Lachapelle 2015-06-11 11:45:24 -04:00
parent a70ea38572
commit 5435c2dd04
1 changed files with 28 additions and 11 deletions

View File

@ -98,22 +98,39 @@ String.prototype.asDate = function () {
return newDate;
};
String.prototype.asCSSIdentifier = function() {
var characters = [ '_' , '\\.', '#' , '@' , '\\*', ':' , ';' , ',' , ' ',
'\\(', '\\)', '\\[', '\\]', '\\{', '\\}',
"'", '"', '&', '\\+' ];
var escapeds = [ '_U_', '_D_', '_H_', '_A_', '_S_', '_C_', '_SC_', '_CO_', '_SP_',
'_LP_', '_RP_', '_LS_', '_RQ_', '_LC_', '_RC_',
'_SQ_', '_DQ_', '_AM_', '_P_' ];
RegExp.escape = function(text) {
return text.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, "\\$&");
}
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;
for (var i = 0; i < characters.length; i++) {
var re = new RegExp(characters[i], 'g');
newString = newString.replace(re, escapeds[i]);
for (var i = 0; i < css_invalid_characters.length; i++) {
var re = new RegExp(RegExp.escape(css_invalid_characters[i]), 'g');
newString = newString.replace(re, css_escape_characters[i]);
}
if (/^\d+/.test(newString)) {
if (/^\d/.test(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;