webgen 0.3.8 → 0.4.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (618) hide show
  1. data/ChangeLog +2565 -14
  2. data/README +4 -6
  3. data/Rakefile +207 -89
  4. data/TODO +175 -17
  5. data/VERSION +1 -1
  6. data/bin/webgen +1 -2
  7. data/data/webgen/gallery-creator/default.png +0 -0
  8. data/data/webgen/gallery_styles/default/README +6 -0
  9. data/data/webgen/gallery_styles/default/gallery_gallery.template +38 -0
  10. data/data/webgen/gallery_styles/default/gallery_image.template +30 -0
  11. data/data/webgen/gallery_styles/default/gallery_main.template +18 -0
  12. data/data/webgen/gallery_styles/slides/README +18 -0
  13. data/data/webgen/gallery_styles/slides/collage.rb +334 -0
  14. data/data/webgen/gallery_styles/slides/gallery_gallery.template +62 -0
  15. data/data/webgen/gallery_styles/slides/gallery_image.template +53 -0
  16. data/data/webgen/gallery_styles/slides/gallery_main.template +32 -0
  17. data/data/webgen/resources/images/generated_by_webgen.png +0 -0
  18. data/data/webgen/resources/images/webgen_logo.png +0 -0
  19. data/data/webgen/website_styles/1024px/README +10 -0
  20. data/data/webgen/website_styles/1024px/default.css +188 -0
  21. data/data/webgen/website_styles/1024px/default.template +62 -0
  22. data/data/webgen/website_styles/1024px/images/background.gif +0 -0
  23. data/data/webgen/website_styles/andreas00/README +10 -0
  24. data/data/webgen/website_styles/andreas00/default.css +290 -0
  25. data/data/webgen/website_styles/andreas00/default.template +62 -0
  26. data/data/webgen/website_styles/andreas00/images/bg.gif +0 -0
  27. data/data/webgen/website_styles/andreas00/images/front.jpg +0 -0
  28. data/data/webgen/website_styles/andreas00/images/menubg.gif +0 -0
  29. data/data/webgen/website_styles/andreas00/images/menubg2.gif +0 -0
  30. data/data/webgen/website_styles/andreas01/README +11 -0
  31. data/data/webgen/website_styles/andreas01/default.css +310 -0
  32. data/data/webgen/website_styles/andreas01/default.template +63 -0
  33. data/data/webgen/website_styles/andreas01/images/bg.gif +0 -0
  34. data/data/webgen/website_styles/andreas01/images/front.jpg +0 -0
  35. data/data/webgen/website_styles/andreas01/print.css +35 -0
  36. data/data/webgen/website_styles/andreas03/README +11 -0
  37. data/data/webgen/website_styles/andreas03/default.css +223 -0
  38. data/data/webgen/website_styles/andreas03/default.template +60 -0
  39. data/data/webgen/website_styles/andreas03/images/bodybg.png +0 -0
  40. data/data/webgen/website_styles/andreas03/images/contbg.png +0 -0
  41. data/data/webgen/website_styles/andreas03/images/footerbg.png +0 -0
  42. data/data/webgen/website_styles/andreas03/images/gradient1.png +0 -0
  43. data/data/webgen/website_styles/andreas03/images/gradient2.png +0 -0
  44. data/data/webgen/website_styles/andreas04/README +12 -0
  45. data/data/webgen/website_styles/andreas04/default.css +290 -0
  46. data/data/webgen/website_styles/andreas04/default.template +83 -0
  47. data/data/webgen/website_styles/andreas04/images/blinkarrow.gif +0 -0
  48. data/data/webgen/website_styles/andreas04/images/bodybg.png +0 -0
  49. data/data/webgen/website_styles/andreas04/images/contentbg.png +0 -0
  50. data/data/webgen/website_styles/andreas04/images/entrybg.png +0 -0
  51. data/data/webgen/website_styles/andreas04/images/flash.gif +0 -0
  52. data/data/webgen/website_styles/andreas04/images/flash2.gif +0 -0
  53. data/data/webgen/website_styles/andreas04/images/globe.gif +0 -0
  54. data/data/webgen/website_styles/andreas04/images/globebottom.gif +0 -0
  55. data/data/webgen/website_styles/andreas04/images/linkarrow.gif +0 -0
  56. data/data/webgen/website_styles/andreas04/images/menuhover.png +0 -0
  57. data/data/webgen/website_styles/andreas05/README +11 -0
  58. data/data/webgen/website_styles/andreas05/default.css +33 -0
  59. data/data/webgen/website_styles/andreas05/default.template +42 -0
  60. data/data/webgen/website_styles/andreas05/images/bodybg.gif +0 -0
  61. data/data/webgen/website_styles/andreas05/images/front.png +0 -0
  62. data/data/webgen/website_styles/andreas06/README +11 -0
  63. data/data/webgen/website_styles/andreas06/default.css +353 -0
  64. data/data/webgen/website_styles/andreas06/default.template +72 -0
  65. data/data/webgen/website_styles/andreas06/images/bodybg.gif +0 -0
  66. data/data/webgen/website_styles/andreas06/images/boxbg.gif +0 -0
  67. data/data/webgen/website_styles/andreas06/images/greypx.gif +0 -0
  68. data/data/webgen/website_styles/andreas06/images/header.jpg +0 -0
  69. data/data/webgen/website_styles/andreas06/images/innerbg.gif +0 -0
  70. data/data/webgen/website_styles/andreas06/images/leaves.jpg +0 -0
  71. data/data/webgen/website_styles/andreas06/images/tabs.gif +0 -0
  72. data/data/webgen/website_styles/andreas07/README +12 -0
  73. data/data/webgen/website_styles/andreas07/browserfix.css +7 -0
  74. data/data/webgen/website_styles/andreas07/default.css +92 -0
  75. data/data/webgen/website_styles/andreas07/default.template +44 -0
  76. data/data/webgen/website_styles/andreas07/images/bodybg.gif +0 -0
  77. data/data/webgen/website_styles/andreas07/images/sidebarbg.gif +0 -0
  78. data/data/webgen/website_styles/andreas08/README +11 -0
  79. data/data/webgen/website_styles/andreas08/default.css +224 -0
  80. data/data/webgen/website_styles/andreas08/default.template +53 -0
  81. data/data/webgen/website_styles/andreas09/README +11 -0
  82. data/data/webgen/website_styles/andreas09/default.css +308 -0
  83. data/data/webgen/website_styles/andreas09/default.template +70 -0
  84. data/data/webgen/website_styles/andreas09/images/bodybg-black.jpg +0 -0
  85. data/data/webgen/website_styles/andreas09/images/bodybg-green.jpg +0 -0
  86. data/data/webgen/website_styles/andreas09/images/bodybg-orange.jpg +0 -0
  87. data/data/webgen/website_styles/andreas09/images/bodybg-purple.jpg +0 -0
  88. data/data/webgen/website_styles/andreas09/images/bodybg-red.jpg +0 -0
  89. data/data/webgen/website_styles/andreas09/images/bodybg.jpg +0 -0
  90. data/data/webgen/website_styles/andreas09/images/footerbg.jpg +0 -0
  91. data/data/webgen/website_styles/andreas09/images/menuhover-black.jpg +0 -0
  92. data/data/webgen/website_styles/andreas09/images/menuhover-green.jpg +0 -0
  93. data/data/webgen/website_styles/andreas09/images/menuhover-orange.jpg +0 -0
  94. data/data/webgen/website_styles/andreas09/images/menuhover-purple.jpg +0 -0
  95. data/data/webgen/website_styles/andreas09/images/menuhover-red.jpg +0 -0
  96. data/data/webgen/website_styles/andreas09/images/menuhover.jpg +0 -0
  97. data/data/webgen/website_styles/default/README +6 -0
  98. data/data/webgen/website_styles/default/default.css +1 -1
  99. data/data/webgen/website_styles/default/default.template +9 -3
  100. data/data/webgen/website_styles/plain/README +12 -0
  101. data/data/webgen/website_styles/plain/default.css +244 -0
  102. data/data/webgen/website_styles/plain/default.template +63 -0
  103. data/data/webgen/website_styles/plain/images/a_hover.jpg +0 -0
  104. data/data/webgen/website_styles/plain/images/desc.jpg +0 -0
  105. data/data/webgen/website_styles/plain/images/li.gif +0 -0
  106. data/data/webgen/website_styles/plain/images/mainbar.jpg +0 -0
  107. data/data/webgen/website_styles/plain/images/menu.jpg +0 -0
  108. data/data/webgen/website_styles/plain/images/submenua.gif +0 -0
  109. data/data/webgen/website_styles/plain/images/submenua_hover.jpg +0 -0
  110. data/data/webgen/website_templates/default/README +7 -5
  111. data/data/webgen/website_templates/personal_hp/README +7 -5
  112. data/data/webgen/website_templates/project/README +8 -6
  113. data/doc/config.yaml +2 -2
  114. data/doc/examples/website_styles/1024px/README +9 -0
  115. data/doc/examples/website_styles/1024px/config.yaml +2 -0
  116. data/doc/examples/website_styles/1024px/src/about.page +12 -0
  117. data/doc/examples/website_styles/1024px/src/default.css +188 -0
  118. data/doc/examples/website_styles/1024px/src/default.template +62 -0
  119. data/doc/examples/website_styles/1024px/src/download.page +15 -0
  120. data/doc/examples/website_styles/1024px/src/features.page +8 -0
  121. data/doc/examples/website_styles/1024px/src/images/background.gif +0 -0
  122. data/doc/examples/website_styles/1024px/src/index.page +9 -0
  123. data/doc/examples/website_styles/1024px/src/screenshots.page +18 -0
  124. data/doc/examples/website_styles/andreas00/README +9 -0
  125. data/doc/examples/website_styles/andreas00/config.yaml +2 -0
  126. data/doc/examples/website_styles/andreas00/src/about.page +12 -0
  127. data/doc/examples/website_styles/andreas00/src/default.css +290 -0
  128. data/doc/examples/website_styles/andreas00/src/default.template +62 -0
  129. data/doc/examples/website_styles/andreas00/src/download.page +15 -0
  130. data/doc/examples/website_styles/andreas00/src/features.page +8 -0
  131. data/doc/examples/website_styles/andreas00/src/images/bg.gif +0 -0
  132. data/doc/examples/website_styles/andreas00/src/images/front.jpg +0 -0
  133. data/doc/examples/website_styles/andreas00/src/images/menubg.gif +0 -0
  134. data/doc/examples/website_styles/andreas00/src/images/menubg2.gif +0 -0
  135. data/doc/examples/website_styles/andreas00/src/index.page +9 -0
  136. data/doc/examples/website_styles/andreas00/src/screenshots.page +18 -0
  137. data/doc/examples/website_styles/andreas01/README +9 -0
  138. data/doc/examples/website_styles/andreas01/config.yaml +2 -0
  139. data/doc/examples/website_styles/andreas01/src/about.page +12 -0
  140. data/doc/examples/website_styles/andreas01/src/default.css +310 -0
  141. data/doc/examples/website_styles/andreas01/src/default.template +63 -0
  142. data/doc/examples/website_styles/andreas01/src/download.page +15 -0
  143. data/doc/examples/website_styles/andreas01/src/features.page +8 -0
  144. data/doc/examples/website_styles/andreas01/src/images/bg.gif +0 -0
  145. data/doc/examples/website_styles/andreas01/src/images/front.jpg +0 -0
  146. data/doc/examples/website_styles/andreas01/src/index.page +9 -0
  147. data/doc/examples/website_styles/andreas01/src/print.css +35 -0
  148. data/doc/examples/website_styles/andreas01/src/screenshots.page +18 -0
  149. data/doc/examples/website_styles/andreas03/README +9 -0
  150. data/doc/examples/website_styles/andreas03/config.yaml +2 -0
  151. data/doc/examples/website_styles/andreas03/src/about.page +12 -0
  152. data/doc/examples/website_styles/andreas03/src/default.css +223 -0
  153. data/doc/examples/website_styles/andreas03/src/default.template +60 -0
  154. data/doc/examples/website_styles/andreas03/src/download.page +15 -0
  155. data/doc/examples/website_styles/andreas03/src/features.page +8 -0
  156. data/doc/examples/website_styles/andreas03/src/images/bodybg.png +0 -0
  157. data/doc/examples/website_styles/andreas03/src/images/contbg.png +0 -0
  158. data/doc/examples/website_styles/andreas03/src/images/footerbg.png +0 -0
  159. data/doc/examples/website_styles/andreas03/src/images/gradient1.png +0 -0
  160. data/doc/examples/website_styles/andreas03/src/images/gradient2.png +0 -0
  161. data/doc/examples/website_styles/andreas03/src/index.page +9 -0
  162. data/doc/examples/website_styles/andreas03/src/screenshots.page +18 -0
  163. data/doc/examples/website_styles/andreas04/README +9 -0
  164. data/doc/examples/website_styles/andreas04/config.yaml +2 -0
  165. data/doc/examples/website_styles/andreas04/src/about.page +12 -0
  166. data/doc/examples/website_styles/andreas04/src/default.css +290 -0
  167. data/doc/examples/website_styles/andreas04/src/default.template +83 -0
  168. data/doc/examples/website_styles/andreas04/src/download.page +15 -0
  169. data/doc/examples/website_styles/andreas04/src/features.page +8 -0
  170. data/doc/examples/website_styles/andreas04/src/images/blinkarrow.gif +0 -0
  171. data/doc/examples/website_styles/andreas04/src/images/bodybg.png +0 -0
  172. data/doc/examples/website_styles/andreas04/src/images/contentbg.png +0 -0
  173. data/doc/examples/website_styles/andreas04/src/images/entrybg.png +0 -0
  174. data/doc/examples/website_styles/andreas04/src/images/flash.gif +0 -0
  175. data/doc/examples/website_styles/andreas04/src/images/flash2.gif +0 -0
  176. data/doc/examples/website_styles/andreas04/src/images/globe.gif +0 -0
  177. data/doc/examples/website_styles/andreas04/src/images/globebottom.gif +0 -0
  178. data/doc/examples/website_styles/andreas04/src/images/linkarrow.gif +0 -0
  179. data/doc/examples/website_styles/andreas04/src/images/menuhover.png +0 -0
  180. data/doc/examples/website_styles/andreas04/src/index.page +9 -0
  181. data/doc/examples/website_styles/andreas04/src/screenshots.page +18 -0
  182. data/doc/examples/website_styles/andreas05/README +9 -0
  183. data/doc/examples/website_styles/andreas05/config.yaml +2 -0
  184. data/doc/examples/website_styles/andreas05/src/about.page +12 -0
  185. data/doc/examples/website_styles/andreas05/src/default.css +33 -0
  186. data/doc/examples/website_styles/andreas05/src/default.template +42 -0
  187. data/doc/examples/website_styles/andreas05/src/download.page +15 -0
  188. data/doc/examples/website_styles/andreas05/src/features.page +8 -0
  189. data/doc/examples/website_styles/andreas05/src/images/bodybg.gif +0 -0
  190. data/doc/examples/website_styles/andreas05/src/images/front.png +0 -0
  191. data/doc/examples/website_styles/andreas05/src/index.page +9 -0
  192. data/doc/examples/website_styles/andreas05/src/screenshots.page +18 -0
  193. data/doc/examples/website_styles/andreas06/README +9 -0
  194. data/doc/examples/website_styles/andreas06/config.yaml +2 -0
  195. data/doc/examples/website_styles/andreas06/src/about.page +12 -0
  196. data/doc/examples/website_styles/andreas06/src/default.css +353 -0
  197. data/doc/examples/website_styles/andreas06/src/default.template +72 -0
  198. data/doc/examples/website_styles/andreas06/src/download.page +15 -0
  199. data/doc/examples/website_styles/andreas06/src/features.page +8 -0
  200. data/doc/examples/website_styles/andreas06/src/images/bodybg.gif +0 -0
  201. data/doc/examples/website_styles/andreas06/src/images/boxbg.gif +0 -0
  202. data/doc/examples/website_styles/andreas06/src/images/greypx.gif +0 -0
  203. data/doc/examples/website_styles/andreas06/src/images/header.jpg +0 -0
  204. data/doc/examples/website_styles/andreas06/src/images/innerbg.gif +0 -0
  205. data/doc/examples/website_styles/andreas06/src/images/leaves.jpg +0 -0
  206. data/doc/examples/website_styles/andreas06/src/images/tabs.gif +0 -0
  207. data/doc/examples/website_styles/andreas06/src/index.page +9 -0
  208. data/doc/examples/website_styles/andreas06/src/screenshots.page +18 -0
  209. data/doc/examples/website_styles/andreas07/README +9 -0
  210. data/doc/examples/website_styles/andreas07/config.yaml +2 -0
  211. data/doc/examples/website_styles/andreas07/src/about.page +12 -0
  212. data/doc/examples/website_styles/andreas07/src/browserfix.css +7 -0
  213. data/doc/examples/website_styles/andreas07/src/default.css +92 -0
  214. data/doc/examples/website_styles/andreas07/src/default.template +44 -0
  215. data/doc/examples/website_styles/andreas07/src/download.page +15 -0
  216. data/doc/examples/website_styles/andreas07/src/features.page +8 -0
  217. data/doc/examples/website_styles/andreas07/src/images/bodybg.gif +0 -0
  218. data/doc/examples/website_styles/andreas07/src/images/sidebarbg.gif +0 -0
  219. data/doc/examples/website_styles/andreas07/src/index.page +9 -0
  220. data/doc/examples/website_styles/andreas07/src/screenshots.page +18 -0
  221. data/doc/examples/website_styles/andreas08/README +9 -0
  222. data/doc/examples/website_styles/andreas08/config.yaml +2 -0
  223. data/doc/examples/website_styles/andreas08/src/about.page +12 -0
  224. data/doc/examples/website_styles/andreas08/src/default.css +224 -0
  225. data/doc/examples/website_styles/andreas08/src/default.template +53 -0
  226. data/doc/examples/website_styles/andreas08/src/download.page +15 -0
  227. data/doc/examples/website_styles/andreas08/src/features.page +8 -0
  228. data/doc/examples/website_styles/andreas08/src/index.page +9 -0
  229. data/doc/examples/website_styles/andreas08/src/screenshots.page +18 -0
  230. data/doc/examples/website_styles/andreas09/README +9 -0
  231. data/doc/examples/website_styles/andreas09/config.yaml +2 -0
  232. data/doc/examples/website_styles/andreas09/src/about.page +12 -0
  233. data/doc/examples/website_styles/andreas09/src/default.css +308 -0
  234. data/doc/examples/website_styles/andreas09/src/default.template +70 -0
  235. data/doc/examples/website_styles/andreas09/src/download.page +15 -0
  236. data/doc/examples/website_styles/andreas09/src/features.page +8 -0
  237. data/doc/examples/website_styles/andreas09/src/images/bodybg-black.jpg +0 -0
  238. data/doc/examples/website_styles/andreas09/src/images/bodybg-green.jpg +0 -0
  239. data/doc/examples/website_styles/andreas09/src/images/bodybg-orange.jpg +0 -0
  240. data/doc/examples/website_styles/andreas09/src/images/bodybg-purple.jpg +0 -0
  241. data/doc/examples/website_styles/andreas09/src/images/bodybg-red.jpg +0 -0
  242. data/doc/examples/website_styles/andreas09/src/images/bodybg.jpg +0 -0
  243. data/doc/examples/website_styles/andreas09/src/images/footerbg.jpg +0 -0
  244. data/doc/examples/website_styles/andreas09/src/images/menuhover-black.jpg +0 -0
  245. data/doc/examples/website_styles/andreas09/src/images/menuhover-green.jpg +0 -0
  246. data/doc/examples/website_styles/andreas09/src/images/menuhover-orange.jpg +0 -0
  247. data/doc/examples/website_styles/andreas09/src/images/menuhover-purple.jpg +0 -0
  248. data/doc/examples/website_styles/andreas09/src/images/menuhover-red.jpg +0 -0
  249. data/doc/examples/website_styles/andreas09/src/images/menuhover.jpg +0 -0
  250. data/doc/examples/website_styles/andreas09/src/index.page +9 -0
  251. data/doc/examples/website_styles/andreas09/src/screenshots.page +18 -0
  252. data/doc/examples/website_styles/default/README +9 -0
  253. data/doc/examples/website_styles/default/config.yaml +2 -0
  254. data/doc/examples/website_styles/default/src/about.page +12 -0
  255. data/doc/examples/website_styles/default/src/default.css +84 -0
  256. data/doc/examples/website_styles/default/src/default.template +38 -0
  257. data/doc/examples/website_styles/default/src/download.page +15 -0
  258. data/doc/examples/website_styles/default/src/features.page +8 -0
  259. data/doc/examples/website_styles/default/src/index.page +9 -0
  260. data/doc/examples/website_styles/default/src/screenshots.page +18 -0
  261. data/doc/examples/website_styles/plain/README +9 -0
  262. data/doc/examples/website_styles/plain/config.yaml +2 -0
  263. data/doc/examples/website_styles/plain/src/about.page +12 -0
  264. data/doc/examples/website_styles/plain/src/default.css +244 -0
  265. data/doc/examples/website_styles/plain/src/default.template +63 -0
  266. data/doc/examples/website_styles/plain/src/download.page +15 -0
  267. data/doc/examples/website_styles/plain/src/features.page +8 -0
  268. data/doc/examples/website_styles/plain/src/images/a_hover.jpg +0 -0
  269. data/doc/examples/website_styles/plain/src/images/desc.jpg +0 -0
  270. data/doc/examples/website_styles/plain/src/images/li.gif +0 -0
  271. data/doc/examples/website_styles/plain/src/images/mainbar.jpg +0 -0
  272. data/doc/examples/website_styles/plain/src/images/menu.jpg +0 -0
  273. data/doc/examples/website_styles/plain/src/images/submenua.gif +0 -0
  274. data/doc/examples/website_styles/plain/src/images/submenua_hover.jpg +0 -0
  275. data/doc/examples/website_styles/plain/src/index.page +9 -0
  276. data/doc/examples/website_styles/plain/src/screenshots.page +18 -0
  277. data/doc/examples/website_templates/default/README +8 -0
  278. data/doc/examples/website_templates/default/config.yaml +2 -0
  279. data/doc/examples/website_templates/default/src/default.css +84 -0
  280. data/doc/examples/website_templates/default/src/default.template +38 -0
  281. data/doc/examples/website_templates/default/src/index.page +8 -0
  282. data/doc/examples/website_templates/personal_hp/README +8 -0
  283. data/doc/examples/website_templates/personal_hp/config.yaml +2 -0
  284. data/doc/examples/website_templates/personal_hp/src/about.page +12 -0
  285. data/doc/examples/website_templates/personal_hp/src/default.css +84 -0
  286. data/doc/examples/website_templates/personal_hp/src/default.template +38 -0
  287. data/doc/examples/website_templates/personal_hp/src/index.page +9 -0
  288. data/doc/examples/website_templates/personal_hp/src/links.page +22 -0
  289. data/doc/examples/website_templates/personal_hp/src/projects.page +20 -0
  290. data/doc/examples/website_templates/project/README +9 -0
  291. data/doc/examples/website_templates/project/config.yaml +2 -0
  292. data/doc/examples/website_templates/project/src/about.page +12 -0
  293. data/doc/examples/website_templates/project/src/default.css +84 -0
  294. data/doc/examples/website_templates/project/src/default.template +38 -0
  295. data/doc/examples/website_templates/project/src/download.page +15 -0
  296. data/doc/examples/website_templates/project/src/features.page +8 -0
  297. data/doc/examples/website_templates/project/src/index.page +9 -0
  298. data/doc/examples/website_templates/project/src/screenshots.page +18 -0
  299. data/doc/metainfo.yaml +85 -0
  300. data/doc/plugin/emoticon.rb +19 -21
  301. data/doc/plugin/extension.rb +134 -55
  302. data/doc/plugin/gallery/slides/collage.rb +334 -0
  303. data/doc/plugin/listpluginparameters.rb +24 -26
  304. data/doc/plugin/resources.rb +20 -22
  305. data/doc/src/default.css +333 -154
  306. data/doc/src/default.template +92 -39
  307. data/doc/src/documentation/extending_webgen.page +1 -2
  308. data/doc/src/documentation/gettingstarted.page +161 -44
  309. data/doc/src/documentation/index.page +15 -28
  310. data/doc/src/documentation/plugins/contentconverter/default.page +15 -0
  311. data/doc/src/documentation/plugins/contentconverter/html.page +10 -0
  312. data/doc/src/documentation/plugins/contentconverter/markdown.page +21 -0
  313. data/doc/src/documentation/plugins/contentconverter/rdoc.page +11 -0
  314. data/doc/src/documentation/plugins/contentconverter/textile.page +21 -0
  315. data/doc/src/documentation/plugins/contentconverter/xmlbuilder.page +61 -0
  316. data/doc/src/documentation/plugins/core/configuration.page +11 -0
  317. data/doc/src/documentation/plugins/core/filehandler.page +214 -0
  318. data/doc/src/documentation/plugins/core/index.page +11 -0
  319. data/doc/src/documentation/plugins/core/resourcemanager.page +46 -0
  320. data/doc/src/documentation/plugins/core/tagprocessor.page +17 -0
  321. data/doc/src/documentation/plugins/file/copyhandler.page +26 -0
  322. data/doc/src/documentation/plugins/file/defaulthandler.page +15 -0
  323. data/doc/src/documentation/plugins/file/directoryhandler.page +37 -0
  324. data/doc/src/documentation/plugins/file/galleryhandler.page +181 -0
  325. data/doc/src/documentation/plugins/file/pagehandler.page +154 -0
  326. data/doc/src/documentation/plugins/file/templatehandler.page +34 -0
  327. data/doc/src/documentation/plugins/file/thumbnailwriter.page +39 -0
  328. data/doc/src/documentation/plugins/htmlvalidator/default.page +12 -0
  329. data/doc/src/documentation/plugins/htmlvalidator/xmllint.page +12 -0
  330. data/doc/src/documentation/plugins/index.page +32 -11
  331. data/doc/src/documentation/plugins/menustyle/default.page +19 -0
  332. data/doc/src/documentation/plugins/menustyle/horizontal.page +32 -0
  333. data/doc/src/documentation/plugins/{menustyles → menustyle}/horizontaldropdown.page +25 -19
  334. data/doc/src/documentation/plugins/menustyle/section.page +34 -0
  335. data/doc/src/documentation/plugins/menustyle/vertical.page +48 -0
  336. data/doc/src/documentation/plugins/menustyle/verticaldropdown.page +29 -0
  337. data/doc/src/documentation/plugins/misc/index.page +9 -0
  338. data/doc/src/documentation/plugins/{miscplugins → misc}/smileyreplacer.page +15 -14
  339. data/doc/src/documentation/plugins/misc/syntaxhighlighter.page +26 -0
  340. data/doc/src/documentation/plugins/tag/block.page +29 -0
  341. data/doc/src/documentation/plugins/tag/breadcrumbtrail.page +29 -0
  342. data/doc/src/documentation/plugins/tag/date.page +34 -0
  343. data/doc/src/documentation/plugins/tag/default.page +27 -0
  344. data/doc/src/documentation/plugins/tag/download.page +60 -0
  345. data/doc/src/documentation/plugins/tag/executecommand.page +29 -0
  346. data/doc/src/documentation/plugins/tag/includefile.page +30 -0
  347. data/doc/src/documentation/plugins/{tags → tag}/langbar.de.page +1 -1
  348. data/doc/src/documentation/plugins/tag/langbar.fr.page +6 -0
  349. data/doc/src/documentation/plugins/tag/langbar.page +41 -0
  350. data/doc/src/documentation/plugins/tag/menu.page +78 -0
  351. data/doc/src/documentation/plugins/{tags → tag}/meta.page +8 -7
  352. data/doc/src/documentation/plugins/tag/relocatable.page +46 -0
  353. data/doc/src/documentation/plugins/tag/resource.page +35 -0
  354. data/doc/src/documentation/plugins/tag/sitemap.page +35 -0
  355. data/doc/src/documentation/plugins/tag/wikilink.page +33 -0
  356. data/doc/src/documentation/references/index.page +0 -1
  357. data/doc/src/documentation/references/meta_info_reference.page +90 -13
  358. data/doc/src/documentation/references/parameter_reference.page +0 -1
  359. data/doc/src/documentation/references/webpage_format.page +249 -0
  360. data/doc/src/download.page +50 -21
  361. data/doc/src/examples/gallery_styles/default/default.gallery +78 -0
  362. data/doc/src/examples/gallery_styles/default/gallery_gallery.template +38 -0
  363. data/doc/src/examples/gallery_styles/default/gallery_image.template +30 -0
  364. data/doc/src/examples/gallery_styles/default/gallery_main.template +18 -0
  365. data/doc/src/examples/gallery_styles/index.page +22 -0
  366. data/doc/src/examples/gallery_styles/slides/gallery_gallery.template +62 -0
  367. data/doc/src/examples/gallery_styles/slides/gallery_image.template +53 -0
  368. data/doc/src/examples/gallery_styles/slides/gallery_main.template +32 -0
  369. data/doc/src/examples/gallery_styles/slides/slides.gallery +79 -0
  370. data/doc/src/examples/images/image01.jpg +0 -0
  371. data/doc/src/examples/images/image02.jpg +0 -0
  372. data/doc/src/examples/images/image03.jpg +0 -0
  373. data/doc/src/examples/images/image04.jpg +0 -0
  374. data/doc/src/examples/images/image05.jpg +0 -0
  375. data/doc/src/examples/images/image06.jpg +0 -0
  376. data/doc/src/examples/images/image07.jpg +0 -0
  377. data/doc/src/examples/images/image08.jpg +0 -0
  378. data/doc/src/examples/images/image09.jpg +0 -0
  379. data/doc/src/examples/images/image10.jpg +0 -0
  380. data/doc/src/examples/images/image11.jpg +0 -0
  381. data/doc/src/examples/images/image12.jpg +0 -0
  382. data/doc/src/examples/images/image13.jpg +0 -0
  383. data/doc/src/examples/images/image14.jpg +0 -0
  384. data/doc/src/examples/images/image15.jpg +0 -0
  385. data/doc/src/examples/images/image16.jpg +0 -0
  386. data/doc/src/examples/images/image17.jpg +0 -0
  387. data/doc/src/examples/images/image18.jpg +0 -0
  388. data/doc/src/examples/index.page +18 -0
  389. data/doc/src/examples/website_styles/1024px.page +5 -0
  390. data/doc/src/examples/website_styles/andreas00.page +5 -0
  391. data/doc/src/examples/website_styles/andreas01.page +5 -0
  392. data/doc/src/examples/website_styles/andreas03.page +5 -0
  393. data/doc/src/examples/website_styles/andreas04.page +5 -0
  394. data/doc/src/examples/website_styles/andreas05.page +5 -0
  395. data/doc/src/examples/website_styles/andreas06.page +5 -0
  396. data/doc/src/examples/website_styles/andreas07.page +5 -0
  397. data/doc/src/examples/website_styles/andreas08.page +5 -0
  398. data/doc/src/examples/website_styles/andreas09.page +5 -0
  399. data/doc/src/examples/website_styles/default.page +5 -0
  400. data/doc/src/examples/website_styles/index.page +71 -0
  401. data/doc/src/examples/website_styles/plain.page +5 -0
  402. data/doc/src/examples/website_templates/default.page +5 -0
  403. data/doc/src/examples/website_templates/index.page +24 -0
  404. data/doc/src/examples/website_templates/personal_hp.page +5 -0
  405. data/doc/src/examples/website_templates/project.page +5 -0
  406. data/doc/src/features.page +16 -14
  407. data/doc/src/images/bodybg.jpg +0 -0
  408. data/doc/src/images/footerbg.jpg +0 -0
  409. data/doc/src/images/menuhover.jpg +0 -0
  410. data/doc/src/images/node_diagram.svg +7132 -0
  411. data/doc/src/images/thumb_example.jpg +0 -0
  412. data/doc/src/images/thumb_example_cropped.jpg +0 -0
  413. data/doc/src/images/thumb_example_normal.jpg +0 -0
  414. data/doc/src/index.page +14 -102
  415. data/doc/src/news.page +154 -0
  416. data/doc/src/plugin.template +10 -0
  417. data/lib/webgen/cli.rb +427 -0
  418. data/lib/webgen/composite.rb +11 -11
  419. data/lib/webgen/config.rb +52 -0
  420. data/lib/webgen/content.rb +172 -0
  421. data/lib/webgen/extcommand.rb +23 -0
  422. data/lib/webgen/languages.rb +110 -0
  423. data/lib/webgen/listener.rb +1 -1
  424. data/lib/webgen/node.rb +196 -124
  425. data/lib/webgen/plugin.rb +480 -144
  426. data/lib/webgen/plugins/{contenthandlers → contentconverters}/default.rb +10 -9
  427. data/lib/webgen/plugins/{contenthandlers → contentconverters}/html.rb +11 -8
  428. data/lib/webgen/plugins/contentconverters/markdown.rb +54 -0
  429. data/lib/webgen/plugins/{contenthandlers → contentconverters}/rdoc.rb +16 -12
  430. data/lib/webgen/plugins/{contenthandlers → contentconverters}/textile.rb +18 -13
  431. data/lib/webgen/plugins/contentconverters/xmlbuilder.rb +58 -0
  432. data/lib/webgen/plugins/coreplugins/configuration.rb +11 -102
  433. data/lib/webgen/plugins/coreplugins/resourcemanager.rb +95 -74
  434. data/lib/webgen/plugins/filehandlers/copy.rb +41 -19
  435. data/lib/webgen/plugins/filehandlers/directory.rb +52 -50
  436. data/lib/webgen/plugins/filehandlers/filehandler.rb +370 -123
  437. data/lib/webgen/plugins/filehandlers/gallery.rb +368 -117
  438. data/lib/webgen/plugins/filehandlers/page.rb +160 -146
  439. data/lib/webgen/plugins/filehandlers/template.rb +65 -52
  440. data/lib/webgen/plugins/htmlvalidators/default.rb +9 -7
  441. data/lib/webgen/plugins/htmlvalidators/xmllint.rb +17 -33
  442. data/lib/webgen/plugins/menustyles/default.rb +27 -25
  443. data/lib/webgen/plugins/menustyles/horizontal.rb +22 -41
  444. data/lib/webgen/plugins/menustyles/horizontal_dropdown.rb +25 -39
  445. data/lib/webgen/plugins/menustyles/section.rb +68 -0
  446. data/lib/webgen/plugins/menustyles/vertical.rb +36 -56
  447. data/lib/webgen/plugins/menustyles/vertical_dropdown.rb +24 -32
  448. data/lib/webgen/plugins/miscplugins/smileyreplacer.rb +20 -17
  449. data/lib/webgen/plugins/miscplugins/syntax_highlighter.rb +72 -0
  450. data/lib/webgen/plugins/miscplugins/treewalker.rb +9 -36
  451. data/lib/webgen/plugins/tags/block.rb +65 -0
  452. data/lib/webgen/plugins/tags/breadcrumbtrail.rb +15 -11
  453. data/lib/webgen/plugins/tags/date.rb +11 -7
  454. data/lib/webgen/plugins/tags/download.rb +38 -38
  455. data/lib/webgen/plugins/tags/executecommand.rb +30 -15
  456. data/lib/webgen/plugins/tags/includefile.rb +26 -13
  457. data/lib/webgen/plugins/tags/langbar.rb +23 -18
  458. data/lib/webgen/plugins/tags/menu.rb +49 -70
  459. data/lib/webgen/plugins/tags/meta.rb +12 -9
  460. data/lib/webgen/plugins/tags/relocatable.rb +41 -13
  461. data/lib/webgen/plugins/tags/sitemap.rb +32 -28
  462. data/lib/webgen/plugins/tags/tag_processor.rb +279 -0
  463. data/lib/webgen/plugins/tags/wikilink.rb +25 -20
  464. data/lib/webgen/test.rb +202 -0
  465. data/lib/webgen/website.rb +310 -0
  466. data/test/fixtures/sample_site/src/chained.template +3 -0
  467. data/test/fixtures/sample_site/src/default.template +3 -0
  468. data/test/fixtures/sample_site/src/dir1/dir11/file111.de.page +3 -0
  469. data/test/fixtures/sample_site/src/dir1/dir11/file111.page +3 -0
  470. data/test/fixtures/sample_site/src/dir1/dir11/index.page +3 -0
  471. data/test/fixtures/sample_site/src/dir1/file11.page +3 -0
  472. data/test/fixtures/sample_site/src/dir2/file21.page +3 -0
  473. data/test/fixtures/sample_site/src/embedded.rhtml +1 -0
  474. data/test/fixtures/sample_site/src/file1.page +8 -0
  475. data/test/fixtures/sample_site/src/file2.de.page +6 -0
  476. data/test/fixtures/sample_site/src/index.de.page +4 -0
  477. data/test/fixtures/sample_site/src/index.en.page +1 -0
  478. data/test/fixtures/sample_site/src/invalid.template +3 -0
  479. data/test/fixtures/sample_site/src/test.jpg +1 -0
  480. data/test/fixtures/sample_site/src/test.template +3 -0
  481. data/test/fixtures/tc_content/blocks.yaml +40 -0
  482. data/test/fixtures/tc_content/correct.yaml +65 -0
  483. data/test/fixtures/tc_content/incorrect.yaml +42 -0
  484. data/test/fixtures/tc_filehandler_filehandler/backing/metainfo.yaml +9 -0
  485. data/test/fixtures/tc_filehandler_filehandler/backing_empty/metainfo.yaml +6 -0
  486. data/test/fixtures/tc_filehandler_filehandler/sample_plugin.rb +49 -0
  487. data/test/fixtures/tc_filehandler_filehandler/unmodified +0 -0
  488. data/test/fixtures/tc_filehandler_gallery/test.gallery +2 -0
  489. data/test/fixtures/tc_filehandler_gallery/test1.gallery +2 -0
  490. data/test/fixtures/tc_filehandler_gallery/test1.jpg +0 -0
  491. data/test/fixtures/tc_filehandler_gallery/test2.jpg +0 -0
  492. data/test/fixtures/tc_filehandler_gallery/test3.jpg +0 -0
  493. data/test/fixtures/tc_filehandler_gallery/test4.jpg +0 -0
  494. data/test/fixtures/tc_filehandler_page/testdata.yaml +10 -0
  495. data/test/fixtures/tc_menustyles_default/menustyle.rb +7 -0
  496. data/test/fixtures/tc_node/nodes.yaml +64 -0
  497. data/test/fixtures/tc_plugin/handlerplugin.rb +15 -0
  498. data/test/fixtures/tc_plugin/plugin1.rb +33 -0
  499. data/test/fixtures/tc_plugin/plugin2.rb +8 -0
  500. data/test/fixtures/tc_tags_includefile/testfile +1 -0
  501. data/test/fixtures/tc_tags_tag_processor/test_file1 +1 -0
  502. data/test/fixtures/tc_tags_tag_processor/testtag.rb +17 -0
  503. data/test/fixtures/tc_website/correct.yaml +6 -0
  504. data/test/fixtures/tc_website/incorrect_structure.yaml +2 -0
  505. data/test/fixtures/tc_website/incorrect_yaml.yaml +5 -0
  506. data/test/fixtures/tc_website/meta_info_test.yaml +10 -0
  507. data/test/fixtures/tc_website/testdir/README +1 -0
  508. data/test/fixtures/tc_website/testdir/falsedir/README +1 -0
  509. data/test/runtests.rb +2 -0
  510. data/test/unittests/tc_composite.rb +82 -0
  511. data/test/unittests/tc_config.rb +18 -0
  512. data/test/unittests/tc_content.rb +88 -0
  513. data/test/unittests/tc_contentconverters_default.rb +13 -0
  514. data/test/unittests/tc_contentconverters_html.rb +16 -0
  515. data/test/unittests/tc_contentconverters_markdown.rb +22 -0
  516. data/test/unittests/tc_contentconverters_rdoc.rb +16 -0
  517. data/test/unittests/tc_contentconverters_textile.rb +22 -0
  518. data/test/unittests/tc_contentconverters_xmlbuilder.rb +22 -0
  519. data/test/unittests/tc_filehandler_copy.rb +65 -0
  520. data/test/unittests/tc_filehandler_directory.rb +134 -0
  521. data/test/unittests/tc_filehandler_filehandler.rb +294 -0
  522. data/test/unittests/tc_filehandler_gallery.rb +165 -0
  523. data/test/unittests/tc_filehandler_page.rb +183 -0
  524. data/test/unittests/tc_filehandler_template.rb +60 -0
  525. data/test/unittests/tc_htmlvalidators_default.rb +12 -0
  526. data/test/unittests/tc_htmlvalidators_xmllint.rb +19 -0
  527. data/test/unittests/tc_languages.rb +57 -0
  528. data/test/unittests/tc_listener.rb +72 -0
  529. data/test/unittests/tc_menustyles_default.rb +51 -0
  530. data/test/unittests/tc_menustyles_horizontal.rb +18 -0
  531. data/test/unittests/tc_menustyles_horizontal_dropdown.rb +18 -0
  532. data/test/unittests/tc_menustyles_section.rb +59 -0
  533. data/test/unittests/tc_menustyles_vertical.rb +79 -0
  534. data/test/unittests/tc_menustyles_vertical_dropdown.rb +18 -0
  535. data/test/unittests/tc_node.rb +202 -0
  536. data/test/unittests/tc_plugin.rb +214 -0
  537. data/test/unittests/tc_resourcemanager.rb +42 -0
  538. data/test/unittests/tc_smileyreplacer.rb +25 -0
  539. data/test/unittests/tc_syntax_highlighter.rb +30 -0
  540. data/test/unittests/tc_tags_block.rb +27 -0
  541. data/test/unittests/tc_tags_breadcrumbtrail.rb +22 -0
  542. data/test/unittests/tc_tags_date.rb +15 -0
  543. data/test/unittests/tc_tags_download.rb +32 -0
  544. data/test/unittests/tc_tags_executecommand.rb +37 -0
  545. data/test/unittests/tc_tags_includefile.rb +53 -0
  546. data/test/unittests/tc_tags_langbar.rb +42 -0
  547. data/test/unittests/tc_tags_menu.rb +50 -0
  548. data/test/unittests/tc_tags_meta.rb +19 -0
  549. data/test/unittests/tc_tags_relocatable.rb +66 -0
  550. data/test/unittests/tc_tags_sitemap.rb +33 -0
  551. data/test/unittests/tc_tags_tag_processor.rb +107 -0
  552. data/test/unittests/tc_tags_wikilink.rb +22 -0
  553. data/test/unittests/tc_treewalker.rb +44 -0
  554. data/test/unittests/tc_website.rb +188 -0
  555. metadata +829 -312
  556. data/bin/webgen-gallery-editor +0 -654
  557. data/bin/webgen-gui +0 -10
  558. data/data/webgen/website_templates/default/config.yaml +0 -2
  559. data/doc/plugin/clidesc.rb +0 -46
  560. data/doc/plugin/source.rb +0 -21
  561. data/doc/src/about.page +0 -22
  562. data/doc/src/documentation/cli.page +0 -12
  563. data/doc/src/documentation/plugins/contenthandlers/html.page +0 -11
  564. data/doc/src/documentation/plugins/contenthandlers/index.page +0 -7
  565. data/doc/src/documentation/plugins/contenthandlers/markdown.page +0 -11
  566. data/doc/src/documentation/plugins/contenthandlers/rdoc.page +0 -11
  567. data/doc/src/documentation/plugins/contenthandlers/textile.page +0 -11
  568. data/doc/src/documentation/plugins/coreplugins/configuration.page +0 -12
  569. data/doc/src/documentation/plugins/coreplugins/index.page +0 -7
  570. data/doc/src/documentation/plugins/coreplugins/logging.page +0 -13
  571. data/doc/src/documentation/plugins/coreplugins/resourcemanager.page +0 -34
  572. data/doc/src/documentation/plugins/filehandlers/backing.page +0 -46
  573. data/doc/src/documentation/plugins/filehandlers/copy.page +0 -12
  574. data/doc/src/documentation/plugins/filehandlers/directoryhandler.page +0 -35
  575. data/doc/src/documentation/plugins/filehandlers/gallery.page +0 -86
  576. data/doc/src/documentation/plugins/filehandlers/index.page +0 -34
  577. data/doc/src/documentation/plugins/filehandlers/page.page +0 -170
  578. data/doc/src/documentation/plugins/filehandlers/template.page +0 -21
  579. data/doc/src/documentation/plugins/gallerylayouters/index.page +0 -18
  580. data/doc/src/documentation/plugins/htmlvalidators/index.page +0 -6
  581. data/doc/src/documentation/plugins/htmlvalidators/xmllint.page +0 -14
  582. data/doc/src/documentation/plugins/menustyles/horizontal.page +0 -21
  583. data/doc/src/documentation/plugins/menustyles/index.page +0 -12
  584. data/doc/src/documentation/plugins/menustyles/partial.page +0 -27
  585. data/doc/src/documentation/plugins/menustyles/vertical.page +0 -32
  586. data/doc/src/documentation/plugins/menustyles/verticaldropdown.page +0 -23
  587. data/doc/src/documentation/plugins/miscplugins/index.page +0 -7
  588. data/doc/src/documentation/plugins/tags/breadcrumbtrail.page +0 -20
  589. data/doc/src/documentation/plugins/tags/date.page +0 -19
  590. data/doc/src/documentation/plugins/tags/download.page +0 -23
  591. data/doc/src/documentation/plugins/tags/executecommand.page +0 -18
  592. data/doc/src/documentation/plugins/tags/includefile.page +0 -15
  593. data/doc/src/documentation/plugins/tags/index.page +0 -44
  594. data/doc/src/documentation/plugins/tags/langbar.page +0 -27
  595. data/doc/src/documentation/plugins/tags/menu.de.page +0 -12
  596. data/doc/src/documentation/plugins/tags/menu.page +0 -19
  597. data/doc/src/documentation/plugins/tags/multilang.de.page +0 -4
  598. data/doc/src/documentation/plugins/tags/multilang.fr.page +0 -4
  599. data/doc/src/documentation/plugins/tags/multilang.page +0 -4
  600. data/doc/src/documentation/plugins/tags/relocatable.page +0 -16
  601. data/doc/src/documentation/plugins/tags/resource.page +0 -22
  602. data/doc/src/documentation/plugins/tags/sitemap.page +0 -17
  603. data/doc/src/documentation/plugins/tags/wikilink.page +0 -18
  604. data/doc/src/documentation/webgen_gallery_editor.page +0 -82
  605. data/doc/src/images/screenshots/wge-image.png +0 -0
  606. data/doc/src/images/screenshots/wge-layout-preview.png +0 -0
  607. data/doc/src/images/screenshots/wge-main-disabled.png +0 -0
  608. data/doc/src/images/screenshots/wge-main.png +0 -0
  609. data/doc/src/meta.info +0 -30
  610. data/doc/src/screenshots.gallery +0 -33
  611. data/install.rb +0 -19
  612. data/lib/webgen.rb +0 -277
  613. data/lib/webgen/plugins/contenthandlers/markdown.rb +0 -50
  614. data/lib/webgen/plugins/coreplugins/logging.rb +0 -101
  615. data/lib/webgen/plugins/filehandlers/backing.rb +0 -159
  616. data/lib/webgen/plugins/gallerylayouters/default.rb +0 -152
  617. data/lib/webgen/plugins/menustyles/partial.rb +0 -95
  618. data/lib/webgen/plugins/tags/tags.rb +0 -254
