summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--unxml.go24
1 files changed, 21 insertions, 3 deletions
diff --git a/unxml.go b/unxml.go
index 347b139..bf81ec3 100644
--- a/unxml.go
+++ b/unxml.go
@@ -107,14 +107,32 @@ func (r *Reader) Read(out []byte) (int, error) {
}
case html.StartTagToken:
+ raw := r.tokenizer.Raw()
+ //fmt.Fprintf(os.Stderr, "RawToken: %s\n", raw)
+
tn, _ := r.tokenizer.TagName()
+ //fmt.Fprintf(os.Stderr, "TagName: %s\n", tn)
+
if _, ok := r.tagmap[string(tn)]; ok {
+ n := copy(out[r.count:], raw)
+ r.count += n
+ if n < len(raw) {
+ r.lastread = raw[n:]
+ return r.count, nil
+ }
}
- //fmt.Printf("TagName: %s\n", tn)
case html.EndTagToken:
- _, _ = r.tokenizer.TagName()
- //fmt.Printf("TagEndName: %s\n", tn)
+ raw := r.tokenizer.Raw()
+ tn, _ := r.tokenizer.TagName()
+ if _, ok := r.tagmap[string(tn)]; ok {
+ n := copy(out[r.count:], raw)
+ r.count += n
+ if n < len(raw) {
+ r.lastread = raw[n:]
+ return r.count, nil
+ }
+ }
}
}
}