mirror of
https://github.com/prdlk/leetcode.git
synced 2026-09-17 15:36:26 +00:00
2.6 KiB
2.6 KiB
description
| description |
|---|
| Sync work/ leetcode solutions into docs/solutions/ pages (gold standard format) |
Sync every leetcode solution under work/ into a docs page under docs/solutions/, formatted like the gold standard docs/solutions/(two-pointers)/344-reverse-string.mdx. Extra focus (optional): $@
Run the script
The port is fully scripted — do not hand-write pages:
bun run sync
scripts/sync.ts does the whole pipeline:
- Globs
work/**/*.{js,py}(<number>.<kebab-slug>.{js,py}underwork/<Difficulty>/<Category>/) and groups the two language variants of a problem by leetcode number. - Parses each file's header comment (js block comment / py docstring) into title, difficulty, statement, examples, constraints, and follow-up.
- New problems get a full page at
docs/solutions/(<category>)/<leetcode-number>-<kebab-slug>.mdx: frontmatter,<Badge>topic (README curriculum table, falling back to thework/subdirectory),::::warningfor follow-ups/special requirements, examples, constraints, and the solution code verbatim. (<category>)is the kebab-casedwork/subdirectory ((array),(hash-table),(two-pointers), …) and becomes the sidebar group; the leetcode-number filename prefix orders pages numerically. Both are stripped from the URL ((two-pointers)/344-reverse-string.mdx→/solutions/reverse-string). The script moves any page whose path drifts from this scheme.- Frontmatter
titlekeeps the number ('344. Reverse String');sidebar.labelis the number-free problem name. The script backfills a missingsidebar.labelon existing pages but never overwrites one. - Already-ported pages (frontmatter title starts with the leetcode number) only get their
## Solutionsection regenerated — curated prose is never touched. - Problems solved in both languages render as a
<CodeGroup>(Python first, then JavaScript); single-language solutions render as a plain fence.
The script prints the report table: work file → docs page → created / moved / updated / skipped (already in sync).
Review
Skim any created pages — the prose transforms (backticking literals in example explanations, warning detection) are heuristic. Fix wording by editing the page prose directly; it won't be overwritten on the next sync. Never edit inside ## Solution — that section is owned by the script and synced from work/.
Verify
bunx blume build --isolatedmust succeed with no new warnings; confirm each new route generated (/solutions/<slug>).- Spot-check one new page's built HTML for the badge, callout (when present), and solution code.
rm -rf .blume-verifywhen done.