pagser icon indicating copy to clipboard operation
pagser copied to clipboard

`->eq()` should return a Selection if it's followed by something else?

Open rjp opened this issue 4 years ago • 1 comments

type Item struct {
       Title       string `pagser:"td->eq(0)"`
       Image       string `pagser:"td a img->attr(src)"`
       Quote       string `pagser:"td->eq(3)"`
       Description string `pagser:"td->eq(4)"`
}

If I put td->eq(2) in the tag for Image, I get the text() for the full tr. But without the ->eq(2), it's possible I may end up with a different image. Ideally don't want to make a sub-struct just for this one field if possible.

(Happy to have a go at implementing this if it's actually possible.)

rjp avatar Oct 22 '20 17:10 rjp

Sorry, you can define function():


type Item struct {
       Image       string `pagser:"td->ImgAttr()"`
}

func (i Item) ImgAttr(node *goquery.Selection, args ...string) (out interface{}, err error) {
	return node.Eq(2).Find("img").AttrOr("src", ""), nil
}

foolin avatar Oct 23 '20 03:10 foolin