/[js_locale]/trunk/locale.js
This is repository of my old source code which isn't updated any more. Go to git.rot13.org for current projects!
ViewVC logotype

Contents of /trunk/locale.js

Parent Directory Parent Directory | Revision Log Revision Log


Revision 2 - (show annotations)
Sun Oct 24 20:01:27 2004 UTC (19 years, 5 months ago) by dpavlin
File MIME type: application/javascript
File size: 1739 byte(s)
extracted locale support to separate locale.js file

1
2 // locale in which to sort (basically a alphabet in correct dictionary sort order)
3 var _lc_locale = '_0123456789aAáÁãÃâÂäı¡bBcCçÇèÈæÆdDïÏðÐeEéÉìÌëËêÊfFgGhHiIíÍîÎjJkKlLåŵ¥³£mMnNñÑòÒoOóÓôÔöÖõÕpPqQrRàÀøØsS¶¦ºªß¹©tT»«þÞuUúÚùÙüÜûÛvVwWxXyYýÝzZ¼¬¿¯¾®';
4
5 // produce equivavlent of alphabet in native JavaScript sort order
6 var _lc_native = _lc_locale.split("").sort().join("");
7
8 function lc_debug(msg) {
9 // comment out to disable debug
10 //return;
11 document.write('<div style="color: gray; font-size: small;">'+msg+'</div>');
12 }
13
14 // create character remapping array
15 var _lc_l2n_arr = new Array();
16 var r = 0;
17 for (var i=0; i < _lc_locale.length; i++) {
18 if (_lc_locale.charAt(i) != _lc_native.charAt(i)) {
19 _lc_l2n_arr[_lc_locale.charAt(i)] = _lc_native.charAt(i);
20 r++;
21 }
22 }
23
24 lc_debug(
25 "_lc_native:"+_lc_native+"<br>"+
26 "_lc_locale:"+_lc_locale+"<br>"+
27 "remapped "+r+" characters from table of "+_lc_locale.length+"/"+_lc_native.length+" locale/native characters<br>"
28 );
29
30 // comment out following line to disable caching of locale terms
31 var _lc_cache = new Array();
32
33 // convert string to correct sort order according to locale
34 function _lc(str) {
35 if (_lc_cache && _lc_cache[str]) {
36 return _lc_cache[str];
37 } else {
38 var out = '';
39 for (var i=0; i <= str.length; i++) {
40 var c = str.charAt(i);
41 if (_lc_l2n_arr[c]) {
42 out += _lc_l2n_arr[c];
43 } else {
44 out += c;
45 }
46 }
47 if (_lc_cache) _lc_cache[str] = out;
48 return out;
49 }
50 }
51
52 // sort function with locale support
53 function _lc_sort(a,b) {
54 var a_l = _lc(a);
55 var b_l = _lc(b);
56
57 lc_debug(a+' '+( a_l < b_l ? '<' : ( a_l == b_l ? '==' : '>' ) )+' '+b+' [ '+a_l+' '+b_l+' ]');
58
59 if (a_l < b_l) {
60 return -1;
61 } else if (a_l == b_l) {
62 return 0;
63 } else {
64 return 1;
65 }
66 }
67

  ViewVC Help
Powered by ViewVC 1.1.26