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

            xmlPortFieldAttribute.Properties.AutoCalcField = NullableBooleanFromSwitch(nameof(AutoCalcField));
            xmlPortFieldAttribute.Properties.DataType      = DataType;
            xmlPortFieldAttribute.Properties.FieldValidate = NullableBooleanFromSwitch(nameof(FieldValidate));
            xmlPortFieldAttribute.Properties.Occurrence    = Occurrence;
            xmlPortFieldAttribute.Properties.OnAfterAssignField.Set(OnAfterAssignField);
            xmlPortFieldAttribute.Properties.OnBeforePassField.Set(OnBeforePassField);
            xmlPortFieldAttribute.Properties.SourceField.FieldName         = SourceFieldName;
            xmlPortFieldAttribute.Properties.SourceField.TableVariableName = SourceFieldTableVariableName;
            xmlPortFieldAttribute.Properties.Width = Width;

            yield return(xmlPortFieldAttribute);

            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);
                }
            }
        }
Exemplo n.º 2
0
        public static void Write(this XmlPortFieldAttribute xmlPortFieldAttribute, CSideWriter writer)
        {
            var relevantProperties = xmlPortFieldAttribute.Properties.Where(p => p.HasValue);

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