summaryrefslogtreecommitdiff
path: root/render.awk
blob: 148a43e9d1a33a038e8d4786ad6b2e47ce1939f0 (plain)
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
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126

function info_line(name, sel, host, port, dst){
	printf("[i|%s|%s|%s|%s]\r\n", name, sel, host, port) > dst;
}

function show_link(l, i, dst){

	if(l[i,"Category"] == "")
		print "Uncategorised link:", l[i,"Selector"] > /dev/stderr;
	else{
		printf("[1|%s|%s|%s|%s]\r\n", l[i,"LinkName"], l[i,"Selector"], l[i,"Host"], l[i,"Port"] ) > dst;
		split(l[i,"Description"], descr, "\n");
		for (d in descr){
			info_line(descr[d],"Err", HOST, PORT, dst);
		}
		info_line("", "Err", HOST, PORT, dst);
	}

}


function show_category_link(category, i, dst){
	printf("[1|%s|%s|%s|%s]\r\n", category[i,"LinkName"], category[i,"Selector"], category[i,"Host"], category[i,"Port"]) > dst;
}



function get_parents(a){
	delete pars;
	split(a, pars, /[:blank:]*,[:blank:]*/);
	for (k in pars){
		gsub(/ +/, "", pars[k]);
	}

}

function category_in_parents(category, i){

	get_parents(category[i,"Parent"]);
	for (p in pars){
		if (pars[p]!="none"){### the root page does not have parents...
			dst=cfiles[pars[p]];
			if (has_categories[pars[p]] == ""){
				info_line("", "Err", HOST, PORT, dst);
				info_line("Sub-categories:", "Err", HOST, PORT, dst) ;
			}
			has_categories[pars[p]]=1;
			show_category_link(category, i, dst);
		}
	}
}

function category_header(category, i, dst){
	info_line(category[i,"Title"], "Err", HOST, PORT, dst);
	info_line("", "Err", HOST, PORT, dst);
	split(category[i,"Description"], descr, "\n");
	for (d in descr){
		info_line(descr[d], "Err", HOST, PORT, dst);
	}
}

function get_link_categories(a){
	delete cats;
	split(a, cats, /[:blank:]*,[:blank:]*/);
	for (k in cats){
		gsub(/ +/, "", cats[k]);
	}
}

########################################


function render_init(){

}


function render_categories(category, cnum, link, lnum){
	for (i=1; i<=cnum; i++){
		cname=category[i,"Name"];
		cfiles[cname]=BASEDIR category[i,"Selector"];
		"dirname " cfiles[cname] | getline bdir;
		if (system("ls -d " bdir " >/dev/null") >0){
			system("mkdir " bdir);
		}
		cmd=sprintf("rm -f %s", cfiles[cname]);
		system(cmd);
		category_header(category, i, cfiles[cname]);
		category_in_parents(category, i);
	}
}

function render_post_categories(category, cnum){


}


function render_links(category, cnum, link, lnum){

	for (i=1;i<=lnum;i++){
		get_link_categories(link[i,"Category"]);
		for (c in cats){
			if (cfiles[cats[c]]!=""){
				dst=cfiles[cats[c]];
				if (has_links[cats[c]] == ""){
					info_line("_______________", "Err", \
					        HOST, PORT, dst);
					info_line("Links:", "Err", HOST, PORT,\
					        dst);
				}
				has_links[cats[c]]=1;
				show_link(link, i, dst);
			}
		}
	}	
}


function render_finalise(category, cnum, link, lnum){

	for(i=1;i<=cnum; i++){
		info_line("_______________", "Err", HOST, PORT, cfiles[category[i,"Name"]]);
		printf("[1|%s|%s|%s|%s]\r\n", "Back to the lawn", ROOTSEL, HOST, PORT ) > cfiles[category[i,"Name"]];
	}
}