File: dot.awk

package info (click to toggle)
pcb-rnd 3.1.7b-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 33,108 kB
  • sloc: ansic: 213,400; yacc: 6,241; sh: 4,698; awk: 3,016; makefile: 2,254; lex: 1,166; python: 519; xml: 261; lisp: 154; tcl: 67; perl: 34; javascript: 6; ruby: 5
file content (99 lines) | stat: -rw-r--r-- 2,084 bytes parent folder | download | duplicates (6)
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
BEGIN {
	nl = "\\n"
}

function tbl_entry(node, level, nparent     ,nm,vt,dsc,ty,vr, url, tip,duppar,grp,grp_parent)
{
	ty = DATA[node "/type"]
	nm = get_name(node, ty, 0)
	vt = DATA[node "/valtype"]
	vr = DATA[node "/ver"]
	grp_parent = parent(parent(node))
	grp = DATA[grp_parent "/dot_group"]
	dsc = qstrip(DATA[node "/desc"])
	gsub("\"", "\\\"", dsc)
	tip=" tooltip=" q dsc q
	url=" URL=" q "tree.html#" node q

	if (dupd_prefix != "") {
		node = dupd_prefix node
		DUPD[node] ++

		if (nparent != "") {
			duppar = dupd_prefix nparent
			if (duppar in DUPD)
				nparent = duppar
		}
	}

	print "	" q node q "	[label=" q nm nl vt nl vr q url tip "]" >fn
	if (nparent != "")
		print "	" q nparent q "	->	" q node q > fn
	if (grp != "") {
		if (LAST_GRP_SIBL[nparent] != "") {
			print "		" q LAST_GRP_SIBL[nparent] q "	->	" q node q  "[style=invis]" > fn
		}
		LAST_GRP_SIBL[nparent] = node
	}
}

function tbl_entry_link(node, dst, level, parent     ,nm,vt,dsc,ty,vr,contid,url,tip,dr)
{
	ty = DATA[node "/type"]
	nm = get_name(node, ty, 0)
	vt = DATA[node "/valtype"]
	vr = DATA[node "/ver"]
	dsc = qstrip(DATA[node "/desc"])
	gsub("\"", "\\\"", dsc)
	dr = dst
	sub("^.*/", "", dr)
	url=" URL=" q dr ".svg" q
	tip=" tooltip=" q dsc q


	if (dupd_prefix != "") {
		node = dupd_prefix node
		DUPD[node] ++

		if (parent != "") {
			duppar = dupd_prefix parent
			if (duppar in DUPD)
				parent = duppar
		}
	}


	print "	" q node q "	[label=" q nm " ->" nl vt nl vr nl q url tip " shape=plaintext]" >fn
	if (parent != "")
		print "	" q parent q "	->	" q node q > fn
}

function gen_graph(rpath,    v, n, N, name)
{
	name = get_name(rpath, DATA[rpath "/type"])
	fn=name
	sub(".*[:/]", "", fn)
	gsub("[*]", "", fn)
	fn = "../" fn ".dot"

	print "digraph " q name q " {" > fn
	tbl_entry(rpath, 0)
	gen_sub(rpath, 1)
	print "}" > fn
	close(fn)
}

function gen_graphs(rpath,    v, n, N, name)
{
	v = children(N, rpath)
	for(n = 1; n <= v; n++) {
		if (N[n] "/hide" in NAME)
			continue
		gen_graph(N[n])
	}
}

END {
	gen_graphs("/lht_tree_doc/roots")
	gen_graphs("/lht_tree_doc/comm")
}