parseLine: don't trim adminCode 💥

This commit is contained in:
Jannis R 2022-01-04 15:31:40 +01:00
parent b740539081
commit ef9e3765ee
No known key found for this signature in database
GPG key ID: 0FE83946296A88A5
8 changed files with 58 additions and 51 deletions

View file

@ -22,8 +22,7 @@ const parseLine = ({profile}, p) => {
// todo: what is p.prodCtx.catCode? // todo: what is p.prodCtx.catCode?
if (p.prodCtx && 'string' === typeof p.prodCtx.admin) { if (p.prodCtx && 'string' === typeof p.prodCtx.admin) {
// todo [breaking]: don't trim res.adminCode = p.prodCtx.admin
res.adminCode = p.prodCtx.admin.replace(/-+$/, '')
} }
if (p.prodCtx && 'string' === typeof p.prodCtx.catOut) { if (p.prodCtx && 'string' === typeof p.prodCtx.catOut) {

View file

@ -311,7 +311,7 @@ module.exports = [
fahrtNr: '2780', fahrtNr: '2780',
name: 'M5', name: 'M5',
public: true, public: true,
adminCode: 'BVT', adminCode: 'BVT---',
productName: 'Tram', productName: 'Tram',
mode: 'train', mode: 'train',
product: 'tram', product: 'tram',
@ -348,7 +348,7 @@ module.exports = [
fahrtNr: '3085', fahrtNr: '3085',
name: 'M8', name: 'M8',
public: true, public: true,
adminCode: 'BVT', adminCode: 'BVT---',
productName: 'Tram', productName: 'Tram',
mode: 'train', mode: 'train',
product: 'tram', product: 'tram',
@ -385,7 +385,7 @@ module.exports = [
fahrtNr: '3151', fahrtNr: '3151',
name: 'M8', name: 'M8',
public: true, public: true,
adminCode: 'BVT', adminCode: 'BVT---',
productName: 'Tram', productName: 'Tram',
mode: 'train', mode: 'train',
product: 'tram', product: 'tram',
@ -422,7 +422,7 @@ module.exports = [
fahrtNr: '3255', fahrtNr: '3255',
name: '56', name: '56',
public: true, public: true,
adminCode: 'BVT', adminCode: 'BVT---',
productName: 'Tram', productName: 'Tram',
mode: 'train', mode: 'train',
product: 'tram', product: 'tram',
@ -459,7 +459,7 @@ module.exports = [
fahrtNr: '25595', fahrtNr: '25595',
name: 'S8', name: 'S8',
public: true, public: true,
adminCode: 'DBS', adminCode: 'DBS---',
productName: 'S', productName: 'S',
mode: 'train', mode: 'train',
product: 'suburban', product: 'suburban',
@ -497,7 +497,7 @@ module.exports = [
fahrtNr: '893', fahrtNr: '893',
name: 'S41', name: 'S41',
public: true, public: true,
adminCode: 'DBS', adminCode: 'DBS---',
productName: 'S', productName: 'S',
mode: 'train', mode: 'train',
product: 'suburban', product: 'suburban',
@ -536,7 +536,7 @@ module.exports = [
fahrtNr: '1710', fahrtNr: '1710',
name: 'S42', name: 'S42',
public: true, public: true,
adminCode: 'DBS', adminCode: 'DBS---',
productName: 'S', productName: 'S',
mode: 'train', mode: 'train',
product: 'suburban', product: 'suburban',
@ -575,7 +575,7 @@ module.exports = [
fahrtNr: '3304', fahrtNr: '3304',
name: '56', name: '56',
public: true, public: true,
adminCode: 'BVT', adminCode: 'BVT---',
productName: 'Tram', productName: 'Tram',
mode: 'train', mode: 'train',
product: 'tram', product: 'tram',
@ -612,7 +612,7 @@ module.exports = [
fahrtNr: '1344', fahrtNr: '1344',
name: 'S42', name: 'S42',
public: true, public: true,
adminCode: 'DBS', adminCode: 'DBS---',
productName: 'S', productName: 'S',
mode: 'train', mode: 'train',
product: 'suburban', product: 'suburban',
@ -651,7 +651,7 @@ module.exports = [
fahrtNr: '2643', fahrtNr: '2643',
name: 'M5', name: 'M5',
public: true, public: true,
adminCode: 'BVT', adminCode: 'BVT---',
productName: 'Tram', productName: 'Tram',
mode: 'train', mode: 'train',
product: 'tram', product: 'tram',
@ -688,7 +688,7 @@ module.exports = [
fahrtNr: '654', fahrtNr: '654',
name: 'S41', name: 'S41',
public: true, public: true,
adminCode: 'DBS', adminCode: 'DBS---',
productName: 'S', productName: 'S',
mode: 'train', mode: 'train',
product: 'suburban', product: 'suburban',
@ -725,7 +725,7 @@ module.exports = [
fahrtNr: '1357', fahrtNr: '1357',
name: 'S42', name: 'S42',
public: true, public: true,
adminCode: 'DBS', adminCode: 'DBS---',
productName: 'S', productName: 'S',
mode: 'train', mode: 'train',
product: 'suburban', product: 'suburban',
@ -762,7 +762,7 @@ module.exports = [
fahrtNr: '2780', fahrtNr: '2780',
name: 'M5', name: 'M5',
public: true, public: true,
adminCode: 'BVT', adminCode: 'BVT---',
productName: 'Tram', productName: 'Tram',
mode: 'train', mode: 'train',
product: 'tram', product: 'tram',
@ -801,7 +801,7 @@ module.exports = [
fahrtNr: '25467', fahrtNr: '25467',
name: 'S8', name: 'S8',
public: true, public: true,
adminCode: 'DBS', adminCode: 'DBS---',
productName: 'S', productName: 'S',
mode: 'train', mode: 'train',
product: 'suburban', product: 'suburban',
@ -849,7 +849,7 @@ module.exports = [
fahrtNr: '3085', fahrtNr: '3085',
name: 'M8', name: 'M8',
public: true, public: true,
adminCode: 'BVT', adminCode: 'BVT---',
productName: 'Tram', productName: 'Tram',
mode: 'train', mode: 'train',
product: 'tram', product: 'tram',
@ -886,7 +886,7 @@ module.exports = [
fahrtNr: '3151', fahrtNr: '3151',
name: 'M8', name: 'M8',
public: true, public: true,
adminCode: 'BVT', adminCode: 'BVT---',
productName: 'Tram', productName: 'Tram',
mode: 'train', mode: 'train',
product: 'tram', product: 'tram',
@ -923,7 +923,7 @@ module.exports = [
fahrtNr: '3255', fahrtNr: '3255',
name: '56', name: '56',
public: true, public: true,
adminCode: 'BVT', adminCode: 'BVT---',
productName: 'Tram', productName: 'Tram',
mode: 'train', mode: 'train',
product: 'tram', product: 'tram',
@ -962,7 +962,7 @@ module.exports = [
fahrtNr: '26542', fahrtNr: '26542',
name: 'S85', name: 'S85',
public: true, public: true,
adminCode: 'DBS', adminCode: 'DBS---',
productName: 'S', productName: 'S',
mode: 'train', mode: 'train',
product: 'suburban', product: 'suburban',
@ -1032,7 +1032,7 @@ module.exports = [
fahrtNr: '889', fahrtNr: '889',
name: 'S41', name: 'S41',
public: true, public: true,
adminCode: 'DBS', adminCode: 'DBS---',
productName: 'S', productName: 'S',
mode: 'train', mode: 'train',
product: 'suburban', product: 'suburban',
@ -1071,7 +1071,7 @@ module.exports = [
fahrtNr: '1706', fahrtNr: '1706',
name: 'S42', name: 'S42',
public: true, public: true,
adminCode: 'DBS', adminCode: 'DBS---',
productName: 'S', productName: 'S',
mode: 'train', mode: 'train',
product: 'suburban', product: 'suburban',
@ -1110,7 +1110,7 @@ module.exports = [
fahrtNr: '1704', fahrtNr: '1704',
name: 'S42', name: 'S42',
public: true, public: true,
adminCode: 'DBS', adminCode: 'DBS---',
productName: 'S', productName: 'S',
mode: 'train', mode: 'train',
product: 'suburban', product: 'suburban',
@ -1149,7 +1149,7 @@ module.exports = [
fahrtNr: '1702', fahrtNr: '1702',
name: 'S42', name: 'S42',
public: true, public: true,
adminCode: 'DBS', adminCode: 'DBS---',
productName: 'S', productName: 'S',
mode: 'train', mode: 'train',
product: 'suburban', product: 'suburban',
@ -1188,7 +1188,7 @@ module.exports = [
fahrtNr: '1700', fahrtNr: '1700',
name: 'S42', name: 'S42',
public: true, public: true,
adminCode: 'DBS', adminCode: 'DBS---',
productName: 'S', productName: 'S',
mode: 'train', mode: 'train',
product: 'suburban', product: 'suburban',
@ -1227,7 +1227,7 @@ module.exports = [
fahrtNr: '1698', fahrtNr: '1698',
name: 'S42', name: 'S42',
public: true, public: true,
adminCode: 'DBS', adminCode: 'DBS---',
productName: 'S', productName: 'S',
mode: 'train', mode: 'train',
product: 'suburban', product: 'suburban',

View file

@ -697,7 +697,7 @@ module.exports = {
fahrtNr: '14825', fahrtNr: '14825',
name: 'S2', name: 'S2',
public: true, public: true,
adminCode: 'DBS', adminCode: 'DBS---',
productName: 'S', productName: 'S',
mode: 'train', mode: 'train',
product: 'suburban', product: 'suburban',

View file

@ -9,7 +9,7 @@ module.exports = {
fahrtNr: '7070', fahrtNr: '7070',
name: '147', name: '147',
public: true, public: true,
adminCode: 'BVB', adminCode: 'BVB---',
productName: 'Bus', productName: 'Bus',
mode: 'bus', mode: 'bus',
product: 'bus', product: 'bus',

View file

@ -172,7 +172,7 @@ module.exports = [
fahrtNr: '10541', fahrtNr: '10541',
name: 'S3', name: 'S3',
public: true, public: true,
adminCode: 'DBS', adminCode: 'DBS---',
productName: 'S', productName: 'S',
mode: 'train', mode: 'train',
product: 'suburban', product: 'suburban',
@ -365,7 +365,7 @@ module.exports = [
fahrtNr: '33695', fahrtNr: '33695',
name: '300', name: '300',
public: true, public: true,
adminCode: 'BVB', adminCode: 'BVB---',
productName: 'Bus', productName: 'Bus',
mode: 'bus', mode: 'bus',
product: 'bus', product: 'bus',
@ -579,7 +579,7 @@ module.exports = [
fahrtNr: '17590', fahrtNr: '17590',
name: 'U8', name: 'U8',
public: true, public: true,
adminCode: 'BVU', adminCode: 'BVU---',
productName: 'U', productName: 'U',
mode: 'train', mode: 'train',
product: 'subway', product: 'subway',
@ -794,7 +794,7 @@ module.exports = [
fahrtNr: '17227', fahrtNr: '17227',
name: 'U8', name: 'U8',
public: true, public: true,
adminCode: 'BVU', adminCode: 'BVU---',
productName: 'U', productName: 'U',
mode: 'train', mode: 'train',
product: 'subway', product: 'subway',
@ -1009,7 +1009,7 @@ module.exports = [
fahrtNr: '15359', fahrtNr: '15359',
name: 'S5', name: 'S5',
public: true, public: true,
adminCode: 'DBS', adminCode: 'DBS---',
productName: 'S', productName: 'S',
mode: 'train', mode: 'train',
product: 'suburban', product: 'suburban',
@ -1224,7 +1224,7 @@ module.exports = [
fahrtNr: '17258', fahrtNr: '17258',
name: 'S7', name: 'S7',
public: true, public: true,
adminCode: 'DBS', adminCode: 'DBS---',
productName: 'S', productName: 'S',
mode: 'train', mode: 'train',
product: 'suburban', product: 'suburban',
@ -1439,7 +1439,7 @@ module.exports = [
fahrtNr: '17985', fahrtNr: '17985',
name: 'S7', name: 'S7',
public: true, public: true,
adminCode: 'DBS', adminCode: 'DBS---',
productName: 'S', productName: 'S',
mode: 'train', mode: 'train',
product: 'suburban', product: 'suburban',
@ -1654,7 +1654,7 @@ module.exports = [
fahrtNr: '14839', fahrtNr: '14839',
name: 'S5', name: 'S5',
public: true, public: true,
adminCode: 'DBS', adminCode: 'DBS---',
productName: 'S', productName: 'S',
mode: 'train', mode: 'train',
product: 'suburban', product: 'suburban',
@ -1869,7 +1869,7 @@ module.exports = [
fahrtNr: '17589', fahrtNr: '17589',
name: 'U8', name: 'U8',
public: true, public: true,
adminCode: 'BVU', adminCode: 'BVU---',
productName: 'U', productName: 'U',
mode: 'train', mode: 'train',
product: 'subway', product: 'subway',
@ -2084,7 +2084,7 @@ module.exports = [
fahrtNr: '17229', fahrtNr: '17229',
name: 'U8', name: 'U8',
public: true, public: true,
adminCode: 'BVU', adminCode: 'BVU---',
productName: 'U', productName: 'U',
mode: 'train', mode: 'train',
product: 'subway', product: 'subway',
@ -2299,7 +2299,7 @@ module.exports = [
fahrtNr: '33624', fahrtNr: '33624',
name: '300', name: '300',
public: true, public: true,
adminCode: 'BVB', adminCode: 'BVB---',
productName: 'Bus', productName: 'Bus',
mode: 'bus', mode: 'bus',
product: 'bus', product: 'bus',
@ -2513,7 +2513,7 @@ module.exports = [
fahrtNr: '20512', fahrtNr: '20512',
name: 'S9', name: 'S9',
public: true, public: true,
adminCode: 'DBS', adminCode: 'DBS---',
productName: 'S', productName: 'S',
mode: 'train', mode: 'train',
product: 'suburban', product: 'suburban',

View file

@ -59,7 +59,7 @@ module.exports = [{
fahrtNr: '24005', fahrtNr: '24005',
name: 'U9', name: 'U9',
public: true, public: true,
adminCode: 'BVU', adminCode: 'BVU---',
productName: 'U', productName: 'U',
mode: 'train', mode: 'train',
product: 'subway', product: 'subway',
@ -132,7 +132,7 @@ module.exports = [{
fahrtNr: '2568', fahrtNr: '2568',
name: 'S41', name: 'S41',
public: true, public: true,
adminCode: 'DBS', adminCode: 'DBS---',
productName: 'S', productName: 'S',
mode: 'train', mode: 'train',
product: 'suburban', product: 'suburban',
@ -205,7 +205,7 @@ module.exports = [{
fahrtNr: '1710', fahrtNr: '1710',
name: 'ICE 1710', name: 'ICE 1710',
public: true, public: true,
adminCode: 'N80', adminCode: 'N80---',
productName: 'ICE', productName: 'ICE',
mode: 'train', mode: 'train',
product: 'express', product: 'express',
@ -225,7 +225,7 @@ module.exports = [{
fahrtNr: '2457', fahrtNr: '2457',
name: 'IC 2457', name: 'IC 2457',
public: true, public: true,
adminCode: 'N80', adminCode: 'N80---',
productName: 'IC', productName: 'IC',
mode: 'train', mode: 'train',
product: 'express', product: 'express',
@ -247,7 +247,7 @@ module.exports = [{
fahrtNr: '2055', fahrtNr: '2055',
name: 'IC 2055', name: 'IC 2055',
public: true, public: true,
adminCode: 'N80', adminCode: 'N80---',
productName: 'IC', productName: 'IC',
mode: 'train', mode: 'train',
product: 'express', product: 'express',
@ -334,7 +334,7 @@ module.exports = [{
fahrtNr: '24006', fahrtNr: '24006',
name: 'U9', name: 'U9',
public: true, public: true,
adminCode: 'BVU', adminCode: 'BVU---',
productName: 'U', productName: 'U',
mode: 'train', mode: 'train',
product: 'subway', product: 'subway',
@ -407,7 +407,7 @@ module.exports = [{
fahrtNr: '2723', fahrtNr: '2723',
name: 'S41', name: 'S41',
public: true, public: true,
adminCode: 'DBS', adminCode: 'DBS---',
productName: 'S', productName: 'S',
mode: 'train', mode: 'train',
product: 'suburban', product: 'suburban',

View file

@ -43,7 +43,7 @@ tap.test('parses a line correctly (mobiliteit.lu)', (t) => {
fahrtNr: '108', fahrtNr: '108',
name: 'IC 108', name: 'IC 108',
public: true, public: true,
adminCode: 'C88', adminCode: 'C88---',
productName: 'IC', productName: 'IC',
mode: 'train', mode: 'train',
product: 'national-train', product: 'national-train',

View file

@ -1,6 +1,7 @@
'use strict' 'use strict'
const tap = require('tap') const tap = require('tap')
const omit = require('lodash/omit')
const parse = require('../../parse/line') const parse = require('../../parse/line')
const profile = { const profile = {
@ -21,7 +22,9 @@ tap.test('parses lines correctly', (t) => {
line: 'foo line', line: 'foo line',
prodCtx: { prodCtx: {
lineId: 'Foo ', lineId: 'Foo ',
num: 123 num: 123,
// HAFAS endpoints commonly have these padded admin codes.
admin: 'foo---',
} }
} }
const expected = { const expected = {
@ -29,7 +32,8 @@ tap.test('parses lines correctly', (t) => {
id: 'foo', id: 'foo',
fahrtNr: 123, fahrtNr: 123,
name: 'foo line', name: 'foo line',
public: true public: true,
adminCode: 'foo---',
} }
t.same(parse(ctx, input), expected) t.same(parse(ctx, input), expected)
@ -51,7 +55,11 @@ tap.test('parses lines correctly', (t) => {
t.same(parse(ctx, { t.same(parse(ctx, {
...input, prodCtx: undefined ...input, prodCtx: undefined
}), { }), {
...expected, id: 'foo-line', fahrtNr: null ...omit(expected, [
'adminCode',
]),
id: 'foo-line',
fahrtNr: null,
}) })
t.end() t.end()
}) })