Comparing version 1.1.3 to 1.2.0
@@ -1,1 +0,1 @@ | ||
!function(e,t){if("function"==typeof define&&define.amd)define(["exports"],t);else if("undefined"!=typeof exports)t(exports);else{var n={exports:{}};t(n.exports),e.jstoxml=n.exports}}(this,function(e){"use strict";function t(e){if(Array.isArray(e)){for(var t=0,n=Array(e.length);t<e.length;t++)n[t]=e[t];return n}return Array.from(e)}Object.defineProperty(e,"__esModule",{value:!0});var n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},r=["_selfCloseTag","_attrs"],o=r.join("|"),a=new RegExp(o,"g"),i=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;return e.repeat(t)},c=function(e){return Array.isArray(e)?"array":"object"===(void 0===e?"undefined":n(e))&&null!==e&&e._name?"special-object":e instanceof Date?"date":null===e?"null":void 0===e?"undefined":n(e)},s=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n="("+Object.keys(t).join("|")+")",r=new RegExp(n,"g");return String(e).replace(r,function(e,n){return t[n]||""})},u=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=arguments[1];return Array.isArray(e)?e.map(function(e){var n=Object.keys(e)[0],r=e[n],o=t?s(r,t):r;return""+n+(!0===o?"":'="'+o+'"')}):Object.keys(e).map(function(n){var r=t?s(e[n],t):e[n];return""+n+(!0===e[n]?"":'="'+r+'"')})},f=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=arguments[1],n=u(e,t);return 0===n.length?"":" "+n.join(" ")},l=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return Object.keys(e).map(function(t){return{_name:t,_content:e[t]}})},d=function(e){var t=c(e);return"string"===t||"number"===t||"boolean"===t||"date"===t||"special-object"===t},b=function(e){return!e.match("<")},v=function(e,t,n){var r="";return e.header&&n&&(r="boolean"==typeof e.header?'<?xml version="1.0" encoding="UTF-8"?>':e.header,e.indent&&(r+="\n")),r};e.toXML=function e(){var n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},o=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},u=o.depth?o.depth:0,y=i(o.indent,u),p=c(n),g=d(n),m=0===u&&(g||!g&&o._isFirstItem),h="";switch(p){case"special-object":var _=n._name,j=n._content;if(null===j){h=_;break}if(_.match(a))break;var k=Object.assign({},o,{depth:u+1}),O=e(j,k),x=c(O),A=b(O),S=""+(o.indent&&!m?"\n":"")+y,F="undefined"===x||""===O,I="boolean"==typeof n._selfCloseTag?F&&n._selfCloseTag:F,T=I?"/":"",w="<"+_+f(n._attrs,o.attributesFilter)+T+">",C=o.indent&&!A?"\n"+y:"";h=""+S+w+(I?"":""+O+C+"</"+_+">");break;case"object":var E=Object.keys(n);h=E.map(function(a,i){var s=Object.assign({},o,{_isFirstItem:0===i,_isLastItem:i+1===E.length}),u={_name:a};if("object"===c(n[a])&&(r.forEach(function(e){var t=n[a][e];void 0!==t&&(u[e]=t,delete n[a][e])}),void 0!==n[a]._content&&Object.keys(n[a]).length>1)){var f=Object.assign({},n[a]);delete f._content,u._content=[].concat(t(l(f)),[n[a]._content])}return void 0===u._content&&(u._content=n[a]),e(u,s)},o).join("");break;case"function":var L=n(o);h=e(L,o);break;case"array":h=n.map(function(t,r){var a=Object.assign({},o,{_isFirstItem:0===r,_isLastItem:r+1===n.length});return e(t,a)}).join("");break;case"number":case"string":case"boolean":case"date":case"null":default:h=s(n,o.filter)}return h=""+v(o,0,m)+h}}); | ||
!function(e,t){if("function"==typeof define&&define.amd)define(["exports"],t);else if("undefined"!=typeof exports)t(exports);else{var n={exports:{}};t(n.exports),e.jstoxml=n.exports}}(this,function(e){"use strict";function t(e){if(Array.isArray(e)){for(var t=0,n=Array(e.length);t<e.length;t++)n[t]=e[t];return n}return Array.from(e)}Object.defineProperty(e,"__esModule",{value:!0});var n=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},o=["_selfCloseTag","_attrs"],i=o.join("|"),a=new RegExp(i,"g"),c=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;return e.repeat(t)},u=function(e){return Array.isArray(e)&&"array"||"object"===(void 0===e?"undefined":r(e))&&null!==e&&e._name&&"special-object"||e instanceof Date&&"date"||null===e&&"null"||(void 0===e?"undefined":r(e))},s=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=new RegExp("("+Object.keys(t).join("|")+")","g");return String(e).replace(n,function(e,n){return t[n]||""})},f=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=arguments[1];return Array.isArray(e)?e.map(function(e){var n=Object.keys(e)[0],r=e[n],o=t?s(r,t):r;return""+n+(!0===o?"":'="'+o+'"')}):Object.keys(e).map(function(n){var r=t?s(e[n],t):e[n];return""+n+(!0===e[n]?"":'="'+r+'"')})},l=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=arguments[1],n=f(e,t);return 0===n.length?"":" "+n.join(" ")},d=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return Object.keys(e).map(function(t){return{_name:t,_content:e[t]}})},v=["string","number","boolean","date","special-object"],p=function(e){return v.includes(u(e))},y=function(e){return!e.match("<")},b=function(e){var t=e.header,n=e.indent,r=(e.depth,e.isOutputStart),o="";return t&&r&&(o="boolean"==typeof t?'<?xml version="1.0" encoding="UTF-8"?>':t,n&&(o+="\n")),o};e.toXML=function e(){var r=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},f=i.depth,v=void 0===f?0:f,h=i.indent,m=i._isFirstItem,g=(i._isLastItem,i.attributesFilter),_=i.header,j=i.filter,O=c(h,v),k=u(r),x=p(r),A=0===v&&(x||!x&&m),S="";switch(k){case"special-object":var I=r._name,F=r._content;if(null===F){S=I;break}if(I.match(a))break;var w=e(F,n({},i,{depth:v+1})),L=u(w),T=y(w),C=""+(h&&!A?"\n":"")+O,E="undefined"===L||""===w,M="boolean"==typeof r._selfCloseTag?E&&r._selfCloseTag:E,P=M?"/":"",R="<"+I+l(r._attrs,g)+P+">",D=h&&!T?"\n"+O:"";S=""+C+R+(M?"":""+w+D+"</"+I+">");break;case"object":var U=Object.keys(r);S=U.map(function(a,c){var s=n({},i,{_isFirstItem:0===c,_isLastItem:c+1===U.length}),f={_name:a};if("object"===u(r[a])&&(o.forEach(function(e){var t=r[a][e];void 0!==t&&(f[e]=t,delete r[a][e])}),void 0!==r[a]._content&&Object.keys(r[a]).length>1)){var l=Object.assign({},r[a]);delete l._content,f._content=[].concat(t(d(l)),[r[a]._content])}return void 0===f._content&&(f._content=r[a]),e(f,s)},i).join("");break;case"function":var X=r(i);S=e(X,i);break;case"array":S=r.map(function(t,o){var a=n({},i,{_isFirstItem:0===o,_isLastItem:o+1===r.length});return e(t,a)}).join("");break;default:S=s(r,j)}return""+b({header:_,indent:h,depth:v,isOutputStart:A})+S}}); |
@@ -32,2 +32,16 @@ (function (global, factory) { | ||
var _extends = Object.assign || function (target) { | ||
for (var i = 1; i < arguments.length; i++) { | ||
var source = arguments[i]; | ||
for (var key in source) { | ||
if (Object.prototype.hasOwnProperty.call(source, key)) { | ||
target[key] = source[key]; | ||
} | ||
} | ||
} | ||
return target; | ||
}; | ||
var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { | ||
@@ -47,5 +61,5 @@ return typeof obj; | ||
var getIndentStr = function getIndentStr() { | ||
var baseIndentStr = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : ''; | ||
var indent = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : ''; | ||
var depth = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0; | ||
return baseIndentStr.repeat(depth); | ||
return indent.repeat(depth); | ||
}; | ||
@@ -58,16 +72,3 @@ | ||
var getType = function getType(val) { | ||
var type = void 0; | ||
if (Array.isArray(val)) { | ||
type = 'array'; | ||
} else if ((typeof val === 'undefined' ? 'undefined' : _typeof(val)) === 'object' && val !== null && val._name) { | ||
type = 'special-object'; | ||
} else if (val instanceof Date) { | ||
type = 'date'; | ||
} else if (val === null) { | ||
type = 'null'; | ||
} else { | ||
type = typeof val === 'undefined' ? 'undefined' : _typeof(val); | ||
} | ||
return type; | ||
return Array.isArray(val) && 'array' || (typeof val === 'undefined' ? 'undefined' : _typeof(val)) === 'object' && val !== null && val._name && 'special-object' || val instanceof Date && 'date' || val === null && 'null' || (typeof val === 'undefined' ? 'undefined' : _typeof(val)); | ||
}; | ||
@@ -84,6 +85,3 @@ | ||
var searches = Object.keys(filter); | ||
var joinedSearches = searches.join('|'); | ||
var regexpStr = '(' + joinedSearches + ')'; | ||
var regexp = new RegExp(regexpStr, 'g'); | ||
var regexp = new RegExp('(' + Object.keys(filter).join('|') + ')', 'g'); | ||
@@ -99,3 +97,3 @@ return String(inputStr).replace(regexp, function (str, entity) { | ||
* { foo: 'bar', baz: 'g' } -> 'foo="bar" baz="g"' | ||
* [ { key: '⚡', val: true }, { foo: 'bar' } ] -> '⚡ foo="bar"' | ||
* [ { ⚡: true }, { foo: 'bar' } ] -> '⚡ foo="bar"' | ||
*/ | ||
@@ -136,3 +134,3 @@ var getAttributeKeyVals = function getAttributeKeyVals() { | ||
/** | ||
* Converts an attributes object to a string of keyval pairs. | ||
* Converts an attributes object/array to a string of keyval pairs. | ||
* Example: | ||
@@ -183,5 +181,5 @@ * formatAttributes({ a: 1, b: 2 }) | ||
*/ | ||
var SIMPLE_TYPES = ['string', 'number', 'boolean', 'date', 'special-object']; | ||
var isSimpleType = function isSimpleType(val) { | ||
var valType = getType(val); | ||
return valType === 'string' || valType === 'number' || valType === 'boolean' || valType === 'date' || valType === 'special-object'; | ||
return SIMPLE_TYPES.includes(getType(val)); | ||
}; | ||
@@ -199,11 +197,16 @@ | ||
*/ | ||
var defaultHeader = '<?xml version="1.0" encoding="UTF-8"?>'; | ||
var getHeaderString = function getHeaderString(config, depth, isOutputStart) { | ||
var DEFAULT_XML_HEADER = '<?xml version="1.0" encoding="UTF-8"?>'; | ||
var getHeaderString = function getHeaderString(_ref) { | ||
var header = _ref.header, | ||
indent = _ref.indent, | ||
depth = _ref.depth, | ||
isOutputStart = _ref.isOutputStart; | ||
var headerStr = ''; | ||
var shouldOutputHeader = config.header && isOutputStart; | ||
var shouldOutputHeader = header && isOutputStart; | ||
if (shouldOutputHeader) { | ||
var shouldUseDefaultHeader = typeof config.header === 'boolean'; | ||
headerStr = shouldUseDefaultHeader ? defaultHeader : config.header; | ||
var shouldUseDefaultHeader = typeof header === 'boolean'; | ||
headerStr = shouldUseDefaultHeader ? DEFAULT_XML_HEADER : header; | ||
if (config.indent) headerStr += '\n'; | ||
if (indent) headerStr += '\n'; | ||
} | ||
@@ -220,9 +223,15 @@ | ||
var config = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; | ||
var _config$depth = config.depth, | ||
depth = _config$depth === undefined ? 0 : _config$depth, | ||
indent = config.indent, | ||
_isFirstItem = config._isFirstItem, | ||
_isLastItem = config._isLastItem, | ||
attributesFilter = config.attributesFilter, | ||
header = config.header, | ||
filter = config.filter; | ||
// Determine tree depth. | ||
var depth = config.depth ? config.depth : 0; | ||
// Determine indent string based on depth. | ||
var indentStr = getIndentStr(config.indent, depth); | ||
var indentStr = getIndentStr(indent, depth); | ||
// For branching based on value type. | ||
@@ -233,3 +242,3 @@ var valType = getType(obj); | ||
// Determine if this is the start of the output. Needed for header and indenting. | ||
var isOutputStart = depth === 0 && (isSimple || !isSimple && config._isFirstItem); | ||
var isOutputStart = depth === 0 && (isSimple || !isSimple && _isFirstItem); | ||
@@ -255,5 +264,4 @@ var outputStr = ''; | ||
// Process the nested new value and config. | ||
var newConfig = Object.assign({}, config, { depth: depth + 1 }); | ||
var newVal = toXML(_content, newConfig); | ||
// Process the nested new value and create new config. | ||
var newVal = toXML(_content, _extends({}, config, { depth: depth + 1 })); | ||
var newValType = getType(newVal); | ||
@@ -263,3 +271,3 @@ var isNewValSimple = isSimpleXML(newVal); | ||
// Pre-tag output (indent and line breaks). | ||
var preIndentStr = config.indent && !isOutputStart ? '\n' : ''; | ||
var preIndentStr = indent && !isOutputStart ? '\n' : ''; | ||
var preTag = '' + preIndentStr + indentStr; | ||
@@ -271,7 +279,7 @@ | ||
var selfCloseStr = shouldSelfClose ? '/' : ''; | ||
var attributesString = formatAttributes(obj._attrs, config.attributesFilter); | ||
var attributesString = formatAttributes(obj._attrs, attributesFilter); | ||
var tag = '<' + _name + attributesString + selfCloseStr + '>'; | ||
// Post-tag output (closing tag, indent, line breaks). | ||
var preTagCloseStr = config.indent && !isNewValSimple ? '\n' + indentStr : ''; | ||
var preTagCloseStr = indent && !isNewValSimple ? '\n' + indentStr : ''; | ||
var postTag = !shouldSelfClose ? '' + newVal + preTagCloseStr + '</' + _name + '>' : ''; | ||
@@ -289,3 +297,3 @@ | ||
var outputArr = keys.map(function (key, index) { | ||
var newConfig = Object.assign({}, config, { | ||
var newConfig = _extends({}, config, { | ||
_isFirstItem: index === 0, | ||
@@ -350,3 +358,3 @@ _isLastItem: index + 1 === keys.length | ||
var _outputArr = obj.map(function (singleVal, index) { | ||
var newConfig = Object.assign({}, config, { | ||
var newConfig = _extends({}, config, { | ||
_isFirstItem: index === 0, | ||
@@ -362,10 +370,6 @@ _isLastItem: index + 1 === obj.length | ||
case 'number': | ||
case 'string': | ||
case 'boolean': | ||
case 'date': | ||
case 'null': | ||
// number, string, boolean, date, null, etc | ||
default: | ||
{ | ||
outputStr = filterStr(obj, config.filter); | ||
outputStr = filterStr(obj, filter); | ||
break; | ||
@@ -375,8 +379,6 @@ } | ||
var headerStr = getHeaderString(config, depth, isOutputStart); | ||
var headerStr = getHeaderString({ header: header, indent: indent, depth: depth, isOutputStart: isOutputStart }); | ||
outputStr = '' + headerStr + outputStr; | ||
return outputStr; | ||
return '' + headerStr + outputStr; | ||
}; | ||
}); |
108
jstoxml.js
@@ -8,3 +8,3 @@ const privateVars = ['_selfCloseTag', '_attrs']; | ||
*/ | ||
const getIndentStr = (baseIndentStr = '', depth = 0) => baseIndentStr.repeat(depth); | ||
const getIndentStr = (indent = '', depth = 0) => indent.repeat(depth); | ||
@@ -15,19 +15,9 @@ /** | ||
*/ | ||
const getType = val => { | ||
let type; | ||
if (Array.isArray(val)) { | ||
type = 'array'; | ||
} else if (typeof val === 'object' && val !== null && val._name) { | ||
type = 'special-object'; | ||
} else if (val instanceof Date) { | ||
type = 'date'; | ||
} else if (val === null) { | ||
type = 'null'; | ||
} else { | ||
type = typeof val; | ||
} | ||
const getType = val => | ||
Array.isArray(val) && 'array' || | ||
(typeof val === 'object' && val !== null && val._name && 'special-object') || | ||
(val instanceof Date && 'date') || | ||
val === null && 'null' || | ||
typeof val; | ||
return type; | ||
}; | ||
/** | ||
@@ -39,6 +29,3 @@ * Replaces matching values in a string with a new value. | ||
const filterStr = (inputStr = '', filter = {}) => { | ||
const searches = Object.keys(filter); | ||
const joinedSearches = searches.join('|'); | ||
const regexpStr = `(${joinedSearches})`; | ||
const regexp = new RegExp(regexpStr, 'g'); | ||
const regexp = new RegExp(`(${ Object.keys(filter).join('|') })`, 'g'); | ||
@@ -52,3 +39,3 @@ return String(inputStr).replace(regexp, (str, entity) => filter[entity] || ''); | ||
* { foo: 'bar', baz: 'g' } -> 'foo="bar" baz="g"' | ||
* [ { key: '⚡', val: true }, { foo: 'bar' } ] -> '⚡ foo="bar"' | ||
* [ { ⚡: true }, { foo: 'bar' } ] -> '⚡ foo="bar"' | ||
*/ | ||
@@ -86,3 +73,3 @@ const getAttributeKeyVals = (attributes = {}, filter) => { | ||
/** | ||
* Converts an attributes object to a string of keyval pairs. | ||
* Converts an attributes object/array to a string of keyval pairs. | ||
* Example: | ||
@@ -125,7 +112,4 @@ * formatAttributes({ a: 1, b: 2 }) | ||
*/ | ||
const isSimpleType = val => { | ||
const valType = getType(val); | ||
return (valType === 'string' || valType === 'number' || valType === 'boolean' || | ||
valType === 'date' || valType === 'special-object'); | ||
}; | ||
const SIMPLE_TYPES = ['string', 'number', 'boolean', 'date', 'special-object']; | ||
const isSimpleType = val => SIMPLE_TYPES.includes(getType(val)); | ||
@@ -140,11 +124,11 @@ /** | ||
*/ | ||
const defaultHeader = '<?xml version="1.0" encoding="UTF-8"?>'; | ||
const getHeaderString = (config, depth, isOutputStart) => { | ||
const DEFAULT_XML_HEADER = '<?xml version="1.0" encoding="UTF-8"?>'; | ||
const getHeaderString = ({ header, indent, depth, isOutputStart }) => { | ||
let headerStr = ''; | ||
const shouldOutputHeader = config.header && isOutputStart; | ||
const shouldOutputHeader = header && isOutputStart; | ||
if (shouldOutputHeader) { | ||
const shouldUseDefaultHeader = typeof config.header === 'boolean'; | ||
headerStr = (shouldUseDefaultHeader) ? defaultHeader : config.header; | ||
const shouldUseDefaultHeader = typeof header === 'boolean'; | ||
headerStr = (shouldUseDefaultHeader) ? DEFAULT_XML_HEADER : header; | ||
if (config.indent) headerStr += '\n'; | ||
if (indent) headerStr += '\n'; | ||
} | ||
@@ -158,8 +142,19 @@ | ||
*/ | ||
export const toXML = (obj = {}, config = {}) => { | ||
// Determine tree depth. | ||
const depth = (config.depth) ? config.depth : 0; | ||
export const toXML = ( | ||
obj = {}, | ||
config = {} | ||
) => { | ||
const { | ||
// Tree depth | ||
depth = 0, | ||
indent, | ||
_isFirstItem, | ||
_isLastItem, | ||
attributesFilter, | ||
header, | ||
filter | ||
} = config; | ||
// Determine indent string based on depth. | ||
const indentStr = getIndentStr(config.indent, depth); | ||
const indentStr = getIndentStr(indent, depth); | ||
@@ -171,3 +166,3 @@ // For branching based on value type. | ||
// Determine if this is the start of the output. Needed for header and indenting. | ||
const isOutputStart = depth === 0 && (isSimple || (!isSimple && config._isFirstItem)); | ||
const isOutputStart = depth === 0 && (isSimple || (!isSimple && _isFirstItem)); | ||
@@ -190,5 +185,4 @@ let outputStr = ''; | ||
// Process the nested new value and config. | ||
const newConfig = Object.assign({}, config, { depth: depth + 1 }); | ||
const newVal = toXML(_content, newConfig); | ||
// Process the nested new value and create new config. | ||
const newVal = toXML(_content, { ...config, depth: depth + 1 }); | ||
const newValType = getType(newVal); | ||
@@ -198,3 +192,3 @@ const isNewValSimple = isSimpleXML(newVal); | ||
// Pre-tag output (indent and line breaks). | ||
const preIndentStr = (config.indent && !isOutputStart) ? '\n' : ''; | ||
const preIndentStr = (indent && !isOutputStart) ? '\n' : ''; | ||
const preTag = `${preIndentStr}${indentStr}`; | ||
@@ -208,7 +202,7 @@ | ||
const selfCloseStr = (shouldSelfClose) ? '/' : ''; | ||
const attributesString = formatAttributes(obj._attrs, config.attributesFilter); | ||
const attributesString = formatAttributes(obj._attrs, attributesFilter); | ||
const tag = `<${_name}${attributesString}${selfCloseStr}>`; | ||
// Post-tag output (closing tag, indent, line breaks). | ||
const preTagCloseStr = (config.indent && !isNewValSimple) ? `\n${indentStr}` : ''; | ||
const preTagCloseStr = (indent && !isNewValSimple) ? `\n${indentStr}` : ''; | ||
const postTag = (!shouldSelfClose) ? `${newVal}${preTagCloseStr}</${_name}>` : ''; | ||
@@ -225,6 +219,7 @@ | ||
const outputArr = keys.map((key, index) => { | ||
const newConfig = Object.assign({}, config, { | ||
const newConfig = { | ||
...config, | ||
_isFirstItem: index === 0, | ||
_isLastItem: ((index + 1) === keys.length) | ||
}); | ||
}; | ||
@@ -287,6 +282,7 @@ const outputObj = { _name: key }; | ||
const outputArr = obj.map((singleVal, index) => { | ||
const newConfig = Object.assign({}, config, { | ||
const newConfig = { | ||
...config, | ||
_isFirstItem: index === 0, | ||
_isLastItem: ((index + 1) === obj.length) | ||
}); | ||
}; | ||
return toXML(singleVal, newConfig); | ||
@@ -299,9 +295,5 @@ }); | ||
case 'number': | ||
case 'string': | ||
case 'boolean': | ||
case 'date': | ||
case 'null': | ||
// number, string, boolean, date, null, etc | ||
default: { | ||
outputStr = filterStr(obj, config.filter); | ||
outputStr = filterStr(obj, filter); | ||
break; | ||
@@ -311,7 +303,5 @@ } | ||
const headerStr = getHeaderString(config, depth, isOutputStart); | ||
const headerStr = getHeaderString({ header, indent, depth, isOutputStart }); | ||
outputStr = `${headerStr}${outputStr}`; | ||
return outputStr; | ||
return `${headerStr}${outputStr}`; | ||
}; |
{ | ||
"name": "jstoxml", | ||
"version": "1.1.3", | ||
"version": "1.2.0", | ||
"description": "Converts JavaScript/JSON to XML (for RSS, Podcasts, AMP, etc.)", | ||
@@ -22,3 +22,3 @@ "homepage": "http://github.com/davidcalhoun/jstoxml", | ||
"dist": "./dist.sh", | ||
"test": "./node_modules/mocha/bin/mocha test.js" | ||
"test": "rm -rf dist && ./dist.sh && ./node_modules/.bin/mocha test.js" | ||
}, | ||
@@ -30,2 +30,3 @@ "dependencies": {}, | ||
"babel-plugin-transform-es2015-modules-umd": "^6.24.1", | ||
"babel-plugin-transform-object-rest-spread": "^6.26.0", | ||
"babel-preset-es2015": "^6.24.1", | ||
@@ -32,0 +33,0 @@ "mocha": "^3.5.3", |
Sorry, the diff of this file is not supported yet
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
64126
7
1429