Guest User

Untitled

a guest
Jul 18th, 2018
80
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.24 KB | None | 0 0
  1. class Hash
  2.  
  3. # Confirms that a key is set in the Hash
  4. def assert_required_keys(*required_keys)
  5. missing_keys = []
  6. [required_keys].flatten.each { |k| missing_keys << k unless keys.has_key?(k) }
  7. raise(ArgumentError, "Missing required key(s): #{missing_keys.join(", ")}") unless missing_keys.empty?
  8. end
  9.  
  10. # Confirms that a key is present and that is has value
  11. def assert_required_keys!(*required_keys)
  12. assert_required_keys(required_keys)
  13.  
  14. empty_keys, required_keys = [], [required_keys].flatten
  15. required_keys.each { |k| empty_keys << k if keys[k].nil? }
  16. raise(ArgumentError, "Required key has no value: #{empty_keys.join(", ")}") unless empty_keys.empty?
  17. end
  18.  
  19. # assert_dependent_keys( :scope => [:modifier, :object], :person => [:site, :group] )
  20. # If parent is not present it is bypassed. Only dependencies are required.
  21. def assert_presence_of_dependent_keys(*dependents)
  22. dependents.each { |set| set.each { |k,v| v.each { |required_key| assert_required_keys(required_key) } }
  23. end
  24.  
  25. # requires that the parent is also provided as a key
  26. def assert_presence_of_dependent_keys!(*dependents)
  27. dependents.each { |set| set.each { |k,v| assert_required_keys(k); v.each { |r| assert_required_keys(r) } } }
  28. end
  29.  
  30. end
Add Comment
Please, Sign In to add comment