internal bool EvaluateBoolean(TextProcessingContext context, TextObject parent)
        {
            switch (this._op)
            {
            case ComparisonOperation.Equals:
                return(this.EvaluateAsNumber(this._exp1, context, parent) == this.EvaluateAsNumber(this._exp2, context, parent));

            case ComparisonOperation.NotEquals:
                return(this.EvaluateAsNumber(this._exp1, context, parent) != this.EvaluateAsNumber(this._exp2, context, parent));

            case ComparisonOperation.GreaterThan:
                return(this.EvaluateAsNumber(this._exp1, context, parent) > this.EvaluateAsNumber(this._exp2, context, parent));

            case ComparisonOperation.GreaterOrEqual:
                return(this.EvaluateAsNumber(this._exp1, context, parent) >= this.EvaluateAsNumber(this._exp2, context, parent));

            case ComparisonOperation.LessThan:
                return(this.EvaluateAsNumber(this._exp1, context, parent) < this.EvaluateAsNumber(this._exp2, context, parent));

            case ComparisonOperation.LessOrEqual:
                return(this.EvaluateAsNumber(this._exp1, context, parent) <= this.EvaluateAsNumber(this._exp2, context, parent));

            default:
                return(false);
            }
        }
        internal MultiStatement GetValue(TextProcessingContext context, TextObject parent)
        {
            if (this._innerVariable == null)
            {
                return(context.GetVariableValue(this._identifierName, parent));
            }
            MultiStatement multiStatement = this._innerVariable.GetValue(context, parent);

            switch (multiStatement)
            {
            case null:
            case null:
                return((MultiStatement)null);

            default:
                using (IEnumerator <TextExpression> enumerator = multiStatement.SubStatements.GetEnumerator())
                {
                    while (enumerator.MoveNext())
                    {
                        if (enumerator.Current is FieldExpression current4 && current4.FieldName == this._identifierName)
                        {
                            if (current4.InnerExpression is MultiStatement)
                            {
                                return(current4.InnerExpression as MultiStatement);
                            }
                            return(new MultiStatement((IEnumerable <TextExpression>) new TextExpression[1]
                            {
                                current4.InnerExpression
                            }));
                        }
                    }
                    goto case null;
                }
            }
        }
Ejemplo n.º 3
0
        internal override string EvaluateString(TextProcessingContext context, TextObject parent)
        {
            bool           flag           = false;
            int            index          = 0;
            TextExpression textExpression = (TextExpression)null;

            while (!flag && index < this._conditionExpressions.Length)
            {
                TextExpression conditionExpression = this._conditionExpressions[index];
                string         str = conditionExpression.EvaluateString(context, parent);
                if (str.Length != 0)
                {
                    flag = conditionExpression.TokenType != TokenType.ParameterWithAttribute ? (uint)this.EvaluateAsNumber(conditionExpression, context, parent) > 0U : !str.IsStringNoneOrEmpty();
                }
                if (flag)
                {
                    if (index < this._resultExpressions.Length)
                    {
                        textExpression = this._resultExpressions[index];
                    }
                }
                else
                {
                    ++index;
                }
            }
            if (textExpression == null && index < this._resultExpressions.Length)
            {
                textExpression = this._resultExpressions[index];
            }
            return(textExpression?.EvaluateString(context, parent) ?? "");
        }
        internal override string EvaluateString(TextProcessingContext context, TextObject parent)
        {
            TextObject paramWithoutEvaluate = context.GetFunctionParamWithoutEvaluate(this._parameter);

            (TextObject value, bool doesValueExist)qualifiedVariableValue = context.GetQualifiedVariableValue(paramWithoutEvaluate.ToString() + this._attribute, parent);
            TextObject textObject = qualifiedVariableValue.value;

            return(qualifiedVariableValue.doesValueExist ? textObject.ToString() : "");
        }
Ejemplo n.º 5
0
        public async Task Process()
        {
            var pipe = _pipeBuilder.Build();

            var context = new TextProcessingContext();

            await pipe.Send(context);

            _out.Send(context.ProcessedLines);
        }
