116 lines
		
	
	
		
			3.3 KiB
		
	
	
	
		
			C#
		
	
	
		
		
			
		
	
	
			116 lines
		
	
	
		
			3.3 KiB
		
	
	
	
		
			C#
		
	
	
| 
								 | 
							
								namespace Guru.Editor
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
								    using System;
							 | 
						||
| 
								 | 
							
								    using System.Collections.Generic;
							 | 
						||
| 
								 | 
							
								    using System.IO;
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    public class EaseConfigFile
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								        private Dictionary<string, string> _dataDict;
							 | 
						||
| 
								 | 
							
								        private string _filePath;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        protected bool ReadFile(string path)
							 | 
						||
| 
								 | 
							
								        {
							 | 
						||
| 
								 | 
							
								            _filePath = path;
							 | 
						||
| 
								 | 
							
								            
							 | 
						||
| 
								 | 
							
								            if (File.Exists(path))
							 | 
						||
| 
								 | 
							
								            {
							 | 
						||
| 
								 | 
							
								                var lines = File.ReadAllLines(path);
							 | 
						||
| 
								 | 
							
								                int len = lines.Length;
							 | 
						||
| 
								 | 
							
								                _dataDict = new Dictionary<string, string>(len);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								                string key = "";
							 | 
						||
| 
								 | 
							
								                string value = "";
							 | 
						||
| 
								 | 
							
								                
							 | 
						||
| 
								 | 
							
								                for (int i=0; i< len; i++)
							 | 
						||
| 
								 | 
							
								                {
							 | 
						||
| 
								 | 
							
								                    var line = lines[i];
							 | 
						||
| 
								 | 
							
								                    if (line.Contains("="))
							 | 
						||
| 
								 | 
							
								                    {
							 | 
						||
| 
								 | 
							
								                        key = "";
							 | 
						||
| 
								 | 
							
								                        value = "";
							 | 
						||
| 
								 | 
							
								                        var kv = line.Split('=');
							 | 
						||
| 
								 | 
							
								                        if(kv.Length > 0) key = kv[0];
							 | 
						||
| 
								 | 
							
								                        if(kv.Length > 1) value = kv[1];
							 | 
						||
| 
								 | 
							
								                        if (!string.IsNullOrEmpty(key) && !string.IsNullOrEmpty(value))
							 | 
						||
| 
								 | 
							
								                        {
							 | 
						||
| 
								 | 
							
								                            _dataDict[key] = value;
							 | 
						||
| 
								 | 
							
								                        }
							 | 
						||
| 
								 | 
							
								                    }
							 | 
						||
| 
								 | 
							
								                }
							 | 
						||
| 
								 | 
							
								                return true;
							 | 
						||
| 
								 | 
							
								            }
							 | 
						||
| 
								 | 
							
								            
							 | 
						||
| 
								 | 
							
								            _dataDict = new Dictionary<string, string>(10);
							 | 
						||
| 
								 | 
							
								            var dir = Directory.GetParent(path);
							 | 
						||
| 
								 | 
							
								            if(dir is { Exists: false }) dir.Create();
							 | 
						||
| 
								 | 
							
								            return false;
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        public void Save()
							 | 
						||
| 
								 | 
							
								        {
							 | 
						||
| 
								 | 
							
								            if (_dataDict == null || _dataDict.Count < 1) return;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								            List<string> lines = new List<string>(_dataDict.Count);
							 | 
						||
| 
								 | 
							
								            foreach (var key in _dataDict.Keys)
							 | 
						||
| 
								 | 
							
								            {
							 | 
						||
| 
								 | 
							
								                lines.Add($"{key}={_dataDict[key].ToString()}");
							 | 
						||
| 
								 | 
							
								            }
							 | 
						||
| 
								 | 
							
								            
							 | 
						||
| 
								 | 
							
								            if(!string.IsNullOrEmpty(_filePath))
							 | 
						||
| 
								 | 
							
								                File.WriteAllLines(_filePath, lines);
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								        
							 | 
						||
| 
								 | 
							
								        public void Set(string key, object value)
							 | 
						||
| 
								 | 
							
								        {
							 | 
						||
| 
								 | 
							
								            if (_dataDict == null) _dataDict = new Dictionary<string, string>(10);
							 | 
						||
| 
								 | 
							
								            _dataDict[key] = value.ToString();
							 | 
						||
| 
								 | 
							
								            Save();
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        public string Get(string key) => _dataDict.ContainsKey(key) ? _dataDict[key] : "";
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        public bool TryGet(string key, out string value)
							 | 
						||
| 
								 | 
							
								        {
							 | 
						||
| 
								 | 
							
								            value = "";
							 | 
						||
| 
								 | 
							
								            return _dataDict?.TryGetValue(key, out value) ?? false;
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        public bool GetBool(string key, bool defaultVal = false)
							 | 
						||
| 
								 | 
							
								        {
							 | 
						||
| 
								 | 
							
								            if (TryGet(key, out var str))
							 | 
						||
| 
								 | 
							
								            {
							 | 
						||
| 
								 | 
							
								                return (str.ToLower() == "true" || str == "1");
							 | 
						||
| 
								 | 
							
								            }
							 | 
						||
| 
								 | 
							
								            return defaultVal;
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								        
							 | 
						||
| 
								 | 
							
								        
							 | 
						||
| 
								 | 
							
								        public int GetInt(string key, int defaultVal = 0)
							 | 
						||
| 
								 | 
							
								        {
							 | 
						||
| 
								 | 
							
								            if (TryGet(key, out var str))
							 | 
						||
| 
								 | 
							
								            {
							 | 
						||
| 
								 | 
							
								                var inVal = 0;
							 | 
						||
| 
								 | 
							
								                if (int.TryParse(str, out inVal))
							 | 
						||
| 
								 | 
							
								                {
							 | 
						||
| 
								 | 
							
								                    return inVal;
							 | 
						||
| 
								 | 
							
								                }
							 | 
						||
| 
								 | 
							
								            }
							 | 
						||
| 
								 | 
							
								            return defaultVal;
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								        
							 | 
						||
| 
								 | 
							
								        public float GetFloat(string key, float defaultVal = 0)
							 | 
						||
| 
								 | 
							
								        {
							 | 
						||
| 
								 | 
							
								            if (TryGet(key, out var str))
							 | 
						||
| 
								 | 
							
								            {
							 | 
						||
| 
								 | 
							
								                float val = 0;
							 | 
						||
| 
								 | 
							
								                if (float.TryParse(str, out val))
							 | 
						||
| 
								 | 
							
								                {
							 | 
						||
| 
								 | 
							
								                    return val;
							 | 
						||
| 
								 | 
							
								                }
							 | 
						||
| 
								 | 
							
								            }
							 | 
						||
| 
								 | 
							
								            return defaultVal;
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								        
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								}
							 |