Skip to content

sdm-lang/rust-sdml

Repository files navigation

Rust SDML

https://raw.githubusercontent.com/sdm-lang/.github/main/profile/horizontal-text.svg

Rust Library and Tools for the Simple Domain Modeling Language (SDML).

https://img.shields.io/badge/license-mit-118811.svg https://github.com/johnstonskj/rust-sdml/actions/workflows/rust.yml/badge.svg https://github.com/johnstonskj/rust-sdml/actions/workflows/security-audit.yml/badge.svg https://codecov.io/gh/johnstonskj/rust-sdml/branch/main/graph/badge.svg?token=1HGN6M4KIT https://img.shields.io/github/stars/johnstonskj/rust-sdml.svg

This project’s intent is to provide an idiomatic implementation of the in-memory model, parser, generators, and the CLI tool. The following figure shows the usage and relationships of the packages in this workspace.

                         ╭───────╮
                         │  CLI  │
                    ╔══  │ crate │  ══╗
                    ║    ╰───────╯    ║
┌╌╌╌╌╌╌╌╌┐          V                 V
┆        ┆       ╭───────╮       ╭──────────╮       Formatted Source
┆ source ┆  ══>  │ parse │  ══>  │ generate │  ══>  RDF Representation 
┆  file  ┆   ╭───│ crate │───────│   crate  │───╮   Documentation
┆        ┆   │   ╰───────╯       ╰──────────╯   │   Diagrams
└╌╌╌╌╌╌╌╌┘   │           core crate             │
             ╰──────────────────────────────────╯
 ┌───────┐                  ⋀
 │ other │                  ║
 │ tools │  ════════════════╝
 └───────┘

Packages

core

This package contains the in-memory model of an sdml module, the major component of the project itself. It also has traits (`ModuleLoader`, `ModuleResolver`, `ModuleStore`) that are required by packages that follow.

https://img.shields.io/crates/v/sdml_core.svg https://img.shields.io/docsrs/sdml-core.svg

error

This package contains the common Error type as well as a diagnostic set for reporting language parse and model issues.

https://img.shields.io/crates/v/sdml_error.svg https://img.shields.io/docsrs/sdml_error.svg

parse

This package contains the bridge from the tree-sitter SDML library to the in-memory model in sdml_core.

https://img.shields.io/crates/v/sdml_parse.svg https://img.shields.io/docsrs/sdml-parse.svg

generate

This package contains a set of tools for generating alternative representations of an in-memory module as well as related actions for the CLI.

https://img.shields.io/crates/v/sdml_generate.svg https://img.shields.io/docsrs/sdml-generate.svg

cli

This package contains the entry-point for the command-line tool.

https://img.shields.io/crates/v/sdml_cli.svg

License

This repository, and all contents, are released under the Apache License, Version 2.0. See LICENSE file for details.

For information on contributing, see How to Contribute, and the Code of Conduct.

Changes

After version 0.1.4 the single crate has been replaced with the four sdml_core, sdml_error, sdml_parse, sdml_generate, and sdml_cli. Each will have it’s own version history starting with 0.1.5.

Version: 0.1.4

  • Support the latest grammar
  • UML Class Diagram (initial)
  • Modeling Library modules

Version: 0.1.3

  • Support the latest grammar

Version: 0.1.2

  • Syntax highlighting supported
  • Support the latest grammar

Version: 0.1.1

  • More drawing details
  • More command-line features
  • Support the latest grammar

Version: 0.1.0

  • Initial version, limited to basic drawings

Other Links

Formatting

Linting

About

Rust CLI tools for the Simple Domain Modeling Language (SDML)

Topics

Resources

License

Stars

Watchers

Forks

Languages