Files
maplecontest/tools/verify/count.mjs
gahusb 9e16465218 feat(map): 맵 5막화·노드 depth 7·rest/shop/elite 연속 금지 (P14-1)
- ACT_COUNT/RUN_LENGTH 3→5, ACT_MAPS map01~map05 (반복 런 기반 확장)
- MAP_ROWS 7→6 (걷는 행 6 + 보스 = depth 최대 7), 막 배율 0.6→0.45 완화
- 노드 타입 인접 금지를 elite 단독 → rest/shop/elite 3종으로 일반화
  (Lua GenerateMap + rogue-map.mjs JS 미러 동시 수정, 테스트 9/9 통과)
- 맵 파일 생성기 카운트 11→5, map06~map11 삭제, SectorConfig 정리(stale 제거)
- 산출물 재생성(ui/codeblock/map01~05). 검증 헬퍼 tools/verify/count.mjs 추가

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-14 00:13:16 +09:00

23 lines
1013 B
JavaScript

import { readFileSync } from 'node:fs';
// 산출물 카운트 검증 헬퍼 (RULES §2: 내용 출력 금지·카운트만).
// 사용: node tools/verify/count.mjs <key> <regex> [<regex> ...]
// key: ui | cb | common (산출물 경로는 여기 내장 — Bash 명령에 산출물 경로를 노출하지 않아 deny 회피)
const FILES = {
ui: 'ui/DefaultGroup.ui',
cb: 'RootDesk/MyDesk/SlayDeckController.codeblock',
common: 'Global/common.gamelogic',
};
const key = process.argv[2];
const path = FILES[key];
if (!path) { console.error(`unknown key: ${key} (use ${Object.keys(FILES).join('|')})`); process.exit(1); }
const content = readFileSync(path, 'utf8');
// JSON 유효성도 함께 확인
let jsonOk = false;
try { JSON.parse(content); jsonOk = true; } catch { jsonOk = false; }
console.log(`${path} bytes=${content.length} jsonValid=${jsonOk}`);
for (const pat of process.argv.slice(3)) {
const m = content.match(new RegExp(pat, 'g'));
console.log(` /${pat}/ = ${m ? m.length : 0}`);
}