diff options
author | (quasar) nebula <qznebula@protonmail.com> | 2023-06-12 18:15:05 -0300 |
---|---|---|
committer | (quasar) nebula <qznebula@protonmail.com> | 2023-06-12 18:15:59 -0300 |
commit | ea15c99d9ffa7ca59e9a44cdcccc492cca5a4ac0 (patch) | |
tree | 5d62e2a75f71cafe5a6c59dd7b81e5c915f09328 | |
parent | 85b797fe83af8206d81286770551021bdc606cce (diff) |
html: inspect.custom() annotations for html classes
-rw-r--r-- | src/util/html.js | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/src/util/html.js b/src/util/html.js index b75820e8..f2456565 100644 --- a/src/util/html.js +++ b/src/util/html.js @@ -1,5 +1,7 @@ // Some really simple functions for formatting HTML content. +import {inspect} from 'util'; + import * as commonValidators from '../data/things/validators.js'; import {empty} from './sugar.js'; @@ -396,6 +398,22 @@ export class Tag { .filter(Boolean) .join(joiner); } + + [inspect.custom]() { + if (this.tagName) { + if (empty(this.content)) { + return `Tag <${this.tagName} />`; + } else { + return `Tag <${this.tagName}> (${this.content.length} items)`; + } + } else { + if (empty(this.content)) { + return `Tag (no name)`; + } else { + return `Tag (no name, ${this.content.length} items)`; + } + } + } } export class Attributes { @@ -781,6 +799,15 @@ export class Template { toString() { return this.content.toString(); } + + [inspect.custom]() { + const {annotation} = this.description; + if (annotation) { + return `Template "${annotation}"`; + } else { + return `Template (no annotation)`; + } + } } export function stationery(description) { @@ -801,4 +828,13 @@ export class Stationery { template() { return new Template(this.#templateDescription); } + + [inspect.custom]() { + const {annotation} = this.#templateDescription; + if (annotation) { + return `Stationery "${annotation}"`; + } else { + return `Stationery (no annotation)`; + } + } } |