db-vendo-client/p/db/modes.js
Jannis R 4356032308
DB profile
mostly copied from db-hafas
2017-11-12 23:51:41 +01:00

113 lines
1.8 KiB
JavaScript

'use strict'
const m = {
nationalExp: {
bitmask: 1,
name: 'InterCityExpress',
short: 'ICE',
mode: 'train',
product: 'nationalExp'
},
national: {
bitmask: 2,
name: 'InterCity & EuroCity',
short: 'IC/EC',
mode: 'train',
product: 'national'
},
regionalExp: {
bitmask: 4,
name: 'InterRegio',
short: 'IR',
mode: 'train',
product: 'regionalExp'
},
regional: {
bitmask: 8,
name: 'RegionalExpress & Regio',
short: 'RE/RB',
mode: 'train',
product: 'regional'
},
suburban: {
bitmask: 16,
name: 'S-Bahn',
short: 'S',
mode: 'train',
product: 'suburban'
},
bus: {
bitmask: 32,
name: 'Bus',
short: 'B',
mode: 'bus',
product: 'bus'
},
ferry: {
bitmask: 64,
name: 'Ferry',
short: 'F',
mode: 'ferry',
product: 'ferry'
},
subway: {
bitmask: 128,
name: 'U-Bahn',
short: 'U',
mode: 'train',
product: 'subway'
},
tram: {
bitmask: 256,
name: 'Tram',
short: 'T',
mode: 'tram',
product: 'tram'
},
taxi: {
bitmask: 512,
name: 'Group Taxi',
short: 'Taxi',
mode: null, // todo
product: 'taxi'
},
unknown: {
bitmask: 0,
name: 'unknown',
short: '?',
product: 'unknown'
}
}
m.bitmasks = []
m.bitmasks[1] = m.nationalExp
m.bitmasks[2] = m.national
m.bitmasks[4] = m.regionalExp
m.bitmasks[8] = m.regional
m.bitmasks[16] = m.suburban
m.bitmasks[32] = m.bus
m.bitmasks[64] = m.ferry
m.bitmasks[128] = m.subway
m.bitmasks[256] = m.tram
m.bitmasks[512] = m.taxi
// todo: move up
m.stringifyBitmask = (products) => {
let bitmask = 0
for (let product in products) {
if (products[product] === true) bitmask += m[product].bitmask
}
return bitmask
}
// todo: move up
m.parseBitmask = (bitmask) => {
let products = {}, i = 1
do {
products[m.bitmasks[i].product] = !!(bitmask & i)
i *= 2
} while (m.bitmasks[i] && m.bitmasks[i].product)
return products
}
module.exports = m