Class: Ferret::Utils::MultiMapper

Inherits:
Object
  • Object
show all
Defined in:
ext/r_utils.c

Overview

Summary

A MultiMapper performs a list of mappings from one string to another. You could of course just use gsub to do this but when you are just mapping strings, this is much faster.

Note that MultiMapper is immutable.

Example

mapping = {
  ['à','á','â','ã','ä','å','ā','ă']         => 'a',
  'æ'                                       => 'ae',
  ['ď','đ']                                 => 'd',
  ['ç','ć','č','ĉ','ċ']                     => 'c',
  ['è','é','ê','ë','ē','ę','ě','ĕ','ė',]    => 'e',
  ['ƒ']                                     => 'f',
  ['ĝ','ğ','ġ','ģ']                         => 'g',
  ['ĥ','ħ']                                 => 'h',
  ['ì','ì','í','î','ï','ī','ĩ','ĭ']         => 'i',
  ['į','ı','ij','ĵ']                         => 'j',
  ['ķ','ĸ']                                 => 'k',
  ['ł','ľ','ĺ','ļ','ŀ']                     => 'l',
  ['ñ','ń','ň','ņ','ʼn','ŋ']                 => 'n',
  ['ò','ó','ô','õ','ö','ø','ō','ő','ŏ','ŏ'] => 'o',
  ['œ']                                     => 'oek',
  ['ą']                                     => 'q',
  ['ŕ','ř','ŗ']                             => 'r',
  ['ś','š','ş','ŝ','ș']                     => 's',
  ['ť','ţ','ŧ','ț']                         => 't',
  ['ù','ú','û','ü','ū','ů','ű','ŭ','ũ','ų'] => 'u',
  ['ŵ']                                     => 'w',
  ['ý','ÿ','ŷ']                             => 'y',
  ['ž','ż','ź']                             => 'z'
mapper = MultiMapper.new(mapping)
mapped_string = mapper.map(string)