"""EST 테스트 앱 수량산출 누계(원본 ActionAdd Ctrl+U 0x11155c4, 재계산 때 F·a 표지 다시 계산).""" import json import subprocess from pathlib import Path ROOT = Path(__file__).resolve().parents[2] FILES = [ "native-math.js", "native-formula.js", "native-text.js", "native-quantity-total.js", "native-quantity.cjs", ] SCRIPT = r"""(() => { const sheet = { Code: 'N1', options: { digits: 2, roundMode: 2 }, items: [ { Code: 'r000001' }, { Code: 'r000002' }, { Code: 'r000003' }, { Code: 'r000004' }], rows: [ { LineData: ' \x0e터파기\x0e 2×3 = \x126\x12', markers: ['r000001'] }, { LineData: ' 1.5×2 = \x123\x12', markers: ['r000002'] }, { LineData: ' \x16999\x16', markers: [], totals: ['F000001'] }, { LineData: ' 4×1 = \x124\x12', markers: ['r000003'] }, { LineData: ' 0.3333×1 = \x120.33\x12', markers: ['r000004'] }, { LineData: ' \x160\x16', markers: [], totals: ['F00000222'] } ] }; const out = EstQuantity.calculate(sheet); const totals = out.rows.map((r) => (r.LineData.match(/\x16([^\x16]*)\x16/) || [])[1]).filter(Boolean); sheet.rows[0].LineData = sheet.rows[0].LineData.replace('2×3', '200×30'); const big = EstQuantity.calculate(sheet).rows[2].LineData.match(/\x16([^\x16]*)\x16/)[1]; const fresh = { Code: 'N2', options: { digits: 1, roundMode: 1 }, items: [], rows: [{ LineData: ' 끝', markers: [] }] }; const name = EstQuantityTotal.insert(fresh, 0, 1); let inside = ''; try { EstQuantityTotal.insert(fresh, 0, 4); } catch (e) { inside = e.message.slice(0, 5); } const parsed = EstQuantity.fromWpt('N9', '시험', '