コード例 #1
0
ファイル: YamlData.cs プロジェクト: enpel/seedtable
        public static YamlData ReadFromMulti(string name, string directory = ".", string extension = ".yml")
        {
            var named_directory = Path.Combine(directory, name);

            return(new YamlData(
                       YamlData.YamlToData(
                           string.Join("\n", Directory.EnumerateFiles(named_directory, $"*{extension}").Select(file => File.ReadAllText(file)).ToArray())
                           )
                       ));
        }
コード例 #2
0
 private void WriteToSingle(string name, string directory = ".", string extension = ".yml")
 {
     if (!Directory.Exists(directory))
     {
         Directory.CreateDirectory(directory);
     }
     if (extension == null)
     {
         extension = "";
     }
     File.WriteAllText(Path.Combine(directory, name + extension), YamlData.DataToYaml(Data, Format, YamlColumnNames));
 }
コード例 #3
0
ファイル: YamlData.cs プロジェクト: enpel/seedtable
 public void WriteToSingle(string name, string directory = ".", string extension = ".yml", IEnumerable <string> yamlColumnNames = null)
 {
     if (!Directory.Exists(directory))
     {
         Directory.CreateDirectory(directory);
     }
     if (extension == null)
     {
         extension = "";
     }
     File.WriteAllText(Path.Combine(directory, name + extension), YamlData.DataToYaml(data, yamlColumnNames));
 }
コード例 #4
0
        private void WriteToMulti(string name, string directory = ".", string extension = ".yml")
        {
            var named_directory = Path.Combine(directory, name);

            if (!Directory.Exists(directory))
            {
                Directory.CreateDirectory(directory);
            }
            if (!Directory.Exists(named_directory))
            {
                Directory.CreateDirectory(named_directory);
            }
            else if (DeletePrevious)
            {
                foreach (var file in Directory.EnumerateFiles(named_directory, $"*{extension}"))
                {
                    File.Delete(file);
                }
            }
            if (extension == null)
            {
                extension = "";
            }
            if (Format == SeedYamlFormat.Hash)
            {
                foreach (var part in Data.ToSeparatedDictionaryDictionary(PreCut, PostCut, SubdivideFilename))
                {
                    File.WriteAllText(Path.Combine(named_directory, part.Key + extension), YamlData.DataToYaml(part.Value, YamlColumnNames));
                }
            }
            else
            {
                foreach (var part in Data.ToSeparated(PreCut, PostCut, SubdivideFilename))
                {
                    File.WriteAllText(Path.Combine(named_directory, part.Key + extension), YamlData.DataToYaml(part.Value, YamlColumnNames));
                }
            }
        }
コード例 #5
0
        public static YamlData ReadFromSingle(string name, string directory = ".", string extension = ".yml", string keyColumnName = "id")
        {
            var fstream = new FileStream(Path.Combine(directory, name + extension), FileMode.Open);

            return(new YamlData(YamlData.YamlToData(new StreamReader(fstream), keyColumnName)));
        }
コード例 #6
0
        static DateTime SeedToExcelCore(IExcelData excelData, string file, ToOptions options, DateTime startTime, DateTime previousTime)
        {
            Log("  sheets");
            var fileName      = Path.GetFileName(file);
            var sheetsConfig  = new SheetsConfig(options.only, options.ignore, null, null, options.mapping, options.alias);
            var yamlDataCache = new Dictionary <string, YamlData>(); // aliasのため同テーブルはキャッシュする

            foreach (var sheetName in excelData.SheetNames)
            {
                var yamlTableName = sheetsConfig.YamlTableName(fileName, sheetName);
                if (yamlTableName == sheetName)
                {
                    Log($"    {yamlTableName}");
                }
                else
                {
                    Log($"    {yamlTableName} -> {sheetName}");
                }
                if (!sheetsConfig.IsUseSheet(fileName, sheetName, yamlTableName, OnOperation.To))
                {
                    Log("      ignore", "skip");
                    continue;
                }
                var subdivide = sheetsConfig.subdivide(fileName, yamlTableName, OnOperation.To);
                var seedTable = GetSeedTable(excelData, sheetName, options, subdivide);
                if (seedTable.Errors.Count != 0)
                {
                    continue;
                }
                YamlData yamlData = null;
                if (!yamlDataCache.TryGetValue(yamlTableName, out yamlData))
                {
                    try {
                        yamlData = YamlData.ReadFrom(yamlTableName, options.seedInput, options.seedExtension, subdivide.KeyColumnName);
                        yamlDataCache[yamlTableName] = yamlData;
                    } catch (FileNotFoundException exception) {
                        Log("      skip", $"seed file [{exception.FileName}] not found");
                        continue;
                    }
                }
                try {
                    seedTable.DataToExcel(yamlData.Data, options.delete);
                } catch (IdParseException exception) {
                    WriteInfo($"      ERROR: {exception.Message}");
                    throw new CannotContinueException();
                }
                var now = DateTime.Now;
                DurationLog("      write-time", previousTime, now);
                previousTime = now;
            }
            // 数式を再計算して結果をキャッシュする
            if (options.calcFormulas && excelData is EPPlus.ExcelData)
            {
                ((EPPlus.ExcelData)excelData).Calculate();
            }
            if (options.output.Length == 0)
            {
                excelData.Save();
                Log("  write-path", "overwrite");
            }
            else
            {
                var writePath = Path.Combine(options.output, file);
                Log("  write-path", writePath);
                if (!Directory.Exists(options.output))
                {
                    Directory.CreateDirectory(options.output);
                }
                excelData.SaveAs(writePath);
            }
            var end = DateTime.Now;

            DurationLog("  write-time", previousTime, end);
            return(end);
        }
コード例 #7
0
ファイル: YamlData.cs プロジェクト: enpel/seedtable
 public static YamlData ReadFromSingle(string name, string directory = ".", string extension = ".yml")
 {
     return(new YamlData(YamlData.YamlToData(File.ReadAllText(Path.Combine(directory, name + extension)))));
 }
コード例 #8
0
ファイル: YamlData.cs プロジェクト: enpel/seedtable
        public void WriteToMulti(string name, string directory = ".", int pre_cut = 0, int post_cut = 0, string extension = ".yml", IEnumerable <string> yamlColumnNames = null, bool deletePrevious = false)
        {
            var named_directory = Path.Combine(directory, name);

            if (!Directory.Exists(directory))
            {
                Directory.CreateDirectory(directory);
            }
            if (!Directory.Exists(named_directory))
            {
                Directory.CreateDirectory(named_directory);
            }
            else if (deletePrevious)
            {
                foreach (var file in Directory.EnumerateFiles(named_directory, $"*{extension}"))
                {
                    File.Delete(file);
                }
            }
            if (extension == null)
            {
                extension = "";
            }
            foreach (var part in data.ToSeparatedDictionaryDictionary(pre_cut, post_cut))
            {
                File.WriteAllText(Path.Combine(named_directory, part.Key + extension), YamlData.DataToYaml(part.Value, yamlColumnNames));
            }
        }