SNCB: normalize S-train line names

This commit is contained in:
Jannis R 2020-03-19 00:18:32 +01:00
parent 17031f3e11
commit 7d3107e6a7
No known key found for this signature in database
GPG key ID: 0FE83946296A88A5

View file

@ -3,6 +3,9 @@
const {readFileSync} = require('fs')
const {join} = require('path')
const {Agent} = require('https')
const {strictEqual: eql} = require('assert')
const {parseHook} = require('../../lib/profile-hooks')
const parseLine = require('../../parse/line')
const products = require('./products')
// `www.belgianrail.be:443` doesn't provide the necessary CA certificate
@ -21,6 +24,35 @@ const transformReqBody = ({opt}, body) => {
return body
}
// todo: this is ugly
const lineNameWithoutFahrtNr = ({parsed}) => {
const {name, fahrtNr} = parsed
if (!name || !fahrtNr || !/s\d/i.test(name)) return parsed
const i = name.indexOf(fahrtNr)
if (i < 0) return parsed
if (
/\s/.test(name[i - 1] || '') && // space before
name.length === i + fahrtNr.length // nothing behind
) return {
...parsed,
name: name.slice(0, i - 1) + name.slice(i + fahrtNr.length + 1),
}
return parsed
}
eql(lineNameWithoutFahrtNr({
parsed: {name: 'THA 123', fahrtNr: '123'}
}).name, 'THA 123')
eql(lineNameWithoutFahrtNr({
parsed: {name: 'S1 123', fahrtNr: '123'}
}).name, 'S1')
eql(lineNameWithoutFahrtNr({
parsed: {name: 'S1-123', fahrtNr: '123'}
}).name, 'S1-123')
eql(lineNameWithoutFahrtNr({
parsed: {name: 'S1 123a', fahrtNr: '123'}
}).name, 'S1 123a')
const sncbProfile = {
locale: 'fr-BE',
timezone: 'Europe/Brussels',
@ -31,6 +63,8 @@ const sncbProfile = {
products,
parseLine: parseHook(parseLine, lineNameWithoutFahrtNr),
trip: true,
refreshJourney: true,
radar: true,