rust-sdml

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

OTHER License

Stars
3
Committers
1

#+TITLE: Rust SDML #+AUTHOR: Simon Johnston #+EMAIL: [email protected] #+LANGUAGE: en #+STARTUP: overview hidestars inlineimages entitiespretty #+OPTIONS: author:nil created:nil creator:nil date:nil email:nil num:3 toc:nil

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

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

[[https://opensource.org/licenses/Apache-2.0][https://img.shields.io/badge/License-Apache_2.0-blue.svg]] [[https://github.com/johnstonskj/rust-sdml/actions/workflows/rust.yml][https://github.com/johnstonskj/rust-sdml/actions/workflows/rust.yml/badge.svg]] [[https://github.com/johnstonskj/rust-sdml/actions/workflows/security-audit.yml][https://github.com/johnstonskj/rust-sdml/actions/workflows/security-audit.yml/badge.svg]] [[https://codecov.io/gh/johnstonskj/rust-sdml][https://codecov.io/gh/johnstonskj/rust-sdml/branch/main/graph/badge.svg?token=1HGN6M4KIT]] [[https://github.com/johnstonskj/rust-sdml/stargazers][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.

#+CAPTION: Package Organization #+BEGIN_EXAMPLE ╭───────╮ │ CLI │ ╔══ │ crate │ ══╗ ║ ╰───────╯ ║ ┌╌╌╌╌╌╌╌╌┐ V V ┆ ┆ ╭───────╮ ╭──────────╮ Formatted Source ┆ source ┆ ══> │ parse │ ══> │ generate │ ══> RDF Representation ┆ file ┆ ╭───│ crate │───────│ crate │───╮ Documentation ┆ ┆ │ ╰───────╯ ╰──────────╯ │ Diagrams └╌╌╌╌╌╌╌╌┘ │ core/errors crate │ ╰──────────────────────────────────╯ ┌───────┐ ⋀ │ other │ ║ │ tools │ ════════════════╝ └───────┘ #+END_EXAMPLE

To install the command-line tool on MacOS or Linux use the Homebrew package manager and the SDML Tap.

#+BEGIN_SRC sh :exports code :eval never ❯ brew install sdm-lang/sdml/sdml #+END_SRC

  • Packages
    ** errors

This [[./sdml-errors/README.org][package]] contains the common =Error= type as well as a diagnostic set for reporting language parse and model issues.

[[https://crates.io/crates/sdml-errors][https://img.shields.io/crates/v/sdml-errors.svg]] [[https://docs.rs/sdml-errors][https://img.shields.io/docsrs/sdml-errors.svg]]

** core

This [[./sdml-core/README.org][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://crates.io/crates/sdml_core][https://img.shields.io/crates/v/sdml_core.svg]] [[https://docs.rs/sdml_core][https://img.shields.io/docsrs/sdml-core.svg]]

** parse

This [[./sdml-parse/README.org][package]] contains the bridge from the tree-sitter SDML library to the in-memory model in =sdml_core=.

[[https://crates.io/crates/sdml_parse][https://img.shields.io/crates/v/sdml_parse.svg]] [[https://docs.rs/sdml_parse][https://img.shields.io/docsrs/sdml-parse.svg]]

** generate

This [[./sdml-generate/README.org][package]] contains a set of tools for generating alternative representations of an in-memory module as well as related actions for the CLI.

[[https://crates.io/crates/sdml_generate][https://img.shields.io/crates/v/sdml_generate.svg]] [[https://docs.rs/sdml_generate][https://img.shields.io/docsrs/sdml-generate.svg]]

** cli

This [[./sdml-cli/README.org][package]] contains the entry-point for the command-line tool.

[[https://crates.io/crates/sdml_cli][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][LICENSE]] file for details.

For information on contributing, see [[./doc/contributing.org][How to Contribute]], and the [[./doc/code_of_conduct.org][Code of Conduct]].

  • Changes

After version 0.1.4 the single crate has been replaced with the four =sdml-core=, =sdml-errors=, =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