diff --git a/lib/utils.js b/lib/utils.js index 26bbc15b..4e7da45a 100644 --- a/lib/utils.js +++ b/lib/utils.js @@ -47,109 +47,168 @@ const xmlToJson = (xml) => { const sqlData = xml.match(sqlRegG); const ResultArr = []; + + // parse cmd matches if (cmdData && cmdData.length > 0) { - // Object.keys(cmdData).forEach((key) => { - // iXml += iXmlAttrDefault(options[key].desc, options[key].value, I_XML_ATTR_VALUE_OPTIONAL); - // }); - for (i in cmdData) { + cmdData.forEach((cmd) => { const rs = { type: 'cmd' }; - const sucFlag = cmdData[i].match(successReg); + const sucFlag = cmd.match(successReg); + if (sucFlag && sucFlag.length > 0) { rs.success = true; - if (sucFlag.length > 1) { rs.cmd = sucFlag[1]; } + if (sucFlag.length > 1) { + [, rs.cmd] = sucFlag; + } } else { rs.success = false; - const errFlag = cmdData[i].match(errorReg); - if (errFlag && errFlag.length > 1) { rs.cmd = errFlag[1]; } - if (errFlag && errFlag.length > 2) { rs.error = errFlag[2]; } + const errFlag = cmd.match(errorReg); + if (errFlag && errFlag.length > 1) { + [, rs.cmd] = errFlag; + } + if (errFlag && errFlag.length > 2) { + [, , rs.error] = errFlag; + } } - const rowArray = cmdData[i].match(rtDataRegG); + const rowArray = cmd.match(rtDataRegG); + if (rowArray && rowArray.length > 0) { const arr = []; - for (j in rowArray) { - const eachRow = rowArray[j].match(rtDataReg); - if (eachRow && eachRow.length > 1) { arr.push({ name: eachRow[1], value: eachRow[2] ? eachRow[2] : '' }); } - } + + rowArray.forEach((row) => { + const eachRow = row.match(rtDataReg); + if (eachRow && eachRow.length > 1) { + arr.push({ name: eachRow[1], value: eachRow[2] ? eachRow[2] : '' }); + } + }); + rs.data = arr; } ResultArr.push(rs); - } + }); } + + // parse sh matches if (shData && shData.length > 0) { - for (i in shData) { + shData.forEach((sh) => { const rs = { type: 'sh' }; - const shOutput = shData[i].match(shReg); - if (shOutput && shOutput.length > 0) { rs.data = shOutput[1]; } + const shOutput = sh.match(shReg); + + if (shOutput && shOutput.length > 0) { + [, rs.data] = shOutput; + } ResultArr.push(rs); - } + }); } + + // parse qsh matches if (qshData && qshData.length > 0) { - for (i in qshData) { + qshData.forEach((qsh) => { const rs = { type: 'qsh' }; - const qshOutput = qshData[i].match(qshReg); - if (qshOutput && qshOutput.length > 0) { rs.data = qshOutput[1]; } + const qshOutput = qsh.match(qshReg); + if (qshOutput && qshOutput.length > 0) { + [, rs.data] = qshOutput; + } ResultArr.push(rs); - } + }); } + + // parse pgm matches if (pgmData && pgmData.length > 0) { - for (i in pgmData) { + pgmData.forEach((pgm) => { const rs = { type: 'pgm' }; - const sucFlag = pgmData[i].match(successReg); - if (sucFlag && sucFlag.length > 0) { rs.success = true; } else { rs.success = false; } - const pgmLib = pgmData[i].match(pgmReg); + const sucFlag = pgm.match(successReg); + + if (sucFlag && sucFlag.length > 0) { + rs.success = true; + } else { + rs.success = false; + } + + const pgmLib = pgm.match(pgmReg); + if (pgmLib && pgmLib.length > 2) { - rs.pgm = pgmLib[1]; - rs.lib = pgmLib[2]; + [, rs.pgm, rs.lib] = pgmLib; } - const paramData = pgmData[i].match(dataRegG); + + const paramData = pgm.match(dataRegG); + if (paramData && paramData.length > 0) { const arr = []; - for (j in paramData) { - const obj = {}; let attr; const - rx = / \b(.*?)\s*=\s*'([^']*)'/g; - const eachRow = paramData[j].match(dataReg); - if (eachRow && eachRow.length > 1) { obj.value = (eachRow[2] ? eachRow[2] : ''); } - while (attr = rx.exec(paramData[j])) { + paramData.forEach((param) => { + const obj = {}; + const rx = / \b(.*?)\s*=\s*'([^']*)'/g; + const eachRow = param.match(dataReg); + let attr; + + if (eachRow && eachRow.length > 1) { + obj.value = (eachRow[2] ? eachRow[2] : ''); + } + + // eslint-disable-next-line no-cond-assign + while (attr = rx.exec(param)) { + // eslint-disable-next-line prefer-destructuring obj[attr[1]] = attr[2]; } + arr.push(obj); - } + }); + rs.data = arr; } ResultArr.push(rs); - } + }); } + + // parse sql matches if (sqlData && sqlData.length > 0) { - for (i in sqlData) { + sqlData.forEach((sql) => { const rs = { type: 'sql' }; - const sucFlag = sqlData[i].match(successReg); + const sucFlag = sql.match(successReg); + if (sucFlag && sucFlag.length > 0) { rs.success = true; - if (sucFlag.length > 1) { rs.stmt = sucFlag[1]; } + if (sucFlag.length > 1) { + [, rs.stmt] = sucFlag; + } } else { rs.success = false; - const errFlag = sqlData[i].match(errorReg); - if (errFlag && errFlag.length > 1) { rs.stmt = errFlag[1]; } - if (errFlag && errFlag.length > 2) { rs.error = errFlag[2]; } + const errFlag = sql.match(errorReg); + + if (errFlag && errFlag.length > 1) { + [, rs.stmt] = errFlag; + } + if (errFlag && errFlag.length > 2) { + [, , rs.error] = errFlag; + } } - const sqlResult = sqlData[i].match(sqlResultG); + + const sqlResult = sql.match(sqlResultG); + if (sqlResult && sqlResult.length > 0) { const arr = []; - for (j in sqlResult) { - const eachRow = sqlResult[j].match(sqlRowG); + + sqlResult.forEach((result) => { + const eachRow = result.match(sqlRowG); + if (eachRow) { const theRow = []; - for (j in eachRow) { - const perField = eachRow[j].match(sqlRow); - if (perField && perField.length > 2) { theRow.push({ desc: perField[1], value: perField[2] }); } - } + + eachRow.forEach((row) => { + const perField = row.match(sqlRow); + + if (perField && perField.length > 2) { + theRow.push({ desc: perField[1], value: perField[2] }); + } + }); + arr.push(theRow); } - } + }); + rs.result = arr; } ResultArr.push(rs); - } + }); } return ResultArr; };