2014-07-06 12:29:36 +04:00
|
|
|
/* -*- Mode: Java; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
|
|
|
|
/* vim: set shiftwidth=4 tabstop=4 autoindent cindent expandtab: */
|
|
|
|
|
|
|
|
'use strict';
|
|
|
|
|
|
|
|
var TYPE = {
|
|
|
|
boolean: 'Z',
|
|
|
|
byte: 'B',
|
|
|
|
char: 'C',
|
2014-07-12 20:48:24 +04:00
|
|
|
double: 'D',
|
|
|
|
float: 'F',
|
|
|
|
int: 'I',
|
|
|
|
long: 'J',
|
|
|
|
object: 'L',
|
|
|
|
short: 'S',
|
|
|
|
void: 'V',
|
2014-07-06 12:29:36 +04:00
|
|
|
array: '[',
|
|
|
|
toString: function(s) {
|
|
|
|
for(var type in this) {
|
|
|
|
if (this[type] === s) {
|
|
|
|
return type;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return null;
|
|
|
|
}
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
var _parse = function(part) {
|
|
|
|
var res = [];
|
|
|
|
if (part != '') {
|
|
|
|
var isArray = false;
|
|
|
|
var pos = 0;
|
|
|
|
while (pos < part.length) {
|
|
|
|
switch(part[pos]) {
|
|
|
|
case TYPE.boolean:
|
|
|
|
case TYPE.byte:
|
|
|
|
case TYPE.char:
|
|
|
|
case TYPE.double:
|
|
|
|
case TYPE.float:
|
|
|
|
case TYPE.int:
|
2014-07-12 20:48:24 +04:00
|
|
|
case TYPE.long:
|
2014-07-06 12:29:36 +04:00
|
|
|
case TYPE.short:
|
|
|
|
res.push( { type: TYPE.toString(part[pos]), isArray: isArray } );
|
|
|
|
isArray = false;
|
|
|
|
break;
|
|
|
|
case TYPE.object:
|
|
|
|
var className = '';
|
|
|
|
while (part[++pos] !== ';') {
|
|
|
|
className += part[pos];
|
|
|
|
}
|
|
|
|
res.push( { type: "object", isArray: isArray, className: className } );
|
|
|
|
isArray = false;
|
2014-07-12 20:48:24 +04:00
|
|
|
break;
|
2014-07-06 12:29:36 +04:00
|
|
|
case TYPE.array:
|
|
|
|
isArray = true;
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
pos++;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return res;
|
|
|
|
}
|
|
|
|
|
|
|
|
var parse = function(s) {
|
|
|
|
var IN = s.split(')')[0].substr(1);
|
|
|
|
var OUT = s.split(')')[1];
|
2014-07-12 20:48:24 +04:00
|
|
|
|
2014-07-06 12:29:36 +04:00
|
|
|
return {
|
|
|
|
IN: _parse(IN),
|
2014-07-14 02:27:25 +04:00
|
|
|
OUT: _parse(OUT)
|
2014-07-06 12:29:36 +04:00
|
|
|
};
|
|
|
|
};
|