1 | 'use strict';
|
2 |
|
3 | var css = require('css');
|
4 | var _ = require('lodash');
|
5 | var rtnData = require('./rt-style-support-data.js');
|
6 |
|
7 | var templateCommonJSTemplate = _.template('\'use strict\';\nvar style = <%= body %>;\nmodule.exports = style;\n');
|
8 |
|
9 | function convert(text) {
|
10 | return templateCommonJSTemplate({ body: convertBody(text) });
|
11 | }
|
12 |
|
13 | function convertBody(text) {
|
14 |
|
15 | var obj = css.parse(text, { silent: false });
|
16 | var result = _.reduce(obj.stylesheet.rules, processRule2, {});
|
17 | return JSON.stringify(result, undefined, 2);
|
18 | }
|
19 |
|
20 | function processRule2(result, rule) {
|
21 | var name = rule.selectors[0].substring(1);
|
22 | result[name] = _.reduce(rule.declarations, processDeclaration, {});
|
23 | return result;
|
24 | }
|
25 |
|
26 | function processDeclaration(result, dec) {
|
27 | var prop = _.camelCase(dec.property);
|
28 | result[prop] = convertValue(prop, dec.value);
|
29 | return result;
|
30 | }
|
31 |
|
32 | function convertValue(p, v) {
|
33 | if (rtnData[p] === 'string') {
|
34 | return v;
|
35 | }
|
36 |
|
37 | return parseInt(v.match(/(\d+)/g)[0], 10);
|
38 | }
|
39 |
|
40 | module.exports = {
|
41 | convert: convert,
|
42 | convertBody: convertBody
|
43 | }; |
\ | No newline at end of file |