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