Class: Formeze::Field
- Inherits:
-
Object
- Object
- Formeze::Field
- Defined in:
- lib/formeze.rb
Instance Attribute Summary collapse
-
#name ⇒ Object
readonly
Returns the value of attribute name.
Instance Method Summary collapse
- #accept ⇒ Object
- #blank_value ⇒ Object
- #blank_value? ⇒ Boolean
- #defined_if ⇒ Object
- #defined_if? ⇒ Boolean
- #defined_unless ⇒ Object
- #defined_unless? ⇒ Boolean
- #error(key, default) ⇒ Object
-
#initialize(name, options = {}) ⇒ Field
constructor
A new instance of Field.
- #key ⇒ Object
- #key_required? ⇒ Boolean
- #label ⇒ Object
- #maxsize ⇒ Object
- #maxsize? ⇒ Boolean
- #multiline? ⇒ Boolean
- #multiple? ⇒ Boolean
- #no_match?(value) ⇒ Boolean
- #required? ⇒ Boolean
- #too_long?(value) ⇒ Boolean
- #too_short?(value) ⇒ Boolean
- #validate(value, form) ⇒ Object
- #validate_all(values, form) ⇒ Object
- #validate_file(object, form) ⇒ Object
- #values ⇒ Object
- #values? ⇒ Boolean
Constructor Details
#initialize(name, options = {}) ⇒ Field
Returns a new instance of Field.
7 8 9 |
# File 'lib/formeze.rb', line 7 def initialize(name, = {}) @name, = name, end |
Instance Attribute Details
#name ⇒ Object (readonly)
Returns the value of attribute name.
5 6 7 |
# File 'lib/formeze.rb', line 5 def name @name end |
Instance Method Details
#accept ⇒ Object
101 102 103 |
# File 'lib/formeze.rb', line 101 def accept @accept ||= .fetch(:accept).split(',').flat_map { |type| MIME::Types[type] } end |
#blank_value ⇒ Object
121 122 123 |
# File 'lib/formeze.rb', line 121 def blank_value .fetch(:blank) end |
#blank_value? ⇒ Boolean
117 118 119 |
# File 'lib/formeze.rb', line 117 def blank_value? .has_key?(:blank) end |
#defined_if ⇒ Object
137 138 139 |
# File 'lib/formeze.rb', line 137 def defined_if .fetch(:defined_if) end |
#defined_if? ⇒ Boolean
133 134 135 |
# File 'lib/formeze.rb', line 133 def defined_if? .has_key?(:defined_if) end |
#defined_unless ⇒ Object
145 146 147 |
# File 'lib/formeze.rb', line 145 def defined_unless .fetch(:defined_unless) end |
#defined_unless? ⇒ Boolean
141 142 143 |
# File 'lib/formeze.rb', line 141 def defined_unless? .has_key?(:defined_unless) end |
#error(key, default) ⇒ Object
65 66 67 |
# File 'lib/formeze.rb', line 65 def error(key, default) Formeze.translate(key, :scope => [:formeze, :errors], :default => default) end |
#key ⇒ Object
69 70 71 |
# File 'lib/formeze.rb', line 69 def key @key ||= @name.to_s end |
#key_required? ⇒ Boolean
73 74 75 |
# File 'lib/formeze.rb', line 73 def key_required? .fetch(:key_required) { true } end |
#label ⇒ Object
77 78 79 |
# File 'lib/formeze.rb', line 77 def label .fetch(:label) { Formeze.translate(name, :scope => [:formeze, :labels], :default => Formeze.label(name)) } end |
#maxsize ⇒ Object
97 98 99 |
# File 'lib/formeze.rb', line 97 def maxsize .fetch(:maxsize) end |
#maxsize? ⇒ Boolean
93 94 95 |
# File 'lib/formeze.rb', line 93 def maxsize? .has_key?(:maxsize) end |
#multiline? ⇒ Boolean
85 86 87 |
# File 'lib/formeze.rb', line 85 def multiline? .fetch(:multiline) { false } end |
#multiple? ⇒ Boolean
89 90 91 |
# File 'lib/formeze.rb', line 89 def multiple? .fetch(:multiple) { false } end |
#no_match?(value) ⇒ Boolean
113 114 115 |
# File 'lib/formeze.rb', line 113 def no_match?(value) .has_key?(:pattern) && value !~ [:pattern] end |
#required? ⇒ Boolean
81 82 83 |
# File 'lib/formeze.rb', line 81 def required? .fetch(:required) { true } end |
#too_long?(value) ⇒ Boolean
105 106 107 |
# File 'lib/formeze.rb', line 105 def too_long?(value) value.chars.count > .fetch(:maxlength) { 64 } end |
#too_short?(value) ⇒ Boolean
109 110 111 |
# File 'lib/formeze.rb', line 109 def too_short?(value) .has_key?(:minlength) && value.chars.count < .fetch(:minlength) end |
#validate(value, form) ⇒ Object
27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 |
# File 'lib/formeze.rb', line 27 def validate(value, form) value = Formeze.scrub(value, [:scrub]) if value !~ /\S/ form.add_error(self, error(:required, 'is required')) if required? value = blank_value if blank_value? else form.add_error(self, error(:not_multiline, 'cannot contain newlines')) if !multiline? && value.lines.count > 1 form.add_error(self, error(:too_long, 'is too long')) if too_long?(value) form.add_error(self, error(:too_short, 'is too short')) if too_short?(value) form.add_error(self, error(:no_match, 'is invalid')) if no_match?(value) form.add_error(self, error(:bad_value, 'is invalid')) if values? && !values.include?(value) end value = Array(form.send(name)).push(value) if multiple? form.send(:"#{name}=", value) end |
#validate_all(values, form) ⇒ Object
11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
# File 'lib/formeze.rb', line 11 def validate_all(values, form) size = 0 values.each do |value| if String === value validate(value, form) else validate_file(value, form) size += value.size end end form.add_error(self, error(:too_large, 'is too large')) if maxsize? && size > maxsize end |
#validate_file(object, form) ⇒ Object
51 52 53 54 55 56 57 58 59 60 61 62 63 |
# File 'lib/formeze.rb', line 51 def validate_file(object, form) type = MIME::Types[object.content_type].first filename_type = MIME::Types.type_for(object.original_filename).first if type.nil? || type != filename_type || !accept.include?(type) form.add_error(self, error(:not_accepted, 'is not an accepted file type')) end object = Array(form.send(name)).push(object) if multiple? form.send(:"#{name}=", object) end |
#values ⇒ Object
129 130 131 |
# File 'lib/formeze.rb', line 129 def values .fetch(:values) end |
#values? ⇒ Boolean
125 126 127 |
# File 'lib/formeze.rb', line 125 def values? .has_key?(:values) end |