lucky_param 0.1.2 → 1.0.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 74c92c60d88a3b80c6dcf648a3eebcd94867d9c3f332c383a59b034e53d0ab10
4
- data.tar.gz: 598848e0d283df5c34089c9e497073b33891ae7b0b40e5555527e2809b10da5d
3
+ metadata.gz: 64d261e249956a9e8999bf426edf5cea2124db4b52bf53663d1344b691adaa8b
4
+ data.tar.gz: 7cafcbab4a0a503ff8046a0793dff7daee279491d8e33984be0b0dbbee917cd6
5
5
  SHA512:
6
- metadata.gz: 3fac2010cc62e11ed9696977ee2f40518d185408de28f8ddb40c024eeea82532d3f9e1e828924fd6c045d9094e345f6a4c4f9eba180d377bb20bfa60e2274a8c
7
- data.tar.gz: 9573ff399451714f7d9742fe2772b102feb1073182f911ce265172b5a41d712197c53136d0ecaab0aefd4a685991b45c1848b71d57f481f2432a1011d9c83f0e
6
+ metadata.gz: a61dc099c8033054be240c3b67b869149b49e72abbdf832f38244ec484d0d6dd3937d4fca6c2f204ec05d628aac82faa9a02b16bd104182badddeb723fc62943
7
+ data.tar.gz: 43285f26a67eae20d0486a4e6c257366d7a7eccef49e223d10334dd65d005b56f54d44858dd39fc8688cb7114f360f0b5361362aa5e887f0f2c9cf8da1da2c9a
@@ -8,12 +8,6 @@ AllCops:
8
8
  Style/AndOr:
9
9
  Enabled: true
10
10
 
11
- # Do not use braces for hash literals when they are the last argument of a
12
- # method call.
13
- Style/BracesAroundHashParameters:
14
- Enabled: true
15
- EnforcedStyle: context_dependent
16
-
17
11
  # Align `when` with `case`.
18
12
  Layout/CaseIndentation:
19
13
  Enabled: true
@@ -58,7 +52,7 @@ Style/HashSyntax:
58
52
  # extra level of indentation.
59
53
  Layout/IndentationConsistency:
60
54
  Enabled: true
61
- EnforcedStyle: rails
55
+ EnforcedStyle: indented_internal_methods
62
56
 
63
57
  # Two spaces, no tabs (for indentation).
64
58
  Layout/IndentationWidth:
@@ -125,12 +119,8 @@ Style/StringLiterals:
125
119
  Enabled: true
126
120
  EnforcedStyle: double_quotes
127
121
 
128
- # Detect hard tabs, no hard tabs.
129
- Layout/Tab:
130
- Enabled: true
131
-
132
122
  # Blank lines should not have any spaces.
133
- Layout/TrailingBlankLines:
123
+ Layout/TrailingEmptyLines:
134
124
  Enabled: true
135
125
 
136
126
  # No trailing whitespace.
@@ -138,7 +128,7 @@ Layout/TrailingWhitespace:
138
128
  Enabled: true
139
129
 
140
130
  # Use quotes for string literals when they are enough.
141
- Style/UnneededPercentQ:
131
+ Style/RedundantPercentQ:
142
132
  Enabled: true
143
133
 
144
134
  # Use my_method(my_arg) not my_method( my_arg ) or my_method my_arg.
@@ -2,7 +2,7 @@
2
2
  sudo: false
3
3
  language: ruby
4
4
  rvm:
5
- - 2.5.1
5
+ - 2.6.3
6
6
 
7
7
  before_script:
8
8
  - bundle install
@@ -1,119 +1,26 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- lucky_param (0.1.1)
5
- rails (>= 4.2)
4
+ lucky_param (1.0.0)
5
+ activesupport (>= 4.2)
6
6
 
7
7
  GEM
8
8
  remote: https://rubygems.org/
9
9
  specs:
