tire-multisort 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 47dd158d717fd7f4031f044e6f44a22ef705ba0b
4
+ data.tar.gz: c012f4c898c95115d5f6ccd60c0133cf138a8999
5
+ SHA512:
6
+ metadata.gz: 29bf3d7ffaca9349ef1014e9867199f6a4e58ac25f97799b7f0641e4b38ab85a44deded8574841f2992ba0d1250985892945278c2a5b4d4860b91e32c1b01d5e
7
+ data.tar.gz: 3c2eb527de681d91375a079b4765457ae9717977b37c297a48f370b6e954b64fd4b23b412c317a42fc373446c770eefddc190cbae2a5a6e2f6437d02b8ffcd10
@@ -0,0 +1,17 @@
1
+ *.gem
2
+ *.rbc
3
+ .bundle
4
+ .config
5
+ .yardoc
6
+ Gemfile.lock
7
+ InstalledFiles
8
+ _yardoc
9
+ coverage
10
+ doc/
11
+ lib/bundler/man
12
+ pkg
13
+ rdoc
14
+ spec/reports
15
+ test/tmp
16
+ test/version_tmp
17
+ tmp
@@ -0,0 +1,4 @@
1
+ language: ruby
2
+ rvm:
3
+ - "2.0.0"
4
+ - "2.1.0"
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Specify your gem's dependencies in tire-multisort.gemspec
4
+ gemspec
@@ -0,0 +1,22 @@
1
+ Copyright (c) 2015 igor04
2
+
3
+ MIT License
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining
6
+ a copy of this software and associated documentation files (the
7
+ "Software"), to deal in the Software without restriction, including
8
+ without limitation the rights to use, copy, modify, merge, publish,
9
+ distribute, sublicense, and/or sell copies of the Software, and to
10
+ permit persons to whom the Software is furnished to do so, subject to
11
+ the following conditions:
12
+
13
+ The above copyright notice and this permission notice shall be
14
+ included in all copies or substantial portions of the Software.
15
+
16
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
19
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
20
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
21
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
22
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
@@ -0,0 +1,130 @@
1
+ # Tire Multisort
2
+ [![Gem Version](https://badge.fury.io/rb/tire-multisort.png)](http://badge.fury.io/rb/tire-multisort)
3
+ [![Code Climate](https://codeclimate.com/github/igor04/tire-multisort/badges/gpa.svg)](https://codeclimate.com/github/igor04/tire-multisort)
4
+ [![Test Coverage](https://codeclimate.com/github/igor04/tire-multisort/badges/coverage.svg)](https://codeclimate.com/github/igor04/tire-multisort)
5
+ [![Build Status](https://travis-ci.org/igor04/tire-multisort.png?branch=master)](https://travis-ci.org/igor04/tire-multisort)
6
+
7
+ `multi_sort` extended tire `sort` with some abilities
8
+
9
+ ## Installation
10
+
11
+ Add this line to your application's Gemfile:
12
+
13
+ gem 'tire-multisort'
14
+
15
+ And then execute:
16
+
17
+ $ bundle
18
+
19
+ Or install it yourself as:
20
+
21
+ $ gem install tire-multisort
22
+
23
+ ## Usage
24
+
25
+ ```ruby
26
+ multi_sort sort, order do
27
+ by_default :premium
28
+
29
+ by :date
30
+
31
+ by :name, :title
32
+ by :rating, :subject_rating
33
+ by :relevance, :_score
34
+ by :category, :category_name
35
+ by :distance, :_geo_distance, location: "test", unit: 'mi'
36
+ by :premium, :premium, :desc
37
+
38
+ by_collection :category, [:category, :name]
39
+ by_collection :premium, [:premium, :relevance, :name]
40
+ end
41
+ ```
42
+
43
+ ## Checkpoints
44
+
45
+ - `multi sort` - accept `sort` argument as string `name,rating,date` which
46
+ will be translated to propper sorting field
47
+
48
+ - `auto order`
49
+
50
+ ```ruby
51
+ # multi_sort
52
+ by :date
53
+ ```
54
+
55
+ ```ruby
56
+ # sort
57
+ by :date, order
58
+ ```
59
+
60
+ - `predefined order` - using predefined order instead `order` parameter
61
+
62
+ ```ruby
63
+ # multi_sort
64
+ by :date, :asc
65
+ by :date, invert(order) # helper method (useful for some combination with using `collections`)
66
+ ```
67
+
68
+ ```ruby
69
+ # sort
70
+ by :date, :asc
71
+ by :date, (order == :asc ? :desc : :asc)
72
+ ```
73
+
74
+ - `auto check` - run sort just from `collection`, `default` or from `sort` param
75
+
76
+ ```ruby
77
+ # multi_sort
78
+ by :date
79
+ ```
80
+
81
+ ```ruby
82
+ # sort
83
+ if sort == :date
84
+ by :date, order
85
+ end
86
+ ```
87
+
88
+
89
+ - `aliasing`
90
+
91
+ ```ruby
92
+ # multi_sort
93
+ by :name, :title
94
+ ```
95
+
96
+ ```ruby
97
+ # sort
98
+ if sort == :name
99
+ by :title, order
100
+ end
101
+ ```
102
+
103
+ - `collections` - group fiew sort fields to sort collection
104
+
105
+ ```ruby
106
+ # multi_sort
107
+ by_collection :category, [:category, :name]
108
+ ```
109
+
110
+ ```ruby
111
+ # sort
112
+ if sort == :category
113
+ by :category, order
114
+ by :name, order
115
+ end
116
+ ```
117
+
118
+ - `default` - is used if passed sort param is incorrect or missed
119
+
120
+ ```ruby
121
+ by_default :premium
122
+ ```
123
+
124
+ ## Contributing
125
+
126
+ 1. Fork it ( http://github.com/igor04/tire-multisort/fork )
127
+ 2. Create your feature branch (`git checkout -b my-new-feature`)
128
+ 3. Commit your changes (`git commit -am 'Add some feature'`)
129
+ 4. Push to the branch (`git push origin my-new-feature`)
130
+ 5. Create new Pull Request
@@ -0,0 +1,4 @@
1
+ require 'rspec/core/rake_task'
2
+
3
+ task :default => :spec
4
+ RSpec::Core::RakeTask.new
@@ -0,0 +1,5 @@
1
+ require "tire-multisort/version"
2
+
3
+ require "tire"
4
+ require "tire-multisort/tire/search"
5
+ require "tire-multisort/tire/search/multi_sort"
@@ -0,0 +1,16 @@
1
+ module Tire
2
+ module Search
3
+
4
+ class Search
5
+ # sort: "category,name,distance,.." or single "category", :category
6
+ # order: "asc", :desc
7
+ # block methods: by, by_default, by_collection
8
+ #
9
+ def multi_sort(sort, order, &block)
10
+ @sort = MultiSort.new(sort, order, &block).to_ary
11
+
12
+ self
13
+ end
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,96 @@
1
+ module Tire
2
+ module Search
3
+
4
+ # EXAMPLE of using:
5
+ #
6
+ #
7
+ # multi_sort sort, order do
8
+ #
9
+ # by_default :premium
10
+ #
11
+ # by :date
12
+ # by :rating, invert(order)
13
+ #
14
+ # by :name, :title
15
+ # by :rating, :licensee_rating
16
+ # by :relevance, :_score
17
+ # by :category, :category_name
18
+ # by :distance, :_geo_distance, location: "test", unit: 'mi'
19
+ # by :premium, :premium, :desc
20
+ #
21
+ # by_collection :category, [:category, :name]
22
+ # by_collection :premium, [:premium, :relevance, :name]
23
+ #
24
+ # end
25
+ #
26
+ class MultiSort < Sort
27
+
28
+ alias :origin_by :by
29
+
30
+ def initialize(sort_param, order, &block)
31
+ @collections = {}
32
+ @fields = {}
33
+
34
+ super(&block)
35
+
36
+ @sort = sort_by(sort_param)
37
+ @order = order
38
+ fields_with_order.each { |opts| origin_by *opts }
39
+ end
40
+
41
+ def by_default(sort_param)
42
+ @default = sort_by(sort_param)
43
+ end
44
+
45
+ def by_collection(sort, collection)
46
+ if collection.is_a? Array
47
+ @collections[sort] = collection
48
+ else
49
+ raise ArgumentError, "expect Array (got #{collection.class}) for collection param"
50
+ end
51
+ end
52
+
53
+ def by(sort, *options)
54
+ if options.blank? || [:desc, :asc].include?(options.first)
55
+ @fields[sort] = options.unshift(sort)
56
+ else
57
+ @fields[sort] = options
58
+ end
59
+ end
60
+
61
+ def invert(order)
62
+ order.to_s == 'asc' ? :desc : :asc
63
+ end
64
+
65
+ private
66
+
67
+ def add_order_to_field(field)
68
+ if field.size == 1
69
+ field.push @order
70
+ elsif field.last.is_a?(Hash) && !field.last.has_key?(:order)
71
+ field.last.merge!(order: @order)
72
+ end
73
+
74
+ field
75
+ end
76
+
77
+ def fields_with_order
78
+ @sort = @default if fields.empty?
79
+
80
+ fields.map { |field| add_order_to_field field.dup }
81
+ end
82
+
83
+ def fields
84
+ collections.map { |name| @fields[name.to_sym] }.compact
85
+ end
86
+
87
+ def collections
88
+ @sort.size == 1 ? (@collections[@sort.first] || @sort) : @sort
89
+ end
90
+
91
+ def sort_by(param)
92
+ param.to_s.split(',').map { |s| s.strip.to_sym }
93
+ end
94
+ end
95
+ end
96
+ end
@@ -0,0 +1,5 @@
1
+ module Tire
2
+ module MultiSort
3
+ VERSION = "0.2.0"
4
+ end
5
+ end
@@ -0,0 +1,67 @@
1
+ require 'helper'
2
+
3
+ describe "Tire::Search::MultiSort" do
4
+ subject(:search) { Tire::Search::Search.new }
5
+
6
+ context 'by_collection method' do
7
+ it 'simple collection' do
8
+ search.multi_sort(:sort, :asc) do
9
+ by_default :sort_field
10
+
11
+ by :name
12
+ by :sort_field, :asc
13
+ by :sort_param2, :sort_field2, :desc
14
+
15
+ by_collection :sort, [:sort_param2, :sort_field, :name]
16
+ by_collection :sort2, [:name, :sort_field, :sort_param2]
17
+ end
18
+
19
+ expect(search.to_hash[:sort]).to eq [{sort_field2: :desc}, {sort_field: :asc}, {name: :asc}]
20
+ end
21
+
22
+ it 'with the same name as existed sort' do
23
+ search.multi_sort(:sort, :asc) do
24
+ by_default :sort_field
25
+
26
+ by :sort
27
+ by :name
28
+ by :sort_field, :asc
29
+ by :sort_param2, :sort_field2, :desc
30
+
31
+ by_collection :sort, [:sort_param2, :sort_field, :name]
32
+ end
33
+
34
+ expect(search.to_hash[:sort]).to eq [{sort_field2: :desc}, {sort_field: :asc}, {name: :asc}]
35
+ end
36
+
37
+ it 'ignore with multiple sort' do
38
+ search.multi_sort('sort,name,sort_param2', :asc) do
39
+ by_default :sort_field
40
+
41
+ by :sort
42
+ by :name
43
+ by :sort_field, :asc
44
+ by :sort_param2, :sort_field2, :desc
45
+
46
+ by_collection :sort, [:sort_param2, :sort_field, :name]
47
+ end
48
+
49
+ expect(search.to_hash[:sort]).to eq [{sort: :asc}, {name: :asc}, {sort_field2: :desc}]
50
+ end
51
+
52
+ it 'with incorrect sort parameter' do
53
+ search.multi_sort(:sort, :asc) do
54
+ by_default :sort_field
55
+
56
+ by :sort
57
+ by :name
58
+ by :sort_field, :asc
59
+ by :sort_param2, :sort_field2, :desc
60
+
61
+ by_collection :sort, [:sort_param2, :sort_field, :name2]
62
+ end
63
+
64
+ expect(search.to_hash[:sort]).to eq [{sort_field2: :desc}, {sort_field: :asc}]
65
+ end
66
+ end
67
+ end
@@ -0,0 +1,66 @@
1
+ require 'helper'
2
+
3
+ describe "Tire::Search::MultiSort" do
4
+ subject(:search) { Tire::Search::Search.new }
5
+
6
+ context 'by_default method' do
7
+ it 'with invalid sort parameter' do
8
+ search.multi_sort(:invalid_sort, :asc) do
9
+ by_default :sort_field
10
+
11
+ by :sort_field
12
+ by :sort_field2
13
+ end
14
+
15
+ expect(search.to_hash[:sort]).to eq [{sort_field: :asc}]
16
+ end
17
+
18
+ it 'with missing sort parameter' do
19
+ search.multi_sort(nil, :asc) do
20
+ by_default :sort_field
21
+
22
+ by :sort_field
23
+ by :sort_field2
24
+ end
25
+
26
+ expect(search.to_hash[:sort]).to eq [{sort_field: :asc}]
27
+ end
28
+
29
+ it 'could be redefined' do
30
+ search.multi_sort(nil, :asc) do
31
+ by_default :sort_field
32
+
33
+ by :sort_field, :asc
34
+ by :sort_param2, :sort_field2, :desc
35
+
36
+ by_default :sort_param2
37
+ end
38
+
39
+ expect(search.to_hash[:sort]).to eq [{sort_field2: :desc}]
40
+ end
41
+
42
+ it 'ignore when sort correct' do
43
+ search.multi_sort(:sort_param2, :asc) do
44
+ by_default :sort_field
45
+
46
+ by :sort_field, :asc
47
+ by :sort_param2, :sort_field2, :desc
48
+ end
49
+
50
+ expect(search.to_hash[:sort]).to eq [{sort_field2: :desc}]
51
+ end
52
+
53
+ it 'with sort collection' do
54
+ search.multi_sort(nil, :asc) do
55
+ by_default :sort_param3
56
+
57
+ by :sort_field
58
+ by :sort_param2, :sort_field2, :desc
59
+
60
+ by_collection :sort_param3, [:sort_field, :sort_param2]
61
+ end
62
+
63
+ expect(search.to_hash[:sort]).to eq [{sort_field: :asc}, {sort_field2: :desc}]
64
+ end
65
+ end
66
+ end
@@ -0,0 +1,99 @@
1
+ require 'helper'
2
+
3
+ describe "Tire::Search::MultiSort" do
4
+ subject(:search) { Tire::Search::Search.new }
5
+
6
+ context 'by method' do
7
+ it 'with alias and predefined order' do
8
+ search.multi_sort(:sort_param, :desc) do
9
+ by :sort_param, :sort_field, :asc
10
+ by :sort_param2, :sort_field2, :desc
11
+ end
12
+
13
+ expect(search.to_hash[:sort]).to eq [{sort_field: :asc}]
14
+ end
15
+
16
+ it 'with alias' do
17
+ search.multi_sort(:sort_param, :desc) do
18
+ by :sort_param, :sort_field
19
+ by :sort_param2, :sort_field2
20
+ end
21
+
22
+ expect(search.to_hash[:sort]).to eq [{sort_field: :desc}]
23
+ end
24
+
25
+ it 'without alias and with predefined order' do
26
+ search.multi_sort(:sort_field, :desc) do
27
+ by :sort_field, :asc
28
+ by :sort_field2, :order
29
+ end
30
+
31
+ expect(search.to_hash[:sort]).to eq [{sort_field: :asc}]
32
+ end
33
+
34
+ it 'without alias' do
35
+ search.multi_sort(:sort_field, :desc) do
36
+ by :sort_field
37
+ by :sort_field2
38
+ end
39
+
40
+ expect(search.to_hash[:sort]).to eq [{sort_field: :desc}]
41
+ end
42
+
43
+ it 'with multiple sort' do
44
+ search.multi_sort('sort_field2,sort_field,sort_param2,sort_param', :desc) do
45
+ by :sort_field
46
+ by :sort_field2
47
+ by :sort_param, :sort_field3
48
+ by :sort_param2, :sort_field4, :asc
49
+ end
50
+
51
+ expect(search.to_hash[:sort]).to eq [{sort_field2: :desc}, {sort_field: :desc}, {sort_field4: :asc}, {sort_field3: :desc}]
52
+ end
53
+
54
+ it 'with incorrect multiple sort parameter' do
55
+ search.multi_sort('sort_field0,sort_field,sort_param2,sort_param', :desc) do
56
+ by :sort_field
57
+ by :sort_field2
58
+ by :sort_param, :sort_field3
59
+ by :sort_param2, :sort_field4, :asc
60
+ end
61
+
62
+ expect(search.to_hash[:sort]).to eq [{sort_field: :desc}, {sort_field4: :asc}, {sort_field3: :desc}]
63
+ end
64
+
65
+ it 'with multiple sort and spaces' do
66
+ search.multi_sort(' sort_field, sort_param2, sort_param ', :desc) do
67
+ by :sort_field
68
+ by :sort_field2
69
+ by :sort_param, :sort_field3
70
+ by :sort_param2, :sort_field4, :asc
71
+ end
72
+
73
+ expect(search.to_hash[:sort]).to eq [{sort_field: :desc}, {sort_field4: :asc}, {sort_field3: :desc}]
74
+ end
75
+
76
+ it 'with invert' do
77
+ order = :asc
78
+
79
+ search.multi_sort(:sort_field, order) do
80
+ by :sort_field, invert(order)
81
+ by :sort_field2
82
+ by :sort_param, :sort_field3
83
+ by :sort_param2, :sort_field4, :asc
84
+ end
85
+
86
+ expect(search.to_hash[:sort]).to eq [{sort_field: :desc}]
87
+ end
88
+
89
+ it 'with additional parameters' do
90
+ search.multi_sort(:distance, :asc) do
91
+ by :sort_param, :sort_field3
92
+ by :sort_param2, :sort_field4, :asc
93
+ by :distance, :_geo_distance, location: "test", unit: 'mi'
94
+ end
95
+
96
+ expect(search.to_hash[:sort]).to eq [{_geo_distance: {location: "test", unit: "mi", order: :asc}}]
97
+ end
98
+ end
99
+ end
@@ -0,0 +1,15 @@
1
+ require 'rubygems'
2
+ require 'bundler'
3
+ require "codeclimate-test-reporter"
4
+
5
+ ENV['CODECLIMATE_REPO_TOKEN'] = '9db5a2e5847018b781c2d42d12ea9b05c4662b2cfad232b356731700da5cc418'
6
+ CodeClimate::TestReporter.start
7
+ require "#{File.dirname(__FILE__)}/../lib/tire-multisort"
8
+
9
+ begin
10
+ Bundler.setup(:default, :development)
11
+ rescue Bundler::BundlerError => e
12
+ $stderr.puts e.message
13
+ $stderr.puts "Run `bundle install` to install missing gems"
14
+ exit e.status_code
15
+ end
@@ -0,0 +1,26 @@
1
+ # coding: utf-8
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'tire-multisort/version'
5
+
6
+ Gem::Specification.new do |spec|
7
+ spec.name = "tire-multisort"
8
+ spec.version = Tire::MultiSort::VERSION
9
+ spec.authors = ["igor04"]
10
+ spec.email = ["igor.s04g@gmail.com"]
11
+ spec.summary = %q{tire sort extension}
12
+ spec.description = %q{multi_sort extended tire sort with some abilities}
13
+ spec.homepage = "https://github.com/igor04/tire-multisort"
14
+ spec.license = "MIT"
15
+
16
+ spec.files = `git ls-files -z`.split("\x0")
17
+ spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
18
+ spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
19
+ spec.require_paths = ["lib"]
20
+
21
+ spec.add_development_dependency "bundler", "~> 1.5"
22
+ spec.add_development_dependency "rake"
23
+ spec.add_development_dependency "rspec"
24
+ spec.add_development_dependency "tire"
25
+ spec.add_development_dependency "codeclimate-test-reporter"
26
+ end
metadata ADDED
@@ -0,0 +1,134 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: tire-multisort
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.2.0
5
+ platform: ruby
6
+ authors:
7
+ - igor04
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2015-01-26 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: bundler
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '1.5'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '1.5'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rake
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: rspec
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: tire
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: codeclimate-test-reporter
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
83
+ description: multi_sort extended tire sort with some abilities
84
+ email:
85
+ - igor.s04g@gmail.com
86
+ executables: []
87
+ extensions: []
88
+ extra_rdoc_files: []
89
+ files:
90
+ - ".gitignore"
91
+ - ".travis.yml"
92
+ - Gemfile
93
+ - LICENSE.txt
94
+ - README.md
95
+ - Rakefile
96
+ - lib/tire-multisort.rb
97
+ - lib/tire-multisort/tire/search.rb
98
+ - lib/tire-multisort/tire/search/multi_sort.rb
99
+ - lib/tire-multisort/version.rb
100
+ - spec/by_collection_method_spec.rb
101
+ - spec/by_default_method_spec.rb
102
+ - spec/by_method_spec.rb
103
+ - spec/helper.rb
104
+ - tire-multisort.gemspec
105
+ homepage: https://github.com/igor04/tire-multisort
106
+ licenses:
107
+ - MIT
108
+ metadata: {}
109
+ post_install_message:
110
+ rdoc_options: []
111
+ require_paths:
112
+ - lib
113
+ required_ruby_version: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - ">="
116
+ - !ruby/object:Gem::Version
117
+ version: '0'
118
+ required_rubygems_version: !ruby/object:Gem::Requirement
119
+ requirements:
120
+ - - ">="
121
+ - !ruby/object:Gem::Version
122
+ version: '0'
123
+ requirements: []
124
+ rubyforge_project:
125
+ rubygems_version: 2.2.2
126
+ signing_key:
127
+ specification_version: 4
128
+ summary: tire sort extension
129
+ test_files:
130
+ - spec/by_collection_method_spec.rb
131
+ - spec/by_default_method_spec.rb
132
+ - spec/by_method_spec.rb
133
+ - spec/helper.rb
134
+ has_rdoc: