getto-params 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: 3b3bc21d37c1df6d5a3c69427264aa7c048d7f53d9769c3544245e1e4e6a5335
4
+ data.tar.gz: 8dc96701b134197b0b9e20170ae707348367c9e9d8c66a3687f10d487953dad0
5
+ SHA512:
6
+ metadata.gz: 590c763aaa5889b9f5478a005da8cc17f111a020d1a4080d696c558f6d87b5a3b5c06e0ecfbb84421c01b1d1231a7d6c0de9fa0ecc3dab7cafb01e0f1a260ec6
7
+ data.tar.gz: de5c541ede15940a5b294d99132cbe441cec99efa83d8f8adf2999575f843ffb7805275b449ccac42f342ea592d9a2c894ee4da95146e5050249cc04703cb961
data/.envrc ADDED
@@ -0,0 +1,5 @@
1
+ export APP_ROOT=$(pwd)
2
+
3
+ export DOCKER_WRAPPER_IMAGE_ruby=2.5.1
4
+
5
+ export GIT_RELEASE_VERSION_FILE=lib/getto/params/version.rb
@@ -0,0 +1,7 @@
1
+ git_release_request_dump_version_local(){
2
+ bundle
3
+ git add Gemfile.lock
4
+ }
5
+ git_release_request_after_tag(){
6
+ git push github master --tags
7
+ }
data/.gitignore ADDED
@@ -0,0 +1,9 @@
1
+ /.bundle/
2
+ /.yardoc
3
+ /_yardoc/
4
+ /coverage/
5
+ /doc/
6
+ /pkg/
7
+ /spec/reports/
8
+ /tmp/
9
+ /vendor/
data/.gitlab-ci.yml ADDED
@@ -0,0 +1,12 @@
1
+ image: ruby:2.5.1
2
+
3
+ cache:
4
+ paths:
5
+ - vendor/
6
+
7
+ test:
8
+ except:
9
+ - tags
10
+ script:
11
+ - bundle
12
+ - bundle exec rake
data/.travis.yml ADDED
@@ -0,0 +1,12 @@
1
+ sudo: false
2
+ language: ruby
3
+ rvm:
4
+ - 2.5.1
5
+ before_install: gem install bundler -v 1.16.2
6
+ deploy:
7
+ provider: rubygems
8
+ gem: getto-params
9
+ on:
10
+ tags: true
11
+ api_key:
12
+ secure: "ZyXduNzZ7KYXpJ72KLriIiFwVUN9ZEHsKeF0Luvk/PQb9efFewO1xx31BhJi8aYeiAVqY8WdWmbEXUS9CviWiyAhdQhb6Z7CgpnXNbLwBVarlXbAe4KbHxlbHRTf8OeVATw76uaCPafIB3l1tSkrWNhILD+FIHWsUcj4+lH43LA0oLCMB5o79rH1jwHjDVXIatARpVqpwgfoz/KJsVtqaJgIX5vU+ae5D4INCqD5T4mSbTKp4Li32YpMrAxR3IUuPR1CJAcfCLC6Yy0yjGUi7QpbCQkLzjJ0wu1OYq8CjLc8sU+4ifnc7VymWrF3FmvEDi4tjSlU+oFrc2C0tsT9JUUPZDcIlJ6yQ1oJ6uSC9SIYJwTCR/n+yZ6Vk32sqEr90ZLdUyXIZHwk/TaxU0GqFNqyTKFEgzhGZDnxq98AG5PRgu0OIOa1KqPCiyCyIYLa/ffiPjHk++ztv8aTErBkL03gqrNAHXDdXm6uruABP0fl1J7z+MqNFs5zJgHHCSKSiYVPng2VTUuYazaJvup0qlfVVENxV/Bgz52/bz0QMI4OIaWDhC/cky9DPn7k0AcgVDFSdcDzIfZu7jqK2uqssE8lgxzHab9p9oXeTMPJTLVKS8bpLF1yiuCgBOczYLKZBfjT0tY4hiCOmQCfVgaijXj2VwQ7OwzdWhOndROrofM="
data/CHANGELOG.md ADDED
@@ -0,0 +1,4 @@
1
+ # Version : 0.2.0
2
+
3
+ test: publish by travisci
4
+
@@ -0,0 +1,9 @@
1
+ # Version : 0.2.0
2
+
3
+ test: publish by travisci
4
+
5
+ ## commits
6
+
7
+ * fix: README
8
+ * fix: README
9
+ * fix: README
data/Gemfile ADDED
@@ -0,0 +1,6 @@
1
+ source "https://rubygems.org"
2
+
3
+ git_source(:github) {|repo_name| "https://github.com/#{repo_name}" }
4
+
5
+ # Specify your gem's dependencies in getto-params.gemspec
6
+ gemspec
data/Gemfile.lock ADDED
@@ -0,0 +1,30 @@
1
+ PATH
2
+ remote: .
3
+ specs:
4
+ getto-params (0.2.0)
5
+
6
+ GEM
7
+ remote: https://rubygems.org/
8
+ specs:
9
+ docile (1.3.1)
10
+ json (2.1.0)
11
+ minitest (5.11.3)
12
+ rake (10.5.0)
13
+ simplecov (0.16.1)
14
+ docile (~> 1.1)
15
+ json (>= 1.8, < 3)
16
+ simplecov-html (~> 0.10.0)
17
+ simplecov-html (0.10.2)
18
+
19
+ PLATFORMS
20
+ ruby
21
+
22
+ DEPENDENCIES
23
+ bundler (~> 1.16)
24
+ getto-params!
25
+ minitest (~> 5.0)
26
+ rake (~> 10.0)
27
+ simplecov (~> 0.16)
28
+
29
+ BUNDLED WITH
30
+ 1.16.2
data/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ The MIT License (MIT)
2
+
3
+ Copyright (c) 2018 shun@getto.systems
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in
13
+ all copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
21
+ THE SOFTWARE.
data/README.md ADDED
@@ -0,0 +1,304 @@
1
+ # getto-params
2
+
3
+ [rubygems: getto-params](https://rubygems.org/gems/getto-params)
4
+
5
+ Validate parameters like strong-parameters(rails)
6
+
7
+ ```ruby
8
+ require "getto/params"
9
+
10
+ Getto::Params.new.validate(params) do |v|
11
+ v.hash(
12
+ "name" => v.combine([v.string, v.not_empty]){|val|
13
+ raise ArgumentError, "name should be not empty string: #{val}"
14
+ },
15
+ "token" => v.combine([v.string, v.allow_empty(v.length(5))]),
16
+ "key" => v.equal("KEY"),
17
+ "str1" => v.in(["param1","param2"]),
18
+ "str2" => v.in(["param1","param2"]),
19
+ "tel" => v.combine([v.string, v.match(%r{\A[0-9]+-[0-9]+-[0-9]+\Z})]),
20
+ "number" => v.match_integer,
21
+ "bool" => v.match_bool,
22
+ "hash" => v.hash(
23
+ "array" => v.array(v.string),
24
+ "keys" => v.array_include(["key1","key2","key3"]),
25
+ "params" => v.hash(
26
+ "key" => v.integer,
27
+ "bool" => v.bool,
28
+ ),
29
+ ),
30
+ "object" => v.hash_strict(
31
+ "key" => v.integer,
32
+ "bool" => v.bool,
33
+ ),
34
+ )
35
+ end
36
+ # => true : success
37
+ # => false : fail
38
+ ```
39
+
40
+ - misc: format parameters for search
41
+
42
+ ```ruby
43
+ require "getto/params/search"
44
+
45
+ Getto::Params::Search.new(
46
+ page: 1,
47
+ limit: 1000,
48
+ sort: "name.asc",
49
+ query: {
50
+ "name.cont" => "search",
51
+ },
52
+ ).to_h do |search|
53
+ search.sort do |s|
54
+ s.straight :name
55
+ end
56
+ search.query do |q|
57
+ q.search "name.cont", &q.not_empty
58
+ end
59
+ end
60
+ # => {
61
+ # limit: 1000,
62
+ # offset: 0,
63
+ # sort: {
64
+ # column: :name,
65
+ # order: true,
66
+ # },
67
+ # query: {
68
+ # "name.cont": "search",
69
+ # },
70
+ # }
71
+ ```
72
+
73
+
74
+ ###### Table of Contents
75
+
76
+ - [Requirements](#Requirements)
77
+ - [Usage](#Usage)
78
+ - [License](#License)
79
+
80
+ <a id="Requirements"></a>
81
+ ## Requirements
82
+
83
+ - developed on ruby: 2.5.1
84
+
85
+
86
+ <a id="Usage"></a>
87
+ ## Usage
88
+
89
+ ```ruby
90
+ require "getto/params"
91
+
92
+ Getto::Params.new.validate(params) do |v|
93
+ # argument `params` should be hash
94
+ v.hash(
95
+ # should be String
96
+ "key" => v.string,
97
+
98
+ # should be Integer
99
+ "key" => v.integer,
100
+
101
+ # should be Boolean
102
+ "key" => v.bool,
103
+
104
+
105
+ # should be equal to "value"
106
+ "key" => v.equal("value"),
107
+
108
+ # should be equal to "value1" or "value2"
109
+ "key" => v.in(["value1","value2"]),
110
+
111
+ # should not be empty
112
+ "key" => v.not_empty,
113
+
114
+ # length should be 10,
115
+ "key" => v.length(10),
116
+
117
+ # should match %r{example}
118
+ "key" => v.match(%r{example}),
119
+
120
+ # should match integer (value is string, but seem to be a Integer)
121
+ "key" => v.match_integer,
122
+
123
+ # downcase should be equal to "true" or "false"
124
+ "key" => v.match_bool,
125
+
126
+
127
+ # should be hash includes :key that value is string
128
+ "key" => v.hash(
129
+ key: v.string,
130
+ ),
131
+
132
+ # should be hash only includes :key that value is string
133
+ "key" => v.hash_strict(
134
+ key: v.string,
135
+ ),
136
+
137
+
138
+ # should be array that has string value
139
+ "key" => v.array(v.string),
140
+
141
+ # should be array that has "value1" or "value2"
142
+ "key" => v.array_include(["value1","value2"])
143
+
144
+
145
+ # should be match integer if value is not empty
146
+ "key" => v.allow_empty(v.match_integer),
147
+
148
+
149
+ # validate string and not_empty
150
+ "key" => v.combine([v.string, v.not_empty]),
151
+
152
+
153
+ # raise error if valudation failed
154
+ "key" => v.string{|val| raise ArgumentError, "key should be string: #{val}" }
155
+ )
156
+ end
157
+ # => true : success
158
+ # => false : fail
159
+ ```
160
+
161
+
162
+ ### Getto::Params::Search
163
+
164
+ Format parameters for search api
165
+
166
+ ```ruby
167
+ require "getto/params/search"
168
+
169
+ Getto::Params::Search.new(
170
+ page: 1,
171
+ limit: 1000,
172
+ sort: "name.asc",
173
+ query: {
174
+ "name.cont" => "search",
175
+ },
176
+ ).to_h do |search|
177
+
178
+ search.sort do |s|
179
+ # sort name as straight order
180
+ s.straight :name
181
+
182
+ # sort name as invert order
183
+ s.invert :name
184
+ end
185
+
186
+ search.query do |q|
187
+ # search "name.cont" if value not empty
188
+ q.search "name.cont", &q.not_empty
189
+
190
+ # search "name.in" if any values not empty
191
+ q.search "name.in", &q.not_all_empty
192
+ end
193
+
194
+ end
195
+ ```
196
+
197
+ #### sort order
198
+
199
+ - straight order
200
+
201
+ ```ruby
202
+ search.sort do |s|
203
+ # sort name as straight order
204
+ s.straight :name
205
+ end
206
+
207
+ # sort: "name.asc"
208
+ # => sort: {
209
+ # column: :name,
210
+ # order: true, # asc => true
211
+ # }
212
+
213
+ # sort: "name.desc"
214
+ # => sort: {
215
+ # column: :name,
216
+ # order: false, # desc => false
217
+ # }
218
+ ```
219
+
220
+ - invert order
221
+
222
+ ```ruby
223
+ search.sort do |s|
224
+ # sort name as invert order
225
+ s.invert :name
226
+ end
227
+
228
+ # sort: "name.asc"
229
+ # => sort: {
230
+ # column: :name,
231
+ # order: false, # asc => false
232
+ # }
233
+
234
+ # sort: "name.desc"
235
+ # => sort: {
236
+ # column: :name,
237
+ # order: true, # desc => true
238
+ # }
239
+ ```
240
+
241
+ #### search condition
242
+
243
+ - not empty
244
+
245
+ ```ruby
246
+ search.query do |q|
247
+ q.search "name.cont", &q.not_empty
248
+ end
249
+
250
+ # query: { "name.cont" => "" }
251
+ # => query: {
252
+ # }
253
+
254
+ # query: { "name.cont" => "search" }
255
+ # => query: {
256
+ # "name.cont": "search",
257
+ # }
258
+ ```
259
+
260
+ - not all empty
261
+
262
+ ```ruby
263
+ search.query do |q|
264
+ q.search "name.in", &q.not_all_empty
265
+ end
266
+
267
+ # query: { "name.in" => [""] }
268
+ # => query: {
269
+ # }
270
+
271
+ # query: { "name.in" => ["value1","value2"] }
272
+ # => query: {
273
+ # "name.in": ["value1","value2"],
274
+ # }
275
+ ```
276
+
277
+
278
+ ## Install
279
+
280
+ Add this line to your application's Gemfile:
281
+
282
+ ```ruby
283
+ gem 'getto-params'
284
+ ```
285
+
286
+ And then execute:
287
+
288
+ ```
289
+ $ bundle
290
+ ```
291
+
292
+ Or install it yourself as:
293
+
294
+ ```
295
+ $ gem install getto-params
296
+ ```
297
+
298
+
299
+ <a id="License"></a>
300
+ ## License
301
+
302
+ getto/params is licensed under the [MIT](LICENSE) license.
303
+
304
+ Copyright &copy; since 2018 shun@getto.systems
data/Rakefile ADDED
@@ -0,0 +1,10 @@
1
+ require "bundler/gem_tasks"
2
+ require "rake/testtask"
3
+
4
+ Rake::TestTask.new(:test) do |t|
5
+ t.libs << "test"
6
+ t.libs << "lib"
7
+ t.test_files = FileList["test/**/*_test.rb"]
8
+ end
9
+
10
+ task :default => :test
@@ -0,0 +1,35 @@
1
+ lib = File.expand_path("../lib", __FILE__)
2
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
3
+ require "getto/params/version"
4
+
5
+ Gem::Specification.new do |spec|
6
+ spec.required_ruby_version = ">= 2.5.1"
7
+
8
+ spec.name = "getto-params"
9
+ spec.version = Getto::Params::VERSION
10
+ spec.authors = ["shun@getto.systems"]
11
+ spec.email = ["shun@getto.systems"]
12
+
13
+ spec.summary = %q{validation and format params}
14
+ spec.description = %q{Validate parameters like strong-parameters(rails)}
15
+ spec.homepage = "https://github.com/getto-systems/getto-params"
16
+ spec.license = "MIT"
17
+
18
+ # Specify which files should be added to the gem when it is released.
19
+ # The `git ls-files -z` loads the files in the RubyGem that have been added into git.
20
+ spec.files = Dir.chdir(File.expand_path('..', __FILE__)) do
21
+ `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
22
+ end
23
+ spec.bindir = "exe"
24
+ spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
25
+ spec.require_paths = ["lib"]
26
+
27
+
28
+ spec.extra_rdoc_files = ['README.md', 'LICENSE']
29
+ spec.rdoc_options = %w[--title Getto::Params --main README.md]
30
+
31
+ spec.add_development_dependency "bundler", "~> 1.16"
32
+ spec.add_development_dependency "rake", "~> 10.0"
33
+ spec.add_development_dependency "minitest", "~> 5.0"
34
+ spec.add_development_dependency "simplecov", "~> 0.16"
35
+ end
@@ -0,0 +1,116 @@
1
+ module Getto
2
+ class Params
3
+ def initialize(factory=Validator::Factory.new)
4
+ @factory = factory
5
+ end
6
+
7
+ def validate(params)
8
+ yield(@factory).call(params)
9
+ end
10
+
11
+ class Validator
12
+ def initialize(func,&failed)
13
+ @func = func
14
+ @failed = failed
15
+ end
16
+
17
+ def call(params)
18
+ @func.call(params).tap{|is_valid|
19
+ unless is_valid
20
+ @failed && @failed.call(params)
21
+ end
22
+ }
23
+ end
24
+
25
+ class Factory
26
+ def integer(&block)
27
+ Validator.new(->(value){ value.is_a? Integer }, &block)
28
+ end
29
+
30
+ def string(&block)
31
+ Validator.new(->(value){ value.is_a? String }, &block)
32
+ end
33
+
34
+ def bool(&block)
35
+ Validator.new(->(value){ value == true || value == false }, &block)
36
+ end
37
+
38
+
39
+ def equal(val,&block)
40
+ Validator.new(->(value){ value == val }, &block)
41
+ end
42
+
43
+ def in(values,&block)
44
+ Validator.new(->(value){ values.include?(value) }, &block)
45
+ end
46
+
47
+ def not_empty(&block)
48
+ Validator.new(->(value){ not value.empty? }, &block)
49
+ end
50
+
51
+ def length(length,&block)
52
+ Validator.new(->(value){ value && value.length == length }, &block)
53
+ end
54
+
55
+ def match(pattern,&block)
56
+ Validator.new(->(value){ value && value.match?(pattern) }, &block)
57
+ end
58
+
59
+ def match_integer(&block)
60
+ Validator.new(->(value){ value && value.to_i.to_s == value }, &block)
61
+ end
62
+
63
+ def match_bool(&block)
64
+ Validator.new(->(value){ value && ["true","false"].include?(value.to_s.downcase) }, &block)
65
+ end
66
+
67
+
68
+ def hash(spec,&block)
69
+ Validator.new(->(value){
70
+ value && spec.all?{|key,validator|
71
+ value.has_key?(key) && validator.call(value[key])
72
+ }
73
+ }, &block)
74
+ end
75
+
76
+ def hash_strict(spec,&block)
77
+ Validator.new(->(value){
78
+ validators = spec.dup
79
+ value && value.all?{|key,val|
80
+ validators.delete(key).tap{|validator|
81
+ break validator ? validator.call(val) : false
82
+ }
83
+ } && validators.empty?
84
+ }, &block)
85
+ end
86
+
87
+
88
+ def array(validator,&block)
89
+ Validator.new(->(value){
90
+ value && value.is_a?(Array) && value.all?{|val| validator.call(val)}
91
+ }, &block)
92
+ end
93
+
94
+ def array_include(values,&block)
95
+ Validator.new(->(value){
96
+ value && value.is_a?(Array) && value.all?{|val| values.include?(val)}
97
+ }, &block)
98
+ end
99
+
100
+
101
+ def combine(validators,&block)
102
+ Validator.new(->(value){
103
+ validators.all?{|validator| validator.call(value)}
104
+ }, &block)
105
+ end
106
+
107
+
108
+ def allow_empty(validator,&block)
109
+ Validator.new(->(value){
110
+ value.empty? or validator.call(value)
111
+ }, &block)
112
+ end
113
+ end
114
+ end
115
+ end
116
+ end
@@ -0,0 +1,129 @@
1
+ module Getto
2
+ class Params
3
+ class Search
4
+ def initialize(page:, limit:, sort:, query:)
5
+ @page = Page.new(page: page, limit: limit)
6
+ @sort = Sort.new(sort: sort)
7
+ @query = Query.new(query: query)
8
+ end
9
+
10
+ def to_h
11
+ @page.to_h.tap{|result|
12
+ yield Worker.new(sort: @sort, query: @query, result: result)
13
+ }
14
+ end
15
+
16
+ class Worker
17
+ def initialize(sort:, query:, result:)
18
+ @sort = sort
19
+ @query = query
20
+ @result = result
21
+ end
22
+
23
+ def sort(&block)
24
+ @result.merge!(sort: @sort.to_h(&block))
25
+ end
26
+
27
+ def query(&block)
28
+ @result.merge!(query: @query.to_h(&block))
29
+ end
30
+ end
31
+
32
+ class Page
33
+ def initialize(page:, limit:)
34
+ @page = page
35
+ @limit = limit
36
+ end
37
+
38
+ def to_h
39
+ {
40
+ limit: @limit,
41
+ offset: (@page.to_i - 1) * @limit,
42
+ }
43
+ end
44
+ end
45
+
46
+ class Sort
47
+ def initialize(sort:)
48
+ @sort = [sort.split(".")].to_h
49
+ end
50
+
51
+ def to_h
52
+ spec = {}
53
+ yield Order.new(spec)
54
+
55
+ result = {
56
+ column: nil,
57
+ order: true,
58
+ }
59
+
60
+ spec.map{|key,is_straight|
61
+ if sort = @sort[key]
62
+ result[:column] = key.to_sym
63
+ result[:order] =
64
+ if sort == "asc"
65
+ is_straight
66
+ else
67
+ not is_straight
68
+ end
69
+ end
70
+ }
71
+
72
+ result
73
+ end
74
+
75
+ class Order
76
+ def initialize(columns)
77
+ @columns = columns
78
+ end
79
+
80
+ def straight(column)
81
+ @columns[column.to_s] = true
82
+ end
83
+
84
+ def invert(column)
85
+ @columns[column.to_s] = false
86
+ end
87
+ end
88
+ end
89
+
90
+ class Query
91
+ def initialize(query:)
92
+ @query = query
93
+ end
94
+
95
+ def to_h
96
+ spec = {}
97
+ yield Checker.new(spec)
98
+
99
+ spec.map{|key,checker|
100
+ if search = @query[key]
101
+ if checker.call(search)
102
+ [key.to_sym, search]
103
+ end
104
+ end
105
+ }.compact.to_h
106
+ end
107
+
108
+ class Checker
109
+ def initialize(columns)
110
+ @columns = columns
111
+ end
112
+
113
+ def search(column,&checker)
114
+ @columns[column.to_s] = checker
115
+ end
116
+
117
+
118
+ def not_empty
119
+ ->(search){ not search.empty? }
120
+ end
121
+
122
+ def not_all_empty
123
+ ->(search){ not search.all?(&:empty?) }
124
+ end
125
+ end
126
+ end
127
+ end
128
+ end
129
+ end
@@ -0,0 +1,5 @@
1
+ module Getto
2
+ class Params
3
+ VERSION = "0.2.0"
4
+ end
5
+ end
metadata ADDED
@@ -0,0 +1,122 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: getto-params
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.2.0
5
+ platform: ruby
6
+ authors:
7
+ - shun@getto.systems
8
+ autorequire:
9
+ bindir: exe
10
+ cert_chain: []
11
+ date: 2018-10-27 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.16'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '1.16'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rake
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '10.0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '10.0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: minitest
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '5.0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '5.0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: simplecov
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: '0.16'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: '0.16'
69
+ description: Validate parameters like strong-parameters(rails)
70
+ email:
71
+ - shun@getto.systems
72
+ executables: []
73
+ extensions: []
74
+ extra_rdoc_files:
75
+ - README.md
76
+ - LICENSE
77
+ files:
78
+ - ".envrc"
79
+ - ".git_release_request.rc.sh"
80
+ - ".gitignore"
81
+ - ".gitlab-ci.yml"
82
+ - ".travis.yml"
83
+ - CHANGELOG.md
84
+ - CHANGELOG/0.2.0.md
85
+ - Gemfile
86
+ - Gemfile.lock
87
+ - LICENSE
88
+ - README.md
89
+ - Rakefile
90
+ - getto-params.gemspec
91
+ - lib/getto/params.rb
92
+ - lib/getto/params/search.rb
93
+ - lib/getto/params/version.rb
94
+ homepage: https://github.com/getto-systems/getto-params
95
+ licenses:
96
+ - MIT
97
+ metadata: {}
98
+ post_install_message:
99
+ rdoc_options:
100
+ - "--title"
101
+ - Getto::Params
102
+ - "--main"
103
+ - README.md
104
+ require_paths:
105
+ - lib
106
+ required_ruby_version: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - ">="
109
+ - !ruby/object:Gem::Version
110
+ version: 2.5.1
111
+ required_rubygems_version: !ruby/object:Gem::Requirement
112
+ requirements:
113
+ - - ">="
114
+ - !ruby/object:Gem::Version
115
+ version: '0'
116
+ requirements: []
117
+ rubyforge_project:
118
+ rubygems_version: 2.7.7
119
+ signing_key:
120
+ specification_version: 4
121
+ summary: validation and format params
122
+ test_files: []