PreParsePostFormat
プリパース/ポストフォーマットを使用すると、パーサーの前にインプットを処理したり、フォーマッターの後で文字列出力を処理したりできます。moment.jsのロケールと同様の動作に基づいています。
注:このプラグインは、(その機能に依存しているため)その前にlocaleDataプラグインをインポートする必要があります。
注:このプラグインは、設計上、相対時間プラグインにも影響を与えます(moment.jsの実装動作を模倣します)。
サンプル使用
例:特にARロケールでは、アラビア数字をサポートするために使用されます。
// 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, '،')
},
// ...
}
// ...
テストでは、これが十分に明確でない場合に、プラグインの使用方法についてより良いアイデアを得ることができます;)。