public static IEnumerable <DiffInstance> TranslateComparison(IEnumerable <DiffInstance> aDiffs) { foreach (string section in aDiffs.Select(aDiff => aDiff.Section).Distinct()) { IEnumerable <DiffInstance> diffs = aDiffs.Where(aDiff => aDiff.Section == section && aDiff.difference.Length > 0); DiffTranslator translator = TranslatorRegistry.GetTranslators().FirstOrDefault(aTranslator => aTranslator.Section == section); if (translator != null) { foreach (DiffInstance diff in translator.Translate(diffs)) { // Since all translators should be able to translate sections, we do that here. diff.Section = translator.TranslatedSection; yield return(diff); } } else { foreach (DiffInstance diff in diffs) { yield return(diff); } } } }
public static void RegisterTranslator(DiffTranslator aTranslator) { translators.Add(aTranslator); }