UNPKG

multiplanner

Version:

Tool om polydestinale reizen te plannen over het Nederlandse spoornet.

53 lines (39 loc) 1.58 kB
import chrono from 'chrono-node'; import invertedSwitch from '#f/invertedSwitch.js'; import { bestaat, parseDatumRelatief, losseregels } from '#f/parsers.js'; const reisScriptNaarRequest = (reisScript) => { const regels = losseregels(reisScript); const referentiedatum = chrono.parseDate(regels[0]); const parseDate = parseDatumRelatief(referentiedatum); const stations = regels .slice(referentiedatum && !regels[0].match(/[0-2][0-9]:[0-5][0-9]/)) .map(regel => { const station = {}; const voorArgument = (regel.match(/^([0-9]+:[0-9]+|[0-9]+|\?)/) || [undefined])[0]; const naArgument = (regel.match(/([0-9]+:[0-9]+|[0-9]+|\?) *$/) || [undefined])[0]; const stationArgument = regel.match(/(?<= |^)([^0-9:?]+)(?= |$)/)[0]; const wachtSwitches = [ [argument => !argument, () => { }], [argument => !isNaN(argument), (wacht) => station.wacht = wacht], [argument => argument == "?", () => station.wacht = -1000] ]; invertedSwitch([ ...wachtSwitches, [parseDate, (_, moment) => station.aankomst = moment] ], voorArgument); invertedSwitch([ ...wachtSwitches, [parseDate, (_, moment) => station.vertrek = moment] ], naArgument); station.station = stationArgument; return station; }); return { reis: stations }; }; export default reisScriptNaarRequest;