26
def number_of_captures
27
Regexp.new("|#{source}").match('').captures.length
31
options & MULTILINE == MULTILINE
35
def optionalize(pattern)
36
case unoptionalize(pattern)
37
when /\A(.|\(.*\))\Z/ then "#{pattern}?"
38
else "(?:#{pattern})?"
42
def unoptionalize(pattern)
43
[/\A\(\?:(.*)\)\?\Z/, /\A(.|\(.*\))\?\Z/].each do |regexp|
44
return $1 if regexp =~ pattern