class Formeze::Field
Attributes
name[R]
Public Class Methods
new(name, **options)
click to toggle source
# File lib/formeze/field.rb, line 8 def initialize(name, **options) @name, @options = name, options end
Public Instance Methods
accept()
click to toggle source
# File lib/formeze/field.rb, line 102 def accept @accept ||= @options.fetch(:accept).split(',').flat_map { |type| MIME::Types[type] } end
accept?()
click to toggle source
# File lib/formeze/field.rb, line 98 def accept? @options.key?(:accept) end
acceptable_file?(object)
click to toggle source
# File lib/formeze/field.rb, line 54 def acceptable_file?(object) types = MIME::Types.type_for(object.original_filename) if object.content_type == 'application/octet-stream' types.any? { |type| accept.include?(type) } else type = MIME::Types[object.content_type].first accept.include?(type) && types.include?(type) end end
blank_value()
click to toggle source
# File lib/formeze/field.rb, line 118 def blank_value @options[:blank] end
defined_if()
click to toggle source
# File lib/formeze/field.rb, line 134 def defined_if @options.fetch(:defined_if) end
defined_if?()
click to toggle source
# File lib/formeze/field.rb, line 130 def defined_if? @options.key?(:defined_if) end
defined_unless()
click to toggle source
# File lib/formeze/field.rb, line 142 def defined_unless @options.fetch(:defined_unless) end
defined_unless?()
click to toggle source
# File lib/formeze/field.rb, line 138 def defined_unless? @options.key?(:defined_unless) end
fill_proc()
click to toggle source
# File lib/formeze/field.rb, line 160 def fill_proc @options[:fill] end
fill_proc?()
click to toggle source
# File lib/formeze/field.rb, line 156 def fill_proc? @options.key?(:fill) end
key()
click to toggle source
# File lib/formeze/field.rb, line 66 def key @key ||= @name.to_s end
key_required?()
click to toggle source
# File lib/formeze/field.rb, line 70 def key_required? @options.fetch(:key_required) { true } end
label()
click to toggle source
# File lib/formeze/field.rb, line 74 def label @options.fetch(:label) { Formeze::Labels.translate(name) } end
maxsize()
click to toggle source
# File lib/formeze/field.rb, line 94 def maxsize @options.fetch(:maxsize) end
maxsize?()
click to toggle source
# File lib/formeze/field.rb, line 90 def maxsize? @options.key?(:maxsize) end
multiline?()
click to toggle source
# File lib/formeze/field.rb, line 82 def multiline? @options.fetch(:multiline) { false } end
multiple?()
click to toggle source
# File lib/formeze/field.rb, line 86 def multiple? @options.fetch(:multiple) { false } end
no_match?(value)
click to toggle source
# File lib/formeze/field.rb, line 114 def no_match?(value) @options.key?(:pattern) && value !~ @options[:pattern] end
required?()
click to toggle source
# File lib/formeze/field.rb, line 78 def required? @options.fetch(:required) { true } end
too_long?(value)
click to toggle source
# File lib/formeze/field.rb, line 106 def too_long?(value) value.chars.count > @options.fetch(:maxlength) { 64 } end
too_short?(value)
click to toggle source
# File lib/formeze/field.rb, line 110 def too_short?(value) @options.key?(:minlength) && value.chars.count < @options.fetch(:minlength) end
undefined?(form)
click to toggle source
# File lib/formeze/field.rb, line 146 def undefined?(form) if defined_if? !Formeze::Block.evaluate(form, defined_if) elsif defined_unless? Formeze::Block.evaluate(form, defined_unless) else false end end
validate(value, form)
click to toggle source
# File lib/formeze/field.rb, line 32 def validate(value, form) value = Formeze.scrub(value, @options[:scrub]) if blank?(value) form.add_error(self, :required) if required? value = blank_value else form.add_error(self, :not_multiline) if !multiline? && value.lines.count > 1 form.add_error(self, :too_long) if too_long?(value) form.add_error(self, :too_short) if too_short?(value) form.add_error(self, :no_match) if no_match?(value) form.add_error(self, :bad_value) if values? && !values.include?(value) end value end
validate_all(values, form)
click to toggle source
# File lib/formeze/field.rb, line 12 def validate_all(values, form) size = 0 values.each do |value| if String === value value = validate(value, form) else form.add_error(self, :not_accepted) unless acceptable_file?(value) size += value.size end value = Array(form.send(name)).push(value) if multiple? form.send(:"#{name}=", value) end form.add_error(self, :too_large) if maxsize? && size > maxsize end
values()
click to toggle source
# File lib/formeze/field.rb, line 126 def values @options.fetch(:values) end
values?()
click to toggle source
# File lib/formeze/field.rb, line 122 def values? @options.key?(:values) end