Sha256: 52bc984cf3a5a1b640db667c607475657f53e40aa2cdf0fc5b032af3eeb76da7
Contents?: true
Size: 1.61 KB
Versions: 1
Compression:
Stored size: 1.61 KB
Contents
module Nanoc::Int # Assigns paths to reps. # # @api private class ItemRepRouter class IdenticalRoutesError < ::Nanoc::Error def initialize(output_path, rep_a, rep_b) super("The item representations #{rep_a.inspect} and #{rep_b.inspect} are both routed to #{output_path}.") end end # TODO: Replace rule_memory_calculator with { rep => rule_memory } def initialize(reps, rule_memory_calculator, site) @reps = reps @rule_memory_calculator = rule_memory_calculator @site = site end def run paths_to_reps = {} @reps.each do |rep| mem = @rule_memory_calculator[rep] mem.snapshot_actions.each do |snapshot_action| route_rep(rep, snapshot_action, paths_to_reps) end end end 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 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 end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
nanoc-4.1.0a1 | lib/nanoc/base/services/item_rep_router.rb |