Skip to content

feat: serialize and replace deps#16

Merged
anton62k merged 2 commits intomasterfrom
feat/serialize-and-replace-deps
Jan 28, 2026
Merged

feat: serialize and replace deps#16
anton62k merged 2 commits intomasterfrom
feat/serialize-and-replace-deps

Conversation

@anton62k
Copy link
Contributor

@anton62k anton62k commented Jan 28, 2026

Summary by cubic

Adds serializeAst and replaceDependencies to convert ASTs back to expression strings and remap dependency paths, enabling safer refactors and tooling. Updates exports, docs, and tests.

  • New Features
    • serializeAst: converts AST to an expression string with correct precedence; roundtrip-safe.
    • replaceDependencies: returns a new AST with remapped paths; supports identifiers, dot/bracket, index, wildcard, root, and relative paths.
    • Public API exports for both utilities.
    • README/SPEC updated with examples; comprehensive unit tests added.

Written for commit 7508b05. Summary will update on new commits. Review in cubic

Copy link

@cubic-dev-ai cubic-dev-ai bot left a comment

Choose a reason for hiding this comment

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

4 issues found across 8 files

Prompt for AI agents (all issues)

Check if these issues are valid — if so, understand the root cause of each and fix them.


<file name="src/__tests__/replace-dependencies.spec.ts">

<violation number="1" location="src/__tests__/replace-dependencies.spec.ts:243">
P2: The assertion contradicts the test intent: it expects the function name to be replaced. If function names should not be treated as dependencies, this should assert the original function name remains unchanged.</violation>
</file>

<file name="README.md">

<violation number="1" location="README.md:57">
P2: The new README examples call `parseFormula` without importing it, so the snippet won't run when copied. Add `parseFormula` to the imports in these examples.</violation>
</file>

<file name="src/ohm/core/serialize-ast.ts">

<violation number="1" location="src/ohm/core/serialize-ast.ts:58">
P2: String escaping is incomplete - newlines, tabs, and other control characters in `node.value` will not be escaped, potentially producing invalid output.</violation>

<violation number="2" location="src/ohm/core/serialize-ast.ts:100">
P1: `serializeTernaryChild` doesn't wrap nested ternary expressions, causing incorrect serialization. An AST like `(a ? b : c) ? d : e` would serialize to `a ? b : c ? d : e`, which parses with different associativity.</violation>
</file>

Reply with feedback, questions, or to request a fix. Tag @cubic-dev-ai to re-run a review.

@sonarqubecloud
Copy link

@anton62k anton62k merged commit a00b473 into master Jan 28, 2026
3 checks passed
@anton62k anton62k deleted the feat/serialize-and-replace-deps branch January 28, 2026 14:18
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