Ejemplo n.º 1
0
        private Statement ParseActionsDeclarationStatement()
        {
            _scanResult.Next().Is(TokenType.Actions);
            var expressionList = ParseExpressionList();

            var accoladeOpen = _scanResult.Next();

            if (accoladeOpen.tokenType != TokenType.AccoladeOpen)
            {
                throw new ParsingException();
            }

            var result = new ActionsDeclarationStatement()
            {
                Name      = expressionList.Last().As <LiteralExpression>().Value,
                Modifiers = expressionList.Take(expressionList.Length - 1).ToNodeList(),
                Actions   = _scanResult.Next().literal
            };

            _scanResult.Next().Is(TokenType.AccoladeClose);
            return(result);
        }
Ejemplo n.º 2
0
        public void ActionsDeclarationStatement()
        {
            ActionsDeclarationStatement actionsDeclarationStatement = ParseStatement <ActionsDeclarationStatement>(@"
actions response myactionname
{
    echo something
    echo somethingelse
    echo ""harry""
    echo \pieter
}");

            Assert.AreEqual("myactionname", actionsDeclarationStatement.Name);
            CollectionAssert.AreEqual(new[] { "response" }, actionsDeclarationStatement.Modifiers.Cast <LiteralExpression>().Select(le => le.Value));

            Assert.IsTrue(actionsDeclarationStatement.Actions.Contains("echo something"));
            Assert.IsTrue(actionsDeclarationStatement.Actions.Contains("echo somethingelse"));

            //preserve quotes:
            Assert.IsTrue(actionsDeclarationStatement.Actions.Contains("echo \"harry\""));

            //preserve backslash
            Assert.IsTrue(actionsDeclarationStatement.Actions.Contains("echo \\pieter"));
        }