penguin/golifehk

@golifehk bot in Telegram

datasources/mtr/bus/BusStop.go

raw ยท 1383 bytes

package bus

import (
    i18n "github.com/tgckpg/golifehk/i18n"
)

type BusStop struct {
    RouteId string
    Direction string
    StationSeq int
    StationId string
    Latitude float64
    Longtitude float64
    Name_zh string
    Name_en string

    // RouteStops[ StationSeq ] = BusStop
    RouteStops *map[int] *BusStop

    i18n.Generics
}

func ( this *BusStop ) PrevStop() *BusStop {
    if v, hasKey := (*this.RouteStops)[ this.StationSeq - 1 ]; hasKey {
        return v
    }
    return nil
}

func ( this *BusStop ) NextStop() *BusStop {
    if v, hasKey := (*this.RouteStops)[ this.StationSeq + 1 ]; hasKey {
        return v
    }
    return nil
}

func ( this *BusStop ) Reload() {
    i18n_Name := map[string] string{}
    i18n_Name["en"] = this.Name_en
    i18n_Name["zh-Hant"] = this.Name_zh

    searchData := [] *string{}
    searchData = append( searchData, &this.Name_en )
    searchData = append( searchData, &this.Name_zh )

    this.Name = &i18n_Name
    this.Key = &this.RouteId
    this.SearchData = &searchData
}

type ByRoute [] *BusStop

func (a ByRoute) Len() int           { return len(a) }
func (a ByRoute) Swap(i, j int)      { a[i], a[j] = a[j], a[i] }
func (a ByRoute) Less(i, j int) bool {
    _a := *a[i]
    _b := *a[j]
    if _a.RouteId == _b.RouteId {
        return _a.Direction < _b.Direction
    }
    return _a.RouteId < _b.RouteId
}