
const articlesApostrophes = {
  'de' : 'd\'',
  'le' : 'l\'',
  'la' : 'l\''
}
export class Grammar {

  static apostrophe(article, word) {
    if (articlesApostrophes[article] && Grammar.startsWithVoyel(word)) {
      return articlesApostrophes[article] + word
    }
    return article + ' ' + word;
  }

  static startsWithVoyel(word) {
    return word.match(/^[aeiouy]/i)
  }

  static toLowerCaseNoAccent(words) {
    return words?.toLowerCase().normalize("NFD").replace(/[\u0300-\u036f]/g, "") ?? words;
  }
  static articleDetermine(genre) {
    switch (genre?.toLowerCase()) {
      case 'f': case 'feminin': return 'la';
      case 'p': case 'pluriel': return 'les';
      default:
      case 'm': case 'masculin': return 'le';
    }
  }
  static articleIndétermine(genre) {
    switch (genre?.toLowerCase()) {
      case 'f': case 'feminin': return 'une';
      case 'p': case 'pluriel': return 'des';
      case 'n': case 'neutre': return 'du'
      default:
      case 'm': case 'masculin': return 'un';
    }
  }
}