philtre 0.1.1 → 0.1.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: c75bbf7d7dfed6ed3cd5afb6f4477f48b613e8e2
4
- data.tar.gz: 8d4dd4dc4075865c44baa7872a03ff6dbf21fed1
2
+ SHA256:
3
+ metadata.gz: 8bdfc9784c01323889c0147bb0addfcaa54eb8a5fba82241d2217261763b7bc0
4
+ data.tar.gz: 4caf87fc11f80fd2c9affbc30068909811d381a64f144a48b46f4aeedec54ceb
5
5
  SHA512:
6
- metadata.gz: dcb1f7273340067c4d12faa431406a8b1f9f8658730d1516cdb1bf9568b95033f71e6631c497c6dcef1854193cecba2d18754a06406e5546cc0cff41cedd975d
7
- data.tar.gz: 057199f52f8ec5b894020acb67e618ccfe952e450b374e8e29d68163e587ba8aa756376d8f5ba11e0bc3961634968a2fa273db3ac142d7df9b9dc4600f7179b1
6
+ metadata.gz: bcdfc3a3c39d329cc3cc992e0a2b96f040349b387d5e704348114eee33f70ec87bab510afa90cd8a2190074f72b5b54f3f9d2096fb7b5f876d7bd46b1f6d872f
7
+ data.tar.gz: de2a824f0846f20216ccd1f3cd7847fcaa12ad1be786b4771be1ce45ceaaf33a52d19ea88a209577420751589883f35211cf004948e61f2522b1718f49c0fe36
@@ -1,10 +1,14 @@
1
1
  language: ruby
2
2
  rvm:
3
- - 2.0.0
4
- - 2.1.10
5
- - 2.2.5
6
- - 2.3.1
7
- - jruby-9.0.5.0
8
- - jruby-9.1.0.0
9
- - rbx-2
3
+ - 2.4
4
+ - 2.5
5
+ - 2.6
6
+
7
+ # srsly, not fighting with this
8
+ # - jruby-9.0
9
+ # - jruby-9.1
10
+ # - jruby-9.2
11
+ # does not install on travis as of 26-Oct-2016
12
+ # - rbx
13
+ # - rbx-2
10
14
  script: bundle exec rspec spec
data/Gemfile CHANGED
@@ -2,3 +2,7 @@ source 'https://rubygems.org'
2
2
 
3
3
  # Specify your gem's dependencies in philtre.gemspec
4
4
  gemspec
5
+
6
+ group :development do
7
+ gem 'pry-debundle'
8
+ end
@@ -1,3 +1,7 @@
1
+ == 0.1.2
2
+ * fix grinder and various specs to be compatible with Sequel-5.x (tested with Sequel-5.24.0)
3
+ * drop travis support for jruby and <ruby-2.4.0 - it might still work ok but it won't be ci tested
4
+
1
5
  == 0.1.1
2
6
  * drop support for ruby-2.0.0
3
7
  * add customisable parameter filtering
@@ -124,8 +124,15 @@ protected
124
124
  obj.clone Hash[ v(obj.opts).map{|k,val| [k, val.is_a?(Philtre::EmptyExpression) ? false : val]} ]
125
125
 
126
126
  # for Sequel::Models
127
- when ->(obj){obj.respond_to? :dataset}
128
- v obj.dataset
127
+ when -> obj { obj.is_a?(Class) && obj.ancestors.include?(Sequel::Model) }
128
+ # From sequel-5.x.x, I suspect,
129
+ # SomeModel.dataset.opts includes :row_proc => SomeModel and :model => SomeModel
130
+ # which sends v into an endless loop.
131
+ opts = obj.dataset.opts.reject{|_,v| v == obj}
132
+ transformed = v(opts).map do |k,val|
133
+ [k, val.is_a?(Philtre::EmptyExpression) ? false : val]
134
+ end
135
+ obj.dataset.clone Hash[transformed]
129
136
 
130
137
  # for other things that are convertible to dataset
131
138
  when ->(obj){obj.respond_to? :to_dataset}
