hqt

Untitled

hqt
Mar 29th, 2018
146
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Ruby 2.09 KB | None | 0 0
  1. # Created by Huynh Quang Thao on 1/3/17.
  2. module AccentHelper
  3.   @@accent_maps = { ['a', 'á', 'à', 'ả', 'ã', 'ạ'] => 'a',
  4.               ['ă', 'ắ', 'ằ', 'ẳ', 'ẵ', 'ặ'] => 'a',
  5.               ['â', 'ấ', 'ầ', 'ẩ', 'ẫ', 'ậ'] => 'a',
  6.               ['e', 'é', 'è', 'ẻ', 'ẽ', 'ẹ'] => 'e',
  7.               ['ê', 'ế', 'ề', 'ể', 'ễ', 'ệ'] => 'e',
  8.               ['i', 'í', 'ì', 'ỉ', 'ĩ', 'ị'] => 'i',
  9.               ['y', 'ý', 'ỳ', 'ỷ', 'ỹ', 'ỵ'] => 'y',
  10.               ['o', 'ó', 'ò', 'ỏ', 'õ', 'ọ'] => 'o',
  11.               ['ô', 'ố', 'ồ', 'ổ', 'ỗ', 'ộ'] => 'o',
  12.               ['ơ', 'ớ', 'ờ', 'ở', 'ỡ', 'ợ'] => 'o',
  13.               ['u', 'ú', 'ù', 'ủ', 'ữ', 'ụ'] => 'u',
  14.               ['ư', 'ứ', 'ừ', 'ử', 'ữ', 'ự'] => 'u',
  15.               ['d', 'đ'] => 'd',
  16.  
  17.               ['A', 'Á', 'À', 'Ả', 'Ã', 'Ạ'] => 'A',
  18.               ['Ă', 'Ắ', 'Ằ', 'Ẳ', 'Ẵ', 'Ặ'] => 'A',
  19.               ['Â', 'Ấ', 'Ầ', 'Ẩ', 'Ẫ', 'Ậ'] => 'A',
  20.               ['E', 'É', 'È', 'Ẻ', 'Ẽ', 'Ẹ'] => 'E',
  21.               ['Ê', 'Ế', 'Ề', 'Ể', 'Ễ', 'Ệ'] => 'E',
  22.               ['I', 'Í', 'Ì', 'Ỉ', 'Ĩ', 'Ị'] => 'I',
  23.               ['Y', 'Ý', 'Ỳ', 'Ỷ', 'Ỹ', 'Ỵ'] => 'Y',
  24.               ['O', 'Ó', 'Ò', 'Ỏ', 'Õ', 'Ọ'] => 'O',
  25.               ['Ô', 'Ố', 'Ồ', 'Ổ', 'Ỗ', 'Ộ'] => 'O',
  26.               ['Ơ', 'Ớ', 'Ờ', 'Ở', 'Ỡ', 'Ợ'] => 'O',
  27.               ['U', 'Ú', 'Ù', 'Ủ', 'Ũ', 'Ụ'] => 'U',
  28.               ['Ư', 'Ứ', 'Ừ', 'Ử', 'Ữ', 'Ự'] => 'U',
  29.               ['D', 'Đ'] => 'D'
  30.  
  31.   }
  32.  
  33.   def accent_map
  34.     @@map ||= {}
  35.  
  36.     return @@map if @@map.length > 0
  37.  
  38.     @@accent_maps.each do |accents, ascii|
  39.       accents.each do |accent|
  40.         @@map[accent] = ascii
  41.       end
  42.     end
  43.  
  44.     @@map
  45.   end
  46.  
  47.   def remove_accent(str)
  48.     return nil if str.nil?
  49.  
  50.     res = ''
  51.     str.each_char do |char|
  52.       substitute = accent_map[char]
  53.       res += substitute.nil? ? str[char] : substitute
  54.     end
  55.  
  56.     res.gsub(/[^\w\d\s]/, '')
  57.   end
  58. end
Add Comment
Please, Sign In to add comment