From 732494d8e15acf9ac674dee882151a0e2ecd66c2 Mon Sep 17 00:00:00 2001 From: Miles Alan Date: Sat, 3 Jun 2023 21:42:46 -0400 Subject: [PATCH] Refactor - extract ConvertStopTimesMapToArrayStopTimes logic to fn Makes conversion from stop times map to [] stop times functional & further removes dependence on overused Calculator. --- calculator/adjacentPaths.go | 14 ++++++++++++-- calculator/calculator.go | 16 ---------------- calculator/functional.go | 13 +++++++++++++ 3 files changed, 25 insertions(+), 18 deletions(-) diff --git a/calculator/adjacentPaths.go b/calculator/adjacentPaths.go index 95ae4ea..8e41217 100644 --- a/calculator/adjacentPaths.go +++ b/calculator/adjacentPaths.go @@ -26,7 +26,12 @@ func (c *Calculator) adjacentPathsFromWalks(node *types.Node) []StopTimeNodeData walkSpeedKmPerHour = 5.25 distanceSecondsToStation = time.Second * time.Duration(distKm/walkSpeedKmPerHour*60*60) arrivalTimeAtStop = node.EntrypointTime.Add(distanceSecondsToStation) - nextStopTimes = c.nextStopTimesForStops([]*mgtfs.Stop{stop}, arrivalTimeAtStop) + nextStopTimes = ConvertStopTimesMapToArrayStopTimes( + c.NextStopTimesForStopsRouteStopTimeMap( + []*mgtfs.Stop{stop}, + arrivalTimeAtStop, + ), + ) ) for _, st := range nextStopTimes { @@ -59,7 +64,12 @@ func (c *Calculator) adjacentPathsFromTransfers(node *types.Node) []StopTimeNode stopTimeNodeDatas = []StopTimeNodeData{} associatedStop = c.LookupStop(node.StopTime.StopID) transferStops = c.lookupTransfersFromStops(associatedStop) - transferStopTimesForThisStop = c.nextStopTimesForStops(transferStops, util.DurationToTime(node.StopTime.Departure).Add(time.Second*60*10)) + transferStopTimesForThisStop = ConvertStopTimesMapToArrayStopTimes( + c.NextStopTimesForStopsRouteStopTimeMap( + transferStops, + util.DurationToTime(node.StopTime.Departure).Add(time.Second*60*10), + ), + ) ) for _, transferStopTime := range transferStopTimesForThisStop { nextStopTimeOnTransferTrip := c.lookupNextStopTimeInTrip(transferStopTime) diff --git a/calculator/calculator.go b/calculator/calculator.go index 7f4b654..184d5cb 100644 --- a/calculator/calculator.go +++ b/calculator/calculator.go @@ -88,22 +88,6 @@ func (c *Calculator) NextStopTimesForStopsRouteStopTimeMap(findStops []*mgtfs.St return parentStopIdToRouteStopTimeMap } -func (c *Calculator) nextStopTimesForStops(findStops []*mgtfs.Stop, fromTime time.Time) []*mgtfs.StopTime { - var ( - returnStopTimes = []*mgtfs.StopTime{} - stopIdToRouteStopTimeMap = c.NextStopTimesForStopsRouteStopTimeMap(findStops, fromTime) - ) - - for _, routeStopTimeMap := range stopIdToRouteStopTimeMap { - for _, stopTime := range routeStopTimeMap { - st := stopTime - returnStopTimes = append(returnStopTimes, st) - } - } - - return returnStopTimes -} - func (c *Calculator) stopTimeToStopRouteDirKey(stopTime *mgtfs.StopTime) string { trip := c.LookupTrip(stopTime.TripID) return stopTime.StopID + "_" + trip.RouteID + "_" + trip.DirectionID diff --git a/calculator/functional.go b/calculator/functional.go index 3dbf37b..0625ebf 100644 --- a/calculator/functional.go +++ b/calculator/functional.go @@ -7,6 +7,19 @@ import ( "sort" ) +func ConvertStopTimesMapToArrayStopTimes( + stopIdToRouteStopTimeMap map[string]map[types.RouteDirection]*mgtfs.StopTime, +) []*mgtfs.StopTime { + var returnStopTimes = []*mgtfs.StopTime{} + for _, routeStopTimeMap := range stopIdToRouteStopTimeMap { + for _, stopTime := range routeStopTimeMap { + st := stopTime + returnStopTimes = append(returnStopTimes, st) + } + } + return returnStopTimes +} + func ClosestStops(stops *[]mgtfs.Stop, coord types.Coord, nStops int) []*mgtfs.Stop { stopDists := []*types.StopDistance{} -- 2.38.5