Skip to content

Commit

Permalink
Initial commit
Browse files Browse the repository at this point in the history
  • Loading branch information
michael-lawrence committed Oct 7, 2012
0 parents commit 9e7166d
Show file tree
Hide file tree
Showing 4 changed files with 95 additions and 0 deletions.
11 changes: 11 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
underscore.normalize
====================

Data normalization mixin for underscore.js

* * *

Usage
====================

_.normalize([0, 10, 100], [0, 10]); // => [0, 1, 10]
30 changes: 30 additions & 0 deletions package.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
{
"name": "underscore.normalize",
"version": "1.0.0",
"description": "Data normalization mixin for underscore.js.",
"homepage": "https://github.com/michael-lawrence/underscore.normalize/",
"contributors": [
"Michael Lawrence <mike@pandemicode.com> (http://pandemicode.com/)"
],
"keywords": [
"underscore",
"normalize"
],
"main": "./underscore.normalize",
"dependencies": {
"underscore" : "*"
},
"engines": {
"node": "*"
},
"repository": {
"type": "git",
"url": "https://github.com/michael-lawrence/underscore.normalize.git"
},
"bugs": {
"url": "https://github.com/michael-lawrence/underscore.normalize/issues/"
},
"licenses" : [
{ "type" : "MIT" }
]
}
49 changes: 49 additions & 0 deletions underscore.normalize.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
'use strict';

(function () {
if (_) { // Underscore.js
var normalize = function (original, scaled) {
var originalArray, originalMin, originalMax, scaledArray, scaledMin, scaledMax;

if (_.isArray(original)) {
originalArray = original;
} else if(_.isObject(original) && !_.isFunction(original)) {
originalArray = _.values(original);
} else {
throw 'Invalid parameter: original.';
}

if (_.isArray(scaled)) {
scaledArray = scaled;
} else if(_.isObject(scaled) && !_.isFunction(scaled)) {
scaledArray = _.values(scaled);
} else {
throw 'Invalid parameter: scaled.';
}

originalMin = _.min(originalArray);
originalMax = _.max(originalArray);
scaledMin = _.min(scaledArray);
scaledMax = _.max(scaledArray);

return _.map(originalArray, function (value, key) {
return scaledMin + (((value - originalMin) * (scaledMax - scaledMin)) / (originalMax - originalMin));
});
};

if (typeof exports !== 'undefined') { // CommonJS
if (typeof module !== 'undefined' && module.exports) {
module.exports = normalize;
}
exports.normalize = normalize;
} else if (typeof define === 'function' && define.amd) { // AMD
define('underscore.normalize', [], function() {
return normalize;
});
}

_.mixin({'normalize' : normalize}); // Underscore.js
} else {
throw 'Underscore.js not defined.';
}
})();
5 changes: 5 additions & 0 deletions underscore.normalize.min.js

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

0 comments on commit 9e7166d

Please sign in to comment.