Ejemplo n.º 6
0
 internal int EvaluateAsNumber(
     TextExpression exp,
     TextProcessingContext context,
     TextObject parent)
 {
     if (exp is NumeralExpression numeralExpression)
     {
         return(numeralExpression.EvaluateNumber(context, parent));
     }
     string  s     = exp.EvaluateString(context, parent);
     int     num   = 0;
     ref int local = ref num;
        internal override string EvaluateString(TextProcessingContext context, TextObject parent)
        {
            switch (this.TokenType)
            {
            case TokenType.FunctionParam:
                return(context.GetFunctionParam(this.RawValue).ToString());

            case TokenType.ParameterWithMarkerOccurance:
                return(context.GetParameterWithMarkerOccurance(this.RawValue, parent).ToString());

            default:
                return(this.RawValue);
            }
        }
        internal override string EvaluateString(TextProcessingContext context, TextObject parent)
        {
            MultiStatement multiStatement = this._innerVariable.GetValue(context, parent);

            if (multiStatement != null)
            {
                foreach (TextExpression subStatement in (IEnumerable <TextExpression>)multiStatement.SubStatements)
                {
                    if (subStatement.TokenType == TokenType.LanguageMarker && subStatement.RawValue.Substring(2, subStatement.RawValue.Length - 3) == this.IdentifierName)
                    {
                        return("1");
                    }
                }
            }
            return("0");
        }
Ejemplo n.º 9
0
        public async Task SplitByLinesFilter_Perform_Spliting_Correctly()
        {
            string[] expected = new string[] { "1", "2", "asdasd" };
            string   text     = string.Join(Environment.NewLine, expected);

            var filter = new SplitByLinesFilter();

            var context = new TextProcessingContext
            {
                SourceText = text
            };

            await filter.Send(context, new EmptyPipe <TextProcessingContext>());

            CollectionAssert.AreEquivalent(expected, context.RawLines);
        }
Ejemplo n.º 10
0
        public async Task ExtractTextFilter_Use_InputProvider_Correctly()
        {
            string expected = "res";

            var inputSub = Substitute.For <IInputProvider>();

            inputSub.GetAsync().Returns(Task.FromResult(expected));

            var filter = new ExtractTextFilter(inputSub);

            var context = new TextProcessingContext();

            await filter.Send(context, new EmptyPipe <TextProcessingContext>());

            Assert.AreEqual(expected, context.SourceText);
        }
        internal override string EvaluateString(TextProcessingContext context, TextObject parent)
        {
            int            asNumber    = this.EvaluateAsNumber(this._indexExp, context, parent);
            MultiStatement arrayAccess = context.GetArrayAccess(this.RawValue, asNumber);

            if (arrayAccess == null)
            {
                return("");
            }
            MBStringBuilder mbStringBuilder = new MBStringBuilder();

            mbStringBuilder.Initialize(callerMemberName: nameof(EvaluateString));
            foreach (TextExpression subStatement in (IEnumerable <TextExpression>)arrayAccess.SubStatements)
            {
                mbStringBuilder.Append <string>(subStatement.EvaluateString(context, parent));
            }
            return(mbStringBuilder.ToStringAndRelease());
        }
Ejemplo n.º 12
0
        public async Task TextLinesParallelProcessingFilter_Call_Pipe_With_Correct_Args()
        {
            var context = new TextProcessingContext
            {
                RawLines = new string[] { "1, 2, 3" }
            };

            var pipeSub = new MockPipe(processingContext =>
            {
                Assert.AreEqual(context.RawLines.First(), processingContext.ProcessedLine);
            });

            var filter = new TextLinesParallelProcessingFilter(pipeSub, new ConcurrencySettings
            {
                DegreeOfParallelism = 1
            });

            await filter.Send(context, new EmptyPipe <TextProcessingContext>());
        }
        private string MarkerOccuranceExpression(string identifierName, string text)
        {
            int             i               = 0;
            int             num1            = 0;
            int             num2            = 0;
            MBStringBuilder mbStringBuilder = new MBStringBuilder();

            mbStringBuilder.Initialize(callerMemberName: nameof(MarkerOccuranceExpression));
            for (; i < text.Length; ++i)
            {
                if (text[i] != '{')
                {
                    if (num1 == 1 && num2 == 0)
                    {
                        mbStringBuilder.Append(text[i]);
                    }
                }
                else
                {
                    string token = TextProcessingContext.ReadFirstToken(text, ref i);
                    if (TextProcessingContext.IsDeclarationFinalizer(token))
                    {
                        --num1;
                        if (num2 > num1)
                        {
                            num2 = num1;
                        }
                    }
                    else if (TextProcessingContext.IsDeclaration(token))
                    {
                        string strB = token.Substring(1);
                        int    num3 = num2 != num1 ? 0 : (string.Compare(identifierName, strB, StringComparison.InvariantCultureIgnoreCase) == 0 ? 1 : 0);
                        ++num1;
                        if (num3 != 0)
                        {
                            num2 = num1;
                        }
                    }
                }
            }
            return(mbStringBuilder.ToStringAndRelease());
        }
        internal override string EvaluateString(TextProcessingContext context, TextObject parent)
        {
            MultiStatement multiStatement = this.GetValue(context, parent);

            if (multiStatement == null)
            {
                return("");
            }
            MBStringBuilder mbStringBuilder = new MBStringBuilder();

            mbStringBuilder.Initialize(callerMemberName: nameof(EvaluateString));
            foreach (TextExpression subStatement in (IEnumerable <TextExpression>)multiStatement.SubStatements)
            {
                if (subStatement != null)
                {
                    mbStringBuilder.Append <string>(subStatement.EvaluateString(context, parent));
                }
            }
            return(mbStringBuilder.ToStringAndRelease());
        }
        internal override int EvaluateNumber(TextProcessingContext context, TextObject parent)
        {
            switch (this._op)
            {
            case ArithmeticOperation.Add:
                return(this.EvaluateAsNumber(this._exp1, context, parent) + this.EvaluateAsNumber(this._exp2, context, parent));

            case ArithmeticOperation.Subtract:
                return(this.EvaluateAsNumber(this._exp1, context, parent) - this.EvaluateAsNumber(this._exp2, context, parent));

            case ArithmeticOperation.Multiply:
                return(this.EvaluateAsNumber(this._exp1, context, parent) * this.EvaluateAsNumber(this._exp2, context, parent));

            case ArithmeticOperation.Divide:
                return(this.EvaluateAsNumber(this._exp1, context, parent) / this.EvaluateAsNumber(this._exp2, context, parent));

            default:
                return(0);
            }
        }
Ejemplo n.º 16
0
 internal abstract string EvaluateString(TextProcessingContext context, TextObject parent);
 internal override string EvaluateString(TextProcessingContext context, TextObject parent) => this.EvaluateNumber(context, parent).ToString();
 internal override string EvaluateString(TextProcessingContext context, TextObject parent) => context.CallFunction(this._functionName, this._functionParams, parent).ToString();
Ejemplo n.º 19
0
 internal override string EvaluateString(TextProcessingContext context, TextObject parent) => this._innerExp.EvaluateString(context, parent);
 internal override int EvaluateNumber(TextProcessingContext context, TextObject parent) => !this.EvaluateBoolean(context, parent) ? 0 : 1;
 internal override string EvaluateString(TextProcessingContext context, TextObject parent) => "";
Ejemplo n.º 22
0
        internal override string EvaluateString(TextProcessingContext context, TextObject parent)
        {
            int asNumber = this.EvaluateAsNumber(this._selection, context, parent);

            return(asNumber >= 0 && asNumber < this._selectionExpressions.Count ? this._selectionExpressions[asNumber].EvaluateString(context, parent) : "");
        }
Ejemplo n.º 23
0
 internal abstract int EvaluateNumber(TextProcessingContext context, TextObject parent);