UNPKG

jellyfish_designtokens

Version:

Ultimate design tokens from Jelly Fish Design System

70 lines (57 loc) 2.06 kB
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, };