JSDOC/TokenReader.js
[gnome.introspection-doc-generator] / Introspect / NameSpace.js
index 5d75120..1a20fb7 100644 (file)
@@ -3,13 +3,31 @@
 GI      = imports.gi.GIRepository;
 GLib    = imports.gi.GLib;
 xml     = imports.libxml;
-
+File    = imports.File.File;
 
 XObject = imports.XObject.XObject;
 
 console = imports.console.console;
 
+// BC/FC
+if (!GI.Repository) {
+    GI.Repository = GI.IRepository;
+    GI.FunctionInfoFlags = GI.IFunctionInfoFlags ;
+    GI.InfoType = GI.IInfoType;
+    GI.TypeTag= GI.ITypeTag;
+    
+    GI.IBaseInfo.prototype.get_name = function(n) {
+        return GI.base_info_get_name(this, n);
+    }
+     GI.IBaseInfo.prototype.get_namespace = function(n) {
+        return GI.base_info_get_namespace(this, n);
+    }
+    GI.IBaseInfo.prototype.get_attribute = function( n) {
+        return GI.base_info_get_attribute(this, n);
+    }
+}
+
+
 
 NameSpace = {
    
@@ -27,31 +45,22 @@ NameSpace = {
             if (!GLib.file_test(dir, GLib.FileTest.EXISTS)) {
                 return;
             }
-            var gdir = GLib.dir_open(dir,0);
-            
-            while (true) {
-                
-                var fn = gdir.read_name ? gdir.read_name () : GLib.dir_read_name(gdir);
-           //      console.log('trying ' +  fn);
-                if (!fn) {
-                    gdir.close ? gdir.close() : GLib.dir_close(gdir);
-                    return;;
-                }
-                if (!fn.match(/.typelib$/)) {
-                    continue;
+            File.list(dir).forEach(function(fn) 
+            {
+                if (!fn.match(/\.typelib$/)) {
+                    return;
                 }
                 var par = fn.split('-').shift();
                  //console.log('trying ' +  par);
                 if (ret.indexOf(par) > -1) {
-                     continue;
+                     return;
                 }
                 ret.push(par);
-                
-                
-            } 
+            }); 
         }
+        
         var gi = GI.Repository.get_default();
-        var pth = GI.Repository.get_search_path ();
+        var pth = GI.Repository.get_search_path();
         
         scanGir(pth[0]);
         ret.sort();
@@ -87,10 +96,12 @@ NameSpace = {
             interfaces: [],
         };
      
-        for (var i=0; i <  GI.Repository.get_n_infos (gi,ns); i++ ) {
-            var info = GI.Repository.get_info (gi,ns, i);
-            
-            var info_type = GI.base_info_get_type (info);
+        for (var i=0; i <  gi.get_n_infos (ns); i++ ) {
+            var info = gi.get_info (ns, i);
+           // print("NAME: " + info.get_name());
+            //continue;
+            var info_type = GI.base_info_get_type ? GI.base_info_get_type(info) : info.get_type();
+           // print("Type: " + info_type);
             switch(info_type) {
                 case  GI.InfoType.OBJECT:
                     ret.objects.push(info.get_name());
@@ -131,10 +142,10 @@ NameSpace = {
                     continue;
             }
         }
-        
+        //print ("SCAN NAMESPACES ALL DONE");
                 
         var gi = GI.Repository.get_default();
-        var ver = GI.Repository.get_version(gi,ns);
+        var ver = gi.get_version(ns);
         var pth = GI.Repository.get_search_path ();
         var gir_path = pth[0].replace(/lib\/girepository-1.0/, 'share\/gir-1.0');
        //console.log(fn);
@@ -147,14 +158,14 @@ NameSpace = {
     },
  
     
-  
+
     // store all the interfaces, so we can show a list of them later...
     // called when you list the namespace
     clsGatherInterfaces : function(ns, cls)
     {
        // print("clsGatherInterfaces: " + ns + ", " + cls);
         var gi = GI.Repository.get_default();
-        var bb = GI.Repository.find_by_name(gi,ns, cls);
+        var bb = gi.find_by_name(ns, cls);
         var fullname = ns+'.'+cls;
         this.ifaceList = this.ifaceList || { };
          
@@ -179,6 +190,7 @@ NameSpace = {
         
    
     doc : function(what) {
+        //print ("DOC: + " +what);
         var ns = what.split('.').shift();
         return '';
         this.commentLoad(ns);
@@ -199,7 +211,7 @@ NameSpace = {
         
         console.log("LOAD DOCS: " + ns);
         var gi = GI.Repository.get_default();
-        var ver = GI.Repository.get_version(gi,ns);
+        var ver = gi.get_version(ns);
         if (!ver) {
             this.comments[ns] = {};
             return;