In talking it over with the co-writer of the Regex-Searching writeup, we =
think
that with a bit of massaging of the existing code, defining meaningful =
#reg_desc
methods on Array, Class, Hash, and Object could get a good part of the =
way there.

>> class Class
>>   alias_method :reg_desc, :name
>>   end
=3D> Class

>> class Object
>>   def reg_desc
>>     class.reg_desc
>>     end
>>   end
=3D> nil

>> ObjectRegex.new('Fixnum String+ Regexp?').all_matches([1, 'hi', 2, 3, =
4, 'world', 'there', /abc/])
=3D> [[1, "hi"], [4, "world", "there", /abc/]]

The syntax is a bit restrictive in the current version of object_regex, =
but I came up with this
quickly for tuple searching:

>> class Array
>>   def reg_desc
>>     'Array_' + map(&:reg_desc).uniq.join('_')+'_'
>>     end
>>   end
=3D> nil

>> ObjectRegex.new('Array_String_Fixnum_+').match([ ['string', /regex/], =
['string2', 1], ['string3', 3], ['string4'] ])
=3D> [["string2", 1], ["string3", 3]]

I used a cautiously restrictive regex for picking the tokens out of the =
input pattern, but things like standard generics
syntax (Array<String>) could be possible.

On Jan 31, 2011, at 9:15 PM, J=F6rg W Mittag wrote:

> What I *really* would like to see is the union of pattern matching and
> Regexps, ranging over arbitrary types. Unfortunately, I don't have the
> slightest idea what that would like.