Santhosh has uploaded a new change for review.

  https://gerrit.wikimedia.org/r/227435

Change subject: Lineardoc: Fix the reference parsing
......................................................................

Lineardoc: Fix the reference parsing

Parsoid started to output references in the following format:
<span about="#mwt8" class="mw-ref" id="cite_ref-4" rel="dc:references"
typeof="mw:Extension/ref" data-mw='{"name":"ref","body":{"id":
"mw-reference-text-cite_note-4"},"attrs":{}}'>
        <a href="#cite_note-4" style="counter-reset: mw-Ref 4;">
                <span class="mw-reflink-text">[4]</span>
        </a>
</span>

And, our lineardoc started to wrongly output the content as

<span about="#mwt8" class="mw-ref" id="cite_ref-4" rel="dc:references"
typeof="mw:Extension/ref" data-mw='{"name":"ref","body":{"id":
"mw-reference-text-cite_note-4"},"attrs":{}}'>
        <a href="#cite_note-4" style="counter-reset: mw-Ref 4;">
                <span class="mw-reflink-text">[4]</span>
        </a>
</span>
<a href="#cite_note-4" style="counter-reset: mw-Ref 4;"></a>

The extra <a> tag is problematic and causes references appearing twice
in CX translation interface.

The extra <a> was a regression introduced in 
I4cca925cb35a00fa27fd31380fae90e1c4c2767f,
it's test had to correct too.

While processing inline annotation tags like above, we were skipping the 
internal
inline empty spans and that was fixed in 
I4cca925cb35a00fa27fd31380fae90e1c4c2767f

But, when we started processing the internal annotations, we were inserting
a new inline content when there is non-whitespace content. But that caused
inserting inline content in unwanted situations too. The above example shows an
<a> tag inserted in that way. Making the conditions for this insertion a bit 
more
stricter found working. We are checking if those inline annotations are having
any of data-mw, data-parsoid attributes. Eventhough I am not 100% sure that is
the correct solution to meet any future changes like this.

Added tests with new reference structure. The parsoid DOM spec
https://www.mediawiki.org/wiki/Parsoid/MediaWiki_DOM_spec#Ref_and_References
does not seem to reflect this change.

Bug: T107140
Change-Id: I68bd92ecf4190f62db9b715f66f63cfada3aea57
---
M lineardoc/Builder.js
M tests/lineardoc/LinearDoc.test.js
M tests/lineardoc/data/test3-result.xhtml
M tests/lineardoc/data/test3-result.xml
A tests/lineardoc/data/test4-result.xhtml
A tests/lineardoc/data/test4-result.xml
A tests/lineardoc/data/test4.xhtml
7 files changed, 21 insertions(+), 9 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/mediawiki/services/cxserver 
refs/changes/35/227435/1

diff --git a/lineardoc/Builder.js b/lineardoc/Builder.js
index 8874681..fe33c12 100644
--- a/lineardoc/Builder.js
+++ b/lineardoc/Builder.js
@@ -83,7 +83,7 @@
                }
                whitespace.push( textChunk.text );
        }
