gettalong-webgen 0.5.6.20081020 → 0.5.7.20090227

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 (165) hide show
  1. data/AUTHORS +3 -0
  2. data/THANKS +1 -0
  3. data/bin/webgen +2 -0
  4. data/data/webgen/webgui/controller/main.rb +2 -0
  5. data/data/webgen/website_skeleton/ext/init.rb +4 -0
  6. data/doc/contentprocessor/blocks.page +44 -14
  7. data/doc/contentprocessor/builder.page +1 -1
  8. data/doc/contentprocessor/erb.page +1 -1
  9. data/doc/contentprocessor/erubis.page +1 -1
  10. data/doc/contentprocessor/fragments.page +1 -1
  11. data/doc/contentprocessor/haml.page +1 -1
  12. data/doc/contentprocessor/rdiscount.page +1 -1
  13. data/doc/contentprocessor/rdoc.page +1 -1
  14. data/doc/contentprocessor/redcloth.page +1 -1
  15. data/doc/contentprocessor/sass.page +1 -1
  16. data/doc/faq.page +7 -2
  17. data/doc/manual.page +6 -5
  18. data/doc/reference_metainfo.page +1 -1
  19. data/doc/sourcehandler/feed.page +9 -1
  20. data/doc/sourcehandler/sitemap.page +1 -1
  21. data/doc/tag/coderay.page +1 -1
  22. data/doc/tag/langbar.page +15 -0
  23. data/doc/tag/menu.page +1 -1
  24. data/doc/tag/relocatable.page +2 -2
  25. data/lib/webgen/blackboard.rb +9 -4
  26. data/lib/webgen/cache.rb +2 -0
  27. data/lib/webgen/cli.rb +6 -1
  28. data/lib/webgen/cli/create_command.rb +2 -0
  29. data/lib/webgen/cli/run_command.rb +2 -0
  30. data/lib/webgen/cli/utils.rb +2 -0
  31. data/lib/webgen/cli/webgui_command.rb +2 -0
  32. data/lib/webgen/common.rb +12 -1
  33. data/lib/webgen/common/sitemap.rb +12 -4
  34. data/lib/webgen/configuration.rb +2 -0
  35. data/lib/webgen/contentprocessor.rb +2 -0
  36. data/lib/webgen/contentprocessor/blocks.rb +22 -8
  37. data/lib/webgen/contentprocessor/builder.rb +2 -0
  38. data/lib/webgen/contentprocessor/context.rb +2 -0
  39. data/lib/webgen/contentprocessor/erb.rb +2 -0
  40. data/lib/webgen/contentprocessor/erubis.rb +2 -0
  41. data/lib/webgen/contentprocessor/fragments.rb +2 -0
  42. data/lib/webgen/contentprocessor/haml.rb +2 -0
  43. data/lib/webgen/contentprocessor/maruku.rb +2 -0
  44. data/lib/webgen/contentprocessor/rdiscount.rb +2 -0
  45. data/lib/webgen/contentprocessor/rdoc.rb +2 -0
  46. data/lib/webgen/contentprocessor/redcloth.rb +2 -0
  47. data/lib/webgen/contentprocessor/sass.rb +2 -0
  48. data/lib/webgen/contentprocessor/tags.rb +2 -0
  49. data/lib/webgen/coreext.rb +2 -0
  50. data/lib/webgen/default_config.rb +4 -1
  51. data/lib/webgen/languages.rb +2 -0
  52. data/lib/webgen/loggable.rb +2 -0
  53. data/lib/webgen/logger.rb +2 -0
  54. data/lib/webgen/node.rb +22 -8
  55. data/lib/webgen/output.rb +3 -1
  56. data/lib/webgen/output/filesystem.rb +2 -0
  57. data/lib/webgen/page.rb +2 -0
  58. data/lib/webgen/path.rb +3 -1
  59. data/lib/webgen/source.rb +2 -0
  60. data/lib/webgen/source/filesystem.rb +5 -2
  61. data/lib/webgen/source/resource.rb +2 -0
  62. data/lib/webgen/source/stacked.rb +2 -0
  63. data/lib/webgen/sourcehandler.rb +8 -0
  64. data/lib/webgen/sourcehandler/base.rb +2 -0
  65. data/lib/webgen/sourcehandler/copy.rb +2 -0
  66. data/lib/webgen/sourcehandler/directory.rb +2 -0
  67. data/lib/webgen/sourcehandler/feed.rb +3 -1
  68. data/lib/webgen/sourcehandler/fragment.rb +2 -0
  69. data/lib/webgen/sourcehandler/memory.rb +2 -0
  70. data/lib/webgen/sourcehandler/metainfo.rb +3 -1
  71. data/lib/webgen/sourcehandler/page.rb +2 -0
  72. data/lib/webgen/sourcehandler/sitemap.rb +2 -0
  73. data/lib/webgen/sourcehandler/template.rb +2 -0
  74. data/lib/webgen/sourcehandler/virtual.rb +3 -1
  75. data/lib/webgen/tag.rb +2 -0
  76. data/lib/webgen/tag/base.rb +2 -0
  77. data/lib/webgen/tag/breadcrumbtrail.rb +2 -0
  78. data/lib/webgen/tag/coderay.rb +2 -0
  79. data/lib/webgen/tag/date.rb +2 -0
  80. data/lib/webgen/tag/executecommand.rb +2 -0
  81. data/lib/webgen/tag/includefile.rb +2 -0
  82. data/lib/webgen/tag/langbar.rb +4 -1
  83. data/lib/webgen/tag/link.rb +2 -0
  84. data/lib/webgen/tag/menu.rb +2 -0
  85. data/lib/webgen/tag/metainfo.rb +2 -0
  86. data/lib/webgen/tag/relocatable.rb +2 -0
  87. data/lib/webgen/tag/sitemap.rb +2 -0
  88. data/lib/webgen/tag/tikz.rb +3 -1
  89. data/lib/webgen/tree.rb +5 -0
  90. data/lib/webgen/version.rb +3 -1
  91. data/lib/webgen/webgentask.rb +2 -0
  92. data/lib/webgen/website.rb +104 -3
  93. data/lib/webgen/websiteaccess.rb +2 -0
  94. data/lib/webgen/websitemanager.rb +2 -0
  95. data/man/man1/webgen.1 +6 -0
  96. data/misc/default.css +36 -12
  97. data/misc/default.template +1 -1
  98. data/misc/images/error.png +0 -0
  99. data/misc/images/important.png +0 -0
  100. data/misc/images/information.png +0 -0
  101. data/misc/images/warning.png +0 -0
  102. data/test/helper.rb +4 -0
  103. data/test/test_blackboard.rb +2 -0
  104. data/test/test_cache.rb +2 -0
  105. data/test/test_cli.rb +7 -0
  106. data/test/test_common.rb +18 -0
  107. data/test/test_common_sitemap.rb +7 -5
  108. data/test/test_configuration.rb +2 -0
  109. data/test/test_contentprocessor.rb +2 -0
  110. data/test/test_contentprocessor_blocks.rb +22 -1
  111. data/test/test_contentprocessor_builder.rb +2 -0
  112. data/test/test_contentprocessor_context.rb +2 -0
  113. data/test/test_contentprocessor_erb.rb +2 -0
  114. data/test/test_contentprocessor_erubis.rb +2 -0
  115. data/test/test_contentprocessor_fragments.rb +2 -0
  116. data/test/test_contentprocessor_haml.rb +2 -0
  117. data/test/test_contentprocessor_maruku.rb +2 -0
  118. data/test/test_contentprocessor_rdiscount.rb +2 -0
  119. data/test/test_contentprocessor_rdoc.rb +2 -0
  120. data/test/test_contentprocessor_redcloth.rb +2 -0
  121. data/test/test_contentprocessor_sass.rb +2 -0
  122. data/test/test_contentprocessor_tags.rb +2 -0
  123. data/test/test_languages.rb +2 -0
  124. data/test/test_loggable.rb +2 -0
  125. data/test/test_logger.rb +2 -0
  126. data/test/test_node.rb +2 -0
  127. data/test/test_output_filesystem.rb +2 -0
  128. data/test/test_page.rb +2 -0
  129. data/test/test_path.rb +2 -0
  130. data/test/test_source_filesystem.rb +17 -0
  131. data/test/test_source_resource.rb +2 -0
  132. data/test/test_source_stacked.rb +2 -0
  133. data/test/test_sourcehandler_base.rb +2 -0
  134. data/test/test_sourcehandler_copy.rb +2 -0
  135. data/test/test_sourcehandler_directory.rb +2 -0
  136. data/test/test_sourcehandler_feed.rb +2 -0
  137. data/test/test_sourcehandler_fragment.rb +2 -0
  138. data/test/test_sourcehandler_memory.rb +2 -0
  139. data/test/test_sourcehandler_metainfo.rb +2 -0
  140. data/test/test_sourcehandler_page.rb +2 -0
  141. data/test/test_sourcehandler_sitemap.rb +2 -0
  142. data/test/test_sourcehandler_template.rb +2 -0
  143. data/test/test_sourcehandler_virtual.rb +2 -0
  144. data/test/test_tag_base.rb +4 -0
  145. data/test/test_tag_breadcrumbtrail.rb +2 -0
  146. data/test/test_tag_coderay.rb +2 -0
  147. data/test/test_tag_date.rb +2 -0
  148. data/test/test_tag_executecommand.rb +2 -0
  149. data/test/test_tag_includefile.rb +2 -0
  150. data/test/test_tag_langbar.rb +13 -6
  151. data/test/test_tag_link.rb +2 -0
  152. data/test/test_tag_menu.rb +2 -0
  153. data/test/test_tag_metainfo.rb +2 -0
  154. data/test/test_tag_relocatable.rb +2 -0
  155. data/test/test_tag_sitemap.rb +4 -1
  156. data/test/test_tag_tikz.rb +4 -1
  157. data/test/test_tree.rb +2 -0
  158. data/test/test_webgentask.rb +2 -0
  159. data/test/test_website.rb +6 -4
  160. data/test/test_websiteaccess.rb +2 -0
  161. data/test/test_websitemanager.rb +2 -0
  162. metadata +8 -5
  163. data/misc/images/error.gif +0 -0
  164. data/misc/images/exclamation.gif +0 -0
  165. data/misc/images/information.gif +0 -0
