Jump to content

User:Visarga/monobook.js

From Wikipedia, the free encyclopedia
This is an old revision of this page, as edited by Visarga (talk | contribs) at 22:52, 11 January 2008. The present address (URL) is a permanent link to this revision, which may differ significantly from the current revision.
Note: After saving, you have to bypass your browser's cache to see the changes. Google Chrome, Firefox, Microsoft Edge and Safari: Hold down the ⇧ Shift key and click the Reload toolbar button. For details and instructions about other browsers, see Wikipedia:Bypass your cache.
//TODO - improvements
//- optimize speed - don't use regexes, extract the last word with substring()
//- optimize size - declare correct spellings like this w('Śiva,Śakti,...');
//  - automatically deduce the non-diacritics correspondent
//- matching to be case insensitive, preserve case for the first letter
//- auto build dictionary in a webpage
//  - detect all diacritic words from the textarea, add to dictionary

var c;

var vLetters=new Array('ā|ā','Ā|Ā','ū|ū','ū|ū','ī|ī','Ī|Ī','ḷ|ḷ','Ḷ|Ḷ','ṃ|ṃ','Ṃ|Ṃ','ḥ|ḥ','Ḥ|Ḥ',"Ś|Ś","ś|ś",'ṣ|ṣ','Ṣ|Ṣ','ṇ|ṇ','Ṇ|Ṇ','ñ|ñ','Ñ|Ñ','ṭ|ṭ','Ṭ|Ṭ','ḍ|ḍ','Ḍ|Ḍ','ṝ|ṝ','Ṝ|Ṝ','Ḹ|Ḹ','ḹ|ḹ');
var sLetters='';
var Letters=[];
for (c=0; c<vLetters.length; c++) { 
    var vLine=vLetters[c].split('|');
    if (sLetters != '') { sLetters=sLetters+'|'; }
    sLetters=sLetters+vLine[0];
    Letters[vLine[0]]=vLine[1];
    }
var rxLetters=new RegExp('('+sLetters+')', "ig");