@@ -0,0 +1,134 @@
1
+ require 'fileutils'
2
+ require 'webgen/test'
3
+
4
+ class DirNodeTest < Webgen::PluginTestCase
5
+
6
+ plugin_files [
7
+ 'webgen/plugins/filehandlers/directory.rb'
8
+ ]
9
+
10
+ def test_accessors
11
+ dir = @wrapper::FileHandlers::DirectoryHandler::DirNode.new( nil, 'dir/', {'test'=>'test'} )
12
+ assert_equal( 'Dir', dir['title'] )
13
+ assert_equal( 'test', dir['test'] )
14
+ end
15
+
16
+ def test_order_info
17
+ dir = @wrapper::FileHandlers::DirectoryHandler::DirNode.new( nil, 'dir/' )
18
+ dir.node_info[:processor] = @manager['File/DirectoryHandler']
19
+
20
+ assert_equal( 0, dir.order_info )
21
+
22
+ index = Node.new( dir, 'index.page' )
23
+ dir.meta_info.delete( 'indexFile' )
24
+ assert_equal( 0, dir.order_info )
25
+
26
+ dir['indexFile'] = 'index.page'
27
+ index['orderInfo'] = 1
28
+ assert_equal( 0, dir.order_info )
29
+
30
+ dir['orderInfo'] = 2
31
+ assert_equal( 2, dir.order_info )
32
+ end
33
+
34
+ def test_index_file
35
+ dir = @wrapper::FileHandlers::DirectoryHandler::DirNode.new( nil, 'dir/' )
36
+ dir.node_info[:processor] = @manager['File/DirectoryHandler']
37
+
38
+ assert_nil( dir['indexFile'] )
39
+
40
+ index = Node.new( dir, 'index.page' )
41
+
42
+ dir['indexFile'] = index
43
+ assert_equal( index, dir['indexFile'] )
44
+
45
+ dir['indexFile'] = 'index.page'
46
+ assert_equal( index, dir['indexFile'] )
47
+
48
+ dir['indexFile'] = 'index1.page'
49
+ assert_equal( nil, dir['indexFile'] )
50
+ dir['indexFile'] = 'index1.page'
51
+ index.path = 'index1.page'
52
+ assert_equal( index, dir['indexFile'] )
53
+
54
+ index.path = 'index.page'
55
+ dir['indexFile'] = nil
56
+ assert_equal( nil, dir['indexFile'] )
57
+ end
58
+
59
+ end
60
+
61
+ class DirectoryHandlerTest < Webgen::PluginTestCase
62
+
63
+ plugin_files [
64
+ 'webgen/plugins/filehandlers/directory.rb',
65
+ base_fixture_path( 'tc_filehandler_filehandler/sample_plugin.rb' )
66
+ ]
67
+ plugin_to_test 'File/DirectoryHandler'
68
+
69
+ def setup
70
+ super
71
+ @dirs = find_in_sample_site {|path| path =~ /\/$/ }.collect {|p| p.sub(/^#{sample_site( Webgen::SRC_DIR )}/, sample_site( 'out' ) )}
72
+ @root_dir = @dirs.min
73
+ @max_dir = @dirs.max
74
+ end
75
+
76
+ def test_create_node
77
+ root = @plugin.create_node( @root_dir, nil, {} )
78
+ assert_equal( @plugin, root.node_info[:processor] )
79
+ assert_equal( @root_dir, root.node_info[:src] )
80
+ dir = @plugin.create_node( @max_dir, root, {'test'=>'yes'} )
81
+ assert_equal( 'yes', dir['test'] )
82
+ dir1 = @plugin.create_node( @max_dir, root, {'test'=>'no'} )
83
+ assert_equal( 'yes', dir1['test'] )
84
+ assert_same( dir, dir1 )
85
+ assert_equal( File.basename( @max_dir ).capitalize, dir['title'] )
86
+ end
87
+
88
+ def test_write_node
89
+ root = @plugin.create_node( @root_dir, nil, {} )
90
+ root.path = @root_dir
91
+ dir_node = @plugin.create_node( @max_dir, root, {} )
92
+ dir_node.write_node
93
+ assert( File.directory?( dir_node.full_path ) )
94
+ ensure
95
+ FileUtils.rm_r( @root_dir, :force => true )
96
+ end
97
+
98
+ def test_recursive_create_path
99
+ root = @plugin.create_node( @root_dir, nil, {} )
100
+ root.path = @root_dir
101
+ root.node_info[:src] = @root_dir
102
+ dir_node = @plugin.recursive_create_path( @max_dir.sub( /^#{@root_dir}/, '' ), root )
103
+ dir_node.write_node
104
+ assert( File.directory?( @max_dir ) )
105
+ ensure
106
+ FileUtils.rm_r( @root_dir, :force => true )
107
+ end
108
+
109
+ def test_node_for_lang
110
+ # directory with index file
111
+ root = @manager['Core/FileHandler'].instance_eval { build_tree }
112
+ assert_equal( root.resolve_node( 'index.en.html' ), root.node_for_lang( Webgen::LanguageManager.language_for_code( 'en' ) ) )
113
+ assert_equal( root.resolve_node( 'index.de.html' ), root.node_for_lang( Webgen::LanguageManager.language_for_code( 'de' ) ) )
114
+
115
+ # directory without index file
116
+ dir1 = root.resolve_node( 'dir1' )
117
+ assert_equal( dir1, dir1.node_for_lang( Webgen::LanguageManager.language_for_code( 'de' ) ) )
118
+ end
119
+
120
+ def test_link_from
121
+ root = @manager['Core/FileHandler'].instance_eval { build_tree }
122
+
123
+ file11 = root.resolve_node( 'dir1/file11.html' )
124
+ assert_equal( '<a href="../index.en.html"></a>', root.link_from( file11 ) )
125
+ assert_equal( '<span>TestLink</span>',
126
+ root.link_from( root.resolve_node( 'index.de.html' ), {:link_text => 'TestLink' } ) )
127
+
128
+ dir1 = root.resolve_node( 'dir1' )
129
+ assert_equal( '<a href="./">Dir1</a>', dir1.link_from( file11 ) )
130
+ assert_equal( '<a href="dir1/">TestLink</a>', dir1.link_from( root, {:link_text => 'TestLink' } ) )
131
+ end
132
+
133
+ end
134
+
@@ -0,0 +1,294 @@
1
+ require 'find'
2
+ require 'fileutils'
3
+ require 'webgen/test'
4
+ require 'webgen/node'
5
+ require 'webgen/config'
6
+
7
+ class FileHandlerTest < Webgen::PluginTestCase
8
+
9
+ #TODO think about runtime depdencies (e.g. Configuration for Core/FileHandler)
10
+ # ie. ones which are not required for initializing, but for running
11
+ plugin_files [
12
+ 'webgen/plugins/filehandlers/filehandler.rb',
13
+ 'webgen/plugins/filehandlers/directory.rb',
14
+ fixture_path( 'sample_plugin.rb' ),
15
+ ]
16
+ plugin_to_test 'Core/FileHandler'
17
+
18
+ def setup
19
+ @websiteDir = nil
20
+ super
21
+ end
22
+
23
+ def param_for_plugin( plugin_name, param )
24
+ if [plugin_name, param] == ['Core/Configuration', 'websiteDir'] && @websiteDir
25
+ @websiteDir
26
+ else
27
+ super
28
+ end
29
+ end
30
+
31
+ def test_file_modified
32
+ modified = fixture_path( 'modified' )
33
+ unmodified = fixture_path( 'unmodified' )
34
+
35
+ assert( @plugin.file_modified?( unmodified, modified ) )
36
+ assert( !@plugin.file_modified?( unmodified, unmodified ) )
37
+ FileUtils.touch( modified )
38
+ assert( !@plugin.file_modified?( unmodified, modified ) )
39
+ assert( @plugin.file_modified?( modified, unmodified ) )
40
+ ensure
41
+ FileUtils.rm( modified, :force => true )
42
+ end
43
+
44
+ def test_find_all_files
45
+ found_files = @plugin.instance_eval {find_all_files}
46
+ files = find_in_sample_site {|p| p != sample_site( Webgen::SRC_DIR ) + '/' }
47
+ assert_equal( files, found_files )
48
+ end
49
+
50
+ def test_find_files_for_handlers
51
+ files_for_handlers = @plugin.instance_eval {find_files_for_handlers}
52
+ files = find_in_sample_site {|path| path =~ /\.page$/}
53
+
54
+ assert_equal( 2, files_for_handlers.length )
55
+ files_for_sample_handler = files_for_handlers.select {|r,p,f| p == @manager['SampleHandler']}
56
+ assert_not_nil( files_for_sample_handler )
57
+ assert_equal( files, files_for_sample_handler.first[2] )
58
+ end
59
+
60
+ def test_create_root_node
61
+ srcDir = @manager.param_for_plugin( 'Core/Configuration', 'srcDir' ) + '/'
62
+ outDir = @manager.param_for_plugin( 'Core/Configuration', 'outDir' ) + '/'
63
+
64
+ dir_handler = @manager.plugins.delete( 'File/DirectoryHandler' )
65
+ root = @plugin.instance_eval {create_root_node}
66
+ assert_nil( root )
67
+
68
+ @manager.plugins['File/DirectoryHandler'] = dir_handler
69
+ root = @plugin.instance_eval {create_root_node}
70
+ assert_kind_of( Node, root )
71
+ assert_equal( '', root['title'] )
72
+ assert_equal( outDir, root.path )
73
+ assert_equal( root.path, root.full_path )
74
+ assert_equal( srcDir, root.node_info[:src] )
75
+ end
76
+
77
+ def test_create_node_dir
78
+ dirs = find_in_sample_site {|path| File.directory?(path)}
79
+
80
+ root_node = @plugin.instance_eval {create_root_node}
81
+ dir_handler = @manager['File/DirectoryHandler']
82
+
83
+ max_dir = dirs.max
84
+
85
+ dir = @plugin.create_node( max_dir.sub( /^#{root_node.node_info[:src]}/, ''), root_node, dir_handler )
86
+ assert_not_nil( dir )
87
+ assert_equal( File.join( File.basename( max_dir ), '/' ), dir.path )
88
+ assert_equal( max_dir.sub(/^#{root_node.node_info[:src]}/, root_node.path), dir.full_path )
89
+ assert( dir.is_directory? )
90
+
91
+ n = root_node
92
+ while n.has_children?
93
+ assert( n.is_directory? )
94
+ assert_equal( 1, n.children.length, "node: #{n.children.collect{|c| c.path}.inspect}" )
95
+ n = n.children[0]
96
+ end
97
+
98
+ dir1 = @plugin.create_node( max_dir.sub( /^#{root_node.node_info[:src]}/, ''), root_node, dir_handler )
99
+ assert_same( dir, dir1 )
100
+ end
101
+
102
+ def test_create_node_file
103
+ pages = find_in_sample_site {|path| path =~ /\.page$/}
104
+
105
+ root_node = @plugin.instance_eval {create_root_node}
106
+ dir_handler = @manager['File/DirectoryHandler']
107
+ page_handler = @manager['SampleHandler']
108
+
109
+ max_page = pages.max
110
+ page = @plugin.create_node( max_page.sub( /^#{root_node.node_info[:src]}/, ''), root_node, page_handler )
111
+ assert_not_nil( page )
112
+ max_page_outpath = File.join( File.dirname( max_page.sub(/^#{root_node.node_info[:src]}/, root_node.path) ),
113
+ page_handler.class.out_name( max_page ) )
114
+ assert_equal( max_page_outpath, page.full_path )
115
+ assert( page.is_file? )
116
+
117
+ page1 = @plugin.create_node( max_page.sub( /^#{root_node.node_info[:src]}/, ''), root_node, page_handler )
118
+ assert_same( page, page1 )
119
+ end
120
+
121
+ def test_build_tree
122
+ outDir = @manager.param_for_plugin( 'Core/Configuration', 'outDir' ) + '/'
123
+
124
+ tree = @plugin.instance_eval {build_tree}
125
+ assert_not_nil( tree )
126
+ assert_equal( outDir, tree.full_path )
127
+ assert_equal( 6, tree.children.size )
128
+ assert_not_nil( tree.resolve_node( 'dir1/dir11/file111.html' ) )
129
+
130
+ nr_paths_on_disc = find_in_sample_site {|p| true }.length
131
+
132
+ def calc_length( tree ); tree.children.inject( 1 ) {|memo,c| memo += calc_length( c ) }; end
133
+
134
+ assert( calc_length( tree ), nr_paths_on_disc )
135
+ end
136
+
137
+ def test_load_meta_info_backing_file
138
+ @websiteDir = fixture_path('backing')
139
+ assert( File.exists?( @websiteDir ) )
140
+ @plugin.instance_eval { load_meta_info_backing_file }
141
+ assert_equal({'key1'=>'value1'}, @plugin.instance_eval { @source_backing['/file1'] })
142
+ assert_equal({}, @plugin.instance_eval { @output_backing })
143
+ @websiteDir = fixture_path('backing_empty')
144
+ assert( File.exists?( @websiteDir ) )
145
+ @plugin.instance_eval { @source_backing = nil; @output_backing = nil; load_meta_info_backing_file }
146
+ assert_equal({}, @plugin.instance_eval { @source_backing })
147
+ ensure
148
+ @websiteDir = nil
149
+ end
150
+
151
+ def test_meta_info_for
152
+ @plugin.instance_eval { @source_backing = {'/file'=>{'key'=>'novalue'},'ile'=>{'key'=>'false value'}} }
153
+ assert_equal( {'key'=>'value'}, @plugin.meta_info_for( @manager['SampleHandler'] ) )
154
+ assert_equal( {'key'=>'novalue'}, @plugin.meta_info_for( @manager['SampleHandler'], '/file' ) )
155
+ assert_equal( {'key'=>'novalue'}, @plugin.meta_info_for( @manager['SampleHandler'], 'file' ) )
156
+
157
+ @plugin.instance_eval { @source_backing = {'/file'=>{'key'=>'novalue'}} }
158
+ assert_equal( {'key'=>'novalue'}, @plugin.meta_info_for( @manager['SampleHandler'], '/file' ) )
159
+ assert_equal( {'key'=>'value'}, @plugin.meta_info_for( @manager['SampleHandler'] ) )
160
+
161
+ @plugin.instance_eval { @source_backing = {'/dir'=>{'key'=>'novalue'}} }
162
+ assert_equal( {'key'=>'novalue'}, @plugin.meta_info_for( @manager['SampleHandler'], 'dir' ) )
163
+ assert_equal( {'key'=>'novalue'}, @plugin.meta_info_for( @manager['SampleHandler'], '/dir/' ) )
164
+ assert_equal( {'key'=>'novalue'}, @plugin.meta_info_for( @manager['SampleHandler'], '/dir' ) )
165
+ assert_equal( {'key'=>'novalue'}, @plugin.meta_info_for( @manager['SampleHandler'], 'dir/' ) )
166
+ end
167
+
168
+ def test_handle_output_backing
169
+ root = @plugin.instance_eval { create_root_node }
170
+ node = Node.new( Node.new( root, 'dir/' ), 'test1.html' )
171
+ node['test'] = 'yes'
172
+ @plugin.instance_eval { @output_backing = {
173
+ 'api.html'=>{'url'=>'rdoc/index.html'},
174
+ '/doc/test.html'=>{'url'=>'http://www.webgen.com'},
175
+ 'dir/test1.html'=>{'test'=>'no'}
176
+ }}
177
+ @plugin.instance_eval { handle_output_backing( root ) }
178
+
179
+ # test virtual node creation
180
+ assert_not_nil( root.resolve_node( 'rdoc/index.html' ) )
181
+ assert_not_nil( root.resolve_node( 'api.html' ) )
182
+ backed1 = root.resolve_node( 'api.html' )
183
+ assert_equal( 'api.html', backed1.node_info[:reference] )
184
+ assert_equal( @manager['File/VirtualFileHandler'], backed1.node_info[:processor] )
185
+
186
+ backed2 = root.resolve_node( 'doc/test.html' )
187
+ assert_not_nil( backed2 )
188
+
189
+ assert_equal( '<a href="../rdoc/index.html">rdoc/index.html</a>', backed1.link_from( node ) )
190
+ assert_equal( '<a href="http://www.webgen.com">http://www.webgen.com</a>', backed2.link_from( node ) )
191
+
192
+ # test setting of meta infos for existing nodes
193
+ assert_equal( 1, root.resolve_node( 'dir/' ).children.length )
194
+ assert_equal( 'no', node['test'] )
195
+ end
196
+
197
+ end
198
+
199
+ class DefaultHandlerTest < Webgen::PluginTestCase
200
+
201
+ plugin_files ['webgen/plugins/filehandlers/filehandler.rb']
202
+ plugin_to_test 'File/DefaultHandler'
203
+
204
+ def setup
205
+ super
206
+ @defHandlerClass = @manager.plugin_class_for_name( 'File/DefaultHandler' )
207
+ @plugin1 = @defHandlerClass.new( @manager )
208
+ end
209
+
210
+ def param_for_plugin( plugin_name, param )
211
+ if [plugin_name, param] == ['File/DefaultHandler', 'linkToCurrentPage'] && @link_to_current
212
+ @link_to_current
213
+ else
214
+ super
215
+ end
216
+ end
217
+
218
+ def test_initialization
219
+ assert_nil( @plugin )
220
+ end
221
+
222
+ def test_accessors
223
+ @defHandlerClass.class_eval do
224
+ register_path_pattern 'first'
225
+ register_path_pattern 'second', 10
226
+ register_extension 'fff'
227
+ register_extension 'ggg', 20
228
+
229
+ public :register_extension
230
+ public :register_path_pattern
231
+ end
232
+ @plugin1.register_path_pattern 'third'
233
+ @plugin1.register_path_pattern 'fourth', 30
234
+ @plugin1.register_extension 'hhh'
235
+ @plugin1.register_extension 'iii', 40
236
+
237
+ patterns = @plugin1.path_patterns.sort
238
+ [
239
+ [10, 'second'],
240
+ [20, @defHandlerClass::EXTENSION_PATH_PATTERN % ['ggg']],
241
+ [30, 'fourth'],
242
+ [40, @defHandlerClass::EXTENSION_PATH_PATTERN % ['iii']],
243
+ [@defHandlerClass::DEFAULT_RANK, 'first'],
244
+ [@defHandlerClass::DEFAULT_RANK, 'third'],
245
+ [@defHandlerClass::DEFAULT_RANK, @defHandlerClass::EXTENSION_PATH_PATTERN % ['fff']],
246
+ [@defHandlerClass::DEFAULT_RANK, @defHandlerClass::EXTENSION_PATH_PATTERN % ['hhh']]
247
+ ].each_with_index do |p, index|
248
+ if p[0] == @defHandlerClass::DEFAULT_RANK
249
+ assert( patterns.include?( p ), "#{p} missing" )
250
+ else
251
+ assert_equal( p, patterns[index] )
252
+ end
253
+ end
254
+ end
255
+
256
+ def test_methods_for_subclasses
257
+ assert_raise( NotImplementedError ) { @plugin1.create_node( nil, nil, nil ) }
258
+ assert_raise( NotImplementedError ) { @plugin1.write_node( nil ) }
259
+ end
260
+
261
+ def test_node_for_lang
262
+ node = Node.new( nil, 'path' )
263
+ de = Webgen::LanguageManager.language_for_code( 'de' )
264
+ en = Webgen::LanguageManager.language_for_code( 'en' )
265
+ assert_equal( node, @plugin1.node_for_lang( node, de ) )
266
+ assert_equal( node, @plugin1.node_for_lang( node, en ) )
267
+ end
268
+
269
+ def test_link_from
270
+ refNode = Node.new( nil, 'path' )
271
+ node = Node.new( refNode, '#frag' )
272
+ node['title'] = 'title'
273
+
274
+ assert_equal( '<a href="#frag">title</a>', @plugin1.link_from( node, refNode ) )
275
+ assert_equal( '<a href="#frag">link_text</a>',
276
+ @plugin1.link_from( node, refNode, :link_text => 'link_text' ) )
277
+ assert_equal( '<a attr1="val1" href="#frag">link_text</a>',
278
+ @plugin1.link_from( node, refNode, :link_text => 'link_text', 'attr1' => 'val1' ) )
279
+ assert_equal( '<a href="#frag">link_text</a>',
280
+ @plugin1.link_from( node, refNode, :link_text => 'link_text', :attr1 => 'val1' ) )
281
+
282
+ node['linkAttrs'] = {:link_text => 'Default Text', 'class'=>'help'}
283
+ assert_equal( '<a attr1="val1" class="help" href="#frag">link_text</a>',
284
+ @plugin1.link_from( node, refNode, :link_text => 'link_text', 'attr1' => 'val1' ) )
285
+
286
+ # Test param setting
287
+ node['linkAttrs'] = nil
288
+ @link_to_current = true
289
+ assert_equal( '<a href="#frag">title</a>', @plugin1.link_from( node, node ) )
290
+ @link_to_current = false
291
+ assert_equal( '<span>title</span>', @plugin1.link_from( node, node ) )
292
+ end
293
+
294
+ end
@@ -0,0 +1,165 @@
1
+ require 'webgen/test'
2
+
3
+ class GalleryInfoTest < Webgen::PluginTestCase
4
+
5
+ plugin_files [
6
+ 'webgen/plugins/filehandlers/gallery.rb',
7
+ ]
8
+
9
+ def setup
10
+ super
11
+ @ginfoclass = @wrapper::FileHandlers::GalleryHandler::GalleryInfo
12
+ @iclass = @wrapper::FileHandlers::GalleryHandler::GalleryInfo::Image
13
+ @gclass = @wrapper::FileHandlers::GalleryHandler::GalleryInfo::Gallery
14
+ @galleries = []
15
+ @galleries << @gclass.new( 'gal1.html', {},
16
+ [@iclass.new( 'test1.html', {'thumbnail' => 'tn_test1.jpg'}, 'test1.jpg' ), @iclass.new( 'test2.html', {'thumbnailSize' => '100x50'}, 'test2.jpg' )] )
17
+ @galleries << @gclass.new( 'gal2.html', {},
18
+ [@iclass.new( 'test3.html', {}, 'test3.jpg' ), @iclass.new( 'test4.html', {}, 'test4.jpg' )] )
19
+ @galleries << @gclass.new( 'gal3.html', {},
20
+ [@iclass.new( 'test5.html', {}, 'test5.jpg' ), @iclass.new( 'test6.html', {}, 'test6.jpg' )] )
21
+ end
22
+
23
+ def create_ginfo( gindex = nil, iindex = nil )
24
+ @ginfoclass.new( {:galleries => @galleries}, gindex, iindex )
25
+ end
26
+
27
+ def test_cur_image
28
+ assert_equal( @galleries[0].images[0], create_ginfo( 0, 0 ).cur_image )
29
+ end
30
+
31
+ def test_cur_gallery
32
+ assert_equal( @galleries[0], create_ginfo( 0 ).cur_gallery )
33
+ end
34
+
35
+ def test_prev_image
36
+ assert_equal( nil, create_ginfo( 0, 0 ).prev_image )
37
+ assert_equal( @galleries[0].images[0], create_ginfo( 0, 1 ).prev_image )
38
+ assert_equal( @galleries[0].images[1], create_ginfo( 1, 0 ).prev_image )
39
+ end
40
+
41
+ def test_next_image
42
+ assert_equal( nil, create_ginfo( 2, 1 ).next_image )
43
+ assert_equal( @galleries[0].images[1], create_ginfo( 0, 0 ).next_image )
44
+ assert_equal( @galleries[1].images[0], create_ginfo( 0, 1 ).next_image )
45
+ end
46
+
47
+ def test_prev_gallery
48
+ assert_equal( nil, create_ginfo( 0 ).prev_gallery )
49
+ assert_equal( @galleries[0], create_ginfo( 1 ).prev_gallery )
50
+ end
51
+
52
+ def test_next_gallery
53
+ assert_equal( nil, create_ginfo( 2 ).next_gallery )
54
+ assert_equal( @galleries[1], create_ginfo( 0 ).next_gallery )
55
+ end
56
+
57
+ def test_image_accessors
58
+ ginfo = create_ginfo( 0, 0 )
59
+ assert_equal( '<img src="{relocatable: tn_test1.jpg}" alt="" />', ginfo.cur_image.thumbnail )
60
+ assert_equal( '<img src="{relocatable: test2.jpg}" width="100" height="50" alt="" />', ginfo.next_image.thumbnail )
61
+ end
62
+
63
+ def test_gallery_accessors
64
+ ginfo = create_ginfo( 0, 0 )
65
+ assert_equal( '<img src="{relocatable: tn_test1.jpg}" alt="" />', ginfo.cur_gallery.thumbnail )
66
+ assert_equal( '<img src="{relocatable: test3.jpg}" width="" height="" alt="" />', ginfo.next_gallery.thumbnail )
67
+ end
68
+
69
+ end
70
+
71
+ class GalleryFileHandlerTest < Webgen::PluginTestCase
72
+
73
+ plugin_files [
74
+ 'webgen/plugins/filehandlers/directory.rb',
75
+ 'webgen/plugins/filehandlers/gallery.rb'
76
+ ]
77
+ plugin_to_test 'File/GalleryHandler'
78
+
79
+ def test_param
80
+ assert_nothing_raised { @plugin.instance_eval { param('imagesPerPage') } }
81
+ end
82
+
83
+ def test_create_node
84
+ ginfoclass = @wrapper::FileHandlers::GalleryHandler::GalleryInfo
85
+
86
+ root = Node.new( nil, '/' )
87
+ root.node_info[:src] = fixture_path
88
+
89
+ # with a main page
90
+ assert_nil( @plugin.create_node( fixture_path( 'test.gallery' ), root, {} ) )
91
+ assert_not_nil( root.resolve_node( 'Test.page' ) )
92
+ assert_not_nil( root.resolve_node( 'Test_1.page' ) )
93
+ assert_not_nil( root.resolve_node( 'Test_2.page' ) )
94
+ assert_not_nil( root.resolve_node( 'Test_test1_jpg.page' ) )
95
+ assert_not_nil( root.resolve_node( 'Test_test2_jpg.page' ) )
96
+ assert_not_nil( root.resolve_node( 'Test_test3_jpg.page' ) )
97
+ assert_not_nil( root.resolve_node( 'Test_test4_jpg.page' ) )
98
+
99
+ node = root.resolve_node( 'Test_test3_jpg.page' )
100
+ assert_kind_of( ginfoclass, node.node_info[:ginfo] )
101
+ assert_equal( 'test3.jpg', node.node_info[:ginfo].cur_image.filename )
102
+ assert_equal( node.path, node.node_info[:ginfo].cur_image.pagename )
103
+ assert_equal( 'gallery_image.template', node['template'] )
104
+
105
+ node = root.resolve_node( 'Test_2.page' )
106
+ assert_kind_of( ginfoclass, node.node_info[:ginfo] )
107
+ assert_equal( node.path, node.node_info[:ginfo].cur_gallery.pagename )
108
+ assert_equal( 'gallery_gallery.template', node['template'] )
109
+
110
+ node = root.resolve_node( 'Test.page' )
111
+ assert_kind_of( ginfoclass, node.node_info[:ginfo] )
112
+ assert_equal( 'gallery_main.template', node['template'] )
113
+
114
+ # without a main page
115
+ root.del_children
116
+ @plugin.create_node( fixture_path( 'test1.gallery' ), root, {} )
117
+ assert_not_nil( root.resolve_node( 'Test1.page' ) )
118
+ assert_nil( root.resolve_node( 'Test1_1.page' ) )
119
+ assert_nil( root.resolve_node( 'Test1_2.page' ) )
120
+ assert_not_nil( root.resolve_node( 'Test1_test1_jpg.page' ) )
121
+ assert_not_nil( root.resolve_node( 'Test1_test2_jpg.page' ) )
122
+ assert_not_nil( root.resolve_node( 'Test1_test3_jpg.page' ) )
123
+ assert_not_nil( root.resolve_node( 'Test1_test4_jpg.page' ) )
124
+
125
+ node = root.resolve_node( 'Test1.page' )
126
+ assert_kind_of( ginfoclass, node.node_info[:ginfo] )
127
+ assert_equal( 'gallery_gallery.template', node['template'] )
128
+ end
129
+
130
+ end
131
+
132
+ begin
133
+
134
+ require 'RMagick'
135
+
136
+ class ThumbnailWriterTest < Webgen::PluginTestCase
137
+
138
+ plugin_files [
139
+ 'webgen/plugins/filehandlers/directory.rb',
140
+ 'webgen/plugins/filehandlers/gallery.rb'
141
+ ]
142
+ plugin_to_test 'File/ThumbnailWriter'
143
+
144
+ def test_create_node
145
+ node = @plugin.create_node( 'testfor anddo.jpg', nil, {}, '100x100' )
146
+ assert_equal( 'tn_testfor_anddo.jpg', node.path )
147
+ assert_equal( 'testfor anddo.jpg', node.node_info[:thumbnail_file] )
148
+ assert_equal( '100x100', node.node_info[:thumbnail_size] )
149
+ end
150
+
151
+ def test_gallery_thumbnail_creation
152
+ root = Node.new( nil, '/' )
153
+ root.node_info[:src] = fixture_path
154
+
155
+ @manager['File/GalleryHandler'].create_node( fixture_path( 'test.gallery' ), root, {} )
156
+ tn_node = root.resolve_node( 'tn_test1.jpg' )
157
+ assert_not_nil( tn_node )
158
+ assert_equal( fixture_path( 'test1.jpg' ), tn_node.node_info[:thumbnail_file] )
159
+ assert_equal( tn_node.absolute_path, root.resolve_node( 'Test_test1_jpg.page' ).node_info[:ginfo].cur_image.data['thumbnail'] )
160
+ end
161
+
162
+ end
163
+
164
+ rescue LoadError
165
+ end