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; } } }
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() : ""); }
public async Task Process() { var pipe = _pipeBuilder.Build(); var context = new TextProcessingContext(); await pipe.Send(context); _out.Send(context.ProcessedLines); }
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"); }
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); }
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()); }
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); } }
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();
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) => "";
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) : ""); }
internal abstract int EvaluateNumber(TextProcessingContext context, TextObject parent);