deburr.js 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206
  1. exports = function(str) {
  2. return str
  3. .replace(regLatin, function(key) {
  4. return deburredLetters[key];
  5. })
  6. .replace(regComboMark, '');
  7. };
  8. var regComboMark = /[\u0300-\u036f\ufe20-\ufe2f\u20d0-\u20ff]/g;
  9. var regLatin = /[\xc0-\xd6\xd8-\xf6\xf8-\xff\u0100-\u017f]/g;
  10. var deburredLetters = {
  11. À: 'A',
  12. Á: 'A',
  13. Â: 'A',
  14. Ã: 'A',
  15. Ä: 'A',
  16. Å: 'A',
  17. à: 'a',
  18. á: 'a',
  19. â: 'a',
  20. ã: 'a',
  21. ä: 'a',
  22. å: 'a',
  23. Ç: 'C',
  24. ç: 'c',
  25. Ð: 'D',
  26. ð: 'd',
  27. È: 'E',
  28. É: 'E',
  29. Ê: 'E',
  30. Ë: 'E',
  31. è: 'e',
  32. é: 'e',
  33. ê: 'e',
  34. ë: 'e',
  35. Ì: 'I',
  36. Í: 'I',
  37. Î: 'I',
  38. Ï: 'I',
  39. ì: 'i',
  40. í: 'i',
  41. î: 'i',
  42. ï: 'i',
  43. Ñ: 'N',
  44. ñ: 'n',
  45. Ò: 'O',
  46. Ó: 'O',
  47. Ô: 'O',
  48. Õ: 'O',
  49. Ö: 'O',
  50. Ø: 'O',
  51. ò: 'o',
  52. ó: 'o',
  53. ô: 'o',
  54. õ: 'o',
  55. ö: 'o',
  56. ø: 'o',
  57. Ù: 'U',
  58. Ú: 'U',
  59. Û: 'U',
  60. Ü: 'U',
  61. ù: 'u',
  62. ú: 'u',
  63. û: 'u',
  64. ü: 'u',
  65. Ý: 'Y',
  66. ý: 'y',
  67. ÿ: 'y',
  68. Æ: 'Ae',
  69. æ: 'ae',
  70. Þ: 'Th',
  71. þ: 'th',
  72. ß: 'ss',
  73. Ā: 'A',
  74. Ă: 'A',
  75. Ą: 'A',
  76. ā: 'a',
  77. ă: 'a',
  78. ą: 'a',
  79. Ć: 'C',
  80. Ĉ: 'C',
  81. Ċ: 'C',
  82. Č: 'C',
  83. ć: 'c',
  84. ĉ: 'c',
  85. ċ: 'c',
  86. č: 'c',
  87. Ď: 'D',
  88. Đ: 'D',
  89. ď: 'd',
  90. đ: 'd',
  91. Ē: 'E',
  92. Ĕ: 'E',
  93. Ė: 'E',
  94. Ę: 'E',
  95. Ě: 'E',
  96. ē: 'e',
  97. ĕ: 'e',
  98. ė: 'e',
  99. ę: 'e',
  100. ě: 'e',
  101. Ĝ: 'G',
  102. Ğ: 'G',
  103. Ġ: 'G',
  104. Ģ: 'G',
  105. ĝ: 'g',
  106. ğ: 'g',
  107. ġ: 'g',
  108. ģ: 'g',
  109. Ĥ: 'H',
  110. Ħ: 'H',
  111. ĥ: 'h',
  112. ħ: 'h',
  113. Ĩ: 'I',
  114. Ī: 'I',
  115. Ĭ: 'I',
  116. Į: 'I',
  117. İ: 'I',
  118. ĩ: 'i',
  119. ī: 'i',
  120. ĭ: 'i',
  121. į: 'i',
  122. ı: 'i',
  123. Ĵ: 'J',
  124. ĵ: 'j',
  125. Ķ: 'K',
  126. ķ: 'k',
  127. ĸ: 'k',
  128. Ĺ: 'L',
  129. Ļ: 'L',
  130. Ľ: 'L',
  131. Ŀ: 'L',
  132. Ł: 'L',
  133. ĺ: 'l',
  134. ļ: 'l',
  135. ľ: 'l',
  136. ŀ: 'l',
  137. ł: 'l',
  138. Ń: 'N',
  139. Ņ: 'N',
  140. Ň: 'N',
  141. Ŋ: 'N',
  142. ń: 'n',
  143. ņ: 'n',
  144. ň: 'n',
  145. ŋ: 'n',
  146. Ō: 'O',
  147. Ŏ: 'O',
  148. Ő: 'O',
  149. ō: 'o',
  150. ŏ: 'o',
  151. ő: 'o',
  152. Ŕ: 'R',
  153. Ŗ: 'R',
  154. Ř: 'R',
  155. ŕ: 'r',
  156. ŗ: 'r',
  157. ř: 'r',
  158. Ś: 'S',
  159. Ŝ: 'S',
  160. Ş: 'S',
  161. Š: 'S',
  162. ś: 's',
  163. ŝ: 's',
  164. ş: 's',
  165. š: 's',
  166. Ţ: 'T',
  167. Ť: 'T',
  168. Ŧ: 'T',
  169. ţ: 't',
  170. ť: 't',
  171. ŧ: 't',
  172. Ũ: 'U',
  173. Ū: 'U',
  174. Ŭ: 'U',
  175. Ů: 'U',
  176. Ű: 'U',
  177. Ų: 'U',
  178. ũ: 'u',
  179. ū: 'u',
  180. ŭ: 'u',
  181. ů: 'u',
  182. ű: 'u',
  183. ų: 'u',
  184. Ŵ: 'W',
  185. ŵ: 'w',
  186. Ŷ: 'Y',
  187. ŷ: 'y',
  188. Ÿ: 'Y',
  189. Ź: 'Z',
  190. Ż: 'Z',
  191. Ž: 'Z',
  192. ź: 'z',
  193. ż: 'z',
  194. ž: 'z',
  195. IJ: 'IJ',
  196. ij: 'ij',
  197. Œ: 'Oe',
  198. œ: 'oe',
  199. ʼn: "'n",
  200. ſ: 's'
  201. };
  202. module.exports = exports;