{"id":13437245,"url":"https://github.com/ArthurSonzogni/Diagon","last_synced_at":"2025-03-19T06:30:54.598Z","repository":{"id":37663275,"uuid":"118505656","full_name":"ArthurSonzogni/Diagon","owner":"ArthurSonzogni","description":"Interactive ASCII art diagram generators. :star2:","archived":false,"fork":false,"pushed_at":"2024-11-22T09:21:21.000Z","size":934,"stargazers_count":1713,"open_issues_count":19,"forks_count":60,"subscribers_count":12,"default_branch":"main","last_synced_at":"2025-03-14T14:48:19.148Z","etag":null,"topics":["antlr","arthursonzogni","ascii","ascii-art","ascii-diagram","cmake","cpp","generators","lexer","markdown","parser","uml","uml-diagram","unicode","webapp","webapplication","webassembly"],"latest_commit_sha":null,"homepage":"https://arthursonzogni.com/Diagon/","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ArthurSonzogni.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG","contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null},"funding":{"github":["ArthurSonzogni"]}},"created_at":"2018-01-22T19:39:32.000Z","updated_at":"2025-03-14T11:37:25.000Z","dependencies_parsed_at":"2024-03-25T22:27:14.313Z","dependency_job_id":"bff3919d-f8c9-42ff-ba9c-fd0e193cc149","html_url":"https://github.com/ArthurSonzogni/Diagon","commit_stats":{"total_commits":174,"total_committers":12,"mean_commits":14.5,"dds":0.06896551724137934,"last_synced_commit":"121bf4f302b02db5f1c2d02adc6ff7990092b980"},"previous_names":[],"tags_count":4,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ArthurSonzogni%2FDiagon","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ArthurSonzogni%2FDiagon/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ArthurSonzogni%2FDiagon/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ArthurSonzogni%2FDiagon/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ArthurSonzogni","download_url":"https://codeload.github.com/ArthurSonzogni/Diagon/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":244370915,"owners_count":20442316,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["antlr","arthursonzogni","ascii","ascii-art","ascii-diagram","cmake","cpp","generators","lexer","markdown","parser","uml","uml-diagram","unicode","webapp","webapplication","webassembly"],"created_at":"2024-07-31T03:00:55.364Z","updated_at":"2025-03-19T06:30:54.592Z","avatar_url":"https://github.com/ArthurSonzogni.png","language":"C++","funding_links":["https://github.com/sponsors/ArthurSonzogni"],"categories":["C++","HarmonyOS","\u003ca name=\"graphics\"\u003e\u003c/a\u003eGraphics","Editors, Drawing \u0026 Diagramming"],"sub_categories":["Windows Manager","Imported: Upstream Snippet Gallery"],"readme":"# Diagon\n\n[![logo](./tools/logo.png)](https://arthursonzogni.com/Diagon/)\n\nDiagon is an interactive interpreter. It transforms markdown-style expression\ninto an ascii-art representation.\n\nIt is written in C++ and use WebAssembly, HTML and CSS to make a Web\nApplication.\nWe also expose a command line interface and a JS library, for personal and 3rd party tools.\n\n## Web application\n\n[https://arthursonzogni.com/Diagon/](https://arthursonzogni.com/Diagon/)\n\n## Command line interface\n\nDiagon is also usable as a command line tool.\nFor instance:\n```bash\necho \"1+1/2 + sum(i,0,10) = 113/2\" | diagon Math\n            10         \n          ___        \n      1   ╲       113\n  1 + ─ + ╱   i = ───\n      2   ‾‾‾      2 \n           0         \n```\nTo use it, you can either compile it from source or use the precompiled binaries published on the snapstore:\n~~~bash\nsudo snap install diagon\n~~~\n[![snapstore](https://snapcraft.io/diagon/badge.svg)](https://snapcraft.io/diagon)\n[![Get it from the Snap Store](https://snapcraft.io/static/images/badges/en/snap-store-white.svg)](https://snapcraft.io/diagon) \n\nIt is also available as a Nix package:\n\n~~~bash\nnix run github:petertrotman/nixpkgs/Diagon#diagon\n~~~\n\n(A pull request is open to have this merged into NixOS/nixpkgs [**here**](https://github.com/NixOS/nixpkgs/pull/297736))\n\n## Javascript library\nSee the JS library [diagonjs](https://github.com/elmouradiaminedev/diagonjs)\n```bash\nnpm i diagonjs\n```\n```js\nimport Diagon from \"diagonjs\";\n```\n```js\nconst diagon = await Diagon.init();\ndiagon.translate.math(\"f(x) = 1 + x / (1 + x)\", { style: \"Unicode\" });\n\n//               x\n// f(x) = 1 + ─────\n//            1 + x\n```\n\n## IDE plugins\n\nMake diagon easy to use inside your IDE. Thanks to contributors:\n- [vim-diagon](https://github.com/willchao612/vim-diagon)\n- [vscode-diagon](https://github.com/ElmouradiAmine/vscode-diagon)\n\n# Table of content\n * [Diagon](#diagon)\n * [Generators](#generators)\n * [Command line interface](#command-line-interface)\n * [Download packages](#download-packages)\n * [Build](#build)\n * [Thanks](#thanks)\n\n## Generators\n\n\u003cdetails\u003e\n   \u003csummary\u003eMathematic Expression\u003c/summary\u003e\n\n### Mathematic Expression\ninput:\n~~~\nf(x) = 1 + x / (1 + x)\n~~~\n\noutput (Unicode):\n~~~\n             x  \nf(x) = 1 + ─────\n           1 + x\n~~~\n\ninput:\n~~~\nsqrt(1+sqrt(1+x/2))\n~~~\n\noutput (Unicode)\n~~~\n     _____________\n    ╱        _____\n   ╱        ╱    x\n  ╱  1 +   ╱ 1 + ─\n╲╱       ╲╱      2\n~~~\n\ninput:\n~~~\nf(x) = 1 + x^2 + x^3 + x^(1+1/2)\n~~~\n\noutput (Unicode):\n~~~\n                      ⎛    1⎞\n                      ⎜1 + ─⎟\n            2    3    ⎝    2⎠\nf(x) = 1 + x  + x  + x       \n~~~\n\ninput:\n~~~\nsum(i^2,i=0,n) = n^3/2+n^2/2+n/6\n~~~\n\noutput (Unicode):\n~~~\n  n                   \n ___        3    2    \n ╲     2   n    n    n\n ╱    i  = ── + ── + ─\n ‾‾‾        2    2   6\ni = 0                 \n~~~\n\ninput:\n~~~\nint(x^2/2 * dx ,0,1) = 1/6\n~~~\n\noutput (Unicode):\n~~~\n1            \n⌠  2         \n⎮ x         1\n⎮ ── ⋅ dx = ─\n⌡  2        6\n0            \n~~~\n\ninput:\n~~~\n[a;b] + [c;d] = [a+c; b+d]\n~~~\n\noutput (Unicode):\n~~~\n⎛a⎞   ⎛c⎞   ⎛a + c⎞\n⎜ ⎟ + ⎜ ⎟ = ⎜     ⎟\n⎝b⎠   ⎝d⎠   ⎝b + d⎠\n~~~\n\ninput:\n~~~\n[1,2;3,4] * [x;y] = [1*x+2*y; 3*x+4*y]\n~~~\n\n~~~\n⎛1 2⎞   ⎛x⎞   ⎛1 ⋅ x + 2 ⋅ y⎞\n⎜   ⎟ ⋅ ⎜ ⎟ = ⎜             ⎟\n⎝3 4⎠   ⎝y⎠   ⎝3 ⋅ x + 4 ⋅ y⎠\n~~~\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n   \u003csummary\u003e Sequence Diagram \u003c/summary\u003e\n\n### Sequence Diagram\n\ninput\n~~~\nAlice -\u003e Bob: Hello Bob!\nAlice \u003c- Bob: Hello Alice!\n~~~\n\nOutput (Unicode)\n~~~\n┌─────┐       ┌───┐\n│Alice│       │Bob│\n└──┬──┘       └─┬─┘\n   │            │  \n   │ Hello Bob! │  \n   │───────────\u003e│  \n   │            │  \n   │Hello Alice!│  \n   │\u003c───────────│  \n┌──┴──┐       ┌─┴─┐\n│Alice│       │Bob│\n└─────┘       └───┘\n~~~\n\nInput\n~~~\nRenderer -\u003e Browser: BeginNavigation()\nBrowser -\u003e Network: URLRequest()\nBrowser \u003c- Network: URLResponse()\nRenderer \u003c- Browser: CommitNavigation()\nRenderer -\u003e Browser: DidCommitNavigation()\n~~~\n\nOutput (Unicode)\n~~~\n ┌────────┐            ┌───────┐     ┌───────┐\n │Renderer│            │Browser│     │Network│\n └───┬────┘            └───┬───┘     └───┬───┘\n     │                     │             │    \n     │  BeginNavigation()  │             │    \n     │────────────────────\u003e│             │    \n     │                     │             │    \n     │                     │URLRequest() │    \n     │                     │────────────\u003e│    \n     │                     │             │    \n     │                     │URLResponse()│    \n     │                     │\u003c────────────│    \n     │                     │             │    \n     │ CommitNavigation()  │             │    \n     │\u003c────────────────────│             │    \n     │                     │             │    \n     │DidCommitNavigation()│             │    \n     │────────────────────\u003e│             │    \n ┌───┴────┐            ┌───┴───┐     ┌───┴───┐\n │Renderer│            │Browser│     │Network│\n └────────┘            └───────┘     └───────┘\n~~~\n\n\nInput\n~~~\n1) Renderer -\u003e Browser: Message 1\n2) Renderer \u003c- Browser: Message 2\n\nRenderer: 1\u003c2\nBrowser: 2\u003c1\n~~~\n\nOutput (Unicode)\n~~~\n ┌────────┐┌───────┐\n │Renderer││Browser│\n └───┬────┘└───┬───┘\n     │         │    \n     │──┐      │    \n     │Message 2│    \n     │\u003c────────│    \n     │  │      │    \n     │Message 1│    \n     │  └─────\u003e│    \n ┌───┴────┐┌───┴───┐\n │Renderer││Browser│\n └────────┘└───────┘\n~~~\n   \n\u003c/details\u003e\n   \n\u003cdetails\u003e\n   \u003csummary\u003eTree\u003c/summary\u003e\n\n### Tree\n\nInput\n~~~\nLinux\n  Android\n  Debian\n    Ubuntu\n      Lubuntu\n      Kubuntu\n      Xubuntu\n      Xubuntu\n    Mint\n  Centos\n  Fedora\n~~~\n\nOutput (Style Unicode 1)\n~~~\nLinux\n ├─Android\n ├─Debian\n │  ├─Ubuntu\n │  │  ├─Lubuntu\n │  │  ├─Kubuntu\n │  │  ├─Xubuntu\n │  │  └─Xubuntu\n │  └─Mint\n ├─Centos\n └─Fedora\n~~~\n\nOutput (Style ASCII 2)\n~~~\nLinux\n +--Android\n +--Debian\n |   +--Ubuntu\n |   |   +--Lubuntu\n |   |   +--Kubuntu\n |   |   +--Xubuntu\n |   |   `--Xubuntu\n |   `--Mint\n +--Centos\n `--Fedora\n~~~\n\nOutput (Style Unicode right top)\n~~~\n───Linux─┬─Android\n         ├─Debian─┬─Ubuntu─┬─Lubuntu\n         │        │        ├─Kubuntu\n         │        │        ├─Xubuntu\n         │        │        └─Xubuntu\n         │        └─Mint\n         ├─Centos\n         └─Fedora\n~~~\n\nOutput (Style Unicode right center)\n~~~\n         ┌─Android\n         │                 ┌─Lubuntu\n         │                 ├─Kubuntu\n         ├─Debian─┬─Ubuntu─┼─Xubuntu\n───Linux─┤        │        └─Xubuntu\n         │        └─Mint\n         ├─Centos\n         └─Fedora\n~~~\n\n\u003c/details\u003e\n\u003cdetails\u003e\n   \u003csummary\u003eFrame\u003c/summary\u003e\n\n### Frame\n\nInput\n~~~\n#include \u003ciostream\u003e\nusing namespace std;\n\nint main() \n{\n    cout \u003c\u003c \"Hello, World!\";\n    return 0;\n}\n~~~\n\nOutput\n~~~\n┌─┬────────────────────────────┐\n│1│#include \u003ciostream\u003e         │\n│2│using namespace std;        │\n│3│                            │\n│4│int main()                  │\n│5│{                           │\n│6│    cout \u003c\u003c \"Hello, World!\";│\n│7│    return 0;               │\n│8│}                           │\n└─┴────────────────────────────┘\n~~~\n\n\u003c/details\u003e\n\u003cdetails\u003e\n   \u003csummary\u003eTable\u003c/summary\u003e\n\nInput\n~~~\nColumn 1,Column 2,Column 3\nC++,Web,Assembly\nJavascript,CSS,HTML\n~~~\n\nOutput (Style Unicode)\n~~~\n┌──────────┬────────┬────────┐\n│Column 1  │Column 2│Column 3│\n├──────────┼────────┼────────┤\n│C++       │Web     │Assembly│\n├──────────┼────────┼────────┤\n│Javascript│CSS     │HTML    │\n└──────────┴────────┴────────┘\n~~~\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n   \u003csummary\u003eGraphPlanar\u003c/summary\u003e\n\n### GraphPlanar\n\n\nInput\n~~~\nif -\u003e \"then A\" -\u003e end\nif -\u003e \"then B\" -\u003e end\nend -\u003e loop -\u003e if\n~~~\n\nOutput (Unicode)\n~~~\n┌──────────┐     \n│    if    │     \n└△─┬──────┬┘     \n │ │     ┌▽─────┐\n │ │     │then A│\n │ │     └┬─────┘\n │┌▽─────┐│      \n ││then B││      \n │└┬─────┘│      \n │┌▽──────▽─┐    \n ││   end   │    \n │└┬────────┘    \n┌┴─▽─┐           \n│loop│           \n└────┘           \n~~~\n   \n\u003c/details\u003e\n   \n\u003cdetails\u003e\n   \u003csummary\u003eGraphDAG\u003c/summary\u003e\n\n### GraphDAG\n\nInput:\n```\nsocks -\u003e shoes    \nunderwear -\u003e shoes\nunderwear -\u003e pants\npants -\u003e shoes    \npants -\u003e belt     \nbelt -\u003e jacket    \nshirt -\u003e belt     \nshirt -\u003e tie      \ntie -\u003e jacket     \n```\n\nOutput:\n```\n┌─────┐┌─────────┐┌─────┐     \n│socks││underwear││shirt│     \n└┬────┘└┬─┬──────┘└┬─┬──┘     \n │      │┌▽─────┐  │┌▽───────┐\n │      ││pants │  ││tie     │\n │      │└┬──┬──┘  │└┬───────┘\n┌▽──────▽─▽┐┌▽─────▽┐│        \n│shoes     ││belt   ││        \n└──────────┘└┬──────┘│        \n┌────────────▽───────▽┐       \n│jacket               │       \n└─────────────────────┘       \n```\n     \nInput:\n```\nchrome -\u003e content  \nchrome -\u003e blink    \nchrome -\u003e base     \n                   \ncontent -\u003e blink   \ncontent -\u003e net     \ncontent -\u003e base    \n                   \nblink -\u003e v8        \nblink -\u003e CC        \nblink -\u003e WTF       \nblink -\u003e skia      \nblink -\u003e base      \nblink -\u003e net       \n                   \nweblayer -\u003e content\nweblayer -\u003e chrome \nweblayer -\u003e base   \n                   \nnet -\u003e base        \nWTF -\u003e base        \n```\n\nOutput\n```\n┌────────┐                     \n│weblayer│                     \n└┬─┬─┬───┘                     \n │ │┌▽────────────────────────┐\n │ ││chrome                   │\n │ │└┬─────┬─────────────────┬┘\n │┌▽─▽────┐│                 │ \n ││content││                 │ \n │└┬─┬─┬──┘│                 │ \n │ │ │┌▽───▽──────────────┐  │ \n │ │ ││blink              │  │ \n │ │ │└┬──┬───┬─┬───┬───┬─┘  │ \n │ │┌▽─▽┐┌▽──┐│┌▽─┐┌▽─┐┌▽───┐│ \n │ ││net││WTF│││v8││CC││skia││ \n │ │└┬──┘└┬──┘│└──┘└──┘└────┘│ \n┌▽─▽─▽────▽───▽──────────────▽┐\n│base                         │\n└─────────────────────────────┘\n```\n\nInput:\n```\nrandom -\u003e pool_urbg              \nrandom -\u003e nonsecure_base         \nrandom -\u003e seed_sequence          \nrandom -\u003e distribution           \n                                 \nnonsecure_base -\u003e pool_urbg      \nnonsecure_base -\u003e salted_seed_seq\n                                 \nseed_sequence -\u003e pool_urbg       \nseed_sequence -\u003e salted_seed_seq \nseed_sequence -\u003e seed_material   \n                                 \ndistribution -\u003e strings          \n                                 \npool_urbg -\u003e seed_material       \n                                 \nsalted_seed_seq -\u003e seed_material \n                                 \nseed_material -\u003e strings         \n```\n\nOutput:\n```\n┌───────────────────────────────┐             \n│random                         │             \n└┬─────────────┬─────────────┬─┬┘             \n┌▽───────────┐┌▽────────────┐│┌▽─────────────┐\n│distribution││seed_sequence│││nonsecure_base│\n└┬───────────┘└┬───┬───────┬┘│└┬┬────────────┘\n │             │  ┌│───────│─│─│┘             \n │ ┌───────────┘  ││       │ │┌┘              \n │ │┌─────────────▽▽┐┌─────▽─▽▽┐              \n │ ││salted_seed_seq││pool_urbg│              \n │ │└┬──────────────┘└┬────────┘              \n │┌▽─▽────────────────▽┐                      \n ││seed_material       │                      \n │└┬───────────────────┘                      \n┌▽─▽────┐                                     \n│strings│                                     \n└───────┘                                     \n```\n   \n\u003c/details\u003e\n\n\u003cdetails\u003e\n   \u003csummary\u003eFlowchart\u003c/summary\u003e\n\n### Flowchart\n\nInput:\n```\nif (\"DO YOU UNDERSTAND FLOW CHARTS?\")                \n  \"GOOD!\";                                           \nelse if (\"OKAY, YOU SEE THE LINE LABELED 'YES'?\") {  \n  if (\"... AND YOU CAN SEE THE ONES LABELED 'NO'?\") {\n    \"GOOD\";                                          \n  } else {                                           \n    if (\"BUT YOU JUST FOLLOWED THEM TWICE?\")         \n      noop;                                          \n    else                                             \n      noop;                                          \n    \"(THAT WASN'T A QUESTION)\";                      \n    \"SCREW IT\"                                       \n  }                                                  \n} else {                                             \n  if (\"BUT YOU SEE THE ONES LABELED 'NO'?\") {        \n    return \"WAIT, WHAT?\";                            \n  } else {                                           \n    \"LISTEN.\";                                       \n    return \"I HATE YOU\";                             \n  }                                                  \n}                                                    \n                                                     \n\"LET'S GO DRING\";                                    \n\"HEY, I SHOULD TRY INSTALLING FREEBSD!\"              \n```\n\nOutput:\n```\n   _________________                                                              \n  ╱                 ╲                                                     ┌─────┐ \n ╱ DO YOU UNDERSTAND ╲____________________________________________________│GOOD!│ \n ╲ FLOW CHARTS?      ╱yes                                                 └──┬──┘ \n  ╲_________________╱                                                        │    \n           │no                                                               │    \n  _________▽_________                    ______________________              │    \n ╱                   ╲                  ╱                      ╲    ┌────┐   │    \n╱ OKAY, YOU SEE THE   ╲________________╱ ... AND YOU CAN SEE    ╲___│GOOD│   │    \n╲ LINE LABELED 'YES'? ╱yes             ╲ THE ONES LABELED 'NO'? ╱yes└──┬─┘   │    \n ╲___________________╱                  ╲______________________╱       │     │    \n           │no                                     │no                 │     │    \n   ________▽_________                     _________▽__________         │     │    \n  ╱                  ╲    ┌───────────┐  ╱                    ╲        │     │    \n ╱ BUT YOU SEE THE    ╲___│WAIT, WHAT?│ ╱ BUT YOU JUST         ╲___    │     │    \n ╲ ONES LABELED 'NO'? ╱yes└───────────┘ ╲ FOLLOWED THEM TWICE? ╱yes│   │     │    \n  ╲__________________╱                   ╲____________________╱    │   │     │    \n           │no                                     │no             │   │     │    \n       ┌───▽───┐                                   │               │   │     │    \n       │LISTEN.│                                   └───────┬───────┘   │     │    \n       └───┬───┘                                    ┌──────▽─────┐     │     │    \n     ┌─────▽────┐                                   │(THAT WASN'T│     │     │    \n     │I HATE YOU│                                   │A QUESTION) │     │     │    \n     └──────────┘                                   └──────┬─────┘     │     │    \n                                                      ┌────▽───┐       │     │    \n                                                      │SCREW IT│       │     │    \n                                                      └────┬───┘       │     │    \n                                                           └─────┬─────┘     │    \n                                                                 │           │    \n                                                                 └─────┬─────┘    \n                                                               ┌───────▽──────┐   \n                                                               │LET'S GO DRING│   \n                                                               └───────┬──────┘   \n                                                             ┌─────────▽─────────┐\n                                                             │HEY, I SHOULD TRY  │\n                                                             │INSTALLING FREEBSD!│\n                                                             └───────────────────┘\n```\n\n\n   \n\u003c/details\u003e\n\n## Download packages\n\nBinaries using multiple formats are provided in the [release](https://github.com/ArthurSonzogni/Diagon/releases) section.\n\n## Build\n\nThis depends on cmake, and libboost-graph-dev\nOn Linux:\n```sh\nsudo apt install make libboost-graph-dev cmake default-jdk;\nmkdir build;\ncd build;\ncmake .. -DCMAKE_BUILD_TYPE=Release\nmake -j\nsudo make install \n```\n\n## Build in Docker\n\nIf you have Docker installed, the repository includes a Dockerfile for convenient building:\n```sh\ndocker build -t diagon .\n```\n\nOnce built, the image can be invoked like the binary:\n```sh\ndocker run diagon Math -- \"f(x) = 1 + x / (1 + x)\"\n\necho \"f(x) = 1 + x / (1 + x)\" | docker run -i diagon Math\n```\n            \n# Packaging status\n\n[![Packaging status](https://repology.org/badge/vertical-allrepos/diagon.svg)](https://repology.org/project/diagon/versions)\n\n[![diagon](https://snapcraft.io/diagon/badge.svg)](https://snapcraft.io/diagon)\n\n# Thanks\n\nThis project has been possible thanks to these great projects\n * [ANTLR](http://www.antlr.org/)\n * [Boost-graph](https://www.boost.org/doc/libs/1_66_0/libs/graph/doc/)\n * [CMake](https://cmake.org/)\n * [Emscripten](https://github.com/kripken/emscripten)\n * [Git](https://git-scm.com/)\n * [KGT](https://github.com/katef/kgt)\n * [LLVM](https://llvm.org/)\n * [NeoVim](https://neovim.io/)\n * [PlantUML](http://plantuml.com/)\n * [WebAssembly](https://webassembly.org/)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FArthurSonzogni%2FDiagon","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FArthurSonzogni%2FDiagon","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FArthurSonzogni%2FDiagon/lists"}