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) { var u8buffer = scw + "."; rv = CheckWord(u8buffer, 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 apos = scw.IndexOf('\''); if (apos >= 0) { scw = MakeAllSmall(scw); // conversion may result in string with different len than before MakeAllSmall2 so re-scan if (apos < scw.Length - 1) { scw = StringEx.ConcatSubstring(scw, 0, apos + 1, MakeInitCap(scw.Subslice(apos + 1))); rv = CheckWord(scw, ref resultType, out root); if (rv != null) { return(rv); } scw = MakeInitCap(scw); rv = CheckWord(scw, ref resultType, out root); if (rv != null) { return(rv); } } } if (Affix.CheckSharps && scw.Contains("SS")) { scw = MakeAllSmall(scw); var u8buffer = scw; rv = SpellSharps(ref u8buffer, 0, 0, 0, ref resultType, out root); if (rv == null) { scw = MakeInitCap(scw); rv = SpellSharps(ref scw, 0, 0, 0, ref resultType, out root); } if (abbv != 0 && rv == null) { u8buffer += "."; rv = SpellSharps(ref u8buffer, 0, 0, 0, ref resultType, out root); if (rv == null) { u8buffer = scw + "."; rv = SpellSharps(ref u8buffer, 0, 0, 0, ref resultType, out root); } } } return(rv); }