コード例 #1
0
        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);
        }
コード例 #2
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);
        }
コード例 #3
0
ファイル: HlfParser.cs プロジェクト: yegor-mialyk/FarManager
        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));