parent
b5d17cd63b
commit
40472b21dd
2 changed files with 89 additions and 1 deletions
@ -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} |
Loading…
Reference in new issue