private WordEntry CheckDetailsAllCap(int abbv, ref string scw, ref SpellCheckResultType resultType, out string root) { resultType |= SpellCheckResultType.OrigCap; var rv = CheckWord(scw, ref resultType, out root); if (rv != null) { return(rv); } if (abbv != 0) { rv = CheckWord(scw + ".", ref resultType, out root); if (rv != null) { return(rv); } } // Spec. prefix handling for Catalan, French, Italian: // prefixes separated by apostrophe (SANT'ELIA -> Sant'+Elia). var textInfo = TextInfo; var apos = scw.IndexOf('\''); if (apos >= 0) { scw = HunspellTextFunctions.MakeAllSmall(scw, textInfo); // conversion may result in string with different len than before MakeAllSmall2 so re-scan if (apos < scw.Length - 1) { scw = StringEx.ConcatString(scw, 0, apos + 1, HunspellTextFunctions.MakeInitCap(scw.Subslice(apos + 1), textInfo)); rv = CheckWord(scw, ref resultType, out root); if (rv != null) { return(rv); } scw = HunspellTextFunctions.MakeInitCap(scw, textInfo); rv = CheckWord(scw, ref resultType, out root); if (rv != null) { return(rv); } } } if (Affix.CheckSharps && scw.Contains("SS")) { scw = HunspellTextFunctions.MakeAllSmall(scw, textInfo); var u8buffer = scw; rv = SpellSharps(ref u8buffer, ref resultType, out root); if (rv == null) { scw = HunspellTextFunctions.MakeInitCap(scw, textInfo); rv = SpellSharps(ref scw, ref resultType, out root); } if (abbv != 0 && rv == null) { u8buffer += "."; rv = SpellSharps(ref u8buffer, ref resultType, out root); if (rv == null) { u8buffer = scw + "."; rv = SpellSharps(ref u8buffer, ref resultType, out root); } } } return(rv); }