getto-params 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.
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: []