jellyfish_designtokens
Version:
Ultimate design tokens from Jelly Fish Design System
70 lines (57 loc) • 2.06 kB
JavaScript
const fs = require('fs');
const path = require('path');
const patternNames = new Set();
// Função para percorrer recursivamente os arquivos JSON
function readJsonFiles(directory) {
const files = fs.readdirSync(directory);
files.forEach(file => {
const filePath = path.join(directory, file);
const stats = fs.statSync(filePath);
if (stats.isDirectory()) {
readJsonFiles(filePath);
} else if (stats.isFile() && file.endsWith('.json')) {
const jsonData = fs.readFileSync(filePath, 'utf-8');
const parsedData = JSON.parse(jsonData);
extractNamesFromData(parsedData);
}
});
}
// Função para extrair nomes de tokens da estrutura de dados
function extractNamesFromData(data) {
if (typeof data === 'object') {
if (data.jf) {
const jfKeys = Object.keys(data.jf);
jfKeys.forEach(key => {
patternNames.add(key);
});
}
for (const key in data) {
if (typeof data[key] === 'object') {
extractNamesFromData(data[key]);
}
}
}
}
// Diretório onde os arquivos JSON estão localizados
const jsonDirectory = 'figma/PATTERNS';
// Executa a leitura dos arquivos JSON
readJsonFiles(jsonDirectory);
// Converte o conjunto (Set) de nomes em um array
const patternNamesArray = Array.from(patternNames);
console.log(patternNamesArray);
//Cria um filtro que pega apenas os tokens que correspondem à segunda parte do nome do token
const patternsFilter = (patternName) => (token) =>
token.path[1] === patternName;
const configPatternsFiles = (tokenPatternsArray) =>
tokenPatternsArray.map((patternName) => ({
filter: patternsFilter(patternName),
destination: `${patternName}.css`,
format: "css/variables",
options: {
outputReferences: true
}
}));
module.exports = {
patternNamesArray,
configPatternsFiles,
};