megadoc-plugin-dot

5.0.1 • Public • Published

megadoc-plugin-dot

Draw dot / Graphviz diagrams right in your Markdown and present them as beautiful SVG graphs in the browser.

Here, catch!

[Pirate|eyeCount: Int|raid();pillage()|
  [beard]--[parrot]
  [beard]-:>[foul mouth]
]
 
[<abstract>Marauder]<:--[Pirate]
[Pirate]- 0..7[mischief]
[jollyness]->[Pirate]
[jollyness]->[rum]
[jollyness]->[singing]
[Pirate]-> *[rum|tastiness: Int|swig()]
[Pirate]->[singing]
[singing]<->[rum]
 
[<start>st]->[<state>plunder]
[plunder]->[<choice>more loot]
[more loot]->[st]
[more loot] no ->[<end>e]
 
[<actor>Sailor] - [<usecase>shiver me;timbers]

The plugin uses the wonderful nomnoml package for converting code to SVG, so the syntax for using this plugin is what nomnoml supports.

Want more? Here's a diagram with links to internal documents:

[You are here] -> [mega://megadoc-plugin-dot as "Back to the top"]

Installation

npm install megadoc megadoc-plugin-markdown megadoc-plugin-dot

Add it to your list of plugins:

// @file: megadoc.conf.js
exports.plugins = [
  require('megadoc-plugin-markdown')({
    source: '**/*.md'
  }),
 
  require('megadoc-plugin-dot')({})
];

Usage

Inside your Markdown blocks, name your fenced code blocks with the dot language and type away!

```dot
[A] -> [B]
[C] -> [B]
```

Or, use UML:

```dot
[<frame>My Model|
  [A] -> [B]
  [C] -> [B]
]
```

Configuration

At this moment, the plugin doesn't really accept any config. By default, we override the following "directives" to make the graphs more in-line with megadoc's color scheme:

  • #fontSize: 10
  • #font: Monospace
  • #lineWidth: 1
  • #fill: #eaeaea
  • #stroke: #404244

You can still override this on a per-graph basis in your ````dot` blocks.

Linking to internal documents

It's not possible to link using the regular linking schemes inside your diagrams, instead you must use a special syntax that looks something like this:

[mega://my-link]

And if you want to customize the text:

[mega://my-link as "My Custom Text"]

It's totally possible to frame it:

[Foo | mega://my-link]
[Foo | mega://my-link as "My Custom Text"]

Which will look something like this:

[Foo | mega://my-broken-link]

Credits

Big thanks to nomnoml and dagre for making this possible. Such beautiful work.

Package Sidebar

Install

npm i megadoc-plugin-dot

Weekly Downloads

2

Version

5.0.1

License

MIT

Last publish

Collaborators

  • amireh