mirror of
https://github.com/gnosygnu/xowa.git
synced 2024-10-27 20:34:16 +00:00
Wikibase: Consolidate quantity output formatting in Wdata_prop_val_visitor and Wdata_visitor__html_wtr
This commit is contained in:
parent
130aacc4d7
commit
0f8d0257c9
@ -66,11 +66,12 @@ public class Wdata_prop_val_visitor implements Wbase_claim_visitor {
|
||||
if (lo.Eq(hi) && hi.Eq(val))// lo, hi, val are same; print val only;
|
||||
bfr.Add(lang.Num_mgr().Format_num_by_decimal(val)); // amount; EX: 1,234
|
||||
else {
|
||||
Wdata_hwtr_msgs msgs = wdata_mgr.Hwtr_mgr().Msgs();
|
||||
Decimal_adp lo_dif = val.Subtract(lo);
|
||||
Decimal_adp hi_dif = hi.Subtract(val);
|
||||
if (lo_dif.Eq(hi_dif)) { // lo_dif, hi_dif are same; print val±dif
|
||||
bfr.Add(lang.Num_mgr().Format_num_by_decimal(val)); // amount; EX: 1,234
|
||||
bfr.Add(Bry__quantity_margin_of_error); // symbol: EX: ±
|
||||
bfr.Add(msgs.Sym_plusminus()); // symbol: EX: ±
|
||||
bfr.Add(lang.Num_mgr().Format_num_by_decimal(lo_dif)); // amount; EX: 4
|
||||
}
|
||||
else { // lo_dif, hi_dif are diff; print lo - hi; this may not be what MW does
|
||||
@ -118,8 +119,8 @@ public class Wdata_prop_val_visitor implements Wbase_claim_visitor {
|
||||
}
|
||||
return bfr == null ? bry : bfr.To_bry_and_clear();
|
||||
}
|
||||
public void Visit_globecoordinate(Wbase_claim_globecoordinate itm) {Write_geo(Bool_.N, bfr, wdata_mgr.Hwtr_mgr().Lbl_mgr(), itm.Lat(), itm.Lng(), itm.Alt(), itm.Prc(), itm.Glb());}
|
||||
public static void Write_geo(boolean wikidata_page, Bry_bfr bfr, Wdata_lbl_mgr lbl_mgr, byte[] lat, byte[] lng, byte[] alt, byte[] prc, byte[] glb) {
|
||||
public void Visit_globecoordinate(Wbase_claim_globecoordinate itm) {Write_geo(Bool_.N, bfr, wdata_mgr.Hwtr_mgr().Lbl_mgr(), msgs, itm.Lat(), itm.Lng(), itm.Alt(), itm.Prc(), itm.Glb());}
|
||||
public static void Write_geo(boolean wikidata_page, Bry_bfr bfr, Wdata_lbl_mgr lbl_mgr, Wdata_hwtr_msgs msgs, byte[] lat, byte[] lng, byte[] alt, byte[] prc, byte[] glb) {
|
||||
// get precision
|
||||
Decimal_adp precision_frac = Bry_.Eq(prc, Object_.Bry__null) ? Decimal_adp_.One : Decimal_adp_.parse(String_.new_a7(prc));
|
||||
int precision_int = Math_.Log10(Decimal_adp_.One.Divide(precision_frac).To_int()); // convert precision to log10 integer; EX: .00027777 -> 3600 -> 3
|
||||
@ -143,5 +144,4 @@ public class Wdata_prop_val_visitor implements Wbase_claim_visitor {
|
||||
|
||||
private static final byte[] Wikidata_url = Bry_.new_a7("http://www.wikidata.org/entity/");
|
||||
public void Visit_system(Wbase_claim_value itm) {}
|
||||
public static final byte[] Bry__quantity_margin_of_error = Bry_.new_u8("±");
|
||||
}
|
||||
|
@ -156,7 +156,7 @@ public class Wdata_prop_val_visitor_ {
|
||||
case Wbase_claim_globecoordinate_.Tid__globe: glb = To_bry_by_str(kv.Val()); break;
|
||||
}
|
||||
}
|
||||
Wdata_prop_val_visitor.Write_geo(Bool_.Y, bfr, wdata_mgr.Hwtr_mgr().Lbl_mgr(), lat, lng, alt, prc, glb);
|
||||
Wdata_prop_val_visitor.Write_geo(Bool_.Y, bfr, wdata_mgr.Hwtr_mgr().Lbl_mgr(), wdata_mgr.Hwtr_mgr().Msgs(), lat, lng, alt, prc, glb);
|
||||
}
|
||||
private static void Write_langtext(Bry_bfr bfr, byte[] page_url, Keyval[] kvs) {
|
||||
byte[] text = null;
|
||||
|
@ -136,7 +136,7 @@ public class Wdata_wiki_mgr implements Gfo_evt_itm, Gfo_invk {
|
||||
Xoapi_toggle_mgr toggle_mgr = app.Api_root().Html().Page().Toggle_mgr();
|
||||
Xoapi_wikibase wikibase_api = app.Api_root().Xtns().Wikibase();
|
||||
hwtr_mgr = new Wdata_hwtr_mgr();
|
||||
hwtr_mgr.Init_by_ctor(wikibase_api, new Wdata_lbl_wkr_wiki(wikibase_api, this), gplx.langs.htmls.encoders.Gfo_url_encoder_.Href, toggle_mgr, app.Usere().Wiki().Xwiki_mgr());
|
||||
hwtr_mgr.Init_by_ctor(wikibase_api, this, new Wdata_lbl_wkr_wiki(wikibase_api, this), gplx.langs.htmls.encoders.Gfo_url_encoder_.Href, toggle_mgr, app.Usere().Wiki().Xwiki_mgr());
|
||||
this.Hwtr_msgs_make();
|
||||
Gfo_evt_mgr_.Sub_same_many(app.Usere(), this, Xoue_user.Evt_lang_changed);
|
||||
}
|
||||
@ -146,7 +146,7 @@ public class Wdata_wiki_mgr implements Gfo_evt_itm, Gfo_invk {
|
||||
Xowe_wiki cur_wiki = this.Wdata_wiki();
|
||||
cur_wiki.Xtn_mgr().Xtn_wikibase().Load_msgs(cur_wiki, new_lang);
|
||||
Wdata_hwtr_msgs hwtr_msgs = Wdata_hwtr_msgs.new_(cur_wiki.Msg_mgr());
|
||||
hwtr_mgr.Init_by_lang(hwtr_msgs);
|
||||
hwtr_mgr.Init_by_lang(new_lang, hwtr_msgs);
|
||||
}
|
||||
public static void Write_json_as_html(Json_parser jdoc_parser, Bry_bfr bfr, byte[] data_raw) {
|
||||
bfr.Add(Xoh_consts.Span_bgn_open).Add(Xoh_consts.Id_atr).Add(Html_json_id).Add(Xoh_consts.__end_quote); // <span id="xowa-wikidata-json">
|
||||
|
@ -40,8 +40,9 @@ public class Wdata_wiki_mgr_fxt {
|
||||
parser_fxt.Reset();
|
||||
}
|
||||
return this;
|
||||
} private Xoae_app app; private Xowe_wiki wiki; private Wdata_wiki_mgr wdata_mgr; private Wdata_doc_bldr wdoc_bldr;
|
||||
} private Xoae_app app; private Xowe_wiki wiki; private Wdata_doc_bldr wdoc_bldr;
|
||||
public Xoae_app App() {return app;}
|
||||
public Wdata_wiki_mgr Wdata_mgr() {return wdata_mgr;} private Wdata_wiki_mgr wdata_mgr;
|
||||
public Xop_fxt Parser_fxt() {return parser_fxt;} private Xop_fxt parser_fxt;
|
||||
public void Init_lang_fallbacks(String... fallbacks) {
|
||||
wiki.Lang().Fallback_bry_(Bry_.new_a7(String_.Concat_with_str(",", fallbacks)));
|
||||
|
@ -17,17 +17,21 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package gplx.xowa.xtns.wbases.hwtrs; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.wbases.*;
|
||||
import gplx.core.brys.fmtrs.*;
|
||||
import gplx.xowa.langs.*;
|
||||
import gplx.xowa.xtns.wbases.core.*; import gplx.xowa.xtns.wbases.claims.*; import gplx.xowa.xtns.wbases.claims.enums.*; import gplx.xowa.xtns.wbases.claims.itms.*;
|
||||
import gplx.xowa.apps.apis.xowa.html.*;
|
||||
class Wdata_fmtr__claim_grp implements gplx.core.brys.Bfr_arg {
|
||||
private Wdata_fmtr__claim_tbl fmtr_tbl = new Wdata_fmtr__claim_tbl(); private boolean is_empty;
|
||||
private Xoapi_toggle_itm toggle_itm;
|
||||
private Wdata_toc_data toc_data;
|
||||
public void Init_by_ctor(Wdata_toc_data toc_data, Xoapi_toggle_mgr toggle_mgr, Wdata_lbl_mgr lbl_mgr) {this.toc_data = toc_data; this.toggle_itm = toggle_mgr.Get_or_new("wikidatawiki-claim"); fmtr_tbl.Init_by_ctor(lbl_mgr);}
|
||||
public void Init_by_lang(Wdata_hwtr_msgs msgs) {
|
||||
public void Init_by_ctor(Wdata_wiki_mgr wdata_mgr, Wdata_toc_data toc_data, Xoapi_toggle_mgr toggle_mgr, Wdata_lbl_mgr lbl_mgr) {
|
||||
this.toc_data = toc_data; this.toggle_itm = toggle_mgr.Get_or_new("wikidatawiki-claim");
|
||||
fmtr_tbl.Init_by_ctor(wdata_mgr, lbl_mgr);
|
||||
}
|
||||
public void Init_by_lang(Xol_lang_itm lang, Wdata_hwtr_msgs msgs) {
|
||||
toc_data.Orig_(msgs.Claim_tbl_hdr());
|
||||
toggle_itm.Init_msgs(msgs.Toggle_title_y(), msgs.Toggle_title_n());
|
||||
fmtr_tbl.Init_by_lang(msgs);
|
||||
fmtr_tbl.Init_by_lang(lang, msgs);
|
||||
}
|
||||
public void Init_by_wdoc(byte[] ttl, Ordered_hash list) {
|
||||
int list_count = list.Count();
|
||||
@ -53,9 +57,9 @@ class Wdata_fmtr__claim_grp implements gplx.core.brys.Bfr_arg {
|
||||
class Wdata_fmtr__claim_tbl implements gplx.core.brys.Bfr_arg {
|
||||
private Wdata_fmtr__claim_row fmtr_row = new Wdata_fmtr__claim_row(); private Wdata_lbl_mgr lbl_mgr;
|
||||
private Ordered_hash list; private byte[] ttl;
|
||||
public void Init_by_ctor(Wdata_lbl_mgr lbl_mgr) {this.lbl_mgr = lbl_mgr; fmtr_row.Init_by_ctor(lbl_mgr);}
|
||||
public void Init_by_lang(Wdata_hwtr_msgs msgs) {
|
||||
fmtr_row.Init_by_lang(msgs);
|
||||
public void Init_by_ctor(Wdata_wiki_mgr wdata_mgr, Wdata_lbl_mgr lbl_mgr) {this.lbl_mgr = lbl_mgr; fmtr_row.Init_by_ctor(wdata_mgr, lbl_mgr);}
|
||||
public void Init_by_lang(Xol_lang_itm lang, Wdata_hwtr_msgs msgs) {
|
||||
fmtr_row.Init_by_lang(lang, msgs);
|
||||
}
|
||||
public void Init_by_wdoc(byte[] ttl, Ordered_hash list) {
|
||||
this.list = list;
|
||||
@ -88,24 +92,27 @@ class Wdata_fmtr__claim_row implements gplx.core.brys.Bfr_arg {
|
||||
private Wdata_visitor__html_wtr claim_html_wtr = new Wdata_visitor__html_wtr();
|
||||
private Wdata_fmtr__qual_tbl fmtr_qual = new Wdata_fmtr__qual_tbl();
|
||||
private Wdata_fmtr__ref_tbl fmtr_ref = new Wdata_fmtr__ref_tbl();
|
||||
private Wdata_lbl_mgr lbl_mgr; private Wdata_hwtr_msgs msgs;
|
||||
private Wdata_wiki_mgr wdata_mgr; private Wdata_lbl_mgr lbl_mgr; private Wdata_hwtr_msgs msgs;
|
||||
private Xol_lang_itm lang;
|
||||
private Wbase_claim_grp claim_grp; private Bry_bfr tmp_bfr = Bry_bfr_.Reset(255);
|
||||
public void Init_by_ctor(Wdata_lbl_mgr lbl_mgr) {
|
||||
public void Init_by_ctor(Wdata_wiki_mgr wdata_mgr, Wdata_lbl_mgr lbl_mgr) {
|
||||
this.lbl_mgr = lbl_mgr;
|
||||
fmtr_qual.Init_by_ctor(lbl_mgr);
|
||||
fmtr_ref.Init_by_ctor(lbl_mgr);
|
||||
this.wdata_mgr = wdata_mgr;
|
||||
fmtr_qual.Init_by_ctor(wdata_mgr, lbl_mgr);
|
||||
fmtr_ref.Init_by_ctor(wdata_mgr, lbl_mgr);
|
||||
}
|
||||
public void Init_by_lang(Wdata_hwtr_msgs msgs) {
|
||||
public void Init_by_lang(Xol_lang_itm lang, Wdata_hwtr_msgs msgs) {
|
||||
this.lang = lang;
|
||||
this.msgs = msgs;
|
||||
fmtr_qual.Init_by_lang(msgs);
|
||||
fmtr_ref.Init_by_lang(msgs);
|
||||
fmtr_qual.Init_by_lang(lang, msgs);
|
||||
fmtr_ref.Init_by_lang(lang, msgs);
|
||||
}
|
||||
public void Init_by_grp(byte[] ttl, Wbase_claim_grp claim_grp) {
|
||||
this.ttl = ttl; this.claim_grp = claim_grp;
|
||||
}
|
||||
public void Bfr_arg__add(Bry_bfr bfr) {
|
||||
int len = claim_grp.Len();
|
||||
claim_html_wtr.Init(ttl, tmp_bfr, msgs, lbl_mgr);
|
||||
claim_html_wtr.Init(tmp_bfr, wdata_mgr, msgs, lbl_mgr, lang, ttl);
|
||||
for (int i = 0; i < len; ++i) {
|
||||
Wbase_claim_base itm = claim_grp.Get_at(i);
|
||||
itm.Welcome(claim_html_wtr);
|
||||
@ -147,9 +154,9 @@ class Wdata_fmtr__claim_row implements gplx.core.brys.Bfr_arg {
|
||||
}
|
||||
class Wdata_fmtr__qual_tbl implements gplx.core.brys.Bfr_arg {
|
||||
private Wdata_fmtr__qual_row fmtr_row = new Wdata_fmtr__qual_row(); private Wbase_claim_base claim;
|
||||
public void Init_by_ctor(Wdata_lbl_mgr lbl_mgr) {fmtr_row.Init_by_ctor(lbl_mgr);}
|
||||
public void Init_by_lang(Wdata_hwtr_msgs msgs) {
|
||||
fmtr_row.Init_by_lang(msgs);
|
||||
public void Init_by_ctor(Wdata_wiki_mgr wdata_mgr, Wdata_lbl_mgr lbl_mgr) {fmtr_row.Init_by_ctor(wdata_mgr, lbl_mgr);}
|
||||
public void Init_by_lang(Xol_lang_itm lang, Wdata_hwtr_msgs msgs) {
|
||||
fmtr_row.Init_by_lang(lang, msgs);
|
||||
}
|
||||
public void Init_by_claim(byte[] ttl, Wbase_claim_base claim) {
|
||||
this.claim = claim;
|
||||
@ -169,14 +176,15 @@ class Wdata_fmtr__qual_tbl implements gplx.core.brys.Bfr_arg {
|
||||
}
|
||||
class Wdata_fmtr__qual_row implements gplx.core.brys.Bfr_arg {
|
||||
private byte[] ttl; private Wdata_visitor__html_wtr claim_html_wtr = new Wdata_visitor__html_wtr();
|
||||
private Wdata_lbl_mgr lbl_mgr; private Wdata_hwtr_msgs msgs;
|
||||
private Wdata_wiki_mgr wdata_mgr; private Wdata_lbl_mgr lbl_mgr; private Wdata_hwtr_msgs msgs;
|
||||
private Xol_lang_itm lang;
|
||||
private Wbase_claim_grp_list quals; private Bry_bfr tmp_bfr = Bry_bfr_.Reset(255);
|
||||
public void Init_by_ctor(Wdata_lbl_mgr lbl_mgr) {this.lbl_mgr = lbl_mgr;}
|
||||
public void Init_by_lang(Wdata_hwtr_msgs msgs) {this.msgs = msgs;}
|
||||
public void Init_by_ctor(Wdata_wiki_mgr wdata_mgr, Wdata_lbl_mgr lbl_mgr) {this.wdata_mgr = wdata_mgr; this.lbl_mgr = lbl_mgr;}
|
||||
public void Init_by_lang(Xol_lang_itm lang, Wdata_hwtr_msgs msgs) {this.lang = lang; this.msgs = msgs;}
|
||||
public void Init_by_grp(byte[] ttl, Wbase_claim_grp_list quals) {this.ttl = ttl; this.quals = quals;}
|
||||
public void Bfr_arg__add(Bry_bfr bfr) {
|
||||
int len = quals.Len();
|
||||
claim_html_wtr.Init(ttl, tmp_bfr, msgs, lbl_mgr);
|
||||
claim_html_wtr.Init(tmp_bfr, wdata_mgr, msgs, lbl_mgr, lang, ttl);
|
||||
for (int i = 0; i < len; ++i) {
|
||||
Wbase_claim_grp grp = quals.Get_at(i);
|
||||
int grp_len = grp.Len();
|
||||
@ -211,9 +219,9 @@ class Wdata_fmtr__qual_row implements gplx.core.brys.Bfr_arg {
|
||||
}
|
||||
class Wdata_fmtr__ref_tbl implements gplx.core.brys.Bfr_arg {
|
||||
private Wdata_fmtr__ref_row fmtr_row = new Wdata_fmtr__ref_row(); private Wbase_claim_base claim;
|
||||
public void Init_by_ctor(Wdata_lbl_mgr lbl_mgr) {fmtr_row.Init_by_ctor(lbl_mgr);}
|
||||
public void Init_by_lang(Wdata_hwtr_msgs msgs) {
|
||||
fmtr_row.Init_by_lang(msgs);
|
||||
public void Init_by_ctor(Wdata_wiki_mgr wdata_mgr, Wdata_lbl_mgr lbl_mgr) {fmtr_row.Init_by_ctor(wdata_mgr, lbl_mgr);}
|
||||
public void Init_by_lang(Xol_lang_itm lang, Wdata_hwtr_msgs msgs) {
|
||||
fmtr_row.Init_by_lang(lang, msgs);
|
||||
}
|
||||
public void Init_by_claim(byte[] ttl, Wbase_claim_base claim) {
|
||||
this.claim = claim;
|
||||
@ -243,15 +251,16 @@ class Wdata_fmtr__ref_tbl implements gplx.core.brys.Bfr_arg {
|
||||
}
|
||||
class Wdata_fmtr__ref_row implements gplx.core.brys.Bfr_arg {
|
||||
private byte[] ttl; private Wdata_visitor__html_wtr claim_html_wtr = new Wdata_visitor__html_wtr();
|
||||
private Wdata_lbl_mgr lbl_mgr; private Wdata_hwtr_msgs msgs;
|
||||
private Wdata_wiki_mgr wdata_mgr; private Wdata_lbl_mgr lbl_mgr; private Wdata_hwtr_msgs msgs;
|
||||
private Xol_lang_itm lang;
|
||||
private Bry_bfr tmp_bfr = Bry_bfr_.Reset(255);
|
||||
private Wbase_references_grp[] ref_grps;
|
||||
public void Init_by_ctor(Wdata_lbl_mgr lbl_mgr) {this.lbl_mgr = lbl_mgr;}
|
||||
public void Init_by_lang(Wdata_hwtr_msgs msgs) {this.msgs = msgs;}
|
||||
public void Init_by_ctor(Wdata_wiki_mgr wdata_mgr, Wdata_lbl_mgr lbl_mgr) {this.wdata_mgr = wdata_mgr; this.lbl_mgr = lbl_mgr;}
|
||||
public void Init_by_lang(Xol_lang_itm lang, Wdata_hwtr_msgs msgs) {this.lang = lang; this.msgs = msgs;}
|
||||
public void Init_by_grp(byte[] ttl, Wbase_references_grp[] ref_grps) {this.ttl = ttl; this.ref_grps = ref_grps;}
|
||||
public void Bfr_arg__add(Bry_bfr bfr) {
|
||||
int len = ref_grps.length;
|
||||
claim_html_wtr.Init(ttl, tmp_bfr, msgs, lbl_mgr);
|
||||
claim_html_wtr.Init(tmp_bfr, wdata_mgr, msgs, lbl_mgr, lang, ttl);
|
||||
for (int i = 0; i < len; ++i) {
|
||||
Wbase_references_grp grp_itm = ref_grps[i];
|
||||
Wbase_claim_grp_list grp = grp_itm.References();
|
||||
|
@ -18,6 +18,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
package gplx.xowa.xtns.wbases.hwtrs; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.wbases.*;
|
||||
import gplx.core.brys.fmtrs.*;
|
||||
import gplx.langs.htmls.encoders.*;
|
||||
import gplx.xowa.langs.*;
|
||||
import gplx.xowa.xtns.wbases.core.*; import gplx.xowa.apps.apis.xowa.html.*; import gplx.xowa.wikis.xwikis.*; import gplx.xowa.apps.apis.xowa.xtns.*;
|
||||
public class Wdata_hwtr_mgr {
|
||||
private final Bry_bfr bfr = Bry_bfr_.Reset(Io_mgr.Len_mb);
|
||||
@ -33,10 +34,10 @@ public class Wdata_hwtr_mgr {
|
||||
public Bry_fmtr Fmtr_main() {return fmtr_main;} private final Bry_fmtr fmtr_main = Bry_fmtr.new_("~{oview}~{toc}~{claims}~{links}~{labels}~{descriptions}~{aliases}~{json}", "oview", "toc", "claims", "links", "labels", "descriptions", "aliases", "json");
|
||||
public Wdata_hwtr_msgs Msgs() {return msgs;} private Wdata_hwtr_msgs msgs;
|
||||
public Wdata_lbl_mgr Lbl_mgr() {return lbl_mgr;} private final Wdata_lbl_mgr lbl_mgr = new Wdata_lbl_mgr();
|
||||
public void Init_by_ctor(Xoapi_wikibase wikibase_api, Wdata_lbl_wkr lbl_wkr, Gfo_url_encoder href_encoder, Xoapi_toggle_mgr toggle_mgr, Xow_xwiki_mgr xwiki_mgr) {
|
||||
public void Init_by_ctor(Xoapi_wikibase wikibase_api, Wdata_wiki_mgr wdata_mgr, Wdata_lbl_wkr lbl_wkr, Gfo_url_encoder href_encoder, Xoapi_toggle_mgr toggle_mgr, Xow_xwiki_mgr xwiki_mgr) {
|
||||
lbl_mgr.Wkr_(lbl_wkr);
|
||||
fmtr_oview.Init_by_ctor(wikibase_api, href_encoder);
|
||||
fmtr_claim.Init_by_ctor(new Wdata_toc_data(fmtr_toc, href_encoder), toggle_mgr, lbl_mgr);
|
||||
fmtr_claim.Init_by_ctor(wdata_mgr, new Wdata_toc_data(fmtr_toc, href_encoder), toggle_mgr, lbl_mgr);
|
||||
fmtr_slink.Init_by_ctor(lang_sorter, toggle_mgr, lbl_mgr, href_encoder, fmtr_toc, xwiki_mgr);
|
||||
fmtr_label.Init_by_ctor(new Wdata_toc_data(fmtr_toc, href_encoder), lang_sorter, toggle_mgr, "wikidatawiki-label", new Wdata_fmtr__langtext_row_base());
|
||||
fmtr_descr.Init_by_ctor(new Wdata_toc_data(fmtr_toc, href_encoder), lang_sorter, toggle_mgr, "wikidatawiki-descr", new Wdata_fmtr__langtext_row_base());
|
||||
@ -45,11 +46,11 @@ public class Wdata_hwtr_mgr {
|
||||
lang_sorter.Langs_(wikibase_api.Sort_langs());
|
||||
Gfo_evt_mgr_.Sub_same_many(wikibase_api, lang_sorter, Xoapi_wikibase.Evt_sort_langs_changed);
|
||||
}
|
||||
public void Init_by_lang(Wdata_hwtr_msgs msgs) {
|
||||
public void Init_by_lang(Xol_lang_itm lang, Wdata_hwtr_msgs msgs) {
|
||||
this.msgs = msgs;
|
||||
fmtr_toc.Init_by_lang(msgs);
|
||||
fmtr_oview.Init_by_lang(lang_sorter.Langs()[0], msgs);
|
||||
fmtr_claim.Init_by_lang(msgs);
|
||||
fmtr_claim.Init_by_lang(lang, msgs);
|
||||
fmtr_slink.Init_by_lang(msgs);
|
||||
fmtr_label.Init_by_lang(msgs, msgs.Label_tbl_hdr(), msgs.Label_col_hdr());
|
||||
fmtr_descr.Init_by_lang(msgs, msgs.Descr_tbl_hdr(), msgs.Descr_col_hdr());
|
||||
|
@ -291,8 +291,8 @@ class Wdata_hwtr_mgr_fxt {
|
||||
Xoapi_toggle_mgr toggle_mgr = new Xoapi_toggle_mgr();
|
||||
wdata_fxt.Init();
|
||||
toggle_mgr.Ctor_by_app(wdata_fxt.App()); // must init, else null error
|
||||
doc_hwtr.Init_by_ctor(new Xoapi_wikibase(), new Wdata_lbl_wkr__test(resolved_ttls), Gfo_url_encoder_.Href, toggle_mgr, new Xow_xwiki_mgr(wdata_fxt.Wiki()));
|
||||
doc_hwtr.Init_by_lang(msgs);
|
||||
doc_hwtr.Init_by_ctor(new Xoapi_wikibase(), wdata_fxt.Wdata_mgr(), new Wdata_lbl_wkr__test(resolved_ttls), Gfo_url_encoder_.Href, toggle_mgr, new Xow_xwiki_mgr(wdata_fxt.Wiki()));
|
||||
doc_hwtr.Init_by_lang(wdata_fxt.Wiki().Lang(), msgs);
|
||||
}
|
||||
resolved_ttls.Clear();
|
||||
doc_hwtr.Lbl_mgr().Clear();
|
||||
@ -308,7 +308,7 @@ class Wdata_hwtr_mgr_fxt {
|
||||
public void Test_claim_val(Wbase_claim_base claim, String expd) {
|
||||
doc_hwtr.Init_by_wdoc(wdoc_bldr.Add_claims(claim).Xto_wdoc());
|
||||
Bry_bfr tmp_bfr = Bry_bfr_.New();
|
||||
Wdata_visitor__html_wtr html_wtr = new Wdata_visitor__html_wtr().Init(Bry_.Empty, tmp_bfr, doc_hwtr.Msgs(), doc_hwtr.Lbl_mgr());
|
||||
Wdata_visitor__html_wtr html_wtr = new Wdata_visitor__html_wtr().Init(tmp_bfr, wdata_fxt.Wdata_mgr(), doc_hwtr.Msgs(), doc_hwtr.Lbl_mgr(), wdata_fxt.Wiki().Lang(), Bry_.Empty);
|
||||
claim.Welcome(html_wtr);
|
||||
byte[] actl = tmp_bfr.To_bry_and_clear();
|
||||
Tfds.Eq(expd, String_.new_u8(actl));
|
||||
|
@ -17,12 +17,16 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package gplx.xowa.xtns.wbases.hwtrs; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.wbases.*;
|
||||
import gplx.core.brys.fmtrs.*;
|
||||
import gplx.xowa.langs.*;
|
||||
import gplx.xowa.xtns.wbases.core.*; import gplx.xowa.xtns.wbases.claims.*; import gplx.xowa.xtns.wbases.claims.enums.*; import gplx.xowa.xtns.wbases.claims.itms.*;
|
||||
class Wdata_visitor__html_wtr implements Wbase_claim_visitor {
|
||||
private byte[] ttl; private Bry_bfr tmp_bfr; private Wdata_hwtr_msgs msgs; private Wdata_lbl_mgr lbl_mgr;
|
||||
private Wdata_wiki_mgr wdata_mgr; private Wdata_hwtr_msgs msgs; private Wdata_lbl_mgr lbl_mgr;
|
||||
private Xol_lang_itm lang;
|
||||
private byte[] ttl; private Bry_bfr tmp_bfr;
|
||||
private final Bry_fmtr tmp_time_fmtr = Bry_fmtr.new_(); private final Bry_bfr tmp_time_bfr = Bry_bfr_.New_w_size(32);
|
||||
public Wdata_visitor__html_wtr Init(byte[] ttl, Bry_bfr tmp_bfr, Wdata_hwtr_msgs msgs, Wdata_lbl_mgr lbl_mgr) {
|
||||
this.ttl = ttl; this.tmp_bfr = tmp_bfr; this.msgs = msgs; this.lbl_mgr = lbl_mgr;
|
||||
public Wdata_visitor__html_wtr Init(Bry_bfr tmp_bfr, Wdata_wiki_mgr wdata_mgr, Wdata_hwtr_msgs msgs, Wdata_lbl_mgr lbl_mgr, Xol_lang_itm lang, byte[] ttl) {
|
||||
this.wdata_mgr = wdata_mgr; this.msgs = msgs; this.lbl_mgr = lbl_mgr; this.lang = lang;
|
||||
this.tmp_bfr = tmp_bfr; this.ttl = ttl;
|
||||
return this;
|
||||
}
|
||||
public void Visit_str(Wbase_claim_string itm) {
|
||||
@ -42,37 +46,13 @@ class Wdata_visitor__html_wtr implements Wbase_claim_visitor {
|
||||
tmp_bfr.Add_byte(Byte_ascii.Space).Add_byte(Byte_ascii.Brack_bgn).Add(itm.Lang()).Add_byte(Byte_ascii.Brack_end);
|
||||
}
|
||||
public void Visit_quantity(Wbase_claim_quantity itm) {
|
||||
try {
|
||||
Decimal_adp val = itm.Amount_as_num();
|
||||
Decimal_adp hi = itm.Ubound_as_num();
|
||||
Decimal_adp lo = itm.Lbound_as_num();
|
||||
Decimal_adp hi_diff = hi.Subtract(val);
|
||||
Decimal_adp lo_diff = val.Subtract(lo);
|
||||
float hi_diff_val = (float)hi_diff.To_double();
|
||||
float lo_diff_val = (float)lo_diff.To_double();
|
||||
tmp_bfr.Add(itm.Amount()).Add_byte_space();
|
||||
if (hi_diff.Eq(lo_diff)) { // delta is same in both directions; EX: val=50 hi=60 lo=40 -> hi_diff == lo_diff == 10
|
||||
if (hi_diff_val != 0) // skip if 0
|
||||
tmp_bfr.Add(msgs.Sym_plusminus()).Add_str_a7(hi_diff.To_str());
|
||||
Wdata_prop_val_visitor.Write_quantity(tmp_bfr, wdata_mgr, lang, itm.Amount(), itm.Lbound(), itm.Ubound(), itm.Unit());
|
||||
}
|
||||
else { // delta is diff in both directions; EX: val=50 hi=60 lo=30 -> hi_diff == 10, lo_diff == 20
|
||||
if (hi_diff_val != 0) // skip if 0
|
||||
tmp_bfr.Add(msgs.Sym_plus()).Add_str_a7(hi_diff.To_str());
|
||||
if (lo_diff_val != 0) { // skip if 0
|
||||
if (hi_diff_val != 0) tmp_bfr.Add(Time_plus_minus_spr);
|
||||
tmp_bfr.Add(msgs.Sym_minus()).Add_str_a7(lo_diff.To_str());
|
||||
}
|
||||
}
|
||||
byte[] unit = itm.Unit();
|
||||
if (!Bry_.Eq(unit, Wbase_claim_quantity.Unit_1))
|
||||
tmp_bfr.Add_byte_space().Add(unit);
|
||||
} catch (Exception e) {
|
||||
Gfo_usr_dlg_.Instance.Warn_many("", "", "failed to write quantity; ttl=~{0} pid=~{1} err=~{2}", ttl, itm.Pid(), Err_.Message_gplx_full(e));
|
||||
}
|
||||
} private static final byte[] Time_plus_minus_spr = Bry_.new_a7(" / ");
|
||||
public void Visit_time(Wbase_claim_time itm) {itm.Write_to_bfr(tmp_bfr, tmp_time_bfr, tmp_time_fmtr, msgs, ttl);}
|
||||
public void Visit_globecoordinate(Wbase_claim_globecoordinate itm) {
|
||||
Wdata_prop_val_visitor.Write_geo(Bool_.Y, tmp_bfr, lbl_mgr, itm.Lat(), itm.Lng(), itm.Alt(), itm.Prc(), itm.Glb());
|
||||
Wdata_prop_val_visitor.Write_geo(Bool_.Y, tmp_bfr, lbl_mgr, msgs, itm.Lat(), itm.Lng(), itm.Alt(), itm.Prc(), itm.Glb());
|
||||
}
|
||||
public void Visit_time(Wbase_claim_time itm) {
|
||||
itm.Write_to_bfr(tmp_bfr, tmp_time_bfr, tmp_time_fmtr, msgs, ttl);
|
||||
}
|
||||
public void Visit_system(Wbase_claim_value itm) {
|
||||
switch (itm.Snak_tid()) {
|
||||
|
@ -37,22 +37,22 @@ public class Wdata_visitor__html_wtr_tst {
|
||||
@Test public void Quantity_ubound_lbound() {
|
||||
fxt
|
||||
.Test_claim_val
|
||||
( fxt.Wdata_fxt().Make_claim_quantity(1, "50", "units", "60", "30")
|
||||
, "50 +10 / -20 units"
|
||||
( fxt.Wdata_fxt().Make_claim_quantity(1, "50", "", "60", "30")
|
||||
, "30-60"
|
||||
);
|
||||
}
|
||||
@Test public void Quantity_same() {
|
||||
fxt
|
||||
.Test_claim_val
|
||||
( fxt.Wdata_fxt().Make_claim_quantity(1, "50", "units", "60", "40")
|
||||
, "50 ±10 units"
|
||||
( fxt.Wdata_fxt().Make_claim_quantity(1, "50", "1", "60", "40")
|
||||
, "50±10"
|
||||
);
|
||||
}
|
||||
@Test public void Quantity_frac() {
|
||||
fxt
|
||||
.Test_claim_val
|
||||
( fxt.Wdata_fxt().Make_claim_quantity(1, "+0.1234", "units", "+0.1235", "+0.1233")
|
||||
, "+0.1234 ±0.0001 units"
|
||||
( fxt.Wdata_fxt().Make_claim_quantity(1, "+0.1234", "1", "+0.1235", "+0.1233")
|
||||
, "0.1234±0.0001"
|
||||
);
|
||||
}
|
||||
@Test public void Entity_qid() {
|
||||
|
Loading…
Reference in New Issue
Block a user