Skip to content

Commit

Permalink
Lint xmlToJson function
Browse files Browse the repository at this point in the history
- Note: 2 lines have igonered lint rules: 146 and 148
  • Loading branch information
abmusse committed Jan 28, 2019
1 parent 35a2ffb commit 17ef86f
Showing 1 changed file with 112 additions and 53 deletions.
165 changes: 112 additions & 53 deletions lib/utils.js
Original file line number Diff line number Diff line change
Expand Up @@ -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;
};
Expand Down

0 comments on commit 17ef86f

Please sign in to comment.