UNPKG

q5.js

Version:

[q5 fork] p5.js small & fast alternative (experimental) implementation.

64 lines (54 loc) 2.44 kB
const fs = require('fs'); let snippets = fs.readFileSync("docs/src/tests.js").toString().split("/*~~~").filter(x => x.trim().length).map(x => ({ link: x.split("~~~*/")[0].trim(), code: x.split("~~~*/")[1].trim() })) for (var i = 0; i < snippets.length; i++) { let romnum = ["I", "II", "III", "IV", "V", "VI", "VII", "VIII", "IX", "X"]; for (var i = 0; i < snippets.length; i++) { let isUniq = true; let rank = 0; for (var j = 0; j < snippets.length; j++) { if (snippets[i].link == snippets[j].link) { if (i > j) { rank++; isUniq = false; } else if (i < j) { isUniq = false; } } } let name = snippets[i].link.split("#/")[1].replace("p5/", "").replace("p5.", ""); let id = name.replace(/[^A-z0-9]/g, "_"); if (!isUniq) { name += " " + romnum[rank] + ""; id += "__" + rank; } snippets[i].id = id; snippets[i].name = name; } } snippets = Object.fromEntries(snippets.map(x => [x.id, x])/*.sort()*/); let keywords = Object.keys(snippets).map(x => snippets[x].name.replace('/', '.').split(" ")[0]).sort((a, b) => (b.length - a.length)); let data = ` let snippets = ${JSON.stringify(snippets, null, "\t")}; let keywords = ${JSON.stringify(keywords)};`; fs.writeFileSync("docs/js/data.js", data); // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ let html_index = `<ul> ${Object.keys(snippets).map(x=>`<li><a href="javascript:void(0)" onclick="openEg('${x}');">${snippets[x].name}</a></li>`).join("")} </ul>`; let html_selector = `<select onchange="openEg(this.value)"> <option value="">Select...</option> ${Object.keys(snippets).map(x=>`<option value="${x}">${snippets[x].name}</option>`).join("\n")} </select>`; let html_datalist = `<input list="reference-list" id="reference-item" name="reference-item" placeholder="Search" onchange="selection(this)" /> <datalist id="reference-list"> ${Object.keys(snippets).map((x, i)=>`<option value="${(snippets[x].name)[0].toUpperCase() + (snippets[x].name).slice(1)}" data-id="${x}" data-guid="${i}"></option>`).join("")} </datalist>`; fs.readFile("docs/tpl/template.html", 'utf8', function (err,data) { if (err) { return console.log(err); } let result = data.replace(/{{ INDEX }}/g, html_index) .replace(/{{ SELECTOR }}/g, html_selector) .replace(/{{ DATALIST }}/g, html_datalist); fs.writeFileSync("docs/index.html", result, 'utf8', function (err) { if (err) { return console.log(err); } }); });