Beispiel #1
0
        public override AstVisitAction VisitCommand(CommandAst commandAst)
        {
            object newParentObject;
            var    commandElements = commandAst.CommandElements;
            string dslInstanceName = this.DslNameGiver(commandElements, commandAst.Parent);

            if (dslInstanceName == null)
            {
                return(AstVisitAction.Continue);
            }

            string dslTypeName = ((StringConstantExpressionAst)commandElements[0]).Value;

            dslTypeName = dslTypeName.Replace("PSDesiredStateConfiguration\\", "");
            if (dslTypeName.ToLowerInvariant() == "configuration")
            {
                CommandParameterAst nameAst = (CommandParameterAst)commandAst.Find(ast => ast is CommandParameterAst && "name".Equals(((CommandParameterAst)ast).ParameterName.ToLowerInvariant()), false);
                newParentObject = this.ConfigurationAction(nameAst.Argument.ToString(), commandAst.Extent, this.GetCurrentNestingLevel(), this.GetCurrentParentObject());
            }
            else
            {
                newParentObject = this.DslAction(dslTypeName, dslInstanceName, commandAst.Extent, this.GetCurrentNestingLevel(), this.GetCurrentParentObject());
            }

            Ast body = commandAst.Find(ast => ast is CommandParameterAst && ("body".Equals(((CommandParameterAst)ast).ParameterName.ToLowerInvariant()) ||
                                                                             "value".Equals(((CommandParameterAst)ast).ParameterName.ToLowerInvariant())), false);

            if (body != null)
            {
                this.VisitChildren(body, newParentObject);
            }
            else
            {
                this.VisitChildren(commandElements[commandElements.Count - 1], newParentObject);
            }

            return(AstVisitAction.SkipChildren);
        }