jsom-pagination 0.1.1 → 0.1.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
 - data/Gemfile.lock +3 -1
 - data/README.md +1 -0
 - data/jsom-pagination.gemspec +1 -0
 - data/lib/jsom/pagination/links.rb +22 -5
 - data/lib/jsom/pagination/version.rb +1 -1
 - metadata +16 -2
 
    
        checksums.yaml
    CHANGED
    
    | 
         @@ -1,7 +1,7 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            ---
         
     | 
| 
       2 
2 
     | 
    
         
             
            SHA256:
         
     | 
| 
       3 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       4 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 3 
     | 
    
         
            +
              metadata.gz: 958462b2b7cc07a82f7c352984670cfa619496bc7ef5a009ab0bed423b44b252
         
     | 
| 
      
 4 
     | 
    
         
            +
              data.tar.gz: ea5d33d37aeabb2df86be9168e052763f38139b28a0af0219c457700f238e68d
         
     | 
| 
       5 
5 
     | 
    
         
             
            SHA512:
         
     | 
| 
       6 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       7 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 6 
     | 
    
         
            +
              metadata.gz: 84e817541cf21c0bd29d50ac7fb0e814f6550487e2d7fcbdf45b46f83a9849e678352fa1b767c17ec8f461698a9ae5144a37fe98936012c42d3b96bae787cfb9
         
     | 
| 
      
 7 
     | 
    
         
            +
              data.tar.gz: b5c2766d144812a4bc4334271d32304dd48569ff151ac90501faefe8412d89b8292d4c0b68349405ddd3d9a1e4c3dd27a3355e15f3982ba46bd38d70cf1b0887
         
     | 
    
        data/Gemfile.lock
    CHANGED
    
    | 
         @@ -1,9 +1,10 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            PATH
         
     | 
| 
       2 
2 
     | 
    
         
             
              remote: .
         
     | 
| 
       3 
3 
     | 
    
         
             
              specs:
         
     | 
