incline 0.3.5 → 0.3.6

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
2
  SHA1:
3
- metadata.gz: a9f80a4684c30ac694722071ae774bf990844c5c
4
- data.tar.gz: 840e9f021e47c41512ac3e956acf19f6cfec1fe4
3
+ metadata.gz: c22bc5c7a677ebd8b11734e83967760151242c3a
4
+ data.tar.gz: dfa99ed217bc6931202db255241e20c0246e0c85
5
5
  SHA512:
6
- metadata.gz: c7da4a8f9c25f06e661f087da00f7e573315ecf8d9f59f3a96ef569602e463c4ad9a92e19a59065550b3fecadd282337b29a686544ed679686af4f304addeb36
7
- data.tar.gz: 12690886ff01de202d58b6614881e89d1570b635566b68e0493ecfe2daed03a9769b22269dbe649f8cb9c387fa9d85200795bb61182e2d5eba642440c4c51fbf
6
+ metadata.gz: d8452a81918b8646b7a15c56655f2f40462e58821544be1d8a8e5c9a24c8e0e4a3840e4c5c1e53d47d9bb640fbd9bbb2e3c259b55ee2b57579e9cfa515d48819
7
+ data.tar.gz: c6bc08bb42fe75c4817c851cdf86f993568cfbba90f0e6ec83c239f5aedfdb8394d6e298bf66c7f12c6ff54d914f0d2b2c03341ca2405d493b55a1c8c09ea915
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- incline (0.3.5)
4
+ incline (0.3.6)
5
5
  ansi (~> 1.5.0)
6
6
  bcrypt
7
7
  bootstrap-sass
@@ -83,7 +83,7 @@ GEM
83
83
  execjs (2.7.0)
84
84
  faker (1.7.3)
85
85
  i18n (~> 0.5)
86
- ffi (1.9.22)
86
+ ffi (1.9.23)
87
87
  globalid (0.4.1)
88
88
  activesupport (>= 4.2.0)
89
89
  i18n (0.9.3)
@@ -209,10 +209,10 @@ module Incline
209
209
 
210
210
  dataset = load_records(relation, false)
211
211
  return -1 if dataset.blank?
212
-
212
+
213
213
  first_item = dataset.first
214
214
  klass = first_item.class
215
-
215
+
216
216
  id_field = klass.respond_to?('primary_key') ? klass.primary_key : nil
217
217
  id_field ||= first_item.respond_to?('id') ? 'id' : nil
218
218
 
@@ -223,7 +223,7 @@ module Incline
223
223
  loc_id = locate_id.to_s.downcase
224
224
  dataset.index{|item| item.send(id_field).to_s.downcase == loc_id} || -1
225
225
  end
226
-
226
+
227
227
  end
228
228
 
229
229
  ##
@@ -246,14 +246,14 @@ module Incline
246
246
  # store the unfiltered count.
247
247
  @config[:records_total] = relation.count
248
248
 
249
- # If we have search parameters and any of the search parameters is a regular expression or
249
+ # If we have search parameters and any of the search parameters is a regular expression or
250
250
  # one or more columns being searched is not a database column, then filtering must be done
251
251
  # locally.
252
252
  filter_local =
253
253
  !(search.blank? && columns.reject{|c| c[:search].blank? }.blank?) &&
254
254
  (
255
255
  # main search is a regex.
256
- search.is_a?(::Regexp) ||
256
+ search.is_a?(::Regexp) ||
257
257
  # one or more column searches is a regex.
258
258
  columns.select{|c| c[:search].is_a?(::Regexp)}.any? ||
259
259
  # one or more searchable columns is not in the database model
@@ -308,10 +308,10 @@ module Incline
308
308
  srch = col[:search]
309
309
  relation =
310
310
  if srch.is_a?(::Regexp)
311
- relation.select { |item| item.respond_to?(name) && item.send(name) =~ srch }
311
+ relation.select { |item| get_value(item, name) =~ srch }
312
312
  else
313
313
  srch = srch.to_s.upcase
314
- relation.select { |item| item.respond_to?(name) && item.send(name).to_s.upcase.include?(srch) }
314
+ relation.select { |item| get_value(item, name).to_s.upcase.include?(srch) }
315
315
  end
316
316
  end
317
317
 
@@ -320,10 +320,10 @@ module Incline
320
320
  cols = columns.select{|c| c[:searchable]}.map{|c| c[:name].to_s }.reject{|c| c.blank?}
321
321
  relation =
322
322
  if search.is_a?(::Regexp)
323
- relation.select{|item| cols.find{|col| item.respond_to?(col) && item.send(col) =~ search} }
323
+ relation.select{|item| cols.find{|col| get_value(item,col) =~ search} }
324
324
  else
325
325
  srch = search.to_s.upcase
326
- relation.select{|item| cols.find{|col| item.respond_to?(col) && item.send(col).to_s.upcase.include?(srch) }}
326
+ relation.select{|item| cols.find{|col| get_value(item,col).to_s.upcase.include?(srch) }}
327
327
  end
328
328
  end
329
329
 
@@ -360,13 +360,27 @@ module Incline
360
360
 
361
361
  private
362
362
 
363
+ def get_value(item, name)
364
+ val = item
365
+ while item && name.to_s.strip != ''
366
+ top,_,name = name.to_s.partition('.')
367
+ begin
368
+ val = val.respond_to?(top) ? val.send(top) : nil
369
+ rescue =>e
370
+ ::Incline::Log::warn e
371
+ val = nil
372
+ end
373
+ end
374
+ val
375
+ end
376
+
363
377
  def local_sort(a, b, attribs, index = 0)
364
378
  if index >= attribs.count
365
379
  0
366
380
  else
367
381
  attr, dir = attribs[index]
368
- val_a = a.send(attr)
369
- val_b = b.send(attr)
382
+ val_a = get_value(a, attr)
383
+ val_b = get_value(b, attr)
370
384
  if val_a == val_b
371
385
  local_sort a, b, attribs, index + 1
372
386
  else
@@ -1,3 +1,3 @@
1
1
  module Incline
2
- VERSION = "0.3.5"
2
+ VERSION = "0.3.6"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: incline
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.5
4
+ version: 0.3.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Beau Barker
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2018-02-24 00:00:00.000000000 Z
11
+ date: 2018-02-28 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -610,7 +610,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
610
610
  version: '0'
611
611
  requirements: []
612
612
  rubyforge_project:
613
- rubygems_version: 2.6.11
613
+ rubygems_version: 2.6.13
614
614
  signing_key:
615
615
  specification_version: 4
616
616
  summary: A gem designed to get off to an even quicker start with Rails.