Example #1
0
        /// <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);
        }
Example #2
0
        /// <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);
        }