From 36956f404cbf1ecc0f2fb320d4f3ab89a313c830 Mon Sep 17 00:00:00 2001 From: Sebastian Date: Thu, 2 Mar 2023 14:09:44 -0300 Subject: camel case for prebuilt --- packages/merchant-backend-ui/render-examples.ts | 139 +++++++++++++++--------- 1 file changed, 87 insertions(+), 52 deletions(-) (limited to 'packages/merchant-backend-ui/render-examples.ts') diff --git a/packages/merchant-backend-ui/render-examples.ts b/packages/merchant-backend-ui/render-examples.ts index 86e18fa68..e8c4a8cd0 100644 --- a/packages/merchant-backend-ui/render-examples.ts +++ b/packages/merchant-backend-ui/render-examples.ts @@ -15,9 +15,9 @@ */ /** -* -* @author Sebastian Javier Marchano (sebasjm) -*/ + * + * @author Sebastian Javier Marchano (sebasjm) + */ import mustache from "mustache"; import fs from "fs"; @@ -25,63 +25,98 @@ import { format, formatDuration, intervalToDuration } from "date-fns"; /** * This script will emulate what the merchant backend will do when being requested - * -*/ + * + */ -const sourceDirectory = process.argv[2] -const destDirectory = process.argv[3] +const sourceDirectory = process.argv[2]; +const destDirectory = process.argv[3]; if (!sourceDirectory || !destDirectory) { - console.log('usage: render-mustache ') - process.exit(1); + console.log("usage: render-mustache "); + process.exit(1); } if (!fs.existsSync(destDirectory)) { - fs.mkdirSync(destDirectory); + fs.mkdirSync(destDirectory); } +function fromCamelCaseName(name) { + const result = name + .replace(/^[a-z]/, (letter) => `${letter.toUpperCase()}`) //first letter lowercase + .replace(/_[a-z]/g, (letter) => `${letter[1].toUpperCase()}`); //snake case + return result; +} /** * Load all the html files */ -const files = fs.readdirSync(sourceDirectory).filter(f => /.html/.test(f)) - -files.forEach(file => { - const html = fs.readFileSync(`${sourceDirectory}/${file}`, 'utf8') - - const testName = file.replace('.html', '') - const exampleFileName = `./src/pages/${testName}.examples` - if (!fs.existsSync(exampleFileName + ".ts")) { - console.log(`skipping ${testName}: no examples found`); - return; - } - // eslint-disable-next-line @typescript-eslint/no-var-requires - const { exampleData } = require(exampleFileName) - - Object.keys(exampleData).forEach(exampleName => { - const example = exampleData[exampleName] - - //enhance the example with more information - example.contract_terms_json = () => JSON.stringify(example.contract_terms); - example.contract_terms.timestamp_str = () => example.contract_terms.timestamp && format(example.contract_terms.timestamp.t_s, 'dd MMM yyyy HH:mm:ss'); - - example.contract_terms.hasProducts = () => example.contract_terms.products?.length > 0; - example.contract_terms.hasAuditors = () => example.contract_terms.auditors?.length > 0; - example.contract_terms.hasExchanges = () => example.contract_terms.exchanges?.length > 0; - - example.contract_terms.products.forEach(p => { - p.delivery_date_str = () => p.delivery_date && format(p.delivery_date.t_s, 'dd MM yyyy HH:mm:ss') - p.hasTaxes = () => p.taxes?.length > 0 - }) - example.contract_terms.has_delivery_info = () => example.contract_terms.delivery_date || example.contract_terms.delivery_location - - example.contract_terms.delivery_date_str = () => example.contract_terms.delivery_date && format(example.contract_terms.delivery_date.t_s, 'dd MM yyyy HH:mm:ss') - example.contract_terms.pay_deadline_str = () => example.contract_terms.pay_deadline && format(example.contract_terms.pay_deadline.t_s, 'dd MM yyyy HH:mm:ss') - example.contract_terms.wire_transfer_deadline_str = () => example.contract_terms.wire_transfer_deadline && format(example.contract_terms.wire_transfer_deadline.t_s, 'dd MM yyyy HH:mm:ss') - example.contract_terms.refund_deadline_str = () => example.contract_terms.refund_deadline && format(example.contract_terms.refund_deadline.t_s, 'dd MM yyyy HH:mm:ss') - example.contract_terms.auto_refund_str = () => example.contract_terms.auto_refund && formatDuration(intervalToDuration({ start: 0, end: example.contract_terms.auto_refund.d_us })) - - const output = mustache.render(html, example); - - fs.writeFileSync(`${destDirectory}/${testName}.${exampleName}.html`, output) - }) -}) +const files = fs.readdirSync(sourceDirectory).filter((f) => /.html/.test(f)); + +files.forEach((file) => { + const html = fs.readFileSync(`${sourceDirectory}/${file}`, "utf8"); + + const testName = file.replace(".en.html", ""); + const exampleFileName = `./src/pages/${fromCamelCaseName(testName)}.examples`; + if (!fs.existsSync(exampleFileName + ".ts")) { + console.log(`skipping ${testName}: no examples found`); + return; + } + // eslint-disable-next-line @typescript-eslint/no-var-requires + const { exampleData } = require(exampleFileName); + + Object.keys(exampleData).forEach((exampleName) => { + const example = exampleData[exampleName]; + + //enhance the example with more information + example.contract_terms_json = () => JSON.stringify(example.contract_terms); + example.contract_terms.timestamp_str = () => + example.contract_terms.timestamp && + format(example.contract_terms.timestamp.t_s, "dd MMM yyyy HH:mm:ss"); + + example.contract_terms.hasProducts = () => + example.contract_terms.products?.length > 0; + example.contract_terms.hasAuditors = () => + example.contract_terms.auditors?.length > 0; + example.contract_terms.hasExchanges = () => + example.contract_terms.exchanges?.length > 0; + + example.contract_terms.products.forEach((p) => { + p.delivery_date_str = () => + p.delivery_date && format(p.delivery_date.t_s, "dd MM yyyy HH:mm:ss"); + p.hasTaxes = () => p.taxes?.length > 0; + }); + example.contract_terms.has_delivery_info = () => + example.contract_terms.delivery_date || + example.contract_terms.delivery_location; + + example.contract_terms.delivery_date_str = () => + example.contract_terms.delivery_date && + format(example.contract_terms.delivery_date.t_s, "dd MM yyyy HH:mm:ss"); + example.contract_terms.pay_deadline_str = () => + example.contract_terms.pay_deadline && + format(example.contract_terms.pay_deadline.t_s, "dd MM yyyy HH:mm:ss"); + example.contract_terms.wire_transfer_deadline_str = () => + example.contract_terms.wire_transfer_deadline && + format( + example.contract_terms.wire_transfer_deadline.t_s, + "dd MM yyyy HH:mm:ss", + ); + example.contract_terms.refund_deadline_str = () => + example.contract_terms.refund_deadline && + format(example.contract_terms.refund_deadline.t_s, "dd MM yyyy HH:mm:ss"); + example.contract_terms.auto_refund_str = () => + example.contract_terms.auto_refund && + formatDuration( + intervalToDuration({ + start: 0, + end: example.contract_terms.auto_refund.d_us, + }), + ); + + const output = mustache.render(html, example); + + fs.writeFileSync( + `${destDirectory}/${testName}.${exampleName}.html`, + output, + ); + }); +}); -- cgit v1.2.3