102 lines
2.4 KiB
JavaScript
102 lines
2.4 KiB
JavaScript
/**
|
|
* Created by Aleksey Chichenkov <a.chichenkov@initi.ru> on 9/20/18.
|
|
*/
|
|
var helper = require('jsdoc/util/templateHelper');
|
|
// var linkto = helper.linkto;
|
|
|
|
var test_0 = "v2.map(v2.map(v2.string, v2.list(v2.integer)), v2.list(v2.pair(v2.list(v2.map(v2.map(v2.string, v2.list(v2.integer)), v2.list(v2.pair(v2.string, v2.vc)))), v2.vc)))";
|
|
var test_1 = "v2.map(v2.map(v2.string, v2.list(v2.integer)), v2.list(v2.pair(v2.string, v2.vc)))";
|
|
var test_2 = "v2.string";
|
|
var test_3 = "v2.string()";
|
|
var test_4 = "v2.string(v2.map)";
|
|
|
|
var split_args = function (_str) {
|
|
var delta = 0;
|
|
var found = 0;
|
|
for (var a = 0; a < _str.length; a++) {
|
|
var char = _str[a];
|
|
switch (char) {
|
|
case "(":
|
|
delta++;
|
|
break;
|
|
case ")":
|
|
delta--;
|
|
break;
|
|
case ",":
|
|
found = delta == 0;
|
|
break;
|
|
}
|
|
|
|
if (found) break;
|
|
}
|
|
|
|
if (found) {
|
|
var left = _str.substring(0, a);
|
|
var right = _str.substring(a + 1, _str.length);
|
|
return [left, right]
|
|
}
|
|
|
|
return [_str];
|
|
};
|
|
|
|
var recursive = function (_str, _class, _alias) {
|
|
|
|
var _id = _str.replace(" ", "");
|
|
var rx = /(.*?)\((.*)\)/im;
|
|
var res = _id.match(rx);
|
|
|
|
var _full_id = replace_type_def(_id);
|
|
|
|
if(res == null) return helper.linkto(_full_id, (_alias ? _alias : _id), _class);
|
|
//if (res == null) return _id;
|
|
|
|
var first = res[1];
|
|
var second = res[2];
|
|
var result = helper.linkto(first, _alias, _class);
|
|
//var result = first;
|
|
|
|
if (second === "") return result;
|
|
|
|
var args = split_args(second);
|
|
|
|
result += "(";
|
|
|
|
if (args[0]) result += recursive(args[0], _class);
|
|
|
|
if (args[1]){
|
|
result += ", ";
|
|
result += recursive(args[1], _class);
|
|
}
|
|
|
|
result += ")";
|
|
|
|
return result;
|
|
};
|
|
|
|
var linkto = function (_id, _alias, _class) {
|
|
return recursive(_id, _class, _alias);
|
|
};
|
|
|
|
|
|
var replace_type_def = function(_ln){
|
|
var td = typedefs[_ln];
|
|
|
|
if(!td) return _ln;
|
|
|
|
var link = td.type.names[0];
|
|
return link;
|
|
}
|
|
|
|
// старый кусок говна :D
|
|
var replace_enters_to_br = function(_str){
|
|
// var out = _str;
|
|
// while(out.match("\n")) out = out.replace("\n", "<br>");
|
|
|
|
return _str;
|
|
};
|
|
|
|
module.exports = {
|
|
linkto: linkto,
|
|
replace_enters_to_br: replace_enters_to_br,
|
|
replace_type_def: replace_type_def
|
|
}; |