ManimCat / src /utils /manim-code-cleaner.ts
Bin29's picture
Sync from main: c1ef036 chore: document docker persistence volumes
94e1b2f
/**
* 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 }
}