@@ -1,3 +1,3 @@
1
1
  module Philtre #:nodoc:
2
- VERSION = "0.1.1"
2
+ VERSION = "0.1.2"
3
3
  end
@@ -21,8 +21,9 @@ Gem::Specification.new do |spec|
21
21
  spec.add_dependency 'sequel'
22
22
  spec.add_dependency 'fastandand'
23
23
 
24
- spec.add_development_dependency 'bundler', '~> 1.5'
24
+ spec.add_development_dependency 'bundler'
25
25
  spec.add_development_dependency 'rake'
26
26
  spec.add_development_dependency 'rspec'
27
27
  spec.add_development_dependency 'faker'
28
+ spec.add_development_dependency 'strscan'
28
29
  end
@@ -9,7 +9,7 @@ Sequel.extension :core_extensions
9
9
 
10
10
  describe Sequel::Dataset do
11
11
  subject do
12
- Sequel.mock[:t].filter( :name.lieu, :title.lieu ).order( :birth_year.lieu )
12
+ Sequel.mock[:t].filter( Sequel.&(:name.lieu, :title.lieu) ).order( :birth_year.lieu )
13
13
  end
14
14
 
15
15
  describe '#grind' do
@@ -8,10 +8,17 @@ describe Philtre::Filter do
8
8
  # must be in before otherwise it's unpleasant to hook the
9
9
  # class in to the dataset.
10
10
  before :all do
11
- @dataset = Sequel.mock[:planks]
11
+ @dataset = Sequel.mock[:planks].dup
12
12
  class Plank < Sequel::Model; end
13
13
  # just stop whining and generate the bleedin' sql, k?
14
- def @dataset.supports_regexp?; true end
14
+ # def @dataset.supports_regexp?; true end
15
+ end
16
+
17
+ # replacement for remove Sequel::Dataset.sql_literal
18
+ # that is, create a string from an expression and dataset
19
+ def sql_of( expr, dataset)
20
+ dataset.send :literal_expression_append, rv=String.new, expr
21
+ rv
15
22
  end
16
23
 
17
24
  attr_reader :dataset
@@ -85,7 +92,7 @@ describe Philtre::Filter do
85
92
 
86
93
  it 'defaults to asc' do
87
94
  filter = described_class.new one: 1, two: 2, order: 'things'
88
- sqlfrag = filter.order_expr(:things).sql_literal(dataset)
95
+ sqlfrag = sql_of filter.order_expr(:things), dataset
89
96
  sqlfrag.should == 'things ASC'
90
97
  end
91
98
  end
@@ -148,7 +155,7 @@ describe Philtre::Filter do
148
155
  expr.args.first.should == Sequel.expr(field)
149
156
  expr.args.last.should == value
150
157
 
151
- expr.sql_literal(@dataset).should be_a(String)
158
+ sql_of(expr, @dataset).should be_a(String)
152
159
  end
153
160
  end
154
161
 
@@ -255,11 +262,11 @@ describe Philtre::Filter do
255
262
  end
256
263
 
257
264
  it 'substitutes a field name' do
258
- expr = Sequel.expr( filter.to_expr( :owner_like, 'hallelujah', :heavens__salutation ) )
265
+ expr = Sequel.expr( filter.to_expr( :owner_like, 'hallelujah', Sequel.qualify(:heavens, :salutation) ) )
259
266
  expr.op.should == :'~*'
260
267
  expr.args.first.should be_kind_of(Sequel::SQL::QualifiedIdentifier)
261
- expr.args.first.column.should == 'salutation'
262
- expr.args.first.table.should == 'heavens'
268
+ expr.args.first.column.should == :salutation
269
+ expr.args.first.table.should == :heavens
263
270
  expr.args.last.should == 'hallelujah'
264
271
  end
265
272
 
@@ -273,7 +280,7 @@ describe Philtre::Filter do
273
280
 
274
281
  expr = filter.to_expr( :year_range, [1984, 1970, 2012] )
275
282
  expr.should be_a(Sequel::SQL::Expression)
