|
|
|
/**
|
|
|
|
* 把对象按照 js配置文件的格式进行格式化
|
|
|
|
* @param obj 格式化的对象
|
|
|
|
* @param dep 层级,此项无需传值
|
|
|
|
* @returns {string}
|
|
|
|
*/
|
|
|
|
function formatConfig(obj, dep) {
|
|
|
|
dep = dep || 1
|
|
|
|
const LN = '\n', TAB = ' '
|
|
|
|
let indent = ''
|
|
|
|
for (let i = 0; i < dep; i++) {
|
|
|
|
indent += TAB
|
|
|
|
}
|
|
|
|
let isArray = false, arrayLastIsObj = false
|
|
|
|
let str = '', prefix = '{', subfix = '}'
|
|
|
|
if (Array.isArray(obj)) {
|
|
|
|
isArray = true
|
|
|
|
prefix = '['
|
|
|
|
subfix = ']'
|
|
|
|
str = obj.map((item, index) => {
|
|
|
|
let format = ''
|
|
|
|
if (typeof item == 'function') {
|
|
|
|
//
|
|
|
|
} else if (typeof item == 'object') {
|
|
|
|
arrayLastIsObj = true
|
|
|
|
format = `${LN}${indent}${formatConfig(item,dep + 1)},`
|
|
|
|
} else if ((typeof item == 'number' && !isNaN(item)) || typeof item == 'boolean') {
|
|
|
|
format = `${item},`
|
|
|
|
} else if (typeof item == 'string') {
|
|
|
|
format = `'${item}',`
|
|
|
|
}
|
|
|
|
if (index == obj.length - 1) {
|
|
|
|
format = format.substring(0, format.length - 1)
|
|
|
|
} else {
|
|
|
|
arrayLastIsObj = false
|
|
|
|
}
|
|
|
|
return format
|
|
|
|
}).join('')
|
|
|
|
} else if (typeof obj != 'function' && typeof obj == 'object') {
|
|
|
|
str = Object.keys(obj).map((key, index, keys) => {
|
|
|
|
const val = obj[key]
|
|
|
|
let format = ''
|
|
|
|
if (typeof val == 'function') {
|
|
|
|
//
|
|
|
|
} else if (typeof val == 'object') {
|
|
|
|
format = `${LN}${indent}${key}: ${formatConfig(val,dep + 1)},`
|
|
|
|
} else if ((typeof val == 'number' && !isNaN(val)) || typeof val == 'boolean') {
|
|
|
|
format = `${LN}${indent}${key}: ${val},`
|
|
|
|
} else if (typeof val == 'string') {
|
|
|
|
format = `${LN}${indent}${key}: '${val}',`
|
|
|
|
}
|
|
|
|
if (index == keys.length - 1) {
|
|
|
|
format = format.substring(0, format.length - 1)
|
|
|
|
}
|
|
|
|
return format
|
|
|
|
}).join('')
|
|
|
|
}
|
|
|
|
const len = TAB.length
|
|
|
|
if (indent.length >= len) {
|
|
|
|
indent = indent.substring(0, indent.length - len)
|
|
|
|
}
|
|
|
|
if (!isArray || arrayLastIsObj) {
|
|
|
|
subfix = LN + indent +subfix
|
|
|
|
}
|
|
|
|
return`${prefix}${str}${subfix}`
|
|
|
|
}
|
|
|
|
|
|
|
|
module.exports = {formatConfig}
|