Cette page donne un exemple de script sous AutoHotkey.
AutoHotkey est un freeware sous windows permettant de créer des macros, des applications, ou de remapper le clavier à volonté.
La version portable est suffisante.
L’exemple suivant permet de créer les pages de flexions en finnois correspondant au modèle {{fi-décl-valo}}
.
Les possibilités du langage d’AutoHotkey étant très supérieures au langage wiki, il serait possible de regrouper tous les modèles de déclinaisons finnoises en un seul.
Pour plus de clarté, j’ai préféré suivre les modèles existants.
Le code se veut simpliste, avec le moins d’astuces possibles. Les mouvements de la souris sont remplacés par des touches de fonction et des tabulations ce qui rend le code facilement portable quelque soit le navigateur utilisé (ici Google Chrome). Seul le nom des fenêtres Windows serait à adapter. Pour obtenir le nom exact de ces fenêtres, un utilitaire d’enregistrement d’actions sous Windows peut être utile comme AutoHotkey ScriptWriter téléchargeable ici
::$fidéclvalo:: IfExist, C:\Documents and Settings\pc\Mes documents\Google Drive\Wiki\ { Fic = C:\Documents and Settings\pc\Mes documents\Google Drive\Wiki\ lieu = Maison } else { Fic = C:\Perso\Google Drive\Wiki\ lieu = Bureau } InputBox, test, test court : c | test long : l | réel : r ? ; Demande si mode test if ( ! test ) test = c first = 1 Sleep 50 sendInput Début : Fichiers dans %Fic% depuis %lieu%{ENTER}{ENTER} Loop, read, %Fic%InputHotkey.txt ; Lecture du fichier en entrée { StringSplit, word_array, A_LoopReadLine , %A_Tab% ; Parse de la ligne lue Pgén2 = l_Pgén2 = p_Pgén2 = gp2 = mot := word_array1 rac := word_array2 clfo := word_array3 clfa := word_array4 if clfa = - clfa = v4 := word_array5 v5 := word_array6 v6 := word_array7 if v6 = - v6 = %v4% p_rac := word_array8 p_clfo := word_array9 p_clfa := word_array10 p_v4 := word_array11 p_v4fa := p_v4 p_v5 := word_array12 p_v6 := word_array13 type := word_array14 gp2 := word_array15 word_array15 = if p_v6 = - p_v6 = %p_v4% p_v6fa := p_v6 ; Traitement de la prononciation du degré zéro de l'alternance vocalique if p_clfa = - { StringRight, last_v, rac, 1 ; récupère la dernière lettre de la racine p_clfa = if last_v = %v4% p_v4fa = ː if last_v = %v6% p_v6fa = ː } if type = a type = adj else if type = n type = nom else type = nom-pr ; SINGULIER ----------------------------------- Sgén = %rac%%clfa%%v4%n l_Sgén := "# ''Génitif singulier de''" l_Sgén2 := "# ''Accusatif I singulier de ''" p_Sgén = ˈ%p_rac%%p_clfa%%p_v4fa%n Spar = %rac%%clfo%%v4%%v5% l_Spar := "# ''Partitif singulier de''" if p_v4 = %p_v5% p_Spar = ˈ%p_rac%%p_clfo%%p_v4%ː else p_Spar = ˈ%p_rac%%p_clfo%%p_v4%%p_v5% Siné = %rac%%clfa%%v4%ss%v5% l_Siné := "# ''Inessif singulier de''" p_Siné = ˈ%p_rac%%p_clfa%%p_v4fa%sː%p_v5% Séla = %rac%%clfa%%v4%st%v5% l_Séla := "# ''Élatif singulier de''" p_Séla = ˈ%p_rac%%p_clfa%%p_v4fa%st%p_v5% Sill = %rac%%clfo%%v4%%v4%n l_Sill := "# ''Illatif singulier de''" p_Sill = ˈ%p_rac%%p_clfo%%p_v4%ːn Sade = %rac%%clfa%%v4%ll%v5% l_Sade := "# ''Adessif singulier de''" p_Sade = ˈ%p_rac%%p_clfa%%p_v4fa%lː%p_v5% Sabl = %rac%%clfa%%v4%lt%v5% l_Sabl := "# ''Ablatif singulier de''" p_Sabl = ˈ%p_rac%%p_clfa%%p_v4fa%lt%p_v5% Sall = %rac%%clfa%%v4%lle l_Sall := "# ''Allatif singulier de''" p_Sall = ˈ%p_rac%%p_clfa%%p_v4fa%lːe Sess = %rac%%clfo%%v4%n%v5% l_Sess := "# ''Essif singulier de''" p_Sess = ˈ%p_rac%%p_clfo%%p_v4%n%p_v5% Stra = %rac%%clfa%%v4%ksi l_Stra := "# ''Translatif singulier de''" p_Stra = ˈ%p_rac%%p_clfa%%p_v4fa%ksi Sabe = %rac%%clfa%%v4%tt%v5% l_Sabe := "# ''Abessif singulier de''" p_Sabe = ˈ%p_rac%%p_clfa%%p_v4fa%tː%p_v5% ; PLURIEL ----------------------------------- Pnom = %rac%%clfa%%v4%t l_Pnom := "# ''Nominatif pluriel de''" l_Pnom2 := "# ''Accusatif pluriel de''" p_Pnom = ˈ%p_rac%%p_clfa%%p_v4fa%t Pgén = %rac%%clfo%%v6%jen l_Pgén := "# ''Génitif pluriel de''" p_Pgén = ˈ%p_rac%%p_clfo%%p_v6%jen if gp2 { Pgén2 = %rac%%clfo%%v4%in l_Pgén2 := "# {{rare|fi}} ''Génitif pluriel de''" p_Pgén2 = ˈ%p_rac%%p_clfo%%p_v4%in } Ppar = %rac%%clfo%%v6%j%v5% l_Ppar := "# ''Partitif pluriel de''" p_Ppar = ˈ%p_rac%%p_clfo%%p_v6%j%p_v5% Pine = %rac%%clfa%%v6%iss%v5% l_Pine := "# ''Inessif pluriel de''" p_Pine = ˈ%p_rac%%p_clfa%%p_v6fa%isː%p_v5% Péla = %rac%%clfa%%v6%ist%v5% l_Péla := "# ''Élatif pluriel de''" p_Péla = ˈ%p_rac%%p_clfa%%p_v6fa%ist%p_v5% Pill = %rac%%clfo%%v6%ihin l_Pill := "# ''Illatif pluriel de''" p_Pill = ˈ%p_rac%%p_clfo%%p_v6%ihin Pade = %rac%%clfa%%v6%ill%v5% l_Pade := "# ''Adessif pluriel de''" p_Pade = ˈ%p_rac%%p_clfa%%p_v6fa%ilː%p_v5% Pabl = %rac%%clfa%%v6%ilt%v5% l_Pabl := "# ''Ablatif pluriel de''" p_Pabl = ˈ%p_rac%%p_clfa%%p_v6fa%ilt%p_v5% Pall = %rac%%clfa%%v6%ille l_Pall := "# ''Allatif pluriel de''" p_Pall = ˈ%p_rac%%p_clfa%%p_v6fa%ilːe Pess = %rac%%clfo%%v6%in%v5% l_Pess := "# ''Essif pluriel de''" p_Pess = ˈ%p_rac%%p_clfo%%p_v6%in%p_v5% Ptra = %rac%%clfa%%v6%iksi l_Ptra := "# ''Translatif pluriel de''" p_Ptra = ˈ%p_rac%%p_clfa%%p_v6fa%iksi Pabe = %rac%%clfa%%v6%itt%v5% l_Pabe := "# ''Abessif pluriel de''" p_Pabe = ˈ%p_rac%%p_clfa%%p_v6fa%itː%p_v5% Pins = %rac%%clfa%%v6%in l_Pins := "# ''Instructif pluriel de''" p_Pins = ˈ%p_rac%%p_clfa%%p_v6fa%in Pcom = %rac%%clfo%%v6%ine- l_Pcom := "# ''Comitatif pluriel de''" l_Pcom2 := ": {{note}} cette forme doit être complétée par un suffixe possessif" p_Pcom = ˈ%p_rac%%p_clfo%%p_v6%ine if ( (test != "l") and (test != "r") ) { send Début : —%word_array1%— {TAB} %type% {TAB} Gp2 : (%gp2%) {ENTER}{ENTER} sendInput Sgén : %Sgén% {TAB} %p_Sgén% + acc I {ENTER}Spar : %Spar% {TAB} %p_Spar%{ENTER}Siné : %Siné% {TAB} %p_Siné%{ENTER} sendInput Séla : %Séla% {TAB} %p_Séla% {ENTER}Sill : %Sill% {TAB} %p_Sill% {ENTER}Sade : %Sade% {TAB} %p_Sade% {ENTER}Sabl : %Sabl% {TAB} %p_Sabl% {ENTER} sendInput Sall : %Sall% {TAB} %p_Sall% {ENTER}Sess : %Sess% {TAB} %p_Sess% {ENTER}Stra : %Stra% {TAB} %p_Stra% {ENTER}Sabe : %Sabe% {TAB} %p_Sabe% {ENTER} SendInput Pnom : %Pnom% {TAB} %p_Pnom% + acc {ENTER}Pgén : %Pgén% {TAB} %p_Pgén% {ENTER}Ppar : %Ppar% {TAB} %p_Ppar% {ENTER}Pine : %Pine% {TAB} %p_Pine% {ENTER} SendInput Péla : %Péla% {TAB} %p_Péla% {ENTER}Pill : %Pill% {TAB} %p_Pill% {ENTER}Pade : %Pade% {TAB} %p_Pade% {ENTER}Pabl : %Pabl% {TAB} %p_Pabl% {ENTER} SendInput Pall : %Pall% {TAB} %p_Pall% {ENTER}Pess : %Pess% {TAB} %p_Pess% {ENTER}Ptra : %Ptra% {TAB} %p_Ptra% {ENTER}Pabe : %Pabe% {TAB} %p_Pabe% {ENTER} SendInput Pins : %Pins% {TAB} %p_Pins% {ENTER}Pcom : %Pcom% {TAB} %p_Pcom% {ENTER}Pgén2 : %Pgén2% {TAB} %p_Pgén2% {ENTER}--------------- {ENTER} } else { l3 = sleep 50 if ( first = "1" ) { first = 0 WinWait, Wiktionnaire - Google Chrome, IfWinNotActive, Wiktionnaire - Google Chrome, , WinActivate, Wiktionnaire - Google Chrome, WinWaitActive, Wiktionnaire - Google Chrome, } } if ( test = "r" ) { FileAppend, %A_Now% Début : ------------------------------- %word_array1% `n, %Fic%fi-décl-valo.log sleep 100 } if ( (test = "l") or (test = "r") ) { page := Sgén , pron := p_Sgén , l1 := l_Sgén , l2 := l_Sgén2 gosub Cré-nom-flex-fi page := Spar , pron := p_Spar , l1 := l_Spar , l2 := "" gosub Cré-nom-flex-fi page := Siné , pron := p_Siné , l1 := l_Siné , l2 := "" gosub Cré-nom-flex-fi page := Séla , pron := p_Séla , l1 := l_Séla , l2 := "" gosub Cré-nom-flex-fi page := Sill , pron := p_Sill , l1 := l_Sill , l2 := "" gosub Cré-nom-flex-fi page := Sade , pron := p_Sade , l1 := l_Sade , l2 := "" gosub Cré-nom-flex-fi page := Sabl , pron := p_Sabl , l1 := l_Sabl , l2 := "" gosub Cré-nom-flex-fi page := Sall , pron := p_Sall , l1 := l_Sall , l2 := "" gosub Cré-nom-flex-fi page := Sess , pron := p_Sess , l1 := l_Sess , l2 := "" gosub Cré-nom-flex-fi page := Stra , pron := p_Stra , l1 := l_Stra , l2 := "" gosub Cré-nom-flex-fi page := Sabe , pron := p_Sabe , l1 := l_Sabe , l2 := "" gosub Cré-nom-flex-fi page := Pnom , pron := p_Pnom , l1 := l_Pnom , l2 := l_Pnom2 gosub Cré-nom-flex-fi page := Pgén , pron := p_Pgén , l1 := l_Pgén , l2 := "" gosub Cré-nom-flex-fi if gp2 { page := Pgén2 , pron := p_Pgén2 , l1 := l_Pgén2 , l2 := "" gosub Cré-nom-flex-fi } page := Ppar , pron := p_Ppar , l1 := l_Ppar , l2 := "" gosub Cré-nom-flex-fi page := Pine , pron := p_Pine , l1 := l_Pine , l2 := "" gosub Cré-nom-flex-fi page := Péla , pron := p_Péla , l1 := l_Péla , l2 := "" gosub Cré-nom-flex-fi page := Pill , pron := p_Pill , l1 := l_Pill , l2 := "" gosub Cré-nom-flex-fi page := Pade , pron := p_Pade , l1 := l_Pade , l2 := "" gosub Cré-nom-flex-fi page := Pabl , pron := p_Pabl , l1 := l_Pabl , l2 := "" gosub Cré-nom-flex-fi page := Pall , pron := p_Pall , l1 := l_Pall , l2 := "" gosub Cré-nom-flex-fi page := Pess , pron := p_Pess , l1 := l_Pess , l2 := "" gosub Cré-nom-flex-fi page := Ptra , pron := p_Ptra , l1 := l_Ptra , l2 := "" gosub Cré-nom-flex-fi page := Pabe , pron := p_Pabe , l1 := l_Pabe , l2 := "" gosub Cré-nom-flex-fi page := Pins , pron := p_Pins , l1 := l_Pins , l2 := "" gosub Cré-nom-flex-fi page := Pcom , pron := p_Pcom , l1 := l_Pcom , l2 := "" , l3 := l_Pcom2 gosub Cré-nom-flex-fi } } return ; Cré-nom-flex-fi: clipboard = ( http://fr.wiktionary.orghttps://fr.wiktionary.org/w/index.php?title=%page%&action=edit&redlink=1 ) sleep 500 send {F6} ; Positionne sur l'URL sleep 500 Send, {CTRLDOWN}v{CTRLUP}{ENTER} ; copie du clipboard WinWait, Création de %page% - Wiktionnaire - Google Chrome, ,5 if ErrorLevel ; si la page existe déjà, on log l'erreur { if ( test = "r" ) { FileAppend, %A_Now% %page% existe déjà `n, %Fic%fi-décl-valo.log } } else ; sinon on crée la page { IfWinNotActive, Création de %page% - Wiktionnaire - Google Chrome, , WinActivate, Création de %page% - Wiktionnaire - Google Chrome, WinWaitActive, Création de %page% - Wiktionnaire - Google Chrome, sleep 1000 Send {TAB} sleep 100 clipboard = ( == {{langue|fi}} == {{-flex-%type%-|fi}} '''%page%''' {{pron|%pron%|fi}} %l1% {{lien|%mot%|fi}}. ) if ( l3 ) { clipboard = ( %clipboard% %l3%. ) } else { if ( l2 ) { clipboard = ( %clipboard% %l2% {{lien|%mot%|fi}}. ) } } sleep 500 send ^v sleep 500 Send {TAB} sleep 500 ; Création du résumé clipboard = ( Création : Flexion créée automatiquement : %l1% ]. ) sleep 500 send ^v sleep 200 if ( test = "r" ) { Send {ENTER} sleep 2000 } } return ;