public static void WriteAsYaml([NotNull] this LayoutBuilder layoutBuilder, [NotNull] TextWriter writer) { var output = new YamlTextWriter(writer); output.WriteStartElement("Layout"); foreach (var deviceBuilder in layoutBuilder.Devices) { output.WriteStartElement("Device"); output.WriteAttributeString("Name", deviceBuilder.DeviceName); output.WriteAttributeStringIf("Layout", deviceBuilder.LayoutItemPath); foreach (var renderingBuilder in deviceBuilder.Renderings.Where(r => r.ParentRendering == null)) { WriteAsYaml(output, deviceBuilder, renderingBuilder); } output.WriteEndElement(); } output.WriteEndElement(); }
public void WriteAsYamlTest() { var item = Project.ProjectItems.FirstOrDefault(i => i.QualifiedName == "/sitecore/content/Home/YamlItem") as Item; Assert.IsNotNull(item); var writer = new YamlTextWriter(new StringWriter()); item.WriteAsYaml(writer); var result = writer.ToString(); Assert.IsNotNullOrEmpty(result); }
public static void WriteAsYaml([NotNull] this Item item, [NotNull] TextWriter writer, [CanBeNull] Action<TextWriter, int> writeInner = null) { var output = new YamlTextWriter(writer); var sharedFields = item.Fields.Where(f => string.IsNullOrEmpty(f.Language) && f.Version == 0).ToList(); var unversionedFields = item.Fields.Where(f => !string.IsNullOrEmpty(f.Language) && f.Version == 0).ToList(); var versionedFields = item.Fields.Where(f => !string.IsNullOrEmpty(f.Language) && f.Version != 0).ToList(); output.WriteStartElement("Item"); output.WriteAttributeString("Id", item.Uri.Guid.Format()); output.WriteAttributeStringIf("Database", item.DatabaseName); output.WriteAttributeStringIf("Name", item.ItemName); output.WriteAttributeStringIf("Path", item.ItemIdOrPath); output.WriteAttributeStringIf("Template", item.TemplateIdOrPath); output.WriteStartElement("Fields"); foreach (var field in sharedFields) { output.WriteStartElement("Field", field.FieldName); output.WriteAttributeString("Value", field.Value); output.WriteEndElement(); } if (unversionedFields.Any()) { output.WriteStartElement("Unversioned"); foreach (var language in unversionedFields.Select(f => f.Language).Distinct()) { output.WriteStartElement(language); foreach (var field in unversionedFields.Where(f => f.Language == language)) { output.WriteStartElement("Field", field.FieldName); output.WriteAttributeString("Value", field.Value); output.WriteEndElement(); } output.WriteEndElement(); } output.WriteEndElement(); } if (versionedFields.Any()) { output.WriteStartElement("Versioned"); foreach (var language in versionedFields.Select(f => f.Language).Distinct()) { output.WriteStartElement(language); foreach (var version in versionedFields.Where(f => f.Language == language).Select(f => f.Version).Distinct()) { output.WriteStartElement(version.ToString()); foreach (var field in versionedFields.Where(f => f.Language == language && f.Version == version)) { output.WriteStartElement("Field", field.FieldName); output.WriteAttributeString("Value", field.Value); output.WriteEndElement(); } output.WriteEndElement(); } output.WriteEndElement(); } output.WriteEndElement(); } if (writeInner != null) { writeInner(writer, output.Indent); } }
public static void WriteAsYaml([NotNull] this Template template, [NotNull] TextWriter writer) { var output = new YamlTextWriter(writer); output.WriteStartElement("Template"); output.WriteAttributeString("Name", template.ItemName); output.WriteAttributeStringIf("Id", template.Uri.Guid.Format()); output.WriteAttributeStringIf("Database", template.DatabaseName); output.WriteAttributeStringIf("Path", template.ItemIdOrPath); output.WriteAttributeStringIf("BaseTemplates", template.BaseTemplates); foreach (var section in template.Sections) { output.WriteStartElement("Section"); output.WriteAttributeString("Name", section.SectionName); output.WriteAttributeStringIf("Id", section.Uri.Guid.Format()); output.WriteAttributeStringIf("Icon", section.Icon); foreach (var field in section.Fields) { output.WriteStartElement("Field"); output.WriteAttributeString("Name", field.FieldName); output.WriteAttributeStringIf("Id", field.Uri.Guid.Format()); output.WriteAttributeStringIf("Sortorder", field.SortOrder); output.WriteAttributeStringIf("Type", field.Type); output.WriteAttributeStringIf("Source", field.Source); output.WriteAttributeStringIf("Sharing", field.Shared ? "Shared" : field.Unversioned ? "Unversioned" : string.Empty); output.WriteAttributeStringIf("ShortHelp", field.ShortHelp); output.WriteAttributeStringIf("LongHelp", field.LongHelp); output.WriteEndElement(); } output.WriteEndElement(); } output.WriteEndElement(); }
public static void WriteAsYaml([NotNull] this Item item, [NotNull] TextWriter writer, bool writeChildren = false) { var output = new YamlTextWriter(writer); output.WriteStartElement(item.TemplateName, item.ItemName); output.WriteAttributeString("Id", item.Uri.Guid.Format()); output.WriteAttributeStringIf("ItemPath", item.ItemIdOrPath); output.WriteAttributeStringIf("Database", item.DatabaseName); if (item.Fields.Any()) { output.WriteStartElement("Fields"); foreach (var field in item.Versions.GetSharedFields().OrderBy(f => f.FieldName)) { output.WriteAttributeString(field.FieldName, field.CompiledValue); } foreach (var language in item.Versions.GetLanguages()) { var unversionedFields = item.Versions.GetUnversionedFields(language); var versions = item.Versions.GetVersions(language); if (!unversionedFields.Any() && !versions.Any()) { continue; } output.WriteStartElement(language.LanguageName); foreach (var field in unversionedFields.OrderBy(f => f.FieldName)) { output.WriteAttributeString(field.FieldName, field.CompiledValue); } foreach (var version in versions.OrderByDescending(v => v.Number)) { var versionedFields = item.Versions.GetVersionedFields(language, version); if (!versionedFields.Any()) { continue; } output.WriteStartElement(version.Number.ToString()); foreach (var field in versionedFields.OrderBy(f => f.FieldName)) { output.WriteAttributeString(field.FieldName, field.CompiledValue); } output.WriteEndElement(); } output.WriteEndElement(); } output.WriteEndElement(); } if (writeChildren) { var children = item.Children.ToArray(); if (children.Any()) { output.WriteStartElement("Children"); foreach (var child in children) { child.WriteAsYaml(writer, true); } output.WriteEndElement(); } } output.WriteEndElement(); }