diff options
author | Ryo Nihei <nihei.dev@gmail.com> | 2021-11-23 22:15:54 +0900 |
---|---|---|
committer | Ryo Nihei <nihei.dev@gmail.com> | 2021-11-24 01:04:19 +0900 |
commit | bedf0c1c72a2e13e08fbaa221b8a4c3ccf3a57a7 (patch) | |
tree | 642095852ff2e1b6d616e1cbc781d07f3d03d833 /ucd | |
parent | Fix key of generalCategoryCodePoints map (diff) | |
download | tre-bedf0c1c72a2e13e08fbaa221b8a4c3ccf3a57a7.tar.gz tre-bedf0c1c72a2e13e08fbaa221b8a4c3ccf3a57a7.tar.xz |
Support White_Space property (Meet RL1.2 of UTS #18 partially)
Diffstat (limited to 'ucd')
-rw-r--r-- | ucd/prop_list.go | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/ucd/prop_list.go b/ucd/prop_list.go new file mode 100644 index 0000000..cd4a7fe --- /dev/null +++ b/ucd/prop_list.go @@ -0,0 +1,34 @@ +package ucd + +import "io" + +type PropList struct { + WhiteSpace []*CodePointRange +} + +// ParsePropList parses the PropList.txt. +func ParsePropList(r io.Reader) (*PropList, error) { + 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) + } + if p.err != nil { + return nil, p.err + } + + return &PropList{ + WhiteSpace: ws, + }, nil +} |