This page contains automated test results for code from O'Reilly's Ruby Cookbook. If this code looks interesting or useful, you might want to buy the whole book.
| Searching a Hash with Regular Expressions | ||
|---|---|---|
| Code | Expected | Actual |
h = { "apple tree" => "plant", "ficus" => "plant",
"shrew" => "animal", "plesiosaur" => "animal" }
h.keys.grep /p/ |
["apple tree", "plesiosaur"] | ["apple tree", "plesiosaur"] |
h.inject([]) { |res, kv| res << kv if kv[1] =~ /p/; res } |
[["ficus", "plant"], ["apple tree", "plant"]] | [["ficus", "plant"], ["apple tree", "plant"]] |
class Hash
def grep(pattern)
inject([]) do |res, kv|
res << kv if kv[0] =~ pattern or kv[1] =~ pattern
res
end
end
end
h.grep(/pl/) |
[["ficus", "plant"], ["apple tree", "plant"], ["plesiosaur", "animal"]] | [["ficus", "plant"], ["apple tree", "plant"], ["plesiosaur", "animal"]] |
h.grep(/plant/) |
[["ficus", "plant"], ["apple tree", "plant"]] | [["ficus", "plant"], ["apple tree", "plant"]] |
h.grep(/i.*u/) |
[["ficus", "plant"], ["plesiosaur", "animal"]] | [["ficus", "plant"], ["plesiosaur", "animal"]] |
res = []
h.each_key { |k| res << k if k =~ /p/ }
res |
["apple tree", "plesiosaur"] | ["apple tree", "plesiosaur"] |