/django/contrib/admin/media/js/urlify.js
https://code.google.com/p/mango-py/ · JavaScript · 140 lines · 129 code · 8 blank · 3 comment · 9 complexity · 11f885692a3b65de7f75581e1c2a5a1c MD5 · raw file
- var LATIN_MAP = {
- 'Ŕ': 'A', 'Á': 'A', 'Â': 'A', 'Ă': 'A', 'Ä': 'A', 'Ĺ': 'A', 'Ć': 'AE', 'Ç':
- 'C', 'Č': 'E', 'É': 'E', 'Ę': 'E', 'Ë': 'E', 'Ě': 'I', 'Í': 'I', 'Î': 'I',
- 'Ď': 'I', 'Đ': 'D', 'Ń': 'N', 'Ň': 'O', 'Ó': 'O', 'Ô': 'O', 'Ő': 'O', 'Ö':
- 'O', '?': 'O', 'Ř': 'O', 'Ů': 'U', 'Ú': 'U', 'Ű': 'U', 'Ü': 'U', '?': 'U',
- 'Ý': 'Y', 'Ţ': 'TH', 'ß': 'ss', 'ŕ':'a', 'á':'a', 'â': 'a', 'ă': 'a', 'ä':
- 'a', 'ĺ': 'a', 'ć': 'ae', 'ç': 'c', 'č': 'e', 'é': 'e', 'ę': 'e', 'ë': 'e',
- 'ě': 'i', 'í': 'i', 'î': 'i', 'ď': 'i', 'đ': 'd', 'ń': 'n', 'ň': 'o', 'ó':
- 'o', 'ô': 'o', 'ő': 'o', 'ö': 'o', '?': 'o', 'ř': 'o', 'ů': 'u', 'ú': 'u',
- 'ű': 'u', 'ü': 'u', '?': 'u', 'ý': 'y', 'ţ': 'th', '˙': 'y'
- }
- var LATIN_SYMBOLS_MAP = {
- 'Š':'(c)'
- }
- var GREEK_MAP = {
- '?':'a', '?':'b', '?':'g', '?':'d', '?':'e', '?':'z', '?':'h', '?':'8',
- '?':'i', '?':'k', '?':'l', '?':'m', '?':'n', '?':'3', '?':'o', '?':'p',
- '?':'r', '?':'s', '?':'t', '?':'y', '?':'f', '?':'x', '?':'ps', '?':'w',
- '?':'a', '?':'e', '?':'i', '?':'o', '?':'y', '?':'h', '?':'w', '?':'s',
- '?':'i', '?':'y', '?':'y', '?':'i',
- '?':'A', '?':'B', '?':'G', '?':'D', '?':'E', '?':'Z', '?':'H', '?':'8',
- '?':'I', '?':'K', '?':'L', '?':'M', '?':'N', '?':'3', '?':'O', '?':'P',
- '?':'R', '?':'S', '?':'T', '?':'Y', '?':'F', '?':'X', '?':'PS', '?':'W',
- '?':'A', '?':'E', '?':'I', '?':'O', '?':'Y', '?':'H', '?':'W', '?':'I',
- '?':'Y'
- }
- var TURKISH_MAP = {
- '?':'s', '?':'S', '?':'i', '?':'I', 'ç':'c', 'Ç':'C', 'ü':'u', 'Ü':'U',
- 'ö':'o', 'Ö':'O', '?':'g', '?':'G'
- }
- var RUSSIAN_MAP = {
- '?':'a', '?':'b', '?':'v', '?':'g', '?':'d', '?':'e', '?':'yo', '?':'zh',
- '?':'z', '?':'i', '?':'j', '?':'k', '?':'l', '?':'m', '?':'n', '?':'o',
- '?':'p', '?':'r', '?':'s', '?':'t', '?':'u', '?':'f', '?':'h', '?':'c',
- '?':'ch', '?':'sh', '?':'sh', '?':'', '?':'y', '?':'', '?':'e', '?':'yu',
- '?':'ya',
- '?':'A', '?':'B', '?':'V', '?':'G', '?':'D', '?':'E', '?':'Yo', '?':'Zh',
- '?':'Z', '?':'I', '?':'J', '?':'K', '?':'L', '?':'M', '?':'N', '?':'O',
- '?':'P', '?':'R', '?':'S', '?':'T', '?':'U', '?':'F', '?':'H', '?':'C',
- '?':'Ch', '?':'Sh', '?':'Sh', '?':'', '?':'Y', '?':'', '?':'E', '?':'Yu',
- '?':'Ya'
- }
- var UKRAINIAN_MAP = {
- '?':'Ye', '?':'I', '?':'Yi', '?':'G', '?':'ye', '?':'i', '?':'yi', '?':'g'
- }
- var CZECH_MAP = {
- '?':'c', '?':'d', '?':'e', '?': 'n', '?':'r', '':'s', '?':'t', '?':'u',
- '':'z', '?':'C', '?':'D', '?':'E', '?': 'N', '?':'R', '':'S', '?':'T',
- '?':'U', '':'Z'
- }
- var POLISH_MAP = {
- '?':'a', '?':'c', '?':'e', '?':'l', '?':'n', 'ó':'o', '?':'s', '?':'z',
- '?':'z', '?':'A', '?':'C', '?':'e', '?':'L', '?':'N', 'Ó':'o', '?':'S',
- '?':'Z', '?':'Z'
- }
- var LATVIAN_MAP = {
- '?':'a', '?':'c', '?':'e', '?':'g', '?':'i', '?':'k', '?':'l', '?':'n',
- '':'s', '?':'u', '':'z', '?':'A', '?':'C', '?':'E', '?':'G', '?':'i',
- '?':'k', '?':'L', '?':'N', '':'S', '?':'u', '':'Z'
- }
- var ALL_DOWNCODE_MAPS=new Array()
- ALL_DOWNCODE_MAPS[0]=LATIN_MAP
- ALL_DOWNCODE_MAPS[1]=LATIN_SYMBOLS_MAP
- ALL_DOWNCODE_MAPS[2]=GREEK_MAP
- ALL_DOWNCODE_MAPS[3]=TURKISH_MAP
- ALL_DOWNCODE_MAPS[4]=RUSSIAN_MAP
- ALL_DOWNCODE_MAPS[5]=UKRAINIAN_MAP
- ALL_DOWNCODE_MAPS[6]=CZECH_MAP
- ALL_DOWNCODE_MAPS[7]=POLISH_MAP
- ALL_DOWNCODE_MAPS[8]=LATVIAN_MAP
- var Downcoder = new Object();
- Downcoder.Initialize = function()
- {
- if (Downcoder.map) // already made
- return ;
- Downcoder.map ={}
- Downcoder.chars = '' ;
- for(var i in ALL_DOWNCODE_MAPS)
- {
- var lookup = ALL_DOWNCODE_MAPS[i]
- for (var c in lookup)
- {
- Downcoder.map[c] = lookup[c] ;
- Downcoder.chars += c ;
- }
- }
- Downcoder.regex = new RegExp('[' + Downcoder.chars + ']|[^' + Downcoder.chars + ']+','g') ;
- }
- downcode= function( slug )
- {
- Downcoder.Initialize() ;
- var downcoded =""
- var pieces = slug.match(Downcoder.regex);
- if(pieces)
- {
- for (var i = 0 ; i < pieces.length ; i++)
- {
- if (pieces[i].length == 1)
- {
- var mapped = Downcoder.map[pieces[i]] ;
- if (mapped != null)
- {
- downcoded+=mapped;
- continue ;
- }
- }
- downcoded+=pieces[i];
- }
- }
- else
- {
- downcoded = slug;
- }
- return downcoded;
- }
- function URLify(s, num_chars) {
- // changes, e.g., "Petty theft" to "petty_theft"
- // remove all these words from the string before urlifying
- s = downcode(s);
- removelist = ["a", "an", "as", "at", "before", "but", "by", "for", "from",
- "is", "in", "into", "like", "of", "off", "on", "onto", "per",
- "since", "than", "the", "this", "that", "to", "up", "via",
- "with"];
- r = new RegExp('\\b(' + removelist.join('|') + ')\\b', 'gi');
- s = s.replace(r, '');
- // if downcode doesn't hit, the char will be stripped here
- s = s.replace(/[^-\w\s]/g, ''); // remove unneeded chars
- s = s.replace(/^\s+|\s+$/g, ''); // trim leading/trailing spaces
- s = s.replace(/[-\s]+/g, '-'); // convert spaces to hyphens
- s = s.toLowerCase(); // convert to lowercase
- return s.substring(0, num_chars);// trim to first num_chars chars
- }