@tko/filter.punches
Version:
TKO filters from knockout punches
53 lines (52 loc) • 1.59 kB
JavaScript
// @tko/filter.punches 🥊 4.0.0-beta1.3 ESM
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 };