Rewrite readme, drop Examples and Benchmarks projects#32
Merged
Conversation
Refocuses the readme on the practical strong types the library now ships (NonEmptyString, Positive<T>, NonNegative<T>, …) and demotes the FuncSharp ADT surface (Option, Try, Coproduct) to a "legacy, to be replaced" section with deprecation callouts. Also drops the broken publish.yml badge (publish is a job inside build.yml, not a separate workflow), deletes the Examples and Benchmarks projects since examples will live inline in the readme, and prunes their entries from the solution. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
The enum helpers are actually extension members on the enum type itself (Roles.Parse, Roles.AllValues, Roles.AllFlagsCombined), not static calls on EnumExtensions. Shows the realistic flag-enum use case: seeding a "SuperAdmin = everything" role at runtime via AllFlagsCombined without having to maintain an OR-literal, and decomposing a value with GetFlags. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
- Put Enums above Strings in the parsing section. - Collapse to a single Roles example used for every snippet — the [Flags] enum covers both the metadata/factory APIs and the flag-specific helpers without needing a second declaration. - Show both Parse/TryParse (framework naming) and Create/TryCreate (library naming) so readers see they're interchangeable. - Add AsEnum<T> to the Strings section, with a note on why it exists alongside the extension-member TryParse. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
KaliCZ
added a commit
that referenced
this pull request
Apr 19, 2026
* Overhaul readme, drop Examples and Benchmarks projects Refocuses the readme on the practical strong types the library now ships (NonEmptyString, Positive<T>, NonNegative<T>, …) and demotes the FuncSharp ADT surface (Option, Try, Coproduct) to a "legacy, to be replaced" section with deprecation callouts. Also drops the broken publish.yml badge (publish is a job inside build.yml, not a separate workflow), deletes the Examples and Benchmarks projects since examples will live inline in the readme, and prunes their entries from the solution. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> * Reframe FuncSharp relationship as continuation, not derivative Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> * Split parsing section, add Enum extension-member examples The enum helpers are actually extension members on the enum type itself (Roles.Parse, Roles.AllValues, Roles.AllFlagsCombined), not static calls on EnumExtensions. Shows the realistic flag-enum use case: seeding a "SuperAdmin = everything" role at runtime via AllFlagsCombined without having to maintain an OR-literal, and decomposing a value with GetFlags. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> * Enum section: single Roles example, both factory pairs, AsEnum - Put Enums above Strings in the parsing section. - Collapse to a single Roles example used for every snippet — the [Flags] enum covers both the metadata/factory APIs and the flag-specific helpers without needing a second declaration. - Show both Parse/TryParse (framework naming) and Create/TryCreate (library naming) so readers see they're interchangeable. - Add AsEnum<T> to the Strings section, with a note on why it exists alongside the extension-member TryParse. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
readme.mdto focus on the practical strong types the library actually ships today (NonEmptyString,Positive<T>,NonNegative<T>,Negative<T>,NonPositive<T>) and how to use them — construction viaTryCreate/Create, built-in equality & comparison interfaces,System.Text.Jsonconverters, and persistence via the companionKalicz.StrongTypes.EfCorepackage.Option<A>,Try<A, E>,Coproduct) to a "Legacy types (to be replaced)" section with GitHub[!WARNING]callouts naming their modern replacements (Maybe<T>,Result<T, E>,OneOf).publish.ymlbadge — publish is a job insidebuild.yml, not a separate workflow, so the badge could never resolve.Product,Order,Morphism,DataCube).StrongTypes.ExamplesandStrongTypes.Benchmarksprojects. Examples now live inline in the readme. Benchmarks were legacy-only with no regression tracking; they can be reintroduced later if there's a specific perf question to answer.StrongTypes.slnx.Note: the readme links to
Kalicz.StrongTypes.EfCoreand its readme, but that package lives onclaude/kind-blackburn-50efafand isn't on this branch yet — the links will resolve once that branch lands.Test plan
dotnet build --configuration Releasesucceeds with 0 warnings, 0 errors.readme.mdon GitHub and confirm the TOC anchors, tables, and[!WARNING]callouts display correctly.buildbadge at the top resolves (the brokenpublishone has been removed).🤖 Generated with Claude Code