Esempio n. 1
0
        private void LoadLocationFiles(FileSource source, TzdbDatabase database)
        {
            if (!source.Contains(Iso3166TabFile))
            {
                return;
            }
            var iso3166 = source.ReadLines(Iso3166TabFile)
                          .Where(line => line != "" && !line.StartsWith("#"))
                          .Select(line => line.Split('\t'))
                          .ToList();

            if (source.Contains(ZoneTabFile))
            {
                var iso3166Dict = iso3166.ToDictionary(bits => bits[0], bits => bits[1]);
                database.ZoneLocations = source.ReadLines(ZoneTabFile)
                                         .Where(line => line != "" && !line.StartsWith("#"))
                                         .Select(line => TzdbZoneLocationParser.ParseLocation(line, iso3166Dict))
                                         .ToList();
            }
            if (source.Contains(Zone1970TabFile))
            {
                var iso3166Dict = iso3166.ToDictionary(bits => bits[0], bits => new TzdbZone1970Location.Country(code: bits[0], name: bits[1]));
                database.Zone1970Locations = source.ReadLines(Zone1970TabFile)
                                             .Where(line => line != "" && !line.StartsWith("#"))
                                             .Select(line => TzdbZoneLocationParser.ParseEnhancedLocation(line, iso3166Dict))
                                             .ToList();
            }
        }
        internal TzdbDatabase Compile(string sourceDirectoryName)
        {
            Console.WriteLine("Starting compilation of directory {0}", sourceDirectoryName);
            var    sourceDirectory = new DirectoryInfo(sourceDirectoryName);
            var    fileList        = sourceDirectory.GetFiles().Where(file => !ExcludedFiles.Contains(file.Name));
            string version         = sourceDirectory.Name;
            var    database        = new TzdbDatabase(version);

            ParseAllFiles(fileList, database);
            database.ZoneLocations = TzdbZoneLocationParser.ParseFiles(sourceDirectory);
            return(database);
        }