private void ExportObjectBody(object element, ExportTopicConfig topic_config, string path, XmlWriter tocWriter) { var file_name = Path.Combine(root_path, path + ".dita"); if (file_name.Length > max_path_length) { MessageBox.Show($"Very long name {file_name}"); return; } using (var writer = XmlWriter.Create(file_name, new XmlWriterSettings { Indent = true })) { writer.WriteStartDocument(); writer.WriteDocType("topic", "-//OASIS//DTD DITA Topic//EN", "topic.dtd", null); writer.WriteStartElement("topic"); writer.WriteAttributeString("id", topic_config.id_func(element)); writer.WriteElementString("title", topic_config.title_func(element)); if (topic_config.description_func != null) { writer.WriteElementString("shortdesc", topic_config.description_func(element)); } writer.WriteStartElement("body"); writer.WriteStartElement("p"); writer.WriteRaw(topic_config.notes_func(element)); writer.WriteEndElement();//p foreach (Diagram diagram in topic_config.diagrams_func(element)) { writer.WriteStartElement("fig"); writer.WriteAttributeString("id", "eadiagram" + diagram.DiagramID); writer.WriteElementString("title", diagram.Name); writer.WriteStartElement("image"); writer.WriteAttributeString("placement", "break"); writer.WriteAttributeString("scalefit", "yes"); writer.WriteAttributeString("href", "images/" + ExportConfig.Translit(diagram.Name) + ".png"); writer.WriteEndElement(); //image writer.WriteEndElement(); //fig } foreach (var body_config in topic_config.body) { RenderBody(element, body_config, writer); } writer.WriteEndElement();//body writer.WriteEndElement();//topic writer.WriteEndDocument(); } }
private string GetPackageFolderName(Package package) { return(ExportConfig.Translit(this.config.FirstNotEmpty(package.Alias, package.Name, package.PackageID))); }
void ExportObject(object obj, string path, XmlWriter tocWriter, bool is_top) { var folder_name = Path.Combine(root_path, Path.GetDirectoryName(path)); if (folder_name.Length > max_path_length) { MessageBox.Show($"Very long name {folder_name}"); return; } Directory.CreateDirectory(folder_name); var topic_config = this.config.GetTopicConfig(obj); if (null != topic_config) { if (!topic_config.diagrams_func(obj).IsEmpty()) { Directory.CreateDirectory(Path.Combine(folder_name, "images")); foreach (Diagram diagram in topic_config.diagrams_func(obj)) { repository.OpenDiagram(diagram.DiagramID); project.SaveDiagramImageToFile( Path.Combine( root_path, Path.GetDirectoryName(path), "images", ExportConfig.Translit(diagram.Name) + ".png")); repository.CloseDiagram(diagram.DiagramID); } } ExportObjectBody(obj, topic_config, path, tocWriter); tocWriter.WriteStartElement("topicref"); tocWriter.WriteAttributeString("href", Path.Combine(topics_root, path).Replace('\\', '/') + ".dita"); if (is_top) { tocWriter.WriteEndElement(); //topicref } var children_config = this.config.GetChildrenConfig(obj); if (null != children_config) { foreach (var child_config in children_config) { foreach (var child in child_config(obj)) { if (this.options.HideEmptyElements && IsObjectEmpty(child) || this.config.IsSimple(child)) { continue; } var child_topic_config = this.config.GetTopicConfig(child); if (null != child_topic_config) { ExportObject( child, Path.Combine(path, child_topic_config.folder_name_func(child)), tocWriter, false); } } } } if (!is_top) { tocWriter.WriteEndElement(); //topicref } } }