-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathtransform.js
40 lines (37 loc) · 1.33 KB
/
transform.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
const RNC = require("react-native-css").default;
const _ = require("lodash");
const readline = require("readline");
const parser = require("@babel/parser");
const traverse = require("@babel/traverse").default;
const config = require("./config");
const generate = require("@babel/generator").default;
const types = require("@babel/types");
const transform = require('css-to-react-native');
const rl = readline.createInterface({
input: process.stdin,
});
let code = "";
rl.on("line", (input) => {
code += input;
});
rl.on("close", () => {
// const styles = _(RNC`${css}`).mapKeys((value, key) => _.camelCase(key)).value();
// const code = `const styles = ${JSON.stringify(styles)}`;
const ast = parser.parse(code)
traverse(ast, {
enter(path) {
if (path.node.type === "ObjectProperty") {
const key = path.node.key.name;
if (config.sizeValues.includes(key)) {
const value = path.node.value.value;
if (value) {
if (typeof value === "number")
path.node.value = types.callExpression(types.identifier("size"), [types.numericLiteral(value)])
}
}
}
}
})
const transformedCode = generate(ast).code;
console.log(transformedCode)
});