class Genome::Parameter

Constants

PARAMETERS

Attributes

parameter_name[R]
parameter_options[RW]

Public Class Methods

new(parameter_name:, parameter_options: {}) click to toggle source
# 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

Public Instance Methods

check_parameter_type(parameter_value, allowed_parameter_type) click to toggle source
# 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_h() click to toggle source
# File lib/genome/parameter.rb, line 65
def to_h
  {
    parameter_name => parameter_options
  }
end
validate_parameter_options!(parameter_options) click to toggle source
# 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