-
Notifications
You must be signed in to change notification settings - Fork 10
/
WestGermanicLanguages.elm
106 lines (90 loc) · 2.33 KB
/
WestGermanicLanguages.elm
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
module Main exposing (..)
import Svg exposing (..)
import Svg.Attributes exposing (..)
import String
import TreeDiagram exposing (Tree, defaultTreeLayout)
import TreeDiagram.Svg exposing (draw)
node_ =
TreeDiagram.node
-- Tree to draw
westGermanicLanguages =
node_
"West Germanic"
[ node_
"Ingvaeonic"
[ node_
"Old Saxon"
[ node_
"Middle Low German"
[ node_ "Low German" []
]
]
, node_
"Anglo-Frisian"
[ node_
"Old English"
[ node_
"Middle English"
[ node_ "English" []
]
]
, node_
"Old Frisian"
[ node_ "Frisian" []
]
]
]
, node_
"Istvaeonic"
[ node_
"Old Dutch"
[ node_
"Middle Dutch"
[ node_ "Dutch" []
, node_ "Afrikaans" []
]
]
]
, node_
"Irminonic"
[ node_
"Old High German"
[ node_
"Middle High German"
[ node_ "German" []
]
, node_
"Old Yiddish"
[ node_ "Yiddish" []
]
]
]
]
(=>) prop value =
prop (toString value)
{-| Represent edges as straight lines.
-}
drawLine : ( Float, Float ) -> Svg msg
drawLine ( targetX, targetY ) =
line
[ x1 => 0, y1 => 0, x2 => targetX, y2 => targetY, stroke "black" ]
[]
{-| Represent nodes as white textboxes
-}
drawNode : String -> Svg msg
drawNode n =
g
[]
[ rect [ width => 100, height => 40, fill "white", transform "translate(-50,-20)" ] []
, text_ [ width => 100, textAnchor "middle" ] [ text n ]
]
main =
draw
{ defaultTreeLayout
| siblingDistance = 110
, subtreeDistance = 150
, padding = 80
}
drawNode
drawLine
westGermanicLanguages