40 lines
1.2 KiB
Ruby
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
|