xref: /unit/docs/changes.xsls (revision 1734:3b4f1cc3117f)
1X:stylesheet {
2
3X:output method="text";
4
5X:param format="'generic'";
6X:param pkgname="'unit'";
7X:param configuration="'change_log_conf.xml'";
8X:param curdate;
9X:param curtime;
10
11X:var conf = "document($configuration)/configuration";
12
13X:var start = {
14    X:choose {
15        X:when "$format='rpm'" {
16            !{$conf/rpm/start}
17        }
18        X:when "$format='deb'" {
19            !{$conf/deb/start}
20        }
21        X:when "$format='generic'" {
22            !{$conf/generic/start}
23        }
24    }
25}
26
27X:var indent = {
28    X:choose {
29        X:when "$format='rpm'" {
30            !{$conf/rpm/indent}
31        }
32        X:when "$format='deb'" {
33            !{$conf/deb/indent}
34        }
35        X:when "$format='generic'" {
36            !{$conf/generic/indent}
37        }
38    }
39}
40
41X:var max = {
42    X:choose {
43        X:when "$format='rpm'" {
44            !{$conf/rpm/length}
45        }
46        X:when "$format='deb'" {
47            !{$conf/deb/length}
48        }
49        X:when "$format='generic'" {
50            !{$conf/generic/length}
51        }
52    }
53}
54
55X:var br = {<br>}
56
57
58X:template = "/" { !! "change_log"; }
59X:template = "change_log" { !! "changes"; }
60
61
62X:template = "changes" {
63    X:var date_ = { !getdate(date="@date", curdate="$curdate") }
64    X:var time_ = { !gettime(time="@time", curtime="$curtime") }
65    X:var pday = { !padded_day(date="$date_") }
66    X:var dow = { !day_of_week(date="$date_") }
67    X:var apply = { !string_in_list(list="@apply", string="$pkgname") }
68    X:var pkgname_ = { !beautify(pkgname="$pkgname") }
69
70    X:choose {
71    X:when "$pkgname='unit' and $format='generic' and @rev!=1" {}
72    X:otherwise {
73    X:if "$apply=$pkgname" {
74
75    X:if "$format='generic'" {
76        X:text {
}
77
78        !{substring(concat($conf/changes/title,
79                           $pkgname_,
80                           ' ', @ver,
81                           '                                                    '),
82                    1, $conf/changes/length)}
83
84        !{substring($date_, 9, 2)}
85        !{$conf/changes/month[number(substring($date_, 6, 2))]}
86        !{substring($date_, 1, 4)}
87    }
88
89    X:if "$format='rpm'" {
90        !{concat('* ', $conf/changes/day[number($dow)],
91                 $conf/changes/month[number(substring($date_, 6, 2))],
92                 $pday, ' ',
93                 substring($date_, 1, 4), ' ', @packager, ' - ',
94                 @ver, '-', @rev, '%{?dist}.ngx')}
95    }
96
97    X:if "$format='deb'" {
98        !{concat($pkgname, ' (', @ver, '-', @rev,
99                 '~%%CODENAME%%) %%CODENAME%%; urgency=low')}
100
101        X:text {
}
102    }
103
104    X:text {
}
105
106    !! "change";
107
108    X:text {
}
109
110    X:if "$format='deb'" {
111        !{concat(' -- ', @packager, '  ',
112                 $conf/changes/day[number($dow)], ', ',
113                 $pday,
114                 $conf/changes/month[number(substring($date_, 6, 2))],
115                 substring($date_, 1, 4), ' ', $time_)}
116
117        X:text {
}
118        X:text {
}
119    }
120    }
121    }
122    }
123}
124
125
126X:template = "change" {
127    X:var prefix = "$conf/changes/*[local-name(.)=current()/@type]"
128
129    X:var postfix = { X:if "$prefix" { X:text {: } } }
130
131    !! "para" (prefix = "concat($start, $prefix, $postfix)");
132}
133
134
135X:template para(prefix) = "para" {
136    X:var text = { !!; }
137
138    X:if "$format='generic'" {
139        X:text {
}
140    }
141
142    !wrap(text = "normalize-space($text)",
143          prefix = { X:if "position() = 1" { !{$prefix} } else { !{$indent} } })
144}
145
146
147X:template wrap(text, prefix) {
148    X:if "$text" {
149        X:var offset = {
150            X:choose {
151                X:when "starts-with($text, concat($br, ' '))" {
152                    !{string-length($br) + 2}
153                }
154                X:when "starts-with($text, $br)" {
155                    !{string-length($br) + 1}
156                }
157                X:otherwise {
158                    1
159                }
160            }
161        }
162
163        X:var length = {
164            !length(text = "substring($text, $offset)",
165                    prefix = "string-length($prefix)",
166                    length = "$max")
167        }
168
169        !{$prefix}
170
171        !{normalize-space(translate(substring($text, $offset, $length),
172                                    ' ', ' '))}
173
174        X:text {
}
175
176        !wrap(text = "substring($text, $length + $offset)", prefix = "$indent")
177    }
178}
179
180
181X:template length(text, prefix, length) {
182    X:var break = "substring-before(substring($text, 1,
183                                    $length - $prefix + string-length($br)),
184                                    $br)"
185
186    X:choose {
187        X:when "$break" { !{string-length($break)} }
188
189        X:when "$length = 0" { !{$max - $prefix} }
190
191        X:when "string-length($text) + $prefix <= $length" {
192            !{$length - $prefix}
193        }
194
195        X:when "substring($text, $length - $prefix + 1, 1) = ' '" {
196            !{$length - $prefix + 1}
197        }
198
199        X:otherwise {
200            !length(text = "$text", prefix = "$prefix", length = "$length - 1")
201        }
202    }
203}
204
205
206X:template day_of_week(date) {
207    X:param year = "substring-before($date, '-')";
208    X:param month = "substring-before(substring-after($date, '-'), '-')";
209    X:param day = "substring-after(substring-after($date, '-'), '-')";
210
211    X:var a = "floor((14 - $month) div 12)";
212
213    X:var y = "$year - $a";
214
215    X:var m = "$month + 12 * $a - 2";
216
217    !{($day + $y + floor($y div 4) - floor($y div 100)
218    + floor($y div 400) + floor((31 * $m) div 12)) mod 7 + 1}
219}
220
221
222X:template padded_day(date) {
223    !{substring(concat('  ', format-number(substring($date, 9, 2), '##')),
224           1 + string-length(format-number(substring($date, 9, 2), '##')))}
225}
226
227
228X:template string_in_list(list, string) {
229    X:choose {
230        X:when "contains($list, ' ')" {
231            X:var str = "substring-before($list, ' ')";
232            X:choose {
233                X:when "$str=$string" {
234                    !{$string}
235                }
236                X:otherwise {
237                    !string_in_list(list="substring-after($list, ' ')",
238                                    string="$string")
239                }
240            }
241        }
242        X:otherwise {
243            X:if "$list=$string" { !{$string} }
244            X:if "$list='*'" { !{$string} }
245        }
246    }
247}
248
249
250X:template beautify(pkgname) {
251    X:choose {
252        X:when "$pkgname='unit'" {Unit}
253        X:otherwise {
254            !{$pkgname}
255        }
256    }
257}
258
259
260X:template getdate(date, curdate) {
261    X:choose {
262        X:when "$date=''" {
263            !{$curdate}
264        }
265        X:otherwise {
266            !{$date}
267        }
268    }
269}
270
271
272X:template gettime(time, curtime) {
273    X:choose {
274        X:when "$time=''" {
275            !{$curtime}
276        }
277        X:otherwise {
278            !{$time}
279        }
280    }
281}
282
283
284X:template = "at" {@}
285X:template = "br" { !{$br} }
286X:template = "nobr" { !{translate(., ' ', ' ')} }
287
288
289}
290