fix: regexp json view

This commit is contained in:
redhoodsu
2019-08-07 08:05:15 +08:00
parent b6e8ac79ee
commit ee23a39dfc
3 changed files with 57 additions and 24 deletions

View File

@@ -2,7 +2,6 @@ import {
evalCss,
$,
startWith,
isArr,
isObj,
uniqId,
upperFirst,
@@ -26,7 +25,11 @@ export default class JsonViewer {
evalCss(require('./json.scss'))
if (isObj(data) && isUndef(data.type) && isUndef(data.id)) {
data = JSON.parse(stringifyAll(data))
data = JSON.parse(
stringifyAll(data, {
ignore: [Object.prototype]
})
)
}
this._data = {
@@ -67,33 +70,24 @@ export default class JsonViewer {
return ret
}
createEl(key, val, keyType, firstLevel = false) {
let type = 'object'
let type = typeof val
let id
if (isArr(val)) type = 'array'
function wrapKey(key) {
if (firstLevel) return ''
if (isObj(val) && val.jsonSplitArr) return ''
let keyClass = 'eruda-key'
if (
keyType === 'unenumerable' ||
keyType === 'proto' ||
keyType === 'symbol'
) {
keyClass = 'eruda-key-lighter'
}
return `<span class="${keyClass}">${encode(key)}</span>: `
}
if (val === null) {
return `<li>${wrapKey(key)}<span class="eruda-null">null</span></li>`
} else if (val.type === 'Number' || isNum(val) || isBool(val)) {
return `<li>${wrapKey(key)}<span class="eruda-${typeof val}">${encode(
} else if (isNum(val) || isBool(val)) {
return `<li>${wrapKey(key)}<span class="eruda-${type}">${encode(
val
)}</span></li>`
}
if (val.type === 'RegExp') type = 'regexp'
if (val.type === 'Number') type = 'number'
if (val.type === 'Number' || val.type === 'RegExp') {
return `<li>${wrapKey(key)}<span class="eruda-${type}">${encode(
val.value
)}</span></li>`
} else if (val.type === 'Undefined' || val.type === 'Symbol') {
return `<li>${wrapKey(key)}<span class="eruda-special">${lowerCase(
val.type
@@ -124,6 +118,22 @@ export default class JsonViewer {
return obj + '</ul><span class="eruda-close"></span></li>'
}
function wrapKey(key) {
if (firstLevel) return ''
if (isObj(val) && val.jsonSplitArr) return ''
let keyClass = 'eruda-key'
if (
keyType === 'unenumerable' ||
keyType === 'proto' ||
keyType === 'symbol'
) {
keyClass = 'eruda-key-lighter'
}
return `<span class="${keyClass}">${encode(key)}</span>: `
}
return `<li>${wrapKey(key)}<span class="eruda-${typeof val}">"${encode(
val
)}"</span></li>`

View File

@@ -36,7 +36,8 @@
.null {
color: #0086b3;
}
.string {
.string,
.regexp {
color: #183691;
}
.number {