From 742e61b7180ba05423ac01871faeb184418dae9c Mon Sep 17 00:00:00 2001 From: gnosygnu Date: Fri, 27 Sep 2019 20:24:32 -0400 Subject: [PATCH] Hdump: Add missing Xoh_hdump_wkr [#584] --- .../gplx/xowa/htmls/hdumps/Xoh_hdump_wkr.java | 22 +++++ .../xowa/htmls/hdumps/Xoh_hdump_wkr_utl.java | 32 +++++++ .../xowa/parsers/htmls/Mwh_atr_mgr_tst.java | 11 ++- .../gplx/xowa/parsers/htmls/Mwh_doc_mgr.java | 2 +- h origin master | 95 ------------------- 5 files changed, 63 insertions(+), 99 deletions(-) create mode 100644 400_xowa/src/gplx/xowa/htmls/hdumps/Xoh_hdump_wkr.java create mode 100644 400_xowa/src/gplx/xowa/htmls/hdumps/Xoh_hdump_wkr_utl.java delete mode 100644 h origin master diff --git a/400_xowa/src/gplx/xowa/htmls/hdumps/Xoh_hdump_wkr.java b/400_xowa/src/gplx/xowa/htmls/hdumps/Xoh_hdump_wkr.java new file mode 100644 index 000000000..f43f8e4ee --- /dev/null +++ b/400_xowa/src/gplx/xowa/htmls/hdumps/Xoh_hdump_wkr.java @@ -0,0 +1,22 @@ +/* +XOWA: the XOWA Offline Wiki Application +Copyright (C) 2012-2017 gnosygnu@gmail.com + +XOWA is licensed under the terms of the General Public License (GPL) Version 3, +or alternatively under the terms of the Apache License Version 2.0. + +You may use XOWA according to either of these licenses as is most appropriate +for your project on a case-by-case basis. + +The terms of each license can be found in the source code repository: + +GPLv3 License: https://github.com/gnosygnu/xowa/blob/master/LICENSE-GPLv3.txt +Apache License: https://github.com/gnosygnu/xowa/blob/master/LICENSE-APACHE2.txt +*/ +package gplx.xowa.htmls.hdumps; import gplx.*; import gplx.xowa.*; import gplx.xowa.htmls.*; +import gplx.langs.htmls.docs.*; +import gplx.xowa.htmls.core.wkrs.*; +public interface Xoh_hdump_wkr { + byte[] Key(); + int Process(Bry_bfr bfr, Xoh_hdoc_ctx hctx, Xoh_hdoc_wkr hdoc_wkr, Gfh_tag_rdr tag_rdr, byte[] src, Gfh_tag tag); +} diff --git a/400_xowa/src/gplx/xowa/htmls/hdumps/Xoh_hdump_wkr_utl.java b/400_xowa/src/gplx/xowa/htmls/hdumps/Xoh_hdump_wkr_utl.java new file mode 100644 index 000000000..c50d16258 --- /dev/null +++ b/400_xowa/src/gplx/xowa/htmls/hdumps/Xoh_hdump_wkr_utl.java @@ -0,0 +1,32 @@ +/* +XOWA: the XOWA Offline Wiki Application +Copyright (C) 2012-2017 gnosygnu@gmail.com + +XOWA is licensed under the terms of the General Public License (GPL) Version 3, +or alternatively under the terms of the Apache License Version 2.0. + +You may use XOWA according to either of these licenses as is most appropriate +for your project on a case-by-case basis. + +The terms of each license can be found in the source code repository: + +GPLv3 License: https://github.com/gnosygnu/xowa/blob/master/LICENSE-GPLv3.txt +Apache License: https://github.com/gnosygnu/xowa/blob/master/LICENSE-APACHE2.txt +*/ +package gplx.xowa.htmls.hdumps; import gplx.*; import gplx.xowa.*; import gplx.xowa.htmls.*; +import gplx.langs.htmls.docs.*; +public class Xoh_hdump_wkr_utl { + public static void Write_tag_with_val_at_atr_bgn(Bry_bfr bfr, byte[] src, Gfh_tag tag, Gfh_atr atr, byte[] val) { + // utility method to write tag, but put "val" at start of atr + // EX: val="VAL_" tag="" -> "" + bfr.Add_mid(src, tag.Src_bgn(), atr.Val_bgn()); // add bgn of tag + if (val != null) + bfr.Add(val); // add "val" + bfr.Add(atr.Val()); // add atr.val + bfr.Add_mid(src, atr.Val_end(), tag.Src_end()); // add end of tag + } + public static byte[] Build_hdump_atr(byte[] key) { + return Bry_.Add(Bry__data_xowa_hdump, key, Byte_ascii.Apos_bry); + } + private static final byte[] Bry__data_xowa_hdump = Bry_.new_a7("data-xowa-hdump='"); +} diff --git a/400_xowa/src/gplx/xowa/parsers/htmls/Mwh_atr_mgr_tst.java b/400_xowa/src/gplx/xowa/parsers/htmls/Mwh_atr_mgr_tst.java index 2c28c0302..0bcdc7846 100644 --- a/400_xowa/src/gplx/xowa/parsers/htmls/Mwh_atr_mgr_tst.java +++ b/400_xowa/src/gplx/xowa/parsers/htmls/Mwh_atr_mgr_tst.java @@ -14,15 +14,20 @@ GPLv3 License: https://github.com/gnosygnu/xowa/blob/master/LICENSE-GPLv3.txt Apache License: https://github.com/gnosygnu/xowa/blob/master/LICENSE-APACHE2.txt */ package gplx.xowa.parsers.htmls; import gplx.*; import gplx.xowa.*; import gplx.xowa.parsers.*; -import org.junit.*; +import org.junit.*; import gplx.core.tests.*; public class Mwh_atr_mgr_tst { - private final Mwh_atr_mgr_fxt fxt = new Mwh_atr_mgr_fxt(); - @Test public void Atr_utl_make() { + private final Mwh_atr_mgr_fxt fxt = new Mwh_atr_mgr_fxt(); + @Test public void Atr_utl_make() { // key="val" fxt.Test_atr_utl_make(Mwh_atr_itm_.Qte_tid__qute, Mwh_atr_itm_.Mask__valid__y, Mwh_atr_itm_.Mask__repeated__n, Mwh_atr_itm_.Mask__key_exists__y, Mwh_atr_itm_.Mask__val_made__n, 42); // key=val key=val fxt.Test_atr_utl_make(Mwh_atr_itm_.Qte_tid__none, Mwh_atr_itm_.Mask__valid__y, Mwh_atr_itm_.Mask__repeated__y, Mwh_atr_itm_.Mask__key_exists__y, Mwh_atr_itm_.Mask__val_made__y, 120); } + @Test public void Resize() { + Mwh_atr_mgr atr_mgr = new Mwh_atr_mgr(1); + atr_mgr.Add(0, 1, true, true, true, 2, 3, 4, 5, Bry_.Empty, 0, 0, 0, 0, Bry_.Empty); + atr_mgr.Add(1, 0, true, true, true, 0, 0, 0, 0, Bry_.Empty, 0, 0, 0, 0, Bry_.Empty); + } } class Mwh_atr_mgr_fxt { public void Test_atr_utl_make(int qte_tid, boolean valid, boolean repeated, boolean key_exists, boolean val_made, int expd) { diff --git a/400_xowa/src/gplx/xowa/parsers/htmls/Mwh_doc_mgr.java b/400_xowa/src/gplx/xowa/parsers/htmls/Mwh_doc_mgr.java index 950924c59..248261481 100644 --- a/400_xowa/src/gplx/xowa/parsers/htmls/Mwh_doc_mgr.java +++ b/400_xowa/src/gplx/xowa/parsers/htmls/Mwh_doc_mgr.java @@ -38,7 +38,7 @@ class Mwh_doc_mgr { if (data_idx == data_max) { int new_data_max = data_max == 0 ? Idx__mult : data_max * 2; int[] new_data_ary = new int[new_data_max]; - Int_ary_.Copy_to(data_ary, data_max, data_ary); + Int_ary_.Copy_to(data_ary, data_max, new_data_ary); this.data_ary = new_data_ary; this.data_max = new_data_max; } diff --git a/h origin master b/h origin master deleted file mode 100644 index 68f4eb7df..000000000 --- a/h origin master +++ /dev/null @@ -1,95 +0,0 @@ -diff --git a/400_xowa/src/gplx/xowa/xtns/wbases/Wdata_doc.java b/400_xowa/src/gplx/xowa/xtns/wbases/Wdata_doc.java -index f6d1ef3..97fdf7f 100644 ---- a/400_xowa/src/gplx/xowa/xtns/wbases/Wdata_doc.java -+++ b/400_xowa/src/gplx/xowa/xtns/wbases/Wdata_doc.java -@@ -19,50 +19,55 @@ import gplx.langs.jsons.*; - import gplx.xowa.langs.*; - import gplx.xowa.xtns.wbases.core.*; import gplx.xowa.xtns.wbases.claims.*; import gplx.xowa.xtns.wbases.parsers.*; - public class Wdata_doc { -- private Wdata_wiki_mgr mgr; private Int_obj_ref tmp_key; -- public Wdata_doc(byte[] qid, Wdata_wiki_mgr mgr, Json_doc jdoc) {this.qid = qid; this.mgr = mgr; this.jdoc = jdoc;} -- public Wdata_doc(byte[] qid, Ordered_hash slink_list, Ordered_hash label_list, Ordered_hash descr_list, Ordered_hash alias_list, Ordered_hash claim_list) { // TEST -- this.qid = qid; -- this.slink_list = slink_list; this.label_list = label_list; this.descr_list = descr_list; this.alias_list = alias_list; this.claim_list = claim_list; -+ private final Wdata_wiki_mgr mgr;  -+ public Wdata_doc(Wdata_wiki_mgr mgr, Json_doc jdoc, byte[] qid) {  -+ this.mgr = mgr; this.jdoc = jdoc; this.qid = qid;  - } -- public Json_doc Jdoc() {return jdoc;} private Json_doc jdoc; -+ public byte[] Qid() {return qid;} private final byte[] qid;  -+ public Json_doc Jdoc() {return jdoc;} private final Json_doc jdoc;  - public int Jdoc_size() {return jdoc == null ? 1 : jdoc.Src().length;} -- public byte[] Qid() {return qid;} private byte[] qid; - public byte[][] Sort_langs() {return sort_langs;} public void Sort_langs_(byte[][] v) {sort_langs = v;} private byte[][] sort_langs = Bry_.Ary_empty; -- public Ordered_hash Slink_list() {if (slink_list == null) slink_list = mgr.Wdoc_parser(jdoc).Parse_sitelinks(qid, jdoc); return slink_list;} private Ordered_hash slink_list; -- public Ordered_hash Label_list() {if (label_list == null) label_list = mgr.Wdoc_parser(jdoc).Parse_langvals(qid, jdoc, Bool_.Y); return label_list;} private Ordered_hash label_list; -- public Ordered_hash Descr_list() {if (descr_list == null) descr_list = mgr.Wdoc_parser(jdoc).Parse_langvals(qid, jdoc, Bool_.N); return descr_list;} private Ordered_hash descr_list; -- public Ordered_hash Alias_list() {if (alias_list == null) alias_list = mgr.Wdoc_parser(jdoc).Parse_aliases(qid, jdoc); return alias_list;} private Ordered_hash alias_list; -- public Ordered_hash Claim_list() {if (claim_list == null) claim_list = mgr.Wdoc_parser(jdoc).Parse_claims(qid, jdoc); return claim_list;} private Ordered_hash claim_list; -- public Wbase_claim_grp Claim_list_get(int pid) { -- if (tmp_key == null) tmp_key = Int_obj_ref.New_neg1();  -- Object o = this.Claim_list().Get_by(tmp_key.Val_(pid)); -+  -+ // NOTE: lazy instantiation b/c we don't want to parse entire json unless called; particulary necessary for {{#property}} calls;  -+ public Ordered_hash Slink_list() {if (slink_list == null) slink_list = mgr.Wdoc_parser(jdoc).Parse_sitelinks(qid, jdoc); return slink_list;} private Ordered_hash slink_list;  -+ public Ordered_hash Label_list() {if (label_list == null) label_list = mgr.Wdoc_parser(jdoc).Parse_langvals(qid, jdoc, Bool_.Y); return label_list;} private Ordered_hash label_list;  -+ public Ordered_hash Descr_list() {if (descr_list == null) descr_list = mgr.Wdoc_parser(jdoc).Parse_langvals(qid, jdoc, Bool_.N); return descr_list;} private Ordered_hash descr_list;  -+ public Ordered_hash Alias_list() {if (alias_list == null) alias_list = mgr.Wdoc_parser(jdoc).Parse_aliases(qid, jdoc); return alias_list;} private Ordered_hash alias_list;  -+ public Ordered_hash Claim_list() {if (claim_list == null) claim_list = mgr.Wdoc_parser(jdoc).Parse_claims(qid, jdoc); return claim_list;} private Ordered_hash claim_list;  -+  -+ // various getters  -+ public Wbase_claim_grp Get_claim_grp_or_null(int pid) {  -+ Object o = this.Claim_list().Get_by(Int_obj_ref.New(pid));  - return (Wbase_claim_grp)o; -- }  -- public byte[] Label_list__get(byte[] lang_key) {return Lang_text_list__get(this.Label_list(), lang_key);} -- public byte[] Label_list__get_or_fallback(Xol_lang_itm lang) {return Lang_text_list__get_or_fallback(this.Label_list(), lang);} -- public byte[] Descr_list__get_or_fallback(Xol_lang_itm lang) {return Lang_text_list__get_or_fallback(this.Descr_list(), lang);} -- public byte[] Slink_list__get_or_fallback(byte[] abrv_wm) { -- Wdata_sitelink_itm rv = (Wdata_sitelink_itm)this.Slink_list().Get_by(abrv_wm); -- return rv == null ? null : rv.Name(); - } -- private byte[] Lang_text_list__get(Ordered_hash hash, byte[] lang_key) { -- Object rv_obj = hash.Get_by(lang_key); if (rv_obj == null) return null; -- Wdata_langtext_itm rv = (Wdata_langtext_itm)rv_obj; -- return rv.Text(); -+ public byte[] Get_label_bry_or_null(byte[] lang_key) {  -+ Wdata_langtext_itm itm = (Wdata_langtext_itm)this.Label_list().Get_by(lang_key);  -+ return itm == null ? null : itm.Text();  - } -- public byte[] Lang_text_list__get_or_fallback(Ordered_hash lang_text_list, Xol_lang_itm lang) { -- byte[] rv = Lang_text_list__get(lang_text_list, lang.Key_bry()); if (rv != null) return rv; -- byte[][] ary = lang.Fallback_bry_ary(); // NOTE: en is currently automatically being added by Xol_lang_itm -- int len = ary.length; -- for (int i = 0; i < len; ++i) { -- byte[] lang_key = ary[i]; -- Object itm_obj = lang_text_list.Get_by(lang_key); -+ public Wdata_langtext_itm Get_label_itm_or_null(Xol_lang_itm lang) {return Get_langtext_itm_or_null(this.Label_list(), lang);}  -+ public Wdata_langtext_itm Get_descr_itm_or_null(Xol_lang_itm lang) {return Get_langtext_itm_or_null(this.Descr_list(), lang);}  -+ public Wdata_sitelink_itm Get_slink_itm_or_null(byte[] abrv_wm) {return (Wdata_sitelink_itm)this.Slink_list().Get_by(abrv_wm);}  -+  -+ // helper method  -+ private Wdata_langtext_itm Get_langtext_itm_or_null(Ordered_hash hash, Xol_lang_itm lang) {  -+ // get itm by lang's key  -+ Wdata_langtext_itm itm = (Wdata_langtext_itm)hash.Get_by(lang.Key_bry());  -+ if (itm != null) return itm;  -+  -+ // loop over fallback_langs  -+ byte[][] fallback_langs = lang.Fallback_bry_ary(); // NOTE: en is currently automatically being added by Xol_lang_itm  -+ int len = fallback_langs.length;  -+ for (int i = 0; i < len; i++) {  -+ byte[] lang_key = fallback_langs[i];  -+ Object itm_obj = hash.Get_by(lang_key);  - if (itm_obj != null) { -- Wdata_langtext_itm itm = (Wdata_langtext_itm)itm_obj; -- return itm.Text(); -+ return (Wdata_langtext_itm)itm_obj;  - } - } - return null; - } -+ public Wdata_doc Ctor_by_test(Ordered_hash slink_list, Ordered_hash label_list, Ordered_hash descr_list, Ordered_hash alias_list, Ordered_hash claim_list) {// TEST  -+ this.slink_list = slink_list; this.label_list = label_list; this.descr_list = descr_list; this.alias_list = alias_list; this.claim_list = claim_list;  -+ return this;  -+ }  - }