Create CODE_OF_CONDUCT.md
[luagraph.git] / examples / record1.lua
blobb1100b84ae81a32082fb180a65118fe50cd9f9dd
1 local gr = require "graph"
3 --
4 -- Define the graph
5 --
6 local g = gr.graph{"G",
7 -- Need 'record' as shape attribute
8 node = {shape = "record"},
9 -- Classical graphviz record definition
10 gr.node{"n1",
11 label="<f0> left|<f1> mid\\ dle|<f2> right"};
12 gr.node{"n2",
13 label = "<f0> one|<f1> two"},
14 gr.node{"n3",
15 label = "hello\\nworld 1|{ b |{c|<here> d|e}|f}|<g> g|{h|z}"},
17 gr.edge{"n1:f2", "n2:f1"},
18 gr.edge{"n1", "n3"},
19 gr.edge{"n2:f0:n", "n3:here:sw"},
20 gr.edge{"n1:f0", "n3:w"},
21 -- Luayats record definition using vbox and hbox function
22 gr.record{"n4",
23 gr.hbox{
24 "hello\\nworld 2",
25 gr.vbox{
26 "b",
27 gr.hbox{"c", "<here> d", "e"},
28 "f"
30 "<g> g",
31 gr.vbox{"h", "z"}
34 -- Same elements but starting top to down
35 gr.record{"n5",
36 gr.vbox{
37 "hello\\nworld 3",
38 gr.hbox{
39 "b",
40 gr.vbox{"c", "<here> d", "e"},
41 "f"
43 "<g> g",
44 gr.hbox{"h", "z"}
47 -- Connect two ports
48 gr.edge{"n4:here", "n5:e"}
52 -- Layout using 'dot' (default) engine
54 g:layout()
55 g:write()
58 -- Render into different formats
60 g:render("pdf", "out.pdf")
61 g:render("gif", "out.gif")
62 g:render("svg", "out.svg")
63 g:render("jpg", "out.jpg")
64 g:render("png", "out.png")
65 g:show()
67 -- That's it
69 g:close()