Diagon transforms markdown-style expression into an ascii-art representation.

Overview

Diagon

logo

Diagon is an interactive interpreter. It transforms markdown-style expression into an ascii-art representation.

It is written in C++ and use WebAssembly, HTML and CSS to make a Web Application.

https://arthursonzogni.com/Diagon/

Table of content

Generators

Mathematic Expression

input:

f(x) = 1 + x / (1 + x)

output (Unicode):

             x  
f(x) = 1 + ─────
           1 + x

input:

sqrt(1+sqrt(1+x/2))

output (Unicode)

     _____________
    ╱        _____
   ╱        ╱    x
  ╱  1 +   ╱ 1 + ─
╲╱       ╲╱      2

input:

f(x) = 1 + x^2 + x^3 + x^(1+1/2)

output (Unicode):

                      ⎛    1⎞
                      ⎜1 + ─⎟
            2    3    ⎝    2⎠
f(x) = 1 + x  + x  + x       

input:

sum(i^2,i=0,n) = n^3/2+n^2/2+n/6

output (Unicode):

  n                   
 ___        3    2    
 ╲     2   n    n    n
 ╱    i  = ── + ── + ─
 ‾‾‾        2    2   6
i = 0                 

input:

int(x^2/2 * dx ,0,1) = 1/6

output (Unicode):

1            
⌠  2         
⎮ x         1
⎮ ── ⋅ dx = ─
⌡  2        6
0            

input:

[a;b] + [c;d] = [a+c; b+d]

output (Unicode):

⎛a⎞   ⎛c⎞   ⎛a + c⎞
⎜ ⎟ + ⎜ ⎟ = ⎜     ⎟
⎝b⎠   ⎝d⎠   ⎝b + d⎠

input:

[1,2;3,4] * [x;y] = [1*x+2*y; 3*x+4*y]
⎛1 2⎞   ⎛x⎞   ⎛1 ⋅ x + 2 ⋅ y⎞
⎜   ⎟ ⋅ ⎜ ⎟ = ⎜             ⎟
⎝3 4⎠   ⎝y⎠   ⎝3 ⋅ x + 4 ⋅ y⎠

Sequence Diagram

input

Alice -> Bob: Hello Bob!
Alice <- Bob: Hello Alice!

Output (Unicode)

┌─────┐       ┌───┐
│Alice│       │Bob│
└──┬──┘       └─┬─┘
   │            │  
   │ Hello Bob! │  
   │───────────>│  
   │            │  
   │Hello Alice!│  
   │<───────────│  
┌──┴──┐       ┌─┴─┐
│Alice│       │Bob│
└─────┘       └───┘

Input

Renderer -> Browser: BeginNavigation()
Browser -> Network: URLRequest()
Browser <- Network: URLResponse()
Renderer <- Browser: CommitNavigation()
Renderer -> Browser: DidCommitNavigation()

Output (Unicode)

 ┌────────┐            ┌───────┐     ┌───────┐
 │Renderer│            │Browser│     │Network│
 └───┬────┘            └───┬───┘     └───┬───┘
     │                     │             │    
     │  BeginNavigation()  │             │    
     │────────────────────>│             │    
     │                     │             │    
     │                     │URLRequest() │    
     │                     │────────────>│    
     │                     │             │    
     │                     │URLResponse()│    
     │                     │<────────────│    
     │                     │             │    
     │ CommitNavigation()  │             │    
     │<────────────────────│             │    
     │                     │             │    
     │DidCommitNavigation()│             │    
     │────────────────────>│             │    
 ┌───┴────┐            ┌───┴───┐     ┌───┴───┐
 │Renderer│            │Browser│     │Network│
 └────────┘            └───────┘     └───────┘

Input

1) Renderer -> Browser: Message 1
2) Renderer <- Browser: Message 2

Renderer: 1<2
Browser: 2<1

Output (Unicode)

 ┌────────┐┌───────┐
 │Renderer││Browser│
 └───┬────┘└───┬───┘
     │         │    
     │──┐      │    
     │Message 2│    
     │<────────│    
     │  │      │    
     │Message 1│    
     │  └─────>│    
 ┌───┴────┐┌───┴───┐
 │Renderer││Browser│
 └────────┘└───────┘

Tree

Input

Linux
  Android
  Debian
    Ubuntu
      Lubuntu
      Kubuntu
      Xubuntu
      Xubuntu
    Mint
  Centos
  Fedora

Output (Style Unicode 1)

Linux
 ├─Android
 ├─Debian
 │  ├─Ubuntu
 │  │  ├─Lubuntu
 │  │  ├─Kubuntu
 │  │  ├─Xubuntu
 │  │  └─Xubuntu
 │  └─Mint
 ├─Centos
 └─Fedora

Output (Style ASCII 2)

