Wikibase: Show 'unknown value' / 'no value' instead of 'somevalue' / 'no value' [#529]

pull/620/head
gnosygnu 5 years ago
parent d61fd33a87
commit 8f029f479b

@ -252,8 +252,10 @@ public static final int
, Id_xowa_wikidata_links_special = 231
, Id_xowa_window_allpages_box_tooltip = 232
, Id_xowa_window_allpages_btn_tooltip = 233
, Id_wikibase_snakview_variations_novalue_label = 234
, Id_wikibase_snakview_variations_somevalue_label = 235
;
public static final int Id__max = 234;
public static final int Id__max = 236;
public static Xol_msg_itm new_(int id, String key, String val) {return new_(id, Bry_.new_u8(key), Bry_.new_u8(val));}
public static Xol_msg_itm new_(int id, byte[] key, byte[] val) {
Xol_msg_itm rv = new Xol_msg_itm(id, key);
@ -465,8 +467,8 @@ case Xol_msg_itm_.Id_symbol_ellipsis: return new_(Xol_msg_itm_.Id_symbol_ellipsi
case Xol_msg_itm_.Id_symbol_percent: return new_(Xol_msg_itm_.Id_symbol_percent, "percent", "~{0}%");
case Xol_msg_itm_.Id_symbol_parentheses: return new_(Xol_msg_itm_.Id_symbol_parentheses, "parentheses", "(~{0})");
case Xol_msg_itm_.Id_duration_ago: return new_(Xol_msg_itm_.Id_duration_ago, "ago", "~{0} ago");
case Xol_msg_itm_.Id_xowa_wikidata_novalue: return new_(Xol_msg_itm_.Id_xowa_wikidata_novalue, "xowa-wikidata-novalue", "—");
case Xol_msg_itm_.Id_xowa_wikidata_somevalue: return new_(Xol_msg_itm_.Id_xowa_wikidata_somevalue, "xowa-wikidata-somevalue", "?");
case Xol_msg_itm_.Id_xowa_wikidata_novalue: return new_(Xol_msg_itm_.Id_xowa_wikidata_novalue, "wikibase-snakview-variations-novalue-label", "no value");
case Xol_msg_itm_.Id_xowa_wikidata_somevalue: return new_(Xol_msg_itm_.Id_xowa_wikidata_somevalue, "wikibase-snakview-variations-somevalue-label", "unknown value");
case Xol_msg_itm_.Id_xowa_wikidata_links_wiki: return new_(Xol_msg_itm_.Id_xowa_wikidata_links_wiki, "xowa-wikidata-links-wiki", "Links (Wikipedia)");
case Xol_msg_itm_.Id_xowa_wikidata_links_wiktionary: return new_(Xol_msg_itm_.Id_xowa_wikidata_links_wiktionary, "xowa-wikidata-links-wiktionary", "Links (Wiktionary)");
case Xol_msg_itm_.Id_xowa_wikidata_links_wikisource: return new_(Xol_msg_itm_.Id_xowa_wikidata_links_wikisource, "xowa-wikidata-links-wikisource", "Links (Wikisource)");
@ -512,6 +514,8 @@ case Xol_msg_itm_.Id_xowa_wikidata_deprecated: return new_(Xol_msg_itm_.Id_xowa_
case Xol_msg_itm_.Id_xowa_wikidata_normal: return new_(Xol_msg_itm_.Id_xowa_wikidata_normal, "xowa-wikidata-normal", "normal");
case Xol_msg_itm_.Id_xowa_wikidata_preferred: return new_(Xol_msg_itm_.Id_xowa_wikidata_preferred, "xowa-wikidata-preferred", "preferred");
case Xol_msg_itm_.Id_xowa_wikidata_links_special: return new_(Xol_msg_itm_.Id_xowa_wikidata_links_special, "xowa-wikidata-links-special", "Links (special wikis)");
case Xol_msg_itm_.Id_wikibase_snakview_variations_novalue_label: return new_(Xol_msg_itm_.Id_wikibase_snakview_variations_novalue_label, "wikibase-snakview-variations-novalue-label", "no value");
case Xol_msg_itm_.Id_wikibase_snakview_variations_somevalue_label: return new_(Xol_msg_itm_.Id_wikibase_snakview_variations_somevalue_label, "wikibase-snakview-variations-somevalue-label", "unknown value");
default: throw Err_.new_unhandled(id);
}
}

@ -93,7 +93,7 @@ public class Scrib_lib_wikibase_entity implements Scrib_lib { // REF.MW:https://
// print it
Bry_bfr bfr = wiki.Utl__bfr_mkr().Get_b512();
wdata_mgr.Resolve_to_bfr(bfr, prop_grp, lang, Bool_.N);
wdata_mgr.Resolve_to_bfr(bfr, core.Wiki(), prop_grp, lang, Bool_.N);
return rslt.Init_obj(bfr.To_bry_and_rls());
}
public boolean AddStatementUsage(Scrib_proc_args args, Scrib_proc_rslt rslt) {

@ -15,7 +15,7 @@ Apache License: https://github.com/gnosygnu/xowa/blob/master/LICENSE-APACHE2.txt
*/
package gplx.xowa.xtns.wbases; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*;
import gplx.core.primitives.*;
import gplx.langs.jsons.*;
import gplx.xowa.langs.msgs.*; import gplx.langs.jsons.*;
import gplx.xowa.wikis.nss.*;
import gplx.xowa.langs.*;
import gplx.xowa.parsers.*;
@ -101,7 +101,7 @@ public class Wdata_wiki_mgr implements Gfo_evt_itm, Gfo_invk {
claim_itm.Welcome(prop_val_visitor);
}
}
public void Resolve_to_bfr(Bry_bfr bfr, Wbase_claim_grp prop_grp, byte[] lang_key, boolean mode_is_statements) {
public void Resolve_to_bfr(Bry_bfr bfr, Xowe_wiki wiki, Wbase_claim_grp prop_grp, byte[] lang_key, boolean mode_is_statements) {
synchronized (thread_lock) { // LOCK:must synchronized b/c prop_val_visitor has member bfr which can get overwritten; DATE:2016-07-06
if (hwtr_mgr == null) Hwtr_mgr_assert();
int len = prop_grp.Len();
@ -113,10 +113,14 @@ public class Wdata_wiki_mgr implements Gfo_evt_itm, Gfo_invk {
selected = prop;
break;
}
}
switch (selected.Snak_tid()) {
case Wbase_claim_value_type_.Tid__novalue : bfr.Add(Wbase_claim_value_type_.Itm__novalue.Key_bry()); break;
case Wbase_claim_value_type_.Tid__somevalue : bfr.Add(Wbase_claim_value_type_.Itm__somevalue.Key_bry()); break;
}
switch (selected.Snak_tid()) { // SEE:NOTE:novalue/somevalue
case Wbase_claim_value_type_.Tid__novalue:
bfr.Add(wiki.Msg_mgr().Val_by_id(Xol_msg_itm_.Id_wikibase_snakview_variations_novalue_label));
break;
case Wbase_claim_value_type_.Tid__somevalue:
bfr.Add(wiki.Msg_mgr().Val_by_id(Xol_msg_itm_.Id_wikibase_snakview_variations_somevalue_label));
break;
default: {
prop_val_visitor.Init(bfr, hwtr_mgr.Msgs(), lang_key, mode_is_statements);
selected.Welcome(prop_val_visitor);
@ -204,3 +208,10 @@ public class Wdata_wiki_mgr implements Gfo_evt_itm, Gfo_invk {
ctx.Wiki().Appe().Usr_dlg().Log_many("", "", "Unknown id in wikidata; type=~{0} id=~{1} page=~{2}", type, id, ctx.Page().Url_bry_safe());
}
}
/*
NOTE:novalue/somevalue
Rough approximation of wikibase logic which is more involved with its different SnakFormatters
* https://github.com/wikimedia/mediawiki-extensions-Wikibase/blob/master/lib/includes/Formatters/OutputFormatSnakFormatterFactory.php: formatter factory; note lines for somevalue / novalue
* https://github.com/wikimedia/mediawiki-extensions-Wikibase/blob/master/lib/includes/Formatters/MessageSnakFormatter.php: formatter definition
* https://github.com/wikimedia/mediawiki-extensions-Wikibase/blob/master/repo/i18n/en.json: message definitions
*/

@ -205,7 +205,7 @@ public class Wdata_hwtr_msgs {
, "comma-separator", "word-separator", "xowa-wikidata-time-spr"
, "xowa-wikidata-plus", "xowa-wikidata-minus", "xowa-wikidata-plusminus"
, "parentheses"
, "xowa-wikidata-novalue", "xowa-wikidata-somevalue"
, "wikibase-snakview-variations-novalue-label", "wikibase-snakview-variations-somevalue-label"
, "jan", "feb", "mar", "apr", "may", "jun", "jul", "aug", "sep", "oct", "nov", "dec"
, "xowa-wikidata-year", "xowa-wikidata-decade", "xowa-wikidata-century", "xowa-wikidata-millenium", "xowa-wikidata-years1e4", "xowa-wikidata-years1e5", "xowa-wikidata-years1e6", "xowa-wikidata-years1e7", "xowa-wikidata-years1e8", "xowa-wikidata-years1e9"
, "ago", "xowa-wikidata-bc", "xowa-wikidata-inTime"

@ -52,7 +52,7 @@ public class Wbase_statement_mgr_ {
// get val based on pid and doc; EX: {{#property:p123|of=Earth}} -> doc=Q2; pid=123 -> "value of p123 in Q2"
Wbase_claim_grp claim_grp = doc.Get_claim_grp_or_null(pid_int);
if (claim_grp == null) return;// NOTE: some props may not exist; EX: "Some_known_page" has a qid of 123 but does not have pid 345 required by {{#property:P345|q=123}}
wdata_mgr.Resolve_to_bfr(bfr, claim_grp, wiki.Wdata_wiki_lang(), mode_is_statements); // NOTE: was ctx.Page().Lang().Key_bry(), but fails in simplewiki; DATE:2013-12-02
wdata_mgr.Resolve_to_bfr(bfr, ctx.Wiki(), claim_grp, wiki.Wdata_wiki_lang(), mode_is_statements); // NOTE: was ctx.Page().Lang().Key_bry(), but fails in simplewiki; DATE:2013-12-02
if (property_wkr != null) property_wkr.Eval_end(ctx.Page(), pid_ttl, log_time_bgn);
}
public static int Parse_pid(Gfo_number_parser num_parser, byte[] bry) {

@ -143,7 +143,7 @@ public class Wdata_pf_property__basic__tst {
.Add_sitelink("enwiki", "Test_page")
);
fxt.Test_parse("{{#property:p1}}", "novalue");
fxt.Test_parse("{{#property:p1}}", "no value");
}
@Test public void Somevalue() {
fxt.Init__docs__add(fxt.Wdoc("Q1")
@ -151,7 +151,7 @@ public class Wdata_pf_property__basic__tst {
.Add_sitelink("enwiki", "Test_page")
);
fxt.Test_parse("{{#property:p1}}", "somevalue");
fxt.Test_parse("{{#property:p1}}", "unknown value");
}
@Test public void Multiple() {
fxt.Init__docs__add(fxt.Wdoc("Q1")

Loading…
Cancel
Save