Yaml 이란?

YAML은 사람이 읽고 쓰기 쉬운 데이터 직렬화 양식 입니다. 이제 많은 분들이 JSON으로 설정파일을 구성하실 텐데요 YAML을 둘러보시고 YAML로 바꿔보시는 것도 추천드립니다.

3개의 좋아요

야멜 저도 파이프라인 때문에 사용하고 있지만 직관적이라고 생각합니다. ㅎㅎ

1개의 좋아요

@dimohy @Vincent

마침 설정파일을 만들어야 해서 방금 적용해봤는데요.

저도 앞으로 적극적으로 써봐야겠습니다. :smile:


그리고 제가 간단하게 사용한 Serialize/Deserialize 부분도 필요하신 분을 위해 아래 남깁니다.
Yaml Serialize/Deserialize C#

using DevFlow.Data;
using DevFlow.Data.Settings;
using System;
using System.IO;
using YamlDotNet.Serialization;
using YamlDotNet.Serialization.NamingConventions;

namespace DevFlow.Windowbase.Flowbase
{
    public class FlowConfig
    {
        public static string WIN_PATH { get; }
        public static string SYS_PATH { get; }
        public static string CFG_PATH { get; }
        public static ConfigModel Config { get; private set; }

        static FlowConfig()
        {
            WIN_PATH = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData);
            SYS_PATH = string.Format(@"{0}\DevFlow\System", WIN_PATH);
            CFG_PATH = string.Format(@"{0}\Config.yaml", SYS_PATH);

            LoadConfigFile();
        }

        private static void LoadConfigFile()
        {
            if (!Directory.Exists(SYS_PATH))
            {
                Directory.CreateDirectory(SYS_PATH);
            }

            if (!File.Exists(CFG_PATH))
            {
                SaveConfig(new ConfigModel());
            }

            var deserializer = new DeserializerBuilder()
              .WithNamingConvention(CamelCaseNamingConvention.Instance)
              .Build();

            Config = deserializer.Deserialize<ConfigModel>(File.ReadAllText(CFG_PATH));
        }

        public static void SaveLanguage(LanguageType lang)
        {
            Config.Language = lang;
            SaveConfig(Config);
        }

        public static void SaveTheme(ThemeType theme)
        {
            Config.Theme = theme;
            SaveConfig(Config);
        }

        public static ConfigModel LoadConfig()
        {
            return Config;
        }

        private static void SaveConfig(ConfigModel config)
        {
            var serializer = new SerializerBuilder()
                .WithNamingConvention(CamelCaseNamingConvention.Instance)
                .Build();

            var yaml = serializer.Serialize(config);

            File.WriteAllText(CFG_PATH, yaml);
        }
    }
}
2개의 좋아요