@@ -1,3 +1,5 @@
1
+ # -*- encoding: utf-8 -*-
2
+
1
3
  require 'webgen/websiteaccess'
2
4
  require 'webgen/source'
3
5
 
@@ -1,3 +1,5 @@
1
+ # -*- encoding: utf-8 -*-
2
+
1
3
  module Webgen::Source
2
4
 
3
5
  # This source class is used to stack several sources together.
@@ -1,3 +1,5 @@
1
+ # -*- encoding: utf-8 -*-
2
+
1
3
  require 'webgen/loggable'
2
4
  require 'benchmark'
3
5
 
@@ -50,12 +52,18 @@ module Webgen
50
52
  end
51
53
  puts "...done in " + ('%2.4f' % time.real) + ' seconds'
52
54
 
55
+ if !tree.root
56
+ puts 'No source files found - maybe not a webgen website?'
57
+ return nil
58
+ end
59
+
53
60
  puts "Writing changed nodes..."
54
61
  time = Benchmark.measure do
55
62
  write_tree(tree)
56
63
  end
57
64
  puts "...done in " + ('%2.4f' % time.real) + ' seconds'
58
65
  end while tree.node_access[:alcn].any? {|name,node| node.flagged(:created) || node.flagged(:reinit)}
66
+ :success
59
67
  end
