BearND has uploaded a new change for review. ( 
https://gerrit.wikimedia.org/r/397737 )

Change subject: References: back_link as object
......................................................................

References: back_link as object

Instead of a single string a backlink is now an object with an href and
a text field.
The content of the text field is just returns what Parsoid gives us in
the DOM but spaces are trimmed on the beginning and the end.

Bug: T182647
Change-Id: Ie0c03e1695b291d6040252f66b6d3aa4319aa939
---
M lib/references/structureReferenceListContent.js
M test/lib/references/structureReferenceListContent.test.js
2 files changed, 37 insertions(+), 25 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/mediawiki/services/mobileapps 
refs/changes/37/397737/1

diff --git a/lib/references/structureReferenceListContent.js 
b/lib/references/structureReferenceListContent.js
index de1bee7..cbf6064 100644
--- a/lib/references/structureReferenceListContent.js
+++ b/lib/references/structureReferenceListContent.js
@@ -10,8 +10,11 @@
 const hasOnlyWhitespace = node =>
     node.nodeType === NodeType.TEXT_NODE && /^\s*$/.test(node.textContent);
 
-const buildBackLinkText = (element) => {
-    return element.getAttribute('href');
+const buildBackLinkObject = (element) => {
+    return {
+        href: element.getAttribute('href'),
+        text: element.textContent.trim()
+    };
 };
 
 const structureBackLinks = (listItemElement, logger) => {
@@ -19,7 +22,7 @@
     const element = listItemElement.firstElementChild;
     if (element.tagName === 'A') {
         // single back link directly
-        resultArray.push(buildBackLinkText(element));
+        resultArray.push(buildBackLinkObject(element));
     } else if (element.tagName === 'SPAN') {
         // multiple back links inside a <span>
 
@@ -29,7 +32,7 @@
         for (let i = 0; i < spanChildElements.length; i++) {
             const spanChildEl = spanChildElements[i];
             if (spanChildEl.tagName === 'A') {
-                resultArray.push(buildBackLinkText(spanChildEl));
+                resultArray.push(buildBackLinkObject(spanChildEl));
             }
         }
     } else {
diff --git a/test/lib/references/structureReferenceListContent.test.js 
b/test/lib/references/structureReferenceListContent.test.js
index 6b8cbb4..e4e6b48 100644
--- a/test/lib/references/structureReferenceListContent.test.js
+++ b/test/lib/references/structureReferenceListContent.test.js
@@ -74,19 +74,23 @@
         it('one back link', () => {
             const doc = createDocument(simpleDogRef);
             assert.deepEqual(
-                mut.unit.structureBackLinks(doc.querySelector('li'), logger), [
-                    './Dog#cite_ref-101'
-                ]);
+                mut.unit.structureBackLinks(doc.querySelector('li'), logger), 
[{
+                    href: './Dog#cite_ref-101',
+                    text: '↑'
+                }]);
             assert.ok(logger.log.notCalled);
         });
 
         it('two back links', () => {
             const doc = createDocument(twoBacklinksDogRef);
             assert.deepEqual(
-                mut.unit.structureBackLinks(doc.querySelector('li'), logger), [
-                    './Dog#cite_ref-perri2016_13-0',
-                    './Dog#cite_ref-perri2016_13-1'
-                ]
+                mut.unit.structureBackLinks(doc.querySelector('li'), logger), 
[ {
+                    href: './Dog#cite_ref-perri2016_13-0',
+                    text: '1'
+                }, {
+                    href: './Dog#cite_ref-perri2016_13-1',
+                    text: '2'
+                }]
             );
             assert.ok(logger.log.notCalled);
         });
@@ -150,9 +154,10 @@
             const doc = createDocument(simpleDogRef);
             const result = 
mut.unit.buildOneReferenceItem(doc.querySelector('li'), logger);
             assert.deepEqual(result, {
-                back_links: [
-                    './Dog#cite_ref-101'
-                ],
+                back_links: [ {
+                    "href": "./Dog#cite_ref-101",
+                    "text": "↑"
+                }],
                 content: 'some HTML',
                 id: '101'
             });
@@ -163,11 +168,13 @@
             const doc = createDocument(twoBacklinksDogRef);
             const result = 
mut.unit.buildOneReferenceItem(doc.querySelector('li'), logger);
             assert.deepEqual(result, {
-                back_links: [
-                    './Dog#cite_ref-perri2016_13-0',
-                    './Dog#cite_ref-perri2016_13-1'
-
-                ],
+                back_links: [{
+                    "href": "./Dog#cite_ref-perri2016_13-0",
+                    "text": "1"
+                }, {
+                    "href": "./Dog#cite_ref-perri2016_13-1",
+                    "text": "2"
+                }],
                 content: '<cite class="citation journal">cite 
1</cite><span>more HTML</span>',
                 citations: [
                     'journal'
@@ -184,9 +191,10 @@
             const result = mut.buildReferenceList(doc.querySelector('ol'), 
logger);
             assert.deepEqual(result.references, {
                 '101': {
-                    back_links: [
-                        './Dog#cite_ref-101'
-                    ],
+                    back_links: [{
+                        "href": "./Dog#cite_ref-101",
+                        "text": "↑"
+                    }],
                     content: 'some HTML'
                 }
             });
@@ -199,9 +207,10 @@
             const result = mut.buildReferenceList(doc.querySelector('ol'), 
logger);
             assert.deepEqual(result.references, {
                 '4': {
-                    back_links: [
-                        './List_of_most_viewed_YouTube_videos#cite_ref-4'
-                    ],
+                    back_links: [{
+                        "href": 
"./List_of_most_viewed_YouTube_videos#cite_ref-4",
+                        "text": "↑"
+                    }],
                     content: mostViewedYoutubeVideosContent
                 }
             });

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

Gerrit-MessageType: newchange
Gerrit-Change-Id: Ie0c03e1695b291d6040252f66b6d3aa4319aa939
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/services/mobileapps
Gerrit-Branch: master
Gerrit-Owner: BearND <[email protected]>

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

Reply via email to