{"id":24408057,"url":"https://github.com/sandrock/sekvap-dotnet","last_synced_at":"2026-04-27T06:33:52.019Z","repository":{"id":9297994,"uuid":"61526898","full_name":"sandrock/Sekvap-dotnet","owner":"sandrock","description":"A simple Key/Value language \"Sekvap\" implemented for .NET","archived":false,"fork":false,"pushed_at":"2023-02-20T08:24:22.000Z","size":91,"stargazers_count":1,"open_issues_count":2,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-03-08T19:37:11.162Z","etag":null,"topics":["csharp","dataformat","dotnet","parser"],"latest_commit_sha":null,"homepage":null,"language":"C#","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"lgpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/sandrock.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2016-06-20T07:49:09.000Z","updated_at":"2022-06-23T12:01:06.000Z","dependencies_parsed_at":"2022-09-01T13:32:13.915Z","dependency_job_id":null,"html_url":"https://github.com/sandrock/Sekvap-dotnet","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sandrock%2FSekvap-dotnet","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sandrock%2FSekvap-dotnet/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sandrock%2FSekvap-dotnet/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sandrock%2FSekvap-dotnet/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/sandrock","download_url":"https://codeload.github.com/sandrock/Sekvap-dotnet/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243374210,"owners_count":20280656,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["csharp","dataformat","dotnet","parser"],"created_at":"2025-01-20T05:34:00.449Z","updated_at":"2025-12-29T06:26:30.783Z","avatar_url":"https://github.com/sandrock.png","language":"C#","funding_links":[],"categories":[],"sub_categories":[],"readme":"\r\n# Sekvap-dotnet\r\n\r\n![Sekvap logo](https://raw.githubusercontent.com/sandrock/Sekvap-dotnet/master/res/logo-64.png)\r\n\r\nA simple Key/Value language \"Sekvap\" implemented for .NET. [Nuget.org/SrkSekvap/](https://www.nuget.org/packages/SrkSekvap/)\r\n\r\nSee also: [Sekvap-java](https://github.com/sandrock/Sekvap-java/)\r\n\r\nThis thing converts this kind of strings into a `IList\u003cKeyValuePair\u003cstring, string\u003e\u003e`.\r\n\r\n```\r\nMain value;Key1=Value 1;Key2=Value 2;Key2=Value 2 again;\r\n\r\nData Source=myServerAddress;Initial Catalog=myDataBase;Integrated Security=SSPI;User ID=myDomain\\myUsername;Password=myPassword;\r\n```\r\n\r\nThis unit test will help you understand how it works:\r\n\r\n\u003c!-- language: csharp --\u003e\r\n```\r\n[TestMethod]\r\npublic void SimpleEmptyEqualValue_PlusTwoKevap()\r\n{\r\n    var lang = new SekvapLanguage();\r\n    var parts = new string[]\r\n    {\r\n        \"hello world\",\r\n        \";\", \"Name\", \"=\", \r\n        \";\", \"Foo\", \"=\", \"Bar\",\r\n    };\r\n    string input = string.Join(string.Empty, parts); // \"hello world;Name=;Foo=Bar\"\r\n    var result = lang.Parse(input);\r\n    Assert.IsNotNull(result);\r\n    Assert.AreEqual(3, result.Count);\r\n    int i = -1;\r\n\r\n    Assert.AreEqual(\"Value\", result[++i].Key);      // result[0].Key   = \"Value\"\r\n    Assert.AreEqual(parts[0], result[i].Value);     // result[0].Value = \"hello world\"\r\n\r\n    Assert.AreEqual(parts[2], result[++i].Key);     // result[1].Key   = \"Name\"\r\n    Assert.AreEqual(string.Empty, result[i].Value); // result[1].Value = \"\"\r\n\r\n    Assert.AreEqual(parts[5], result[++i].Key);     // result[2].Key   = \"Foo\"\r\n    Assert.AreEqual(parts[7], result[i].Value);     // result[2].Value = \"Bar\"\r\n}\r\n```\r\n\r\nYou may look at the [other tests](src/SrkSekvap.Tests/SekvapLanguageTests.cs).\r\n\r\nWhy Sekvap?\r\n--------------\r\n\r\nSekvap is easy to read, easy to parse and easy to store.\r\n\r\nSekvap is lighter than JSON or XML. It does not provide any depth though.\r\n\r\nYou can parse .net connection strings with it.\r\n\r\n\r\nInstall\r\n--------------\r\n\r\n[Nuget package: SrkSekvap](https://www.nuget.org/packages/SrkSekvap/)\r\n\r\n```\r\n\u003e Install-Package SrkSekvap\r\n```\r\n\r\n\r\nTo Do list\r\n--------------\r\n\r\n- [x] Parse (string to IList\u0026lt;KeyValuePair\u0026lt;string, string\u003e\u003e)\r\n- [x] Serialize (IEnumerable\u0026lt;KeyValuePair\u0026lt;string, string\u003e\u003e to string)\r\n- [x] nuget package [Nuget.org/SrkSekvap/](https://www.nuget.org/packages/SrkSekvap/)\r\n- [ ] Deserialize (string to typed object)\r\n- [ ] Serialize (typed object to string)\r\n- [ ] [Language specifications](Sekvap-Language-Specifications.md)\r\n\r\n\r\nContribute\r\n--------------\r\n\r\nOpen to contributions via issues and PRs.\r\n\r\n\r\nPublishing\r\n--------------\r\n\r\n- Commit\r\n- change assenbly version and nuget version\r\n- write release notes\r\n- make a Release build\r\n- `nuget.exe push -src https://api.nuget.org/v3/index.json  -apikey xxx  src/SrkSekvap/bin/Release/SrkSekvap.X.X.X.nupkg`\r\n\r\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsandrock%2Fsekvap-dotnet","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsandrock%2Fsekvap-dotnet","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsandrock%2Fsekvap-dotnet/lists"}