/[drupal]/contributions/modules/urlify/urlify.js
ViewVC logotype

Diff of /contributions/modules/urlify/urlify.js

Parent Directory Parent Directory | Revision Log Revision Log | View Revision Graph Revision Graph | View Patch Patch

revision 1.1.2.2, Sat Sep 29 06:57:45 2007 UTC revision 1.1.2.3, Sat Sep 29 08:24:18 2007 UTC
# Line 1  Line 1 
1    // $Id:$
2  if (Drupal.jsEnabled) {  if (Drupal.jsEnabled) {
3    $(document).ready(function () {    $(document).ready(function () {
4      function URLify(s, num_chars) {      var LATIN_MAP = {
5          'À': 'A', 'Á': 'A', 'Â': 'A', 'Ã': 'A', 'Ä': 'A', 'Å': 'A', 'Æ': 'AE', 'Ç':
6          'C', 'È': 'E', 'É': 'E', 'Ê': 'E', 'Ë': 'E', 'Ì': 'I', 'Í': 'I', 'Î': 'I',
7          'Ï': 'I', 'Ð': 'D', 'Ñ': 'N', 'Ò': 'O', 'Ó': 'O', 'Ô': 'O', 'Õ': 'O', 'Ö':
8          'O', 'Ő': 'O', 'Ø': 'O', 'Ù': 'U', 'Ú': 'U', 'Û': 'U', 'Ü': 'U', 'Ű': 'U',
9          'Ý': 'Y', 'Þ': 'TH', 'ß': 'ss', 'à':'a', 'á':'a', 'â': 'a', 'ã': 'a', 'ä':
10          'a', 'å': 'a', 'æ': 'ae', 'ç': 'c', 'è': 'e', 'é': 'e', 'ê': 'e', 'ë': 'e',
11          'ì': 'i', 'í': 'i', 'î': 'i', 'ï': 'i', 'ð': 'o', 'ñ': 'n', 'ò': 'o', 'ó':
12          'o', 'ô': 'o', 'õ': 'o', 'ö': 'o', 'ő': 'o', 'ø': 'o', 'ù': 'u', 'ú': 'u',
13          'û': 'u', 'ü': 'u', 'ű': 'u', 'ý': 'y', 'þ': 'th', 'ÿ': 'y'
14        };
15    
16        var LATIN_SYMBOLS_MAP = {
17          '©':'(c)'
18        };
19    
20        var GREEK_MAP = {
21          'α':'a', 'β':'b', 'γ':'g', 'δ':'d', 'ε':'e', 'ζ':'z', 'η':'h', 'θ':'8',
22          'ι':'i', 'κ':'k', 'λ':'l', 'μ':'m', 'ν':'n', 'ξ':'3', 'ο':'o', 'π':'p',
23          'ρ':'r', 'σ':'s', 'τ':'t', 'υ':'y', 'φ':'f', 'χ':'x', 'ψ':'ps', 'ω':'w',
24          'ά':'a', 'έ':'e', 'ί':'i', 'ό':'o', 'ύ':'y', 'ή':'h', 'ώ':'w', 'ς':'s',
25          'ϊ':'i', 'ΰ':'y', 'ϋ':'y', 'ΐ':'i',
26          'Α':'A', 'Β':'B', 'Γ':'G', 'Δ':'D', 'Ε':'E', 'Ζ':'Z', 'Η':'H', 'Θ':'8',
27          'Ι':'I', 'Κ':'K', 'Λ':'L', 'Μ':'M', 'Ν':'N', 'Ξ':'3', 'Ο':'O', 'Π':'P',
28          'Ρ':'R', 'Σ':'S', 'Τ':'T', 'Υ':'Y', 'Φ':'F', 'Χ':'X', 'Ψ':'PS', 'Ω':'W',
29          'Ά':'A', 'Έ':'E', 'Ί':'I', 'Ό':'O', 'Ύ':'Y', 'Ή':'H', 'Ώ':'W', 'Ϊ':'I',
30          'Ϋ':'Y'
31        };
32    
33        var TURKISH_MAP = {
34          'ş':'s', 'Ş':'S', 'ı':'i', 'İ':'I', 'ç':'c', 'Ç':'C', 'ü':'u', 'Ü':'U',
35          'ö':'o', 'Ö':'O', 'ğ':'g', 'Ğ':'G'
36        };
37    
38        var RUSSIAN_MAP = {
39          'а':'a', 'б':'b', 'в':'v', 'г':'g', 'д':'d', 'е':'e', 'ё':'yo', 'ж':'zh',
40          'з':'z', 'и':'i', 'й':'j', 'к':'k', 'л':'l', 'м':'m', 'н':'n', 'о':'o',
41          'п':'p', 'р':'r', 'с':'s', 'т':'t', 'у':'u', 'ф':'f', 'х':'h', 'ц':'c',
42          'ч':'ch', 'ш':'sh', 'щ':'sh', 'ъ':'', 'ы':'y', 'ь':'', 'э':'e', 'ю':'yu',
43          'я':'ya',
44          'А':'A', 'Б':'B', 'В':'V', 'Г':'G', 'Д':'D', 'Е':'E', 'Ё':'Yo', 'Ж':'Zh',
45          'З':'Z', 'И':'I', 'Й':'J', 'К':'K', 'Л':'L', 'М':'M', 'Н':'N', 'О':'O',
46          'П':'P', 'Р':'R', 'С':'S', 'Т':'T', 'У':'U', 'Ф':'F', 'Х':'H', 'Ц':'C',
47          'Ч':'Ch', 'Ш':'Sh', 'Щ':'Sh', 'Ъ':'', 'Ы':'Y', 'Ь':'', 'Э':'E', 'Ю':'Yu',
48          'Я':'Ya'
49        };
50    
51        var UKRAINIAN_MAP = {
52          'Є':'Ye', 'І':'I', 'Ї':'Yi', 'Ґ':'G', 'є':'ye', 'і':'i', 'ї':'yi', 'ґ':'g'
53        };
54    
55        var CZECH_MAP = {
56          'č':'c', 'ď':'d', 'ě':'e', 'ň': 'n', 'ř':'r', 'š':'s', 'ť':'t', 'ů':'u',
57          'ž':'z'
58        };
59    
60        var ALL_DOWNCODE_MAPS = new Array();
61        ALL_DOWNCODE_MAPS[0] = LATIN_MAP;
62        ALL_DOWNCODE_MAPS[1] = LATIN_SYMBOLS_MAP;
63        ALL_DOWNCODE_MAPS[2] = GREEK_MAP;
64        ALL_DOWNCODE_MAPS[3] = TURKISH_MAP;
65        ALL_DOWNCODE_MAPS[4] = RUSSIAN_MAP;
66        ALL_DOWNCODE_MAPS[5] = UKRAINIAN_MAP;
67        ALL_DOWNCODE_MAPS[6] = CZECH_MAP;
68    
69        var Downcoder = new Object();
70    
71        Downcoder.Initialize = function() {
72          if (Downcoder.map) // already made
73            return ;
74    
75          Downcoder.map = {};
76          Downcoder.chars = '' ;
77    
78          for(var i in ALL_DOWNCODE_MAPS) {
79            var lookup = ALL_DOWNCODE_MAPS[i];
80            for (var c in lookup) {
81              Downcoder.map[c] = lookup[c] ;
82              Downcoder.chars += c ;
83            }
84          }
85    
86          Downcoder.regex = new RegExp('[' + Downcoder.chars + ']|[^' + Downcoder.chars + ']+','g');
87        }
88    
89        downcode = function( slug ) {
90          Downcoder.Initialize() ;
91          var downcoded = "";
92          var pieces = slug.match(Downcoder.regex);
93          if (pieces) {
94            for (var i = 0 ; i < pieces.length ; i++) {
95              if (pieces[i].length == 1) {
96                var mapped = Downcoder.map[pieces[i]] ;
97                if (mapped != null) {
98                  downcoded += mapped;
99                  continue ;
100                }
101              }
102              downcoded += pieces[i];
103            }
104          }
105          else {
106            downcoded = slug;
107          }
108          return downcoded;
109        };
110        //FIXME: Why doesn't function URLify() works anymore?
111        // The form below has to be used for some reason.
112        URLify = function (s, num_chars) {
113        // changes, e.g., "Petty theft" to "petty_theft"        // changes, e.g., "Petty theft" to "petty_theft"
114        // remove all these words from the string before urlifying        // remove all these words from the string before urlifying
115          s = downcode(s);
116        var removelist = [Drupal.settings.urlify.remove_list];        var removelist = [Drupal.settings.urlify.remove_list];
117        r = new RegExp('\\\b(' + removelist.join('|') + ')\\\b', 'gi');        r = new RegExp('\\\b(' + removelist.join('|') + ')\\\b', 'gi');
118        s = s.replace(r, '');        s = s.replace(r, '');
119        s = s.replace(/[^-A-Z0-9\s]/gi, '');  // remove unneeded chars        // if downcode doesn't hit, the char will be stripped here
120          s = s.replace(/[^-\w\s]/g, '');       // remove unneeded chars
121          //s = s.replace(/[^-A-Z0-9\s]/gi, '');
122        s = s.replace(/^\s+|\s+$/g, '');      // trim leading/trailing spaces        s = s.replace(/^\s+|\s+$/g, '');      // trim leading/trailing spaces
123        s = s.replace(/[-\s]+/g, '-');        // convert spaces to hyphens        s = s.replace(/[-\s]+/g, '-');        // convert spaces to hyphens
124        s = s.toLowerCase();                  // convert to lowercase        s = s.toLowerCase();                  // convert to lowercase

Legend:
Removed from v.1.1.2.2  
changed lines
  Added in v.1.1.2.3

  ViewVC Help
Powered by ViewVC 1.1.2