10
- actioncable (5.2.1)
11
- actionpack (= 5.2.1)
12
- nio4r (~> 2.0)
13
- websocket-driver (>= 0.6.1)
14
- actionmailer (5.2.1)
15
- actionpack (= 5.2.1)
16
- actionview (= 5.2.1)
17
- activejob (= 5.2.1)
18
- mail (~> 2.5, >= 2.5.4)
19
- rails-dom-testing (~> 2.0)
20
- actionpack (5.2.1)
21
- actionview (= 5.2.1)
22
- activesupport (= 5.2.1)
23
- rack (~> 2.0)
24
- rack-test (>= 0.6.3)
25
- rails-dom-testing (~> 2.0)
26
- rails-html-sanitizer (~> 1.0, >= 1.0.2)
27
- actionview (5.2.1)
28
- activesupport (= 5.2.1)
29
- builder (~> 3.1)
30
- erubi (~> 1.4)
31
- rails-dom-testing (~> 2.0)
32
- rails-html-sanitizer (~> 1.0, >= 1.0.3)
33
- activejob (5.2.1)
34
- activesupport (= 5.2.1)
35
- globalid (>= 0.3.6)
36
- activemodel (5.2.1)
37
- activesupport (= 5.2.1)
38
- activerecord (5.2.1)
39
- activemodel (= 5.2.1)
40
- activesupport (= 5.2.1)
41
- arel (>= 9.0)
42
- activestorage (5.2.1)
43
- actionpack (= 5.2.1)
44
- activerecord (= 5.2.1)
45
- marcel (~> 0.3.1)
46
- activesupport (5.2.1)
10
+ activesupport (6.0.3.2)
47
11
  concurrent-ruby (~> 1.0, >= 1.0.2)
48
12
  i18n (>= 0.7, < 2)
49
13
  minitest (~> 5.1)
50
14
  tzinfo (~> 1.1)
51
- arel (9.0.0)
52
- builder (3.2.3)
53
- concurrent-ruby (1.0.5)
54
- crass (1.0.4)
55
- erubi (1.7.1)
56
- globalid (0.4.1)
57
- activesupport (>= 4.2.0)
58
- i18n (1.1.1)
15
+ zeitwerk (~> 2.2, >= 2.2.2)
16
+ concurrent-ruby (1.1.6)
17
+ i18n (1.8.3)
59
18
  concurrent-ruby (~> 1.0)
60
- loofah (2.2.2)
61
- crass (~> 1.0.2)
62
- nokogiri (>= 1.5.9)
63
- mail (2.7.1)
64
- mini_mime (>= 0.1.1)
65
- marcel (0.3.3)
66
- mimemagic (~> 0.3.2)
67
- method_source (0.9.0)
68
- mimemagic (0.3.2)
69
- mini_mime (1.0.1)
70
- mini_portile2 (2.3.0)
71
- minitest (5.11.3)
72
- nio4r (2.3.1)
73
- nokogiri (1.8.5)
74
- mini_portile2 (~> 2.3.0)
75
- rack (2.0.5)
76
- rack-test (1.1.0)
77
- rack (>= 1.0, < 3)
78
- rails (5.2.1)
79
- actioncable (= 5.2.1)
80
- actionmailer (= 5.2.1)
81
- actionpack (= 5.2.1)
82
- actionview (= 5.2.1)
83
- activejob (= 5.2.1)
84
- activemodel (= 5.2.1)
85
- activerecord (= 5.2.1)
86
- activestorage (= 5.2.1)
87
- activesupport (= 5.2.1)
88
- bundler (>= 1.3.0)
89
- railties (= 5.2.1)
90
- sprockets-rails (>= 2.0.0)
91
- rails-dom-testing (2.0.3)
92
- activesupport (>= 4.2.0)
93
- nokogiri (>= 1.6)
94
- rails-html-sanitizer (1.0.4)
95
- loofah (~> 2.2, >= 2.2.2)
96
- railties (5.2.1)
97
- actionpack (= 5.2.1)
98
- activesupport (= 5.2.1)
99
- method_source
100
- rake (>= 0.8.7)
101
- thor (>= 0.19.0, < 2.0)
102
- rake (12.3.1)
103
- sprockets (3.7.2)
104
- concurrent-ruby (~> 1.0)
105
- rack (> 1, < 3)
106
- sprockets-rails (3.2.1)
107
- actionpack (>= 4.0)
108
- activesupport (>= 4.0)
109
- sprockets (>= 3.0.0)
110
- thor (0.20.0)
19
+ minitest (5.14.1)
111
20
  thread_safe (0.3.6)
