rendered paste bodyvar 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)); }); });});