feat: add the function of copying configuration code; 🌟

新增:复制配置项代码的功能;
This commit is contained in:
iczer
2020-07-09 21:24:55 +08:00
parent b5d17cd63b
commit 40472b21dd
2 changed files with 89 additions and 1 deletions

68
src/utils/formatter.js Normal file
View File

@@ -0,0 +1,68 @@
/**
* 把对象按照 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)) {
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)) {
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}