PreParsePostFormat
Pre-parse / Post-format은 파싱 전에 입력값을 처리하고, 포맷팅 후에 문자열 출력을 처리할 수 있도록 해줍니다. 이는 moment.js 로케일의 유사한 동작을 기반으로 합니다.
참고: 이 플러그인은 localeData
플러그인의 기능에 의존하므로, 사용하기 전에 localeData
플러그인을 먼저 가져와야 합니다.
참고: 이 플러그인은 상대 시간 플러그인에도 영향을 미칩니다. 이는 의도된 동작입니다 (moment.js의 구현을 따름).
Sample usage
예시: AR 로케일에서 아라비아 숫자를 지원하는 데 사용됩니다.
javascript
// Arabic [ar]
import dayjs from 'dayjs';
import preParsePostFormat from 'dayjs/plugin/preParsePostFormat';
dayjs.extend(preParsePostFormat);
const months =
'يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split(
'_'
);
const symbolMap = {
1: '١',
2: '٢',
3: '٣',
4: '٤',
5: '٥',
6: '٦',
7: '٧',
8: '٨',
9: '٩',
0: '٠',
};
const numberMap = {
'١': '1',
'٢': '2',
'٣': '3',
'٤': '4',
'٥': '5',
'٦': '6',
'٧': '7',
'٨': '8',
'٩': '9',
'٠': '0',
};
const locale = {
name: 'ar',
// ...
preparse(string) {
return string
.replace(/[١٢٣٤٥٦٧٨٩٠]/g, match => numberMap[match])
.replace(/،/g, ',');
},
postformat(string) {
return string.replace(/\d/g, match => symbolMap[match]).replace(/,/g, '،');
},
// ...
};
// ...
이 설명이 충분히 명확하지 않다면, 테스트 코드가 플러그인 사용 방법에 대한 좋은 참고 자료가 될 것입니다.