UP | HOME

awesome-text-to-x

1 Awesome Text-To-X

I would classify myself as a "visual thinker". I would always understand better with a diagram first and a narrative second. However when ever I want to create a beautiful diagram to bring my point across, it has always been faster to sketch it with pen and paper than to design it in any of the many design programs.

But there should be something better. I mean something that allows us to draw faster in the computer than in plain and paper.

And that is where Text-to-X "compilers" help us. With this tools you write on your keyboard the relationships of the diagram you want to create, and the tools themselves do the arrangement, layout and positioning of what you are trying to say.

This tools are not very flexible, they make the decisions for you and if you don't like them then there is not much you can do about. But having less options is a good thing. You finish typing your ideas, your diagram is done and then you can move on to the next idea. Plus also you can store your file on your source code repositor (git, svn, pijul, etc) and modify it later.

Through the years I've become a fan of text-to-x tools that allow to express visually but to create with the keyboard and have assembled the following collection of tools. Please if you know anymore tools that should be in the list, create creat an issue on github. thank you and enjoy your typing.

1.1 Text to BPMN

1.1.1 BPMN Sketch Miner Text to BPMN Diagrams

Employee:

Fill in the form
Mark the bills
Scan the bills
(send the dossier)
(receive decision)

Department Head:

(receive the dossier)
Check the costs|Check the description
Reject the request
(send decision)

...
Check the costs|Check the description
Accept the request
(send decision)
bpmn-sketch-miner-transparent.png

2 Text to Video

Videopuppet.com is an amazing tool that takes a markdown like file and creates a narrated video from it.

I thin the best explanation is their own introductory video.

