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); } } }
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;
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);
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);
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); }