From d4845dc062b4b2954875778fec318229a6a5b32f Mon Sep 17 00:00:00 2001 From: rodrigorodriguez Date: Sun, 5 Feb 2023 14:41:33 -0300 Subject: [PATCH] new(basic.gblib): FILL keyword can now template images and AS IMAGE can convert a DOCX to a PNG. --- packages/admin.gbapp/dialogs/AdminDialog.ts | 42 ++++++----- .../services/KeywordsExpressions.ts | 70 +++++++++---------- 2 files changed, 60 insertions(+), 52 deletions(-) diff --git a/packages/admin.gbapp/dialogs/AdminDialog.ts b/packages/admin.gbapp/dialogs/AdminDialog.ts index 19aa3010..66761df1 100644 --- a/packages/admin.gbapp/dialogs/AdminDialog.ts +++ b/packages/admin.gbapp/dialogs/AdminDialog.ts @@ -312,21 +312,31 @@ export class AdminDialog extends IGBDialog { } await CollectionUtil.asyncForEach(packages, async packageName => { - let cmd1; - if (packageName.indexOf('.') !== -1) { - cmd1 = `deployPackage ${process.env.STORAGE_SITE} /${process.env.STORAGE_LIBRARY}/${botId}.gbai/${packageName}`; - } else { - cmd1 = `deployPackage ${packageName}`; - } - if ( - (await (deployer as any).getStoragePackageByName(min.instance.instanceId, packageName)) !== null && - !process.env.DONT_DOWNLOAD - ) { - const cmd2 = `undeployPackage ${packageName}`; - await GBAdminService.undeployPackageCommand(cmd2, min); - } - await GBAdminService.deployPackageCommand(min, cmd1, deployer); - await min.conversationalService.sendText(min, step, `Finished publishing ${packageName}.`); + let cmd1; + + if ( + packageName.indexOf('gbdialog') !== -1 || + packageName.indexOf('gbkb') !== -1 || + packageName.indexOf('gbot') !== -1 || + packageName.indexOf('gbtheme') !== -1 + ) { + packageName = `${min.botId}.${packageName}`; + } + + if (packageName.indexOf('.') !== -1) { + cmd1 = `deployPackage ${process.env.STORAGE_SITE} /${process.env.STORAGE_LIBRARY}/${botId}.gbai/${packageName}`; + } else { + cmd1 = `deployPackage ${packageName}`; + } + if ( + (await (deployer as any).getStoragePackageByName(min.instance.instanceId, packageName)) !== null && + !process.env.DONT_DOWNLOAD + ) { + const cmd2 = `undeployPackage ${packageName}`; + await GBAdminService.undeployPackageCommand(cmd2, min); + } + await GBAdminService.deployPackageCommand(min, cmd1, deployer); + await min.conversationalService.sendText(min, step, `Finished publishing ${packageName}.`); }); await min.conversationalService.sendText(min, step, Messages[locale].publish_success); if (!step.activeDialog.state.options.confirm) { @@ -357,7 +367,7 @@ export class AdminDialog extends IGBDialog { if (!result && min.instance.params) { const params = JSON.parse(min.instance.params); - if (params){ + if (params) { return list.includes(params['Can Publish']); } } diff --git a/packages/basic.gblib/services/KeywordsExpressions.ts b/packages/basic.gblib/services/KeywordsExpressions.ts index 4ea1cd51..26bf4f65 100644 --- a/packages/basic.gblib/services/KeywordsExpressions.ts +++ b/packages/basic.gblib/services/KeywordsExpressions.ts @@ -71,9 +71,7 @@ export class KeywordsExpressions { }; /** - * Returns the page object. - * - * @example OPEN "https://wikipedia.org" + * Returns the list of BASIC keyword and their JS match. */ public static getKeywords() { @@ -95,7 +93,7 @@ export class KeywordsExpressions { keywords[i++] = [/^\s*\'.*/gim, '']; keywords[i++] = [ - /^\s*(\w+)\s*\=\s*SELECT\s*(.*)/gim, + /^\s*((?:[a-z]+.?)(?:(?:\w+).)(?:\w+)*)\s*=\s*SELECT\s*(.*)/gim, ($0, $1, $2) => { let tableName = /\s*FROM\s*(\w+)/.exec($2)[1]; let sql = `SELECT ${$2}`.replace(tableName, '?'); @@ -159,91 +157,91 @@ export class KeywordsExpressions { ]; keywords[i++] = [ - /^\s*hear (\w+) as login/gim, + /^\s*hear (\w+) as\s*login/gim, ($0, $1) => { return `${$1} = await dk.getHear({pid: pid, kind:"login"})`; } ]; keywords[i++] = [ - /^\s*hear (\w+) as email/gim, + /^\s*hear (\w+) as\s*email/gim, ($0, $1) => { return `${$1} = await dk.getHear({pid: pid, kind:"email"})`; } ]; keywords[i++] = [ - /^\s*hear (\w+) as integer/gim, + /^\s*hear (\w+) as\s*integer/gim, ($0, $1) => { return `${$1} = await dk.getHear({pid: pid, kind:"integer"})`; } ]; keywords[i++] = [ - /^\s*hear (\w+) as file/gim, + /^\s*hear (\w+) as\s*file/gim, ($0, $1) => { return `${$1} = await dk.getHear({pid: pid, kind:"file"})`; } ]; keywords[i++] = [ - /^\s*hear (\w+) as boolean/gim, + /^\s*hear (\w+) as\s*boolean/gim, ($0, $1) => { return `${$1} = await dk.getHear({pid: pid, kind:"boolean"})`; } ]; keywords[i++] = [ - /^\s*hear (\w+) as name/gim, + /^\s*hear (\w+) as\s*name/gim, ($0, $1) => { return `${$1} = await dk.getHear({pid: pid, kind:"name"})`; } ]; keywords[i++] = [ - /^\s*hear (\w+) as date/gim, + /^\s*hear (\w+) as\s*date/gim, ($0, $1) => { return `${$1} = await dk.getHear({pid: pid, kind:"date"})`; } ]; keywords[i++] = [ - /^\s*hear (\w+) as hour/gim, + /^\s*hear (\w+) as\s*hour/gim, ($0, $1) => { return `${$1} = await dk.getHear({pid: pid, kind:"hour"})`; } ]; keywords[i++] = [ - /^\s*hear (\w+) as phone/gim, + /^\s*hear (\w+) as\s*phone/gim, ($0, $1) => { return `${$1} = await dk.getHear({pid: pid, kind:"phone"})`; } ]; keywords[i++] = [ - /^\s*hear (\w+) as money/gim, + /^\s*hear (\w+) as\s*money/gim, ($0, $1) => { return `${$1} = await dk.getHear({pid: pid, kind:"money")}`; } ]; keywords[i++] = [ - /^\s*hear (\w+) as language/gim, + /^\s*hear (\w+) as\s*language/gim, ($0, $1) => { return `${$1} = await dk.getHear({pid: pid, kind:"language")}`; } ]; keywords[i++] = [ - /^\s*hear (\w+) as zipcode/gim, + /^\s*hear (\w+) as\s*zipcode/gim, ($0, $1) => { return `${$1} = await dk.getHear({pid: pid, kind:"zipcode")}`; } ]; keywords[i++] = [ - /^\s*hear (\w+) as (.*)/gim, + /^\s*hear (\w+) as\s*(.*)/gim, ($0, $1, $2) => { return `${$1} = await dk.getHear({pid: pid, kind:"menu", args: [${$2}]})`; } @@ -257,14 +255,14 @@ export class KeywordsExpressions { ]; keywords[i++] = [ - /^\s*(\w+)\s*\=\s*find contact\s*(.*)/gim, + /^\s*((?:[a-z]+.?)(?:(?:\w+).)(?:\w+)*)\s*=\s*find contact\s*(.*)/gim, ($0, $1, $2, $3) => { return `${$1} = await dk.fndContact({pid: pid, ${$2}})`; } ]; keywords[i++] = [ - /^\s*(\w+)\s*=\s*find\s*(.*)\s*or talk\s*(.*)/gim, + /^\s*((?:[a-z]+.?)(?:(?:\w+).)(?:\w+)*)\s*=\s*find\s*(.*)\s*or talk\s*(.*)/gim, ($0, $1, $2, $3) => { return `${$1} = await sys.find({pid: pid, args:[${$2}])\n if (!${$1}) { @@ -283,7 +281,7 @@ export class KeywordsExpressions { ]; keywords[i++] = [ - /^\s*(\w+)\s*\=\s*find\s*(.*)/gim, + /^\s*((?:[a-z]+.?)(?:(?:\w+).)(?:\w+)*)\s*=\s*find\s*(.*)/gim, ($0, $1, $2, $3) => { return ` ${$1} = await sys.find({pid: pid, args: [${$2}]})`; @@ -291,7 +289,7 @@ export class KeywordsExpressions { ]; keywords[i++] = [ - /^\s*(\w+)\s*\=\s*create deal(\s*)(.*)/gim, + /^\s*((?:[a-z]+.?)(?:(?:\w+).)(?:\w+)*)\s*=\s*create deal(\s*)(.*)/gim, ($0, $1, $2, $3) => { const params = this.getParams($3, ['dealName', 'contact', 'company', 'amount']); @@ -300,21 +298,21 @@ export class KeywordsExpressions { ]; keywords[i++] = [ - /^\s*(\w+)\s*\=\s*active tasks/gim, + /^\s*((?:[a-z]+.?)(?:(?:\w+).)(?:\w+)*)\s*=\s*active tasks/gim, ($0, $1) => { return `${$1} = await dk.getActiveTasks({pid: pid})`; } ]; keywords[i++] = [ - /^\s*(\w+)\s*\=\s*append\s*(.*)/gim, + /^\s*((?:[a-z]+.?)(?:(?:\w+).)(?:\w+)*)\s*=\s*append\s*(.*)/gim, ($0, $1, $2, $3) => { return `${$1} = await sys.append({pid: pid, args:[${$2}]})`; } ]; keywords[i++] = [ - /^\s*(\w+)\s*\=\s*sort\s*(\w+)\s*by(.*)/gim, + /^\s*((?:[a-z]+.?)(?:(?:\w+).)(?:\w+)*)\s*=\s*sort\s*(\w+)\s*by(.*)/gim, ($0, $1, $2, $3) => { return `${$1} = await sys.sortBy({pid: pid, array: ${$2}, memberName: "${$3}"})`; } @@ -349,7 +347,7 @@ export class KeywordsExpressions { ]; keywords[i++] = [ - /^\s*(\w+)\s*\=\s*get\s*(.*)/gim, + /^\s*((?:[a-z]+.?)(?:(?:\w+).)(?:\w+)*)\s*=\s*get\s*(.*)/gim, ($0, $1, $2, $3) => { const count = ($2.match(/\,/g) || []).length; const values = $2.split(','); @@ -488,28 +486,28 @@ export class KeywordsExpressions { ]; keywords[i++] = [ - /^\s*(\w+)\s*\=\s*post\s*(.*),\s*(.*)/gim, + /^\s*((?:[a-z]+.?)(?:(?:\w+).)(?:\w+)*)\s*=\s*post\s*(.*),\s*(.*)/gim, ($0, $1, $2, $3) => { return `${$1} = await sys.postByHttp ({pid: pid, url:${$2}, data:${$3}, headers})`; } ]; keywords[i++] = [ - /^\s*(\w+)\s*\=\s*put\s*(.*),\s*(.*)/gim, + /^\s*((?:[a-z]+.?)(?:(?:\w+).)(?:\w+)*)\s*=\s*put\s*(.*),\s*(.*)/gim, ($0, $1, $2, $3) => { return `${$1} = await sys.putByHttp ({pid: pid, url:${$2}, data:${$3}, headers})`; } ]; keywords[i++] = [ - /^\s*(\w+)\s*\=\s*download\s*(.*),\s*(.*)/gim, + /^\s*((?:[a-z]+.?)(?:(?:\w+).)(?:\w+)*)\s*=\s*download\s*(.*),\s*(.*)/gim, ($0, $1, $2, $3) => { return `${$1} = await sys.download ({pid: pid, handle:page, selector: ${$2}, folder:${$3}})`; } ]; keywords[i++] = [ - /^\s*(\w+)\s*\=\s*CREATE FOLDER\s*(.*)/gim, + /^\s*((?:[a-z]+.?)(?:(?:\w+).)(?:\w+)*)\s*=\s*CREATE FOLDER\s*(.*)/gim, ($0, $1, $2) => { return `${$1} = await sys.createFolder ({pid: pid, name:${$2}})`; } @@ -665,7 +663,7 @@ export class KeywordsExpressions { ]; keywords[i++] = [ - /^\s*(\w+)\s*\=\s*chart(\s*)(.*)/gim, + /^\s*((?:[a-z]+.?)(?:(?:\w+).)(?:\w+)*)\s*=\s*chart(\s*)(.*)/gim, ($0, $1, $2, $3) => { const params = this.getParams($3, ['type', 'data', 'legends', 'transpose']); return `${$1} = await dk.chart ({pid: pid, ${params}})`; @@ -701,21 +699,21 @@ export class KeywordsExpressions { ]; keywords[i++] = [ - /^\s*(\w+)\s*\=\s*(.*)\s*as image/gim, + /^\s*((?:[a-z]+.?)(?:(?:\w+).)(?:\w+)*)\s*=\s*(.*)\s*as\s*image/gim, ($0, $1, $2) => { return `${$1} = await sys.asImage({pid: pid, data: ${$2}})`; } ]; keywords[i++] = [ - /^\s*(\w+)\s*\=\s*(.*)\s*as pdf/gim, + /^\s*((?:[a-z]+.?)(?:(?:\w+).)(?:\w+)*)\s*=\s*(.*)\s*as\s*pdf/gim, ($0, $1, $2) => { return `${$1} = await sys.asPdf({pid: pid, data: ${$2})`; } ]; keywords[i++] = [ - /^\s*(\w+)\s*\=\s*FILL\s*(.*)\s*WITH\s*(.*)/gim, + /^\s*((?:[a-z]+.?)(?:(?:\w+).)(?:\w+)*)\s*=\s*FILL\s*(.*)\s*WITH\s*(.*)/gim, ($0, $1, $2, $3) => { return `${$1} = await sys.fill({pid: pid, templateName: ${$2}, data: ${$3}})`; } @@ -742,7 +740,7 @@ export class KeywordsExpressions { } ]; keywords[i++] = [ - /^\s*(\w+)\s*\=\s*BLUR\s*(.*)/gim, + /^\s*((?:[a-z]+.?)(?:(?:\w+).)(?:\w+)*)\s*=\s*BLUR\s*(.*)/gim, ($0, $1, $2, $3) => { return ` ${$1} = await img.blur({pid: pid, args: [${$2}]})`; @@ -750,7 +748,7 @@ export class KeywordsExpressions { ]; keywords[i++] = [ - /^\s*(\w+)\s*\=\s*SHARPEN\s*(.*)/gim, + /^\s*((?:[a-z]+.?)(?:(?:\w+).)(?:\w+)*)\s*=\s*SHARPEN\s*(.*)/gim, ($0, $1, $2, $3) => { return ` ${$1} = await img.sharpen({pid: pid, args: [${$2}]})`; @@ -758,7 +756,7 @@ export class KeywordsExpressions { ]; keywords[i++] = [ - /^\s*(\w+)\s*\=\s*CARD\s*(.*)/gim, + /^\s*((?:[a-z]+.?)(?:(?:\w+).)(?:\w+)*)\s*=\s*CARD\s*(.*)/gim, ($0, $1, $2, $3) => { const params = this.getParams($1, ['doc', 'data']); return `