- logic/Hopyo_Picks.ts: 장부 짝 줄 제안 = 고른 것 모두(기초 둘 · 입력값 그대로) - Hopyo_Rows.ts: 단산 줄 = 판정과 상관없이 블록 풀이 칩(장부 짝 제안 있음 줄도) · 이름 없는 후보 = 키 - Hopyo_Block.ts: 기초 칩 = 키로 끄고 켬(장부 고른 것 → 블록 풀이 바인딩 · 입력 필요 다시 보임) - Hopyo_SheetSk.ts: 단가산출 판 아래에도 [옮기기](같은 캐시) — 호표 목록 판이 숨는 탭 - logic/Hopyo_SheetMap.ts · SheetNav · Sheet: 판정 화면 확인함 · 만든 SC 호표 줄 = 초록(밖 줄 그대로) · 확인 바뀜 = 다시 칠 - 시험: test_642_6 장부 짝 · 줄 칠 · helper_642_6 칠 셈 · helper_778_5 Rows 대역 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
35 lines
1.5 KiB
JavaScript
35 lines
1.5 KiB
JavaScript
/* 642-6(PLAN 785-6) — `logic/M02_MasterTemplete_Hopyo_Picks.ts`(판정 화면 고름 캐시 순수 셈)를 트랜스파일해 Node 로 돌림.
|
|
* stdin = {steps: [{fn, args, mod?}]} — args 안 `{"$": i}` = i 번째 걸음 결과 · `{"$none": 1}` = () => null ·
|
|
* `{"$set": [[번, 차례]]}` = (번, 차례) => 그 짝 있음 · mod "SheetMap" = 칠 셈 · stdout = 걸음 결과 배열 JSON(Map → 객체). */
|
|
const fs = require("fs");
|
|
const path = require("path");
|
|
const { makeLoader } = require("./helper_ts_stub_loader.cjs");
|
|
|
|
const ROOT = path.join(__dirname, "..", "..");
|
|
const { loadTs } = makeLoader({ root: ROOT });
|
|
const picks = loadTs(
|
|
path.join(ROOT, "M02_MasterTemplete", "logic", "M02_MasterTemplete_Hopyo_Picks.ts"),
|
|
);
|
|
const map = loadTs(
|
|
path.join(ROOT, "M02_MasterTemplete", "logic", "M02_MasterTemplete_Hopyo_SheetMap.ts"),
|
|
);
|
|
const input = JSON.parse(fs.readFileSync(0, "utf8"));
|
|
const out = [];
|
|
const ref = (v) =>
|
|
v && typeof v === "object"
|
|
? "$none" in v
|
|
? () => null
|
|
: "$set" in v
|
|
? (a, b) => v.$set.some(([x, y]) => x === a && y === b)
|
|
: "$" in v && Object.keys(v).length === 1
|
|
? out[v.$]
|
|
: Array.isArray(v)
|
|
? v.map(ref)
|
|
: Object.fromEntries(Object.entries(v).map(([k, x]) => [k, ref(x)]))
|
|
: v;
|
|
for (const s of input.steps)
|
|
out.push((s.mod === "SheetMap" ? map : picks)[s.fn](...ref(s.args)) ?? null);
|
|
process.stdout.write(
|
|
JSON.stringify(out, (_k, v) => (v instanceof Map ? Object.fromEntries(v) : v)),
|
|
);
|