112
- tzinfo (1.2.5)
21
+ tzinfo (1.2.7)
113
22
  thread_safe (~> 0.1)
114
- websocket-driver (0.7.0)
115
- websocket-extensions (>= 0.1.0)
116
- websocket-extensions (0.1.3)
23
+ zeitwerk (2.3.1)
117
24
 
118
25
  PLATFORMS
119
26
  ruby
@@ -122,4 +29,4 @@ DEPENDENCIES
122
29
  lucky_param!
123
30
 
124
31
  BUNDLED WITH
125
- 1.16.6
32
+ 2.1.4
data/README.md CHANGED
@@ -22,7 +22,7 @@ class ApplicationController
22
22
  # If necessary, you can overide or define your own parameter checkers.
23
23
  LuckyParam::CUSTOM_CHECKER = {
24
24
  Password: [
25
- ->(obj) { obj =~ /([0-9a-zA-Z]){6,30}/ },
25
+ ->(params, column) { params[column] =~ /([0-9a-zA-Z]){6,30}/ },
26
26
  "must be valid password"
27
27
  ],
28
28
  }.freeze
@@ -5,6 +5,7 @@ require "active_support/core_ext/object/blank"
5
5
  require_relative "./lucky_param/version"
6
6
  require_relative "./lucky_param/checker"
7
7
 
8
+ # An easy and extendable controller validator helper for Rails.
8
9
  module LuckyParam
9
10
  class ParamMissError < StandardError; end
10
11
  class ParamFormatError < StandardError; end
@@ -12,24 +13,24 @@ module LuckyParam
12
13
 
13
14
  def required(column, checker_type)
14
15
  raise ParamMissError.new("Missing Params: #{column}") if params[column].blank?
15
- message = checker_message(column, checker_type)
16
- raise ParamFormatError.new("Wrong Params Format: #{message}") if message
16
+
17
+ check_param_format(column, checker_type)
17
18
  end
18
19
 
19
20
  def optional(column, checker_type)
20
21
  return if params[column].blank?
21
- message = checker_message(column, checker_type)
22
- raise ParamFormatError.new("Wrong Params Format: #{message}") if message
22
+
23
+ check_param_format(column, checker_type)
23
24
  end
24
25
 
25
26
  private
26
27
 
27
- def checker_message(column, checker_type)
28
+ def check_param_format(column, checker_type)
28
29
  checker = CUSTOM_CHECKER[checker_type] if LuckyParam.const_defined?(:CUSTOM_CHECKER)
29
- checker ||= CHECKER.fetch(checker_type) {
30
- raise UnknownCheckerError, "Unknown checker `#{checker_type}`, try to define checker with const `LuckyParam::CUSTOM_CHECKER`"
31
- }
32
- result = checker[0].call(params[column])
33
- result ? nil : "#{column} #{checker[1]}"
30
+ checker ||= CHECKER.fetch(checker_type) do
31
+ raise UnknownCheckerError.new("Unknown checker `#{checker_type}`, try to define checker with const `LuckyParam::CUSTOM_CHECKER`")
32
+ end
33
+ result = checker[0].call(params, column)
34
+ raise ParamFormatError.new("Wrong Params Format: #{column} #{checker[1]}") unless result
34
35
  end
35
36
  end
@@ -3,53 +3,61 @@
3
3
  module LuckyParam
