Blame data/assistant.js

Packit 116408
function strStrip(str)
Packit 116408
{
Packit 116408
    return str.replace(/^\s*(.*?)\s*$/, "$1");
Packit 116408
}
Packit 116408
Packit 116408
function strCompactWhitespace(str)
Packit 116408
{
Packit 116408
    var length;
Packit 116408
    var i;
Packit 116408
    var ret;
Packit 116408
    var whitespace_count = 0;
Packit 116408
Packit 116408
    str = str.replace(/\t/, " ");
Packit 116408
Packit 116408
    ret = "";
Packit 116408
    length = str.length;
Packit 116408
    i = 0;
Packit 116408
    while (i < length) {
Packit 116408
        if (str[i] == " ") {
Packit 116408
            whitespace_count++;
Packit 116408
        } else {
Packit 116408
            if (whitespace_count > 0) {
Packit 116408
                ret += " ";
Packit 116408
                whitespace_count = 0;
Packit 116408
            }
Packit 116408
            ret += str[i];
Packit 116408
        }
Packit 116408
Packit 116408
        i++;
Packit 116408
    }
Packit 116408
Packit 116408
    return ret;
Packit 116408
}
Packit 116408
Packit 116408
function getIndexOfParen(str)
Packit 116408
{
Packit 116408
    var length = str.length;
Packit 116408
Packit 116408
    for (var i = 0; i < length; i++) {
Packit 116408
        if (str[i] == "(")
Packit 116408
            return i;
Packit 116408
    }
Packit 116408
Packit 116408
    return 0;
Packit 116408
}
Packit 116408
Packit 116408
function getIndexOfLastWord(str)
Packit 116408
{
Packit 116408
    for (var i = str.length; i >= 0; i--) {
Packit 116408
        if (str[i] == " ")
Packit 116408
            return i + 1;
Packit 116408
    }
Packit 116408
Packit 116408
    return -1;
Packit 116408
}
Packit 116408
Packit 116408
function getIndexOfLastWordIgnoreAsterisk(str)
Packit 116408
{
Packit 116408
    for (var i = str.length; i >= 0; i--) {
Packit 116408
        if (str[i] == " " || str[i] == "*")
Packit 116408
            return i + 1;
Packit 116408
    }
Packit 116408
Packit 116408
    return -1;
Packit 116408
}
Packit 116408
Packit 116408
function buildPadding(length)
Packit 116408
{
Packit 116408
    var str = "";
Packit 116408
Packit 116408
    while (length > 0) {
Packit 116408
        str += " ";
Packit 116408
        length--;
Packit 116408
    }
Packit 116408
Packit 116408
    return str;
Packit 116408
}
Packit 116408
Packit 116408
function reformatSignature()
Packit 116408
{
Packit 116408
    var elements = document.getElementsByClassName('programlisting');
Packit 116408
Packit 116408
    listing = elements[0];
Packit 116408
Packit 116408
    /* Fixup oddly formatted HTML, e.g libxml has 
inside the pre
Packit 116408
     * element.
Packit 116408
     */
Packit 116408
    tmp = listing.innerHTML;
Packit 116408
    tmp = tmp.replace("
", "\n").replace("\t", " ");
Packit 116408
    listing.innerHTML = tmp;
Packit 116408
Packit 116408
    var input = listing.textContent;
Packit 116408
    var lines = input.split("\n");
Packit 116408
    var line;
Packit 116408
    var i;
Packit 116408
Packit 116408
    i = 0;
Packit 116408
    while (line = lines[i]) {
Packit 116408
        lines[i] = strCompactWhitespace(strStrip(line));
Packit 116408
        i++;
Packit 116408
    }
Packit 116408
Packit 116408
    var indexOfParen = getIndexOfParen(lines[1]);
Packit 116408
    var lastWordIndices = Array(lines.length);
Packit 116408
    var maxIndexOfLastWord = 0;
Packit 116408
    var maxDiff = 0;
Packit 116408
Packit 116408
    i = 1;
Packit 116408
    while (line = lines[i]) {
Packit 116408
        lastWordIndices[i] = getIndexOfLastWordIgnoreAsterisk(line);
Packit 116408
        tmp = getIndexOfLastWord(line);
Packit 116408
Packit 116408
        if (i > 1) {
Packit 116408
            lastWordIndices[i] += indexOfParen + 1;
Packit 116408
            tmp += indexOfParen + 1;
Packit 116408
        }
Packit 116408
Packit 116408
        if (tmp > maxIndexOfLastWord)
Packit 116408
            maxIndexOfLastWord = tmp;
Packit 116408
Packit 116408
        if (lastWordIndices[i] - tmp > maxDiff)
Packit 116408
            maxDiff = lastWordIndices[i] - tmp;
Packit 116408
Packit 116408
        i++;
Packit 116408
    }
Packit 116408
Packit 116408
    maxIndexOfLastWord += maxDiff;
Packit 116408
Packit 116408
    // Now get the formatted text.
Packit 116408
    var formattedLines = listing.innerHTML.split("\n");
Packit 116408
Packit 116408
    i = 0;
Packit 116408
    while (line = formattedLines[i]) {
Packit 116408
        formattedLines[i] = strCompactWhitespace(strStrip(line));
Packit 116408
        i++;
Packit 116408
    }
Packit 116408
Packit 116408
    var formattedLastWordIndices = Array(formattedLines.length);
Packit 116408
Packit 116408
    i = 1;
Packit 116408
    while (line = formattedLines[i]) {
Packit 116408
        formattedLastWordIndices[i] = getIndexOfLastWord(line);
Packit 116408
Packit 116408
        if (i > 1)
Packit 116408
            formattedLastWordIndices[i] += indexOfParen + 1;
Packit 116408
Packit 116408
        i++;
Packit 116408
    }
Packit 116408
Packit 116408
    padding = buildPadding(indexOfParen + 1);
Packit 116408
    i = 2;
Packit 116408
    while (line = formattedLines[i]) {
Packit 116408
        formattedLines[i] = padding + line;
Packit 116408
        i++;
Packit 116408
    }
Packit 116408
Packit 116408
    i = 1;
Packit 116408
    while (line = formattedLines[i]) {
Packit 116408
        padding = buildPadding(maxIndexOfLastWord - lastWordIndices[i]);
Packit 116408
        formattedLines[i] = line.substr(0, formattedLastWordIndices[i]) +
Packit 116408
            padding + line.substr(formattedLastWordIndices[i]);
Packit 116408
Packit 116408
        i++;
Packit 116408
    }
Packit 116408
Packit 116408
    var output = "";
Packit 116408
    i = 0;
Packit 116408
    while (line = formattedLines[i]) {
Packit 116408
        output = output + line + "\n";
Packit 116408
        i++;
Packit 116408
    }
Packit 116408
Packit 116408
    listing.innerHTML = output;
Packit 116408
}
Packit 116408
Packit 116408
function cleanupSignature()
Packit 116408
{
Packit 116408
    var elements = document.getElementsByClassName('programlisting');
Packit 116408
Packit 116408
    listing = elements[0];
Packit 116408
Packit 116408
    var input = listing.innerHTML;
Packit 116408
    var lines = input.split("\n");
Packit 116408
Packit 116408
    var line;
Packit 116408
    var i = 0;
Packit 116408
    while (line = lines[i]) {
Packit 116408
        lines[i] = strCompactWhitespace(strStrip(line));
Packit 116408
        i++;
Packit 116408
    }
Packit 116408
Packit 116408
    var output = "";
Packit 116408
    i = 0;
Packit 116408
    while (line = lines[i]) {
Packit 116408
        output = output + line + "\n";
Packit 116408
        i++;
Packit 116408
    }
Packit 116408
Packit 116408
    listing.innerHTML = output;
Packit 116408
}