def collector=(val)
return unless val
case val
when Regexp
return unless val.has_captures?
@regexp = val
when Array
warning "Collector #{val.inspect} is too long, ignoring extra entries" unless val.length <= 2
@regexp = val[0]
@index = val[1] rescue nil
when Hash
raise "Collector #{val.inspect} doesn't have a :regexp key" unless val.has_key?(:regexp)
@regexp = val[:regexp]
@index = val.fetch(:regexp, nil)
end
raise "The regexp of collector #{val.inspect} isn't a Regexp" unless @regexp.kind_of?(Regexp)
raise "The index of collector #{val.inspect} is present but not an integer " if @index and not @index.kind_of?(Fixnum)
end