fix(mdx-variable-regex): user variable display in SuperHub read mode #250
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