thewoolleyman-webgen 0.5.8.20090419

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 (309) hide show
  1. data/AUTHORS +8 -0
  2. data/COPYING +10 -0
  3. data/GPL +340 -0
  4. data/Rakefile +334 -0
  5. data/THANKS +18 -0
  6. data/bin/webgen +12 -0
  7. data/data/webgen/resources.yaml +3 -0
  8. data/data/webgen/webgui/controller/main.rb +135 -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 +10 -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 +62 -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 +129 -0
  117. data/doc/contentprocessor/builder.page +80 -0
  118. data/doc/contentprocessor/erb.page +59 -0
  119. data/doc/contentprocessor/erubis.page +46 -0
  120. data/doc/contentprocessor/fragments.page +25 -0
  121. data/doc/contentprocessor/haml.page +47 -0
  122. data/doc/contentprocessor/maruku.page +41 -0
  123. data/doc/contentprocessor/rdiscount.page +37 -0
  124. data/doc/contentprocessor/rdoc.page +36 -0
  125. data/doc/contentprocessor/redcloth.page +39 -0
  126. data/doc/contentprocessor/sass.page +31 -0
  127. data/doc/contentprocessor/tags.page +73 -0
  128. data/doc/extensions.metainfo +29 -0
  129. data/doc/extensions.page +16 -0
  130. data/doc/extensions.template +17 -0
  131. data/doc/faq.page +219 -0
  132. data/doc/getting_started.page +135 -0
  133. data/doc/index.page +65 -0
  134. data/doc/manual.page +589 -0
  135. data/doc/reference_configuration.page +959 -0
  136. data/doc/reference_metainfo.page +222 -0
  137. data/doc/source/filesystem.page +39 -0
  138. data/doc/source/tararchive.page +40 -0
  139. data/doc/sourcehandler.template +21 -0
  140. data/doc/sourcehandler/copy.page +19 -0
  141. data/doc/sourcehandler/directory.page +27 -0
  142. data/doc/sourcehandler/feed.page +105 -0
  143. data/doc/sourcehandler/metainfo.page +41 -0
  144. data/doc/sourcehandler/page.page +14 -0
  145. data/doc/sourcehandler/sitemap.page +46 -0
  146. data/doc/sourcehandler/template.page +45 -0
  147. data/doc/sourcehandler/virtual.page +49 -0
  148. data/doc/tag.template +25 -0
  149. data/doc/tag/breadcrumbtrail.page +40 -0
  150. data/doc/tag/coderay.page +49 -0
  151. data/doc/tag/date.page +31 -0
  152. data/doc/tag/executecommand.page +26 -0
  153. data/doc/tag/includefile.page +32 -0
  154. data/doc/tag/langbar.page +44 -0
  155. data/doc/tag/link.page +44 -0
  156. data/doc/tag/menu.page +106 -0
  157. data/doc/tag/metainfo.page +29 -0
  158. data/doc/tag/relocatable.page +38 -0
  159. data/doc/tag/sitemap.page +31 -0
  160. data/doc/tag/tikz.page +158 -0
  161. data/doc/upgrading.page +139 -0
  162. data/doc/webgen_page_format.page +129 -0
  163. data/lib/webgen/blackboard.rb +78 -0
  164. data/lib/webgen/cache.rb +87 -0
  165. data/lib/webgen/cli.rb +124 -0
  166. data/lib/webgen/cli/apply_command.rb +64 -0
  167. data/lib/webgen/cli/create_command.rb +66 -0
  168. data/lib/webgen/cli/run_command.rb +22 -0
  169. data/lib/webgen/cli/utils.rb +88 -0
  170. data/lib/webgen/cli/webgui_command.rb +72 -0
  171. data/lib/webgen/common.rb +21 -0
  172. data/lib/webgen/common/sitemap.rb +83 -0
  173. data/lib/webgen/configuration.rb +153 -0
  174. data/lib/webgen/contentprocessor.rb +99 -0
  175. data/lib/webgen/contentprocessor/blocks.rb +60 -0
  176. data/lib/webgen/contentprocessor/builder.rb +30 -0
  177. data/lib/webgen/contentprocessor/context.rb +89 -0
  178. data/lib/webgen/contentprocessor/erb.rb +28 -0
  179. data/lib/webgen/contentprocessor/erubis.rb +40 -0
  180. data/lib/webgen/contentprocessor/fragments.rb +25 -0
  181. data/lib/webgen/contentprocessor/haml.rb +30 -0
  182. data/lib/webgen/contentprocessor/maruku.rb +20 -0
  183. data/lib/webgen/contentprocessor/rdiscount.rb +17 -0
  184. data/lib/webgen/contentprocessor/rdoc.rb +19 -0
  185. data/lib/webgen/contentprocessor/redcloth.rb +17 -0
  186. data/lib/webgen/contentprocessor/sass.rb +20 -0
  187. data/lib/webgen/contentprocessor/tags.rb +136 -0
  188. data/lib/webgen/coreext.rb +13 -0
  189. data/lib/webgen/default_config.rb +215 -0
  190. data/lib/webgen/languages.rb +589 -0
  191. data/lib/webgen/loggable.rb +25 -0
  192. data/lib/webgen/logger.rb +97 -0
  193. data/lib/webgen/node.rb +391 -0
  194. data/lib/webgen/output.rb +82 -0
  195. data/lib/webgen/output/filesystem.rb +69 -0
  196. data/lib/webgen/page.rb +153 -0
  197. data/lib/webgen/path.rb +194 -0
  198. data/lib/webgen/source.rb +54 -0
  199. data/lib/webgen/source/filesystem.rb +61 -0
  200. data/lib/webgen/source/resource.rb +44 -0
  201. data/lib/webgen/source/stacked.rb +55 -0
  202. data/lib/webgen/source/tararchive.rb +73 -0
  203. data/lib/webgen/sourcehandler.rb +226 -0
  204. data/lib/webgen/sourcehandler/base.rb +248 -0
  205. data/lib/webgen/sourcehandler/copy.rb +43 -0
  206. data/lib/webgen/sourcehandler/directory.rb +36 -0
  207. data/lib/webgen/sourcehandler/feed.rb +117 -0
  208. data/lib/webgen/sourcehandler/fragment.rb +68 -0
  209. data/lib/webgen/sourcehandler/memory.rb +43 -0
  210. data/lib/webgen/sourcehandler/metainfo.rb +128 -0
  211. data/lib/webgen/sourcehandler/page.rb +59 -0
  212. data/lib/webgen/sourcehandler/sitemap.rb +60 -0
  213. data/lib/webgen/sourcehandler/template.rb +66 -0
  214. data/lib/webgen/sourcehandler/virtual.rb +110 -0
  215. data/lib/webgen/tag.rb +27 -0
  216. data/lib/webgen/tag/base.rb +170 -0
  217. data/lib/webgen/tag/breadcrumbtrail.rb +70 -0
  218. data/lib/webgen/tag/coderay.rb +31 -0
  219. data/lib/webgen/tag/date.rb +18 -0
  220. data/lib/webgen/tag/executecommand.rb +30 -0
  221. data/lib/webgen/tag/includefile.rb +42 -0
  222. data/lib/webgen/tag/langbar.rb +52 -0
  223. data/lib/webgen/tag/link.rb +26 -0
  224. data/lib/webgen/tag/menu.rb +207 -0
  225. data/lib/webgen/tag/metainfo.rb +25 -0
  226. data/lib/webgen/tag/relocatable.rb +54 -0
  227. data/lib/webgen/tag/sitemap.rb +41 -0
  228. data/lib/webgen/tag/tikz.rb +119 -0
  229. data/lib/webgen/tree.rb +90 -0
  230. data/lib/webgen/version.rb +8 -0
  231. data/lib/webgen/webgentask.rb +152 -0
  232. data/lib/webgen/website.rb +342 -0
  233. data/lib/webgen/websiteaccess.rb +31 -0
  234. data/lib/webgen/websitemanager.rb +127 -0
  235. data/man/man1/webgen.1 +73 -0
  236. data/misc/default.css +384 -0
  237. data/misc/default.template +75 -0
  238. data/misc/htmldoc.metainfo +25 -0
  239. data/misc/htmldoc.virtual +5 -0
  240. data/misc/images/arrow.gif +0 -0
  241. data/misc/images/error.png +0 -0
  242. data/misc/images/headerbg.jpg +0 -0
  243. data/misc/images/important.png +0 -0
  244. data/misc/images/information.png +0 -0
  245. data/misc/images/quote.gif +0 -0
  246. data/misc/images/warning.png +0 -0
  247. data/setup.rb +1585 -0
  248. data/test/helper.rb +45 -0
  249. data/test/test_blackboard.rb +60 -0
  250. data/test/test_cache.rb +59 -0
  251. data/test/test_cli.rb +21 -0
  252. data/test/test_common.rb +18 -0
  253. data/test/test_common_sitemap.rb +58 -0
  254. data/test/test_configuration.rb +68 -0
  255. data/test/test_contentprocessor.rb +33 -0
  256. data/test/test_contentprocessor_blocks.rb +68 -0
  257. data/test/test_contentprocessor_builder.rb +23 -0
  258. data/test/test_contentprocessor_context.rb +40 -0
  259. data/test/test_contentprocessor_erb.rb +23 -0
  260. data/test/test_contentprocessor_erubis.rb +49 -0
  261. data/test/test_contentprocessor_fragments.rb +42 -0
  262. data/test/test_contentprocessor_haml.rb +23 -0
  263. data/test/test_contentprocessor_maruku.rb +29 -0
  264. data/test/test_contentprocessor_rdiscount.rb +17 -0
  265. data/test/test_contentprocessor_rdoc.rb +18 -0
  266. data/test/test_contentprocessor_redcloth.rb +15 -0
  267. data/test/test_contentprocessor_sass.rb +22 -0
  268. data/test/test_contentprocessor_tags.rb +99 -0
  269. data/test/test_languages.rb +67 -0
  270. data/test/test_loggable.rb +32 -0
  271. data/test/test_logger.rb +94 -0
  272. data/test/test_node.rb +367 -0
  273. data/test/test_output_filesystem.rb +60 -0
  274. data/test/test_page.rb +214 -0
  275. data/test/test_path.rb +165 -0
  276. data/test/test_source_filesystem.rb +76 -0
  277. data/test/test_source_resource.rb +28 -0
  278. data/test/test_source_stacked.rb +36 -0
  279. data/test/test_source_tararchive.rb +65 -0
  280. data/test/test_sourcehandler_base.rb +123 -0
  281. data/test/test_sourcehandler_copy.rb +47 -0
  282. data/test/test_sourcehandler_directory.rb +42 -0
  283. data/test/test_sourcehandler_feed.rb +77 -0
  284. data/test/test_sourcehandler_fragment.rb +69 -0
  285. data/test/test_sourcehandler_memory.rb +44 -0
  286. data/test/test_sourcehandler_metainfo.rb +118 -0
  287. data/test/test_sourcehandler_page.rb +65 -0
  288. data/test/test_sourcehandler_sitemap.rb +49 -0
  289. data/test/test_sourcehandler_template.rb +65 -0
  290. data/test/test_sourcehandler_virtual.rb +87 -0
  291. data/test/test_tag_base.rb +85 -0
  292. data/test/test_tag_breadcrumbtrail.rb +91 -0
  293. data/test/test_tag_coderay.rb +32 -0
  294. data/test/test_tag_date.rb +18 -0
  295. data/test/test_tag_executecommand.rb +41 -0
  296. data/test/test_tag_includefile.rb +50 -0
  297. data/test/test_tag_langbar.rb +72 -0
  298. data/test/test_tag_link.rb +69 -0
  299. data/test/test_tag_menu.rb +207 -0
  300. data/test/test_tag_metainfo.rb +19 -0
  301. data/test/test_tag_relocatable.rb +59 -0
  302. data/test/test_tag_sitemap.rb +47 -0
  303. data/test/test_tag_tikz.rb +69 -0
  304. data/test/test_tree.rb +70 -0
  305. data/test/test_webgentask.rb +23 -0
  306. data/test/test_website.rb +98 -0
  307. data/test/test_websiteaccess.rb +25 -0
  308. data/test/test_websitemanager.rb +70 -0
  309. metadata +613 -0
