protected override IEnumerable <XmlPortNode> CreateItems()
        {
            var xmlPortTextElement = new XmlPortTextElement(Name, GetIndentation(), ID);

            xmlPortTextElement.Properties.DataType        = DataType;
            xmlPortTextElement.Properties.MaxOccurs       = MaxOccurs;
            xmlPortTextElement.Properties.MinOccurs       = MinOccurs;
            xmlPortTextElement.Properties.NamespacePrefix = NamespacePrefix;
            xmlPortTextElement.Properties.OnAfterAssignVariable.Set(OnAfterAssignVariable);
            xmlPortTextElement.Properties.OnBeforePassVariable.Set(OnBeforePassVariable);
            xmlPortTextElement.Properties.TextType     = TextType;
            xmlPortTextElement.Properties.Unbound      = NullableBooleanFromSwitch(nameof(Unbound));
            xmlPortTextElement.Properties.VariableName = VariableName;
            xmlPortTextElement.Properties.Width        = Width;

            yield return(xmlPortTextElement);

            if (ChildNodes != null)
            {
                var variables = new List <PSVariable>()
                {
                    new PSVariable("NodeIndentation", GetIndentation() + 1)
                };
                var childNodes = ChildNodes.InvokeWithContext(null, variables).Select(c => c.BaseObject);


                foreach (var childNode in childNodes.OfType <XmlPortNode>())
                {
                    yield return(childNode);
                }
            }
        }
Beispiel #2
0
        public static void Write(this XmlPortTextElement xmlPortTextElement, CSideWriter writer)
        {
            var relevantProperties = xmlPortTextElement.Properties.Where(p => p.HasValue);

            WriteDeclaration(xmlPortTextElement.ID, xmlPortTextElement.NodeName, xmlPortTextElement.IndentationLevel, "Element", "Text", relevantProperties.Any(), writer);
            relevantProperties.Write(PropertiesStyle.Field, writer);
            writer.Write(IndentationAfterLastTrigger(relevantProperties));
            writer.WriteLine("}");
            writer.Unindent();
            writer.InnerWriter.WriteLine();
        }