abstract_validator 0.0.1

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 +7 -0
  2. data/lib/abstract_validator.rb +24 -0
  3. metadata +44 -0
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 36de77a3f7d956422c4875812e9c0df05c2e8973
4
+ data.tar.gz: 06a5ffb5cd73781387f9b35353826124b824d9f0
5
+ SHA512:
6
+ metadata.gz: 0a0f6a12b3fff34e7c54c573f495ed25e7a0dde0e9710333161d281700e490f2445f5145aa1adbf489d940dd119ac70946bb39ca9cdd850db5cbdeca90970c51
7
+ data.tar.gz: 99f68bf7534f5c811d8f65ee5eecc9185ceeb08e84a2e521323e6394dc0dc06092eee91786b79105c62ca162852dd56517ca4446dedef88a6749b08523272dce
@@ -0,0 +1,24 @@
1
+ class AbstractValidator
2
+ VALIDATIONS = []
3
+ attr_reader :model, :is_valid, :errors
4
+ alias_method :valid?, :is_valid
5
+ def initialize(model)
6
+ @model = model
7
+ validate!
8
+ @is_valid = @errors.length == 0
9
+ end
10
+ private
11
+ def validate!
12
+ raise NotImplementedError.new "You must implement VALIDATIONS hash in your child class" if self.class::VALIDATIONS.size == 0
13
+ @errors = []
14
+ self.class::VALIDATIONS.each do |validation|
15
+ values = get_values(validation[:keys])
16
+ @errors << validation[:message] unless validation[:method].call(*values)
17
+ end
18
+ end
19
+ def get_values(keys)
20
+ keys.map do |k|
21
+ @model.send(k)
22
+ end
23
+ end
24
+ end
metadata ADDED
@@ -0,0 +1,44 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: abstract_validator
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - Bogdan Agafonov
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2015-03-27 00:00:00.000000000 Z
12
+ dependencies: []
13
+ description: Validators creation gem
14
+ email: bogdan.agafonov@gmail.com
15
+ executables: []
16
+ extensions: []
17
+ extra_rdoc_files: []
18
+ files:
19
+ - lib/abstract_validator.rb
20
+ homepage: http://rubygems.org/gems/abstract_validator
21
+ licenses:
22
+ - MIT
23
+ metadata: {}
24
+ post_install_message:
25
+ rdoc_options: []
26
+ require_paths:
27
+ - lib
28
+ required_ruby_version: !ruby/object:Gem::Requirement
29
+ requirements:
30
+ - - ">="
31
+ - !ruby/object:Gem::Version
32
+ version: '0'
33
+ required_rubygems_version: !ruby/object:Gem::Requirement
34
+ requirements:
35
+ - - ">="
36
+ - !ruby/object:Gem::Version
37
+ version: '0'
38
+ requirements: []
39
+ rubyforge_project:
40
+ rubygems_version: 2.4.5
41
+ signing_key:
42
+ specification_version: 4
43
+ summary: Allows to create validators
44
+ test_files: []