JSDOC/TokenReader.vala
authorAlan Knowles <alan@roojs.com>
Thu, 10 Sep 2015 10:21:33 +0000 (18:21 +0800)
committerAlan Knowles <alan@roojs.com>
Thu, 10 Sep 2015 10:21:33 +0000 (18:21 +0800)
JSDOC/TokenReader.vala

index 9fe4fe7..b9fcbf7 100644 (file)
@@ -1,38 +1,71 @@
 //<script type="text/javascript">
 
  
-const XObject = imports.XObject.XObject;
-const console = imports.console.console;
 
 
-const Token   = imports.Token.Token;
-const Lang    = imports.Lang.Lang;
+//const Token   = imports.Token.Token;
+//const Lang    = imports.Lang.Lang;
 
 /**
        @class Search a {@link JSDOC.TextStream} for language tokens.
 */
-const TokenReader = XObject.define(
-    function(o) {
+
+namespace JSDOC {
+
+    public class TokenArray: Object {
+        
+        Gee.ArrayList<Token> tokens;
         
-        XObject.extend(this, o || {});
+        public TokenArray()
+        {
+            this.items = new Gee.ArrayList<Token>();
+        }
         
-    },
-    Object,
+        public Token? last() {
+            if (this.tokens > 0) {
+                return this.tokens[this.tokens.length-1];
+            }
+            return null;
+        }
+        public Token? lastSym = function() {
+            for (var i = this.tokens.length-1; i >= 0; i--) {
+                if (!(this.tokens.get(i).is("WHIT") || this.tokens.get(i).is("COMM")))  {
+                    return this.tokens.get(i);
+                }
+            }
+            return null;
+        }
+    }
+
+
+    public class TokenReader : Object
     {
+        
+        
+        
+        /*
+         *
+         * I wonder if this will accept the prop: value, prop2 :value construxtor if we do not define one...
+         */
+        
         /** @cfg {Boolean} collapseWhite merge multiple whitespace/comments into a single token **/
-        collapseWhite : false, // only reduces white space...
+        public bool collapseWhite = false, // only reduces white space...
         /** @cfg {Boolean} keepDocs keep JSDOC comments **/
-        keepDocs : true,
+        public bool keepDocs = true,
         /** @cfg {Boolean} keepWhite keep White space **/
-        keepWhite : false,
+        public bool keepWhite = false,
         /** @cfg {Boolean} keepComments  keep all comments **/
-        keepComments : false,
+        public bool keepComments = false,
         /** @cfg {Boolean} sepIdents seperate identifiers (eg. a.b.c into ['a', '.', 'b', '.', 'c'] ) **/
-        sepIdents : false,
+        public bool sepIdents = false,
         /** @cfg {String} filename name of file being parsed. **/
-        filename : '',
+        public string filename = "";
         /** @config {Boolean} ignoreBadGrammer do not throw errors if we find stuff that might break compression **/
-        ignoreBadGrammer : false,
+        public bool ignoreBadGrammer = false,
+        
+        
+        int line = 0;
+        
         /**
          * tokenize a stream
          * @return {Array} of tokens
@@ -42,18 +75,11 @@ const TokenReader = XObject.define(
          * tr.tokenize(ts)
          * 
          */
-        tokenize : function(/**JSDOC.TextStream*/stream) {
+        public TokenArray tokenize(TextStream stream)
+        {
             this.line =1;
-            var tokens = [];
-            /**@ignore*/ 
-            tokens.last    = function() { return tokens[tokens.length-1]; }
-            /**@ignore*/ 
-            tokens.lastSym = function() {
-                for (var i = tokens.length-1; i >= 0; i--) {
-                    if (!(tokens[i].is("WHIT") || tokens[i].is("COMM"))) return tokens[i];
-                }
-                return true;
-            }
+            var tokens = new TokenArray();
+           
 
             while (!stream.look().eof) {
                 if (this.read_mlcomment(stream, tokens)) continue;