tire-multisort 0.2.0

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.
@@ -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: