UNPKG

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