swepam
Version:
a json interface to the swepam readings
71 lines (65 loc) • 1.77 kB
JavaScript
;
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)));
};