Imports changes from Mediacloth revision r126
Avoids empty paragraphs after tables
| 335 | if @heading.length <= heading.length | if @heading.length <= heading.length | 335 |
|---|---|---|---|
| 336 | end_span(:SECTION, heading) | end_span(:SECTION, heading) | 336 |
| 337 | @lexer_table.pop | @lexer_table.pop | 337 |
| 338 | if @text[@cursor, 2] == "\r\n" | skip_newline | 338 |
| 339 | @cursor += 2 | ||
| 340 | elsif @text[@cursor, 1] == "\n" | ||
| 341 | @cursor += 1 | ||
| 342 | end | ||
| 343 | else | else | 339 |
| 344 | @pending << heading | @pending << heading | 340 |
| 345 | end | end | 341 |
| 268 more lines | |||
| 614 | end_span(:TABLE, "|}") | end_span(:TABLE, "|}") | 610 |
| 615 | @cursor += 1 | @cursor += 1 | 611 |
| 616 | @lexer_table.pop | @lexer_table.pop | 612 |
skip_newline | 613 | ||
| 617 | else | else | 614 |
| 618 | if context.include? :CELL | if context.include? :CELL | 615 |
| 619 | end_span(:CELL) | end_span(:CELL) | 616 |
| 109 more lines | |||
| 729 | @cursor += 1 while @text[@cursor, 1] == ' ' | @cursor += 1 while @text[@cursor, 1] == ' ' | 726 |
| 730 | end | end | 727 |
| 731 | 728 | ||
# Advances the text cursor beyond the next newline sequence, if any. This is | 729 | ||
# used to strip newlines after certain block-level elements, like section | 730 | ||
# headings and tables, to prevent an empty paragraph when the block is followed | 731 | ||
# by an extra newline sequence. | 732 | ||
def skip_newline | 733 | ||
if @text[@cursor, 2] == "\r\n" | 734 | ||
@cursor += 2 | 735 | ||
elsif @text[@cursor, 1] == "\n" | 736 | ||
@cursor += 1 | 737 | ||
end | 738 | ||
end | 739 | ||
| 740 | |||
| 732 | # Extracts from the input text the sequence of characters consisting of the | # Extracts from the input text the sequence of characters consisting of the | 741 |
| 733 | # character or characters specified, and returns the sequence as a string. The | # character or characters specified, and returns the sequence as a string. The | 742 |
| 734 | # text cursor is advanaced to point to the next character after the sequence. | # text cursor is advanaced to point to the next character after the sequence. | 743 |
| 1 | <p>Some examples of tables. | <p>Some examples of tables. | 1 |
|---|---|---|---|
| 2 | 2 | ||
| 3 | </p><table></table> | </p><table></table> | 3 |
| 4 | <p><br /> | <table><tr></tr> | 4 |
| 5 | |||
| 6 | </p><table><tr></tr> | ||
| 7 | </table> | </table> | 5 |
| 8 | <p><br /> | <table><tr><td> a | 6 |
| 9 | |||
| 10 | </p><table><tr><td> a | ||
| 11 | </td><td> b | </td><td> b | 7 |
| 12 | </td></tr> | </td></tr> | 8 |
| 13 | </table> | </table> | 9 |
| 14 | <p><br /> | <table><tr><td> a | 10 |
| 15 | |||
| 16 | </p><table><tr><td> a | ||
| 17 | </td><td> b | </td><td> b | 11 |
| 18 | </td></tr> | </td></tr> | 12 |
| 19 | <tr><td> 1 | <tr><td> 1 | 13 |
| 20 | </td><td> 2 | </td><td> 2 | 14 |
| 21 | </td></tr> | </td></tr> | 15 |
| 22 | </table> | </table> | 16 |
| 23 | <p><br /> | <table><tr><td> a </td><td> b | 17 |
| 24 | |||
| 25 | </p><table><tr><td> a </td><td> b | ||
| 26 | </td></tr> | </td></tr> | 18 |
| 27 | <tr><td> 1 </td><td> 2 | <tr><td> 1 </td><td> 2 | 19 |
| 28 | </td></tr> | </td></tr> | 20 |
| 29 | </table> | </table> | 21 |
| 30 | <p><br /> | <table><tr><th> a | 22 |
| 31 | |||
| 32 | </p><table><tr><th> a | ||
| 33 | </th><th> b | </th><th> b | 23 |
| 34 | </th></tr> | </th></tr> | 24 |
| 35 | <tr><td> 1 | <tr><td> 1 | 25 |
| 36 | </td><td> 2 | </td><td> 2 | 26 |
| 37 | </td></tr> | </td></tr> | 27 |
| 38 | </table> | </table> | 28 |
| 39 | <p><br /> | <table><tr><th> a </th><th> b | 29 |
| 40 | |||
| 41 | </p><table><tr><th> a </th><th> b | ||
| 42 | </th></tr> | </th></tr> | 30 |
| 43 | <tr><td> 1 </td><td> 2 | <tr><td> 1 </td><td> 2 | 31 |
| 44 | </td></tr> | </td></tr> | 32 |
| 45 | </table> | </table> | 33 |
| 46 | <p><br /> | <table><tr><td> a | 34 |
| 47 | |||
| 48 | </p><table><tr><td> a | ||
| 49 | </td></tr> | </td></tr> | 35 |
| 50 | <tr><td> 1 | <tr><td> 1 | 36 |
| 51 | </td><td> 2 | </td><td> 2 | 37 |
| 52 | </td></tr> | </td></tr> | 38 |
| 53 | </table> | </table> | 39 |
| 54 | <p><br /> | <table><tr><td> a | 40 |
| 55 | |||
| 56 | </p><table><tr><td> a | ||
| 57 | </td><td> b | </td><td> b | 41 |
| 58 | </td></tr> | </td></tr> | 42 |
| 59 | <tr><td> 1 | <tr><td> 1 | 43 |
| 60 | </td></tr> | </td></tr> | 44 |
| 61 | </table> | </table> | 45 |
| 62 | <p><br /> | <table><tr><td> a | 46 |
| 63 | |||
| 64 | </p><table><tr><td> a | ||
| 65 | </td><td> b | </td><td> b | 47 |
| 66 | </td></tr> | </td></tr> | 48 |
| 67 | <tr><td></td><td> 2 | <tr><td></td><td> 2 | 49 |
| 68 | </td></tr> | </td></tr> | 50 |
| 69 | </table> | </table> | 51 |
| 70 | <p><br /> | <table><tr><td> <a href="http://example.com">Example</a></td><td> <b>bold</b></td></tr> | 52 |
| 71 | |||
| 72 | </p><table><tr><td> <a href="http://example.com">Example</a></td><td> <b>bold</b></td></tr> | ||
| 73 | <tr><td> <a href="javascript:void(0)">Example</a></td><td> <a href="javascript:void(0)">image:example.jpg(1, 2, 3)</a></td></tr> | <tr><td> <a href="javascript:void(0)">Example</a></td><td> <a href="javascript:void(0)">image:example.jpg(1, 2, 3)</a></td></tr> | 53 |
| 74 | </table> | </table> | 54 |
| 75 | <p><br /> | <table><tr><td> <a href="http://example.com">Example</a></td><td> <b>bold | 55 |
| 76 | |||
| 77 | </p><table><tr><td> <a href="http://example.com">Example</a></td><td> <b>bold | ||
| 78 | </b></td></tr> | </b></td></tr> | 56 |
| 79 | <tr><td> <a href="javascript:void(0)">Example</a></td><td> <b>bold <i>italic | <tr><td> <a href="javascript:void(0)">Example</a></td><td> <b>bold <i>italic | 57 |
| 80 | </i></b></td></tr> | </i></b></td></tr> | 58 |
| 81 | </table> | </table> | 59 |
| 82 | <p><br /> | <table><tr><td> a | 60 |
| 83 | |||
| 84 | </p><table><tr><td> a | ||
| 85 | </td><td> b | </td><td> b | 61 |
| 86 | </td></tr> | </td></tr> | 62 |
| 87 | <tr><td> A list in a cell: | <tr><td> A list in a cell: | 63 |
| 1 more lines | |||
| 89 | </li><li> two | </li><li> two | 65 |
| 90 | </li></ul></td></tr> | </li></ul></td></tr> | 66 |
| 91 | </table> | </table> | 67 |
| 92 | <p><br /> | <table><tr><td> a | 68 |
| 93 | |||
| 94 | </p><table><tr><td> a | ||
| 95 | </td><td> b | </td><td> b | 69 |
| 96 | </td></tr> | </td></tr> | 70 |
| 97 | <tr><td> A table in a cell: | <tr><td> A table in a cell: | 71 |
| 17 more lines | |||
| 115 | </table> | </table> | 89 |
| 116 | <p><br /> | <p><br /> | 90 |
| 117 | 91 | ||
| 118 | </p><p> | </p><p>Text before | 92 |
| 119 | Text before | ||
| 120 | </p><table><tr><td> a | </p><table><tr><td> a | 93 |
| 121 | </td><td> b | </td><td> b | 94 |
| 122 | </td></tr> | </td></tr> | 95 |
| 123 | </table> | </table> | 96 |
| 124 | <p><br /> | <p> | 97 |
| 125 | Text before with <i>italic | 98 | |
| 126 | </p><p>Text before with <i>italic | ||
| 127 | </i></p><table><tr><td> a | </i></p><table><tr><td> a | 99 |
| 128 | </td><td> b | </td><td> b | 100 |
| 129 | </td></tr> | </td></tr> | 101 |
| 1 | PARA_STARTTEXTSome examples of tables. | PARA_STARTTEXTSome examples of tables. | 1 |
|---|---|---|---|
| 2 | 2 | ||
| 3 | PARA_ENDTABLE_START{|TABLE_END|}PARA_STARTTEXT | PARA_ENDTABLE_START{|TABLE_END|}TABLE_START{|ROW_START|-ROW_ENDTABLE_END|}TABLE_START{|ROW_STARTCELL_START|TEXT a | 3 |
| 4 | |||
| 5 | PARA_ENDTABLE_START{|ROW_START|-ROW_ENDTABLE_END|}PARA_STARTTEXT | ||
| 6 | |||
| 7 | PARA_ENDTABLE_START{|ROW_STARTCELL_START|TEXT a | ||
| 8 | CELL_ENDCELL_START|TEXT b | CELL_ENDCELL_START|TEXT b | 4 |
| 9 | CELL_ENDROW_ENDTABLE_END|}PARA_STARTTEXT | CELL_ENDROW_ENDTABLE_END|}TABLE_START{|ROW_STARTCELL_START|TEXT a | 5 |
| 10 | |||
| 11 | PARA_ENDTABLE_START{|ROW_STARTCELL_START|TEXT a | ||
| 12 | CELL_ENDCELL_START|TEXT b | CELL_ENDCELL_START|TEXT b | 6 |
| 13 | CELL_ENDROW_ENDROW_START|-CELL_START|TEXT 1 | CELL_ENDROW_ENDROW_START|-CELL_START|TEXT 1 | 7 |
| 14 | CELL_ENDCELL_START|TEXT 2 | CELL_ENDCELL_START|TEXT 2 | 8 |
| 15 | CELL_ENDROW_ENDTABLE_END|}PARA_STARTTEXT | CELL_ENDROW_ENDTABLE_END|}TABLE_START{|ROW_STARTCELL_START|TEXT a CELL_ENDCELL_START||TEXT b | 9 |
| 16 | |||
| 17 | PARA_ENDTABLE_START{|ROW_STARTCELL_START|TEXT a CELL_ENDCELL_START||TEXT b | ||
| 18 | CELL_ENDROW_ENDROW_START|-CELL_START|TEXT 1 CELL_ENDCELL_START||TEXT 2 | CELL_ENDROW_ENDROW_START|-CELL_START|TEXT 1 CELL_ENDCELL_START||TEXT 2 | 10 |
| 19 | CELL_ENDROW_ENDTABLE_END|}PARA_STARTTEXT | CELL_ENDROW_ENDTABLE_END|}TABLE_START{|ROW_STARTHEAD_START!TEXT a | 11 |
| 20 | |||
| 21 | PARA_ENDTABLE_START{|ROW_STARTHEAD_START!TEXT a | ||
| 22 | HEAD_ENDHEAD_START!TEXT b | HEAD_ENDHEAD_START!TEXT b | 12 |
| 23 | HEAD_ENDROW_ENDROW_START|-CELL_START|TEXT 1 | HEAD_ENDROW_ENDROW_START|-CELL_START|TEXT 1 | 13 |
| 24 | CELL_ENDCELL_START|TEXT 2 | CELL_ENDCELL_START|TEXT 2 | 14 |
| 25 | CELL_ENDROW_ENDTABLE_END|}PARA_STARTTEXT | CELL_ENDROW_ENDTABLE_END|}TABLE_START{|ROW_STARTHEAD_START!TEXT a HEAD_ENDHEAD_START||TEXT b | 15 |
| 26 | |||
| 27 | PARA_ENDTABLE_START{|ROW_STARTHEAD_START!TEXT a HEAD_ENDHEAD_START||TEXT b | ||
| 28 | HEAD_ENDROW_ENDROW_START|-CELL_START|TEXT 1 CELL_ENDCELL_START||TEXT 2 | HEAD_ENDROW_ENDROW_START|-CELL_START|TEXT 1 CELL_ENDCELL_START||TEXT 2 | 16 |
| 29 | CELL_ENDROW_ENDTABLE_END|}PARA_STARTTEXT | CELL_ENDROW_ENDTABLE_END|}TABLE_START{|ROW_STARTCELL_START|TEXT a | 17 |
| 30 | |||
| 31 | PARA_ENDTABLE_START{|ROW_STARTCELL_START|TEXT a | ||
| 32 | CELL_ENDROW_ENDROW_START|-CELL_START|TEXT 1 | CELL_ENDROW_ENDROW_START|-CELL_START|TEXT 1 | 18 |
| 33 | CELL_ENDCELL_START|TEXT 2 | CELL_ENDCELL_START|TEXT 2 | 19 |
| 34 | CELL_ENDROW_ENDTABLE_END|}PARA_STARTTEXT | CELL_ENDROW_ENDTABLE_END|}TABLE_START{|ROW_STARTCELL_START|TEXT a | 20 |
| 35 | |||
| 36 | PARA_ENDTABLE_START{|ROW_STARTCELL_START|TEXT a | ||
| 37 | CELL_ENDCELL_START|TEXT b | CELL_ENDCELL_START|TEXT b | 21 |
| 38 | CELL_ENDROW_ENDROW_START|-CELL_START|TEXT 1 | CELL_ENDROW_ENDROW_START|-CELL_START|TEXT 1 | 22 |
| 39 | CELL_ENDROW_ENDTABLE_END|}PARA_STARTTEXT | CELL_ENDROW_ENDTABLE_END|}TABLE_START{|ROW_STARTCELL_START|TEXT a | 23 |
| 40 | |||
| 41 | PARA_ENDTABLE_START{|ROW_STARTCELL_START|TEXT a | ||
| 42 | CELL_ENDCELL_START|TEXT b | CELL_ENDCELL_START|TEXT b | 24 |
| 43 | CELL_ENDROW_ENDROW_START|-CELL_START|CELL_ENDCELL_START|TEXT 2 | CELL_ENDROW_ENDROW_START|-CELL_START|CELL_ENDCELL_START|TEXT 2 | 25 |
| 44 | CELL_ENDROW_ENDTABLE_END|}PARA_STARTTEXT | CELL_ENDROW_ENDTABLE_END|}TABLE_START{|ROW_STARTCELL_START|TEXT LINK_START[TEXThttp://example.comLINKSEP TEXTExampleLINK_END]CELL_ENDCELL_START|TEXT BOLD_START'''TEXTboldBOLD_END'''CELL_ENDROW_ENDROW_START|-CELL_START|TEXT INTLINK_START[[TEXTexampleINTLINKSEP|TEXTExampleINTLINK_END]]CELL_ENDCELL_START|TEXT INTLINK_START[[TEXTimageRESOURCESEP:TEXTexample.jpgINTLINKSEP|TEXT1INTLINKSEP|TEXT2INTLINKSEP|TEXT3INTLINK_END]]CELL_ENDROW_ENDTABLE_END|}TABLE_START{|ROW_STARTCELL_START|TEXT LINK_START[TEXThttp://example.comLINKSEP TEXTExampleLINK_ENDCELL_ENDCELL_START|TEXT BOLD_START'''TEXTbold | 26 |
| 45 | |||
| 46 | PARA_ENDTABLE_START{|ROW_STARTCELL_START|TEXT LINK_START[TEXThttp://example.comLINKSEP TEXTExampleLINK_END]CELL_ENDCELL_START|TEXT BOLD_START'''TEXTboldBOLD_END'''CELL_ENDROW_ENDROW_START|-CELL_START|TEXT INTLINK_START[[TEXTexampleINTLINKSEP|TEXTExampleINTLINK_END]]CELL_ENDCELL_START|TEXT INTLINK_START[[TEXTimageRESOURCESEP:TEXTexample.jpgINTLINKSEP|TEXT1INTLINKSEP|TEXT2INTLINKSEP|TEXT3INTLINK_END]]CELL_ENDROW_ENDTABLE_END|}PARA_STARTTEXT | ||
| 47 | |||
| 48 | PARA_ENDTABLE_START{|ROW_STARTCELL_START|TEXT LINK_START[TEXThttp://example.comLINKSEP TEXTExampleLINK_ENDCELL_ENDCELL_START|TEXT BOLD_START'''TEXTbold | ||
| 49 | BOLD_ENDCELL_ENDROW_ENDROW_START|-CELL_START|TEXT INTLINK_START[[TEXTexampleINTLINKSEP|TEXTExampleINTLINK_ENDCELL_ENDCELL_START|TEXT BOLD_START'''TEXTbold ITALIC_START''TEXTitalic | BOLD_ENDCELL_ENDROW_ENDROW_START|-CELL_START|TEXT INTLINK_START[[TEXTexampleINTLINKSEP|TEXTExampleINTLINK_ENDCELL_ENDCELL_START|TEXT BOLD_START'''TEXTbold ITALIC_START''TEXTitalic | 27 |
| 50 | ITALIC_ENDBOLD_ENDCELL_ENDROW_ENDTABLE_END|}PARA_STARTTEXT | ITALIC_ENDBOLD_ENDCELL_ENDROW_ENDTABLE_END|}TABLE_START{|ROW_STARTCELL_START|TEXT a | 28 |
| 51 | |||
| 52 | PARA_ENDTABLE_START{|ROW_STARTCELL_START|TEXT a | ||
| 53 | CELL_ENDCELL_START|TEXT b | CELL_ENDCELL_START|TEXT b | 29 |
| 54 | CELL_ENDROW_ENDROW_START|-CELL_START|TEXT A list in a cell: | CELL_ENDROW_ENDROW_START|-CELL_START|TEXT A list in a cell: | 30 |
| 55 | UL_STARTLI_STARTTEXT one | UL_STARTLI_STARTTEXT one | 31 |
| 56 | LI_ENDLI_STARTTEXT two | LI_ENDLI_STARTTEXT two | 32 |
| 57 | LI_ENDUL_ENDCELL_ENDROW_ENDTABLE_END|}PARA_STARTTEXT | LI_ENDUL_ENDCELL_ENDROW_ENDTABLE_END|}TABLE_START{|ROW_STARTCELL_START|TEXT a | 33 |
| 58 | |||
| 59 | PARA_ENDTABLE_START{|ROW_STARTCELL_START|TEXT a | ||
| 60 | CELL_ENDCELL_START|TEXT b | CELL_ENDCELL_START|TEXT b | 34 |
| 61 | CELL_ENDROW_ENDROW_START|-CELL_START|TEXT A table in a cell: | CELL_ENDROW_ENDROW_START|-CELL_START|TEXT A table in a cell: | 35 |
| 62 | TABLE_START{|ROW_STARTCELL_START|TEXT 1 | TABLE_START{|ROW_STARTCELL_START|TEXT 1 | 36 |
| 10 more lines | |||
| 73 | CELL_ENDCELL_START|TEXT 2 | CELL_ENDCELL_START|TEXT 2 | 47 |
| 74 | CELL_ENDROW_ENDTABLE_END|}PARA_STARTTEXT | CELL_ENDROW_ENDTABLE_END|}PARA_STARTTEXT | 48 |
| 75 | 49 | ||
| 76 | PARA_ENDPARA_STARTTEXT | PARA_ENDPARA_STARTTEXTText before | 50 |
| 77 | Text before | ||
| 78 | PARA_ENDTABLE_START{|ROW_STARTCELL_START|TEXT a | PARA_ENDTABLE_START{|ROW_STARTCELL_START|TEXT a | 51 |
| 79 | CELL_ENDCELL_START|TEXT b | CELL_ENDCELL_START|TEXT b | 52 |
| 80 | CELL_ENDROW_ENDTABLE_END|}PARA_STARTTEXT | CELL_ENDROW_ENDTABLE_END|}PARA_STARTTEXT | 53 |
| 81 | Text before with ITALIC_START''TEXTitalic | 54 | |
| 82 | PARA_ENDPARA_STARTTEXTText before with ITALIC_START''TEXTitalic | ||
| 83 | ITALIC_ENDPARA_ENDTABLE_START{|ROW_STARTCELL_START|TEXT a | ITALIC_ENDPARA_ENDTABLE_START{|ROW_STARTCELL_START|TEXT a | 55 |
| 84 | CELL_ENDCELL_START|TEXT b | CELL_ENDCELL_START|TEXT b | 56 |
| 85 | CELL_ENDROW_ENDTABLE_END|}falsefalse | CELL_ENDROW_ENDTABLE_END|}falsefalse | 57 |