const fs = require('fs'); const process = require('process'); const request = require('request'); request('https://p5js.org/reference/data.json', (err, res) => { if (!err) { const result = res.toJSON(); const data = JSON.parse(result.body); const arr = data.classitems; const p5VariableKeywords = {}; const p5FunctionKeywords = {}; arr.forEach((obj) => { if (obj.class === 'p5' && obj.module !== 'Foundation') { if (obj.itemtype === 'property') { p5VariableKeywords[`${obj.name}`] = 'p5Variable'; } if (obj.itemtype === 'method') { p5FunctionKeywords[`${obj.name}`] = 'p5Function'; } } }); let p5VariablePart = JSON.stringify(p5VariableKeywords); let p5FunctionPart = JSON.stringify(p5FunctionKeywords); p5VariablePart = p5VariablePart.replace(/"p5Variable"/g, 'p5Variable'); p5FunctionPart = p5FunctionPart.replace(/"p5Function"/g, 'p5Function'); let generatedCode = '/* eslint-disable */ \n'; generatedCode += '/* generated: do not edit! helper file for syntax highlighting. generated by update-syntax-highlighting script */ \n'; generatedCode += 'var p5Function = {type: "variable", style: "p5-function"};\n'; generatedCode += 'var p5Variable = {type: "variable", style: "p5-variable"};\n'; generatedCode += `let p5VariableKeywords = ${p5VariablePart}; \n`; generatedCode += `let p5FunctionKeywords = ${p5FunctionPart}; \n`; generatedCode += 'exports.p5FunctionKeywords = p5FunctionKeywords;\n'; generatedCode += 'exports.p5VariableKeywords = p5VariableKeywords;\n'; fs.writeFile(`${process.cwd()}/client/utils/p5-keywords.js`, generatedCode, (error) => { if (error) { console.log("Error!! Couldn't write to the file", error); } else { console.log('Syntax highlighting files updated successfully'); } }); } else { console.log("Error!! Couldn't fetch the data.json file"); } });