Class: Knight::Rule::ExactLength

Inherits:
Knight::Rule show all
Defined in:
lib/knight/rule/exact_length.rb

Overview

A rule for checking the length of a value

Constant Summary collapse

DEFAULT_MESSAGE =
'%{attribute} has an invalid length'.freeze

Instance Attribute Summary collapse

Attributes inherited from Knight::Rule

#attribute_name, #message, #options

Instance Method Summary collapse

Methods inherited from Knight::Rule

#error

Constructor Details

#initialize(attribute_name, length, options = {}) ⇒ undefined

Initialize an exact length rule

Examples:

rule = Knight::Rule::ExactLength.new(:username, 20)

Parameters:

  • attribute_name (Symbol)
  • length (Fixnum)
  • options (Hash) (defaults to: {})

    for this rule

Options Hash (options):

  • :message (String)

    error message



31
32
33
34
# File 'lib/knight/rule/exact_length.rb', line 31

def initialize(attribute_name, length, options = {})
  super(attribute_name, options)
  @length = length
end

Instance Attribute Details

#lengthFixnum (readonly)

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Length value

Returns:

  • (Fixnum)


15
16
17
# File 'lib/knight/rule/exact_length.rb', line 15

def length
  @length
end

Instance Method Details

#matches?(value) ⇒ true, false

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Check length of the value

Parameters:

  • value (Object)

Returns:

  • (true)

    if the length is matched

  • (false)

    otherwise



44
45
46
# File 'lib/knight/rule/exact_length.rb', line 44

def matches?(value)
  length == value.length
end

#to_hashHash

Return the rule as a hash

Examples:

hash = rule.to_hash

Returns:

  • (Hash)


56
57
58
59
60
# File 'lib/knight/rule/exact_length.rb', line 56

def to_hash
  super.merge({
    length: length
  }).freeze
end