| 
       4 
     | 
    
         
            -
                jsom-pagination (0.1. 
     | 
| 
      
 4 
     | 
    
         
            +
                jsom-pagination (0.1.2)
         
     | 
| 
       5 
5 
     | 
    
         
             
                  dry-struct (~> 1.3.0)
         
     | 
| 
       6 
6 
     | 
    
         
             
                  pagy (~> 3.8.3)
         
     | 
| 
      
 7 
     | 
    
         
            +
                  rack
         
     | 
| 
       7 
8 
     | 
    
         | 
| 
       8 
9 
     | 
    
         
             
            GEM
         
     | 
| 
       9 
10 
     | 
    
         
             
              remote: https://rubygems.org/
         
     | 
| 
         @@ -40,6 +41,7 @@ GEM 
     | 
|
| 
       40 
41 
     | 
    
         
             
                  dry-logic (~> 1.0, >= 1.0.2)
         
     | 
| 
       41 
42 
     | 
    
         
             
                ice_nine (0.11.2)
         
     | 
| 
       42 
43 
     | 
    
         
             
                pagy (3.8.3)
         
     | 
| 
      
 44 
     | 
    
         
            +
                rack (2.2.3)
         
     | 
| 
       43 
45 
     | 
    
         
             
                rake (12.3.3)
         
     | 
| 
       44 
46 
     | 
    
         
             
                rspec (3.9.0)
         
     | 
| 
       45 
47 
     | 
    
         
             
                  rspec-core (~> 3.9.0)
         
     | 
    
        data/README.md
    CHANGED
    
    | 
         @@ -1,6 +1,7 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            # JSOM::Pagination
         
     | 
| 
       2 
2 
     | 
    
         | 
| 
       3 
3 
     | 
    
         
             
            [](https://badge.fury.io/rb/jsom-pagination)
         
     | 
| 
      
 4 
     | 
    
         
            +
            
         
     | 
| 
       4 
5 
     | 
    
         
             
            [](https://app.codacy.com/gh/useo-pl/jsom-pagination?utm_source=github.com&utm_medium=referral&utm_content=useo-pl/jsom-pagination&utm_campaign=Badge_Grade_Dashboard)
         
     | 
| 
       5 
6 
     | 
    
         
             
            [](https://www.codacy.com/gh/useo-pl/jsom-pagination?utm_source=github.com&utm_medium=referral&utm_content=useo-pl/jsom-pagination&utm_campaign=Badge_Coverage)
         
     | 
| 
       6 
7 
     | 
    
         | 
    
        data/jsom-pagination.gemspec
    CHANGED
    
    
| 
         @@ -1,5 +1,7 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            # frozen_string_literal: true
         
     | 
| 
       2 
2 
     | 
    
         | 
| 
      
 3 
     | 
    
         
            +
            require 'rack'
         
     | 
| 
      
 4 
     | 
    
         
            +
             
     | 
| 
       3 
5 
     | 
    
         
             
            module JSOM
         
     | 
| 
       4 
6 
     | 
    
         
             
              module Pagination
         
     | 
| 
       5 
7 
     | 
    
         
             
                class Links
         
     | 
| 
         @@ -30,12 +32,22 @@ module JSOM 
     | 
|
| 
       30 
32 
     | 
    
         
             
                  attr_reader :page, :total_pages, :url
         
     | 
| 
       31 
33 
     | 
    
         | 
| 
       32 
34 
     | 
    
         
             
                  def initialize(page:, url:, total_pages:)
         
     | 
| 
       33 
     | 
    
         
            -
                    @url = url
         
     | 
| 
      
 35 
     | 
    
         
            +
                    @url = parse_url(url)
         
     | 
| 
       34 
36 
     | 
    
         
             
                    @page = page
         
     | 
| 
       35 
37 
     | 
    
         
             
                    @total_pages = total_pages
         
     | 
| 
       36 
38 
     | 
    
         
             
                    generate_links
         
     | 
| 
       37 
39 
     | 
    
         
             
                  end
         
     | 
| 
       38 
40 
     | 
    
         | 
| 
      
 41 
     | 
    
         
            +
                  def parse_url(url)
         
     | 
| 
      
 42 
     | 
    
         
            +
                    uri = URI.parse(URI.unescape(url))
         
     | 
| 
      
 43 
     | 
    
         
            +
                    url_params = Rack::Utils.parse_nested_query(
         
     | 
| 
      
 44 
     | 
    
         
            +
                      uri.query
         
     | 
| 
      
 45 
     | 
    
         
            +
                    ).delete_if { |key, _value| key == 'page' }
         
     | 
| 
      
 46 
     | 
    
         
            +
                    uri.query = to_query(url_params)
         
     | 
| 
      
 47 
     | 
    
         
            +
                    uri.query = nil if uri.query.empty?
         
     | 
| 
      
 48 
     | 
    
         
            +
                    uri
         
     | 
| 
      
 49 
     | 
    
         
            +
                  end
         
     | 
| 
      
 50 
     | 
    
         
            +
             
     | 
| 
       39 
51 
     | 
    
         
             
                  def generate_links
         
     | 
| 
       40 
52 
     | 
    
         
             
                    if page.number > 1
         
     | 
| 
       41 
53 
     | 
    
         
             
                      @first = generate_url(1)
         
     | 
| 
         @@ -50,7 +62,8 @@ module JSOM 
     | 
|
| 
       50 
62 
     | 
    
         
             
                  end
         
     | 
| 
       51 
63 
     | 
    
         | 
| 
       52 
64 
     | 
    
         
             
                  def generate_url(page_number)
         
     | 
| 
       53 
     | 
    
         
            -
                     
     | 
| 
      
 65 
     | 
    
         
            +
                    separator = url.to_s.include?('?') ? '&' : '?'
         
     | 
| 
      
 66 
     | 
    
         
            +
                    [url.to_s, url_params(page_number)].reject(&:empty?).join(separator)
         
     | 
| 
       54 
67 
     | 
    
         
             
                  end
         
     | 
| 
       55 
68 
     | 
    
         | 
| 
       56 
69 
     | 
    
         
             
                  def url_params(page_number)
         
     | 
| 
         @@ -61,12 +74,16 @@ module JSOM 
     | 
|
| 
       61 
74 
     | 
    
         
             
                    to_query(url_params)
         
     | 
| 
       62 
75 
     | 
    
         
             
                  end
         
     | 
| 
       63 
76 
     | 
    
         | 
| 
       64 
     | 
    
         
            -
                  def to_query(obj, namespace =  
     | 
| 
      
 77 
     | 
    
         
            +
                  def to_query(obj, namespace = '')
         
     | 
| 
       65 
78 
     | 
    
         
             
                    query = obj.collect do |key, value|
         
     | 
| 
       66 
79 
     | 
    
         
             
                      if value.is_a?(Hash)
         
     | 
| 
       67 
     | 
    
         
            -
                        to_query(value, namespace ? "#{namespace}[#{key}]" 
     | 
| 
      
 80 
     | 
    
         
            +
                        to_query(value, namespace.empty? ? key : "#{namespace}[#{key}]")
         
     | 
| 
       68 
81 
     | 
    
         
             
                      else
         
     | 
| 
       69 
     | 
    
         
            -
                         
     | 
| 
      
 82 
     | 
    
         
            +
                        if namespace.empty?
         
     | 
| 
      
 83 
     | 
    
         
            +
                          [key, value].join('=')
         
     | 
| 
      
 84 
     | 
    
         
            +
                        else
         
     | 
| 
      
 85 
     | 
    
         
            +
                          ["#{namespace}[#{key}]", value].join('=')
         
     | 
| 
      
 86 
     | 
    
         
            +
                        end
         
     | 
| 
       70 
87 
     | 
    
         
             
                      end
         
     | 
| 
       71 
88 
     | 
    
         
             
                    end.compact
         
     | 
| 
       72 
89 
     | 
    
         | 
    
        metadata
    CHANGED
    
    | 
         @@ -1,14 +1,14 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            --- !ruby/object:Gem::Specification
         
     | 
| 
       2 
2 
     | 
    
         
             
            name: jsom-pagination
         
     | 
| 
       3 
3 
     | 
    
         
             
            version: !ruby/object:Gem::Version
         
     | 
| 
       4 
     | 
    
         
            -
              version: 0.1. 
     | 
| 
      
 4 
     | 
    
         
            +
              version: 0.1.2
         
     | 
| 
       5 
5 
     | 
    
         
             
            platform: ruby
         
     | 
| 
       6 
6 
     | 
    
         
             
            authors:
         
     | 
| 
       7 
7 
     | 
    
         
             
            - Sebastian Wilgosz
         
     | 
| 
       8 
8 
     | 
    
         
             
            autorequire: 
         
     | 
| 
       9 
9 
     | 
    
         
             
            bindir: exe
         
     | 
| 
       10 
10 
     | 
    
         
             
            cert_chain: []
         
     | 
| 
       11 
     | 
    
         
            -
            date: 2020-09- 
     | 
| 
      
 11 
     | 
    
         
            +
            date: 2020-09-14 00:00:00.000000000 Z
         
     | 
| 
       12 
12 
     | 
    
         
             
            dependencies:
         
     | 
| 
       13 
13 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       14 
14 
     | 
    
         
             
              name: dry-struct
         
     | 
| 
         @@ -38,6 +38,20 @@ dependencies: 
     | 
|
| 
       38 
38 
     | 
    
         
             
                - - "~>"
         
     | 
| 
       39 
39 
     | 
    
         
             
                  - !ruby/object:Gem::Version
         
     | 
| 
       40 
40 
     | 
    
         
             
                    version: 3.8.3
         
     | 
| 
      
 41 
     | 
    
         
            +
            - !ruby/object:Gem::Dependency
         
     | 
| 
      
 42 
     | 
    
         
            +
              name: rack
         
     | 
| 
      
 43 
     | 
    
         
            +
              requirement: !ruby/object:Gem::Requirement
         
     | 
| 
      
 44 
     | 
    
         
            +
                requirements:
         
     | 
| 
      
 45 
     | 
    
         
            +
                - - ">="
         
     | 
| 
      
 46 
     | 
    
         
            +
                  - !ruby/object:Gem::Version
         
     | 
| 
      
 47 
     | 
    
         
            +
                    version: '0'
         
     | 
| 
      
 48 
     | 
    
         
            +
              type: :runtime
         
     | 
| 
      
 49 
     | 
    
         
            +
              prerelease: false
         
     | 
| 
      
 50 
     | 
    
         
            +
              version_requirements: !ruby/object:Gem::Requirement
         
     | 
| 
      
 51 
     | 
    
         
            +
                requirements:
         
     | 
| 
      
 52 
     | 
    
         
            +
                - - ">="
         
     | 
| 
      
 53 
     | 
    
         
            +
                  - !ruby/object:Gem::Version
         
     | 
| 
      
 54 
     | 
    
         
            +
                    version: '0'
         
     | 
| 
       41 
55 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       42 
56 
     | 
    
         
             
              name: simplecov
         
     | 
| 
       43 
57 
     | 
    
         
             
              requirement: !ruby/object:Gem::Requirement
         
     |