From: Robert Klemme Date: 2010-08-31T21:17:26+09:00 Subject: Re: XSLT-like search in a Ruby Hash 2010/8/31 Pito Salas : > I have a need for some relatively fancy searching in a hash, and I am > wondering if there's anything that does some kind of pattern matching on > Hash contents. > > Specifically here's an example of what I would like to be able to write: > http://www.pastie.org/1127920 > > Yes, I can write the iterators, collects, merges and what else, but > nicer would be some kind of structured query syntax. Any ideas? For the simple case one could do class Hash def nested_value? *keys, val val.eql?( keys.inject(self) {|h,k| h.fetch(k) { return false } } ) rescue return false end def nested_key? *keys keys.inject(self) {|h,k| h.fetch(k) { return false } } rescue return false true end end Note, you need 1.9* for this - otherwise you need to manually distribute arguments. Kind regards robert -- remember.guy do |as, often| as.you_can - without end http://blog.rubybestpractices.com/