adjivas / ml Goto Github PK
View Code? Open in Web Editor NEWA library to generating UML language from Rust's project into graphiz/dot file.
Home Page: https://adjivas.github.io/ml/mml
License: Apache License 2.0
A library to generating UML language from Rust's project into graphiz/dot file.
Home Page: https://adjivas.github.io/ml/mml
License: Apache License 2.0
In order to get past the limits of the dot
crate, perhaps it would make sense to use another graph generator, such as Jinja in Rust with a graphviz template similar to ansible-inventory-grapher's template.
Coloring the svg graph output could make it more readable, like in this class diagram.
Would it be possible to organize the graph output structure like this visual paradigm - class diagram using the relationships encoded as a source code folder hierarchy? For example, this project's code seems organized well to fit that type of output.
We currently have one example diagram. In order to test the project and make it useful, other code bases can be diagrammed and linked here. This list shows what it can do:
When I try using this on a few projects, I get a build error
error[E0423]: expected function, tuple struct or tuple variant, found struct `ast::Name`
--> /home/jayvdb/.cargo/registry/src/github.com-1ecc6299db9ec823/syntex_syntax-0.58.1/src/symbol.rs:146:27
|
146 | name: ast::Name($index),
| ^^^^^^^^^
...
165 | / declare_keywords! {
166 | | // Invalid identifier
167 | | (0, Invalid, "")
168 | |
... |
231 | | (56, CrateRoot, "{{root}}")
232 | | }
| |_- in this macro invocation
|
= note: this error originates in the macro `declare_keywords` (in Nightly builds, run with -Z macro-backtrace for more info)
e.g. I tried this with https://github.com/swift-nav/esthri/tree/master/crates/esthri
also some private projects which otherwise build normally.
When generating an svg image as part of a handbook, it would be really nice to deep link into the handbook from the source code diagram elements.
Hello,
This project looks interesting; may I ask about the current state of the project in terms of maintenance and so on? If there is interest in maintaining this as a tool for generating UML from Rust crates and the goals are reasonably close to my own I would be interested in contributing. If on the other hand you know that e.g. some of the dependencies are unmaintained and this would be a huge amount of work then a clean slate approach might be better.
Best wishes, Max
Hi,
the mml is not able to parse the newer folder structure, so I have to change it from:
"
folder [utility]
* one.rs
* two.rs
utility.rs
main.rs
"
to
"
folder [utility]
* one.rs
* two.rs
* mod.rs
main.rs
"
I'm having issues with using error_chain for MML.
Cargo.toml
[package]
build = "build.rs"
[dependencies]
error-chain = "0.11.0"
[build-dependencies.mml]
version = "0.1"
error-chain = "0.11.0"
build.rs:
// UML Generator https://github.com/adjivas/ml
#![allow(unused_imports)]
#![allow(unused_variables)]
#![allow(dead_code)]
extern crate mml;
#[macro_use]
extern crate error_chain;
pub mod errors { error_chain!{} }
use errors::*;
fn make_uml_diagram() {
// Generate diagram in /diagrams/ml.svg for README.md
let dest: String = "../diagrams/".to_string();
let _ = mml::src2both("src", dest.replace("-", "_").as_str());
// Generate diagram in /target/doc/diamond_drops_node/ml.svg
let dest: String = concat!("../target/doc/", env!("CARGO_PKG_NAME")).to_string();
let _ = mml::src2both("src", dest.replace("-", "_").as_str());
}
fn main() {
//make_uml_diagram();
}
$ cargo test
warning: unused manifest key: build-dependencies.mml.error-chain
Compiling diamond-drops-node v0.1.0-a (file:///home/james/dod/node)
error[E0463]: can't find crate for `error_chain`
--> build.rs:10:1
|
10 | extern crate error_chain;
| ^^^^^^^^^^^^^^^^^^^^^^^^^ can't find crate
error: aborting due to previous error
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.