From 071a2ac83565054e96a80e45a326451a884e73d8 Mon Sep 17 00:00:00 2001 From: Timothy Jaeryang Baek Date: Tue, 29 Jul 2025 17:08:47 +0400 Subject: [PATCH] fix: python format issue --- src/lib/components/common/CodeEditor.svelte | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/src/lib/components/common/CodeEditor.svelte b/src/lib/components/common/CodeEditor.svelte index 6f178fdc65..e722f592cf 100644 --- a/src/lib/components/common/CodeEditor.svelte +++ b/src/lib/components/common/CodeEditor.svelte @@ -127,9 +127,14 @@ let timeout; const worker = getPyodideWorker(); + const startTag = `--||CODE-START-${id}||--`; + const endTag = `--||CODE-END-${id}||--`; + const script = ` import black +print("${startTag}") print(black.format_str("""${code.replace(/\\/g, '\\\\').replace(/`/g, '\\`').replace(/"/g, '\\"')}""", mode=black.Mode())) +print("${endTag}") `; const packages = ['black']; @@ -144,7 +149,20 @@ print(black.format_str("""${code.replace(/\\/g, '\\\\').replace(/`/g, '\\`').rep if (stderr) { reject(stderr); } else { - const formatted = stdout && typeof stdout === 'string' ? stdout.trim() : ''; + function extractBetweenDelimiters(stdout, start, end) { + console.log('stdout', stdout); + const startIdx = stdout.indexOf(start); + const endIdx = stdout.indexOf(end, startIdx + start.length); + if (startIdx === -1 || endIdx === -1) return null; + return stdout.slice(startIdx + start.length, endIdx).trim(); + } + + const formatted = extractBetweenDelimiters( + stdout && typeof stdout === 'string' ? stdout : '', + startTag, + endTag + ); + resolve({ code: formatted }); } }