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
@@ -1,83 +0,0 @@
1
- # -*- encoding: utf-8 -*-
2
-
3
- require 'webgen/tag'
4
- require 'webgen/websiteaccess'
5
-
6
- module Webgen::Common
7
-
8
- # This class provides functionality for creating sitemaps and checking if a sitemap has changed.
9
- class Sitemap
10
-
11
- include Webgen::WebsiteAccess
12
-
13
- def initialize #:nodoc:
14
- website.blackboard.add_listener(:node_changed?, method(:node_changed?))
15
- end
16
-
17
- # Return the sitemap tree as Webgen::Tag::Menu::MenuNode created for the +node+ in the language
18
- # +lang+ using the provided +options+ which can be any configuration option starting with
19
- # <tt>common.sitemap</tt>.
20
- def create_sitemap(node, lang, options)
21
- @options = options
22
- tree = recursive_create(nil, node.tree.root, lang).sort!
23
- @options = nil
24
- (node.node_info[:common_sitemap] ||= {})[[options.to_a.sort, lang]] = tree.to_lcn_list
25
- tree
26
- end
27
-
28
- #######
29
- private
30
- #######
31
-
32
- # Recursively create the sitemap.
33
- def recursive_create(parent, node, lang, in_sitemap = true)
34
- mnode = Webgen::Tag::Menu::MenuNode.new(parent, node)
35
- node.children.map do |n|
36
- sub_in_sitemap = in_sitemap?(n, lang)
37
- [(!n.children.empty? || sub_in_sitemap ? n : nil), sub_in_sitemap]
38
- end.each do |n, sub_in_sitemap|
39
- next if n.nil?
40
- sub_node = recursive_create(mnode, n, lang, sub_in_sitemap)
41
- mnode.children << sub_node unless sub_node.nil?
42
- end
43
- (mnode.children.empty? && !in_sitemap ? nil : mnode)
44
- end
45
-
46
- # Return +true+ if the +child+ of the +node+ is in the sitemap for the language +lang+.
47
- def in_sitemap?(child, lang, allow_index_file = false)
48
- ((option('common.sitemap.used_kinds').empty? || option('common.sitemap.used_kinds').include?(child['kind']) ||
49
- (child.routing_node(lang, false) != child && in_sitemap?(child.routing_node(lang), lang, true))) &&
50
- (option('common.sitemap.any_lang') || child.lang.nil? || child.lang == lang) &&
51
- (!option('common.sitemap.honor_in_menu') || child['in_menu']) &&
52
- (allow_index_file || child.parent == child.tree.root || child.parent.routing_node(lang) != child))
53
- end
54
-
55
- # Retrieve the configuration option value for +name+. The value is taken from the current
56
- # configuration options hash if +name+ is specified there or from the website configuration
57
- # otherwise.
58
- def option(name)
59
- (@options && @options.has_key?(name) ? @options[name] : website.config[name])
60
- end
61
-
62
- # Check if the sitemaps for +node+ have changed.
63
- def node_changed?(node)
64
- return if !node.node_info[:common_sitemap]
65
-
66
- node.node_info[:common_sitemap].each do |(options, lang), cached_tree|
67
- @options = options.to_hash
68
- tree = recursive_create(nil, node.tree.root, lang).sort!.to_lcn_list
69
- @options = nil
70
-
71
- if (tree != cached_tree) ||
72
- (tree.flatten.any? do |alcn|
73
- (n = node.tree[alcn]) && (r = n.routing_node(lang)) && r.meta_info_changed?
74
- end)
75
- node.flag(:dirty)
76
- break
77
- end
78
- end
79
- end
80
-
81
- end
82
-
83
- end
@@ -1,117 +0,0 @@
1
- # -*- encoding: utf-8 -*-
2
-
3
- module Webgen
4
-
5
- # Namespace for all content processors.
6
- #
7
- # == Implementing a content processor
8
- #
9
- # Content processors are used to process the content of files, normally of files in Webgen Page
10
- # Format. A content processor only needs to respond to one method called +call+ and must not take
11
- # any parameters in the +initialize+ method. This method is invoked with a
12
- # Webgen::Context object that provides the whole context (especially the content
13
- # and the node chain) and the method needs to return this object. During processing a content
14
- # processor normally changes the content of the context but it does not need to.
15
- #
16
- # A self-written content processor does not need to be in the Webgen::ContentProcessor namespace
17
- # but all shipped ones do.
18
- #
19
- # After writing the content processor class, one needs to add it to the
20
- # <tt>contentprocessor.map</tt> hash so that it is used by webgen. The key for the entry needs to
21
- # be a short name without special characters or spaces and the value can be:
22
- #
23
- # * the class name, not as constant but as a string - then this content processor is assumed to
24
- # work with textual data -, or
25
- #
26
- # * an array with the class name like before and the type, which needs to be <tt>:binary</tt> or
27
- # <tt>:text</tt>.
28
- #
29
- # == Sample Content Processor
30
- #
31
- # The following sample content processor checks for a meta information +replace_key+ and replaces
32
- # strings of the form <tt>replace_key:path/to/node</tt> with a link to the specified node if it is
33
- # found.
34
- #
35
- # Note how the content node, the reference node and the destination node are used sothat the
36
- # correct meta information is used, the node is correctly resolved and the correct relative link
37
- # is calculated respectively!
38
- #
39
- # class SampleProcessor
40
- #
41
- # def call(context)
42
- # if !context.content_node['replace_key'].to_s.empty?
43
- # context.content.gsub!(/#{context.content_node['replace_key']}:([\w\/.]+)/ ) do |match|
44
- # link_node = context.ref_node.resolve($1, context.content_node.lang)
45
- # if link_node
46
- # context.dest_node.link_to(link_node, :lang => context.content_node.lang)
47
- # else
48
- # match
49
- # end
50
- # end
51
- # end
52
- # context
53
- # rescue Exception => e
54
- # raise "Error while replacing special key: #{e.message}"
55
- # end
56
- #
57
- # end
58
- #
59
- # Webgen::WebsiteAccess.website.config['contentprocessor.map']['replacer'] = 'SampleProcessor'
60
- # # Or one could equally write
61
- # # Webgen::WebsiteAccess.website.config['contentprocessor.map']['replacer'] = ['SampleProcessor', :text]
62
- #
63
- module ContentProcessor
64
-
65
- autoload :Tags, 'webgen/contentprocessor/tags'
66
- autoload :Blocks, 'webgen/contentprocessor/blocks'
67
- autoload :Maruku, 'webgen/contentprocessor/maruku'
68
- autoload :RedCloth, 'webgen/contentprocessor/redcloth'
69
- autoload :Erb, 'webgen/contentprocessor/erb'
70
- autoload :Haml, 'webgen/contentprocessor/haml'
71
- autoload :Sass, 'webgen/contentprocessor/sass'
72
- autoload :Scss, 'webgen/contentprocessor/scss'
73
- autoload :RDoc, 'webgen/contentprocessor/rdoc'
74
- autoload :Builder, 'webgen/contentprocessor/builder'
75
- autoload :Erubis, 'webgen/contentprocessor/erubis'
76
- autoload :RDiscount, 'webgen/contentprocessor/rdiscount'
77
- autoload :Fragments, 'webgen/contentprocessor/fragments'
78
- autoload :Head, 'webgen/contentprocessor/head'
79
- autoload :Tidy, 'webgen/contentprocessor/tidy'
80
- autoload :Xmllint, 'webgen/contentprocessor/xmllint'
81
- autoload :Kramdown, 'webgen/contentprocessor/kramdown'
82
- autoload :Less, 'webgen/contentprocessor/less'
83
-
84
- # Return the list of all available content processors.
85
- def self.list
86
- WebsiteAccess.website.config['contentprocessor.map'].keys
87
- end
88
-
89
- # Return the content processor object identified by +name+.
90
- def self.for_name(name)
91
- klass, cp_type = WebsiteAccess.website.config['contentprocessor.map'][name]
92
- klass.nil? ? nil : WebsiteAccess.website.cache.instance(klass)
93
- end
94
-
95
- # Return whether the content processor identified by +name+ is processing binary data.
96
- def self.is_binary?(name)
97
- WebsiteAccess.website.config['contentprocessor.map'][name].kind_of?(Array) &&
98
- WebsiteAccess.website.config['contentprocessor.map'][name].last == :binary
99
- end
100
-
101
- # Helper class for accessing content processors in a Webgen::Context object.
102
- class AccessHash
103
-
104
- # Check if a content processor called +name+ exists.
105
- def has_key?(name)
106
- Webgen::ContentProcessor.list.include?(name)
107
- end
108
-
109
- # Return (and proboably initialize) the content processor called +name+.
110
- def [](name)
111
- Webgen::ContentProcessor.for_name(name)
112
- end
113
- end
114
-
115
- end
116
-
117
- end
@@ -1,92 +0,0 @@
1
- # -*- encoding: utf-8 -*-
2
-
3
- module Webgen::ContentProcessor
4
-
5
- # Replaces special xml tags with the rendered content of a node.
6
- class Blocks
7
-
8
- include Webgen::Loggable
9
-
10
- BLOCK_RE = /<webgen:block\s*?((?:\s\w+=('|")[^'"]+\2)+)\s*\/>/
11
- BLOCK_ATTR_RE = /(\w+)=('|")([^'"]+)\2/
12
-
13
- # Replace the webgen:block xml tags with the rendered content of the specified node.
14
- def call(context)
15
- context.content.gsub!(BLOCK_RE) do |match|
16
- attr = {}
17
- match_object = $~
18
- attr[:line_nr_proc] = lambda { match_object.pre_match.scan("\n").size + 1 }
19
- match.scan(BLOCK_ATTR_RE) {|name, sep, content| attr[name.to_sym] = content}
20
- render_block(context, attr)
21
- end
22
- context
23
- end
24
-
25
- # Render a block of a page node and return the result.
26
- #
27
- # The Webgen::Context object +context+ is used as the render context and the +options+ hash
28
- # needs to hold all relevant information, that is:
29
- #
30
- # [<tt>:name</tt> (mandatory)]
31
- # The name of the block that should be used.
32
- # [<tt>:chain</tt>]
33
- # The node chain used for rendering. If this is not specified, the node chain from the context
34
- # is used. It needs to be a String in the format <tt>(A)LCN;(A)LCN;...</tt> or an array of
35
- # nodes.
36
- # [<tt>:node</tt>]
37
- # Defines which node in the node chain should be used. Valid values are +next+ (= default
38
- # value; the next node in the node chain), +first+ (the first node in the node chain with a
39
- # block called +name+) or +current+ (the currently rendered node, ignores the +chain+ option).
40
- # [<tt>:notfound</tt>]
41
- # If this property is set to +ignore+, a missing block will not raise an error. It is unset by
42
- # default, so missing blocks will raise errors.
43
- def render_block(context, options)
44
- if options[:chain].nil?
45
- used_chain = (context[:chain].length > 1 ? context[:chain][1..-1] : context[:chain]).dup
46
- elsif options[:chain].kind_of?(Array)
47
- used_chain = options[:chain]
48
- dest_node = context.content_node
49
- else
50
- paths = options[:chain].split(';')
51
- used_chain = paths.collect do |path|
52
- temp_node = context.ref_node.resolve(path.strip, context.dest_node.lang)
53
- if temp_node.nil?
54
- raise Webgen::RenderError.new("Could not resolve <#{path.strip}>",
55
- self.class.name, context.dest_node,
56
- context.ref_node, (options[:line_nr_proc].call if options[:line_nr_proc]))
57
- end
58
- temp_node
59
- end.compact
60
- return '' if used_chain.length != paths.length
61
- dest_node = context.content_node
62
- end
63
-
64
- if options[:node] == 'first'
65
- used_chain.shift while used_chain.length > 0 && !used_chain.first.node_info[:page].blocks.has_key?(options[:name])
66
- elsif options[:node] == 'current'
67
- used_chain = context[:chain].dup
68
- end
69
- block_node = used_chain.first
70
-
71
- if !block_node || !block_node.node_info[:page].blocks.has_key?(options[:name])
72
- if options[:notfound] == 'ignore'
73
- return ''
74
- elsif block_node
75
- raise Webgen::RenderError.new("No block named '#{options[:name]}' found in <#{block_node}>",
76
- self.class.name, context.dest_node,
77
- context.ref_node, (options[:line_nr_proc].call if options[:line_nr_proc]))
78
- else
79
- raise Webgen::RenderError.new("No node in the render chain has a block named '#{options[:name]}'",
80
- self.class.name, context.dest_node,
81
- context.ref_node, (options[:line_nr_proc].call if options[:line_nr_proc]))
82
- end
83
- end
84
-
85
- context.dest_node.node_info[:used_nodes] << block_node.alcn
86
- tmp_context = block_node.node_info[:page].blocks[options[:name]].render(context.clone(:chain => used_chain, :dest_node => dest_node))
87
- tmp_context.content
88
- end
89
-
90
- end
91
-
92
- end
@@ -1,29 +0,0 @@
1
- # -*- encoding: utf-8 -*-
2
-
3
- require 'webgen/common'
4
-
5
- module Webgen::ContentProcessor
6
-
7
- # Processes content that is valid Ruby to build an XML tree. This is done by using the +builder+
8
- # library.
9
- class Builder
10
-
11
- # Process the content of +context+ which needs to be valid Ruby code. The special variable +xml+
12
- # should be used to construct the XML content.
13
- def call(context)
14
- require 'builder'
15
-
16
- xml = ::Builder::XmlMarkup.new(:indent => 2)
17
- eval(context.content, binding, context.ref_node.alcn)
18
- context.content = xml.target!
19
- context
20
- rescue LoadError
21
- raise Webgen::LoadError.new('builder', self.class.name, context.dest_node, 'builder')
22
- rescue Exception => e
23
- raise Webgen::RenderError.new(e, self.class.name, context.dest_node,
24
- Webgen::Common.error_file(e), Webgen::Common.error_line(e))
25
- end
26
-
27
- end
28
-
29
- end
@@ -1,26 +0,0 @@
1
- # -*- encoding: utf-8 -*-
2
-
3
- require 'webgen/common'
4
-
5
- module Webgen::ContentProcessor
6
-
7
- # Processes embedded Ruby statements.
8
- class Erb
9
-
10
- # Process the Ruby statements embedded in the content of +context+.
11
- def call(context)
12
- require 'erb'
13
- extend(ERB::Util)
14
-
15
- erb = ERB.new(context.content)
16
- erb.filename = context.ref_node.alcn
17
- context.content = erb.result(binding)
18
- context
19
- rescue Exception => e
20
- raise Webgen::RenderError.new(e, self.class.name, context.dest_node,
21
- Webgen::Common.error_file(e), Webgen::Common.error_line(e))
22
- end
23
-
24
- end
25
-
26
- end
@@ -1,39 +0,0 @@
1
- # -*- encoding: utf-8 -*-
2
-
3
- require 'webgen/common'
4
-
5
- module Webgen::ContentProcessor
6
-
7
- # Processes embedded Ruby statements with the +erubis+ library.
8
- class Erubis
9
-
10
- # Process the Ruby statements embedded in the content of +context+.
11
- def call(context)
12
- require 'erubis'
13
- # including Erubis because of problem with resolving Erubis::XmlHelper et al
14
- self.class.class_eval "include ::Erubis"
15
-
16
- options = context.website.config['contentprocessor.erubis.options']
17
- if context[:block]
18
- use_pi = context[:block].options['erubis_use_pi']
19
- context[:block].options.select {|k,v| k =~ /^erubis_/}.
20
- each {|k,v| options[k.sub(/^erubis_/, '').to_sym] = v }
21
- end
22
- erubis = if (!use_pi.nil? && use_pi) || (use_pi.nil? && context.website.config['contentprocessor.erubis.use_pi'])
23
- ::Erubis::PI::Eruby.new(context.content, options)
24
- else
25
- ::Erubis::Eruby.new(context.content, options)
26
- end
27
- erubis.filename = context.ref_node.alcn
28
- context.content = erubis.result(binding)
29
- context
30
- rescue LoadError
31
- raise Webgen::LoadError.new('erubis', self.class.name, context.dest_node, 'erubis')
32
- rescue Exception => e
33
- raise Webgen::RenderError.new(e, self.class.name, context.dest_node,
34
- Webgen::Common.error_file(e), Webgen::Common.error_line(e))
35
- end
36
-
37
- end
38
-
39
- end
@@ -1,25 +0,0 @@
1
- # -*- encoding: utf-8 -*-
2
-
3
- module Webgen::ContentProcessor
4
-
5
- # Uses the HTML headers h1, h2, ..., h6 to generate nested fragment nodes.
6
- class Fragments
7
-
8
- include Webgen::WebsiteAccess
9
-
10
- # Generate the nested fragment nodes from <tt>context.content</tt> under
11
- # <tt>content.content_node</tt> but only if there is no associated <tt>:block</tt> data in
12
- # +context+ or the block is named +content+.
13
- def call(context)
14
- if !context[:block] || context[:block].name == 'content'
15
- sections = website.blackboard.invoke(:parse_html_headers, context.content)
16
- website.blackboard.invoke(:create_fragment_nodes, sections, context.content_node,
17
- website.blackboard.invoke(:source_paths)[context.content_node.node_info[:src]],
18
- context.content_node.meta_info['fragments_in_menu'])
19
- end
20
- context
21
- end
22
-
23
- end
24
-
25
- end
@@ -1,34 +0,0 @@
1
- # -*- encoding: utf-8 -*-
2
-
3
- require 'webgen/common'
4
-
5
- module Webgen::ContentProcessor
6
-
7
- # Processes content in Haml markup using the +haml+ library.
8
- class Haml
9
-
10
- # Convert the content in +haml+ markup to HTML.
11
- def call(context)
12
- require 'haml'
13
-
14
- locals = {:context => context}
15
- context.content = ::Haml::Engine.new(context.content, :filename => context.ref_node.alcn).
16
- render(Object.new, locals)
17
- context
18
- rescue LoadError
19
- raise Webgen::LoadError.new('haml', self.class.name, context.dest_node, 'haml')
20
- rescue ::Haml::Error => e
21
- line = if e.line
22
- e.line + 1
23
- else
24
- Webgen::Common.error_line(e)
25
- end
26
- raise Webgen::RenderError.new(e, self.class.name, context.dest_node, context.ref_node, line)
27
- rescue Exception => e
28
- raise Webgen::RenderError.new(e, self.class.name, context.dest_node,
29
- Webgen::Common.error_file(e), Webgen::Common.error_line(e))
30
- end
31
-
32
- end
33
-
34
- end