var vWords=new Array(
'Siva|Śiva','tantraloka|tantrāloka','Sakti|Śakti','Saivism|Śaivism','sakti|śakti','vivarana|vivaraṇa','para-trisika|parā-trīśikā','kasmir|kaśmir','pratyabhijna|pratyabhijñā','maya|māyā','purusa|puruṣa','anda|aṇḍa','ahamkara|ahaṃkāra','prakasa|prakāśa','prakrti|prakṛti','vidya|vidyā','prithvi|pṛithvī','siva|śiva','vak|vāk','kala|kāla',
'jnana|jñāna','Isvara|Īśvara','sadasiva|sadāśiva','kancukas|kañcukas','Ananda|Ānanda','sutra|sūtra','raga|rāga','isvara|īśvara','Sastra|Śāstra','Sambhunatha|Śambhunātha','vayu|vāyu','samkhya|sāṃkhya','payu|pāyu','kundalini|kuṇḍalinī','kriya|kriyā','bhatta|bhaṭṭa','anu|aṇu','suddha|śuddha','Akasa|Ākāśa','Saktipat|Śaktipāt',
'spanda-karikas|spanda-kārikās','paravak|pārāvak','pani|pāni','pasu|paśu','narayana|nārāyaṇa','mahabhutas|mahābhūtas','karika|kārikā','kala|kalā','iccha|icchā','hrdaya|hṛdaya','vac|vāc','vimarsa|vimarśa','vaikhari|vaikharī','tantrasara|tantrasāra','svatantrya|svātantrya','stavacintamani|stavacintāmaṇi','pratyabhijnahrdayam|pratyabhijñahṛdayam','pratyabhijna|pratyabhijña','para-trisika-vivarana|parā-trīśikā-vivaraṇa','malinivijaya|mālinīvijaya',
'ksemaraja|kṣemarāja','Suddha|Śuddha','akasa|ākāśa','Siva-Sakti|Śiva-Śakti','tanmatras|tanmātras','sparsa|sparśa','somananda|somānanda','pasa|pāśa','pratibha|pratibhā','paramartasra|paramārtasra','madhyama|madhyamā','karma|kārma','kancuka|kañcuka','karna|karṇa','antahkarana|antaḥkaraṇa','amba|ambā','Ṛsi|Ṛṣi','sivopanisad|śivopaniṣad','Sivasutra|Śivasūtra','Agama|Āgama',
'yogini|yoginī','vimarsini|vimarśinī','vijnana|vijñāna','upayah|upāyaḥ','tivra-tivra-saktipata|tīvra-tīvra-śaktipāta','tivra-manda-saktipata|tīvra-manda-śaktipāta','tivra-madhya-saktipata|tīvra-madhya-śaktipāta','srsti|sṛṣṭi','rupa|rūpa','prthvi|pṛthvī','pasianti|paśiantī','paratrisika|parātrīśikā','paramarthasara|paramārthasāra','natyasastra|nāṭyaśāstra','mayiya|māyīya','matrka|mātṛkā','mudra|mudrā','madhya-tivra-saktipata|madhya-tīvra-śaktipāta','madhya-manda-saktipata|madhya-manda-śaktipāta','madhya-madhya-saktipata|madhya-madhya-śaktipāta',
'ksemaraja|kṣemaraja','jnanendriyas|jñānendriyas','jnanam|jnānam','duti|dūtī','bija|bīja','bhutiraja|bhūtirāja','bandhah|bandhaḥ','apara|aparā','aham|ahaṃ','abhinavabharati|abhinavabhāratī','Isvarapratyabhijna-vivrti-vimarsini|Īśvarapratyabhijñā-vivṛti-vimarśini','Isvarapratyabhijna-vimarsini|Īśvarapratyabhijñā-vimarśini','Isvarapratyabhijna|Īśvarapratyabhijñā','Sambhavopaya|Śāmbhavopāya','Saktopaya|Śāktopāya','Sakta|Śākta','Anavopaya|Āṇavopāya','anavamala|āṇavamala','Suddha-vidya|Śuddha-vidyā','Sripurvasastra|Śrīpūrvaśāstra',
'srotra|śrotra','srota|śrota','Srikanthanath|Śrikanthanath','anava|ānava','Anava|Ānava','Anandavardhana|Ānandavardhana','ananda|ānanda','akasic|ākāśic','Sivasaktyavinabhava-stotra|Śivaśaktyavinābhāva-stotra','sivarahasyagama|śivarahasyagama','Sivadrsti|Śivadṛṣṭi','Sivadrstya-locana|Śivadṛṣtyā-locana','Siddhanta|Śiddhānta','agamas|āgamas','abhasana|ābhāsana','abhasa|ābhāsa','sadadhvan|ṣaḍādhvān','Sankara|Śañkara','Sat|Ṣat','Sambhunatha|Śambhunatha',
'saktipata|śaktipāta','Saktipata|Śaktipāta','sakticalana|śakticalana','Saivists|Śaivists','sabda|śabda','Sabda|Śabda','yoginibhu|yoginībhū','yogini-vaktra|yoginī-vaktra','yogesvaridatta|yogeśvaridatta','yogesvar|yogeśvar','vamanatha|vāmanātha','vakyapadiya|vākyapadīya','vyapakatva|vyāpakatva','visuddha|viśuddha','vimarsana|vimarśana','vimala|vimalā','vimalakala|vimalakalā','vilapana|vilāpana','vijnanabhairava|vijñānabhairava','vijnana|vijñana',
'vedanta|vedānta','vatasika|vatasikā','vaisnavas|vaiṣṇavas','upayas|upāyas','unmesa|unmeṣa','ullasa|ullāsa','tivra|tīvra','trisulabija|triśūlābija','tantravatadhanika|tantravaṭadhānikā','tantraraja-tantra|tantrarāja-tantra','tanmatra|tanmātra','sutras|sūtras','samarasya|sāmarasya','susupti|suṣupti','sphurana|sphuraṇa','sphuratta|sphurattā','siddha-yogesvari-mata-tantra|siddha-yogeśvarī-mata-tantra','samskaras|saṃskāras','samskara|saṃskāra','samkoca|saṃkoca',
'samhara|saṃhāra','samhara|saṃhara','sarvakartrtva|sarvakartṛtva','sarvajnatva|sarvajñatva','saivagama|saivāgama','ramadeva|rāmadeva','rudrayamala|rudrayāmala','rudra-yamala-tantra|rudra-yāmala-tantra','rasana|rasanā','rahasyapancadasika|rahasyapañcadaśikā','prthivi|pṛthivi','pata|pāta','purnatva|pūrṇatva','purvatantra|pūrvatantra','purvapancika|pūrvapañcikā','pada|pāda','puryastaka|puryaṣtaka','prakasa-vimarsa|prakāśa-vimarśa','prakirnkavivarana|prakīrṇkavivaraṇa','prakriya|prakriyā',
'pasyanti|paśyanti','paratrisikavivarana|parātrīśikāvivaraṇa','paratrisika-laghuvrtti|parātrīśikā-laghuvṛtti','paratrika|parātrika','parapara|parāpara','paramarsa|parāmarśa','para-sakti|parā-śakti','para-pravesika|parā-prāvesikā','para-apara|parā-aparā','para|parā','paryantapancasika|paryantapañcāśīkā','paramarthadvadasika|paramārthadvādaśikā','paramarthacarca|paramārthacarcā','paramesvara|parameśvara','paramasiva|paramaśiva','padarthapravesa-nirnaya-tika|padārthapraveśa-nirṇaya-ṭīkā','natha|nātha','nitya-sodasika-arnava|nityā-ṣoḍaśika-arṇava','nirnaya|nirṇaya','narasimhagupta|narasiṃhagupta',
'malinivijaya-varttika|mālinīvijayā-varttika','mrgendra|mṛgendra','mula|mulā','moksa|mokṣa','mandalam|maṇḍalam','matravirya|matravīrya','mantresvara|mantreśvara','mantra-mahesvara|mantra-maheśvara','mahadeva|mahādeva','mahabhuta|mahābhūta','mahabhuta|mahābhutā','mahopadesa-vimsatika|mahopadeśa-viṃśatikā','madhyadesa|madhyadeśa','madhuraja|madhurāja','lalitaditya|lalitāditya','laksmasnagupta|lakṣmasṇagupta','laghvi|laghvī','kavyakautukavivarana|kāvyakauṭukavivaraṇa','karikas|kārikās','kara|kāra',
'kalikula|kālīkula','kali|kālī','kalidasa|kālidāsa','ksema|kṣema','kularnava-tantra|kulārṇava-tantra','kathamukha-tilaka|kathāmukha-tilaka','kailasa|kailaśa','jagrat|jāgrat','jnanarnava|jñānārṇava','jnanendriya|jñānendriya','jnanana|jñānana','isvara|iśvara','ichha|ichhā','hrdayam|hṛdayam','heart-bija|heart-bīja','haridasa|haridāsa','ghrana|ghrāṇa','ghatakarpara|ghaṭakarpara','ghata-karpara-kulaka-vivrti|ghaṭa-karpara-kulaka-vivṛti','drsti|dṛṣṭi',
'dhvanyalokalocana|dhvanyālokalocana','dhvanyaloka|dhvanyāloka','devistotravivarana|devīstotravivaraṇa','dehasthadevatacakra-stotra|dehasthadevatācakra-stotra','cit-ananda|cit-ānanda','cit-Ananda|cit-Ānanda','cidananda|cidānanda','camatkara|camatkāra','caksu|cakṣu','bijavasthapana|bījāvasthapāna','brahmanda|brahmāṇḍa','bodhapancadasika|bodhapañcadaśikā','bhedabhedopaya|bhedābhedopāya','bhedabheda|bhedābheda','bhedavada-vidarana|bhedavāda-vidāraṇa','bhattacaryya|bhaṭṭācāryya','bhartrhari|bhartṛhari','bhagavadgitartha-samgraha|bhagavadgītārtha-saṃgraha','bhagavadgita|bhagavadgītā','asvini|aśvini',
'asuddha-vidya|aśuddha-vidyā','avidya|avidyā','asphuta|asphuṭa','anuttarastika|anuttarāṣṭikā','anupaya|anupāya','ahamkara|ahaṃkara','ahamkara|ahamkāra'
);

