protected void ParseFields([NotNull] ItemParseContext context, [NotNull] Item item, [NotNull] LanguageVersionContext languageVersionContext, [NotNull] ITextNode parentTextNode)
 {
     foreach (var childNode in parentTextNode.ChildNodes.Where(c => c.Key != "Version"))
     {
         ParseFieldTextNode(context, item, languageVersionContext, childNode);
     }
 }
        protected override void ParseFieldsTextNode(ItemParseContext context, Item item, ITextNode fieldsTextNode)
        {
            // parse shared fields
            var fieldContext = new LanguageVersionContext();

            ParseAttributes(context, item, fieldContext, fieldsTextNode);

            // parse unversioned and versioned fields
            foreach (var languageChildNode in fieldsTextNode.ChildNodes)
            {
                var languageVersionContext = new LanguageVersionContext();
                languageVersionContext.LanguageProperty.SetValue(new AttributeNameTextNode(languageChildNode));

                ParseAttributes(context, item, languageVersionContext, languageChildNode);
                ParseFields(context, item, languageVersionContext, languageChildNode);

                foreach (var childNode in languageChildNode.ChildNodes.Where(c => c.Key == "Version"))
                {
                    var versionVersionContext = new LanguageVersionContext();
                    versionVersionContext.LanguageProperty.SetValue(languageVersionContext.LanguageProperty);
                    versionVersionContext.VersionProperty.Parse(childNode);

                    ParseAttributes(context, item, versionVersionContext, childNode);
                    ParseFields(context, item, languageVersionContext, childNode);
                }
            }
        }
