fix(mdx-variable-regex): user variable display in SuperHub read mode#250
Merged
erunion merged 3 commits intoDec 23, 2025
Merged
Conversation
- before: `{user.` matches user + any character
- after: `{user\.` matches user + literal dot
- add test cases
6e46b8b to
0a7a204
Compare
erunion
requested changes
Dec 23, 2025
91e0fb6 to
8a458af
Compare
erunion
approved these changes
Dec 23, 2025
Member
|
ill publish this tomorrow morning |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
{user.matches user + any character{user\.matches user + literal dot🧰 Changes
The Bug:
The regex
/\{user.(...)/had an unescaped.afteruser, which matches any character instead of a literal dot. This caused patterns like{userEndpoint}to incorrectly match as a ReadMe variable, where the.matchedEand capturedndpoint.Symptoms:
${userEndpoint}rendered as$NDPOINT${userXYZ}rendered as$YZtokenizeVariables: true)The Fix:
Escape the dot to match only a literal
.character:{user.→ matchesuser+ any character{user\.→ matchesuser+ literal dot onlyAdded test cases to ensure the regex does not match JS template literal patterns without an actual dot after
user.🧬 QA & Testing
Create a doc with a code block containing JS template literals:
const url =
${baseUrl}/${userEndpoint}/login;const ok =
${userXYZ};Save and view the page (both Edit preview and public View)
Expected: Code renders verbatim -
${userEndpoint}and${userXYZ}appear exactly as writtenBefore fix: Variables were mangled -
${userEndpoint}→$NDPOINT,${userXYZ}→$YZRun unit tests:
npm testin thevariablepackage