gettalong-webgen 0.5.4.20080929

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 (290) hide show
  1. data/AUTHORS +5 -0
  2. data/COPYING +10 -0
  3. data/GPL +340 -0
  4. data/Rakefile +324 -0
  5. data/THANKS +17 -0
  6. data/bin/webgen +10 -0
  7. data/data/webgen/resources.yaml +3 -0
  8. data/data/webgen/webgui/controller/main.rb +129 -0
  9. data/data/webgen/webgui/overrides/win32console.rb +0 -0
  10. data/data/webgen/webgui/public/css/jquery.autocomplete.css +50 -0
  11. data/data/webgen/webgui/public/css/ramaze_error.css +90 -0
  12. data/data/webgen/webgui/public/css/style.css +55 -0
  13. data/data/webgen/webgui/public/img/headerbg.jpg +0 -0
  14. data/data/webgen/webgui/public/img/webgen_logo.png +0 -0
  15. data/data/webgen/webgui/public/js/jquery.autocomplete.js +15 -0
  16. data/data/webgen/webgui/public/js/jquery.js +32 -0
  17. data/data/webgen/webgui/view/create_website.xhtml +22 -0
  18. data/data/webgen/webgui/view/error.xhtml +64 -0
  19. data/data/webgen/webgui/view/index.xhtml +22 -0
  20. data/data/webgen/webgui/view/manage_website.xhtml +18 -0
  21. data/data/webgen/webgui/view/page.xhtml +40 -0
  22. data/data/webgen/website_skeleton/README +10 -0
  23. data/data/webgen/website_skeleton/Rakefile +40 -0
  24. data/data/webgen/website_skeleton/config.yaml +17 -0
  25. data/data/webgen/website_skeleton/ext/init.rb +6 -0
  26. data/data/webgen/website_styles/1024px/README +13 -0
  27. data/data/webgen/website_styles/1024px/src/default.css +188 -0
  28. data/data/webgen/website_styles/1024px/src/default.template +60 -0
  29. data/data/webgen/website_styles/1024px/src/images/background.gif +0 -0
  30. data/data/webgen/website_styles/andreas00/README +13 -0
  31. data/data/webgen/website_styles/andreas00/src/default.css +290 -0
  32. data/data/webgen/website_styles/andreas00/src/default.template +60 -0
  33. data/data/webgen/website_styles/andreas00/src/images/bg.gif +0 -0
  34. data/data/webgen/website_styles/andreas00/src/images/front.jpg +0 -0
  35. data/data/webgen/website_styles/andreas00/src/images/menubg.gif +0 -0
  36. data/data/webgen/website_styles/andreas00/src/images/menubg2.gif +0 -0
  37. data/data/webgen/website_styles/andreas01/README +14 -0
  38. data/data/webgen/website_styles/andreas01/src/default.css +310 -0
  39. data/data/webgen/website_styles/andreas01/src/default.template +61 -0
  40. data/data/webgen/website_styles/andreas01/src/images/bg.gif +0 -0
  41. data/data/webgen/website_styles/andreas01/src/images/front.jpg +0 -0
  42. data/data/webgen/website_styles/andreas01/src/print.css +35 -0
  43. data/data/webgen/website_styles/andreas03/README +14 -0
  44. data/data/webgen/website_styles/andreas03/src/default.css +223 -0
  45. data/data/webgen/website_styles/andreas03/src/default.template +58 -0
  46. data/data/webgen/website_styles/andreas03/src/images/bodybg.png +0 -0
  47. data/data/webgen/website_styles/andreas03/src/images/contbg.png +0 -0
  48. data/data/webgen/website_styles/andreas03/src/images/footerbg.png +0 -0
  49. data/data/webgen/website_styles/andreas03/src/images/gradient1.png +0 -0
  50. data/data/webgen/website_styles/andreas03/src/images/gradient2.png +0 -0
  51. data/data/webgen/website_styles/andreas04/README +15 -0
  52. data/data/webgen/website_styles/andreas04/src/default.css +290 -0
  53. data/data/webgen/website_styles/andreas04/src/default.template +81 -0
  54. data/data/webgen/website_styles/andreas04/src/images/blinkarrow.gif +0 -0
  55. data/data/webgen/website_styles/andreas04/src/images/bodybg.png +0 -0
  56. data/data/webgen/website_styles/andreas04/src/images/contentbg.png +0 -0
  57. data/data/webgen/website_styles/andreas04/src/images/entrybg.png +0 -0
  58. data/data/webgen/website_styles/andreas04/src/images/flash.gif +0 -0
  59. data/data/webgen/website_styles/andreas04/src/images/flash2.gif +0 -0
  60. data/data/webgen/website_styles/andreas04/src/images/globe.gif +0 -0
  61. data/data/webgen/website_styles/andreas04/src/images/globebottom.gif +0 -0
  62. data/data/webgen/website_styles/andreas04/src/images/linkarrow.gif +0 -0
  63. data/data/webgen/website_styles/andreas04/src/images/menuhover.png +0 -0
  64. data/data/webgen/website_styles/andreas05/README +14 -0
  65. data/data/webgen/website_styles/andreas05/src/default.css +33 -0
  66. data/data/webgen/website_styles/andreas05/src/default.template +40 -0
  67. data/data/webgen/website_styles/andreas05/src/images/bodybg.gif +0 -0
  68. data/data/webgen/website_styles/andreas05/src/images/front.png +0 -0
  69. data/data/webgen/website_styles/andreas06/README +14 -0
  70. data/data/webgen/website_styles/andreas06/src/default.css +354 -0
  71. data/data/webgen/website_styles/andreas06/src/default.template +70 -0
  72. data/data/webgen/website_styles/andreas06/src/images/bodybg.gif +0 -0
  73. data/data/webgen/website_styles/andreas06/src/images/boxbg.gif +0 -0
  74. data/data/webgen/website_styles/andreas06/src/images/greypx.gif +0 -0
  75. data/data/webgen/website_styles/andreas06/src/images/header.jpg +0 -0
  76. data/data/webgen/website_styles/andreas06/src/images/innerbg.gif +0 -0
  77. data/data/webgen/website_styles/andreas06/src/images/leaves.jpg +0 -0
  78. data/data/webgen/website_styles/andreas06/src/images/tabs.gif +0 -0
  79. data/data/webgen/website_styles/andreas07/README +15 -0
  80. data/data/webgen/website_styles/andreas07/src/browserfix.css +7 -0
  81. data/data/webgen/website_styles/andreas07/src/default.css +92 -0
  82. data/data/webgen/website_styles/andreas07/src/default.template +42 -0
  83. data/data/webgen/website_styles/andreas07/src/images/bodybg.gif +0 -0
  84. data/data/webgen/website_styles/andreas07/src/images/sidebarbg.gif +0 -0
  85. data/data/webgen/website_styles/andreas08/README +14 -0
  86. data/data/webgen/website_styles/andreas08/src/default.css +224 -0
  87. data/data/webgen/website_styles/andreas08/src/default.template +51 -0
  88. data/data/webgen/website_styles/andreas09/README +14 -0
  89. data/data/webgen/website_styles/andreas09/src/default.css +308 -0
  90. data/data/webgen/website_styles/andreas09/src/default.template +68 -0
  91. data/data/webgen/website_styles/andreas09/src/images/bodybg-black.jpg +0 -0
  92. data/data/webgen/website_styles/andreas09/src/images/bodybg-green.jpg +0 -0
  93. data/data/webgen/website_styles/andreas09/src/images/bodybg-orange.jpg +0 -0
  94. data/data/webgen/website_styles/andreas09/src/images/bodybg-purple.jpg +0 -0
  95. data/data/webgen/website_styles/andreas09/src/images/bodybg-red.jpg +0 -0
  96. data/data/webgen/website_styles/andreas09/src/images/bodybg.jpg +0 -0
  97. data/data/webgen/website_styles/andreas09/src/images/footerbg.jpg +0 -0
  98. data/data/webgen/website_styles/andreas09/src/images/menuhover-black.jpg +0 -0
  99. data/data/webgen/website_styles/andreas09/src/images/menuhover-green.jpg +0 -0
  100. data/data/webgen/website_styles/andreas09/src/images/menuhover-orange.jpg +0 -0
  101. data/data/webgen/website_styles/andreas09/src/images/menuhover-purple.jpg +0 -0
  102. data/data/webgen/website_styles/andreas09/src/images/menuhover-red.jpg +0 -0
  103. data/data/webgen/website_styles/andreas09/src/images/menuhover.jpg +0 -0
  104. data/data/webgen/website_styles/simple/README +6 -0
  105. data/data/webgen/website_styles/simple/src/default.css +84 -0
  106. data/data/webgen/website_styles/simple/src/default.template +36 -0
  107. data/data/webgen/website_templates/default/README +6 -0
  108. data/data/webgen/website_templates/default/src/index.page +8 -0
  109. data/data/webgen/website_templates/project/README +5 -0
  110. data/data/webgen/website_templates/project/src/about.page +12 -0
  111. data/data/webgen/website_templates/project/src/download.page +15 -0
  112. data/data/webgen/website_templates/project/src/features.page +8 -0
  113. data/data/webgen/website_templates/project/src/index.page +9 -0
  114. data/data/webgen/website_templates/project/src/screenshots.page +18 -0
  115. data/doc/contentprocessor.template +11 -0
  116. data/doc/contentprocessor/blocks.page +66 -0
  117. data/doc/contentprocessor/builder.page +80 -0
  118. data/doc/contentprocessor/erb.page +56 -0
  119. data/doc/contentprocessor/erubis.page +46 -0
  120. data/doc/contentprocessor/haml.page +47 -0
  121. data/doc/contentprocessor/maruku.page +41 -0
  122. data/doc/contentprocessor/rdiscount.page +37 -0
  123. data/doc/contentprocessor/rdoc.page +36 -0
  124. data/doc/contentprocessor/redcloth.page +39 -0
  125. data/doc/contentprocessor/sass.page +31 -0
  126. data/doc/contentprocessor/tags.page +73 -0
  127. data/doc/extensions.metainfo +29 -0
  128. data/doc/extensions.page +16 -0
  129. data/doc/extensions.template +17 -0
  130. data/doc/faq.page +214 -0
  131. data/doc/getting_started.page +134 -0
  132. data/doc/index.page +65 -0
  133. data/doc/manual.page +532 -0
  134. data/doc/reference_configuration.page +646 -0
  135. data/doc/reference_metainfo.page +213 -0
  136. data/doc/sourcehandler.template +21 -0
  137. data/doc/sourcehandler/copy.page +19 -0
  138. data/doc/sourcehandler/directory.page +27 -0
  139. data/doc/sourcehandler/feed.page +82 -0
  140. data/doc/sourcehandler/metainfo.page +41 -0
  141. data/doc/sourcehandler/page.page +30 -0
  142. data/doc/sourcehandler/sitemap.page +46 -0
  143. data/doc/sourcehandler/template.page +45 -0
  144. data/doc/sourcehandler/virtual.page +49 -0
  145. data/doc/tag.template +25 -0
  146. data/doc/tag/breadcrumbtrail.page +40 -0
  147. data/doc/tag/coderay.page +49 -0
  148. data/doc/tag/date.page +31 -0
  149. data/doc/tag/executecommand.page +26 -0
  150. data/doc/tag/includefile.page +32 -0
  151. data/doc/tag/langbar.page +22 -0
  152. data/doc/tag/menu.page +92 -0
  153. data/doc/tag/metainfo.page +29 -0
  154. data/doc/tag/relocatable.page +38 -0
  155. data/doc/tag/sitemap.page +31 -0
  156. data/doc/upgrading.page +139 -0
  157. data/doc/webgen_page_format.page +128 -0
  158. data/lib/webgen/blackboard.rb +73 -0
  159. data/lib/webgen/cache.rb +85 -0
  160. data/lib/webgen/cli.rb +118 -0
  161. data/lib/webgen/cli/create_command.rb +64 -0
  162. data/lib/webgen/cli/run_command.rb +20 -0
  163. data/lib/webgen/cli/utils.rb +86 -0
  164. data/lib/webgen/cli/webgui_command.rb +49 -0
  165. data/lib/webgen/common.rb +10 -0
  166. data/lib/webgen/common/sitemap.rb +76 -0
  167. data/lib/webgen/configuration.rb +147 -0
  168. data/lib/webgen/contentprocessor.rb +96 -0
  169. data/lib/webgen/contentprocessor/blocks.rb +46 -0
  170. data/lib/webgen/contentprocessor/builder.rb +26 -0
  171. data/lib/webgen/contentprocessor/context.rb +90 -0
  172. data/lib/webgen/contentprocessor/erb.rb +24 -0
  173. data/lib/webgen/contentprocessor/erubis.rb +40 -0
  174. data/lib/webgen/contentprocessor/haml.rb +25 -0
  175. data/lib/webgen/contentprocessor/maruku.rb +18 -0
  176. data/lib/webgen/contentprocessor/rdiscount.rb +15 -0
  177. data/lib/webgen/contentprocessor/rdoc.rb +17 -0
  178. data/lib/webgen/contentprocessor/redcloth.rb +15 -0
  179. data/lib/webgen/contentprocessor/sass.rb +18 -0
  180. data/lib/webgen/contentprocessor/tags.rb +134 -0
  181. data/lib/webgen/coreext.rb +10 -0
  182. data/lib/webgen/default_config.rb +198 -0
  183. data/lib/webgen/languages.rb +578 -0
  184. data/lib/webgen/loggable.rb +23 -0
  185. data/lib/webgen/logger.rb +78 -0
  186. data/lib/webgen/node.rb +347 -0
  187. data/lib/webgen/output.rb +37 -0
  188. data/lib/webgen/output/filesystem.rb +67 -0
  189. data/lib/webgen/page.rb +133 -0
  190. data/lib/webgen/path.rb +182 -0
  191. data/lib/webgen/source.rb +24 -0
  192. data/lib/webgen/source/filesystem.rb +58 -0
  193. data/lib/webgen/source/resource.rb +42 -0
  194. data/lib/webgen/source/stacked.rb +53 -0
  195. data/lib/webgen/sourcehandler.rb +202 -0
  196. data/lib/webgen/sourcehandler/base.rb +211 -0
  197. data/lib/webgen/sourcehandler/copy.rb +41 -0
  198. data/lib/webgen/sourcehandler/directory.rb +31 -0
  199. data/lib/webgen/sourcehandler/feed.rb +121 -0
  200. data/lib/webgen/sourcehandler/fragment.rb +71 -0
  201. data/lib/webgen/sourcehandler/metainfo.rb +117 -0
  202. data/lib/webgen/sourcehandler/page.rb +77 -0
  203. data/lib/webgen/sourcehandler/sitemap.rb +60 -0
  204. data/lib/webgen/sourcehandler/template.rb +68 -0
  205. data/lib/webgen/sourcehandler/virtual.rb +75 -0
  206. data/lib/webgen/tag.rb +23 -0
  207. data/lib/webgen/tag/base.rb +162 -0
  208. data/lib/webgen/tag/breadcrumbtrail.rb +71 -0
  209. data/lib/webgen/tag/coderay.rb +32 -0
  210. data/lib/webgen/tag/date.rb +18 -0
  211. data/lib/webgen/tag/executecommand.rb +29 -0
  212. data/lib/webgen/tag/includefile.rb +42 -0
  213. data/lib/webgen/tag/langbar.rb +52 -0
  214. data/lib/webgen/tag/menu.rb +186 -0
  215. data/lib/webgen/tag/metainfo.rb +25 -0
  216. data/lib/webgen/tag/relocatable.rb +53 -0
  217. data/lib/webgen/tag/sitemap.rb +42 -0
  218. data/lib/webgen/tree.rb +80 -0
  219. data/lib/webgen/version.rb +6 -0
  220. data/lib/webgen/webgentask.rb +148 -0
  221. data/lib/webgen/website.rb +214 -0
  222. data/lib/webgen/websiteaccess.rb +29 -0
  223. data/lib/webgen/websitemanager.rb +125 -0
  224. data/man/man1/webgen.1 +67 -0
  225. data/misc/default.css +360 -0
  226. data/misc/default.template +75 -0
  227. data/misc/htmldoc.metainfo +25 -0
  228. data/misc/htmldoc.virtual +5 -0
  229. data/misc/images/arrow.gif +0 -0
  230. data/misc/images/error.gif +0 -0
  231. data/misc/images/exclamation.gif +0 -0
  232. data/misc/images/headerbg.jpg +0 -0
  233. data/misc/images/information.gif +0 -0
  234. data/misc/images/quote.gif +0 -0
  235. data/setup.rb +1585 -0
  236. data/test/helper.rb +41 -0
  237. data/test/test_blackboard.rb +58 -0
  238. data/test/test_cache.rb +57 -0
  239. data/test/test_common_sitemap.rb +56 -0
  240. data/test/test_configuration.rb +66 -0
  241. data/test/test_contentprocessor.rb +31 -0
  242. data/test/test_contentprocessor_blocks.rb +34 -0
  243. data/test/test_contentprocessor_builder.rb +19 -0
  244. data/test/test_contentprocessor_context.rb +38 -0
  245. data/test/test_contentprocessor_erb.rb +20 -0
  246. data/test/test_contentprocessor_erubis.rb +47 -0
  247. data/test/test_contentprocessor_haml.rb +20 -0
  248. data/test/test_contentprocessor_maruku.rb +27 -0
  249. data/test/test_contentprocessor_rdiscount.rb +15 -0
  250. data/test/test_contentprocessor_rdoc.rb +16 -0
  251. data/test/test_contentprocessor_redcloth.rb +12 -0
  252. data/test/test_contentprocessor_sass.rb +20 -0
  253. data/test/test_contentprocessor_tags.rb +97 -0
  254. data/test/test_languages.rb +53 -0
  255. data/test/test_loggable.rb +30 -0
  256. data/test/test_logger.rb +73 -0
  257. data/test/test_node.rb +339 -0
  258. data/test/test_output_filesystem.rb +58 -0
  259. data/test/test_page.rb +203 -0
  260. data/test/test_path.rb +131 -0
  261. data/test/test_source_filesystem.rb +59 -0
  262. data/test/test_source_resource.rb +26 -0
  263. data/test/test_source_stacked.rb +34 -0
  264. data/test/test_sourcehandler_base.rb +92 -0
  265. data/test/test_sourcehandler_copy.rb +45 -0
  266. data/test/test_sourcehandler_directory.rb +25 -0
  267. data/test/test_sourcehandler_feed.rb +74 -0
  268. data/test/test_sourcehandler_fragment.rb +67 -0
  269. data/test/test_sourcehandler_metainfo.rb +93 -0
  270. data/test/test_sourcehandler_page.rb +70 -0
  271. data/test/test_sourcehandler_sitemap.rb +47 -0
  272. data/test/test_sourcehandler_template.rb +63 -0
  273. data/test/test_sourcehandler_virtual.rb +56 -0
  274. data/test/test_tag_base.rb +82 -0
  275. data/test/test_tag_breadcrumbtrail.rb +89 -0
  276. data/test/test_tag_coderay.rb +30 -0
  277. data/test/test_tag_date.rb +16 -0
  278. data/test/test_tag_executecommand.rb +39 -0
  279. data/test/test_tag_includefile.rb +48 -0
  280. data/test/test_tag_langbar.rb +60 -0
  281. data/test/test_tag_menu.rb +195 -0
  282. data/test/test_tag_metainfo.rb +17 -0
  283. data/test/test_tag_relocatable.rb +57 -0
  284. data/test/test_tag_sitemap.rb +44 -0
  285. data/test/test_tree.rb +69 -0
  286. data/test/test_webgentask.rb +21 -0
  287. data/test/test_website.rb +96 -0
  288. data/test/test_websiteaccess.rb +23 -0
  289. data/test/test_websitemanager.rb +68 -0
  290. metadata +575 -0
