function prelude (token) {
  token = token.toLowerCase()

  let result = ''
  let i = 0

  // special case for i = 0 to avoid '-1' index
  if (token[i] === 'y' && isVowel(token[i + 1])) {
    result += token[i].toUpperCase()
  } else {
    result += token[i]
  }

  for (i = 1; i < token.length; i++) {
    if ((token[i] === 'u' || token[i] === 'i') && isVowel(token[i - 1]) && isVowel(token[i + 1])) {
      result += token[i].toUpperCase()
    } else if (token[i] === 'y' && (isVowel(token[i - 1]) || isVowel(token[i + 1]))) {
      result += token[i].toUpperCase()
    } else if (token[i] === 'u' && token[i - 1] === 'q') {
      result += token[i].toUpperCase()
    } else {
      result += token[i]
    }
  }

  return result
}
Pre-process/prepare words as required by french porter stemmer algorithm
@param  {String} token Word to be prepared
@return {String}       Prepared word