testability-driver 0.9.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (214) hide show
  1. data/README +1 -0
  2. data/bin/start_app_perf +199 -0
  3. data/bin/tdriver-devtools +3 -0
  4. data/config/sut_parameters.rb +39 -0
  5. data/ext/extconf.rb +67 -0
  6. data/ext/native_extensions.c +70 -0
  7. data/lib/matti.rb +30 -0
  8. data/lib/tdriver-devtools/behaviour/old/xml/example/flick-example.rb +223 -0
  9. data/lib/tdriver-devtools/behaviour/old/xml/example/impl.rb_invalid +194 -0
  10. data/lib/tdriver-devtools/behaviour/old/xml/generate_behaviour_xml.rb +95 -0
  11. data/lib/tdriver-devtools/behaviour/old/xml/lib/tdriver_generator.rb +722 -0
  12. data/lib/tdriver-devtools/behaviour/old/xml/qdoc_generator.rb +321 -0
  13. data/lib/tdriver-devtools/behaviour/old/xml/templates/behaviour.method.template +43 -0
  14. data/lib/tdriver-devtools/behaviour/old/xml/templates/behaviour.module.template +54 -0
  15. data/lib/tdriver-devtools/behaviour/old/xml/templates/behaviour.xml.argument.template +7 -0
  16. data/lib/tdriver-devtools/behaviour/old/xml/templates/behaviour.xml.argument_type.template +7 -0
  17. data/lib/tdriver-devtools/behaviour/old/xml/templates/behaviour.xml.exception.template +5 -0
  18. data/lib/tdriver-devtools/behaviour/old/xml/templates/behaviour.xml.howto.line.template +2 -0
  19. data/lib/tdriver-devtools/behaviour/old/xml/templates/behaviour.xml.howto.template +5 -0
  20. data/lib/tdriver-devtools/behaviour/old/xml/templates/behaviour.xml.method.template +23 -0
  21. data/lib/tdriver-devtools/behaviour/old/xml/templates/behaviour.xml.template +14 -0
  22. data/lib/tdriver-devtools/behaviour/old/xml/update +3 -0
  23. data/lib/tdriver-devtools/behaviour/xml/generate.rb +88 -0
  24. data/lib/tdriver-devtools/behaviour/xml/rdoc_behaviour_xml_generator.rb +1924 -0
  25. data/lib/tdriver-devtools/behaviour/xml/templates/behaviour.xml.argument.default.template +1 -0
  26. data/lib/tdriver-devtools/behaviour/xml/templates/behaviour.xml.argument.template +3 -0
  27. data/lib/tdriver-devtools/behaviour/xml/templates/behaviour.xml.argument_type.template +4 -0
  28. data/lib/tdriver-devtools/behaviour/xml/templates/behaviour.xml.exception.template +4 -0
  29. data/lib/tdriver-devtools/behaviour/xml/templates/behaviour.xml.method.arguments.template +4 -0
  30. data/lib/tdriver-devtools/behaviour/xml/templates/behaviour.xml.method.deprecated.template +3 -0
  31. data/lib/tdriver-devtools/behaviour/xml/templates/behaviour.xml.method.exceptions.template +3 -0
  32. data/lib/tdriver-devtools/behaviour/xml/templates/behaviour.xml.method.info.template +1 -0
  33. data/lib/tdriver-devtools/behaviour/xml/templates/behaviour.xml.method.returns.template +3 -0
  34. data/lib/tdriver-devtools/behaviour/xml/templates/behaviour.xml.method.tables.template +3 -0
  35. data/lib/tdriver-devtools/behaviour/xml/templates/behaviour.xml.method.template +12 -0
  36. data/lib/tdriver-devtools/behaviour/xml/templates/behaviour.xml.returns.template +5 -0
  37. data/lib/tdriver-devtools/behaviour/xml/templates/behaviour.xml.table.item.template +1 -0
  38. data/lib/tdriver-devtools/behaviour/xml/templates/behaviour.xml.table.row.template +2 -0
  39. data/lib/tdriver-devtools/behaviour/xml/templates/behaviour.xml.table.template +8 -0
  40. data/lib/tdriver-devtools/behaviour/xml/templates/behaviour.xml.template +14 -0
  41. data/lib/tdriver-devtools/behaviour/xml_generator/example/flick-example.rb +245 -0
  42. data/lib/tdriver-devtools/behaviour/xml_generator/example/sut.rb +964 -0
  43. data/lib/tdriver-devtools/behaviour/xml_generator/generate.rb +68 -0
  44. data/lib/tdriver-devtools/behaviour/xml_generator/lib/custom_rdoc_generator.rb +1865 -0
  45. data/lib/tdriver-devtools/behaviour/xml_generator/templates/behaviour.xml.argument.default.template +1 -0
  46. data/lib/tdriver-devtools/behaviour/xml_generator/templates/behaviour.xml.argument.template +3 -0
  47. data/lib/tdriver-devtools/behaviour/xml_generator/templates/behaviour.xml.argument_type.template +4 -0
  48. data/lib/tdriver-devtools/behaviour/xml_generator/templates/behaviour.xml.exception.template +4 -0
  49. data/lib/tdriver-devtools/behaviour/xml_generator/templates/behaviour.xml.method.arguments.template +4 -0
  50. data/lib/tdriver-devtools/behaviour/xml_generator/templates/behaviour.xml.method.deprecated.template +3 -0
  51. data/lib/tdriver-devtools/behaviour/xml_generator/templates/behaviour.xml.method.exceptions.template +3 -0
  52. data/lib/tdriver-devtools/behaviour/xml_generator/templates/behaviour.xml.method.info.template +1 -0
  53. data/lib/tdriver-devtools/behaviour/xml_generator/templates/behaviour.xml.method.returns.template +3 -0
  54. data/lib/tdriver-devtools/behaviour/xml_generator/templates/behaviour.xml.method.tables.template +3 -0
  55. data/lib/tdriver-devtools/behaviour/xml_generator/templates/behaviour.xml.method.template +12 -0
  56. data/lib/tdriver-devtools/behaviour/xml_generator/templates/behaviour.xml.returns.template +5 -0
  57. data/lib/tdriver-devtools/behaviour/xml_generator/templates/behaviour.xml.table.item.template +1 -0
  58. data/lib/tdriver-devtools/behaviour/xml_generator/templates/behaviour.xml.table.row.template +2 -0
  59. data/lib/tdriver-devtools/behaviour/xml_generator/templates/behaviour.xml.table.template +7 -0
  60. data/lib/tdriver-devtools/behaviour/xml_generator/templates/behaviour.xml.template +14 -0
  61. data/lib/tdriver-devtools/behaviour/xml_generator/update +3 -0
  62. data/lib/tdriver-devtools/doc/behaviour_xml/QtExampleGestureBehaviour.xml +138 -0
  63. data/lib/tdriver-devtools/doc/behaviour_xml/created.rid +1 -0
  64. data/lib/tdriver-devtools/doc/behaviour_xml/tdriver.hash +1 -0
  65. data/lib/tdriver-devtools/doc/feature_xml/qt_widget_hold.feature.xml +9 -0
  66. data/lib/tdriver-devtools/doc/feature_xml/qt_widget_tap.feature.xml +9 -0
  67. data/lib/tdriver-devtools/doc/generate.rb +892 -0
  68. data/lib/tdriver-devtools/doc/update +1 -0
  69. data/lib/tdriver-devtools/doc/xslt/html.rb +7 -0
  70. data/lib/tdriver-devtools/doc/xslt/template.xsl +1861 -0
  71. data/lib/tdriver-devtools/doc/xslt/update +3 -0
  72. data/lib/tdriver-devtools/plugin/placeholder.txt +1 -0
  73. data/lib/tdriver-devtools/tdriver-devtools.rb +404 -0
  74. data/lib/tdriver-devtools/tests/feature_tests/example/flick-example.rb +233 -0
  75. data/lib/tdriver-devtools/tests/feature_tests/example/impl.rb +194 -0
  76. data/lib/tdriver-devtools/tests/feature_tests/generate.rb +82 -0
  77. data/lib/tdriver-devtools/tests/feature_tests/lib/custom_rdoc_generator.rb +468 -0
  78. data/lib/tdriver-devtools/tests/feature_tests/templates/feature_attribute.template +5 -0
  79. data/lib/tdriver-devtools/tests/feature_tests/templates/feature_method.template +5 -0
  80. data/lib/tdriver-devtools/tests/feature_tests/templates/scenario_attribute.template +5 -0
  81. data/lib/tdriver-devtools/tests/feature_tests/templates/scenario_method.template +5 -0
  82. data/lib/tdriver-devtools/tests/feature_tests/update +3 -0
  83. data/lib/tdriver.rb +26 -0
  84. data/lib/tdriver/base/behaviour/behaviour.rb +32 -0
  85. data/lib/tdriver/base/behaviour/behaviours/object_behaviour_composition.rb +94 -0
  86. data/lib/tdriver/base/behaviour/behaviours/object_behaviour_description.rb +262 -0
  87. data/lib/tdriver/base/behaviour/behaviours/object_composition.rb +111 -0
  88. data/lib/tdriver/base/behaviour/factory.rb +380 -0
  89. data/lib/tdriver/base/behaviour/loader.rb +28 -0
  90. data/lib/tdriver/base/command_data/command_data.rb +51 -0
  91. data/lib/tdriver/base/command_data/loader.rb +25 -0
  92. data/lib/tdriver/base/errors.rb +131 -0
  93. data/lib/tdriver/base/loader.rb +38 -0
  94. data/lib/tdriver/base/state_object.rb +270 -0
  95. data/lib/tdriver/base/sut/adapter.rb +28 -0
  96. data/lib/tdriver/base/sut/controller.rb +119 -0
  97. data/lib/tdriver/base/sut/factory.rb +287 -0
  98. data/lib/tdriver/base/sut/generic/behaviours/application.rb +243 -0
  99. data/lib/tdriver/base/sut/generic/behaviours/controller.rb +67 -0
  100. data/lib/tdriver/base/sut/generic/behaviours/find.rb +96 -0
  101. data/lib/tdriver/base/sut/generic/behaviours/flash_behaviour.rb +346 -0
  102. data/lib/tdriver/base/sut/generic/behaviours/sut.rb +1268 -0
  103. data/lib/tdriver/base/sut/generic/behaviours/switchbox_behaviour.rb +182 -0
  104. data/lib/tdriver/base/sut/generic/behaviours/verification.rb +119 -0
  105. data/lib/tdriver/base/sut/generic/commands/application.rb +219 -0
  106. data/lib/tdriver/base/sut/generic/commands/key_sequence.rb +82 -0
  107. data/lib/tdriver/base/sut/generic/commands/screen_capture.rb +58 -0
  108. data/lib/tdriver/base/sut/generic/plugin.rb +96 -0
  109. data/lib/tdriver/base/sut/loader.rb +35 -0
  110. data/lib/tdriver/base/sut/sut.rb +67 -0
  111. data/lib/tdriver/base/test_object/abstract.rb +179 -0
  112. data/lib/tdriver/base/test_object/behaviours/syncronization.rb +94 -0
  113. data/lib/tdriver/base/test_object/behaviours/test_object.rb +787 -0
  114. data/lib/tdriver/base/test_object/factory.rb +618 -0
  115. data/lib/tdriver/base/test_object/identificator.rb +511 -0
  116. data/lib/tdriver/base/test_object/loader.rb +37 -0
  117. data/lib/tdriver/env.rb +21 -0
  118. data/lib/tdriver/loader.rb +36 -0
  119. data/lib/tdriver/matti.rb +35 -0
  120. data/lib/tdriver/report/error_recovery/tdriver_custom_error_recovery.rb +83 -0
  121. data/lib/tdriver/report/error_recovery/tdriver_error_recovery.rb +158 -0
  122. data/lib/tdriver/report/error_recovery/tdriver_error_recovery_settings.rb +98 -0
  123. data/lib/tdriver/report/report.rb +47 -0
  124. data/lib/tdriver/report/report_api.rb +207 -0
  125. data/lib/tdriver/report/report_combine.rb +86 -0
  126. data/lib/tdriver/report/report_crash_file_capture.rb +167 -0
  127. data/lib/tdriver/report/report_creator.rb +571 -0
  128. data/lib/tdriver/report/report_cucumber.rb +158 -0
  129. data/lib/tdriver/report/report_cucumber_listener.rb +337 -0
  130. data/lib/tdriver/report/report_cucumber_reporter.rb +335 -0
  131. data/lib/tdriver/report/report_data_presentation.rb +152 -0
  132. data/lib/tdriver/report/report_data_table.rb +64 -0
  133. data/lib/tdriver/report/report_execution_statistics.rb +284 -0
  134. data/lib/tdriver/report/report_file_capture.rb +159 -0
  135. data/lib/tdriver/report/report_grouping.rb +539 -0
  136. data/lib/tdriver/report/report_junit_xml.rb +147 -0
  137. data/lib/tdriver/report/report_rspec.rb +108 -0
  138. data/lib/tdriver/report/report_test_case_run.rb +621 -0
  139. data/lib/tdriver/report/report_test_run.rb +1286 -0
  140. data/lib/tdriver/report/report_test_unit.rb +175 -0
  141. data/lib/tdriver/report/report_writer.rb +1405 -0
  142. data/lib/tdriver/tdriver.rb +158 -0
  143. data/lib/tdriver/util/common.rb +24 -0
  144. data/lib/tdriver/util/common/array.rb +39 -0
  145. data/lib/tdriver/util/common/crc16.rb +100 -0
  146. data/lib/tdriver/util/common/environment.rb +153 -0
  147. data/lib/tdriver/util/common/error.rb +39 -0
  148. data/lib/tdriver/util/common/file.rb +315 -0
  149. data/lib/tdriver/util/common/gem.rb +108 -0
  150. data/lib/tdriver/util/common/kernel.rb +189 -0
  151. data/lib/tdriver/util/common/loader.rb +39 -0
  152. data/lib/tdriver/util/common/retryable.rb +98 -0
  153. data/lib/tdriver/util/common/string.rb +77 -0
  154. data/lib/tdriver/util/dbaccess/dbaccess.rb +188 -0
  155. data/lib/tdriver/util/dbaccess/dbconnection.rb +41 -0
  156. data/lib/tdriver/util/dbaccess/error.rb +35 -0
  157. data/lib/tdriver/util/dbaccess/loader.rb +29 -0
  158. data/lib/tdriver/util/dynamic_attribute_filter.rb +182 -0
  159. data/lib/tdriver/util/hooking.rb +434 -0
  160. data/lib/tdriver/util/loader.rb +65 -0
  161. data/lib/tdriver/util/localisation.rb +24 -0
  162. data/lib/tdriver/util/localisation/error.rb +32 -0
  163. data/lib/tdriver/util/localisation/loader.rb +28 -0
  164. data/lib/tdriver/util/localisation/localisation.rb +479 -0
  165. data/lib/tdriver/util/logger.rb +377 -0
  166. data/lib/tdriver/util/operator_data/error.rb +29 -0
  167. data/lib/tdriver/util/operator_data/loader.rb +26 -0
  168. data/lib/tdriver/util/operator_data/operator_data.rb +93 -0
  169. data/lib/tdriver/util/other/config.rb +221 -0
  170. data/lib/tdriver/util/parameter.rb +24 -0
  171. data/lib/tdriver/util/parameter/error.rb +45 -0
  172. data/lib/tdriver/util/parameter/loader.rb +37 -0
  173. data/lib/tdriver/util/parameter/parameter.rb +285 -0
  174. data/lib/tdriver/util/parameter/parameter_hash.rb +101 -0
  175. data/lib/tdriver/util/parameter/parameter_template.rb +120 -0
  176. data/lib/tdriver/util/parameter/parameter_user_api.rb +84 -0
  177. data/lib/tdriver/util/parameter/parameter_xml.rb +247 -0
  178. data/lib/tdriver/util/plugin/abstract.rb +60 -0
  179. data/lib/tdriver/util/plugin/error.rb +25 -0
  180. data/lib/tdriver/util/plugin/loader.rb +28 -0
  181. data/lib/tdriver/util/plugin/service.rb +200 -0
  182. data/lib/tdriver/util/recorder.rb +292 -0
  183. data/lib/tdriver/util/stats.rb +90 -0
  184. data/lib/tdriver/util/user_data/error.rb +29 -0
  185. data/lib/tdriver/util/user_data/loader.rb +26 -0
  186. data/lib/tdriver/util/user_data/user_data.rb +103 -0
  187. data/lib/tdriver/util/video_rec.rb +264 -0
  188. data/lib/tdriver/util/xml/abstraction.rb +47 -0
  189. data/lib/tdriver/util/xml/builder.rb +54 -0
  190. data/lib/tdriver/util/xml/document.rb +32 -0
  191. data/lib/tdriver/util/xml/element.rb +32 -0
  192. data/lib/tdriver/util/xml/error.rb +46 -0
  193. data/lib/tdriver/util/xml/loader.rb +46 -0
  194. data/lib/tdriver/util/xml/nil_element.rb +89 -0
  195. data/lib/tdriver/util/xml/nodeset.rb +32 -0
  196. data/lib/tdriver/util/xml/parsers/libxml/libxml.rb +140 -0
  197. data/lib/tdriver/util/xml/parsers/loader.rb +22 -0
  198. data/lib/tdriver/util/xml/parsers/nokogiri/abstraction.rb +111 -0
  199. data/lib/tdriver/util/xml/parsers/nokogiri/attribute.rb +54 -0
  200. data/lib/tdriver/util/xml/parsers/nokogiri/builder.rb +58 -0
  201. data/lib/tdriver/util/xml/parsers/nokogiri/document.rb +58 -0
  202. data/lib/tdriver/util/xml/parsers/nokogiri/element.rb +147 -0
  203. data/lib/tdriver/util/xml/parsers/nokogiri/loader.rb +42 -0
  204. data/lib/tdriver/util/xml/parsers/nokogiri/nodeset.rb +187 -0
  205. data/lib/tdriver/util/xml/xml.rb +170 -0
  206. data/lib/tdriver/verify/verify.rb +687 -0
  207. data/lib/tdriver/verify/verify.rb_org +630 -0
  208. data/lib/tdriver/version.rb +21 -0
  209. data/xml/behaviours/generic.xml +495 -0
  210. data/xml/defaults/generic.xml +97 -0
  211. data/xml/defaults/sut_generic.xml +36 -0
  212. data/xml/parameters/tdriver_parameters.xml +23 -0
  213. data/xml/templates/generic.xml +227 -0
  214. metadata +327 -0
