vinmonopolet-ts
Version:
Extracts information on products, categories and stores from Vinmonopolet
38 lines (37 loc) • 1.05 kB
JavaScript
function normalizeNumber(number) {
const num = String(number);
return num.replace(/,/g, ".").replace(/\s/g, "").replace(/,/g, ".");
}
function numberFilter(number) {
if (!number) {
return null;
}
if (number.value) {
return number.value;
}
const num = String(number);
if (num.indexOf("-") !== -1) {
return num.split("-").map(numberFilter).join("-");
}
if (num.indexOf("<") === 0) {
return num; //Sugar with less than <3 g/l
}
return Number(normalizeNumber(number));
}
numberFilter.greedy = function (number) {
const num = normalizeNumber(number);
if (num === "") {
return null;
}
const normalized = num.replace(/[^\d.]/g, "").replace(/(^\.+|\.+$)/g, "");
return Number(normalized);
};
numberFilter.nullify = function (nulls) {
return function (number) {
if (nulls.indexOf(number) > -1) {
return null;
}
return numberFilter(number);
};
};
export default numberFilter;