https://github.com/sandrock/sekvap-dotnet
A simple Key/Value language "Sekvap" implemented for .NET
https://github.com/sandrock/sekvap-dotnet
csharp dataformat dotnet parser
Last synced: 3 months ago
JSON representation
A simple Key/Value language "Sekvap" implemented for .NET
- Host: GitHub
- URL: https://github.com/sandrock/sekvap-dotnet
- Owner: sandrock
- License: lgpl-3.0
- Created: 2016-06-20T07:49:09.000Z (almost 9 years ago)
- Default Branch: master
- Last Pushed: 2023-02-20T08:24:22.000Z (over 2 years ago)
- Last Synced: 2025-03-08T19:37:11.162Z (3 months ago)
- Topics: csharp, dataformat, dotnet, parser
- Language: C#
- Size: 88.9 KB
- Stars: 1
- Watchers: 1
- Forks: 0
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Sekvap-dotnet

A simple Key/Value language "Sekvap" implemented for .NET. [Nuget.org/SrkSekvap/](https://www.nuget.org/packages/SrkSekvap/)
See also: [Sekvap-java](https://github.com/sandrock/Sekvap-java/)
This thing converts this kind of strings into a `IList>`.
```
Main value;Key1=Value 1;Key2=Value 2;Key2=Value 2 again;Data Source=myServerAddress;Initial Catalog=myDataBase;Integrated Security=SSPI;User ID=myDomain\myUsername;Password=myPassword;
```This unit test will help you understand how it works:
```
[TestMethod]
public void SimpleEmptyEqualValue_PlusTwoKevap()
{
var lang = new SekvapLanguage();
var parts = new string[]
{
"hello world",
";", "Name", "=",
";", "Foo", "=", "Bar",
};
string input = string.Join(string.Empty, parts); // "hello world;Name=;Foo=Bar"
var result = lang.Parse(input);
Assert.IsNotNull(result);
Assert.AreEqual(3, result.Count);
int i = -1;Assert.AreEqual("Value", result[++i].Key); // result[0].Key = "Value"
Assert.AreEqual(parts[0], result[i].Value); // result[0].Value = "hello world"Assert.AreEqual(parts[2], result[++i].Key); // result[1].Key = "Name"
Assert.AreEqual(string.Empty, result[i].Value); // result[1].Value = ""Assert.AreEqual(parts[5], result[++i].Key); // result[2].Key = "Foo"
Assert.AreEqual(parts[7], result[i].Value); // result[2].Value = "Bar"
}
```You may look at the [other tests](src/SrkSekvap.Tests/SekvapLanguageTests.cs).
Why Sekvap?
--------------Sekvap is easy to read, easy to parse and easy to store.
Sekvap is lighter than JSON or XML. It does not provide any depth though.
You can parse .net connection strings with it.
Install
--------------[Nuget package: SrkSekvap](https://www.nuget.org/packages/SrkSekvap/)
```
> Install-Package SrkSekvap
```To Do list
--------------- [x] Parse (string to IList<KeyValuePair<string, string>>)
- [x] Serialize (IEnumerable<KeyValuePair<string, string>> to string)
- [x] nuget package [Nuget.org/SrkSekvap/](https://www.nuget.org/packages/SrkSekvap/)
- [ ] Deserialize (string to typed object)
- [ ] Serialize (typed object to string)
- [ ] [Language specifications](Sekvap-Language-Specifications.md)Contribute
--------------Open to contributions via issues and PRs.
Publishing
--------------- Commit
- change assenbly version and nuget version
- write release notes
- make a Release build
- `nuget.exe push -src https://api.nuget.org/v3/index.json -apikey xxx src/SrkSekvap/bin/Release/SrkSekvap.X.X.X.nupkg`