lib/webgen/source.rb in webgen-0.5.7 vs lib/webgen/source.rb in webgen-0.5.8

- old
+ new

@@ -2,25 +2,53 @@ module Webgen # Namespace for all classes that provide source paths. # - # = Implementing a source class + # == Implementing a source class # # Source classes provide access to the source paths on which the source handlers act. # # A source class only needs to respond to the method +paths+ which needs to return a set of paths # for the source. The returned paths must respond to the method <tt>changed?</tt> (has to return - # +true+ if the paths has changed since the last webgen run) which is not implemented in the - # default Path class. One can either derive a specialized path class or define singleton methods - # on each path object. + # +true+ if the paths has changed since the last webgen run). The default implementation in the + # Path class just returns +true+. One can either derive a specialized path class or define + # singleton methods on each path object. # + # == Sample Source Class + # + # Following is a simple source class which has stored the paths and their contents in a hash: + # + # require 'stringio' + # + # class MemorySource + # + # CONTENT = { + # '/directory/' => nil, + # '/directory/file.page' => "This is the content of the file" + # } + # + # def paths + # CONTENT.collect do |path, content| + # Webgen::Path.new(path) { StringIO.new(content.to_s) } + # end.to_set + # end + # + # end + # + # You can use this source class in your website (after placing the code in, for example, + # <tt>ext/init.rb</tt>) by updating the <tt>sources</tt> configuration option (the following code + # has to be placed after the definition of the +MemorySource+ class): + # + # WebsiteAccess.website.config['sources'] << ['/', MemorySource] + # module Source autoload :Base, 'webgen/source/base' autoload :FileSystem, 'webgen/source/filesystem' autoload :Stacked, 'webgen/source/stacked' autoload :Resource, 'webgen/source/resource' + autoload :TarArchive, 'webgen/source/tararchive' end end