1.1.1 • Published 1 year ago

@guyo13/langium-utils v1.1.1

Weekly downloads
-
License
Apache-2.0
Repository
github
Last release
1 year ago

@guyo13/langium-utils

License

Utilities for language development using Langium. This library provides helpful functions to enhance your Langium-based language development workflows.

Features

  • Validation Utilities: Simplify the implementation of custom property validators.
  • Flexible Error Reporting: Easily customize validation messages and severity levels.
  • Graph Traversal: Depth-first search traversal of a graph with node entry and exit hooks. More algorithms will be added in the future.

Installation

Install the package via npm:

npm install @guyo13/langium-utils

Or using pnpm:

pnpm add @guyo13/langium-utils

Usage

uniquePropertyValidator

This utility helps ensure that a specific property within a list of AstNodes has all unique values. It accepts custom error formatting and severity levels.

Parameters:

  • nodes: An array of AstNodes to validate.
  • propertyName: The property name to check for uniqueness.
  • accept: A ValidationAcceptor for reporting validation errors.
  • formatter: A user defined function to format error messages.
  • severity (optional): Severity of the validation message ('error' | 'warning' | 'info' | 'hint'). Defaults to 'error'.

traverseDFS

Traverses the input rootNode in a Depth-First order, keeping track on node entry and exit times.

Parameters:

  • rootNode: The node to start traversing from.
  • getChildren: A callback which returns an iterable of child nodes given an input node.
  • onEntry (optional): A callback which is called when a node is pulled out of the stack BEFORE its children are collected. Receives the node and its entry time.
  • onExit (optional): A callback which is called AFTER a node's children have been traversed. Receives the node and its exit time.
  • Type Parameters:
    • T: The type of the nodes in the graph.

NodeState

A helper interface that can be used to wrap a graph node that is being traversed, adding a state of any type and memorized children array. This can be useful to store information about the nodes during traversal.

Properties:

  • node: The actual graph node.
  • state: A user-defined state associated with the node.
  • children (optional): An array of NodeState objects representing the children of the node. This can be populated during traversal.
1.1.1

1 year ago

1.1.0

1 year ago

1.0.2

1 year ago

1.0.1

1 year ago

1.0.0

1 year ago