internal/ucd: added CommentHandler option
This is used parsing the idna table, which categorizes tests
in the comments.
Change-Id: I95ea73a6f9de1e15bf680f4538e03ab3c74954b2
Reviewed-on: https://go-review.googlesource.com/30551
Run-TryBot: Marcel van Lohuizen <mpvl@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
diff --git a/internal/ucd/ucd.go b/internal/ucd/ucd.go
index 2b0d1a1..60b27d5 100644
--- a/internal/ucd/ucd.go
+++ b/internal/ucd/ucd.go
@@ -78,6 +78,14 @@
}
}
+// The CommentHandler option passes comments that are on a line by itself to
+// a given handler.
+func CommentHandler(f func(s string)) Option {
+ return func(p *Parser) {
+ p.commentHandler = f
+ }
+}
+
// A Parser parses Unicode Character Database (UCD) files.
type Parser struct {
scanner *bufio.Scanner
@@ -92,7 +100,8 @@
parsedRange bool
rangeStart, rangeEnd rune
- partHandler func(p *Parser)
+ partHandler func(p *Parser)
+ commentHandler func(s string)
}
func (p *Parser) setError(err error) {
@@ -138,7 +147,13 @@
for p.scanner.Scan() {
b := p.scanner.Bytes()
- if len(b) == 0 || b[0] == '#' {
+ if len(b) == 0 {
+ continue
+ }
+ if b[0] == '#' {
+ if p.commentHandler != nil {
+ p.commentHandler(strings.TrimSpace(string(b[1:])))
+ }
continue
}