A class library to read or modify BearML config file simply.
BearML is an original markup language. Language detail: Wiki
BearML version 5.0 does not compatible with version 3.0.
config.txt
a literal value: @
Hello.
Goodbye.
|
# support key aliases
[obj|weather]
weather object: $
Time: 12:10:05
Temperature: 40.2
> block <
a tuple:
- apple
- $
price: $1.5
color: red
# support nested block
> sub block <
sub key: 1.234
using BearMarkupLanguage.Serialization;
using SerializableAttribute = BearMarkupLanguage.Serialization.SerializableAttribute;
[Serializable]
class Weather
{
public TimeSpan Time { get; set; }
public double Temperature { get; set; }
[IgnoreSerialization]
public string? Description { get; set; }
}
var ml = new BearML("config.txt");
var literal = ml.GetValue<string>("a literal value");
var weather = ml.GetValue<Weather>("weather");
var tuple = ml.GetValue<(string, Dictionary<string, string>)>("block", "a tuple");
var key = ml.GetValue<double>(new[] { "block", "sub block" }, "sub key");
config before changes
value: 10.1
ml.ChangeValue("value", 20.6);
config after changes
value: 20.6
ml.AddKeyValue("list", new List<double[]>
{
new[] { 1.1, 2.2 },
new[] { 3.3, 4.4 }
});
ml.AddKeyValue("dic", new Dictionary<int, Weather>
{
{0, new Weather{Temperature = 12} },
{1, new Weather{Temperature = 32, Time = new TimeSpan(12,10,15)} }
});
config file
list:
-
- 1.1
- 2.2
-
- 3.3
- 4.4
dic: $
0: $
Time: 00:00:00
Temperature: 12
1: $
Time: 12:10:15
Temperature: 32
using BearMarkupLanguage.Core;
Format.PrintMode = PrintMode.Compact;
ml.FormatFile();
config file
list:
[["1.1", "2.2"], ["3.3", "4.4"]]
dic:
{"0": {"Time": "00:00:00", "Temperature": "12"}, "1": {"Time": "12:10:15", "Temperature": "32"}}