public decimal EggsConsumedFromIngredientMeasurement(string measurement) { var parse = new ParseFraction(); var measurementArray = SplitWeightMeasurement(measurement); return(parse.Parse(measurementArray[0])); }
public string[] SplitAndAdjustEggMeasurement(string eggMeasurement, decimal multiplier) { var parse = new ParseFraction(); var adjustedEggMeasurement = new string[] { }; int n; var eggsAdjusted = ""; var eggQuantity = ""; var typeOfEggs = ""; for (int i = 0; i < eggMeasurement.Count(); i++) { if ((i > 0) && (i < eggMeasurement.Count() - 1)) { var previous = i - 1; var next = i + 1; if ((eggMeasurement[i] == ' ') && (int.TryParse(eggMeasurement[previous].ToString(), out n)) && (!int.TryParse(eggMeasurement[next].ToString(), out n))) { eggQuantity = eggMeasurement.Substring(0, i); typeOfEggs = eggMeasurement.Substring(next, (eggMeasurement.Count() - (i + 1))); eggsAdjusted = (parse.Parse(eggQuantity) * multiplier).ToString(); var eggsAdjustedArr = new string[] { }; if ((eggsAdjusted.Contains(".00") || eggsAdjusted.Contains(".0")) || eggsAdjusted[eggsAdjusted.Count() - 1] == '.') { eggsAdjustedArr = eggsAdjusted.Split('.'); eggsAdjusted = eggsAdjustedArr[0]; } adjustedEggMeasurement = new string[] { eggsAdjusted, typeOfEggs }; break; } } } return(adjustedEggMeasurement); //a question for the future: what to do with the liquid eggs, like the egg beaters... that will obviously have eggs in the name, but will need to be dealt with differently //the easiest solution I can see if the name has cups, tablespoons or teaspoons to return the valule of splitMultiLevelMeasurement(egg measurement) }
public decimal ConvertWeightToOunces(string weight) { if (string.IsNullOrEmpty(weight)) { throw new Exception("Weight is null when trying to convert weight to ounces"); } var measurements = new string[] { "gall", "cup", "pint", "quart", "pound", "lb", "oz", "ounce", "gram" }; var count = 0; foreach (var measurement in measurements) { if (weight.ToLower().Contains(measurement)) { count++; break; } } if (count == 1) { var parse = new ParseFraction(); weight = weight.ToLower(); var splitWeight = SplitWeightMeasurement(weight); var weightToBeConverted = parse.Parse(splitWeight[0]); if (weight.ToLower().Contains("gall")) { return(GallonsToOunces(weightToBeConverted)); } if (weight.ToLower().Contains("pint")) { return(PintsToOunces(weightToBeConverted)); } if (weight.ToLower().Contains("quart")) { return(QuartsToOunces(weightToBeConverted)); } if (weight.ToLower().Contains("pound") || weight.Contains("lb")) { return(PoundsToOunces(weightToBeConverted)); } if (weight.ToLower().Contains("cup")) { return(CupsToOunces(weightToBeConverted)); } if (weight.ToLower().Contains("gram")) { return(GramsToOunces(weightToBeConverted)); } else { return(Math.Round((weightToBeConverted), 2)); } } else { return(0m); } }
public decimal AdjustToTeaspoons(string measurement) { var parseFraction = new ParseFraction(); var splitMeasurement = new string[] { }; var decimalMeasurement = 0m; var trimmedMeasurement = ""; var convertToTeaspoonMeasurement = 0m; if (measurement.ToLower().Contains("cup")) { splitMeasurement = measurement.ToLower().Split('c'); trimmedMeasurement = splitMeasurement[0].TrimEnd(); decimalMeasurement = parseFraction.Parse(trimmedMeasurement); convertToTeaspoonMeasurement = CupsToTeaspoons(decimalMeasurement); } if ((measurement.ToLower().Contains("table"))) { splitMeasurement = measurement.ToLower().Split('t'); trimmedMeasurement = splitMeasurement[0].TrimEnd(); decimalMeasurement = parseFraction.Parse(trimmedMeasurement); convertToTeaspoonMeasurement = TablespoonsToTeaspoons(decimalMeasurement); } if ((measurement.ToLower().Contains("tea"))) { splitMeasurement = measurement.ToLower().Split('t'); trimmedMeasurement = splitMeasurement[0].TrimEnd(); decimalMeasurement = parseFraction.Parse(trimmedMeasurement); convertToTeaspoonMeasurement = decimalMeasurement; } if ((measurement.ToLower().Contains("pinch"))) { splitMeasurement = measurement.ToLower().Split('p'); trimmedMeasurement = splitMeasurement[0].TrimEnd(); decimalMeasurement = parseFraction.Parse(trimmedMeasurement); convertToTeaspoonMeasurement = PinchesToTeaspoons(decimalMeasurement); } return(Math.Round(convertToTeaspoonMeasurement, 2)); }
//there is so much repetition here... this has to be fixed. //pattern: dictionary with keys: cups, tablespoons, teaspoons, pinches, //i can have these numbers in an array, and have the teaspoon measurement go through the numbers in the array and add to the dictionary based on the corresponding value... //the majority of the filled lines here come from adding to the dictionary... //this one should be pretty easy, actually, just having a method to add to the dictionary cups, tablespoons or pinches based whether the teaspoon amount >= 48, etc. public string CondenseTeaspoonMeasurement(decimal teaspoons) { var parse = new ParseFraction(); var measDict = new Dictionary <string, decimal>(); var condensedMeasurement = ""; do { if (teaspoons >= 576) { if (measDict.Keys.Contains("cups")) { measDict["cups"] = measDict["cups"] + 12m; } if (!measDict.Keys.Contains("cups")) { measDict.Add("cups", 12m); } teaspoons -= 576m; } if (teaspoons >= 384) { if (measDict.Keys.Contains("cups")) { measDict["cups"] = measDict["cups"] + 8m; } if (!measDict.Keys.Contains("cups")) { measDict.Add("cups", 8m); } teaspoons -= 384m; } if (teaspoons >= 192) { if (measDict.Keys.Contains("cups")) { measDict["cups"] = measDict["cups"] + 4m; } if (!measDict.Keys.Contains("cups")) { measDict.Add("cups", 4m); } teaspoons -= 192m; } if (teaspoons >= 96) { if (measDict.Keys.Contains("cups")) { measDict["cups"] = measDict["cups"] + 2m; } if (!measDict.Keys.Contains("cups")) { measDict.Add("cups", 2m); } teaspoons -= 96m; } if (teaspoons >= 48m) { if (measDict.Keys.Contains("cups")) { measDict["cups"] = measDict["cups"] + 1m; } if (!measDict.Keys.Contains("cups")) { measDict.Add("cups", 1m); } teaspoons -= 48m; } if (teaspoons < 48 && teaspoons >= 32) { if (measDict.Keys.Contains("cups")) { measDict["cups"] = measDict["cups"] + .66m; } if (!measDict.Keys.Contains("cups")) { measDict.Add("cups", .66m); } teaspoons -= 32; } if (teaspoons < 32 && teaspoons >= 24) { if (measDict.Keys.Contains("cups")) { measDict["cups"] = measDict["cups"] + .5m; } if (!measDict.Keys.Contains("cups")) { measDict.Add("cups", .5m); } teaspoons -= 24m; } if (teaspoons < 24 && teaspoons >= 16) { if (measDict.Keys.Contains("cups")) { measDict["cups"] = measDict["cups"] + .33m; } if (!measDict.Keys.Contains("cups")) { measDict.Add("cups", .33m); } teaspoons -= 16m; } if (teaspoons < 16 && teaspoons >= 12) { if (measDict.Keys.Contains("cups")) { measDict["cups"] = measDict["cups"] + .25m; } if (!measDict.Keys.Contains("cups")) { measDict.Add("cups", .25m); } teaspoons -= 12m; } if (teaspoons < 12m && teaspoons >= 3m) { if (measDict.Keys.Contains("tablespoons")) { measDict["tablespoons"] = measDict["tablespoons"] + 1m; } if (!measDict.Keys.Contains("tablespoons")) { measDict.Add("tablespoons", 1m); } teaspoons -= 3m; } if (teaspoons < 3m && teaspoons >= 1) { if (measDict.Keys.Contains("teaspoons")) { measDict["teaspoons"] = measDict["teaspoons"] + 1m; } if (!measDict.Keys.Contains("teaspoons")) { measDict.Add("teaspoons", 1m); } teaspoons -= 1m; } if (teaspoons < 1m && teaspoons >= .125m) { if (teaspoons < .28m && teaspoons > .22m) { teaspoons = .25m; } if (teaspoons > .95m) { teaspoons = 1m; } if (measDict.Keys.Contains("teaspoons")) { measDict["teaspoons"] = measDict["teaspoons"] + .125m; } if (!measDict.Keys.Contains("teaspoons")) { measDict.Add("teaspoons", .125m); } teaspoons -= .125m; } if (teaspoons < .125m && teaspoons > 0m) { if (measDict.Keys.Contains("pinches")) { measDict["pinches"] = measDict["pinches"] + 1; } if (!measDict.Keys.Contains("pinches")) { measDict.Add("pinches", 1); } teaspoons -= .06m; if (teaspoons < .05m && teaspoons > 0m) { teaspoons = 0; } } } while (teaspoons > 0m); foreach (KeyValuePair <string, decimal> measurement in measDict) { var valArr = new string[] { }; var value = Math.Round(measurement.Value, 3).ToString().TrimStart('0'); if (value.Contains(".00") || value.Contains(".0")) { valArr = value.Split('.'); var singleCondensedMeasurement = parse.ParseDecimalToFraction(valArr[0].TrimEnd('0') + " " + measurement.Key) + " "; condensedMeasurement += singleCondensedMeasurement; } else { var singleCondensedMeasurement = parse.ParseDecimalToFraction(value.TrimEnd('0') + " " + measurement.Key) + " "; condensedMeasurement += singleCondensedMeasurement; } } var sampleTest = condensedMeasurement.Trim(); return(condensedMeasurement.TrimEnd()); }