RSS Git Download  Clone
Raw View History
Blames found: 3 Mode: javascript Binary: false


Hang on, we reloading big blames...
/*global module:true*/ /* * Basic table support with re-entrant parsing, where cell content * can also specify markdown. * * Tables * ====== * * | Col 1 | Col 2 | * |======== |====================================================| * |**bold** | ![Valid XHTML] (http://w3.org/Icons/valid-xhtml10) | * | Plain | Value | * */ (function(){ var table = function(converter) { var tables = {}, style = 'text-align:left;', filter; tables.th = function(header){ if (header.trim() === "") { return "";} var id = header.trim().replace(/ /g, '_').toLowerCase(); return '<th id="' + id + '" style="'+style+'">' + header + '</th>'; }; tables.td = function(cell) { return '<td style="'+style+'">' + converter.makeHtml(cell) + '</td>'; }; tables.ths = function(){ var out = "", i = 0, hs = [].slice.apply(arguments); for (i;i<hs.length;i+=1) { out += tables.th(hs[i]) + '\n'; } return out; }; tables.tds = function(){ var out = "", i = 0, ds = [].slice.apply(arguments); for (i;i<ds.length;i+=1) { out += tables.td(ds[i]) + '\n'; } return out; }; tables.thead = function() { var out, i = 0, hs = [].slice.apply(arguments); out = "<thead>\n"; out += "<tr>\n"; out += tables.ths.apply(this, hs); out += "</tr>\n"; out += "</thead>\n"; return out; }; tables.tr = function() { var out, i = 0, cs = [].slice.apply(arguments); out = "<tr>\n"; out += tables.tds.apply(this, cs); out += "</tr>\n"; return out; }; filter = function(text) { var i=0, lines = text.split('\n'), tbl = [], line, hs, rows, out = []; for (i; i<lines.length;i+=1) { line = lines[i]; // looks like a table heading if (line.trim().match(/^[|]{1}.*[|]{1}$/)) { line = line.trim(); tbl.push('<table>'); hs = line.substring(1, line.length -1).split('|'); tbl.push(tables.thead.apply(this, hs)); line = lines[++i]; if (!line.trim().match(/^[|]{1}[-=| ]+[|]{1}$/)) { // not a table rolling back line = lines[--i]; } else { line = lines[++i]; tbl.push('<tbody>'); while (line.trim().match(/^[|]{1}.*[|]{1}$/)) { line = line.trim(); tbl.push(tables.tr.apply(this, line.substring(1, line.length -1).split('|'))); line = lines[++i]; } tbl.push('</tbody>'); tbl.push('</table>'); // we are done with this table and we move along out.push(tbl.join('\n'));
tbl = [];
continue; } } out.push(line); } return out.join('\n'); }; return [ { type: 'lang', filter: filter } ]; }; // Client-side export if (typeof window !== 'undefined' && window.Showdown && window.Showdown.extensions) { window.Showdown.extensions.table = table; } // Server-side export if (typeof module !== 'undefined') { module.exports = table; } }());