Bodu.Globalization.Calendar.Builder
1.0.0
dotnet add package Bodu.Globalization.Calendar.Builder --version 1.0.0
NuGet\Install-Package Bodu.Globalization.Calendar.Builder -Version 1.0.0
<PackageReference Include="Bodu.Globalization.Calendar.Builder" Version="1.0.0" />
<PackageVersion Include="Bodu.Globalization.Calendar.Builder" Version="1.0.0" />
<PackageReference Include="Bodu.Globalization.Calendar.Builder" />
paket add Bodu.Globalization.Calendar.Builder --version 1.0.0
#r "nuget: Bodu.Globalization.Calendar.Builder, 1.0.0"
#:package Bodu.Globalization.Calendar.Builder@1.0.0
#addin nuget:?package=Bodu.Globalization.Calendar.Builder&version=1.0.0
#tool nuget:?package=Bodu.Globalization.Calendar.Builder&version=1.0.0
Bodu.Globalization.Calendar.Builder
API stability — Stable. The public API surface is committed; breaking changes are reserved for a major-version bump per SemVer.
A fluent authoring API for Bodu.Globalization.Calendar notable-date documents. NotableDateDocumentBuilder constructs a calendar document in code — concepts, rules, adjustment and resolution policies, imports, and overrides — then serializes it to XML or a JSON subset, or materializes a live NotableDateResource for immediate use.
Installation
dotnet add package Bodu.Globalization.Calendar.Builder
Targets net8.0. All types live in the Bodu.Globalization.Calendar.Builder namespace.
Authoring
using Bodu.Globalization.Calendar.Builder;
NotableDateResource resource = NotableDateDocumentBuilder
.Create("au-national", schemaVersion: "1.0")
.WithMetadata("Australia — National", description: "Federal public holidays")
.WithResolutionPolicy(p => /* duplicate, collision, observed-range rules */)
.AddImport("christian-western")
.AddNotableDate("australia-day", "Australia Day", category: "public", b => /* rules */)
.Build();
The fluent entry points — WithResourceId, WithSchemaVersion, WithMetadata, WithResolutionPolicy, AddAdjustmentPolicy, AddImport, AddNotableDate, and AddOverride — are backed by the section builders NotableDateDefinitionBuilder, NotableDateRuleBuilder, AdjustmentPolicyBuilder, ResolutionPolicyBuilder, ImportBuilder, and OverrideBuilder.
Serialization and loading
| Member | Purpose |
|---|---|
Build() / Build(importResolver) |
Materialize and validate a NotableDateResource |
ToXml() / ToXDocument() |
Render full-fidelity XML (urn:bodu:globalization:calendar) |
ToJson() |
Render the JSON subset (Gregorian-only, reduced trigger/action surface) |
Save(path) / Save(path, format) |
Persist as XML (default) or JSON (NotableDateDocumentFormat) |
Load(path) |
Reconstruct a builder from a saved document |
ToProvider() |
Wrap the result as an INotableDateResourceProvider |
Testing
dotnet test Bodu.Globalization.Calendar.Builder/test/Bodu.Globalization.Calendar.Builder.Test.csproj --settings bvt.runsettings
Tests build documents end-to-end, serialize to XML/JSON, and assert against the real NotableDateResourceLoader / NotableDateService to confirm round-trip fidelity. The precise contract — byte-stable canonical XML, identity within the JSON subset, semantic parity across formats, and the XML → JSON lossiness boundary — is documented in the builder round-trip guarantees guide.
License
MIT. © Bodu Pty. Ltd.
| 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 is compatible. 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. |
-
net10.0
- Bodu.Core (>= 1.0.0)
- Bodu.Globalization.Calendar (>= 1.0.0)
-
net8.0
- Bodu.Core (>= 1.0.0)
- Bodu.Globalization.Calendar (>= 1.0.0)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.