|
import each from 'licia/each' |
|
import isStr from 'licia/isStr' |
|
import isShadowRoot from 'licia/isShadowRoot' |
|
import { classPrefix as c } from '../lib/util' |
|
|
|
export function formatNodeName(node, { noAttr = false } = {}) { |
|
if (node.nodeType === Node.TEXT_NODE) { |
|
return `<span class="${c('tag-name-color')}">(text)</span>` |
|
} else if (node.nodeType === Node.COMMENT_NODE) { |
|
return `<span class="${c('tag-name-color')}"><!--></span>` |
|
} else if (isShadowRoot(node)) { |
|
return `<span class="${c('tag-name-color')}">#shadow-root</span>` |
|
} |
|
|
|
const { id, className, attributes } = node |
|
|
|
let ret = `<span class="eruda-tag-name-color">${node.tagName.toLowerCase()}</span>` |
|
|
|
if (id !== '') ret += `<span class="eruda-function-color">#${id}</span>` |
|
|
|
if (isStr(className)) { |
|
let classes = '' |
|
each(className.split(/\s+/g), (val) => { |
|
if (val.trim() === '') return |
|
classes += `.${val}` |
|
}) |
|
ret += `<span class="eruda-attribute-name-color">${classes}</span>` |
|
} |
|
|
|
if (!noAttr) { |
|
each(attributes, (attr) => { |
|
const name = attr.name |
|
if (name === 'id' || name === 'class' || name === 'style') return |
|
ret += ` <span class="eruda-attribute-name-color">${name}</span><span class="eruda-operator-color">="</span><span class="eruda-string-color">${attr.value}</span><span class="eruda-operator-color">"</span>` |
|
}) |
|
} |
|
|
|
return ret |
|
} |
|
|