UNPKG

@tko/filter.punches

Version:

TKO filters from knockout punches

53 lines (52 loc) 1.59 kB
// @tko/filter.punches 🥊 4.0.0-beta1.3 MJS import { unwrap, toJS } from "@tko/observable"; var sproto = String.prototype; var filters = {}; filters.uppercase = function(value) { return sproto.toUpperCase.call(unwrap(value)); }; filters.lowercase = function(value) { return sproto.toLowerCase.call(unwrap(value)); }; filters["default"] = function(value, defaultValue) { value = unwrap(value); if (typeof value === "function") { return value; } if (typeof value === "string") { return sproto.trim.call(value) === "" ? defaultValue : value; } return value == null || value.length == 0 ? defaultValue : value; }; filters.replace = function(value, search, replace) { return sproto.replace.call(unwrap(value), search, replace); }; filters.fit = function(value, length, replacement, trimWhere) { value = unwrap(value); if (length && ("" + value).length > length) { replacement = "" + (replacement || "..."); length = length - replacement.length; value = "" + value; switch (trimWhere) { case "left": return replacement + value.slice(-length); case "middle": var leftLen = Math.ceil(length / 2); return value.substr(0, leftLen) + replacement + value.slice(leftLen - length); default: return value.substr(0, length) + replacement; } } else { return value; } }; filters.json = function(rootObject, space, replacer) { return JSON.stringify(toJS(rootObject), replacer, space); }; filters.number = function(value) { return (+unwrap(value)).toLocaleString(); }; export { filters };