Esempio n. 1
0
 private static Parse <string> DecimalStringHelper(string x, bool front, int stelle)
 {
     return(value =>
     {
         var culture = new CultureInfo("en-gb");
         if (front)
         {
             ParseResult <int> parseResult = DigitValue()(value);
             if (parseResult.Succeeded)
             {
                 string str = Convert.ToString(10 * Convert.ToInt32(x) + Convert.ToInt32(parseResult.Result), culture);
                 var doubleVal = DecimalStringHelper(str, true, 1);
                 ParseResult <string> result = doubleVal(parseResult.RemainingInput);
                 return result;
             }
             else
             {
                 ParseResult <char> pointResult = IsPoint()(value);
                 if (pointResult.Succeeded)
                 {
                     var doubleVal = DecimalStringHelper(x, false, 1);
                     ParseResult <string> result = doubleVal(pointResult.RemainingInput);
                     return result;
                 }
                 if (string.IsNullOrEmpty(x) || (!parseResult.Succeeded && !pointResult.Succeeded))
                 {
                     return new ParseResult <string>(x, parseResult.RemainingInput, false);
                 }
                 return new ParseResult <string>(x, parseResult.RemainingInput, true);
             }
         }
         else
         {
             ParseResult <int> parseResult = DigitValue()(value);
             if (parseResult.Succeeded)
             {
                 decimal dec = (decimal)parseResult.Result;
                 for (int i = 0; i < stelle; i++)
                 {
                     dec = dec / 10;
                 }
                 string str = Convert.ToString(Convert.ToDecimal(x) + Convert.ToDecimal(dec), culture);
                 var doubleVal = DecimalStringHelper(str, false, ++stelle);
                 ParseResult <string> result = doubleVal(parseResult.RemainingInput);
                 return result;
             }
             if (string.IsNullOrEmpty(x))
             {
                 return new ParseResult <string>(x, parseResult.RemainingInput, false);
             }
             return new ParseResult <string>(x, parseResult.RemainingInput, true);
         }
     });
 }
Esempio n. 2
0
 private static Parse <decimal> DecimalHelper(decimal x, bool front, int stelle)
 {
     return(value =>
     {
         if (front)
         {
             ParseResult <int> parseResult = DigitValue()(value);
             if (parseResult.Succeeded)
             {
                 var doubleVal = DecimalHelper(10 * x + parseResult.Result, true, 1);
                 ParseResult <decimal> result = doubleVal(parseResult.RemainingInput);
                 return result;
             }
             else
             {
                 ParseResult <char> pointResult = IsPoint()(value);
                 if (pointResult.Succeeded)
                 {
                     var doubleVal = DecimalHelper(x, false, 1);
                     ParseResult <decimal> result = doubleVal(pointResult.RemainingInput);
                     return result;
                 }
                 return new ParseResult <decimal>(x, parseResult.RemainingInput, false);
             }
         }
         else
         {
             ParseResult <int> parseResult = DigitValue()(value);
             if (parseResult.Succeeded)
             {
                 decimal dec = (decimal)parseResult.Result;
                 for (int i = 0; i < stelle; i++)
                 {
                     dec = dec / 10;
                 }
                 var doubleVal = DecimalHelper(x + dec, false, ++stelle);
                 ParseResult <decimal> result = doubleVal(parseResult.RemainingInput);
                 return result;
             }
             return new ParseResult <decimal>(x, parseResult.RemainingInput, false);
         }
     });
 }