Skip to content

Instantly share code, notes, and snippets.

@wjandrea
Last active September 1, 2024 22:17
Show Gist options
  • Save wjandrea/ec7a266ff71c802077bbb1ab7a3ab053 to your computer and use it in GitHub Desktop.
Save wjandrea/ec7a266ff71c802077bbb1ab7a3ab053 to your computer and use it in GitHub Desktop.
Tampermonkey script for WordReference French to shorten verb inflection descriptions

Abréger les descriptions des conjugaisons

  • 1, 2, 3 = 1e, 2e, 3e personne
  • sg, pl = singulier, pluriel
  • Temps : si le temps est présent, il n'est pas affiché
  • Mode : si le mode est indicatif, il n'est pas affiché, sauf le présent de l'indicatif

Exemple

raconte

Avant :

Du verbe raconter: (⇒ conjuguer)

  • raconte est:
    • 1e personne du singulier du présent de l'indicatif
    • 3e personne du singulier du présent de l'indicatif
    • 1e personne du singulier du présent du subjonctif
    • 3e personne du singulier du présent du subjonctif
    • 2e personne du singulier du présent de l'impératif
  • raconté est:
    • un participe passé

Après :

Du verbe raconter: (⇒ conjuguer)

  • raconte est:
    • 1sg indicatif
    • 3sg indicatif
    • 1sg subjonctif
    • 3sg subjonctif
    • 2sg impératif
  • raconté est:
    • un participe passé
// ==UserScript==
// @name WR short inflections FR
// @namespace
// @version 0.3.1
// @description Shorten inflection descriptions on WordReference French.
// @author William Andrea (wjandrea)
// @match https://www.wordreference.com/fren/*
// @icon https://www.google.com/s2/favicons?sz=64&domain=wordreference.com
// @grant none
// ==/UserScript==
(function() {
'use strict';
const person_pattern = new RegExp(
[
/(?<person>1|2|3)<sup>e<\/sup> personne/,
// FIXME: Replacing "sg/pl" is kinda janky here.
/ du (?:(?<s0>s)in(?<s1>g)ulier|(?<pl>pl)uriel)/,
].map(r => r.source).join(''),
);
const person_replacement = "$<person>$<s0>$<s1>$<pl>";
const conj_patterns = [
/du (?<_tense>présent) de l'(?<mood>indicatif)/,
/de l'(?<tense>imparfait) de l'(?<_mood>indicatif)/,
/du (?<tense>passé simple) de l'(?<_mood>indicatif)/,
/du (?<tense>futur) de l'(?<_mood>indicatif)/,
/du (?<_tense>présent) du (?<mood>subjonctif)/,
/de l'(?<tense>imparfait) du (?<mood>subjonctif)/,
/du (?<_tense>présent) de l'(?<mood>impératif)/,
/du (?<mood>conditionnel) (?<_tense>présent)/,
];
const conj_replacement = "$<tense> $<mood>";
let inflections = document.querySelectorAll(".inflectionsSection dd");
for (let infl of inflections) {
let ih = infl.innerHTML;
let ih_person = ih.replace(person_pattern, person_replacement);
infl.innerHTML = ih_person;
for (let conj_p of conj_patterns) {
console.debug(`Trying regex: ${conj_p}`);
if (ih_person.match(conj_p)) {
let ih_conj = ih_person.replace(conj_p, conj_replacement);
console.log(`New inflection notation: ${ih_conj}. Was: ${ih}`)
infl.innerHTML = ih_conj;
break
}
}
}
})();
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment