Skip to content

example#445

Merged
ignatandrei merged 3 commits intomainfrom
FastCloner
Feb 3, 2026
Merged

example#445
ignatandrei merged 3 commits intomainfrom
FastCloner

Conversation

@ignatandrei
Copy link
Owner

@ignatandrei ignatandrei commented Feb 3, 2026

Summary by CodeRabbit

  • New Features

    • Added FastCloner, a fast deep cloning library for .NET 8+, as the 253rd example in the collection, supporting both deep and shallow cloning with extensive testing.
  • Documentation

    • Added comprehensive documentation for FastCloner including usage examples, advanced features, performance benchmarks, and interactive code tours.
  • Chores

    • Updated total example count from 252 to 253 across all reference materials and category listings.

@coderabbitai
Copy link

coderabbitai bot commented Feb 3, 2026

📝 Walkthrough

Walkthrough

Adds the 253rd RSCG example, FastCloner (a .NET 8+ deep cloning library), to documentation, metadata, and website files. Updates example counts, timestamps, and cross-references throughout README, JSON exports, HTML pages, site documentation, category listings, and includes new example code files, configuration, and authorship metadata.

Changes

Cohort / File(s) Summary
Core Documentation & Lists
README.md, later.md, NoExamples.md
Updated total example count from 252 to 253, bumped latest update date to 2026-02-01, added FastCloner entry with navigation links, and reordered/renumbered project listings throughout.
Metadata & Configuration
v2/RSCGExamplesData/GeneratorDataRec.json, v2/RSCGExamplesData/NoExample.json, v2/rscg_examples/FastCloner/description.json, v2/rscg_examples/FastCloner/video.json
Added new FastCloner entry to GeneratorDataRec.json (ID: FastCloner, Category: 29, dtStart: 2026-02-01), removed duplicate FastCloner entries from NoExample.json, and created new description and video configuration files for FastCloner example.
Example Documentation & Description Files
v2/rscg_examples/FastCloner/nuget.txt, v2/rscg_examples/FastCloner/readme.txt
Added NuGet package description and comprehensive README documentation for FastCloner, covering features, installation, usage patterns, advanced scenarios, limitations, and performance benchmarks.
Example Code & Project Files
v2/rscg_examples/FastCloner/src/CloneData.sln, v2/rscg_examples/FastCloner/src/CloneData/CloneData.csproj, v2/rscg_examples/FastCloner/src/CloneData/Person.cs, v2/rscg_examples/FastCloner/src/CloneData/Program.cs
Created new Visual Studio solution and C\# project targeting .NET 9.0 with FastCloner NuGet dependencies, added Person data model with FastClonerClonable attribute, and added demonstration program showing cloning usage.
Build Configuration & Tour
v2/book/pandocHTML.yaml, v2/rscg_examples/FastCloner/src/.tours/FastCloner.tour
Added FastCloner.html to pandoc input files list and created CodeTour configuration with 10 steps annotating project files, generated artifacts, and source code structure.
HTML & Web Pages
v2/book/examples/FastCloner.html, v2/book/list.html
Created new FastCloner HTML documentation page with metadata, About section, and How to use guide with screenshots, and updated master list.html to include new 253rd entry linking to FastCloner example.
Site Documentation Pages
v2/rscg_examples_site/docs/RSCG-Examples/FastCloner.md, v2/rscg_examples_site/docs/RSCG-Examples/index.md, v2/rscg_examples_site/docs/indexRSCG.md, v2/rscg_examples_site/docs/about.md
Added comprehensive Markdown documentation for FastCloner with features, examples, and API usage; updated index metadata to reflect 253 examples; added FastCloner row to complete examples table with author and date.
Category & Author Documentation
v2/rscg_examples_site/docs/Categories/Clone.md, v2/rscg_examples_site/docs/Categories/_PrimitiveClone.mdx, v2/rscg_examples_site/docs/Authors/Matěj_Štágl.md
Reordered Clone category entries to place FastCloner at position 3, updated primitive clone mdx file, and created new author profile for Matěj Štágl with FastCloner reference and date.
Site Exports & Components
v2/rscg_examples_site/static/exports/RSCG.json, v2/rscg_examples_site/src/components/HomepageFeatures/index.js, NoExamples.md
Added FastCloner entry to main RSCG.json export with metadata (name, links, category, date), updated homepage feature counter from 252 to 253, and reorganized NoExamples.md project list with additional entries and notes.

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~22 minutes

