docs: function ucwords(string) {
    if (!(string && typeof string === "string")) {
      return string;
    }
    const words = string.split(" ");
  
    const formattedWords = _.map(words, (word) => {
      const wordLength = word.length;
      const lowerWord = word.toLowerCase();
      const loweredWordNoPeriod = lowerWord.replace(".", "").replace(",", "");
      const upperCaseWord = word.toUpperCase();
  
      if (
        word !== upperCaseWord &&
        word !== lowerWord &&
        loweredWordNoPeriod.length > 1
      ) {
        return word;
      }
  
      if (
        _.includes(
          [
            "AL",
            "AK",
            "AS",
            "AZ",
            "AR",
            "CA",
            "CO",
            "CT",
            "DE",
            "DC",
            "FM",
            "FL",
            "GA",
            "GU",
            "HI",
            "ID",
            "IL",
            "IN",
            "IA",
            "KS",
            "KY",
            "LA",
            "ME",
            "MH",
            "MD",
            "MA",
            "MI",
            "MN",
            "MS",
            "MO",
            "MT",
            "NE",
            "NV",
            "NH",
            "NJ",
            "NM",
            "NY",
            "NC",
            "ND",
            "MP",
            "OH",
            "OK",
            "OR",
            "PW",
            "PA",
            "PR",
            "RI",
            "SC",
            "SD",
            "TN",
            "TX",
            "UT",
            "VT",
            "VI",
            "VA",
            "WA",
            "WV",
            "WI",
            "WY",
          ],
          upperCaseWord
        )
      ) {
        return upperCaseWord;
      }
  
      const forced = _.includes(FORCED_WORDS, loweredWordNoPeriod); // strip out periods so st. will match "st"
      if (
        (_.includes(IGNORED_WORDS, lowerWord) || // words we don't want to modify
          (word.match(/[aeiou]/gi) === null && wordLength > 1)) && // acronym without vowels
        !forced
      ) {
        return word;
      }
  
      return lowerWord.replace(
        /(^([a-zA-Z\p{M}]))|([ -][a-zA-Z\p{M}])/g,
        (firstLetter) => {
          // eslint-disable-line
          return firstLetter.toUpperCase();
        }
      );
    });
  
    return formattedWords.join(" ");
  }