UNPKG

swepam

Version:

a json interface to the swepam readings

71 lines (65 loc) 1.77 kB
'use strict'; var delimit = require('./delimit'); var schema = { year: Number, month: Number, day: Number, time: String, julian: Number, seconds: { unit: 's', longform: 'seconds', type: Number }, status: Number, protonDensity: { unit: 'p/cc', longform: 'parts per cubic-centimetre', type: Number }, bulkSpeed: { unit: 'km/s', longform: 'kilometres per second', type: Number }, ionTemperature: { unit: 'K', longform: 'degrees kelvin', type: Number } }; function coerceValues(readings) { for (var i in readings) { readings[i][0] = schema.year(readings[i][0]); readings[i][1] = schema.month(readings[i][1]); readings[i][2] = schema.day(readings[i][2]); readings[i][3] = schema.time(readings[i][3]); readings[i][4] = schema.julian(readings[i][4]); readings[i][5] = schema.seconds.type(readings[i][5]); readings[i][6] = schema.status(readings[i][6]); readings[i][7] = readings[i][6] === 9 ? null : schema.protonDensity.type(readings[i][7]); readings[i][8] = readings[i][6] === 9 ? null : schema.bulkSpeed.type(readings[i][8]); readings[i][9] = readings[i][6] === 9 ? null : schema.ionTemperature.type(readings[i][9]); } return readings; } function objectify(readings) { for (var i in readings) { readings[i] = { year: readings[i][0], month: readings[i][1], day: readings[i][2], time: readings[i][3], julian: readings[i][4], seconds: readings[i][5], status: readings[i][6], protonDensity: readings[i][7], bulkSpeed: readings[i][8], ionTemperature: readings[i][9] }; } return readings; } module.exports = function(raw) { return objectify(coerceValues(delimit(raw))); };