middleman/middleman-core/lib/middleman-core/sitemap/extensions/move_file.rb

40 lines
1.2 KiB
Ruby

require 'middleman-core/sitemap/resource'
require 'middleman-core/core_extensions/collections/step_context'
module Middleman
module Sitemap
module Extensions
# Manages the list of proxy configurations and manipulates the sitemap
# to include new resources based on those configurations
class MoveFile < ConfigExtension
self.resource_list_manipulator_priority = 101
# Expose `create_move_file` to config as `move_file`
expose_to_config move_file: :create_move_file
MoveFileDescriptor = Struct.new(:from, :to) do
def execute_descriptor(_app, resources)
resources.each do |r|
r.destination_path = to if from == r.path || from == r.destination_path
end
resources
end
end
# Setup a move from one path to another
# @param [String] from The original path.
# @param [String] to The new path.
# @return [void]
Contract String, String => MoveFileDescriptor
def create_move_file(from, to)
MoveFileDescriptor.new(
::Middleman::Util.normalize_path(from),
::Middleman::Util.normalize_path(to)
)
end
end
end
end
end