public override SyntaxToken VisitToken(SyntaxToken token)
        {
            var res      = base.VisitToken(token);
            var kind     = token.Kind();
            var previous = token.GetPreviousToken().Kind();
            var next     = token.GetNextToken().Kind();

            // LeadingTrivia
            switch (kind)
            {
            case SyntaxKind.EqualsGreaterThanToken:
                if (PreEqualsToken.Contains(previous))
                {
                    return(res.WithLeadingTrivia(SyntaxFactory.Space).WithTrailingTrivia(SyntaxFactory.ElasticMarker));
                }
                return(res.WithoutTrivia());
            }

            if (SplitToken.Contains(kind))
            {
                return(res.WithoutTrivia());
            }
            if (SplitToken.Contains(previous))
            {
                res = res.WithLeadingTrivia(SyntaxFactory.ElasticMarker);
            }
            if (SplitToken.Contains(next))
            {
                res = res.WithTrailingTrivia(SyntaxFactory.ElasticMarker);
            }

            return(res);
        }
Example #2
0
        void Verify_Check(bool isValid, params string[] values)

        {
            //------------Setup for test--------------------------
            const char    SplitToken = ',';
            Func <string> getValue   = () => string.Join(SplitToken.ToString(CultureInfo.InvariantCulture), values);

            var rule = new IsValidEmailAddressRule(getValue, SplitToken)
            {
                LabelText = "The item"
            };

            //------------Execute Test---------------------------
            var result = rule.Check();

            //------------Assert Results-------------------------
            if (isValid)
            {
                Assert.IsNull(result);
            }
            else
            {
                StringAssert.Contains("The item contains an invalid email address", result.Message);
            }
        }
Example #3
0
 public static List<SplitToken> SplitBlockquoteTokens(ImmutableArray<IMarkdownToken> tokens)
 {
     var splitTokens = new List<SplitToken>();
     SplitToken splitToken = null;
     foreach (var token in tokens)
     {
         if (token is DfmSectionBlockToken || token is DfmNoteBlockToken)
         {
             splitToken = new SplitToken(token);
             splitTokens.Add(splitToken);
         }
         else
         {
             if (splitToken != null)
             {
                 splitToken.InnerTokens.Add(token);
                 continue;
             }
             splitToken = new SplitToken(token);
             splitToken.InnerTokens.Add(token);
             splitTokens.Add(splitToken);
         }
     }
     return splitTokens;
 }
Example #4
0
        public static List <SplitToken> SplitBlockquoteTokens(ImmutableArray <IMarkdownToken> tokens)
        {
            var        splitTokens = new List <SplitToken>();
            SplitToken splitToken  = null;

            foreach (var token in tokens)
            {
                if (token is DfmSectionBlockToken || token is DfmNoteBlockToken)
                {
                    splitToken = new SplitToken(token);
                    splitTokens.Add(splitToken);
                }
                else
                {
                    if (splitToken != null)
                    {
                        splitToken.InnerTokens.Add(token);
                        continue;
                    }
                    splitToken = new SplitToken(token);
                    splitToken.InnerTokens.Add(token);
                    splitTokens.Add(splitToken);
                }
            }
            return(splitTokens);
        }
        bool ValidateFields()
        {
            _errorColletion.Clear();

            if (SplitType == "Index")
            {
                if (!SplitToken.IsWholeNumber())
                {
                    _errorColletion.Add(new KeyValuePair <ErrorType, string>(ErrorType.Critical, "Please supply a whole positive number for an Index split"));
                    return(false);
                }
                if (!int.TryParse(SplitToken, out int indexToSplitOn))
                {
                    _errorColletion.Add(double.TryParse(SplitToken, out double doubleToSplitOn) ? new KeyValuePair <ErrorType, string>(ErrorType.Critical, "Please supply a number less then 2,147,483,647 for an Index split") : new KeyValuePair <ErrorType, string>(ErrorType.Critical, "Please supply a whole positive number for an Index split"));
                    return(false);
                }

                if (indexToSplitOn < 1)
                {
                    _errorColletion.Add(new KeyValuePair <ErrorType, string>(ErrorType.Critical, "Please supply a whole positive number for an Index split"));
                    return(false);
                }
            }
            else
            {
                if (SplitType == "Chars")
                {
                    if (string.IsNullOrEmpty(SplitToken))
                    {
                        _errorColletion.Add(new KeyValuePair <ErrorType, string>(ErrorType.Critical, "Please supply a value for a Character split"));
                        return(false);
                    }
                }
            }

            if (string.IsNullOrWhiteSpace(VariableListString))
            {
                _errorColletion.Add(new KeyValuePair <ErrorType, string>(ErrorType.Critical, "Variable List String can not be blank/empty"));
                return(false);
            }

            if (!string.IsNullOrEmpty(Prefix) && !ValidateRecordsetPrefix(Prefix))
            {
                _errorColletion.Add(new KeyValuePair <ErrorType, string>(ErrorType.Critical, "Prefix contains invalid characters"));
                return(false);
            }
            if (!string.IsNullOrEmpty(Suffix) && !ValidateName(Suffix))
            {
                _errorColletion.Add(new KeyValuePair <ErrorType, string>(ErrorType.Critical, "Suffix contains invalid characters"));
                return(false);
            }

            return(true);
        }
        IEnumerable <IActionableErrorInfo> ValidationErrorsForIndexSplit()
        {
            var doFocused = new Action(() => { IsSplitOnFocused = true; });

            if (!SplitToken.IsWholeNumber())
            {
                yield return(new ActionableErrorInfo(doFocused)
                {
                    ErrorType = ErrorType.Critical, Message = "Please supply a whole positive number for an Index split"
                });
            }
            else
            {
                int indexToSplitOn;
                if (!int.TryParse(SplitToken, out indexToSplitOn))
                {
                    double doubleToSplitOn;
                    if (double.TryParse(SplitToken, out doubleToSplitOn))
                    {
                        yield return(new ActionableErrorInfo(doFocused)
                        {
                            ErrorType = ErrorType.Critical, Message = "Please supply a number less then 2,147,483,647 for an Index split"
                        });
                    }
                    else
                    {
                        yield return(new ActionableErrorInfo(doFocused)
                        {
                            ErrorType = ErrorType.Critical, Message = "Please supply a whole positive number for an Index split"
                        });
                    }
                }

                if (indexToSplitOn < 1)
                {
                    yield return(new ActionableErrorInfo(doFocused)
                    {
                        ErrorType = ErrorType.Critical, Message = "Please supply a whole positive number for an Index split"
                    });
                }
            }
        }
        public void IncompleteJoinTransition(int index)
        {
            // Arrange
            var trans = new JoinTransition
            {
                Id      = 1,
                Inputs  = _inputs,
                Outputs = new[] { _outputs[0] }
            };
            var split = new SplitToken(_token);

            // Act
            trans.Initialize();
            _inputs[index].Add(split);

            // Assert
            Assert.AreEqual(1, _inputs[index].Tokens.Count());
            Assert.AreEqual(0, _inputs[(index + 1) % 2].Tokens.Count());
            Assert.AreEqual(0, _outputs[0].Tokens.Count());
        }
        public void JoinTransition()
        {
            // Arrange
            var trans = new JoinTransition
            {
                Id      = 1,
                Inputs  = _inputs,
                Outputs = new[] { _outputs[0] }
            };
            var split1 = new SplitToken(_token);
            var split2 = new SplitToken(_token);

            // Act
            trans.Initialize();
            _inputs[0].Add(split1);
            _inputs[1].Add(split2);

            // Assert
            Assert.IsTrue(_inputs.All(i => !i.Tokens.Any()));
            Assert.AreEqual(1, _outputs[0].Tokens.Count());
            Assert.AreEqual(_token, _outputs[0].Tokens.First());
        }
