diff --git a/resources/tester/test_est_native_export.py b/resources/tester/test_est_native_export.py index a7cc4682e..2012553c0 100644 --- a/resources/tester/test_est_native_export.py +++ b/resources/tester/test_est_native_export.py @@ -101,6 +101,17 @@ def test_quantity_document_edit_across_character_styles_preserves_tags(): assert result == {"same": True, "tags": True} +def test_quantity_document_edit_across_styles_and_separate_marker(): + script = r"""const q=require('./tools/est-test/native-quantity.cjs'),w=require('./tools/est-test/export-quantity.cjs'); + const doc='
abcdef6
'; + const old=q.fromWpt('A','문서',doc,[],{}),edited=structuredClone(old); + edited.rows[0].LineData=edited.rows[0].LineData.replace('bcde','변경').replace('6','12'); + const next=w.editDocument(doc,old,edited),again=q.fromWpt('A','문서',next,[],{}),tags=x=>x.match(/<[^>]*>/g); + process.stdout.write(JSON.stringify({same:JSON.stringify(again)===JSON.stringify(edited),tags:JSON.stringify(tags(doc))===JSON.stringify(tags(next))}));""" + result = json.loads(subprocess.check_output(["node", "-e", script], cwd=ROOT).decode("utf-8")) + assert result == {"same": True, "tags": True} + + def test_multiple_quantity_text_segments_preserve_original_tags_when_sample_exists(): sample = Path("C:/Dasansoft/Est Plus 2/Data/ProjectData/main.estx") if not sample.exists(): diff --git a/tools/est-test/export-quantity.cjs b/tools/est-test/export-quantity.cjs index 56ce016c0..7167ae5c0 100644 --- a/tools/est-test/export-quantity.cjs +++ b/tools/est-test/export-quantity.cjs @@ -121,7 +121,9 @@ function editDocument(text, oldSheet, sheet) { if (previous[i] === next[i]) continue; previous[i] = next[i]; const updated = { ...current, LineData: previous.join("") }; - const patched = editRun(candidate, current, updated, parse); + const patched = + editRun(candidate, current, updated, parse) || + editStyledRuns(candidate, current, updated, parse); if (!patched) break; candidate = patched; current = updated;