jenkins-bot has submitted this change and it was merged.

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(-)

Approvals:
  Subramanya Sastry: Looks good to me, approved
  jenkins-bot: Verified



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: merged
Gerrit-Change-Id: I7a08b2e5a20d1fea3e19c47b275f53f01d6253b4
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/services/parsoid
Gerrit-Branch: master
Gerrit-Owner: Arlolra <abrea...@wikimedia.org>
Gerrit-Reviewer: Cscott <canan...@wikimedia.org>
Gerrit-Reviewer: Marcoil <marc...@wikimedia.org>
Gerrit-Reviewer: Subramanya Sastry <ssas...@wikimedia.org>
Gerrit-Reviewer: jenkins-bot <>

_______________________________________________
MediaWiki-commits mailing list
MediaWiki-commits@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to