Example #1
0
        private double GetGcd(InternalEvaluatorValue a, InternalEvaluatorValue b)
        {
            while (Abs(b) > NoStringEvaluatorConstants.FloatingTolerance)
            {
                var tmp = b;
                b = a % b;
                a = tmp;
            }

            return(a);
        }
Example #2
0
        private string CropWordWord(string word, InternalEvaluatorValue argStart, InternalEvaluatorValue argEnd)
        {
            var wordStart = argStart.GetWord();
            var wordEnd   = argEnd.GetWord();

            var wordStartIndex = word.IndexOf(wordStart, StringComparison.Ordinal);

            if (wordStartIndex == -1)
            {
                return(string.Empty);
            }
            wordStartIndex += wordStart.Length;

            var wordEndIndex = word.AsSpan().Slice(wordStartIndex).IndexOf(wordEnd, StringComparison.Ordinal);

            if (wordEndIndex == -1)
            {
                return(string.Empty);
            }
            wordEndIndex += wordStartIndex;

            return(word[wordStartIndex..wordEndIndex]);
Example #3
0
        private string MiddleWord(InternalEvaluatorValue argStart, InternalEvaluatorValue argEnd, string word)
        {
            if (argStart.IsNumber && argEnd.IsNumber)
            {
                return(CropNumberNumber(word, argStart, argEnd));
            }

            if (argStart.IsNumber && argEnd.IsWord)
            {
                return(CropNumberWord(word, argStart, argEnd));
            }

            if (argStart.IsWord && argEnd.IsNumber)
            {
                return(CropWordNumber(word, argStart, argEnd));
            }

            if (argStart.IsWord && argEnd.IsWord)
            {
                return(CropWordWord(word, argStart, argEnd));
            }

            return(string.Empty);
        }
        /// <summary>
        /// Concates two values to word
        /// </summary>
        public InternalEvaluatorValue Concat(InternalEvaluatorValue a, InternalEvaluatorValue b)
        {
            var word = $"{a}{b}";

            return(Create(word));
        }
Example #5
0
 private double GetLcm(InternalEvaluatorValue a, InternalEvaluatorValue b)
 {
     return((a * b) / GetGcd(a, b));
 }