1.8.0 • Published 10 months ago

@unified-latex/unified-latex-util-html-like v1.8.0

Weekly downloads
-
License
MIT
Repository
github
Last release
10 months ago

unified-latex-util-html-like

What is this?

Functions to help with making html-like nodes in a unified-latex Abstract Syntax Tree (AST).

For example, <p>foo</p> can be stored as \html-tag:p{foo} in unified-latex. Because - and : are special characters, they cannot appear in a macro name, so there is no risk of name conflicts. These macros are created programmatically, so special characters can be inserted.

When should I use this?

If you are converting LaTeX to HTML, these functions may be used as an intermediate format.

Using with unified-latex-to-hast

unified-latex-to-hast first processes a document into html-like nodes and then converts the resulting document to HAST/HTML. Any html-like macros that are created will be transparently converted to HAST/HTML. For example, if you wanted to convert all \foo macros into <br /> tags, you could first preprocess your unified-latex AST and replace all occurrences of \foo with htmlLike({ tag: "br" }). When the AST is converted to HTML, the html-like macros will be rendered as <br /> tags.

Install

npm install @unified-latex/unified-latex-util-html-like

This package contains both esm and commonjs exports. To explicitly access the esm export, import the .js file. To explicitly access the commonjs export, import the .cjs file.

Functions

extractFromHtmlLike(macro)

Extract the contents/attributes/tag from an html-like macro.

function extractFromHtmlLike(macro: Ast.Macro): {
  tag: string;
  attributes: Record<string, string | number | boolean | object>;
  content: Ast.Node[];
};

Parameters

ParamType
macroAst.Macro

`htmlLike({ tag, content, attributes,

})`

Make an html-like node storing content. The node is a macro and content as well as any attributes can be extracted or further processed. Collisions are avoided with existing macros because all macros are prefixed with html-tag: or html-attribute:, which contain special characters that normal macros cannot have.

function htmlLike({
  tag,
  content,
  attributes,
}: {
  tag: string;
  content?: Ast.Node | Ast.Node[];
  attributes?: object;
}): Ast.Macro;

Parameters

ParamType
{ tag, content, attributes, }Omitted

isHtmlLike(node)

Determine whether the node is an html-like macro.

function isHtmlLike(node: any): boolean;

Parameters

ParamType
nodeany

isHtmlLikeAttribute(node)

Determine whether the node is an html-like macro for an attribute.

function isHtmlLikeAttribute(node: any): boolean;

Parameters

ParamType
nodeany

isHtmlLikeTag(node)

Determine whether the node is an html-like macro for a tag.

function isHtmlLikeTag(node: any): boolean;

Parameters

ParamType
nodeany