CSharpUML.MainClass.Uml2Tex C# (CSharp) Метод

Uml2Tex() приватный статический Метод

private static Uml2Tex ( IEnumerable umlfiles, string target ) : void
umlfiles IEnumerable
target string
Результат void
        private static void Uml2Tex(IEnumerable<string> umlfiles, string target)
        {
            List<IUmlObject> allObjects = new List<IUmlObject> ();
            foreach (string umlfile in umlfiles) {
                IParser parser = new UmlParser ();
                Console.WriteLine ("Read: " + umlfile);
                allObjects.AddRange (parser.Parse (umlfile));
            }

            Console.WriteLine ("Write: " + target);
            List<string> lines = new List<string> ();
            lines.AddRange (UmlObject.TexHeader);
            foreach (string package in Packages.PackageMap.Keys) {
                lines.Add (@"\section{Paket " + package + @"}");

                lines.Add (@"\subsection{Klassen}");
                foreach (UmlClass obj in allObjects.OfType<UmlClass>().Where((c) => Packages.IsInPackage(package, c.Name))) {
                    if (obj.type != ClassType.Interface) {
                        lines.Add (obj.ToTexCode ());
                        lines.Add ("");
                    }
                }
                lines.Add (@"\subsection{Schnittstellen}");
                foreach (UmlClass obj in allObjects.OfType<UmlClass>().Where((c) => Packages.IsInPackage(package, c.Name))) {
                    if (obj.type == ClassType.Interface) {
                        lines.Add (obj.ToTexCode ());
                        lines.Add ("");
                    }
                }
                lines.Add (@"\subsection{Enumerationen}");
                foreach (UmlEnum obj in allObjects.OfType<UmlEnum>().Where((c) => Packages.IsInPackage(package, c.Name))) {
                    lines.Add (obj.ToTexCode ());
                    lines.Add ("");
                }
            }

            Files.WriteLines (target, lines);

            lines.Clear ();

            newCommand (ref lines, "CountClasses", "" + allObjects.OfType<UmlClass> ()
                .Where ((o) => o.type == ClassType.Class).Count ()
            );
            newCommand (ref lines, "CountInterfaces", "" + allObjects.OfType<UmlClass> ()
                .Where ((o) => o.type == ClassType.Interface).Count ()
            );
            newCommand (ref lines, "CountEnums", "" + allObjects.OfType<UmlEnum> ()
                .Count ()
            );
            newCommand (ref lines, "CountAll", ""
                + (allObjects.OfType<UmlClass> ()
                .Where ((o) => o.type == ClassType.Class).Count ()
                + allObjects.OfType<UmlClass> ()
                .Where ((o) => o.type == ClassType.Interface).Count ()
                + allObjects.OfType<UmlEnum> () /* Strukturen? */
                .Count ())
            );

            Files.WriteLines (Path.GetDirectoryName (target) + "/Definitionen.gentex", lines);

            if (IsRunningOnMono ()) {
                foreach (UmlClass obj in allObjects.OfType<UmlClass>()) {
                    // write class diagram
                    ClassDiagram dia = new ClassDiagram (new IUmlObject[] { obj });
                    string filename = Path.GetDirectoryName (target) + "/Klassen/" + obj.Name.Clean ();
                    Files.WriteLines (filename + ".dot", dia.DotCode ("", "ffffff", 200));
                    //GraphViz.Dot ("svg", filename + ".dot", filename + ".svg");
                    //GraphViz.Dot ("jpg", filename + ".dot", filename + ".jpg");
                    //GraphViz.Dot ("png", filename + ".dot", filename + ".png");
                    GraphViz.Dot ("svg", filename + ".dot", filename + ".svg");
                    //GraphViz.Convert ("-density 100", "svg:" + filename + ".svg", filename + ".png");
                    //GraphViz.RsvgConvert ("--dpi-x 120", "--dpi-y 120", filename + ".svg", ">", filename + ".png");
                    GraphViz.InkScape ("--export-png=" + filename + ".png", "--export-dpi=150", filename + ".svg");
                }
            }
        }