[![](0.jpg)](http://www.youtube.com/watch?v=RR5Ph3iZ37g "Video written in markdown")


3 Text to 3D

3.1 openscad.org

Creates 3d models :: screenshot.png

// increase the visual detail
$fn = 100;

// the main body :
// a cylinder
rocket_d = 30; 				// 3 cm wide
rocket_r = rocket_d / 2;
rocket_h = 100; 			// 10 cm tall
cylinder(d = rocket_d, h = rocket_h);

// the head :
// a cone
head_d = 40;  				// 4 cm wide
head_r = head_d / 2;
head_h = 40;  				// 4 cm tall
// prepare a triangle
tri_base = head_r;
tri_height = head_h;
tri_points = [[0,			 0],
			  [tri_base,	 0],
			  [0,	tri_height]];
// rotation around X-axis and then 360° around Z-axis
// put it on top of rocket's body
translate([0,0,rocket_h])
rotate_extrude(angle = 360)
	polygon(tri_points);

// the wings :
// 3x triangles
wing_w = 2;					// 2 mm thick
many = 3;					// 3x wings
wing_l = 40;				// length
wing_h = 40;				// height
wing_points = [[0,0],[wing_l,0],[0,wing_h]];

module wing() {
	// let it a bit inside the main body
	in_by = 1;				// 1 mm
	// set it up on the rocket's perimeter
	translate([rocket_r - in_by,0,0])
	// set it upright by rotating around X-axis
	rotate([90,0,0])
	// set some width and center it
	linear_extrude(height = wing_w,center = true)
	// make a triangle
		polygon(wing_points);
}

for (i = [0: many - 1])
	rotate([0, 0, 360 / many * i])
	wing();
openscad_rocket-transparent.png

4 Text to UML

4.1 plantuml.com

4.1.1 Sequence Diagram

@startuml
Alice -> Bob: Authentication Request
Bob --> Alice: Authentication Response

Alice -> Bob: Another authentication Request
Alice <-- Bob: Another authentication Response
@enduml
screenshot-20200207-193201-transparent.png

4.1.2 Component Diagram

@startuml

skinparam component {
    FontColor          black
    AttributeFontColor black
    FontSize           17
    AttributeFontSize  15
    AttributeFontname  Droid Sans Mono
    BackgroundColor    #6A9EFF
    BorderColor        black
    ArrowColor         #222266
}

title "OSCIED Charms Relations (Simple)"
skinparam componentStyle uml2

cloud {
    interface "JuJu" as juju
    interface "API" as api
    interface "Storage" as storage
    interface "Transform" as transform
    interface "Publisher" as publisher
    interface "Website" as website

    juju - [JuJu]

    website - [WebUI]
    [WebUI] .up.> juju
    [WebUI] .down.> storage
    [WebUI] .right.> api

    api - [Orchestra]
    transform - [Orchestra]
    publisher - [Orchestra]
    [Orchestra] .up.> juju
    [Orchestra] .down.> storage

    [Transform] .up.> juju
    [Transform] .down.> storage
    [Transform] ..> transform

    [Publisher] .up.> juju
    [Publisher] .down.> storage
    [Publisher] ..> publisher

    storage - [Storage]
    [Storage] .up.> juju
}

@enduml
screenshot-20200207-193350-transparent.png

4.1.3 Class Diagram

@startuml
interface Command {
    execute()
    undo()
}
class Invoker{
    setCommand()
}
class Client
class Receiver{
    action()
}
class ConcreteCommand{
    execute()
    undo()
}

Command <|-down- ConcreteCommand
Client -right-> Receiver
Client --> ConcreteCommand
Invoker o-right-> Command
Receiver <-left- ConcreteCommand
@enduml
screenshot-20200207-193655-transparent.png

4.1.4 More diagrams can be found in:

4.2 mermaid.js

4.2.1 Flowchart

graph TD;
    A-->B;
    A-->C;
    B-->D;
    C-->D;
mermaidjs_flowchart-transparent.png

4.2.2 Sequence diagram

sequenceDiagram
participant Alice
participant Bob
Alice->>John: Hello John, how are you?
loop Healthcheck
    John->>John: Fight against hypochondria
end
Note right of John: Rational thoughts <br/>prevail!
John-->>Alice: Great!
John->>Bob: How about you?
Bob-->>John: Jolly good!
mermaidjs_sequence-transparent.png

4.2.3 Gantt diagram

gantt
dateFormat  YYYY-MM-DD
title Adding GANTT diagram to mermaid
excludes weekdays 2014-01-10

section A section
Completed task            :done,    des1, 2014-01-06,2014-01-08
Active task               :active,  des2, 2014-01-09, 3d
Future task               :         des3, after des2, 5d
Future task2               :         des4, after des3, 5d
mermaidjs_gantt-transparent.png

4.3 yuml.me

4.3.1 Class Diagram

// Cool Class Diagram
[Customer|-forname:string;surname:string|doShiz()]<>-orders*>[Order]
[Order]++-0..*>[LineItem]
[Order]-[note:Aggregate Root ala DDD{bg:wheat}]
08fdfe82.png

4.3.2 Activity Diagram

(start)-|a|
|a|->(Grind Coffee)->(Pour Shot)->(Froth Milk)->(Pour Coffee)->|b|
|a|->(Fry Eggs)->(Make Toast)->(Butter Toast)->|b|
|b|-><c>[want another coffee]->(Grind Coffee)
<c>[ready to go]->(end)
69f94f72-transparent.png

4.3.3 Use cases

[Customer]-(Sign In)
[Customer]-(Buy Products)
(Buy Products)>(Browse Products)
(Buy Products)>(Checkout)
(Checkout)<(Add New Credit Card)
(Checkout)
[Office Staff]-(Processs Order)
a9d0a33f.png

4.4 websequencediagrams.com

Just sequence diagrams

title Authentication Sequence

Alice->Bob: Authentication Request
note right of Bob: Bob thinks about it
Bob->Alice: Authentication Response
websequencediagarms-transparent.png

4.5 blockdiag.com

4.5.1 Block Diagrams

blockdiag {
   A -> B -> C -> D;
   A -> E -> F -> G;
}
blockdiag-65aa4915fbaf749b122e4ff0f598bd6eed011979-transparent.png

4.5.4 Network diagrams.

nwdiag {
  network Sample_front {
    address = "192.168.10.0/24";

    // define group
    group web {
      web01 [address = ".1"];
      web02 [address = ".2"];
    }
  }
  network Sample_back {
    address = "192.168.20.0/24";
    web01 [address = ".1"];
    web02 [address = ".2"];
    db01 [address = ".101"];
    db02 [address = ".102"];

    // define network using defined nodes
    group db {
      db01;
      db02;
    }
  }
}
nwdiag-5158279d2950cc1fc6b424d4999923614bb2c944-transparent.png

4.6 ditaa

Convert diagrams drawn using ascii art (block diagrams) , into proper bitmap graphics.

+--------+   +-------+    +-------+
|        | --+ ditaa +--> |       |
|  Text  |   +-------+    |diagram|
|Document|   |!magic!|    |       |
|     {d}|   |       |    |       |
+---+----+   +-------+    +-------+
    :                         ^
    |       Lots of work      |
    +-------------------------+
ditaa-transparent.png

4.7 graphviz.org Creates graphs (as in Edges and Vertex).

digraph G {

	subgraph cluster_0 {
		style=filled;
		color=lightgrey;
		node [style=filled,color=white];
		a0 -> a1 -> a2 -> a3;
		label = "process #1";
	}

	subgraph cluster_1 {
		node [style=filled];
		b0 -> b1 -> b2 -> b3;
		label = "process #2";
		color=blue
	}
	start -> a0;
	start -> b0;
	a1 -> b3;
	b2 -> a3;
	a3 -> a0;
	a3 -> end;
	b3 -> end;

	start [shape=Mdiamond];
	end [shape=Msquare];
}
graphviz_cluster-transparent.png

4.7.1 finite state machine

digraph finite_state_machine {
	rankdir=LR;
	size="8,5"
	node [shape = doublecircle]; LR_0 LR_3 LR_4 LR_8;
	node [shape = circle];
	LR_0 -> LR_2 [ label = "SS(B)" ];
	LR_0 -> LR_1 [ label = "SS(S)" ];
	LR_1 -> LR_3 [ label = "S($end)" ];
	LR_2 -> LR_6 [ label = "SS(b)" ];
	LR_2 -> LR_5 [ label = "SS(a)" ];
	LR_2 -> LR_4 [ label = "S(A)" ];
	LR_5 -> LR_7 [ label = "S(b)" ];
	LR_5 -> LR_5 [ label = "S(a)" ];
	LR_6 -> LR_6 [ label = "S(b)" ];
	LR_6 -> LR_5 [ label = "S(a)" ];
	LR_7 -> LR_8 [ label = "S(b)" ];
	LR_7 -> LR_5 [ label = "S(a)" ];
	LR_8 -> LR_6 [ label = "S(b)" ];
	LR_8 -> LR_5 [ label = "S(a)" ];
}
graphviz_fsm-transparent.png

4.7.2 Descendant and ancestor


graph G {
I5 [shape=ellipse,color=red,style=bold,label="Caroline Bouvier Kennedy\nb. 27.11.1957 New York",image="images/165px-Caroline_Kennedy.jpg",labelloc=b];
I1 [shape=box,color=blue,style=bold,label="John Fitzgerald Kennedy\nb. 29.5.1917 Brookline\nd. 22.11.1963 Dallas",image="images/kennedyface.jpg",labelloc=b];
I6 [shape=box,color=blue,style=bold,label="John Fitzgerald Kennedy\nb. 25.11.1960 Washington\nd. 16.7.1999 over the Atlantic Ocean, near Aquinnah, MA, USA",image="images/180px-JFKJr2.jpg",labelloc=b];
I7 [shape=box,color=blue,style=bold,label="Patrick Bouvier Kennedy\nb. 7.8.1963\nd. 9.8.1963"];
I2 [shape=ellipse,color=red,style=bold,label="Jaqueline Lee Bouvier\nb. 28.7.1929 Southampton\nd. 19.5.1994 New York City",image="images/jacqueline-kennedy-onassis.jpg",labelloc=b];
I8 [shape=box,color=blue,style=bold,label="Joseph Patrick Kennedy\nb. 6.9.1888 East Boston\nd. 16.11.1969 Hyannis Port",image="images/1025901671.jpg",labelloc=b];
I10 [shape=box,color=blue,style=bold,label="Joseph Patrick Kennedy Jr\nb. 1915\nd. 1944"];
I11 [shape=ellipse,color=red,style=bold,label="Rosemary Kennedy\nb. 13.9.1918\nd. 7.1.2005",image="images/rosemary.jpg",labelloc=b];
I12 [shape=ellipse,color=red,style=bold,label="Kathleen Kennedy\nb. 1920\nd. 1948"];
I13 [shape=ellipse,color=red,style=bold,label="Eunice Mary Kennedy\nb. 10.7.1921 Brookline"];
I9 [shape=ellipse,color=red,style=bold,label="Rose Elizabeth Fitzgerald\nb. 22.7.1890 Boston\nd. 22.1.1995 Hyannis Port",image="images/Rose_kennedy.JPG",labelloc=b];
I15 [shape=box,color=blue,style=bold,label="Aristotle Onassis"];
I3 [shape=box,color=blue,style=bold,label="John Vernou Bouvier III\nb. 1891\nd. 1957",image="images/BE037819.jpg",labelloc=b];
I4 [shape=ellipse,color=red,style=bold,label="Janet Norton Lee\nb. 2.10.1877\nd. 3.1.1968",image="images/n48862003257_1275276_1366.jpg",labelloc=b];
 I1 -- I5  [style=bold,color=blue];
 I1 -- I6  [style=bold,color=orange];
 I2 -- I6  [style=bold,color=orange];
 I1 -- I7  [style=bold,color=orange];
 I2 -- I7  [style=bold,color=orange];
 I1 -- I2  [style=bold,color=violet];
 I8 -- I1  [style=bold,color=blue];
 I8 -- I10  [style=bold,color=orange];
 I9 -- I10  [style=bold,color=orange];
 I8 -- I11  [style=bold,color=orange];
 I9 -- I11  [style=bold,color=orange];
 I8 -- I12  [style=bold,color=orange];
 I9 -- I12  [style=bold,color=orange];
 I8 -- I13  [style=bold,color=orange];
 I9 -- I13  [style=bold,color=orange];
 I8 -- I9  [style=bold,color=violet];
 I9 -- I1  [style=bold,color=red];
 I2 -- I5  [style=bold,color=red];
 I2 -- I15  [style=bold,color=violet];
 I3 -- I2  [style=bold,color=blue];
 I3 -- I4  [style=bold,color=violet];
 I4 -- I2  [style=bold,color=red];
}
kennedyanc-transparent.png

4.8 Text2MindMap

creates a mind map out of indented text

Text2MindMap
	Turn tab-indented lists into mind maps
		Press Tab to indent lines
		Press Shift + Tab to unindent lines
	Drag nodes to re-organize them
	This project is based on the now dead site Text2MindMap.com
screenshot-20200202-122010-transparent.png

Date: 2020-02-01 sáb 00:00

Author: Alejandro Garcia

Created: 2020-04-10 vie 11:49