72 lines
1.7 KiB
TypeScript
72 lines
1.7 KiB
TypeScript
/**
|
|
* 중앙 포맷팅 규칙 정의.
|
|
* 모든 날짜/숫자/통화 포맷은 이 파일의 규칙을 따른다.
|
|
* 변경이 필요하면 이 파일만 수정하면 전체 적용된다.
|
|
*/
|
|
|
|
export interface DateFormatRules {
|
|
/** 날짜만 표시 (예: "2025-01-01") */
|
|
display: string;
|
|
/** 날짜+시간 표시 (예: "2025-01-01 14:30:00") */
|
|
datetime: string;
|
|
/** 입력 필드용 (예: "YYYY-MM-DD") */
|
|
input: string;
|
|
/** 시간만 표시 (예: "14:30") */
|
|
time: string;
|
|
}
|
|
|
|
export interface NumberFormatRules {
|
|
/** 숫자 로케일 (천단위 구분자 등) */
|
|
locale: string;
|
|
/** 기본 소수점 자릿수 */
|
|
decimals: number;
|
|
}
|
|
|
|
export interface CurrencyFormatRules {
|
|
/** 통화 코드 (예: "KRW", "USD") */
|
|
code: string;
|
|
/** 통화 로케일 */
|
|
locale: string;
|
|
}
|
|
|
|
export interface FormatRules {
|
|
date: DateFormatRules;
|
|
number: NumberFormatRules;
|
|
currency: CurrencyFormatRules;
|
|
}
|
|
|
|
/** 기본 포맷 규칙 (한국어 기준) */
|
|
export const DEFAULT_FORMAT_RULES: FormatRules = {
|
|
date: {
|
|
display: "YYYY-MM-DD",
|
|
datetime: "YYYY-MM-DD HH:mm:ss",
|
|
input: "YYYY-MM-DD",
|
|
time: "HH:mm",
|
|
},
|
|
number: {
|
|
locale: "ko-KR",
|
|
decimals: 0,
|
|
},
|
|
currency: {
|
|
code: "KRW",
|
|
locale: "ko-KR",
|
|
},
|
|
};
|
|
|
|
/** 현재 적용 중인 포맷 규칙 (런타임에 변경 가능) */
|
|
let currentRules: FormatRules = { ...DEFAULT_FORMAT_RULES };
|
|
|
|
export function getFormatRules(): FormatRules {
|
|
return currentRules;
|
|
}
|
|
|
|
export function setFormatRules(rules: Partial<FormatRules>): void {
|
|
currentRules = {
|
|
...currentRules,
|
|
...rules,
|
|
date: { ...currentRules.date, ...rules.date },
|
|
number: { ...currentRules.number, ...rules.number },
|
|
currency: { ...currentRules.currency, ...rules.currency },
|
|
};
|
|
}
|