All pastes #57017 Raw Edit

JavaScript

public javascript v1 · immutable
#57017 ·published 2006-05-19 04:07 UTC
rendered paste body
var split_once = function(val, div) {    var idx = val.indexOf(div);    return [val.substring(0, idx), val.substring(idx)];}var charalign = function(col, cells) {    var alignchar = getNodeAttribute(col, 'char') || '.';    var texts = map(scrapeText, cells);    var splittexts = map(function(s) { return split_once(strip(s), alignchar) }, texts);    var lengths = map(partial(map, function(s) { return s.length }), splittexts);    var maxlengths = map(listMax, zip.apply(null, lengths));    var left_pct = Math.round(maxlengths[0] / sum(maxlengths) * 100);    var split_div = function(width, align, text) {        var div = DIV({style: 'float: left;'}, text);        updateNodeAttributes(div, {'style': {            'width': width,            'textAlign': align,        }});        return div;    };    var left = partial(split_div, left_pct + '%', 'right');    var right = partial(split_div, (100 - left_pct) + '%', 'left');    cells[0].style.width = (sum(maxlengths) * 0.7) + 'em';    forEach(izip(cells, splittexts), function(args) {        var cell = args[0];        if (args[1][0] != '') {            replaceChildNodes(cell, left(args[1][0]), right(args[1][1]));        }    }, splittexts);};var get_cols = function(table) {    var cols = [];    var extendcols = function(node) {        iextend(cols, repeat(node, node.span));    };    var cn = table.childNodes;    if (cn) {        for (var i = 0; i < cn.length; i++) {            var node = cn[i];            if (node.nodeName == 'COL') {                extendcols(node);            } else if (node.nodeName == 'COLGROUP') {                var group_cols = node.getElementsByTagName('COL');                if (isEmpty(group_cols)) {                    extendcols(node);                } else {                    forEach(group_cols, extendcols);                    forEach(group_cols, function(c) {                        logDebug(c.align);                    });                }            }        }    }    return cols;};var get_cells = function(table_row) {    var cells = [];    var cn = table_row.childNodes;    if (cn) {        for (var i = 0; i < cn.length; i++) {            var node = cn[i];            if (node.nodeName == 'TH' || node.nodeName == 'TD')                iextend(cells, repeat(node, node.colSpan));        }    }    return cells;};addLoadEvent(function() {    forEach(currentDocument().getElementsByTagName("TABLE"), function(table) {        var rows = table.getElementsByTagName('TBODY')[0]            .getElementsByTagName("TR");        var cols = get_cols(table);        var row_cells = map(get_cells, rows);        var args = list(chain([cols], row_cells));        forEach(zip.apply(null, args), function(arg) {            var col = arg[0];            if (col.align != 'char')                return;            charalign(col, arg.slice(1));        });    });});