Example #9
0
 public void AddToSplitToken(SplitToken splitToken)
 {
     base.AddObject("SplitToken", splitToken);
 }
Example #10
0
 public static SplitToken CreateSplitToken(global::System.Guid ID)
 {
     SplitToken splitToken = new SplitToken();
     splitToken.ID = ID;
     return splitToken;
 }
        static IExecutionCommand Parse(bool executable, IParseElement element, out bool isGroup)
        {
            isGroup = false;

            if (element is Group)
            {
                Group group = (Group)element;

                if (group.GroupInfo == internalExpression)
                {
                    isGroup = true;
                    return(Parse(true, group.InternalElement));
                }
                else if (group.GroupInfo == groupExpression)
                {
                    isGroup = true;
                    // We skip group expression.
                    return(Parse(true, group.InternalElement));
                }
            }
            else if (element is Identifier)
            {
                Identifier id = (Identifier)element;

                if (!executable)
                {
                    return(new ConstantCommand(id.Token.TokenValue));
                }
                else
                {
                    return(new MethodCallCommand(new ConstantCommand(id.Token.TokenValue), new IExecutionCommand[0]));
                }
            }
            else if (element is SplitToken)
            {
                SplitToken token = (SplitToken)element;

                if (token.TokenInfo == logicalAnd)
                {
                    return(new AndCommand(Parse(true, token.LeftElement), Parse(true, token.RightElement)));
                }
                else if (token.TokenInfo == logicalOr)
                {
                    return(new OrCommand(Parse(true, token.LeftElement), Parse(true, token.RightElement)));
                }
                else if (token.TokenInfo == parallel)
                {
                    return(new ParallelCommand(Parse(true, token.LeftElement), Parse(true, token.RightElement)));
                }
                else if (token.TokenInfo == pipe)
                {
                    return(new PipeCommand(Parse(true, token.LeftElement), Parse(true, token.RightElement)));
                }
            }
            else if (element is ElementSequence)
            {
                ElementSequence token = (ElementSequence)element;

                // We have a method call.
                IExecutionCommand        methodName = Parse(false, token.Elements[0]);
                List <IExecutionCommand> parameters = new List <IExecutionCommand>();
                for (int i = 1; i < token.Elements.Length; i++)
                {
                    parameters.Add(Parse(false, token.Elements[i]));
                }

                return(new MethodCallCommand(methodName, parameters.ToArray()));
            }

            throw new Exception("Could not parse command.");
        }