-       if ( replace ) {
+       if ( replace && ( tag.attributes[ 'data-mw' ] ||  tag.attributes[ 
'data-parsoid' ]  ) ) {
                // truncate list and add data span as new sub-Doc.
                this.textChunks.length = i + 1;
                whitespace.reverse();
diff --git a/tests/lineardoc/LinearDoc.test.js 
b/tests/lineardoc/LinearDoc.test.js
index 13a1007..98e4f41 100644
--- a/tests/lineardoc/LinearDoc.test.js
+++ b/tests/lineardoc/LinearDoc.test.js
@@ -6,7 +6,7 @@
 QUnit.test( 'LinearDoc tests', function ( assert ) {
        var parser, testXhtmlFile, resultXmlFile, resultXhtmlFile, testXhtml, 
resultXml,
                resultXhtml, i,
-               numTests = 3;
+               numTests = 4;
        QUnit.expect( 2 * numTests );
        for ( i = 1; i <= numTests; i++ ) {
                testXhtmlFile = __dirname + '/data/test' + i + '.xhtml';
diff --git a/tests/lineardoc/data/test3-result.xhtml 
b/tests/lineardoc/data/test3-result.xhtml
index d6ac7fa..ae458bc 100644
--- a/tests/lineardoc/data/test3-result.xhtml
+++ b/tests/lineardoc/data/test3-result.xhtml
@@ -6,7 +6,7 @@
 <body>
 <ol>
 <li about="#cite_note-5" id="cite_note-5">
-<a href="#cite_ref-5" rel="mw:referencedBy"><span class="mw-linkback-text">↑ 
</span></a><a href="#cite_ref-5" rel="mw:referencedBy"></a>
+<a href="#cite_ref-5" rel="mw:referencedBy"><span class="mw-linkback-text">↑ 
</span></a>
 <span class="mw-reference-text" data-parsoid="{}" 
id="mw-reference-text-cite_note-5"><a 
data-parsoid="{&#34;targetOff&#34;:4337,&#34;contentOffsets&#34;:[4337,4337],&#34;dsr&#34;:[4248,4338,89,1]}"
 
href="http://lhermanto-resepkeluarga.blogspot.com/2008/04/telor-bumbu-bali-bali-seasoning.html";
 rel="mw:ExtLink"></a></span>
 </li>
 </ol>
diff --git a/tests/lineardoc/data/test3-result.xml 
b/tests/lineardoc/data/test3-result.xml
index f0bc5b3..92c83e4 100644
--- a/tests/lineardoc/data/test3-result.xml
+++ b/tests/lineardoc/data/test3-result.xml
@@ -27,12 +27,6 @@
 <cxtextblock>
   <cxtextchunk>&#10;</cxtextchunk>
   <cxtextchunk tags="a:href=#cite_ref-5,rel=mw:referencedBy 
span:class=mw-linkback-text">↑ </cxtextchunk>
-  <cxinlineelement>
-    <a>
-    <cxtextblock>
-    </cxtextblock>
-    </a>
-  </cxinlineelement>
   <cxtextchunk>&#10;</cxtextchunk>
   <cxinlineelement 
tags="span:id=mw-reference-text-cite_note-5,class=mw-reference-text,data-parsoid={}">
     <a>
diff --git a/tests/lineardoc/data/test4-result.xhtml 
b/tests/lineardoc/data/test4-result.xhtml
new file mode 100644
index 0000000..c2ecf48
--- /dev/null
+++ b/tests/lineardoc/data/test4-result.xhtml
@@ -0,0 +1,2 @@
+<p id="mwFQ"><span about="#mwt8" class="mw-ref" 
data-mw="{&#34;name&#34;:&#34;ref&#34;,&#34;body&#34;:{&#34;id&#34;:&#34;mw-reference-text-cite_note-4&#34;},&#34;attrs&#34;:{}}
+" id="cite_ref-4" rel="dc:references" typeof="mw:Extension/ref"><a 
href="#cite_note-4" style="counter-reset: mw-Ref 4;"><span 
class="mw-reflink-text">[4]</span></a></span></p>
diff --git a/tests/lineardoc/data/test4-result.xml 
b/tests/lineardoc/data/test4-result.xml
new file mode 100644
index 0000000..1f825b3
--- /dev/null
+++ b/tests/lineardoc/data/test4-result.xml
@@ -0,0 +1,11 @@
+<p>
+<cxtextblock>
+  <cxinlineelement>
+    <cxwrapper>
+    <cxtextblock>
+      <cxtextchunk tags="a:href=#cite_note-4,style=counter-reset: mw-Ref 4; 
span:class=mw-reflink-text">[4]</cxtextchunk>
+    </cxtextblock>
+    </cxwrapper>
+  </cxinlineelement>
+</cxtextblock>
+</p>
diff --git a/tests/lineardoc/data/test4.xhtml b/tests/lineardoc/data/test4.xhtml
new file mode 100644
index 0000000..951e145
--- /dev/null
+++ b/tests/lineardoc/data/test4.xhtml
@@ -0,0 +1,5 @@
+<p id="mwFQ"><span about="#mwt8" class="mw-ref" id="cite_ref-4"
+rel="dc:references" typeof="mw:Extension/ref"
+data-mw='{"name":"ref","body":{"id":"mw-reference-text-cite_note-4"},"attrs":{}}
+'><a href="#cite_note-4" style="counter-reset: mw-Ref 4;"><span
+class="mw-reflink-text">[4]</span></a></span></p>

-- 
To view, visit https://gerrit.wikimedia.org/r/227435
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: I68bd92ecf4190f62db9b715f66f63cfada3aea57
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/services/cxserver
Gerrit-Branch: master
Gerrit-Owner: Santhosh <[email protected]>

_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to