libamf
Version:
Action Message Format library for node.js
50 lines (39 loc) • 986 B
JavaScript
;
const {parse, j2xParser} = require('fast-xml-parser');
const options = {
ignoreAttributes: false,
attributeNamePrefix: '@'
};
const XMLParser = new j2xParser(options);
// TODO: XML Builder?
class XML {
constructor(data = {}, legacy = false) {
this.data = data;
this.legacy = legacy;
}
stringify() {
return XMLParser.parse(this.data);
}
}
function format(obj) {
for (var i in obj) {
const val = obj[i];
if (typeof val === 'object') {
format(val);
} else {
if (!isNaN(val) && val !== null) {
obj[i] = Number(val);
}
}
}
}
XML.ParseNumbers = false;
XML.parse = function(...data) {
const opts = typeof data[data.length - 1] !== 'object' ? options : data.pop();
const res = new XML(parse(data.shift(), opts), ...data);
if(XML.ParseNumbers) {
format(res.data);
}
return res;
};
module.exports = XML;