Module: Webgen::Source

Defined in:
lib/webgen/source.rb,
lib/webgen/source/stacked.rb,
lib/webgen/source/resource.rb

Overview

Namespace for all classes that provide source paths.

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 changed? (has to return true if the paths has changed since the last webgen run). If a path represents a directory, it needs to have a trailing slash! 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, ext/init.rb) by updating the sources configuration option:

WebsiteAccess.website.config['sources'] << ['/', 'MemorySource']

Defined Under Namespace

Classes: FileSystem, Resource, Stacked, TarArchive