-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathsteamSearchQueryMap.go
More file actions
53 lines (46 loc) · 1.41 KB
/
steamSearchQueryMap.go
File metadata and controls
53 lines (46 loc) · 1.41 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
package main
import (
"regexp"
"strings"
"github.com/PuerkitoBio/goquery"
)
type SteamSearchQueryMap map[string]*SteamSearchKeyValue
func NewSteamSearchQueryMap(s *goquery.Selection) *SteamSearchQueryMap {
replacer := strings.NewReplacer("/", "-", "\\", "-", " ", "-", "&", "and", "+", "-")
regexp := regexp.MustCompile(`-{2,}`)
steamSearchQueryMap := &SteamSearchQueryMap{}
s.Each(func(i int, s *goquery.Selection) {
dataParam, ok := s.Attr("data-param")
if ok != true {
return
}
dataValue, ok := s.Attr("data-value")
if ok != true {
return
}
dataLoc, ok := s.Attr("data-loc")
if ok != true {
return
}
dataLoc = replacer.Replace(dataLoc)
dataLoc = strings.ToUpper(dataLoc)
dataLoc = regexp.ReplaceAllString(dataLoc, "")
steamSearchQueryMap.Add(dataLoc, dataParam, dataValue)
})
return steamSearchQueryMap
}
func (steamSearchQueryMap *SteamSearchQueryMap) Add(dataLoc, dataParam, dataValue string) bool {
ok := steamSearchQueryMap.Has(dataLoc)
if ok != true {
(*steamSearchQueryMap)[dataLoc] = NewSteamSearchKeyValue(dataParam, dataValue)
}
return (ok == false)
}
func (steamSearchQueryMap *SteamSearchQueryMap) Get(dataLoc string) (*SteamSearchKeyValue, bool) {
steamSearchKeyValue, ok := (*steamSearchQueryMap)[dataLoc]
return steamSearchKeyValue, ok
}
func (steamSearchQueryMap *SteamSearchQueryMap) Has(dataLoc string) bool {
_, ok := steamSearchQueryMap.Get(dataLoc)
return ok
}