private static bool ValidateDirectory( DirectoryInfo directory, string masterLanguage, Regex languageFilter, ProcessingOptions options) { var engHlfFile = directory.EnumerateFiles($@"*{masterLanguage}.hlf.*").SingleOrDefault(); if (engHlfFile == default) { $"Could not find {masterLanguage}.hlf file in {directory.Name}. Skippng.".Trace(printSeparator: true); return(true); } if (options.IsVerbose()) { $"Validating directory {directory.Name}...".Trace(printSeparator: true); } var engHlf = ParseAndPrintHlf(engHlfFile.FullName, options); if (engHlf == default) { $"Errors parsing {engHlfFile.Name}. Exiting.".Trace(); return(false); } return(directory .EnumerateFiles(@"*.hlf.*").Where(fi => fi.Name != engHlf.HlfName && languageFilter.Match(fi.Name).Success) .Aggregate(0, (issues, lngHlfFile) => issues += CompareHlf(engHlf, lngHlfFile, options) ? 0 : 1) == 0); }
public bool Compare() { if (Options.IsVerbose()) { $"Comparing {EngHlf.HlfName} and {LngHlf.HlfName}...".Trace(); } var result = true; if (!ComparePrologue()) { result = false; } if (!CompareAliases()) { result = false; } if (!CompareTopics()) { result = false; } if (!CompareParagraphs()) { result = false; } if (!result) { $"*** Issues in {LngHlf.HlfName}".Trace(); } return(result); }
public HlfParser(string hlfPath, ProcessingOptions options) { Hlf = new Hlf(Path.GetFileName(hlfPath)); if (options.IsVerbose()) { $"Parsing {Hlf.HlfName}...".Trace(); } Parser parser = Start; Token token = new Token(); foreach (var line in File.ReadLines(hlfPath)) { token = new Token(line, token); token = ValidateToken(token); parser = parser(token); } parser(new Token(default, token));