validation_hints 0.0.7 → 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/README.md CHANGED
@@ -1,4 +1,34 @@
1
- validation_hints
2
- ================
3
1
 
4
- Hints for validation
2
+ ## Validation Hints
3
+
4
+ Delivers hints derived from the validation on a model.
5
+
6
+ ### Install
7
+
8
+ ```ruby
9
+ gem 'validation_hints'
10
+ ```
11
+
12
+ ### Example
13
+
14
+ ```ruby
15
+ class Person < ActiveRecord::Base
16
+ validates :name, :presence => true
17
+ validates :password, :length => { :within => 1...5 }
18
+ end
19
+ ```
20
+
21
+ ```ruby
22
+ Person.new.hints[:name] => ["can't be blank"]
23
+ Person.new.hints[:password] => ["must not be shorter than 1 characters", "must not be longer than 4 characters"]
24
+ Person.new.hints.messages => {:id=>[], :password=>["must not be shorter than 1 characters", "must not be longer than 4 characters"], :name => ["can't be blank"] }
25
+ ```
26
+
27
+ ### Disclaimer
28
+
29
+ It's work in progress.
30
+ validation_hints was for the most part derived from activerecord-3.2.3/lib/active_record/errors.rb
31
+
32
+
33
+
34
+
@@ -1,6 +1,10 @@
1
1
  module ActiveModel
2
2
  # == Active Model Hints
3
3
  #
4
+ # p = Person.new
5
+ # p.hints
6
+ # p.hints[:name]
7
+ #
4
8
  # more documentation needed
5
9
 
6
10
  class Hints
@@ -23,10 +27,27 @@ module ActiveModel
23
27
  @base = base
24
28
  @messages = ActiveSupport::OrderedHash.new
25
29
  @base.attributes.keys.each do |a|
26
- @messages[a.to_sym] = validation_hints_for(a.to_sym)
30
+ @messages[a.to_sym] = hints_for(a.to_sym)
27
31
  end
28
32
  end
29
33
 
34
+ def hints_for(attribute)
35
+ result = Array.new
36
+ @base.class.validators_on(attribute).map do |v|
37
+ # check for validators that have no options
38
+ validator = v.class.to_s.split('::').last.downcase.gsub('validator','')
39
+ if MESSAGES_FOR_VALIDATORS.include?(validator)
40
+ result << generate_message(attribute, validator)
41
+ end
42
+ v.options.each do |o|
43
+ if MESSAGES_FOR_OPTIONS.include?(o.first.to_s)
44
+ result << generate_message(attribute, [ validator, o.first.to_s ].join('.'), { :count => o.last } )
45
+ end
46
+ end
47
+ end
48
+ result
49
+ end
50
+
30
51
  def initialize_dup(other)
31
52
  @messages = other.messages.dup
32
53
  end
@@ -242,25 +263,6 @@ module ActiveModel
242
263
  })
243
264
  end
244
265
 
245
- def validation_hints_for(attribute)
246
- result = Array.new
247
- @base.class.validators_on(attribute).map do |v|
248
- # puts "** ** ** ** V " + v.class.to_s.split('::').last.downcase.gsub('validator','')
249
- # check for validators that have no options
250
- validator = v.class.to_s.split('::').last.downcase.gsub('validator','')
251
- if MESSAGES_FOR_VALIDATORS.include?(validator)
252
- result << generate_message(attribute, validator)
253
- end
254
- v.options.each do |o|
255
- # puts "** ** ** ** O " + o.inspect
256
- if MESSAGES_FOR_OPTIONS.include?(o.first.to_s)
257
- result << generate_message(attribute, [ validator, o.first.to_s ].join('.'), { :count => o.last } )
258
- end
259
- end
260
- end
261
- result
262
- end
263
-
264
266
  def generate_message(attribute, type, options = {})
265
267
  if @base.class.respond_to?(:i18n_scope)
266
268
  defaults = @base.class.lookup_ancestors.map do |klass|
@@ -285,7 +287,6 @@ module ActiveModel
285
287
  :model => @base.class.model_name.human,
286
288
  :attribute => @base.class.human_attribute_name(attribute),
287
289
  }.merge(options)
288
- # puts "*" + File.basename(__FILE__) + ": " + "ATTR #{attribute}, OPTIONS #{options.inspect} "
289
290
  I18n.translate(key, options)
290
291
  end
291
292
 
@@ -1,4 +1,4 @@
1
1
  # -*- encoding : utf-8 -*-
2
2
  module ValidationHints
3
- VERSION = "0.0.7"
3
+ VERSION = "0.1.0"
4
4
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: validation_hints
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.7
4
+ version: 0.1.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors: