Jquery.highlight sanskrit.js: Difference between revisions
No edit summary  | 
				No edit summary  | 
				||
| (2 intermediate revisions by the same user not shown) | |||
| Line 7: | Line 7: | ||
**/  | **/  | ||
// Dependencies  | // Dependencies  | ||
document.write('<script type="text/javascript" src="'+$jquery_dir+'Unify.js  | $jquery_dir = '/jquery/';  | ||
document.write('<script type="text/javascript" src="'+$jquery_dir+'UniToASCII.js  | |||
document.write('<script type="text/javascript" src="'+$jquery_dir+'Unify.js"></' + 'script>');  | |||
document.write('<script type="text/javascript" src="'+$jquery_dir+'UniToASCII.js"></' + 'script>');  | |||
(function($) {  | (function($) {  | ||
| Line 28: | Line 30: | ||
         key = UniToASCII(key);  |          key = UniToASCII(key);  | ||
       }  |        }  | ||
      html_f = html_1;  | |||
       if(  |       re1 = new RegExp('\\b'+key+'\\b', set_flags);  | ||
       matches=html_2.match(re1);  | |||
       if(matches) {  | |||
        var found=0;  | |||
           '</span>'  |         var indexes=new Array(matches.length);  | ||
        for(var m=0; m < matches.length; m++){  | |||
          found=html_2.substring(0, found).length;  | |||
          indexes[m]=found+html_2.substring(found).search(re1);  | |||
          key1 = '<span class="highlight_terms">'+html_1.substr(indexes[m], key.length)+'</span>';  | |||
           key2 = '<span class="highlight_terms">'+matches[m]+'</span>';  | |||
          len = matches[m].length;  | |||
          a1 = html_1.substring(0, indexes[m]);  | |||
          a2 = html_2.substring(0, indexes[m]);  | |||
          b1 = html_1.substring(a1.length+len);  | |||
          b2 = html_2.substring(a2.length+len);  | |||
          html_1 = a1+key1+b1;  | |||
          html_2 = a2+key2+b2;          | |||
          found=indexes[m]+key2.length;  | |||
         $(this).html(html_1);     |          $(this).html(html_1);     | ||
      }  | |||
       }  |        }  | ||
     })  |      })  | ||
   }  |    }  | ||
/* Hack derived from imatch.js  | |||
  Thanks to imatch.js in http://www.fullposter.com/?1  | |||
*/  | |||
})(jQuery);  | })(jQuery);  | ||
Latest revision as of 11:38, 5 August 2008
/**
  Highlight_sanskrit.js plug-in for jQuery
  This plug-in is used to highlight terms used in every vaniquotes article and to highlight terms passed
  from a vaniquote to a vanisource page.
  Usage: $(elem).highlight_sanskrit('Krsna', { global: false, i: true });
  options are global: boolean(true|false) and i(case insensitive): boolean(true|false). By default they are both true.
**/
// Dependencies
$jquery_dir = '/jquery/';
document.write('<script type="text/javascript" src="'+$jquery_dir+'Unify.js"></' + 'script>');
document.write('<script type="text/javascript" src="'+$jquery_dir+'UniToASCII.js"></' + 'script>');
(function($) {
  jQuery.fn.highlight_sanskrit = function(key, flags) {
    flags = jQuery.extend({
      i: true,
      global: true
    }, flags);
    return this.each(function() {
      var html_1 = $(this).html();
      var html_2 = UniToASCII(html_1);
      var set_flags = '';
      flags.i ? set_flags += 'i':'';
      flags.global ? set_flags += 'g':'';
      if (/ä|é|ü|å|è|ì|ï|ö|ò|ë|ç|à|ù|ÿ|û|Ä|É|Ü|Å|È|Ì|Ñ|Ï|Ö|Ò|Ë|Ç|À|Ù|ß/.test(key)) {
        key = UniToASCII(Unify(key));
      }
      if(/ā|ī|ū|ṛ|ṟ|ṅ|ṣ|ñ|ṭ|ḍ|ṇ|ś|ṁ|ḥ|ḷ|ḻ|Ā|Ī|Ū|Ṛ|Ṟ|Ṣ|Ñ|Ṭ|Ḍ|Ṇ|Ś|Ṁ|Ḥ|Ḷ/.test(key)) {
        key = UniToASCII(key);
      }
      
      html_f = html_1;
      re1 = new RegExp('\\b'+key+'\\b', set_flags);
      matches=html_2.match(re1);
      if(matches) {
        var found=0;
        var indexes=new Array(matches.length);
        for(var m=0; m < matches.length; m++){
          found=html_2.substring(0, found).length;
          indexes[m]=found+html_2.substring(found).search(re1);
          key1 = '<span class="highlight_terms">'+html_1.substr(indexes[m], key.length)+'</span>';
          key2 = '<span class="highlight_terms">'+matches[m]+'</span>';
          len = matches[m].length;
          a1 = html_1.substring(0, indexes[m]);
          a2 = html_2.substring(0, indexes[m]);
          b1 = html_1.substring(a1.length+len);
          b2 = html_2.substring(a2.length+len);
          html_1 = a1+key1+b1;
          html_2 = a2+key2+b2;        
          found=indexes[m]+key2.length;
        $(this).html(html_1);  
      }
      }
    })
  }
/* Hack derived from imatch.js
  Thanks to imatch.js in http://www.fullposter.com/?1
*/
})(jQuery);