Я хотел бы знать, как разделить файл css на токены, используя C11 ++ regex и вставить в std :: map как ключ / значение?
Файл CSS:
#id1 {
border: 1px;
color: red;
}
#id2 {
border: 2px;
color: green;
};
Код C ++:
#include <iostream>
#include <fstream>
#include <map>
#include <regex>
using namespace std;
int main() {
ifstream file("file.css", ios::binary);
if(!file.is_open())
return 1;
//... how to split file on tokens?
//and insert tokens probably like this (but only in a loop and dynamically):
map<string, string> array;
array.insert(make_pair("#id1", "border: 1px; color: red;"));
array.insert(make_pair("#id2", "border: 1px; color: green;"));
//...
map<string, string>::iterator i = array.begin();
while(i != array.end()) {
cout << "key: " << i->first << " | value: " << i->second << endl;
i++;
}
//out:
/*
key: #id1 | value: border: 1px; color: red;
key: #id2 | value: border: 2px; color: green;
*/
return 0;
}
Что мне нужно в реализации JavaScript:
var css = "\
#id1 {\
border: 1px;\
color: red;\
}\
#id2 {\
border: 2px;\
color: green;\
}";
//remove tabulation and split on tokens
var array = css.replace(/[\t\n\r]*/g, '').replace(/\s{2}/g, ' ').split('}'),
i = array.length-1,
stack = [];
//close right brace and insert into stack[]
while(i--) {
stack.unshift(array[i] + "}");
}
i = stack.length;
var map = {};
//fill map (key/value)
while(i--) {
map[stack[i].match(/(.*){.*}/)[1]] = stack[i].match(/.*{(.*)}/)[1];
}
//out
for(i in map) {
document.write('key: ' + i + ' | value: ' + map[i] + '<br />')
}
Пожалуйстасм. рабочий пример
На самом деле, мне просто нужен простой пример расщепления CSS-файла с использованием regex