jashkenas--coffeescript/lib/helpers.js

82 lines
2.2 KiB
JavaScript
Raw Normal View History

2010-07-25 07:15:12 +00:00
(function() {
var extend, flatten, indexOf;
2010-09-25 00:29:44 +00:00
indexOf = (exports.indexOf = Array.indexOf || (Array.prototype.indexOf ? function(array, item, from) {
2010-09-25 00:18:47 +00:00
return array.indexOf(item, from);
} : function(array, item, from) {
var _len, _ref, index, other;
_ref = array;
for (index = 0, _len = _ref.length; index < _len; index++) {
other = _ref[index];
if (other === item && (!from || (from <= index))) {
return index;
}
}
return -1;
2010-09-25 00:18:47 +00:00
}));
2010-09-25 00:29:44 +00:00
exports.include = function(list, value) {
2010-09-26 14:28:48 +00:00
return indexOf(list, value) >= 0;
2010-09-25 00:18:47 +00:00
};
2010-09-25 00:29:44 +00:00
exports.starts = function(string, literal, start) {
2010-09-25 00:18:47 +00:00
return literal === string.substr(start, literal.length);
};
2010-09-25 00:29:44 +00:00
exports.ends = function(string, literal, back) {
2010-09-26 14:28:48 +00:00
var len;
len = literal.length;
return literal === string.substr(string.length - len - (back || 0), len);
2010-09-25 00:18:47 +00:00
};
2010-09-25 00:29:44 +00:00
exports.compact = function(array) {
var _i, _len, _ref, _result, item;
_result = []; _ref = array;
for (_i = 0, _len = _ref.length; _i < _len; _i++) {
item = _ref[_i];
2010-08-11 04:40:15 +00:00
if (item) {
_result.push(item);
}
}
return _result;
2010-09-25 00:18:47 +00:00
};
2010-09-25 00:29:44 +00:00
exports.count = function(string, letter) {
var num, pos;
2010-09-25 00:18:47 +00:00
num = (pos = 0);
2010-09-28 12:52:51 +00:00
while (pos = 1 + string.indexOf(letter, pos)) {
2010-09-25 00:18:47 +00:00
num++;
}
return num;
2010-09-25 00:18:47 +00:00
};
2010-09-25 00:29:44 +00:00
exports.merge = function(options, overrides) {
2010-09-25 00:18:47 +00:00
return extend(extend({}, options), overrides);
};
2010-09-25 00:29:44 +00:00
extend = (exports.extend = function(object, properties) {
2010-09-25 00:18:47 +00:00
var _ref, key, val;
_ref = properties;
for (key in _ref) {
val = _ref[key];
2010-09-26 14:28:48 +00:00
object[key] = val;
}
2010-09-25 00:18:47 +00:00
return object;
2010-03-10 14:47:02 +00:00
});
exports.flatten = (flatten = function(array) {
var _i, _len, _ref, element, flattened;
flattened = [];
_ref = array;
for (_i = 0, _len = _ref.length; _i < _len; _i++) {
element = _ref[_i];
2010-09-29 00:12:37 +00:00
if (element instanceof Array) {
flattened = flattened.concat(flatten(element));
} else {
flattened.push(element);
}
}
return flattened;
});
2010-09-25 00:29:44 +00:00
exports.del = function(obj, key) {
var val;
val = obj[key];
delete obj[key];
return val;
2010-09-25 00:18:47 +00:00
};
2010-09-28 12:52:51 +00:00
exports.last = function(array, back) {
return array[array.length - (back || 0) - 1];
};
}).call(this);