module Unaccent
def unaccent(str)
def unaccent(str) via_gsub(str) end
def via_each_char(str)
def via_each_char(str) return str if str.ascii_only? res = ''; str.each_char { |c| res << ACCENTMAP.fetch(c, c) }; res end
def via_gsub(str)
def via_gsub(str) return str if str.ascii_only? str.gsub(/[^[:ascii:]]/) { |c| ACCENTMAP.fetch(c, c) } end
def via_scan(str)
def via_scan(str) return str if str.ascii_only? res = ''; str.scan(/./) { |c| res << ACCENTMAP.fetch(c, c) }; res end
def via_split_map(str)
def via_split_map(str) return str if str.ascii_only? str.split(//u).map { |c| ACCENTMAP.fetch(c, c) }.join end