Sha256: 95d0c9ca20cc0c981aebfe15141f5603acebf3189f594f7ec636abf7d2073296

Contents?: true

Size: 421 Bytes

Versions: 20

Compression:

Stored size: 421 Bytes

Contents

class Module

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

  def attr_validator(*symbols, &validator)
    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
    end
  end

end

Version data entries

20 entries across 20 versions & 1 rubygems

Version Path
facets-1.3.0 lib/facets/core/module/attr_validator.rb
facets-1.3.3 lib/facets/core/module/attr_validator.rb
facets-1.3.1 lib/facets/core/module/attr_validator.rb
facets-1.3.2 lib/facets/core/module/attr_validator.rb
facets-1.4.2 lib/facets/core/module/attr_validator.rb
facets-1.4.0 lib/facets/core/module/attr_validator.rb
facets-1.4.1 lib/facets/core/module/attr_validator.rb
facets-1.4.3 lib/facets/core/module/attr_validator.rb
facets-1.4.4 lib/facets/core/module/attr_validator.rb
facets-1.4.5 lib/facets/core/module/attr_validator.rb
facets-1.7.38 lib/facets/core/module/attr_validator.rb
facets-1.7.0 lib/facets/core/module/attr_validator.rb
facets-1.7.30 lib/facets/core/module/attr_validator.rb
facets-1.7.46 lib/facets/core/module/attr_validator.rb
facets-1.8.0 lib/facets/core/module/attr_validator.rb
facets-1.8.20 lib/facets/core/module/attr_validator.rb
facets-1.8.49 lib/facets/core/module/attr_validator.rb
facets-1.8.51 lib/facets/core/module/attr_validator.rb
facets-1.8.54 lib/facets/core/module/attr_validator.rb
facets-1.8.8 lib/facets/core/module/attr_validator.rb