Done.  Unfortunately, Ruby doesn't have named capture groups until 1.9 :/