@jlucaspains/sharp-recipe-parser
Version:
Recipe parsing tools
117 lines (104 loc) • 5.15 kB
JavaScript
import * as Types from "./types.js";
import DefaultEnglish from "./units.en.js";
/**
* @type {Map<string, (input: number) => number>}
*/
const converters = new Map(DefaultEnglish.unitConversions.converters);
/**
* @type {Map<string, string[]>}
*/
const defaultConversions = new Map(
DefaultEnglish.unitConversions.defaultConversions,
);
defaultConversions.set("volume", [
"cup",
"tbsp",
"l",
"ml",
"qt",
"tsp",
"gal",
"pt",
]);
const unitConversions = { converters, defaultConversions };
// volume (cup is base): l, tbsp, qt, tsp, gal, pt
const lFactor = 0.236588;
const tbspFactor = 16;
const mlFactor = 236.588;
const qtFactor = 0.25;
const tspFactor = 48;
const galFactor = 0.0625;
const ptFactor = 0.416337;
converters.set("cup->l", (input) => input * lFactor);
converters.set("cup->ml", (input) => input * mlFactor);
converters.set("cup->tbsp", (input) => input * tbspFactor);
converters.set("cup->qt", (input) => input * qtFactor);
converters.set("cup->tsp", (input) => input * tspFactor);
converters.set("cup->gal", (input) => input * galFactor);
converters.set("cup->pt", (input) => input * ptFactor);
converters.set("l->cup", (input) => input / lFactor);
converters.set("l->ml", (input) => (input / lFactor) * mlFactor);
converters.set("l->tbsp", (input) => (input / lFactor) * tbspFactor);
converters.set("l->qt", (input) => (input / lFactor) * qtFactor);
converters.set("l->tsp", (input) => (input / lFactor) * tspFactor);
converters.set("l->gal", (input) => (input / lFactor) * galFactor);
converters.set("l->pt", (input) => (input / lFactor) * ptFactor);
converters.set("ml->cup", (input) => input / mlFactor);
converters.set("ml->l", (input) => (input / mlFactor) * lFactor);
converters.set("ml->tbsp", (input) => (input / mlFactor) * tbspFactor);
converters.set("ml->qt", (input) => (input / mlFactor) * qtFactor);
converters.set("ml->tsp", (input) => (input / mlFactor) * tspFactor);
converters.set("ml->gal", (input) => (input / mlFactor) * galFactor);
converters.set("ml->pt", (input) => (input / mlFactor) * ptFactor);
converters.set("tbsp->cup", (input) => input / tbspFactor);
converters.set("tbsp->l", (input) => (input / tbspFactor) * lFactor);
converters.set("tbsp->ml", (input) => (input / tbspFactor) * mlFactor);
converters.set("tbsp->qt", (input) => (input / tbspFactor) * qtFactor);
converters.set("tbsp->tsp", (input) => (input / tbspFactor) * tspFactor);
converters.set("tbsp->gal", (input) => (input / tbspFactor) * galFactor);
converters.set("tbsp->pt", (input) => (input / tbspFactor) * ptFactor);
converters.set("qt->cup", (input) => input / qtFactor);
converters.set("qt->l", (input) => (input / qtFactor) * lFactor);
converters.set("qt->ml", (input) => (input / qtFactor) * mlFactor);
converters.set("qt->tbsp", (input) => (input / qtFactor) * tbspFactor);
converters.set("qt->tsp", (input) => (input / qtFactor) * tspFactor);
converters.set("qt->gal", (input) => (input / qtFactor) * galFactor);
converters.set("qt->pt", (input) => (input / qtFactor) * ptFactor);
converters.set("tsp->cup", (input) => input / tspFactor);
converters.set("tsp->l", (input) => (input / tspFactor) * lFactor);
converters.set("tsp->ml", (input) => (input / tspFactor) * mlFactor);
converters.set("tsp->tbsp", (input) => (input / tspFactor) * tbspFactor);
converters.set("tsp->qt", (input) => (input / tspFactor) * qtFactor);
converters.set("tsp->gal", (input) => (input / tspFactor) * galFactor);
converters.set("tsp->pt", (input) => (input / tspFactor) * ptFactor);
converters.set("gal->cup", (input) => input / galFactor);
converters.set("gal->l", (input) => (input / galFactor) * lFactor);
converters.set("gal->ml", (input) => (input / galFactor) * mlFactor);
converters.set("gal->tbsp", (input) => (input / galFactor) * tbspFactor);
converters.set("gal->qt", (input) => (input / galFactor) * qtFactor);
converters.set("gal->tsp", (input) => (input / galFactor) * tspFactor);
converters.set("gal->pt", (input) => (input / galFactor) * ptFactor);
converters.set("pt->cup", (input) => input / ptFactor);
converters.set("pt->l", (input) => (input / ptFactor) * lFactor);
converters.set("pt->ml", (input) => (input / ptFactor) * mlFactor);
converters.set("pt->tbsp", (input) => (input / ptFactor) * tbspFactor);
converters.set("pt->qt", (input) => (input / ptFactor) * qtFactor);
converters.set("pt->tsp", (input) => (input / ptFactor) * tspFactor);
converters.set("pt->gal", (input) => (input / ptFactor) * galFactor);
/**
* @type {Types.Units}
*/
export default {
ingredientUnits: DefaultEnglish.ingredientUnits,
ingredientSizes: DefaultEnglish.ingredientSizes,
timeUnits: DefaultEnglish.timeUnits,
timeUnitMultipliers: DefaultEnglish.timeUnitMultipliers,
temperatureUnits: DefaultEnglish.temperatureUnits,
ingredientPrepositions: DefaultEnglish.ingredientPrepositions,
temperatureMarkers: DefaultEnglish.temperatureMarkers,
ingredientQuantities: DefaultEnglish.ingredientQuantities,
ingredientRangeMarker: DefaultEnglish.ingredientRangeMarker,
ingredientQuantityAddMarker: DefaultEnglish.ingredientQuantityAddMarker,
unitConversions,
defaultTemperatureUnit: "fahrenheit",
};