Wikibase: Use 2nd argument to GetSiteLinkPageName for wiki name [#665]

staging
gnosygnu 4 years ago
parent bae9ba9e7a
commit 3355d03c44

@ -382,12 +382,20 @@ public function formatValues( $snaksSerialization ) {
byte[] label = core.Wiki().Xtn_mgr().Xtn_wikibase().Lua_bindings().getLabelByLanguage_or_null(prefixedEntityId, languageCode);
return label == null ? rslt.Init_str_empty() : rslt.Init_obj(label);
}
public boolean GetSiteLinkPageName(Scrib_proc_args args, Scrib_proc_rslt rslt) {
public boolean GetSiteLinkPageName(Scrib_proc_args args, Scrib_proc_rslt rslt) {
// get wdoc from args; EX: "q2"
Wdata_doc wdoc = Get_wdoc_or_null(args, core, "GetSiteLinkPageName", true); // NOTE: prop should be of form "P123"; do not add "P"; PAGE:no.w:Anne_Enger; DATE:2015-10-27
if (wdoc == null) return rslt.Init_ary_empty();
Xow_domain_itm domain_itm = core.Wiki().Domain_itm();
Wdata_sitelink_itm itm = wdoc.Get_slink_itm_or_null(domain_itm.Abrv_wm());
// get wiki from args (EX: "enwiki"), or default to current wiki; ISSUE#:665; PAGE:commons.wikimedia.org/wiki/Category:Paddy_Ashdown; DATE:2020-02-19
byte[] wiki_bry = args.Cast_bry_or_null(1);
if (wiki_bry == null) {
Xow_domain_itm domain_itm = core.Wiki().Domain_itm();
wiki_bry = domain_itm.Abrv_wm();
}
// get sitelink for wiki from wdoc
Wdata_sitelink_itm itm = wdoc.Get_slink_itm_or_null(wiki_bry);
return itm == null ? rslt.Init_ary_empty() : rslt.Init_many_objs(itm.Name(), itm.Lang());
}
public boolean GetDescription(Scrib_proc_args args, Scrib_proc_rslt rslt) {

@ -201,6 +201,18 @@ public class Basic__tst {
@Test public void GetEntityModuleName() {
fxt.Test_scrib_proc_obj(lib, Scrib_lib_wikibase.Invk_getEntityModuleName, Object_.Ary("Q123"), "mw.wikibase.entity");
}
@Test public void GetSiteLinkPageName() {
wdata_fxt.Init__docs__add(wdata_fxt.Wdoc_bldr("q2").Add_sitelink("enwiki", "Test_page").Xto_wdoc());
fxt.Test_scrib_proc_str(lib, Scrib_lib_wikibase.Invk_getSiteLinkPageName, Object_.Ary("q2"), "Test_page");
}
@Test public void GetSiteLinkPageName_wiki() {// ISSUE#:665; PAGE:commons.wikimedia.org/wiki/Category:Paddy_Ashdown; DATE:2020-02-19
wdata_fxt.Init_xwikis_add("frwiki");
wdata_fxt.Init__docs__add(wdata_fxt.Wdoc_bldr("q2")
.Add_sitelink("enwiki", "q2_enwiki")
.Add_sitelink("frwiki", "q2_frwiki")
.Xto_wdoc());
fxt.Test_scrib_proc_str(lib, Scrib_lib_wikibase.Invk_getSiteLinkPageName, Object_.Ary("q2", "frwiki"), "q2_frwiki"); // fails if q2_enwiki
}
}
class Wbase_snak_utl_ {
public static Keyval[] Get_snaks_ary(Wdata_wiki_mgr_fxt wdata_fxt, Wbase_claim_base... ary) {

Loading…
Cancel
Save