@@ -0,0 +1 @@
1
+ ruby generate.rb feature_xml/ behaviour_xml/ output/example.xml
@@ -0,0 +1,7 @@
1
+ require 'nokogiri'
2
+
3
+ doc = Nokogiri::XML(open("example.xml",'r').read)
4
+ xslt = Nokogiri::XSLT(open("template.xsl",'r').read)
5
+
6
+ puts xslt.transform(doc)
7
+
@@ -0,0 +1,1861 @@
1
+ <?xml version="1.0" encoding="ISO-8859-1"?>
2
+
3
+ <xsl:stylesheet version="1.0"
4
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
5
+ xmlns:str="http://exslt.org/strings"
6
+ xmlns:exsl="http://exslt.org/common"
7
+ extension-element-prefixes="exsl str">
8
+
9
+ <xsl:preserve-space elements="*"/>
10
+ <xsl:output method="html"/>
11
+
12
+ <xsl:template match="/">
13
+ <html>
14
+ <head>
15
+ <style TYPE="text/css">
16
+
17
+ body
18
+ {
19
+ padding: 10px;
20
+ border: #e7e7e7 1px solid;
21
+ background: #ffffff;
22
+ color: black;
23
+ font-size: 13px;
24
+ cursor: default;
25
+ text-shadow: #909090 1px 1px 4px;
26
+ }
27
+
28
+ div.feature_title
29
+ {
30
+
31
+ background: #c1c1c1;
32
+
33
+ border-top: 1px solid #c9c9c9;
34
+ border-left: 1px solid #c9c9c9;
35
+
36
+ border-bottom: 1px solid #aaaaaa;
37
+ border-right: 1px solid #aaaaaa;
38
+
39
+ padding: 8px;
40
+
41
+ -moz-box-shadow: 1px 1px 4px #818181;
42
+ -webkit-box-shadow: 1px 1px 4px #818181;
43
+
44
+ }
45
+
46
+ span.feature_title_text, a.feature_name_link
47
+ {
48
+ text-decoration: none;
49
+ font-size: 14px;
50
+ color: #606060;
51
+
52
+ text-shadow: gray 2px 2px 3px;
53
+ font-weight: bold;
54
+ }
55
+
56
+ span.feature_title_text:hover
57
+ {
58
+
59
+ color: #404040;
60
+
61
+ }
62
+
63
+ div.feature_section_title
64
+ {
65
+
66
+ font-family: arial;
67
+ font-size: 13px;
68
+ font-weight: bold;
69
+ color: #000000;
70
+ text-shadow: #909090 1px 1px 4px;
71
+
72
+ }
73
+
74
+ div.feature_description, div.feature_call_sequence, div.scenario_description, div.feature_deprecated_version
75
+ {
76
+
77
+ padding: 2px;
78
+ font-family: 'Times New Roman', Times, serif;
79
+ font-size: 13px;
80
+ font-weight: normal;
81
+
82
+ }
83
+
84
+ div.feature_info
85
+ {
86
+
87
+ font-family: 'Times New Roman', Times, serif;
88
+ font-weight: normal;
89
+
90
+ }
91
+
92
+ div.feature_description, div.scenario_description, div.feature_deprecated_version
93
+ {
94
+ font-style: normal; // normal more readable than italic;
95
+ }
96
+
97
+ div.feature_call_sequence
98
+ {
99
+
100
+ }
101
+
102
+ table.default
103
+ {
104
+
105
+ margin-top: 2px;
106
+
107
+ width: 100%;
108
+
109
+ text-align: left;
110
+
111
+ <!-- cellspacing -->
112
+ border-spacing: 1px;
113
+
114
+ border: 1px solid #c1c1c1;
115
+ border-top: 1px solid #e1e1e1;
116
+ border-left: 1px solid #e1e1e1;
117
+
118
+ }
119
+
120
+ tr.header, tr.header_custom
121
+ {
122
+ #background: #96E066;
123
+ font-weight: bold;
124
+ }
125
+
126
+ tr.header_custom
127
+ {
128
+
129
+ #background: #f0a646;
130
+
131
+ }
132
+
133
+ td.header_custom{
134
+
135
+ background: #f0a646;
136
+
137
+ }
138
+
139
+ <!-- table-style: cellpadding -->
140
+ td
141
+ {
142
+
143
+ padding: 6px;
144
+ font-family: arial;
145
+ font-size: 11px;
146
+
147
+ }
148
+
149
+ td.header
150
+ {
151
+
152
+ background: #96E066;
153
+
154
+ font-size: 11px;
155
+ border-top: 1px solid #a6f076;
156
+ border-left: 1px solid #a6f076;
157
+
158
+ border-bottom: 1px solid #7fc94f;
159
+ border-right: 1px solid #7fc94f;
160
+
161
+ }
162
+
163
+ td.tablebg_even
164
+ {
165
+ background: #ededed;
166
+ border-top: 1px solid #f5f5f5;
167
+ border-left: 1px solid #f5f5f5;
168
+ border-bottom: 1px solid #d6d6d6;
169
+ border-right: 1px solid #d6d6d6;
170
+ }
171
+
172
+ td.tablebg_odd
173
+ {
174
+ background: #dedede;
175
+ border-top: 1px solid #e6e6e6;
176
+ border-left: 1px solid #e6e6e6;
177
+ border-bottom: 1px solid #c7c7c7;
178
+ border-right: 1px solid #c7c7c7;
179
+ }
180
+
181
+ td.warning, div.warning, span.warning, td.tablebg_warning, pre.failed, pre.skipped
182
+ {
183
+
184
+ background: #a11010;
185
+ color: #ffff00;
186
+ text-shadow: #666600 1px 1px 4px;
187
+
188
+ }
189
+
190
+ td.tablebg_warning, td.warning, pre.failed, pre.skipped
191
+ {
192
+
193
+ border-top: 1px solid #a91818;
194
+ border-left: 1px solid #a91818;
195
+
196
+ border-bottom: 1px solid #8a0000;
197
+ border-right: 1px solid #8a0000;
198
+
199
+ }
200
+
201
+ td.tablebg_disabled
202
+ {
203
+ background: #c5c5c5;
204
+
205
+ border-top: 1px solid #cdcdcd;
206
+ border-left: 1px solid #cdcdcd;
207
+ border-bottom: 1px solid #aeaeae;
208
+ border-right: 1px solid #aeaeae;
209
+
210
+ }
211
+
212
+ div.warning
213
+ {
214
+ color: #ffff00;
215
+ text-shadow: #666600 1px 1px 4px;
216
+
217
+ font-family: arial;
218
+ font-size: 11px;
219
+ padding: 6px;
220
+
221
+ }
222
+
223
+ span.optional_argument
224
+ {
225
+ font-style: italic;
226
+ }
227
+
228
+ pre
229
+ {
230
+
231
+ font-family: monospace;
232
+ font-size: 11px;
233
+
234
+ }
235
+
236
+ pre.passed, pre.failed, pre.skipped, pre.block
237
+ {
238
+
239
+ margin: 5px 2px 9px 2px;
240
+ padding: 10px 10px 10px 8px;
241
+
242
+ }
243
+
244
+ pre.passed, pre.block
245
+ {
246
+
247
+ background: #f1f1f1;
248
+
249
+ border-top: 1px solid #f9f9f9;
250
+ border-left: 1px solid #f9f9f9;
251
+
252
+ border-bottom: 1px solid #dadada;
253
+ border-right: 1px solid #dadada;
254
+
255
+ color: black;
256
+ }
257
+
258
+ pre.failed, pre.skipped
259
+ {
260
+
261
+ //color: black;
262
+
263
+ }
264
+ span.hover_text
265
+ {
266
+
267
+ cursor: help; //pointer;
268
+ border-bottom: 1px dotted #b1b1b1;
269
+
270
+ }
271
+
272
+ span.hover_text:hover
273
+ {
274
+
275
+ cursor: help; //pointer;
276
+ border-bottom: 1px dotted #515151;
277
+
278
+ }
279
+
280
+ span.toc_title
281
+ {
282
+
283
+ font-size: 14px;
284
+ font-weight: bold;
285
+
286
+ }
287
+
288
+ div.toc
289
+ {
290
+
291
+ padding: 5px;
292
+ width: 100%;
293
+ word-spacing: normal;
294
+ }
295
+
296
+ span.toc_block
297
+ {
298
+
299
+ padding: 7px;
300
+ }
301
+
302
+ a.toc_item
303
+ {
304
+
305
+ font-size: 11px;
306
+ text-decoration: none;
307
+ color: #313131;
308
+
309
+ }
310
+
311
+ a.toc_item:hover
312
+ {
313
+
314
+ border-bottom: 1px dotted #515151;
315
+
316
+ }
317
+
318
+
319
+ a.jump_to
320
+ {
321
+
322
+ font-size: 11px;
323
+ text-decoration: none;
324
+ color: #313131;
325
+
326
+ }
327
+
328
+ a.jump_to:hover
329
+ {
330
+
331
+ border-bottom: 1px dotted #515151;
332
+
333
+ }
334
+
335
+ a.link
336
+ {
337
+
338
+ text-decoration: none;
339
+
340
+ color: #d15131;
341
+ text-shadow: #ff8f6f 1px 1px 4px;
342
+
343
+ border-bottom: 1px dotted #515151;
344
+ font-weight: bold;
345
+
346
+ }
347
+
348
+ a.link:hover
349
+ {
350
+
351
+ border-bottom: 1px solid #515151;
352
+
353
+ }
354
+
355
+
356
+ img
357
+ {
358
+
359
+ border: 0px;
360
+
361
+ }
362
+
363
+ tr.header, tr.header_custom, div.feature_title, table.default, td.header, td.header_custom, td.tablebg_even, td.tablebg_odd, td.tablebg_warning, td.warning, div.warning, td.tablebg_disabled, pre.passed, pre.failed, pre.skipped, pre.block
364
+ {
365
+
366
+ -moz-border-radius: 5px 5px 5px 5px;
367
+
368
+ -webkit-border-radius: 9px;
369
+ -webkit-border-top-left-radius: 9px;
370
+ -webkit-border-bottom-right-radius: 9px;
371
+
372
+
373
+ }
374
+
375
+ </style>
376
+ </head>
377
+ <body>
378
+
379
+ <a name="top">
380
+ <h2>Documentation</h2>
381
+ </a>
382
+
383
+ <xsl:apply-templates/>
384
+
385
+ </body>
386
+ </html>
387
+ </xsl:template>
388
+
389
+ <xsl:template match="documentation">
390
+
391
+ <!-- table of contents -->
392
+ <span class="toc_title">Table of contents:</span>
393
+ <br />
394
+
395
+ <div class="toc">
396
+
397
+ <xsl:for-each select="feature/@name">
398
+
399
+ <xsl:sort select="." />
400
+
401
+ <!---
402
+
403
+ file:///home/jussi/git/2010-10-07/driver/lib/output/example.xml#QT;TestObject;activate
404
+
405
+ -->
406
+
407
+ <xsl:variable name="name"><xsl:value-of select="../@name"/></xsl:variable>
408
+ <xsl:variable name="module"><xsl:value-of select="../behaviour/@module"/></xsl:variable>
409
+ <xsl:variable name="module_name"><xsl:value-of select="../behaviour/@name"/></xsl:variable>
410
+
411
+ <xsl:for-each select="str:split(.,';')">
412
+ <span class="toc_block"><a href="#{ $module_name }:{ $name }" class="toc_item" title="{ $module_name } ({ $module })"><xsl:value-of select="." /></a><xsl:text> </xsl:text></span>
413
+ </xsl:for-each>
414
+
415
+ <xsl:text> </xsl:text>
416
+
417
+ </xsl:for-each>
418
+
419
+ </div>
420
+ <br />
421
+
422
+ <!-- content -->
423
+
424
+ <xsl:for-each select="feature">
425
+ <xsl:sort select="@name" />
426
+ <xsl:call-template name="feature">
427
+ </xsl:call-template>
428
+
429
+ </xsl:for-each>
430
+
431
+ </xsl:template>
432
+
433
+ <xsl:template name="feature_name">
434
+
435
+ <!-- implements following features, e.g. method name, attribute reader, attribute writer or both when attribute accessor -->
436
+
437
+ <!-- #{ $module }.{ $name }-->
438
+
439
+ <a name="{ ./behaviour/@name }:{ @name }"></a>
440
+ <div class="feature_title">
441
+ <a href="#{ ./behaviour/@name }:{ @name }" class="feature_name_link">
442
+ <xsl:for-each select="str:split(@name,';')">
443
+ <span class="feature_title_text"><xsl:value-of select="."/></span>
444
+ <xsl:if test="position()!=last()">
445
+ <xsl:text>, </xsl:text>
446
+ </xsl:if>
447
+ </xsl:for-each>
448
+ </a>
449
+ </div>
450
+
451
+ <br />
452
+
453
+ </xsl:template>
454
+
455
+ <xsl:template name="call_sequence">
456
+
457
+ <div class="feature_section_title">Call sequence:</div>
458
+
459
+ <div class="feature_call_sequence">
460
+ <!-- method: call example using parameters -->
461
+ <xsl:if test="@type='method'">
462
+
463
+ <xsl:text>object.</xsl:text><xsl:value-of select="@name" />
464
+
465
+ <xsl:choose>
466
+
467
+ <xsl:when test="arguments/@count>0 and count(arguments/argument)&lt;arguments/@count">
468
+ <xsl:text>( </xsl:text><xsl:call-template name="span_warning">
469
+ <xsl:with-param name="text">Incomplete arguments documentation</xsl:with-param>
470
+ </xsl:call-template><xsl:text> )</xsl:text>
471
+ </xsl:when>
472
+
473
+ <xsl:when test="count(arguments/argument)=0"></xsl:when>
474
+
475
+ <xsl:when test="count(arguments/argument)>0">
476
+
477
+ <!-- do not show parenthesis if first argument is type of block -->
478
+ <xsl:if test="arguments/argument[1]/@type!='block'">
479
+ <xsl:text>( </xsl:text>
480
+
481
+ <!-- collect arguments for example -->
482
+ <xsl:for-each select="arguments/argument">
483
+
484
+ <xsl:if test="@type='normal' or @type='multi'">
485
+
486
+ <xsl:choose>
487
+
488
+ <xsl:when test="@optional='true'">
489
+
490
+ <span class="optional_argument" title="Optional argument">
491
+
492
+ <xsl:if test="@type='multi'">
493
+ <xsl:text></xsl:text>
494
+ </xsl:if>
495
+
496
+ <xsl:text>[ </xsl:text>
497
+ <span class="hover_text">
498
+ <xsl:value-of select="@name"/>
499
+ <xsl:if test="@type='multi'">
500
+ <xsl:text>, ..., ...</xsl:text>
501
+ </xsl:if>
502
+ </span>
503
+
504
+ <xsl:text> ]</xsl:text>
505
+
506
+ </span>
507
+
508
+ </xsl:when>
509
+
510
+ <xsl:otherwise>
511
+ <span title="Mandatory argument" class="hover_text"><xsl:value-of select="@name"/></span>
512
+ </xsl:otherwise>
513
+
514
+ </xsl:choose>
515
+
516
+ <!-- separate arguments with comma if next argument defintion is not type of block -->
517
+ <xsl:if test="position()!=last() and (string(following-sibling::argument/@type)!='block' and string(following-sibling::argument/@type)!='block_argument')">
518
+ <xsl:text>, </xsl:text>
519
+ </xsl:if>
520
+
521
+ </xsl:if>
522
+
523
+ </xsl:for-each>
524
+ <xsl:text> ) </xsl:text>
525
+ </xsl:if>
526
+
527
+ <!-- collect arguments for example -->
528
+ <xsl:for-each select="arguments/argument">
529
+
530
+ <xsl:if test="./@type='block'">
531
+
532
+ <xsl:text>{ </xsl:text>
533
+
534
+ <xsl:for-each select="../../arguments/argument[@type='block_argument']">
535
+
536
+ <xsl:choose>
537
+ <xsl:when test="position()=1">
538
+ <xsl:text>| </xsl:text>
539
+ </xsl:when>
540
+ <xsl:otherwise>
541
+ <xsl:text>, </xsl:text>
542
+ </xsl:otherwise>
543
+ </xsl:choose>
544
+
545
+ <span title="Code block argument, mandatory or optional" class="hover_text"><xsl:value-of select="str:split(@name,'#')[2]"/></span>
546
+
547
+ <xsl:if test="position()=last()">
548
+ <xsl:text> | </xsl:text>
549
+ </xsl:if>
550
+
551
+ </xsl:for-each>
552
+
553
+ <span class="hover_text" title="Code block, mandatory or optional"><xsl:value-of select="@name"/></span>
554
+ <xsl:text> }</xsl:text>
555
+
556
+ </xsl:if>
557
+
558
+ </xsl:for-each>
559
+
560
+ </xsl:when>
561
+
562
+ </xsl:choose>
563
+
564
+ <!-- describe block usage -->
565
+ <xsl:if test="count(arguments/block)>0">
566
+ <xsl:text>{ dsadsa</xsl:text>
567
+ <!-- TODO: block arguments -->
568
+ <xsl:value-of select="arguments/block/@name" />
569
+ <xsl:text> }</xsl:text>
570
+ </xsl:if>
571
+ <br />
572
+ </xsl:if>
573
+
574
+ <!-- attr_reader/attr_accessor: call example -->
575
+ <xsl:if test="@type='reader' or @type='accessor'">
576
+ <xsl:text>return_value = object.</xsl:text>
577
+ <xsl:value-of select="str:split(@name,';')[1]" />
578
+ <br />
579
+ </xsl:if>
580
+
581
+ <!-- attr_writer/attr_accessor: call example -->
582
+ <xsl:if test="@type='writer' or @type='accessor'">
583
+
584
+ <!-- TODO: argument name from arguments array -->
585
+ <xsl:text>object.</xsl:text>
586
+ <xsl:value-of select="str:split(@name,';')[1]" />
587
+ <xsl:text> = ( </xsl:text>
588
+
589
+ <xsl:choose>
590
+
591
+ <xsl:when test="count(arguments/argument)=0">
592
+ <span title="Mandatory value" class="hover_text"><xsl:text>new_value</xsl:text></span>
593
+ </xsl:when>
594
+
595
+ <xsl:otherwise>
596
+ <span title="Mandatory value" class="hover_text"><xsl:value-of select="arguments/argument[1]/@name" /></span>
597
+ </xsl:otherwise>
598
+
599
+ </xsl:choose>
600
+
601
+ <xsl:text> )</xsl:text>
602
+ <br />
603
+ </xsl:if>
604
+
605
+ </div>
606
+
607
+ <br />
608
+
609
+ </xsl:template>
610
+
611
+ <!-- template to capitalize string -->
612
+ <xsl:template name="capitalize">
613
+
614
+ <xsl:param name="text" />
615
+
616
+ <xsl:value-of select="concat(translate(substring($text,1,1), 'abcdefghijklmnopqrstuvwxyz','ABCDEFGHIJKLMNOPQRSTUVWXYZ'), substring($text,2))"/>
617
+
618
+ </xsl:template>
619
+
620
+ <xsl:template name="target_details">
621
+
622
+ <div class="feature_section_title">Feature and target details:</div>
623
+ <table class="default">
624
+ <tr class="header">
625
+ <td class="header">Type</td>
626
+ <td class="header">Target object(s)</td>
627
+ <td class="header">SUT type(s)</td>
628
+ <td class="header">SUT version(s)</td>
629
+ <td class="header">SUT input type(s)</td>
630
+ <td class="header">Behaviour module and name</td>
631
+ <td class="header">Required plugin</td>
632
+ </tr>
633
+ <tr>
634
+
635
+ <!-- feature type -->
636
+ <td class="tablebg_even" valign="top">
637
+ <!-- capitalize text() -->
638
+ <xsl:call-template name="capitalize">
639
+ <xsl:with-param name="text" select="@type" />
640
+ </xsl:call-template>
641
+ </td>
642
+
643
+ <!-- target object -->
644
+ <xsl:choose>
645
+ <xsl:when test="string-length(@object_type)>0">
646
+ <td class="tablebg_even" valign="top">
647
+ <xsl:for-each select="str:split(@object_type,';')">
648
+ <xsl:choose>
649
+ <xsl:when test="text()='*'">
650
+ <xsl:text>Any test object</xsl:text>
651
+ </xsl:when>
652
+ <xsl:when test="text()='sut'">
653
+ <xsl:text>SUT object</xsl:text>
654
+ </xsl:when>
655
+ <xsl:otherwise>
656
+ <xsl:value-of select="text()" />
657
+ </xsl:otherwise>
658
+ </xsl:choose>
659
+ <xsl:if test="position()!=last()">
660
+ <xsl:text>,</xsl:text>
661
+ </xsl:if>
662
+ <br />
663
+ </xsl:for-each>
664
+ </td>
665
+ </xsl:when>
666
+ <xsl:otherwise>
667
+ <td class="tablebg_warning" valign="top">
668
+ <xsl:call-template name="div_warning">
669
+ <xsl:with-param name="text">Not defined</xsl:with-param>
670
+ </xsl:call-template>
671
+ </td>
672
+ </xsl:otherwise>
673
+ </xsl:choose>
674
+
675
+
676
+
677
+ <!-- target sut -->
678
+ <xsl:choose>
679
+ <xsl:when test="string-length(@sut_type)>0">
680
+ <td class="tablebg_even" valign="top">
681
+ <xsl:for-each select="str:split(@sut_type,';')">
682
+ <xsl:choose>
683
+ <xsl:when test="text()='*'">
684
+ <xsl:text>Any SUT type</xsl:text>
685
+ </xsl:when>
686
+ <xsl:otherwise>
687
+ <!-- capitalize text() -->
688
+ <xsl:call-template name="capitalize">
689
+ <xsl:with-param name="text" select="text()" />
690
+ </xsl:call-template>
691
+ </xsl:otherwise>
692
+ </xsl:choose>
693
+ <xsl:if test="position()!=last()">
694
+ <xsl:text>,</xsl:text>
695
+ </xsl:if>
696
+ <br />
697
+ </xsl:for-each>
698
+ </td>
699
+ </xsl:when>
700
+ <xsl:otherwise>
701
+ <td class="tablebg_warning" valign="top">
702
+ <xsl:call-template name="div_warning">
703
+ <xsl:with-param name="text">Not defined</xsl:with-param>
704
+ </xsl:call-template>
705
+ </td>
706
+ </xsl:otherwise>
707
+ </xsl:choose>
708
+
709
+ <!-- sut version -->
710
+ <xsl:choose>
711
+ <xsl:when test="string-length(@sut_version)>0">
712
+ <td class="tablebg_even" valign="top">
713
+ <xsl:for-each select="str:split(@sut_version,';')">
714
+
715
+ <xsl:choose>
716
+ <xsl:when test="text()='*'">
717
+ <xsl:text>All</xsl:text>
718
+ </xsl:when>
719
+ <xsl:otherwise>
720
+ <!-- capitalize text() -->
721
+ <xsl:call-template name="capitalize">
722
+ <xsl:with-param name="text" select="text()" />
723
+ </xsl:call-template>
724
+ </xsl:otherwise>
725
+ </xsl:choose>
726
+ <xsl:if test="position()!=last()">
727
+ <xsl:text>,</xsl:text>
728
+ </xsl:if>
729
+ <br />
730
+ </xsl:for-each>
731
+ </td>
732
+ </xsl:when>
733
+ <xsl:otherwise>
734
+ <td class="tablebg_warning" valign="top">
735
+ <xsl:call-template name="div_warning">
736
+ <xsl:with-param name="text">Not defined</xsl:with-param>
737
+ </xsl:call-template>
738
+ </td>
739
+ </xsl:otherwise>
740
+ </xsl:choose>
741
+
742
+ <!-- input type -->
743
+ <xsl:choose>
744
+ <xsl:when test="string-length(@input_type)=0">
745
+ <td class="tablebg_warning" valign="top">
746
+ <xsl:call-template name="div_warning">
747
+ <xsl:with-param name="text">Not defined</xsl:with-param>
748
+ </xsl:call-template>
749
+ </td>
750
+ </xsl:when>
751
+ <xsl:otherwise>
752
+ <td class="tablebg_even" valign="top">
753
+ <xsl:for-each select="str:split(@input_type,';')">
754
+ <xsl:choose>
755
+ <xsl:when test="text()='*'">
756
+ <xsl:text>All</xsl:text>
757
+ </xsl:when>
758
+ <xsl:otherwise>
759
+ <!-- capitalize text() -->
760
+ <xsl:call-template name="capitalize">
761
+ <xsl:with-param name="text" select="text()" />
762
+ </xsl:call-template>
763
+ </xsl:otherwise>
764
+ </xsl:choose>
765
+ <xsl:if test="position()!=last()">
766
+ <xsl:text>,</xsl:text>
767
+ </xsl:if>
768
+ <br />
769
+ </xsl:for-each>
770
+ </td>
771
+ </xsl:otherwise>
772
+ </xsl:choose>
773
+
774
+ <!-- behaviour module -->
775
+ <xsl:choose>
776
+ <xsl:when test="string-length(behaviour/@module)>0">
777
+
778
+ <xsl:choose>
779
+ <xsl:when test="string-length(behaviour/@name)>0">
780
+
781
+ <td class="tablebg_even" valign="top">
782
+ <xsl:value-of select="behaviour/@module" /><xsl:text> (</xsl:text><xsl:value-of select="behaviour/@name" /><xsl:text>)</xsl:text>
783
+ </td>
784
+
785
+ </xsl:when>
786
+ <xsl:otherwise>
787
+
788
+ <td class="tablebg_warning" valign="top">
789
+ <xsl:call-template name="div_warning">
790
+ <xsl:with-param name="text">
791
+ <xsl:value-of select="behaviour/@module" /><xsl:text> (Behaviour name not defined)</xsl:text>
792
+ </xsl:with-param>
793
+ </xsl:call-template>
794
+ </td>
795
+
796
+ </xsl:otherwise>
797
+ </xsl:choose>
798
+
799
+ </xsl:when>
800
+ <xsl:otherwise>
801
+ <td class="tablebg_warning" valign="top">
802
+ <xsl:call-template name="div_warning">
803
+ <xsl:with-param name="text">Not defined</xsl:with-param>
804
+ </xsl:call-template>
805
+ </td>
806
+ </xsl:otherwise>
807
+ </xsl:choose>
808
+
809
+ <!-- required plugin -->
810
+ <xsl:choose>
811
+ <xsl:when test="string-length(@required_plugin)=0">
812
+ <td class="tablebg_warning" valign="top">
813
+ <xsl:call-template name="div_warning">
814
+ <xsl:with-param name="text">Not defined</xsl:with-param>
815
+ </xsl:call-template>
816
+ </td>
817
+ </xsl:when>
818
+ <xsl:when test="@required_plugin!='*'">
819
+ <td class="tablebg_even" valign="top">
820
+ <xsl:value-of select="@required_plugin" />
821
+ </td>
822
+ </xsl:when>
823
+ <xsl:otherwise>
824
+ <td class="tablebg_disabled" valign="top"></td>
825
+ </xsl:otherwise>
826
+ </xsl:choose>
827
+
828
+ </tr>
829
+
830
+ </table>
831
+ <br />
832
+
833
+ </xsl:template>
834
+
835
+ <xsl:template name="feature">
836
+
837
+ <div id="{ ./behaviour/@name }.@name">
838
+
839
+ <xsl:call-template name="feature_name" />
840
+
841
+ <xsl:if test="count(deprecated)>0">
842
+
843
+ <xsl:call-template name="deprecated" />
844
+
845
+ </xsl:if>
846
+
847
+ <xsl:call-template name="description" />
848
+
849
+ <xsl:if test="count(deprecated)>0">
850
+
851
+ <xsl:call-template name="target_details" />
852
+
853
+ </xsl:if>
854
+
855
+ <xsl:if test="count(deprecated)=0">
856
+
857
+ <xsl:call-template name="call_sequence" />
858
+
859
+ <xsl:call-template name="target_details" />
860
+
861
+ <xsl:call-template name="arguments" />
862
+
863
+ <xsl:call-template name="returns">
864
+ <xsl:with-param name="type" select="returns/type" />
865
+ <xsl:with-param name="feature_type" select="@type" />
866
+ </xsl:call-template>
867
+
868
+ <xsl:call-template name="exceptions">
869
+ <xsl:with-param name="type" select="exceptions/type" />
870
+ <xsl:with-param name="feature_type" select="@type" />
871
+ </xsl:call-template>
872
+
873
+ <xsl:if test="count(tables/table)>0">
874
+ <!-- custom tables -->
875
+ <xsl:call-template name="tables" />
876
+ </xsl:if>
877
+
878
+ <xsl:call-template name="tests">
879
+ <xsl:with-param name="tests" select="tests" />
880
+ </xsl:call-template>
881
+
882
+ </xsl:if>
883
+
884
+ <xsl:call-template name="info" />
885
+
886
+ <xsl:if test="position()!=last()-1">
887
+ <!-- feature separator? -->
888
+ </xsl:if>
889
+
890
+ <a href="#top" class="jump_to">Jump to top of page</a><br />
891
+ <br />
892
+
893
+ </div>
894
+
895
+ </xsl:template>
896
+
897
+ <xsl:template name="exceptions">
898
+
899
+ <xsl:param name="type" />
900
+ <xsl:param name="feature_type" />
901
+
902
+ <xsl:if test="count($type)>0">
903
+
904
+ <!-- exceptions -->
905
+ <div class="feature_section_title">Exceptions:</div>
906
+
907
+ <table class="default">
908
+ <tr class="header">
909
+ <td class="header">Type</td>
910
+ <td class="header">Description</td>
911
+ </tr>
912
+
913
+ <xsl:for-each select="$type">
914
+
915
+ <xsl:choose>
916
+
917
+ <xsl:when test="(number(position()-1) mod 2)=0">
918
+ <xsl:call-template name="exception_type">
919
+ <xsl:with-param name="type" select="." />
920
+ <xsl:with-param name="class">tablebg_even</xsl:with-param>
921
+ </xsl:call-template>
922
+ </xsl:when>
923
+
924
+ <xsl:otherwise>
925
+ <xsl:call-template name="exception_type">
926
+ <xsl:with-param name="type" select="." />
927
+ <xsl:with-param name="class">tablebg_odd</xsl:with-param>
928
+ </xsl:call-template>
929
+ </xsl:otherwise>
930
+
931
+ </xsl:choose>
932
+
933
+ </xsl:for-each>
934
+
935
+ </table>
936
+ <br />
937
+
938
+ </xsl:if>
939
+
940
+ </xsl:template>
941
+
942
+ <xsl:template name="exception_type">
943
+
944
+ <xsl:param name="type" />
945
+ <xsl:param name="class" />
946
+
947
+ <tr valign="top" class="{ $class }">
948
+ <td class="{ $class }"><xsl:value-of select="$type/@name"/></td>
949
+
950
+
951
+ <xsl:choose>
952
+
953
+
954
+
955
+ <xsl:when test="string-length($type/description)=0">
956
+
957
+ <xsl:call-template name="col_warning" >
958
+ <xsl:with-param name="text">Exception description not defined</xsl:with-param>
959
+ </xsl:call-template>
960
+
961
+ </xsl:when>
962
+
963
+ <xsl:otherwise>
964
+ <td class="{ $class }"><xsl:for-each select="str:split($type/description,'\n')"><xsl:value-of select="text()" /><br /></xsl:for-each></td>
965
+ </xsl:otherwise>
966
+
967
+ </xsl:choose>
968
+ <!--
969
+
970
+ <td class="{ $class }"><xsl:for-each select="str:split($type/description,'\n')"><xsl:value-of select="text()" /><br /></xsl:for-each></td>
971
+ -->
972
+
973
+
974
+
975
+ </tr>
976
+
977
+ </xsl:template>
978
+
979
+ <xsl:template name="argument_details">
980
+
981
+ <xsl:param name="argument_name" />
982
+ <xsl:param name="type" />
983
+ <xsl:param name="default" />
984
+ <xsl:param name="class" />
985
+
986
+ <xsl:choose>
987
+
988
+ <xsl:when test="count(type)>0">
989
+
990
+ <xsl:variable name="argument_types" select="count(type)" />
991
+
992
+ <xsl:for-each select="type">
993
+
994
+ <tr valign="top" class="{ $class }">
995
+
996
+ <xsl:if test="position()=1">
997
+
998
+ <xsl:choose>
999
+
1000
+ <xsl:when test="string(../@type)='block_argument'">
1001
+ <td rowspan="{ $argument_types }" class="{ $class }">
1002
+ <span title="Code block argument, mandatory or optional" class="hover_text"><xsl:value-of select="str:split($argument_name,'#')[2]" /></span>
1003
+ </td>
1004
+ </xsl:when>
1005
+
1006
+ <xsl:when test="string(../@type)='block'">
1007
+ <td rowspan="{ $argument_types }" class="{ $class }">
1008
+ <span title="Code block, mandatory or optional" class="hover_text"><xsl:value-of select="$argument_name" /></span>
1009
+ </td>
1010
+ </xsl:when>
1011
+
1012
+ <xsl:when test="string(../@optional)='true'">
1013
+ <td rowspan="{$argument_types}" class="{ $class }">
1014
+ <span class="optional_argument" title="Optional argument">
1015
+ <span class="hover_text"><xsl:value-of select="$argument_name" /></span>
1016
+ </span>
1017
+ </td>
1018
+ </xsl:when>
1019
+
1020
+
1021
+ <xsl:otherwise>
1022
+ <td rowspan="{ $argument_types }" class="{ $class }">
1023
+ <span title="Mandatory argument" class="hover_text"><xsl:value-of select="$argument_name" /></span>
1024
+ </td>
1025
+ </xsl:otherwise>
1026
+
1027
+ </xsl:choose>
1028
+
1029
+ </xsl:if>
1030
+
1031
+ <!-- verify that argument variable type is defined -->
1032
+ <xsl:choose>
1033
+ <xsl:when test="string-length(@name)>0">
1034
+ <td class="{ $class }"><xsl:value-of select="@name"/></td>
1035
+ </xsl:when>
1036
+ <xsl:otherwise>
1037
+ <xsl:call-template name="col_warning" >
1038
+ <xsl:with-param name="text">Not defined</xsl:with-param>
1039
+ </xsl:call-template>
1040
+ </xsl:otherwise>
1041
+ </xsl:choose>
1042
+
1043
+ <!-- verify that argument description is defined -->
1044
+ <xsl:choose>
1045
+ <xsl:when test="string-length(description/text())>0">
1046
+ <td class="{ $class }">
1047
+ <xsl:call-template name="formatted_content">
1048
+ <xsl:with-param name="text" select="description/text()"/>
1049
+ </xsl:call-template>
1050
+ </td>
1051
+ </xsl:when>
1052
+ <xsl:otherwise>
1053
+ <xsl:call-template name="col_warning" >
1054
+ <xsl:with-param name="text">Not defined</xsl:with-param>
1055
+ </xsl:call-template>
1056
+ </xsl:otherwise>
1057
+ </xsl:choose>
1058
+
1059
+ <!-- verify that argument example is defined -->
1060
+ <xsl:choose>
1061
+
1062
+ <xsl:when test="@type='block_argument'">
1063
+ <td class="{ $class }"><xsl:value-of select="example/text()"/></td>
1064
+ </xsl:when>
1065
+
1066
+ <xsl:when test="string(example/text())='-'">
1067
+ <td class="tablebg_disabled" rowspan="{ $argument_types }"><xsl:value-of select="$default"/></td>
1068
+ </xsl:when>
1069
+
1070
+ <xsl:when test="string-length(example/text())>0">
1071
+ <td class="{ $class }"><xsl:value-of select="example/text()"/></td>
1072
+ </xsl:when>
1073
+
1074
+ <xsl:otherwise>
1075
+ <xsl:call-template name="col_warning" >
1076
+ <xsl:with-param name="text">Not defined</xsl:with-param>
1077
+ </xsl:call-template>
1078
+ </xsl:otherwise>
1079
+
1080
+ </xsl:choose>
1081
+
1082
+ <!-- default value -->
1083
+ <xsl:if test="position()=1">
1084
+
1085
+ <xsl:choose>
1086
+
1087
+ <xsl:when test="string-length($default)=0">
1088
+ <td class="tablebg_disabled" rowspan="{ $argument_types }"><xsl:value-of select="$default"/></td>
1089
+ </xsl:when>
1090
+
1091
+ <xsl:otherwise>
1092
+ <td class="{ $class }" rowspan="{ $argument_types }"><xsl:value-of select="$default"/></td>
1093
+ </xsl:otherwise>
1094
+
1095
+ </xsl:choose>
1096
+
1097
+ </xsl:if>
1098
+
1099
+ </tr>
1100
+
1101
+ </xsl:for-each>
1102
+
1103
+ </xsl:when>
1104
+
1105
+ <xsl:otherwise>
1106
+
1107
+ <tr>
1108
+ <td class="{ $class }"><xsl:value-of select="$argument_name" /></td>
1109
+
1110
+ <xsl:call-template name="col_warning">
1111
+ <xsl:with-param name="colspan">3</xsl:with-param>
1112
+ <xsl:with-param name="text">Not defined; description, example cannot be shown due to variable type is not defined. Please verify also that argument name is defined properly</xsl:with-param>
1113
+ </xsl:call-template>
1114
+
1115
+ <xsl:choose>
1116
+
1117
+ <xsl:when test="string-length($default)=0">
1118
+ <td class="tablebg_disabled"><xsl:value-of select="$default"/></td>
1119
+ </xsl:when>
1120
+
1121
+ <xsl:otherwise>
1122
+ <td class="{ $class }"><xsl:value-of select="$default"/></td>
1123
+ </xsl:otherwise>
1124
+
1125
+ </xsl:choose>
1126
+
1127
+
1128
+ </tr>
1129
+
1130
+ </xsl:otherwise>
1131
+
1132
+ </xsl:choose>
1133
+
1134
+ </xsl:template>
1135
+
1136
+ <xsl:template name="arguments">
1137
+
1138
+ <xsl:if test="@type='writer' or @type='accessor' or (@type='method' and number(arguments/@count)>0)">
1139
+
1140
+ <div class="feature_section_title">Arguments:</div>
1141
+
1142
+ <table class="default">
1143
+ <tr class="header">
1144
+ <td class="header">Name</td>
1145
+ <td class="header">Type</td>
1146
+ <td class="header">Description</td>
1147
+ <td class="header">Example</td>
1148
+ <td class="header">Default</td>
1149
+ </tr>
1150
+
1151
+ <xsl:for-each select="arguments/argument">
1152
+
1153
+ <xsl:choose>
1154
+
1155
+ <!-- table stripes: position even -->
1156
+ <xsl:when test="((number(position())-1) mod 2)=0">
1157
+ <xsl:call-template name="argument_details">
1158
+ <xsl:with-param name="argument_name" select="@name" />
1159
+ <xsl:with-param name="type" select="type" />
1160
+ <xsl:with-param name="class">tablebg_even</xsl:with-param>
1161
+ <xsl:with-param name="default" select="@default" />
1162
+ </xsl:call-template>
1163
+ </xsl:when>
1164
+
1165
+ <!-- table stripes: position odd -->
1166
+ <xsl:otherwise>
1167
+ <xsl:call-template name="argument_details">
1168
+ <xsl:with-param name="argument_name" select="@name" />
1169
+ <xsl:with-param name="type" select="type" />
1170
+ <xsl:with-param name="class">tablebg_odd</xsl:with-param>
1171
+ <xsl:with-param name="default" select="@default" />
1172
+ </xsl:call-template>
1173
+ </xsl:otherwise>
1174
+
1175
+ </xsl:choose>
1176
+
1177
+ </xsl:for-each>
1178
+
1179
+ <!-- show error message if argument is not described -->
1180
+ <xsl:if test="@type='method' and (arguments/@described&lt;arguments/@count)">
1181
+ <xsl:call-template name="row_warning" >
1182
+ <xsl:with-param name="colspan">5</xsl:with-param>
1183
+ <xsl:with-param name="text">Incomplete documentation: <xsl:value-of select="arguments/@described" /> of <xsl:value-of select="arguments/@count" /> arguments documented. Please note that block is also counted as one argument.</xsl:with-param>
1184
+ </xsl:call-template>
1185
+ </xsl:if>
1186
+
1187
+ <!-- show error message if argument is not described -->
1188
+ <xsl:if test="(@type='accessor' or @type='writer') and arguments/@described=0">
1189
+ <xsl:call-template name="row_warning" >
1190
+ <xsl:with-param name="colspan">5</xsl:with-param>
1191
+ <xsl:with-param name="text">Attribute writer or accessor input value needs to be documented.</xsl:with-param>
1192
+ </xsl:call-template>
1193
+ </xsl:if>
1194
+
1195
+ </table>
1196
+ <br />
1197
+
1198
+ </xsl:if>
1199
+
1200
+ </xsl:template>
1201
+
1202
+ <xsl:template name="returns_type">
1203
+
1204
+ <xsl:param name="type" />
1205
+ <xsl:param name="class" />
1206
+
1207
+ <tr valign="top" class="{ $class }">
1208
+
1209
+ <!-- verify that return value type is defined -->
1210
+ <xsl:choose>
1211
+
1212
+ <xsl:when test="string-length($type/@name)>0 and contains($type/@name,' ')">
1213
+ <xsl:call-template name="col_warning" >
1214
+ <xsl:with-param name="text">Return value variable type cannot be multiple words with whitespaces</xsl:with-param>
1215
+ </xsl:call-template>
1216
+ </xsl:when>
1217
+
1218
+ <xsl:when test="string-length($type/@name)>0">
1219
+ <td class="{ $class }"><xsl:value-of select="$type/@name"/></td>
1220
+ </xsl:when>
1221
+
1222
+ <xsl:otherwise>
1223
+ <xsl:call-template name="col_warning" >
1224
+ <xsl:with-param name="text">Return value variable type not defined</xsl:with-param>
1225
+ </xsl:call-template>
1226
+ </xsl:otherwise>
1227
+ </xsl:choose>
1228
+
1229
+ <!-- verify that argument description is defined -->
1230
+ <xsl:choose>
1231
+
1232
+ <xsl:when test="string($type/description/text())='-'">
1233
+ <td class="tablebg_disabled" />
1234
+ </xsl:when>
1235
+
1236
+ <xsl:when test="string-length($type/description/text())>0">
1237
+ <td class="{ $class }">
1238
+ <xsl:call-template name="formatted_content">
1239
+ <xsl:with-param name="text" select="$type/description/text()"/>
1240
+ </xsl:call-template>
1241
+ </td>
1242
+ </xsl:when>
1243
+ <xsl:otherwise>
1244
+ <xsl:call-template name="col_warning" >
1245
+ <xsl:with-param name="text">Return value description not defined</xsl:with-param>
1246
+ </xsl:call-template>
1247
+ </xsl:otherwise>
1248
+ </xsl:choose>
1249
+
1250
+ <!-- verify that return value example is defined -->
1251
+ <xsl:choose>
1252
+
1253
+ <xsl:when test="string($type/example/text())='-'">
1254
+ <td class="tablebg_disabled" />
1255
+ </xsl:when>
1256
+
1257
+ <xsl:when test="string-length($type/example/text())>0">
1258
+ <td class="{ $class }"><xsl:value-of select="$type/example/text()"/></td>
1259
+ </xsl:when>
1260
+ <xsl:otherwise>
1261
+ <xsl:call-template name="col_warning" >
1262
+ <xsl:with-param name="text">Return value example not defined</xsl:with-param>
1263
+ </xsl:call-template>
1264
+ </xsl:otherwise>
1265
+ </xsl:choose>
1266
+ </tr>
1267
+
1268
+ </xsl:template>
1269
+
1270
+ <xsl:template name="row_warning">
1271
+ <xsl:param name="text" />
1272
+ <xsl:param name="colspan" />
1273
+ <tr><td colspan="{ $colspan }" class="warning">[!!] <xsl:value-of select="$text" /></td></tr>
1274
+ </xsl:template>
1275
+
1276
+ <xsl:template name="col_warning">
1277
+
1278
+ <xsl:param name="text" />
1279
+ <xsl:param name="colspan" />
1280
+
1281
+ <xsl:choose>
1282
+
1283
+ <xsl:when test="number($colspan)>0">
1284
+ <td class="warning" colspan="{ $colspan }">[!!] <xsl:value-of select="$text" /></td>
1285
+ </xsl:when>
1286
+
1287
+ <xsl:otherwise>
1288
+ <td class="warning">[!!] <xsl:value-of select="$text" /></td>
1289
+ </xsl:otherwise>
1290
+
1291
+ </xsl:choose>
1292
+
1293
+ </xsl:template>
1294
+
1295
+ <xsl:template name="div_warning">
1296
+ <xsl:param name="text" />
1297
+ <div class="warning">[!!] <xsl:value-of select="$text" /></div>
1298
+ </xsl:template>
1299
+
1300
+ <xsl:template name="span_warning">
1301
+ <xsl:param name="text" />
1302
+ <span class="warning">[!!] <xsl:value-of select="$text" /></span>
1303
+ </xsl:template>
1304
+
1305
+ <xsl:template name="returns">
1306
+
1307
+ <xsl:param name="type" />
1308
+ <xsl:param name="feature_type" />
1309
+
1310
+ <!-- show return value types table if feature type is method, reader or accessor -->
1311
+ <!--<xsl:if test="@type='reader' or @type='accessor' or @type='method'"> -->
1312
+
1313
+ <xsl:if test="@type='reader' or @type='accessor' or @type='method'">
1314
+
1315
+ <!-- return values -->
1316
+ <div class="feature_section_title">Returns:</div>
1317
+ <table class="default">
1318
+ <tr class="header">
1319
+ <td class="header">Type</td>
1320
+ <td class="header">Description</td>
1321
+ <td class="header">Example</td>
1322
+ </tr>
1323
+
1324
+ <!-- show error message if no return values defined -->
1325
+ <xsl:if test="(( count($type)=0 ) or ( count( arguments )=0 ) ) and ((@type='method') or (@type='accessor') or (@type='reader'))">
1326
+ <xsl:call-template name="row_warning">
1327
+ <xsl:with-param name="text">No return value type(s) defined for method, attribute reader or attribute accessor</xsl:with-param>
1328
+ <xsl:with-param name="colspan">3</xsl:with-param>
1329
+ </xsl:call-template>
1330
+ </xsl:if>
1331
+
1332
+ <xsl:if test="count($type)>0">
1333
+
1334
+ <xsl:for-each select="$type">
1335
+
1336
+ <xsl:choose>
1337
+
1338
+ <xsl:when test="(number(position()-1) mod 2)=0">
1339
+ <xsl:call-template name="returns_type" >
1340
+ <xsl:with-param name="type" select="." />
1341
+ <xsl:with-param name="class">tablebg_even</xsl:with-param>
1342
+ </xsl:call-template>
1343
+ </xsl:when>
1344
+
1345
+ <xsl:otherwise>
1346
+ <xsl:call-template name="returns_type" >
1347
+ <xsl:with-param name="type" select="." />
1348
+ <xsl:with-param name="class">tablebg_odd</xsl:with-param>
1349
+ </xsl:call-template>
1350
+ </xsl:otherwise>
1351
+
1352
+ </xsl:choose>
1353
+
1354
+ </xsl:for-each>
1355
+
1356
+ </xsl:if>
1357
+
1358
+ </table>
1359
+ <br />
1360
+
1361
+ </xsl:if>
1362
+
1363
+ </xsl:template>
1364
+
1365
+ <xsl:template name="tables">
1366
+
1367
+ <xsl:for-each select="tables/table">
1368
+
1369
+ <div class="feature_section_title"><a name="{ @name }"><xsl:value-of select="title/text()" />:</a></div>
1370
+
1371
+ <xsl:if test="string-length(description/text())>0">
1372
+ <div class="feature_description">
1373
+ <xsl:call-template name="formatted_content">
1374
+ <xsl:with-param name="text" select="description/text()"/>
1375
+ </xsl:call-template><br />
1376
+ </div>
1377
+ </xsl:if>
1378
+
1379
+ <table class="default">
1380
+ <!-- header -->
1381
+ <tr class="header_custom">
1382
+ <xsl:for-each select="header/item">
1383
+ <td class="header_custom"><xsl:value-of select="."/></td>
1384
+ </xsl:for-each>
1385
+ </tr>
1386
+
1387
+ <!-- rows -->
1388
+ <xsl:for-each select="row">
1389
+ <xsl:choose>
1390
+ <xsl:when test="(number(position()-1) mod 2)=0">
1391
+ <tr>
1392
+ <xsl:for-each select="item">
1393
+ <td class="tablebg_even">
1394
+ <xsl:call-template name="formatted_content">
1395
+ <xsl:with-param name="text" select="."/>
1396
+ </xsl:call-template><br />
1397
+
1398
+ </td>
1399
+ </xsl:for-each>
1400
+ </tr>
1401
+ </xsl:when>
1402
+ <xsl:otherwise>
1403
+ <tr>
1404
+ <xsl:for-each select="item">
1405
+ <td class="tablebg_odd">
1406
+ <xsl:call-template name="formatted_content">
1407
+ <xsl:with-param name="text" select="."/>
1408
+ </xsl:call-template><br />
1409
+ </td>
1410
+ </xsl:for-each>
1411
+ </tr>
1412
+ </xsl:otherwise>
1413
+ </xsl:choose>
1414
+ </xsl:for-each>
1415
+ </table>
1416
+ <br />
1417
+
1418
+ </xsl:for-each>
1419
+
1420
+ </xsl:template>
1421
+
1422
+ <xsl:template name="description">
1423
+
1424
+ <div class="feature_section_title">Description:</div>
1425
+
1426
+ <xsl:if test="string-length(description/text())>0">
1427
+ <!-- display feature description (split lines with '\n') -->
1428
+
1429
+ <div class="feature_description">
1430
+ <xsl:call-template name="formatted_content">
1431
+ <xsl:with-param name="text" select="description/text()"/>
1432
+ </xsl:call-template><br />
1433
+ </div>
1434
+
1435
+ </xsl:if>
1436
+
1437
+ <xsl:if test="string-length(description/text())=0">
1438
+ <xsl:call-template name="div_warning">
1439
+ <xsl:with-param name="text">Description not defined</xsl:with-param>
1440
+ </xsl:call-template>
1441
+ </xsl:if>
1442
+ <br />
1443
+
1444
+ </xsl:template>
1445
+
1446
+ <xsl:template name="deprecated">
1447
+
1448
+ <div class="feature_section_title">Deprecated in version:</div>
1449
+
1450
+ <div class="feature_deprecated_version">
1451
+ <xsl:value-of select="deprecated/@version"/>
1452
+ </div>
1453
+ <br />
1454
+
1455
+ </xsl:template>
1456
+
1457
+ <xsl:template name="tests">
1458
+
1459
+ <xsl:param name="tests" />
1460
+
1461
+ <!-- examples -->
1462
+ <div class="feature_section_title">Examples:</div>
1463
+
1464
+ <xsl:for-each select="$tests/scenario">
1465
+
1466
+ <!-- description (splitted with '\n') -->
1467
+ <div class="scenario_description">
1468
+ <xsl:for-each select="str:split(description,'\n')">
1469
+ <xsl:value-of select="text()" /><br />
1470
+ </xsl:for-each>
1471
+ </div>
1472
+
1473
+ <xsl:value-of select="@name"/>
1474
+
1475
+ <pre class="{@status}">
1476
+ <!-- show status only if other than 'passed' -->
1477
+ <xsl:if test="string(@status)!='passed'" >
1478
+ <xsl:text># [!!] scenario </xsl:text><xsl:value-of select="@status" /><br />
1479
+ </xsl:if>
1480
+
1481
+ <xsl:for-each select="str:split(example,'\n')">
1482
+ <xsl:value-of select="text()" /><br />
1483
+ </xsl:for-each>
1484
+ </pre>
1485
+
1486
+ </xsl:for-each>
1487
+
1488
+ <xsl:if test="count($tests/scenario)=0">
1489
+ <xsl:call-template name="div_warning"><xsl:with-param name="text">No examples/test scenarios available</xsl:with-param></xsl:call-template>
1490
+ </xsl:if>
1491
+
1492
+ <br />
1493
+
1494
+ </xsl:template>
1495
+
1496
+ <xsl:template name="info">
1497
+
1498
+ <xsl:if test="string-length(info/text())>0">
1499
+ <!-- display feature description (split lines with '\n') -->
1500
+ <div class="feature_info"><xsl:call-template name="formatted_content"><xsl:with-param name="text" select="info/text()"/></xsl:call-template></div><br />
1501
+ </xsl:if>
1502
+
1503
+ </xsl:template>
1504
+
1505
+ <xsl:template name="formatted_content">
1506
+
1507
+ <xsl:param name="text"/>
1508
+
1509
+ <xsl:variable name="text_with_linefeeds">
1510
+ <xsl:call-template name="split_lines">
1511
+ <xsl:with-param name="text" select="$text" />
1512
+ </xsl:call-template>
1513
+ </xsl:variable>
1514
+
1515
+ <xsl:call-template name="process_tags">
1516
+
1517
+ <xsl:with-param name="text" select="$text_with_linefeeds" />
1518
+
1519
+ </xsl:call-template>
1520
+
1521
+ </xsl:template>
1522
+
1523
+ <xsl:template name="split_lines">
1524
+
1525
+ <xsl:param name="text"/>
1526
+
1527
+ <!-- content before \n -->
1528
+ <xsl:variable name="before_linefeed" select="substring-before($text, '\')"/>
1529
+
1530
+ <!-- content after \n -->
1531
+ <xsl:variable name="after_linefeed" select="substring-after($text, '\')"/>
1532
+
1533
+ <xsl:choose>
1534
+ <xsl:when test="substring(substring-after($text,'\'),1,1)='n'">
1535
+ <xsl:value-of select="$before_linefeed" /><xsl:text>[br]</xsl:text>
1536
+ <xsl:call-template name="split_lines">
1537
+ <xsl:with-param name="text" select="substring($text,string-length($before_linefeed)+3,string-length($text))" />
1538
+ </xsl:call-template>
1539
+ </xsl:when>
1540
+ <xsl:otherwise>
1541
+ <xsl:value-of select="$text" />
1542
+ </xsl:otherwise>
1543
+ </xsl:choose>
1544
+
1545
+ </xsl:template>
1546
+
1547
+ <xsl:template name="replace">
1548
+
1549
+ <xsl:param name="text"/>
1550
+
1551
+ <xsl:param name="string" />
1552
+
1553
+ <xsl:param name="with" />
1554
+
1555
+ <xsl:variable name="remaining_text" select="$text"/>
1556
+
1557
+ <!-- content before $string -->
1558
+ <xsl:variable name="content_before_string" select="substring-before($text, $string)"/>
1559
+
1560
+ <!-- content after $string -->
1561
+ <xsl:variable name="content_after_string" select="substring-after($text, $string)" />
1562
+
1563
+ <xsl:choose>
1564
+
1565
+ <xsl:when test="contains($text, $string)">
1566
+
1567
+ <!-- $string found from $text, show leading content before $string -->
1568
+ <xsl:value-of disable-output-escaping="yes" select="$content_before_string" />
1569
+ <xsl:value-of disable-output-escaping="yes" select="$with" />
1570
+
1571
+ <xsl:choose>
1572
+
1573
+ <xsl:when test="contains($content_after_string, $string)">
1574
+
1575
+ <!-- $content_after_string contains $string, call replace template recursively -->
1576
+ <xsl:call-template name="replace">
1577
+
1578
+ <xsl:with-param name="text" select="$content_after_string" />
1579
+ <xsl:with-param name="string" select="$string" />
1580
+ <xsl:with-param name="with" select="$with" />
1581
+
1582
+ </xsl:call-template>
1583
+
1584
+ </xsl:when>
1585
+
1586
+ <xsl:otherwise>
1587
+
1588
+ <!-- $content_after_string doesnt contain $string, return $content_after_string as is -->
1589
+ <xsl:value-of disable-output-escaping="yes" select="$content_after_string" />
1590
+
1591
+ </xsl:otherwise>
1592
+
1593
+ </xsl:choose>
1594
+
1595
+ </xsl:when>
1596
+
1597
+ <xsl:otherwise>
1598
+
1599
+ <!-- $string not found from $text, return $text as is -->
1600
+ <xsl:value-of select="$text" />
1601
+
1602
+ </xsl:otherwise>
1603
+
1604
+ </xsl:choose>
1605
+
1606
+ </xsl:template>
1607
+
1608
+ <xsl:template name="process_tags">
1609
+
1610
+ <xsl:param name="text"/>
1611
+
1612
+ <xsl:variable name="remainingContent" select="$text"/>
1613
+
1614
+ <!-- content before start tag -->
1615
+ <xsl:variable name="content_before_tag" select="substring-before($text, '[')"/>
1616
+
1617
+ <!-- content after start tag -->
1618
+ <xsl:variable name="content_after_tag" select="substring-after(substring-after($text, '['), ']')"/>
1619
+
1620
+ <!-- start tag -->
1621
+ <xsl:variable name="full_tag" select="substring-after(substring-before($text, ']'), '[')"/>
1622
+
1623
+ <xsl:variable name="tag" select="str:split(substring-after(substring-before($text, ']'), '['), '=')[1]"/>
1624
+
1625
+ <!-- content between tag -->
1626
+ <xsl:variable name="tag_content" select="substring-before($content_after_tag, concat('[/', $tag, ']'))"/>
1627
+
1628
+ <xsl:variable name="content_after_start_tag" select="substring-after($text, concat('[',$tag,']'))"/>
1629
+
1630
+ <xsl:variable name="content_after_end_tag" select="substring-after($content_after_tag, concat('[/', $tag, ']'))"/>
1631
+
1632
+ <!--
1633
+ <br /><b>tag: </b><xsl:value-of select="$tag" />
1634
+
1635
+ <br /><b>tag_2: </b><xsl:value-of select="str:split($tag, '=')[1]" />
1636
+
1637
+ <br /><b>before: </b><xsl:value-of select="$content_before_tag" />
1638
+ <br /><b>after: </b><xsl:value-of select="$content_after_tag" />
1639
+ <br /><b>content: </b><xsl:value-of select="$tag_content" />
1640
+ <br /><b>content_after_end_tag: </b><xsl:value-of select="$content_after_end_tag" />
1641
+
1642
+ <br /><br />
1643
+ -->
1644
+
1645
+ <!-- show leading text before tag... -->
1646
+ <xsl:value-of select="$content_before_tag" />
1647
+
1648
+ <xsl:choose>
1649
+
1650
+ <xsl:when test="string-length($tag)>0">
1651
+
1652
+ <xsl:call-template name="process_tag" >
1653
+ <xsl:with-param name="tag" select="$tag" />
1654
+ <xsl:with-param name="full_tag" select="$full_tag" />
1655
+ <xsl:with-param name="content" select="$tag_content" />
1656
+ <xsl:with-param name="content_after" select="$content_after_end_tag" />
1657
+ </xsl:call-template>
1658
+
1659
+ <xsl:if test="string-length($tag_content)=0">
1660
+
1661
+ <xsl:call-template name="process_tags">
1662
+ <xsl:with-param name="text" select="$content_after_start_tag" />
1663
+ </xsl:call-template>
1664
+
1665
+ </xsl:if>
1666
+
1667
+ </xsl:when>
1668
+
1669
+ <xsl:otherwise>
1670
+
1671
+ <xsl:value-of select="$text" />
1672
+
1673
+ </xsl:otherwise>
1674
+
1675
+ </xsl:choose>
1676
+
1677
+ </xsl:template>
1678
+
1679
+ <xsl:template name="process_tag" >
1680
+
1681
+ <xsl:param name="tag" />
1682
+ <xsl:param name="full_tag" />
1683
+
1684
+
1685
+ <xsl:param name="content" />
1686
+ <xsl:param name="content_after" />
1687
+
1688
+ <xsl:variable name="parameter">
1689
+ <!-- remove quotations from parameter value -->
1690
+ <xsl:call-template name="replace">
1691
+ <xsl:with-param name="text" select="str:split($full_tag,'=')[2]" />
1692
+ <xsl:with-param name="string">"</xsl:with-param>
1693
+ <xsl:with-param name="with" ></xsl:with-param>
1694
+ </xsl:call-template>
1695
+ </xsl:variable>
1696
+
1697
+ <!--
1698
+ <br /><b>tag:</b> <xsl:value-of select="$tag" />
1699
+ <br /><b>content:</b> <xsl:value-of select="$content" />
1700
+ <br /><b>content_after:</b> <xsl:value-of select="$content_after" />
1701
+ -->
1702
+
1703
+ <xsl:choose>
1704
+ <xsl:when test="$tag='b'">
1705
+
1706
+ <b><xsl:call-template name="process_tags" >
1707
+ <xsl:with-param name="text" select="$content" />
1708
+ </xsl:call-template></b>
1709
+
1710
+ <xsl:call-template name="process_tags" >
1711
+ <xsl:with-param name="text" select="$content_after" />
1712
+ </xsl:call-template>
1713
+
1714
+ </xsl:when>
1715
+
1716
+ <xsl:when test="$tag='u'">
1717
+ <u><xsl:call-template name="process_tags" >
1718
+ <xsl:with-param name="text" select="$content" />
1719
+ </xsl:call-template></u>
1720
+ <xsl:call-template name="process_tags" >
1721
+ <xsl:with-param name="text" select="$content_after" />
1722
+ </xsl:call-template>
1723
+
1724
+ </xsl:when>
1725
+
1726
+ <xsl:when test="$tag='i'">
1727
+ <i><xsl:call-template name="process_tags" >
1728
+ <xsl:with-param name="text" select="$content" />
1729
+ </xsl:call-template></i>
1730
+ <xsl:call-template name="process_tags" >
1731
+ <xsl:with-param name="text" select="$content_after" />
1732
+ </xsl:call-template>
1733
+
1734
+ </xsl:when>
1735
+
1736
+ <xsl:when test="$tag='code'">
1737
+
1738
+ <pre class="block"><xsl:value-of select="$content" /></pre>
1739
+
1740
+ <xsl:call-template name="process_tags" >
1741
+ <xsl:with-param name="text" select="$content_after" />
1742
+ </xsl:call-template>
1743
+
1744
+ </xsl:when>
1745
+
1746
+ <xsl:when test="$tag='img'">
1747
+
1748
+ <xsl:choose>
1749
+
1750
+ <xsl:when test="string-length($parameter)>0">
1751
+ <!-- found title text for image -->
1752
+ <img src="{ $parameter }" title="{ $content }" />
1753
+ </xsl:when>
1754
+
1755
+ <xsl:otherwise>
1756
+ <!-- no title text for image -->
1757
+ <img src="{ $content }" title="" />
1758
+ </xsl:otherwise>
1759
+
1760
+ </xsl:choose>
1761
+
1762
+ <xsl:call-template name="process_tags" >
1763
+ <xsl:with-param name="text" select="$content_after" />
1764
+ </xsl:call-template>
1765
+
1766
+ </xsl:when>
1767
+
1768
+ <xsl:when test="$tag='link'">
1769
+
1770
+ <xsl:choose>
1771
+
1772
+ <xsl:when test="string-length($parameter)>0">
1773
+ <a href="{ $parameter }" class="link" title="{ $content }">
1774
+ <xsl:call-template name="process_tags" >
1775
+ <xsl:with-param name="text" select="$content" />
1776
+ </xsl:call-template>
1777
+ </a>
1778
+ </xsl:when>
1779
+
1780
+ <xsl:otherwise>
1781
+ <a href="{ $content }" class="link" title="">
1782
+ <xsl:call-template name="process_tags" >
1783
+ <xsl:with-param name="text" select="$content" />
1784
+ </xsl:call-template>
1785
+ </a>
1786
+ </xsl:otherwise>
1787
+
1788
+ </xsl:choose>
1789
+
1790
+ <xsl:call-template name="process_tags" >
1791
+ <xsl:with-param name="text" select="$content_after" />
1792
+ </xsl:call-template>
1793
+
1794
+ </xsl:when>
1795
+
1796
+
1797
+ <xsl:when test="$tag='name'">
1798
+
1799
+ <xsl:choose>
1800
+
1801
+ <xsl:when test="string-length($parameter)>0">
1802
+ <a name="{ $parameter }" title="">
1803
+ <xsl:call-template name="process_tags" >
1804
+ <xsl:with-param name="text" select="$content" />
1805
+ </xsl:call-template>
1806
+ </a>
1807
+ </xsl:when>
1808
+
1809
+ <xsl:otherwise>
1810
+ <a name="{ $content }" title="">
1811
+ <xsl:call-template name="process_tags" >
1812
+ <xsl:with-param name="text" select="$content" />
1813
+ </xsl:call-template>
1814
+ </a>
1815
+ </xsl:otherwise>
1816
+
1817
+ </xsl:choose>
1818
+
1819
+ <xsl:call-template name="process_tags" >
1820
+ <xsl:with-param name="text" select="$content_after" />
1821
+ </xsl:call-template>
1822
+
1823
+ </xsl:when>
1824
+
1825
+
1826
+
1827
+ <xsl:when test="$tag='br'">
1828
+ <br />
1829
+ </xsl:when>
1830
+
1831
+ <xsl:otherwise>
1832
+
1833
+ <xsl:choose>
1834
+
1835
+ <xsl:when test="string-length($content)>0">
1836
+ <xsl:text>[</xsl:text><xsl:value-of select="$full_tag" /><xsl:text>]</xsl:text>
1837
+
1838
+ <xsl:call-template name="process_tags" >
1839
+ <xsl:with-param name="text" select="$content" />
1840
+ </xsl:call-template>
1841
+
1842
+ <xsl:text>[/</xsl:text><xsl:value-of select="$tag" /><xsl:text>]</xsl:text>
1843
+ </xsl:when>
1844
+
1845
+ <xsl:otherwise>
1846
+ <xsl:text>[</xsl:text><xsl:value-of select="$full_tag" /><xsl:text>]</xsl:text>
1847
+ </xsl:otherwise>
1848
+
1849
+ </xsl:choose>
1850
+
1851
+ <xsl:call-template name="process_tags" >
1852
+ <xsl:with-param name="text" select="$content_after" />
1853
+ </xsl:call-template>
1854
+
1855
+ </xsl:otherwise>
1856
+
1857
+ </xsl:choose>
1858
+
1859
+ </xsl:template>
1860
+
1861
+ </xsl:stylesheet>