Class: Sfn::Utils::StackParameterValidator

Inherits:
Object
  • Object
show all
Extended by:
Bogo::AnimalStrings
Defined in:
lib/sfn/utils/stack_parameter_validator.rb

Overview

Helper utility for validating stack parameters

Class Method Summary collapse

Class Method Details

.allowed_pattern(value, pdef) ⇒ TrueClass, String

Parameter matches allowed pattern

Parameters:

  • value (String)
  • pdef (Hash)

    parameter definition

Options Hash (pdef):

  • 'AllowedPattern' (String)

Returns:

  • (TrueClass, String)


57
58
59
60
61
62
63
# File 'lib/sfn/utils/stack_parameter_validator.rb', line 57

def allowed_pattern(value, pdef)
  if(value.match(/#{pdef['AllowedPattern']}/))
    true
  else
    "Not a valid pattern. Must match: #{pdef['AllowedPattern']}"
  end
end

.allowed_values(value, pdef) ⇒ TrueClass, String

Parameter is within allowed values

Parameters:

  • value (String)
  • pdef (Hash)

    parameter definition

Options Hash (pdef):

  • 'AllowedValues' (Array<String>)

Returns:

  • (TrueClass, String)


43
44
45
46
47
48
49
# File 'lib/sfn/utils/stack_parameter_validator.rb', line 43

def allowed_values(value, pdef)
  if(pdef['AllowedValues'].include?(value))
    true
  else
    "Not an allowed value: #{pdef['AllowedValues'].join(', ')}"
  end
end

.max_length(value, pdef) ⇒ TrueClass, String

Parameter length is less than or equal to max length

Parameters:

  • value (String, Integer)
  • pdef (Hash)

    parameter definition

Options Hash (pdef):

  • 'MaxLength' (String)

Returns:

  • (TrueClass, String)


71
72
73
74
75
76
77
# File 'lib/sfn/utils/stack_parameter_validator.rb', line 71

def max_length(value, pdef)
  if(value.length <= pdef['MaxLength'].to_i)
    true
  else
    "Value must not exceed #{pdef['MaxLength']} characters"
  end
end

.max_value(value, pdef) ⇒ TrueClass, String

Parameter value is less than or equal to max value

Parameters:

  • value (String)
  • pdef (Hash)

    parameter definition

Options Hash (pdef):

  • 'MaxValue' (String)

Returns:

  • (TrueClass, String)


99
100
101
102
103
104
105
# File 'lib/sfn/utils/stack_parameter_validator.rb', line 99

def max_value(value, pdef)
  if(value.to_i <= pdef['MaxValue'].to_i)
    true
  else
    "Value must not be greater than #{pdef['MaxValue']}"
  end
end

.min_length(value, pdef) ⇒ TrueClass, String

Parameter length is greater than or equal to min length

Parameters:

  • value (String)
  • pdef (Hash)

    parameter definition

Options Hash (pdef):

  • 'MinLength' (String)

Returns:

  • (TrueClass, String)


85
86
87
88
89
90
91
# File 'lib/sfn/utils/stack_parameter_validator.rb', line 85

def min_length(value, pdef)
  if(value.length >= pdef['MinLength'].to_i)
    true
  else
    "Value must be at least #{pdef['MinLength']} characters"
  end
end

.min_value(value, pdef) ⇒ TrueClass, String

Parameter value is greater than or equal to min value

Parameters:

  • value (String)
  • pdef (Hash)

    parameter definition

Options Hash (pdef):

  • 'MinValue' (String)

Returns:

  • (TrueClass, String)


113
114
115
116
117
118
119
# File 'lib/sfn/utils/stack_parameter_validator.rb', line 113

def min_value(value, pdef)
  if(value.to_i >= pdef['MinValue'].to_i)
    true
  else
    "Value must not be less than #{pdef['MinValue']}"
  end
end

.validate(value, parameter_definition) ⇒ TrueClass, Array<String>

Validate a parameters

Parameters:

  • value (Object)

    value for parameter

  • parameter_definition (Hash)

Options Hash (parameter_definition):

  • 'AllowedValues' (Array<String>)
  • 'AllowedPattern' (String)
  • 'MaxLength' (String, Integer)
  • 'MinLength' (String, Integer)
  • 'MaxValue' (String, Integer)
  • 'MinValue' (String, Integer)

Returns:

  • (TrueClass, Array<String>)

    true if valid. array of string errors if invalid



23
24
25
26
27
28
29
30
31
32
33
34
35
# File 'lib/sfn/utils/stack_parameter_validator.rb', line 23

def validate(value, parameter_definition)
  return [[:blank, 'Value cannot be blank']] if value.to_s.strip.empty?
  result = %w(AllowedValues AllowedPattern MaxLength MinLength MaxValue MinValue).map do |key|
    if(parameter_definition[key])
      res = self.send(snake(key), value, parameter_definition)
      res == true ? true : [snake(key), res]
    else
      true
    end
  end
  result.delete_if{|x| x == true}
  result.empty? ? true : result
end