| /** | |
| * Manim code cleanup helpers. | |
| */ | |
| import { replaceFullwidthOutsideStrings, replaceLineWithDashedLine } from './manim-code-cleaner/rules' | |
| type CleanupResult = { | |
| code: string | |
| changes: string[] | |
| } | |
| export function cleanManimCode(code: string): CleanupResult { | |
| let cleaned = code | |
| const changes: string[] = [] | |
| if (cleaned.includes('\uFEFF')) { | |
| cleaned = cleaned.replace(/\uFEFF/g, '') | |
| changes.push('remove-bom') | |
| } | |
| if (cleaned.includes('\uFFFD')) { | |
| cleaned = cleaned.replace(/\uFFFD/g, '') | |
| changes.push('remove-replacement-char') | |
| } | |
| const fullwidthResult = replaceFullwidthOutsideStrings(cleaned) | |
| if (fullwidthResult.replaced > 0) { | |
| cleaned = fullwidthResult.code | |
| changes.push(`normalize-fullwidth-punctuation:${fullwidthResult.replaced}`) | |
| } else { | |
| cleaned = fullwidthResult.code | |
| } | |
| const dashedResult = replaceLineWithDashedLine(cleaned) | |
| if (dashedResult.changed > 0) { | |
| cleaned = dashedResult.code | |
| changes.push(`line-to-dashedline:${dashedResult.changed}`) | |
| } | |
| return { code: cleaned, changes } | |
| } | |