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). 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 (the following code has to be placed after the definition of the MemorySource class):

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

Defined Under Namespace

Classes: FileSystem, Resource, Stacked, TarArchive