Possibly related PRs

  • PR #410: Adds a different RSCG example with identical file update patterns (README, GeneratorDataRec.json, book pages, site docs, RSCG.json exports).
  • PR #414: Adds another RSCG example following the same templated approach across documentation, metadata, code examples, and site configuration files.

Poem

🐰 The253rd hops into view so bright,
FastCloner swift, both deep and light,
Through docs and code, from source to clone,
A rabbit-approved addition, now full-grown! ✨

🚥 Pre-merge checks | ✅ 1 | ❌ 2
❌ Failed checks (1 warning, 1 inconclusive)
Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
Title check ❓ Inconclusive The title 'example' is vague and generic, providing no meaningful information about the changeset. It does not describe the primary change of adding the FastCloner RSCG documentation example. Replace the title with a descriptive, specific summary such as 'Add FastCloner RSCG example' or 'Add FastCloner documentation and examples to RSCG repository'.
✅ Passed checks (1 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.

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

✨ Finishing touches
  • 📝 Generate docstrings
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch FastCloner

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

@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: 6

🤖 Fix all issues with AI agents
In `@v2/book/examples/FastCloner.html`:
- Around line 5-12: Update all anchor elements that use target="_blank" (e.g.,
the three <a> tags linking to https://www.nuget.org/packages/FastCloner/ and
https://github.com/lofcz/FastCloner/ in FastCloner.html) to include
rel="noopener noreferrer"; locate each <a ... target="_blank"> in this file
(including the other occurrences around lines 67-77) and add rel="noopener
noreferrer" so external links opened in a new tab are protected against
reverse-tabnabbing.
- Around line 23-63: The <img> tags in FastCloner.html lack alt attributes, so
add meaningful alt text to each image tag (e.g., for
src="images/FastCloner/CloneData.csproj.png" use alt="Screenshot:
CloneData.csproj", for Program.cs/Person.cs and each generated/* PNG use
alt="Screenshot: Program.cs source", "Screenshot: Person.cs source",
"Screenshot: ClonableAttribute.g.cs", etc.) so screen readers get context;
update each <img> element in the FastCloner.html snippet (refer to the src
values shown) with an appropriate short descriptive alt string or an empty
alt="" if the image is purely decorative.

In `@v2/rscg_examples_site/docs/indexRSCG.md`:
- Line 23: The markdown link text "[FastCloner by Matěj Štágl
](/docs/FastCloner)" contains a trailing space before the closing bracket which
triggers MD039; edit the link text to remove the space so it reads "[FastCloner
by Matěj Štágl](/docs/FastCloner)" preserving the URL and other surrounding
content.

In `@v2/rscg_examples/FastCloner/description.json`:
- Around line 15-16: Replace the arrays that currently contain a single empty
string with truly empty arrays for the JSON properties
"excludeDirectoryGenerated" and "includeAdditionalFiles": change [""] to [] so
the consuming code (e.g., OutputFiles.cs) won't treat an empty-string element as
an actual entry and iterate/process it when length > 0 checks are used.

