1.0.3 • Published 6 months ago

@getplate/castscript v1.0.3

Weekly downloads
-
License
UNLICENSED
Repository
bitbucket
Last release
6 months ago

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 '@getplate/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.