Parent

Methods

Class/Module Index [+]

Quicksearch

Webgen::Source::Stacked

This source class is used to stack several sources together.

It serves two purposes:

Also be aware that when a path is returned by a source that has already be returned by a prior source, it is discarded and not used.

Attributes

cache_paths[RW]

Specifies whether the result of paths calls should be cached (default: false). If caching is activated, new maps cannot be added to the stacked source anymore!

stack[R]

Return the stack of mount point to Webgen::Source object maps.

Public Class Methods

new(map = {}, cache_paths = false) click to toggle source

Create a new stack. The optional map parameter can be used to provide initial mappings of mount points to source objects (see add for details). You cannot add other maps after a call to paths if cache_paths is true

# File lib/webgen/source/stacked.rb, line 29
def initialize(map = {}, cache_paths = false)
  @stack = []
  @cache_paths = cache_paths
  add(map)
end

Public Instance Methods

add(maps) click to toggle source

Add all mappings found in maps to the stack. The parameter maps should be an array of two-element arrays which contain an absolute directory (ie. starting and ending with a slash) and a source object.

# File lib/webgen/source/stacked.rb, line 38
def add(maps)
  raise "Cannot add new maps since caching is activated for this source" if defined?(@paths) && @cache_paths
  maps.each do |mp, source|
    raise "Invalid mount point specified: #{mp}" unless mp =~ /^\//
    @stack << [mp, source]
  end
end
paths() click to toggle source

Return all paths returned by the sources in the stack. Since the stack is ordered, paths returned by later source objects are not used if a prior source object has returned the same path.

# File lib/webgen/source/stacked.rb, line 49
def paths
  return @paths if defined?(@paths) && @cache_paths
  @paths = Set.new
  @stack.each do |mp, source|
    source.paths.each do |path|
      @paths.add?(path.mount_at(mp))
    end
  end
  @paths
end

[Validate]

Generated with the Darkfish Rdoc Generator 2.