class Nanoc::Int::ItemRepRouter

Assigns paths to reps.

@api private

Public Class Methods

new(reps, action_provider, site) click to toggle source
# File lib/nanoc/base/services/item_rep_router.rb, line 12
def initialize(reps, action_provider, site)
  @reps = reps
  @action_provider = action_provider
  @site = site
end

Public Instance Methods

route_rep(rep, snapshot_action, paths_to_reps) click to toggle source
# File lib/nanoc/base/services/item_rep_router.rb, line 28
def route_rep(rep, snapshot_action, paths_to_reps)
  basic_path = snapshot_action.path
  return if basic_path.nil?

  # Check for duplicate paths
  if paths_to_reps.key?(basic_path)
    raise IdenticalRoutesError.new(basic_path, paths_to_reps[basic_path], rep)
  else
    paths_to_reps[basic_path] = rep
  end

  rep.raw_paths[snapshot_action.snapshot_name] = @site.config[:output_dir] + basic_path
  rep.paths[snapshot_action.snapshot_name] = strip_index_filename(basic_path)
end
run() click to toggle source
# File lib/nanoc/base/services/item_rep_router.rb, line 18
def run
  paths_to_reps = {}
  @reps.each do |rep|
    mem = @action_provider.memory_for(rep)
    mem.snapshot_actions.each do |snapshot_action|
      route_rep(rep, snapshot_action, paths_to_reps)
    end
  end
end
strip_index_filename(basic_path) click to toggle source
# File lib/nanoc/base/services/item_rep_router.rb, line 43
def strip_index_filename(basic_path)
  @site.config[:index_filenames].each do |index_filename|
    rep_path_ending = basic_path[-index_filename.length..-1]
    next unless rep_path_ending == index_filename

    return basic_path[0..-index_filename.length - 1]
  end

  basic_path
end