sexy_validations 0.2.2 → 0.3.0
Sign up to get free protection for your applications and to get access to all the features.
- data/VERSION +1 -1
- data/lib/sexy_validations.rb +8 -4
- data/lib/sexy_validations/validators/file.rb +15 -5
- data/lib/sexy_validations/validators/image.rb +3 -4
- data/sexy_validations.gemspec +2 -2
- metadata +4 -4
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.
|
1
|
+
0.3.0
|
data/lib/sexy_validations.rb
CHANGED
@@ -1,6 +1,11 @@
|
|
1
1
|
require 'sexy_validations/errors'
|
2
2
|
|
3
3
|
module SexyValidations
|
4
|
+
def self.load_validator(name)
|
5
|
+
require "sexy_validations/validators/#{name}"
|
6
|
+
"SexyValidations::Validators::#{name.to_s.capitalize}".constantize
|
7
|
+
end
|
8
|
+
|
4
9
|
def self.included(klass)
|
5
10
|
klass.instance_eval do
|
6
11
|
class_inheritable_array :validations
|
@@ -30,10 +35,9 @@ module SexyValidations
|
|
30
35
|
|
31
36
|
module ClassMethods
|
32
37
|
def load_validator(name)
|
33
|
-
|
34
|
-
"SexyValidations::Validators::#{name.to_s.capitalize}".constantize
|
38
|
+
SexyValidations.load_validator(name)
|
35
39
|
end
|
36
|
-
|
40
|
+
|
37
41
|
def validates(attribute = nil, validations = nil, &block)
|
38
42
|
if validations
|
39
43
|
condition = nil
|
@@ -74,7 +78,7 @@ module SexyValidations
|
|
74
78
|
def validate!
|
75
79
|
errors.clear
|
76
80
|
validations.each do |validation|
|
77
|
-
|
81
|
+
case
|
78
82
|
when validation[:validator]
|
79
83
|
if validation[:condition]
|
80
84
|
next unless validation[:condition].call(self)
|
@@ -9,6 +9,17 @@ module SexyValidations
|
|
9
9
|
end
|
10
10
|
end
|
11
11
|
|
12
|
+
def self.file_from_value(value)
|
13
|
+
case value.class.name
|
14
|
+
when "File", "Tempfile"
|
15
|
+
value
|
16
|
+
when "Sequel::Plugins::Paperclip::Attachment"
|
17
|
+
value.queued_file
|
18
|
+
else
|
19
|
+
raise ArgumentError, "#{value} is not a valid input"
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
12
23
|
def self.validate(model, attribute, value, options)
|
13
24
|
return unless value
|
14
25
|
|
@@ -18,18 +29,17 @@ module SexyValidations
|
|
18
29
|
}
|
19
30
|
end
|
20
31
|
|
21
|
-
|
22
|
-
|
23
|
-
end
|
32
|
+
file = file_from_value(value)
|
33
|
+
return unless file
|
24
34
|
|
25
35
|
if options[:size]
|
26
36
|
min = options[:size].min
|
27
|
-
if
|
37
|
+
if file.size < min
|
28
38
|
model.errors.add(attribute, "zu klein (mindestes #{humanized_size(min)})")
|
29
39
|
end
|
30
40
|
|
31
41
|
max = options[:size].max
|
32
|
-
if
|
42
|
+
if file.size > max
|
33
43
|
model.errors.add(attribute, "zu groß (maximal #{humanized_size(max)})")
|
34
44
|
end
|
35
45
|
end
|
@@ -11,13 +11,12 @@ module SexyValidations
|
|
11
11
|
}
|
12
12
|
end
|
13
13
|
|
14
|
-
|
15
|
-
|
16
|
-
end
|
14
|
+
file = SexyValidations.load_validator(:file).file_from_value(value)
|
15
|
+
return unless file
|
17
16
|
|
18
17
|
if options[:geometry]
|
19
18
|
geo1 = Sequel::Plugins::Paperclip::Processors::Image::Geometry.from_s(options[:geometry])
|
20
|
-
geo2 = Sequel::Plugins::Paperclip::Processors::Image::Geometry.from_file(
|
19
|
+
geo2 = Sequel::Plugins::Paperclip::Processors::Image::Geometry.from_file(file)
|
21
20
|
if geo2
|
22
21
|
if geo2.width < geo1.width
|
23
22
|
model.errors.add(attribute, "zu klein (weniger als %d Pixel breit)"%[geo1.width])
|
data/sexy_validations.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{sexy_validations}
|
8
|
-
s.version = "0.
|
8
|
+
s.version = "0.3.0"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Corin Langosch"]
|
12
|
-
s.date = %q{2010-09-
|
12
|
+
s.date = %q{2010-09-21}
|
13
13
|
s.description = %q{Module which provides sexy validations for models.}
|
14
14
|
s.email = %q{info@netskin.com}
|
15
15
|
s.extra_rdoc_files = [
|
metadata
CHANGED
@@ -4,9 +4,9 @@ version: !ruby/object:Gem::Version
|
|
4
4
|
prerelease: false
|
5
5
|
segments:
|
6
6
|
- 0
|
7
|
-
-
|
8
|
-
-
|
9
|
-
version: 0.
|
7
|
+
- 3
|
8
|
+
- 0
|
9
|
+
version: 0.3.0
|
10
10
|
platform: ruby
|
11
11
|
authors:
|
12
12
|
- Corin Langosch
|
@@ -14,7 +14,7 @@ autorequire:
|
|
14
14
|
bindir: bin
|
15
15
|
cert_chain: []
|
16
16
|
|
17
|
-
date: 2010-09-
|
17
|
+
date: 2010-09-21 00:00:00 +01:00
|
18
18
|
default_executable:
|
19
19
|
dependencies:
|
20
20
|
- !ruby/object:Gem::Dependency
|