Exemple #3
0
        protected override void ParseFieldsTextNode(ItemParseContext context, Item item, ITextNode fieldsTextNode)
        {
            // parse shared fields
            var fieldContext = new LanguageVersionContext();

            ParseAttributes(context, item, fieldContext, fieldsTextNode);

            // parse unversioned and versioned fields
            foreach (var languageChildNode in fieldsTextNode.ChildNodes)
            {
                var languageVersionContext = new LanguageVersionContext();
                languageVersionContext.LanguageProperty.SetValue(new AttributeNameTextNode(languageChildNode));

                ParseAttributes(context, item, languageVersionContext, languageChildNode);

                foreach (var versionChildNode in languageChildNode.ChildNodes)
                {
                    if (!int.TryParse(versionChildNode.Key, out var _))
                    {
                        Trace.TraceError(Msg.C1136, "Version element is not a valid number", versionChildNode);
                        continue;
                    }

                    var versionVersionContext = new LanguageVersionContext();
                    versionVersionContext.LanguageProperty.SetValue(languageVersionContext.LanguageProperty);

                    versionVersionContext.VersionProperty.SetValue(new AttributeNameTextNode(versionChildNode));

                    ParseAttributes(context, item, versionVersionContext, versionChildNode);
                }
            }
        }
        public void Execute([NotNull] ItemParseContext context, [NotNull] Template template, [NotNull] ITextNode textNode)
        {
            Context  = context;
            Template = template;
            TextNode = textNode;

            Execute();
        }
        public void Execute([NotNull] ItemParseContext context, [NotNull] Item item, [NotNull] ITextNode textNode)
        {
            Context  = context;
            Item     = item;
            TextNode = textNode;

            Execute();
        }
        protected override void ParseRenderingReferences(ItemParseContext context, ICollection <IReference> references, IProjectItem projectItem, ITextNode renderingTextNode)
        {
            var childNode = renderingTextNode.ChildNodes.FirstOrDefault();

            if (childNode != null)
            {
                base.ParseRenderingReferences(context, references, projectItem, childNode);
            }
        }
        public override void Parse(ItemParseContext context, ITextNode textNode)
        {
            var guid = GetGuid(textNode, "ID");

            if (guid == Guid.Empty)
            {
                Trace.TraceError(Msg.P1035, "'ID' attribute is missing or invalid", textNode);
                return;
            }

            var templateGuid = GetGuid(textNode, "Template");

            if (templateGuid == Guid.Empty)
            {
                Trace.TraceError(Msg.P1036, "'Template' attribute is missing or invalid", textNode);
                return;
            }

            var databaseName     = textNode.GetAttributeValue("DB", context.Database.DatabaseName);
            var database         = context.ParseContext.Project.GetDatabase(databaseName);
            var itemIdOrPath     = textNode.GetAttributeValue("Path");
            var itemName         = Path.GetFileName(itemIdOrPath);
            var templateIdOrPath = templateGuid.Format();

            var item = Factory.Item(database, guid, itemName, itemIdOrPath, templateIdOrPath).With(textNode);

            var sharedFieldContext = new LanguageVersionContext();

            ParseFields(item, textNode, sharedFieldContext);

            foreach (var languageNode in textNode.ChildNodes.Where(n => n.Key == "Language"))
            {
                var unversionedFieldContext = new LanguageVersionContext();
                unversionedFieldContext.LanguageProperty.SetValue(languageNode);

                ParseFields(item, languageNode, unversionedFieldContext);

                foreach (var versionNode in languageNode.ChildNodes.Where(n => n.Key == "Version"))
                {
                    if (!int.TryParse(versionNode.Value, out var _))
                    {
                        Trace.TraceError(Msg.P1037, "Version number must be an integer", versionNode);
                        continue;
                    }

                    var versionedFieldContext = new LanguageVersionContext();
                    versionedFieldContext.LanguageProperty.SetValue(languageNode);
                    versionedFieldContext.VersionProperty.SetValue(versionNode);

                    ParseFields(item, versionNode, versionedFieldContext);
                }
            }

            context.ParseContext.Project.AddOrMerge(item);
        }
        protected override void ParseLayoutTextNode(ItemParseContext context, Item item, ITextNode layoutTextNode)
        {
            var childNode = layoutTextNode.ChildNodes.FirstOrDefault();

            if (childNode == null)
            {
                return;
            }

            var parser = new XmlLayoutTextNodeParser(Factory, ReferenceParser);

            parser.Parse(context, childNode, item);
        }
 public override bool CanParse(ItemParseContext context, ITextNode textNode)
 {
     return(textNode.Snapshot is UnicornTextSnapshot && textNode.Snapshot.SourceFile.AbsoluteFileName.EndsWith(".yml", StringComparison.OrdinalIgnoreCase));
 }
 public override bool CanParse(ItemParseContext context, ITextNode textNode)
 {
     return(textNode.Snapshot is XmlTextSnapshot && textNode.Key == "Template");
 }
 public override bool CanParse(ItemParseContext context, ITextNode textNode) => textNode.Snapshot is XmlTextSnapshot;
Exemple #12
0
        protected override void ParseLayoutTextNode(ItemParseContext context, Item item, ITextNode layoutTextNode)
        {
            var parser = new YamlLayoutTextNodeParser(Factory, ReferenceParser);

            parser.Parse(context, layoutTextNode, item);
        }
 public override bool CanParse(ItemParseContext context, ITextNode textNode) => textNode.Key == "Layout" && textNode.Snapshot is JsonTextSnapshot && textNode.Snapshot.SourceFile.AbsoluteFileName.EndsWith(".layout.json", StringComparison.OrdinalIgnoreCase);
Exemple #14
0
 public override bool CanParse(ItemParseContext context, ITextNode textNode) => textNode.Key == "Layout" && textNode.Snapshot is XmlTextSnapshot && string.Equals(PathHelper.GetExtension(textNode.Snapshot.SourceFile.AbsoluteFileName), ".layout.xml", StringComparison.OrdinalIgnoreCase);
Exemple #15
0
        public override bool CanParse(ItemParseContext context, ITextNode textNode)
        {
            var canParse = textNode.Snapshot is JsonTextSnapshot && textNode.Snapshot.SourceFile.AbsoluteFileName.EndsWith(".content.json", StringComparison.OrdinalIgnoreCase);

            return(canParse);
        }