import ../types import json import leg import options proc mkParseJourney*(common: CommonData): proc = proc parseJourney(j: JsonNode): Journey = var common = common common.dateStr = j{"date"}.getStr() result.refreshToken = j{"ctxRecon"}.getStr() result.legs = j{"secL"}.getElems().map(mkParseLeg(common)) result.lastUpdated = common.timeStamp # combine walking legs var i = -1 var firstWalking = -1 while true: inc(i) if i >= len(result.legs): break if result.legs[i].isWalking: if firstWalking == -1: firstWalking = i else: result.legs[firstWalking].arrival = result.legs[i].arrival result.legs[firstWalking].distance.get += result.legs[i].distance.get result.legs.delete(i) dec(i) else: firstWalking = -1 return parseJourney