-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathconvert-json-to-scss.js
130 lines (94 loc) · 3.91 KB
/
convert-json-to-scss.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
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
const fs = require('fs');
const json = JSON.parse(fs.readFileSync('src/tokens.json', 'utf8'));
// const jsonData = Object.getOwnPropertyNames(JSON.parse(fs.readFileSync('src/tokens.json', 'utf8')));
// const jsons = ...json;
let scss = '';
let scssFontClass = '';
let i = 0;
const globalTokens = json.$metadata.tokenSetOrder;
console.debug(`json: ${globalTokens}`);
// // Obtener el campo `tokenSetOrder`
// const tokenSetOrder = json.$metadata.tokenSetOrder;
// // Iterar a través de los valores en `tokenSetOrder`
// for (let i = 0; i < tokenSetOrder.length; i++) {
// // Obtener el nombre del objeto correspondiente
// const nombreObjeto = tokenSetOrder[i];
// // Crear un nuevo objeto con el nombre correspondiente
// const nuevoObjeto = json[nombreObjeto];
// // Hacer lo que sea necesario con el nuevo objeto
// console.log(`Nuevo objeto creado: ${nombreObjeto}`, nuevoObjeto);
// }
// for (const themeToken in globalTokens) {
// let theme = 'json.' + themeToken;
// };
// for (const key in json.global) {
// let i = 0;
// let value = json.global[key].value;
// // let expr = json.global[key].value;
// let desc = json.global[key].description;
// let type = json.global[key].type;
// if (value !== undefined){
// if(type == "typography"){
// for (const t in value) {
// scss += `$${key}-${t}: ${value[t].split('.')[1].replace('}','')};\n`;
// };
// }else{
// scss += `$${key}: ${value};\n`;
// };
// }else{
// for (const i in json.global[key]) {
// scss += `$${key}-${i}: ${json.global[key][i].value};\n`;
// value = json.global[key][i].value;
// type = json.global[key][i].type;
// desc = json.global[key][i].description;
// };
// };
// switch (type) {
// case 'fontFamilies':
// scssFontClass += `\n@font-face {\n font-family: ${value};\n src: url(${desc});\n}\n`;
// break;
// default:
// scssFontClass += `\n@font-face {\n font-family: ${value};\n src: url(${desc});\n}\n`;
// };
// console.debug(`Sorry, we are out of ${type}.`);
// };
for (let key in json.$metadata.tokenSetOrder) {
const tokenSet = json[json.$metadata.tokenSetOrder[key]];
console.debug(`Token set: ${json.$metadata.tokenSetOrder[key]}`);
for (let key in tokenSet) {
console.debug(`Token: ${key}`);
let i = 0;
let value = tokenSet[key].value;
// let expr = json.global[key].value;
let desc = tokenSet[key].description;
let type = tokenSet[key].type;
if (value !== undefined){
if(type == "typography"){
for (const t in value) {
scss += `$${key}-${t}: ${value[t].split('.')[1].replace('}','')};\n`;
};
}else{
scss += `$${key}: ${value};\n`;
};
}else{
for (const i in tokenSet[key]) {
scss += `$${key}-${i}: ${tokenSet[key][i].value};\n`;
value = tokenSet[key][i].value;
type = tokenSet[key][i].type;
desc = tokenSet[key][i].description;
};
};
switch (type) {
case 'fontFamilies':
scssFontClass += `\n@font-face {\n font-family: ${value};\n src: url(${desc});\n}\n`;
break;
default:
};
console.debug(`Sorry, we are out of ${type}.`);
}
fs.writeFileSync(`src/assets/style-token/${json.$metadata.tokenSetOrder[key]}.scss`, scss += scssFontClass);
scss = ''
scssFontClass = ''
}
// fs.writeFile('styles1.scss', scss);
fs.writeFileSync('src/variables.scss', scss += scssFontClass);