validy 0.1.1 → 1.1.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (3) hide show
  1. checksums.yaml +4 -4
  2. data/lib/validy.rb +24 -2
  3. metadata +2 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 9c0d9fbaa3151e0a5e75e19287e7a363cf75f3eec4066c9a28f8c866b9d966fa
4
- data.tar.gz: 2c92ccdad681600fe8b781701b157c7fbd2f5512a19b8bdc4cb704fc7ef097df
3
+ metadata.gz: 4a9e940d02f71db4c73e4685ba00dbbfd39e3a88bf743b77612873555e85a071
4
+ data.tar.gz: 12f5aba56bf4638452a61c57be6adae2a5bb4a153a39c40e48acdf0ba6134533
5
5
  SHA512:
6
- metadata.gz: 49e7c5f233d034b1ff5988500ce9163fe0994856720fb2159d09435f9538383b0c0ca2ca6408278288b8d3ed1af19842a585d6ca5728d51be4fcf05e5dacd8be
7
- data.tar.gz: 6d296b8cf23575424c5015586ddc910dc2e4402f09f1439acc1f3433f5efe04d2b25a538a83d1d70b1245358c1aedf5d4bf1edcfeaa47ccf4ae0022aa8e35d3b
6
+ metadata.gz: a6d6f968d08f66ec0016052595607c91d8b65977338c62114b6262de7e4e720f003a92d73828fc1effed0d8f1282574a29f7bfab4e9052bb68a15d911e8411f2
7
+ data.tar.gz: 21f5f6e2935367cd191d4aa49e77ef218da902d7b18c0f99089ddfbb511bdf0c690c4cb5629aa498d0d6c4e41b26ee8e86fbcbb1f74f54ab5f7ca021af2ab3ff
data/lib/validy.rb CHANGED
@@ -30,7 +30,10 @@ module Validy
30
30
  end
31
31
 
32
32
  module ClassMethods
33
- def validy_on(method:)
33
+ # @param [String] method - indicates custom, must be implemented method for which will be triggered for defining
34
+ # @param [Array<String>] - optional, list of the instance variables for checking valid state while using setter
35
+ # validation state
36
+ def validy_on(method:, setters: [])
34
37
  method_with_bang_name = (method[-1] == '!' ? method.to_s : "#{method}!")
35
38
  method_without_bang_name = method_with_bang_name.gsub('!', '')
36
39
 
@@ -53,6 +56,15 @@ module Validy
53
56
  end
54
57
  raise ::Validy::Error, stringified_error unless valid?
55
58
  end
59
+
60
+ if setters.any?
61
+ setters.each do |name|
62
+ define_method("#{name}=".to_sym) do |val|
63
+ instance_variable_set("@#{name}", val)
64
+ method[-1] == '!' ? send(method_with_bang) : send(method_without_bang)
65
+ end
66
+ end
67
+ end
56
68
  end
57
69
  prepend hooks
58
70
  end
@@ -79,6 +91,9 @@ module Validy
79
91
  end
80
92
 
81
93
  # "condition" evaluates either passed block or instance method represented in the instance
94
+ # @param [String|block] method or callable object which will be triggered for validation
95
+ # @param [String|Hash] error definition
96
+ # @param [Proc] block
82
97
  def condition(method, error = nil, &block)
83
98
  return self unless valid?
84
99
 
@@ -88,6 +103,9 @@ module Validy
88
103
  end
89
104
 
90
105
  # "required" checks presence of the variable
106
+ # @param [String] attribute a target one
107
+ # @param [String|Hash] error custom defined error message
108
+ # @param [Proc] block
91
109
  def required(attribute, error = nil, &block)
92
110
  return self unless valid?
93
111
 
@@ -97,6 +115,7 @@ module Validy
97
115
  end
98
116
 
99
117
  # "optional" starts void validation for the given attribute
118
+ # @param [String] attribute a target one
100
119
  def optional(attribute)
101
120
  return self unless valid?
102
121
 
@@ -105,11 +124,14 @@ module Validy
105
124
  end
106
125
 
107
126
  # "type" validates type of the instance variable
127
+ # @param [Object] clazz for checking type of the target attribute
128
+ # @param [nil] error custom defined error message
129
+ # @param [Proc] block
108
130
  def type(clazz, error = nil, &block)
109
131
  return self unless valid?
110
132
 
111
133
  validate_condition(@evaluating_attribute&.is_a?(clazz),
112
- error || "#{@evaluating_attribute} is not a type #{clazz}", &block)
134
+ error || "`#{@evaluating_attribute}` is not a type #{clazz}", &block)
113
135
  self
114
136
  end
115
137
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: validy
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 1.1.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Oleg Saltykov
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-01-09 00:00:00.000000000 Z
11
+ date: 2022-11-09 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description:
14
14
  email: