webgen 0.5.17 → 1.0.0.beta1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (408) hide show
  1. data/API.rdoc +143 -0
  2. data/AUTHORS +0 -1
  3. data/COPYING +17 -8
  4. data/ChangeLog +4456 -0
  5. data/GPL +623 -289
  6. data/README.md +71 -0
  7. data/Rakefile +87 -99
  8. data/VERSION +1 -1
  9. data/bin/webgen +1 -7
  10. data/data/webgen/basic_website_template/ext/init.rb +15 -0
  11. data/data/webgen/basic_website_template/webgen.config +18 -0
  12. data/data/webgen/bundle_template_files/README.md.erb +24 -0
  13. data/data/webgen/bundle_template_files/Rakefile.erb +36 -0
  14. data/data/webgen/bundle_template_files/info.yaml.erb +16 -0
  15. data/data/webgen/bundle_template_files/init.rb.erb +1 -0
  16. data/data/webgen/passive_sources/default.metainfo +32 -0
  17. data/data/webgen/passive_sources/stylesheets/coderay-default.css +109 -118
  18. data/data/webgen/passive_sources/templates/feed.template +62 -0
  19. data/data/webgen/passive_sources/templates/sitemap.template +3 -6
  20. data/data/webgen/passive_sources/templates/tag.template +42 -0
  21. data/data/webgen/website_bundles/default/README +2 -2
  22. data/lib/webgen/blackboard.rb +15 -51
  23. data/lib/webgen/bundle/built-in-show-changes/init.rb +54 -0
  24. data/lib/webgen/bundle/built-in/init.rb +366 -0
  25. data/lib/webgen/bundle_loader.rb +126 -0
  26. data/lib/webgen/cache.rb +9 -18
  27. data/lib/webgen/cli.rb +131 -58
  28. data/lib/webgen/cli/bundle_command.rb +30 -0
  29. data/lib/webgen/cli/create_bundle_command.rb +46 -0
  30. data/lib/webgen/cli/create_command.rb +48 -60
  31. data/lib/webgen/cli/generate_command.rb +25 -0
  32. data/lib/webgen/cli/install_bundle_command.rb +34 -0
  33. data/lib/webgen/cli/list_bundle_command.rb +108 -0
  34. data/lib/webgen/cli/logger.rb +45 -0
  35. data/lib/webgen/cli/show_command.rb +30 -0
  36. data/lib/webgen/cli/show_config_command.rb +63 -0
  37. data/lib/webgen/cli/show_dependencies_command.rb +103 -0
  38. data/lib/webgen/cli/show_extensions_command.rb +74 -0
  39. data/lib/webgen/cli/utils.rb +68 -95
  40. data/lib/webgen/configuration.rb +143 -105
  41. data/lib/webgen/content_processor.rb +160 -0
  42. data/lib/webgen/content_processor/blocks.rb +96 -0
  43. data/lib/webgen/content_processor/builder.rb +25 -0
  44. data/lib/webgen/content_processor/erb.rb +25 -0
  45. data/lib/webgen/content_processor/erubis.rb +31 -0
  46. data/lib/webgen/content_processor/fragments.rb +82 -0
  47. data/lib/webgen/content_processor/haml.rb +25 -0
  48. data/lib/webgen/content_processor/html_head.rb +157 -0
  49. data/lib/webgen/content_processor/kramdown.rb +49 -0
  50. data/lib/webgen/content_processor/maruku.rb +39 -0
  51. data/lib/webgen/content_processor/r_discount.rb +21 -0
  52. data/lib/webgen/content_processor/rdoc.rb +22 -0
  53. data/lib/webgen/content_processor/redcloth.rb +23 -0
  54. data/lib/webgen/content_processor/ruby.rb +20 -0
  55. data/lib/webgen/content_processor/sass.rb +145 -0
  56. data/lib/webgen/content_processor/scss.rb +23 -0
  57. data/lib/webgen/content_processor/tags.rb +30 -0
  58. data/lib/webgen/content_processor/tidy.rb +32 -0
  59. data/lib/webgen/content_processor/tikz.rb +116 -0
  60. data/lib/webgen/content_processor/xmllint.rb +31 -0
  61. data/lib/webgen/context.rb +57 -29
  62. data/lib/webgen/context/html_head.rb +60 -0
  63. data/lib/webgen/context/nodes.rb +32 -27
  64. data/lib/webgen/context/rendering.rb +39 -0
  65. data/lib/webgen/context/webgen_tags.rb +25 -0
  66. data/lib/webgen/core_ext.rb +25 -0
  67. data/lib/webgen/destination.rb +151 -0
  68. data/lib/webgen/destination/file_system.rb +62 -0
  69. data/lib/webgen/error.rb +59 -49
  70. data/lib/webgen/extension_manager.rb +121 -0
  71. data/lib/webgen/item_tracker.rb +237 -0
  72. data/lib/webgen/item_tracker/file.rb +39 -0
  73. data/lib/webgen/item_tracker/missing_node.rb +61 -0
  74. data/lib/webgen/item_tracker/node_content.rb +40 -0
  75. data/lib/webgen/item_tracker/node_meta_info.rb +53 -0
  76. data/lib/webgen/item_tracker/nodes.rb +92 -0
  77. data/lib/webgen/logger.rb +26 -82
  78. data/lib/webgen/node.rb +122 -367
  79. data/lib/webgen/node_finder.rb +336 -0
  80. data/lib/webgen/page.rb +48 -85
  81. data/lib/webgen/path.rb +218 -156
  82. data/lib/webgen/path_handler.rb +400 -0
  83. data/lib/webgen/path_handler/base.rb +220 -0
  84. data/lib/webgen/path_handler/copy.rb +78 -0
  85. data/lib/webgen/path_handler/directory.rb +21 -0
  86. data/lib/webgen/path_handler/feed.rb +82 -0
  87. data/lib/webgen/path_handler/meta_info.rb +84 -0
  88. data/lib/webgen/path_handler/page.rb +38 -0
  89. data/lib/webgen/path_handler/page_utils.rb +79 -0
  90. data/lib/webgen/path_handler/sitemap.rb +52 -0
  91. data/lib/webgen/path_handler/template.rb +96 -0
  92. data/lib/webgen/path_handler/virtual.rb +85 -0
  93. data/lib/webgen/{webgentask.rb → rake_task.rb} +31 -27
  94. data/lib/webgen/source.rb +106 -24
  95. data/lib/webgen/source/file_system.rb +41 -0
  96. data/lib/webgen/source/stacked.rb +49 -53
  97. data/lib/webgen/source/tar_archive.rb +59 -0
  98. data/lib/webgen/tag.rb +250 -19
  99. data/lib/webgen/tag/breadcrumb_trail.rb +65 -0
  100. data/lib/webgen/tag/coderay.rb +32 -35
  101. data/lib/webgen/tag/date.rb +9 -9
  102. data/lib/webgen/tag/execute_command.rb +31 -0
  103. data/lib/webgen/tag/include_file.rb +32 -0
  104. data/lib/webgen/tag/langbar.rb +31 -47
  105. data/lib/webgen/tag/link.rb +17 -18
  106. data/lib/webgen/tag/menu.rb +27 -189
  107. data/lib/webgen/tag/meta_info.rb +31 -0
  108. data/lib/webgen/tag/relocatable.rb +48 -39
  109. data/lib/webgen/tag/tikz.rb +24 -100
  110. data/lib/webgen/task.rb +99 -0
  111. data/lib/webgen/task/create_bundle.rb +73 -0
  112. data/lib/webgen/task/create_website.rb +94 -0
  113. data/lib/webgen/task/generate_website.rb +47 -0
  114. data/lib/webgen/test_helper.rb +183 -0
  115. data/lib/webgen/tree.rb +95 -46
  116. data/lib/webgen/utils.rb +39 -0
  117. data/lib/webgen/utils/external_command.rb +27 -0
  118. data/lib/webgen/utils/tag_parser.rb +124 -0
  119. data/lib/webgen/version.rb +1 -1
  120. data/lib/webgen/website.rb +134 -296
  121. data/setup.rb +1 -1
  122. data/test/test_documentation.rb +43 -0
  123. data/test/webgen/cli/test_logger.rb +41 -0
  124. data/test/{test_contentprocessor_blocks.rb → webgen/content_processor/test_blocks.rb} +30 -28
  125. data/test/webgen/content_processor/test_builder.rb +25 -0
  126. data/test/webgen/content_processor/test_erb.rb +21 -0
  127. data/test/webgen/content_processor/test_erubis.rb +33 -0
  128. data/test/webgen/content_processor/test_fragments.rb +96 -0
  129. data/test/webgen/content_processor/test_haml.rb +24 -0
  130. data/test/webgen/content_processor/test_html_head.rb +78 -0
  131. data/test/webgen/content_processor/test_kramdown.rb +49 -0
  132. data/test/webgen/content_processor/test_maruku.rb +30 -0
  133. data/test/webgen/content_processor/test_r_discount.rb +18 -0
  134. data/test/webgen/content_processor/test_rdoc.rb +18 -0
  135. data/test/webgen/content_processor/test_redcloth.rb +23 -0
  136. data/test/webgen/content_processor/test_ruby.rb +24 -0
  137. data/test/webgen/content_processor/test_sass.rb +44 -0
  138. data/test/webgen/content_processor/test_scss.rb +23 -0
  139. data/test/webgen/content_processor/test_tags.rb +44 -0
  140. data/test/webgen/content_processor/test_tidy.rb +31 -0
  141. data/test/webgen/content_processor/test_tikz.rb +33 -0
  142. data/test/webgen/content_processor/test_xmllint.rb +32 -0
  143. data/test/webgen/destination/test_file_system.rb +54 -0
  144. data/test/webgen/item_tracker/test_file.rb +31 -0
  145. data/test/webgen/item_tracker/test_missing_node.rb +70 -0
  146. data/test/webgen/item_tracker/test_node_content.rb +42 -0
  147. data/test/webgen/item_tracker/test_node_meta_info.rb +44 -0
  148. data/test/webgen/item_tracker/test_nodes.rb +61 -0
  149. data/test/webgen/path_handler/test_base.rb +153 -0
  150. data/test/webgen/path_handler/test_copy.rb +56 -0
  151. data/test/webgen/path_handler/test_feed.rb +85 -0
  152. data/test/webgen/path_handler/test_meta_info.rb +98 -0
  153. data/test/webgen/path_handler/test_page.rb +25 -0
  154. data/test/webgen/path_handler/test_page_utils.rb +59 -0
  155. data/test/webgen/path_handler/test_sitemap.rb +95 -0
  156. data/test/webgen/path_handler/test_template.rb +64 -0
  157. data/test/webgen/path_handler/test_virtual.rb +87 -0
  158. data/test/webgen/source/test_file_system.rb +51 -0
  159. data/test/webgen/source/test_stacked.rb +35 -0
  160. data/test/{test_source_tararchive.rb → webgen/source/test_tar_archive.rb} +10 -25
  161. data/test/webgen/tag/test_breadcrumb_trail.rb +66 -0
  162. data/test/webgen/tag/test_coderay.rb +34 -0
  163. data/test/webgen/tag/test_date.rb +18 -0
  164. data/test/webgen/tag/test_execute_command.rb +36 -0
  165. data/test/webgen/tag/test_include_file.rb +35 -0
  166. data/test/webgen/tag/test_langbar.rb +50 -0
  167. data/test/webgen/tag/test_link.rb +40 -0
  168. data/test/webgen/tag/test_menu.rb +61 -0
  169. data/test/webgen/tag/test_meta_info.rb +25 -0
  170. data/test/webgen/tag/test_relocatable.rb +50 -0
  171. data/test/webgen/tag/test_tikz.rb +41 -0
  172. data/test/webgen/task/test_create_website.rb +46 -0
  173. data/test/webgen/test_blackboard.rb +31 -0
  174. data/test/webgen/test_bundle_loader.rb +55 -0
  175. data/test/{test_cache.rb → webgen/test_cache.rb} +3 -15
  176. data/test/webgen/test_cli.rb +41 -0
  177. data/test/webgen/test_configuration.rb +131 -0
  178. data/test/webgen/test_content_processor.rb +86 -0
  179. data/test/webgen/test_context.rb +73 -0
  180. data/test/webgen/test_core_ext.rb +20 -0
  181. data/test/webgen/test_destination.rb +48 -0
  182. data/test/webgen/test_error.rb +121 -0
  183. data/test/webgen/test_extension_manager.rb +70 -0
  184. data/test/webgen/test_item_tracker.rb +106 -0
  185. data/test/{test_languages.rb → webgen/test_languages.rb} +4 -4
  186. data/test/webgen/test_logger.rb +46 -0
  187. data/test/webgen/test_node.rb +178 -0
  188. data/test/webgen/test_node_finder.rb +127 -0
  189. data/test/{test_page.rb → webgen/test_page.rb} +44 -48
  190. data/test/webgen/test_path.rb +271 -0
  191. data/test/{test_webgentask.rb → webgen/test_rake_task.rb} +4 -4
  192. data/test/webgen/test_source.rb +59 -0
  193. data/test/webgen/test_tag.rb +137 -0
  194. data/test/webgen/test_task.rb +40 -0
  195. data/test/webgen/test_tree.rb +147 -0
  196. data/test/webgen/test_utils.rb +16 -0
  197. data/test/webgen/test_website.rb +45 -0
  198. data/test/webgen/utils/test_tag_parser.rb +99 -0
  199. metadata +292 -344
  200. data/data/webgen/passive_sources/templates/atom_feed.template +0 -39
  201. data/data/webgen/passive_sources/templates/rss_feed.template +0 -28
  202. data/data/webgen/resources.yaml +0 -4
  203. data/data/webgen/webgui/app.rb +0 -11
  204. data/data/webgen/webgui/controller/main.rb +0 -135
  205. data/data/webgen/webgui/layout/default.xhtml +0 -40
  206. data/data/webgen/webgui/overrides/win32console.rb +0 -0
  207. data/data/webgen/webgui/public/css/jquery.autocomplete.css +0 -50
  208. data/data/webgen/webgui/public/css/ramaze_error.css +0 -90
  209. data/data/webgen/webgui/public/css/style.css +0 -55
  210. data/data/webgen/webgui/public/img/headerbg.jpg +0 -0
  211. data/data/webgen/webgui/public/img/webgen_logo.png +0 -0
  212. data/data/webgen/webgui/public/js/jquery.autocomplete.js +0 -15
  213. data/data/webgen/webgui/public/js/jquery.js +0 -32
  214. data/data/webgen/webgui/start.rb +0 -9
  215. data/data/webgen/webgui/view/create_website.xhtml +0 -14
  216. data/data/webgen/webgui/view/error.xhtml +0 -64
  217. data/data/webgen/webgui/view/index.xhtml +0 -22
  218. data/data/webgen/webgui/view/manage_website.xhtml +0 -18
  219. data/data/webgen/website_skeleton/README +0 -10
  220. data/data/webgen/website_skeleton/Rakefile +0 -69
  221. data/data/webgen/website_skeleton/config.yaml +0 -35
  222. data/data/webgen/website_skeleton/ext/init.rb +0 -10
  223. data/doc/contentprocessor.template +0 -11
  224. data/doc/contentprocessor/blocks.page +0 -129
  225. data/doc/contentprocessor/builder.page +0 -79
  226. data/doc/contentprocessor/erb.page +0 -60
  227. data/doc/contentprocessor/erubis.page +0 -46
  228. data/doc/contentprocessor/fragments.page +0 -26
  229. data/doc/contentprocessor/haml.page +0 -46
  230. data/doc/contentprocessor/head.page +0 -31
  231. data/doc/contentprocessor/kramdown.page +0 -49
  232. data/doc/contentprocessor/less.page +0 -34
  233. data/doc/contentprocessor/maruku.page +0 -44
  234. data/doc/contentprocessor/rdiscount.page +0 -37
  235. data/doc/contentprocessor/rdoc.page +0 -36
  236. data/doc/contentprocessor/redcloth.page +0 -41
  237. data/doc/contentprocessor/sass.page +0 -31
  238. data/doc/contentprocessor/scss.page +0 -39
  239. data/doc/contentprocessor/tags.page +0 -73
  240. data/doc/contentprocessor/tidy.page +0 -14
  241. data/doc/contentprocessor/xmllint.page +0 -14
  242. data/doc/extensions.metainfo +0 -29
  243. data/doc/extensions.page +0 -15
  244. data/doc/extensions.template +0 -17
  245. data/doc/faq.page +0 -222
  246. data/doc/getting_started.page +0 -135
  247. data/doc/index.page +0 -71
  248. data/doc/manual.page +0 -727
  249. data/doc/reference_configuration.page +0 -1254
  250. data/doc/reference_metainfo.page +0 -265
  251. data/doc/reference_website_styles.page +0 -32
  252. data/doc/source/filesystem.page +0 -41
  253. data/doc/source/tararchive.page +0 -40
  254. data/doc/sourcehandler.template +0 -23
  255. data/doc/sourcehandler/copy.page +0 -19
  256. data/doc/sourcehandler/directory.page +0 -27
  257. data/doc/sourcehandler/feed.page +0 -102
  258. data/doc/sourcehandler/metainfo.page +0 -48
  259. data/doc/sourcehandler/page.page +0 -14
  260. data/doc/sourcehandler/sitemap.page +0 -46
  261. data/doc/sourcehandler/template.page +0 -45
  262. data/doc/sourcehandler/virtual.page +0 -49
  263. data/doc/tag.template +0 -25
  264. data/doc/tag/breadcrumbtrail.page +0 -40
  265. data/doc/tag/coderay.page +0 -53
  266. data/doc/tag/date.page +0 -31
  267. data/doc/tag/executecommand.page +0 -26
  268. data/doc/tag/includefile.page +0 -32
  269. data/doc/tag/langbar.page +0 -47
  270. data/doc/tag/link.page +0 -44
  271. data/doc/tag/menu.page +0 -109
  272. data/doc/tag/metainfo.page +0 -29
  273. data/doc/tag/relocatable.page +0 -38
  274. data/doc/tag/sitemap.page +0 -31
  275. data/doc/tag/tikz.page +0 -159
  276. data/doc/upgrading.page +0 -138
  277. data/doc/webgen_page_format.page +0 -129
  278. data/doc/website_styles.metainfo +0 -8
  279. data/lib/webgen/cli/apply_command.rb +0 -66
  280. data/lib/webgen/cli/run_command.rb +0 -22
  281. data/lib/webgen/cli/webgui_command.rb +0 -68
  282. data/lib/webgen/common.rb +0 -27
  283. data/lib/webgen/common/sitemap.rb +0 -83
  284. data/lib/webgen/contentprocessor.rb +0 -117
  285. data/lib/webgen/contentprocessor/blocks.rb +0 -92
  286. data/lib/webgen/contentprocessor/builder.rb +0 -29
  287. data/lib/webgen/contentprocessor/erb.rb +0 -26
  288. data/lib/webgen/contentprocessor/erubis.rb +0 -39
  289. data/lib/webgen/contentprocessor/fragments.rb +0 -25
  290. data/lib/webgen/contentprocessor/haml.rb +0 -34
  291. data/lib/webgen/contentprocessor/head.rb +0 -128
  292. data/lib/webgen/contentprocessor/kramdown.rb +0 -27
  293. data/lib/webgen/contentprocessor/kramdown/html.rb +0 -36
  294. data/lib/webgen/contentprocessor/less.rb +0 -35
  295. data/lib/webgen/contentprocessor/maruku.rb +0 -36
  296. data/lib/webgen/contentprocessor/rdiscount.rb +0 -19
  297. data/lib/webgen/contentprocessor/rdoc.rb +0 -20
  298. data/lib/webgen/contentprocessor/redcloth.rb +0 -21
  299. data/lib/webgen/contentprocessor/sass.rb +0 -22
  300. data/lib/webgen/contentprocessor/scss.rb +0 -22
  301. data/lib/webgen/contentprocessor/tags.rb +0 -170
  302. data/lib/webgen/contentprocessor/tidy.rb +0 -38
  303. data/lib/webgen/contentprocessor/xmllint.rb +0 -37
  304. data/lib/webgen/context/render.rb +0 -32
  305. data/lib/webgen/context/tags.rb +0 -20
  306. data/lib/webgen/coreext.rb +0 -13
  307. data/lib/webgen/default_config.rb +0 -240
  308. data/lib/webgen/loggable.rb +0 -25
  309. data/lib/webgen/output.rb +0 -86
  310. data/lib/webgen/output/filesystem.rb +0 -69
  311. data/lib/webgen/source/filesystem.rb +0 -61
  312. data/lib/webgen/source/resource.rb +0 -45
  313. data/lib/webgen/source/tararchive.rb +0 -78
  314. data/lib/webgen/sourcehandler.rb +0 -275
  315. data/lib/webgen/sourcehandler/base.rb +0 -281
  316. data/lib/webgen/sourcehandler/copy.rb +0 -44
  317. data/lib/webgen/sourcehandler/directory.rb +0 -30
  318. data/lib/webgen/sourcehandler/feed.rb +0 -92
  319. data/lib/webgen/sourcehandler/fragment.rb +0 -70
  320. data/lib/webgen/sourcehandler/memory.rb +0 -42
  321. data/lib/webgen/sourcehandler/metainfo.rb +0 -128
  322. data/lib/webgen/sourcehandler/page.rb +0 -64
  323. data/lib/webgen/sourcehandler/sitemap.rb +0 -60
  324. data/lib/webgen/sourcehandler/template.rb +0 -66
  325. data/lib/webgen/sourcehandler/virtual.rb +0 -117
  326. data/lib/webgen/tag/base.rb +0 -170
  327. data/lib/webgen/tag/breadcrumbtrail.rb +0 -70
  328. data/lib/webgen/tag/executecommand.rb +0 -31
  329. data/lib/webgen/tag/includefile.rb +0 -42
  330. data/lib/webgen/tag/metainfo.rb +0 -27
  331. data/lib/webgen/tag/sitemap.rb +0 -41
  332. data/lib/webgen/websiteaccess.rb +0 -31
  333. data/lib/webgen/websitemanager.rb +0 -125
  334. data/misc/default.css +0 -403
  335. data/misc/default.template +0 -76
  336. data/misc/htmldoc.metainfo +0 -26
  337. data/misc/htmldoc.virtual +0 -17
  338. data/misc/images/arrow.gif +0 -0
  339. data/misc/images/error.png +0 -0
  340. data/misc/images/headerbg.jpg +0 -0
  341. data/misc/images/important.png +0 -0
  342. data/misc/images/information.png +0 -0
  343. data/misc/images/quote.gif +0 -0
  344. data/misc/images/warning.png +0 -0
  345. data/misc/logo.svg +0 -313
  346. data/misc/style.page +0 -33
  347. data/test/helper.rb +0 -61
  348. data/test/test_blackboard.rb +0 -60
  349. data/test/test_cli.rb +0 -119
  350. data/test/test_common_sitemap.rb +0 -58
  351. data/test/test_configuration.rb +0 -68
  352. data/test/test_contentprocessor.rb +0 -39
  353. data/test/test_contentprocessor_builder.rb +0 -41
  354. data/test/test_contentprocessor_erb.rb +0 -33
  355. data/test/test_contentprocessor_erubis.rb +0 -62
  356. data/test/test_contentprocessor_fragments.rb +0 -43
  357. data/test/test_contentprocessor_haml.rb +0 -39
  358. data/test/test_contentprocessor_head.rb +0 -96
  359. data/test/test_contentprocessor_kramdown.rb +0 -56
  360. data/test/test_contentprocessor_less.rb +0 -40
  361. data/test/test_contentprocessor_maruku.rb +0 -33
  362. data/test/test_contentprocessor_rdiscount.rb +0 -21
  363. data/test/test_contentprocessor_rdoc.rb +0 -22
  364. data/test/test_contentprocessor_redcloth.rb +0 -26
  365. data/test/test_contentprocessor_sass.rb +0 -28
  366. data/test/test_contentprocessor_scss.rb +0 -28
  367. data/test/test_contentprocessor_tags.rb +0 -122
  368. data/test/test_contentprocessor_tidy.rb +0 -34
  369. data/test/test_contentprocessor_xmllint.rb +0 -38
  370. data/test/test_context.rb +0 -81
  371. data/test/test_error.rb +0 -93
  372. data/test/test_loggable.rb +0 -32
  373. data/test/test_logger.rb +0 -94
  374. data/test/test_node.rb +0 -469
  375. data/test/test_output_filesystem.rb +0 -60
  376. data/test/test_path.rb +0 -241
  377. data/test/test_source_filesystem.rb +0 -76
  378. data/test/test_source_resource.rb +0 -28
  379. data/test/test_source_stacked.rb +0 -49
  380. data/test/test_sourcehandler_base.rb +0 -136
  381. data/test/test_sourcehandler_copy.rb +0 -47
  382. data/test/test_sourcehandler_directory.rb +0 -38
  383. data/test/test_sourcehandler_feed.rb +0 -88
  384. data/test/test_sourcehandler_fragment.rb +0 -70
  385. data/test/test_sourcehandler_main.rb +0 -39
  386. data/test/test_sourcehandler_memory.rb +0 -44
  387. data/test/test_sourcehandler_metainfo.rb +0 -127
  388. data/test/test_sourcehandler_page.rb +0 -73
  389. data/test/test_sourcehandler_sitemap.rb +0 -68
  390. data/test/test_sourcehandler_template.rb +0 -68
  391. data/test/test_sourcehandler_virtual.rb +0 -106
  392. data/test/test_tag_base.rb +0 -62
  393. data/test/test_tag_breadcrumbtrail.rb +0 -91
  394. data/test/test_tag_coderay.rb +0 -45
  395. data/test/test_tag_date.rb +0 -18
  396. data/test/test_tag_executecommand.rb +0 -41
  397. data/test/test_tag_includefile.rb +0 -50
  398. data/test/test_tag_langbar.rb +0 -71
  399. data/test/test_tag_link.rb +0 -70
  400. data/test/test_tag_menu.rb +0 -207
  401. data/test/test_tag_metainfo.rb +0 -26
  402. data/test/test_tag_relocatable.rb +0 -60
  403. data/test/test_tag_sitemap.rb +0 -47
  404. data/test/test_tag_tikz.rb +0 -69
  405. data/test/test_tree.rb +0 -70
  406. data/test/test_website.rb +0 -130
  407. data/test/test_websiteaccess.rb +0 -25
  408. data/test/test_websitemanager.rb +0 -65
