aboutsummaryrefslogtreecommitdiff
path: root/ucd/prop_list.go
diff options
context:
space:
mode:
authorRyo Nihei <nihei.dev@gmail.com>2021-11-25 21:18:34 +0900
committerRyo Nihei <nihei.dev@gmail.com>2021-11-25 21:18:34 +0900
commit6ebbc8f9829bf0f3127367769c662d1a8f881a2d (patch)
treee45af1104e3ce736134353c1805fe0c91d04998a /ucd/prop_list.go
parentSupport White_Space property (Meet RL1.2 of UTS #18 partially) (diff)
downloadtre-6ebbc8f9829bf0f3127367769c662d1a8f881a2d.tar.gz
tre-6ebbc8f9829bf0f3127367769c662d1a8f881a2d.tar.xz
Support Lowercase and Uppercase property (Meet RL1.2 of UTS #18 partially)
Diffstat (limited to 'ucd/prop_list.go')
-rw-r--r--ucd/prop_list.go25
1 files changed, 18 insertions, 7 deletions
diff --git a/ucd/prop_list.go b/ucd/prop_list.go
index cd4a7fe..1ceaaea 100644
--- a/ucd/prop_list.go
+++ b/ucd/prop_list.go
@@ -3,32 +3,43 @@ package ucd
import "io"
type PropList struct {
- WhiteSpace []*CodePointRange
+ OtherLowercase []*CodePointRange
+ OtherUppercase []*CodePointRange
+ WhiteSpace []*CodePointRange
}
// ParsePropList parses the PropList.txt.
func ParsePropList(r io.Reader) (*PropList, error) {
+ var ol []*CodePointRange
+ var ou []*CodePointRange
var ws []*CodePointRange
p := newParser(r)
for p.parse() {
if len(p.fields) == 0 {
continue
}
- if p.fields[1].symbol() != "White_Space" {
- continue
- }
-
+
cp, err := p.fields[0].codePointRange()
if err != nil {
return nil, err
}
- ws = append(ws, cp)
+
+ switch p.fields[1].symbol() {
+ case "Other_Lowercase":
+ ol = append(ol, cp)
+ case "Other_Uppercase":
+ ou = append(ou, cp)
+ case "White_Space":
+ ws = append(ws, cp)
+ }
}
if p.err != nil {
return nil, p.err
}
return &PropList{
- WhiteSpace: ws,
+ OtherLowercase: ol,
+ OtherUppercase: ou,
+ WhiteSpace: ws,
}, nil
}