UNPKG

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