projects
/
gnome.introspection-doc-generator
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
JSDOC/CompressWhite.vala
[gnome.introspection-doc-generator]
/
JSDOC
/
Collapse.vala
diff --git
a/JSDOC/Collapse.vala
b/JSDOC/Collapse.vala
index
4956aa7
..
2f883f3
100644
(file)
--- a/
JSDOC/Collapse.vala
+++ b/
JSDOC/Collapse.vala
@@
-29,13
+29,15
@@
namespace JSDOC {
public class Collapse : TokenStream {
public class Collapse : TokenStream {
+
+
public Collapse(Gee.ArrayList<Token> tokens)
{
public Collapse(Gee.ArrayList<Token> tokens)
{
-
parent(ar);
;
+
base(tokens)
;
this.spaces();
this.spaces();
- ar = this.collapse(this.tokens);
+
var
ar = this.collapse(this.tokens);
this.tokens = ar;
this.tokens = ar;
@@
-47,10
+49,10
@@
namespace JSDOC {
void spaces ()
{
void spaces ()
{
- var ar = new Gee.ArrayList<Token>()
+ var ar = new Gee.ArrayList<Token>()
;
var pref = new Gee.ArrayList<Token>();
var pref = new Gee.ArrayList<Token>();
-
+
for (var i = 0; i < this.tokens.size; i ++) {
var tok = this.tokens[i];
for (var i = 0; i < this.tokens.size; i ++) {
var tok = this.tokens[i];
@@
-58,9
+60,9
@@
namespace JSDOC {
pref.add(tok);
continue;
}
pref.add(tok);
continue;
}
- tok.prefix =
''
;
+ tok.prefix =
""
;
if (pref.size > 0) {
if (pref.size > 0) {
- foreach(e in pref) {
+ foreach(
var
e in pref) {
tok.prefix += e.data;
}
pref = new Gee.ArrayList<Token>(); // reset pref..
tok.prefix += e.data;
}
pref = new Gee.ArrayList<Token>(); // reset pref..
@@
-73,11
+75,11
@@
namespace JSDOC {
}
this.tokens = ar;
}
this.tokens = ar;
- }
,
+ }
- Gee.ArrayList<Token> collapse(ar)
+ Gee.ArrayList<Token> collapse(
Gee.ArrayList<Token>
ar)
{
var st = new TokenStream(ar);
{
var st = new TokenStream(ar);
@@
-91,6
+93,8
@@
namespace JSDOC {
}
// console.log(tok.data);
}
// console.log(tok.data);
+ debug("COL: %s", tok.asString());
+
switch(tok.type) {
case "VOID":
return ret; //EOF
switch(tok.type) {
case "VOID":
return ret; //EOF
@@
-102,7
+106,10
@@
namespace JSDOC {
case "STRN":
case "NUMB":
case "REGX":
case "STRN":
case "NUMB":
case "REGX":
- ret.push(st.next(1));
+ var nn = st.next();
+ if (nn != null) {
+ ret.add(nn);
+ }
continue;
case "PUNC":
continue;
case "PUNC":
@@
-112,41
+119,48
@@
namespace JSDOC {
case "(":
var start = st.cursor;
case "(":
var start = st.cursor;
- st.next(1);
+ //st.next(); << no need to shift, balance will start at first character..
+
var add = st.balance(tok.data);
var add = st.balance(tok.data);
+
+ debug("BALANCE returned %d items\n", add.size);
+
+
// if (!add) {
//console.dump(tok);
//console.dump(start + '...' + st.cursor);
//console.dump(st.tokens);
//}
// if (!add) {
//console.dump(tok);
//console.dump(start + '...' + st.cursor);
//console.dump(st.tokens);
//}
-
//if (add
) {
- add.shift();
-
//
}
+
if (add.size > 0
) {
+ add.remove_at(0); // remove the first element... (as it's the
+ }
//Seed.print("ADD");
//Seed.print(JSON.stringify(add, null,4));
//Seed.print("ADD");
//Seed.print(JSON.stringify(add, null,4));
- var toks = add ? this.collapse(add) : [];
- tok.items = false;
- tok.props = false;
-
+ var toks = add.size > 0 ? this.collapse(add) : add;
+ tok.items = new Gee.ArrayList<Gee.ArrayList<Token>>(); //?? needed?
+ tok.props = new Gee.HashMap<string,TokenKeyMap>();
+
- if (tok.data !=
'{'
) {
+ if (tok.data !=
"{"
) {
// paramters or array elements..
// paramters or array elements..
- tok.items = this.toItems(toks,
[',']
);
+ tok.items = this.toItems(toks,
","
);
} else {
// check for types.. it could be a list of statements.. or object
} else {
// check for types.. it could be a list of statements.. or object
+ // format "{" "xXXX" ":" << looks for the ':'.. seems to work.. not sure if it's foolproof...
var ost = new TokenStream(toks);
//console.dump(ost.look(2,true) );
var ost = new TokenStream(toks);
//console.dump(ost.look(2,true) );
- if (ost.look(2,true) && ost.look(2,true).data == ":") {
+ if (ost.look(2,true) != null && ost.look(2,true).data == ":") {
+ // object properties...
tok.props = this.toProps(toks);
} else {
// list of statemetns..
tok.props = this.toProps(toks);
} else {
// list of statemetns..
- tok.items = this.toItems(toks,
[ ';', '{']
);;
+ tok.items = this.toItems(toks,
";{"
);;
}
}
@@
-160,18
+174,18
@@
namespace JSDOC {
//Seed.print(" ADD : " + add.length + " ITEMS: " + tok.items.length);
//Seed.print(" ADD : " + add.length + " ITEMS: " + tok.items.length);
- ret.
push
(tok);
+ ret.
add
(tok);
continue;
default:
continue;
default:
- ret.
push(st.next(1
));
+ ret.
add(st.next(
));
continue;
}
continue;
}
-
Seed.
print("OOPS");
+ print("OOPS");
continue;
default :
continue;
default :
-
Seed.
print("OOPS" + tok.type);
+ print("OOPS" + tok.type);
continue;
}
}
continue;
}
}
@@
-185,63
+199,65
@@
namespace JSDOC {
- },
- toItems : function(ar,sep)
+ }
+ // array of arrays of tokens
+ Gee.ArrayList<Gee.ArrayList<Token>> toItems(Gee.ArrayList<Token> ar, string sep)
{
{
- var ret =
[]
;
- var g =
[]
;
+ var ret =
new Gee.ArrayList<Gee.ArrayList<Token>>()
;
+ var g =
new Gee.ArrayList<Token>()
;
- for (var i = 0; i < ar.
length
; i ++) {
- if (sep.index
Of(ar[i]
.data) < 0) {
- g.
push(ar[i]
);
+ for (var i = 0; i < ar.
size
; i ++) {
+ if (sep.index
_of(ar.get(i)
.data) < 0) {
+ g.
add(ar.get(i)
);
continue;
}
// var a=..., b =...
continue;
}
// var a=..., b =...
- if ((ar
[i].data != ';') && g.length
&& (g[0].name == "VAR")) {;
- g.
push(ar[i]
);
+ if ((ar
.get(i).data != ";") && g.size> 0
&& (g[0].name == "VAR")) {;
+ g.
add(ar.get(i)
);
continue;
}
continue;
}
- g.
push(ar[i]
);
- ret.
push
(g);
- g =
[]
;
+ g.
add(ar.get(i)
);
+ ret.
add
(g);
+ g =
new Gee.ArrayList<Token>()
;
}
// last..
}
// last..
- if (g.
length
) {
- ret.
push
(g);
+ if (g.
size > 0
) {
+ ret.
add
(g);
}
return ret;
}
return ret;
- },
- toProps : function(ar)
+ }
+
+ Gee.HashMap<string,TokenKeyMap> toProps (Gee.ArrayList<Token> ar)
{
{
- var ret =
{ }
+ var ret =
new Gee.HashMap<string,TokenKeyMap>();
- var g =
{ key : '', val: [] }
+ var g =
new TokenKeyMap();
- var k =
''
;
+ var k =
""
;
var state = 0;
var state = 0;
- for (var i = 0; i < ar.
length
; i ++) {
+ for (var i = 0; i < ar.
size
; i ++) {
switch(state) {
case 0:
switch(state) {
case 0:
- k = ar
[i]
.data;
- g.key = ar
[i]
;
+ k = ar
.get(i)
.data;
+ g.key = ar
.get(i)
;
state = 1;
continue;
case 1:
state =2; // should be ':'
continue;
case 2:
state = 1;
continue;
case 1:
state =2; // should be ':'
continue;
case 2:
- g.val
.push(ar[i]
);
- if (
ar[i].data != ','
) {
+ g.val
s.add( ar.get(i)
);
+ if (
ar.get(i).data != ","
) {
continue;
}
continue;
}
- ret
[k] = g
;
- g =
{ key : '', val: [] }
+ ret
.set(k, g)
;
+ g =
new TokenKeyMap();
state = 0;
continue;
state = 0;
continue;
@@
-249,14
+265,14
@@
namespace JSDOC {
}
// last.. - if g.val.length is 0 then it's a trailing ','...
// we should really throw a syntax error in that case..
}
// last.. - if g.val.length is 0 then it's a trailing ','...
// we should really throw a syntax error in that case..
- if (k.length
&& g.val.length
) {
- ret
[k] = g
;
+ if (k.length
> 0 && g.vals.size > 0
) {
+ ret
.set(k, g)
;
}
return ret;
}
}
return ret;
}
+ }
-
-});
+}