Skip to content

Commit a6f73ee

Browse files
committed
Add CultureNameKoKR enumeration value
- Update unit tests - Support apply number format for the Korean Danki calendar
1 parent 86dc939 commit a6f73ee

File tree

3 files changed

+30
-4
lines changed

3 files changed

+30
-4
lines changed

calc.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16381,6 +16381,7 @@ func (fn *formulaFuncs) DOLLAR(argsList *list.List) formulaArg {
1638116381
CultureNameUnknown: "$",
1638216382
CultureNameEnUS: "$",
1638316383
CultureNameJaJP: "¥",
16384+
CultureNameKoKR: "\u20a9",
1638416385
CultureNameZhCN: "¥",
1638516386
CultureNameZhTW: "NT$",
1638616387
}[fn.f.options.CultureInfo]

excelize_test.go

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -870,11 +870,15 @@ func TestSetCellStyleCurrencyNumberFormat(t *testing.T) {
870870
}
871871

872872
func TestSetCellStyleLangNumberFormat(t *testing.T) {
873-
rawCellValues := [][]string{{"45162"}, {"45162"}, {"45162"}, {"45162"}, {"45162"}, {"45162"}, {"45162"}, {"45162"}, {"45162"}, {"45162"}, {"45162"}, {"45162"}, {"45162"}, {"45162"}, {"45162"}, {"45162"}, {"45162"}, {"45162"}, {"45162"}, {"45162"}, {"45162"}, {"45162"}, {"45162"}, {"45162"}, {"45162"}, {"45162"}, {"45162"}, {"45162"}, {"45162"}, {"45162"}, {"45162"}, {"45162"}, {"45162"}, {"45162"}, {"45162"}, {"45162"}, {"45162"}, {"45162"}, {"45162"}, {"45162"}, {"45162"}, {"45162"}}
873+
rawCellValues := [][]string{make([]string, 42)}
874+
for i := 0; i < 42; i++ {
875+
rawCellValues[0][i] = "45162"
876+
}
874877
for lang, expected := range map[CultureName][][]string{
875878
CultureNameUnknown: rawCellValues,
876879
CultureNameEnUS: {{"8/24/23"}, {"8/24/23"}, {"8/24/23"}, {"8/24/23"}, {"8/24/23"}, {"0:00:00"}, {"0:00:00"}, {"0:00:00"}, {"0:00:00"}, {"45162"}, {"8/24/23"}, {"8/24/23"}, {"8/24/23"}, {"8/24/23"}, {"8/24/23"}, {"8/24/23"}, {"8/24/23"}, {"8/24/23"}, {"8/24/23"}, {"45162"}, {"45162"}, {"45162"}, {"45162"}, {"45162"}, {"45162"}, {"45162"}, {"45162"}, {"45162"}, {"45162"}, {"45162"}, {"45162"}, {"45162"}, {"45162"}, {"45162"}, {"45162"}, {"45162"}, {"45162"}, {"45162"}, {"45162"}, {"45162"}, {"45162"}, {"45162"}},
877880
CultureNameJaJP: {{"R5.8.24"}, {"令和5年8月24日"}, {"令和5年8月24日"}, {"8/24/23"}, {"2023年8月24日"}, {"0時00分"}, {"0時00分00秒"}, {"2023年8月"}, {"8月24日"}, {"R5.8.24"}, {"R5.8.24"}, {"令和5年8月24日"}, {"2023年8月"}, {"8月24日"}, {"令和5年8月24日"}, {"2023年8月"}, {"8月24日"}, {"R5.8.24"}, {"令和5年8月24日"}, {"45162"}, {"45162"}, {"45162"}, {"45162"}, {"45162"}, {"45162"}, {"45162"}, {"45162"}, {"45162"}, {"45162"}, {"45162"}, {"45162"}, {"45162"}, {"45162"}, {"45162"}, {"45162"}, {"45162"}, {"45162"}, {"45162"}, {"45162"}, {"45162"}, {"45162"}, {"45162"}},
881+
CultureNameKoKR: [][]string{[]string{"4356年 08月 24日"}, []string{"08-24"}, []string{"08-24"}, []string{"08-24-56"}, []string{"4356년 08월 24일"}, []string{"0시 00분"}, []string{"0시 00분 00초"}, []string{"4356-08-24"}, []string{"4356-08-24"}, []string{"4356年 08月 24日"}, []string{"4356年 08月 24日"}, []string{"08-24"}, []string{"4356-08-24"}, []string{"4356-08-24"}, []string{"08-24"}, []string{"4356-08-24"}, []string{"4356-08-24"}, []string{"4356年 08月 24日"}, []string{"08-24"}, []string{"45162"}, []string{"45162"}, []string{"45162"}, []string{"45162"}, []string{"45162"}, []string{"45162"}, []string{"45162"}, []string{"45162"}, []string{"45162"}, []string{"45162"}, []string{"45162"}, []string{"45162"}, []string{"45162"}, []string{"45162"}, []string{"45162"}, []string{"45162"}, []string{"45162"}, []string{"45162"}, []string{"45162"}, []string{"45162"}, []string{"45162"}, []string{"45162"}, []string{"45162"}},
878882
CultureNameZhCN: {{"2023年8月"}, {"8月24日"}, {"8月24日"}, {"8/24/23"}, {"2023年8月24日"}, {"0时00分"}, {"0时00分00秒"}, {"上午12时00分"}, {"上午12时00分00秒"}, {"2023年8月"}, {"2023年8月"}, {"8月24日"}, {"2023年8月"}, {"8月24日"}, {"8月24日"}, {"上午12时00分"}, {"上午12时00分00秒"}, {"2023年8月"}, {"8月24日"}, {"45162"}, {"45162"}, {"45162"}, {"45162"}, {"45162"}, {"45162"}, {"45162"}, {"45162"}, {"45162"}, {"45162"}, {"45162"}, {"45162"}, {"45162"}, {"45162"}, {"45162"}, {"45162"}, {"45162"}, {"45162"}, {"45162"}, {"45162"}, {"45162"}, {"45162"}, {"45162"}},
879883
CultureNameZhTW: {{"112/8/24"}, {"112年8月24日"}, {"112年8月24日"}, {"8/24/23"}, {"2023年8月24日"}, {"00時00分"}, {"00時00分00秒"}, {"上午12時00分"}, {"上午12時00分00秒"}, {"112/8/24"}, {"112/8/24"}, {"112年8月24日"}, {"上午12時00分"}, {"上午12時00分00秒"}, {"112年8月24日"}, {"上午12時00分"}, {"上午12時00分00秒"}, {"112/8/24"}, {"112年8月24日"}, {"45162"}, {"45162"}, {"45162"}, {"45162"}, {"45162"}, {"45162"}, {"45162"}, {"45162"}, {"45162"}, {"45162"}, {"45162"}, {"45162"}, {"45162"}, {"45162"}, {"45162"}, {"45162"}, {"45162"}, {"45162"}, {"45162"}, {"45162"}, {"45162"}, {"45162"}, {"45162"}},
880884
} {
@@ -889,6 +893,7 @@ func TestSetCellStyleLangNumberFormat(t *testing.T) {
889893
for lang, expected := range map[CultureName][][]string{
890894
CultureNameEnUS: {{"2023-8-24"}, {"2023-8-24"}, {"2023-8-24"}, {"2023-8-24"}, {"2023-8-24"}, {"00:00:00"}, {"00:00:00"}, {"00:00:00"}, {"00:00:00"}, {"45162"}, {"2023-8-24"}, {"2023-8-24"}, {"2023-8-24"}, {"2023-8-24"}, {"2023-8-24"}, {"2023-8-24"}, {"2023-8-24"}, {"2023-8-24"}, {"2023-8-24"}, {"45162"}, {"45162"}, {"45162"}, {"45162"}, {"45162"}, {"45162"}, {"45162"}, {"45162"}, {"45162"}, {"45162"}, {"45162"}, {"45162"}, {"45162"}, {"45162"}, {"45162"}, {"45162"}, {"45162"}, {"45162"}, {"45162"}, {"45162"}, {"45162"}, {"45162"}, {"45162"}},
891895
CultureNameJaJP: {{"R5.8.24"}, {"令和5年8月24日"}, {"令和5年8月24日"}, {"2023-8-24"}, {"2023年8月24日"}, {"00:00:00"}, {"00:00:00"}, {"2023年8月"}, {"8月24日"}, {"R5.8.24"}, {"R5.8.24"}, {"令和5年8月24日"}, {"2023年8月"}, {"8月24日"}, {"令和5年8月24日"}, {"2023年8月"}, {"8月24日"}, {"R5.8.24"}, {"令和5年8月24日"}, {"45162"}, {"45162"}, {"45162"}, {"45162"}, {"45162"}, {"45162"}, {"45162"}, {"45162"}, {"45162"}, {"45162"}, {"45162"}, {"45162"}, {"45162"}, {"45162"}, {"45162"}, {"45162"}, {"45162"}, {"45162"}, {"45162"}, {"45162"}, {"45162"}, {"45162"}, {"45162"}},
896+
CultureNameKoKR: [][]string{[]string{"4356年 08月 24日"}, []string{"08-24"}, []string{"08-24"}, []string{"4356-8-24"}, []string{"4356년 08월 24일"}, []string{"00:00:00"}, []string{"00:00:00"}, []string{"4356-08-24"}, []string{"4356-08-24"}, []string{"4356年 08月 24日"}, []string{"4356年 08月 24日"}, []string{"08-24"}, []string{"4356-08-24"}, []string{"4356-08-24"}, []string{"08-24"}, []string{"4356-08-24"}, []string{"4356-08-24"}, []string{"4356年 08月 24日"}, []string{"08-24"}, []string{"45162"}, []string{"45162"}, []string{"45162"}, []string{"45162"}, []string{"45162"}, []string{"45162"}, []string{"45162"}, []string{"45162"}, []string{"45162"}, []string{"45162"}, []string{"45162"}, []string{"45162"}, []string{"45162"}, []string{"45162"}, []string{"45162"}, []string{"45162"}, []string{"45162"}, []string{"45162"}, []string{"45162"}, []string{"45162"}, []string{"45162"}, []string{"45162"}, []string{"45162"}},
892897
CultureNameZhCN: {{"2023年8月"}, {"8月24日"}, {"8月24日"}, {"2023-8-24"}, {"2023年8月24日"}, {"00:00:00"}, {"00:00:00"}, {"上午12时00分"}, {"上午12时00分00秒"}, {"2023年8月"}, {"2023年8月"}, {"8月24日"}, {"2023年8月"}, {"8月24日"}, {"8月24日"}, {"上午12时00分"}, {"上午12时00分00秒"}, {"2023年8月"}, {"8月24日"}, {"45162"}, {"45162"}, {"45162"}, {"45162"}, {"45162"}, {"45162"}, {"45162"}, {"45162"}, {"45162"}, {"45162"}, {"45162"}, {"45162"}, {"45162"}, {"45162"}, {"45162"}, {"45162"}, {"45162"}, {"45162"}, {"45162"}, {"45162"}, {"45162"}, {"45162"}, {"45162"}},
893898
CultureNameZhTW: {{"112/8/24"}, {"112年8月24日"}, {"112年8月24日"}, {"2023-8-24"}, {"2023年8月24日"}, {"00:00:00"}, {"00:00:00"}, {"上午12時00分"}, {"上午12時00分00秒"}, {"112/8/24"}, {"112/8/24"}, {"112年8月24日"}, {"上午12時00分"}, {"上午12時00分00秒"}, {"112年8月24日"}, {"上午12時00分"}, {"上午12時00分00秒"}, {"112/8/24"}, {"112年8月24日"}, {"45162"}, {"45162"}, {"45162"}, {"45162"}, {"45162"}, {"45162"}, {"45162"}, {"45162"}, {"45162"}, {"45162"}, {"45162"}, {"45162"}, {"45162"}, {"45162"}, {"45162"}, {"45162"}, {"45162"}, {"45162"}, {"45162"}, {"45162"}, {"45162"}, {"45162"}, {"45162"}},
894899
} {

numfmt.go

Lines changed: 23 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,7 @@ const (
5858
CultureNameUnknown CultureName = iota
5959
CultureNameEnUS
6060
CultureNameJaJP
61+
CultureNameKoKR
6162
CultureNameZhCN
6263
CultureNameZhTW
6364
)
@@ -4648,6 +4649,9 @@ var (
46484649
CultureNameJaJP: func(f *File, numFmtID int) string {
46494650
return f.langNumFmtFuncJaJP(numFmtID)
46504651
},
4652+
CultureNameKoKR: func(f *File, numFmtID int) string {
4653+
return f.langNumFmtFuncKoKR(numFmtID)
4654+
},
46514655
CultureNameZhCN: func(f *File, numFmtID int) string {
46524656
return f.langNumFmtFuncZhCN(numFmtID)
46534657
},
@@ -4727,6 +4731,18 @@ func (f *File) langNumFmtFuncJaJP(numFmtID int) string {
47274731
return langNumFmt["ja-jp"][numFmtID]
47284732
}
47294733

4734+
// langNumFmtFuncKoKR returns number format code by given date and time pattern
4735+
// for country code ko-kr.
4736+
func (f *File) langNumFmtFuncKoKR(numFmtID int) string {
4737+
if numFmtID == 30 && f.options.ShortDatePattern != "" {
4738+
return f.options.ShortDatePattern
4739+
}
4740+
if (32 <= numFmtID && numFmtID <= 33) && f.options.LongTimePattern != "" {
4741+
return f.options.LongTimePattern
4742+
}
4743+
return langNumFmt["ko-kr"][numFmtID]
4744+
}
4745+
47304746
// langNumFmtFuncZhCN returns number format code by given date and time pattern
47314747
// for country code zh-cn.
47324748
func (f *File) langNumFmtFuncZhCN(numFmtID int) string {
@@ -7026,15 +7042,19 @@ func (nf *numberFormat) republicOfChinaYearHandler(token nfp.Token, langInfo lan
70267042
// yearsHandler will be handling years in the date and times types tokens for a
70277043
// number format expression.
70287044
func (nf *numberFormat) yearsHandler(token nfp.Token) {
7045+
langInfo, _ := getSupportedLanguageInfo(nf.localCode)
70297046
if strings.Contains(strings.ToUpper(token.TValue), "Y") {
7047+
year := nf.t.Year()
7048+
if nf.opts != nil && nf.opts.CultureInfo == CultureNameKoKR {
7049+
year += 2333
7050+
}
70307051
if len(token.TValue) <= 2 {
7031-
nf.result += strconv.Itoa(nf.t.Year())[2:]
7052+
nf.result += strconv.Itoa(year)[2:]
70327053
return
70337054
}
7034-
nf.result += strconv.Itoa(nf.t.Year())
7055+
nf.result += strconv.Itoa(year)
70357056
return
70367057
}
7037-
langInfo, _ := getSupportedLanguageInfo(nf.localCode)
70387058
if inStrSlice(langInfo.tags, "zh-TW", false) != -1 ||
70397059
nf.opts != nil && nf.opts.CultureInfo == CultureNameZhTW {
70407060
nf.republicOfChinaYearHandler(token, langInfo)

0 commit comments

Comments
 (0)