mirror of
https://github.com/actions/setup-dotnet.git
synced 2024-11-30 07:13:04 +07:00
64 lines
1.8 KiB
JavaScript
64 lines
1.8 KiB
JavaScript
|
'use strict';
|
||
|
|
||
|
const util = require('./util');
|
||
|
const buildOptions = require('./util').buildOptions;
|
||
|
const x2j = require('./xmlstr2xmlnode');
|
||
|
|
||
|
//TODO: do it later
|
||
|
const convertToJsonString = function(node, options) {
|
||
|
options = buildOptions(options, x2j.defaultOptions, x2j.props);
|
||
|
|
||
|
options.indentBy = options.indentBy || '';
|
||
|
return _cToJsonStr(node, options, 0);
|
||
|
};
|
||
|
|
||
|
const _cToJsonStr = function(node, options, level) {
|
||
|
let jObj = '{';
|
||
|
|
||
|
//traver through all the children
|
||
|
const keys = Object.keys(node.child);
|
||
|
|
||
|
for (let index = 0; index < keys.length; index++) {
|
||
|
var tagname = keys[index];
|
||
|
if (node.child[tagname] && node.child[tagname].length > 1) {
|
||
|
jObj += '"' + tagname + '" : [ ';
|
||
|
for (var tag in node.child[tagname]) {
|
||
|
jObj += _cToJsonStr(node.child[tagname][tag], options) + ' , ';
|
||
|
}
|
||
|
jObj = jObj.substr(0, jObj.length - 1) + ' ] '; //remove extra comma in last
|
||
|
} else {
|
||
|
jObj += '"' + tagname + '" : ' + _cToJsonStr(node.child[tagname][0], options) + ' ,';
|
||
|
}
|
||
|
}
|
||
|
util.merge(jObj, node.attrsMap);
|
||
|
//add attrsMap as new children
|
||
|
if (util.isEmptyObject(jObj)) {
|
||
|
return util.isExist(node.val) ? node.val : '';
|
||
|
} else {
|
||
|
if (util.isExist(node.val)) {
|
||
|
if (!(typeof node.val === 'string' && (node.val === '' || node.val === options.cdataPositionChar))) {
|
||
|
jObj += '"' + options.textNodeName + '" : ' + stringval(node.val);
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
//add value
|
||
|
if (jObj[jObj.length - 1] === ',') {
|
||
|
jObj = jObj.substr(0, jObj.length - 2);
|
||
|
}
|
||
|
return jObj + '}';
|
||
|
};
|
||
|
|
||
|
function stringval(v) {
|
||
|
if (v === true || v === false || !isNaN(v)) {
|
||
|
return v;
|
||
|
} else {
|
||
|
return '"' + v + '"';
|
||
|
}
|
||
|
}
|
||
|
|
||
|
function indentate(options, level) {
|
||
|
return options.indentBy.repeat(level);
|
||
|
}
|
||
|
|
||
|
exports.convertToJsonString = convertToJsonString;
|