Jquery.highlight sanskrit.js: Difference between revisions
(New page: /** 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 p...) |
No edit summary |
||
(4 intermediate revisions by the same user not shown) | |||
Line 7: | Line 7: | ||
**/ | **/ | ||
// Dependencies | // Dependencies | ||
document.write('<script type="text/javascript" src="'+$jquery_dir+' | $jquery_dir = '/jquery/'; | ||
document.write('<script type="text/javascript" src="'+$jquery_dir+' | |||
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);