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