Module: HashValidator
- Defined in:
- lib/hash_validator.rb,
lib/hash_validator/version.rb,
lib/hash_validator/validators.rb,
lib/hash_validator/validations.rb,
lib/hash_validator/configuration.rb,
lib/hash_validator/validators/many_validator.rb,
lib/hash_validator/validators/multiple_validator.rb,
lib/hash_validator/validators/optional_validator.rb
Defined Under Namespace
Modules: Validations, Validator
Classes: Base, Configuration
Constant Summary
collapse
- VERSION =
'2.0.0'
- @@validators =
[]
Class Method Summary
collapse
Class Method Details
.add_validator(*args) ⇒ Object
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
|
# File 'lib/hash_validator/validators.rb', line 10
def self.add_validator(*args)
validator = case args.length
when 1
validator_instance = args[0]
unless validator_instance.is_a?(HashValidator::Validator::Base)
raise StandardError.new('validators need to inherit from HashValidator::Validator::Base')
end
validator_instance
when 2
name = args[0]
options = args[1]
if options.is_a?(Hash)
if options[:pattern]
HashValidator::Validator::DynamicPatternValidator.new(name, options[:pattern], options[:error_message])
elsif options[:func]
HashValidator::Validator::DynamicFuncValidator.new(name, options[:func], options[:error_message])
else
raise ArgumentError, 'Options hash must contain either :pattern or :func key'
end
else
raise ArgumentError, 'Second argument must be an options hash with :pattern or :func key'
end
else
raise ArgumentError, 'add_validator expects 1 argument (validator instance) or 2 arguments (name, options)'
end
if @@validators.detect { |v| v.name == validator.name }
raise StandardError.new('validators need to have unique names')
end
@@validators << validator
end
|
12
13
14
15
|
# File 'lib/hash_validator/configuration.rb', line 12
def self.configure
config = Configuration.new
yield(config) if block_given?
end
|
.many(validation) ⇒ Object
10
11
12
|
# File 'lib/hash_validator.rb', line 10
def self.many(validation)
Validations::Many.new(validation)
end
|
.multiple(*validations) ⇒ Object
14
15
16
|
# File 'lib/hash_validator.rb', line 14
def self.multiple(*validations)
Validations::Multiple.new(validations)
end
|
.optional(validation) ⇒ Object
6
7
8
|
# File 'lib/hash_validator.rb', line 6
def self.optional(validation)
Validations::Optional.new(validation)
end
|
.remove_validator(name) ⇒ Object
5
6
7
8
|
# File 'lib/hash_validator/validators.rb', line 5
def self.remove_validator(name)
name = name.to_s
@@validators.reject! { |v| v.name == name }
end
|
.validate(*args) ⇒ Object
2
3
4
|
# File 'lib/hash_validator.rb', line 2
def self.validate(*args)
Base.validate(*args)
end
|
.validator_for(rhs) ⇒ Object
48
49
50
|
# File 'lib/hash_validator/validators.rb', line 48
def self.validator_for(rhs)
@@validators.detect { |v| v.should_validate?(rhs) } || raise(StandardError.new("Could not find valid validator for: #{rhs}"))
end
|