Sha256: fde18ba29ec09fc9df66d807cdb4c057aed9527fe2bda4305ba476dc436599e7

Contents?: true

Size: 1.51 KB

Versions: 18

Compression:

Stored size: 1.51 KB

Contents

# See the Pagy documentation: https://ddnexus.github.io/pagy/extras/metadata
# encoding: utf-8
# frozen_string_literal: true

class Pagy
  # Add a specialized backend method for pagination metadata
  module Backend ; private

    METADATA = [ :scaffold_url, :first_url, :prev_url, :page_url, :next_url, :last_url,
                 :count, :page, :items, :vars, :pages, :last, :from, :to, :prev, :next, :series ]
    METADATA << :sequels if VARS.key?(:steps)  # :steps gets defined along with the #sequels method

    VARS[:metadata] = METADATA.dup

    include Helpers

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

  end
end

Version data entries

18 entries across 18 versions & 1 rubygems

Version Path
pagy-3.14.0 lib/pagy/extras/metadata.rb
pagy-3.13.0 lib/pagy/extras/metadata.rb
pagy-3.12.0 lib/pagy/extras/metadata.rb
pagy-4.1.0 lib/pagy/extras/metadata.rb
pagy-4.0.0 lib/pagy/extras/metadata.rb
pagy-3.11.0 lib/pagy/extras/metadata.rb
pagy-3.10.0 lib/pagy/extras/metadata.rb
pagy-3.9.0 lib/pagy/extras/metadata.rb
pagy-3.8.3 lib/pagy/extras/metadata.rb
pagy-3.8.2 lib/pagy/extras/metadata.rb
pagy-3.8.1 lib/pagy/extras/metadata.rb
pagy-3.8.0 lib/pagy/extras/metadata.rb
pagy-3.7.5 lib/pagy/extras/metadata.rb
pagy-3.7.4 lib/pagy/extras/metadata.rb
pagy-3.7.3 lib/pagy/extras/metadata.rb
pagy-3.7.2 lib/pagy/extras/metadata.rb
pagy-3.7.1 lib/pagy/extras/metadata.rb
pagy-3.7.0 lib/pagy/extras/metadata.rb