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