In `@v2/rscg_examples/FastCloner/src/.tours/FastCloner.tour`:
- Around line 13-53: The tour uses a placeholder pattern "this is the code" for
CloneData/Person.cs and CloneData/Program.cs and references Dolly-generated
files that FastCloner does not emit; update the steps to use real matching
patterns from the source (e.g., use "class Person" or a unique property name
from Person.cs for the Person.cs step and use "static void Main" or the
program's exact console output text for Program.cs) and replace or remove the
Dolly entries under obj/GX/... and instead point to the FastCloner-generated
outputs (e.g., CloneData_Person_FastDeepClone.g.cs under
obj/GX/FastCloner.SourceGenerator/...) so the tour highlights actual lines; also
update the step descriptions to reflect the new generator names (FastCloner) and
correct file names so links and highlights work.

In `@v2/rscg_examples/FastCloner/video.json`:
- Around line 35-36: The JSON object containing "typeStep":"browser" and arg
"https://ignatandrei.github.io/RSCG_Examples/v2/docs/FastCloner#download-example-net--c-"
has an invalid entry SpeakTest=" " (uses = instead of JSON syntax); fix it by
replacing SpeakTest=" " with a valid JSON property (e.g., "SpeakTest": ""), or
remove the SpeakTest entry entirely so the object becomes valid JSON.
🧹 Nitpick comments (2)
v2/RSCGExamplesData/GeneratorDataRec.json (1)

1530-1537: Minor formatting inconsistency.

The FastCloner entry has an extra blank line (line 1532) between the opening brace and the "ID" field, which is inconsistent with other entries in the file. This doesn't affect functionality but could be cleaned up for consistency.

🧹 Suggested formatting fix
   },
   {
-
     "ID":"FastCloner",
     "Category":29,
     "dtStart":"2026-02-01T00:00:00",
     "show":true
   }
v2/rscg_examples_site/docs/RSCG-Examples/FastCloner.md (1)

1-692: Excellent comprehensive documentation for FastCloner!

This is a thorough and well-structured documentation page that covers:

  • Project overview with badges
  • Detailed feature descriptions
  • Getting started guide with both reflection and source generator approaches
  • Advanced usage scenarios
  • Code examples with tabs for different files
  • Generated code samples

The documentation follows the existing site patterns and provides developers with everything they need to understand and use FastCloner.

📝 Optional: Address markdown style warnings

Static analysis flagged a few minor markdown style inconsistencies:

  1. Emphasis style (lines 64, 382): Consider using asterisks * instead of underscores _ for emphasis to match the expected style
  2. Missing code fence languages (lines 528, 586): Add language identifiers to fenced code blocks
  3. Code block style (line 578): Use fenced code blocks instead of indented blocks for consistency
  4. Link spacing (line 675): Remove extra spaces inside link text

These are purely stylistic and don't affect functionality, so they can be addressed at your discretion.

Comment on lines +5 to +12
Nuget : <a href="https://www.nuget.org/packages/FastCloner/" target="_blank">https://www.nuget.org/packages/FastCloner/</a>

<p>You can find more details at : <a href="https://github.com/lofcz/FastCloner/" target="_blank"> https://github.com/lofcz/FastCloner/</a></p>

<p>Author :Matěj Štágl</p>

<p>Source: <a href="https://github.com/lofcz/FastCloner/" target="_blank">https://github.com/lofcz/FastCloner/</a> </p>

Copy link

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟡 Minor

Add rel="noopener noreferrer" to external links that open new tabs.

Prevents reverse-tabnabbing when using target="_blank".

✅ Suggested fix
- Nuget : <a href="https://www.nuget.org/packages/FastCloner/" target="_blank">https://www.nuget.org/packages/FastCloner/</a>
+ Nuget : <a href="https://www.nuget.org/packages/FastCloner/" target="_blank" rel="noopener noreferrer">https://www.nuget.org/packages/FastCloner/</a>

- <p>You can find more details at : <a href="https://github.com/lofcz/FastCloner/" target="_blank"> https://github.com/lofcz/FastCloner/</a></p>
+ <p>You can find more details at : <a href="https://github.com/lofcz/FastCloner/" target="_blank" rel="noopener noreferrer"> https://github.com/lofcz/FastCloner/</a></p>

- <p>Source: <a href="https://github.com/lofcz/FastCloner/" target="_blank">https://github.com/lofcz/FastCloner/</a> </p>
+ <p>Source: <a href="https://github.com/lofcz/FastCloner/" target="_blank" rel="noopener noreferrer">https://github.com/lofcz/FastCloner/</a> </p>

