Files
Vlad Durnea cffdf8af86
Some checks failed
CI/CD Pipeline / unit-tests (push) Failing after 1m16s
CI/CD Pipeline / integration-tests (push) Failing after 2m32s
CI/CD Pipeline / lint (push) Successful in 5m22s
CI/CD Pipeline / e2e-tests (push) Has been skipped
CI/CD Pipeline / build (push) Has been skipped
wip:milestone 0 fixes
2026-03-15 12:35:42 +02:00

41 lines
1.4 KiB
JavaScript

import { truncator, inspectList } from './helpers'
export function inspectAttribute([key, value], options) {
options.truncate -= 3
if (!value) {
return `${options.stylize(key, 'yellow')}`
}
return `${options.stylize(key, 'yellow')}=${options.stylize(`"${value}"`, 'string')}`
}
export function inspectHTMLCollection(collection, options) {
// eslint-disable-next-line no-use-before-define
return inspectList(collection, options, inspectHTML, '\n')
}
export default function inspectHTML(element, options) {
const properties = element.getAttributeNames()
const name = element.tagName.toLowerCase()
const head = options.stylize(`<${name}`, 'special')
const headClose = options.stylize(`>`, 'special')
const tail = options.stylize(`</${name}>`, 'special')
options.truncate -= name.length * 2 + 5
let propertyContents = ''
if (properties.length > 0) {
propertyContents += ' '
propertyContents += inspectList(
properties.map(key => [key, element.getAttribute(key)]),
options,
inspectAttribute,
' '
)
}
options.truncate -= propertyContents.length
const truncate = options.truncate
let children = inspectHTMLCollection(element.children, options)
if (children && children.length > truncate) {
children = `${truncator}(${element.children.length})`
}
return `${head}${propertyContents}${headClose}${children}${tail}`
}