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