@larsbaalmans/castscript
v1.2.4
Published
This library is part of the [CAST]() abstract syntax tree utilities. It provides a scriptable interface to help with creating cast trees.
Downloads
441
Readme
castscript
This library is part of the CAST abstract syntax tree utilities. It provides a scriptable interface to help with creating cast trees.
Usage
Castscript provides an easy way to create cast trees using a scriptable interface.
Using the utility script
to cast
looks as follows:
import {c} from 'castscript'
const tree = c('root', [
// only using the type argument
c('paragraph', [
// using the type and text arguments
c('text', 'Hello, world!')
]),
// using the type, properties and children arguments
c('heading', { level: 1 }, [
c('bold', [
c('text', 'Hello, world!')
])
]),
//using the type, text, properties and children arguments
c('paragraph', 'Hello,', { class: 'text' }, [
c('text', 'world!')
])
])
yields:
{
"type": "root",
"children": [
{
"type": "paragraph",
"children": [
{ "type": "text", "value": "Hello, world!" }
]
},
{
"type": "heading",
"level": 1,
"children": [
{
"type": "bold",
"children": [
{ "type": "text", "value": "Hello, world!" }
]
}
]
},
{
"type": "paragraph",
"properties": { "class": "text" },
"children": [
{ "type": "text", "value": "Hello," },
{ "type": "text", "value": "world!" }
]
}
]
}
You can use the following arguments to create complex cast trees:
Required arguments
type
: The type of the node
Optional arguments, these can be used in different combinations
text
: The text value of the node.properties
: The properties of the node.children
: The children of the node.
Signature and overloads:
import {Root, Content} from 'cast'
function c(type: string): Root | Content {
// function body
}
function c(type: string, text: string): Root | Content {
// function body
}
function c(type: string, properties: Record<string, any>): Root | Content {
// function body
}
function c(type: string, children: Node[]): Root | Content {
// function body
}
function c(type: string, text: string, properties: Record<string, any>): Root | Content {
// function body
}
function c(type: string, text: string, children: Node[]): Root | Content {
// function body
}
function c(type: string, properties: Record<string, any>, children: Node[]): Root | Content {
// function body
}
function c(type: string, text: string, properties: Record<string, any>, children: Node[]): Root | Content {
// function body
}
Building
Run nx build castscript
to build the library.
Running unit tests
Run nx test castscript
to execute the unit tests via Vitest.