diff options
-rw-r--r-- | unxml.go | 24 |
1 files changed, 21 insertions, 3 deletions
@@ -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 + } + } } } } |