Sha256: e5658ef740851cd129e5bc117679cdb99be7be0c54a206c238e29f423306ecd2

Contents?: true

Size: 796 Bytes

Versions: 8

Compression:

Stored size: 796 Bytes

Contents

# frozen_string_literal: true

class Pagy
  # Shared with Keyset
  module SharedMethods
    attr_reader :page, :limit, :vars

    # Validates and assign the passed vars: var must be present and value.to_i must be >= to min
    def assign_and_check(name_min)
      name_min.each do |name, min|
        raise VariableError.new(self, name, ">= #{min}", @vars[name]) \
        unless @vars[name]&.respond_to?(:to_i) && \
               instance_variable_set(:"@#{name}", @vars[name].to_i) >= min
      end
    end

    # Assign @limit (overridden by the gearbox extra)
    def assign_limit
      assign_and_check(limit: 1)
    end

    # Assign @vars
    def assign_vars(default, vars)
      @vars = { **default, **vars.delete_if { |k, v| default.key?(k) && (v.nil? || v == '') } }
    end
  end
end

Version data entries

8 entries across 8 versions & 1 rubygems

Version Path
pagy-9.0.9 lib/pagy/shared_methods.rb
pagy-9.0.8 lib/pagy/shared_methods.rb
pagy-9.0.7 lib/pagy/shared_methods.rb
pagy-9.0.6 lib/pagy/shared_methods.rb
pagy-9.0.5 lib/pagy/shared_methods.rb
pagy-9.0.4 lib/pagy/shared_methods.rb
pagy-9.0.3 lib/pagy/shared_methods.rb
pagy-9.0.2 lib/pagy/shared_methods.rb