public override string Process(string input, Dictionary <string, string> currencyConverters, Dictionary <string, float> materials) { input = input.TrimEnd('?'); var parts = input.Split(new[] { " is " }, StringSplitOptions.RemoveEmptyEntries); var predicate = parts[1]; var predicateParts = predicate.Split(new[] { " " }, StringSplitOptions.RemoveEmptyEntries); var materialkey = predicateParts[predicateParts.Length - 1]; if (!materials.ContainsKey(materialkey)) { return(Program.ERROR_MESSAGE); } var roman = string.Empty; for (int i = 0; i < predicateParts.Length - 1; i++) { var currencyKey = predicateParts[i]; if (!currencyConverters.ContainsKey(currencyKey)) { return(Program.ERROR_MESSAGE); } roman += currencyConverters[currencyKey]; } try { // NOTE: would normally Inject this converter from IoC var multiplier = new RomanConverter.Converter().GetIntFromRoman(roman); var total = materials[materialkey] * multiplier; return(string.Format("{0} is {1} Credits", predicate, total)); } catch (Exception) { return(Program.ERROR_MESSAGE); } }
public override string Process(string input, Dictionary <string, string> currencyConverters, Dictionary <string, float> materials) { var parts = input.Split(new[] { " is " }, StringSplitOptions.RemoveEmptyEntries); var subjectParts = parts[0].Split(new[] { " " }, StringSplitOptions.RemoveEmptyEntries); var materialkey = subjectParts[subjectParts.Length - 1]; var roman = string.Empty; for (int i = 0; i < subjectParts.Length - 1; i++) { var currencyKey = subjectParts[i]; if (!currencyConverters.ContainsKey(currencyKey)) { return(Program.ERROR_MESSAGE); } roman += currencyConverters[currencyKey]; } int multiplier = 0; try { // NOTE: would normally Inject this converter from IoC multiplier = new RomanConverter.Converter().GetIntFromRoman(roman); } catch (Exception) { return(Program.ERROR_MESSAGE); } var totalString = parts[1].Replace(" credits", ""); int total = 0; if (!int.TryParse(totalString, out total)) { return(Program.ERROR_MESSAGE); } if (multiplier == 0 || total == 0) { return(Program.ERROR_MESSAGE); } var value = total / (float)multiplier; if (materials.ContainsKey(materialkey)) { materials.Remove(materialkey); } materials.Add(materialkey, value); return(string.Empty); }
public override string Process(string input, Dictionary <string, string> currencyConverters, Dictionary <string, float> materials) { var parts = input.Split(new[] { " is " }, StringSplitOptions.RemoveEmptyEntries); var currency = parts[0]; var roman = parts[1]; try { var val = new RomanConverter.Converter().GetIntFromRoman(roman); if (currencyConverters.ContainsKey(currency)) { currencyConverters.Remove(currency); } currencyConverters.Add(currency, roman); return(string.Empty); } catch (Exception) { return("I have no idea what you are talking about"); } }