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); }