src/toolcontext: Provide contract options
[nit.git] / contrib / neo_doxygen / src / model / module_compound.nit
index 6e8ba10..aca8dfc 100644 (file)
@@ -46,17 +46,12 @@ class FileCompound
                super
        end
 
-       redef fun name_separator: String do return "/"
-
-       redef fun location=(location: nullable Location) do
+       redef fun location=(location) do
                super
-               if location != null and location.path != null then
-                       full_name = location.path.as(not null)
-               end
                for m in inner_namespaces do m.location = location
        end
 
-       redef fun name=(name: String) do
+       redef fun name=(name) do
                # Example: `MyClass.java`
                super
                var match = name.search_last(".")
@@ -70,7 +65,7 @@ class FileCompound
                for m in inner_namespaces do m.update_name
        end
 
-       redef fun declare_namespace(id: String, full_name: String) do
+       redef fun declare_namespace(id, full_name) do
                var m: Module
 
                assert not full_name.is_empty or id.is_empty else
@@ -81,7 +76,7 @@ class FileCompound
                inner_namespaces.add m
        end
 
-       redef fun declare_class(id, full_name, prot) do
+       redef fun declare_class(id, name, prot) do
                assert not id.is_empty else
                        sys.stderr.write "Inner class declarations without ID are not yet supported.\n"
                end
@@ -138,28 +133,25 @@ private class Module
                update_name
        end
 
-       # Update the `full_name` and the `name`.
+       # Update the `name`.
        #
        # Update the short name of the module to the `basename` of the file that
        # declares it.
-       fun update_name do
-               name = file_compound.basename
-               parent_name = namespace.full_name
-       end
-
-       redef fun put_in_graph do
-               super
-       end
+       fun update_name do name = file_compound.basename
 
        redef fun put_edges do
                var ns_compound = namespace.seek_in(graph)
                var self_class = ns_compound.self_class
+               var class_count = 0
+               var last_class: nullable ClassCompound = null
 
                graph.add_edge(ns_compound, "DECLARES", self)
 
                for c in file_compound.inner_classes do
                        if graph.class_to_ns[c] != ns_compound then continue
                        var class_compound = graph.by_id[c].as(ClassCompound)
+                       last_class = class_compound
+                       class_count += 1
                        graph.add_edge(self, "INTRODUCES", class_compound)
                        graph.add_edge(self, "DEFINES", class_compound.class_def)
                end
@@ -171,6 +163,13 @@ private class Module
                        graph.add_edge(self, "INTRODUCES", self_class)
                        graph.add_edge(self, "DEFINES", self_class.class_def)
                end
+
+               if doc.is_empty and class_count == 1 then
+                       doc = last_class.as(not null).doc
+               end
+               if doc.is_empty then doc = file_compound.doc
+               if doc.is_empty then doc = ns_compound.doc
+               if not doc.is_empty then set_mdoc
        end
 end