blob: 31db70c5e8cb78103d18166a3d45111ea8af0457 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
|
package ucd
import "io"
type PropList struct {
OtherAlphabetic []*CodePointRange
OtherLowercase []*CodePointRange
OtherUppercase []*CodePointRange
WhiteSpace []*CodePointRange
}
// ParsePropList parses the PropList.txt.
func ParsePropList(r io.Reader) (*PropList, error) {
var oa []*CodePointRange
var ol []*CodePointRange
var ou []*CodePointRange
var ws []*CodePointRange
p := newParser(r)
for p.parse() {
if len(p.fields) == 0 {
continue
}
cp, err := p.fields[0].codePointRange()
if err != nil {
return nil, err
}
switch p.fields[1].symbol() {
case "Other_Alphabetic":
oa = append(oa, cp)
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{
OtherAlphabetic: oa,
OtherLowercase: ol,
OtherUppercase: ou,
WhiteSpace: ws,
}, nil
}
|