var conversions = {
|
|
// Tempurature
|
|
'fahrenheit': {
|
|
'celsius': function(value){
|
|
value -= 32;
|
|
value *= 5
|
|
value /= 9;
|
|
return value;
|
|
},
|
|
},
|
|
'celsius': {
|
|
'fahrenheit': function(value){
|
|
value *= 9;
|
|
value /= 5;
|
|
value += 32;
|
|
return value;
|
|
},
|
|
},
|
|
|
|
// Liquid Volume
|
|
'gallon': {
|
|
'cup': function(value){
|
|
return value * 16;
|
|
},
|
|
'liter': function(value){
|
|
return value * 3.78541178;
|
|
},
|
|
'pint': function(value){
|
|
return value * 8;
|
|
},
|
|
'milliliter': function(value){
|
|
return value * 3785.41178;
|
|
}
|
|
},
|
|
'cup': {
|
|
'gallon': function(value){
|
|
return value / 16;
|
|
},
|
|
'liter': function(value){
|
|
return (value / 16) * 3.78541178;
|
|
},
|
|
'pint': function(value){
|
|
return value / 2;
|
|
},
|
|
'milliliter': function(value){
|
|
return value * 236.588237;
|
|
},
|
|
},
|
|
'liter': {
|
|
'gallon': function(value){
|
|
return value / 3.78541178;
|
|
},
|
|
'cup': function(value){
|
|
return (value / 3.78541178) * 16;
|
|
},
|
|
'pint': function(value){
|
|
return (value / 3.78541178) * 8;
|
|
},
|
|
'milliliter': function(value){
|
|
return value * 1000;
|
|
},
|
|
},
|
|
'milliliter': {
|
|
'gallon': function(value){
|
|
return value / 3785.41178;
|
|
},
|
|
'cup': function(value){
|
|
return value / 236.588;
|
|
},
|
|
'pint': function(value){
|
|
return value / 473.176;
|
|
},
|
|
'liter': function(value){
|
|
return value / 1000;
|
|
},
|
|
},
|
|
'pint': {
|
|
'gallon': function(value){
|
|
return value * 0.125;
|
|
},
|
|
'cup': function(value){
|
|
return value * 2;
|
|
},
|
|
'liter': function(value){
|
|
return value * 0.473176;
|
|
},
|
|
'milliliter': function(value){
|
|
return value * 473.176;
|
|
},
|
|
},
|
|
|
|
// Weight
|
|
'pound': {
|
|
'ounce': function(value){
|
|
return value * 16;
|
|
},
|
|
'gram': function(value){
|
|
return value * 453.592;
|
|
},
|
|
},
|
|
'ounce': {
|
|
'pound': function(value){
|
|
return value / 16;
|
|
},
|
|
'gram': function(value){
|
|
return value * 28.3495;
|
|
},
|
|
},
|
|
'gram': {
|
|
'ounce': function(value){
|
|
return value / 28.3495;
|
|
},
|
|
'pound': function(value){
|
|
return value / 453.592;
|
|
},
|
|
},
|
|
};
|
|
|
|
|
|
|
|
return module.exports = function(server){
|
|
server.get('/units', function(req, res){
|
|
var can_convert = {};
|
|
for(var from in conversions){
|
|
can_convert[from] = [];
|
|
for(var to in conversions[from]){
|
|
can_convert[from].push(to);
|
|
}
|
|
}
|
|
|
|
res.writeHead(200, {
|
|
'Content-Type': 'application/javascript'
|
|
});
|
|
res.end(JSON.stringify(can_convert));
|
|
});
|
|
|
|
server.get(/\/units\/([0-9]+(\.[0-9]+)?)\/([a-zA-Z]+)\/to\/([a-zA-Z]+)/i, function(req, res){
|
|
var value = parseFloat(req.params[0]);
|
|
var from = req.params[2].toLowerCase();
|
|
var to = req.params[3].toLowerCase();
|
|
|
|
var answer = {
|
|
'convert': value,
|
|
'from': from,
|
|
'to': to,
|
|
'result': undefined,
|
|
'error': undefined
|
|
};
|
|
if(from in conversions && to in conversions[from]){
|
|
answer['result'] = conversions[from][to](value);
|
|
} else{
|
|
answer['error'] = 'There is no conversion from ' + from + ' to ' + to;
|
|
}
|
|
|
|
res.writeHead(200, {
|
|
'Content-Type': 'application/javascript'
|
|
});
|
|
res.end(JSON.stringify(answer));
|
|
});
|
|
};
|