代码拉取完成,页面将自动刷新
同步操作将从 fisher/logsets 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
'use strict';
import stringifyObject from './stringify.js';
import deepmerge from "deepmerge"
import ansicolor from 'ansicolor'
import { isClass,isPlainObject,isAsyncFunction,getDataType, isRegexp,firstUpper } from './utils.js';
import { DefaultOptions } from './consts.js';
Object.assign(ansicolor.rgb,{
bgDarkGray: [13,213,33]
})
/**
'foreground colors'
.red.green.yellow.blue.magenta.cyan.white.darkGray.black
'light foreground colors'
.lightRed.lightGreen.lightYellow.lightBlue.lightMagenta.lightCyan.lightGray
'background colors'
.bgRed.bgGreen.bgYellow.bgBlue.bgMagenta.bgCyan.bgWhite.bgDarkGray.bgBlack
'light background colors'
.bgLightRed.bgLightGreen.bgLightYellow.bgLightBlue.bgLightMagenta.bgLightCyan.bgLightGray
'styles'
.bright.dim.italic.underline.inverse // your platform should support italic
*/
/**
* 根据red,green,yellow形式的描述字符串返回ansicolor着色函数
*
* 支持允许多种颜色混合使用
*
* getColorizeFunction("dim,red") === dim(red(...))
*
* @param {*} style
* @returns
*/
export function getColorizeFunction(style){
let func
if(isPlainObject(style)) style = style.style || ""
try{
let styles = style.split(",")
for(let i=0;i<styles.length;i++){
if(styles[i] in ansicolor){
if(func){
func = func[styles[i]]
}else{
func = ansicolor[styles[i]]
}
}
}
}catch(e){
return ansicolor.dim
}
return func || ansicolor.dim
}
function colorizeBaseType(value,opts){
let options = opts
if(!options) return value
if(typeof(options)==="string"){
options = {style:options,format:null}
}
const valueType = getDataType(value);
// 内容格式化
if(options.format){
const formatter =(v)=> typeof(options.format) === "function" ? options.format(v) :
(typeof(options.format) === "string" ? options.format.params(v) : v)
value = formatter(value)
}
const colorize = getColorizeFunction(options.style)
return colorize(value)
}
/**
* 返回着色后的字符串
* @param {*} obj
* @param {*} opts
* @returns
*/
export default function colorize(obj, opts={}) {
let options = deepmerge(DefaultOptions,opts)
const objType = getDataType(obj);
if((objType in options) && options[objType] && !isPlainObject(obj) && !Array.isArray(obj)){
return colorizeBaseType(obj,options[objType])
}
return stringifyObject(obj, {
...options,
transform: (obj, key, originalResult) => { // 获取值类型
if(obj == null){
const valueType = getDataType(originalResult);
return colorizeBaseType(originalResult,options[objType])
}else{
const value = obj[key];
const valueType = getDataType(value);
if((valueType in options) && options[valueType] && !isPlainObject(value) && !Array.isArray(value)){
try{
return colorizeBaseType(originalResult,options[valueType])
}catch{
return originalResult;
}
}
return originalResult;
}
},
});
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。