UNPKG

saven

Version:
53 lines (49 loc) 1.6 kB
const t = require('babel-types') function convertObjectToAstExpression (obj) { const objArr = Object.keys(obj).map(key => { const value = obj[key] if (typeof value === 'string') { return t.objectProperty(t.stringLiteral(key), t.stringLiteral(value)) } if (typeof value === 'number') { return t.objectProperty(t.stringLiteral(key), t.numericLiteral(value)) } if (typeof value === 'boolean') { return t.objectProperty(t.stringLiteral(key), t.booleanLiteral(value)) } if (Array.isArray(value)) { return t.objectProperty(t.stringLiteral(key), t.arrayExpression(convertArrayToAstExpression(value))) } if (value == null) { return t.objectProperty(t.stringLiteral(key), t.nullLiteral()) } if (typeof value === 'object') { return t.objectProperty(t.stringLiteral(key), t.objectExpression(convertObjectToAstExpression(value))) } }) return objArr } function convertArrayToAstExpression (arr) { return arr.map(value => { if (typeof value === 'string') { return t.stringLiteral(value) } if (typeof value === 'number') { return t.numericLiteral(value) } if (typeof value === 'boolean') { return t.booleanLiteral(value) } if (Array.isArray(value)) { return convertArrayToAstExpression(value) } if (value == null) { return t.nullLiteral() } if (typeof value === 'object') { return t.objectExpression(convertObjectToAstExpression(value)) } }) } exports.obj = convertObjectToAstExpression exports.array = convertArrayToAstExpression