@@ -0,0 +1,38 @@
1
+ ---
2
+ title: Webgen::Tag::Relocatable
3
+ used_options:
4
+ - tag.relocatable.path
5
+ ---
6
+ ## Description
7
+
8
+ This tag ensures that the relative path to the specified path is always correct.
9
+
10
+ When the tag is used, it changes the directory part of the supplied path name to a relative path to
11
+ the destination and is most often used in template files. A relocatable tag looks like this:
12
+ `\{relocatable: default.css}`. If this was put into a template and the template was used by a file
13
+ in a subdirectory, then the `relocatable` tag would put `../default.css` into the output file; thus
14
+ ensuring that the relative path to file is valid.
15
+
16
+ > You can only use the `relocatable` tag with paths that are handled by webgen. If you want to
17
+ > handle paths that are not normally handled by webgen, create a virtual path for them.
18
+ {.exclamation}
19
+
20
+ If the specified path is an absolute URL (like `http://webgen.rubyforge.org`), it will just return
21
+ it. And if you specify an URL fragment, this fragment has to exist. If you don't want to resolve a
22
+ fragment, just don't specify it in the tag but afterwards!
23
+
24
+ ## Examples
25
+
26
+ <table class="examples">
27
+ <tr>
28
+ <th>Usage</th><th>Output</th>
29
+ </tr>
30
+ <tr>
31
+ <td>\{relocatable: /default.css}</td>
32
+ <td>{relocatable: /default.css}</td>
33
+ </tr>
34
+ <tr>
35
+ <td>\{relocatable: ../}</td>
36
+ <td>{relocatable: ../}</td>
37
+ </tr>
38
+ </table>
@@ -0,0 +1,31 @@
1
+ ---
2
+ title: Webgen::Tag::Sitemap
3
+ used_options:
4
+ - common.sitemap.honor_in_menu
5
+ - common.sitemap.any_lang
6
+ - common.sitemap.used_kinds
7
+ ---
8
+ ## Description
9
+
10
+ This tag is used to display a site map of the current website. The used nodes can be customized by
11
+ setting the above mentioned configuration options accordingly.
12
+
13
+ ## Examples
14
+
15
+ <table class="examples">
16
+ <tr>
17
+ <th>Usage</th><th>Output</th>
18
+ </tr>
19
+ <tr>
20
+ <td>\{sitemap: }</td>
21
+ <td>{sitemap: }</td>
22
+ </tr>
23
+ <tr>
24
+ <td>\{sitemap: {honor_in_menu: true}}</td>
25
+ <td>{sitemap: {honor_in_menu: true}}</td>
26
+ </tr>
27
+ <tr>
28
+ <td>\{sitemap: {honor_in_menu: true, used_kinds: []}}</td>
29
+ <td>{sitemap: {honor_in_menu: true, used_kinds: []}}</td>
30
+ </tr>
31
+ </table>
@@ -0,0 +1,139 @@
1
+ ---
2
+ title: Upgrading from 0.4.x
3
+ ---
4
+ # Upgrading
5
+
6
+ Here are step-by-step instructions on how to update your webgen website from 0.4.x to 0.5.x:
7
+
8
+ * **Update the configuration file `config.yaml`**
9
+
10
+ The configuration file syntax as well as the names of the configuration options and some defaults
11
+ changed. For example, the default processing pipeline now uses Maruku (a Markdown converter) as
12
+ markup language processor instead of Textile. You can find an overview over all available
13
+ configuration options in the [configuration option reference]({relocatable:
14
+ reference_configuration.html}). Also have a look at the [configuration file
15
+ documentation]({relocatable: manual.html#website-configfile}) for more information on the syntax
16
+ of this file and the available helpers.
17
+
18
+ * Name changes: All configuration options now use underscores to separate word parts instead of
19
+ camelCase.
20
+ * Syntax changes: The configuration options are not specific to a certain extension anymore. You
21
+ now need the full configuration option name to specify it. So instead of
22
+
23
+ Tag/Menu:
24
+ maxLevels: 4
25
+
26
+ you now use
27
+
28
+ tag.menu.max_levels: 4
29
+
30
+ * **Convert your `metainfo.yaml`**
31
+
32
+ This file is not supported anymore since webgen 0.5.x uses a more flexible way for specifying meta
33
+ information and virtual paths. You need to migrate its data to `metainfo` and `virtual` files in
34
+ the source directory. Have a look at the documentation of the [metainfo source
35
+ handler]({relocatable: sourcehandler/metainfo.html}) and the [virtual source
36
+ handler]({relocatable: sourcehandler/virtual.html}).
37
+
38
+ * **Update meta information names and values**
39
+
40
+ The names of some meta information keys have been changed. Meta information names are not
41
+ specified in camelCase anymore but with under\_scores. You can find a complete list of supported
42
+ meta information names in the [meta information reference]({relocatable:
43
+ reference_metainfo.html}). The most notable changes are:
44
+
45
+ * directoryName → routed\_title
46
+ * inMenu → in\_menu
47
+ * indexFile → index\_path
48
+ * omitIndexPath → omit\_index\_path
49
+ * outputNameStyle → output\_path\_style
50
+ * orderInfo → sort\_info
51
+
52
+ Also be aware that the syntax of some meta information keys has changed. For example, all meta
53
+ information keys that took a source path name, e.g. `index_path`, now take an localized canonical
54
+ name.
55
+
56
+ You need to change the names/value in all places where meta information can be specified:
57
+
58
+ * `metainfo` files
59
+ * `virtual` files
60
+ * page and template files
61
+
62
+ * **Files in [Webgen Page Format]({relocatable: webgen_page_format.html})**
63
+
64
+ Since the format of these files changed a little bit you may need to adapt all your files that use
65
+ it, that are primarily page and template files. The main change in the format was a different use
66
+ of the block start line. Whereas before you would write
67
+
68
+ --- content, textile
69
+
70
+ for specifying the name of the block and its processor, you now can specify any number of
71
+ options. Two options are currently used by webgen: `name` and `pipeline`. So you could change the
72
+ name and the processing pipeline of a block by using a block start line like:
73
+
74
+ --- name:other pipeline:tags,maruku,blocks
75
+
76
+ * **Block inclusion in template/page files**
77
+
78
+ The way how named blocks are included has changed. This feature is now provided by the content
79
+ processor [blocks]({relocatable: contentprocessor/blocks.html}) instead of the tag `block`. This
80
+ allows you to specify the point in the processing pipeline when a block should be included. So you
81
+ definitely need to update your `default.template` file as well as any other page/template file
82
+ where you used the `block` tag.
83
+
84
+ So you need to look for `\{block: content}` tags (where `content` is just a place holder for the
85
+ name of the block that should be included) and replace them with `<webgen:block name='content'
86
+ />`.
87
+
88
+ * **Update tag names and parameters**
89
+
90
+ Since the names of the configuration options changed (from using camelCase to using under\_scores)
91
+ and some tags have different options, you need to change all tag parameters. You may also need to
92
+ convert old tag names to new ones (same reason: camelCase to under\_score), for example,
93
+ `includeFile` is now `include_file`.
94
+
95
+ * **Update your ERB code**
96
+
97
+ If you have any ERB code in your template or page files you will most certainly have to adapt them
98
+ to the new [API]({relocatable: api.html}). One thing that has been used often is the check if a
99
+ page file has a certain block:
100
+
101
+ <%% if node.node_info[:page_data].blocks.has_key?('NAME') %>
102
+ ...
103
+ <%% end %>
104
+
105
+ This needs to be changed into the following:
106
+
107
+ <%% if context.content_node.node_info[:page].blocks.has_key?('NAME') %>
108
+ ...
109
+ <%% end %>
110
+
111
+ * **Extensions development**
112
+
113
+ Since the complete core of webgen has changed you need to rewrite all your plugins for the 0.5.x
114
+ series. Howver, webgen has complete [API documentation]({relocatable: api.html}) now which
115
+ provides you with all needed information as well as examples on how to implement source handlers,
116
+ tags, content processors, ... If you still have any questions, don't hesitate to contact me or
117
+ write a mail to the mailing list!
118
+
119
+ * **Running webgen on the converted website**
120
+
121
+ You now can run webgen 0.5.x on the converted website. This helps in ironing out the remaining
122
+ errors, for example:
123
+
124
+ * If you have forgotten to change a block start line, you will get an application error and the
125
+ name of the file where the error occured.
126
+
127
+ * If you have overlooked changing a tag parameter, you will find `ERROR` and `WARN` lines in the
128
+ log output showing you what still needs to be changed.
129
+
130
+ * **Not Implement Yet**: There are several features of the 0.4.x series which are currently not
131
+ implemented in the 0.5.x series:
132
+
133
+ * source handlers: gallery, sipttra
134
+ * tags: customvar (won't be ported), download, htmlmetainfo, news (won't be ported, superceded
135
+ by blogging support), resource, wikilink
136
+ * misc: smiley replacer, html validators
137
+ * CLI commands: check, show, use
138
+
139
+ If you need any of those you have to wait till they are implemented or port them on your on.
@@ -0,0 +1,128 @@
1
+ ---
2
+ title: Webgen Page Format
3
+ ---
4
+ ## Webgen Page Format
5
+
6
+ The Webgen Page Format is a custom format designed primarily for page and template files. It
7
+ consists of an optional meta information block and one or more blocks of data; it is very simple and
8
+ easy to use.
9
+
10
+ ## Structure
11
+
12
+ A file using the Webgen Page Format consists of one or more blocks which are the smallest units
13
+ recongnized. Blocks are separated from each other through a line containing three dashes. This is
14
+ illustrated in the following examples which are all valid files in WebPage Format:
15
+
16
+ Example 1:
17
+
18
+ Here is a block!
19
+
20
+ Example 2:
21
+
22
+ This is one block of the file
23
+ ---
24
+ This is another block.
25
+
26
+ Example 3:
27
+
28
+ Block 1
29
+ --- name:block2
30
+ Block 2
31
+ --- name:block3
32
+ Block 3...
33
+
34
+ If you want to use three dashes in a block but you don't want to end the block, you have to escape
35
+ them with a backslash character, like this:
36
+
37
+ Block 1
38
+ \---
39
+ still Block 1
40
+ --- name:block2
41
+ Block 2
42
+
43
+ All of the above examples show one kind of block, the content block. However, there may also be
44
+ another type of block: the meta information block. Following is a short description of both kinds,
45
+ starting with the meta information block.
46
+
47
+
48
+ ### Meta Information Block
49
+
50
+ Each file in Webgen Page Format can have zero or one meta information blocks. This block is
51
+ specified at the beginning of the file. To tell the parser that the first block is the meta
52
+ information block and not a content block, you have to start the file with three dashes:
53
+
54
+ ---
55
+ title: The title set by Meta info
56
+ ---
57
+ This is the content of the file
58
+
59
+ The above defines a meta information block and a content block. The meta information block has to be
60
+ in YAML format and should contain key-value pairs of meta information. [YAML](http://www.yaml.org)
61
+ is a simple markup language designed for ease of use and although you define structured data with
62
+ it, it feels like just writing a plain text document.
63
+
64
+
65
+ ### Content Blocks
66
+
67
+ A content block is used to provide content in a specific format. Each file in Webgen Page Format
68
+ needs to have at least one content block which may be empty. However, it can have as many content
69
+ blocks as necessary. Each content block needs to have a unique name and additional options can also
70
+ be set.
71
+
72
+ The name uniquely identifies a content block and is used to access it. The only option used by
73
+ webgen is the `pipeline` option which specifies the processing pipeline for the block. The
74
+ processing pipeline is used for rendering the block by using the specified content processors in the
75
+ specified order. There are many different content processors available - have a look at the
76
+ [extensions page]({relocatable: extensions.html}) for an overview.
77
+
78
+ There are also defaults for the name and the options of a block but they can be overwritten. You can
79
+ use one of two ways to do this:
80
+
81
+ * you either specify the name and additional options of the block on the starting line with the
82
+ three dashes
83
+
84
+ * or you use the special meta information `block` to define the names and options of one or all
85
+ blocks.
86
+
87
+ The following example uses the first technique to override the name and/or the `pipeline` option:
88
+
89
+ 1. content block of the file
90
+ --- name:sidebar pipeline:maruku,tags
91
+ 2. content block of the file
92
+ --- name:other
93
+ 3. content block of the file
94
+
95
+ The first block has no identifieres set (there is no line with three dashes and the identifieres).
96
+ Therefore the default value for the name is used: `content`. The second block is named `sidebar` and
97
+ uses the processing pipeline `maruku,tags`. As you can see, the name of a block as well as
98
+ additional options are specified by stating the key (e.g. `name` or `pipeline`) followed by a colon
99
+ and the value. Multiple options are separated via one or more spaces. The value of a block option is
100
+ parsed with YAML. For example, when specifying `use_something:true` the value `true` is
101
+ automatically converted from the string `true` to the boolean `true`.
102
+
103
+ > Only the first block gets the default name of `content`. The second and following blocks have
104
+ > numbered names like `block2`, `block3` and so on.
105
+ {.information}
106
+
107
+ You can also set the name and additional options of the content blocks by using the special `blocks`
108
+ meta information. It is a hash using the index of a block (or the special value `default`) as key
109
+ and the options as values. The above example can therefore also be written like this:
110
+
111
+ ---
112
+ blocks: \{2: {name: sidebar, pipeline: maruku,tags}, 3: {name: other}}
113
+ ---
114
+ 1. content block of the file
115
+ ---
116
+ 2. content block of the file
117
+ ---
118
+ 3. content block of the file
119
+
120
+ When selecting a value for the name of a block or an option, the following precedence is used (from
121
+ low to high):
122
+
123
+ * global defaults set via the `default` key of the meta information `blocks`
124
+ * block defaults set via the meta information `blocks`
125
+ * the `--- line` options
126
+
127
+ As stated above, the "option" `name` is special insofar that when it is not set, an automatic name
128
+ gets generated.
@@ -0,0 +1,73 @@
1
+ module Webgen
2
+
3
+ # A blackboard object provides two features for inter-object communication:
4
+ #
5
+ # * services: An object can add a service to the blackboard which can be called by any other
6
+ # object by just specifing the service name. Therefore it is easy to change the
7
+ # underlying implementation of the service and there are no hard dependencies on
8
+ # specific class or method names.
9
+ #
10
+ # * listeners: Objects may register themselves for specific messsage names and get notified when
11
+ # such a message gets dispatched.
12
+ class Blackboard
13
+
14
+ # Create a new Blackboard object.
15
+ def initialize
16
+ @listener = {}
17
+ @services = {}
18
+ end
19
+
20
+ # Add the +callable_object+ or the given block as listener for the messages +msg_names+ (one
21
+ # message name or an array of message names).
22
+ def add_listener(msg_names = nil, callable_object = nil, &block)
23
+ callable_object = callable_object || block
24
+ if !callable_object.nil?
25
+ raise ArgumentError, "The listener needs to respond to 'call'" unless callable_object.respond_to?(:call)
26
+ [msg_names].flatten.compact.each {|name| (@listener[name] ||= []) << callable_object}
27
+ else
28
+ raise ArgumentError, "You have to provide a callback object or a block"
29
+ end
30
+ end
31
+
32
+ # Remove the given object from the dispatcher queues of the message names specified in
33
+ # +msg_names+.
34
+ def del_listener(msg_names, callable_object)
35
+ [msg_names].flatten.each {|name| @listener[name].delete(callable_object) if @listener[name]}
36
+ end
37
+
38
+ # Dispatch the message +msg_name+ to all listeners for this message, passing the given
39
+ # arguments.
40
+ def dispatch_msg(msg_name, *args)
41
+ return unless @listener[msg_name]
42
+ @listener[msg_name].each {|obj| obj.call(*args)}
43
+ end
44
+
45
+ # Add a service named +service_name+ provided by the +callable_object+ or a block to the
46
+ # blackboard.
47
+ def add_service(service_name, callable_object = nil, &block)
48
+ callable_object = callable_object || block
49
+ if @services.has_key?(service_name)
50
+ raise "The service name '#{service_name}' is already taken"
51
+ else
52
+ raise ArgumentError, "An object providing a service needs to respond to 'call'" unless callable_object.respond_to?(:call)
53
+ @services[service_name] = callable_object
54
+ end
55
+ end
56
+
57
+ # Delete the service +service_name+.
58
+ def del_service(service_name)
59
+ @services.delete(service_name)
60
+ end
61
+
62
+ # Invoke the service called +service_name+ with the given arguments.
63
+ def invoke(service_name, *args, &block)
64
+ if @services.has_key?(service_name)
65
+ @services[service_name].call(*args, &block)
66
+ else
67
+ raise ArgumentError, "No such service named '#{service_name}' available"
68
+ end
69
+ end
70
+
71
+ end
72
+
73
+ end
@@ -0,0 +1,85 @@
1
+ require 'set'
2
+ require 'facets/kernel/constant'
3
+
4
+ module Webgen
5
+
6
+ # A cache object provides access to various caches to speed up rendering of a website.
7
+ #
8
+ # permanent:: The permanent cache should be used for data that should be available between webgen
9
+ # runs.
10
+ #
11
+ # volatile:: The volatile cache is used for data that can easily be regenerated but might be
12
+ # expensive to do so. This cache is not stored between webgen runs.
13
+ #
14
+ # standard:: The standard cache saves data between webgen runs and returns the cached data (not
15
+ # the newly set data) if it is available. This is useful, for example, to store file
16
+ # modifcation times and check if a file has been changed between runs.
17
+ #
18
+ # The standard cache should be accessed through the <tt>[]</tt> method which returns the correct
19
+ # value and the <tt>[]=</tt> method should be used for setting the new value. However, if you
20
+ # really need to access a particular value of the old or new standard cache, you can use the
21
+ # accessors +old_data+ and +new_data+.
22
+ class Cache
23
+
24
+ # The permanent cache hash.
25
+ attr_reader :permanent
26
+
27
+ # The volatile cache hash.
28
+ attr_reader :volatile
29
+
30
+ # The cache data stored in the previous webgen run.
31
+ attr_reader :old_data
32
+
33
+ # The cache data stored in the current webgen run.
34
+ attr_reader :new_data
35
+
36
+ # Create a new cache object.
37
+ def initialize()
38
+ @old_data = {}
39
+ @new_data = {}
40
+ @volatile = {}
41
+ @permanent = {:classes => []}
42
+ end
43
+
44
+ # Return the cached data (or, if it is not available, the new data) identified by +key+ from the
45
+ # standard cache.
46
+ def [](key)
47
+ if @old_data.has_key?(key)
48
+ @old_data[key]
49
+ else
50
+ @new_data[key]
51
+ end
52
+ end
53
+
54
+ # Store +value+ identified by +key+ in the standard cache.
55
+ def []=(key, value)
56
+ @new_data[key] = value
57
+ end
58
+
59
+ # Restore the caches from +data+ and recreate all cached instances (see #instance).
60
+ def restore(data)
61
+ @old_data, @permanent = *data
62
+ @permanent[:classes].each {|klass| instance(klass)}
63
+ end
64
+
65
+ # Return all caches that should be available between webgen runs.
66
+ def dump
67
+ [@old_data.merge(@new_data), @permanent]
68
+ end
69
+
70
+ # Reset the volatile cache.
71
+ def reset_volatile_cache
72
+ @volatile = {:classes => @volatile[:classes]}
73
+ end
74
+
75
+ # Return the unique instance of the class +name+. This method should be used when it is
76
+ # essential that webgen uses only one object of a class or when an object should automatically
77
+ # be recreated upon cache restoration (see #restore).
78
+ def instance(name)
79
+ @permanent[:classes] << name unless @permanent[:classes].include?(name)
80
+ (@volatile[:classes] ||= {})[name] ||= constant(name).new
81
+ end
82
+
83
+ end
84
+
85
+ end