/*! * EJS - Filters * Copyright(c) 2010 TJ Holowaychuk * MIT Licensed */ /** * First element of the target `obj`. */ exports.first = function(obj) { return obj[0]; }; /** * Last element of the target `obj`. */ exports.last = function(obj) { return obj[obj.length - 1]; }; /** * Capitalize the first letter of the target `str`. */ exports.capitalize = function(str){ str = String(str); return str[0].toUpperCase() + str.substr(1, str.length); }; /** * Downcase the target `str`. */ exports.downcase = function(str){ return String(str).toLowerCase(); }; /** * Uppercase the target `str`. */ exports.upcase = function(str){ return String(str).toUpperCase(); }; /** * Sort the target `obj`. */ exports.sort = function(obj){ return Object.create(obj).sort(); }; /** * Sort the target `obj` by the given `prop` ascending. */ exports.sort_by = function(obj, prop){ return Object.create(obj).sort(function(a, b){ a = a[prop], b = b[prop]; if (a > b) return 1; if (a < b) return -1; return 0; }); }; /** * Size or length of the target `obj`. */ exports.size = exports.length = function(obj) { return obj.length; }; /** * Add `a` and `b`. */ exports.plus = function(a, b){ return Number(a) + Number(b); }; /** * Subtract `b` from `a`. */ exports.minus = function(a, b){ return Number(a) - Number(b); }; /** * Multiply `a` by `b`. */ exports.times = function(a, b){ return Number(a) * Number(b); }; /** * Divide `a` by `b`. */ exports.divided_by = function(a, b){ return Number(a) / Number(b); }; /** * Join `obj` with the given `str`. */ exports.join = function(obj, str){ return obj.join(str || ', '); }; /** * Truncate `str` to `len`. */ exports.truncate = function(str, len){ str = String(str); return str.substr(0, len); }; /** * Truncate `str` to `n` words. */ exports.truncate_words = function(str, n){ var str = String(str) , words = str.split(/ +/); return words.slice(0, n).join(' '); }; /** * Replace `pattern` with `substitution` in `str`. */ exports.replace = function(str, pattern, substitution){ return String(str).replace(pattern, substitution || ''); }; /** * Prepend `val` to `obj`. */ exports.prepend = function(obj, val){ return Array.isArray(obj) ? [val].concat(obj) : val + obj; }; /** * Append `val` to `obj`. */ exports.append = function(obj, val){ return Array.isArray(obj) ? obj.concat(val) : obj + val; }; /** * Map the given `prop`. */ exports.map = function(arr, prop){ return arr.map(function(obj){ return obj[prop]; }); }; /** * Reverse the given `obj`. */ exports.reverse = function(obj){ return Array.isArray(obj) ? obj.reverse() : String(obj).split('').reverse().join(''); }; /** * Get `prop` of the given `obj`. */ exports.get = function(obj, prop){ return obj[prop]; }; /** * Packs the given `obj` into json string */ exports.json = function(obj){ return JSON.stringify(obj); };