@@ -0,0 +1,31 @@
1
+ # -*- encoding: utf-8 -*-
2
+
3
+ module Webgen
4
+
5
+ # Should be mixed into modules/classes that need access to the current website object.
6
+ module WebsiteAccess
7
+
8
+ # The methods of this module are available on classes that include WebsiteAccess.
9
+ module ClassMethods
10
+
11
+ # See WebsiteAccess.website
12
+ def website
13
+ WebsiteAccess.website
14
+ end
15
+
16
+ end
17
+
18
+ def self.included(klass) #:nodoc:
19
+ super
20
+ klass.extend(ClassMethods)
21
+ end
22
+
23
+ # Return the current website object or +nil+.
24
+ def website
25
+ Thread.current[:webgen_website]
26
+ end
27
+ module_function :website
28
+
29
+ end
30
+
31
+ end
@@ -0,0 +1,127 @@
1
+ # -*- encoding: utf-8 -*-
2
+
3
+ require 'ostruct'
4
+ require 'fileutils'
5
+ require 'webgen/website'
6
+
7
+ module Webgen
8
+
9
+ # This class is used for managing webgen websites. It provides access to website templates and
10
+ # styles defined as resources and makes it easy to apply them to a webgen website.
11
+ #
12
+ # == General information
13
+ #
14
+ # Currently, the following actions are supported:
15
+ #
16
+ # * creating a website based on a website template (#create_website)
17
+ # * applying a template to an existing website (#apply_template)
18
+ # * applying a style to an existing website (#apply_style)
19
+ #
20
+ # A *website template* defines some initial pages which should be filled with real data. For
21
+ # example, the +project+ template defines several pages which are useful for software projects
22
+ # including a features and about page.
23
+ #
24
+ # A *style* defines, for example, the basic page layout (in the case of website styles) or how image
25
+ # galleries should look like (in the case of gallery styles). So styles are basically used to
26
+ # change the appearance of parts (or the whole) website. This makes them a powerful tool as this
27
+ # plugin makes it easy to change a style later!
28
+ #
29
+ # == website template and style resource naming convention
30
+ #
31
+ # Styles and website templates are defined using resources. Each such resource has to be a
32
+ # directory containing an optional README file in YAML format in which key-value pairs provide
33
+ # additional information about the style or website template. All other files/directories in the
34
+ # directory are copied to the root of the destination webgen website when the style or website
35
+ # template is used.
36
+ #
37
+ # This class uses a special naming convention to recognize website templates and styles:
38
+ #
39
+ # * A resource named <tt>webgen-website-template-TEMPLATE_NAME</tt> is considered to be a website
40
+ # template called TEMPLATE_NAME and can be later accessed using this name.
41
+ #
42
+ # * A resource named <tt>webgen-website-style-CATEGORY-STYLE_NAME</tt> is considered to be a style
43
+ # in the category CATEGORY called STYLE_NAME. There are no fixed categories, one can use
44
+ # anything here! Again, the style can later be accessed by providing the category and style
45
+ # name.
46
+ #
47
+ # Website template names have to be unique and style names have to be unique in respect to their
48
+ # categories!
49
+ #
50
+ # Note: All styles without a category or which are in the category 'website' are website styles.
51
+ class WebsiteManager
52
+
53
+ # A hash with the available website templates (mapping name to infos).
54
+ attr_reader :templates
55
+
56
+ # A hash with the available website styles (mapping name to infos).
57
+ attr_reader :styles
58
+
59
+ # The used Website object.
60
+ attr_reader :website
61
+
62
+ # Create a new WebsiteManager for the website +dir+.
63
+ def initialize(dir)
64
+ @website = Webgen::Website.new(dir)
65
+ @website.init
66
+ @styles = {}
67
+ @templates = {}
68
+
69
+ @website.execute_in_env do
70
+ [['webgen-website-style-', @styles], ['webgen-website-template-', @templates]].each do |prefix, var|
71
+ @website.config['resources'].select {|name, data| name =~ /^#{prefix}/}.each do |name, data|
72
+ paths = Webgen::Source::Resource.new(name).paths
73
+ readme = paths.select {|path| path == '/README' }.first
74
+ paths.delete(readme) if readme
75
+ infos = OpenStruct.new(readme.nil? ? {} : YAML::load(readme.io.data))
76
+ infos.paths = paths
77
+ var[name.sub(prefix, '')] = infos
78
+ end
79
+ end
80
+ end
81
+ end
82
+
83
+ # Create the basic website skeleton (without any template or style applied).
84
+ def create_website
85
+ raise "Directory <#{@website.directory}> does already exist!" if File.exists?(@website.directory)
86
+ @website.execute_in_env { write_paths(Webgen::Source::Resource.new('webgen-website-skeleton').paths) }
87
+ end
88
+
89
+ # Apply the given +template+ to the website by copying the template files.
90
+ def apply_template(name)
91
+ write_paths_to_website(@templates[name], 'template')
92
+ end
93
+
94
+ # Apply the given website style +name+ to the website by copying the styles files.
95
+ def apply_style(name)
96
+ write_paths_to_website(@styles[name], 'style')
97
+ end
98
+
99
+ #######
100
+ private
101
+ #######
102
+
103
+ # Do some sanity checks and write the +paths+ from +infos+ to the website directory.
104
+ def write_paths_to_website(infos, infos_type)
105
+ raise ArgumentError.new("Invalid #{infos_type} name") if infos.nil?
106
+ raise "Directory <#{@website.directory}> does not exist!" unless File.exists?(@website.directory)
107
+ write_paths(infos.paths)
108
+ end
109
+
110
+ # Write the paths to the website directory.
111
+ def write_paths(paths)
112
+ paths.each do |path|
113
+ output_path = File.join(@website.directory, path.path)
114
+ if path.path =~ /\/$/
115
+ FileUtils.mkdir_p(output_path)
116
+ else
117
+ FileUtils.mkdir_p(File.dirname(output_path))
118
+ path.io.stream do |source|
119
+ File.open(output_path, 'wb') {|f| FileUtils.copy_stream(source, f) }
120
+ end
121
+ end
122
+ end
123
+ end
124
+
125
+ end
126
+
127
+ end
data/man/man1/webgen.1 ADDED
@@ -0,0 +1,73 @@
1
+ .TH "WEBGEN" 1 "July 2008"
2
+ .SH NAME
3
+ webgen \- a fast, powerful and extensible static website generator
4
+ .SH SYNOPSIS
5
+ .B webgen
6
+ [\fIglobal options\fR]
7
+ \fIcommand\fR
8
+ [\fIcommand arguments\fR] [command [command arguments] ...] [args]
9
+ .SH DESCRIPTION
10
+ webgen is used to generate static websites from content files written in a markup language and
11
+ template files. You create one template file in which you define the layout of your pages and where
12
+ the content should go. After that you create content files called page files in which you only
13
+ define the content. webgen merges the page's content into the template and generates the final HTML
14
+ output. During the last step so called webgen tags are substituted so that, for example, menus can
15
+ automatically be generated.
16
+ .SH GLOBAL OPTIONS
17
+ .TP
18
+ .B \-d, \-\-directory DIR
19
+ Set the website directectory. if none specified, the current directory is used.
20
+ .TP
21
+ .B \-v, \-\-verbose
22
+ Show more output by default.
23
+ .TP
24
+ .B \-q, \-\-quiet
25
+ Show less output by default. If this option is specified, then no output is shown during rendering
26
+ of a website.
27
+ .TP
28
+ .B \-l, \-\-log-level LEVEL
29
+ Set the logging level to LEVEL which can be a number between 0 (debug output) and 3 (only error
30
+ output).
31
+ .TP
32
+ .B \-h, \-\-help
33
+ Show generic help.
34
+ .TP
35
+ .B \-\-version
36
+ Show the version of the program and exit.
37
+ .SH COMMANDS
38
+ .TP
39
+ \fBcreate\fR
40
+ Creates the basic directories and files for webgen. This includes the source and
41
+ output directories as well as an empty extensions directory. Also, a basic template plus a CSS and
42
+ an index file are created. Takes the \fIdirectory\fR to create the webgen structure in as an
43
+ argument.
44
+ .TP
45
+ \fBhelp\fR
46
+ Provides help for the individual commands.
47
+ .TP
48
+ \fBrender\fR
49
+ Runs webgen which will result in the generation of the HTML data in the output
50
+ directory from the files in the source directory. This command is used as the default command when
51
+ no command was issued.
52
+ .TP
53
+ \fBversion\fR
54
+ Shows the version of the program and exit.
55
+ .TP
56
+ \fBwebgui\fR
57
+ Starts the webgen webgui, a browser based graphical user interface for manging webgen websites.
58
+ .SH ENVIRONMENT VARIABLES
59
+ webgen's behaviour is affected by the following environment variables:
60
+ .TP
61
+ \fBWEBGEN_WEBSITE\fR
62
+ If no website is specified via the \-d option and this variable is set, webgen assumes that its
63
+ content is the webgen website directory that should be used.
64
+ .SH SEE ALSO
65
+ The webgen website, http://webgen.rubyforge.org/ for more information.
66
+ .SH AUTHOR
67
+ webgen was written by Thomas Leitner <t_leitner@gmx.at>
68
+ .PP
69
+ This manual page was written by Paul van Tilburg <paulvt@debian.org> for the Debian project (but may
70
+ be used by others). This manual page was update to reflect webgen 0.4 change by Arnaud Cornet
71
+ <arnaud.cornet@gmail.com>. This manual page was updated to reflect webgen 0.5.x changes by Thomas
72
+ Leitner <t_leitner@gmx.at>.
73
+
data/misc/default.css ADDED
@@ -0,0 +1,384 @@
1
+ /********************************************
2
+ AUTHOR: Erwin Aligam
3
+ WEBSITE: http://www.styleshout.com/
4
+ TEMPLATE NAME: ablaze
5
+ TEMPLATE CODE: S-0009
6
+ VERSION: 2.1
7
+ *******************************************/
8
+
9
+ /********************************************
10
+ HTML ELEMENTS
11
+
12
+ ********************************************/
13
+
14
+ /* top elements */
15
+ * {
16
+ padding: 0;
17
+ margin: 0;
18
+ }
19
+
20
+ body {
21
+ margin: 0;
22
+ padding: 0;
23
+ font: normal .80em/1.5em 'Helvetica Neue', Tahoma, 'Trebuchet MS', sans-serif;
24
+ color: #000;
25
+ text-align: center;
26
+ background-color: #FCFFF5;
27
+ }
28
+
29
+ /* links */
30
+ a {
31
+ color: #3E606F;
32
+ background-color: inherit;
33
+ text-decoration: underline;
34
+ }
35
+
36
+ a:hover {
37
+ color: #193441;
38
+ background-color: #D1DBBD;
39
+ }
40
+
41
+ /* headers */
42
+ h1, h2, h3, h4, h5, h6 {
43
+ font: bold 1.3em 'Helvetica Neue', 'Trebuchet MS', Arial, Sans-serif;
44
+ color: #CE900A;
45
+ }
46
+ h1 { font-size: 1.6em; }
47
+ h2 { font-size: 1.4em; color: #A0080D }
48
+ h3 { font-size: 1.3em; }
49
+
50
+ #main h1 {
51
+ color: #193441;
52
+ padding-top: 15px;
53
+ }
54
+
55
+ #sidebar h1 {
56
+ font: bold 1.4em 'Helvetica Neue', 'Trebuchet MS', Arial, Sans-serif;
57
+ background: url(images/arrow.gif) no-repeat 0px .6em;
58
+ padding: 7px 0 7px 25px;
59
+ color: #193441;
60
+ }
61
+
62
+ p, h1, h2, h3 {
63
+ margin: 0;
64
+ padding: 5px 0px;
65
+ }
66
+
67
+ ul, ol {
68
+ margin: 10px 0px;
69
+ padding: 0 15px;
70
+ color: #000; /* #3E606F; */
71
+ }
72
+
73
+ /* images */
74
+ img {
75
+ border: none;
76
+ }
77
+
78
+ pre {
79
+ margin: 5px 0px;
80
+ padding: 5px;
81
+ text-align: left;
82
+ overflow: auto;
83
+ font: 'Lucida Console', 'courier new', monospace;
84
+ color: #193441;
85
+ background: #D1DBBD;
86
+ border-bottom: 1px solid #91AA9D;
87
+ border-top: 1px solid #91AA9D;
88
+ }
89
+
90
+ code {
91
+ font: 'Lucida Console', 'courier new', monospace;
92
+ color: #193441;
93
+ font-size: 115%;
94
+ }
95
+
96
+ acronym {
97
+ cursor: help;
98
+ border-bottom: 1px solid #777;
99
+ }
100
+
101
+ blockquote.warning, blockquote.error, blockquote.information, blockquote.important {
102
+ margin: 10px 0px;
103
+ padding: 5px 0 0 50px;
104
+ min-height: 40px;
105
+ border: 1px solid #91AA9D;
106
+ font: 'Helvetica Neue', 'Trebuchet MS', Sans-serif;
107
+ background-color: #D1DBBD;
108
+ background-image: url(images/quote.gif);
109
+ background-repeat: no-repeat;
110
+ background-position: 9px 5px;
111
+ }
112
+
113
+ blockquote.warning {
114
+ background-image: url(images/warning.png);
115
+ }
116
+
117
+ blockquote.warning:before {
118
+ content: 'Caution';
119
+ font: bold 1.3em 'Helvetica Neue', 'Trebuchet MS', Arial, Sans-serif;
120
+ }
121
+
122
+ blockquote.error {
123
+ background-image: url(images/error.png);
124
+ }
125
+
126
+ blockquote.error:before {
127
+ content: 'Warning';
128
+ font: bold 1.3em 'Helvetica Neue', 'Trebuchet MS', Arial, Sans-serif;
129
+ }
130
+
131
+ blockquote.information {
132
+ background-image: url(images/information.png);
133
+ }
134
+
135
+ blockquote.information:before {
136
+ content: 'Information';
137
+ font: bold 1.3em 'Helvetica Neue', 'Trebuchet MS', Arial, Sans-serif;
138
+ }
139
+
140
+ blockquote.important {
141
+ background-image: url(images/important.png);
142
+ }
143
+
144
+ blockquote.important:before {
145
+ content: 'Important';
146
+ font: bold 1.3em 'Helvetica Neue', 'Trebuchet MS', Arial, Sans-serif;
147
+ }
148
+
149
+ blockquote pre {
150
+ border: none;
151
+ }
152
+
153
+ /***********************
154
+ LAYOUT
155
+ ************************/
156
+
157
+ #header-content, #content {
158
+ width: 100%;
159
+ }
160
+
161
+ /* header */
162
+ #header {
163
+ background: #444 url(images/headerbg.jpg) repeat-x 0 0;
164
+ height: 120px;
165
+ text-align: left;
166
+ }
167
+
168
+ #header-content {
169
+ position: relative;
170
+ margin: 0 auto;
171
+ padding: 0;
172
+ }
173
+
174
+ #header-content #logo {
175
+ position: absolute;
176
+ font: bold 50px Verdana, 'Trebuchet Ms', Sans-serif;
177
+ letter-spacing: -2px;
178
+ color: #FCFFF5;
179
+ margin: 0; padding: 0;
180
+
181
+ top: 5px; left: 20px;
182
+ }
183
+
184
+ #header-content #slogan {
185
+ position: absolute;
186
+ font: bold 16px 'Trebuchet Ms', Sans-serif;
187
+ text-transform: none;
188
+ color: #CCC;
189
+ margin: 0; padding: 0;
190
+
191
+ top: 65px; left: 35px;
192
+ }
193
+
194
+ /* header menu */
195
+ #header-content ul {
196
+ position: absolute;
197
+ right: 20px; top: 75px;
198
+ font: bolder 1.3em 'Helvetica Neue', 'Trebuchet MS', sans-serif;
199
+ color: #FCFFF5;
200
+ list-style: none;
201
+ margin: 0; padding: 0;
202
+ }
203
+ #header-content li {
204
+ float: left;
205
+ display: block;
206
+ color: #FCFFF5;
207
+ text-decoration: none;
208
+ }
209
+ #header-content li a, #header-content li span {
210
+ display: block;
211
+ color: #3E606F;
212
+ text-decoration: none;
213
+ padding: 3px 12px;
214
+ }
215
+ #header-content li a:hover {
216
+ background: #FCFFF5;
217
+ color: #A0080D;
218
+ }
219
+ #header-content li.webgen-menu-item-selected, #header-content li.webgen-menu-submenu-inhierarchy {
220
+ background: #FCFFF5;
221
+ color: #A0080D;
222
+ }
223
+
224
+ /* content */
225
+ #content-wrap {
226
+ clear: both;
227
+ float: left;
228
+ width: 100%;
229
+ }
230
+
231
+ #content {
232
+ text-align: left;
233
+ padding: 0; margin: 0 auto;
234
+ background: #91AA9D;
235
+ }
236
+
237
+ /* sidebar */
238
+ #sidebar {
239
+ float: right;
240
+ width: 340px;
241
+ margin: 0; padding: 10px;
242
+ background-color: #91AA9D;
243
+ }
244
+ #sidebar p {
245
+ margin: 0px;
246
+ padding-left: 10px;
247
+ }
248
+ #sidebar ul {
249
+ list-style: inside square;
250
+ margin: 0px;
251
+ padding: 0px;
252
+ }
253
+ #sidebar ul li {
254
+ padding: 0px;
255
+ margin: 0px;
256
+ padding-left: 1em;
257
+ padding-top: 0.3em;
258
+ }
259
+ #sidebar ul a {
260
+ color: #FCFFF5;
261
+ text-decoration: none;
262
+ padding: .3em 0 .3em 3px;
263
+ line-height: 1.5ex;
264
+ }
265
+ #sidebar ul a:hover {
266
+ border-left: 5px solid #193441;
267
+ color: #193441;
268
+ }
269
+
270
+ /* main */
271
+ #main {
272
+ margin: 0 360px 0 0;
273
+ padding: 20px;
274
+ background-color: #FCFFF5;
275
+ }
276
+
277
+ /* footer */
278
+ #footer {
279
+ clear: both;
280
+ color: #FCFFF5;
281
+ margin: 0;
282
+ padding: 0;
283
+ border-top: 1px solid #3E60F6;
284
+ font-size: 95%;
285
+ text-align: left;
286
+ }
287
+ #footer h2, #footer p {
288
+ padding-left: 0;
289
+ }
290
+ #footer-content {
291
+ width: 100%;
292
+ margin: 0 auto;
293
+ position: absolute;
294
+ background-color: #193441;
295
+ }
296
+ #footer-content a {
297
+ text-decoration: none;
298
+ color: #CCC;
299
+ }
300
+ #footer-content a:hover {
301
+ text-decoration: underline;
302
+ background-color: inherit;
303
+ }
304
+ #footer-content ul {
305
+ list-style: none;
306
+ margin: 0;
307
+ padding: 0;
308
+ }
309
+ #footer-content .col {
310
+ width: 32%;
311
+ padding: 0 5px 30px 15px;
312
+ }
313
+ #footer-content .col2 {
314
+ width: 30%;
315
+ padding: 0 0 30px 0;
316
+ }
317
+
318
+ /* alignment classes */
319
+ .float-left { float: left; }
320
+ .float-right { float: right; }
321
+ .align-left { text-align: left; }
322
+ .align-right { text-align: right; }
323
+
324
+ /* additional classes */
325
+ .clear { clear: both; }
326
+ .comments {
327
+ text-align: right;
328
+ border: 1px dashed #151515;
329
+ padding: 5px 10px;
330
+ margin: 20px 15px 10px 15px;
331
+ }
332
+ .small {
333
+ font-size: 90%;
334
+ color: #666;
335
+ padding: 2px;
336
+ }
337
+
338
+ /* extensions classes */
339
+ .backlink {
340
+ float: right;
341
+ }
342
+
343
+ table.examples {
344
+ border: 1px solid black;
345
+ border-collapse: collapse;
346
+ margin-left: auto;
347
+ margin-right: auto;
348
+ width: 80%;
349
+ }
350
+
351
+ table.examples td, table.examples th {
352
+ border: 1px solid black;
353
+ padding: 3px;
354
+ }
355
+
356
+
357
+
358
+ /* plugin documentation classes */
359
+ .plugin-info .param-name {
360
+ color: #193441;
361
+ }
362
+
363
+ .plugin-info .param-default-value {
364
+ color: #A0080D;
365
+ }
366
+
367
+ .plugin-info p.param {
368
+ padding: 0px 0px 5px;
369
+ }
370
+
371
+
372
+ /* blog related classes */
373
+ div.blog-entry {
374
+ margin-bottom: 15px;
375
+ }
376
+
377
+ blockquote.blog-entry-details {
378
+ font-size: 80%;
379
+ margin-bottom: 5px;
380
+ }
381
+
382
+ .blog-entry-date, .blog-entry-author {
383
+ font-weight: bold;
384
+ }