[MediaWiki-commits] [Gerrit] apps...wikipedia[master]: Hygiene: move collapseTables.getTableHeader to applib
jenkins-bot has submitted this change and it was merged. ( https://gerrit.wikimedia.org/r/339808 ) Change subject: Hygiene: move collapseTables.getTableHeader to applib .. Hygiene: move collapseTables.getTableHeader to applib Bug: T158309 Change-Id: I86bdbc30e435316cee170f36ac5a69c8b126f547 --- M app/src/main/assets/bundle.js M www/js/transforms/collapseTables.js M www/package.json 3 files changed, 70 insertions(+), 77 deletions(-) Approvals: Dbrant: Looks good to me, approved jenkins-bot: Verified Mholloway: Looks good to me, but someone else must approve diff --git a/app/src/main/assets/bundle.js b/app/src/main/assets/bundle.js index b68585f..676fc1c 100644 --- a/app/src/main/assets/bundle.js +++ b/app/src/main/assets/bundle.js @@ -760,44 +760,8 @@ } } ); },{"../transformer":14,"../utilities":25}],17:[function(require,module,exports){ +var getTableHeader = require("applib").CollapseElement.getTableHeader; var transformer = require("../transformer"); - -/* -Tries to get an array of table header (TH) contents from a given table. -If there are no TH elements in the table, an empty array is returned. -*/ -function getTableHeader( element ) { -var thArray = []; -if (element.children === undefined || element.children === null) { -return thArray; -} -for (var i = 0; i < element.children.length; i++) { -var el = element.children[i]; -if (el.tagName === "TH") { -// ok, we have a TH element! -// However, if it contains more than two links, then ignore it, because -// it will probably appear weird when rendered as plain text. -var aNodes = el.querySelectorAll( "a" ); -if (aNodes.length < 3) { -// Also ignore it if it's identical to the page title. -if (el.innerText.length > 0 && el.innerText !== window.pageTitle && el.innerHTML !== window.pageTitle) { -thArray.push(el.innerText); -} -} -} -//if it's a table within a table, don't worry about it -if (el.tagName === "TABLE") { -continue; -} -//recurse into children of this element -var ret = getTableHeader(el); -//did we get a list of TH from this child? -if (ret.length > 0) { -thArray = thArray.concat(ret); -} -} -return thArray; -} function handleTableCollapseOrExpandClick() { var container = this.parentNode; @@ -839,7 +803,7 @@ } var isInfobox = tables[i].classList.contains( 'infobox' ); -var headerText = getTableHeader(tables[i]); +var headerText = getTableHeader(tables[i], window.pageTitle); if (headerText.length === 0 && !isInfobox) { continue; } @@ -899,7 +863,7 @@ module.exports = { handleTableCollapseOrExpandClick: handleTableCollapseOrExpandClick }; -},{"../transformer":14}],18:[function(require,module,exports){ +},{"../transformer":14,"applib":26}],18:[function(require,module,exports){ var transformer = require("../transformer"); var collapseTables = require("./collapseTables"); @@ -1330,4 +1294,66 @@ firstAncestorWithMultipleChildren: firstAncestorWithMultipleChildren }; +},{}],26:[function(require,module,exports){ +'use strict'; + +/** + Tries to get an array of table header (TH) contents from a given table. If + there are no TH elements in the table, an empty array is returned. + @param {!Element} element Table or blob of HTML containing a table? + @param {?string} pageTitle + @return {!Array} +*/ +var getTableHeader = function getTableHeader(element, pageTitle) { + var thArray = []; + + if (element.children === undefined || element.children === null) { +return thArray; + } + + for (var i = 0; i < element.children.length; i++) { +var el = element.children[i]; + +if (el.tagName === 'TH') { + // ok, we have a TH element! + // However, if it contains more than two links, then ignore it, because + // it will probably appear weird when rendered as plain text. + var aNodes = el.querySelectorAll('a'); + if (aNodes.length < 3) { +// todo: remove nonstandard Element.innerText usage +// Also ignore it if it's identical to the page title. +if ((el.innerText && el.innerText.length || el.textContent.length) > 0 && el.innerText !== pageTitle && el.textContent !== pageTitle && el.innerHTML !== pageTitle) { + thArray.push(el.innerText || el.textContent); +} + } +} + +// if it's a table within a table, don't worry about it +if (el.tagName === 'TABLE') { + continue; +} + +// recurse into children of this element +var ret = getTableHeader(el, pageTitle); + +// did we get a list of TH from this child? +if (ret.length > 0) { + thArray = thArray.concat(ret); +} + } + +
[MediaWiki-commits] [Gerrit] apps...wikipedia[master]: Hygiene: move collapseTables.getTableHeader to applib
Niedzielski has uploaded a new change for review. ( https://gerrit.wikimedia.org/r/339808 ) Change subject: Hygiene: move collapseTables.getTableHeader to applib .. Hygiene: move collapseTables.getTableHeader to applib Bug: T158309 Change-Id: I86bdbc30e435316cee170f36ac5a69c8b126f547 --- M app/src/main/assets/bundle.js M www/js/transforms/collapseTables.js M www/package.json 3 files changed, 70 insertions(+), 77 deletions(-) git pull ssh://gerrit.wikimedia.org:29418/apps/android/wikipedia refs/changes/08/339808/1 diff --git a/app/src/main/assets/bundle.js b/app/src/main/assets/bundle.js index b68585f..676fc1c 100644 --- a/app/src/main/assets/bundle.js +++ b/app/src/main/assets/bundle.js @@ -760,44 +760,8 @@ } } ); },{"../transformer":14,"../utilities":25}],17:[function(require,module,exports){ +var getTableHeader = require("applib").CollapseElement.getTableHeader; var transformer = require("../transformer"); - -/* -Tries to get an array of table header (TH) contents from a given table. -If there are no TH elements in the table, an empty array is returned. -*/ -function getTableHeader( element ) { -var thArray = []; -if (element.children === undefined || element.children === null) { -return thArray; -} -for (var i = 0; i < element.children.length; i++) { -var el = element.children[i]; -if (el.tagName === "TH") { -// ok, we have a TH element! -// However, if it contains more than two links, then ignore it, because -// it will probably appear weird when rendered as plain text. -var aNodes = el.querySelectorAll( "a" ); -if (aNodes.length < 3) { -// Also ignore it if it's identical to the page title. -if (el.innerText.length > 0 && el.innerText !== window.pageTitle && el.innerHTML !== window.pageTitle) { -thArray.push(el.innerText); -} -} -} -//if it's a table within a table, don't worry about it -if (el.tagName === "TABLE") { -continue; -} -//recurse into children of this element -var ret = getTableHeader(el); -//did we get a list of TH from this child? -if (ret.length > 0) { -thArray = thArray.concat(ret); -} -} -return thArray; -} function handleTableCollapseOrExpandClick() { var container = this.parentNode; @@ -839,7 +803,7 @@ } var isInfobox = tables[i].classList.contains( 'infobox' ); -var headerText = getTableHeader(tables[i]); +var headerText = getTableHeader(tables[i], window.pageTitle); if (headerText.length === 0 && !isInfobox) { continue; } @@ -899,7 +863,7 @@ module.exports = { handleTableCollapseOrExpandClick: handleTableCollapseOrExpandClick }; -},{"../transformer":14}],18:[function(require,module,exports){ +},{"../transformer":14,"applib":26}],18:[function(require,module,exports){ var transformer = require("../transformer"); var collapseTables = require("./collapseTables"); @@ -1330,4 +1294,66 @@ firstAncestorWithMultipleChildren: firstAncestorWithMultipleChildren }; +},{}],26:[function(require,module,exports){ +'use strict'; + +/** + Tries to get an array of table header (TH) contents from a given table. If + there are no TH elements in the table, an empty array is returned. + @param {!Element} element Table or blob of HTML containing a table? + @param {?string} pageTitle + @return {!Array} +*/ +var getTableHeader = function getTableHeader(element, pageTitle) { + var thArray = []; + + if (element.children === undefined || element.children === null) { +return thArray; + } + + for (var i = 0; i < element.children.length; i++) { +var el = element.children[i]; + +if (el.tagName === 'TH') { + // ok, we have a TH element! + // However, if it contains more than two links, then ignore it, because + // it will probably appear weird when rendered as plain text. + var aNodes = el.querySelectorAll('a'); + if (aNodes.length < 3) { +// todo: remove nonstandard Element.innerText usage +// Also ignore it if it's identical to the page title. +if ((el.innerText && el.innerText.length || el.textContent.length) > 0 && el.innerText !== pageTitle && el.textContent !== pageTitle && el.innerHTML !== pageTitle) { + thArray.push(el.innerText || el.textContent); +} + } +} + +// if it's a table within a table, don't worry about it +if (el.tagName === 'TABLE') { + continue; +} + +// recurse into children of this element +var ret = getTableHeader(el, pageTitle); + +// did we get a list of TH from this child? +if (ret.length > 0) { + thArray = thArray.concat(ret); +} + } + + return thArray; +}; + +var CollapseElement = { +