lamed_learn
Version:
Learning through code templates
82 lines (75 loc) • 2.75 kB
JavaScript
// console.log("Starting helper_parameter.js...");
// helper_parameter.js
// Purpose: The purpose of this....
// Date Created: 6/2/2018
// Created by : Perez Lamed van Niekerk
// ------------------------------------------------------
/* jshint esversion: 6 */
const _test = require('lamed_test')
const { Ok, notOk, notOk_Then, Equal, notEqual, con, testAND } = _test // eslint-disable-line
// con.traceSet(0)
// const _io = require('./helper_io')
// const _lio = require('lamed_io')
const _app = require('lamed_consoleapp')
// const _ = require('lodash') // npm install lodash --save
const _filter = require('lodash.filter')
const _uniq = require('lodash.uniq')
function parametersParse (code) {
let parms = []
if (code.includes('$')) {
parms = code.split('$')
parms[0] = '' // remove first part of the template
// con.log(parms);
/* filter out false positives */
parms = _filter(parms, (item) => {
/* If these chars is in the parameter -> filter it out */
var error = item.includesAny(' ', '{', ';', '/', ':', '.', '\r\n')
if (error === false && item.length <= 1) error = true
if (error === false) return item
})
// con.log({parms});
parms = _uniq(parms)
// if (Array.isArray(parms) === false) parms = []
if (parms.length > 2) parms = []
// {
// throw new Error('Max of two parameters supported! [' + parms + ']')
// }
}
return parms
}
/* Parse the template, remove $END$ and identify parameters */
function parametersGet (code) {
return new Promise((resolve, reject) => {
const parms = parametersParse(code)
if (parms.length === 0) {
/* There is no parameters */
resolve('')
} else {
/* Get parameter input from the user */
con.logBold(`\n${code}\n`)
/* readLine() */
const QA = parms.replaceAll('_', ' ')
// _io.IO().readLine(`Please enter '${QA[0]}':`)
_app.readLine(`Please enter '${QA[0]}':`)
.then((result) => {
if (parms.length === 2) {
/* readLine() */
// _io.IO().readLine(`Please enter '${QA[1]}':`)
_app.readLine(`Please enter '${QA[1]}':`)
.then((result2) => {
resolve({
parameter1: parms[0],
keyword1: result,
parameter2: parms[1],
keyword2: result2
})
}).catch(() => resolve(''))
} else {
resolve({ parameter1: parms[0], keyword1: result })
}
}).catch(() => resolve(''))
}
})
}
// Exports --------------------------
module.exports = { parametersParse, parametersGet }