BearMarkupLanguage 5.1.1

dotnet add package BearMarkupLanguage --version 5.1.1
                    
NuGet\Install-Package BearMarkupLanguage -Version 5.1.1
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="BearMarkupLanguage" Version="5.1.1" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="BearMarkupLanguage" Version="5.1.1" />
                    
Directory.Packages.props
<PackageReference Include="BearMarkupLanguage" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add BearMarkupLanguage --version 5.1.1
                    
#r "nuget: BearMarkupLanguage, 5.1.1"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package BearMarkupLanguage@5.1.1
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=BearMarkupLanguage&version=5.1.1
                    
Install as a Cake Addin
#tool nuget:?package=BearMarkupLanguage&version=5.1.1
                    
Install as a Cake Tool

BearMarkupLanguage

A class library to read or modify BearML config file simply.
BearML is an original markup language. Language detail: Wiki

BearML version 5.0 <b>does not</b> compatible with version 3.0. <br>

How to use (part)

Get values from config file

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");

Change values

config before changes

value: 10.1
ml.ChangeValue("value", 20.6);

config after changes

value: 20.6

Add values

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

Change config file's style

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"}}
Product Compatible and additional computed target framework versions.
.NET net6.0 is compatible.  net6.0-android was computed.  net6.0-ios was computed.  net6.0-maccatalyst was computed.  net6.0-macos was computed.  net6.0-tvos was computed.  net6.0-windows was computed.  net7.0 was computed.  net7.0-android was computed.  net7.0-ios was computed.  net7.0-maccatalyst was computed.  net7.0-macos was computed.  net7.0-tvos was computed.  net7.0-windows was computed.  net8.0 was computed.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed.  net9.0 was computed.  net9.0-android was computed.  net9.0-browser was computed.  net9.0-ios was computed.  net9.0-maccatalyst was computed.  net9.0-macos was computed.  net9.0-tvos was computed.  net9.0-windows was computed.  net10.0 was computed.  net10.0-android was computed.  net10.0-browser was computed.  net10.0-ios was computed.  net10.0-maccatalyst was computed.  net10.0-macos was computed.  net10.0-tvos was computed.  net10.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.
  • net6.0

    • No dependencies.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
5.1.1 53 8/31/2025
5.1.0 156 7/9/2025