jenkins-bot has submitted this change and it was merged. Change subject: Render attribution page ......................................................................
Render attribution page Change-Id: I4e6c3b6d92088fe1a600ddb35eed66abfa630327 --- M lib/index.js 1 file changed, 54 insertions(+), 16 deletions(-) Approvals: Cscott: Looks good to me, approved jenkins-bot: Verified diff --git a/lib/index.js b/lib/index.js index 772f416..1d39b00 100644 --- a/lib/index.js +++ b/lib/index.js @@ -112,7 +112,12 @@ // Set the default font "\\setmainfont[" + (SCRIPT_FONTS['default'].options||'') + "]{" + SCRIPT_FONTS['default'].name + "}", "\\newcommand{\\LTRfont}{}", - "\\newcommand{\\textsmall}[1]{\\small #1}", + "\\newcommand{\\textsmall}[1]{{\\small #1}}", + // smaller size, one column for attributions + "\\newcommand{\\attributions}{" + + "\\renewcommand{\\textsmall}[1]{{\\scriptsize ##1}}" + + "\\footnotesize\\onecolumn" + + "}", "\\date{}\\author{}" ].join("\n"); @@ -723,7 +728,9 @@ // Don't allow them in single item collections, as the article class doesn't // allow \chapters Visitor.prototype.visitHn = function(node, n) { - if (!this.options.hasChapters) { n -= 1; } + if (this.options.isAttribution) { + if (this.options.hasChapters) { n -= 1; } + } else if (!this.options.hasChapters) { n -= 1; } if (this.options.singleItem && n === 0) { /* the article class doesn't allow chapters */ return; @@ -1436,7 +1443,8 @@ // files have been written. var generateLatex = function(metabook, builddir, imagemap, options) { var status = options.status; - status.createStage(countItems(metabook), 'Processing collection'); + // add one to the item count to accomodate attribution 'chapter' + status.createStage(countItems(metabook)+1, 'Processing collection'); status.report(null, metabook.title); var output = fs.createWriteStream(path.join(builddir, 'output.tex'), { @@ -1509,16 +1517,22 @@ ); var write = {}; write.article = function(item) { - console.assert(item.type === 'article'); - status.report('Processing article', item.title); + var isAttribution = (item.type === 'attribution'); + console.assert(item.type === 'article' || isAttribution); + status.report('Processing', item.type, item.title); var revid = item.revision; var document, base = '', articleLanguage; var key = (item.wiki ? (item.wiki+'|') : '') + revid; var outfile = path.join( - builddir, 'latex', item.wiki + '-' + revid + '.tex' + builddir, 'latex', + isAttribution ? 'attribution.tex' : + (item.wiki + '-' + revid + '.tex') ); output.write('\\input{' + outfile + '}\n'); - return pdb.get(key, 'nojson').then(function(data) { + var pContents = isAttribution ? + P.call(fs.readFile, fs, item.filename, { encoding: 'utf8' }) : + pdb.get(key, 'nojson'); + return pContents.then(function(data) { document = domino.createDocument(data); var baseElem = document.querySelector('head > base[href]'); if (baseElem) { @@ -1542,14 +1556,17 @@ singleItem: singleItem, hasChapters: hasChapters, lang: collectionLanguage, - dir: collectionDir + dir: collectionDir, + isAttribution: isAttribution }); - var h1 = document.createElement('h1'); - var span = document.createElement('span'); - h1.appendChild(span); - span.textContent = item.title; - span.lang = articleLanguage; - visitor.visit(h1); // emit document title! + if (!isAttribution) { + var h1 = document.createElement('h1'); + var span = document.createElement('span'); + h1.appendChild(span); + span.textContent = item.title; + span.lang = articleLanguage; + visitor.visit(h1); // emit document title! + } document.body.lang = document.body.lang || articleLanguage; document.body.dir = document.body.dir || Polyglossia.lookup(document.body.lang).dir; @@ -1573,7 +1590,26 @@ }; return P.forEachSeq(metabook.items, function(item) { - return write[item.type](item); + if (write[item.type]) { + return write[item.type](item); + } else { + console.warn("Unknown item type '%s', ignoring", item.type); + } + }).then(function() { + var filename = path.join(builddir, 'bundle', 'attribution.html'); + if (!fs.existsSync(filename)) { + status.report('Processing attribution (skipped)'); + return; + } + // write attribution 'chapter' + output.write('\\attributions\n'); + return write.article({ + type: 'attribution', + filename: filename, + title: '', + // XXX should use options.lang to choose an appropriate wiki + wiki: 0 + }); }).then(function() { return P.call(output.end, output, STD_FOOTER); }).then(function() { @@ -1720,7 +1756,9 @@ builddir = _builddir; // read the main metabook.json file return P.call( - fs.readFile, fs, path.join(builddir, 'bundle', 'metabook.json') + fs.readFile, fs, + path.join(builddir, 'bundle', 'metabook.json'), + { encoding: 'utf8' } ).then(function(data) { metabook = JSON.parse(data); }); -- To view, visit https://gerrit.wikimedia.org/r/148611 To unsubscribe, visit https://gerrit.wikimedia.org/r/settings Gerrit-MessageType: merged Gerrit-Change-Id: I4e6c3b6d92088fe1a600ddb35eed66abfa630327 Gerrit-PatchSet: 6 Gerrit-Project: mediawiki/extensions/Collection/OfflineContentGenerator/latex_renderer Gerrit-Branch: master Gerrit-Owner: Mwalker <mwal...@khaosdev.com> Gerrit-Reviewer: Cscott <canan...@wikimedia.org> Gerrit-Reviewer: jenkins-bot <> _______________________________________________ MediaWiki-commits mailing list MediaWiki-commits@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits