Skip to content

demo#468

Merged
ignatandrei merged 3 commits intomainfrom
Aigamo.MatchGenerator
Apr 4, 2026
Merged

demo#468
ignatandrei merged 3 commits intomainfrom
Aigamo.MatchGenerator

Conversation

@ignatandrei
Copy link
Copy Markdown
Owner

@ignatandrei ignatandrei commented Apr 4, 2026

Summary by CodeRabbit

Release Notes

  • Documentation
    • Added comprehensive documentation, example projects, and metadata for Aigamo.MatchGenerator, a new enum-transformation Roslyn source code generator. Updated all reference pages to reflect the new example, bringing the total documented RSCG examples to 266.

Copilot AI review requested due to automatic review settings April 4, 2026 10:59
@coderabbitai
Copy link
Copy Markdown

coderabbitai bot commented Apr 4, 2026

📝 Walkthrough

Walkthrough

Added a new Roslyn Source Code Generator example (#266) called Aigamo.MatchGenerator to the documentation site and catalog. Updated version counts from 265 to 266 across README, documentation pages, and configuration files. Added corresponding example project files, documentation, metadata entries, and generated output demonstrations.

Changes

Cohort / File(s) Summary
Core Metadata & Data Files
v2/RSCGExamplesData/GeneratorDataRec.json, v2/docFind.json, v2/rscg_examples_site/static/exports/RSCG.json
Added new JSON entries for Aigamo.MatchGenerator with metadata including category, dates, and reference links.
Root Documentation Updates
README.md, v2/rscg_examples_site/docs/about.md, v2/rscg_examples_site/docs/indexRSCG.md
Incremented total RSCG count from 265 to 266; added new entry for Aigamo.MatchGenerator with documentation links and metadata.
HTML & Pandoc Configuration
v2/book/examples/Aigamo.MatchGenerator.html, v2/book/list.html, v2/book/pandocHTML.yaml
Added new HTML documentation page for generator; updated list page header count and table entry; added HTML file to pandoc input pipeline.
Example Project Files
v2/rscg_examples/Aigamo.MatchGenerator/description.json, nuget.txt, readme.txt, video.json, src/.tours/Aigamo.MatchGenerator.tour, src/EnumDemo.sln, src/EnumDemo/CarTypes.cs, src/EnumDemo/EnumDemo.csproj, src/EnumDemo/Program.cs
Added complete example project demonstrating Aigamo.MatchGenerator with metadata, documentation, CodeTour definition, Visual Studio solution, enum/record definitions with [GenerateMatch] attribute, project configuration, and demo program showing Match usage patterns.
Docusaurus Documentation Pages
v2/rscg_examples_site/docs/RSCG-Examples/Aigamo.MatchGenerator.md, v2/rscg_examples_site/docs/RSCG-Examples/index.md, v2/rscg_examples_site/docs/Categories/Enum.md, v2/rscg_examples_site/docs/Categories/_PrimitiveEnum.mdx, v2/rscg_examples_site/docs/Authors/Aigamo.md
Added comprehensive documentation for new generator; updated Enum category count from 13 to 14; reordered enum-related generator entries; updated author entry count from 1 to 2; added new example to index flowchart.
Docusaurus Components
v2/rscg_examples_site/src/components/HomepageFeatures/index.js
Updated homepage feature title count from 265 to 266 Examples.

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~25 minutes

Poem

🐰 A whisker'd hop through code so neat,

Two-sixty-six examples now complete!

Match generators with enums aligned,

New documentation beautifully designed,

The catalog grows, our joy's assured. 🥕

🚥 Pre-merge checks | ✅ 2 | ❌ 1

❌ Failed checks (1 inconclusive)

Check name Status Explanation Resolution
Title check ❓ Inconclusive The title 'demo' is vague and generic, failing to describe the actual changes which comprehensively add the 266th RSCG example (Aigamo.MatchGenerator) across documentation, configuration, and example files. Use a more descriptive title such as 'Add Aigamo.MatchGenerator (RSCG #266) example' or 'Add Aigamo.MatchGenerator enum source generator example' to clearly communicate the primary change.
✅ Passed checks (2 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch Aigamo.MatchGenerator

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Adds a new RSCG example entry for Aigamo.MatchGenerator and updates the v2 site/book/export artifacts to include it in the global lists (counts bumped from 265 → 266).

Changes:

  • Register Aigamo.MatchGenerator in the central generator datasets and exports (JSON/Excel/CSV/search index).
  • Add the new example project (solution + csproj + demo sources), plus supporting metadata (description/readme/video/tour).
  • Generate/update website & book pages to surface the new example and update counts/category/author pages.

Reviewed changes

Copilot reviewed 25 out of 27 changed files in this pull request and generated 7 comments.

Show a summary per file
File Description
v2/RSCGExamplesData/GeneratorDataRec.json Adds Aigamo.MatchGenerator to the master generator registry.
v2/rscg_examples/Aigamo.MatchGenerator/video.json Adds the scripted video steps for the new example.
v2/rscg_examples/Aigamo.MatchGenerator/src/EnumDemo/Program.cs Demo usage of generated Match methods.
v2/rscg_examples/Aigamo.MatchGenerator/src/EnumDemo/EnumDemo.csproj New demo project referencing Aigamo.MatchGenerator.
v2/rscg_examples/Aigamo.MatchGenerator/src/EnumDemo/CarTypes.cs Types annotated with [GenerateMatch] for generation.
v2/rscg_examples/Aigamo.MatchGenerator/src/EnumDemo.sln Solution wrapper for the new example project.
v2/rscg_examples/Aigamo.MatchGenerator/src/.tours/Aigamo.MatchGenerator.tour CodeTour walkthrough for the new example.
v2/rscg_examples/Aigamo.MatchGenerator/readme.txt Captured upstream readme content used for documentation.
v2/rscg_examples/Aigamo.MatchGenerator/nuget.txt Package description text used in generated docs/search.
v2/rscg_examples/Aigamo.MatchGenerator/description.json Metadata for the example page generation.
v2/rscg_examples_site/static/sources/Aigamo.MatchGenerator.zip Published downloadable source bundle for the example.
v2/rscg_examples_site/static/exports/RSCG.xlsx Regenerated Excel export including the new generator.
v2/rscg_examples_site/static/exports/RSCG.json Regenerated JSON export including the new generator.
v2/rscg_examples_site/src/components/HomepageFeatures/index.js Updates homepage example count to 266.
v2/rscg_examples_site/docs/RSCG-Examples/index.md Updates category index counts/links to include the new example.
v2/rscg_examples_site/docs/RSCG-Examples/Aigamo.MatchGenerator.md New documentation page for Aigamo.MatchGenerator.
v2/rscg_examples_site/docs/indexRSCG.md Updates the time-based list to include the new example.
v2/rscg_examples_site/docs/Categories/Enum.md Updates Enum category page count/list with the new example.
v2/rscg_examples_site/docs/Categories/_PrimitiveEnum.mdx Updates category snippet used for “SameCategory” blocks.
v2/rscg_examples_site/docs/Authors/Aigamo.md Updates author page to include Aigamo.MatchGenerator.
v2/rscg_examples_site/docs/about.md Updates overall generator count in About page.
v2/Generator/all.csv Updates the generator inventory CSV (adds row 266).
v2/docFind.json Updates search index entries for the new example page.
v2/book/pandocHTML.yaml Adds the new example HTML to the book build inputs.
v2/book/list.html Updates the book’s list page to include the new entry.
v2/book/examples/Aigamo.MatchGenerator.html Adds the book HTML page for the new example.
README.md Updates repository-level count and appends the new entry details.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment on lines +1609 to 1615
} ,
{
"ID":"Aigamo.MatchGenerator",
"Category": 19,
"dtStart": "2026-04-05T00:00:00",
"show": true
}
Copy link

Copilot AI Apr 4, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The entries in this JSON appear to be ordered by dtStart ascending (e.g., 2026-04-04, 2026-04-05, 2026-04-06, 2026-04-07). The newly added Aigamo.MatchGenerator item has dtStart 2026-04-05 but is appended after the 2026-04-07 entry, which breaks that ordering and makes the file harder to maintain (and may affect any code that assumes sorted input). Consider inserting this record next to the other 2026-04-05 entries (e.g., near TaggedEnum) instead of appending at the end.

Copilot uses AI. Check for mistakes.
@@ -0,0 +1,24 @@
// See https://aka.ms/new-console-template for more information
using EnumDemo;
using System.Reflection;
Copy link

Copilot AI Apr 4, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

using System.Reflection; appears unused in this file and will produce a compiler warning (and may fail builds if warnings are treated as errors). Consider removing it.

Suggested change
using System.Reflection;

Copilot uses AI. Check for mistakes.
Comment on lines +25 to +38

,{
"file": "EnumDemo/obj/GX/TaggedEnum/TaggedEnum.TaggedEnumSourceGenerator/TaggedEnumAttribute.g.cs",
"description": "Generated File 5 from 5 : TaggedEnumAttribute.g.cs ",
"line": 1
}

,{
"file": "EnumDemo/obj/GX/TaggedEnum/TaggedEnum.TaggedEnumSourceGenerator/EnumDemoEnumDemo.CarTypesTaggedEnum.g.cs",
"description": "Generated File 4 from 5 : EnumDemoEnumDemo.CarTypesTaggedEnum.g.cs ",
"line": 1
}

,{
Copy link

Copilot AI Apr 4, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This CodeTour references generated files under obj/GX/TaggedEnum/..., but the example project only references Aigamo.MatchGenerator (no TaggedEnum package and no [Tagged] usage in the source). This will cause the tour to point to files that don't exist for this example. Either remove the TaggedEnum steps or add the missing dependency/source so those generated files are actually produced.

Suggested change
,{
"file": "EnumDemo/obj/GX/TaggedEnum/TaggedEnum.TaggedEnumSourceGenerator/TaggedEnumAttribute.g.cs",
"description": "Generated File 5 from 5 : TaggedEnumAttribute.g.cs ",
"line": 1
}
,{
"file": "EnumDemo/obj/GX/TaggedEnum/TaggedEnum.TaggedEnumSourceGenerator/EnumDemoEnumDemo.CarTypesTaggedEnum.g.cs",
"description": "Generated File 4 from 5 : EnumDemoEnumDemo.CarTypesTaggedEnum.g.cs ",
"line": 1
}
,{
,{

Copilot uses AI. Check for mistakes.
Comment on lines +448 to +462
<TabItem value="D:\gth\RSCG_Examples\v2\rscg_examples\Aigamo.MatchGenerator\src\EnumDemo\obj\GX\TaggedEnum\TaggedEnum.TaggedEnumSourceGenerator\EnumDemoEnumDemo.CarTypesTaggedEnum.g.cs" label="EnumDemoEnumDemo.CarTypesTaggedEnum.g.cs" >
```csharp showLineNumbers
// <auto-generated />
#nullable enable
using System.Runtime.CompilerServices;
using System.Diagnostics.CodeAnalysis;
using System.Diagnostics;
using System.Text.Json;
using System.Text.Json.Serialization;
using TaggedEnum;

namespace EnumDemo;

[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute]
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("TaggedEnum", "1.0")]
Copy link

Copilot AI Apr 4, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This page includes generated file tabs for TaggedEnum (e.g., obj/GX/TaggedEnum/...CarTypesTaggedEnum.g.cs and TaggedEnumAttribute.g.cs). However, the example source shown here uses [GenerateMatch] from Aigamo.MatchGenerator and the .csproj only references Aigamo.MatchGenerator, so TaggedEnum output should not be present. Please remove these TaggedEnum sections or update the example to actually generate them; otherwise the documentation will be incorrect/misleading.

Suggested change
<TabItem value="D:\gth\RSCG_Examples\v2\rscg_examples\Aigamo.MatchGenerator\src\EnumDemo\obj\GX\TaggedEnum\TaggedEnum.TaggedEnumSourceGenerator\EnumDemoEnumDemo.CarTypesTaggedEnum.g.cs" label="EnumDemoEnumDemo.CarTypesTaggedEnum.g.cs" >
```csharp showLineNumbers
// <auto-generated />
#nullable enable
using System.Runtime.CompilerServices;
using System.Diagnostics.CodeAnalysis;
using System.Diagnostics;
using System.Text.Json;
using System.Text.Json.Serialization;
using TaggedEnum;
namespace EnumDemo;
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute]
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("TaggedEnum", "1.0")]

Copilot uses AI. Check for mistakes.
Comment on lines +244 to +246
- [Domain Modeling Made Functional: Tackle Software Complexity with Domain-Driven Design and F### by Scott Wlaschin](https://pragprog.com/titles/swdddf/domain-modeling-made-functional/)
- [It Seems the C# Team Is Finally Considering Supporting Discriminated Unions - DEV Community](https://dev.to/canro91/it-seems-the-c-team-is-finally-considering-supporting-discriminated-unions-59k3)
- [salvois/DiscriminatedOnions: A stinky but tasty hack to emulate F#-like discriminated unions in C#](https://github.com/salvois/DiscriminatedOnions)
Copy link

Copilot AI Apr 4, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The link text Domain-Driven Design and F### by Scott Wlaschin looks like a markdown escaping issue and should be F# (e.g., escape the # or wrap F# in inline code) to avoid rendering it as heading markup.

Suggested change
- [Domain Modeling Made Functional: Tackle Software Complexity with Domain-Driven Design and F### by Scott Wlaschin](https://pragprog.com/titles/swdddf/domain-modeling-made-functional/)
- [It Seems the C# Team Is Finally Considering Supporting Discriminated Unions - DEV Community](https://dev.to/canro91/it-seems-the-c-team-is-finally-considering-supporting-discriminated-unions-59k3)
- [salvois/DiscriminatedOnions: A stinky but tasty hack to emulate F#-like discriminated unions in C#](https://github.com/salvois/DiscriminatedOnions)
- [Domain Modeling Made Functional: Tackle Software Complexity with Domain-Driven Design and `F#` by Scott Wlaschin](https://pragprog.com/titles/swdddf/domain-modeling-made-functional/)
- [It Seems the C# Team Is Finally Considering Supporting Discriminated Unions - DEV Community](https://dev.to/canro91/it-seems-the-c-team-is-finally-considering-supporting-discriminated-unions-59k3)
- [salvois/DiscriminatedOnions: A stinky but tasty hack to emulate `F#`-like discriminated unions in C#](https://github.com/salvois/DiscriminatedOnions)

Copilot uses AI. Check for mistakes.
Comment on lines +23 to 25
|266| [Aigamo.MatchGenerator by Aigamo ](/docs/Aigamo.MatchGenerator)|2026-04-05 => 05 April 2026 | [Enum](/docs/Categories/Enum) |
|265| [lomapper by Junaid Desai ](/docs/lomapper)|2026-04-07 => 07 April 2026 | [Mapper](/docs/Categories/Mapper) |
|264| [Najlot.Audit.SourceGenerator by Najlot ](/docs/Najlot.Audit.SourceGenerator)|2026-04-06 => 06 April 2026 | [Audit](/docs/Categories/Audit) |
Copy link

Copilot AI Apr 4, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This page states the list is in "descending chronological order", but the first rows are not ordered by date (e.g., #266 is 2026-04-05 but appears above #265 2026-04-07 and #264 2026-04-06). Reorder the table rows to match the stated sort order (or update the heading/description if the intended order is by ID instead of date).

Suggested change
|266| [Aigamo.MatchGenerator by Aigamo ](/docs/Aigamo.MatchGenerator)|2026-04-05 => 05 April 2026 | [Enum](/docs/Categories/Enum) |
|265| [lomapper by Junaid Desai ](/docs/lomapper)|2026-04-07 => 07 April 2026 | [Mapper](/docs/Categories/Mapper) |
|264| [Najlot.Audit.SourceGenerator by Najlot ](/docs/Najlot.Audit.SourceGenerator)|2026-04-06 => 06 April 2026 | [Audit](/docs/Categories/Audit) |
|265| [lomapper by Junaid Desai ](/docs/lomapper)|2026-04-07 => 07 April 2026 | [Mapper](/docs/Categories/Mapper) |
|264| [Najlot.Audit.SourceGenerator by Najlot ](/docs/Najlot.Audit.SourceGenerator)|2026-04-06 => 06 April 2026 | [Audit](/docs/Categories/Audit) |
|266| [Aigamo.MatchGenerator by Aigamo ](/docs/Aigamo.MatchGenerator)|2026-04-05 => 05 April 2026 | [Enum](/docs/Categories/Enum) |

Copilot uses AI. Check for mistakes.
@@ -0,0 +1 @@
Package Description No newline at end of file
Copy link

Copilot AI Apr 4, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

nuget.txt is used as the package description in the generated docs, but it currently contains the placeholder text "Package Description". Consider replacing this with the actual NuGet package description so the example page and search index have meaningful content.

Suggested change
Package Description
Source generator for generating pattern-matching code in .NET applications.

Copilot uses AI. Check for mistakes.
Copy link
Copy Markdown

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 10

🧹 Nitpick comments (3)
v2/rscg_examples/Aigamo.MatchGenerator/src/.tours/Aigamo.MatchGenerator.tour (1)

27-53: Make the generated-file prerequisite explicit before these steps.

These steps depend on EnumDemo/obj/GX/... artifacts that exist only after generation. Add an explicit dedicated tour step immediately before Line 27 telling users to run build/run first, so the next file steps are reproducible.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@v2/rscg_examples/Aigamo.MatchGenerator/src/.tours/Aigamo.MatchGenerator.tour`
around lines 27 - 53, Add an explicit preceding tour step that instructs the
user to run build/run to generate the required artifacts before the steps that
enumerate generated files; specifically, insert the new step immediately before
the block that lists generated files such as TaggedEnumAttribute.g.cs,
MaritalStatusMatchExtensions.g.cs and CarTypesMatchExtensions.g.cs so the
subsequent steps that reference the EnumDemo/obj/GX artifacts are reproducible.
README.md (1)

27-27: Fix sentence grammar for readability.

Line 27 reads awkwardly (“tested you can see…”). Please split into two clauses so it’s easier to read.

✍️ Suggested wording tweak
-Those are the 266 Roslyn Source Code Generators that I have tested you can see and download source code example.
+These are the 266 Roslyn Source Code Generators that I have tested; you can see and download the source code examples.
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@README.md` at line 27, Replace the awkward single sentence "Those are the 266
Roslyn Source Code Generators that I have tested you can see and download source
code example." with two clearer clauses; for example: "These are the 266 Roslyn
Source Code Generators that I have tested. You can view and download the source
code examples." Locate and update that sentence in the README to improve grammar
and readability.
v2/rscg_examples/Aigamo.MatchGenerator/src/EnumDemo/Program.cs (1)

3-3: Unused import: System.Reflection is not used in this file.

This import can be removed to keep the demo code clean.

Suggested fix
 // See https://aka.ms/new-console-template for more information
 using EnumDemo;
-using System.Reflection;
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@v2/rscg_examples/Aigamo.MatchGenerator/src/EnumDemo/Program.cs` at line 3,
Remove the unused using directive System.Reflection from the top of Program.cs;
locate the Program class/file (Program.cs) in the EnumDemo project and delete
the line "using System.Reflection;" so only necessary usings remain and the demo
compiles without unused imports.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@README.md`:
- Line 31: The README contains a generated date string "Generated on :
2026-04-05" that does not match the PR creation date (Apr 4, 2026); update the
generation process to use the PR creation timestamp (or consistently use UTC)
and timezone-aware formatting so the generated date matches the PR creation
time, then regenerate the README to replace the "Generated on : YYYY-MM-DD" line
with the corrected date; locate the generator that emits the "Generated on :"
line and modify it to pull the PR creation time from the CI/PR metadata or
convert times to a single canonical timezone before formatting.

In `@v2/book/list.html`:
- Line 20: The heading text in v2/book/list.html contains a raw '>' character
("This is the list of 266 RSCG with examples =>") that violates HTMLHint
spec-char-escape; update that heading (the line containing that exact string) to
escape the greater-than sign (replace '>' with '&gt;') so the markup is
lint-clean while preserving the visible text.

In `@v2/rscg_examples_site/docs/Authors/Aigamo.md`:
- Line 8: The author entry for Aigamo.MatchGenerator contains a future-dated
metadata value "2026-04-05"; update that date to the correct
publication/addition date (e.g., today's or the actual release date) in the
Aigamo.MatchGenerator line so the entry's chronology is accurate and no future
date remains.

In `@v2/rscg_examples_site/docs/indexRSCG.md`:
- Around line 10-12: The document heading "## 266 RSCG with examples in
descending chronological order" claims descending chronological order but the
rows around the dates "2026-04-05", "2026-04-07", and "2026-04-06" are out of
order; either reorder those list rows so dates descend (place 2026-04-07 first,
then 2026-04-06, then 2026-04-05) or change the heading text to remove the
descending-chronological claim; update the block containing the three date lines
so the order matches the heading and ensure the same fix is applied to the other
instances noted (lines 23–25).
- Line 23: The markdown link text "[Aigamo.MatchGenerator by Aigamo ]" contains
a trailing space which triggers MD039; edit the markdown entry on line with that
link so the link text has no trailing space (change "[Aigamo.MatchGenerator by
Aigamo ]" to "[Aigamo.MatchGenerator by Aigamo]") ensuring the surrounding link
URL and other columns remain unchanged.

In `@v2/rscg_examples_site/docs/RSCG-Examples/Aigamo.MatchGenerator.md`:
- Line 244: Fix the typo in the Markdown reference label: change the link text
"Domain Modeling Made Functional: Tackle Software Complexity with Domain-Driven
Design and F### by Scott Wlaschin" to use the correct language name "F#" (i.e.,
replace "F###" with "F#") so the displayed title reads "Domain Modeling Made
Functional: Tackle Software Complexity with Domain-Driven Design and F# by Scott
Wlaschin".
- Around line 69-77: The file uses invalid heading levels (9 and 10 hashes) such
as "######### 1. Install the package" and "########## Enum example"; update all
these instances by replacing 9 `#` with 3 (`###`) for top-level numbered steps
and 10 `#` with 4 (`####`) for their subsections (apply the same pattern to the
other reported headings e.g. the lines matching "######### " and "########## "
elsewhere in the document) so the Markdown uses valid heading levels
(##–######).

In `@v2/rscg_examples/Aigamo.MatchGenerator/nuget.txt`:
- Line 1: Replace the placeholder first line "Package Description" in nuget.txt
with a concise real NuGet package summary: a one-line sentence describing what
Aigamo.MatchGenerator does (its primary purpose), the target platform/framework
(e.g., .NET version), and the main capabilities or audience (e.g., match
generation for games/simulations), keeping it factual and under ~120 characters;
update the first line only so package metadata shows a meaningful summary rather
than placeholder text.

In
`@v2/rscg_examples/Aigamo.MatchGenerator/src/.tours/Aigamo.MatchGenerator.tour`:
- Around line 14-23: The tour steps for EnumDemo/CarTypes.cs and
EnumDemo/Program.cs use the placeholder pattern "this is the code" which doesn't
exist and breaks anchoring; update the "pattern" values to actual unique code
snippets from those files (for example use a line from the CarTypes enum
declaration or a constant name in CarTypes, and the Program class or Main method
signature line such as "static void Main(" or the sample run comment) so the
tour can locate the anchors (replace the pattern entries for the steps
referencing EnumDemo/CarTypes.cs and EnumDemo/Program.cs accordingly).

In `@v2/rscg_examples/Aigamo.MatchGenerator/video.json`:
- Around line 35-36: The JSON entry in the browser step has an unquoted property
name SpeakTest which makes the document invalid; update the object (the
{"typeStep":"browser","arg":"https://...","SpeakTest":" "}) so that the
SpeakTest key is wrapped in double quotes ("SpeakTest") and confirm the
surrounding object keeps valid JSON syntax (correct commas and quoting) so the
browser step in the video script parses correctly.

---

Nitpick comments:
In `@README.md`:
- Line 27: Replace the awkward single sentence "Those are the 266 Roslyn Source
Code Generators that I have tested you can see and download source code
example." with two clearer clauses; for example: "These are the 266 Roslyn
Source Code Generators that I have tested. You can view and download the source
code examples." Locate and update that sentence in the README to improve grammar
and readability.

In
`@v2/rscg_examples/Aigamo.MatchGenerator/src/.tours/Aigamo.MatchGenerator.tour`:
- Around line 27-53: Add an explicit preceding tour step that instructs the user
to run build/run to generate the required artifacts before the steps that
enumerate generated files; specifically, insert the new step immediately before
the block that lists generated files such as TaggedEnumAttribute.g.cs,
MaritalStatusMatchExtensions.g.cs and CarTypesMatchExtensions.g.cs so the
subsequent steps that reference the EnumDemo/obj/GX artifacts are reproducible.

In `@v2/rscg_examples/Aigamo.MatchGenerator/src/EnumDemo/Program.cs`:
- Line 3: Remove the unused using directive System.Reflection from the top of
Program.cs; locate the Program class/file (Program.cs) in the EnumDemo project
and delete the line "using System.Reflection;" so only necessary usings remain
and the demo compiles without unused imports.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: 5aad9bdd-49ad-4e77-99d2-7121bc105572

📥 Commits

Reviewing files that changed from the base of the PR and between e4bd739 and 34c45a9.

⛔ Files ignored due to path filters (3)
  • v2/Generator/all.csv is excluded by !**/*.csv
  • v2/rscg_examples_site/static/exports/RSCG.xlsx is excluded by !**/*.xlsx
  • v2/rscg_examples_site/static/sources/Aigamo.MatchGenerator.zip is excluded by !**/*.zip
📒 Files selected for processing (24)
  • README.md
  • v2/RSCGExamplesData/GeneratorDataRec.json
  • v2/book/examples/Aigamo.MatchGenerator.html
  • v2/book/list.html
  • v2/book/pandocHTML.yaml
  • v2/docFind.json
  • v2/rscg_examples/Aigamo.MatchGenerator/description.json
  • v2/rscg_examples/Aigamo.MatchGenerator/nuget.txt
  • v2/rscg_examples/Aigamo.MatchGenerator/readme.txt
  • v2/rscg_examples/Aigamo.MatchGenerator/src/.tours/Aigamo.MatchGenerator.tour
  • v2/rscg_examples/Aigamo.MatchGenerator/src/EnumDemo.sln
  • v2/rscg_examples/Aigamo.MatchGenerator/src/EnumDemo/CarTypes.cs
  • v2/rscg_examples/Aigamo.MatchGenerator/src/EnumDemo/EnumDemo.csproj
  • v2/rscg_examples/Aigamo.MatchGenerator/src/EnumDemo/Program.cs
  • v2/rscg_examples/Aigamo.MatchGenerator/video.json
  • v2/rscg_examples_site/docs/Authors/Aigamo.md
  • v2/rscg_examples_site/docs/Categories/Enum.md
  • v2/rscg_examples_site/docs/Categories/_PrimitiveEnum.mdx
  • v2/rscg_examples_site/docs/RSCG-Examples/Aigamo.MatchGenerator.md
  • v2/rscg_examples_site/docs/RSCG-Examples/index.md
  • v2/rscg_examples_site/docs/about.md
  • v2/rscg_examples_site/docs/indexRSCG.md
  • v2/rscg_examples_site/src/components/HomepageFeatures/index.js
  • v2/rscg_examples_site/static/exports/RSCG.json

( including 16 from Microsoft )
### 266. [Aigamo.MatchGenerator](https://ignatandrei.github.io/RSCG_Examples/v2/docs/Aigamo.MatchGenerator) , in the [Enum](https://ignatandrei.github.io/RSCG_Examples/v2/docs/rscg-examples#enum) category

Generated on : 2026-04-05 => 05 April 2026
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

Verify future generated date against PR creation time.

Line 31 says Generated on : 2026-04-05, but this PR was created on April 4, 2026. Please confirm this is expected (timezone/automation behavior) to avoid timeline confusion in the catalog.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@README.md` at line 31, The README contains a generated date string "Generated
on : 2026-04-05" that does not match the PR creation date (Apr 4, 2026); update
the generation process to use the PR creation timestamp (or consistently use
UTC) and timezone-aware formatting so the generated date matches the PR creation
time, then regenerate the README to replace the "Generated on : YYYY-MM-DD" line
with the corrected date; locate the generator that emits the "Generated on :"
line and modify it to pull the PR creation time from the CI/PR metadata or
convert times to a single canonical timezone before formatting.

<body>
<h1>
This is the list of 265 RSCG with examples =>
This is the list of 266 RSCG with examples =>
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

Escape special character in heading text.

Line 20 includes a raw > which triggers HTMLHint (spec-char-escape). Escape it to keep HTML lint-clean.

Suggested fix
-This is the list of 266 RSCG with examples =>
+This is the list of 266 RSCG with examples =&gt;
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
This is the list of 266 RSCG with examples =>
This is the list of 266 RSCG with examples =&gt;
🧰 Tools
🪛 HTMLHint (1.9.2)

[error] 20-20: Special characters must be escaped : [ > ].

(spec-char-escape)

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@v2/book/list.html` at line 20, The heading text in v2/book/list.html contains
a raw '>' character ("This is the list of 266 RSCG with examples =>") that
violates HTMLHint spec-char-escape; update that heading (the line containing
that exact string) to escape the greater-than sign (replace '>' with '&gt;') so
the markup is lint-clean while preserving the visible text.


1 [ResXGenerator](/docs/ResXGenerator) [![Nuget](https://img.shields.io/nuget/dt/Aigamo.ResXGenerator?label=Aigamo.ResXGenerator)](https://www.nuget.org/packages/Aigamo.ResXGenerator/) ![GitHub Repo stars](https://img.shields.io/github/stars/ycanardeau/ResXGenerator?style=social) 2023-10-02

2 [Aigamo.MatchGenerator](/docs/Aigamo.MatchGenerator) [![Nuget](https://img.shields.io/nuget/dt/Aigamo.MatchGenerator?label=Aigamo.MatchGenerator)](https://www.nuget.org/packages/Aigamo.MatchGenerator/) ![GitHub Repo stars](https://img.shields.io/github/stars/ycanardeau/MatchGenerator?style=social) 2026-04-05
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

Fix future-dated metadata in author entry.

Line 8 uses 2026-04-05, which is a future date relative to this PR timeline (April 4, 2026). Please use the actual publication/addition date to avoid inconsistent chronology.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@v2/rscg_examples_site/docs/Authors/Aigamo.md` at line 8, The author entry for
Aigamo.MatchGenerator contains a future-dated metadata value "2026-04-05";
update that date to the correct publication/addition date (e.g., today's or the
actual release date) in the Aigamo.MatchGenerator line so the entry's chronology
is accurate and no future date remains.

Comment on lines +10 to +12
## 266 RSCG with examples in descending chronological order

This is the list of 265 ( 16 from Microsoft) RSCG with examples
This is the list of 266 ( 16 from Microsoft) RSCG with examples
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟠 Major

Chronological order claim is currently violated.

Line 10 says the list is in descending chronological order, but Line 23 (2026-04-05) is placed above Line 24 (2026-04-07) and Line 25 (2026-04-06). Please reorder rows (or adjust the heading) to keep the page truthful.

Also applies to: 23-25

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@v2/rscg_examples_site/docs/indexRSCG.md` around lines 10 - 12, The document
heading "## 266 RSCG with examples in descending chronological order" claims
descending chronological order but the rows around the dates "2026-04-05",
"2026-04-07", and "2026-04-06" are out of order; either reorder those list rows
so dates descend (place 2026-04-07 first, then 2026-04-06, then 2026-04-05) or
change the heading text to remove the descending-chronological claim; update the
block containing the three date lines so the order matches the heading and
ensure the same fix is applied to the other instances noted (lines 23–25).


| No | Name | Date | Category |
| --------- | ----- | ---- | -------- |
|266| [Aigamo.MatchGenerator by Aigamo ](/docs/Aigamo.MatchGenerator)|2026-04-05 => 05 April 2026 | [Enum](/docs/Categories/Enum) |
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

Remove trailing space inside link text.

Line 23 has a trailing space inside [Aigamo.MatchGenerator by Aigamo ], triggering MD039.

Proposed fix
-|266| [Aigamo.MatchGenerator by Aigamo ](/docs/Aigamo.MatchGenerator)|2026-04-05 => 05 April 2026 | [Enum](/docs/Categories/Enum) |
+|266| [Aigamo.MatchGenerator by Aigamo](/docs/Aigamo.MatchGenerator)|2026-04-05 => 05 April 2026 | [Enum](/docs/Categories/Enum) |
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
|266| [Aigamo.MatchGenerator by Aigamo ](/docs/Aigamo.MatchGenerator)|2026-04-05 => 05 April 2026 | [Enum](/docs/Categories/Enum) |
|266| [Aigamo.MatchGenerator by Aigamo](/docs/Aigamo.MatchGenerator)|2026-04-05 => 05 April 2026 | [Enum](/docs/Categories/Enum) |
🧰 Tools
🪛 markdownlint-cli2 (0.22.0)

[warning] 23-23: Spaces inside link text

(MD039, no-space-in-links)

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@v2/rscg_examples_site/docs/indexRSCG.md` at line 23, The markdown link text
"[Aigamo.MatchGenerator by Aigamo ]" contains a trailing space which triggers
MD039; edit the markdown entry on line with that link so the link text has no
trailing space (change "[Aigamo.MatchGenerator by Aigamo ]" to
"[Aigamo.MatchGenerator by Aigamo]") ensuring the surrounding link URL and other
columns remain unchanged.

Comment on lines +69 to +77
######### 1. Install the package

```bash
dotnet add package Aigamo.MatchGenerator
```

######### 2. Annotate your type

########## Enum example
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
# Find invalid markdown heading levels (>6)
rg -n '^\s*#{7,}\s' v2/rscg_examples_site/docs/RSCG-Examples/Aigamo.MatchGenerator.md

Repository: ignatandrei/RSCG_Examples

Length of output: 415


🏁 Script executed:

cat -n v2/rscg_examples_site/docs/RSCG-Examples/Aigamo.MatchGenerator.md | head -230

Repository: ignatandrei/RSCG_Examples

Length of output: 6099


Normalize heading levels to ######## for valid Markdown structure.

Headings with 7+ # symbols are not valid Markdown, causing 13 instances in this file (lines 69, 75, 77, 90, 104, 106, 115, 128, 130, 141, 154, 193, 214) to violate the specification. Convert the 9-# headings to H3 (###) for numbered steps and the 10-# headings to H4 (####) for their subsections.

Proposed changes
-######### 1. Install the package
+### 1. Install the package

-######### 2. Annotate your type
+### 2. Annotate your type

-########## Enum example
+#### Enum example

-########## Union example
+#### Union example

-######### 3. Use `Match`
+### 3. Use `Match`

-######### Without MatchGenerator
+### Without MatchGenerator

-######### With MatchGenerator
+### With MatchGenerator

-######### Enum
+### Enum

-######### Union
+### Union

(Apply the same pattern: ######### ### and ########## #### )

📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
######### 1. Install the package
```bash
dotnet add package Aigamo.MatchGenerator
```
######### 2. Annotate your type
########## Enum example
### 1. Install the package
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@v2/rscg_examples_site/docs/RSCG-Examples/Aigamo.MatchGenerator.md` around
lines 69 - 77, The file uses invalid heading levels (9 and 10 hashes) such as
"######### 1. Install the package" and "########## Enum example"; update all
these instances by replacing 9 `#` with 3 (`###`) for top-level numbered steps
and 10 `#` with 4 (`####`) for their subsections (apply the same pattern to the
other reported headings e.g. the lines matching "######### " and "########## "
elsewhere in the document) so the Markdown uses valid heading levels
(##–######).

- [Introducing C# Source Generators - .NET Blog](https://devblogs.microsoft.com/dotnet/introducing-c-source-generators/)
- [roslyn/docs/features/source-generators.cookbook.md at main · dotnet/roslyn](https://github.com/dotnet/roslyn/blob/main/docs/features/source-generators.cookbook.md)
- [roslyn/docs/features/incremental-generators.cookbook.md at main · dotnet/roslyn](https://github.com/dotnet/roslyn/blob/main/docs/features/incremental-generators.cookbook.md)
- [Domain Modeling Made Functional: Tackle Software Complexity with Domain-Driven Design and F### by Scott Wlaschin](https://pragprog.com/titles/swdddf/domain-modeling-made-functional/)
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

Fix typo in reference title text.

F### should be F# in the Scott Wlaschin reference label.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@v2/rscg_examples_site/docs/RSCG-Examples/Aigamo.MatchGenerator.md` at line
244, Fix the typo in the Markdown reference label: change the link text "Domain
Modeling Made Functional: Tackle Software Complexity with Domain-Driven Design
and F### by Scott Wlaschin" to use the correct language name "F#" (i.e., replace
"F###" with "F#") so the displayed title reads "Domain Modeling Made Functional:
Tackle Software Complexity with Domain-Driven Design and F# by Scott Wlaschin".

@@ -0,0 +1 @@
Package Description No newline at end of file
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

Replace placeholder NuGet text with real package summary.

Line 1 still contains placeholder content (Package Description), which will surface as low-quality docs/metadata for this example.

Suggested fix
-Package Description
+<actual one-line description of Aigamo.MatchGenerator from NuGet/package docs>
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@v2/rscg_examples/Aigamo.MatchGenerator/nuget.txt` at line 1, Replace the
placeholder first line "Package Description" in nuget.txt with a concise real
NuGet package summary: a one-line sentence describing what Aigamo.MatchGenerator
does (its primary purpose), the target platform/framework (e.g., .NET version),
and the main capabilities or audience (e.g., match generation for
games/simulations), keeping it factual and under ~120 characters; update the
first line only so package metadata shows a meaningful summary rather than
placeholder text.

Comment on lines +14 to +23
"file": "EnumDemo/CarTypes.cs",
"description": "File CarTypes.cs ",
"pattern": "this is the code"
}

,{
"file": "EnumDemo/Program.cs",
"description": "File Program.cs \r\n>> dotnet run --project EnumDemo/EnumDemo.csproj ",
"pattern": "this is the code"
}
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
# Verify that CodeTour pattern anchors exist in referenced files.
set -euo pipefail

python - <<'PY'
import json, pathlib, sys
tour = pathlib.Path("v2/rscg_examples/Aigamo.MatchGenerator/src/.tours/Aigamo.MatchGenerator.tour")
data = json.loads(tour.read_text(encoding="utf-8"))
root = tour.parent.parent  # .../src
ok = True
for i, step in enumerate(data.get("steps", []), 1):
    file = step.get("file")
    pattern = step.get("pattern")
    if not file or not pattern:
        continue
    p = root / file
    if not p.exists():
        print(f"STEP {i}: missing file -> {p}")
        ok = False
        continue
    txt = p.read_text(encoding="utf-8", errors="ignore")
    if pattern not in txt:
        print(f"STEP {i}: pattern not found -> {pattern!r} in {p}")
        ok = False
if ok:
    print("All step patterns found.")
PY

Repository: ignatandrei/RSCG_Examples

Length of output: 297


Replace placeholder pattern values with actual code anchors.

Lines 16 and 22 use pattern: "this is the code", which do not exist in the referenced files (EnumDemo/CarTypes.cs and EnumDemo/Program.cs). The tour will fail to anchor correctly at these steps. Use actual code snippets from these files as the pattern value.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@v2/rscg_examples/Aigamo.MatchGenerator/src/.tours/Aigamo.MatchGenerator.tour`
around lines 14 - 23, The tour steps for EnumDemo/CarTypes.cs and
EnumDemo/Program.cs use the placeholder pattern "this is the code" which doesn't
exist and breaks anchoring; update the "pattern" values to actual unique code
snippets from those files (for example use a line from the CarTypes enum
declaration or a constant name in CarTypes, and the Program class or Main method
signature line such as "static void Main(" or the sample run comment) so the
tour can locate the anchors (replace the pattern entries for the steps
referencing EnumDemo/CarTypes.cs and EnumDemo/Program.cs accordingly).

Comment on lines +35 to +36
{"typeStep":"browser","arg":"https://ignatandrei.github.io/RSCG_Examples/v2/docs/Aigamo.MatchGenerator#download-example-net--c-",
SpeakTest=" "},
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🔴 Critical

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
# Verify JSON syntax for the new walkthrough script
python -m json.tool v2/rscg_examples/Aigamo.MatchGenerator/video.json >/dev/null

Repository: ignatandrei/RSCG_Examples

Length of output: 148


Fix invalid JSON property syntax in the browser step.

The property name SpeakTest must be enclosed in double quotes—JSON requires all property names to be quoted strings. Currently, the JSON is unparsable and breaks the video script pipeline.

Proposed fix
-{"typeStep":"browser","arg":"https://ignatandrei.github.io/RSCG_Examples/v2/docs/Aigamo.MatchGenerator#download-example-net--c-",
-SpeakTest=" "},
+{"typeStep":"browser","arg":"https://ignatandrei.github.io/RSCG_Examples/v2/docs/Aigamo.MatchGenerator#download-example-net--c-","SpeakTest":" "},
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
{"typeStep":"browser","arg":"https://ignatandrei.github.io/RSCG_Examples/v2/docs/Aigamo.MatchGenerator#download-example-net--c-",
SpeakTest=" "},
{"typeStep":"browser","arg":"https://ignatandrei.github.io/RSCG_Examples/v2/docs/Aigamo.MatchGenerator#download-example-net--c-","SpeakTest":" "},
🧰 Tools
🪛 Biome (2.4.10)

[error] 36-36: Property key must be double quoted

(parse)


[error] 36-36: unexpected character =

(parse)


[error] 36-36: expected , but instead found " "

(parse)


[error] 36-36: expected : but instead found }

(parse)

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@v2/rscg_examples/Aigamo.MatchGenerator/video.json` around lines 35 - 36, The
JSON entry in the browser step has an unquoted property name SpeakTest which
makes the document invalid; update the object (the
{"typeStep":"browser","arg":"https://...","SpeakTest":" "}) so that the
SpeakTest key is wrapped in double quotes ("SpeakTest") and confirm the
surrounding object keeps valid JSON syntax (correct commas and quoting) so the
browser step in the video script parses correctly.

@ignatandrei ignatandrei merged commit e58f9de into main Apr 4, 2026
7 checks passed
@ignatandrei ignatandrei deleted the Aigamo.MatchGenerator branch April 4, 2026 11:20
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.

2 participants