276
- expr.sql_literal(dataset).should == '((year >= 1970) AND (year <= 2012))'
283
+ sql_of(expr, dataset).should == '((year >= 1970) AND (year <= 2012))'
277
284
  end
278
285
  end
279
286
 
@@ -294,13 +301,13 @@ describe Philtre::Filter do
294
301
  end
295
302
 
296
303
  it 'alternate name' do
297
- expr = filter.expr_for(:name, :things__name)
304
+ expr = filter.expr_for(:name, Sequel.qualify(:things, :name) )
298
305
  expr.should_not be_nil
299
306
  expr.should be_a(Sequel::SQL::BooleanExpression)
300
307
 
301
308
  expr.args.first.tap do |field_expr|
302
- field_expr.column.should == 'name'
303
- field_expr.table.should == 'things'
309
+ field_expr.column.should == :name
310
+ field_expr.table.should == :things
304
311
  end
305
312
  end
306
313
  end
@@ -314,11 +321,11 @@ describe Philtre::Filter do
314
321
  end
315
322
 
316
323
  it 'ascending' do
317
- filter.order_for(:year).sql_literal(dataset).should == 'year ASC'
324
+ sql_of(filter.order_for(:year), dataset).should == 'year ASC'
318
325
  end
319
326
 
320
327
  it 'name clash' do
321
- filter.order_for(:title).sql_literal(dataset).should == 'title ASC'
328
+ sql_of(filter.order_for(:title), dataset).should == 'title ASC'
322
329
  end
323
330
  end
324
331
 
@@ -7,7 +7,7 @@ Sequel.extension :core_extensions
7
7
 
8
8
  describe Philtre::Grinder do
9
9
  def ds
10
- @ds ||= Sequel.mock[:t].filter( :name.lieu, :title.lieu ).order( :birth_year.lieu )
10
+ @ds ||= Sequel.mock[:t].filter( Sequel.&(:name.lieu, :title.lieu) ).order( :birth_year.lieu )
11
11
  end
12
12
 
13
13
  def other_ds
@@ -138,7 +138,7 @@ describe Philtre::Grinder do
138
138
  @ds ||=
139
139
  begin
140
140
  subselect = Sequel.mock[:sub].select(:id)
141
- Sequel.mock[:t].filter( :name.lieu, :title.lieu, person_id: subselect ).order( :birth_year.lieu )
141
+ Sequel.mock[:t].filter( Sequel.&(:name.lieu, :title.lieu, person_id: subselect) ).order( :birth_year.lieu )
142
142
  end
143
143
  end
144
144
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: philtre
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.1.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - John Anderson
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-10-27 00:00:00.000000000 Z
11
+ date: 2019-09-03 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: sequel
@@ -42,16 +42,16 @@ dependencies:
42
42
  name: bundler
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - "~>"
45
+ - - ">="
46
46
  - !ruby/object:Gem::Version
47
- version: '1.5'
47
+ version: '0'
48
48
  type: :development
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
- - - "~>"
52
+ - - ">="
53
53
  - !ruby/object:Gem::Version
54
- version: '1.5'
54
+ version: '0'
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: rake
57
57
  requirement: !ruby/object:Gem::Requirement
@@ -94,6 +94,20 @@ dependencies:
94
94
  - - ">="
95
95
  - !ruby/object:Gem::Version
96
96
  version: '0'
97
+ - !ruby/object:Gem::Dependency
98
+ name: strscan
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - ">="
102
+ - !ruby/object:Gem::Version
103
+ version: '0'
104
+ type: :development
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - ">="
109
+ - !ruby/object:Gem::Version
110
+ version: '0'
97
111
  description: Encode various filtering operations in http parameter hashes
98
112
  email:
99
113
  - panic@semiosix.com
@@ -147,8 +161,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
147
161
  - !ruby/object:Gem::Version
148
162
  version: '0'
149
163
  requirements: []
150
- rubyforge_project:
151
- rubygems_version: 2.5.1
164
+ rubygems_version: 3.0.3
152
165
  signing_key:
153
166
  specification_version: 4
154
167
  summary: http parameter-hash friendly filtering for Sequel