<?js
    var params = data.params,
		funcname = data.name,
		returns = data.returns,
		args = "()",
		ret = (data.kind === "class" ? "new" : "void");

	if(returns){
        var returnTypes = [];
        returns.forEach(function(r) {
            if (r.type && r.type.names) {
                if (! returnTypes.length) { returnTypes = r.type.names; }
            }
        });
        ret = (returnTypes.length ? '{' + returnTypes.join('|') + '}' : '');
	}
	if(params){
		args = [];
	    params.forEach(function(param) {
    	    if (!param) { return; }
        	var name = param.name;
	        if (param.optional || param.nullable) {
    	        name = "<span class='optional'>" + name + "</span>";
        	}
	        if (typeof param.defaultvalue !== 'undefined') {
    	        name = name + "=<span class='default'>" + param.defaultvalue + "</span>";
        	}
	        args.push(name);
    	});
		args = "(" + args.join(", ") + ")";
	}
?>

<span class="type-signature"><?js= ret ?></span>
<span class="name"><?js= funcname ?></span><span class=""><?js= args ?></span>