tram-validators 0.0.4 → 0.0.5
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.rubocop_todo.yml +12 -0
- data/CHANGELOG.md +7 -0
- data/lib/tram/locales/en.yml +12 -0
- data/lib/tram/locales/ru.yml +13 -0
- data/lib/tram/validators.rb +4 -0
- data/lib/tram/validators/consistency_validator.rb +4 -1
- data/lib/tram/validators/outcome_validator.rb +7 -13
- data/lib/tram/validators/reference_validator.rb +6 -1
- data/lib/tram/validators/size_validator.rb +7 -3
- data/lib/tram/validators/validity_validator.rb +4 -3
- data/tram-validators.gemspec +1 -1
- metadata +5 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f890e67e5985736d2fb52569af92743acd02f021
|
4
|
+
data.tar.gz: '0952d74dcd81759ce8b04118b053758452f86f8f'
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c8a72c30378c53d742caa9069adc4b77fab8c9bd144bd81d6649f4073000bc8041b8e51a65e8bba50ccbc5123572de02bedf13e82ad660855114f7350b0460e7
|
7
|
+
data.tar.gz: cb5e2e9ff8a40adef4f072a558e2b6e187124e4b128bd12f85d9e8bfde74ccf13599a403c3ccc1ccfd7b572767894227101bd88c99dd21ab90cc1022483940c3
|
data/.rubocop_todo.yml
ADDED
@@ -0,0 +1,12 @@
|
|
1
|
+
# This configuration was generated by
|
2
|
+
# `rubocop --auto-gen-config`
|
3
|
+
# on 2017-02-06 13:19:54 +0300 using RuboCop version 0.47.1.
|
4
|
+
# The point is for the user to remove these configuration records
|
5
|
+
# one by one as the offenses are removed from the code base.
|
6
|
+
# Note that changes in the inspected code, or installation of new
|
7
|
+
# versions of RuboCop, may require this file to be generated again.
|
8
|
+
|
9
|
+
# Offense count: 1
|
10
|
+
# Configuration parameters: CountComments.
|
11
|
+
Metrics/MethodLength:
|
12
|
+
Max: 12
|
data/CHANGELOG.md
CHANGED
@@ -0,0 +1,12 @@
|
|
1
|
+
---
|
2
|
+
en:
|
3
|
+
errors:
|
4
|
+
messages:
|
5
|
+
not_validatable: "cannot be validated"
|
6
|
+
not_found: "refers to no record of %{klass} by %{key}: %{value}"
|
7
|
+
size_equal_to: "has size %{size} other than %{limit}"
|
8
|
+
size_other_than: "has size equal to %{limit}"
|
9
|
+
size_greater_than: "has size %{size} which isn't greater than %{limit}"
|
10
|
+
size_greater_than_or_equal_to: "has size %{size} which is less than %{limit}"
|
11
|
+
size_less_than: "has size %{size} which isn't less than %{limit}"
|
12
|
+
size_less_than_or_equal_to: "has size %{size} which is greater than %{limit}"
|
@@ -0,0 +1,13 @@
|
|
1
|
+
---
|
2
|
+
ru:
|
3
|
+
errors:
|
4
|
+
messages:
|
5
|
+
invalid: "имеет некорректное значение"
|
6
|
+
not_validatable: "не может быть проверен"
|
7
|
+
not_found: "не соответствует объекту класса %{klass} с идентификатором %{key}: %{value}"
|
8
|
+
size_equal_to: "имеет размер %{size} отличный от %{limit}"
|
9
|
+
size_other_than: "имеет размер равный %{limit}"
|
10
|
+
size_greater_than: "имеет размер %{size} не превышающий %{limit}"
|
11
|
+
size_greater_than_or_equal_to: "имеет размер %{size} меньший %{limit}"
|
12
|
+
size_less_than: "имеет размер %{size} не меньший %{limit}"
|
13
|
+
size_less_than_or_equal_to: "имеет размер %{size} превышающий %{limit}"
|
data/lib/tram/validators.rb
CHANGED
@@ -21,6 +21,9 @@ class ConsistencyValidator < ActiveModel::EachValidator
|
|
21
21
|
return if value && other_value && yield(value, other_value)
|
22
22
|
|
23
23
|
error_name = [condition, chain.to_s.split(".")].flatten.join("_").to_sym
|
24
|
-
record.errors.add attribute, error_name,
|
24
|
+
record.errors.add attribute, error_name, model: record,
|
25
|
+
attribute: attribute,
|
26
|
+
value: value,
|
27
|
+
other: other_value
|
25
28
|
end
|
26
29
|
end
|
@@ -11,6 +11,7 @@
|
|
11
11
|
# # user_id.user_name_presence
|
12
12
|
#
|
13
13
|
class OutcomeValidator < ActiveModel::EachValidator
|
14
|
+
# rubocop: disable Metrics/MethodLength
|
14
15
|
def validate_each(record, attribute, value)
|
15
16
|
dependency = options[:value].to_s.gsub(".", "_")
|
16
17
|
dependent = Tram::Validators.chained_value(record, options[:value])
|
@@ -20,11 +21,14 @@ class OutcomeValidator < ActiveModel::EachValidator
|
|
20
21
|
validators.each do |condition, validator|
|
21
22
|
next if valid_in_sandbox(sandbox, attribute, dependent, validator)
|
22
23
|
|
23
|
-
key
|
24
|
-
|
25
|
-
|
24
|
+
key = message_key(dependency, condition)
|
25
|
+
record.errors.add attribute, key, model: record,
|
26
|
+
attribute: attribute,
|
27
|
+
value: value,
|
28
|
+
delependent: dependent
|
26
29
|
end
|
27
30
|
end
|
31
|
+
# rubocop: enable Metrics/MethodLength
|
28
32
|
|
29
33
|
private
|
30
34
|
|
@@ -37,14 +41,4 @@ class OutcomeValidator < ActiveModel::EachValidator
|
|
37
41
|
def message_key(dependency, condition)
|
38
42
|
[dependency, condition.to_s].compact.join("_").to_sym
|
39
43
|
end
|
40
|
-
|
41
|
-
def message(record, attribute, value, dependent, message_key)
|
42
|
-
model = record.class.name.underscore
|
43
|
-
scope = %W(active_model errors models #{model} attributes #{attribute})
|
44
|
-
I18n.t message_key, record: record,
|
45
|
-
attribute: attribute,
|
46
|
-
value: value,
|
47
|
-
delependent: dependent,
|
48
|
-
scope: scope
|
49
|
-
end
|
50
44
|
end
|
@@ -6,9 +6,14 @@
|
|
6
6
|
class ReferenceValidator < ActiveModel::EachValidator
|
7
7
|
def validate_each(record, attribute, value)
|
8
8
|
model = options.fetch(:model) { raise "You should define :model option" }
|
9
|
+
model = model.constantize if model.is_a? String
|
9
10
|
key = options.fetch(:find_by, :id)
|
10
11
|
|
11
12
|
return if model.find_by(key => value)
|
12
|
-
record.errors.add attribute, :not_found
|
13
|
+
record.errors.add attribute, :not_found, model: record,
|
14
|
+
attribute: attribute,
|
15
|
+
value: value,
|
16
|
+
klass: model.name,
|
17
|
+
key: key
|
13
18
|
end
|
14
19
|
end
|
@@ -8,19 +8,23 @@ class SizeValidator < ActiveModel::EachValidator
|
|
8
8
|
def validate_each(record, attribute, value)
|
9
9
|
size = value.size if value.respond_to? :size
|
10
10
|
Tram::Validators::CONDITIONS.each do |key, block|
|
11
|
-
check(key, record, attribute, size, &block)
|
11
|
+
check(key, record, attribute, value, size, &block)
|
12
12
|
end
|
13
13
|
end
|
14
14
|
|
15
15
|
private
|
16
16
|
|
17
|
-
def check(condition, record, attribute, size)
|
17
|
+
def check(condition, record, attribute, value, size)
|
18
18
|
return unless options.key? condition
|
19
19
|
|
20
20
|
limit = extract_limit(record, condition)
|
21
21
|
return if size && limit && yield(size, limit.to_i)
|
22
22
|
|
23
|
-
record.errors.add attribute, error_key(condition),
|
23
|
+
record.errors.add attribute, error_key(condition), model: record,
|
24
|
+
attribute: attribute,
|
25
|
+
value: value,
|
26
|
+
size: size,
|
27
|
+
limit: limit
|
24
28
|
end
|
25
29
|
|
26
30
|
def extract_limit(record, condition)
|
@@ -14,10 +14,11 @@
|
|
14
14
|
class ValidityValidator < ActiveModel::EachValidator
|
15
15
|
def validate_each(record, key, value)
|
16
16
|
if !value.respond_to? :valid?
|
17
|
-
record.errors
|
18
|
-
|
17
|
+
record.errors.add attribute, :not_validatable, model: record,
|
18
|
+
attribute: key,
|
19
|
+
value: value
|
19
20
|
elsif !value.valid?
|
20
|
-
Tram::Validators.copy_errors(value, record, key, :
|
21
|
+
Tram::Validators.copy_errors(value, record, key, :invalid, value, options)
|
21
22
|
end
|
22
23
|
end
|
23
24
|
end
|
data/tram-validators.gemspec
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: tram-validators
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Andrew Kozin (nepalez)
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-
|
11
|
+
date: 2017-02-06 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
@@ -79,6 +79,7 @@ files:
|
|
79
79
|
- ".gitignore"
|
80
80
|
- ".rspec"
|
81
81
|
- ".rubocop.yml"
|
82
|
+
- ".rubocop_todo.yml"
|
82
83
|
- ".travis.yml"
|
83
84
|
- CHANGELOG.md
|
84
85
|
- Gemfile
|
@@ -86,6 +87,8 @@ files:
|
|
86
87
|
- README.md
|
87
88
|
- Rakefile
|
88
89
|
- lib/tram-validators.rb
|
90
|
+
- lib/tram/locales/en.yml
|
91
|
+
- lib/tram/locales/ru.yml
|
89
92
|
- lib/tram/validators.rb
|
90
93
|
- lib/tram/validators/consistency_validator.rb
|
91
94
|
- lib/tram/validators/contract_validator.rb
|