수학 26 · 논리/글/찾기/세기 22 함수 · 엑셀 숫자 형식 코드 해석기 · 채우기 핸들(복사 · 등차 연속 · 글 끝번호 · 식 상대이동) 구현. 자기 시험 69건(resources/tester/test_spreadsheet_b.py, vite ssr 번들 → node) 전부 통과. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01RrQ65VtGZbae2VKgYVMhmc
25 lines
1.4 KiB
TypeScript
25 lines
1.4 KiB
TypeScript
/* =============================================================================
|
|
* spreadsheet_functions.ts (주인 B)
|
|
* 함수 표 — 이름(대문자) → 뜻. 몸은 `spreadsheet_functions_math.ts` · `_misc.ts` 에 두고 여기서 모음.
|
|
* 1단계 약 45 — 수학 SUM PRODUCT SUMPRODUCT ROUND ROUNDUP ROUNDDOWN INT TRUNC CEILING FLOOR ABS MOD
|
|
* POWER SQRT PI SIN COS TAN ASIN ACOS ATAN RADIANS DEGREES MIN MAX AVERAGE · 논리 IF AND OR NOT IFERROR ·
|
|
* 글 CONCATENATE FIXED TEXT LEN LEFT RIGHT MID VALUE · 찾기 VLOOKUP HLOOKUP INDEX MATCH CHOOSE ·
|
|
* 세기 COUNT COUNTA COUNTIF SUMIF. 뜻 · 경계값은 엑셀과 같게(Formula.js 는 시험 대조 답으로만).
|
|
* 없는 이름 = `#NAME?` · 인자 수가 min · max 밖이면 A 의 eval 이 `#VALUE!` + 까닭(엑셀은 입력을 막음).
|
|
* ========================================================================== */
|
|
|
|
import type { SheetFunction } from "./spreadsheet_types";
|
|
import { MATH_FUNCTIONS } from "./spreadsheet_functions_math";
|
|
import { MISC_FUNCTIONS } from "./spreadsheet_functions_misc";
|
|
|
|
const TABLE: Record<string, SheetFunction> = { ...MATH_FUNCTIONS, ...MISC_FUNCTIONS };
|
|
|
|
export function getFunction(name: string): SheetFunction | undefined {
|
|
return TABLE[name.toUpperCase()];
|
|
}
|
|
|
|
/** 아는 함수 이름 전부(가나다 · 자동 완성은 2단계) */
|
|
export function functionNames(): string[] {
|
|
return Object.keys(TABLE).sort();
|
|
}
|