4
4
  CHECKER = {
5
5
  NONE: [
6
- ->(_obj) { true }
6
+ ->(params, column) { true }
7
7
  ],
8
8
  String: [
9
- ->(obj) { obj.is_a?(String) },
9
+ ->(params, column) { params[column].is_a?(String) },
10
10
  "must be valid String"
11
11
  ],
12
12
  Boolean: [
13
- ->(obj) { %w[true false 1 0].include?(obj.to_s) },
13
+ ->(params, column) { %w[true false 1 0].include?(params[column].to_s) },
14
14
  "must be one of [true false 1 0]"
15
15
  ],
16
16
  Integer: [
17
- ->(obj) { obj.to_s =~ /\A(0|[1-9]\d*)\Z$/ },
17
+ ->(params, column) { params[column].to_s =~ /\A(0|[1-9]\d*)\Z$/ },
18
18
  "must be valid Integer"
19
19
  ],
20
20
  Float: [
21
- ->(obj) { obj.to_s =~ /\A^[-+]?[0-9]+([,.][0-9]+)?\Z$/ },
21
+ ->(params, column) { params[column].to_s =~ /\A^[-+]?[0-9]+([,.][0-9]+)?\Z$/ },
22
22
  "must be valid Float"
23
23
  ],
24
24
  Number: [
25
- ->(obj) { Float(obj) rescue false }
25
+ lambda do |params, column|
26
+ begin
27
+ Float(params[column])
28
+ rescue StandardError
29
+ false
30
+ end
31
+ end
26
32
  ],
27
33
  Email: [
28
- ->(obj) { obj =~ /^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/ },
34
+ ->(params, column) { params[column].to_s =~ /^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/ },
29
35
  "must be valid Email"
30
36
  ],
31
37
  Timestamp: [
32
- ->(obj) { obj =~ /^(\+|\-)?\d+$/ },
38
+ ->(params, column) { params[column].to_s =~ /^(\+|\-)?\d+$/ },
33
39
  "must be valid Timestamp"
34
40
  ],
35
41
  ArrayJSON: [
36
- lambda { |obj|
42
+ lambda do |params, column|
37
43
  begin
38
- JSON.parse(obj).is_a?(Array)
44
+ params[column] = JSON.parse(params[column]) if params[column].is_a?(String)
45
+ params[column].is_a?(Array)
39
46
  rescue StandardError
40
47
  false
41
48
  end
42
- },
49
+ end,
43
50
  "must be valid Array JSON"
44
51
  ],
45
52
  HashJSON: [
46
- lambda { |obj|
53
+ lambda do |params, column|
47
54
  begin
48
- JSON.parse(obj).is_a?(Hash)
55
+ params[column] = JSON.parse(params[column]) if params[column].is_a?(String)
56
+ params[column].respond_to?(:to_hash)
49
57
  rescue StandardError
50
58
  false
51
59
  end
52
- },
60
+ end,
53
61
  "must be valid Hash JSON"
54
62
  ]
55
63
  }.freeze
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module LuckyParam
4
- VERSION = "0.1.2".freeze
4
+ VERSION = "1.0.0"
5
5
  end
@@ -24,5 +24,5 @@ Gem::Specification.new do |spec|
24
24
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
25
25
  spec.require_paths = ["lib"]
26
26
 
27
- spec.add_dependency "rails", ">= 4.2"
27
+ spec.add_dependency "activesupport", ">= 4.2"
28
28
  end
metadata CHANGED
@@ -1,17 +1,17 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: lucky_param
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.2
4
+ version: 1.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Shooting Fly
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2018-11-29 00:00:00.000000000 Z
11
+ date: 2020-07-08 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
- name: rails
14
+ name: activesupport
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
17
  - - ">="
@@ -65,8 +65,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
65
65
  - !ruby/object:Gem::Version
66
66
  version: '0'
67
67
  requirements: []
68
- rubyforge_project:
69
- rubygems_version: 2.7.6
68
+ rubygems_version: 3.0.8
70
69
  signing_key:
71
70
  specification_version: 4
72
71
  summary: Helper of parameter validation in controller