var sWords='';
var mapWords=[];
for (c=0; c<vWords.length; c++) { 
    var vLine=vWords[c].split('|');
    if (vLine[0].length<3) { continue; }
    if (sWords != '') { sWords=sWords+'|'; }
    sWords=sWords+vLine[0];
    mapWords[vLine[0]]=vLine[1];
    }
var rxWords=new RegExp('('+sWords+')$', "i");

function keyHandler1(event)
{
if (event.keyCode == 32) {
   var tb = document.editform.wpTextbox1;
   var text = tb.value;
   var sel1 = tb.selectionStart;
   var sel2 = tb.selectionEnd;
   var scroll = tb.scrollTop;
   
   var text1=text.substring(0,sel1);
   var text2=text.substring(sel1);
   text1 = text1.replace(rxWords, function ($0, $1) { if (mapWords[$0]) { return mapWords[$0]; } else { return $0; } } );
   text = text1 + text2;

   if (tb.value != text) { 
      tb.value = text;
      tb.setSelectionRange(sel1,sel2);
      tb.scrollTop = scroll;
      }
   }
}

function keyHandler2(event)
{
   var tb = document.editform.wpTextbox1;
   var text = tb.value;
   var sel1 = tb.selectionStart;
   var sel2 = tb.selectionEnd;
   var scroll = tb.scrollTop;
   
   var text1=text.substring(0,sel1);
   var text2=text.substring(sel1);
   text1 = text1.replace(rxLetters, function ($0, $1) { if (mapLetters[$0]) { return mapLetters[$0]; } else { return $0; } } );
   text = text1 + text2;

   if (tb.value != text) { 
      tb.value = text;
      tb.setSelectionRange(sel1,sel2);
      tb.scrollTop = scroll;
      }
}

document.onkeydown = keyHandler1;
document.onkeyup = keyHandler2;