Arlolra has uploaded a new change for review.
https://gerrit.wikimedia.org/r/196483
Change subject: Table cells not properly parsed in an implicit-td context
......................................................................
Table cells not properly parsed in an implicit-td context
* Fixes the problematic parse on,
enwiki/Province_of_Ogliastra?oldid=577754889
Bug: T71123
Change-Id: I7a08b2e5a20d1fea3e19c47b275f53f01d6253b4
---
M lib/pegTokenizer.pegjs.txt
M tests/parserTests.txt
2 files changed, 45 insertions(+), 14 deletions(-)
git pull ssh://gerrit.wikimedia.org:29418/mediawiki/services/parsoid
refs/changes/83/196483/1
diff --git a/lib/pegTokenizer.pegjs.txt b/lib/pegTokenizer.pegjs.txt
index 4edf061..a79bbc4 100644
--- a/lib/pegTokenizer.pegjs.txt
+++ b/lib/pegTokenizer.pegjs.txt
@@ -1718,24 +1718,27 @@
return res;
}
+tds
+ = ( pp:( pipe_pipe / p:pipe & row_syntax_table_args { return p; } )
+ tdt:table_data_tag {
+ var da = tdt[0].dataAttribs;
+ da.stx_v = "row";
+ da.tsr[0] = da.tsr[0] - pp.length; // include "||"
+ if (pp !== "||" || (da.startTagSrc && da.startTagSrc !== pp)) {
+ // Variation from default
+ da.startTagSrc = pp + (da.startTagSrc ? da.startTagSrc.substring(1)
: '');
+ }
+ return tdt;
+ }
+ )*
+
table_data_tags
// avoid recursion via nested_block_in_table
= ! { return stops.onStack('tableDataBlock'); }
p:pipe
![+-] td:table_data_tag
tagEndPos:({return peg$currPos;})
- tds:( pp:(pipe_pipe / p:pipe & row_syntax_table_args { return p; })
- tdt:table_data_tag {
- var da = tdt[0].dataAttribs;
- da.stx_v = "row";
- da.tsr[0] = da.tsr[0] - pp.length; // include "||"
- if (pp !== "||" || (da.startTagSrc && da.startTagSrc !== pp)) {
- // Variation from default
- da.startTagSrc = pp + (da.startTagSrc ?
da.startTagSrc.substring(1) : '');
- }
- return tdt;
- }
- )* {
+ tds:tds {
var da = td[0].dataAttribs;
da.tsr[0] = da.tsr[0] - p.length; // include "|"
if (p !== "|") {
@@ -1751,13 +1754,13 @@
! "}"
tagEndPos:({return peg$currPos;})
b:nested_block+
- {
+ tds:tds {
b = tu.flattenIfArray(b);
var nlTok = b.shift();
var td = tu.buildTableTokens("td", "|", '', [nlTok.dataAttribs.tsr[1],
tagEndPos], peg$currPos, b);
td[0].dataAttribs.autoInsertedStart = true;
td[0].dataAttribs.autoInsertedEnd = true;
- return [nlTok, td];
+ return [ nlTok ].concat( td, tds );
}
table_data_tag
diff --git a/tests/parserTests.txt b/tests/parserTests.txt
index d7e4368..aa00140 100644
--- a/tests/parserTests.txt
+++ b/tests/parserTests.txt
@@ -140,6 +140,12 @@
!! endarticle
!! article
+Template:table_attribs_4
+!! text
+| style="background-color:#DC241f;" width="10px" |
+!! endarticle
+
+!! article
Template:table_header_cells
!! text
{{table_attribs}}!!style='color:red;'|''Bar''||style='color:brown;'|''Foo''
and Baz
@@ -6158,6 +6164,28 @@
!! end
!! test
+Table cells not properly parsed in an implicit-td context
+!! wikitext
+{|
+|-
+{{table_attribs_4}} || a || b
+|}
+!! html/php+tidy
+<table>
+<tr>
+<td style="background-color:#DC241f;" width="10px"></td>
+<td>a</td>
+<td>b</td>
+</tr>
+</table>
+!! html/parsoid
+<table>
+<tbody><tr data-parsoid='{"startTagSrc":"|-","autoInsertedEnd":true}'>
+<td style="background-color:#DC241f;" width="10px" about="#mwt1"
typeof="mw:Transclusion" data-parsoid='{"autoInsertedEnd":true,"pi":[[]]}'
data-mw='{"parts":["",{"template":{"target":{"wt":"table_attribs_4","href":"./Template:Table_attribs_4"},"params":{},"i":0}},"
"]}'> </td><td data-parsoid='{"stx_v":"row","autoInsertedEnd":true}'> a
</td><td data-parsoid='{"stx_v":"row","autoInsertedEnd":true}'> b</td></tr>
+</tbody></table>
+!! end
+
+!! test
Parsoid: Round-trip tables directly followed by content (bug 51219)
!! options
parsoid=wt2html,wt2wt
--
To view, visit https://gerrit.wikimedia.org/r/196483
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: newchange
Gerrit-Change-Id: I7a08b2e5a20d1fea3e19c47b275f53f01d6253b4
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/services/parsoid
Gerrit-Branch: master
Gerrit-Owner: Arlolra <[email protected]>
_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits