module Pagy::Backend

def pagy_metadata(pagy, deprecated_url=nil, absolute: nil)

def pagy_metadata(pagy, deprecated_url=nil, absolute: nil)
  absolute = Pagy.deprecated_arg(:url, deprecated_url, :absolute, absolute) if deprecated_url
  names   = pagy.vars[:metadata]
  unknown = names - METADATA
  raise VariableError.new(pagy), "unknown metadata #{unknown.inspect}" \
        unless unknown.empty?
  scaffold_url = pagy_url_for(pagy, PAGE_PLACEHOLDER, absolute: absolute)
  {}.tap do |metadata|
    names.each do |key|
      metadata[key] = case key
                      when :scaffold_url then scaffold_url
                      when :first_url    then scaffold_url.sub(PAGE_PLACEHOLDER, 1.to_s)
                      when :prev_url     then scaffold_url.sub(PAGE_PLACEHOLDER, pagy.prev.to_s)
                      when :page_url     then scaffold_url.sub(PAGE_PLACEHOLDER, pagy.page.to_s)
                      when :next_url     then scaffold_url.sub(PAGE_PLACEHOLDER, pagy.next.to_s)
                      when :last_url     then scaffold_url.sub(PAGE_PLACEHOLDER, pagy.last.to_s)
                      else pagy.send(key)
                      end
    end
  end
end