Link.Foundation.Links.Notation
0.13.0
dotnet add package Link.Foundation.Links.Notation --version 0.13.0
NuGet\Install-Package Link.Foundation.Links.Notation -Version 0.13.0
<PackageReference Include="Link.Foundation.Links.Notation" Version="0.13.0" />
<PackageVersion Include="Link.Foundation.Links.Notation" Version="0.13.0" />
<PackageReference Include="Link.Foundation.Links.Notation" />
paket add Link.Foundation.Links.Notation --version 0.13.0
#r "nuget: Link.Foundation.Links.Notation, 0.13.0"
#:package Link.Foundation.Links.Notation@0.13.0
#addin nuget:?package=Link.Foundation.Links.Notation&version=0.13.0
#tool nuget:?package=Link.Foundation.Links.Notation&version=0.13.0
Links Notation Parser for C#
C# implementation of the Links Notation parser using Pegasus parser generator and Platform.Collections.
Installation
Package Manager
Install-Package Link.Foundation.Links.Notation
.NET CLI
dotnet add package Link.Foundation.Links.Notation
PackageReference
<PackageReference Include="Link.Foundation.Links.Notation" Version="0.9.0" />
Build from Source
Clone the repository and build:
git clone https://github.com/link-foundation/links-notation.git
cd links-notation/csharp
dotnet build Link.Foundation.Links.Notation.sln
Test
Run tests:
dotnet test
Usage
Basic Parsing
using Link.Foundation.Links.Notation;
// Create parser
var parser = new Parser();
// Parse Links Notation format string
string input = @"papa (lovesMama: loves mama)
son lovesMama
daughter lovesMama
all (love mama)";
var links = parser.Parse(input);
// Access parsed links
foreach (var link in links)
{
Console.WriteLine(link.ToString());
}
Converting Back to String
using Link.Foundation.Links.Notation;
// Format links back to string
string formatted = links.Format();
Console.WriteLine(formatted);
Working with Links
// Create link programmatically
var link = new Link<string>("id", new[] { "value1", "value2" });
// Access link properties
Console.WriteLine($"ID: {link.Id}");
foreach (var value in link.Values)
{
Console.WriteLine($"Value: {value}");
}
Advanced Usage with Generic Types
// Using numeric link addresses
var parser = new Parser<ulong>();
var numericLinks = parser.Parse("(1: 2 3)");
// Working with custom address types
var customParser = new Parser<Guid>();
Syntax Examples
Doublets (2-tuple)
papa (lovesMama: loves mama)
son lovesMama
daughter lovesMama
all (love mama)
Triplets (3-tuple)
papa has car
mama has house
(papa and mama) are happy
N-tuples with References
(linksNotation: links notation)
(This is a linksNotation as well)
(linksNotation supports (unlimited number (of references) in each link))
API Reference
Classes
- Parser<TLinkAddress>: Main parser class for converting strings to links
- Link<TLinkAddress>: Represents a single link with ID and values
- LinksGroup<TLinkAddress>: Container for grouping related links
Extension Methods
- IListExtensions.Format(): Converts list of links back to string format
- ILinksGroupListExtensions: Additional operations for link groups
Maintenance
Linting and Formatting
Check code formatting:
dotnet format --verify-no-changes --verbosity diagnostic
Auto-fix formatting:
dotnet format
Pre-commit Hooks
This project uses pre-commit hooks. To set up pre-commit hooks locally:
# From repository root
pip install pre-commit
pre-commit install
Note: C# formatting checks are integrated into the CI pipeline using
dotnet format.
Dependencies
- .NET 8.0
- Microsoft.CSharp (4.7.0)
- Pegasus (4.1.0)
- Platform.Collections (0.3.2)
Maintenance
Code Formatting
This project uses dotnet format for code formatting.
Format all files
dotnet format
Check formatting (without modifying files)
dotnet format --verify-no-changes
These checks are also enforced in CI. Pull requests with formatting issues will fail the format check.
Documentation
For complete API documentation, visit: Link.Foundation.Links.Notation Documentation
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net8.0 is compatible. 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. |
-
net8.0
- Microsoft.CSharp (>= 4.7.0)
- Pegasus (>= 4.1.0)
- Platform.Collections (>= 0.3.2)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
Bug fixes.
Test cases suite is updated.