/// <summary> /// Parses the specified input string. /// </summary> /// <param name="inputStr">The input string.</param> /// <param name="values">The values.</param> /// <returns></returns> /// <exception cref="System.ArgumentNullException"> /// inputString was expected /// or /// values was expected /// </exception> /// <exception cref="System.IndexOutOfRangeException">Unable to parse an empty dictionary (values)</exception> public IRomanNumber Parse(string inputStr, IDictionary <string, IRomanBase> values) { IRomanNumber retval = null; var buffer = new StringBuilder(); if (string.IsNullOrEmpty(inputStr)) { throw new ArgumentNullException("inputString was expected"); } if (values == null) { throw new ArgumentNullException("values was expected"); } if (values.Count == 0) { throw new IndexOutOfRangeException("Unable to parse an empty dictionary (values)"); } retval = new RomanNumber(); var leftSplit = inputStr.Split(' '); Array.ForEach(leftSplit, p => buffer.Append(values[p].Symbol)); retval = retval.Parse(buffer.ToString()); return(retval); }
/// <summary> /// Parses the specified input string. /// </summary> /// <param name="inputStr">The input string.</param> /// <returns></returns> public IRomanNumber Parse(string inputStr) { IRomanNumber retval = null; if (string.IsNullOrEmpty(inputStr)) { throw new ArgumentNullException("inputString was expected"); } retval = new RomanNumber(); var romanBase = new RomanBase(); Array.ForEach(inputStr.ToCharArray(), p => retval.Symbols.Add(romanBase.Parse(p))); return(retval); }