nitcatalog: use MConcen to generalize MGroup and MModule
[nit.git] / src / nitcatalog.nit
index e3e77f3..21847ee 100644 (file)
@@ -245,7 +245,7 @@ class Catalog
        end
 
        # Recursively generate a level in the file tree of the *content* section
-       private fun gen_content_level(ot: OrderedTree[Object], os: Array[Object], res: Template)
+       private fun gen_content_level(ot: OrderedTree[MConcern], os: Array[Object], res: Template)
        do
                res.add "<ul>\n"
                for o in os do
@@ -255,13 +255,10 @@ class Catalog
                                var mdoc = o.mdoc
                                if mdoc != null then d = ": {mdoc.html_synopsis.write_to_string}"
                                res.add "<strong>{o.name}</strong>{d} ({o.filepath.to_s})"
-                       else if o isa ModulePath then
+                       else if o isa MModule then
                                var d = ""
-                               var m = o.mmodule
-                               if m != null then
-                                       var mdoc = m.mdoc
-                                       if mdoc != null then d = ": {mdoc.html_synopsis.write_to_string}"
-                               end
+                               var mdoc = o.mdoc
+                               if mdoc != null then d = ": {mdoc.html_synopsis.write_to_string}"
                                res.add "<strong>{o.name}</strong>{d} ({o.filepath.to_s})"
                        else
                                abort
@@ -293,14 +290,14 @@ class Catalog
                end
 
                res.add "<h2>Content</h2>"
-               var ot = new OrderedTree[Object]
+               var ot = new OrderedTree[MConcern]
                for g in mpackage.mgroups do
                        var pa = g.parent
                        if g.is_interesting then
                                ot.add(pa, g)
                                pa = g
                        end
-                       for mp in g.module_paths do
+                       for mp in g.mmodules do
                                ot.add(pa, mp)
                        end
                end
@@ -313,6 +310,21 @@ class Catalog
 <div class="sidebar">
 <ul class="box">
 """
+               var tryit = mpackage.metadata("upstream.tryit")
+               if tryit != null then
+                       score += 1.0
+                       var e = tryit.html_escape
+                       res.add "<li><a href=\"{e}\">Try<span style=\"color:white\">n</span>it!</a></li>\n"
+               end
+               var apk = mpackage.metadata("upstream.apk")
+               if apk != null then
+                       score += 1.0
+                       var e = apk.html_escape
+                       res.add "<li><a href=\"{e}\">Android apk</a></li>\n"
+               end
+
+               res.add """</ul>\n<ul class="box">\n"""
+
                var homepage = mpackage.metadata("upstream.homepage")
                if homepage != null then
                        score += 5.0
@@ -374,6 +386,8 @@ class Catalog
                        end
                end
                if ts.is_empty then ts.add "none"
+               if tryit != null then ts.add "tryit"
+               if apk != null then ts.add "apk"
                var ts2 = new Array[String]
                for t in ts do
                        tag2proj[t].add mpackage
@@ -447,7 +461,7 @@ class Catalog
                var mmethods = 0
                var loc = 0
                for g in mpackage.mgroups do
-                       mmodules += g.module_paths.length
+                       mmodules += g.mmodules.length
                        for m in g.mmodules do
                                var am = modelbuilder.mmodule2node(m)
                                if am != null then
@@ -668,9 +682,11 @@ var modelbuilder = new ModelBuilder(model, tc)
 var catalog = new Catalog(modelbuilder)
 
 # Get files or groups
-for a in tc.option_context.rest do
-       modelbuilder.get_mgroup(a)
-       modelbuilder.identify_file(a)
+var args = tc.option_context.rest
+if opt_no_parse.value then
+       modelbuilder.scan_full(args)
+else
+       modelbuilder.parse_full(args)
 end
 
 # Scan packages and compute information
@@ -681,7 +697,6 @@ for p in model.mpackages do
 
        # Load the module to process importation information
        if opt_no_parse.value then continue
-       modelbuilder.parse_group(g)
 
        catalog.deps.add_node(p)
        for gg in p.mgroups do for m in gg.mmodules do