diff --git a/src/commands/interface-manager/DeadDocument.ts b/src/commands/interface-manager/DeadDocument.ts index 0c4bf00e..08a27f57 100644 --- a/src/commands/interface-manager/DeadDocument.ts +++ b/src/commands/interface-manager/DeadDocument.ts @@ -66,6 +66,7 @@ export enum NodeTag { Fragment = 'fragment', Details = 'details', Summary = 'summary', + Font = 'font', } /** diff --git a/src/commands/interface-manager/DeadDocumentHtml.ts b/src/commands/interface-manager/DeadDocumentHtml.ts index 5166b4aa..1b2e202a 100644 --- a/src/commands/interface-manager/DeadDocumentHtml.ts +++ b/src/commands/interface-manager/DeadDocumentHtml.ts @@ -4,9 +4,26 @@ */ import { htmlEscape } from "../../utils"; -import { FringeLeafRenderFunction, FringeType, LeafNode, NodeTag, SimpleFringeRenderer } from "./DeadDocument"; +import { DocumentNode, FringeLeafRenderFunction, FringeType, LeafNode, NodeTag, SimpleFringeRenderer, TagDynamicEnvironment } from "./DeadDocument"; import { blank, staticString, TransactionalOutputContext } from "./DeadDocumentMarkdown"; +function writeAttributableNode(tagName: string, _fringe: FringeType, node: DocumentNode, context: TransactionalOutputContext, _environment: TagDynamicEnvironment) { + context.output.writeString(`<${tagName}`); + if (node.attributeMap.size > 0) { + for (const [key, value] of node.attributeMap.entries()) { + context.output.writeString(` ${htmlEscape(key)}="${htmlEscape(value)}"`); + } + } + context.output.writeString('>') +} + +function attributableNode(tagName: string) { + return function(fringe: FringeType, node: DocumentNode, context: TransactionalOutputContext, environment: TagDynamicEnvironment) { + writeAttributableNode(tagName, fringe, node, context, environment); + } +} + + export const HTML_RENDERER = new SimpleFringeRenderer(); HTML_RENDERER.registerRenderer>( @@ -52,16 +69,11 @@ HTML_RENDERER.registerRenderer'), staticString('') ).registerInnerNode(NodeTag.Anchor, - function(_fringe, node, context, _environment) { - context.output.writeString(' 0) { - for (const [key, value] of node.attributeMap.entries()) { - context.output.writeString(` ${htmlEscape(key)}="${htmlEscape(value)}"`); - } - } - context.output.writeString('>') - }, + attributableNode('a'), staticString('') +).registerInnerNode(NodeTag.Font, + attributableNode('font'), + staticString('') ).registerInnerNode(NodeTag.Root, blank, blank diff --git a/src/commands/interface-manager/DeadDocumentMarkdown.ts b/src/commands/interface-manager/DeadDocumentMarkdown.ts index 0694c0dd..19651dba 100644 --- a/src/commands/interface-manager/DeadDocumentMarkdown.ts +++ b/src/commands/interface-manager/DeadDocumentMarkdown.ts @@ -142,4 +142,7 @@ MARKDOWN_RENDERER.registerRenderer'), staticString('') +).registerInnerNode(NodeTag.Font, + blank, + blank );