UNPKG

@emealscom/packer

Version:

* cups * grams * pounds * liters * mililiters * pint * quart * ounces * tablespoons * teaspoons * unit * each * package * slices * bunck * fz

154 lines (120 loc) • 4.63 kB
# eMeals Measures Conversor Api ## Measures supported * cups * grams * pounds * liters * mililiters * pint * quart * ounces * tablespoons * teaspoons * unit * each * package * slices * bunck * fz ## Install ``` npm install --save-dev typescript npm install --save @emealscom/packer ``` ## How to use it ### Options | Property | Optional | Description | | ----------------------| ----------| --------------------------------------------------| | description | No | Product Description | | unitMeasure | No | Unit of measure on recipe | | unitQuantity | No | Quantity on recipe | | packageUnitMeasure | No | Unit of measure on product package | | packageUnitQuantity | No | Quantity or content on product package | | staple | Yes | If staple or not, if yes, quantities factor is 1 | | rules | Yes | Object Array for rules | ### Rules The Rules are used to perform calculations or replacements to the measurements and quantities of an ingredient or offer. The rules are applied in priority | Property | Optional | Description | | ----------------------|-----------|---------------------------------------------------| | prior | No | Priority for apply | | condition | No | Object for condition must be applied | | convertion | No | Object for all functions and convertions | `condition` and `convertion` is an object for OptionRule OptionRule | Property | Optional | Description | |-----------------------|-----------|---------------------------------------------------| | description | Y | Set a value or ConvertFunction | | unitMeasure | Y | Set a value or ConvertFunction | | unitQuantity | Y | Set a value or ConvertFunction | packageUnitMeasure | Y | Set a value or ConvertFunction | packageUnitQuantity | Y | Set a value or ConvertFunction ConvertFunction | Property | Optional | Description | |-----------------------|-----------|---------------------------------------------------| | name | No | Name of a function | | value | No | Values for function, string, number, array | ### Functions for convertions/conditions `test-regex`, value must be a regular expression string, only return a boolean and must be used on condition. `math-c1`, value must be a number, `Math.ceil(property / value)`. `math-c2`, value must be a number, `property * value`. `extract-c1`, value must be an array set, index 0 has a property to applied a regular expression, index 1 has a regular expression, return an index 0 for `match()` result. `extract-c2`, value must be an array set, index 0 has a property name to applied a regular expression, index 1 has a regular expression, return an index 1 for `match()` result. `setval-c1`, value must be an array set, index 0 has a property name and return its value. ### Rules examples ``` { prior: 2, condition: { unitMeasure: { name: "test-regex", value: "(jar|bottle|inch)" } }, convertion: { unitQuantity: { name: "math-c2", value: ["packageUnitQuantity"] }, unitMeasure: { name: "setval-c1", value: ["packageUnitMeasure"] } } } ``` ``` { prior: 2, condition: { unitMeasure: { name: "test-regex", value: "(ct|count|counts|ctn)" } }, convertion: { packageUnitQuantity: { name: "math-c2", value: ["unitQuantity"] }, packageUnitMeasure: "count" } } ``` ### Coding ``` const packer = require('@emealscom/packer') const packerRequest = { description: "Broccoli", offerDescription: "Pack of 4 Broccoli", unitMeasure: "grams", unitQuantity: 480, packageUnitMeasure: "ounces", packageUnitQuantity: 12 }; console.log(packer.convert(packerRequest)); ``` ### Result ```` āžœ test node index { estimatedQuantity: 2, status: true } ````