jenkins-bot has submitted this change and it was merged. ( https://gerrit.wikimedia.org/r/334756 )
Change subject: Fix to resolveTemplateTarget to better handle magic word aliases ...................................................................... Fix to resolveTemplateTarget to better handle magic word aliases * Magic word aliases sometimes have a ":" for their suffix and trying to resolve a string to a potential magicword alias has to search with this suffix as well. Aside: I don't yet know the rationale behind the ":" suffix in aliases. * This patch fixes a longstanding parser test failure. * In addition, this patch lets us fix an oddity in our native parser-functions implementation which had a special case for the language core parser function. It was recorded as pf_#language instead of pf_language. * This fixes the regression seen during rt-testing on hewiki:אשר_כנפו Change-Id: I4eb22cbb05ef5d1a97f6224833d18da6047c41fe --- M lib/wt2html/tt/ParserFunctions.js M lib/wt2html/tt/TemplateHandler.js M tests/parserTests-blacklist.js 3 files changed, 7 insertions(+), 3 deletions(-) Approvals: jenkins-bot: Verified Arlolra: Looks good to me, approved diff --git a/lib/wt2html/tt/ParserFunctions.js b/lib/wt2html/tt/ParserFunctions.js index 38342d9..54d70b7 100644 --- a/lib/wt2html/tt/ParserFunctions.js +++ b/lib/wt2html/tt/ParserFunctions.js @@ -806,7 +806,7 @@ ParserFunctions.prototype.pf_numberofarticles = function(token, frame, cb, args) { cb({ tokens: ["1"] }); }; -ParserFunctions.prototype['pf_#language'] = function(token, frame, cb, args) { +ParserFunctions.prototype.pf_language = function(token, frame, cb, args) { var target = args[0].k; cb({ tokens: [target] }); }; diff --git a/lib/wt2html/tt/TemplateHandler.js b/lib/wt2html/tt/TemplateHandler.js index cab64ea..84e5bbb 100644 --- a/lib/wt2html/tt/TemplateHandler.js +++ b/lib/wt2html/tt/TemplateHandler.js @@ -427,6 +427,11 @@ // Check if we have a parser function. // Unalias to canonical form and look in config.functionHooks var magicWordAlias = wiki.magicWords[prefix] || wiki.magicWords[lowerPrefix]; + + // Retry by adding a ":" to prefix if necessary + if (!magicWordAlias && pieces.length > 1) { + magicWordAlias = wiki.magicWords[prefix + ':'] || wiki.magicWords[lowerPrefix + ':']; + } var translatedPrefix = magicWordAlias || lowerPrefix || ''; // The check for pieces.length > 1 is require to distinguish between diff --git a/tests/parserTests-blacklist.js b/tests/parserTests-blacklist.js index 5e63865..4931d87 100644 --- a/tests/parserTests-blacklist.js +++ b/tests/parserTests-blacklist.js @@ -229,7 +229,6 @@ add("wt2html", "T153140: Don't break table handling if language converter markup is in the cell.", "<table data-parsoid='{\"dsr\":[0,18,2,2]}'>\n<tbody data-parsoid='{\"dsr\":[3,16,0,0]}'><tr data-parsoid='{\"startTagSrc\":\"|-\",\"autoInsertedEnd\":true,\"dsr\":[3,15,2,0]}'>\n<td data-parsoid='{\"a\":{\"-{R\":null},\"sa\":{\"-{R\":\"\"},\"autoInsertedEnd\":true,\"dsr\":[6,15,6,0]}'>B}-</td></tr>\n</tbody></table>"); add("wt2html", "Bug 529: Uncovered bullet in parser function result", "<ul data-parsoid='{\"dsr\":[0,24,0,0]}'><li data-parsoid='{\"dsr\":[0,24,1,0]}'> Foo <span about=\"#mwt1\" typeof=\"mw:Transclusion\" data-parsoid='{\"pi\":[[]],\"dsr\":[6,24,null,null]}' data-mw='{\"parts\":[{\"template\":{\"target\":{\"wt\":\"lc:{{bullet}} \",\"function\":\"lc\"},\"params\":{},\"i\":0}}]}'> bar</span></li></ul>"); add("wt2html", "Bug 5678: Double-parsed template invocation", "<p about=\"#mwt1\" typeof=\"mw:Transclusion\" data-parsoid='{\"dsr\":[0,42,0,0],\"pi\":[[]]}' data-mw='{\"parts\":[{\"template\":{\"target\":{\"wt\":\"lc:{{paramtest {{!}} param = hello }} \",\"function\":\"lc\"},\"params\":{},\"i\":0}}]}'>{{paramtest param = hello }}</p>"); -add("wt2html", "Case insensitivity of parser functions for non-ASCII characters (bug 8143)", "<p data-parsoid='{\"dsr\":[0,135,0,0]}'><span typeof=\"mw:Transclusion mw:Placeholder\" about=\"#mwt1\" data-parsoid='{\"dsr\":[0,19,null,null],\"pi\":[[]]}' data-mw='{\"parts\":[{\"template\":{\"target\":{\"wt\":\"PRVNÍVELKÉ:ěščř\",\"href\":\"./PRVNÍVELKÉ:ěščř\"},\"params\":{},\"i\":0}}]}'>Warning: Page/template fetching disabled, and no cache for PRVNÍVELKÉ:ěščř</span>\n<span typeof=\"mw:Transclusion mw:Placeholder\" about=\"#mwt2\" data-parsoid='{\"dsr\":[20,39,null,null],\"pi\":[[]]}' data-mw='{\"parts\":[{\"template\":{\"target\":{\"wt\":\"prvnívelké:ěščř\",\"href\":\"./Prvnívelké:ěščř\"},\"params\":{},\"i\":0}}]}'>Warning: Page/template fetching disabled, and no cache for Prvnívelké:ěščř</span>\n<span typeof=\"mw:Transclusion mw:Placeholder\" about=\"#mwt3\" data-parsoid='{\"dsr\":[40,58,null,null],\"pi\":[[]]}' data-mw='{\"parts\":[{\"template\":{\"target\":{\"wt\":\"PRVNÍMALÉ:ěščř\",\"href\":\"./PRVNÍMALÉ:ěščř\"},\"params\":{},\"i\":0}}]}'>Warning: Page/template fetching disabled, and no cache for PRVNÍMALÉ:ěščř</span>\n<span typeof=\"mw:Transclusion mw:Placeholder\" about=\"#mwt4\" data-parsoid='{\"dsr\":[59,77,null,null],\"pi\":[[]]}' data-mw='{\"parts\":[{\"template\":{\"target\":{\"wt\":\"prvnímalé:ěščř\",\"href\":\"./Prvnímalé:ěščř\"},\"params\":{},\"i\":0}}]}'>Warning: Page/template fetching disabled, and no cache for Prvnímalé:ěščř</span>\n<span typeof=\"mw:Transclusion mw:Placeholder\" about=\"#mwt5\" data-parsoid='{\"dsr\":[78,91,null,null],\"pi\":[[]]}' data-mw='{\"parts\":[{\"template\":{\"target\":{\"wt\":\"MALÁ:ěščř\",\"href\":\"./MALÁ:ěščř\"},\"params\":{},\"i\":0}}]}'>Warning: Page/template fetching disabled, and no cache for MALÁ:ěščř</span>\n<span typeof=\"mw:Transclusion mw:Placeholder\" about=\"#mwt6\" data-parsoid='{\"dsr\":[92,105,null,null],\"pi\":[[]]}' data-mw='{\"parts\":[{\"template\":{\"target\":{\"wt\":\"malá:ěščř\",\"href\":\"./Malá:ěščř\"},\"params\":{},\"i\":0}}]}'>Warning: Page/template fetching disabled, and no cache for Malá:ěščř</span>\n<span typeof=\"mw:Transclusion mw:Placeholder\" about=\"#mwt7\" data-parsoid='{\"dsr\":[106,120,null,null],\"pi\":[[]]}' data-mw='{\"parts\":[{\"template\":{\"target\":{\"wt\":\"VELKÁ:ěščř\",\"href\":\"./VELKÁ:ěščř\"},\"params\":{},\"i\":0}}]}'>Warning: Page/template fetching disabled, and no cache for VELKÁ:ěščř</span>\n<span typeof=\"mw:Transclusion mw:Placeholder\" about=\"#mwt8\" data-parsoid='{\"dsr\":[121,135,null,null],\"pi\":[[]]}' data-mw='{\"parts\":[{\"template\":{\"target\":{\"wt\":\"velká:ěščř\",\"href\":\"./Velká:ěščř\"},\"params\":{},\"i\":0}}]}'>Warning: Page/template fetching disabled, and no cache for Velká:ěščř</span></p>"); add("wt2html", "Nesting tags, paragraphs on lines which begin with <div>", "<div data-parsoid='{\"stx\":\"html\",\"dsr\":[0,11,5,6]}'></div><p data-parsoid='{\"dsr\":[11,20,0,0]}'><strong data-parsoid='{\"stx\":\"html\",\"autoInsertedEnd\":true,\"dsr\":[11,20,8,0]}'>A</strong></p>\n<p data-parsoid='{\"dsr\":[21,31,0,0]}'><strong data-parsoid='{\"stx\":\"html\",\"autoInsertedStart\":true,\"dsr\":[21,31,0,9]}'>B</strong></p>"); add("wt2html", "Bug 6200: paragraphs inside blockquotes (no extra line breaks)", "<blockquote data-parsoid='{\"stx\":\"html\",\"dsr\":[0,43,12,13]}'>Line one\n\nLine two</blockquote>"); add("wt2html", "Bug 6200: paragraphs inside blockquotes (extra line break on close)", "<blockquote data-parsoid='{\"stx\":\"html\",\"dsr\":[0,44,12,13]}'>Line one\n\n<p data-parsoid='{\"dsr\":[22,30,0,0]}'>Line two</p>\n</blockquote>"); @@ -257,7 +256,7 @@ add("wt2html", "Wrong option for formatNum (bug 56199)", "<p data-parsoid='{\"dsr\":[0,126,0,0]}'><span about=\"#mwt1\" typeof=\"mw:Transclusion\" data-parsoid='{\"pi\":[[{\"k\":\"1\"}]],\"dsr\":[0,29,null,null]}' data-mw='{\"parts\":[{\"template\":{\"target\":{\"wt\":\"formatnum:1,234.56\",\"function\":\"formatnum\"},\"params\":{\"1\":{\"wt\":\"Random\"}},\"i\":0}}]}'>1,234.56</span>\n<span about=\"#mwt2\" typeof=\"mw:Transclusion\" data-parsoid='{\"pi\":[[{\"k\":\"1\"}]],\"dsr\":[30,63,null,null]}' data-mw='{\"parts\":[{\"template\":{\"target\":{\"wt\":\"formatnum:1,234.56\",\"function\":\"formatnum\"},\"params\":{\"1\":{\"wt\":\"EVERYTHING\"}},\"i\":0}}]}'>1,234.56</span>\n<span about=\"#mwt3\" typeof=\"mw:Transclusion\" data-parsoid='{\"pi\":[[{\"k\":\"1\"}]],\"dsr\":[64,126,null,null]}' data-mw='{\"parts\":[{\"template\":{\"target\":{\"wt\":\"formatnum:1234.56\",\"function\":\"formatnum\"},\"params\":{\"1\":{\"wt\":\"any argument that has the string 'NOSEP'\"}},\"i\":0}}]}'>1234.56</span></p>"); add("wt2html", "Strip marker in grammar", "<p about=\"#mwt1\" typeof=\"mw:Transclusion\" data-parsoid='{\"dsr\":[0,35,0,0],\"pi\":[[{\"k\":\"1\"}]]}' data-mw='{\"parts\":[{\"template\":{\"target\":{\"wt\":\"grammar:elative\",\"function\":\"grammar\"},\"params\":{\"1\":{\"wt\":\"foo<nowiki/>bar\"}},\"i\":0}}]}'>Parser function implementation for pf_grammar missing in Parsoid.</p>"); add("wt2html", "Gallery override link with WikiLink (bug 34852)", "<ul class=\"gallery mw-gallery-traditional\" typeof=\"mw:Extension/gallery\" about=\"#mwt2\" data-parsoid='{\"dsr\":[0,78,2,2]}' data-mw='{\"name\":\"gallery\",\"attrs\":{},\"body\":{\"extsrc\":\"\\nFile:foobar.jpg|caption|alt=galleryalt|link=InterWikiLink\\n\"}}'>\n<li class=\"gallerybox\" style=\"width: 155px;\"><div class=\"thumb\" style=\"width: 150px; height: 150px;\"><span style=\"display: inline-block; height: 100%; vertical-align: middle;\"></span><span typeof=\"mw:Image\" style=\"vertical-align: middle; display: inline-block;\"><a href=\"./InterWikiLink\"><img alt=\"galleryalt\" resource=\"./File:Foobar.jpg\" src=\"//example.com/images/thumb/3/3a/Foobar.jpg/120px-Foobar.jpg\" data-file-width=\"1941\" data-file-height=\"220\" data-file-type=\"bitmap\" height=\"14\" width=\"120\"/></a></span></div><div class=\"gallerytext\">caption</div></li>\n</ul>"); -add("wt2html", "Language parser function", "<p about=\"#mwt1\" typeof=\"mw:Transclusion\" data-parsoid='{\"dsr\":[0,16,0,0],\"pi\":[[]]}' data-mw='{\"parts\":[{\"template\":{\"target\":{\"wt\":\"#language:ar\",\"function\":\"#language\"},\"params\":{},\"i\":0}}]}'>ar</p>"); +add("wt2html", "Language parser function", "<p about=\"#mwt1\" typeof=\"mw:Transclusion\" data-parsoid='{\"dsr\":[0,16,0,0],\"pi\":[[]]}' data-mw='{\"parts\":[{\"template\":{\"target\":{\"wt\":\"#language:ar\",\"function\":\"language\"},\"params\":{},\"i\":0}}]}'>ar</p>"); add("wt2html", "Special parser function", "<p data-parsoid='{\"dsr\":[0,65,0,0]}'><span about=\"#mwt1\" typeof=\"mw:Transclusion\" data-parsoid='{\"pi\":[[]],\"dsr\":[0,23,null,null]}' data-mw='{\"parts\":[{\"template\":{\"target\":{\"wt\":\"#special:RandomPage\",\"function\":\"#special\"},\"params\":{},\"i\":0}}]}'>Parser function implementation for pf_#special missing in Parsoid.</span>\n<span about=\"#mwt2\" typeof=\"mw:Transclusion\" data-parsoid='{\"pi\":[[]],\"dsr\":[24,45,null,null]}' data-mw='{\"parts\":[{\"template\":{\"target\":{\"wt\":\"#special:BaDtItLe\",\"function\":\"#special\"},\"params\":{},\"i\":0}}]}'>Parser function implementation for pf_#special missing in Parsoid.</span>\n<span about=\"#mwt3\" typeof=\"mw:Transclusion\" data-parsoid='{\"pi\":[[]],\"dsr\":[46,65,null,null]}' data-mw='{\"parts\":[{\"template\":{\"target\":{\"wt\":\"#special:Foobar\",\"function\":\"#special\"},\"params\":{},\"i\":0}}]}'>Parser function implementation for pf_#special missing in Parsoid.</span></p>"); add("wt2html", "1. SOL-sensitive wikitext tokens as template-args", "<p data-parsoid='{\"dsr\":[0,35,0,0]}'><span about=\"#mwt1\" typeof=\"mw:Transclusion\" data-parsoid='{\"pi\":[[{\"k\":\"1\"}]],\"dsr\":[0,11,null,null]}' data-mw='{\"parts\":[{\"template\":{\"target\":{\"wt\":\"echo\",\"href\":\"./Template:Echo\"},\"params\":{\"1\":{\"wt\":\"*a\"}},\"i\":0}}]}'>*a</span>\n<span about=\"#mwt2\" typeof=\"mw:Transclusion\" data-parsoid='{\"pi\":[[{\"k\":\"1\"}]],\"dsr\":[12,23,null,null]}' data-mw='{\"parts\":[{\"template\":{\"target\":{\"wt\":\"echo\",\"href\":\"./Template:Echo\"},\"params\":{\"1\":{\"wt\":\"#a\"}},\"i\":0}}]}'>#a</span>\n<span about=\"#mwt3\" typeof=\"mw:Transclusion\" data-parsoid='{\"pi\":[[{\"k\":\"1\"}]],\"dsr\":[24,35,null,null]}' data-mw='{\"parts\":[{\"template\":{\"target\":{\"wt\":\"echo\",\"href\":\"./Template:Echo\"},\"params\":{\"1\":{\"wt\":\":a\"}},\"i\":0}}]}'>:a</span></p>"); add("wt2html", "Empty table rows go away", "<table data-parsoid='{\"dsr\":[0,39,2,2]}'>\n<tbody data-parsoid='{\"dsr\":[3,37,0,0]}'><tr data-parsoid='{\"autoInsertedEnd\":true,\"autoInsertedStart\":true,\"dsr\":[3,18,0,0]}'><td data-parsoid='{\"autoInsertedEnd\":true,\"dsr\":[3,10,1,0]}'> Hello</td>\n<td data-parsoid='{\"autoInsertedEnd\":true,\"dsr\":[11,18,1,0]}'> there</td></tr>\n<tr class=\"foo\" data-parsoid='{\"startTagSrc\":\"|-\",\"autoInsertedEnd\":true,\"dsr\":[19,33,14,0]}'></tr>\n<tr data-parsoid='{\"startTagSrc\":\"|-\",\"autoInsertedEnd\":true,\"dsr\":[34,36,2,0]}'></tr>\n</tbody></table>"); -- To view, visit https://gerrit.wikimedia.org/r/334756 To unsubscribe, visit https://gerrit.wikimedia.org/r/settings Gerrit-MessageType: merged Gerrit-Change-Id: I4eb22cbb05ef5d1a97f6224833d18da6047c41fe Gerrit-PatchSet: 1 Gerrit-Project: mediawiki/services/parsoid Gerrit-Branch: master Gerrit-Owner: Subramanya Sastry <ssas...@wikimedia.org> Gerrit-Reviewer: Arlolra <abrea...@wikimedia.org> Gerrit-Reviewer: Subramanya Sastry <ssas...@wikimedia.org> Gerrit-Reviewer: jenkins-bot <> _______________________________________________ MediaWiki-commits mailing list MediaWiki-commits@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits