adjivas / ml

A library to generating UML language from Rust's project into graphiz/dot file.
https://adjivas.github.io/ml/mml
Apache License 2.0
79 stars 15 forks source link
dot generator modeling-language uml uml-graphs

ML -Modeling Language-

Crate travis-badge appveyor-badge dependencyci-badge

A library to generating UML language from Rust's project into graphiz/dot file.

Usage

This repo is provided as a Cargo package and a build script.

  1. adjust your Cargo.toml to include.
    
    build = "build.rs"

[build-dependencies.mml] version = "0.1"


2. And your `build.rs` to generate your uml [graph/viz](http://www.graphviz.org/doc/info/lang.html) and Structured Vector Graphics at `target/dot/$CARGO_PKG_NAME.{dot,svg}`.
```rust
extern crate mml;

fn main() {
    let dest: String = concat!("target/doc/", env!("CARGO_PKG_NAME")).to_string();

    let _ = mml::src2both("src", dest.replace("-", "_").as_str());
}
  1. (Facultative) From your entry point library file, you can add the generated vectorized graph.

    //! ![uml](ml.svg)
  2. (Facultative) With the travis-cargo's instructions, you can prepare your graphviz's dependency like with this example.

    addons:
    apt:
    packages:
      - graphviz
    before_script:
    - if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then brew update           ; fi
    - if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then brew install graphviz ; fi
    ...
    script:
    - |
      travis-cargo build &&
    ...

Features

Consider this list of fonctionalities like unstandard-uml.

Knowledge

This is a reading list of material relevant to Ml. It includes prior research that has - at one time or another - influenced the design of Ml, as well as publications about Ml.

License

ml is primarily distributed under the terms of both the MIT license and the Apache License (Version 2.0), with portions covered by various BSD-like licenses.

See LICENSE-APACHE, and LICENSE-MIT for details.

Contribution

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.