This library is part of the [CAST]() abstract syntax tree utilities. It provides a scriptable interface to help with creating cast trees.
npm install @larsbaalmans/castscriptscript to cast looks as follows:
ts
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:
`json
{
"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:
`ts
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): Root | Content {
// function body
}
function c(type: string, children: Node[]): Root | Content {
// function body
}
function c(type: string, text: string, properties: Record): Root | Content {
// function body
}
function c(type: string, text: string, children: Node[]): Root | Content {
// function body
}
function c(type: string, properties: Record, children: Node[]): Root | Content {
// function body
}
function c(type: string, text: string, properties: Record, 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.