narf 0.6.2 → 0.6.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (424) hide show
  1. data/ChangeLog +22 -0
  2. data/lib/web/htmltools/xmltree.rb +2 -2
  3. data/lib/web/htmltools/xpath.rb +1 -1
  4. data/narf.gemspec +1 -1
  5. metadata +2 -460
  6. data/InstalledFiles +0 -2227
  7. data/config.save +0 -12
  8. data/doc/apache_cgi.txt~ +0 -17
  9. data/doc/fastcgi.txt~ +0 -19
  10. data/doc/rdoc/classes/Web.html +0 -369
  11. data/doc/rdoc/classes/Web.src/M000002.html +0 -15
  12. data/doc/rdoc/classes/Web.src/M000003.html +0 -15
  13. data/doc/rdoc/classes/Web.src/M000004.html +0 -15
  14. data/doc/rdoc/classes/Web.src/M000005.html +0 -15
  15. data/doc/rdoc/classes/Web.src/M000006.html +0 -20
  16. data/doc/rdoc/classes/Web.src/M000007.html +0 -18
  17. data/doc/rdoc/classes/Web.src/M000008.html +0 -18
  18. data/doc/rdoc/classes/Web.src/M000009.html +0 -18
  19. data/doc/rdoc/classes/Web.src/M000010.html +0 -15
  20. data/doc/rdoc/classes/Web.src/M000011.html +0 -15
  21. data/doc/rdoc/classes/Web.src/M000012.html +0 -15
  22. data/doc/rdoc/classes/Web/CGD.html +0 -173
  23. data/doc/rdoc/classes/Web/CGD.src/M000037.html +0 -24
  24. data/doc/rdoc/classes/Web/CGD.src/M000038.html +0 -24
  25. data/doc/rdoc/classes/Web/CGD.src/M000039.html +0 -15
  26. data/doc/rdoc/classes/Web/CGD.src/M000040.html +0 -15
  27. data/doc/rdoc/classes/Web/CGD.src/M000041.html +0 -23
  28. data/doc/rdoc/classes/Web/CGI.html +0 -946
  29. data/doc/rdoc/classes/Web/CGI.src/M000051.html +0 -15
  30. data/doc/rdoc/classes/Web/CGI.src/M000052.html +0 -24
  31. data/doc/rdoc/classes/Web/CGI.src/M000053.html +0 -15
  32. data/doc/rdoc/classes/Web/CGI.src/M000054.html +0 -15
  33. data/doc/rdoc/classes/Web/CGI.src/M000055.html +0 -15
  34. data/doc/rdoc/classes/Web/CGI.src/M000056.html +0 -15
  35. data/doc/rdoc/classes/Web/CGI.src/M000057.html +0 -17
  36. data/doc/rdoc/classes/Web/CGI.src/M000058.html +0 -34
  37. data/doc/rdoc/classes/Web/CGI.src/M000059.html +0 -22
  38. data/doc/rdoc/classes/Web/CGI.src/M000060.html +0 -15
  39. data/doc/rdoc/classes/Web/CGI.src/M000061.html +0 -15
  40. data/doc/rdoc/classes/Web/CGI.src/M000062.html +0 -19
  41. data/doc/rdoc/classes/Web/CGI.src/M000063.html +0 -18
  42. data/doc/rdoc/classes/Web/CGI.src/M000064.html +0 -19
  43. data/doc/rdoc/classes/Web/CGI.src/M000065.html +0 -15
  44. data/doc/rdoc/classes/Web/CGI.src/M000066.html +0 -15
  45. data/doc/rdoc/classes/Web/CGI.src/M000067.html +0 -15
  46. data/doc/rdoc/classes/Web/CGI.src/M000068.html +0 -13
  47. data/doc/rdoc/classes/Web/CGI.src/M000069.html +0 -13
  48. data/doc/rdoc/classes/Web/CGI.src/M000070.html +0 -13
  49. data/doc/rdoc/classes/Web/CGI.src/M000071.html +0 -13
  50. data/doc/rdoc/classes/Web/CGI.src/M000072.html +0 -19
  51. data/doc/rdoc/classes/Web/CGI.src/M000073.html +0 -15
  52. data/doc/rdoc/classes/Web/CGI.src/M000074.html +0 -19
  53. data/doc/rdoc/classes/Web/CGI.src/M000075.html +0 -15
  54. data/doc/rdoc/classes/Web/CGI.src/M000076.html +0 -15
  55. data/doc/rdoc/classes/Web/CGI.src/M000077.html +0 -15
  56. data/doc/rdoc/classes/Web/CGI.src/M000078.html +0 -20
  57. data/doc/rdoc/classes/Web/CGI.src/M000079.html +0 -36
  58. data/doc/rdoc/classes/Web/CGI.src/M000080.html +0 -19
  59. data/doc/rdoc/classes/Web/CGI.src/M000081.html +0 -18
  60. data/doc/rdoc/classes/Web/CGI.src/M000082.html +0 -15
  61. data/doc/rdoc/classes/Web/CGI.src/M000083.html +0 -17
  62. data/doc/rdoc/classes/Web/CGI.src/M000084.html +0 -15
  63. data/doc/rdoc/classes/Web/CGI.src/M000085.html +0 -16
  64. data/doc/rdoc/classes/Web/CGI.src/M000086.html +0 -15
  65. data/doc/rdoc/classes/Web/CGI.src/M000087.html +0 -15
  66. data/doc/rdoc/classes/Web/CGI.src/M000088.html +0 -15
  67. data/doc/rdoc/classes/Web/CGI.src/M000089.html +0 -16
  68. data/doc/rdoc/classes/Web/CGI.src/M000090.html +0 -15
  69. data/doc/rdoc/classes/Web/CGI.src/M000091.html +0 -15
  70. data/doc/rdoc/classes/Web/CGI.src/M000092.html +0 -15
  71. data/doc/rdoc/classes/Web/CGI.src/M000093.html +0 -15
  72. data/doc/rdoc/classes/Web/CGI.src/M000094.html +0 -15
  73. data/doc/rdoc/classes/Web/CGI.src/M000095.html +0 -15
  74. data/doc/rdoc/classes/Web/CGI.src/M000096.html +0 -19
  75. data/doc/rdoc/classes/Web/CGI.src/M000097.html +0 -15
  76. data/doc/rdoc/classes/Web/CGI.src/M000098.html +0 -15
  77. data/doc/rdoc/classes/Web/CGI.src/M000099.html +0 -43
  78. data/doc/rdoc/classes/Web/CGI.src/M000100.html +0 -18
  79. data/doc/rdoc/classes/Web/CGI.src/M000101.html +0 -20
  80. data/doc/rdoc/classes/Web/CGI.src/M000102.html +0 -15
  81. data/doc/rdoc/classes/Web/CGI.src/M000103.html +0 -15
  82. data/doc/rdoc/classes/Web/CGI.src/M000104.html +0 -15
  83. data/doc/rdoc/classes/Web/CGI.src/M000105.html +0 -24
  84. data/doc/rdoc/classes/Web/CGI.src/M000106.html +0 -24
  85. data/doc/rdoc/classes/Web/CGI.src/M000107.html +0 -22
  86. data/doc/rdoc/classes/Web/CaseInsensitiveHash.html +0 -104
  87. data/doc/rdoc/classes/Web/CaseInsensitiveHash.src/M000118.html +0 -15
  88. data/doc/rdoc/classes/Web/CaseInsensitiveHash.src/M000119.html +0 -15
  89. data/doc/rdoc/classes/Web/CaseInsensitiveHash.src/M000120.html +0 -15
  90. data/doc/rdoc/classes/Web/Mime.html +0 -122
  91. data/doc/rdoc/classes/Web/Mime.src/M000118.html +0 -15
  92. data/doc/rdoc/classes/Web/Mime.src/M000119.html +0 -15
  93. data/doc/rdoc/classes/Web/Mime.src/M000120.html +0 -23
  94. data/doc/rdoc/classes/Web/Mime.src/M000121.html +0 -15
  95. data/doc/rdoc/classes/Web/Mime.src/M000122.html +0 -15
  96. data/doc/rdoc/classes/Web/Mime.src/M000123.html +0 -23
  97. data/doc/rdoc/classes/Web/Mime.src/M000124.html +0 -15
  98. data/doc/rdoc/classes/Web/Narflates.html +0 -134
  99. data/doc/rdoc/classes/Web/Parser.html +0 -219
  100. data/doc/rdoc/classes/Web/Parser.src/M000013.html +0 -21
  101. data/doc/rdoc/classes/Web/Parser.src/M000014.html +0 -19
  102. data/doc/rdoc/classes/Web/Parser.src/M000015.html +0 -21
  103. data/doc/rdoc/classes/Web/Parser.src/M000016.html +0 -15
  104. data/doc/rdoc/classes/Web/Parser.src/M000017.html +0 -30
  105. data/doc/rdoc/classes/Web/Parser.src/M000018.html +0 -15
  106. data/doc/rdoc/classes/Web/Parser.src/M000019.html +0 -19
  107. data/doc/rdoc/classes/Web/Parser.src/M000020.html +0 -27
  108. data/doc/rdoc/classes/Web/Parser.src/M000021.html +0 -15
  109. data/doc/rdoc/classes/Web/Parser.src/M000022.html +0 -16
  110. data/doc/rdoc/classes/Web/Parser.src/M000023.html +0 -18
  111. data/doc/rdoc/classes/Web/Session.html +0 -178
  112. data/doc/rdoc/classes/Web/Session.src/M000042.html +0 -20
  113. data/doc/rdoc/classes/Web/Session.src/M000043.html +0 -19
  114. data/doc/rdoc/classes/Web/Session.src/M000044.html +0 -21
  115. data/doc/rdoc/classes/Web/Session.src/M000045.html +0 -21
  116. data/doc/rdoc/classes/Web/Session.src/M000046.html +0 -15
  117. data/doc/rdoc/classes/Web/Session.src/M000047.html +0 -17
  118. data/doc/rdoc/classes/Web/Session.src/M000048.html +0 -15
  119. data/doc/rdoc/classes/Web/Session.src/M000049.html +0 -15
  120. data/doc/rdoc/classes/Web/Session.src/M000050.html +0 -16
  121. data/doc/rdoc/classes/Web/Testing.html +0 -474
  122. data/doc/rdoc/classes/Web/Testing.src/M000024.html +0 -15
  123. data/doc/rdoc/classes/Web/Testing.src/M000025.html +0 -25
  124. data/doc/rdoc/classes/Web/Testing.src/M000026.html +0 -15
  125. data/doc/rdoc/classes/Web/Testing.src/M000027.html +0 -25
  126. data/doc/rdoc/classes/Web/Testing.src/M000028.html +0 -57
  127. data/doc/rdoc/classes/Web/Testing.src/M000029.html +0 -15
  128. data/doc/rdoc/classes/Web/Testing.src/M000030.html +0 -15
  129. data/doc/rdoc/classes/Web/Testing.src/M000031.html +0 -15
  130. data/doc/rdoc/classes/Web/Testing.src/M000032.html +0 -15
  131. data/doc/rdoc/classes/Web/Testing.src/M000033.html +0 -15
  132. data/doc/rdoc/classes/Web/Testing.src/M000034.html +0 -15
  133. data/doc/rdoc/classes/Web/Testing.src/M000035.html +0 -15
  134. data/doc/rdoc/classes/Web/Testing.src/M000036.html +0 -18
  135. data/doc/rdoc/classes/Web/Upload.html +0 -160
  136. data/doc/rdoc/classes/Web/Upload.src/M000108.html +0 -25
  137. data/doc/rdoc/classes/Web/Upload.src/M000109.html +0 -18
  138. data/doc/rdoc/classes/Web/Upload.src/M000110.html +0 -16
  139. data/doc/rdoc/classes/Web/Upload.src/M000111.html +0 -16
  140. data/doc/rdoc/classes/Web/Wiki.html +0 -249
  141. data/doc/rdoc/classes/Web/Wiki.src/M000112.html +0 -25
  142. data/doc/rdoc/classes/Web/Wiki.src/M000113.html +0 -15
  143. data/doc/rdoc/classes/Web/Wiki.src/M000114.html +0 -26
  144. data/doc/rdoc/classes/Web/Wiki.src/M000115.html +0 -21
  145. data/doc/rdoc/classes/Web/Wiki.src/M000116.html +0 -18
  146. data/doc/rdoc/classes/Web/Wiki.src/M000117.html +0 -19
  147. data/doc/rdoc/created.rid +0 -1
  148. data/doc/rdoc/files/README.html +0 -230
  149. data/doc/rdoc/files/doc/apache_cgi_txt.html +0 -76
  150. data/doc/rdoc/files/doc/fastcgi_txt.html +0 -82
  151. data/doc/rdoc/files/doc/mod_ruby_txt.html +0 -62
  152. data/doc/rdoc/files/doc/webrick_txt.html +0 -79
  153. data/doc/rdoc/files/examples/examples_rdoc.html +0 -73
  154. data/doc/rdoc/files/lib/web/cgi_rb.html +0 -75
  155. data/doc/rdoc/files/lib/web/mime_rb.html +0 -67
  156. data/doc/rdoc/files/lib/web/parser_rb.html +0 -73
  157. data/doc/rdoc/files/lib/web/session_rb.html +0 -73
  158. data/doc/rdoc/files/lib/web/template_rb.html +0 -73
  159. data/doc/rdoc/files/lib/web/testing_rb.html +0 -67
  160. data/doc/rdoc/files/lib/web/upload_rb.html +0 -73
  161. data/doc/rdoc/files/lib/web/wiki_rb.html +0 -79
  162. data/doc/rdoc/files/lib/web_rb.html +0 -116
  163. data/doc/rdoc/files/lib/web_rb.src/M000001.html +0 -15
  164. data/doc/rdoc/fr_class_index.html +0 -47
  165. data/doc/rdoc/fr_file_index.html +0 -52
  166. data/doc/rdoc/fr_method_index.html +0 -158
  167. data/doc/rdoc/index.html +0 -22
  168. data/doc/rdoc/rdoc-style.css +0 -99
  169. data/examples/admin.rb~ +0 -5
  170. data/examples/cookbook.rdoc~ +0 -238
  171. data/examples/examples.rdoc~ +0 -17
  172. data/examples/hello.world.rb~ +0 -3
  173. data/examples/session.rb~ +0 -31
  174. data/examples/test/test.hello.world.rb~ +0 -9
  175. data/examples/test/test.session.rb~ +0 -37
  176. data/examples/wiki.rb~ +0 -5
  177. data/lib/web.rb~ +0 -290
  178. data/lib/web/#assertinclude.rb# +0 -110
  179. data/lib/web/assertinclude.rb~ +0 -110
  180. data/lib/web/cgi.rb~ +0 -640
  181. data/lib/web/htmlparser/html-parser.rb~ +0 -429
  182. data/lib/web/htmlparser/sgml-parser.rb~ +0 -332
  183. data/lib/web/htmltools/element.rb~ +0 -296
  184. data/lib/web/htmltools/stparser.rb~ +0 -276
  185. data/lib/web/htmltools/tags.rb~ +0 -286
  186. data/lib/web/htmltools/tree.rb~ +0 -139
  187. data/lib/web/htmltools/xmltree.rb~ +0 -160
  188. data/lib/web/htmltools/xpath.rb~ +0 -71
  189. data/lib/web/parser.rb~ +0 -288
  190. data/lib/web/request.rb~ +0 -238
  191. data/lib/web/runner.rb~ +0 -26
  192. data/lib/web/sapi/fastcgi.rb~ +0 -25
  193. data/lib/web/sapi/mod_ruby.rb~ +0 -46
  194. data/lib/web/sapi/webrick.rb~ +0 -89
  195. data/lib/web/session.rb~ +0 -75
  196. data/lib/web/tagparser.rb~ +0 -96
  197. data/lib/web/template.rb~ +0 -613
  198. data/lib/web/testing.rb~ +0 -546
  199. data/lib/web/unit/response.rb~ +0 -461
  200. data/lib/web/unit/ui/cui/testrunner.rb~ +0 -50
  201. data/lib/web/upload.rb~ +0 -262
  202. data/lib/web/wiki.rb~ +0 -517
  203. data/lib/web/wiki/linker.rb~ +0 -72
  204. data/lib/web/wiki/mime.rb~ +0 -68
  205. data/lib/web/wiki/page.rb~ +0 -192
  206. data/lib/web/wiki/resources/#edit.html# +0 -65
  207. data/lib/web/wiki/resources/admin.html~ +0 -13
  208. data/lib/web/wiki/resources/default-content_editor.html~ +0 -1
  209. data/lib/web/wiki/resources/edit.html~ +0 -2
  210. data/lib/web/wiki/resources/home.html~ +0 -10
  211. data/lib/web/wiki/resources/htmlarea/ChangeLog +0 -1185
  212. data/lib/web/wiki/resources/htmlarea/dialog.js +0 -72
  213. data/lib/web/wiki/resources/htmlarea/examples/2-areas.cgi +0 -16
  214. data/lib/web/wiki/resources/htmlarea/examples/2-areas.html +0 -158
  215. data/lib/web/wiki/resources/htmlarea/examples/context-menu.html +0 -95
  216. data/lib/web/wiki/resources/htmlarea/examples/core.html +0 -184
  217. data/lib/web/wiki/resources/htmlarea/examples/css.html +0 -88
  218. data/lib/web/wiki/resources/htmlarea/examples/custom.css +0 -29
  219. data/lib/web/wiki/resources/htmlarea/examples/full-page.html +0 -75
  220. data/lib/web/wiki/resources/htmlarea/examples/fully-loaded.html +0 -248
  221. data/lib/web/wiki/resources/htmlarea/examples/index.html +0 -40
  222. data/lib/web/wiki/resources/htmlarea/examples/spell-checker.html +0 -132
  223. data/lib/web/wiki/resources/htmlarea/examples/table-operations.html +0 -116
  224. data/lib/web/wiki/resources/htmlarea/examples/test.cgi +0 -21
  225. data/lib/web/wiki/resources/htmlarea/htmlarea.css +0 -180
  226. data/lib/web/wiki/resources/htmlarea/htmlarea.js +0 -2175
  227. data/lib/web/wiki/resources/htmlarea/images/ed_about.gif +0 -0
  228. data/lib/web/wiki/resources/htmlarea/images/ed_align_center.gif +0 -0
  229. data/lib/web/wiki/resources/htmlarea/images/ed_align_justify.gif +0 -0
  230. data/lib/web/wiki/resources/htmlarea/images/ed_align_left.gif +0 -0
  231. data/lib/web/wiki/resources/htmlarea/images/ed_align_right.gif +0 -0
  232. data/lib/web/wiki/resources/htmlarea/images/ed_blank.gif +0 -0
  233. data/lib/web/wiki/resources/htmlarea/images/ed_charmap.gif +0 -0
  234. data/lib/web/wiki/resources/htmlarea/images/ed_color_bg.gif +0 -0
  235. data/lib/web/wiki/resources/htmlarea/images/ed_color_fg.gif +0 -0
  236. data/lib/web/wiki/resources/htmlarea/images/ed_copy.gif +0 -0
  237. data/lib/web/wiki/resources/htmlarea/images/ed_custom.gif +0 -0
  238. data/lib/web/wiki/resources/htmlarea/images/ed_cut.gif +0 -0
  239. data/lib/web/wiki/resources/htmlarea/images/ed_delete.gif +0 -0
  240. data/lib/web/wiki/resources/htmlarea/images/ed_format_bold.gif +0 -0
  241. data/lib/web/wiki/resources/htmlarea/images/ed_format_italic.gif +0 -0
  242. data/lib/web/wiki/resources/htmlarea/images/ed_format_strike.gif +0 -0
  243. data/lib/web/wiki/resources/htmlarea/images/ed_format_sub.gif +0 -0
  244. data/lib/web/wiki/resources/htmlarea/images/ed_format_sup.gif +0 -0
  245. data/lib/web/wiki/resources/htmlarea/images/ed_format_underline.gif +0 -0
  246. data/lib/web/wiki/resources/htmlarea/images/ed_help.gif +0 -0
  247. data/lib/web/wiki/resources/htmlarea/images/ed_hr.gif +0 -0
  248. data/lib/web/wiki/resources/htmlarea/images/ed_html.gif +0 -0
  249. data/lib/web/wiki/resources/htmlarea/images/ed_image.gif +0 -0
  250. data/lib/web/wiki/resources/htmlarea/images/ed_indent_less.gif +0 -0
  251. data/lib/web/wiki/resources/htmlarea/images/ed_indent_more.gif +0 -0
  252. data/lib/web/wiki/resources/htmlarea/images/ed_left_to_right.gif +0 -0
  253. data/lib/web/wiki/resources/htmlarea/images/ed_link.gif +0 -0
  254. data/lib/web/wiki/resources/htmlarea/images/ed_list_bullet.gif +0 -0
  255. data/lib/web/wiki/resources/htmlarea/images/ed_list_num.gif +0 -0
  256. data/lib/web/wiki/resources/htmlarea/images/ed_paste.gif +0 -0
  257. data/lib/web/wiki/resources/htmlarea/images/ed_redo.gif +0 -0
  258. data/lib/web/wiki/resources/htmlarea/images/ed_right_to_left.gif +0 -0
  259. data/lib/web/wiki/resources/htmlarea/images/ed_save.gif +0 -0
  260. data/lib/web/wiki/resources/htmlarea/images/ed_show_border.gif +0 -0
  261. data/lib/web/wiki/resources/htmlarea/images/ed_splitcel.gif +0 -0
  262. data/lib/web/wiki/resources/htmlarea/images/ed_undo.gif +0 -0
  263. data/lib/web/wiki/resources/htmlarea/images/fullscreen_maximize.gif +0 -0
  264. data/lib/web/wiki/resources/htmlarea/images/fullscreen_minimize.gif +0 -0
  265. data/lib/web/wiki/resources/htmlarea/images/insert_table.gif +0 -0
  266. data/lib/web/wiki/resources/htmlarea/index.html +0 -199
  267. data/lib/web/wiki/resources/htmlarea/lang/b5.js +0 -36
  268. data/lib/web/wiki/resources/htmlarea/lang/cz.js +0 -63
  269. data/lib/web/wiki/resources/htmlarea/lang/da.js +0 -38
  270. data/lib/web/wiki/resources/htmlarea/lang/de.js +0 -54
  271. data/lib/web/wiki/resources/htmlarea/lang/ee.js +0 -63
  272. data/lib/web/wiki/resources/htmlarea/lang/el.js +0 -75
  273. data/lib/web/wiki/resources/htmlarea/lang/en.js +0 -88
  274. data/lib/web/wiki/resources/htmlarea/lang/es.js +0 -51
  275. data/lib/web/wiki/resources/htmlarea/lang/fi.js +0 -46
  276. data/lib/web/wiki/resources/htmlarea/lang/fr.js +0 -61
  277. data/lib/web/wiki/resources/htmlarea/lang/gb.js +0 -36
  278. data/lib/web/wiki/resources/htmlarea/lang/he.js +0 -63
  279. data/lib/web/wiki/resources/htmlarea/lang/hu.js +0 -63
  280. data/lib/web/wiki/resources/htmlarea/lang/it.js +0 -54
  281. data/lib/web/wiki/resources/htmlarea/lang/ja-euc.js +0 -37
  282. data/lib/web/wiki/resources/htmlarea/lang/ja-jis.js +0 -37
  283. data/lib/web/wiki/resources/htmlarea/lang/ja-sjis.js +0 -37
  284. data/lib/web/wiki/resources/htmlarea/lang/ja-utf8.js +0 -37
  285. data/lib/web/wiki/resources/htmlarea/lang/lt.js +0 -55
  286. data/lib/web/wiki/resources/htmlarea/lang/lv.js +0 -55
  287. data/lib/web/wiki/resources/htmlarea/lang/nb.js +0 -36
  288. data/lib/web/wiki/resources/htmlarea/lang/nl.js +0 -90
  289. data/lib/web/wiki/resources/htmlarea/lang/no.js +0 -79
  290. data/lib/web/wiki/resources/htmlarea/lang/pl.js +0 -36
  291. data/lib/web/wiki/resources/htmlarea/lang/pt_br.js +0 -37
  292. data/lib/web/wiki/resources/htmlarea/lang/ro.js +0 -80
  293. data/lib/web/wiki/resources/htmlarea/lang/ru.js +0 -63
  294. data/lib/web/wiki/resources/htmlarea/lang/se.js +0 -38
  295. data/lib/web/wiki/resources/htmlarea/lang/si.js +0 -63
  296. data/lib/web/wiki/resources/htmlarea/lang/vn.js +0 -51
  297. data/lib/web/wiki/resources/htmlarea/license.txt +0 -30
  298. data/lib/web/wiki/resources/htmlarea/plugins/CSS/css.js +0 -116
  299. data/lib/web/wiki/resources/htmlarea/plugins/CSS/lang/en.js +0 -2
  300. data/lib/web/wiki/resources/htmlarea/plugins/ContextMenu/context-menu.js +0 -416
  301. data/lib/web/wiki/resources/htmlarea/plugins/ContextMenu/lang/de.js +0 -59
  302. data/lib/web/wiki/resources/htmlarea/plugins/ContextMenu/lang/el.js +0 -57
  303. data/lib/web/wiki/resources/htmlarea/plugins/ContextMenu/lang/en.js +0 -66
  304. data/lib/web/wiki/resources/htmlarea/plugins/ContextMenu/lang/nl.js +0 -66
  305. data/lib/web/wiki/resources/htmlarea/plugins/ContextMenu/menu.css +0 -64
  306. data/lib/web/wiki/resources/htmlarea/plugins/FullPage/full-page.js +0 -143
  307. data/lib/web/wiki/resources/htmlarea/plugins/FullPage/img/docprop.gif +0 -0
  308. data/lib/web/wiki/resources/htmlarea/plugins/FullPage/lang/en.js +0 -25
  309. data/lib/web/wiki/resources/htmlarea/plugins/FullPage/lang/ro.js +0 -25
  310. data/lib/web/wiki/resources/htmlarea/plugins/FullPage/popups/docprop.html +0 -131
  311. data/lib/web/wiki/resources/htmlarea/plugins/FullPage/test.html +0 -89
  312. data/lib/web/wiki/resources/htmlarea/plugins/SpellChecker/img/spell-check.gif +0 -0
  313. data/lib/web/wiki/resources/htmlarea/plugins/SpellChecker/lang/cz.js +0 -37
  314. data/lib/web/wiki/resources/htmlarea/plugins/SpellChecker/lang/da.js +0 -37
  315. data/lib/web/wiki/resources/htmlarea/plugins/SpellChecker/lang/de.js +0 -28
  316. data/lib/web/wiki/resources/htmlarea/plugins/SpellChecker/lang/en.js +0 -38
  317. data/lib/web/wiki/resources/htmlarea/plugins/SpellChecker/lang/hu.js +0 -37
  318. data/lib/web/wiki/resources/htmlarea/plugins/SpellChecker/lang/it.js +0 -28
  319. data/lib/web/wiki/resources/htmlarea/plugins/SpellChecker/lang/ro.js +0 -37
  320. data/lib/web/wiki/resources/htmlarea/plugins/SpellChecker/readme-tech.html +0 -114
  321. data/lib/web/wiki/resources/htmlarea/plugins/SpellChecker/spell-check-logic.cgi +0 -210
  322. data/lib/web/wiki/resources/htmlarea/plugins/SpellChecker/spell-check-style.css +0 -10
  323. data/lib/web/wiki/resources/htmlarea/plugins/SpellChecker/spell-check-ui.html +0 -122
  324. data/lib/web/wiki/resources/htmlarea/plugins/SpellChecker/spell-check-ui.js +0 -397
  325. data/lib/web/wiki/resources/htmlarea/plugins/SpellChecker/spell-checker.js +0 -79
  326. data/lib/web/wiki/resources/htmlarea/plugins/TableOperations/img/cell-delete.gif +0 -0
  327. data/lib/web/wiki/resources/htmlarea/plugins/TableOperations/img/cell-insert-after.gif +0 -0
  328. data/lib/web/wiki/resources/htmlarea/plugins/TableOperations/img/cell-insert-before.gif +0 -0
  329. data/lib/web/wiki/resources/htmlarea/plugins/TableOperations/img/cell-merge.gif +0 -0
  330. data/lib/web/wiki/resources/htmlarea/plugins/TableOperations/img/cell-prop.gif +0 -0
  331. data/lib/web/wiki/resources/htmlarea/plugins/TableOperations/img/cell-split.gif +0 -0
  332. data/lib/web/wiki/resources/htmlarea/plugins/TableOperations/img/col-delete.gif +0 -0
  333. data/lib/web/wiki/resources/htmlarea/plugins/TableOperations/img/col-insert-after.gif +0 -0
  334. data/lib/web/wiki/resources/htmlarea/plugins/TableOperations/img/col-insert-before.gif +0 -0
  335. data/lib/web/wiki/resources/htmlarea/plugins/TableOperations/img/col-split.gif +0 -0
  336. data/lib/web/wiki/resources/htmlarea/plugins/TableOperations/img/row-delete.gif +0 -0
  337. data/lib/web/wiki/resources/htmlarea/plugins/TableOperations/img/row-insert-above.gif +0 -0
  338. data/lib/web/wiki/resources/htmlarea/plugins/TableOperations/img/row-insert-under.gif +0 -0
  339. data/lib/web/wiki/resources/htmlarea/plugins/TableOperations/img/row-prop.gif +0 -0
  340. data/lib/web/wiki/resources/htmlarea/plugins/TableOperations/img/row-split.gif +0 -0
  341. data/lib/web/wiki/resources/htmlarea/plugins/TableOperations/img/table-prop.gif +0 -0
  342. data/lib/web/wiki/resources/htmlarea/plugins/TableOperations/lang/cz.js +0 -90
  343. data/lib/web/wiki/resources/htmlarea/plugins/TableOperations/lang/da.js +0 -90
  344. data/lib/web/wiki/resources/htmlarea/plugins/TableOperations/lang/de.js +0 -81
  345. data/lib/web/wiki/resources/htmlarea/plugins/TableOperations/lang/el.js +0 -81
  346. data/lib/web/wiki/resources/htmlarea/plugins/TableOperations/lang/en.js +0 -90
  347. data/lib/web/wiki/resources/htmlarea/plugins/TableOperations/lang/fi.js +0 -66
  348. data/lib/web/wiki/resources/htmlarea/plugins/TableOperations/lang/hu.js +0 -63
  349. data/lib/web/wiki/resources/htmlarea/plugins/TableOperations/lang/it.js +0 -81
  350. data/lib/web/wiki/resources/htmlarea/plugins/TableOperations/lang/nl.js +0 -90
  351. data/lib/web/wiki/resources/htmlarea/plugins/TableOperations/lang/no.js +0 -91
  352. data/lib/web/wiki/resources/htmlarea/plugins/TableOperations/lang/ro.js +0 -90
  353. data/lib/web/wiki/resources/htmlarea/plugins/TableOperations/table-operations.js +0 -1160
  354. data/lib/web/wiki/resources/htmlarea/popupdiv.js +0 -369
  355. data/lib/web/wiki/resources/htmlarea/popups/about.html +0 -378
  356. data/lib/web/wiki/resources/htmlarea/popups/blank.html +0 -2
  357. data/lib/web/wiki/resources/htmlarea/popups/custom2.html +0 -35
  358. data/lib/web/wiki/resources/htmlarea/popups/editor_help.html +0 -16
  359. data/lib/web/wiki/resources/htmlarea/popups/fullscreen.html +0 -133
  360. data/lib/web/wiki/resources/htmlarea/popups/insert_image.html +0 -191
  361. data/lib/web/wiki/resources/htmlarea/popups/insert_table.html +0 -174
  362. data/lib/web/wiki/resources/htmlarea/popups/link.html +0 -142
  363. data/lib/web/wiki/resources/htmlarea/popups/old-fullscreen.html +0 -131
  364. data/lib/web/wiki/resources/htmlarea/popups/old_insert_image.html +0 -206
  365. data/lib/web/wiki/resources/htmlarea/popups/popup.js +0 -109
  366. data/lib/web/wiki/resources/htmlarea/popups/select_color.html +0 -347
  367. data/lib/web/wiki/resources/htmlarea/popupwin.js +0 -139
  368. data/lib/web/wiki/resources/htmlarea/reference.html +0 -523
  369. data/lib/web/wiki/resources/htmlarea/release-notes.html +0 -165
  370. data/lib/web/wiki/resources/illustration.html~ +0 -1
  371. data/lib/web/wiki/resources/index.html~ +0 -4
  372. data/lib/web/wiki/resources/more_news.html~ +0 -5
  373. data/lib/web/wiki/resources/more_news_rss_0.91.html +0 -23
  374. data/lib/web/wiki/resources/page_history.html~ +0 -19
  375. data/lib/web/wiki/resources/template.html~ +0 -13
  376. data/narf.gemspec~ +0 -40
  377. data/sapi/apache_cgi/INSTALL.txt~ +0 -9
  378. data/sapi/apache_cgi/README~ +0 -0
  379. data/sapi/fastcgi/INSTALL.txt~ +0 -17
  380. data/sapi/mod_ruby/INSTALL.txt~ +0 -5
  381. data/sapi/webrick/INSTALL.txt~ +0 -21
  382. data/sapi/webrick/run_webrick.rb~ +0 -16
  383. data/scripts/makedist.rb~ +0 -49
  384. data/test/mod_ruby_stub.rb~ +0 -38
  385. data/test/test.action.rb~ +0 -142
  386. data/test/test.assertinclude.rb~ +0 -109
  387. data/test/test.narf.cgi.rb~ +0 -105
  388. data/test/test.request.rb~ +0 -328
  389. data/test/test.response.rb~ +0 -556
  390. data/test/test.template.rb~ +0 -832
  391. data/test/test.web.test.rb~ +0 -461
  392. data/test/webunit/test_cookie.rb~ +0 -128
  393. data/test/webunit/test_form.rb~ +0 -43
  394. data/test/webunit/test_multipart.rb~ +0 -53
  395. data/test/webunit/test_params.rb~ +0 -211
  396. data/test/webunit/test_response.rb~ +0 -145
  397. data/test/webunit/test_site/assert.html~ +0 -1
  398. data/test/webunit/test_site/auth/index.html~ +0 -1
  399. data/test/webunit/test_site/badtags.html~ +0 -1
  400. data/test/webunit/test_site/cookie.cgi~ +0 -35
  401. data/test/webunit/test_site/document.xml~ +0 -1
  402. data/test/webunit/test_site/form.html~ +0 -1
  403. data/test/webunit/test_site/frame-0.html~ +0 -1
  404. data/test/webunit/test_site/frame-1.html~ +0 -1
  405. data/test/webunit/test_site/frame.html~ +0 -1
  406. data/test/webunit/test_site/image.html~ +0 -1
  407. data/test/webunit/test_site/include.cgi~ +0 -10
  408. data/test/webunit/test_site/jscript-0.html~ +0 -1
  409. data/test/webunit/test_site/jscript-1.html~ +0 -1
  410. data/test/webunit/test_site/jscript.html~ +0 -1
  411. data/test/webunit/test_site/link.html~ +0 -1
  412. data/test/webunit/test_site/multipart.cgi~ +0 -25
  413. data/test/webunit/test_site/multipart.html~ +0 -1
  414. data/test/webunit/test_site/params.html~ +0 -1
  415. data/test/webunit/test_site/redirect.cgi~ +0 -14
  416. data/test/webunit/test_site/response.html~ +0 -1
  417. data/test/webunit/test_site/simple.cgi~ +0 -17
  418. data/test/webunit/test_site/stock.cgi~ +0 -34
  419. data/test/webunit/test_site/table.html~ +0 -1
  420. data/test/webunit/test_site/test.cgi~ +0 -25
  421. data/test/wiki/test.history.rb~ +0 -254
  422. data/test/wiki/test.illustration_page.rb~ +0 -287
  423. data/test/wiki/test.tarpit.rb~ +0 -40
  424. data/test/wiki/test.wiki.rb~ +0 -295
