Skip to content

Support complex revision tables in overlay#50

Merged
AryaHassanli merged 2 commits intoproject-chip:mainfrom
AryaHassanli:support-complex-tables-in-overlay
Mar 17, 2026
Merged

Support complex revision tables in overlay#50
AryaHassanli merged 2 commits intoproject-chip:mainfrom
AryaHassanli:support-complex-tables-in-overlay

Conversation

@AryaHassanli
Copy link
Copy Markdown
Contributor

@AryaHassanli AryaHassanli commented Mar 17, 2026

Add support for some complex table structures in overlay.
Using ifdefs in table cells is partially supported now. Here's what works and what doesn't:

Example 1: ✅ What Works (Continuous Directive Flows)

Continuous directives inside an a| cell behave correctly. They can even be nested under an outer row-level ifdef.

ifdef::in-progress,improved-capabilities-tcr,device-location[]
| 6 
a|
ifdef::in-progress,improved-capabilities-tcr[]
             Adopt latest version of base cluster (Basic Information) +
endif::[]
ifdef::in-progress,device-location[]
             Added DeviceLocation
endif::[]
endif::[]
  • Why it works: The inner ifdefs follow each other consecutively. They aggregate neatly into consecutive block representations without breaking the continuous flow that allows the parser to close the cell.

Example 2: ❌ What Breaks (Intercalated Content Breaks)

Interspersing "loose" strings or raw paragraph text between inner block directives inside the cell will cause the table parser to fail.

ifdef::in-progress,improved-capabilities-tcr,device-location[]
| 6 
a|
ifdef::in-progress,improved-capabilities-tcr[]
             Adopt latest version of base cluster (Basic Information) +
endif::[]
Middle text +   <-- ❌ THIS BREAKS PARSING
ifdef::in-progress,device-location[]
             Added DeviceLocation
endif::[]
endif::[]

@AryaHassanli AryaHassanli requested a review from a team as a code owner March 17, 2026 21:52
@gemini-code-assist
Copy link
Copy Markdown
Contributor

Summary of Changes

Hello, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed!

This pull request significantly enhances the AsciiDoc overlay parsing mechanism to correctly handle conditional content, such as ifdef and ifndef directives, when they are embedded within complex table structures. By refining how conditional blocks are tracked and processed, the changes ensure that revision tables with dynamic content are accurately interpreted and rendered, improving the robustness of AsciiDoc document overlays.

Highlights

  • Enhanced Conditional Block Handling: The conditionalBlock struct now includes an addToCell field, allowing the system to track whether conditional content should be considered part of a table cell during parsing.
  • Improved preparseFile Logic: The preparseFile function has been updated to correctly determine the addToCell state for IfDef, IfNDef, and IfEval elements, leveraging a new helper function to identify conditional content within tables.
  • New isContentIfDef Function: A new isContentIfDef function was introduced to accurately detect if a conditional block (like IfDef or IfNDef) directly contains TableRow elements within a Table, which is crucial for supporting complex revision tables.
  • Simplified Table Cell Reading: An unnecessary check for empty cell elements was removed from the ReadValueByIndex function in matter/spec/table_info.go, streamlining the process of reading table cell values.

🧠 New Feature in Public Preview: You can now enable Memory to help Gemini Code Assist learn from your team's feedback. This makes future code reviews more consistent and personalized to your project's style. Click here to enable Memory in your admin console.

Changelog
  • asciidoc/overlay/overlay.go
    • Modified preparseFile to update addToCell state for conditional elements (IfDef, IfNDef, IfEval) using the new isContentIfDef function.
    • Added isContentIfDef function to check for conditional blocks containing table row content.
    • Updated EndIf processing to restore the addToCell state from the conditional block stack.
  • asciidoc/overlay/state.go
    • Added addToCell boolean field to the conditionalBlock struct.
  • matter/spec/table_info.go
    • Removed redundant check for empty cellElements in ReadValueByIndex function.
Using Gemini Code Assist

The full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips.

Invoking Gemini

You can request assistance from Gemini at any point by creating a comment using either /gemini <command> or @gemini-code-assist <command>. Below is a summary of the supported commands on the current page.

Feature Command Description
Code Review /gemini review Performs a code review for the current pull request in its current state.
Pull Request Summary /gemini summary Provides a summary of the current pull request in its current state.
Comment @gemini-code-assist Responds in comments when explicitly tagged, both in pull request comments and review comments.
Help /gemini help Displays a list of available commands.

Customization

To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a .gemini/ folder in the base of the repository. Detailed instructions can be found here.

Limitations & Feedback

Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with 👍 and 👎 on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for GitHub and other Google products, sign up here.

You can also get AI-powered code generation, chat, as well as code reviews directly in the IDE at no cost with the Gemini Code Assist IDE Extension.

Footnotes

  1. Review the Privacy Notices, Generative AI Prohibited Use Policy, Terms of Service, and learn how to configure Gemini Code Assist in GitHub here. Gemini can make mistakes, so double check it and use code with caution.

Copy link
Copy Markdown
Contributor

@gemini-code-assist gemini-code-assist bot left a comment

Choose a reason for hiding this comment

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

Code Review

This pull request enhances the overlay logic to better support complex conditional structures within tables, particularly for revision history. The changes involve tracking addToCell state across conditional blocks and introducing a new helper function, isContentIfDef, to determine if a conditional block is defining cell content rather than table rows. The logic appears sound. I've added a few comments to clean up the new function by removing unused parameters.

@AryaHassanli AryaHassanli merged commit 453cc52 into project-chip:main Mar 17, 2026
3 checks passed
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