source: scripts/xml-stats/format.xsl@ 2616

Last change on this file since 2616 was 2616, checked in by Александър Шопов, 14 years ago

Затваряне на етикет

File size: 8.0 KB
Line 
1<?xml version="1.0" encoding="UTF-8" ?>
2<xsl:stylesheet version="1.0"
3xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
4xmlns:math="http://exslt.org/math"
5xmlns:dyn="http://exslt.org/dynamic"
6xmlns:str="http://exslt.org/strings"
7
8extension-element-prefixes="math dyn str">
9
10<xsl:variable name="nl">
11<xsl:text>
12</xsl:text>
13</xsl:variable>
14<xsl:variable name="dot" select="' • '"/>
15<xsl:variable name="po-prefix" select="'po-'"/>
16<xsl:variable name="true-false-replace" select="'truefals'"/>
17
18
19<xsl:output encoding="UTF-8" method="text"/>
20<xsl:variable name="maxNameLength" select="dyn:max(//domain, 'string-length(concat(../@id,translate(boolean(substring-after(@id,$po-prefix)),$true-false-replace,$dot),substring-after(@id,$po-prefix)))')" />
21<xsl:variable name="maxTranslatedLength" select="string-length(dyn:sum(//domain/translated,'.'))" />
22<xsl:variable name="maxFuzzzyLength" select="string-length(dyn:sum(//domain/fuzzy,'.'))" />
23<xsl:variable name="maxUntranslatedLength" select="string-length(dyn:sum(//domain/untranslated,'.'))" />
24<xsl:variable name="maxAllLength" select="string-length(dyn:sum(//domain/translated,'.')+dyn:sum(//domain/fuzzy,'.')+dyn:sum(//domain/untranslated,'.'))" />
25<xsl:variable name="maxTodoLength" select="string-length(dyn:sum(//domain/fuzzy,'.')+dyn:sum(//domain/untranslated,'.'))" />
26
27
28<xsl:template match="/">
29<!-- DEBUG -->
30<!--
31<xsl:value-of select="$maxNameLength"/>@maxNameLength
32<xsl:value-of select="$maxTranslatedLength" />@maxTranslatedLength
33<xsl:value-of select="$maxFuzzzyLength"/>@maxFuzzzyLength
34<xsl:value-of select="$maxUntranslatedLength"/>@maxUntranslatedLength
35<xsl:value-of select="$maxAllLength"/>@maxAllLength
36<xsl:value-of select="$maxTodoLength"/>@maxTodoLength
37-->
38<xsl:call-template name="draw-table"/>
39</xsl:template>
40
41
42<xsl:template name="draw-table">
43<xsl:param name="type" select="'long'"/><!-- or 'short' -->
44<!-- DEBUG -->
45
46<xsl:value-of select="$type"/>#type
47-->
48
49
50<xsl:call-template name="draw-heading"/>
51<xsl:call-template name="draw-separator"/>
52
53<xsl:for-each select="//domain">
54<xsl:sort order="descending" select="fuzzy + untranslated" data-type="number"/>
55<xsl:sort order="descending" select="untranslated" data-type="number"/>
56<xsl:sort order="descending" select="translated + fuzzy + untranslated" data-type="number"/>
57<xsl:sort order="ascending" select="../@id"/>
58
59
60<xsl:call-template name="draw-line">
61<xsl:with-param name="name" select="concat(../@id,translate(boolean(substring-after(@id,$po-prefix)),$true-false-replace,$dot),substring-after(@id,$po-prefix))"/>
62<xsl:with-param name="nameLength" select="$maxNameLength"/>
63<xsl:with-param name="translated" select="translated"/>
64<xsl:with-param name="translatedLength" select="$maxTranslatedLength"/>
65<xsl:with-param name="fuzzy" select="fuzzy"/>
66<xsl:with-param name="fuzzyLength" select="$maxFuzzzyLength"/>
67<xsl:with-param name="untranslated" select="untranslated"/>
68<xsl:with-param name="untranslatedLength" select="$maxUntranslatedLength"/>
69<xsl:with-param name="all" select="translated+fuzzy+untranslated"/>
70<xsl:with-param name="allLength" select="$maxAllLength"/>
71<xsl:with-param name="todo" select="fuzzy+untranslated"/>
72<xsl:with-param name="todoLength" select="$maxTodoLength"/>
73<xsl:with-param name="separator" select="'|'"/>
74<xsl:with-param name="pad" select="' '"/>
75</xsl:call-template>
76
77
78</xsl:for-each>
79
80<xsl:call-template name="draw-separator"/>
81<xsl:call-template name="draw-footer"/>
82</xsl:template>
83
84<xsl:template name="draw-line">
85<xsl:param name="name"/>
86<xsl:param name="nameLength"/>
87<xsl:param name="translated"/>
88<xsl:param name="translatedLength"/>
89<xsl:param name="fuzzy"/>
90<xsl:param name="fuzzyLength"/>
91<xsl:param name="untranslated"/>
92<xsl:param name="untranslatedLength"/>
93<xsl:param name="all"/>
94<xsl:param name="allLength"/>
95<xsl:param name="todo"/>
96<xsl:param name="todoLength"/>
97<xsl:param name="separator"/>
98<xsl:param name="pad"/>
99
100<!-- DEBUG -->
101<!--
102<xsl:value-of select="$name"/>#name
103<xsl:value-of select="$nameLength"/>#nameLength
104<xsl:value-of select="$translated"/>#translated
105<xsl:value-of select="$translatedLength"/>#translatedLength
106<xsl:value-of select="$fuzzy"/>#fuzzy
107<xsl:value-of select="$fuzzyLength"/>#fuzzyLength
108<xsl:value-of select="$untranslated"/>#untranslated
109<xsl:value-of select="$untranslatedLength"/>#untranslatedLength
110<xsl:value-of select="$all"/>#all
111<xsl:value-of select="$allLength"/>#allLength
112<xsl:value-of select="$todo"/>#todo
113<xsl:value-of select="$todoLength"/>#todoLength
114<xsl:value-of select="$separator"/>#separator
115<xsl:value-of select="$pad"/>#pad
116-->
117
118
119<xsl:value-of select="str:align($name,str:padding($nameLength+2,$pad),'left')"/>
120<xsl:value-of select="$separator"/>
121<xsl:value-of select="str:align($todo,str:padding($todoLength+2,$pad),'right')"/>
122<xsl:value-of select="$separator"/>
123<xsl:value-of select="str:align($untranslated,str:padding($untranslatedLength+2,$pad),'right')"/>
124<xsl:value-of select="$separator"/>
125<xsl:value-of select="str:align($fuzzy,str:padding($fuzzyLength+2,$pad),'right')"/>
126<xsl:value-of select="$separator"/>
127<xsl:value-of select="str:align($translated,str:padding($translatedLength+2,$pad),'right')"/>
128<xsl:value-of select="$separator"/>
129<xsl:value-of select="str:align($all,str:padding($allLength+2,$pad),'right')"/>
130<xsl:value-of select="$nl"/>
131
132
133</xsl:template>
134
135
136<xsl:template name="draw-separator">
137<xsl:call-template name="draw-line">
138<xsl:with-param name="name" select="''"/>
139<xsl:with-param name="nameLength" select="$maxNameLength"/>
140<xsl:with-param name="translated" select="''"/>
141<xsl:with-param name="translatedLength" select="$maxTranslatedLength"/>
142<xsl:with-param name="fuzzy" select="''"/>
143<xsl:with-param name="fuzzyLength" select="$maxFuzzzyLength"/>
144<xsl:with-param name="untranslated" select="''"/>
145<xsl:with-param name="untranslatedLength" select="$maxUntranslatedLength"/>
146<xsl:with-param name="all" select="''"/>
147<xsl:with-param name="allLength" select="$maxAllLength"/>
148<xsl:with-param name="todo" select="''"/>
149<xsl:with-param name="todoLength" select="$maxTodoLength"/>
150<xsl:with-param name="separator" select="'+'"/>
151<xsl:with-param name="pad" select="'-'"/>
152</xsl:call-template>
153</xsl:template>
154
155<xsl:template name="draw-heading">
156<xsl:call-template name="draw-line">
157<xsl:with-param name="name" select="'Име'"/>
158<xsl:with-param name="nameLength" select="$maxNameLength"/>
159<xsl:with-param name="translated" select="'Преведени'"/>
160<xsl:with-param name="translatedLength" select="$maxTranslatedLength"/>
161<xsl:with-param name="fuzzy" select="'Мъгляви'"/>
162<xsl:with-param name="fuzzyLength" select="$maxFuzzzyLength"/>
163<xsl:with-param name="untranslated" select="'Непреведени'"/>
164<xsl:with-param name="untranslatedLength" select="$maxUntranslatedLength"/>
165<xsl:with-param name="all" select="'Всичко'"/>
166<xsl:with-param name="allLength" select="$maxAllLength"/>
167<xsl:with-param name="todo" select="'Работа'"/>
168<xsl:with-param name="todoLength" select="$maxTodoLength"/>
169<xsl:with-param name="separator" select="'|'"/>
170<xsl:with-param name="pad" select="' '"/>
171</xsl:call-template>
172</xsl:template>
173
174
175<xsl:template name="draw-footer">
176<xsl:call-template name="draw-line">
177<xsl:with-param name="name" select="'Общо'"/>
178<xsl:with-param name="nameLength" select="$maxNameLength"/>
179<xsl:with-param name="translated" select="dyn:sum(//domain/translated,'.')"/>
180<xsl:with-param name="translatedLength" select="$maxTranslatedLength"/>
181<xsl:with-param name="fuzzy" select="dyn:sum(//domain/fuzzy,'.')"/>
182<xsl:with-param name="fuzzyLength" select="$maxFuzzzyLength"/>
183<xsl:with-param name="untranslated" select="dyn:sum(//domain/untranslated,'.')"/>
184<xsl:with-param name="untranslatedLength" select="$maxUntranslatedLength"/>
185<xsl:with-param name="all" select="dyn:sum(//domain/translated,'.')+dyn:sum(//domain/fuzzy,'.')+dyn:sum(//domain/untranslated,'.')"/>
186<xsl:with-param name="allLength" select="$maxAllLength"/>
187<xsl:with-param name="todo" select="dyn:sum(//domain/fuzzy,'.')+dyn:sum(//domain/untranslated,'.')"/>
188<xsl:with-param name="todoLength" select="$maxTodoLength"/>
189<xsl:with-param name="separator" select="'|'"/>
190<xsl:with-param name="pad" select="' '"/>
191</xsl:call-template>
192</xsl:template>
193
194</xsl:stylesheet>
Note: See TracBrowser for help on using the repository browser.