snfoil 0.7.0 → 0.8.0

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
  SHA256:
3
- metadata.gz: 47df13555f0efd4bd9ad506a79f9af2d3955f209bd4fabc0e086f6f5e7b7d953
4
- data.tar.gz: 74a0a9556cfeed6b434ba40319b7bea0329ddffbcd31f3155aec2b37f0474b71
3
+ metadata.gz: 5029787f4c700bd7cd9e96bab7a1dc4e7b6b026d6ccef0da1bc180c3430b72cf
4
+ data.tar.gz: d699faeb7386a4d84f04d5df66802c08ee8f788008fa5d4c9331823417c20420
5
5
  SHA512:
6
- metadata.gz: d76ecf6affbc2be179ccd3fef9c28941f4217ff6ad4a0b708605749cf2f89b0108e409fd51cd792fd53915e1f4db00324cce3f9aa430dadd5a6b42315d432b21
7
- data.tar.gz: 2acfb8773a4f31bce92c81b66eb9024800990a10804cf9e7d9d72a53ea0bc631b4b9f5ed44af5e7218c668d55c634ae43b5d919e91af32015415326f1994bece
6
+ metadata.gz: f42e51e0d446fb0c6eee95dde45ea50da55e41c0a1a610fb95d3145531c2ebdd41be922485d71b5c5747a42e68814526c8a5973a41ed0604b0555e2affd7db80
7
+ data.tar.gz: 85fd3b571c33e1b48efd189b13c66654bca2e5b847250b11395e0855680150924223a209adc4b46135b18cdb13c9dd4ab62e2839975c0f95cf6f183cefea3d42
@@ -1,5 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require 'delegate'
4
+
3
5
  module SnFoil
4
6
  module Adapters
5
7
  module ORMs
@@ -7,7 +7,7 @@ module SnFoil
7
7
  extend ActiveSupport::Concern
8
8
 
9
9
  class_methods do
10
- attr_reader :i_model, :i_setup, :i_filters, :i_search_step
10
+ attr_reader :i_model, :i_setup, :i_filters, :i_search_step, :i_booleans
11
11
 
12
12
  def model(klass = nil)
13
13
  @i_model = klass
@@ -27,6 +27,11 @@ module SnFoil
27
27
  unless: options[:unless]
28
28
  }
29
29
  end
30
+
31
+ def booleans(*fields)
32
+ @i_booleans ||= []
33
+ @i_booleans |= fields.map(&:to_sym)
34
+ end
30
35
  end
31
36
 
32
37
  def model
@@ -55,6 +60,10 @@ module SnFoil
55
60
  self.class.i_filters || []
56
61
  end
57
62
 
63
+ def booleans
64
+ self.class.i_booleans || []
65
+ end
66
+
58
67
  private
59
68
 
60
69
  def apply_setup(filtered_scope, params)
@@ -90,15 +99,24 @@ module SnFoil
90
99
 
91
100
  def transform_params_booleans(params)
92
101
  params.map do |key, value|
93
- value = if value == 'true'
94
- true
95
- elsif value == 'false'
96
- false
102
+ value = if booleans.include?(key.to_sym)
103
+ value_to_boolean(value)
97
104
  else
98
105
  value
99
106
  end
100
107
  [key, value]
101
108
  end.to_h
102
109
  end
110
+
111
+ def value_to_boolean(value)
112
+ string_val = value.to_s
113
+ if value == true || %w[true 1].include?(string_val)
114
+ true
115
+ elsif value == false || %w[false 0].include?(string_val)
116
+ false
117
+ else
118
+ value
119
+ end
120
+ end
103
121
  end
104
122
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module SnFoil
4
- VERSION = '0.7.0'
4
+ VERSION = '0.8.0'
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: snfoil
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.7.0
4
+ version: 0.8.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Matthew Howes
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2020-07-27 00:00:00.000000000 Z
12
+ date: 2021-03-08 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: activesupport
@@ -197,7 +197,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
197
197
  - !ruby/object:Gem::Version
198
198
  version: '0'
199
199
  requirements: []
200
- rubygems_version: 3.0.3
200
+ rubygems_version: 3.1.4
201
201
  signing_key:
202
202
  specification_version: 4
203
203
  summary: A boilerplate gem for providing basic contexts