Files
golifehk/datasources/cjlookup/CChar.go

79 lines
1.2 KiB
Go

package cjlookup
import (
query "github.com/tgckpg/golifehk/query"
"golang.org/x/exp/slices"
"strconv"
)
type CChar struct {
Face string
CangJie string
JyutPing *CJyutPing
DukJam *[]*DukJam
_JiDukJam *[]*CJyutPing
query.Searchable
}
type DukJam struct {
Weight int
JyutPing *CJyutPing
}
type CJyutPing struct {
Roman string
SearchKey string // Searchable key
TungJamZi *[]*CChar
tSorted bool
query.Searchable
}
func (this *CJyutPing) Test(val string) bool {
_, err := strconv.Atoi(val)
if err == nil {
return true
}
return false
}
func (this *CChar) Test(val string) bool {
_, err := strconv.Atoi(val)
if err == nil {
return true
}
return false
}
func (this *CChar) JiDukJam() *[]*CJyutPing {
if this._JiDukJam == nil {
jdj := &[]*CJyutPing{}
for _, dj := range *this.DukJam {
if dj.JyutPing != this.JyutPing {
*jdj = append(*jdj, dj.JyutPing)
}
}
this._JiDukJam = jdj
}
return this._JiDukJam
}
func (this *CJyutPing) SortedTungJamZi() *[]*CChar {
if this.tSorted {
return this.TungJamZi
}
slices.SortFunc(*this.TungJamZi, func(a, b *CChar) int {
switch {
case a.Face < b.Face:
return -1
case a.Face > b.Face:
return 1
default:
return 0
}
})
return this.TungJamZi
}