Linux
 +--Android
 +--Debian
 |   +--Ubuntu
 |   |   +--Lubuntu
 |   |   +--Kubuntu
 |   |   +--Xubuntu
 |   |   `--Xubuntu
 |   `--Mint
 +--Centos
 `--Fedora

Output (Style Unicode right top)

───Linux─┬─Android
         ├─Debian─┬─Ubuntu─┬─Lubuntu
         │        │        ├─Kubuntu
         │        │        ├─Xubuntu
         │        │        └─Xubuntu
         │        └─Mint
         ├─Centos
         └─Fedora

Output (Style Unicode right center)

         ┌─Android
         │                 ┌─Lubuntu
         │                 ├─Kubuntu
         ├─Debian─┬─Ubuntu─┼─Xubuntu
───Linux─┤        │        └─Xubuntu
         │        └─Mint
         ├─Centos
         └─Fedora

Frame

Input

#include 
using namespace std;

int main() 
{
    cout << "Hello, World!";
    return 0;
}

Output

┌─┬────────────────────────────┐
│1│#include          │
│2│using namespace std;        │
│3│                            │
│4│int main()                  │
│5│{                           │
│6│    cout << "Hello, World!";│
│7│    return 0;               │
│8│}                           │
└─┴────────────────────────────┘

Table

Input

Column 1,Column 2,Column 3
C++,Web,Assembly
Javascript,CSS,HTML

Output (Style Unicode)

┌──────────┬────────┬────────┐
│Column 1  │Column 2│Column 3│
├──────────┼────────┼────────┤
│C++       │Web     │Assembly│
├──────────┼────────┼────────┤
│Javascript│CSS     │HTML    │
└──────────┴────────┴────────┘

Planar graph

Input

end if -> "then B" -> end end -> loop -> if ">
if -> "then A" -> end
if -> "then B" -> end
end -> loop -> if

Output (Unicode)

┌──────────┐     
│    if    │     
└△─┬──────┬┘     
 │ │     ┌▽─────┐
 │ │     │then A│
 │ │     └┬─────┘
 │┌▽─────┐│      
 ││then B││      
 │└┬─────┘│      
 │┌▽──────▽─┐    
 ││   end   │    
 │└┬────────┘    
┌┴─▽─┐           
│loop│           
└────┘           

Command line interface

Diagon is also usable as a command line tool. For instance:

echo "1+1/2 + sum(i,0,10) = 112/2" | diagon Math
            10         
          ___        
      1   ╲       112
  1 + ─ + ╱   i = ───
      2   ‾‾‾      2 
           0         

To use it, you can either compile it from source or use the precompiled binaries published on the snapstore:

sudo snap install diagon

snapstore Get it from the Snap Store

Thanks

This project has been possible thanks to these great projects

Issues
  • Latex output

    Latex output

    I'd love to use Diagon in a project I want to make, similar to org-mode but with more modern syntax, output, and tooling. I love how Diagon parses expressions, and so I was wondering how easy it is to add more backends because I don't want to reinvent the wheel. I'm personally looking for:

    • ASCII (already implemented)
    • utf-8 (already implemented)
    • KaTeX/HTML
    • LaTeX

    I've used the latter two a lot, so I'm pretty comfortable with them; if it's not too hard and isn't against the scope of the project I'd love to try and implement them.

    enhancement Accepted 
    opened by s5bug 10
  • How to build?

    How to build?

    Hi there, I'm not very proficient with C, just trying to typeset some nice math :)

    I clone the repo on a Mac and ran cmake, then make and got the following output:

    [  1%] Building CXX object CMakeFiles/diagon_base.dir/src/translator/Translator.cpp.o
    In file included from /Users/dteiml/projects/Diagon/src/translator/Translator.cpp:5:
    /Users/dteiml/projects/Diagon/src/translator/Translator.h:15:27: warning: defaulted function definitions are a C++11 extension [-Wc++11-extensions]
      virtual ~Translator() = default;
                              ^
    /Users/dteiml/projects/Diagon/src/translator/Translator.h:34:61: warning: generalized initializer lists are a C++11 extension [-Wc++11-extensions]
      virtual std::vector<OptionDescription> Options() { return {}; }
                                                                ^~
    /Users/dteiml/projects/Diagon/src/translator/Translator.h:34:61: error: non-aggregate type 'std::vector<OptionDescription>' cannot be initialized with an initializer list
      virtual std::vector<OptionDescription> Options() { return {}; }
                                                                ^~
    /Users/dteiml/projects/Diagon/src/translator/Translator.h:40:52: warning: generalized initializer lists are a C++11 extension [-Wc++11-extensions]
      virtual std::vector<Example> Examples() { return {}; }
                                                       ^~
    /Users/dteiml/projects/Diagon/src/translator/Translator.h:40:52: error: non-aggregate type 'std::vector<Example>' cannot be initialized with an initializer list
      virtual std::vector<Example> Examples() { return {}; }
                                                       ^~
    3 warnings and 2 errors generated.
    make[2]: *** [CMakeFiles/diagon_base.dir/src/translator/Translator.cpp.o] Error 1
    make[1]: *** [CMakeFiles/diagon_base.dir/all] Error 2
    make: *** [all] Error 2
    

    I googled the errors and got here and then here, which together seemed to provide an answer.

    Based on that, I tried running make CXXFLAGS='-std=c++11'. However, I got the same output. Any help, thanks!

    opened by hacker-DOM 8
  • Add support for new lines in Sequence

    Add support for new lines in Sequence

    When using diagon Sequence it is not possible (at least I couldn't find a way) to add new lines to the messages in the Sequence submodule.

    This patch adds parameter --new_lines_at_bsn that results in substituting literal \n with new lines.

    Example:

    $ echo "Alice -> Bob: send(\n  msg="Hello...",\n  length=8,\n)" | \
           diagon Sequence --new_lines_at_bsn=true
    

    output:

    ┌─────┐          ┌───┐
    │Alice│          │Bob│
    └──┬──┘          └─┬─┘
       │               │
       │send(          │
       │  msg=Hello...,│
       │  length=8,    │
       │)              │
       │──────────────>│
    ┌──┴──┐          ┌─┴─┐
    │Alice│          │Bob│
    └─────┘          └───┘
    
    opened by tg-m 5
  • I made a Vim plugin wrapping Diagon's API

    I made a Vim plugin wrapping Diagon's API

    Hi, thanks for this useful tool!

    I am a Vim/Neovim user and I draw simple diagrams in markdown from time to time. When I met Diagon I wonder if I can integrate it into my workflow, so I made a Vim plugin named vim-diagon wrapping Diagon's API. It is pretty bare bone but it improves my workflow. You can give it a try if you want.

    Thanks again!

    opened by willchao612 4
  • Allow more complicated composition of characters in sub and superscript

    Allow more complicated composition of characters in sub and superscript

    Hi me here once again.

    I have another request, but as before feel free to ignore it if it is out of scope. I post the issues because I would really like to use the tool to create in-code equations and it can almost do everything I want :smile:

    As mentioned before, for scientific equations there can often be complicated both super and subscripts. As it is right now, the sub or super script seems to allow only sequences of letters or numbers and ends as soon as they are mixed or if a special character is added. This means e.g. that if I wanted to do what I in Latex would write as E_{2m} or I{_M'} the m and the ' disappears and breaks the equation. Would it be possible to add an apply-to-start-and-end like the {} in Latex, to make it possible to make these more elaborate sub and super scripts.

    Regards Kenneth

    opened by KennethNielsen 4
  • antlr.jar not found

    antlr.jar not found

    I find this a wonderful project, thanks for making it.

    When trying to package for NixOS I found that my build stuck at locating the antlr.jar:

    Consolidate compiler generated dependencies of target antlr4_static [ 92%] Built target antlr4_static [ 92%] Generating GraphPlanarLexer.cpp, GraphPlanarParser.cpp, GraphPlanarLexer.h, GraphPlanarParser.h [ 92%] Generating FlowchartLexer.cpp, FlowchartParser.cpp, FlowchartLexer.h, FlowchartParser.h [ 92%] Generating MathLexer.cpp, MathParser.cpp, MathLexer.h, MathParser.h [ 92%] Generating SequenceLexer.cpp, SequenceParser.cpp, SequenceLexer.h, SequenceParser.h Error: Unable to access jarfile /nix/store/7g8306l1a9qxw7xswcdlbrm61v16wzi5-source/tools/antlr.jar

    I'm pretty much a beginner coming to cmake or even nix, maybe you have a clue and can give a nudge here ?

    This my default.nix for the build so far:

    { pkgs ? import <nixpkgs> {}, ... }:
    pkgs.stdenv.mkDerivation {
      name = "Diagon";
      src = pkgs.lib.cleanSource (builtins.fetchTarball https://github.com/ArthurSonzogni/Diagon/tarball/master);
      nativeBuildInputs = with pkgs; [ cmake pkgconfig git cacert (jre_minimal.override { jdk = jdk11_headless; }) ant ];
      buildInputs = with pkgs; [ boost libuuid.dev icu ];
      propagatedBuildInputs = with pkgs; [ antlr ];
    }
    

    Also I'm getting

    [100%] Built target antlr-populate -- Building without demo. To enable demo build use: -DWITH_DEMO=True -- Output libraries to /home/me/DiagonBuild/build/dist % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 162 100 162 0 0 2253 0 --:--:-- --:--:-- --:--:-- 2281 Warning: Failed to create the file antlr.jar: Permission denied 0 2040k 0 1005 0 0 3199 0 0:10:53 --:--:-- 0:10:53 3199 curl: (23) Failure writing output to destination

    when running the eval cmake $cmakeFlags -Wno-dev -DCMAKE_VERBOSE_MAKEFILE:BOOL=ON $src

    opened by 573 3
  • I made vscode extension using Diagon API

    I made vscode extension using Diagon API

    Hi Arthur ! I found out that your tool could be really useful for us programmers. In fact, this tool will allow us to put better comments by adding diagrams, mathematical expressions and much more! I have compiled your API to webassembly and I created a javascript library wrapper that I published to npm. I was able to use that library in my vscode extension. I'll publish this extension soon in the vscode marketplace ! I hope you liked it! Thank you for this tool ! screencast

    opened by ElmouradiAmine 3
  • CLI option?

    CLI option?

    Hiya, for... reasons... I tried loading up https://pomax.github.io/bezierinfo in Lynx, and realised that it would be very nice to see an ascii version of the ~250 LaTeX formulae pepper throughout the page, rather than seeing this:

    image

    Is there a way to invoke Diagon via the CLI, so it can be made part of a build chain, calling it on a .tex file and getting stdio output that can be used by "whatever was looking at stdio"?

    E.g. I currently generate those svg images by effectively running xelatex 1a2b3c4d.tex && pdfcrop 1a2b3c4d.pdf && pdf2svg 1a2b3c4d-cropped.pdf && svgo 1a2b3c4d-cropped.svg && cp 1a2b3c4d-cropped.svg ../images/latex/1a2b3c4d.svg so create a secondary chain that runs Diagon would be super cool.

    opened by Pomax 3
  • missing build instructions

    missing build instructions

    this is a phenomenal project. A few hints about compiling from source that might be useful:

    On Debian / Ubuntu you will need boost (in addition to uuid-dev) otherwise the build fails:

    sudo apt install libboost1.71-dev

    then:

    mkdir build && cd build 
    cmake ..
    make -j
    sudo make install
    
    opened by jbauernberger 2
  • refactor(stylesheet): make everything more consistent

    refactor(stylesheet): make everything more consistent

    changes:

    • spaces after all colons (:)
    • replace white & black with #fff and #000 (shorter)
    • remove empty lines where they aren't needed
    • add more comments; have comments always start with a capital letter
    opened by Gitleptune 2
  • Integrate kgt?

    Integrate kgt?

    What about integrating kgt into Diagon? This would allow people to use kgt online & interactively.

    I can totally see myself using it. For instance when implementing CSP in Chrome or just for fun.

    I will take a look. I should be quite easy since this is C code. I just need to rewrite Makefile into a CMake file.

    +CC: @katef FYI

    opened by ArthurSonzogni 2
  • Idea for encapsulation in flowchart

    Idea for encapsulation in flowchart

    Awesome project! I was looking to do some ascii diagramming to depict the execution flow in some python programs in vim. I am looking to capture the flow of the program as it executes to organize the design better. Specifically, I have the following flowcharge

    'Start';                                                                                                                                                                    
    'Set working directory';                                                                                                                                                    
    'Call pipeline_function passing preprocessing_fn as argument';                                                                                                              
    if ('Within pipeline function')                                                                                                                                             
        {                                                                                                                                                                       
        'Call tfxio.BeamRecordsCsvTFXIO with format, columns, schema';                                                                                                          
        'Read using beam.io.ReadFromText as bytes';                                                                                                                             
        'Decode bytes using tfxio';                                                                                                                                             
        'Make a raw dataset with raw data and TensorAdapterConfig()';                                                                                                           
        'Transform raw dataset using tft_beam.AnalyzeAndTransformDataset';                                                                                                      
        'Get transform_fn back from transformation';                                                                                                                            
        'Encode transform data using beam.FlatMapTuple';                                                                                                                        
        'Write it using beam.io.WriteToTFRecord';                                                                                                                               
        'Write transform_fn using tft_beam.WriteTransformFn';                                                                                                                   
        return 'stuff';                                                                                                                                                         
        }                                                      
    else {                                                                                                                                                                  
        'Get transform output using tft.TFTransformOutput';                                                                                                                     
        'Get single example from raw data, make batch';                                                                                                                         
        'Get tft_layer using transform_output.transform_features_layer()';                                                                                                      
        'Transform single example using tft_layer(single_example_batched)';                                                                                                     
        'Inspect transformed example to show names, datatypes, and shapes';                                                                                                     
        }                                                                                                                                                                       
        'End';                
    

    This produces the following flowchart:

                       ┌─────┐                                                                                                                                                                                                                                                                                                      
                       │Start│                                                                                                                                                                                                                                                                                                      
                       └──┬──┘                                                                                                                                                                                                                                                                                                      
               ┌──────────▽──────────┐                                                                                                                                                                                                                                                                                              
               │Set working directory│                                                                                                                                                                                                                                                                                              
               └──────────┬──────────┘                                                                                                                                                                                                                                                                                              
          ┌───────────────▽──────────────┐                                                                                                                                                                                                                                                                                          
          │Call pipeline_function passing│                                                                                                                                                                                                                                                                                          
          │preprocessing_fn as argument  │                                                                                                                                                                                                                                                                                          
          └───────────────┬──────────────┘                                                                                                                                                                                                                                                                                          
                   ____▽____                 ┌──────────────────────────────┐                                                                                                                                                                                                                                                       
                  ╱               ╲                │Call tfxio.BeamRecordsCsvTFXIO│                                                                                                                                                                                                                                                 
                 ╱ Within pipeline ╲_______________│with format, columns, schema  │                                                                                                                                                                                                                                                 
                 ╲ function        ╱yes            └───────────────┬──────────────┘                                                                                                                                                                                                                                                 
                  ╲_______________╱                 ┌──────────────▽──────────────┐                                                                                                                                                                                                                                                 
                          │no                       │Read using                   │                                                                                                                                                                                                                                                 
            ┌─────────────▽────────────┐            │beam.io.ReadFromText as bytes│                                                                                                                                                                                                                                                 
            │Get transform output using│            └──────────────┬──────────────┘                                                                                                                                                                                                                                                 
            │tft.TFTransformOutput     │                    ┌──────▽─────┐                                                                                                                                                                                                                                                          
            └─────────────┬────────────┘                    │Decode bytes│                                                                                                                                                                                                                                                          
              ┌───────────▽───────────┐                     │using tfxio │                                                                                                                                                                                                                                                          
              │Get single example from│                     └──────┬─────┘                                                                                                                                                                                                                                                          
              │raw data, make batch   │            ┌───────────────▽──────────────┐                                                                                                                                                                                                                                                 
              └───────────┬───────────┘            │Make a raw dataset with raw   │                                                                                                                                                                                                                                                 
    ┌─────────────────────▽─────────────────────┐  │data and TensorAdapterConfig()│                                                                                                                                                                                                                                                 
    │Get tft_layer using                        │  └───────────────┬──────────────┘                                                                                                                                                                                                                                                 
    │transform_output.transform_features_layer()│┌─────────────────▽─────────────────┐                                                                                                                                                                                                                                              
    └─────────────────────┬─────────────────────┘│Transform raw dataset using        │                                                                                                                                                                                                                                              
         ┌────────────────▽────────────────┐     │tft_beam.AnalyzeAndTransformDataset│                                                                                                                                                                                                                                              
         │Transform single example using   │     └─────────────────┬─────────────────┘                                                                                                                                                                                                                                              
         │tft_layer(single_example_batched)│            ┌──────────▽──────────┐                                                                                                                                                                                                                                                     
         └────────────────┬────────────────┘            │Get transform_fn back│                                                                                                                                                                                                                                                     
              ┌───────────▽──────────┐                  │from transformation  │                                                                                                                                                                                                                                                     
              │Inspect transformed   │                  └──────────┬──────────┘                                                                                                                                                                                                                                                     
              │example to show names,│                 ┌───────────▽───────────┐                                                                                                                                                                                                                                                    
              │datatypes, and shapes │                 │Encode transform data  │                                                                                                                                                                                                                                                    
              └───────────┬──────────┘                 │using beam.FlatMapTuple│                                                                                                                                                                                                                                                    
                          │                            └───────────┬───────────┘                                                                                                                                                                                                                                                    
                          │                            ┌───────────▽───────────┐                                                                                                                                                                                                                                                    
                          │                            │Write it using         │                                                                                                                                                                                                                                                    
                          │                            │beam.io.WriteToTFRecord│                                                                                                                                                                                                                                                    
                          │                            └───────────┬───────────┘                                                                                                                                                                                                                                                    
                          │                           ┌────────────▽────────────┐                                                                                                                                                                                                                                                   
                          │                           │Write transform_fn using │                                                                                                                                                                                                                                                   
                          │                           │tft_beam.WriteTransformFn│                                                                                                                                                                                                                                                   
                          │                           └────────────┬────────────┘                                                                                                                                                                                                                                                   
                          │                                     ┌──▽──┐                                                                                                                                                                                                                                                             
                          │                                     │stuff│                                                                                                                                                                                                                                                             
                          │                                     └─────┘                                                                                                                                                                                                                                                             
                          │                                                                                                                                                                                                                                                                                                         
                        ┌─▽─┐                                                                                                                                                                                                                                                                                                       
                        │End│                                                                                                                                                                                                                                                                                                       
                        └───┘                                                                                                           
    

    Right off the bat, this is really good and helpful. As you can see, I am trying to depict what's happening inside the pipeline function using a conditional. Probably not what you intended, and if there's a better way, please let me know. What I'd like to do is to be able to encapsulate/abstract the details that when needed. I was thinking of two ways that this could be done.

    The first is to continue the left branch only after "stuff" is returned by the pipeline function. This way, I can fold the text in vim to abstract the details if needed.

    A second option is to allow for the branch to be rendered horizontally, so that if I want to go into the details, I can navigate in the text editor horizontally.

    Thanks for this excellent project!

    opened by pritamdodeja 2
  • Support on macOS (via Homebrew)

    Support on macOS (via Homebrew)

    Great project! It would be really nice if we had support on macOS via Homebrew, allowing users to install Diagon via brew install diagon.

    Is there anything that would prevent a build on OSX in principle? I tried to build it on OSX Big Sur 11.6 with Apple Clang 13, but no success with a first shot:

    5/12] Building CXX object CMakeFiles/input_output_test.dir/src/input_output_test.cpp.o
    FAILED: CMakeFiles/input_output_test.dir/src/input_output_test.cpp.o
    ccache /usr/local/opt/llvm/bin/clang++  -I/tmp/Diagon/build/src -I/tmp/Diagon/src -isystem /usr/local/opt/llvm/include/c++/v1 -O3 -DNDEBUG -isysroot /Library/Developer/CommandLineTools/SDKs/MacOSX11.3.sdk -Wall -Wno-sign-compare -Wno-attributes -std=gnu++17 -MD -MT CMakeFiles/input_output_test.dir/src/input_output_test.cpp.o -MF CMakeFiles/input_output_test.dir/src/input_output_test.cpp.o.d -o CMakeFiles/input_output_test.dir/src/input_output_test.cpp.o -c /tmp/Diagon/src/input_output_test.cpp
    /tmp/Diagon/src/input_output_test.cpp:67:34: error: invalid operands to binary expression ('basic_ostream<char, std::char_traits<char>>' and 'const std::filesystem::directory_entry')
            std::cout << "  [PASS] " << test << std::endl;
            ~~~~~~~~~~~~~~~~~~~~~~~~ ^  ~~~~
    /usr/local/opt/llvm/include/c++/v1/cstddef:141:3: note: candidate function template not viable: no known conversion from 'basic_ostream<char, std::char_traits<char>>' to 'std::byte' for 1st argument
      operator<< (byte  __lhs, _Integer __shift) noexcept
      ^
    /usr/local/opt/llvm/include/c++/v1/ostream:748:1: note: candidate function template not viable: no known conversion from 'const std::filesystem::directory_entry' to 'char' for 2nd argument
    operator<<(basic_ostream<_CharT, _Traits>& __os, char __cn)
    ^
    /usr/local/opt/llvm/include/c++/v1/ostream:781:1: note: candidate function template not viable: no known conversion from 'const std::filesystem::directory_entry' to 'char' for 2nd argument
    operator<<(basic_ostream<char, _Traits>& __os, char __c)
    ^
    /usr/local/opt/llvm/include/c++/v1/ostream:788:1: note: candidate function template not viable: no known conversion from 'const std::filesystem::directory_entry' to 'signed char' for 2nd argument
    operator<<(basic_ostream<char, _Traits>& __os, signed char __c)
    ^
    /usr/local/opt/llvm/include/c++/v1/ostream:795:1: note: candidate function template not viable: no known conversion from 'const std::filesystem::directory_entry' to 'unsigned char' for 2nd argument
    operator<<(basic_ostream<char, _Traits>& __os, unsigned char __c)
    ^
    /usr/local/opt/llvm/include/c++/v1/ostream:809:1: note: candidate function template not viable: no known conversion from 'const std::filesystem::directory_entry' to 'const char *' for 2nd argument
    operator<<(basic_ostream<_CharT, _Traits>& __os, const char* __strn)
    ^
    /usr/local/opt/llvm/include/c++/v1/ostream:855:1: note: candidate function template not viable: no known conversion from 'const std::filesystem::directory_entry' to 'const char *' for 2nd argument
    operator<<(basic_ostream<char, _Traits>& __os, const char* __str)
    ^
    /usr/local/opt/llvm/include/c++/v1/ostream:862:1: note: candidate function template not viable: no known conversion from 'const std::filesystem::directory_entry' to 'const signed char *' for 2nd argument
    operator<<(basic_ostream<char, _Traits>& __os, const signed char* __str)
    ^
    /usr/local/opt/llvm/include/c++/v1/ostream:870:1: note: candidate function template not viable: no known conversion from 'const std::filesystem::directory_entry' to 'const unsigned char *' for 2nd argument
    operator<<(basic_ostream<char, _Traits>& __os, const unsigned char* __str)
    ^
    /usr/local/opt/llvm/include/c++/v1/ostream:1055:1: note: candidate function template not viable: no known conversion from 'const std::filesystem::directory_entry' to 'const std::error_code' for 2nd argument
    operator<<(basic_ostream<_CharT, _Traits>& __os, const error_code& __ec)
    ^
    /usr/local/opt/llvm/include/c++/v1/ostream:741:1: note: candidate template ignored: deduced conflicting types for parameter '_CharT' ('char' vs. 'std::filesystem::directory_entry')
    operator<<(basic_ostream<_CharT, _Traits>& __os, _CharT __c)
    ^
    /usr/local/opt/llvm/include/c++/v1/__random/uniform_int_distribution.h:282:1: note: candidate template ignored: could not match 'uniform_int_distribution<type-parameter-0-2>' against 'const std::filesystem::directory_entry'
    operator<<(basic_ostream<_CharT, _Traits>& __os,
    ^
    /usr/local/opt/llvm/include/c++/v1/ostream:802:1: note: candidate template ignored: could not match 'const _CharT *' against 'std::filesystem::directory_entry'
    operator<<(basic_ostream<_CharT, _Traits>& __os, const _CharT* __str)
    ^
    /usr/local/opt/llvm/include/c++/v1/ostream:1038:1: note: candidate template ignored: could not match 'basic_string<type-parameter-0-0, type-parameter-0-1, type-parameter-0-2>' against 'const std::filesystem::directory_entry'
    operator<<(basic_ostream<_CharT, _Traits>& __os,
    ^
    /usr/local/opt/llvm/include/c++/v1/ostream:1046:1: note: candidate template ignored: could not match 'basic_string_view<type-parameter-0-0, type-parameter-0-1>' against 'std::filesystem::directory_entry'
    operator<<(basic_ostream<_CharT, _Traits>& __os,
    ^
    /usr/local/opt/llvm/include/c++/v1/ostream:1063:1: note: candidate template ignored: could not match 'shared_ptr<type-parameter-0-2>' against 'const std::filesystem::directory_entry'
    operator<<(basic_ostream<_CharT, _Traits>& __os, shared_ptr<_Yp> const& __p)
    ^
    /usr/local/opt/llvm/include/c++/v1/ostream:1082:1: note: candidate template ignored: could not match 'bitset<_Size>' against 'const std::filesystem::directory_entry'
    operator<<(basic_ostream<_CharT, _Traits>& __os, const bitset<_Size>& __x)
    ^
    /usr/local/opt/llvm/include/c++/v1/ostream:1030:11: note: candidate template ignored: requirement 'integral_constant<bool, false>::value' was not satisfied [with _Stream = std::ostream &, _Tp = std::filesystem::directory_entry]
    _Stream&& operator<<(_Stream&& __os, const _Tp& __x)
              ^
    /usr/local/opt/llvm/include/c++/v1/ostream:1075:1: note: candidate template ignored: could not match 'unique_ptr<type-parameter-0-2, type-parameter-0-3>' against 'const std::filesystem::directory_entry'
    operator<<(basic_ostream<_CharT, _Traits>& __os, unique_ptr<_Yp, _Dp> const& __p)
    ^
    /usr/local/opt/llvm/include/c++/v1/iomanip:362:1: note: candidate template ignored: could not match '__iom_t8<type-parameter-0-2>' against 'const std::filesystem::directory_entry'
    operator<<(basic_ostream<_CharT, _Traits>& __os, const __iom_t8<_MoneyT>& __x)
    ^
    /usr/local/opt/llvm/include/c++/v1/iomanip:482:1: note: candidate template ignored: could not match '__iom_t10<type-parameter-0-0>' against 'const std::filesystem::directory_entry'
    operator<<(basic_ostream<_CharT, _Traits>& __os, const __iom_t10<_CharT>& __x)
    ^
    /usr/local/opt/llvm/include/c++/v1/iomanip:572:33: note: candidate template ignored: could not match '__quoted_output_proxy<type-parameter-0-0, type-parameter-0-2, type-parameter-0-1>' against 'const std::filesystem::directory_entry'
    basic_ostream<_CharT, _Traits>& operator<<(
                                    ^
    /usr/local/opt/llvm/include/c++/v1/iomanip:592:33: note: candidate template ignored: could not match '__quoted_proxy<type-parameter-0-0, type-parameter-0-1, type-parameter-0-2>' against 'const std::filesystem::directory_entry'
    basic_ostream<_CharT, _Traits>& operator<<(
                                    ^
    /usr/local/opt/llvm/include/c++/v1/ostream:188:20: note: candidate function not viable: no known conversion from 'const std::filesystem::directory_entry' to 'std::ostream &(*)(std::ostream &)' for 1st argument
        basic_ostream& operator<<(basic_ostream& (*__pf)(basic_ostream&))
                       ^
    /usr/local/opt/llvm/include/c++/v1/ostream:192:20: note: candidate function not viable: no known conversion from 'const std::filesystem::directory_entry' to 'basic_ios<std::basic_ostream<char>::char_type, std::basic_ostream<char>::traits_type> &(*)(basic_ios<std::basic_ostream<char>::char_type, std::basic_ostream<char>::traits_type> &)' (aka 'basic_ios<char, std::char_traits<char>> &(*)(basic_ios<char, std::char_traits<char>> &)') for 1st argument
        basic_ostream& operator<<(basic_ios<char_type, traits_type>&
                       ^
    /usr/local/opt/llvm/include/c++/v1/ostream:197:20: note: candidate function not viable: no known conversion from 'const std::filesystem::directory_entry' to 'std::ios_base &(*)(std::ios_base &)' for 1st argument
        basic_ostream& operator<<(ios_base& (*__pf)(ios_base&))
                       ^
    /usr/local/opt/llvm/include/c++/v1/ostream:200:20: note: candidate function not viable: no known conversion from 'const std::filesystem::directory_entry' to 'bool' for 1st argument
        basic_ostream& operator<<(bool __n);
                       ^
    /usr/local/opt/llvm/include/c++/v1/ostream:201:20: note: candidate function not viable: no known conversion from 'const std::filesystem::directory_entry' to 'short' for 1st argument
        basic_ostream& operator<<(short __n);
                       ^
    /usr/local/opt/llvm/include/c++/v1/ostream:202:20: note: candidate function not viable: no known conversion from 'const std::filesystem::directory_entry' to 'unsigned short' for 1st argument
        basic_ostream& operator<<(unsigned short __n);
                       ^
    /usr/local/opt/llvm/include/c++/v1/ostream:203:20: note: candidate function not viable: no known conversion from 'const std::filesystem::directory_entry' to 'int' for 1st argument
        basic_ostream& operator<<(int __n);
                       ^
    /usr/local/opt/llvm/include/c++/v1/ostream:204:20: note: candidate function not viable: no known conversion from 'const std::filesystem::directory_entry' to 'unsigned int' for 1st argument
        basic_ostream& operator<<(unsigned int __n);
                       ^
    /usr/local/opt/llvm/include/c++/v1/ostream:205:20: note: candidate function not viable: no known conversion from 'const std::filesystem::directory_entry' to 'long' for 1st argument
        basic_ostream& operator<<(long __n);
                       ^
    /usr/local/opt/llvm/include/c++/v1/ostream:206:20: note: candidate function not viable: no known conversion from 'const std::filesystem::directory_entry' to 'unsigned long' for 1st argument
        basic_ostream& operator<<(unsigned long __n);
                       ^
    /usr/local/opt/llvm/include/c++/v1/ostream:207:20: note: candidate function not viable: no known conversion from 'const std::filesystem::directory_entry' to 'long long' for 1st argument
        basic_ostream& operator<<(long long __n);
                       ^
    /usr/local/opt/llvm/include/c++/v1/ostream:208:20: note: candidate function not viable: no known conversion from 'const std::filesystem::directory_entry' to 'unsigned long long' for 1st argument
        basic_ostream& operator<<(unsigned long long __n);
                       ^
    /usr/local/opt/llvm/include/c++/v1/ostream:209:20: note: candidate function not viable: no known conversion from 'const std::filesystem::directory_entry' to 'float' for 1st argument
        basic_ostream& operator<<(float __f);
                       ^
    /usr/local/opt/llvm/include/c++/v1/ostream:210:20: note: candidate function not viable: no known conversion from 'const std::filesystem::directory_entry' to 'double' for 1st argument
        basic_ostream& operator<<(double __f);
                       ^
    /usr/local/opt/llvm/include/c++/v1/ostream:211:20: note: candidate function not viable: no known conversion from 'const std::filesystem::directory_entry' to 'long double' for 1st argument
        basic_ostream& operator<<(long double __f);
                       ^
    /usr/local/opt/llvm/include/c++/v1/ostream:212:20: note: candidate function not viable: no known conversion from 'const std::filesystem::directory_entry' to 'const void *' for 1st argument; take the address of the argument with &
        basic_ostream& operator<<(const void* __p);
                       ^
    /usr/local/opt/llvm/include/c++/v1/ostream:213:20: note: candidate function not viable: no known conversion from 'const std::filesystem::directory_entry' to 'basic_streambuf<std::basic_ostream<char>::char_type, std::basic_ostream<char>::traits_type> *' (aka 'basic_streambuf<char, std::char_traits<char>> *') for 1st argument
        basic_ostream& operator<<(basic_streambuf<char_type, traits_type>* __sb);
                       ^
    /usr/local/opt/llvm/include/c++/v1/ostream:216:20: note: candidate function not viable: no known conversion from 'const std::filesystem::directory_entry' to 'std::nullptr_t' (aka 'nullptr_t') for 1st argument
        basic_ostream& operator<<(nullptr_t)
                       ^
    /tmp/Diagon/src/input_output_test.cpp:69:34: error: invalid operands to binary expression ('basic_ostream<char, std::char_traits<char>>' and 'const std::filesystem::directory_entry')
            std::cout << "  [FAIL] " << test << std::endl;
            ~~~~~~~~~~~~~~~~~~~~~~~~ ^  ~~~~
    /usr/local/opt/llvm/include/c++/v1/cstddef:141:3: note: candidate function template not viable: no known conversion from 'basic_ostream<char, std::char_traits<char>>' to 'std::byte' for 1st argument
      operator<< (byte  __lhs, _Integer __shift) noexcept
      ^
    /usr/local/opt/llvm/include/c++/v1/ostream:748:1: note: candidate function template not viable: no known conversion from 'const std::filesystem::directory_entry' to 'char' for 2nd argument
    operator<<(basic_ostream<_CharT, _Traits>& __os, char __cn)
    ^
    /usr/local/opt/llvm/include/c++/v1/ostream:781:1: note: candidate function template not viable: no known conversion from 'const std::filesystem::directory_entry' to 'char' for 2nd argument
    operator<<(basic_ostream<char, _Traits>& __os, char __c)
    ^
    /usr/local/opt/llvm/include/c++/v1/ostream:788:1: note: candidate function template not viable: no known conversion from 'const std::filesystem::directory_entry' to 'signed char' for 2nd argument
    operator<<(basic_ostream<char, _Traits>& __os, signed char __c)
    ^
    /usr/local/opt/llvm/include/c++/v1/ostream:795:1: note: candidate function template not viable: no known conversion from 'const std::filesystem::directory_entry' to 'unsigned char' for 2nd argument
    operator<<(basic_ostream<char, _Traits>& __os, unsigned char __c)
    ^
    /usr/local/opt/llvm/include/c++/v1/ostream:809:1: note: candidate function template not viable: no known conversion from 'const std::filesystem::directory_entry' to 'const char *' for 2nd argument
    operator<<(basic_ostream<_CharT, _Traits>& __os, const char* __strn)
    ^
    /usr/local/opt/llvm/include/c++/v1/ostream:855:1: note: candidate function template not viable: no known conversion from 'const std::filesystem::directory_entry' to 'const char *' for 2nd argument
    operator<<(basic_ostream<char, _Traits>& __os, const char* __str)
    ^
    /usr/local/opt/llvm/include/c++/v1/ostream:862:1: note: candidate function template not viable: no known conversion from 'const std::filesystem::directory_entry' to 'const signed char *' for 2nd argument
    operator<<(basic_ostream<char, _Traits>& __os, const signed char* __str)
    ^
    /usr/local/opt/llvm/include/c++/v1/ostream:870:1: note: candidate function template not viable: no known conversion from 'const std::filesystem::directory_entry' to 'const unsigned char *' for 2nd argument
    operator<<(basic_ostream<char, _Traits>& __os, const unsigned char* __str)
    ^
    /usr/local/opt/llvm/include/c++/v1/ostream:1055:1: note: candidate function template not viable: no known conversion from 'const std::filesystem::directory_entry' to 'const std::error_code' for 2nd argument
    operator<<(basic_ostream<_CharT, _Traits>& __os, const error_code& __ec)
    ^
    /usr/local/opt/llvm/include/c++/v1/ostream:741:1: note: candidate template ignored: deduced conflicting types for parameter '_CharT' ('char' vs. 'std::filesystem::directory_entry')
    operator<<(basic_ostream<_CharT, _Traits>& __os, _CharT __c)
    ^
    /usr/local/opt/llvm/include/c++/v1/__random/uniform_int_distribution.h:282:1: note: candidate template ignored: could not match 'uniform_int_distribution<type-parameter-0-2>' against 'const std::filesystem::directory_entry'
    operator<<(basic_ostream<_CharT, _Traits>& __os,
    ^
    /usr/local/opt/llvm/include/c++/v1/ostream:802:1: note: candidate template ignored: could not match 'const _CharT *' against 'std::filesystem::directory_entry'
    operator<<(basic_ostream<_CharT, _Traits>& __os, const _CharT* __str)
    ^
    /usr/local/opt/llvm/include/c++/v1/ostream:1038:1: note: candidate template ignored: could not match 'basic_string<type-parameter-0-0, type-parameter-0-1, type-parameter-0-2>' against 'const std::filesystem::directory_entry'
    operator<<(basic_ostream<_CharT, _Traits>& __os,
    ^
    /usr/local/opt/llvm/include/c++/v1/ostream:1046:1: note: candidate template ignored: could not match 'basic_string_view<type-parameter-0-0, type-parameter-0-1>' against 'std::filesystem::directory_entry'
    operator<<(basic_ostream<_CharT, _Traits>& __os,
    ^
    /usr/local/opt/llvm/include/c++/v1/ostream:1063:1: note: candidate template ignored: could not match 'shared_ptr<type-parameter-0-2>' against 'const std::filesystem::directory_entry'
    operator<<(basic_ostream<_CharT, _Traits>& __os, shared_ptr<_Yp> const& __p)
    ^
    /usr/local/opt/llvm/include/c++/v1/ostream:1082:1: note: candidate template ignored: could not match 'bitset<_Size>' against 'const std::filesystem::directory_entry'
    operator<<(basic_ostream<_CharT, _Traits>& __os, const bitset<_Size>& __x)
    ^
    /usr/local/opt/llvm/include/c++/v1/ostream:1030:11: note: candidate template ignored: requirement 'integral_constant<bool, false>::value' was not satisfied [with _Stream = std::ostream &, _Tp = std::filesystem::directory_entry]
    _Stream&& operator<<(_Stream&& __os, const _Tp& __x)
              ^
    /usr/local/opt/llvm/include/c++/v1/ostream:1075:1: note: candidate template ignored: could not match 'unique_ptr<type-parameter-0-2, type-parameter-0-3>' against 'const std::filesystem::directory_entry'
    operator<<(basic_ostream<_CharT, _Traits>& __os, unique_ptr<_Yp, _Dp> const& __p)
    ^
    /usr/local/opt/llvm/include/c++/v1/iomanip:362:1: note: candidate template ignored: could not match '__iom_t8<type-parameter-0-2>' against 'const std::filesystem::directory_entry'
    operator<<(basic_ostream<_CharT, _Traits>& __os, const __iom_t8<_MoneyT>& __x)
    ^
    /usr/local/opt/llvm/include/c++/v1/iomanip:482:1: note: candidate template ignored: could not match '__iom_t10<type-parameter-0-0>' against 'const std::filesystem::directory_entry'
    operator<<(basic_ostream<_CharT, _Traits>& __os, const __iom_t10<_CharT>& __x)
    ^
    /usr/local/opt/llvm/include/c++/v1/iomanip:572:33: note: candidate template ignored: could not match '__quoted_output_proxy<type-parameter-0-0, type-parameter-0-2, type-parameter-0-1>' against 'const std::filesystem::directory_entry'
    basic_ostream<_CharT, _Traits>& operator<<(
                                    ^
    /usr/local/opt/llvm/include/c++/v1/iomanip:592:33: note: candidate template ignored: could not match '__quoted_proxy<type-parameter-0-0, type-parameter-0-1, type-parameter-0-2>' against 'const std::filesystem::directory_entry'
    basic_ostream<_CharT, _Traits>& operator<<(
                                    ^
    /usr/local/opt/llvm/include/c++/v1/ostream:188:20: note: candidate function not viable: no known conversion from 'const std::filesystem::directory_entry' to 'std::ostream &(*)(std::ostream &)' for 1st argument
        basic_ostream& operator<<(basic_ostream& (*__pf)(basic_ostream&))
                       ^
    /usr/local/opt/llvm/include/c++/v1/ostream:192:20: note: candidate function not viable: no known conversion from 'const std::filesystem::directory_entry' to 'basic_ios<std::basic_ostream<char>::char_type, std::basic_ostream<char>::traits_type> &(*)(basic_ios<std::basic_ostream<char>::char_type, std::basic_ostream<char>::traits_type> &)' (aka 'basic_ios<char, std::char_traits<char>> &(*)(basic_ios<char, std::char_traits<char>> &)') for 1st argument
        basic_ostream& operator<<(basic_ios<char_type, traits_type>&
                       ^
    /usr/local/opt/llvm/include/c++/v1/ostream:197:20: note: candidate function not viable: no known conversion from 'const std::filesystem::directory_entry' to 'std::ios_base &(*)(std::ios_base &)' for 1st argument
        basic_ostream& operator<<(ios_base& (*__pf)(ios_base&))
                       ^
    /usr/local/opt/llvm/include/c++/v1/ostream:200:20: note: candidate function not viable: no known conversion from 'const std::filesystem::directory_entry' to 'bool' for 1st argument
        basic_ostream& operator<<(bool __n);
                       ^
    /usr/local/opt/llvm/include/c++/v1/ostream:201:20: note: candidate function not viable: no known conversion from 'const std::filesystem::directory_entry' to 'short' for 1st argument
        basic_ostream& operator<<(short __n);
                       ^
    /usr/local/opt/llvm/include/c++/v1/ostream:202:20: note: candidate function not viable: no known conversion from 'const std::filesystem::directory_entry' to 'unsigned short' for 1st argument
        basic_ostream& operator<<(unsigned short __n);
                       ^
    /usr/local/opt/llvm/include/c++/v1/ostream:203:20: note: candidate function not viable: no known conversion from 'const std::filesystem::directory_entry' to 'int' for 1st argument
        basic_ostream& operator<<(int __n);
                       ^
    /usr/local/opt/llvm/include/c++/v1/ostream:204:20: note: candidate function not viable: no known conversion from 'const std::filesystem::directory_entry' to 'unsigned int' for 1st argument
        basic_ostream& operator<<(unsigned int __n);
                       ^
    /usr/local/opt/llvm/include/c++/v1/ostream:205:20: note: candidate function not viable: no known conversion from 'const std::filesystem::directory_entry' to 'long' for 1st argument
        basic_ostream& operator<<(long __n);
                       ^
    /usr/local/opt/llvm/include/c++/v1/ostream:206:20: note: candidate function not viable: no known conversion from 'const std::filesystem::directory_entry' to 'unsigned long' for 1st argument
        basic_ostream& operator<<(unsigned long __n);
                       ^
    /usr/local/opt/llvm/include/c++/v1/ostream:207:20: note: candidate function not viable: no known conversion from 'const std::filesystem::directory_entry' to 'long long' for 1st argument
        basic_ostream& operator<<(long long __n);
                       ^
    /usr/local/opt/llvm/include/c++/v1/ostream:208:20: note: candidate function not viable: no known conversion from 'const std::filesystem::directory_entry' to 'unsigned long long' for 1st argument
        basic_ostream& operator<<(unsigned long long __n);
                       ^
    /usr/local/opt/llvm/include/c++/v1/ostream:209:20: note: candidate function not viable: no known conversion from 'const std::filesystem::directory_entry' to 'float' for 1st argument
        basic_ostream& operator<<(float __f);
                       ^
    /usr/local/opt/llvm/include/c++/v1/ostream:210:20: note: candidate function not viable: no known conversion from 'const std::filesystem::directory_entry' to 'double' for 1st argument
        basic_ostream& operator<<(double __f);
                       ^
    /usr/local/opt/llvm/include/c++/v1/ostream:211:20: note: candidate function not viable: no known conversion from 'const std::filesystem::directory_entry' to 'long double' for 1st argument
        basic_ostream& operator<<(long double __f);
                       ^
    /usr/local/opt/llvm/include/c++/v1/ostream:212:20: note: candidate function not viable: no known conversion from 'const std::filesystem::directory_entry' to 'const void *' for 1st argument; take the address of the argument with &
        basic_ostream& operator<<(const void* __p);
                       ^
    /usr/local/opt/llvm/include/c++/v1/ostream:213:20: note: candidate function not viable: no known conversion from 'const std::filesystem::directory_entry' to 'basic_streambuf<std::basic_ostream<char>::char_type, std::basic_ostream<char>::traits_type> *' (aka 'basic_streambuf<char, std::char_traits<char>> *') for 1st argument
        basic_ostream& operator<<(basic_streambuf<char_type, traits_type>* __sb);
                       ^
    /usr/local/opt/llvm/include/c++/v1/ostream:216:20: note: candidate function not viable: no known conversion from 'const std::filesystem::directory_entry' to 'std::nullptr_t' (aka 'nullptr_t') for 1st argument
        basic_ostream& operator<<(nullptr_t)
                       ^
    2 errors generated.
    [6/12] Building CXX object src/translator/graph_planar/CMakeFiles/translator_graph_planar.dir/GraphPlanar.cpp.o
    FAILED: src/translator/graph_planar/CMakeFiles/translator_graph_planar.dir/GraphPlanar.cpp.o
    ccache /usr/local/opt/llvm/bin/clang++  -I/tmp/Diagon/build/src -I/tmp/Diagon/src -I/tmp/Diagon/build/_deps/antlr-src/runtime/Cpp/runtime/src -isystem /usr/local/opt/llvm/include/c++/v1 -O3 -DNDEBUG -isysroot /Library/Developer/CommandLineTools/SDKs/MacOSX11.3.sdk -Wno-attributes -Wall -Wno-sign-compare -std=gnu++17 -MD -MT src/translator/graph_planar/CMakeFiles/translator_graph_planar.dir/GraphPlanar.cpp.o -MF src/translator/graph_planar/CMakeFiles/translator_graph_planar.dir/GraphPlanar.cpp.o.d -o src/translator/graph_planar/CMakeFiles/translator_graph_planar.dir/GraphPlanar.cpp.o -c /tmp/Diagon/src/translator/graph_planar/GraphPlanar.cpp
    /tmp/Diagon/src/translator/graph_planar/GraphPlanar.cpp:18:10: fatal error: 'boost/graph/adjacency_list.hpp' file not found
    #include <boost/graph/adjacency_list.hpp>
             ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    1 error generated.
    ninja: build
    
    opened by mavam 3
  • Some grammar online demos not working

    Some grammar online demos not working

    When trying https://arthursonzogni.com/Diagon/#Grammar and selecting ISO-EBNF-EBNF we get this error:

    2:14: Syntax error: expected production rule separator
    

    And when selecting WSN-WSN we get this error:

    2:14: Syntax error
    
    opened by mingodad 2
  • leading spaces option

    leading spaces option

    Hi. Your application is very fine and easy use syntax. It is very useful for me. I use Diagon in plain text documentation. Would it be possible to add leading spaces, like indented, to the Math generator, like generator option? Or maybe as a general option? Thank you.

    enhancement Accepted 
    opened by cahuy 2
Owner
Arthur Sonzogni
Love C++. - Image rendering / analysis. - Ascii art / TUI. - Games
Arthur Sonzogni
Convert images to ASCII art.

Image-to-ascii Convert images to ASCII art. This program using stb library to load images. Usage Usage: compile the program to get *.out file

Abdeljalil Bouchfar 9 Jun 13, 2022
Spotfetch - a tool to fetch spotify info with with ascii picture written in C++

A C++ fetch tool for spotify, its a cool little tool to retrieve information on current playing song on spotify. Run the command and be treated to a pixelated version of the album art accompanied by its information.

xfcisco 13 May 6, 2022
Markdown renderer for Dear ImGui using MD4C parser

imgui_md Markdown renderer for Dear ImGui using MD4C parser. C++11 or above imgui_md currently supports the following markdown functionality: Wrapped

Dmitry Mekhontsev 58 Jun 24, 2022
A GIF art engine that will allow you to generate multi-layer GIFs from single GIFs as layers.

A GIF art engine that will allow you to generate multi-layer GIFs from single GIFs as layers. All the code in this repository has been written by me in c++, inspired by the generative art engine of HashLips that does not support GIFs as layers. The problem arose from my and my teamleader's need to generate animated images and then GIFs, in the same way as HashLips generated static images.

Andre 58 May 31, 2022
Make It Pixel is a programming language to process images to look like pixel art.

Make images look like pixel art Make It Pixel is a programming language to process images to look like pixel art. Its interpreter is written in C++ an

null 3 Mar 30, 2022
YAITAA - Yet Another Image To A(NSI) Art (converter).

YAITAA - Yet Another Image To A(NSI) Art (converter).

hkc 7 Jun 14, 2022
YAITAA - Yet Another Image To A(NSI) Art (converter)

YAITAA - Yet Another Image To A(NSI) Art (converter) Yes, very original. Old name is asciify-reborn for reasons stated bellow Reasons for reimplementa

hkc 7 Jun 27, 2022
ZT is a zig-contained library that automatically compiles+links ImGui, OpenGL, and GLFW into typed packages.

ZT is a zig-contained library that automatically compiles+links ImGui, OpenGL, and GLFW into typed packages. By zig contained I mean that ZT is intend

null 80 Jun 18, 2022
pngtostl is a program that converts a PNG image into STL 3D models

pngtostl is a program that converts a PNG image into a litophane, in STL format, suitable to be printed by entry level 3D printers.

Salvatore Sanfilippo 157 Jun 6, 2022
Example program for integrating Dear ImGui and GLFW into Source's App System

This is an example program for integrating Dear ImGui and GLFW into Source's app system, the same thing Source's tools use. Feel free to do with this

null 9 Apr 16, 2022
You can use this to compile the code and output images into a word doc for assignment purposes

Code_n_Ouput_to_docx You can use this to compile the code and output images into a word doc for assignment purposes Basic requirements: Python 3.7 or

Aaditya Prabu K 1 Dec 25, 2021
Utility to combine color channels from different textures into a single output.

unity-texture-packer ?? Utility to merge different texture channels into a final texture output. Install Using Git Make sure the Git client is install

Andy Duboc 552 Jun 25, 2022
This program converts APNG animations into animated GIF format

apng2gif This project has been in disrepair for long time. Recently, there is need to change the number of loops in apng file. So I used it to modify

Ted Zyzsdy 1 Jan 20, 2022
Generate a fictive and unique planet in ascii art with your gnupg fingerprint

GF2PA GPG Fingerprint 2 Planet Ascii Description Examples Usage Compilation Execution Other examples Description Generate a fictive and unique planet

null 4 Mar 12, 2022
Simple image to ASCII art converter

ascii-art Simple image to ASCII art converter for Windows. Does not support gifs (for now). Usage Unzip the .zip folder from the releases and put your

Mattias Aksli 2 Dec 2, 2021
Convert images to ASCII art.

Image-to-ascii Convert images to ASCII art. This program using stb library to load images. Usage Usage: compile the program to get *.out file

Abdeljalil Bouchfar 9 Jun 13, 2022
AAAAnimation - An ASCII Art animation program working with FFmpeg and Qt. Some code is written in assembly.

AAAAnimation About This is a term project of the Assembly Language and System Programming course in NCU. It decodes video with FFmpeg and plays ASCII

null 18 May 25, 2022
A fast fetch written in C, with the ppfetch Ascii Art.

Redfetch A fast fetch written in C, with the ppfetch Ascii Art. Dependencies wmctrl A C compiler (such as clang or gcc) make Installation Build: git c

Redson dos Santos Silva 18 Jun 11, 2022
This package estimates the calibration parameters that transforms the camera frame (parent) into the lidar frame (child)

Camera-LiDAR Calibration This package estimates the calibration parameters that transforms the camera frame (parent) into the lidar frame (child). We

Australian Centre for Field Robotics 138 Jun 27, 2022
nicegraf-shaderc is a command-line tool that transforms HLSL code into shaders for various graphics APIs.

User Manual Table of Contents Introduction Project Status Obtaining the Source Code and Building Running Defining Techniques Generated Header File Pip

nicebyte 88 Jun 20, 2022
This is the code that powers FiniteCurve.com, a TSP art style generator without the NP-hard complexity.

FiniteCurve.com -- TSP art on a CPU budget This is the code that powers FiniteCurve.com, a TSP art style generator without the NP-hard complexity. For

Vidar Holen 7 Apr 11, 2022
The DirectX Shader Compiler project includes a compiler and related tools used to compile High-Level Shader Language (HLSL) programs into DirectX Intermediate Language (DXIL) representation

DirectX Shader Compiler The DirectX Shader Compiler project includes a compiler and related tools used to compile High-Level Shader Language (HLSL) pr

Microsoft 2.2k Jun 27, 2022
functorch is a prototype of JAX-like composable function transforms for PyTorch.

functorch Why functorch? | Install guide | Transformations | Future Plans functorch is a prototype of JAX-like composable FUNCtion transforms for pyTO

Richard Zou 1k Jun 24, 2022
functorch is a prototype of JAX-like composable function transforms for PyTorch.

functorch Why functorch? | Install guide | Transformations | Future Plans functorch is a prototype of JAX-like composable FUNCtion transforms for pyTO

Facebook Research 1k Jun 24, 2022
This is the git repository for the FFTW library for computing Fourier transforms (version 3.x), maintained by the FFTW authors.

This is the git repository for the FFTW library for computing Fourier transforms (version 3.x), maintained by the FFTW authors.

FFTW 2.1k Jun 24, 2022
functorch is a prototype of JAX-like composable function transforms for PyTorch.

functorch Why functorch? | Install guide | Transformations | Documentation | Future Plans This library is currently under heavy development - if you h

null 1k Jun 26, 2022
FreeModbus is a Modbus ASCII/RTU and Modbus TCP implementation for embedded systems

FreeModbus is a Modbus ASCII/RTU and Modbus TCP implementation for embedded systems. It provides an implementation of the Modbus Application Protocol

Mahmood Hosseini 17 Apr 7, 2022
Spotfetch - a tool to fetch spotify info with with ascii picture written in C++

A C++ fetch tool for spotify, its a cool little tool to retrieve information on current playing song on spotify. Run the command and be treated to a pixelated version of the album art accompanied by its information.

xfcisco 13 May 6, 2022
This program converts ASCII STL files to RT files for miniRT.

STL to RT This program converts ASCII STL files to RT files for miniRT. Input the ASCII STL file to the standard input and output the RT file from the

null 5 Mar 29, 2021