refactor: deduplicate numericOnly and DuckDuckGo result extraction
All checks were successful
CI / build (pull_request) Successful in 29s
CI / vet (pull_request) Successful in 1m1s
CI / test (pull_request) Successful in 1m4s

- Extract identical numericOnly inline functions from powerball and
  megamillions into shared sites/internal/parse.NumericOnly with tests
- Extract duplicated DuckDuckGo result parsing from Search() and
  GetResults() into shared extractResults() helper

Closes #13, #14

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-02-15 16:26:54 +00:00
parent 384566e016
commit 132817144e
6 changed files with 57 additions and 84 deletions

View File

@@ -18,9 +18,14 @@ type searchPage struct {
}
func (s searchPage) GetResults() ([]Result, error) {
return extractResults(s.doc)
}
// extractResults parses search results from a DuckDuckGo results page.
func extractResults(doc extractor.Node) ([]Result, error) {
var res []Result
err := s.doc.ForEach(`article[id^="r1-"]`, func(n extractor.Node) error {
err := doc.ForEach(`article[id^="r1-"]`, func(n extractor.Node) error {
var r Result
links := n.Select(`a[href][target="_self"]`)