Add product features, Heleket crypto payments and order status icons.
This commit is contained in:
@@ -0,0 +1,66 @@
|
||||
package compare
|
||||
|
||||
import (
|
||||
"strconv"
|
||||
"strings"
|
||||
)
|
||||
|
||||
const maxItems = 2
|
||||
|
||||
func Parse(raw string) []int {
|
||||
if raw == "" {
|
||||
return nil
|
||||
}
|
||||
var ids []int
|
||||
for _, part := range strings.Split(raw, ",") {
|
||||
id, err := strconv.Atoi(strings.TrimSpace(part))
|
||||
if err != nil || id <= 0 {
|
||||
continue
|
||||
}
|
||||
ids = appendUnique(ids, id)
|
||||
}
|
||||
return ids
|
||||
}
|
||||
|
||||
func Format(ids []int) string {
|
||||
if len(ids) == 0 {
|
||||
return ""
|
||||
}
|
||||
parts := make([]string, len(ids))
|
||||
for i, id := range ids {
|
||||
parts[i] = strconv.Itoa(id)
|
||||
}
|
||||
return strings.Join(parts, ",")
|
||||
}
|
||||
|
||||
func Add(raw string, id int) string {
|
||||
if id <= 0 {
|
||||
return raw
|
||||
}
|
||||
ids := Parse(raw)
|
||||
ids = appendUnique(ids, id)
|
||||
if len(ids) > maxItems {
|
||||
ids = ids[len(ids)-maxItems:]
|
||||
}
|
||||
return Format(ids)
|
||||
}
|
||||
|
||||
func Remove(raw string, id int) string {
|
||||
ids := Parse(raw)
|
||||
var next []int
|
||||
for _, v := range ids {
|
||||
if v != id {
|
||||
next = append(next, v)
|
||||
}
|
||||
}
|
||||
return Format(next)
|
||||
}
|
||||
|
||||
func appendUnique(ids []int, id int) []int {
|
||||
for _, v := range ids {
|
||||
if v == id {
|
||||
return ids
|
||||
}
|
||||
}
|
||||
return append(ids, id)
|
||||
}
|
||||
Reference in New Issue
Block a user