Ejemplo n.º 1
0
        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();
            }
        }
Ejemplo n.º 2
0
 private string GetPackageFolderName(Package package)
 {
     return(ExportConfig.Translit(this.config.FirstNotEmpty(package.Alias, package.Name, package.PackageID)));
 }
Ejemplo n.º 3
0
        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
                }
            }
        }