class SitemapGenerator::Interpreter

Provide a class for evaluating blocks, making the URL helpers from the framework and API methods available to it.

Public Class Methods

new(opts={}, &block) click to toggle source

Call with a block to evaluate a dynamic config. The only method exposed for you is ‘add` to add a link to the sitemap object attached to this interpreter.

Options

  • link_set - a LinkSet instance to use. Default is SitemapGenerator::Sitemap.

All other options are passed to the LinkSet by setting them using accessor methods.

# File lib/sitemap_generator/interpreter.rb, line 23
def initialize(opts={}, &block)
  opts = SitemapGenerator::Utilities.reverse_merge(opts, :link_set => SitemapGenerator::Sitemap)
  @linkset = opts.delete :link_set
  @linkset.send(:set_options, opts)
  eval(&block) if block_given?
end
run(opts={}, &block) click to toggle source

Run the interpreter on a config file using the default SitemapGenerator::Sitemap sitemap object.

Options

  • :config_file - full path to the config file to evaluate. Default is config/sitemap.rb in your application’s root directory.

All other options are passed to new.

# File lib/sitemap_generator/interpreter.rb, line 71
def self.run(opts={}, &block)
  opts = opts.dup
  config_file = opts.delete(:config_file)
  config_file ||= SitemapGenerator.app.root + 'config/sitemap.rb'
  interpreter = self.new(opts)
  interpreter.instance_eval(File.read(config_file), config_file.to_s)
  interpreter
end

Public Instance Methods

add(*args) click to toggle source
# File lib/sitemap_generator/interpreter.rb, line 30
def add(*args)
  @linkset.add(*args)
end
add_to_index(*args) click to toggle source
# File lib/sitemap_generator/interpreter.rb, line 34
def add_to_index(*args)
  @linkset.add_to_index(*args)
end
eval(opts={}) { |linkset| ... } click to toggle source

Evaluate the block in the interpreter. Pass :yield_sitemap => true to yield the Interpreter instance to the block…for old-style calling.

# File lib/sitemap_generator/interpreter.rb, line 54
def eval(opts={}, &block)
  if block_given?
    if opts[:yield_sitemap]
      yield @linkset
    else
      instance_eval(&block)
    end
  end
end
group(*args, &block) click to toggle source

Start a new group of sitemaps. Any of the options to SitemapGenerator.new may be passed. Pass a block with calls to add to add links to the sitemaps.

All groups use the same sitemap index.

# File lib/sitemap_generator/interpreter.rb, line 42
def group(*args, &block)
  @linkset.group(*args, &block)
end
sitemap() click to toggle source

Return the LinkSet instance so that you can access it from within the ‘create` block without having to use the yield_sitemap option.

# File lib/sitemap_generator/interpreter.rb, line 48
def sitemap
  @linkset
end