From fef110cccb2d02b218183398d9baa0ae256a7283 Mon Sep 17 00:00:00 2001 From: Estevao Soares dos Santos Date: Sat, 5 Aug 2017 03:34:49 +0100 Subject: [PATCH] Fix(tables): allow for one column table Closes #406 --- dist/showdown.js | Bin 90270 -> 90648 bytes dist/showdown.js.map | Bin 261396 -> 262559 bytes dist/showdown.min.js | Bin 37907 -> 38026 bytes dist/showdown.min.js.map | Bin 40283 -> 40376 bytes src/subParsers/tables.js | 26 +++--- ...406.does-not-render-one-column-tables.html | 81 ++++++++++++++++++ .../#406.does-not-render-one-column-tables.md | 26 ++++++ 7 files changed, 123 insertions(+), 10 deletions(-) create mode 100644 test/features/tables/#406.does-not-render-one-column-tables.html create mode 100644 test/features/tables/#406.does-not-render-one-column-tables.md diff --git a/dist/showdown.js b/dist/showdown.js index 644a798e77e0ba559d7dae4b07249264713085d2..20628cf67c744d19fcbf5049c53c92aefbb0039d 100644 GIT binary patch delta 465 zcmbPtkaflp)`l&NFa0bPz`#~PKTe_AK*zW?rp8`RJEjJR^WXx}3NaGcP^WIX@>PDJLksLIK%ikiiIJahfWf6_W?F z1ZF)%m!>vQC?+o^ujbGS15N$(Tx+m>3JR3lCn^TC56w0$pl#cu{28~gDx{U>C6{F8 z=P48<78R$4BqrsgDrgiXmV;TE3f0?1!x%f+CV!uOiE z2~hd;0!~IrBM>VU7$Q1I=4e`T0ezvb4-rzx&r8M7Cxz-iWZjb+*J^D)5yN z{TaELK|CLSMw#sy0gP){CvX3yGW}@`@ftG#GrBPY diff --git a/dist/showdown.js.map b/dist/showdown.js.map index 0ef7e5b3c14f6cabcd1579b1517443fa8bd85d05..37bf9f2a399cffc077d3c4d84e4f68acfdb3271a 100644 GIT binary patch delta 965 zcmbVIT}V@580Pyv&#X`FOgD{0^b7jg=CRGpNM+eUg=SbH3WhV>VlCmEx%}yG8iNYO ziyD04n*_EiDX`c@FeoCatFBUlyfNBkxG3`~i=gjpC57G8;he+E`#$gUKF@ROt9x=nou!>_u_JHo|Adsc?)M9dC(rhGEa3;h)PKM z>m`Ua3qAAGR*1b5>Jr_8o$0tNH{?;;RJHAYiOZ)Z1@G!PVQF00E0i*t@#Ukim`1xm z)361i0VHw#doJvW7@4#Qqs0>3^kABNsAD}3mea!glNXf7f)e-ES$Ncv!`I&wL26cP zvg0C%s0c3>v~m`b;PDco$-)SB=O=S7;a0>y+@X+oE1a9pV2OusY=M?5sB)^x=%j?v zRTHArh_69an`)cDcO4b;PZ7$^{S;hzf?DjLTBt5Tj?7kEL9*PXs$H4TjV-MiR2yb2mT8OLXFjR&gZ$jRehgsLLS*(`-1|K!HdkzoTpgCrPPdh zy`%do#m_5{nFg5Cq-2AvqE`%TjrE(r_DazeGx3f-zvr?$gL*^u7-Ro42kO8<1EWKo$_@O2X< Kd2F4$BtHQ7bVdFE delta 411 zcmXAjO-LJ26oq;3If_qZ(mJ99OL-IV$2CDki!$8f9^H+#&0=Zk};C0>W0 ze^>_+{j3B(0?g0N5Sr7hkZCkvAul{pM2KYFL>UwHW^|c3|d(&z~HO sM2BCES`BJsDn69_FcDXE=HT>eH?CJR;ka#Hi{nCkyAuueue>-E_nxhl%K!iX diff --git a/dist/showdown.min.js b/dist/showdown.min.js index 6884ac2bc8eced78396ef51263376322c777c59d..8114fd99f38e328bbf133f00ceb25a05510964c5 100644 GIT binary patch delta 220 zcmbQdf~jjI(*~hFuC&s;)OUnPU=%*0W-S$WTJJlkxT#?fY6Rrw`R4GPA#eoNRI~0 uPKXhjT0qMt&+Tgy$=plX6lgpW%y!Db3&4GfC8IU z`DCGe{@U(J|Ov$KBB}(iuoP=Q(Y*n6A&lFDTPF}Zr0 zoNBs1NKvMfPN|2ZYnGFF${6S>&YS@0jG6Hg?PjfRa3<9YM z4Fl?Pw{$A;1M&PFL8Nz)3&`HUVz7#IrwE`D*8=AfzsZdWl9Ly-icOw7dl_eb5Xi=S zC(Fq`bEE{)19TD{9TQ!2ydB-mopSuaO8e(1ifVg-l=+tg0v+ofu9NTN=onEt`RE)4 kKEq(3W$vLm*&rdK$)D$F@*4*O^?QeugJeKH)1GSp0Mf{7SpWb4 delta 280 zcmdn7o9Xs0rVU5A7~8K~N| z#Ch|QY5FYe-j43(PC0&)4`xeF-q$KN`Pb}a#@Rt2^YWccT|w%DOMHQPowJ;Q20Qu} zI_m@iDGPs{L`TO&7ag$v41cixH**x7&AdQ*{R;wt?sE^<$#-&ej3^8QnPcGO2sQy^ tfU}{q3!LK^S`iGi!97$b8>G5&a==_o{;FW0(cU4&AQ?yRlF1!&4FEM`Tx|dV diff --git a/src/subParsers/tables.js b/src/subParsers/tables.js index 6ce7bc6..567823c 100644 --- a/src/subParsers/tables.js +++ b/src/subParsers/tables.js @@ -5,7 +5,9 @@ showdown.subParser('tables', function (text, options, globals) { return text; } - var tableRgx = /^ {0,3}\|?.+\|.+\n[ \t]{0,3}\|?[ \t]*:?[ \t]*(?:-|=){2,}[ \t]*:?[ \t]*\|[ \t]*:?[ \t]*(?:-|=){2,}[\s\S]+?(?:\n\n|¨0)/gm; + var tableRgx = /^ {0,3}\|?.+\|.+\n {0,3}\|?[ \t]*:?[ \t]*(?:[-=]){2,}[ \t]*:?[ \t]*\|[ \t]*:?[ \t]*(?:[-=]){2,}[\s\S]+?(?:\n\n|¨0)/gm, + //singeColTblRgx = /^ {0,3}\|.+\|\n {0,3}\|[ \t]*:?[ \t]*(?:[-=]){2,}[ \t]*:?[ \t]*\|[ \t]*\n(?: {0,3}\|.+\|\n)+(?:\n\n|¨0)/gm; + singeColTblRgx = /^ {0,3}\|.+\|\n {0,3}\|[ \t]*:?[ \t]*(?:[-=]){2,}[ \t]*:?[ \t]*\|\n( {0,3}\|.+\|\n)*(?:\n|¨0)/gm; function parseStyles (sLine) { if (/^:[ \t]*--*$/.test(sLine)) { @@ -56,14 +58,7 @@ showdown.subParser('tables', function (text, options, globals) { return tb; } - text = globals.converter._dispatch('tables.before', text, options, globals); - - // find escaped pipe characters - text = text.replace(/\\(\|)/g, showdown.helper.escapeCharactersCallback); - - // parse tables - text = text.replace(tableRgx, function (rawTable) { - + function parseTable (rawTable) { var i, tableLines = rawTable.split('\n'); // strip wrong first and last column if wrapped tables are used @@ -126,7 +121,18 @@ showdown.subParser('tables', function (text, options, globals) { } return buildTable(headers, cells); - }); + } + + text = globals.converter._dispatch('tables.before', text, options, globals); + + // find escaped pipe characters + text = text.replace(/\\(\|)/g, showdown.helper.escapeCharactersCallback); + + // parse multi column tables + text = text.replace(tableRgx, parseTable); + + // parse one column tables + text = text.replace(singeColTblRgx, parseTable); text = globals.converter._dispatch('tables.after', text, options, globals); diff --git a/test/features/tables/#406.does-not-render-one-column-tables.html b/test/features/tables/#406.does-not-render-one-column-tables.html new file mode 100644 index 0000000..841e371 --- /dev/null +++ b/test/features/tables/#406.does-not-render-one-column-tables.html @@ -0,0 +1,81 @@ + + + + + + + + + + + +
some header
some content
+ + + + + + + + +
some header
+ + + + + + + + + + + + + + + + + + + + + + + +
some header
some content
some content
some content
some content
some content
+ + + + + + + + + + + +
some header
some content
+ + + + + + + + + + + +
some header
some content
+ + + + + + + + + + + +
some header
some content
diff --git a/test/features/tables/#406.does-not-render-one-column-tables.md b/test/features/tables/#406.does-not-render-one-column-tables.md new file mode 100644 index 0000000..3a5aee1 --- /dev/null +++ b/test/features/tables/#406.does-not-render-one-column-tables.md @@ -0,0 +1,26 @@ +|some header | +|------------| +|some content| + +|some header | +|------------| + +|some header | +|------------| +|some content| +|some content| +|some content| +|some content| +|some content| + +|some header | +|:-----------| +|some content| + +|some header | +|-----------:| +|some content| + +|some header | +|:----------:| +|some content| \ No newline at end of file