@emealscom/packer
Version:
* cups * grams * pounds * liters * mililiters * pint * quart * ounces * tablespoons * teaspoons * unit * each * package * slices * bunck * fz
122 lines (121 loc) • 5.7 kB
JavaScript
;
var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
if (ar || !(i in from)) {
if (!ar) ar = Array.prototype.slice.call(from, 0, i);
ar[i] = from[i];
}
}
return to.concat(ar || Array.prototype.slice.call(from));
};
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.calculateQuantity = void 0;
var constants_1 = require("./constants");
var library_1 = __importDefault(require("./library"));
var findException = function (request) {
var conditionResult = true;
var rules = request.rules ? request.rules.sort(function (a, b) { return a.prior > b.prior ? 1 : -1; }) : [];
for (var _i = 0, rules_1 = rules; _i < rules_1.length; _i++) {
var rule = rules_1[_i];
conditionResult = true;
var condition = rule.condition, convertion = rule.convertion;
Object.keys(condition).forEach(function (key) {
var typeCondition = eval("typeof condition.".concat(key));
switch (typeCondition) {
case "string":
case "undefined":
conditionResult = conditionResult && eval("request.".concat(key, " === condition.").concat(key));
break;
case "number":
conditionResult = conditionResult && eval("request.".concat(key, " === condition.").concat(key));
break;
case "object":
var convertFunction = eval("condition.".concat(key));
var name_1 = convertFunction.name, value = convertFunction.value;
var result = library_1.default[name_1](eval("request.".concat(key)), value);
if (typeof result === "boolean") {
conditionResult = conditionResult && result;
}
break;
}
});
if (conditionResult) {
Object.keys(convertion).forEach(function (key) {
var typeCondition = eval("typeof convertion.".concat(key));
switch (typeCondition) {
case "string":
case "undefined":
eval("request.".concat(key, " = convertion.").concat(key));
break;
case "number":
eval("request.".concat(key, " = convertion.").concat(key));
break;
case "object":
var convertFunction = eval("convertion.".concat(key));
var name_2 = convertFunction.name, value = convertFunction.value;
var result = void 0;
if (typeof value !== "object") {
result = library_1.default[name_2](eval("request.".concat(key)), value);
}
else {
var args = [eval("request.".concat(key)), eval("request.".concat(value[0]))].concat(value.slice(1));
result = library_1.default[name_2].apply(library_1.default, __spreadArray([eval("request.".concat(key)), eval("request.".concat(value[0]))], value.slice(1), false));
}
if (typeof result !== "boolean") {
eval("request.".concat(key, " = result"));
}
break;
}
});
break;
}
}
return request;
};
var calculateQuantity = function (quantity, packageQuantity) {
var tolerance = 0.15 * quantity;
var result = (quantity - tolerance) / packageQuantity;
return Math.ceil(result);
};
exports.calculateQuantity = calculateQuantity;
var convert = function (request) {
var result = {
estimatedQuantity: 1,
status: true
};
if (request.staple) {
result.estimatedQuantity = 1;
result.status = true;
return result;
}
request = findException(request);
var description = request.description, unitQuantity = request.unitQuantity, packageUnitMeasure = request.packageUnitMeasure, packageUnitQuantity = request.packageUnitQuantity;
var unitMeasure = request.unitMeasure ? request.unitMeasure : 'unit';
if (description && unitMeasure && unitQuantity && packageUnitMeasure && packageUnitQuantity) {
if (unitMeasure === packageUnitMeasure) {
result.estimatedQuantity = (0, exports.calculateQuantity)(unitQuantity, packageUnitQuantity);
result.status = true;
}
else {
var measure = constants_1.conversions.filter(function (conversion) { return conversion.from === unitMeasure; });
if (measure.length > 0) {
var factor = measure[0].to.filter(function (f) { return f.to === packageUnitMeasure; });
if (factor.length > 0) {
var quantity = factor[0].factor * unitQuantity;
result.estimatedQuantity = (0, exports.calculateQuantity)(quantity, packageUnitQuantity);
result.status = true;
}
else {
result.status = false;
}
}
}
}
if (result.status)
result.estimatedQuantity = result.estimatedQuantity <= 0 ? 1 : result.estimatedQuantity;
return result;
};
exports.default = convert;