Method: Module#attr_validator

Defined in:
lib/core/facets/module/attr_validator.rb

#attr_validator(*symbols, &validator) ⇒ Object

Like attr_writer, but the writer method validates the setting against the given block.

NOTE: This method is not a common core extension and is not loaded automatically when using require 'facets'.

CREDIT: ?

Uncommon:

  • require ‘facets/module/attr_validator’



14
15
16
17
18
19
20
21
22
23
24
25
26
# File 'lib/core/facets/module/attr_validator.rb', line 14

def attr_validator(*symbols, &validator)
  made = []
  symbols.each do |symbol|
    define_method "#{symbol}=" do |val|
      unless validator.call(val)
        raise ArgumentError, "Invalid value provided for #{symbol}"
      end
      instance_variable_set("@#{symbol}", val)
    end
    made << "#{symbol}=".to_sym
  end
  made
end