@@ -0,0 +1,86 @@
1
+ # -*- encoding: utf-8 -*-
2
+
3
+ require 'minitest/autorun'
4
+ require 'webgen/content_processor'
5
+
6
+ class Webgen::ContentProcessor::MyProcessor
7
+
8
+ def self.call(context)
9
+ raise Webgen::Error.new('msg') if context == 'webgen'
10
+ raise 'msg' if context == 'error'
11
+ context + 'value'
12
+ end
13
+
14
+ end
15
+
16
+ class TestContentProcessor < MiniTest::Unit::TestCase
17
+
18
+ def setup
19
+ @cp = Webgen::ContentProcessor.new
20
+ end
21
+
22
+ def test_register
23
+ @cp.register('Webgen::ContentProcessor::MyProcessor')
24
+ assert(@cp.registered?('my_processor'))
25
+ refute(@cp.is_binary?('my_processor'))
26
+
27
+ @cp.register('MyProcessor')
28
+ assert(@cp.registered?('my_processor'))
29
+ refute(@cp.is_binary?('my_processor'))
30
+
31
+ @cp.register('MyProcessor', :type => :binary, :name => 'test', :ext_map => {:a => :b})
32
+ assert(@cp.registered?('test'))
33
+ assert(@cp.is_binary?('test'))
34
+ assert_equal({:a => :b}, @cp.extension_map('test'))
35
+ assert_equal({:a => :b}, @cp.extension_map)
36
+ assert_equal([:test, :b], @cp.map_extension(:a))
37
+ assert_nil(@cp.map_extension(:b))
38
+
39
+ @cp.register('doit') do |context|
40
+ context.content = 'Nothing left.'
41
+ end
42
+ assert(@cp.registered?('doit'))
43
+ refute(@cp.is_binary?('doit'))
44
+ end
45
+
46
+ def test_is_binary
47
+ @cp.register('MyProcessor', :type => :text)
48
+ refute(@cp.is_binary?('m_yprocessor'))
49
+ @cp.register('MyProcessor', :type => :binary)
50
+ assert(@cp.is_binary?('my_processor'))
51
+ refute(@cp.is_binary?('unknown contentprocessor'))
52
+ end
53
+
54
+ def test_call
55
+ @cp.register('MyProcessor')
56
+ @cp.register('Webgen::ContentProcessor::MyProcessor', :name => 'other')
57
+ @cp.register('doit') do |context|
58
+ raise 'msg' if context == 'error'
59
+ context + 'value'
60
+ end
61
+
62
+ assert_equal('valuevalue', @cp.call('my_processor', 'value'))
63
+ assert_equal('valuevalue', @cp.call('other', 'value'))
64
+ assert_equal('valuevalue', @cp.call('doit', 'value'))
65
+
66
+ s = 'webgen'
67
+ def s.dest_node; "dest_node"; end
68
+ assert_raises(Webgen::Error) { @cp.call('my_processor', s) }
69
+
70
+ s = 'error'
71
+ def s.dest_node; "dest_node"; end
72
+ assert_raises(Webgen::RenderError) { @cp.call('my_processor', s) }
73
+ assert_raises(Webgen::RenderError) { @cp.call('doit', s) }
74
+ end
75
+
76
+ def test_normalize_pipeline
77
+ @cp.register('MyProcessor')
78
+ @cp.register('MyProcessor', :name => 'other')
79
+ assert_equal(['my_processor', 'other', 'other'], @cp.normalize_pipeline('my_processor,other,other'))
80
+ assert_equal(['my_processor', 'other', 'other'], @cp.normalize_pipeline('my_processor, other, other'))
81
+ assert_equal(['my_processor', 'other', 'other'], @cp.normalize_pipeline(['my_processor','other','other']))
82
+
83
+ assert_raises(Webgen::Error) { @cp.normalize_pipeline('unknown') }
84
+ end
85
+
86
+ end
@@ -0,0 +1,73 @@
1
+ # -*- encoding: utf-8 -*-
2
+
3
+ require 'webgen/test_helper'
4
+ require 'webgen/context'
5
+
6
+ class TestContext < MiniTest::Unit::TestCase
7
+
8
+ include Webgen::TestHelper
9
+
10
+ module TestModule
11
+ def hallo
12
+ "hallo"
13
+ end
14
+ end
15
+
16
+ def setup
17
+ setup_website
18
+ @context = Webgen::Context.new(@website, :content => 'test', :key => :value, :chain => [:first, :last])
19
+ end
20
+
21
+ def test_initialize
22
+ @website.ext.context_modules = [TestModule];
23
+ context = Webgen::Context.new(@website)
24
+ assert_equal('', context.content)
25
+ assert_equal({}, context.persistent)
26
+ assert_same(@website.object_id, context.website.object_id)
27
+ assert_equal('hallo', context.hallo)
28
+
29
+ context = Webgen::Context.new(@website, :content => 'test', :key => :value)
30
+ assert_equal('test', context.content)
31
+ assert_equal(:value, context[:key])
32
+ assert_equal({}, context.persistent)
33
+
34
+ context = Webgen::Context.new(@website, {:content => 'test', :key => :value}, {:other => :val})
35
+ assert_equal('test', context.content)
36
+ assert_equal(:value, context[:key])
37
+ assert_equal({:other => :val}, context.persistent)
38
+ end
39
+
40
+ def test_clone
41
+ other = @context.clone(:content => 'new', :key => :other)
42
+ assert_equal('new', other.content)
43
+ assert_equal(:other, other[:key])
44
+ assert_equal([:first, :last], other[:chain])
45
+ end
46
+
47
+ def test_accessors
48
+ assert_equal(:value, @context[:key])
49
+ assert_equal([:first, :last], @context[:chain])
50
+ assert_equal('test', @context.content)
51
+ @context[:key] = :newvalue
52
+ assert_equal(:newvalue, @context[:key])
53
+ end
54
+
55
+ def test_node_methods
56
+ assert_equal(:first, @context.ref_node)
57
+ assert_equal(:last, @context.content_node)
58
+ assert_equal(:last, @context.dest_node)
59
+ @context[:dest_node] = :other
60
+ assert_equal(:other, @context.dest_node)
61
+ end
62
+
63
+ def test_tags_methods
64
+ context = Webgen::Context.new(@website)
65
+ tag = MiniTest::Mock.new
66
+ tag.expect(:call, 'value', ['mytag', {'opt' => 'val'}, 'body', context])
67
+ @website.ext.tag = tag
68
+
69
+ assert_equal('value', context.tag('mytag', {'opt' => 'val'}, 'body'))
70
+ tag.verify
71
+ end
72
+
73
+ end
@@ -0,0 +1,20 @@
1
+ # -*- encoding: utf-8 -*-
2
+
3
+ require 'minitest/autorun'
4
+ require 'webgen/core_ext'
5
+
6
+ class TestCoreExtensions < MiniTest::Unit::TestCase
7
+
8
+ def test_webgen_require
9
+ assert_raises(Webgen::LoadError) { webgen_require('unknown_library_here') }
10
+ webgen_require('webgen/core_ext') rescue flunk
11
+ end
12
+
13
+ def test_hash_symbolize_keys!
14
+ h = {'a' => 'a', :b => 'b', 5 => 5}.symbolize_keys
15
+ assert_equal('a', h[:a])
16
+ assert_equal('b', h[:b])
17
+ assert_equal(5, h[5])
18
+ end
19
+
20
+ end
@@ -0,0 +1,48 @@
1
+ # -*- encoding: utf-8 -*-
2
+
3
+ require 'minitest/autorun'
4
+ require 'webgen/destination'
5
+
6
+ class Webgen::Destination::MyDestination
7
+
8
+ def initialize(website); end
9
+
10
+ end
11
+
12
+ class TestDestination < MiniTest::Unit::TestCase
13
+
14
+ def setup
15
+ @website = MiniTest::Mock.new
16
+ @dest = Webgen::Destination.new(@website)
17
+ end
18
+
19
+ def test_register
20
+ @dest.register('Webgen::Destination::MyDestination')
21
+ assert(@dest.registered?('my_destination'))
22
+
23
+ @dest.register('MyDestination')
24
+ assert(@dest.registered?('my_destination'))
25
+
26
+ @dest.register('MyDestination', :name => 'test')
27
+ assert(@dest.registered?('test'))
28
+
29
+ assert_raises(ArgumentError) { @dest.register('doit') { "nothing" } }
30
+ end
31
+
32
+ def test_instance
33
+ @dest.register('MyDestination')
34
+
35
+ @website.expect(:config, {'destination' => 'unknown'})
36
+ assert_raises(Webgen::Error) { @dest.instance_eval { instance } }
37
+ @website.verify
38
+
39
+ @website.expect(:config, {'destination' => 'my_destination'})
40
+ assert_kind_of(Webgen::Destination::MyDestination, @dest.instance_eval { instance })
41
+ @website.verify
42
+
43
+ @website.expect(:config, {'destination' => 'unknown'})
44
+ @dest.instance_eval { instance } # nothing should be raised
45
+ @website.verify
46
+ end
47
+
48
+ end
@@ -0,0 +1,121 @@
1
+ # -*- encoding: utf-8 -*-
2
+
3
+ require 'minitest/autorun'
4
+ require 'webgen/error'
5
+
6
+ class TestError < MiniTest::Unit::TestCase
7
+
8
+ def test_all
9
+ e = Webgen::Error.new("test")
10
+ assert_match(/Error:/, e.message)
11
+
12
+ e = Webgen::Error.new("test", 'location')
13
+ assert_equal('location', e.location)
14
+ assert_match(/Error at location:/, e.message)
15
+
16
+ e = Webgen::Error.new("test", 'location', '/path')
17
+ assert_equal('location', e.location)
18
+ assert_equal('/path', e.path)
19
+ assert_match(/Error at location while working on <\/path>:/, e.message)
20
+ e.path = 5
21
+ assert_match(/Error at location while working on <5>:/, e.message)
22
+
23
+ e = Webgen::Error.new(Exception.new("test"))
24
+ assert_match(/Error:.*test/m, e.message)
25
+ end
26
+
27
+ def test_class_error_line
28
+ begin
29
+ eval("5 =")
30
+ rescue SyntaxError => e
31
+ assert_equal(1, Webgen::Error.error_line(e))
32
+ end
33
+
34
+ begin
35
+ eval("x = 5\n raise 'hallo'", binding, __FILE__, 1)
36
+ rescue
37
+ assert_equal(2, Webgen::Error.error_line($!))
38
+ end
39
+ end
40
+
41
+ def test_class_error_file
42
+ begin
43
+ eval("5 =")
44
+ rescue SyntaxError => e
45
+ assert_equal('(eval)', Webgen::Error.error_file(e))
46
+ end
47
+
48
+ begin
49
+ eval("raise 'hallo'", binding, 'myfile', 1)
50
+ rescue Exception => e
51
+ assert_equal('myfile', Webgen::Error.error_file(e))
52
+ end
53
+ end
54
+
55
+ end
56
+
57
+ class TestNodeCreationError < MiniTest::Unit::TestCase
58
+
59
+ def test_all
60
+ e = Webgen::NodeCreationError.new("test")
61
+ assert_match(/Error while creating a node:/, e.message)
62
+ e.path = 5
63
+ assert_match(/Error while creating a node from <5>:/, e.message)
64
+ end
65
+
66
+ end
67
+
68
+ class TestRenderError < MiniTest::Unit::TestCase
69
+
70
+ def test_all
71
+ e = Webgen::RenderError.new("test", 'location', '/path', '/error')
72
+ assert_equal("/error", e.error_path)
73
+ assert_match(/Error at location in <\/error> while rendering <\/path>/, e.message)
74
+ e.path = 5
75
+ assert_match(/Error at location in <\/error> while rendering <5>:/, e.message)
76
+
77
+ e = Webgen::RenderError.new('test', 'location', '/path', '/error', 5)
78
+ assert_equal("/error", e.error_path)
79
+ assert_match(/Error at location in <\/error:~5> while rendering <\/path>/, e.message)
80
+
81
+ begin
82
+ eval("5 =")
83
+ rescue SyntaxError
84
+ e = Webgen::RenderError.new($!, 'location', '/path', '/error')
85
+ assert_equal("/error", e.error_path)
86
+ assert_match(/Error at location in <\/error:~1> while rendering <\/path>/, e.message)
87
+ end
88
+ end
89
+
90
+ end
91
+
92
+ class TestLoadError < MiniTest::Unit::TestCase
93
+
94
+ def test_all
95
+ e = Webgen::LoadError.new(Exception.new("something"), 'location', '/path')
96
+ assert_nil(e.library)
97
+ assert_nil(e.gem)
98
+ assert_match(/Error at location while working on <\/path>:.*something/m, e.message)
99
+
100
+ e = Webgen::LoadError.new("test", 'location', '/path')
101
+ assert_equal("test", e.library)
102
+ assert_nil(e.gem)
103
+ assert_match(/Error at location while working on <\/path>:.*The needed library 'test' is missing/m, e.message)
104
+
105
+ e = Webgen::LoadError.new("test", 'location', '/path', 'gem')
106
+ assert_equal("test", e.library)
107
+ assert_equal('gem', e.gem)
108
+ assert_match(/Error at location while working on <\/path>:.*The needed library 'test' is missing.*gem install gem/m, e.message)
109
+ end
110
+
111
+ end
112
+
113
+ class TestCommandNotFoundError < MiniTest::Unit::TestCase
114
+
115
+ def test_all
116
+ e = Webgen::CommandNotFoundError.new("test", 'location', '/path')
117
+ assert_equal("test", e.cmd)
118
+ assert_match(/Error at location while working on <\/path>:.*The needed command 'test' is missing/m, e.message)
119
+ end
120
+
121
+ end
@@ -0,0 +1,70 @@
1
+ # -*- encoding: utf-8 -*-
2
+
3
+ require 'minitest/autorun'
4
+ require 'webgen/extension_manager'
5
+
6
+ class DummyExtensionManager
7
+
8
+ include Webgen::ExtensionManager
9
+
10
+ def register(name, value)
11
+ @extensions[name.to_sym] = OpenStruct.new(:object => value)
12
+ end
13
+
14
+ end
15
+
16
+ class TestExtensionManager < MiniTest::Unit::TestCase
17
+
18
+ def setup
19
+ @dummy = DummyExtensionManager.new
20
+ end
21
+
22
+ def test_registered_extensions
23
+ assert_kind_of(Hash, @dummy.registered_extensions)
24
+ assert_empty(@dummy.registered_extensions)
25
+ @dummy.register('key', 'value')
26
+ assert(@dummy.registered_extensions.has_key?(:key))
27
+ end
28
+
29
+ def test_registered
30
+ refute(@dummy.registered?('key'))
31
+ @dummy.register('key', 'value')
32
+ assert(@dummy.registered?('key'))
33
+ end
34
+
35
+ def test_normalize_class_name
36
+ klass, name = @dummy.send(:normalize_class_name, "Klass", false)
37
+ assert_equal("DummyExtensionManager::Klass", klass)
38
+ assert_equal("Klass", name)
39
+ klass, name = @dummy.send(:normalize_class_name, "MyKlass", false)
40
+ assert_equal("DummyExtensionManager::MyKlass", klass)
41
+ assert_equal("MyKlass", name)
42
+ klass, name = @dummy.send(:normalize_class_name, "My::Klass", false)
43
+ assert_equal("My::Klass", klass)
44
+ assert_equal("Klass", name)
45
+ klass, name = @dummy.send(:normalize_class_name, "klass", false)
46
+ assert_equal("DummyExtensionManager::klass", klass)
47
+ assert_equal("klass", name)
48
+ end
49
+
50
+ def test_do_register
51
+ @dummy.send(:do_register, "Klass")
52
+ assert_equal('DummyExtensionManager::Klass', @dummy.send(:ext_data, 'klass').object)
53
+ @dummy.send(:do_register, "Test::Klass", :name => 'test')
54
+ assert_equal('Test::Klass', @dummy.send(:ext_data, :test).object)
55
+ @dummy.send(:do_register, DummyExtensionManager, :name => 'test')
56
+ assert_equal(DummyExtensionManager, @dummy.send(:ext_data, :test).object)
57
+ end
58
+
59
+ def test_extension
60
+ @dummy.register('key', 'DummyExtensionManager')
61
+ assert_equal(DummyExtensionManager, @dummy.send(:extension, "key"))
62
+ assert_raises(Webgen::Error) { @dummy.send(:extension, "unknown") }
63
+ end
64
+
65
+ def test_resolve_class
66
+ assert_equal(DummyExtensionManager, @dummy.send(:resolve_class, DummyExtensionManager))
67
+ assert_equal(DummyExtensionManager, @dummy.send(:resolve_class, 'DummyExtensionManager'))
68
+ end
69
+
70
+ end
@@ -0,0 +1,106 @@
1
+ # -*- encoding: utf-8 -*-
2
+
3
+ require 'minitest/autorun'
4
+ require 'webgen/item_tracker'
5
+ require 'webgen/blackboard'
6
+
7
+ class Webgen::ItemTracker::Sample
8
+
9
+ def initialize(website) #:nodoc:
10
+ @website = website
11
+ end
12
+
13
+ def item_id(data) #:nodoc:
14
+ data
15
+ end
16
+
17
+ def item_data(data) #:nodoc:
18
+ 'alcn' + TestItemTracker::Data[data].to_s
19
+ end
20
+
21
+ def changed?(iid, old_data) #:nodoc:
22
+ 'alcn' + TestItemTracker::Data[iid].to_s != old_data
23
+ end
24
+
25
+ def node_referenced?(iid, _, node_alcn)
26
+ iid == node_alcn
27
+ end
28
+
29
+ end
30
+
31
+ class TestItemTracker < MiniTest::Unit::TestCase
32
+
33
+ Data = {'/alcn' => 'mydata'}
34
+
35
+ def test_functionality
36
+ # Needed mock objects
37
+ website = MiniTest::Mock.new
38
+ website.expect(:blackboard, blackboard = Webgen::Blackboard.new)
39
+ website.expect(:cache, cache = {})
40
+ node = MiniTest::Mock.new
41
+ node.expect(:alcn, '/alcn')
42
+ node.expect(:!, false)
43
+ node.expect(:hash, 12345)
44
+ other = MiniTest::Mock.new
45
+ other.expect(:alcn, '/other')
46
+ other.expect(:!, false)
47
+ other.expect(:hash, 12346)
48
+ website.expect(:tree, {'/alcn' => node, '/other' => other})
49
+
50
+ tracker = Webgen::ItemTracker.new(website)
51
+ tracker.register('Sample')
52
+ tracker.add(node, :sample, '/alcn')
53
+
54
+ # Node should be changed because no cache data is available
55
+ assert(tracker.node_changed?(node))
56
+
57
+ # Node should still be changed after it gets written
58
+ blackboard.dispatch_msg(:after_node_written, node)
59
+ assert(tracker.node_changed?(node))
60
+
61
+ Data['/alcn'] = 'other'
62
+
63
+ # Node should still be changed after all nodes are written because Data changed
64
+ blackboard.dispatch_msg(:after_all_nodes_written)
65
+ blackboard.dispatch_msg(:before_all_nodes_written)
66
+ assert(tracker.node_changed?(node))
67
+
68
+ # Node should not be changed anymore
69
+ blackboard.dispatch_msg(:after_node_written, node)
70
+ blackboard.dispatch_msg(:after_all_nodes_written)
71
+ blackboard.dispatch_msg(:before_all_nodes_written)
72
+ refute(tracker.node_changed?(node))
73
+
74
+ # Test the initial loading of the cache data
75
+ cache[:item_tracker_data] = {
76
+ :node_dependencies => {'/alcn' => [[:sample, '/alcn']], 'alcn' => ['data']},
77
+ :item_data => {[:sample, '/alcn'] => 'alcnother', [:sample, 'other'] => 'alcnother'}
78
+ }
79
+ blackboard.dispatch_msg(:website_initialized)
80
+ assert_equal(cache[:item_tracker_data], tracker.instance_variable_get(:@cached))
81
+
82
+ # Node should not be changed because of cache data
83
+ refute(tracker.node_changed?(node))
84
+
85
+ # Test the final writing of the cache data
86
+ blackboard.dispatch_msg(:after_node_written, node) # needs to be done again because
87
+ blackboard.dispatch_msg(:after_all_nodes_written) # of :website_initialized above
88
+ blackboard.dispatch_msg(:website_generated)
89
+ expected = {
90
+ :node_dependencies => {'/alcn' => Set.new([[:sample, '/alcn']])},
91
+ :item_data => {[:sample, '/alcn'] => 'alcnother'}
92
+ }
93
+ assert_equal(expected, cache[:item_tracker_data])
94
+
95
+ # Test whether the node is referenced
96
+ tracker.add(other, :sample, '/alcn')
97
+ blackboard.dispatch_msg(:after_node_written, other)
98
+ blackboard.dispatch_msg(:after_all_nodes_written)
99
+
100
+ assert(tracker.node_referenced?(node))
101
+
102
+ website.verify
103
+ node.verify
104
+ end
105
+
106
+ end