import * as fs from "fs"; import * as util from "util"; const readFile = util.promisify(fs.readFile); const subst = `$1`; const subst2 = `$2`; function tranformToArray(file, regex, subst) { const result = file.replace(regex, subst); const arrayResult = result .replace(/ /g, "") .split(/[\n\r]+/) .filter(value => Object.keys(value).length !== 0); console.log(arrayResult); return arrayResult; } const tranformfileliquid = async ( pathFileCss1 = "./test/_variables.scss", pathFileCss2 = "./test/css-variables.liquid", pathFileOutPut = "./test/css-var-output.css" ) => { let object1: { KeyElm: []; ValueElm: [] } = { KeyElm: [], ValueElm: [] }; let object2: { KeyElm: []; ValueElm: [] } = { KeyElm: [], ValueElm: [] }; const data1 = await readFile(pathFileCss1); const regex = /\$(.*):\s*(.*)\;/g; const contentFile = data1.toString(); const contentRemoveCommentlan1 = contentFile.replace(/\/.*\*\//s, ""); const contentRemoveCommentlan2 = contentRemoveCommentlan1.replace( /{% comment %}.*{% endcomment %}/s, "" ); const KeyElm = tranformToArray(contentRemoveCommentlan2, regex, subst); const ValueElm = tranformToArray(contentRemoveCommentlan2, regex, subst2); object1 = { KeyElm, ValueElm }; const data2 = await readFile(pathFileCss2); // console.log(data2.toString()); const regex2 = /^.*\-\-(.*):\s*(.*)/gm; const contentFile2 = data2.toString(); const contentRemoveCommentlan1file2 = contentFile2.replace(/\/.*\*\//s, ""); const contentRemoveCommentlan2file2 = contentRemoveCommentlan1file2.replace( /{% comment %}.*{% endcomment %}/s, "" ); const KeyElm2 = tranformToArray(contentRemoveCommentlan2file2, regex2, subst); const ValueElm2 = tranformToArray( contentRemoveCommentlan2file2, regex2, subst2 ); object2 = { KeyElm: KeyElm2, ValueElm: ValueElm2 }; let dataArray = []; const dataWrite = object1.KeyElm.map((data, i) => { const position = object2.KeyElm.findIndex(dataOj2 => { return dataOj2 === data; }); if (position >= 0) { dataArray.push( `$${object2.KeyElm[position]}: ${object2.ValueElm[position]}` ); } // console.log(object2.ValueElm[i]); }); // console.log(dataArray.join("\n")); // console.log("object1: ", object1); // console.log("object2: ", object2); fs.writeFile(pathFileOutPut, dataArray.join("\n"), err => { if (err) { return console.log(err); } return console.log("success"); }); }; export { tranformfileliquid }; export default tranformfileliquid;