module Rsxml::Util
Public Instance Methods
check_opts(constraints, opts)
click to toggle source
simple option checking, with value constraints and sub-hash checking
# File lib/rsxml/util.rb, line 6 def check_opts(constraints, opts) opts ||= {} opts.each{|k,v| raise "opt not permitted: #{k.inspect}" if !constraints.has_key?(k)} Hash[constraints.map do |k,constraint| if opts.has_key?(k) v = opts[k] if constraint.is_a?(Array) raise "unknown value for opt #{k.inspect}: #{v.inspect}. permitted values are: #{constraint.inspect}" if !constraint.include?(v) [k,v] elsif constraint.is_a?(Hash) raise "opt #{k.inspect} must be a Hash" if !v.is_a?(Hash) [k,check_opts(constraint, v || {})] else [k,v] end end end] end