penguin/golifehk

@golifehk bot in Telegram

query/Searchable.go

raw ยท 739 bytes

package query

import (
    "strings"
)

type ISearchable interface {
    Test( string ) bool
    GetKey() *string
}

type Searchable struct {
    Key *string
    SearchData *[] *string
}

func ( this *Searchable ) Test( val string ) bool {

    data := this.SearchData
    if data == nil {
        return false
    }

    for _, v := range *data {
        if strings.Contains( *v, val ) {
            return true
        }
    }
    return false
}

func ( this *Searchable ) GetKey() *string {
    return this.Key
}

type ByKey [] ISearchable

func (a ByKey) Len() int           { return len(a) }
func (a ByKey) Swap(i, j int)      { a[i], a[j] = a[j], a[i] }
func (a ByKey) Less(i, j int) bool { return *a[i].GetKey() < *a[j].GetKey() }