Skip to content

Rewrite readme, drop Examples and Benchmarks projects#32

Merged
KaliCZ merged 4 commits intomainfrom
claude/busy-jemison-506e97
Apr 19, 2026
Merged

Rewrite readme, drop Examples and Benchmarks projects#32
KaliCZ merged 4 commits intomainfrom
claude/busy-jemison-506e97

Conversation

@KaliCZ
Copy link
Copy Markdown
Owner

@KaliCZ KaliCZ commented Apr 19, 2026

Summary

  • Rewrites the root readme.md to 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 via TryCreate/Create, built-in equality & comparison interfaces, System.Text.Json converters, and persistence via the companion Kalicz.StrongTypes.EfCore package.
  • Demotes the inherited FuncSharp types (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).
  • Drops the broken publish.yml badge — publish is a job inside build.yml, not a separate workflow, so the badge could never resolve.
  • Removes sections documenting types that no longer exist in the library surface (Product, Order, Morphism, DataCube).
  • Deletes the StrongTypes.Examples and StrongTypes.Benchmarks projects. 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.
  • Prunes both projects from StrongTypes.slnx.

Note: the readme links to Kalicz.StrongTypes.EfCore and its readme, but that package lives on claude/kind-blackburn-50efaf and isn't on this branch yet — the links will resolve once that branch lands.

Test plan

  • dotnet build --configuration Release succeeds with 0 warnings, 0 errors.
  • Render readme.md on GitHub and confirm the TOC anchors, tables, and [!WARNING] callouts display correctly.
  • Confirm the build badge at the top resolves (the broken publish one has been removed).

🤖 Generated with Claude Code

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>
@KaliCZ KaliCZ self-assigned this Apr 19, 2026
KaliCZ and others added 3 commits April 19, 2026 11:24
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 KaliCZ merged commit c9b22db into main Apr 19, 2026
2 checks passed
@KaliCZ KaliCZ deleted the claude/busy-jemison-506e97 branch April 19, 2026 09:33
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>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant