1function slugator(string) { 2 var charmap = { 3 // latin 4 'Ã': 'A', 'Ã': 'A', 'Ã': 'A', 'Ã': 'A', 'Ã': 'A', 'à ': 'A', 'Ã': 'AE', 5 'Ã': 'C', 'Ã': 'E', 'Ã': 'E', 'Ã': 'E', 'Ã': 'E', 'Ã': 'I', 'Ã': 'I', 6 'Ã': 'I', 'Ã': 'I', 'Ã': 'D', 'Ã': 'N', 'Ã': 'O', 'Ã': 'O', 'Ã': 'O', 7 'Ã': 'O', 'Ã': 'O', 'Å': 'O', 'Ã': 'O', 'Ã': 'U', 'Ã': 'U', 'Ã': 'U', 8 'Ã': 'U', 'Ű': 'U', 'Ã': 'Y', 'Ã': 'TH', 'Ã': 'ss', 'à ': 'a', 'á': 'a', 9 'â': 'a', 'ã': 'a', 'ä': 'a', 'Ã¥': 'a', 'æ': 'ae', 'ç': 'c', 'è': 'e', 10 'é': 'e', 'ê': 'e', 'ë': 'e', 'ì': 'i', 'Ã': 'i', 'î': 'i', 'ï': 'i', 11 'ð': 'd', 'ñ': 'n', 'ò': 'o', 'ó': 'o', 'ô': 'o', 'õ': 'o', 'ö': 'o', 12 'Å': 'o', 'ø': 'o', 'ù': 'u', 'ú': 'u', 'û': 'u', 'ü': 'u', 'ű': 'u', 13 'ý': 'y', 'þ': 'th', 'ÿ': 'y', 'áº': 'SS', 14 // greek 15 'α': 'a', 'β': 'b', 'γ': 'g', 'δ': 'd', 'ε': 'e', 'ζ': 'z', 'η': 'h', 'θ': '8', 16 'ι': 'i', 'κ': 'k', 'λ': 'l', 'μ': 'm', 'ν': 'n', 'ξ': '3', 'ο': 'o', 'Ï': 'p', 17 'Ï': 'r', 'Ï': 's', 'Ï': 't', 'Ï ': 'y', 'Ï': 'f', 'Ï': 'x', 'Ï': 'ps', 'Ï': 'w', 18 'ά': 'a', 'Î': 'e', 'ί': 'i', 'Ï': 'o', 'Ï': 'y', 'ή': 'h', 'Ï': 'w', 'Ï': 's', 19 'Ï': 'i', 'ΰ': 'y', 'Ï': 'y', 'Î': 'i', 20 'Î': 'A', 'Î': 'B', 'Î': 'G', 'Î': 'D', 'Î': 'E', 'Î': 'Z', 'Î': 'H', 'Î': '8', 21 'Î': 'I', 'Î': 'K', 'Î': 'L', 'Î': 'M', 'Î': 'N', 'Î': '3', 'Î': 'O', 'Î ': 'P', 22 'Ρ': 'R', 'Σ': 'S', 'Τ': 'T', 'Î¥': 'Y', 'Φ': 'F', 'Χ': 'X', 'Ψ': 'PS', 'Ω': 'W', 23 'Î': 'A', 'Î': 'E', 'Î': 'I', 'Î': 'O', 'Î': 'Y', 'Î': 'H', 'Î': 'W', 'Ϊ': 'I', 24 'Ϋ': 'Y', 25 // turkish 26 'Å': 's', 'Å': 'S', 'ı': 'i', 'İ': 'I', 27 'Ä': 'g', 'Ä': 'G', 28 // russian 29 'а': 'a', 'б': 'b', 'в': 'v', 'г': 'g', 'д': 'd', 'е': 'e', 'Ñ': 'yo', 'ж': 'zh', 30 'з': 'z', 'и': 'i', 'й': 'j', 'к': 'k', 'л': 'l', 'м': 'm', 'н': 'n', 'о': 'o', 31 'п': 'p', 'Ñ': 'r', 'Ñ': 's', 'Ñ': 't', 'Ñ': 'u', 'Ñ': 'f', 'Ñ ': 'h', 'Ñ': 'c', 32 'Ñ': 'ch', 'Ñ': 'sh', 'Ñ': 'sh', 'Ñ': 'u', 'Ñ': 'y', 'Ñ': '', 'Ñ': 'e', 'Ñ': 'yu', 33 'Ñ': 'ya', 34 'Ð': 'A', 'Ð': 'B', 'Ð': 'V', 'Ð': 'G', 'Ð': 'D', 'Ð': 'E', 'Ð': 'Yo', 'Ð': 'Zh', 35 'Ð': 'Z', 'Ð': 'I', 'Ð': 'J', 'Ð': 'K', 'Ð': 'L', 'Ð': 'M', 'Ð': 'N', 'Ð': 'O', 36 'Ð': 'P', 'Ð ': 'R', 'С': 'S', 'Т': 'T', 'У': 'U', 'Ф': 'F', 'Ð¥': 'H', 'Ц': 'C', 37 'Ч': 'Ch', 'Ш': 'Sh', 'Щ': 'Sh', 'Ъ': 'U', 'Ы': 'Y', 'Ь': '', 'Ð': 'E', 'Ю': 'Yu', 38 'Я': 'Ya', 39 // ukranian 40 'Ð': 'Ye', 'Ð': 'I', 'Ð': 'Yi', 'Ò': 'G', 'Ñ': 'ye', 'Ñ': 'i', 'Ñ': 'yi', 'Ò': 'g', 41 // czech 42 'Ä': 'c', 'Ä': 'd', 'Ä': 'e', 'Å': 'n', 'Å': 'r', 'Å¡': 's', 'Å¥': 't', 'ů': 'u', 43 'ž': 'z', 'Ä': 'C', 'Ä': 'D', 'Ä': 'E', 'Å': 'N', 'Å': 'R', 'Å ': 'S', 'Ť': 'T', 44 'Å®': 'U', 'Ž': 'Z', 45 // polish 46 'Ä ': 'a', 'Ä': 'c', 'Ä': 'e', 'Å': 'l', 'Å': 'n', 'Å': 's', 'ź': 'z', 47 'ż': 'z', 'Ä': 'A', 'Ä': 'C', 'Ä': 'E', 'Å': 'L', 'Å': 'N', 'Å': 'S', 48 'Ź': 'Z', 'Å»': 'Z', 49 // latvian 50 'Ä': 'a', 'Ä': 'e', 'Ä£': 'g', 'Ä«': 'i', 'Ä·': 'k', 'ļ': 'l', 'Å': 'n', 51 'Å«': 'u', 'Ä': 'A', 'Ä': 'E', 'Ä¢': 'G', 'Ī': 'I', 52 'Ķ': 'K', 'Ä»': 'L', 'Å ': 'N', 'Ū': 'U', 53 // lithuanian 54 'Ä': 'e', 'į': 'i', 'ų': 'u', 'Ä': 'E', 'Ä®': 'I', 'Ų': 'U', 55 // romanian 56 'È': 't', 'È': 'T', 'Å£': 't', 'Å¢': 'T', 'È': 's', 'È': 'S', 'Ä': 'a', 'Ä': 'A', 57 // vietnamese 58 'Ạ': 'A', 'Ả': 'A', 'Ầ': 'A', 'Ấ': 'A', 'Ậ': 'A', 'Ẩ': 'A', 'Ẫ': 'A', 59 'Ằ': 'A', 'Ắ': 'A', 'Ặ': 'A', 'Ẳ': 'A', 'Ẵ': 'A', 'Ẹ': 'E', 'Ẻ': 'E', 60 'Ẽ': 'E', 'á»': 'E', 'Ế': 'E', 'á»': 'E', 'á»': 'E', 'á»': 'E', 'á»': 'I', 61 'á»': 'I', 'Ĩ': 'I', 'á»': 'O', 'á»': 'O', 'á»': 'O', 'á»': 'O', 'á»': 'O', 62 'á»': 'O', 'á»': 'O', 'Æ ': 'O', 'á»': 'O', 'á»': 'O', 'Ợ': 'O', 'á»': 'O', 63 'á» ': 'O', 'Ụ': 'U', 'Ủ': 'U', 'Ũ': 'U', 'Ư': 'U', 'Ừ': 'U', 'Ứ': 'U', 64 'á»°': 'U', 'Ử': 'U', 'á»®': 'U', 'Ỳ': 'Y', 'á»´': 'Y', 'á»¶': 'Y', 'Ỹ': 'Y', 65 'Ä': 'D', 'ạ': 'a', 'ả': 'a', 'ầ': 'a', 'ấ': 'a', 'áº': 'a', 'ẩ': 'a', 66 'ẫ': 'a', 'ằ': 'a', 'ắ': 'a', 'ặ': 'a', 'ẳ': 'a', 'ẵ': 'a', 'ẹ': 'e', 67 'ẻ': 'e', 'ẽ': 'e', 'á»': 'e', 'ế': 'e', 'á»': 'e', 'á»': 'e', 'á» ': 'e', 68 'á»': 'i', 'á»': 'i', 'Ä©': 'i', 'á»': 'o', 'á»': 'o', 'á»': 'o', 'á»': 'o', 69 'á»': 'o', 'á»': 'o', 'á»': 'o', 'Æ¡': 'o', 'á»': 'o', 'á»': 'o', 'ợ': 'o', 70 'á»': 'o', 'ỡ': 'o', 'ụ': 'u', 'á»§': 'u', 'Å©': 'u', 'ư': 'u', 'ừ': 'u', 71 'ứ': 'u', 'á»±': 'u', 'á»': 'u', 'ữ': 'u', 'ỳ': 'y', 'ỵ': 'y', 'á»·': 'y', 72 'ỹ': 'y', 'Ä': 'd', 73 // georgian 74 'á': 'a', 'á': 'b', 'á': 'g', 'á': 'd', 'á': 'e', 'á': 'v', 'á': 'z', 75 'á': 't', 'á': 'i', 'á': 'k', 'á': 'l', 'á': 'm', 'á': 'n', 'á': 'o', 76 'á': 'p', 'á': 'zh', 'á ': 'r', 'á¡': 's', 'á¢': 't', 'á£': 'u', 'á¤': 'f', 77 'á¥': 'q', 'á¦': 'gh', 'á§': 'k', 'á¨': 'sh', 'á©': 'ch', 'áª': 'ts', 'á«': 'dz', 78 'á¬': 'ts', 'á': 'ch', 'á®': 'kh', 'á¯': 'j', 'á°': 'h', 79 // currency 80 'â¬': 'euro', 'â¢': 'cruzeiro', 'â£': 'french franc', '£': 'pound', 81 'â¤': 'lira', 'â¥': 'mill', 'â¦': 'naira', 'â§': 'peseta', 'â¨': 'rupee', 82 'â©': 'won', 'âª': 'new shequel', 'â«': 'dong', 'â': 'kip', 'â®': 'tugrik', 83 'â¯': 'drachma', 'â°': 'penny', 'â±': 'peso', 'â²': 'guarani', 'â³': 'austral', 84 'â´': 'hryvnia', 'âµ': 'cedi', '¢': 'cent', 'Â¥': 'yen', 'å ': 'yuan', 85 'å': 'yen', 'ï·¼': 'rial', 'â ': 'ecu', '¤': 'currency', '฿': 'baht', 86 '$': 'dollar', 'â¹': 'indian rupee', 87 // symbols 88 '©': 'c', 'Å': 'oe', 'Å': 'OE', 'â': 'sum', '®': 'r', 89 'â': 'd', 'Æ': 'f', 'â¢': 'tm', 90 'â ': 'sm', 'â¦': '...', 'Ë': 'o', 'º': 'o', 'ª': 'a', 91 'â': 'delta', 'â': 'infinity', 'â¥': 'love', '&': 'and', '|': 'or', 92 '<': 'less', '>': 'greater', 'Ã': 'x' 93 }; 94 95 string = string.replace(/^\s+|\s+$/g, ''); // trim 96 string = string.toLowerCase(); // lowercase 97 var string2 = ''; 98 for (var char, i = 0, l = string.length; i < l; i++) { 99 char = string[i]; 100 if (charmap[char]) {
101 char = charmap[char]; 102 } 103 string2 += char; 104 } 105 string = string2; 106 string = string.replace(/[^a-z0-9 -_]/g, ''); // remove invalid chars 107 string = string.replace(/[\s_-]+/g, '-'); // swap any length of whitespace, underscore, hyphen characters with a single - 108 string = string.replace(/^-+|-+$/g, ''); // remove leading, trailing - 109 return string; 110}
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.