@@ -1,832 +0,0 @@
1
- module TemplateTestEnvironment
2
- def parse_template io, template , vars , query={}
3
- templater = Web::Narflates.new(template,query)
4
- templater.parse(io,vars)
5
- end
6
-
7
- def get_test_dir
8
- File.expand_path(File.join(temp_dir,"test_dir2"))
9
- end
10
-
11
- def temp_file filename
12
- File.expand_path(File.join(get_test_dir,"templates",filename))
13
- end
14
-
15
- def write_template contents, filename = "test.html"
16
- File.open( File.expand_path(File.join(get_test_dir,"templates",filename)) ,"w") { | file | file.write contents }
17
- end
18
-
19
- def handle_request cgi, filename = "test.html"
20
- cgi.print_template( filename, { "var" => cgi["displayVar"] } )
21
- end
22
-
23
- def setup_test_dir
24
- remove_test_dir
25
- Dir.mkdir(get_test_dir)
26
- Dir.mkdir(File.expand_path((File.join("#{get_test_dir}","templates"))))
27
- end
28
-
29
- def remove_test_dir
30
- if File.exists? get_test_dir
31
- File.rm_rf(get_test_dir)
32
- end
33
- end
34
-
35
- def write_file file
36
- File.open( File.expand_path(File.join("#{get_test_dir}","app.rb")), "w" ) { |f| f.write(file) }
37
- end
38
- end
39
-
40
-
41
- class TestTemplate < Test::Unit::TestCase
42
- include TemplateTestEnvironment
43
- include Web::Testing
44
-
45
- def setup
46
- Web.set_docroot get_test_dir
47
- Web.set_cgi( Web::CGI.new() )
48
- setup_test_dir
49
- end
50
-
51
- def teardown
52
- remove_test_dir
53
- end
54
-
55
- def test_append_template_path
56
-
57
- assert_equal( [Dir.pwd,
58
- "#{temp_dir}/test_dir2/templates"],
59
- Web::template_include_path )
60
-
61
- Web::template_include_path << "/.."
62
- assert_equal( [Dir.pwd,
63
- "#{temp_dir}/test_dir2/templates",
64
- "/.."],
65
- Web::template_include_path )
66
- end
67
-
68
- def test_template_file
69
- write_template( "here's a test" )
70
- assert_equal( "#{temp_dir}/test_dir2/templates/test.html",
71
- Web::Narflates.template_file( "test.html" ) )
72
- teardown
73
- setup
74
-
75
- begin
76
- File.open( "test.html", "w" ) { |f|
77
- f.write("here's a test")
78
- }
79
- assert_equal( File.join( Dir.pwd, "test.html" ),
80
- Web::Narflates.template_file( "test.html" ) )
81
- ensure
82
- File.delete( "test.html" )
83
- end
84
-
85
- end
86
-
87
- def test_template_dir_precedence
88
- write_template( "here's a test" )
89
- begin
90
- File.open( "test.html", "w" ) { |f|
91
- f.write("here's a test")
92
- }
93
- assert_equal( File.join( Dir.pwd, "test.html" ),
94
- Web::Narflates.template_file( "test.html" ) )
95
- ensure
96
- File.delete( "test.html" )
97
- end
98
- end
99
-
100
- # ========= Variable Resolution ==========
101
-
102
- def test_print_vars
103
- mockio = StringIO.new
104
- template = "x{$foo}y{$bar}z"
105
- vals = { "foo" => "FOO", "bar" => "BAR" }
106
-
107
- parse_template(mockio, template, vals)
108
- assert_equal "xFOOyBARz", mockio.string
109
- end
110
-
111
- def test_print_subvars
112
- mockio = StringIO.new
113
- template = "x{$foo.a}y{$foo.b}z{$bar}"
114
-
115
- vals = { "foo" => { "a" => "1", "b" => "2" }, "bar" => "BAR" }
116
-
117
- parse_template(mockio, template, vals)
118
- assert_equal "x1y2zBAR", mockio.string
119
- end
120
-
121
- def test_throw_exception_if_subvar_doesnt_exist
122
- mockio = StringIO.new
123
- template = "x{$foo.a}y{$foo.b}z{$bar}"
124
-
125
- vals = { "foo" => { "a" => "1" }, "bar" => "BAR" }
126
-
127
- assert_raises(Web::Scope::VarNotFoundException) {
128
- parse_template(mockio, template, vals)
129
- }
130
- end
131
-
132
- def test_throw_exception_if_var_doesnt_exist
133
- mockio = StringIO.new
134
- template = "x{$foo}y{$bar}z"
135
- vals = { "foo" => "FOO" }
136
-
137
- assert_raises(Web::Scope::VarNotFoundException) {
138
- parse_template(mockio, template, vals)
139
- }
140
- end
141
-
142
- def test_nil_values_display_nothing
143
- mockio = StringIO.new
144
- template = "x{$foo}yz"
145
- vals = { "foo" => nil }
146
-
147
- parse_template(mockio, template, vals)
148
- assert_equal "xyz", mockio.string
149
- end
150
-
151
-
152
- class TestClass
153
- attr_reader :var
154
-
155
- def initialize var
156
- @var = var
157
- end
158
-
159
- def foo
160
- TestClass.new("XXX")
161
- end
162
- end
163
-
164
- def test_print_method
165
- mockio = StringIO.new
166
- template = "x{$foo.var}y{$bar}z"
167
- vals = { "foo" => TestClass.new("FOO"), "bar" => "BAR" }
168
-
169
- parse_template(mockio, template, vals)
170
- assert_equal "xFOOyBARz", mockio.string
171
- end
172
-
173
- def test_print_nested_method
174
- mockio = StringIO.new
175
- template = "x{$foo.foo.var}y{$bar}z"
176
- vals = { "foo" => TestClass.new("FOO"), "bar" => "BAR" }
177
-
178
- parse_template(mockio, template, vals)
179
- assert_equal "xXXXyBARz", mockio.string
180
- end
181
-
182
-
183
- # ========= ForEach ==========
184
-
185
- def test_foreach
186
- mockio = StringIO.new
187
- template = "x<narf:foreach from=arr item=item>y{$item.a}{$item.b}y</narf:foreach>z"
188
-
189
- vals = { "arr" => [ {"a" => "1", "b" => "2" }, { "a" => "3" , "b" => "4" } ] }
190
-
191
- parse_template(mockio,template, vals)
192
- assert_equal "xy12yy34yz", mockio.string
193
- end
194
-
195
- def test_foreach_with_empty_array
196
- mockio = StringIO.new
197
- template = "x<narf:foreach from=arr item=item>y{$item.a}{$item.b}y</narf:foreach>z"
198
-
199
- vals = { "arr" => [ ] }
200
-
201
- parse_template(mockio,template, vals)
202
- assert_equal "xz", mockio.string
203
- end
204
-
205
-
206
- def test_nested_foreach
207
- mockio = StringIO.new
208
- template = "x<narf:foreach from=arr item=item><narf:foreach from=arrx item=itemx>{$itemx.b}{$item.a}</narf:foreach></narf:foreach>z"
209
-
210
- vals = {
211
- "arr" => [ {"a" => "1" } ] ,
212
- "arrx" => [ { "b" => "4" } ] }
213
-
214
- parse_template(mockio,template, vals)
215
- assert_equal "x41z", mockio.string
216
- end
217
-
218
-
219
- def test_foreach_on_foreach
220
- mockio = StringIO.new
221
- template = "x<narf:foreach from=arr item=item><narf:foreach from=item.a item=item2>{$item.c}{$item2.b}</narf:foreach></narf:foreach>z"
222
-
223
- vals = { "arr" => [ {"a" => [ { "b" => "4" } ] , "c" => "1" } ]};
224
-
225
- parse_template(mockio,template, vals)
226
- assert_equal "x14z", mockio.string
227
- end
228
-
229
-
230
- def test_method_on_foreach
231
- mockio = StringIO.new
232
- template = "<narf:foreach from=items item=item>{$item.var}</narf:foreach>"
233
- vals = { "items" => [ TestClass.new("FOO"), TestClass.new("BAR") ] }
234
-
235
- parse_template(mockio, template, vals)
236
- assert_equal "FOOBAR", mockio.string
237
- end
238
-
239
- class TestEacher
240
- include Enumerable
241
-
242
- def each(&block)
243
- [{"foo" => "bar"},{"foo" => "bar2"}].each &block
244
- end
245
- end
246
-
247
- def test_foreach_on_object
248
- mockio = StringIO.new
249
- template = "<narf:foreach from=items item=item>{$item.foo}</narf:foreach>"
250
- vals = { "items" => TestEacher.new() }
251
-
252
- parse_template(mockio, template, vals)
253
- assert_equal "barbar2", mockio.string
254
- end
255
-
256
-
257
- #TODO foo.to_s is default
258
-
259
- # ========= If ==========
260
-
261
- def test_if
262
- mockio = StringIO.new
263
- template = "x<narf:if condition=a>aa</narf:if><narf:if condition=b>bb</narf:if>z"
264
- vals = { "a" => true , "b" => false }
265
-
266
- parse_template(mockio,template, vals)
267
- assert_equal "xaaz", mockio.string
268
- end
269
-
270
- # ========= Unless ==========
271
-
272
- def test_if
273
- mockio = StringIO.new
274
- template = "x<narf:unless condition=a>aa</narf:if><narf:unless condition=b>bb</narf:if>z"
275
- vals = { "a" => false , "b" => true }
276
-
277
- parse_template(mockio,template, vals)
278
- assert_equal "xaaz", mockio.string
279
- end
280
-
281
- # ========= Form ==========
282
-
283
- def test_form
284
- mockio = StringIO.new
285
- template = "<narf:form name=\"formname\" method=\"post\">{$item}</narf:form>"
286
- vals = { "item" => "bar" }
287
-
288
- parse_template(mockio, template, vals)
289
- assert_equal "<form name=\"formname\" method=\"post\">"+
290
- "<input type=\"hidden\" name=\"__submitted\" value=\"formname\">"+
291
- "bar</form>", mockio.string
292
- end
293
-
294
- def test_add_query_to_form
295
- mockio = StringIO.new
296
- template = "<narf:form name=\"formname\" method=\"post\">{$item}</narf:form>"
297
- vals = { "item" => "bar" }
298
-
299
- parse_template(mockio, template, vals , { "name1" => "value1", "name2" => "value2" })
300
- assert_equal "<form name=\"formname\" method=\"post\">"+
301
- "<input type=\"hidden\" name=\"__submitted\" value=\"formname\">"+
302
- "<input type=\"hidden\" name=\"__q.name1\" value=\"value1\">"+
303
- "<input type=\"hidden\" name=\"__q.name2\" value=\"value2\">"+
304
- "bar</form>", mockio.string
305
- end
306
-
307
- # ========= Input Box ==========
308
-
309
- def test_input_box
310
- mockio = StringIO.new
311
- write_template "<html><body><form name=\"form\">x<narf:input type=text name=test>y</form></body></html>"
312
- vals = { "test" => "abc" }
313
-
314
- header = "Content-Type: text/html\r\nStatus: 200\r\n\r\n"
315
-
316
- cgi = Web::CGI.new( :out => mockio )
317
- cgi.print_template( "test.html", vals )
318
- assert_equal "<html><body><form name=\"form\">x<input type=\"text\" name=\"test\" value=\"abc\">y</form></body></html>", cgi.get_content
319
- cgi.assert_vars_includes "test" => "abc"
320
- cgi.assert_form_includes "form" , { "test" => "abc" }
321
- end
322
-
323
- def test_input_box_in_form
324
- mockio = StringIO.new
325
- write_template "<html><body><form name=\"form\">x<narf:input type=text name=test>y</form></body></html>"
326
- vals = { "test" => "abc" }
327
-
328
- header = "Content-Type: text/html\r\nStatus: 200\r\n\r\n"
329
-
330
- cgi = Web::CGI.new( :out => mockio )
331
- cgi.print_template( "/test.html", vals )
332
- assert_equal "<html><body><form name=\"form\">x<input type=\"text\" name=\"test\" value=\"abc\">y</form></body></html>", cgi.get_content
333
- cgi.assert_vars_includes "test" => "abc"
334
- cgi.assert_form_includes "form" , { "test" => "abc" }
335
- end
336
-
337
- # ========= Text Area ==========
338
-
339
- def test_textarea
340
- write_file <<-EOF
341
- Web.print_template( "<html><body><form name='form1'>x<narf:textarea name=test1>y</form></body></html>", { "test1" => "test" } )
342
- EOF
343
- do_request "/app.rb"
344
- assert_vars_includes "test1" => "test"
345
- assert_form_includes "form1", { "test1" => "test" }
346
- end
347
-
348
- # ========= Hidden ==========
349
-
350
- def test_hidden
351
- write_file <<-EOF
352
- Web.print_template( "<html><body>"+
353
- " <form name='form1'>x"+
354
- " <narf:input type=hidden name=test1>y"+
355
- " </form></body></html>", {
356
- "test1" => "thisishidden",
357
- } )
358
- EOF
359
- do_request "/app.rb"
360
- assert_vars_includes "test1" => "thisishidden"
361
- assert_form_includes "form1", { "test1" => "thisishidden" }
362
- end
363
-
364
-
365
- # ========= Password ==========
366
-
367
- def test_password
368
- write_file <<-EOF
369
- Web.print_template( "<html><body>"+
370
- " <form name='form1'>x"+
371
- " <narf:input type=password name=test1>y"+
372
- " </form></body></html>", {
373
- "test1" => "thisishidden",
374
- } )
375
- EOF
376
- do_request "/app.rb"
377
- assert_vars_includes "test1" => "thisishidden"
378
- assert_form_includes "form1", { "test1" => "thisishidden" }
379
- end
380
-
381
-
382
- # ========= Checkbox ==========
383
-
384
- def test_checkbox
385
- write_file <<-EOF
386
- Web.print_template( "<html><body>
387
- <form name='form1'>x
388
- <narf:input type=checkbox name=test1>y
389
- <narf:input type=checkbox name=test2>y
390
- </form></body></html>",
391
- {
392
- "test1" => true,
393
- "test2" => false,
394
- } )
395
- EOF
396
- do_request "/app.rb"
397
- assert_vars_includes "test1" => true, "test2" => false
398
- assert_form_includes "form1", { "test1" => true, "test2" => false }
399
- end
400
- end
401
-
402
-
403
- class TestMultiHashTree1 < Test::Unit::TestCase
404
- include TemplateTestEnvironment
405
- include Web::Testing
406
-
407
- def setup
408
- setup_test_dir
409
- Web.set_docroot get_test_dir
410
- end
411
-
412
- def tear_down
413
- remove_test_dir
414
- end
415
-
416
- def test_hidden_in_loop
417
- write_file <<-EOF
418
- Web.print_template( "<html><body>"+
419
- " <form name=form1>"+
420
- " <narf:foreach from=items item=item>"+
421
- " <narf:input type=hidden name=item.test1>"+
422
- " <narf:input type=hidden name=item.test2>"+
423
- " </narf:foreach>"+
424
- "</form></body></html>", {
425
- "items" => [
426
- { "test1" => "a", "test2" => "b" },
427
- { "test1" => "c", "test2" => "d" } ]
428
- } )
429
- EOF
430
- do_request "/app.rb"
431
-
432
- assert_form_includes("form1",
433
- { "items" => [{"test1" => "a",
434
- "test2" => "b" },
435
- {"test1" => "c",
436
- "test2" => "d" } ] } )
437
-
438
- submitted = false
439
- write_file <<-EOF
440
- ["a"] == Web.split_params["items"][0]["test1"] || raise("no match")
441
- ["b"] == Web.split_params["items"][0]["test2"] || raise("no match")
442
- ["c"] == Web.split_params["items"][1]["test1"] || raise("no match")
443
- ["d"] == Web.split_params["items"][1]["test2"] || raise("no match")
444
- EOF
445
- do_submit "form1"
446
- end
447
-
448
-
449
- def test_checkbox_in_loop
450
- write_file <<-EOF
451
- Web.print_template( "<html><body>"+
452
- " <form name='form1'>"+
453
- " <narf:foreach from=items item=item>"+
454
- " <narf:input type=checkbox name=item.test1>"+
455
- " <narf:input type=checkbox name=item.test2>"+
456
- " </narf:foreach>"+
457
- "</form></body></html>", {
458
- "items" => [
459
- { "test1" => true, "test2" => false },
460
- { "test1" => false, "test2" => true } ]
461
- } )
462
- EOF
463
- do_request "/app.rb"
464
-
465
- assert /name=\"items\[0\].test1\"/ =~ Web.get_cgi.get_content
466
- assert /name=\"items\[0\].test2\"/ =~ Web.get_cgi.get_content
467
- assert /name=\"items\[1\].test1\"/ =~ Web.get_cgi.get_content
468
- assert /name=\"items\[1\].test2\"/ =~ Web.get_cgi.get_content
469
-
470
- assert_form_includes "form1", { "items" => [
471
- { "test1" => true, "test2" => false },
472
- { "test1" => false, "test2" => true } ] }
473
-
474
- write_file <<-EOF
475
- [true] == Web.split_params["items"][0]["test1"] || raise("no match1")
476
- nil == Web.split_params["items"][0]["test2"] || raise("no match2")
477
- nil == Web.split_params["items"][1]["test1"] || raise("no match3")
478
- [true] == Web.split_params["items"][1]["test2"] || raise("no match4")
479
- EOF
480
- do_submit "form1", {}
481
- end
482
-
483
- def test_other_fields_in_loop
484
- write_file <<-EOF
485
- Web.print_template( "<html><body>"+
486
- " <form name='form1'>"+
487
- " <input type='hidden' name='action' value='submit'>"+
488
- " <narf:foreach from=items item=item>"+
489
- " <narf:input type=text name=item.test1>"+
490
- " <narf:input type=hidden name=item.test2>"+
491
- " </narf:foreach>"+
492
- "</form></body></html>", {
493
- "items" => [
494
- { "test1" => true, "test2" => false },
495
- { "test1" => false, "test2" => true } ]
496
- } )
497
- EOF
498
- do_request "/app.rb"
499
-
500
- assert /name=\"items\[0\].test1\"/ =~ Web.get_content
501
- assert /name=\"items\[0\].test2\"/ =~ Web.get_content
502
- assert /name=\"items\[1\].test1\"/ =~ Web.get_content
503
- assert /name=\"items\[1\].test2\"/ =~ Web.get_content
504
- end
505
-
506
- # ###
507
- # this is a problem I need to think about.
508
- # this is a use of checkboxes to represent boolean
509
- # values, which isn't supported very well at the moment.
510
- # ~ patrick
511
- def think_about_this_test_checkbox_in_loop_submit
512
- write_file <<-EOF
513
- Web.print_template( "<html><body>
514
- <form name='form1'>
515
- <input type='hidden' name='action' value='submit'>
516
- <narf:foreach from=items item=item>
517
- <narf:input type=checkbox name=item.test1>
518
- <narf:input type=checkbox name=item.test2>
519
- </narf:foreach>
520
- </form></body></html>", {
521
- "items" => [
522
- { "test1" => true, "test2" => false },
523
- { "test1" => false, "test2" => true } ]
524
- } )
525
- EOF
526
-
527
- do_request "/app.rb"
528
-
529
- Kernel.puts Web.get_content
530
- write_file <<-EOF
531
- false == Web.split_params["items"][0]["test1"] || raise("no match 1")
532
- true == Web.split_params["items"][0]["test2"] || raise("no match 2")
533
- true == Web.split_params["items"][1]["test1"] || raise("no match 3")
534
- true == Web.split_params["items"][1]["test2"] || raise("no match 4")
535
- EOF
536
-
537
- do_submit( "form1", {"items[0].test1" => false,
538
- "items[0].test2" => true,
539
- "items[1].test1" => true, } )
540
- end
541
-
542
-
543
- def test_double_nested_checkbox_in_loop
544
- write_file <<-EOF
545
- Web.print_template( "<html><body>"+
546
- " <form name='form1'>"+
547
- " <narf:foreach from=itemsouter item=itemouter>"+
548
- " <narf:foreach from=itemouter.itemsinner item=iteminner>"+
549
- " <narf:input type=checkbox name=iteminner.test1>"+
550
- " </narf:foreach>"+
551
- " </narf:foreach>"+
552
- " </form></body></html>", {
553
- "itemsouter" => [
554
- { "itemsinner" => [
555
- "test1"=>"value" ] } ] }
556
- )
557
- EOF
558
- do_request "/app.rb"
559
- assert /name=\"itemsouter\[0\].itemsinner\[0\].test1\"/ =~ Web.get_content
560
- end
561
-
562
- def test_select_box
563
- mockio = StringIO.new
564
- write_template "<html><body><form name=\"form\">x<narf:select name=test values=options>y</form></body></html>"
565
- vals = { "test" => "value2",
566
- "options" => [ { "name" => "name1", "value" => "value1" },
567
- { "name" => "name2", "value" => "value2" } ] }
568
-
569
- cgi = Web::CGI.new( :out => mockio )
570
- cgi.print_template( "/test.html", vals )
571
- string = "<html><body><form name=\"form\">x<select name=\"test\">" +
572
- "<option value=\"value1\">name1</option>"+
573
- "<option value=\"value2\" selected>name2</option>"+
574
- "</select>y"+
575
- "</form></body></html>"
576
-
577
- assert_equal string, cgi.get_content
578
- assert_equal ["value2"], cgi.get_form_value( "form","test" )
579
- end
580
-
581
- def test_select_box_converts_to_strings
582
- #--- first, one side of the problem...
583
-
584
- mockio = StringIO.new
585
- write_template "<html><body><form name=\"form\">x<narf:select name=test values=options>y</form></body></html>"
586
- vals = { "test" => 2,
587
- "options" => [ { "name" => "name1", "value" => "1" },
588
- { "name" => "name2", "value" => "2" } ] }
589
-
590
- header = "Content-Type: text/html\r\nStatus: 200\r\n\r\n"
591
-
592
- cgi = Web::CGI.new( :out => mockio )
593
- cgi.print_template( "/test.html", vals )
594
- string = "<html><body><form name=\"form\">x<select name=\"test\">" +
595
- "<option value=\"1\">name1</option>"+
596
- "<option value=\"2\" selected>name2</option>"+
597
- "</select>y"+
598
- "</form></body></html>"
599
-
600
- assert_equal string, cgi.get_content
601
- assert_equal ["2"], cgi.get_form_value( "form","test" )
602
-
603
- #--- now the other
604
-
605
- mockio = StringIO.new
606
- write_template "<html><body><form name=\"form\">x<narf:select name=test values=options>y</form></body></html>"
607
- vals = { "test" => "2",
608
- "options" => [ { "name" => "name1", "value" => 1 },
609
- { "name" => "name2", "value" => 2 } ] }
610
-
611
- header = "Content-Type: text/html\r\nStatus: 200\r\n\r\n"
612
-
613
- cgi = Web::CGI.new( :out => mockio )
614
- cgi.print_template( "/test.html", vals )
615
- string = "<html><body><form name=\"form\">x<select name=\"test\">" +
616
- "<option value=\"1\">name1</option>"+
617
- "<option value=\"2\" selected>name2</option>"+
618
- "</select>y"+
619
- "</form></body></html>"
620
-
621
- assert_equal string, cgi.get_content
622
- assert_equal ["2"], cgi.get_form_value( "form","test" )
623
-
624
- end
625
-
626
-
627
- def test_select_box_from_array
628
- mockio = StringIO.new
629
- write_template "<html><body><form name=\"form\">x<narf:select name=test values=options>y</form></body></html>"
630
- vals = { "test" => "value2",
631
- "options" => [ "value1", "value2" ] }
632
-
633
- header = "Content-Type: text/html\r\nStatus: 200\r\n\r\n"
634
-
635
- cgi = Web::CGI.new( :out => mockio )
636
- cgi.print_template( "/test.html", vals )
637
- string = "<html><body><form name=\"form\">x<select name=\"test\">" +
638
- "<option value=\"value1\">value1</option>"+
639
- "<option value=\"value2\" selected>value2</option>"+
640
- "</select>y"+
641
- "</form></body></html>"
642
-
643
- assert_equal string, cgi.get_content
644
- assert_equal ["value2"], cgi.get_form_value( "form","test" )
645
- end
646
-
647
-
648
-
649
-
650
- def test_get_elements
651
- p = HTMLTree::Parser.new(true, false)
652
- p.feed('<html><head></head><body><form method=get name=test></form></body></html>')
653
- assert_equal("test",p.html.get_elements("form")[0].attribute("name"))
654
- end
655
-
656
- def test_template
657
- write_template "<html><body><h1>{$var}</h1></body></html>"
658
- Web.process(:params => {"displayVar" => "foo"}, :out => ""){ |cgi|
659
- handle_request cgi
660
- cgi.assert_template_used( "test.html" )
661
- cgi.assert_vars_includes({ "var" => "foo" })
662
- }
663
- end
664
-
665
- def test_exception_thrown_if_no_template_used
666
- write_template "<html><body><h1>{$var}</h1></body></html>"
667
- Web.process(:params => {"displayVar" => "foo"}, :out => ""){ |cgi|
668
- assert_raises(Web::TemplateException) {
669
- cgi.assert_template_used( "/test.html" )
670
- }
671
- }
672
- end
673
-
674
- def test_template_fails_assertion_with_wrong_template
675
- write_template "<html><body><h1>{$var}</h1></body></html>"
676
-
677
- Web.process(:out => "", :params => {"displayVar" => "bar"}){ |cgi|
678
- handle_request cgi
679
-
680
- assert_raises (Test::Unit::AssertionFailedError) {
681
- cgi.assert_template_used( "test_not_it.html" )
682
- }
683
-
684
- assert_raises (Test::Unit::AssertionFailedError) {
685
- cgi.assert_vars_includes({ "var" => "foo" })
686
- }
687
- }
688
- end
689
-
690
- def test_assert_template_not_used
691
- write_template "<html><body><h1>{$var}</h1></body></html>"
692
- Web.process(:params => {"displayVar" => "foo"}, :out => ""){ |cgi|
693
- handle_request cgi
694
- cgi.assert_template_not_used( "foo.html" )
695
- }
696
- end
697
-
698
- def test_assert_template_not_used_exception_thrown_if_template_used
699
- write_template "<html><body><h1>{$var}</h1></body></html>"
700
- Web.process(:params => {"displayVar" => "foo"}, :out => ""){ |cgi|
701
- assert_raises(Test::Unit::AssertionFailedError) {
702
- handle_request cgi
703
- cgi.assert_template_not_used( "test.html" )
704
- }
705
- }
706
- end
707
-
708
- def test_print_template_uses_empty_hash_by_default
709
- write_template "blah blah blah"
710
- Web.process( :out => "" ) { |cgi|
711
- cgi.print_template "test.html"
712
- }.assert_content "blah blah blah"
713
- end
714
-
715
- def test_print_template_survives_enormous_templates
716
- bad_template = ""
717
-
718
- 1.upto(1000){ |i|
719
- bad_template += "this template sucks\n"
720
- }
721
-
722
- Web.process( :out => "" ) { |cgi|
723
- cgi.print_template bad_template
724
- }.assert_content bad_template
725
- end
726
- end
727
-
728
-
729
- class TestIncludes < Test::Unit::TestCase
730
- include TemplateTestEnvironment
731
- include Web::Testing
732
-
733
- def setup
734
- Web.set_docroot get_test_dir
735
- setup_test_dir
736
- end
737
-
738
- def teardown
739
- remove_test_dir
740
- end
741
-
742
-
743
- def test_include_prints_contents
744
- write_template "<html><body><narf:include file=\"incfile.html\"></body></html>" , "test.html"
745
- write_template "<h1>Hello</h1>", "incfile.html"
746
-
747
- write_file <<-EOF
748
- Web.print_template( "test.html", {} )
749
- EOF
750
-
751
- do_request "/app.rb"
752
- Web.assert_content "<html><body><h1>Hello</h1></body></html>"
753
- end
754
-
755
- def test_assert_template_used_works_for_included_templates
756
- write_template "<html><body><narf:include file=\"incfile.html\" vars=foo></body></html>" , "test.html"
757
- write_template "<h1>{$name}</h1>", "incfile.html"
758
-
759
- write_file <<-EOF
760
- Web.print_template( "test.html" , { "foo" => { "name" => "bar" }} )
761
- EOF
762
-
763
- do_request "/app.rb"
764
- Web.assert_content "<html><body><h1>bar</h1></body></html>"
765
-
766
- Web.assert_template_used 'test.html'
767
- Web.assert_template_used 'incfile.html'
768
- end
769
-
770
- def todo_assert_template_used_works_for_multiple_print_template_calls
771
-
772
- end
773
-
774
- def test_included_vars_are_evaluated
775
- write_template "<html><body><narf:include file=\"#{ 'incfile.html' }\" vars=foo></body></html>" , "test.html"
776
- write_template "<h1>{$name}</h1>", "incfile.html"
777
-
778
- write_file <<-EOF
779
- Web.print_template( "test.html" , { "foo" => { "name" => "bar" }} )
780
- EOF
781
-
782
- do_request "/app.rb"
783
- Web.assert_content "<html><body><h1>bar</h1></body></html>"
784
- end
785
-
786
- def test_checks_included_then_global_vars
787
- write_template "<html><body><narf:include file=\"#{ 'incfile.html' }\"></body></html>" , "test.html"
788
- write_template "<h1>{$foo.name}</h1>", "incfile.html"
789
-
790
- write_file <<-EOF
791
- Web.print_template( "test.html" , { "foo" => { "name" => "bar" }} )
792
- EOF
793
-
794
- Web.assert_content "<html><body><h1>bar</h1></body></html>"
795
- end
796
-
797
- def test_exception_thrown_if_template_doesnt_exist
798
- write_template "<html><body><narf:include file=\"#{ 'nonexistant.html' }\"></body></html>" , "test.html"
799
-
800
- write_file <<-EOF
801
- exceptionThrown = false
802
- begin
803
- Web.print_template( "test.html" , { "foo" => { "name" => "bar" }} )
804
- rescue Object
805
- exceptionThrown = true
806
- end
807
- raise "error" if !exceptionThrown
808
- EOF
809
-
810
- do_request "/app.rb"
811
- end
812
-
813
- def test_load_filename_from_var
814
- write_template "<html><body><narf:include file=$incfile></body></html>" , "test.html"
815
- write_template "<h1>{$foo.name}</h1>", "incfile.html"
816
-
817
- write_file <<-EOF
818
- Web.print_template( "test.html" ,
819
- { "foo" => { "name" => "bar" }, "incfile" => "incfile.html" })
820
- EOF
821
-
822
- do_request "/app.rb"
823
- Web.assert_content "<html><body><h1>bar</h1></body></html>"
824
- end
825
- end
826
-
827
-
828
- # TODO:
829
- # add the ability to output the widgets manually
830
- # add the ability to define your own widgets
831
- # make sure you can't select an option that isn't in the option list
832
- # handle queries in an include