//TODO: We need a public method here to just match a field name against CultureIsoCodeFieldNameMatchExpression /// <summary> /// Returns all index fields that are culture specific (suffixed) /// </summary> /// <param name="index"></param> /// <param name="culture"></param> /// <returns></returns> public static IEnumerable <string> GetCultureFields(this IUmbracoIndex index, string culture) { var allFields = index.GetFields(); // ReSharper disable once LoopCanBeConvertedToQuery foreach (var field in allFields) { var match = CultureIsoCodeFieldNameMatchExpression.Match(field); if (match.Success && match.Groups.Count == 3 && culture.InvariantEquals(match.Groups[2].Value)) { yield return(field); } } }
/// <summary> /// Returns all index fields that are culture specific (suffixed) or invariant /// </summary> /// <param name="index"></param> /// <param name="culture"></param> /// <returns></returns> public static IEnumerable <string> GetCultureAndInvariantFields(this IUmbracoIndex index, string culture) { var allFields = index.GetFields(); // ReSharper disable once LoopCanBeConvertedToQuery foreach (var field in allFields) { var match = CultureIsoCodeFieldNameMatchExpression.Match(field); if (match.Success && culture.InvariantEquals(match.Groups["CultureName"].Value)) { yield return(field); //matches this culture field } else if (!match.Success) { yield return(field); //matches no culture field (invariant) } } }