class Oval::Options

Attributes

decl[R]

Public Class Methods

new(decl) click to toggle source
# File lib/oval/options.rb, line 13
def initialize(decl)
  self.decl = decl
end

Private Class Methods

validate_decl(decl) click to toggle source
# File lib/oval/options.rb, line 45
def self.validate_decl(decl)
  unless decl.is_a?(Hash)
    raise Oval::DeclError,
      "Invalid declaration #{decl.inspect} of type #{decl.class.name}. " +
      "Should be a Hash"
  end
  decl.each {|optname,optdecl| validate_option_name_decl(optname) }
end
validate_option_name_decl(optname) click to toggle source
# File lib/oval/options.rb, line 54
def self.validate_option_name_decl(optname)
  unless optname.respond_to?(:to_s)
    raise Oval::DeclError,
      "Invalid name #{optname.inspect}. Should be convertible to String"
  end
end

Public Instance Methods

validate(options, subject = nil) click to toggle source
# File lib/oval/options.rb, line 4
def validate(options, subject = nil)
  unless options.is_a?(Hash)
    raise Oval::ValueError,
      "Invalid options #{options.inspect} of type #{options.class.name}. " +
      "Should be a Hash"
  end
  options.each {|name, value| validate_option(name, value, subject) }
end

Private Instance Methods

decl=(decl) click to toggle source
# File lib/oval/options.rb, line 21
def decl=(decl)
  self.class.validate_decl(decl)
  @decl = decl
end
validate_option(name, value, subject = nil) click to toggle source
# File lib/oval/options.rb, line 26
def validate_option(name, value, subject = nil)
  validate_option_name(name, subject)
  validate_option_value(value, name, subject)
end
validate_option_name(name, subject = nil) click to toggle source
# File lib/oval/options.rb, line 31
def validate_option_name(name, subject = nil)
  unless decl.include?(name)
    allowed = enumerate(decl.keys.sort{|x,y| x.to_s <=> y.to_s}, 'and')
    raise Oval::ValueError,
      "Invalid option #{name.inspect}#{for_subject(subject)}. Allowed " +
      "options are #{allowed}"
  end
end
validate_option_value(value, name, subject = nil) click to toggle source
# File lib/oval/options.rb, line 40
def validate_option_value(value, name, subject = nil)
  subject = "#{subject}[#{name.inspect}]" if subject
  self.class.validate(value, decl[name], subject)
end