1 var conversions = require('./conversions');
2 var route = require('./route');
6 var models = Object.keys(conversions);
9 var wrappedFn = function (args) {
10 if (args === undefined || args === null) {
14 if (arguments.length > 1) {
15 args = Array.prototype.slice.call(arguments);
21 // preserve .conversion property if there is one
22 if ('conversion' in fn) {
23 wrappedFn.conversion = fn.conversion;
29 function wrapRounded(fn) {
30 var wrappedFn = function (args) {
31 if (args === undefined || args === null) {
35 if (arguments.length > 1) {
36 args = Array.prototype.slice.call(arguments);
39 var result = fn(args);
41 // we're assuming the result is an array here.
42 // see notice in conversions.js; don't use box types
43 // in conversion functions.
44 if (typeof result === 'object') {
45 for (var len = result.length, i = 0; i < len; i++) {
46 result[i] = Math.round(result[i]);
53 // preserve .conversion property if there is one
54 if ('conversion' in fn) {
55 wrappedFn.conversion = fn.conversion;
61 models.forEach(function (fromModel) {
62 convert[fromModel] = {};
64 Object.defineProperty(convert[fromModel], 'channels', {value: conversions[fromModel].channels});
65 Object.defineProperty(convert[fromModel], 'labels', {value: conversions[fromModel].labels});
67 var routes = route(fromModel);
68 var routeModels = Object.keys(routes);
70 routeModels.forEach(function (toModel) {
71 var fn = routes[toModel];
73 convert[fromModel][toModel] = wrapRounded(fn);
74 convert[fromModel][toModel].raw = wrapRaw(fn);
78 module.exports = convert;