Class: Genome::Parameter

Inherits:
Object
  • Object
show all
Defined in:
lib/genome/parameter.rb

Constant Summary collapse

PARAMETERS =
{
  AllowedPattern: { type: :string },
  AllowedValues: { type: :array },
  ConstraintDescription: { type: :string },
  Default: { type: :any },
  Description: { type: :string },
  MaxLength: { type: :integer },
  MaxValue: { type: :integer },
  MinLength: { type: :integer },
  MinValue: { type: :integer },
  NoEcho: { type: :boolean },
  Type: { type: :string },
}.freeze

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(parameter_name:, parameter_options: {}) ⇒ Parameter

Returns a new instance of Parameter.



22
23
24
25
26
27
# File 'lib/genome/parameter.rb', line 22

def initialize(parameter_name:, parameter_options: {})
  validate_parameter_options!(parameter_options)

  @parameter_name    = parameter_name
  @parameter_options = parameter_options
end

Instance Attribute Details

#parameter_nameObject (readonly)

Returns the value of attribute parameter_name.



19
20
21
# File 'lib/genome/parameter.rb', line 19

def parameter_name
  @parameter_name
end

#parameter_optionsObject

Returns the value of attribute parameter_options.



20
21
22
# File 'lib/genome/parameter.rb', line 20

def parameter_options
  @parameter_options
end

Instance Method Details

#check_parameter_type(parameter_value, allowed_parameter_type) ⇒ Object



44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
# File 'lib/genome/parameter.rb', line 44

def check_parameter_type(parameter_value, allowed_parameter_type)
  case allowed_parameter_type
  when :string
    parameter_value.is_a?(String)
  when :integer
    begin
      Integer(parameter_value)

      true
    rescue
      false
    end
  when :boolean
    ['true', 'false'].include?(parameter_value.to_s.downcase)
  when :array
    parameter_value.is_a?(Array)
  when :any
    true
  end
end

#to_hObject



65
66
67
68
69
# File 'lib/genome/parameter.rb', line 65

def to_h
  {
    parameter_name => parameter_options
  }
end

#validate_parameter_options!(parameter_options) ⇒ Object



29
30
31
32
33
34
35
36
37
38
39
40
41
42
# File 'lib/genome/parameter.rb', line 29

def validate_parameter_options!(parameter_options)
  parameter_options.each do |parameter_option_name, parameter_option_value|
    parameter_option_rules = PARAMETERS[parameter_option_name]

    raise Error::UnknownParameter, "Unknown parameter '#{parameter_option_name}'" unless parameter_option_rules

    allowed_parameter_type = parameter_option_rules[:type]

    raise Error::InvalidParameterType, "Invalid parameter type #{{
      parameter_value: parameter_value,
      allowed_parameter_type: allowed_parameter_type,
    }}" unless check_parameter_type(parameter_option_value, allowed_parameter_type)
  end
end