- <a target="_blank" href='https://ignatandrei.github.io/RSCG_Examples/v2/docs/FastCloner'>
+ <a target="_blank" rel="noopener noreferrer" href='https://ignatandrei.github.io/RSCG_Examples/v2/docs/FastCloner'>

- <a target="_blank" href='https://ignatandrei.github.io/RSCG_Examples/v2/docs/List-of-RSCG'>
+ <a target="_blank" rel="noopener noreferrer" href='https://ignatandrei.github.io/RSCG_Examples/v2/docs/List-of-RSCG'>

Also applies to: 67-77

🤖 Prompt for AI Agents
In `@v2/book/examples/FastCloner.html` around lines 5 - 12, Update all anchor
elements that use target="_blank" (e.g., the three <a> tags linking to
https://www.nuget.org/packages/FastCloner/ and
https://github.com/lofcz/FastCloner/ in FastCloner.html) to include
rel="noopener noreferrer"; locate each <a ... target="_blank"> in this file
(including the other occurrences around lines 67-77) and add rel="noopener
noreferrer" so external links opened in a new tab are protected against
reverse-tabnabbing.

Comment on lines +23 to +63
<img src="images/FastCloner/CloneData.csproj.png" width="580" height="580" />

<h3>This was for me the <b>starting</b> code</h3>

<br />
I have <b>coded</b> the file Program.cs
<br />
<img src="images/FastCloner/csFiles/Program.cs.png" width="580" height="580" />
<hr />

<br />
I have <b>coded</b> the file Person.cs
<br />
<img src="images/FastCloner/csFiles/Person.cs.png" width="580" height="580" />
<hr />
<h3>And here are the <i>generated</i> files</h3>

<br />
The file <i>generated</i> is ClonableAttribute.g.cs
<br />
<img src="images/FastCloner/generated/ClonableAttribute.g.cs.png" width="580" height="580" />

<br />
The file <i>generated</i> is CloneIgnoreAttribute.g.cs
<br />
<img src="images/FastCloner/generated/CloneIgnoreAttribute.g.cs.png" width="580" height="580" />

<br />
The file <i>generated</i> is IClonable.g.cs
<br />
<img src="images/FastCloner/generated/IClonable.g.cs.png" width="580" height="580" />

<br />
The file <i>generated</i> is Person.g.cs
<br />
<img src="images/FastCloner/generated/Person.g.cs.png" width="580" height="580" />

<br />
The file <i>generated</i> is CloneData_Person_FastDeepClone.g.cs
<br />
<img src="images/FastCloner/generated/CloneData_Person_FastDeepClone.g.cs.png" width="580" height="580" />
Copy link

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟡 Minor

Add alt text for images to improve accessibility.

Screen readers currently get no context for these images.

♿ Suggested fix (example pattern)
- <img src="images/FastCloner/CloneData.csproj.png" width="580" height="580" />
+ <img src="images/FastCloner/CloneData.csproj.png" width="580" height="580" alt="CloneData.csproj reference to FastCloner" />

- <img src="images/FastCloner/csFiles/Program.cs.png" width="580" height="580" />
+ <img src="images/FastCloner/csFiles/Program.cs.png" width="580" height="580" alt="Program.cs starter code" />

- <img src="images/FastCloner/csFiles/Person.cs.png" width="580" height="580" />
+ <img src="images/FastCloner/csFiles/Person.cs.png" width="580" height="580" alt="Person.cs starter code" />

- <img src="images/FastCloner/generated/ClonableAttribute.g.cs.png" width="580" height="580" />
+ <img src="images/FastCloner/generated/ClonableAttribute.g.cs.png" width="580" height="580" alt="Generated ClonableAttribute.g.cs" />

- <img src="images/FastCloner/generated/CloneIgnoreAttribute.g.cs.png" width="580" height="580" />
+ <img src="images/FastCloner/generated/CloneIgnoreAttribute.g.cs.png" width="580" height="580" alt="Generated CloneIgnoreAttribute.g.cs" />

- <img src="images/FastCloner/generated/IClonable.g.cs.png" width="580" height="580" />
+ <img src="images/FastCloner/generated/IClonable.g.cs.png" width="580" height="580" alt="Generated IClonable.g.cs" />

- <img src="images/FastCloner/generated/Person.g.cs.png" width="580" height="580" />
+ <img src="images/FastCloner/generated/Person.g.cs.png" width="580" height="580" alt="Generated Person.g.cs" />

- <img src="images/FastCloner/generated/CloneData_Person_FastDeepClone.g.cs.png" width="580" height="580" />
+ <img src="images/FastCloner/generated/CloneData_Person_FastDeepClone.g.cs.png" width="580" height="580" alt="Generated CloneData_Person_FastDeepClone.g.cs" />
📝 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
<img src="images/FastCloner/CloneData.csproj.png" width="580" height="580" />
<h3>This was for me the <b>starting</b> code</h3>
<br />
I have <b>coded</b> the file Program.cs
<br />
<img src="images/FastCloner/csFiles/Program.cs.png" width="580" height="580" />
<hr />
<br />
I have <b>coded</b> the file Person.cs
<br />
<img src="images/FastCloner/csFiles/Person.cs.png" width="580" height="580" />
<hr />
<h3>And here are the <i>generated</i> files</h3>
<br />
The file <i>generated</i> is ClonableAttribute.g.cs
<br />
<img src="images/FastCloner/generated/ClonableAttribute.g.cs.png" width="580" height="580" />
<br />
The file <i>generated</i> is CloneIgnoreAttribute.g.cs
<br />
<img src="images/FastCloner/generated/CloneIgnoreAttribute.g.cs.png" width="580" height="580" />
<br />
The file <i>generated</i> is IClonable.g.cs
<br />
<img src="images/FastCloner/generated/IClonable.g.cs.png" width="580" height="580" />
<br />
The file <i>generated</i> is Person.g.cs
<br />
<img src="images/FastCloner/generated/Person.g.cs.png" width="580" height="580" />
<br />
The file <i>generated</i> is CloneData_Person_FastDeepClone.g.cs
<br />
<img src="images/FastCloner/generated/CloneData_Person_FastDeepClone.g.cs.png" width="580" height="580" />
<img src="images/FastCloner/CloneData.csproj.png" width="580" height="580" alt="CloneData.csproj reference to FastCloner" />
<h3>This was for me the <b>starting</b> code</h3>
<br />
I have <b>coded</b> the file Program.cs
<br />
<img src="images/FastCloner/csFiles/Program.cs.png" width="580" height="580" alt="Program.cs starter code" />
<hr />
<br />
I have <b>coded</b> the file Person.cs
<br />
<img src="images/FastCloner/csFiles/Person.cs.png" width="580" height="580" alt="Person.cs starter code" />
<hr />
<h3>And here are the <i>generated</i> files</h3>
<br />
The file <i>generated</i> is ClonableAttribute.g.cs
<br />
<img src="images/FastCloner/generated/ClonableAttribute.g.cs.png" width="580" height="580" alt="Generated ClonableAttribute.g.cs" />
<br />
The file <i>generated</i> is CloneIgnoreAttribute.g.cs
<br />
<img src="images/FastCloner/generated/CloneIgnoreAttribute.g.cs.png" width="580" height="580" alt="Generated CloneIgnoreAttribute.g.cs" />
<br />
The file <i>generated</i> is IClonable.g.cs
<br />
<img src="images/FastCloner/generated/IClonable.g.cs.png" width="580" height="580" alt="Generated IClonable.g.cs" />
<br />
The file <i>generated</i> is Person.g.cs
<br />
<img src="images/FastCloner/generated/Person.g.cs.png" width="580" height="580" alt="Generated Person.g.cs" />
<br />
The file <i>generated</i> is CloneData_Person_FastDeepClone.g.cs
<br />
<img src="images/FastCloner/generated/CloneData_Person_FastDeepClone.g.cs.png" width="580" height="580" alt="Generated CloneData_Person_FastDeepClone.g.cs" />
🤖 Prompt for AI Agents
In `@v2/book/examples/FastCloner.html` around lines 23 - 63, The <img> tags in
FastCloner.html lack alt attributes, so add meaningful alt text to each image
tag (e.g., for src="images/FastCloner/CloneData.csproj.png" use alt="Screenshot:
CloneData.csproj", for Program.cs/Person.cs and each generated/* PNG use
alt="Screenshot: Program.cs source", "Screenshot: Person.cs source",
"Screenshot: ClonableAttribute.g.cs", etc.) so screen readers get context;
update each <img> element in the FastCloner.html snippet (refer to the src
values shown) with an appropriate short descriptive alt string or an empty
alt="" if the image is purely decorative.


| No | Name | Date | Category |
| --------- | ----- | ---- | -------- |
|253| [FastCloner by Matěj Štágl ](/docs/FastCloner)|2026-02-01 => 01 February 2026 | [Clone](/docs/Categories/Clone) |
Copy link

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 the link text to satisfy MD039.

🛠️ Suggested fix
-|253| [FastCloner by Matěj Štágl ](/docs/FastCloner)|2026-02-01 => 01 February 2026 | [Clone](/docs/Categories/Clone) |
+|253| [FastCloner by Matěj Štágl](/docs/FastCloner)|2026-02-01 => 01 February 2026 | [Clone](/docs/Categories/Clone) |
📝 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
|253| [FastCloner by Matěj Štágl ](/docs/FastCloner)|2026-02-01 => 01 February 2026 | [Clone](/docs/Categories/Clone) |
|253| [FastCloner by Matěj Štágl](/docs/FastCloner)|2026-02-01 => 01 February 2026 | [Clone](/docs/Categories/Clone) |
🧰 Tools
🪛 markdownlint-cli2 (0.20.0)

[warning] 23-23: Spaces inside link text

(MD039, no-space-in-links)

🤖 Prompt for AI Agents
In `@v2/rscg_examples_site/docs/indexRSCG.md` at line 23, The markdown link text
"[FastCloner by Matěj Štágl ](/docs/FastCloner)" contains a trailing space
before the closing bracket which triggers MD039; edit the link text to remove
the space so it reads "[FastCloner by Matěj Štágl](/docs/FastCloner)" preserving
the URL and other surrounding content.

Comment on lines +15 to +16
"excludeDirectoryGenerated":[""],
"includeAdditionalFiles":[""]
Copy link

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:

rg -n '"excludeDirectoryGenerated"' v2/rscg_examples/*/description.json -A 1 | head -30

Repository: ignatandrei/RSCG_Examples

Length of output: 1861


🏁 Script executed:

rg -n '"includeAdditionalFiles"' v2/rscg_examples/*/description.json -A 1 | head -30

Repository: ignatandrei/RSCG_Examples

Length of output: 1545


🏁 Script executed:

# Check the FastCloner file itself to see the context
cat v2/rscg_examples/FastCloner/description.json

Repository: ignatandrei/RSCG_Examples

Length of output: 604


🏁 Script executed:

# Search for code that consumes these fields
rg -r '"excludeDirectoryGenerated"|"includeAdditionalFiles"' --type json,cs,ts,js -l | head -20

Repository: ignatandrei/RSCG_Examples

Length of output: 465


🏁 Script executed:

# Look for code that processes or consumes these array fields
rg 'excludeDirectoryGenerated|includeAdditionalFiles' -t cs -t ts -t js | head -20

Repository: ignatandrei/RSCG_Examples

Length of output: 1164


Use empty arrays instead of arrays with empty strings.

[""] creates an array containing one empty string element, while [] creates a truly empty array. The consuming code in OutputFiles.cs checks length > 0 before iteration, meaning [""] (length=1) will enter the loop and process an empty string, while [] (length=0) correctly skips processing. To match the semantic intent of "no directories to exclude" and "no additional files to include", use empty arrays.

🔧 Proposed fix
-      "excludeDirectoryGenerated":[""],
-      "includeAdditionalFiles":[""]
+      "excludeDirectoryGenerated":[],
+      "includeAdditionalFiles":[]
📝 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
"excludeDirectoryGenerated":[""],
"includeAdditionalFiles":[""]
"excludeDirectoryGenerated":[],
"includeAdditionalFiles":[]
🤖 Prompt for AI Agents
In `@v2/rscg_examples/FastCloner/description.json` around lines 15 - 16, Replace
the arrays that currently contain a single empty string with truly empty arrays
for the JSON properties "excludeDirectoryGenerated" and
"includeAdditionalFiles": change [""] to [] so the consuming code (e.g.,
OutputFiles.cs) won't treat an empty-string element as an actual entry and
iterate/process it when length > 0 checks are used.

Comment on lines +13 to +53
,{
"file": "CloneData/Person.cs",
"description": "File Person.cs ",
"pattern": "this is the code"
}

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


,{
"file": "CloneData/obj/GX/FastCloner.SourceGenerator/FastCloner.SourceGenerator.FastClonerIncrementalGenerator/CloneData_Person_FastDeepClone.g.cs",
"description": "Generated File 5 from 5 : CloneData_Person_FastDeepClone.g.cs ",
"line": 1
}

,{
"file": "CloneData/obj/GX/Dolly/Dolly.DollyGenerator/Person.g.cs",
"description": "Generated File 4 from 5 : Person.g.cs ",
"line": 1
}

,{
"file": "CloneData/obj/GX/Dolly/Dolly.DollyGenerator/IClonable.g.cs",
"description": "Generated File 3 from 5 : IClonable.g.cs ",
"line": 1
}

,{
"file": "CloneData/obj/GX/Dolly/Dolly.DollyGenerator/CloneIgnoreAttribute.g.cs",
"description": "Generated File 2 from 5 : CloneIgnoreAttribute.g.cs ",
"line": 1
}

,{
"file": "CloneData/obj/GX/Dolly/Dolly.DollyGenerator/ClonableAttribute.g.cs",
"description": "Generated File 1 from 5 : ClonableAttribute.g.cs ",
"line": 1
Copy link

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟡 Minor

Update CodeTour patterns and generated-file references to match FastCloner output.
Lines 14-23 use the placeholder pattern "this is the code" which doesn’t exist in Person.cs or Program.cs, so those steps won’t highlight. Also, Lines 33-53 point to Dolly-generated files; if FastCloner doesn’t emit those paths, those steps will be broken or misleading.

Suggested pattern fixes
-        "pattern": "this is the code"
+        "pattern": "FastClonerClonable"
-        "pattern": "this is the code"
+        "pattern": "FastDeepClone"
📝 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
,{
"file": "CloneData/Person.cs",
"description": "File Person.cs ",
"pattern": "this is the code"
}
,{
"file": "CloneData/Program.cs",
"description": "File Program.cs \r\n>> dotnet run --project CloneData/CloneData.csproj ",
"pattern": "this is the code"
}
,{
"file": "CloneData/obj/GX/FastCloner.SourceGenerator/FastCloner.SourceGenerator.FastClonerIncrementalGenerator/CloneData_Person_FastDeepClone.g.cs",
"description": "Generated File 5 from 5 : CloneData_Person_FastDeepClone.g.cs ",
"line": 1
}
,{
"file": "CloneData/obj/GX/Dolly/Dolly.DollyGenerator/Person.g.cs",
"description": "Generated File 4 from 5 : Person.g.cs ",
"line": 1
}
,{
"file": "CloneData/obj/GX/Dolly/Dolly.DollyGenerator/IClonable.g.cs",
"description": "Generated File 3 from 5 : IClonable.g.cs ",
"line": 1
}
,{
"file": "CloneData/obj/GX/Dolly/Dolly.DollyGenerator/CloneIgnoreAttribute.g.cs",
"description": "Generated File 2 from 5 : CloneIgnoreAttribute.g.cs ",
"line": 1
}
,{
"file": "CloneData/obj/GX/Dolly/Dolly.DollyGenerator/ClonableAttribute.g.cs",
"description": "Generated File 1 from 5 : ClonableAttribute.g.cs ",
"line": 1
,{
"file": "CloneData/Person.cs",
"description": "File Person.cs ",
"pattern": "FastClonerClonable"
}
,{
"file": "CloneData/Program.cs",
"description": "File Program.cs \r\n>> dotnet run --project CloneData/CloneData.csproj ",
"pattern": "FastDeepClone"
}
,{
"file": "CloneData/obj/GX/FastCloner.SourceGenerator/FastCloner.SourceGenerator.FastClonerIncrementalGenerator/CloneData_Person_FastDeepClone.g.cs",
"description": "Generated File 5 from 5 : CloneData_Person_FastDeepClone.g.cs ",
"line": 1
}
,{
"file": "CloneData/obj/GX/Dolly/Dolly.DollyGenerator/Person.g.cs",
"description": "Generated File 4 from 5 : Person.g.cs ",
"line": 1
}
,{
"file": "CloneData/obj/GX/Dolly/Dolly.DollyGenerator/IClonable.g.cs",
"description": "Generated File 3 from 5 : IClonable.g.cs ",
"line": 1
}
,{
"file": "CloneData/obj/GX/Dolly/Dolly.DollyGenerator/CloneIgnoreAttribute.g.cs",
"description": "Generated File 2 from 5 : CloneIgnoreAttribute.g.cs ",
"line": 1
}
,{
"file": "CloneData/obj/GX/Dolly/Dolly.DollyGenerator/ClonableAttribute.g.cs",
"description": "Generated File 1 from 5 : ClonableAttribute.g.cs ",
"line": 1
🤖 Prompt for AI Agents
In `@v2/rscg_examples/FastCloner/src/.tours/FastCloner.tour` around lines 13 - 53,
The tour uses a placeholder pattern "this is the code" for CloneData/Person.cs
and CloneData/Program.cs and references Dolly-generated files that FastCloner
does not emit; update the steps to use real matching patterns from the source
(e.g., use "class Person" or a unique property name from Person.cs for the
Person.cs step and use "static void Main" or the program's exact console output
text for Program.cs) and replace or remove the Dolly entries under obj/GX/...
and instead point to the FastCloner-generated outputs (e.g.,
CloneData_Person_FastDeepClone.g.cs under obj/GX/FastCloner.SourceGenerator/...)
so the tour highlights actual lines; also update the step descriptions to
reflect the new generator names (FastCloner) and correct file names so links and
highlights work.

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

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🔴 Critical

Fix invalid JSON: SpeakTest is not a valid key/value entry.

The file won’t parse as JSON, so the script won’t run.

🛠️ Proposed fix
-{"typeStep":"browser","arg":"https://ignatandrei.github.io/RSCG_Examples/v2/docs/FastCloner#download-example-net--c-",
-SpeakTest=" "},
+{"typeStep":"browser","arg":"https://ignatandrei.github.io/RSCG_Examples/v2/docs/FastCloner#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/FastCloner#download-example-net--c-",
SpeakTest=" "},
{"typeStep":"browser","arg":"https://ignatandrei.github.io/RSCG_Examples/v2/docs/FastCloner#download-example-net--c-","SpeakTest":" "},
🧰 Tools
🪛 Biome (2.3.13)

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

(parse)


[error] 36-36: unexpected character =

(parse)


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

Remove " "

(parse)


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

Remove }

(parse)

🤖 Prompt for AI Agents
In `@v2/rscg_examples/FastCloner/video.json` around lines 35 - 36, The JSON object
containing "typeStep":"browser" and arg
"https://ignatandrei.github.io/RSCG_Examples/v2/docs/FastCloner#download-example-net--c-"
has an invalid entry SpeakTest=" " (uses = instead of JSON syntax); fix it by
replacing SpeakTest=" " with a valid JSON property (e.g., "SpeakTest": ""), or
remove the SpeakTest entry entirely so the object becomes valid JSON.

@ignatandrei ignatandrei merged commit 67a8673 into main Feb 3, 2026
3 checks passed
@ignatandrei ignatandrei deleted the FastCloner branch February 3, 2026 05:43
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