UNPKG

lamed_learn

Version:
82 lines (75 loc) 2.75 kB
// 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 }