1
0
mirror of https://github.com/gnosygnu/xowa.git synced 2024-09-28 22:40:50 +00:00

Wikibase: Do not output quantity.unit if it is not a wikidata url

This commit is contained in:
gnosygnu 2016-11-08 11:00:02 -05:00
parent 21e90cd479
commit 7e5af96548
3 changed files with 16 additions and 17 deletions

View File

@ -102,8 +102,8 @@ public class Scrib_lib_wikibase_tst {
fxt.Test__proc__kvps__flat(lib, Scrib_lib_wikibase.Invk_renderSnak, args, "test_str");
}
@Test public void RenderSnak__quantity() {
Keyval[] args = Wbase_snak_utl_.Get_snak(wdata_fxt, wdata_fxt.Make_claim_quantity(3, "123", "units", "125", "121"));
fxt.Test__proc__kvps__flat(lib, Scrib_lib_wikibase.Invk_renderSnak, args, "123±2 units");
Keyval[] args = Wbase_snak_utl_.Get_snak(wdata_fxt, wdata_fxt.Make_claim_quantity(3, "123", "1", "125", "121")); // NOTE: entity-less units output "1"; EX:wd:Q493409 DATE:2016-11-08
fxt.Test__proc__kvps__flat(lib, Scrib_lib_wikibase.Invk_renderSnak, args, "123±2");
}
@Test public void RenderSnak__time() {
Keyval[] args = Wbase_snak_utl_.Get_snak(wdata_fxt, wdata_fxt.Make_claim_time(3, "2012-01-02 03:04:05"));

View File

@ -57,8 +57,8 @@ public class Wdata_prop_val_visitor implements Wbase_claim_visitor {
}
public void Visit_quantity(Wbase_claim_quantity itm) {Write_quantity(bfr, wdata_mgr, lang, itm.Amount(), itm.Lbound(), itm.Ubound(), itm.Unit());}
public static void Write_quantity(Bry_bfr bfr, Wdata_wiki_mgr wdata_mgr, Xol_lang_itm lang, byte[] val_bry, byte[] lo_bry, byte[] hi_bry, byte[] unit) {
// get val, lo, hi
Decimal_adp val = Decimal_adp_.parse(String_.new_u8(Normalize_for_decimal(val_bry))); // NOTE: must cast to long for large numbers; EX:{{#property:P1082}} PAGE:en.w:Earth; DATE:2015-08-02
// get val, lo, hi; NOTE: must handle large numbers; EX:{{#property:P1082}} PAGE:en.w:Earth; DATE:2015-08-02; NOTE: must handle decimals; PAGE:en.w:Malinao,_Aklan; DATE:2016-11-08
Decimal_adp val = Decimal_adp_.parse(String_.new_u8(Normalize_for_decimal(val_bry)));
Decimal_adp lo = Decimal_adp_.parse(String_.new_u8(Normalize_for_decimal(lo_bry)));
Decimal_adp hi = Decimal_adp_.parse(String_.new_u8(Normalize_for_decimal(hi_bry)));
@ -81,11 +81,10 @@ public class Wdata_prop_val_visitor implements Wbase_claim_visitor {
}
// output unit
bfr.Add_byte_space();
int unit_qid_bgn = Bry_find_.Find_fwd(unit, Wikidata_url);
if (unit_qid_bgn == Bry_find_.Not_found) // entity missing; just output unit literally
bfr.Add(unit); // unit; EX: "meter"
if (unit_qid_bgn == Bry_find_.Not_found) {} // entity missing; just output unit literally; EX:"unit":"1"; PAGE:en.w:Malinao,_Aklan DATE:2016-11-08
else { // entity exists; EX:"http://www.wikidata.org/entity/Q11573" (meter)
bfr.Add_byte_space();
byte[] xid = Bry_.Mid(unit, Wikidata_url.length);
Wdata_doc entity_doc = wdata_mgr.Doc_mgr.Get_by_xid_or_null(xid);
bfr.Add(entity_doc.Label_list__get_or_fallback(lang));

View File

@ -55,23 +55,23 @@ public class Wdata_pf_property__basic__tst {
}
@Test public void Quantity__plus_minus__y() {
fxt.Init_links_add("enwiki", "Test_page", "q1");
fxt.Init__docs__add(fxt.doc_("q1", fxt.Make_claim_quantity(1, "+1234", "meter", "+1236", "+1232")));
fxt.Test_parse("{{#property:p1}}", "1,234±2 meter");
fxt.Init__docs__add(fxt.doc_("q1", fxt.Make_claim_quantity(1, "+1234", "1", "+1236", "+1232")));
fxt.Test_parse("{{#property:p1}}", "1,234±2");
}
@Test public void Quantity__plus_minus__n() { // PURPOSE:do not output ± if lbound == val == ubound; PAGE:en.w:Tintinan DATE:2015-08-02
fxt.Init_links_add("enwiki", "Test_page", "q1");
fxt.Init__docs__add(fxt.doc_("q1", fxt.Make_claim_quantity(1, "+1234", "meter", "+1234", "+1234")));
fxt.Test_parse("{{#property:p1}}", "1,234 meter");
fxt.Init__docs__add(fxt.doc_("q1", fxt.Make_claim_quantity(1, "+1234", "1", "+1234", "+1234")));
fxt.Test_parse("{{#property:p1}}", "1,234");
}
@Test public void Quantity__range() { // PURPOSE:do not output ± if lbound == val == ubound; PAGE:en.w:Tintinan DATE:2015-08-02
fxt.Init_links_add("enwiki", "Test_page", "q1");
fxt.Init__docs__add(fxt.doc_("q1", fxt.Make_claim_quantity(1, "+1234", "meter", "+1236", "+1233")));
fxt.Test_parse("{{#property:p1}}", "1,233-1,236 meter");
fxt.Init__docs__add(fxt.doc_("q1", fxt.Make_claim_quantity(1, "+1234", "1", "+1236", "+1233")));
fxt.Test_parse("{{#property:p1}}", "1,233-1,236");
}
@Test public void Quantity__long() { // PURPOSE: must cast to long for large numbers; EX:{{#property:P1082}} PAGE:en.w:Earth; DATE:2015-08-02
fxt.Init_links_add("enwiki", "Test_page", "q1");
fxt.Init__docs__add(fxt.doc_("q1", fxt.Make_claim_quantity(1, "+4321000000", "meter", "4321000000", "4321000000")));
fxt.Test_parse("{{#property:p1}}", "4,321,000,000 meter");
fxt.Init__docs__add(fxt.doc_("q1", fxt.Make_claim_quantity(1, "+4321000000", "1", "4321000000", "4321000000")));
fxt.Test_parse("{{#property:p1}}", "4,321,000,000");
}
@Test public void Quantity__unit__entity() {// PURPOSE: get entity name; EX:{{#invoke:Wikidata|getUnits|P2386|FETCH_WIKIDATA}} PAGE:en.w:Arecibo_Observatory; DATE:2016-10-11
fxt.Init_links_add("enwiki", "Test_page", "q1");
@ -83,8 +83,8 @@ public class Wdata_pf_property__basic__tst {
}
@Test public void Quantity__decimal() {
fxt.Init_links_add("enwiki", "Test_page", "q1");
fxt.Init__docs__add(fxt.doc_("q1", fxt.Make_claim_quantity(1, "+1234.50", "meter", "+1236.75", "+1232.25")));
fxt.Test_parse("{{#property:p1}}", "1,234.5±2.25 meter");
fxt.Init__docs__add(fxt.doc_("q1", fxt.Make_claim_quantity(1, "+1234.50", "1", "+1236.75", "+1232.25")));
fxt.Test_parse("{{#property:p1}}", "1,234.5±2.25");
}
@Test public void Monolingualtext() {
fxt.Init_links_add("enwiki", "Test_page", "q1");