60
68
 
61
69
  #######
@@ -1,3 +1,5 @@
1
+ # -*- encoding: utf-8 -*-
2
+
1
3
  require 'facets/symbol/to_proc'
2
4
  require 'webgen/websiteaccess'
3
5
  require 'webgen/loggable'
@@ -1,3 +1,5 @@
1
+ # -*- encoding: utf-8 -*-
2
+
1
3
  module Webgen::SourceHandler
2
4
 
3
5
  # Simple source handler for copying files from the source tree, either verbatim or by applying a
@@ -1,3 +1,5 @@
1
+ # -*- encoding: utf-8 -*-
2
+
1
3
  module Webgen::SourceHandler
2
4
 
3
5
  # Handles directory source paths.
@@ -1,3 +1,5 @@
1
+ # -*- encoding: utf-8 -*-
2
+
1
3
  module Webgen::SourceHandler
2
4
 
3
5
  # Source handler for creating atom and/or rss feeds.
@@ -53,7 +55,7 @@ module Webgen::SourceHandler
53
55
  # Helper method for returning the entries for the feed node +node+.
54
56
  def feed_entries(node)
55
57
  nr_items = (node['number_of_entries'].to_i == 0 ? 10 : node['number_of_entries'].to_i)
56
- patterns = [node['entries']].flatten.map {|pat| Pathname.new(pat =~ /^\// ? pat : File.join(node.parent.absolute_lcn, pat)).cleanpath.to_s}
58
+ patterns = [node['entries']].flatten.map {|pat| Webgen::Common.absolute_path(pat, node.parent.absolute_lcn)}
57
59
 
58
60
  node.tree.node_access[:alcn].values.
59
61
  select {|node| patterns.any? {|pat| node =~ pat} && node.node_info[:page]}.
@@ -1,3 +1,5 @@
1
+ # -*- encoding: utf-8 -*-
2
+
1
3
  module Webgen::SourceHandler
2
4
 
3
5
  # Handles page fragment nodes and provides utility methods for parsing HTML headers and generating
@@ -1,3 +1,5 @@
1
+ # -*- encoding: utf-8 -*-
2
+
1
3
  module Webgen::SourceHandler
2
4
 
3
5
  # This source handler should be used for handling nodes that are created during the write
@@ -1,3 +1,5 @@
1
+ # -*- encoding: utf-8 -*-
2
+
1
3
  require 'pathname'
2
4
  require 'yaml'
3
5
 
@@ -27,7 +29,7 @@ module Webgen::SourceHandler
27
29
  [[:mi_paths, 'paths'], [:mi_alcn, 'alcn']].each do |mi_key, block_name|
28
30
  node.node_info[mi_key] = {}
29
31
  YAML::load(page.blocks[block_name].content).each do |key, value|
30
- key = Pathname.new(key =~ /^\// ? key : File.join(parent.absolute_lcn, key)).cleanpath.to_s
32
+ key = Webgen::Common.absolute_path(key, parent.absolute_lcn)
31
33
  node.node_info[mi_key][key] = value
32
34
  end if page.blocks.has_key?(block_name)
33
35
  end
@@ -1,3 +1,5 @@
1
+ # -*- encoding: utf-8 -*-
2
+
1
3
  module Webgen::SourceHandler
2
4
 
3
5
  # Source handler for handling content files in Webgen Page Format.
@@ -1,3 +1,5 @@
1
+ # -*- encoding: utf-8 -*-
2
+
1
3
  require 'uri'
2
4
  require 'time'
3
5
 
@@ -1,3 +1,5 @@
1
+ # -*- encoding: utf-8 -*-
2
+
1
3
  module Webgen::SourceHandler
2
4
 
3
5
  # Source handler for handling template files in Webgen Page Format.
@@ -1,3 +1,5 @@
1
+ # -*- encoding: utf-8 -*-
2
+
1
3
  require 'uri'
2
4
  require 'yaml'
3
5
 
@@ -17,7 +19,7 @@ module Webgen::SourceHandler
17
19
  page = page_from_path(path)
18
20
  nodes = []
19
21
  YAML::load(page.blocks['content'].content).each do |key, meta_info|
20
- key = (key =~ /^\// ? key : File.join(parent.absolute_lcn, key))
22
+ key = Webgen::Common.absolute_path(key, parent.absolute_lcn) + (key =~ /\/$/ ? '/' : '')
21
23
  temp_parent = create_directories(parent.tree.root, File.dirname(key), path)
22
24
 
23
25
  meta_info ||= {}
data/lib/webgen/tag.rb CHANGED
@@ -1,3 +1,5 @@
1
+ # -*- encoding: utf-8 -*-
2
+
1
3
  module Webgen
2
4
 
3
5
  # Namespace for all classes that are useable by Webgen::ContentProcessor::Tag.
@@ -1,3 +1,5 @@
1
+ # -*- encoding: utf-8 -*-
2
+
1
3
  require 'yaml'
2
4
  require 'webgen/loggable'
3
5
  require 'webgen/websiteaccess'
@@ -1,3 +1,5 @@
1
+ # -*- encoding: utf-8 -*-
2
+
1
3
  module Webgen::Tag
2
4
 
3
5
  # Generates a breadcrumb trail for the page. This is especially useful when pages are in deep
@@ -1,3 +1,5 @@
1
+ # -*- encoding: utf-8 -*-
2
+
1
3
  module Webgen::Tag
2
4
 
3
5
  # Provides syntax highlighting via the +coderay+ library.
@@ -1,3 +1,5 @@
1
+ # -*- encoding: utf-8 -*-
2
+
1
3
  module Webgen::Tag
2
4
 
3
5
  # Prints out the date using a format string which will be passed to Time#strftime. Therefore you
@@ -1,3 +1,5 @@
1
+ # -*- encoding: utf-8 -*-
2
+
1
3
  require 'cgi'
2
4
  require 'tempfile'
3
5
  require 'rbconfig'
@@ -1,3 +1,5 @@
1
+ # -*- encoding: utf-8 -*-
2
+
1
3
  require 'cgi'
2
4
 
3
5
  module Webgen::Tag
@@ -1,3 +1,5 @@
1
+ # -*- encoding: utf-8 -*-
2
+
1
3
  module Webgen::Tag
2
4
 
3
5
  # Generates a list with all the languages of the page.
@@ -19,7 +21,8 @@ module Webgen::Tag
19
21
  sort {|a, b| a.lang <=> b.lang}.
20
22
  collect {|n| context.dest_node.link_to(n, :link_text => (param('tag.langbar.lang_names')[n.lang] || n.lang), :lang => n.lang)}.
21
23
  join(param('tag.langbar.separator'))
22
- (param('tag.langbar.show_single_lang') || lang_nodes.length > 1 ? result : "")
24
+
25
+ [(param('tag.langbar.show_single_lang') || lang_nodes.length > 1 ? result : ""), param('tag.langbar.process_output')]
23
26
  end
24
27
 
25
28
  #######
@@ -1,3 +1,5 @@
1
+ # -*- encoding: utf-8 -*-
2
+
1
3
  module Webgen::Tag
2
4
 
3
5
  # Create a link to a given (A)LCN.
@@ -1,3 +1,5 @@
1
+ # -*- encoding: utf-8 -*-
2
+
1
3
  module Webgen::Tag
2
4
 
3
5
  # Generates a menu that can be configured extensively.
@@ -1,3 +1,5 @@
1
+ # -*- encoding: utf-8 -*-
2
+
1
3
  module Webgen::Tag
2
4
 
3
5
  # Provides easy access to the meta information of a node.
@@ -1,3 +1,5 @@
1
+ # -*- encoding: utf-8 -*-
2
+
1
3
  require 'uri'
2
4
 
3
5
  module Webgen::Tag
@@ -1,3 +1,5 @@
1
+ # -*- encoding: utf-8 -*-
2
+
1
3
  module Webgen::Tag
2
4
 
3
5
  # Generates a sitemap. The sitemap contains the hierarchy of all pages on the web site.
@@ -1,3 +1,5 @@
1
+ # -*- encoding: utf-8 -*-
2
+
1
3
  require 'erb'
2
4
  require 'tempfile'
3
5
  require 'fileutils'
@@ -30,7 +32,7 @@ EOF
30
32
  # Create a graphic from the commands in the body of the tag.
31
33
  def call(tag, body, context)
32
34
  path = param('tag.tikz.path')
33
- path = Pathname.new(path =~ /^\// ? path : File.join(context.ref_node.parent.absolute_lcn, path)).cleanpath.to_s
35
+ path = Webgen::Common.absolute_path(path, context.ref_node.parent.absolute_lcn)
34
36
 
35
37
  mem_handler = website.cache.instance('Webgen::SourceHandler::Memory')
36
38
  src_path = context.ref_node.node_info[:src]
data/lib/webgen/tree.rb CHANGED
@@ -1,3 +1,5 @@
1
+ # -*- encoding: utf-8 -*-
2
+
1
3
  require 'webgen/websiteaccess'
2
4
  require 'webgen/node'
3
5
 
@@ -65,6 +67,9 @@ module Webgen
65
67
  end
66
68
 
67
69
  # Delete the node identified by +node_or_alcn+ and all of its children from the tree.
70
+ #
71
+ # The message <tt>:before_node_deleted</tt> is sent with the to-be-deleted node before this node
72
+ # is actually deleted from the tree.
68
73
  def delete_node(node_or_alcn)
69
74
  n = node_or_alcn.kind_of?(Node) ? node_or_alcn : @node_access[:alcn][node_or_alcn]
70
75
  return if n.nil? || n == @dummy_root
@@ -1,6 +1,8 @@
1
+ # -*- encoding: utf-8 -*-
2
+
1
3
  module Webgen
2
4
 
3
5
  # The version of webgen.
4
- VERSION = '0.5.6'
6
+ VERSION = '0.5.7'
5
7
 
6
8
  end
@@ -1,3 +1,5 @@
1
+ # -*- encoding: utf-8 -*-
2
+
1
3
  # -*- ruby -*-
2
4
  #
3
5
  #--
@@ -1,3 +1,5 @@
1
+ # -*- encoding: utf-8 -*-
2
+
1
3
  # Standard lib requires
2
4
  require 'logger'
3
5
  require 'set'
@@ -28,6 +30,102 @@ require 'webgen/page'
28
30
 
29
31
 
30
32
  # The Webgen namespace houses all classes/modules used by webgen.
33
+ #
34
+ # = webgen
35
+ #
36
+ # webgen is a command line application for generating a web site from templates and content
37
+ # files. Despite this fact, the implementation also provides adequate support for using webgen as a
38
+ # library and *full* *support* for extending it.
39
+ #
40
+ # = Extending webgen
41
+ #
42
+ # webgen can be extended very easily. Any file called <tt>init.rb</tt> put into the <tt>ext/</tt>
43
+ # directory of the website or into one of its sub-directories is automatically loaded on
44
+ # Website#init.
45
+ #
46
+ # You can extend webgen in several ways. However, no magic or special knowledge is needed since
47
+ # webgen relies on the power of Ruby itself. So, for example, an extension is just a normal Ruby
48
+ # class. Most extension types provide a Base module for mixing into an extension which provides
49
+ # default implementations for needed methods.
50
+ #
51
+ # Following are links to detailed descriptions on how to develop specific types of extensions:
52
+ #
53
+ # [Webgen::Source] Information on how to implement a class that provides source paths for
54
+ # webgen. For example, one could implement a source class that uses a database as
55
+ # backend.
56
+ #
57
+ # [Webgen::Output] Information on how to implement a class that writes content to an output
58
+ # location. The default output class just writes to the file system. One could, for
59
+ # example, implement an output class that writes the generated files to multiple
60
+ # locations or to a remote server.
61
+ #
62
+ # [Webgen::ContentProcessor] Information on how to develop an extension that processes the
63
+ # content. For example, markup-to-HTML converters are implemented as
64
+ # content processors in webgen.
65
+ #
66
+ # [Webgen::SourceHandler::Base] Information on how to implement a class that handles objects of type
67
+ # source Path and creates Node instances. For example,
68
+ # Webgen::SourceHandler::Page handles the conversion of <tt>.page</tt>
69
+ # files to <tt>.html</tt> files.
70
+ #
71
+ # [Webgen::Tag::Base] Information on how to implement a webgen tag. webgen tags are used to provide
72
+ # an easy way for users to include dynamic content such as automatically
73
+ # generated menus.
74
+ #
75
+ # = Blackboard services
76
+ #
77
+ # The Blackboard class provides an easy communication facility between objects. It implements the
78
+ # Observer pattern on the one side and allows the definition of services on the other side. One
79
+ # advantage of a service over the direct use of an object instance method is that the caller does
80
+ # not need to how to find the object that provides the service. It justs uses the Website#blackboard
81
+ # instance. An other advantage is that one can easily exchange the place where the service was
82
+ # defined without breaking extensions that rely on it.
83
+ #
84
+ # Following is a list of all services available in the stock webgen distribution by the name and the
85
+ # method that implements it (which is useful for looking up the parameters of service).
86
+ #
87
+ # <tt>:create_fragment_nodes</tt>:: SourceHandler::Fragment#create_fragment_nodes
88
+ # <tt>:templates_for_node</tt>:: SourceHandler::Template#templates_for_node
89
+ # <tt>:parse_html_headers</tt>:: SourceHandler::Fragment#parse_html_headers
90
+ # <tt>:output_instance</tt>:: Output.instance
91
+ # <tt>:content_processor_names</tt>:: ContentProcessor.list
92
+ # <tt>:content_processor</tt>:: ContentProcessor.for_name
93
+ # <tt>:create_sitemap</tt>:: Common::Sitemap#create_sitemap
94
+ # <tt>:create_directories</tt>:: SourceHandler::Directory#create_directories
95
+ # <tt>:create_nodes</tt>:: SourceHandler::Main#create_nodes
96
+ # <tt>:source_paths</tt>:: SourceHandler::Main#source_paths
97
+ #
98
+ # Following is the list of all messages that can be listened to:
99
+ #
100
+ # <tt>:node_flagged</tt>::
101
+ # See Node#flag
102
+ #
103
+ # <tt>:node_unflagged</tt>::
104
+ # See Node#unflag
105
+ #
106
+ # <tt>:node_changed?</tt>::
107
+ # See Node#changed?
108
+ # <tt>:node_meta_info_changed?</tt>::
109
+ # See Node#meta_info_changed?
110
+ #
111
+ # <tt>:before_node_created</tt>::
112
+ # Sent by the <tt>:create_nodes</tt> service before a node is created (handled by a source handler)
113
+ # with the +parent+ and the +path+ as arguments.
114
+ #
115
+ # <tt>:after_node_created</tt>::
116
+ # Sent by the <tt>:create_nodes</tt> service after a node has been created with the created node
117
+ # as argument.
118
+ #
119
+ # <tt>:before_node_deleted</tt>::
120
+ # See Tree#delete_node
121
+ #
122
+ # = Other places to look at
123
+ #
124
+ # Here is a list of modules/classes that are primarily used throughout webgen or provide useful
125
+ # methods for developing extensions:
126
+ #
127
+ # Common, Tree, Node, Path, Cache, Page
128
+
31
129
  module Webgen
32
130
 
33
131
  # Returns the data directory for webgen.
@@ -108,15 +206,17 @@ module Webgen
108
206
  self
109
207
  end
110
208
 
111
- # Render the website (after calling #init if the website is not already initialized).
209
+ # Render the website (after calling #init if the website is not already initialized) and return
210
+ # a status code not equal to +nil+ if rendering was successful.
112
211
  def render
212
+ result = nil
113
213
  execute_in_env do
114
214
  init unless @config
115
215
 
116
216
  puts "Starting webgen..."
117
217
  shm = SourceHandler::Main.new
118
- shm.render(@tree)
119
- save_tree_and_cache
218
+ result = shm.render(@tree)
219
+ save_tree_and_cache if result
120
220
  puts "Finished"
121
221
 
122
222
  if @logger && @logger.log_output.length > 0
@@ -124,6 +224,7 @@ module Webgen
124
224
  puts @logger.log_output
125
225
  end
126
226
  end
227
+ result
127
228
  end
128
229
 
129
230
  # Clean the website directory from all generated output files (including the cache file). If
@@ -1,3 +1,5 @@
1
+ # -*- encoding: utf-8 -*-
2
+
1
3
  module Webgen
2
4
 
3
5
  # Mixed into modules/classes that need access to the current website object.
@@ -1,3 +1,5 @@
1
+ # -*- encoding: utf-8 -*-
2
+
1
3
  require 'ostruct'
2
4
  require 'fileutils'
3
5
  require 'webgen/website'