IT戦記

プログラミング、起業などについて書いているプログラマーのブログです😚

CSS の文字列を JS の文字列に

こんな感じかな。

JSCSS.CSSValueConverter = {
    _string: function(str) {
        return str.replace(/\\([0-9a-fA-F]{1,6}[ \t\r\n\f]?|\r\n|[ \t\r\n\f]|.)/g, function(str, t) { 
            if (t.match(/^[0-9a-fA-F]{1,6}[ \t\r\n\f]?$/)) {
                return String.fromCharCode(parseInt('0x' + t)); 
            }    
            else if (t.match(/^(\r\n|[ \t\r\n\f])$/)) {
                return '';
            }    
            else {
                return t;
            }    
        });  
    },   
    string: function(str) {
        var m = str.match(/^['"]((?:[\r\n]|.)*?)['"]$/);
        str = m[1];
        return this._string(str);
    },   
    url: function(url) {
        var m = url.match(/^url\([ \n\t\r\f]*["']?[ \n\t\r\f]*((?:[\r\n]|.)*?)[ \n\t\r\f]*["']?[ \n\t\r\f]*\)$/);
        url = m[1];
        return this._string(str);
    }    
};

テスト

alert(JSCSS.CSSValueConverter.string('"\\3042"')); // => あ