Method: MARCSpec::MultiValueMap#optimize
- Defined in:
- lib/marcspec/multivaluemap.rb
#optimize ⇒ Object
35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 |
# File 'lib/marcspec/multivaluemap.rb', line 35 def optimize @super_regexp = Regexp.union @map.map{|pv| pv[0]} inverted = {} @map.each do |pv| inverted[pv[1]] ||= [] inverted[pv[1]] << pv[0] end inverted.each_pair do |vals, patterns| next unless patterns.size > 1 newpat = Regexp.union patterns patterns.each do |p| @map.delete_if{|pv| p == pv[0]} end @map << [newpat, vals] end end |