"
diff --git a/400_xowa/src/gplx/xowa/html/Xohp_ctg_grp_mgr_tst.java b/400_xowa/src/gplx/xowa/html/Xohp_ctg_grp_mgr_tst.java
index 1b7ae0da9..c8ec47fc4 100644
--- a/400_xowa/src/gplx/xowa/html/Xohp_ctg_grp_mgr_tst.java
+++ b/400_xowa/src/gplx/xowa/html/Xohp_ctg_grp_mgr_tst.java
@@ -48,7 +48,7 @@ class Xoh_ctg_mgr_fxt {
public Xoh_ctg_mgr_fxt Init_ctgs(String... v) {init_ctgs = v; return this;} private String[] init_ctgs;
public void Test_html(String expd) {
byte[][] ctgs_bry_ary = Bry_.Ary(init_ctgs);
- Xoae_page page = wiki.Ctx().Cur_page();
+ Xoae_page page = wiki.Parser_mgr().Ctx().Cur_page();
page.Category_list_(ctgs_bry_ary);
ctg_grp_mgr.Bld(tmp_bfr, page, ctgs_bry_ary.length);
Tfds.Eq_str_lines(expd, tmp_bfr.Xto_str_and_clear());
diff --git a/400_xowa/src/gplx/xowa/html/Xow_html_mgr.java b/400_xowa/src/gplx/xowa/html/Xow_html_mgr.java
index 6cec81b0e..d79b68f4c 100644
--- a/400_xowa/src/gplx/xowa/html/Xow_html_mgr.java
+++ b/400_xowa/src/gplx/xowa/html/Xow_html_mgr.java
@@ -16,6 +16,7 @@ You should have received a copy of the GNU Affero General Public License
along with this program. If not, see
.
*/
package gplx.xowa.html; import gplx.*; import gplx.xowa.*;
+import gplx.xowa.langs.*;
import gplx.xowa.ctgs.*; import gplx.xowa.xtns.gallery.*;
import gplx.xowa.html.portal.*; import gplx.xowa.html.tocs.*; import gplx.xowa.wikis.modules.*; import gplx.xowa.html.hzips.*;
public class Xow_html_mgr implements GfoInvkAble {
diff --git a/400_xowa/src/gplx/xowa/html/bridges/Bridge_cmd_itm.java b/400_xowa/src/gplx/xowa/html/bridges/Bridge_cmd_itm.java
index a64f50e76..76a6bbb3b 100644
--- a/400_xowa/src/gplx/xowa/html/bridges/Bridge_cmd_itm.java
+++ b/400_xowa/src/gplx/xowa/html/bridges/Bridge_cmd_itm.java
@@ -16,7 +16,7 @@ You should have received a copy of the GNU Affero General Public License
along with this program. If not, see
.
*/
package gplx.xowa.html.bridges; import gplx.*; import gplx.xowa.*; import gplx.xowa.html.*;
-import gplx.core.json.*;
+import gplx.langs.jsons.*;
public interface Bridge_cmd_itm {
byte[] Key();
String Exec(Json_nde data);
diff --git a/400_xowa/src/gplx/xowa/html/bridges/Bridge_cmd_mgr.java b/400_xowa/src/gplx/xowa/html/bridges/Bridge_cmd_mgr.java
index ba96824c6..faffb4d41 100644
--- a/400_xowa/src/gplx/xowa/html/bridges/Bridge_cmd_mgr.java
+++ b/400_xowa/src/gplx/xowa/html/bridges/Bridge_cmd_mgr.java
@@ -16,7 +16,7 @@ You should have received a copy of the GNU Affero General Public License
along with this program. If not, see
.
*/
package gplx.xowa.html.bridges; import gplx.*; import gplx.xowa.*; import gplx.xowa.html.*;
-import gplx.core.json.*;
+import gplx.langs.jsons.*;
public class Bridge_cmd_mgr {
private final Json_parser parser;
private final Hash_adp_bry cmd_hash = Hash_adp_bry.cs();
diff --git a/400_xowa/src/gplx/xowa/html/bridges/Bridge_msg_bldr.java b/400_xowa/src/gplx/xowa/html/bridges/Bridge_msg_bldr.java
index 0e261f9e3..4d9f24a28 100644
--- a/400_xowa/src/gplx/xowa/html/bridges/Bridge_msg_bldr.java
+++ b/400_xowa/src/gplx/xowa/html/bridges/Bridge_msg_bldr.java
@@ -16,7 +16,7 @@ You should have received a copy of the GNU Affero General Public License
along with this program. If not, see
.
*/
package gplx.xowa.html.bridges; import gplx.*; import gplx.xowa.*; import gplx.xowa.html.*;
-import gplx.core.json.*;
+import gplx.langs.jsons.*;
public class Bridge_msg_bldr {
private final Json_wtr wtr = new Json_wtr();
private boolean rslt_pass; private String rslt_msg;
diff --git a/400_xowa/src/gplx/xowa/html/bridges/Xoh_bridge_mgr.java b/400_xowa/src/gplx/xowa/html/bridges/Xoh_bridge_mgr.java
index 2ffa4b1f1..3a0f850c2 100644
--- a/400_xowa/src/gplx/xowa/html/bridges/Xoh_bridge_mgr.java
+++ b/400_xowa/src/gplx/xowa/html/bridges/Xoh_bridge_mgr.java
@@ -16,7 +16,7 @@ You should have received a copy of the GNU Affero General Public License
along with this program. If not, see
.
*/
package gplx.xowa.html.bridges; import gplx.*; import gplx.xowa.*; import gplx.xowa.html.*;
-import gplx.core.json.*;
+import gplx.langs.jsons.*;
import gplx.xowa.html.bridges.dbuis.tbls.*;
public class Xoh_bridge_mgr {
public Xoh_bridge_mgr(Json_parser parser) {this.cmd_mgr = new Bridge_cmd_mgr(parser);}
diff --git a/400_xowa/src/gplx/xowa/html/bridges/dbuis/Dbui_cmd_mgr.java b/400_xowa/src/gplx/xowa/html/bridges/dbuis/Dbui_cmd_mgr.java
index daf2cc24b..62548f157 100644
--- a/400_xowa/src/gplx/xowa/html/bridges/dbuis/Dbui_cmd_mgr.java
+++ b/400_xowa/src/gplx/xowa/html/bridges/dbuis/Dbui_cmd_mgr.java
@@ -16,7 +16,7 @@ You should have received a copy of the GNU Affero General Public License
along with this program. If not, see
.
*/
package gplx.xowa.html.bridges.dbuis; import gplx.*; import gplx.xowa.*; import gplx.xowa.html.*; import gplx.xowa.html.bridges.*;
-import gplx.core.json.*; import gplx.xowa.html.bridges.dbuis.tbls.*;
+import gplx.langs.jsons.*; import gplx.xowa.html.bridges.dbuis.tbls.*;
public class Dbui_cmd_mgr {
private final Hash_adp_bry hash = Hash_adp_bry.cs();
private boolean init;
@@ -34,7 +34,7 @@ public class Dbui_cmd_mgr {
public String Save(Json_nde data) {return Get_tbl(data).Save(data.Get_bry(Arg_row_id), data.Get_bry(Arg_row_pkey), To_hash(data.Get(Arg_vals)));}
public String Reorder(Json_nde data){
byte[] pkeys_concat = data.Get_bry(Arg_pkeys);
- return Get_tbl(data).Reorder(Bry_.Split(pkeys_concat, Byte_ascii.Pipe), -1);
+ return Get_tbl(data).Reorder(Bry_split_.Split(pkeys_concat, Byte_ascii.Pipe), -1);
}
private Dbui_tbl_itm Get_tbl(Json_nde data) {
byte[] tbl_key = data.Get_bry(Arg_tbl_key);
diff --git a/400_xowa/src/gplx/xowa/html/doms/Xoh_dom_.java b/400_xowa/src/gplx/xowa/html/doms/Xoh_dom_.java
index feb0bf6bb..20ff5cd75 100644
--- a/400_xowa/src/gplx/xowa/html/doms/Xoh_dom_.java
+++ b/400_xowa/src/gplx/xowa/html/doms/Xoh_dom_.java
@@ -16,7 +16,7 @@ You should have received a copy of the GNU Affero General Public License
along with this program. If not, see
.
*/
package gplx.xowa.html.doms; import gplx.*; import gplx.xowa.*; import gplx.xowa.html.*;
-import gplx.html.*;
+import gplx.langs.htmls.*;
public class Xoh_dom_ {
private static final byte[] Lt_bry = Bry_.new_a7("<"), Space_bry = Bry_.new_a7(" ");
public static byte[] Query_val_by_where(Xoh_find rv, byte[] src, byte[] where_nde, byte[] where_key, byte[] where_val, byte[] query_key, int bgn) {
@@ -45,22 +45,22 @@ public class Xoh_dom_ {
return null;
}
public static boolean Select_tag(Xoh_find rv, byte[] src, byte[] nde, byte[] key, int rng_bgn, int rng_end) {
- int tag_bgn = Bry_finder.Find_fwd(src, nde, rng_bgn, rng_end); if (tag_bgn == Bry_.NotFound) return false;
- int tag_end = Bry_finder.Find_fwd(src, Byte_ascii.Gt, tag_bgn, rng_end); if (tag_end == Bry_.NotFound) return false;
- int key_bgn = Bry_finder.Find_fwd(src, key, tag_bgn, tag_end); if (key_bgn == Bry_.NotFound) return false;
+ int tag_bgn = Bry_find_.Find_fwd(src, nde, rng_bgn, rng_end); if (tag_bgn == Bry_.NotFound) return false;
+ int tag_end = Bry_find_.Find_fwd(src, Byte_ascii.Gt, tag_bgn, rng_end); if (tag_end == Bry_.NotFound) return false;
+ int key_bgn = Bry_find_.Find_fwd(src, key, tag_bgn, tag_end); if (key_bgn == Bry_.NotFound) return false;
int key_end = key_bgn + key.length;
- int val_bgn = Bry_finder.Find_fwd(src, Byte_ascii.Quote, key_end, tag_end); if (val_bgn == Bry_.NotFound) return false;
+ int val_bgn = Bry_find_.Find_fwd(src, Byte_ascii.Quote, key_end, tag_end); if (val_bgn == Bry_.NotFound) return false;
++val_bgn;
- int val_end = Bry_finder.Find_fwd(src, Byte_ascii.Quote, val_bgn, tag_end); if (val_end == Bry_.NotFound) return false;
+ int val_end = Bry_find_.Find_fwd(src, Byte_ascii.Quote, val_bgn, tag_end); if (val_end == Bry_.NotFound) return false;
rv.Set_all(tag_bgn, tag_end, key_bgn, key_end, val_bgn, val_end);
return true;
}
public static boolean Find_atr_val_in_tag(Xoh_find rv, byte[] src, byte[] key, int tag_bgn, int tag_end) {
- int key_bgn = Bry_finder.Find_fwd(src, key, tag_bgn, tag_end); if (key_bgn == Bry_.NotFound) return false;
+ int key_bgn = Bry_find_.Find_fwd(src, key, tag_bgn, tag_end); if (key_bgn == Bry_.NotFound) return false;
int key_end = key_bgn + key.length;
- int val_bgn = Bry_finder.Find_fwd(src, Byte_ascii.Quote, key_end, tag_end); if (val_bgn == Bry_.NotFound) return false;
+ int val_bgn = Bry_find_.Find_fwd(src, Byte_ascii.Quote, key_end, tag_end); if (val_bgn == Bry_.NotFound) return false;
++val_bgn;
- int val_end = Bry_finder.Find_fwd(src, Byte_ascii.Quote, val_bgn, tag_end); if (val_end == Bry_.NotFound) return false;
+ int val_end = Bry_find_.Find_fwd(src, Byte_ascii.Quote, val_bgn, tag_end); if (val_end == Bry_.NotFound) return false;
rv.Set_all(tag_bgn, tag_end, key_bgn, key_end, val_bgn, val_end);
return true;
}
diff --git a/400_xowa/src/gplx/xowa/html/hdumps/Xohd_hdump_rdr.java b/400_xowa/src/gplx/xowa/html/hdumps/Xohd_hdump_rdr.java
index 138540095..a8f907824 100644
--- a/400_xowa/src/gplx/xowa/html/hdumps/Xohd_hdump_rdr.java
+++ b/400_xowa/src/gplx/xowa/html/hdumps/Xohd_hdump_rdr.java
@@ -18,7 +18,7 @@ along with this program. If not, see
.
package gplx.xowa.html.hdumps; import gplx.*; import gplx.xowa.*; import gplx.xowa.html.*;
import gplx.xowa.html.heads.*; import gplx.xowa.html.hdumps.data.*; import gplx.xowa.html.hzips.*; import gplx.xowa.html.hdumps.abrvs.*; import gplx.xowa.html.hdumps.pages.*;
import gplx.xowa.pages.*; import gplx.xowa.pages.skins.*;
-import gplx.xowa.wikis.data.*; import gplx.xowa.wikis.data.tbls.*; import gplx.xowa2.gui.*;
+import gplx.xowa.wikis.data.*; import gplx.xowa.wikis.data.tbls.*; import gplx.xowa.gui.*;
import gplx.xowa.parsers.*;
public class Xohd_hdump_rdr {
private final Bry_bfr_mkr bfr_mkr; private final Xow_hzip_mgr hzip_mgr;
diff --git a/400_xowa/src/gplx/xowa/html/hdumps/Xohd_hdump_wtr.java b/400_xowa/src/gplx/xowa/html/hdumps/Xohd_hdump_wtr.java
index 824b3b092..a46aad366 100644
--- a/400_xowa/src/gplx/xowa/html/hdumps/Xohd_hdump_wtr.java
+++ b/400_xowa/src/gplx/xowa/html/hdumps/Xohd_hdump_wtr.java
@@ -18,7 +18,7 @@ along with this program. If not, see
.
package gplx.xowa.html.hdumps; import gplx.*; import gplx.xowa.*; import gplx.xowa.html.*;
import gplx.xowa.html.hdumps.data.*; import gplx.xowa.html.hzips.*; import gplx.xowa.html.hdumps.abrvs.*; import gplx.xowa.html.hdumps.pages.*;
import gplx.xowa.pages.*; import gplx.xowa.pages.skins.*; import gplx.xowa.dbs.*;
-import gplx.xowa.wikis.data.*; import gplx.xowa.wikis.data.tbls.*; import gplx.xowa2.gui.*;
+import gplx.xowa.wikis.data.*; import gplx.xowa.wikis.data.tbls.*; import gplx.xowa.gui.*;
public class Xohd_hdump_wtr {
private final Bry_bfr_mkr bfr_mkr; private final Xohe_page_wtr_mgr page_wtr_mgr;
private final Xohd_page_html_mgr__save save_mgr; private Xowd_db_mgr core_data_mgr;
diff --git a/400_xowa/src/gplx/xowa/html/hdumps/Xohd_hdump_wtr_tst.java b/400_xowa/src/gplx/xowa/html/hdumps/Xohd_hdump_wtr_tst.java
index 31a0e31b8..d54099c18 100644
--- a/400_xowa/src/gplx/xowa/html/hdumps/Xohd_hdump_wtr_tst.java
+++ b/400_xowa/src/gplx/xowa/html/hdumps/Xohd_hdump_wtr_tst.java
@@ -114,7 +114,7 @@ class Xodb_hdump_mgr__base_fxt {
if (fxt == null) {
fxt = new Xop_fxt();
wiki = fxt.Wiki();
- page = wiki.Ctx().Cur_page();
+ page = wiki.Parser_mgr().Ctx().Cur_page();
hdump_wtr = new Xohd_hdump_wtr(fxt.App(), fxt.Wiki());
}
fxt.Reset();
diff --git a/400_xowa/src/gplx/xowa/html/hdumps/abrvs/Xohd_abrv_mgr.java b/400_xowa/src/gplx/xowa/html/hdumps/abrvs/Xohd_abrv_mgr.java
index 90ee9f0fa..06106e9bb 100644
--- a/400_xowa/src/gplx/xowa/html/hdumps/abrvs/Xohd_abrv_mgr.java
+++ b/400_xowa/src/gplx/xowa/html/hdumps/abrvs/Xohd_abrv_mgr.java
@@ -16,11 +16,11 @@ You should have received a copy of the GNU Affero General Public License
along with this program. If not, see
.
*/
package gplx.xowa.html.hdumps.abrvs; import gplx.*; import gplx.xowa.*; import gplx.xowa.html.*; import gplx.xowa.html.hdumps.*;
-import gplx.core.primitives.*; import gplx.core.brys.*; import gplx.core.btries.*;
-import gplx.html.*; import gplx.xowa.html.*; import gplx.xowa.html.hdumps.core.*; import gplx.xowa.html.lnkis.*;
+import gplx.core.primitives.*; import gplx.core.brys.*; import gplx.core.btries.*; import gplx.langs.htmls.encoders.*;
+import gplx.langs.htmls.*; import gplx.xowa.html.*; import gplx.xowa.html.hdumps.core.*; import gplx.xowa.html.lnkis.*;
import gplx.xowa.files.*; import gplx.xowa.files.repos.*; import gplx.xowa.xtns.gallery.*;
import gplx.xowa.wikis.domains.*; import gplx.xowa.apps.fsys.*;
-import gplx.xowa2.gui.*;
+import gplx.xowa.gui.*;
public class Xohd_abrv_mgr {
private Bry_bfr tmp_bfr = Bry_bfr.reset_(255); private Bry_rdr bry_rdr = new Bry_rdr(); private Gfo_usr_dlg usr_dlg = Gfo_usr_dlg_.I;
private Xoh_cfg_file cfg_file; private Xof_url_bldr url_bldr = Xof_url_bldr.new_v2(); private Xoh_file_html_fmtr__base html_fmtr;
diff --git a/400_xowa/src/gplx/xowa/html/hdumps/abrvs/Xohd_abrv_mgr_tst.java b/400_xowa/src/gplx/xowa/html/hdumps/abrvs/Xohd_abrv_mgr_tst.java
index c1546d67a..715fc6eff 100644
--- a/400_xowa/src/gplx/xowa/html/hdumps/abrvs/Xohd_abrv_mgr_tst.java
+++ b/400_xowa/src/gplx/xowa/html/hdumps/abrvs/Xohd_abrv_mgr_tst.java
@@ -17,7 +17,7 @@ along with this program. If not, see
.
*/
package gplx.xowa.html.hdumps.abrvs; import gplx.*; import gplx.xowa.*; import gplx.xowa.html.*; import gplx.xowa.html.hdumps.*;
import org.junit.*; import gplx.core.primitives.*; import gplx.xowa.html.hdumps.core.*; import gplx.xowa.html.hdumps.data.*; import gplx.xowa.files.*; import gplx.xowa.parsers.lnkis.*;
-import gplx.xowa2.gui.*;
+import gplx.xowa.gui.*;
public class Xohd_abrv_mgr_tst {
@Before public void init() {
fxt.Clear();
diff --git a/400_xowa/src/gplx/xowa/html/hdumps/bldrs/Xob_hdump_bldr.java b/400_xowa/src/gplx/xowa/html/hdumps/bldrs/Xob_hdump_bldr.java
index 10e022fce..dd129208c 100644
--- a/400_xowa/src/gplx/xowa/html/hdumps/bldrs/Xob_hdump_bldr.java
+++ b/400_xowa/src/gplx/xowa/html/hdumps/bldrs/Xob_hdump_bldr.java
@@ -18,7 +18,8 @@ along with this program. If not, see
.
package gplx.xowa.html.hdumps.bldrs; import gplx.*; import gplx.xowa.*; import gplx.xowa.html.*; import gplx.xowa.html.hdumps.*;
import gplx.dbs.*; import gplx.xowa.wikis.data.*; import gplx.dbs.engines.sqlite.*; import gplx.xowa.dbs.*; import gplx.xowa.wikis.data.tbls.*;
import gplx.xowa.html.hdumps.data.*; import gplx.xowa.html.hzips.*;
-import gplx.xowa.pages.*; import gplx.xowa2.gui.*; import gplx.xowa.bldrs.*; import gplx.xowa.bldrs.cmds.*;
+import gplx.xowa.nss.*;
+import gplx.xowa.pages.*; import gplx.xowa.gui.*; import gplx.xowa.bldrs.*; import gplx.xowa.bldrs.cmds.*;
public class Xob_hdump_bldr {
private final Xowd_db_mgr wiki_db_mgr; private final Xob_ns_to_db_mgr ns_to_db_mgr; int prv_row_len = 0;
private final Xodump_stats_itm stats_itm = new Xodump_stats_itm(); private final Xodump_stats_tbl stats_tbl;
diff --git a/400_xowa/src/gplx/xowa/html/hdumps/bldrs/Xob_hdump_img_cmd.java b/400_xowa/src/gplx/xowa/html/hdumps/bldrs/Xob_hdump_img_cmd.java
index 7a1069a23..140a64cae 100644
--- a/400_xowa/src/gplx/xowa/html/hdumps/bldrs/Xob_hdump_img_cmd.java
+++ b/400_xowa/src/gplx/xowa/html/hdumps/bldrs/Xob_hdump_img_cmd.java
@@ -16,9 +16,10 @@ You should have received a copy of the GNU Affero General Public License
along with this program. If not, see
.
*/
package gplx.xowa.html.hdumps.bldrs; import gplx.*; import gplx.xowa.*; import gplx.xowa.html.*; import gplx.xowa.html.hdumps.*;
-import gplx.dbs.*; import gplx.xowa.wikis.data.*; import gplx.xowa.wikis.data.tbls.*; import gplx.xowa.bldrs.*; import gplx.xowa.html.hdumps.core.*;
+import gplx.dbs.*; import gplx.xowa.wikis.data.*; import gplx.xowa.wikis.data.tbls.*;
+import gplx.xowa.bldrs.*; import gplx.xowa.bldrs.wkrs.*; import gplx.xowa.html.hdumps.core.*;
import gplx.xowa.files.*;
-import gplx.xowa2.gui.*;
+import gplx.xowa.gui.*;
class Xob_hdump_img_cmd extends Xob_itm_basic_base implements Xob_cmd {
private Xowd_html_tbl html_tbl;
public Xob_hdump_img_cmd(Xob_bldr bldr, Xowe_wiki wiki) {this.Cmd_ctor(bldr, wiki);}
diff --git a/400_xowa/src/gplx/xowa/html/hdumps/bldrs/Xob_redlink_mkr_cmd.java b/400_xowa/src/gplx/xowa/html/hdumps/bldrs/Xob_redlink_mkr_cmd.java
index 58a8391b9..67328791d 100644
--- a/400_xowa/src/gplx/xowa/html/hdumps/bldrs/Xob_redlink_mkr_cmd.java
+++ b/400_xowa/src/gplx/xowa/html/hdumps/bldrs/Xob_redlink_mkr_cmd.java
@@ -16,7 +16,8 @@ You should have received a copy of the GNU Affero General Public License
along with this program. If not, see
.
*/
package gplx.xowa.html.hdumps.bldrs; import gplx.*; import gplx.xowa.*; import gplx.xowa.html.*; import gplx.xowa.html.hdumps.*;
-import gplx.dbs.*; import gplx.xowa.bldrs.*; import gplx.xowa.html.hdumps.data.*;
+import gplx.dbs.*;
+import gplx.xowa.bldrs.*; import gplx.xowa.bldrs.wkrs.*; import gplx.xowa.html.hdumps.data.*;
import gplx.xowa.wikis.data.*; import gplx.xowa.wikis.data.tbls.*;
public class Xob_redlink_mkr_cmd extends Xob_itm_basic_base implements Xob_cmd {
private int commit_interval = 10000, commit_count = 0;
diff --git a/400_xowa/src/gplx/xowa/html/hdumps/data/Xohd_page_html_mgr__load.java b/400_xowa/src/gplx/xowa/html/hdumps/data/Xohd_page_html_mgr__load.java
index 24a5e1682..570f3cf52 100644
--- a/400_xowa/src/gplx/xowa/html/hdumps/data/Xohd_page_html_mgr__load.java
+++ b/400_xowa/src/gplx/xowa/html/hdumps/data/Xohd_page_html_mgr__load.java
@@ -18,7 +18,7 @@ along with this program. If not, see
.
package gplx.xowa.html.hdumps.data; import gplx.*; import gplx.xowa.*; import gplx.xowa.html.*; import gplx.xowa.html.hdumps.*;
import gplx.core.primitives.*; import gplx.core.brys.*; import gplx.core.btries.*; import gplx.dbs.*; import gplx.ios.*;
import gplx.xowa.dbs.*; import gplx.xowa.pages.*; import gplx.xowa.html.hdumps.core.*; import gplx.xowa.html.hdumps.data.*; import gplx.xowa.html.hdumps.pages.*; import gplx.xowa.pages.skins.*; import gplx.xowa.html.hdumps.data.srl.*;
-import gplx.xowa.wikis.data.*; import gplx.xowa.wikis.data.tbls.*; import gplx.xowa2.gui.*;
+import gplx.xowa.wikis.data.*; import gplx.xowa.wikis.data.tbls.*; import gplx.xowa.gui.*;
public class Xohd_page_html_mgr__load {
private final Xohd_page_srl_mgr srl_mgr = Xohd_page_srl_mgr.I;
private final Bry_rdr rdr = new Bry_rdr(); private final List_adp rows = List_adp_.new_(), imgs = List_adp_.new_();
diff --git a/400_xowa/src/gplx/xowa/html/hdumps/data/Xohd_page_html_mgr__save.java b/400_xowa/src/gplx/xowa/html/hdumps/data/Xohd_page_html_mgr__save.java
index 80c8fc73b..3f7f0e868 100644
--- a/400_xowa/src/gplx/xowa/html/hdumps/data/Xohd_page_html_mgr__save.java
+++ b/400_xowa/src/gplx/xowa/html/hdumps/data/Xohd_page_html_mgr__save.java
@@ -17,7 +17,7 @@ along with this program. If not, see
.
*/
package gplx.xowa.html.hdumps.data; import gplx.*; import gplx.xowa.*; import gplx.xowa.html.*; import gplx.xowa.html.hdumps.*;
import gplx.xowa.wikis.data.*; import gplx.xowa.wikis.data.tbls.*; import gplx.xowa.html.hdumps.core.*; import gplx.xowa.html.hdumps.data.srl.*;
-import gplx.xowa2.gui.*; import gplx.xowa.html.hdumps.pages.*; import gplx.xowa.parsers.lnkis.redlinks.*;
+import gplx.xowa.gui.*; import gplx.xowa.html.hdumps.pages.*; import gplx.xowa.parsers.lnkis.redlinks.*;
public class Xohd_page_html_mgr__save {
private Xohd_page_srl_mgr srl_mgr = Xohd_page_srl_mgr.I;
public void Update(Bry_bfr tmp_bfr, Xowd_html_tbl tbl, Xoae_page page) {
diff --git a/400_xowa/src/gplx/xowa/html/hdumps/data/srl/Xohd_page_srl_itm.java b/400_xowa/src/gplx/xowa/html/hdumps/data/srl/Xohd_page_srl_itm.java
index 1db265a54..b53418bbd 100644
--- a/400_xowa/src/gplx/xowa/html/hdumps/data/srl/Xohd_page_srl_itm.java
+++ b/400_xowa/src/gplx/xowa/html/hdumps/data/srl/Xohd_page_srl_itm.java
@@ -16,7 +16,7 @@ You should have received a copy of the GNU Affero General Public License
along with this program. If not, see
.
*/
package gplx.xowa.html.hdumps.data.srl; import gplx.*; import gplx.xowa.*; import gplx.xowa.html.*; import gplx.xowa.html.hdumps.*; import gplx.xowa.html.hdumps.data.*;
-import gplx.core.primitives.*; import gplx.xowa.html.hzips.*; import gplx.xowa2.gui.*;
+import gplx.core.primitives.*; import gplx.xowa.html.hzips.*; import gplx.xowa.gui.*;
public interface Xohd_page_srl_itm { // INFO: serializes Xog_page to a byte[] before storing in the wiki_page_html table
byte Tid();
void Save(Xog_page hpg, Bry_bfr bfr);
diff --git a/400_xowa/src/gplx/xowa/html/hdumps/data/srl/Xohd_page_srl_itm_tst.java b/400_xowa/src/gplx/xowa/html/hdumps/data/srl/Xohd_page_srl_itm_tst.java
index 4a1c18a88..9bfdf274c 100644
--- a/400_xowa/src/gplx/xowa/html/hdumps/data/srl/Xohd_page_srl_itm_tst.java
+++ b/400_xowa/src/gplx/xowa/html/hdumps/data/srl/Xohd_page_srl_itm_tst.java
@@ -16,8 +16,9 @@ You should have received a copy of the GNU Affero General Public License
along with this program. If not, see
.
*/
package gplx.xowa.html.hdumps.data.srl; import gplx.*; import gplx.xowa.*; import gplx.xowa.html.*; import gplx.xowa.html.hdumps.*; import gplx.xowa.html.hdumps.data.*;
-import org.junit.*; import gplx.xowa.html.hdumps.core.*; import gplx.xowa.html.hzips.*; import gplx.xowa.html.hdumps.pages.*;
-import gplx.xowa2.gui.*;
+import org.junit.*;
+import gplx.xowa.html.hdumps.core.*; import gplx.xowa.html.hzips.*; import gplx.xowa.html.hdumps.pages.*;
+import gplx.xowa.gui.*;
public class Xohd_page_srl_itm_tst {
@Before public void init() {fxt.Clear();} private Xohd_page_srl_itm_fxt fxt = new Xohd_page_srl_itm_fxt();
@Test public void Body() {
diff --git a/400_xowa/src/gplx/xowa/html/hdumps/data/srl/Xohd_page_srl_itms.java b/400_xowa/src/gplx/xowa/html/hdumps/data/srl/Xohd_page_srl_itms.java
index f18ea4259..ff84b5864 100644
--- a/400_xowa/src/gplx/xowa/html/hdumps/data/srl/Xohd_page_srl_itms.java
+++ b/400_xowa/src/gplx/xowa/html/hdumps/data/srl/Xohd_page_srl_itms.java
@@ -17,7 +17,7 @@ along with this program. If not, see
.
*/
package gplx.xowa.html.hdumps.data.srl; import gplx.*; import gplx.xowa.*; import gplx.xowa.html.*; import gplx.xowa.html.hdumps.*; import gplx.xowa.html.hdumps.data.*;
import gplx.core.primitives.*; import gplx.xowa.html.hdumps.core.*; import gplx.xowa.html.hzips.*; import gplx.xowa.html.hdumps.pages.*;
-import gplx.xowa2.gui.*;
+import gplx.xowa.gui.*;
class Xohd_page_srl_itm__body extends Xohd_page_srl_itm__base {
public Xohd_page_srl_itm__body() {this.Save_tid_n_();}
@Override public byte Tid() {return Xohd_page_srl_itm_.Tid_body;}
diff --git a/400_xowa/src/gplx/xowa/html/hdumps/data/srl/Xohd_page_srl_mgr.java b/400_xowa/src/gplx/xowa/html/hdumps/data/srl/Xohd_page_srl_mgr.java
index af05a302b..d38237eb5 100644
--- a/400_xowa/src/gplx/xowa/html/hdumps/data/srl/Xohd_page_srl_mgr.java
+++ b/400_xowa/src/gplx/xowa/html/hdumps/data/srl/Xohd_page_srl_mgr.java
@@ -17,7 +17,7 @@ along with this program. If not, see
.
*/
package gplx.xowa.html.hdumps.data.srl; import gplx.*; import gplx.xowa.*; import gplx.xowa.html.*; import gplx.xowa.html.hdumps.*; import gplx.xowa.html.hdumps.data.*;
import gplx.core.primitives.*; import gplx.xowa.html.hdumps.core.*;
-import gplx.xowa2.gui.*;
+import gplx.xowa.gui.*;
public class Xohd_page_srl_mgr {
private final Xohd_page_srl_itm[] itm_ary; private final Xohd_page_srl_itm itm_body;
private final Int_obj_ref count_ref = Int_obj_ref.zero_();
diff --git a/400_xowa/src/gplx/xowa/html/heads/Xoh_head_itm__globals.java b/400_xowa/src/gplx/xowa/html/heads/Xoh_head_itm__globals.java
index ab14cb001..2b387c704 100644
--- a/400_xowa/src/gplx/xowa/html/heads/Xoh_head_itm__globals.java
+++ b/400_xowa/src/gplx/xowa/html/heads/Xoh_head_itm__globals.java
@@ -16,7 +16,7 @@ You should have received a copy of the GNU Affero General Public License
along with this program. If not, see
.
*/
package gplx.xowa.html.heads; import gplx.*; import gplx.xowa.*; import gplx.xowa.html.*;
-import gplx.xowa.langs.numbers.*;
+import gplx.xowa.langs.*; import gplx.xowa.langs.msgs.*; import gplx.xowa.langs.numbers.*;
public class Xoh_head_itm__globals extends Xoh_head_itm__base {
private final Xoh_head_wtr tmp_wtr = new Xoh_head_wtr();
@Override public byte[] Key() {return Xoh_head_itm_.Key__globals;}
diff --git a/400_xowa/src/gplx/xowa/html/heads/Xoh_head_itm__server.java b/400_xowa/src/gplx/xowa/html/heads/Xoh_head_itm__server.java
index 381f0e146..177ffd681 100644
--- a/400_xowa/src/gplx/xowa/html/heads/Xoh_head_itm__server.java
+++ b/400_xowa/src/gplx/xowa/html/heads/Xoh_head_itm__server.java
@@ -16,7 +16,7 @@ You should have received a copy of the GNU Affero General Public License
along with this program. If not, see
.
*/
package gplx.xowa.html.heads; import gplx.*; import gplx.xowa.*; import gplx.xowa.html.*;
-import gplx.core.json.*;
+import gplx.langs.jsons.*;
import gplx.xowa.servers.http.*;
public class Xoh_head_itm__server extends Xoh_head_itm__base {
@Override public byte[] Key() {return Xoh_head_itm_.Key__server;}
diff --git a/400_xowa/src/gplx/xowa/html/heads/Xoh_head_mgr_tst.java b/400_xowa/src/gplx/xowa/html/heads/Xoh_head_mgr_tst.java
index 1a8be9806..bd8ad86b7 100644
--- a/400_xowa/src/gplx/xowa/html/heads/Xoh_head_mgr_tst.java
+++ b/400_xowa/src/gplx/xowa/html/heads/Xoh_head_mgr_tst.java
@@ -18,6 +18,7 @@ along with this program. If not, see
.
package gplx.xowa.html.heads; import gplx.*; import gplx.xowa.*; import gplx.xowa.html.*;
import org.junit.*;
import gplx.xowa.gui.*;
+import gplx.xowa.langs.*;
public class Xoh_head_mgr_tst {
@Before public void init() {fxt.Clear();} private Xoh_head_mgr_fxt fxt = new Xoh_head_mgr_fxt();
@Test public void Css() {
diff --git a/400_xowa/src/gplx/xowa/html/heads/Xoh_head_wtr.java b/400_xowa/src/gplx/xowa/html/heads/Xoh_head_wtr.java
index 00984f5ef..672fdea9f 100644
--- a/400_xowa/src/gplx/xowa/html/heads/Xoh_head_wtr.java
+++ b/400_xowa/src/gplx/xowa/html/heads/Xoh_head_wtr.java
@@ -16,7 +16,7 @@ You should have received a copy of the GNU Affero General Public License
along with this program. If not, see
.
*/
package gplx.xowa.html.heads; import gplx.*; import gplx.xowa.*; import gplx.xowa.html.*;
-import gplx.html.*;
+import gplx.langs.htmls.*;
public class Xoh_head_wtr {
private int indent; private int reset_bgn, reset_end;
private boolean js_tail_inited = false;
diff --git a/400_xowa/src_120_wiki/gplx/xowa/Xow_fragment_mgr.java b/400_xowa/src/gplx/xowa/html/heads/Xow_fragment_mgr.java
similarity index 93%
rename from 400_xowa/src_120_wiki/gplx/xowa/Xow_fragment_mgr.java
rename to 400_xowa/src/gplx/xowa/html/heads/Xow_fragment_mgr.java
index 06180dc3a..04ae20764 100644
--- a/400_xowa/src_120_wiki/gplx/xowa/Xow_fragment_mgr.java
+++ b/400_xowa/src/gplx/xowa/html/heads/Xow_fragment_mgr.java
@@ -15,8 +15,8 @@ GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see
.
*/
-package gplx.xowa; import gplx.*;
-import gplx.xowa.langs.numbers.*;
+package gplx.xowa.html.heads; import gplx.*; import gplx.xowa.*; import gplx.xowa.html.*;
+import gplx.xowa.langs.*; import gplx.xowa.langs.msgs.*; import gplx.xowa.langs.numbers.*;
public class Xow_fragment_mgr implements GfoInvkAble {
public Xow_fragment_mgr(Xowe_wiki wiki) {this.wiki = wiki;} private Xowe_wiki wiki;
public byte[] Html_js_edit_toolbar() {return html_js_edit_toolbar;} private byte[] html_js_edit_toolbar;
diff --git a/400_xowa/src_120_wiki/gplx/xowa/Xow_fragment_mgr_tst.java b/400_xowa/src/gplx/xowa/html/heads/Xow_fragment_mgr_tst.java
similarity index 92%
rename from 400_xowa/src_120_wiki/gplx/xowa/Xow_fragment_mgr_tst.java
rename to 400_xowa/src/gplx/xowa/html/heads/Xow_fragment_mgr_tst.java
index 8a425d37b..eaa68febc 100644
--- a/400_xowa/src_120_wiki/gplx/xowa/Xow_fragment_mgr_tst.java
+++ b/400_xowa/src/gplx/xowa/html/heads/Xow_fragment_mgr_tst.java
@@ -15,9 +15,9 @@ GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see
.
*/
-package gplx.xowa; import gplx.*;
+package gplx.xowa.html.heads; import gplx.*; import gplx.xowa.*; import gplx.xowa.html.*;
import org.junit.*;
-import gplx.xowa.langs.numbers.*;
+import gplx.xowa.langs.*; import gplx.xowa.langs.numbers.*;
public class Xow_fragment_mgr_tst {
Xow_fragment_mgr_fxt fxt = new Xow_fragment_mgr_fxt();
@Before public void init() {fxt.Clear();}
diff --git a/400_xowa/src/gplx/xowa/html/hrefs/Xoh_href_parser.java b/400_xowa/src/gplx/xowa/html/hrefs/Xoh_href_parser.java
index 7b9c67afa..8731792d0 100644
--- a/400_xowa/src/gplx/xowa/html/hrefs/Xoh_href_parser.java
+++ b/400_xowa/src/gplx/xowa/html/hrefs/Xoh_href_parser.java
@@ -25,8 +25,8 @@ public class Xoh_href_parser {
if (seg_obj == null) {
Xol_vnt_mgr vnt_mgr = wiki.Lang().Vnt_mgr();
if (vnt_mgr.Enabled() && raw[0] == Byte_ascii.Slash) {
- int slash_end = Bry_finder.Find_fwd(raw, Byte_ascii.Slash, 1);
- if (vnt_mgr.Vnt_grp().Has(Bry_.Mid(raw, 1, slash_end))) {
+ int slash_end = Bry_find_.Find_fwd(raw, Byte_ascii.Slash, 1);
+ if (vnt_mgr.Regy().Has(Bry_.Mid(raw, 1, slash_end))) {
raw = Bry_.Add(wiki.Domain_bry(), raw);
}
}
diff --git a/400_xowa/src/gplx/xowa/html/hrefs/Xoh_href_parser_tst.java b/400_xowa/src/gplx/xowa/html/hrefs/Xoh_href_parser_tst.java
index 58e3a2f52..dd0638537 100644
--- a/400_xowa/src/gplx/xowa/html/hrefs/Xoh_href_parser_tst.java
+++ b/400_xowa/src/gplx/xowa/html/hrefs/Xoh_href_parser_tst.java
@@ -16,7 +16,7 @@ You should have received a copy of the GNU Affero General Public License
along with this program. If not, see
.
*/
package gplx.xowa.html.hrefs; import gplx.*; import gplx.xowa.*; import gplx.xowa.html.*;
-import org.junit.*; import gplx.xowa.urls.*;
+import org.junit.*; import gplx.xowa.urls.*; import gplx.xowa.nss.*;
public class Xoh_href_parser_tst {
private final Xoh_href_parser_fxt fxt = new Xoh_href_parser_fxt();
@Test public void Wiki__basic() {
diff --git a/400_xowa/src/gplx/xowa/html/hrefs/Xoh_href_wtr.java b/400_xowa/src/gplx/xowa/html/hrefs/Xoh_href_wtr.java
index 7047ef6a8..dbaeb6588 100644
--- a/400_xowa/src/gplx/xowa/html/hrefs/Xoh_href_wtr.java
+++ b/400_xowa/src/gplx/xowa/html/hrefs/Xoh_href_wtr.java
@@ -16,6 +16,7 @@ You should have received a copy of the GNU Affero General Public License
along with this program. If not, see
.
*/
package gplx.xowa.html.hrefs; import gplx.*; import gplx.xowa.*; import gplx.xowa.html.*;
+import gplx.langs.htmls.encoders.*;
import gplx.xowa.wikis.xwikis.*;
public class Xoh_href_wtr {
private final Bry_bfr encoder_bfr = Bry_bfr.reset_(255), tmp_bfr = Bry_bfr.reset_(255);
@@ -70,11 +71,11 @@ public class Xoh_href_wtr {
bfr.Add_bfr_and_clear(encoder_bfr);
}
private void Build_to_bfr_page(Xoa_ttl ttl, byte[] ttl_full, int page_bgn) {
- int anch_bgn = Bry_finder.Find_fwd(ttl_full, Byte_ascii.Hash); // NOTE: cannot use Anch_bgn b/c Anch_bgn has bug with whitespace
+ int anch_bgn = Bry_find_.Find_fwd(ttl_full, Byte_ascii.Hash); // NOTE: cannot use Anch_bgn b/c Anch_bgn has bug with whitespace
if (anch_bgn == Bry_.NotFound) // no anchor; just add page
encoder.Encode(encoder_bfr, ttl_full, page_bgn, ttl_full.length);
else { // anchor exists; check if anchor is preceded by ws; EX: [[A #b]] -> "/wiki/A#b"
- int page_end = Bry_finder.Find_bwd_last_ws(ttl_full, anch_bgn); // first 1st ws before #; handles multiple ws
+ int page_end = Bry_find_.Find_bwd_last_ws(ttl_full, anch_bgn); // first 1st ws before #; handles multiple ws
page_end = page_end == Bry_.NotFound ? anch_bgn : page_end; // if ws not found, use # pos; else use 1st ws pos
encoder.Encode(encoder_bfr, ttl_full, page_bgn, page_end); // add page
encoder.Encode(encoder_bfr, ttl_full, anch_bgn, ttl_full.length); // add anchor
diff --git a/400_xowa/src/gplx/xowa/html/hrefs/Xoh_href_wtr_tst.java b/400_xowa/src/gplx/xowa/html/hrefs/Xoh_href_wtr_tst.java
index f4f6cc24c..b56df3e4b 100644
--- a/400_xowa/src/gplx/xowa/html/hrefs/Xoh_href_wtr_tst.java
+++ b/400_xowa/src/gplx/xowa/html/hrefs/Xoh_href_wtr_tst.java
@@ -17,7 +17,7 @@ along with this program. If not, see
.
*/
package gplx.xowa.html.hrefs; import gplx.*; import gplx.xowa.*; import gplx.xowa.html.*;
import org.junit.*;
-import gplx.core.net.*;
+import gplx.core.net.*; import gplx.xowa.nss.*;
public class Xoh_href_wtr_tst {
private final Xoh_href_wtr_fxt fxt = new Xoh_href_wtr_fxt();
@Test public void Xwiki_enc() {fxt.Test_build("wikt:abc?d" , "/site/en.wiktionary.org/wiki/abc%3Fd");}
diff --git a/400_xowa/src/gplx/xowa/html/hzips/Xodump_stats_tbl.java b/400_xowa/src/gplx/xowa/html/hzips/Xodump_stats_tbl.java
index f1de9d003..06e0f1029 100644
--- a/400_xowa/src/gplx/xowa/html/hzips/Xodump_stats_tbl.java
+++ b/400_xowa/src/gplx/xowa/html/hzips/Xodump_stats_tbl.java
@@ -17,7 +17,7 @@ along with this program. If not, see
.
*/
package gplx.xowa.html.hzips; import gplx.*; import gplx.xowa.*; import gplx.xowa.html.*;
import gplx.dbs.*; import gplx.dbs.engines.sqlite.*; import gplx.xowa.html.hdumps.core.*; import gplx.xowa.html.hzips.*; import gplx.xowa.html.hdumps.pages.*;
-import gplx.xowa2.gui.*;
+import gplx.xowa.gui.*;
public class Xodump_stats_tbl implements RlsAble {
private static final String tbl_name = "hdump_stats"; private static final Db_meta_fld_list flds = Db_meta_fld_list.new_();
private static final String
diff --git a/400_xowa/src/gplx/xowa/html/hzips/Xow_hzip_dict.java b/400_xowa/src/gplx/xowa/html/hzips/Xow_hzip_dict.java
index 947147d1e..3d6dd477e 100644
--- a/400_xowa/src/gplx/xowa/html/hzips/Xow_hzip_dict.java
+++ b/400_xowa/src/gplx/xowa/html/hzips/Xow_hzip_dict.java
@@ -18,7 +18,7 @@ along with this program. If not, see
.
package gplx.xowa.html.hzips; import gplx.*; import gplx.xowa.*; import gplx.xowa.html.*;
class Xow_hzip_dict {// SERIALIZED
public static final byte Escape = Byte_.By_int(255);
- public static final byte[] Escape_bry = Bry_.ints_(255);
+ public static final byte[] Escape_bry = Bry_.new_ints(255);
public static final byte
Tid_a_rhs = 0
, Tid_lnki_text_n = 1
@@ -31,14 +31,14 @@ class Xow_hzip_dict {// SERIALIZED
, Tid_hdr_rhs = 8
;
public static final byte[]
- Bry_a_rhs = Bry_.ints_(Escape, Tid_a_rhs)
- , Bry_lnki_text_n = Bry_.ints_(Escape, Tid_lnki_text_n)
- , Bry_lnki_text_y = Bry_.ints_(Escape, Tid_lnki_text_y)
- , Bry_lnke_txt = Bry_.ints_(Escape, Tid_lnke_txt)
- , Bry_lnke_brk_text_n = Bry_.ints_(Escape, Tid_lnke_brk_text_n)
- , Bry_lnke_brk_text_y = Bry_.ints_(Escape, Tid_lnke_brk_text_y)
- , Bry_img_full = Bry_.ints_(Escape, Tid_img_full)
- , Bry_hdr_lhs = Bry_.ints_(Escape, Tid_hdr_lhs)
- , Bry_hdr_rhs = Bry_.ints_(Escape, Tid_hdr_rhs)
+ Bry_a_rhs = Bry_.new_ints(Escape, Tid_a_rhs)
+ , Bry_lnki_text_n = Bry_.new_ints(Escape, Tid_lnki_text_n)
+ , Bry_lnki_text_y = Bry_.new_ints(Escape, Tid_lnki_text_y)
+ , Bry_lnke_txt = Bry_.new_ints(Escape, Tid_lnke_txt)
+ , Bry_lnke_brk_text_n = Bry_.new_ints(Escape, Tid_lnke_brk_text_n)
+ , Bry_lnke_brk_text_y = Bry_.new_ints(Escape, Tid_lnke_brk_text_y)
+ , Bry_img_full = Bry_.new_ints(Escape, Tid_img_full)
+ , Bry_hdr_lhs = Bry_.new_ints(Escape, Tid_hdr_lhs)
+ , Bry_hdr_rhs = Bry_.new_ints(Escape, Tid_hdr_rhs)
;
}
diff --git a/400_xowa/src/gplx/xowa/html/hzips/Xow_hzip_int__tst.java b/400_xowa/src/gplx/xowa/html/hzips/Xow_hzip_int__tst.java
index 35c560dff..31d1bf14e 100644
--- a/400_xowa/src/gplx/xowa/html/hzips/Xow_hzip_int__tst.java
+++ b/400_xowa/src/gplx/xowa/html/hzips/Xow_hzip_int__tst.java
@@ -44,7 +44,7 @@ class Xow_hzip_int__fxt {
public void Test_srl(int val, int... bytes) {
Xow_hzip_int_.Save_bin_int_abrv(bfr, val);
byte[] save = bfr.Xto_bry_and_clear();
- Tfds.Eq_ary(Bry_.ints_(bytes), save, "save");
+ Tfds.Eq_ary(Bry_.new_ints(bytes), save, "save");
int load = Xow_hzip_int_.Load_bin_int_abrv(save, save.length, 0, read);
Tfds.Eq(val, load, "load");
Tfds.Eq(bytes.length, read.Val(), "load_read");
diff --git a/400_xowa/src/gplx/xowa/html/hzips/Xow_hzip_itm__anchor.java b/400_xowa/src/gplx/xowa/html/hzips/Xow_hzip_itm__anchor.java
index 43ea8336c..17afcf7e9 100644
--- a/400_xowa/src/gplx/xowa/html/hzips/Xow_hzip_itm__anchor.java
+++ b/400_xowa/src/gplx/xowa/html/hzips/Xow_hzip_itm__anchor.java
@@ -17,7 +17,8 @@ along with this program. If not, see
.
*/
package gplx.xowa.html.hzips; import gplx.*; import gplx.xowa.*; import gplx.xowa.html.*;
import gplx.core.primitives.*; import gplx.core.brys.*; import gplx.core.btries.*;
-import gplx.html.*; import gplx.xowa.wikis.ttls.*;
+import gplx.langs.htmls.*; import gplx.xowa.wikis.ttls.*;
+import gplx.xowa.nss.*;
import gplx.xowa.parsers.lnkis.*;
public class Xow_hzip_itm__anchor {
private Xow_hzip_mgr hzip_mgr; private Xow_ttl_parser ttl_parser; private Byte_obj_ref xtid_ref = Byte_obj_ref.zero_();
@@ -44,7 +45,7 @@ public class Xow_hzip_itm__anchor {
private static int[] Save_img_full_pow = new int[] {0, 1, 2};
private int Save_img_full(Bry_bfr bfr, Xodump_stats_itm stats, byte[] src, int src_len, int bgn, int pos) {
bfr.Add(Xow_hzip_dict.Bry_img_full);
- int xatrs_bgn = Bry_finder.Move_fwd(src, Find_img_xatrs, pos, src_len); if (xatrs_bgn == Bry_finder.Not_found) return hzip_mgr.Warn_by_pos_add_dflt("a.img_xatrs_missing", bgn, pos);
+ int xatrs_bgn = Bry_find_.Move_fwd(src, Find_img_xatrs, pos, src_len); if (xatrs_bgn == Bry_find_.Not_found) return hzip_mgr.Warn_by_pos_add_dflt("a.img_xatrs_missing", bgn, pos);
bry_rdr.Init(src, xatrs_bgn);
int a_cls = bry_rdr.Read_int_to_pipe();
int a_rel = bry_rdr.Read_int_to_pipe();
@@ -59,30 +60,30 @@ public class Xow_hzip_itm__anchor {
}
public int Save_lnki(Bry_bfr bfr, Xodump_stats_itm stats, byte[] src, int src_len, int bgn, int pos, boolean caption) {
// href
- int ttl_bgn = Bry_finder.Find_fwd(src, Find_href_bry, pos, src_len); if (ttl_bgn == Bry_finder.Not_found) return Xow_hzip_mgr.Unhandled;//hzip_mgr.Warn_by_pos_add_dflt("a.ttl_bgn_missing", bgn, pos);
+ int ttl_bgn = Bry_find_.Find_fwd(src, Find_href_bry, pos, src_len); if (ttl_bgn == Bry_find_.Not_found) return Xow_hzip_mgr.Unhandled;//hzip_mgr.Warn_by_pos_add_dflt("a.ttl_bgn_missing", bgn, pos);
ttl_bgn += Find_href_bry.length;
// site or wiki; EX: "/site/" or "/wiki/"
byte[] site = null;
Object href_tid_obj = btrie_href.Match_bgn(src, ttl_bgn, src_len);
if (href_tid_obj == null) return Xow_hzip_mgr.Unhandled; // not "/wiki/" or "/site/"
if (((Byte_obj_val)href_tid_obj).Val() == Href_tid_site) { // site; EX:"/site/en.wiktionary.org/"
- int site_bgn = ttl_bgn + Href_bry_len; int site_end = Bry_finder.Find_fwd(src, Byte_ascii.Slash, site_bgn);
+ int site_bgn = ttl_bgn + Href_bry_len; int site_end = Bry_find_.Find_fwd(src, Byte_ascii.Slash, site_bgn);
byte[] site_domain = Bry_.Mid(src, site_bgn, site_end);
site = site_domain;
}
else // page; EX: "/wiki/Page"
ttl_bgn += Href_bry_len;
- int ttl_end = Bry_finder.Find_fwd(src, Byte_ascii.Quote, ttl_bgn , src_len); if (ttl_end == Bry_finder.Not_found) return hzip_mgr.Warn_by_pos_add_dflt("a.ttl_end_missing", bgn, ttl_bgn);
+ int ttl_end = Bry_find_.Find_fwd(src, Byte_ascii.Quote, ttl_bgn , src_len); if (ttl_end == Bry_find_.Not_found) return hzip_mgr.Warn_by_pos_add_dflt("a.ttl_end_missing", bgn, ttl_bgn);
Xoa_ttl ttl = ttl_parser.Ttl_parse(Bry_.Mid(src, ttl_bgn, ttl_end)); if (ttl == null) return hzip_mgr.Warn_by_pos("a.ttl_invalid", ttl_bgn, ttl_end);
- int a_lhs_end = Bry_finder.Find_fwd(src, Byte_ascii.Gt, ttl_end, src_len); if (a_lhs_end == Bry_finder.Not_found) return hzip_mgr.Warn_by_pos_add_dflt("a.a_lhs_end_missing", bgn, ttl_end);
+ int a_lhs_end = Bry_find_.Find_fwd(src, Byte_ascii.Gt, ttl_end, src_len); if (a_lhs_end == Bry_find_.Not_found) return hzip_mgr.Warn_by_pos_add_dflt("a.a_lhs_end_missing", bgn, ttl_end);
++a_lhs_end; // skip >
// id
- int id_bgn = Bry_finder.Find_fwd(src, Find_id_bry, ttl_end, src_len); if (id_bgn == Bry_finder.Not_found) return Xow_hzip_mgr.Unhandled;
+ int id_bgn = Bry_find_.Find_fwd(src, Find_id_bry, ttl_end, src_len); if (id_bgn == Bry_find_.Not_found) return Xow_hzip_mgr.Unhandled;
if (id_bgn > a_lhs_end) return Xow_hzip_mgr.Unhandled;
id_bgn += Find_id_bry.length + gplx.xowa.parsers.lnkis.redlinks.Xopg_redlink_lnki_list.Lnki_id_prefix_len;
- int id_end = Bry_finder.Find_fwd(src, Byte_ascii.Quote, id_bgn, src_len); if (id_end == Bry_finder.Not_found) return Xow_hzip_mgr.Unhandled;
- int id = Bry_.To_int_or(src, id_bgn, id_end, -1); if (id == Bry_finder.Not_found) return Xow_hzip_mgr.Unhandled;
- int a_rhs_bgn = Bry_finder.Find_fwd(src, Find_a_rhs_bgn_bry, a_lhs_end, src_len); if (a_rhs_bgn == Bry_finder.Not_found) return hzip_mgr.Warn_by_pos_add_dflt("a.a_rhs_bgn_missing", bgn, ttl_end);
+ int id_end = Bry_find_.Find_fwd(src, Byte_ascii.Quote, id_bgn, src_len); if (id_end == Bry_find_.Not_found) return Xow_hzip_mgr.Unhandled;
+ int id = Bry_.To_int_or(src, id_bgn, id_end, -1); if (id == Bry_find_.Not_found) return Xow_hzip_mgr.Unhandled;
+ int a_rhs_bgn = Bry_find_.Find_fwd(src, Find_a_rhs_bgn_bry, a_lhs_end, src_len); if (a_rhs_bgn == Bry_find_.Not_found) return hzip_mgr.Warn_by_pos_add_dflt("a.a_rhs_bgn_missing", bgn, ttl_end);
int ttl_len = ttl_end - ttl_bgn;
int html_text_len = a_rhs_bgn - a_lhs_end;
if ( !caption // lnki_text_n; EX: [[A]] not [[A|A1]]
@@ -117,27 +118,27 @@ public class Xow_hzip_itm__anchor {
}
}
public int Save_lnke(Bry_bfr bfr, Xodump_stats_itm stats, byte[] src, int src_len, int bgn, int pos, byte xtid) {//
http://a.org
- int href_bgn = Bry_finder.Find_fwd(src, Find_href_bry, pos, src_len); if (href_bgn == Bry_finder.Not_found) return hzip_mgr.Warn_by_pos_add_dflt("a.href_missing", bgn, pos);
+ int href_bgn = Bry_find_.Find_fwd(src, Find_href_bry, pos, src_len); if (href_bgn == Bry_find_.Not_found) return hzip_mgr.Warn_by_pos_add_dflt("a.href_missing", bgn, pos);
href_bgn += Find_href_len;
- int href_end = Bry_finder.Find_fwd(src, Byte_ascii.Quote, href_bgn, src_len); if (href_end == Bry_finder.Not_found) return hzip_mgr.Warn_by_pos_add_dflt("a.href_missing", bgn, href_bgn);
+ int href_end = Bry_find_.Find_fwd(src, Byte_ascii.Quote, href_bgn, src_len); if (href_end == Bry_find_.Not_found) return hzip_mgr.Warn_by_pos_add_dflt("a.href_missing", bgn, href_bgn);
int bfr_bgn = bfr.Len();
bfr.Add_byte(Xow_hzip_dict.Escape).Add_byte(xtid);
bfr.Add_mid(src, href_bgn, href_end);
bfr.Add_byte(Xow_hzip_dict.Escape);
switch (xtid) {
case Xow_hzip_dict.Tid_lnke_txt: {
- int a_rhs_bgn = Bry_finder.Find_fwd(src, Find_a_rhs_bgn_bry, href_end, src_len); if (a_rhs_bgn == Bry_finder.Not_found) return hzip_mgr.Warn_by_pos_add_dflt("a.a_rhs_bgn_missing", bgn, href_end);
+ int a_rhs_bgn = Bry_find_.Find_fwd(src, Find_a_rhs_bgn_bry, href_end, src_len); if (a_rhs_bgn == Bry_find_.Not_found) return hzip_mgr.Warn_by_pos_add_dflt("a.a_rhs_bgn_missing", bgn, href_end);
stats.Lnke_txt_add();
return a_rhs_bgn + Find_a_rhs_bgn_len;
}
case Xow_hzip_dict.Tid_lnke_brk_text_n: {
- int a_lhs_end = Bry_finder.Find_fwd(src, Byte_ascii.Gt, href_end, src_len); if (a_lhs_end == Bry_finder.Not_found) return hzip_mgr.Warn_by_pos_add_dflt("a.a_lhs_end_missing", bgn, href_end);
+ int a_lhs_end = Bry_find_.Find_fwd(src, Byte_ascii.Gt, href_end, src_len); if (a_lhs_end == Bry_find_.Not_found) return hzip_mgr.Warn_by_pos_add_dflt("a.a_lhs_end_missing", bgn, href_end);
if (src[a_lhs_end + 1] != Byte_ascii.Brack_bgn) { // check if next char is [; DATE:2015-08-25
bfr.Delete_rng_to_end(bfr_bgn); // delete from start and exit;
return Xow_hzip_mgr.Unhandled;
}
int num_bgn = a_lhs_end + 2; // skip >[
- int num_end = Bry_finder.Find_fwd(src, Byte_ascii.Brack_end, num_bgn, src_len); if (num_end == Bry_finder.Not_found) return hzip_mgr.Warn_by_pos_add_dflt("a.num_end_missing", bgn, href_end);
+ int num_end = Bry_find_.Find_fwd(src, Byte_ascii.Brack_end, num_bgn, src_len); if (num_end == Bry_find_.Not_found) return hzip_mgr.Warn_by_pos_add_dflt("a.num_end_missing", bgn, href_end);
int num = Bry_.To_int_or(src, num_bgn, num_end, -1); if (num == -1) return hzip_mgr.Warn_by_pos_add_dflt("a.num_invalid", num_bgn, num_end);
Xow_hzip_int_.Save_bin_int_abrv(bfr, num);
int a_rhs_bgn = num_end + 1;
@@ -147,7 +148,7 @@ public class Xow_hzip_itm__anchor {
return a_rhs_end;
}
case Xow_hzip_dict.Tid_lnke_brk_text_y: {
- int a_lhs_end = Bry_finder.Find_fwd(src, Byte_ascii.Gt, href_end, src_len); if (a_lhs_end == Bry_finder.Not_found) return hzip_mgr.Warn_by_pos_add_dflt("a.a_lhs_end_missing", bgn, href_end);
+ int a_lhs_end = Bry_find_.Find_fwd(src, Byte_ascii.Gt, href_end, src_len); if (a_lhs_end == Bry_find_.Not_found) return hzip_mgr.Warn_by_pos_add_dflt("a.a_lhs_end_missing", bgn, href_end);
stats.Lnke_brk_text_y_add();
return a_lhs_end + 1;
}
@@ -157,7 +158,7 @@ public class Xow_hzip_itm__anchor {
}
private Int_obj_ref count_ref = Int_obj_ref.zero_();
public int Load_lnke(Bry_bfr bfr, byte[] src, int src_len, int href_bgn, byte xtid) {
- int href_end = Bry_finder.Find_fwd(src, Xow_hzip_dict.Escape, href_bgn, src_len); if (href_end == Bry_finder.Not_found) return hzip_mgr.Warn_by_pos_add_dflt("a.href_missing", href_bgn, href_bgn);
+ int href_end = Bry_find_.Find_fwd(src, Xow_hzip_dict.Escape, href_bgn, src_len); if (href_end == Bry_find_.Not_found) return hzip_mgr.Warn_by_pos_add_dflt("a.href_missing", href_bgn, href_bgn);
switch (xtid) {
case Xow_hzip_dict.Tid_lnke_txt:
bfr.Add_str_a7("
").Add_mid(src, href_bgn, href_end).Add_str_a7("");
@@ -185,12 +186,12 @@ public class Xow_hzip_itm__anchor {
int ttl_bgn = bgn + 1 + id_count_ref.Val();
if (src[ttl_bgn] == Byte_ascii.Pipe) { // if "|" after ns, then site is present; EX: "0|enwiki" vs. "0page"
int site_bgn = ttl_bgn + 1;
- int site_end = Bry_finder.Find_fwd(src, Byte_ascii.Pipe, site_bgn, src_len);
+ int site_end = Bry_find_.Find_fwd(src, Byte_ascii.Pipe, site_bgn, src_len);
site_bry = Bry_.Mid(src, site_bgn, site_end);
ttl_bgn = site_end + 1;
}
// page
- int ttl_end = Bry_finder.Find_fwd(src, Xow_hzip_dict.Escape, ttl_bgn, src_len); if (ttl_end == Bry_finder.Not_found) return hzip_mgr.Warn_by_pos_add_dflt("a.ttl_end_missing", bgn, ttl_bgn);
+ int ttl_end = Bry_find_.Find_fwd(src, Xow_hzip_dict.Escape, ttl_bgn, src_len); if (ttl_end == Bry_find_.Not_found) return hzip_mgr.Warn_by_pos_add_dflt("a.ttl_end_missing", bgn, ttl_bgn);
byte[] ttl_bry = Bry_.Mid(src, ttl_bgn, ttl_end);
Xoa_ttl ttl = ttl_parser.Ttl_parse(ns.Id(), ttl_bry); if (ttl == null) return hzip_mgr.Warn_by_pos_add_dflt("a.ttl_is_invalid", bgn, ttl_bgn);
byte[] ttl_full = ttl.Full_db();
diff --git a/400_xowa/src/gplx/xowa/html/hzips/Xow_hzip_itm__anchor_tst.java b/400_xowa/src/gplx/xowa/html/hzips/Xow_hzip_itm__anchor_tst.java
index df11d3334..b9fcaa9b6 100644
--- a/400_xowa/src/gplx/xowa/html/hzips/Xow_hzip_itm__anchor_tst.java
+++ b/400_xowa/src/gplx/xowa/html/hzips/Xow_hzip_itm__anchor_tst.java
@@ -20,44 +20,44 @@ import org.junit.*; import gplx.xowa.html.*;
public class Xow_hzip_itm__anchor_tst {
@Before public void init() {fxt.Clear();} private Xow_hzip_mgr_fxt fxt = new Xow_hzip_mgr_fxt();
@Test public void Srl_lnki_text_n() {
- byte[][] brys = Bry_.Ary(Xow_hzip_dict.Bry_lnki_text_n, Bry_.ints_(2), fxt.Make_int(3), Bry_.new_a7("A"), Xow_hzip_dict.Escape_bry); // 2=ns_ord for Main
+ byte[][] brys = Bry_.Ary(Xow_hzip_dict.Bry_lnki_text_n, Bry_.new_ints(2), fxt.Make_int(3), Bry_.new_a7("A"), Xow_hzip_dict.Escape_bry); // 2=ns_ord for Main
fxt.Test_save(brys, "
A");
fxt.Test_load(brys, "
A");
}
@Test public void Srl_lnki_text_n_alt_case() {
- byte[][] brys = Bry_.Ary(Xow_hzip_dict.Bry_lnki_text_n, Bry_.ints_(2), fxt.Make_int(3), Bry_.new_a7("a"), Xow_hzip_dict.Escape_bry);
+ byte[][] brys = Bry_.Ary(Xow_hzip_dict.Bry_lnki_text_n, Bry_.new_ints(2), fxt.Make_int(3), Bry_.new_a7("a"), Xow_hzip_dict.Escape_bry);
fxt.Test_save(brys, "
a");
fxt.Test_load(brys, "
a");
}
@Test public void Srl_lnki_text_n_ns() {
- byte[][] brys = Bry_.Ary(Xow_hzip_dict.Bry_lnki_text_n, Bry_.ints_(12), fxt.Make_int(3), Bry_.new_a7("A"), Xow_hzip_dict.Escape_bry);
+ byte[][] brys = Bry_.Ary(Xow_hzip_dict.Bry_lnki_text_n, Bry_.new_ints(12), fxt.Make_int(3), Bry_.new_a7("A"), Xow_hzip_dict.Escape_bry);
fxt.Test_save(brys, "
Template:A");
fxt.Test_load(brys, "
Template:A");
}
@Test public void Srl_lnki_text_n_apos() {
- byte[][] brys = Bry_.Ary(Xow_hzip_dict.Bry_lnki_text_n, Bry_.ints_(12), fxt.Make_int(3), Bry_.new_a7("A'b"), Xow_hzip_dict.Escape_bry);
+ byte[][] brys = Bry_.Ary(Xow_hzip_dict.Bry_lnki_text_n, Bry_.new_ints(12), fxt.Make_int(3), Bry_.new_a7("A'b"), Xow_hzip_dict.Escape_bry);
fxt.Test_save(brys, "
Template:A'b");
fxt.Test_load(brys, "
Template:A'b");
}
@Test public void Srl_lnki_text_n_xwiki() {
- byte[][] brys = Bry_.Ary(Xow_hzip_dict.Bry_lnki_text_n, Bry_.ints_(2), fxt.Make_int(3), Byte_ascii.Pipe_bry, Bry_.new_a7("en.wiktionary.org"), Byte_ascii.Pipe_bry, Bry_.new_a7("A"), Xow_hzip_dict.Escape_bry);
+ byte[][] brys = Bry_.Ary(Xow_hzip_dict.Bry_lnki_text_n, Bry_.new_ints(2), fxt.Make_int(3), Byte_ascii.Pipe_bry, Bry_.new_a7("en.wiktionary.org"), Byte_ascii.Pipe_bry, Bry_.new_a7("A"), Xow_hzip_dict.Escape_bry);
fxt.Test_save(brys, "
A");
fxt.Test_load(brys, "
A");
}
@Test public void Srl_lnki_text_n_smoke() {
- byte[][] brys = Bry_.Ary(Bry_.new_a7("a_1"), Xow_hzip_dict.Bry_lnki_text_n, Bry_.ints_(2), fxt.Make_int(3), Bry_.new_a7("A"), Xow_hzip_dict.Escape_bry, Bry_.new_a7("a_2"));
+ byte[][] brys = Bry_.Ary(Bry_.new_a7("a_1"), Xow_hzip_dict.Bry_lnki_text_n, Bry_.new_ints(2), fxt.Make_int(3), Bry_.new_a7("A"), Xow_hzip_dict.Escape_bry, Bry_.new_a7("a_2"));
fxt.Test_save(brys, "a_1
Aa_2");
fxt.Test_load(brys, "a_1
Aa_2");
}
@Test public void Srl_lnki_text_y() {
- byte[][] brys = Bry_.Ary(Xow_hzip_dict.Bry_lnki_text_y, Bry_.ints_(2), fxt.Make_int(3), Bry_.new_a7("A"), Xow_hzip_dict.Escape_bry, Bry_.new_a7("A1"), Xow_hzip_dict.Bry_a_rhs);
+ byte[][] brys = Bry_.Ary(Xow_hzip_dict.Bry_lnki_text_y, Bry_.new_ints(2), fxt.Make_int(3), Bry_.new_a7("A"), Xow_hzip_dict.Escape_bry, Bry_.new_a7("A1"), Xow_hzip_dict.Bry_a_rhs);
fxt.Test_save(brys, "
A1");
fxt.Test_load(brys, "
A1");
}
@Test public void Srl_lnki_text_y_nest() {
byte[][] brys = Bry_.Ary
- ( Xow_hzip_dict.Bry_lnki_text_y, Bry_.ints_(2), fxt.Make_int(3), Bry_.new_a7("A"), Xow_hzip_dict.Escape_bry
- , Bry_.new_a7("B"), Xow_hzip_dict.Bry_lnki_text_y, Bry_.ints_(2), fxt.Make_int(3), Bry_.new_a7("C"), Xow_hzip_dict.Escape_bry, Bry_.new_a7("C1"), Xow_hzip_dict.Bry_a_rhs, Bry_.new_a7("D")
+ ( Xow_hzip_dict.Bry_lnki_text_y, Bry_.new_ints(2), fxt.Make_int(3), Bry_.new_a7("A"), Xow_hzip_dict.Escape_bry
+ , Bry_.new_a7("B"), Xow_hzip_dict.Bry_lnki_text_y, Bry_.new_ints(2), fxt.Make_int(3), Bry_.new_a7("C"), Xow_hzip_dict.Escape_bry, Bry_.new_a7("C1"), Xow_hzip_dict.Bry_a_rhs, Bry_.new_a7("D")
, Xow_hzip_dict.Bry_a_rhs
);
fxt.Test_save(brys, "
BC1D");
@@ -71,13 +71,13 @@ public class Xow_hzip_itm__anchor_tst {
@Test public void Srl_lnki_text_y__multiple() { // PURPOSE: if id is missing from 1st anchor, do not get from second
byte[][] brys = Bry_.Ary(Bry_.new_a7("
A")
, Xow_hzip_dict.Bry_a_rhs
- , Xow_hzip_dict.Bry_lnki_text_n, Bry_.ints_(2), fxt.Make_int(3), Bry_.new_a7("B"), Xow_hzip_dict.Escape_bry
+ , Xow_hzip_dict.Bry_lnki_text_n, Bry_.new_ints(2), fxt.Make_int(3), Bry_.new_a7("B"), Xow_hzip_dict.Escape_bry
);
fxt.Test_save(brys, "AB");
fxt.Test_load(brys, "
AB");
}
@Test public void Srl_lnki_text_y__html() { // PURPOSE: PAGE:en.w:Abyssal_plain; DATE:2015-06-02
- byte[][] brys = Bry_.Ary(Xow_hzip_dict.Bry_lnki_text_y, Bry_.ints_(2), fxt.Make_int(3), Bry_.new_a7("A"), Xow_hzip_dict.Escape_bry, Bry_.new_a7("
A1"), Xow_hzip_dict.Bry_a_rhs);
+ byte[][] brys = Bry_.Ary(Xow_hzip_dict.Bry_lnki_text_y, Bry_.new_ints(2), fxt.Make_int(3), Bry_.new_a7("A"), Xow_hzip_dict.Escape_bry, Bry_.new_a7("
A1"), Xow_hzip_dict.Bry_a_rhs);
fxt.Test_save(brys, "
A1");
}
@Test public void Srl_lnke_txt() {
diff --git a/400_xowa/src/gplx/xowa/html/hzips/Xow_hzip_itm__file_tst.java b/400_xowa/src/gplx/xowa/html/hzips/Xow_hzip_itm__file_tst.java
index 6c0d67756..e0137118f 100644
--- a/400_xowa/src/gplx/xowa/html/hzips/Xow_hzip_itm__file_tst.java
+++ b/400_xowa/src/gplx/xowa/html/hzips/Xow_hzip_itm__file_tst.java
@@ -20,7 +20,7 @@ import org.junit.*; import gplx.xowa.html.*;
public class Xow_hzip_itm__file_tst {
@Before public void init() {fxt.Clear();} private Xow_hzip_mgr_fxt fxt = new Xow_hzip_mgr_fxt();
@Test public void Srl_lnki_img_full() {
- byte[][] brys = Bry_.Ary(Xow_hzip_dict.Bry_img_full, Bry_.ints_(7), Bry_.ints_(12, 0), Bry_.new_a7("cls_other"), Bry_.new_a7("|caption_other"), Xow_hzip_dict.Escape_bry);
+ byte[][] brys = Bry_.Ary(Xow_hzip_dict.Bry_img_full, Bry_.new_ints(7), Bry_.new_ints(12, 0), Bry_.new_a7("cls_other"), Bry_.new_a7("|caption_other"), Xow_hzip_dict.Escape_bry);
fxt.Test_save(brys, "
");
// fxt.Test_load(brys, "a_1
Aa_2");
}
diff --git a/400_xowa/src/gplx/xowa/html/hzips/Xow_hzip_itm__header.java b/400_xowa/src/gplx/xowa/html/hzips/Xow_hzip_itm__header.java
index e063ac8ef..ae3612b33 100644
--- a/400_xowa/src/gplx/xowa/html/hzips/Xow_hzip_itm__header.java
+++ b/400_xowa/src/gplx/xowa/html/hzips/Xow_hzip_itm__header.java
@@ -16,7 +16,7 @@ You should have received a copy of the GNU Affero General Public License
along with this program. If not, see
.
*/
package gplx.xowa.html.hzips; import gplx.*; import gplx.xowa.*; import gplx.xowa.html.*;
-import gplx.html.*; import gplx.xowa.wikis.ttls.*;
+import gplx.langs.htmls.*; import gplx.xowa.wikis.ttls.*;
public class Xow_hzip_itm__header {
private Xow_hzip_mgr hzip_mgr;
public Xow_hzip_itm__header(Xow_hzip_mgr hzip_mgr) {this.hzip_mgr = hzip_mgr;}
@@ -31,12 +31,12 @@ public class Xow_hzip_itm__header {
return Xow_hzip_mgr.Unhandled;
}
int span_lhs_bgn = pos + 2; // +2 to skip # and >; EX: "
"
- int span_lhs_end = Bry_finder.Find_fwd(src, Byte_ascii.Gt, span_lhs_bgn, src_len); if (span_lhs_end == Bry_finder.Not_found) return hzip_mgr.Warn_by_pos_add_dflt("h.span_end_missing", bgn, pos);
+ int span_lhs_end = Bry_find_.Find_fwd(src, Byte_ascii.Gt, span_lhs_bgn, src_len); if (span_lhs_end == Bry_find_.Not_found) return hzip_mgr.Warn_by_pos_add_dflt("h.span_end_missing", bgn, pos);
++span_lhs_end; // +1 to skip >
bfr.Add(Xow_hzip_dict.Bry_hdr_lhs);
byte hdr_num = (byte)(hdr_num_byte - Byte_ascii.Num_0);
bfr.Add_byte(hdr_num);
- int hdr_end = Bry_finder.Find_fwd(src, Hdr_end, span_lhs_end, src_len); if (hdr_end == Bry_finder.Not_found) return hzip_mgr.Warn_by_pos_add_dflt("h.capt_end_missing", bgn, span_lhs_end);
+ int hdr_end = Bry_find_.Find_fwd(src, Hdr_end, span_lhs_end, src_len); if (hdr_end == Bry_find_.Not_found) return hzip_mgr.Warn_by_pos_add_dflt("h.capt_end_missing", bgn, span_lhs_end);
bfr.Add_mid(src, span_lhs_end, hdr_end);
hdr_end += Hdr_end.length;
bfr.Add(Xow_hzip_dict.Escape_bry);
@@ -46,7 +46,7 @@ public class Xow_hzip_itm__header {
public int Load(Bry_bfr bfr, byte[] src, int src_len, int bgn) {
byte hdr_num = (byte)(src[bgn] + Byte_ascii.Num_0);
int capt_bgn = bgn + 1;
- int capt_end = Bry_finder.Find_fwd(src, Xow_hzip_dict.Escape, capt_bgn, src_len); if (capt_end == Bry_finder.Not_found) return hzip_mgr.Warn_by_pos_add_dflt("hdr.capt_end_missing", bgn, capt_bgn);
+ int capt_end = Bry_find_.Find_fwd(src, Xow_hzip_dict.Escape, capt_bgn, src_len); if (capt_end == Bry_find_.Not_found) return hzip_mgr.Warn_by_pos_add_dflt("hdr.capt_end_missing", bgn, capt_bgn);
bfr.Add_str_a7("").Add_mid(src, capt_bgn, capt_end).Add_str("");
return capt_end + 1;
}
diff --git a/400_xowa/src/gplx/xowa/html/hzips/Xow_hzip_itm__header_tst.java b/400_xowa/src/gplx/xowa/html/hzips/Xow_hzip_itm__header_tst.java
index 4233fa02c..6205a3968 100644
--- a/400_xowa/src/gplx/xowa/html/hzips/Xow_hzip_itm__header_tst.java
+++ b/400_xowa/src/gplx/xowa/html/hzips/Xow_hzip_itm__header_tst.java
@@ -20,7 +20,7 @@ import org.junit.*; import gplx.xowa.html.*;
public class Xow_hzip_itm__header_tst {
@Before public void init() {fxt.Clear();} private Xow_hzip_mgr_fxt fxt = new Xow_hzip_mgr_fxt();
@Test public void Srl_basic() {
-// byte[][] brys = Bry_.Ary(Xow_hzip_dict.Bry_hdr_lhs, Bry_.ints_(2), Bry_.new_a7("A"), Xow_hzip_dict.Escape_bry);
+// byte[][] brys = Bry_.Ary(Xow_hzip_dict.Bry_hdr_lhs, Bry_.new_ints(2), Bry_.new_a7("A"), Xow_hzip_dict.Escape_bry);
// fxt.Test_save(brys, "A
");
// fxt.Test_load(brys, "A
");
}
@@ -28,7 +28,7 @@ public class Xow_hzip_itm__header_tst {
// fxt.Test_html("==A==", "A
\n");
// }
// @Test public void Srl_anchor() {
-// byte[][] brys = Bry_.Ary(Xow_hzip_dict.Bry_hdr_lhs, Bry_.ints_(2), Bry_.new_a7("A b c"), Xow_hzip_dict.Escape_bry);
+// byte[][] brys = Bry_.Ary(Xow_hzip_dict.Bry_hdr_lhs, Bry_.new_ints(2), Bry_.new_a7("A b c"), Xow_hzip_dict.Escape_bry);
// fxt.Test_save(brys, "A b c
");
//// fxt.Test_load(brys, "A b c
");
// }
diff --git a/400_xowa/src/gplx/xowa/html/hzips/Xow_hzip_itm__href.java b/400_xowa/src/gplx/xowa/html/hzips/Xow_hzip_itm__href.java
index 35533ee9b..0e55b936f 100644
--- a/400_xowa/src/gplx/xowa/html/hzips/Xow_hzip_itm__href.java
+++ b/400_xowa/src/gplx/xowa/html/hzips/Xow_hzip_itm__href.java
@@ -21,28 +21,28 @@ class Xow_hzip_itm__href {
public void Save(Bry_bfr bfr, Xodump_stats_itm stats, byte[] src, int src_len, int bgn, int pos, byte bgn_quote) {
// // ignore anchors; EX: "#a"
// int proto_bgn = pos;
-// int proto_end = Bry_finder.Find_fwd(src, Byte_ascii.Colon, proto_bgn, src_len);
+// int proto_end = Bry_find_.Find_fwd(src, Byte_ascii.Colon, proto_bgn, src_len);
// byte proto_tid = Tid_proto_other;
-// if (proto_end != Bry_finder.Not_found) {
+// if (proto_end != Bry_find_.Not_found) {
// Object proto_obj = proto_trie.Match_exact(src, pos, proto_bgn);
// if (proto_obj != null)
// proto_tid = ((Byte_obj_val)proto_obj).Val();
-// pos = Bry_finder.Find_fwd_while(src, proto_bgn + 1, src_len, Byte_ascii.Slash); // eat /; EX: http:// should position after /
+// pos = Bry_find_.Find_fwd_while(src, proto_bgn + 1, src_len, Byte_ascii.Slash); // eat /; EX: http:// should position after /
// }
// // stats.Lnke_proto_reg(proto_tid, src, proto_bgn, proto_end);
//
// int domain_bgn = pos;
-// int domain_end = Bry_finder.Find_fwd(src, Byte_ascii.Slash, domain_bgn, src_len);
-// if (domain_end == Bry_finder.Not_found) // href has no slash; assume entire String is domain EX: "www.a.org"
-// domain_end = Bry_finder.Find_fwd(src, bgn_quote, pos, src_len);
+// int domain_end = Bry_find_.Find_fwd(src, Byte_ascii.Slash, domain_bgn, src_len);
+// if (domain_end == Bry_find_.Not_found) // href has no slash; assume entire String is domain EX: "www.a.org"
+// domain_end = Bry_find_.Find_fwd(src, bgn_quote, pos, src_len);
//
-// int tld_pos = Bry_finder.Find_bwd(src, Byte_ascii.Dot, domain_bgn, src_len);
+// int tld_pos = Bry_find_.Find_bwd(src, Byte_ascii.Dot, domain_bgn, src_len);
// byte tld_tid = Tid_tld_other;
// if (tld_pos != Bry_.NotFound) {
// Object tld_obj = tld_trie.Match_exact(src, domain_bgn, domain_end);
// if (tld_obj != null)
// tld_tid = ((Byte_obj_val)tld_obj).Val();
-// pos = Bry_finder.Find_fwd_while(src, domain_bgn + 1, src_len, Byte_ascii.Slash); // eat /; EX: http:// should position after /
+// pos = Bry_find_.Find_fwd_while(src, domain_bgn + 1, src_len, Byte_ascii.Slash); // eat /; EX: http:// should position after /
// }
// // stats.Lnke_tld_reg(tld_tid, src, domain_bgn, domain_end);
}
diff --git a/400_xowa/src/gplx/xowa/html/hzips/Xow_hzip_mgr_fxt.java b/400_xowa/src/gplx/xowa/html/hzips/Xow_hzip_mgr_fxt.java
index 9087b57e2..f120dcc96 100644
--- a/400_xowa/src/gplx/xowa/html/hzips/Xow_hzip_mgr_fxt.java
+++ b/400_xowa/src/gplx/xowa/html/hzips/Xow_hzip_mgr_fxt.java
@@ -45,7 +45,7 @@ class Xow_hzip_mgr_fxt {
Tfds.Eq(expd, String_.new_u8(src));
}
public void Test_html(String html, String expd) {
- Xop_ctx ctx = wiki.Ctx(); Xop_parser parser = wiki.Parser(); Xop_tkn_mkr tkn_mkr = ctx.Tkn_mkr();
+ Xop_ctx ctx = wiki.Parser_mgr().Ctx(); Xop_parser parser = wiki.Parser_mgr().Main(); Xop_tkn_mkr tkn_mkr = ctx.Tkn_mkr();
ctx.Para().Enabled_n_();
ctx.Cur_page().Redlink_lnki_list().Clear();
byte[] html_bry = Bry_.new_u8(html);
diff --git a/400_xowa/src/gplx/xowa/html/hzips/Xow_hzip_xtid.java b/400_xowa/src/gplx/xowa/html/hzips/Xow_hzip_xtid.java
index b5a48fc4a..e8095d581 100644
--- a/400_xowa/src/gplx/xowa/html/hzips/Xow_hzip_xtid.java
+++ b/400_xowa/src/gplx/xowa/html/hzips/Xow_hzip_xtid.java
@@ -20,7 +20,7 @@ import gplx.core.primitives.*;
class Xow_hzip_xtid {
public static int Find_xtid(Xow_hzip_mgr hzip_mgr, byte[] src, int src_len, int bgn, int pos, Byte_obj_ref xtid_ref) {
int xtid_bgn = pos + Len_xtid; if (!Bry_.Match(src, pos, xtid_bgn, Bry_xtid)) return Xow_hzip_mgr.Unhandled; // next atr should be "xtid='"
- int xtid_end = Bry_finder.Find_fwd(src, Byte_ascii.Apos, xtid_bgn); if (xtid_end == Bry_finder.Not_found) return hzip_mgr.Warn_by_pos_add_dflt("xtid_end_missing", bgn, xtid_bgn);
+ int xtid_end = Bry_find_.Find_fwd(src, Byte_ascii.Apos, xtid_bgn); if (xtid_end == Bry_find_.Not_found) return hzip_mgr.Warn_by_pos_add_dflt("xtid_end_missing", bgn, xtid_bgn);
Object xtid_obj = Xtids.Get_by_mid(src, xtid_bgn, xtid_end); if (xtid_obj == null) return hzip_mgr.Warn_by_pos("a.xtid_invalid", xtid_bgn, xtid_end);
xtid_ref.Val_(xtid_obj == null ? Byte_.Min_value : ((Byte_obj_val)xtid_obj).Val());
return xtid_end;
diff --git a/400_xowa/src/gplx/xowa/html/js/Xoh_js_cbk.java b/400_xowa/src/gplx/xowa/html/js/Xoh_js_cbk.java
index 1de09f31a..b8b7fb0d7 100644
--- a/400_xowa/src/gplx/xowa/html/js/Xoh_js_cbk.java
+++ b/400_xowa/src/gplx/xowa/html/js/Xoh_js_cbk.java
@@ -17,7 +17,7 @@ along with this program. If not, see .
*/
package gplx.xowa.html.js; import gplx.*; import gplx.xowa.*; import gplx.xowa.html.*;
import gplx.core.threads.*; import gplx.xowa.xtns.pfuncs.ifs.*; import gplx.xowa.wikis.data.tbls.*;
-import gplx.core.json.*;
+import gplx.langs.jsons.*;
import gplx.xowa.html.js.*;
import gplx.xowa.gui.views.*;
import gplx.xowa.parsers.*;
@@ -46,19 +46,19 @@ public class Xoh_js_cbk implements GfoInvkAble {
}
private String Parse_to_html(GfoMsg m) {
Xowe_wiki wiki = html_itm.Owner_tab().Wiki();
- Xop_ctx ctx = wiki.Ctx();
+ Xop_ctx ctx = wiki.Parser_mgr().Ctx();
boolean old_para_enabled = ctx.Para().Enabled();
byte[] raw = Bry_.new_u8(m.Args_getAt(0).Val_to_str_or_empty());
boolean para_enabled = m.Args_count() < 2 ? false : Bool_.parse(m.Args_getAt(1).Val_to_str_or_empty());
try {
- wiki.Ctx().Para().Enabled_(para_enabled);
- wiki.Parser().Parse_text_to_wdom(root, wiki.Ctx(), wiki.Ctx().Tkn_mkr(), raw, 0);
+ ctx.Para().Enabled_(para_enabled);
+ wiki.Parser_mgr().Main().Parse_text_to_wdom(root, ctx, ctx.Tkn_mkr(), raw, 0);
byte[] data = root.Data_mid();
- wiki.Html_mgr().Html_wtr().Write_all(bfr, wiki.Ctx(), data, root);
+ wiki.Html_mgr().Html_wtr().Write_all(bfr, ctx, data, root);
return bfr.Xto_str_and_clear();
}
finally {
- wiki.Ctx().Para().Enabled_(old_para_enabled);
+ ctx.Para().Enabled_(old_para_enabled);
}
}
private String Get_page(GfoMsg m) {
@@ -95,7 +95,7 @@ public class Xoh_js_cbk implements GfoInvkAble {
private String[][] Get_titles_meta(GfoMsg m) {
Xowe_wiki wiki = html_itm.Owner_tab().Wiki();
try {
- byte[][] ttls = Bry_.Split(Bry_.new_u8((String)m.ReadValAt(0)), Byte_ascii.Nl);
+ byte[][] ttls = Bry_split_.Split(Bry_.new_u8((String)m.ReadValAt(0)), Byte_ascii.Nl);
int ttls_len = ttls.length;
String[][] rv = new String[ttls_len][];
for (int i = 0; i < ttls_len; i++) {
@@ -135,7 +135,7 @@ public class Xoh_js_cbk implements GfoInvkAble {
wdata_mgr.Wdata_wiki().Init_assert(); // NOTE: must assert else ns_mgr won't load Property
int len = m.Args_count();
if (len < 1) return null;
- byte[][] langs = Bry_.Split(m.Args_getAt(0).Val_to_bry(), Byte_ascii.Semic);
+ byte[][] langs = Bry_split_.Split(m.Args_getAt(0).Val_to_bry(), Byte_ascii.Semic);
int langs_len = langs.length;
String[] rv = new String[len - 1];
for (int i = 1; i < len; i++) {
diff --git a/400_xowa/src/gplx/xowa/html/js/Xoh_js_cbk_wdata_labels_tst.java b/400_xowa/src/gplx/xowa/html/js/Xoh_js_cbk_wdata_labels_tst.java
index 8973f9291..11c551812 100644
--- a/400_xowa/src/gplx/xowa/html/js/Xoh_js_cbk_wdata_labels_tst.java
+++ b/400_xowa/src/gplx/xowa/html/js/Xoh_js_cbk_wdata_labels_tst.java
@@ -16,7 +16,7 @@ You should have received a copy of the GNU Affero General Public License
along with this program. If not, see .
*/
package gplx.xowa.html.js; import gplx.*; import gplx.xowa.*; import gplx.xowa.html.*;
-import org.junit.*; import gplx.core.json.*; import gplx.xowa.xtns.wdatas.*;
+import org.junit.*; import gplx.langs.jsons.*; import gplx.xowa.xtns.wdatas.*;
public class Xoh_js_cbk_wdata_labels_tst {
@Before public void init() {fxt.Init();} private final Wdata_wiki_mgr_fxt fxt = new Wdata_wiki_mgr_fxt();
@Test public void Basic() {
diff --git a/400_xowa/src/gplx/xowa/html/lnkis/Xoh_file_html_fmtr__hdump.java b/400_xowa/src/gplx/xowa/html/lnkis/Xoh_file_html_fmtr__hdump.java
index b82ffdce8..0854b129d 100644
--- a/400_xowa/src/gplx/xowa/html/lnkis/Xoh_file_html_fmtr__hdump.java
+++ b/400_xowa/src/gplx/xowa/html/lnkis/Xoh_file_html_fmtr__hdump.java
@@ -16,7 +16,7 @@ You should have received a copy of the GNU Affero General Public License
along with this program. If not, see .
*/
package gplx.xowa.html.lnkis; import gplx.*; import gplx.xowa.*; import gplx.xowa.html.*;
-import gplx.html.*;
+import gplx.langs.htmls.*;
import gplx.xowa.files.*; import gplx.xowa.html.hdumps.abrvs.*;
public class Xoh_file_html_fmtr__hdump extends Xoh_file_html_fmtr__base {
private Bry_bfr tmp_bfr = Bry_bfr.reset_(128);
diff --git a/400_xowa/src/gplx/xowa/html/lnkis/Xoh_file_mgr.java b/400_xowa/src/gplx/xowa/html/lnkis/Xoh_file_mgr.java
index 5d02097d4..41f472e8d 100644
--- a/400_xowa/src/gplx/xowa/html/lnkis/Xoh_file_mgr.java
+++ b/400_xowa/src/gplx/xowa/html/lnkis/Xoh_file_mgr.java
@@ -18,6 +18,7 @@ along with this program. If not, see .
package gplx.xowa.html.lnkis; import gplx.*; import gplx.xowa.*; import gplx.xowa.html.*;
import gplx.core.primitives.*;
import gplx.xowa.files.*; import gplx.xowa.files.xfers.*; import gplx.xowa.parsers.lnkis.*;
+import gplx.xowa.nss.*;
import gplx.xowa.parsers.*;
import gplx.xowa.tdbs.metas.*;
public class Xoh_file_mgr {
diff --git a/400_xowa/src/gplx/xowa/html/lnkis/Xoh_file_wtr__basic.java b/400_xowa/src/gplx/xowa/html/lnkis/Xoh_file_wtr__basic.java
index 8d2b86cca..663bdc4c6 100644
--- a/400_xowa/src/gplx/xowa/html/lnkis/Xoh_file_wtr__basic.java
+++ b/400_xowa/src/gplx/xowa/html/lnkis/Xoh_file_wtr__basic.java
@@ -16,7 +16,10 @@ You should have received a copy of the GNU Affero General Public License
along with this program. If not, see .
*/
package gplx.xowa.html.lnkis; import gplx.*; import gplx.xowa.*; import gplx.xowa.html.*;
-import gplx.html.*; import gplx.xowa.files.*; import gplx.xowa.html.hdumps.core.*;
+import gplx.langs.htmls.*;
+import gplx.xowa.langs.*;
+import gplx.xowa.nss.*;
+import gplx.xowa.files.*; import gplx.xowa.html.hdumps.core.*;
import gplx.xowa.parsers.*; import gplx.xowa.parsers.lnkis.*; import gplx.xowa.parsers.tmpls.*;
public class Xoh_file_wtr__basic {
private final Xowe_wiki wiki; private final Xow_html_mgr html_mgr; private final Xoh_html_wtr html_wtr; private final Bry_bfr_mkr bfr_mkr; private final Bry_bfr scratch_bfr = Bry_bfr.reset_(Io_mgr.Len_kb);
diff --git a/400_xowa/src/gplx/xowa/html/lnkis/Xoh_lnki_wtr.java b/400_xowa/src/gplx/xowa/html/lnkis/Xoh_lnki_wtr.java
index 6f0f1c031..740ed8ead 100644
--- a/400_xowa/src/gplx/xowa/html/lnkis/Xoh_lnki_wtr.java
+++ b/400_xowa/src/gplx/xowa/html/lnkis/Xoh_lnki_wtr.java
@@ -16,7 +16,8 @@ You should have received a copy of the GNU Affero General Public License
along with this program. If not, see .
*/
package gplx.xowa.html.lnkis; import gplx.*; import gplx.xowa.*; import gplx.xowa.html.*;
-import gplx.html.*; import gplx.xowa.files.*; import gplx.xowa.users.history.*; import gplx.xowa.xtns.pfuncs.ttls.*; import gplx.xowa.xtns.relatedSites.*;
+import gplx.langs.htmls.*; import gplx.xowa.files.*; import gplx.xowa.users.history.*; import gplx.xowa.xtns.pfuncs.ttls.*; import gplx.xowa.xtns.relatedSites.*;
+import gplx.xowa.nss.*;
import gplx.xowa.wikis.xwikis.*; import gplx.xowa.xtns.wdatas.core.*; import gplx.xowa.html.hzips.*;
import gplx.xowa.parsers.*; import gplx.xowa.parsers.lnkis.*; import gplx.xowa.parsers.lnkis.redlinks.*;
public class Xoh_lnki_wtr {
@@ -49,7 +50,7 @@ public class Xoh_lnki_wtr {
}
Xow_xwiki_itm xwiki_lang = lnki_ttl.Wik_itm();
if ( xwiki_lang != null // lnki is xwiki; EX: [[commons:]] [[en:]] [[wikt:]]
- && xwiki_lang.Domain_tid() == wiki.Xwiki_domain_tid() // xwiki is same type as cur wiki; EX: cur=w xwiki=w -> add to xwiki_langs; cur=w xwikid=d -> don't add to xwiki_langs; DATE:2014-09-14
+ && xwiki_lang.Domain_tid() == wiki.Xwiki_mgr().Xwiki_domain_tid() // xwiki is same type as cur wiki; EX: cur=w xwiki=w -> add to xwiki_langs; cur=w xwikid=d -> don't add to xwiki_langs; DATE:2014-09-14
&& xwiki_lang.Type_is_xwiki_lang(wiki.Domain_itm().Lang_orig_key())// NOTE: use Lang_orig_id to handle xwikis between s.w and en.w; PAGE:s.q:Anonymous DATE:2014-09-10
&& !lnki_ttl.ForceLiteralLink() // not literal; [[:en:A]]
) {
diff --git a/400_xowa/src/gplx/xowa/html/modules/popups/Xow_popup_anchor_finder.java b/400_xowa/src/gplx/xowa/html/modules/popups/Xow_popup_anchor_finder.java
index 8f5b812d1..932f6933f 100644
--- a/400_xowa/src/gplx/xowa/html/modules/popups/Xow_popup_anchor_finder.java
+++ b/400_xowa/src/gplx/xowa/html/modules/popups/Xow_popup_anchor_finder.java
@@ -25,46 +25,46 @@ class Xow_popup_anchor_finder {
if (bgn == Xop_parser_.Doc_bgn_bos && Find_hdr(bgn)) return Xop_parser_.Doc_bgn_bos;// handle BOS separately which won't fit "\n=" search below; EX: "BOS==A==\n"
int lhs_bgn = bgn;
while (true) {
- lhs_bgn = Bry_finder.Find_fwd(src, Hdr_bgn, nl_lhs, src_len);
+ lhs_bgn = Bry_find_.Find_fwd(src, Hdr_bgn, nl_lhs, src_len);
if (lhs_bgn == Bry_.NotFound) break; // "\n=" not found; exit;
if (Find_hdr(lhs_bgn)) return lhs_bgn;
}
return Find_id(bgn);
}
private boolean Find_hdr(int lhs_bgn) {
- int nl_rhs = Bry_finder.Find_fwd(src, Byte_ascii.Nl, nl_lhs + 1, src_len); // look for \n
- if (nl_rhs == Bry_finder.Not_found) nl_rhs = src_len - 1; // no more \n; set to last idx
+ int nl_rhs = Bry_find_.Find_fwd(src, Byte_ascii.Nl, nl_lhs + 1, src_len); // look for \n
+ if (nl_rhs == Bry_find_.Not_found) nl_rhs = src_len - 1; // no more \n; set to last idx
nl_lhs = nl_rhs; // update nl_lhs for loop
- int lhs_end = Bry_finder.Find_fwd_while(src, lhs_bgn + 1, nl_rhs, Byte_ascii.Eq); // skip eq; EX: "\n==="; +1 to skip eq
- int rhs_end = Bry_finder.Trim_bwd_space_tab(src, nl_rhs, lhs_end); // skip ws bwd; EX: "== \n"
- int rhs_bgn = Bry_finder.Find_bwd_while(src, rhs_end, lhs_end, Byte_ascii.Eq); // skip eq; EX: "==\n" -> pos before =
+ int lhs_end = Bry_find_.Find_fwd_while(src, lhs_bgn + 1, nl_rhs, Byte_ascii.Eq); // skip eq; EX: "\n==="; +1 to skip eq
+ int rhs_end = Bry_find_.Trim_bwd_space_tab(src, nl_rhs, lhs_end); // skip ws bwd; EX: "== \n"
+ int rhs_bgn = Bry_find_.Find_bwd_while(src, rhs_end, lhs_end, Byte_ascii.Eq); // skip eq; EX: "==\n" -> pos before =
if (rhs_bgn < lhs_end) return false; // eq found, but is actually lhs_eq; no rhs_eq, so exit; EX: "\n== \n"
++rhs_bgn; // rhs_bgn is 1st char before eq; position at eq; neede for txt_end below
- int txt_bgn = Bry_finder.Trim_fwd_space_tab(src, lhs_end, nl_rhs); // trim ws
- int txt_end = Bry_finder.Trim_bwd_space_tab(src, rhs_bgn, lhs_end); // trim ws
- return Bry_.Eq(find, src, txt_bgn, txt_end); // check for strict match
+ int txt_bgn = Bry_find_.Trim_fwd_space_tab(src, lhs_end, nl_rhs); // trim ws
+ int txt_end = Bry_find_.Trim_bwd_space_tab(src, rhs_bgn, lhs_end); // trim ws
+ return Bry_.Eq(src, txt_bgn, txt_end, find); // check for strict match
}
private int Find_id(int bgn) {
byte[] quoted = Bry_.Add(Byte_ascii.Quote_bry, find, Byte_ascii.Quote_bry);
int rv = Find_id_by_quoted(bgn, quoted);
- if (rv == Bry_finder.Not_found) {
+ if (rv == Bry_find_.Not_found) {
quoted[0] = Byte_ascii.Apos; quoted[quoted.length - 1] = Byte_ascii.Apos;
rv = Find_id_by_quoted(bgn, quoted);
}
return rv;
}
private int Find_id_by_quoted(int bgn, byte[] quoted) {
- int rv = Bry_finder.Not_found;
- int pos = Bry_finder.Find_fwd(src, quoted, bgn);
- if (pos == Bry_finder.Not_found) return rv;
- pos = Bry_finder.Trim_bwd_space_tab(src, pos, bgn);
+ int rv = Bry_find_.Not_found;
+ int pos = Bry_find_.Find_fwd(src, quoted, bgn);
+ if (pos == Bry_find_.Not_found) return rv;
+ pos = Bry_find_.Trim_bwd_space_tab(src, pos, bgn);
if (src[pos - 1] != Byte_ascii.Eq) return rv;
- int id_end = Bry_finder.Trim_bwd_space_tab(src, pos - 1, bgn);
- int id_bgn = Bry_finder.Find_bwd_ws(src, id_end - 1, bgn);
- boolean id_match = Int_.Bounds_chk(id_bgn, id_end, src_len) && Bry_.Eq(Id_bry, src, id_bgn + 1, id_end);
+ int id_end = Bry_find_.Trim_bwd_space_tab(src, pos - 1, bgn);
+ int id_bgn = Bry_find_.Find_bwd_ws(src, id_end - 1, bgn);
+ boolean id_match = Int_.Bounds_chk(id_bgn, id_end, src_len) && Bry_.Eq(src, id_bgn + 1, id_end, Id_bry);
if (!id_match) return rv;
- rv = Bry_finder.Find_bwd(src, Byte_ascii.Nl, id_bgn);
- return rv == Bry_finder.Not_found ? 0 : rv;
+ rv = Bry_find_.Find_bwd(src, Byte_ascii.Nl, id_bgn);
+ return rv == Bry_find_.Not_found ? 0 : rv;
}
private static final byte[] Hdr_bgn = Bry_.new_a7("\n="), Id_bry = Bry_.new_a7("id");
}
diff --git a/400_xowa/src/gplx/xowa/html/modules/popups/Xow_popup_anchor_finder__hdr_tst.java b/400_xowa/src/gplx/xowa/html/modules/popups/Xow_popup_anchor_finder__hdr_tst.java
index 3b1513928..cc3547e4f 100644
--- a/400_xowa/src/gplx/xowa/html/modules/popups/Xow_popup_anchor_finder__hdr_tst.java
+++ b/400_xowa/src/gplx/xowa/html/modules/popups/Xow_popup_anchor_finder__hdr_tst.java
@@ -76,7 +76,7 @@ class Xop_popup_hdr_finder_fxt {
private Xow_popup_anchor_finder finder = new Xow_popup_anchor_finder();
public void Clear() {
}
- public void Test_find_not(String src_str, String hdr_str) {Test_find(src_str, hdr_str, Bry_finder.Not_found);}
+ public void Test_find_not(String src_str, String hdr_str) {Test_find(src_str, hdr_str, Bry_find_.Not_found);}
public void Test_find(String src_str, String hdr_str, int expd) {
byte[] src = Bry_.new_u8(src_str);
byte[] hdr = Bry_.new_u8(hdr_str);
diff --git a/400_xowa/src/gplx/xowa/html/modules/popups/Xow_popup_mgr.java b/400_xowa/src/gplx/xowa/html/modules/popups/Xow_popup_mgr.java
index f05764372..de95a1f17 100644
--- a/400_xowa/src/gplx/xowa/html/modules/popups/Xow_popup_mgr.java
+++ b/400_xowa/src/gplx/xowa/html/modules/popups/Xow_popup_mgr.java
@@ -18,6 +18,7 @@ along with this program. If not, see .
package gplx.xowa.html.modules.popups; import gplx.*; import gplx.xowa.*; import gplx.xowa.html.*; import gplx.xowa.html.modules.*;
import gplx.core.primitives.*; import gplx.core.threads.*;
import gplx.core.js.*;
+import gplx.xowa.nss.*;
import gplx.xowa.gui.views.*;
import gplx.xowa.html.hrefs.*;
import gplx.xowa.specials.*; import gplx.xowa.specials.search.*;
@@ -190,7 +191,7 @@ public class Xow_popup_mgr implements GfoInvkAble, GfoEvObj {
}
public static Int_obj_ref[] Ns_allowed_parse(Xowe_wiki wiki, byte[] raw) {
List_adp rv = List_adp_.new_();
- byte[][] ary = Bry_.Split(raw, Byte_ascii.Pipe);
+ byte[][] ary = Bry_split_.Split(raw, Byte_ascii.Pipe);
int ary_len = ary.length;
Xow_ns_mgr ns_mgr = wiki.Ns_mgr();
for (int i = 0; i < ary_len; i++) {
diff --git a/400_xowa/src/gplx/xowa/html/modules/popups/Xow_popup_parser.java b/400_xowa/src/gplx/xowa/html/modules/popups/Xow_popup_parser.java
index e1c529349..2fd78bb9f 100644
--- a/400_xowa/src/gplx/xowa/html/modules/popups/Xow_popup_parser.java
+++ b/400_xowa/src/gplx/xowa/html/modules/popups/Xow_popup_parser.java
@@ -39,7 +39,7 @@ public class Xow_popup_parser {
wtxt_ctx.Tmpl_tkn_max_(v);
}
public void Init_by_wiki(Xowe_wiki wiki) {
- this.wiki = wiki; this.app = wiki.Appe(); this.parser = wiki.Parser(); this.tkn_mkr = app.Tkn_mkr();
+ this.wiki = wiki; this.app = wiki.Appe(); this.parser = wiki.Parser_mgr().Main(); this.tkn_mkr = app.Parser_mgr().Tkn_mkr();
this.tmpl_ctx = Xop_ctx.new_(wiki); this.wtxt_ctx = Xop_ctx.new_(wiki);
Xop_lxr_mgr tmpl_lxr_mgr = Xop_lxr_mgr.Popup_lxr_mgr;
tmpl_lxr_mgr.Init_by_wiki(wiki);
@@ -213,7 +213,7 @@ class Xow_popup_parser_ {
byte[] anch = itm.Page_href()[0] == Byte_ascii.Hash ? Bry_.Mid(Xoa_app_.Utl__encoder_mgr().Href().Decode(itm.Page_href()), 1) : page_ttl.Anch_txt();
if (anch == null) return rv;
int hdr_bgn = hdr_finder.Find(src, src_len, anch, rv); // NOTE: starting search from Xop_parser_.Doc_bgn_bos
- return hdr_bgn == Bry_finder.Not_found ? rv : hdr_bgn;
+ return hdr_bgn == Bry_find_.Not_found ? rv : hdr_bgn;
}
public static int Calc_read_len(Xop_ctx ctx, int tmpl_read_cur, int tmpl_read_len, byte[] src, int bgn, int end) {// DATE:2014-07-19
int rv_default = tmpl_read_cur + tmpl_read_len;
@@ -243,7 +243,7 @@ class Xow_popup_parser_ {
break;
}
if (end_bry == null) return Bry_.NotFound; // no end defined for tkn; return null which should revert to dflt
- int end_pos = Bry_finder.Find_fwd(src, end_bry, pos);
- return end_pos == Bry_finder.Not_found ? Bry_finder.Not_found : end_pos + end_bry.length;
+ int end_pos = Bry_find_.Find_fwd(src, end_bry, pos);
+ return end_pos == Bry_find_.Not_found ? Bry_find_.Not_found : end_pos + end_bry.length;
}
}
diff --git a/400_xowa/src/gplx/xowa/html/modules/popups/Xow_popup_parser_tst.java b/400_xowa/src/gplx/xowa/html/modules/popups/Xow_popup_parser_tst.java
index 81f987312..e657f5900 100644
--- a/400_xowa/src/gplx/xowa/html/modules/popups/Xow_popup_parser_tst.java
+++ b/400_xowa/src/gplx/xowa/html/modules/popups/Xow_popup_parser_tst.java
@@ -18,6 +18,7 @@ along with this program. If not, see .
package gplx.xowa.html.modules.popups; import gplx.*; import gplx.xowa.*; import gplx.xowa.html.*; import gplx.xowa.html.modules.*;
import org.junit.*; import gplx.core.primitives.*;
import gplx.xowa.apis.xowa.html.modules.*;
+import gplx.xowa.nss.*;
import gplx.xowa.gui.views.*;
public class Xow_popup_parser_tst {
@Before public void init() {fxt.Clear();} private Xop_popup_parser_fxt fxt = new Xop_popup_parser_fxt();
diff --git a/400_xowa/src/gplx/xowa/html/modules/popups/Xow_popup_wrdx_mkr.java b/400_xowa/src/gplx/xowa/html/modules/popups/Xow_popup_wrdx_mkr.java
index f34303814..b6a1c413c 100644
--- a/400_xowa/src/gplx/xowa/html/modules/popups/Xow_popup_wrdx_mkr.java
+++ b/400_xowa/src/gplx/xowa/html/modules/popups/Xow_popup_wrdx_mkr.java
@@ -16,7 +16,8 @@ You should have received a copy of the GNU Affero General Public License
along with this program. If not, see .
*/
package gplx.xowa.html.modules.popups; import gplx.*; import gplx.xowa.*; import gplx.xowa.html.*; import gplx.xowa.html.modules.*;
-import gplx.html.*;
+import gplx.langs.htmls.*;
+import gplx.xowa.nss.*;
import gplx.xowa.parsers.*; import gplx.xowa.parsers.lnkes.*; import gplx.xowa.parsers.xndes.*; import gplx.xowa.parsers.lnkis.*;
public class Xow_popup_wrdx_mkr {
private boolean skip_space;
@@ -183,7 +184,7 @@ public class Xow_popup_wrdx_mkr {
return false;
}
public void Xnde_ignore_ids_(byte[] xnde_id_ignore_bry) {
- byte[][] ary = Bry_.Split(xnde_id_ignore_bry, Byte_ascii.Pipe);
+ byte[][] ary = Bry_split_.Split(xnde_id_ignore_bry, Byte_ascii.Pipe);
int ary_len = ary.length;
xnde_id_ignore_list.Clear();
for (int i = 0; i < ary_len; i++) {
diff --git a/400_xowa/src/gplx/xowa/html/modules/popups/keeplists/Xop_keeplist_rule.java b/400_xowa/src/gplx/xowa/html/modules/popups/keeplists/Xop_keeplist_rule.java
index 00f613ceb..61d399d8a 100644
--- a/400_xowa/src/gplx/xowa/html/modules/popups/keeplists/Xop_keeplist_rule.java
+++ b/400_xowa/src/gplx/xowa/html/modules/popups/keeplists/Xop_keeplist_rule.java
@@ -16,7 +16,7 @@ You should have received a copy of the GNU Affero General Public License
along with this program. If not, see .
*/
package gplx.xowa.html.modules.popups.keeplists; import gplx.*; import gplx.xowa.*; import gplx.xowa.html.*; import gplx.xowa.html.modules.*; import gplx.xowa.html.modules.popups.*;
-import gplx.core.regxs.*;
+import gplx.langs.regxs.*;
public class Xop_keeplist_rule {
private Gfo_pattern[] excludes; private int excludes_len;
public Xop_keeplist_rule(Gfo_pattern[] includes, Gfo_pattern[] excludes) {
diff --git a/400_xowa/src/gplx/xowa/html/modules/popups/keeplists/Xop_keeplist_wiki.java b/400_xowa/src/gplx/xowa/html/modules/popups/keeplists/Xop_keeplist_wiki.java
index 5118d6788..1c94afe1a 100644
--- a/400_xowa/src/gplx/xowa/html/modules/popups/keeplists/Xop_keeplist_wiki.java
+++ b/400_xowa/src/gplx/xowa/html/modules/popups/keeplists/Xop_keeplist_wiki.java
@@ -16,7 +16,7 @@ You should have received a copy of the GNU Affero General Public License
along with this program. If not, see .
*/
package gplx.xowa.html.modules.popups.keeplists; import gplx.*; import gplx.xowa.*; import gplx.xowa.html.*; import gplx.xowa.html.modules.*; import gplx.xowa.html.modules.popups.*;
-import gplx.core.regxs.*;
+import gplx.langs.regxs.*;
public class Xop_keeplist_wiki {
public Xop_keeplist_wiki(Xowe_wiki wiki) {
srl = new Xop_keeplist_wiki_srl(wiki);
diff --git a/400_xowa/src/gplx/xowa/html/modules/popups/keeplists/Xop_keeplist_wiki_srl.java b/400_xowa/src/gplx/xowa/html/modules/popups/keeplists/Xop_keeplist_wiki_srl.java
index 03f6eccbc..f8d9c73cd 100644
--- a/400_xowa/src/gplx/xowa/html/modules/popups/keeplists/Xop_keeplist_wiki_srl.java
+++ b/400_xowa/src/gplx/xowa/html/modules/popups/keeplists/Xop_keeplist_wiki_srl.java
@@ -16,8 +16,8 @@ You should have received a copy of the GNU Affero General Public License
along with this program. If not, see .
*/
package gplx.xowa.html.modules.popups.keeplists; import gplx.*; import gplx.xowa.*; import gplx.xowa.html.*; import gplx.xowa.html.modules.*; import gplx.xowa.html.modules.popups.*;
-import gplx.srls.dsvs.*;
-import gplx.core.regxs.*;
+import gplx.langs.dsvs.*;
+import gplx.langs.regxs.*;
import gplx.xowa.langs.cases.*;
public class Xop_keeplist_wiki_srl extends Dsv_wkr_base {
private Xol_case_mgr case_mgr; private Xowe_wiki wiki;
diff --git a/400_xowa/src/gplx/xowa/html/ns_files/Xoh_ns_file_page_mgr.java b/400_xowa/src/gplx/xowa/html/ns_files/Xoh_ns_file_page_mgr.java
index a77573eed..38f57a5a8 100644
--- a/400_xowa/src/gplx/xowa/html/ns_files/Xoh_ns_file_page_mgr.java
+++ b/400_xowa/src/gplx/xowa/html/ns_files/Xoh_ns_file_page_mgr.java
@@ -45,7 +45,7 @@ public class Xoh_ns_file_page_mgr implements Bry_fmtr_arg {
this.file_size_bry = Bry_.new_a7(gplx.ios.Io_size_.To_str(file_size));
}
String commons_notice = page.Commons_mgr().Xowa_mockup()
- ? String_.Format(Str_commons_notice, gplx.html.Html_utl.Escape_for_atr_val_as_bry(tmp_bfr, Byte_ascii.Apos, page.Ttl().Full_db_as_str()))
+ ? String_.Format(Str_commons_notice, gplx.langs.htmls.Html_utl.Escape_for_atr_val_as_bry(tmp_bfr, Byte_ascii.Apos, page.Ttl().Full_db_as_str()))
: "";
html_wtr.Html_main().Bld_bfr_many(bfr, this, commons_notice);
}
diff --git a/400_xowa/src/gplx/xowa/html/portal/Xoh_page_body_cls.java b/400_xowa/src/gplx/xowa/html/portal/Xoh_page_body_cls.java
index a6474619d..e51a2bbf3 100644
--- a/400_xowa/src/gplx/xowa/html/portal/Xoh_page_body_cls.java
+++ b/400_xowa/src/gplx/xowa/html/portal/Xoh_page_body_cls.java
@@ -17,6 +17,7 @@ along with this program. If not, see .
*/
package gplx.xowa.html.portal; import gplx.*; import gplx.xowa.*; import gplx.xowa.html.*;
import gplx.xowa.wikis.*; import gplx.xowa.xtns.wdatas.*;
+import gplx.xowa.nss.*;
public class Xoh_page_body_cls { // REF.MW:Skin.php|getPageClasses
public static byte[] Calc(Bry_bfr tmp_bfr, Xoa_ttl ttl, int page_tid) {
tmp_bfr.Add(Bry_id_prefix).Add_int_variable(ttl.Ns().Id()); // ns-0; note that special is ns--1 DATE:2014-09-24
diff --git a/400_xowa/src/gplx/xowa/html/portal/Xoh_rtl_utl.java b/400_xowa/src/gplx/xowa/html/portal/Xoh_rtl_utl.java
index 4ee570ec2..d67902324 100644
--- a/400_xowa/src/gplx/xowa/html/portal/Xoh_rtl_utl.java
+++ b/400_xowa/src/gplx/xowa/html/portal/Xoh_rtl_utl.java
@@ -23,10 +23,10 @@ public class Xoh_rtl_utl {
int src_len = src.length;
int pos = 0;
while (true) {
- int ul_bgn = Bry_finder.Find_fwd(src, Ul_bgn, pos, src_len);
- if (ul_bgn == Bry_finder.Not_found) break; // no more
+ int ul_bgn = Bry_find_.Find_fwd(src, Ul_bgn, pos, src_len);
+ if (ul_bgn == Bry_find_.Not_found) break; // no more
bfr.Add_mid(src, pos, ul_bgn); // add pos ->
+ int li_bgn = Bry_find_.Find_fwd(src, Li_bgn, pos, ul_end);
+ if (li_bgn == Bry_find_.Not_found) break; // no more -
tmp_ary[tmp_idx++] = li_bgn;
tmp_ary[tmp_idx++] = li_end + Li_end.length;
pos = li_end + Li_end.length;
}
- int ul_bgn_rhs = Bry_finder.Find_fwd(src, Byte_ascii.Gt, ul_bgn);
+ int ul_bgn_rhs = Bry_find_.Find_fwd(src, Byte_ascii.Gt, ul_bgn);
if (tmp_idx < 3 // 0 or 1 li; add everything between ul
- || ul_bgn_rhs == Bry_finder.Not_found
+ || ul_bgn_rhs == Bry_find_.Not_found
) {
bfr.Add_mid(src, ul_bgn, ul_end);
return;
diff --git a/400_xowa/src/gplx/xowa/html/portal/Xoh_subpages_bldr.java b/400_xowa/src/gplx/xowa/html/portal/Xoh_subpages_bldr.java
index 1f1253236..984c1bc84 100644
--- a/400_xowa/src/gplx/xowa/html/portal/Xoh_subpages_bldr.java
+++ b/400_xowa/src/gplx/xowa/html/portal/Xoh_subpages_bldr.java
@@ -17,6 +17,7 @@ along with this program. If not, see .
*/
package gplx.xowa.html.portal; import gplx.*; import gplx.xowa.*; import gplx.xowa.html.*;
import gplx.xowa.html.hrefs.*;
+import gplx.xowa.nss.*;
public class Xoh_subpages_bldr implements Bry_fmtr_arg {
private Bry_bfr tmp_bfr = Bry_bfr.reset_(255), ttl_bfr = Bry_bfr.reset_(255);
private byte[][] segs;
@@ -28,7 +29,7 @@ public class Xoh_subpages_bldr implements Bry_fmtr_arg {
)
) return Bry_.Empty; // doesn't match above; return empty;
byte[] raw = ttl.Raw();
- this.segs = Bry_.Split(raw, Byte_ascii.Slash);
+ this.segs = Bry_split_.Split(raw, Byte_ascii.Slash);
fmtr_grp.Bld_bfr(tmp_bfr, this);
return tmp_bfr.Xto_bry_and_clear();
}
diff --git a/400_xowa/src/gplx/xowa/html/portal/Xoh_subpages_bldr_tst.java b/400_xowa/src/gplx/xowa/html/portal/Xoh_subpages_bldr_tst.java
index 888568b01..ab4286007 100644
--- a/400_xowa/src/gplx/xowa/html/portal/Xoh_subpages_bldr_tst.java
+++ b/400_xowa/src/gplx/xowa/html/portal/Xoh_subpages_bldr_tst.java
@@ -16,7 +16,7 @@ You should have received a copy of the GNU Affero General Public License
along with this program. If not, see .
*/
package gplx.xowa.html.portal; import gplx.*; import gplx.xowa.*; import gplx.xowa.html.*;
-import org.junit.*;
+import org.junit.*; import gplx.xowa.nss.*;
public class Xoh_subpages_bldr_tst {
@Before public void init() {fxt.Init();} private Xoh_subpages_bldr_fxt fxt = new Xoh_subpages_bldr_fxt();
@Test public void Basic() {
diff --git a/400_xowa/src/gplx/xowa/html/portal/Xow_portal_mgr.java b/400_xowa/src/gplx/xowa/html/portal/Xow_portal_mgr.java
index 5ddce37c0..a2dcc5495 100644
--- a/400_xowa/src/gplx/xowa/html/portal/Xow_portal_mgr.java
+++ b/400_xowa/src/gplx/xowa/html/portal/Xow_portal_mgr.java
@@ -16,12 +16,16 @@ You should have received a copy of the GNU Affero General Public License
along with this program. If not, see .
*/
package gplx.xowa.html.portal; import gplx.*; import gplx.xowa.*; import gplx.xowa.html.*;
-import gplx.xowa.gui.*; import gplx.xowa.html.sidebar.*; import gplx.xowa.pages.*; import gplx.xowa.langs.vnts.*;
+import gplx.xowa.langs.*; import gplx.xowa.langs.msgs.*;
+import gplx.xowa.gui.*; import gplx.xowa.html.sidebar.*; import gplx.xowa.pages.*;
+import gplx.xowa.nss.*;
import gplx.xowa.wikis.domains.*;
import gplx.xowa.html.hrefs.*;
import gplx.xowa.apis.xowa.html.*; import gplx.xowa.apis.xowa.html.skins.*;
+import gplx.xowa.langs.vnts.*; import gplx.xowa.html.portal.vnts.*;
public class Xow_portal_mgr implements GfoInvkAble {
private Xowe_wiki wiki; private boolean lang_is_rtl; private Xoapi_toggle_itm toggle_itm;
+ private final Vnt_mnu_grp_fmtr vnt_menu_fmtr = new Vnt_mnu_grp_fmtr();
public Xow_portal_mgr(Xowe_wiki wiki) {
this.wiki = wiki;
this.sidebar_mgr = new Xowh_sidebar_mgr(wiki);
@@ -72,8 +76,7 @@ public class Xow_portal_mgr implements GfoInvkAble {
Bry_fmtr_arg vnt_menu = null;
Xol_vnt_mgr vnt_mgr = wiki.Lang().Vnt_mgr(); // VNT; DATE:2015-03-03
if (vnt_mgr.Enabled()) {
- Vnt_mnu_grp_fmtr vnt_menu_fmtr = vnt_mgr.Vnt_mnu_fmtr();
- vnt_menu_fmtr.Init(vnt_mgr.Vnt_grp(), wiki.Domain_bry(), ttl.Full_db(), vnt_mgr.Cur_vnt());
+ vnt_menu_fmtr.Init(vnt_mgr.Regy(), wiki.Domain_bry(), ttl.Full_db(), vnt_mgr.Cur_key());
vnt_menu = wiki.Lang().Vnt_mgr().Enabled() ? vnt_menu_fmtr : null;
}
Bry_bfr tmp_bfr = bfr_mkr.Get_k004();
diff --git a/400_xowa/src/gplx/xowa/langs/vnts/Vnt_mnu_grp_fmtr.java b/400_xowa/src/gplx/xowa/html/portal/vnts/Vnt_mnu_grp_fmtr.java
similarity index 72%
rename from 400_xowa/src/gplx/xowa/langs/vnts/Vnt_mnu_grp_fmtr.java
rename to 400_xowa/src/gplx/xowa/html/portal/vnts/Vnt_mnu_grp_fmtr.java
index fb89225cc..71e5eb032 100644
--- a/400_xowa/src/gplx/xowa/langs/vnts/Vnt_mnu_grp_fmtr.java
+++ b/400_xowa/src/gplx/xowa/html/portal/vnts/Vnt_mnu_grp_fmtr.java
@@ -15,17 +15,18 @@ GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see .
*/
-package gplx.xowa.langs.vnts; import gplx.*; import gplx.xowa.*; import gplx.xowa.langs.*;
+package gplx.xowa.html.portal.vnts; import gplx.*; import gplx.xowa.*; import gplx.xowa.html.*; import gplx.xowa.html.portal.*;
+import gplx.xowa.langs.vnts.*;
public class Vnt_mnu_grp_fmtr implements Bry_fmtr_arg {
private final Xolg_vnt_itm_fmtr itm_fmtr = new Xolg_vnt_itm_fmtr();
- private Vnt_mnu_grp grp; private byte[] page_vnt;
- public void Init(Vnt_mnu_grp grp, byte[] wiki_domain, byte[] page_href, byte[] page_vnt) {
- this.grp = grp; this.page_vnt = page_vnt;
- itm_fmtr.Init(grp, wiki_domain, page_href, page_vnt);
+ private Xol_vnt_regy mgr; private byte[] page_vnt;
+ public void Init(Xol_vnt_regy mgr, byte[] wiki_domain, byte[] page_href, byte[] page_vnt) {
+ this.mgr = mgr; this.page_vnt = page_vnt;
+ itm_fmtr.Init(mgr, wiki_domain, page_href, page_vnt);
}
public void XferAry(Bry_bfr bfr, int idx) {
- Vnt_mnu_itm mnu_itm = grp.Get_by(page_vnt);
- fmtr.Bld_bfr_many(bfr, mnu_itm == null ? Bry_.Empty : mnu_itm.Text(), itm_fmtr);
+ Xol_vnt_itm mnu_itm = mgr.Get_by(page_vnt);
+ fmtr.Bld_bfr_many(bfr, mnu_itm == null ? Bry_.Empty : mnu_itm.Name(), itm_fmtr);
}
private static final Bry_fmtr fmtr = Bry_fmtr.new_(String_.Concat_lines_nl_skip_last
( ""
@@ -40,15 +41,15 @@ public class Vnt_mnu_grp_fmtr implements Bry_fmtr_arg {
);
}
class Xolg_vnt_itm_fmtr implements Bry_fmtr_arg {
- private Vnt_mnu_grp grp; private byte[] wiki_domain, page_href, page_vnt;
- public void Init(Vnt_mnu_grp grp, byte[] wiki_domain, byte[] page_href, byte[] page_vnt) {this.grp = grp; this.wiki_domain = wiki_domain; this.page_href = page_href; this.page_vnt = page_vnt;}
+ private Xol_vnt_regy mgr; private byte[] wiki_domain, page_href, page_vnt;
+ public void Init(Xol_vnt_regy mgr, byte[] wiki_domain, byte[] page_href, byte[] page_vnt) {this.mgr = mgr; this.wiki_domain = wiki_domain; this.page_href = page_href; this.page_vnt = page_vnt;}
public void XferAry(Bry_bfr bfr, int idx) {
- int len = grp.Len();
+ int len = mgr.Len();
for (int i = 0; i < len; ++i) {
- Vnt_mnu_itm itm = grp.Get_at(i);
+ Xol_vnt_itm itm = mgr.Get_at(i); if (!itm.Visible()) continue;
boolean itm_is_selected = Bry_.Eq(itm.Key(), page_vnt);
byte[] itm_cls_selected = itm_is_selected ? Itm_cls_selected_y : Bry_.Empty;
- fmtr.Bld_bfr_many(bfr, i, itm_cls_selected, wiki_domain, itm.Key(), itm.Text(), page_href);
+ fmtr.Bld_bfr_many(bfr, i, itm_cls_selected, wiki_domain, itm.Key(), itm.Name(), page_href);
}
}
private static final byte[] Itm_cls_selected_y = Bry_.new_a7(" class='selected'");
diff --git a/400_xowa/src/gplx/xowa/langs/vnts/Vnt_mnu_grp_fmtr_tst.java b/400_xowa/src/gplx/xowa/html/portal/vnts/Vnt_mnu_grp_fmtr_tst.java
similarity index 86%
rename from 400_xowa/src/gplx/xowa/langs/vnts/Vnt_mnu_grp_fmtr_tst.java
rename to 400_xowa/src/gplx/xowa/html/portal/vnts/Vnt_mnu_grp_fmtr_tst.java
index 5dfc109a5..8e1a45cb9 100644
--- a/400_xowa/src/gplx/xowa/langs/vnts/Vnt_mnu_grp_fmtr_tst.java
+++ b/400_xowa/src/gplx/xowa/html/portal/vnts/Vnt_mnu_grp_fmtr_tst.java
@@ -15,8 +15,8 @@ GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see .
*/
-package gplx.xowa.langs.vnts; import gplx.*; import gplx.xowa.*; import gplx.xowa.langs.*;
-import org.junit.*;
+package gplx.xowa.html.portal.vnts; import gplx.*; import gplx.xowa.*; import gplx.xowa.html.*; import gplx.xowa.html.portal.*;
+import org.junit.*; import gplx.xowa.langs.vnts.*;
public class Vnt_mnu_grp_fmtr_tst {
@Before public void init() {fxt.Clear();} private final Vnt_mnu_grp_fmtr_fxt fxt = new Vnt_mnu_grp_fmtr_fxt();
@Test public void Basic() {
@@ -40,12 +40,12 @@ public class Vnt_mnu_grp_fmtr_tst {
}
}
class Vnt_mnu_grp_fmtr_fxt {
- private Vnt_mnu_grp vnt_grp;
+ private final Xol_vnt_regy mgr = new Xol_vnt_regy();
public void Clear() {
this.Init_grp("Choose lang", "zh-hans", "Simplified", "zh-hant", "Traditional", "zh-cn", "China", "zh-hk", "Hong Kong", "zh-mo", "Macau", "zh-sg", "Singapore", "zh-tw", "Taiwan");
}
public void Init_grp(String text, String... langs) {
- vnt_grp = new Vnt_mnu_grp();
+ mgr.Clear();
int len = langs.length;
String lang_code = "";
for (int i = 0; i < len; ++i) {
@@ -53,15 +53,14 @@ class Vnt_mnu_grp_fmtr_fxt {
if (i % 2 == 0)
lang_code = lang;
else {
- Vnt_mnu_itm itm = new Vnt_mnu_itm(Bry_.new_u8(lang_code), Bry_.new_u8(lang));
- vnt_grp.Add(itm);
+ mgr.Add(Bry_.new_u8(lang_code), Bry_.new_u8(lang));
}
}
}
public void Test_to_str(String page_href, String selected_vnt, String expd) {
Vnt_mnu_grp_fmtr vnt_grp_fmtr = new Vnt_mnu_grp_fmtr();
Bry_bfr bfr = Bry_bfr.new_();
- vnt_grp_fmtr.Init(vnt_grp, Bry_.new_u8(page_href), Bry_.new_a7("zh.wikipedia.org"), Bry_.new_u8(selected_vnt));
+ vnt_grp_fmtr.Init(mgr, Bry_.new_u8(page_href), Bry_.new_a7("zh.wikipedia.org"), Bry_.new_u8(selected_vnt));
vnt_grp_fmtr.XferAry(bfr, 0);
Tfds.Eq_str_lines(expd, bfr.Xto_str_and_clear());
}
diff --git a/400_xowa/src/gplx/xowa/html/sidebar/Xowh_sidebar_mgr.java b/400_xowa/src/gplx/xowa/html/sidebar/Xowh_sidebar_mgr.java
index 8327f3f31..3369f7d5e 100644
--- a/400_xowa/src/gplx/xowa/html/sidebar/Xowh_sidebar_mgr.java
+++ b/400_xowa/src/gplx/xowa/html/sidebar/Xowh_sidebar_mgr.java
@@ -16,7 +16,8 @@ You should have received a copy of the GNU Affero General Public License
along with this program. If not, see .
*/
package gplx.xowa.html.sidebar; import gplx.*; import gplx.xowa.*; import gplx.xowa.html.*;
-import gplx.core.btries.*; import gplx.xowa.langs.msgs.*;
+import gplx.core.btries.*; import gplx.langs.htmls.encoders.*;
+import gplx.xowa.langs.*; import gplx.xowa.langs.msgs.*;
import gplx.xowa.parsers.lnkis.*;
public class Xowh_sidebar_mgr implements GfoInvkAble {
public Xowh_sidebar_mgr(Xowe_wiki wiki) {this.wiki = wiki;} private Xowe_wiki wiki;
@@ -52,7 +53,7 @@ public class Xowh_sidebar_mgr implements GfoInvkAble {
);
} private static byte[] Ignore_wiki_ess = Bry_.new_a7("es.wikisource.org"), Ignore_item_ess_random = Bry_.new_u8("special:Random/Página djvu");
public void Parse(Bry_bfr bfr, Bry_bfr comment_bfr, byte[] src) {
- byte[][] lines = Bry_.Split(src, Byte_ascii.Nl);
+ byte[][] lines = Bry_split_.Split(src, Byte_ascii.Nl);
int lines_len = lines.length;
Url_encoder id_encoder = Xoa_app_.Utl__encoder_mgr().Id();
Xowh_sidebar_itm cur_grp = null;
@@ -63,9 +64,9 @@ public class Xowh_sidebar_mgr implements GfoInvkAble {
if (line[0] != Byte_ascii.Star) continue; // skip non-list items; must begin with "*"
byte tid = line[1] == Byte_ascii.Star ? Xowh_sidebar_itm.Tid_itm : Xowh_sidebar_itm.Tid_grp;
byte[] bry = Bry_.Trim(line, tid, line_len); // trim *, **; note that tid indicates # of asterisks
- bry = gplx.html.Html_utl.Del_comments(comment_bfr, bry); // strip comments; DATE:2014-03-08
+ bry = gplx.langs.htmls.Html_utl.Del_comments(comment_bfr, bry); // strip comments; DATE:2014-03-08
if (ignore_trie.Match_bgn(bry, 0, bry.length) != null) continue; // ignore SEARCH, TOOLBOX, LANGUAGES
- int pipe_pos = Bry_finder.Find_fwd(bry, Byte_ascii.Pipe);
+ int pipe_pos = Bry_find_.Find_fwd(bry, Byte_ascii.Pipe);
byte[] text_key = tid == Xowh_sidebar_itm.Tid_grp ? bry : Bry_.Mid(bry, pipe_pos + 1, bry.length); // get text_key; note that grp is entire bry, while itm is after |
byte[] text_val = Resolve_key(text_key);
byte[] id = id_encoder.Encode(bfr.Add(CONST_id_prefix), text_key).Xto_bry_and_clear(); // build id; "n-encoded_id"
@@ -116,7 +117,7 @@ public class Xowh_sidebar_mgr implements GfoInvkAble {
private byte[] Resolve_key(byte[] key) {
byte[] val = wiki.Msg_mgr().Val_by_key_obj(key);
if (Bry_.Len_eq_0(val)) val = key; // if key is not found, default to val
- return wiki.Parser().Parse_text_to_wtxt(val);
+ return wiki.Parser_mgr().Main().Parse_text_to_wtxt(val);
}
public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) {
if (ctx.Match(k, Invk_html_grp_fmt_)) html_grp_fmtr.Fmt_(m.ReadBry("v"));
diff --git a/400_xowa/src/gplx/xowa/html/sidebar/Xowh_sidebar_mgr_tst.java b/400_xowa/src/gplx/xowa/html/sidebar/Xowh_sidebar_mgr_tst.java
index 2cd431c37..3fc0bba36 100644
--- a/400_xowa/src/gplx/xowa/html/sidebar/Xowh_sidebar_mgr_tst.java
+++ b/400_xowa/src/gplx/xowa/html/sidebar/Xowh_sidebar_mgr_tst.java
@@ -17,6 +17,7 @@ along with this program. If not, see .
*/
package gplx.xowa.html.sidebar; import gplx.*; import gplx.xowa.*; import gplx.xowa.html.*;
import org.junit.*; import gplx.core.strings.*;
+import gplx.xowa.langs.*;
public class Xowh_sidebar_mgr_tst {
@Before public void init() {fxt.Clear();} private Xowh_sidebar_mgr_fxt fxt = new Xowh_sidebar_mgr_fxt();
@Test public void Grp() {
diff --git a/400_xowa/src/gplx/xowa/html/tidy/Xoh_tidy_mgr.java b/400_xowa/src/gplx/xowa/html/tidy/Xoh_tidy_mgr.java
index 6083f5c82..0590e342b 100644
--- a/400_xowa/src/gplx/xowa/html/tidy/Xoh_tidy_mgr.java
+++ b/400_xowa/src/gplx/xowa/html/tidy/Xoh_tidy_mgr.java
@@ -16,7 +16,7 @@ You should have received a copy of the GNU Affero General Public License
along with this program. If not, see .
*/
package gplx.xowa.html.tidy; import gplx.*; import gplx.xowa.*; import gplx.xowa.html.*;
-import gplx.html.*;
+import gplx.langs.htmls.*;
import gplx.xowa.apps.fsys.*;
public class Xoh_tidy_mgr implements GfoInvkAble {
private Xoh_tidy_wkr wkr = Xoh_tidy_wkr_.Wkr_null; // TEST: set default wkr to null
@@ -63,9 +63,9 @@ public class Xoh_tidy_mgr implements GfoInvkAble {
}
public static boolean Tidy_unwrap(Bry_bfr bfr) {
byte[] bfr_bry = bfr.Bfr();
- int find = Bry_finder.Find_fwd(bfr_bry, Html_tag_.Body_lhs); if (find == Bry_finder.Not_found) return false;
+ int find = Bry_find_.Find_fwd(bfr_bry, Html_tag_.Body_lhs); if (find == Bry_find_.Not_found) return false;
bfr.Delete_rng_to_bgn(find + Html_tag_.Body_lhs.length);
- find = Bry_finder.Find_bwd(bfr_bry, Html_tag_.Body_rhs, bfr.Len()); if (find == Bry_finder.Not_found) return false;
+ find = Bry_find_.Find_bwd(bfr_bry, Html_tag_.Body_rhs, bfr.Len()); if (find == Bry_find_.Not_found) return false;
bfr.Delete_rng_to_end(find);
return true;
}
diff --git a/400_xowa/src/gplx/xowa/html/tocs/Xow_hdr_mgr.java b/400_xowa/src/gplx/xowa/html/tocs/Xow_hdr_mgr.java
index 6439a0b5c..858b18508 100644
--- a/400_xowa/src/gplx/xowa/html/tocs/Xow_hdr_mgr.java
+++ b/400_xowa/src/gplx/xowa/html/tocs/Xow_hdr_mgr.java
@@ -16,7 +16,8 @@ You should have received a copy of the GNU Affero General Public License
along with this program. If not, see .
*/
package gplx.xowa.html.tocs; import gplx.*; import gplx.xowa.*; import gplx.xowa.html.*;
-import gplx.core.primitives.*; import gplx.xowa.urls.encoders.*;
+import gplx.core.primitives.*; import gplx.langs.htmls.encoders.*;
+import gplx.xowa.nss.*;
import gplx.xowa.parsers.*; import gplx.xowa.parsers.amps.*; import gplx.xowa.parsers.hdrs.*; import gplx.xowa.parsers.xndes.*; import gplx.xowa.parsers.lnkis.*;
public class Xow_hdr_mgr {
private final Url_encoder_mgr encoder_mgr; private final Xoae_page page;
diff --git a/400_xowa/src/gplx/xowa/html/tocs/Xow_toc_mgr.java b/400_xowa/src/gplx/xowa/html/tocs/Xow_toc_mgr.java
index bed043084..e3be844c0 100644
--- a/400_xowa/src/gplx/xowa/html/tocs/Xow_toc_mgr.java
+++ b/400_xowa/src/gplx/xowa/html/tocs/Xow_toc_mgr.java
@@ -16,6 +16,8 @@ You should have received a copy of the GNU Affero General Public License
along with this program. If not, see .
*/
package gplx.xowa.html.tocs; import gplx.*; import gplx.xowa.*; import gplx.xowa.html.*;
+import gplx.xowa.langs.*;
+import gplx.xowa.nss.*;
import gplx.xowa.parsers.*; import gplx.xowa.parsers.apos.*; import gplx.xowa.parsers.amps.*; import gplx.xowa.parsers.hdrs.*; import gplx.xowa.parsers.xndes.*; import gplx.xowa.parsers.lnkis.*;
public class Xow_toc_mgr implements Bry_fmtr_arg {
private static final int Toc_levels = 32; // assume 6 max levels * 5 max heading (9999.); add 2 for good measure
diff --git a/400_xowa/src/gplx/xowa/html/utils/Xoh_js_cleaner.java b/400_xowa/src/gplx/xowa/html/utils/Xoh_js_cleaner.java
index d6035b8fd..abb656122 100644
--- a/400_xowa/src/gplx/xowa/html/utils/Xoh_js_cleaner.java
+++ b/400_xowa/src/gplx/xowa/html/utils/Xoh_js_cleaner.java
@@ -49,7 +49,7 @@ public class Xoh_js_cleaner {
int frag_len = frag.length;
if (frag[0] == Byte_ascii.Lt) { // jscript node; EX: .
*/
package gplx.xowa.html.wtrs; import gplx.*; import gplx.xowa.*; import gplx.xowa.html.*;
-import gplx.html.*;
+import gplx.langs.htmls.*;
public class Xoh_anchor_kv_bldr {
private byte[] base_url; private boolean has_qarg;
private final Bry_bfr tmp_bfr = Bry_bfr.new_(16), apos_bfr = Bry_bfr.new_(16);
diff --git a/400_xowa/src/gplx/xowa/html/wtrs/Xoh_lnki_bldr.java b/400_xowa/src/gplx/xowa/html/wtrs/Xoh_lnki_bldr.java
index abe526a1f..ba1a4c2dc 100644
--- a/400_xowa/src/gplx/xowa/html/wtrs/Xoh_lnki_bldr.java
+++ b/400_xowa/src/gplx/xowa/html/wtrs/Xoh_lnki_bldr.java
@@ -16,7 +16,7 @@ You should have received a copy of the GNU Affero General Public License
along with this program. If not, see .
*/
package gplx.xowa.html.wtrs; import gplx.*; import gplx.xowa.*; import gplx.xowa.html.*;
-import gplx.html.*; import gplx.xowa.html.hrefs.*;
+import gplx.langs.htmls.*; import gplx.xowa.html.hrefs.*;
public class Xoh_lnki_bldr {
private final Xoa_app app; private final Xoh_href_wtr href_wtr; private final byte[] img_root_dir;
private final Bry_bfr tmp_bfr = Bry_bfr.reset_(255);
diff --git a/400_xowa/src/gplx/xowa/html/wtrs/Xoh_lnki_wtr_utl.java b/400_xowa/src/gplx/xowa/html/wtrs/Xoh_lnki_wtr_utl.java
index c5b2e63a9..1946083f2 100644
--- a/400_xowa/src/gplx/xowa/html/wtrs/Xoh_lnki_wtr_utl.java
+++ b/400_xowa/src/gplx/xowa/html/wtrs/Xoh_lnki_wtr_utl.java
@@ -16,7 +16,7 @@ You should have received a copy of the GNU Affero General Public License
along with this program. If not, see .
*/
package gplx.xowa.html.wtrs; import gplx.*; import gplx.xowa.*; import gplx.xowa.html.*;
-import gplx.html.*; import gplx.xowa.html.hrefs.*;
+import gplx.langs.htmls.*; import gplx.xowa.html.hrefs.*;
public class Xoh_lnki_wtr_utl {
private final Xoa_app app; private final Xow_wiki wiki; private final Xoh_href_wtr href_wtr; private final Bry_bfr tmp_bfr = Bry_bfr.new_(255);
public Xoh_lnki_wtr_utl(Xow_wiki wiki, Xoh_href_wtr href_wtr) {
@@ -29,6 +29,6 @@ public class Xoh_lnki_wtr_utl {
return tmp_bfr.Xto_bry_and_clear();
}
public byte[] Bld_title(byte[] text) {
- return gplx.html.Html_utl.Escape_html_as_bry(tmp_bfr, text, Bool_.N, Bool_.N, Bool_.N, Bool_.Y, Bool_.Y);
+ return gplx.langs.htmls.Html_utl.Escape_html_as_bry(tmp_bfr, text, Bool_.N, Bool_.N, Bool_.N, Bool_.Y, Bool_.Y);
}
}
diff --git a/400_xowa/src/gplx/xowa/langs/Xoa_lang_mgr.java b/400_xowa/src/gplx/xowa/langs/Xoa_lang_mgr.java
index 7afa063b4..ed9448f79 100644
--- a/400_xowa/src/gplx/xowa/langs/Xoa_lang_mgr.java
+++ b/400_xowa/src/gplx/xowa/langs/Xoa_lang_mgr.java
@@ -16,8 +16,9 @@ You should have received a copy of the GNU Affero General Public License
along with this program. If not, see .
*/
package gplx.xowa.langs; import gplx.*; import gplx.xowa.*;
-import gplx.intl.*;
-import gplx.xowa.apps.fsys.*; import gplx.xowa.apps.langs.*; import gplx.xowa.bldrs.langs.*; import gplx.xowa.langs.vnts.*;
+import gplx.core.intls.*;
+import gplx.xowa.apps.fsys.*;
+import gplx.xowa.langs.cfgs.*; import gplx.xowa.bldrs.langs.*; import gplx.xowa.langs.vnts.*;
public class Xoa_lang_mgr implements GfoInvkAble {
private final Xoa_fsys_mgr fsys_mgr; private final Gfo_msg_log msg_log; private final Xol_lang lang_en;
private final Ordered_hash hash = Ordered_hash_.new_bry_(); private final Hash_adp_bry fallback_regy = Hash_adp_bry.cs();
@@ -81,7 +82,7 @@ public class Xoa_lang_mgr implements GfoInvkAble {
lang_parser.Bld_all(this, fsys_mgr);
}
public Ordered_hash Xto_hash(byte[] raw) {
- byte[][] keys = Bry_.Split(raw, Byte_ascii.Tilde);
+ byte[][] keys = Bry_split_.Split(raw, Byte_ascii.Tilde);
int len = keys.length;
Ordered_hash langs = Ordered_hash_.new_();
Cfg_nde_root lang_root = groups;
diff --git a/400_xowa/src_140_lang/gplx/xowa/Xobcl_kwd_row.java b/400_xowa/src/gplx/xowa/langs/Xobcl_kwd_row.java
similarity index 94%
rename from 400_xowa/src_140_lang/gplx/xowa/Xobcl_kwd_row.java
rename to 400_xowa/src/gplx/xowa/langs/Xobcl_kwd_row.java
index 6f4213ef3..ee8bc6836 100644
--- a/400_xowa/src_140_lang/gplx/xowa/Xobcl_kwd_row.java
+++ b/400_xowa/src/gplx/xowa/langs/Xobcl_kwd_row.java
@@ -15,7 +15,7 @@ GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see .
*/
-package gplx.xowa; import gplx.*;
+package gplx.xowa.langs; import gplx.*; import gplx.xowa.*;
public class Xobcl_kwd_row {
public Xobcl_kwd_row(byte[] key, byte[][] itms) {
this.key = key; this.itms = itms;
diff --git a/400_xowa/src_140_lang/gplx/xowa/Xol_csv_parser.java b/400_xowa/src/gplx/xowa/langs/Xol_csv_parser.java
similarity index 92%
rename from 400_xowa/src_140_lang/gplx/xowa/Xol_csv_parser.java
rename to 400_xowa/src/gplx/xowa/langs/Xol_csv_parser.java
index 2e9e1dc24..79ab8279a 100644
--- a/400_xowa/src_140_lang/gplx/xowa/Xol_csv_parser.java
+++ b/400_xowa/src/gplx/xowa/langs/Xol_csv_parser.java
@@ -15,7 +15,7 @@ GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see .
*/
-package gplx.xowa; import gplx.*;
+package gplx.xowa.langs; import gplx.*; import gplx.xowa.*;
public class Xol_csv_parser {
public void Save(Bry_bfr bfr, byte[] src) {
int len = src.length;
@@ -61,8 +61,8 @@ public class Xol_csv_parser {
utf_bytes[utf_idx++] = (byte)utf_int;
utf_pos += 6;
}
- int utf_int_decoded = gplx.intl.Utf16_.Decode_to_int(utf_bytes, 0);
- bfr.Add(gplx.intl.Utf16_.Encode_int_to_bry(utf_int_decoded));
+ int utf_int_decoded = gplx.core.intls.Utf16_.Decode_to_int(utf_bytes, 0);
+ bfr.Add(gplx.core.intls.Utf16_.Encode_int_to_bry(utf_int_decoded));
nxt_pos = i + (utf_len * 6) - 1; // -1 b/c "for" will ++
break;
default:
diff --git a/400_xowa/src_140_lang/gplx/xowa/Xol_csv_parser_tst.java b/400_xowa/src/gplx/xowa/langs/Xol_csv_parser_tst.java
similarity index 95%
rename from 400_xowa/src_140_lang/gplx/xowa/Xol_csv_parser_tst.java
rename to 400_xowa/src/gplx/xowa/langs/Xol_csv_parser_tst.java
index fe6299849..ac27719c4 100644
--- a/400_xowa/src_140_lang/gplx/xowa/Xol_csv_parser_tst.java
+++ b/400_xowa/src/gplx/xowa/langs/Xol_csv_parser_tst.java
@@ -15,7 +15,7 @@ GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see .
*/
-package gplx.xowa; import gplx.*;
+package gplx.xowa.langs; import gplx.*; import gplx.xowa.*;
import org.junit.*;
public class Xol_csv_parser_tst {
Xol_csv_parser_fxt fxt = new Xol_csv_parser_fxt();
diff --git a/400_xowa/src_140_lang/gplx/xowa/Xol_font_info.java b/400_xowa/src/gplx/xowa/langs/Xol_font_info.java
similarity index 96%
rename from 400_xowa/src_140_lang/gplx/xowa/Xol_font_info.java
rename to 400_xowa/src/gplx/xowa/langs/Xol_font_info.java
index 6eb901385..bf9d88b13 100644
--- a/400_xowa/src_140_lang/gplx/xowa/Xol_font_info.java
+++ b/400_xowa/src/gplx/xowa/langs/Xol_font_info.java
@@ -15,7 +15,7 @@ GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see .
*/
-package gplx.xowa; import gplx.*;
+package gplx.xowa.langs; import gplx.*; import gplx.xowa.*;
import gplx.gfui.*;
public class Xol_font_info implements GfoInvkAble, GfoEvMgrOwner {
public Xol_font_info(String name, float size, FontStyleAdp style) {this.name = name; this.size = size; this.style = style;}
diff --git a/400_xowa/src/gplx/xowa/langs/Xol_func_name_regy.java b/400_xowa/src/gplx/xowa/langs/Xol_func_name_regy.java
index 7cc3187f4..ccc534026 100644
--- a/400_xowa/src/gplx/xowa/langs/Xol_func_name_regy.java
+++ b/400_xowa/src/gplx/xowa/langs/Xol_func_name_regy.java
@@ -16,7 +16,7 @@ You should have received a copy of the GNU Affero General Public License
along with this program. If not, see .
*/
package gplx.xowa.langs; import gplx.*; import gplx.xowa.*;
-import gplx.core.btries.*; import gplx.intl.*; import gplx.xowa.xtns.pfuncs.*;
+import gplx.core.btries.*; import gplx.core.intls.*; import gplx.xowa.xtns.pfuncs.*;
import gplx.xowa.parsers.tmpls.*;
public class Xol_func_name_regy {
private final Xoa_lang_mgr lang_mgr; private final Xol_lang lang;
@@ -79,14 +79,14 @@ public class Xol_func_name_regy {
case Xot_defn_.Tid_safesubst:
case Xot_defn_.Tid_subst:
finder.Subst_set_(defn_tid, txt_bgn, match_pos);
- if (match_pos < txt_end) txt_bgn = Bry_finder.Find_fwd_while_not_ws(src, match_pos, txt_end);
+ if (match_pos < txt_end) txt_bgn = Bry_find_.Find_fwd_while_not_ws(src, match_pos, txt_end);
break;
case Xot_defn_.Tid_raw:
case Xot_defn_.Tid_msg:
case Xot_defn_.Tid_msgnw:
finder.Subst_set_(defn_tid, txt_bgn, match_pos);
if (match_pos + 1 < txt_end) // +1 to include ":" (keyword id "raw", not "raw:")
- txt_bgn = Bry_finder.Find_fwd_while_not_ws(src, match_pos + 1, txt_end);
+ txt_bgn = Bry_find_.Find_fwd_while_not_ws(src, match_pos + 1, txt_end);
break;
default: return finder;
}
diff --git a/400_xowa/src_140_lang/gplx/xowa/Xol_kwd_grp.java b/400_xowa/src/gplx/xowa/langs/Xol_kwd_grp.java
similarity index 94%
rename from 400_xowa/src_140_lang/gplx/xowa/Xol_kwd_grp.java
rename to 400_xowa/src/gplx/xowa/langs/Xol_kwd_grp.java
index 389e4ed35..27bf2bdbd 100644
--- a/400_xowa/src_140_lang/gplx/xowa/Xol_kwd_grp.java
+++ b/400_xowa/src/gplx/xowa/langs/Xol_kwd_grp.java
@@ -15,7 +15,7 @@ GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see .
*/
-package gplx.xowa; import gplx.*;
+package gplx.xowa.langs; import gplx.*; import gplx.xowa.*;
public class Xol_kwd_grp {// REF.MW: Messages_en.php; EX: 'redirect' => array( 0, '#REDIRECT' )
public Xol_kwd_grp(byte[] key) {this.key = key;}
public byte[] Key() {return key;} private final byte[] key;
diff --git a/400_xowa/src_140_lang/gplx/xowa/Xol_kwd_grp_.java b/400_xowa/src/gplx/xowa/langs/Xol_kwd_grp_.java
similarity index 97%
rename from 400_xowa/src_140_lang/gplx/xowa/Xol_kwd_grp_.java
rename to 400_xowa/src/gplx/xowa/langs/Xol_kwd_grp_.java
index 86481dd3e..adf282aba 100644
--- a/400_xowa/src_140_lang/gplx/xowa/Xol_kwd_grp_.java
+++ b/400_xowa/src/gplx/xowa/langs/Xol_kwd_grp_.java
@@ -15,7 +15,7 @@ GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see .
*/
-package gplx.xowa; import gplx.*;
+package gplx.xowa.langs; import gplx.*; import gplx.xowa.*;
import gplx.core.primitives.*;
public class Xol_kwd_grp_ {
public static final int
diff --git a/400_xowa/src_140_lang/gplx/xowa/Xol_kwd_itm.java b/400_xowa/src/gplx/xowa/langs/Xol_kwd_itm.java
similarity index 94%
rename from 400_xowa/src_140_lang/gplx/xowa/Xol_kwd_itm.java
rename to 400_xowa/src/gplx/xowa/langs/Xol_kwd_itm.java
index 6ebe6c304..a40ef87ee 100644
--- a/400_xowa/src_140_lang/gplx/xowa/Xol_kwd_itm.java
+++ b/400_xowa/src/gplx/xowa/langs/Xol_kwd_itm.java
@@ -15,7 +15,7 @@ GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see .
*/
-package gplx.xowa; import gplx.*;
+package gplx.xowa.langs; import gplx.*; import gplx.xowa.*;
public class Xol_kwd_itm {// NOTE: keeping as separate class b/c may include fmt props later; EX: thumbnail=$1
public Xol_kwd_itm(byte[] val) {this.val = val;}
public byte[] Val() {return val;} private byte[] val;
diff --git a/400_xowa/src_140_lang/gplx/xowa/Xol_kwd_mgr.java b/400_xowa/src/gplx/xowa/langs/Xol_kwd_mgr.java
similarity index 96%
rename from 400_xowa/src_140_lang/gplx/xowa/Xol_kwd_mgr.java
rename to 400_xowa/src/gplx/xowa/langs/Xol_kwd_mgr.java
index 69682891c..f9778f450 100644
--- a/400_xowa/src_140_lang/gplx/xowa/Xol_kwd_mgr.java
+++ b/400_xowa/src/gplx/xowa/langs/Xol_kwd_mgr.java
@@ -15,7 +15,7 @@ GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see .
*/
-package gplx.xowa; import gplx.*;
+package gplx.xowa.langs; import gplx.*; import gplx.xowa.*;
import gplx.core.btries.*;
public class Xol_kwd_mgr implements GfoInvkAble {
public Xol_kwd_mgr(Xol_lang lang) {this.lang = lang;} private Xol_lang lang; Xol_kwd_grp[] grps = new Xol_kwd_grp[Xol_kwd_grp_.Id__max];
diff --git a/400_xowa/src_140_lang/gplx/xowa/Xol_kwd_parse_data.java b/400_xowa/src/gplx/xowa/langs/Xol_kwd_parse_data.java
similarity index 95%
rename from 400_xowa/src_140_lang/gplx/xowa/Xol_kwd_parse_data.java
rename to 400_xowa/src/gplx/xowa/langs/Xol_kwd_parse_data.java
index 9b4525f5c..c98222141 100644
--- a/400_xowa/src_140_lang/gplx/xowa/Xol_kwd_parse_data.java
+++ b/400_xowa/src/gplx/xowa/langs/Xol_kwd_parse_data.java
@@ -15,7 +15,7 @@ GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see .
*/
-package gplx.xowa; import gplx.*;
+package gplx.xowa.langs; import gplx.*; import gplx.xowa.*;
import gplx.core.primitives.*;
public class Xol_kwd_parse_data {
public static byte[] Strip(Bry_bfr tmp, byte[] raw, Byte_obj_ref rslt) {
diff --git a/400_xowa/src_140_lang/gplx/xowa/Xol_kwd_parse_data_tst.java b/400_xowa/src/gplx/xowa/langs/Xol_kwd_parse_data_tst.java
similarity index 94%
rename from 400_xowa/src_140_lang/gplx/xowa/Xol_kwd_parse_data_tst.java
rename to 400_xowa/src/gplx/xowa/langs/Xol_kwd_parse_data_tst.java
index eac1e50a1..cf76af2c8 100644
--- a/400_xowa/src_140_lang/gplx/xowa/Xol_kwd_parse_data_tst.java
+++ b/400_xowa/src/gplx/xowa/langs/Xol_kwd_parse_data_tst.java
@@ -15,7 +15,7 @@ GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see .
*/
-package gplx.xowa; import gplx.*;
+package gplx.xowa.langs; import gplx.*; import gplx.xowa.*;
import org.junit.*; import gplx.core.primitives.*;
public class Xol_kwd_parse_data_tst {
@Before public void init() {Clear();}
diff --git a/400_xowa/src_140_lang/gplx/xowa/Xol_lang.java b/400_xowa/src/gplx/xowa/langs/Xol_lang.java
similarity index 62%
rename from 400_xowa/src_140_lang/gplx/xowa/Xol_lang.java
rename to 400_xowa/src/gplx/xowa/langs/Xol_lang.java
index 69fbde20c..d91989e42 100644
--- a/400_xowa/src_140_lang/gplx/xowa/Xol_lang.java
+++ b/400_xowa/src/gplx/xowa/langs/Xol_lang.java
@@ -15,16 +15,15 @@ GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see .
*/
-package gplx.xowa; import gplx.*;
-import gplx.xowa.apps.*; import gplx.xowa.apps.fsys.*; import gplx.xowa.langs.*; import gplx.intl.*; import gplx.xowa.xtns.lst.*; import gplx.xowa.wikis.caches.*;
-import gplx.xowa.langs.cases.*; import gplx.xowa.langs.cnvs.*; import gplx.xowa.langs.grammars.*; import gplx.xowa.langs.genders.*; import gplx.xowa.langs.plurals.*; import gplx.xowa.langs.vnts.*; import gplx.xowa.langs.numbers.*; import gplx.xowa.langs.durations.*;
-import gplx.xowa.parsers.lnkis.*;
+package gplx.xowa.langs; import gplx.*; import gplx.xowa.*;
+import gplx.xowa.langs.cases.*; import gplx.xowa.langs.grammars.*; import gplx.xowa.langs.genders.*; import gplx.xowa.langs.plurals.*; import gplx.xowa.langs.vnts.*; import gplx.xowa.langs.vnts.converts.*; import gplx.xowa.langs.numbers.*; import gplx.xowa.langs.durations.*;
+import gplx.xowa.apps.gfss.*; import gplx.xowa.apps.fsys.*; import gplx.core.intls.*; import gplx.xowa.nss.*; import gplx.xowa.xtns.lst.*; import gplx.xowa.wikis.caches.*; import gplx.xowa.parsers.lnkis.*;
public class Xol_lang implements GfoInvkAble {
private boolean loaded = false;
public Xol_lang(Xoa_lang_mgr lang_mgr, byte[] key_bry) {
this.lang_mgr = lang_mgr; this.key_bry = key_bry; this.key_str = String_.new_u8(key_bry);
Xol_lang_itm lang_itm = Xol_lang_itm_.Get_by_key(key_bry); if (lang_itm == null) throw Err_.new_wo_type("unknown lang_key", "key", String_.new_u8(key_bry));
- this.lang_id = lang_itm.Id();
+ this.lang_id = lang_itm.Id();
this.func_regy = new Xol_func_name_regy(lang_mgr, this);
this.ns_names = new Xol_ns_grp(this); this.ns_aliases = new Xol_ns_grp(this);
this.kwd_mgr = new Xol_kwd_mgr(this);
@@ -33,57 +32,55 @@ public class Xol_lang implements GfoInvkAble {
this.case_mgr = Env_.Mode_testing() ? Xol_case_mgr_.A7() : Xol_case_mgr_.U8(); // NOTE: if test load ascii b/c utf8 is large; NOTE: placed here b/c tests do not call load; DATE:2014-07-04
this.num_mgr = Xol_num_mgr_.new_by_lang_id(lang_id);
this.lnki_trail_mgr = new Xol_lnki_trail_mgr(this);
- this.vnt_mgr = new Xol_vnt_mgr(this);
- this.cnv_mgr = new Xol_cnv_mgr(this);
+ this.vnt_mgr = new Xol_vnt_mgr(this);
this.grammar = Xol_grammar_.new_by_lang_id(lang_id);
this.gender = Xol_gender_.new_by_lang_id(lang_id);
this.plural = Xol_plural_.new_by_lang_id(lang_id);
this.duration_mgr = new Xol_duration_mgr(this);
if (lang_id != Xol_lang_itm_.Id_en) fallback_bry_ary = Fallback_bry_ary__en; // NOTE: do not set fallback_ary for en to en, else recursive loop
}
- public byte[] Key_bry() {return key_bry;} private final byte[] key_bry;
- public String Key_str() {return key_str;} private final String key_str;
- public int Lang_id() {return lang_id;} private final int lang_id;
- public Xol_ns_grp Ns_names() {return ns_names;} private final Xol_ns_grp ns_names;
- public Xol_ns_grp Ns_aliases() {return ns_aliases;} private final Xol_ns_grp ns_aliases;
- public Xoa_lang_mgr Lang_mgr() {return lang_mgr;} private final Xoa_lang_mgr lang_mgr;
- public Xol_kwd_mgr Kwd_mgr() {return kwd_mgr;} private final Xol_kwd_mgr kwd_mgr;
- public boolean Kwd_mgr__strx() {return kwd_mgr__strx;} public Xol_lang Kwd_mgr__strx_(boolean v) {kwd_mgr__strx = v; return this;} private boolean kwd_mgr__strx;
- public Xol_msg_mgr Msg_mgr() {return msg_mgr;} private final Xol_msg_mgr msg_mgr;
- public Xol_specials_mgr Specials_mgr() {return specials_mgr;} private final Xol_specials_mgr specials_mgr;
- public Xol_case_mgr Case_mgr() {return case_mgr;} private Xol_case_mgr case_mgr;
- public void Case_mgr_u8_() {case_mgr = Xol_case_mgr_.U8();} // TEST:
- public Xol_font_info Gui_font() {return gui_font;} private Xol_font_info gui_font = new Xol_font_info(null, 0, gplx.gfui.FontStyleAdp_.Plain);
- public byte[] Fallback_bry() {return fallback_bry;}
- private byte[] X_axis_end() {return dir_ltr ? X_axis_end_right : X_axis_end_left;}
- public boolean Dir_ltr() {return dir_ltr;}
- public void Dir_ltr_(boolean v) {
- dir_ltr = v;
- img_thumb_halign_default = dir_ltr ? Xop_lnki_align_h.Right : Xop_lnki_align_h.Left;
- } private boolean dir_ltr = true;
- public byte[] Dir_ltr_bry() {return dir_ltr ? Dir_bry_ltr : Dir_bry_rtl;}
- public Xol_lang Fallback_bry_(byte[] v) {
+ public Xoa_lang_mgr Lang_mgr() {return lang_mgr;} private final Xoa_lang_mgr lang_mgr;
+ public byte[] Key_bry() {return key_bry;} private final byte[] key_bry;
+ public String Key_str() {return key_str;} private final String key_str;
+ public int Lang_id() {return lang_id;} private final int lang_id;
+ public Xol_ns_grp Ns_names() {return ns_names;} private final Xol_ns_grp ns_names;
+ public Xol_ns_grp Ns_aliases() {return ns_aliases;} private final Xol_ns_grp ns_aliases;
+ public Xol_kwd_mgr Kwd_mgr() {return kwd_mgr;} private final Xol_kwd_mgr kwd_mgr;
+ public boolean Kwd_mgr__strx() {return kwd_mgr__strx;} public Xol_lang Kwd_mgr__strx_(boolean v) {kwd_mgr__strx = v; return this;} private boolean kwd_mgr__strx;
+ public Xol_msg_mgr Msg_mgr() {return msg_mgr;} private final Xol_msg_mgr msg_mgr;
+ public Xol_specials_mgr Specials_mgr() {return specials_mgr;} private final Xol_specials_mgr specials_mgr;
+ public Xol_case_mgr Case_mgr() {return case_mgr;} private Xol_case_mgr case_mgr;
+ public void Case_mgr_u8_() {case_mgr = Xol_case_mgr_.U8();} // TEST:
+ public Xol_font_info Gui_font() {return gui_font;} private final Xol_font_info gui_font = new Xol_font_info(null, 0, gplx.gfui.FontStyleAdp_.Plain);
+ public byte[] Fallback_bry() {return fallback_bry;}
+ public Xol_lang Fallback_bry_(byte[] v) {
fallback_bry = v;
fallback_bry_ary = Fallbacy_bry_ary__bld(v);
return this;
} private byte[] fallback_bry;
- public byte[][] Fallback_bry_ary() {return fallback_bry_ary;} private byte[][] fallback_bry_ary = Bry_.Ary_empty;
- public Xol_num_mgr Num_mgr() {return num_mgr;} private final Xol_num_mgr num_mgr;
- public Xol_vnt_mgr Vnt_mgr() {return vnt_mgr;} private final Xol_vnt_mgr vnt_mgr;
- public Xol_cnv_mgr Cnv_mgr() {return cnv_mgr;} private final Xol_cnv_mgr cnv_mgr;
- public Xol_grammar Grammar() {return grammar;} private final Xol_grammar grammar;
- public Xol_gender Gender() {return gender;} private final Xol_gender gender;
- public Xol_plural Plural() {return plural;} private final Xol_plural plural;
- public Xol_duration_mgr Duration_mgr() {return duration_mgr;} private final Xol_duration_mgr duration_mgr;
- public Xol_lnki_trail_mgr Lnki_trail_mgr() {return lnki_trail_mgr;} private final Xol_lnki_trail_mgr lnki_trail_mgr;
- public Xop_lnki_arg_parser Lnki_arg_parser() {return lnki_arg_parser;} private Xop_lnki_arg_parser lnki_arg_parser = new Xop_lnki_arg_parser();
- public Xol_func_name_regy Func_regy() {return func_regy;} private final Xol_func_name_regy func_regy;
- public byte Img_thumb_halign_default() {return img_thumb_halign_default;} private byte img_thumb_halign_default = Xop_lnki_align_h.Right;
- public Hash_adp_bry Xatrs_section() {if (xatrs_section == null) xatrs_section = Lst_section_nde.new_xatrs_(this); return xatrs_section;} private Hash_adp_bry xatrs_section;
+ public byte[][] Fallback_bry_ary() {return fallback_bry_ary;} private byte[][] fallback_bry_ary = Bry_.Ary_empty;
+ public boolean Dir_ltr() {return dir_ltr;} private boolean dir_ltr = true;
+ public void Dir_ltr_(boolean v) {
+ dir_ltr = v;
+ img_thumb_halign_default = dir_ltr ? Xop_lnki_align_h.Right : Xop_lnki_align_h.Left;
+ }
+ public byte[] Dir_ltr_bry() {return dir_ltr ? Dir_bry_ltr : Dir_bry_rtl;}
+ public Xol_num_mgr Num_mgr() {return num_mgr;} private final Xol_num_mgr num_mgr;
+ public Xol_vnt_mgr Vnt_mgr() {return vnt_mgr;} private final Xol_vnt_mgr vnt_mgr;
+ public Xol_grammar Grammar() {return grammar;} private final Xol_grammar grammar;
+ public Xol_gender Gender() {return gender;} private final Xol_gender gender;
+ public Xol_plural Plural() {return plural;} private final Xol_plural plural;
+ public Xol_duration_mgr Duration_mgr() {return duration_mgr;} private final Xol_duration_mgr duration_mgr;
+ public Xol_lnki_trail_mgr Lnki_trail_mgr() {return lnki_trail_mgr;} private final Xol_lnki_trail_mgr lnki_trail_mgr;
+ public Xop_lnki_arg_parser Lnki_arg_parser() {return lnki_arg_parser;} private Xop_lnki_arg_parser lnki_arg_parser = new Xop_lnki_arg_parser();
+ public Xol_func_name_regy Func_regy() {return func_regy;} private final Xol_func_name_regy func_regy;
+ public byte Img_thumb_halign_default() {return img_thumb_halign_default;} private byte img_thumb_halign_default = Xop_lnki_align_h.Right;
+ public Hash_adp_bry Xatrs_section() {if (xatrs_section == null) xatrs_section = Lst_section_nde.new_xatrs_(this); return xatrs_section;} private Hash_adp_bry xatrs_section;
public void Evt_lang_changed() {
lnki_arg_parser.Evt_lang_changed(this);
func_regy.Evt_lang_changed(this);
}
+ private byte[] X_axis_end() {return dir_ltr ? X_axis_end_right : X_axis_end_left;}
public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) {
if (ctx.Match(k, Invk_ns_names)) return ns_names;
else if (ctx.Match(k, Invk_ns_aliases)) return ns_aliases;
@@ -91,7 +88,7 @@ public class Xol_lang implements GfoInvkAble {
else if (ctx.Match(k, Invk_messages)) return msg_mgr;
else if (ctx.Match(k, Invk_specials)) return specials_mgr;
else if (ctx.Match(k, Invk_casings)) return case_mgr;
- else if (ctx.Match(k, Invk_converts)) return cnv_mgr;
+ else if (ctx.Match(k, Invk_converts)) return vnt_mgr.Convert_mgr().Converter_regy();
else if (ctx.Match(k, Invk_variants)) return vnt_mgr;
else if (ctx.Match(k, Invk_dir_rtl_)) Dir_ltr_(!m.ReadYn("v"));
else if (ctx.Match(k, Invk_dir_str)) return Dir_ltr_bry();
@@ -136,7 +133,7 @@ public class Xol_lang implements GfoInvkAble {
private void Load_lang(byte[] v) {
Xoa_gfs_mgr gfs_mgr = Xoa_app_.Gfs_mgr(); Xoa_fsys_mgr app_fsys_mgr = gfs_mgr.App_fsys_mgr();
gfs_mgr.Run_url_for(this, Xol_lang_.xo_lang_fil_(app_fsys_mgr, String_.new_a7(v)));
- gfs_mgr.Run_url_for(gfs_mgr.Root_invk(), Xol_cnv_mgr.Bld_url(app_fsys_mgr, key_str));
+ gfs_mgr.Run_url_for(gfs_mgr.Root_invk(), Xol_convert_regy.Bld_url(app_fsys_mgr, key_str));
}
private static final byte[]
Dir_bry_ltr = Bry_.new_a7("ltr"), Dir_bry_rtl = Bry_.new_a7("rtl")
@@ -144,7 +141,7 @@ public class Xol_lang implements GfoInvkAble {
;
public static final int Tid_lower = 1, Tid_upper = 2;
private static byte[][] Fallbacy_bry_ary__bld(byte[] v) {
- byte[][] rv = Bry_.Split(v, Byte_ascii.Comma, true); // gan -> 'gan-hant, zh-hant, zh-hans'
+ byte[][] rv = Bry_split_.Split(v, Byte_ascii.Comma, true); // gan -> 'gan-hant, zh-hant, zh-hans'
boolean en_needed = true;
int rv_len = rv.length;
for (int i = 0; i < rv_len; i++) {
diff --git a/400_xowa/src_140_lang/gplx/xowa/Xol_lang_.java b/400_xowa/src/gplx/xowa/langs/Xol_lang_.java
similarity index 97%
rename from 400_xowa/src_140_lang/gplx/xowa/Xol_lang_.java
rename to 400_xowa/src/gplx/xowa/langs/Xol_lang_.java
index 0a7415198..69d320019 100644
--- a/400_xowa/src_140_lang/gplx/xowa/Xol_lang_.java
+++ b/400_xowa/src/gplx/xowa/langs/Xol_lang_.java
@@ -15,8 +15,8 @@ GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see .
*/
-package gplx.xowa; import gplx.*;
-import gplx.intl.*; import gplx.xowa.xtns.cite.*; import gplx.xowa.xtns.gallery.*; import gplx.xowa.bldrs.langs.*; import gplx.xowa.langs.numbers.*;
+package gplx.xowa.langs; import gplx.*; import gplx.xowa.*;
+import gplx.core.intls.*; import gplx.xowa.xtns.cite.*; import gplx.xowa.xtns.gallery.*; import gplx.xowa.bldrs.langs.*; import gplx.xowa.langs.numbers.*;
import gplx.xowa.apps.fsys.*;
public class Xol_lang_ {
public static Io_url xo_lang_fil_(Xoa_fsys_mgr app_fsys_mgr, String lang_key) {return app_fsys_mgr.Cfg_lang_core_dir().GenSubFil(lang_key + ".gfs");}
diff --git a/400_xowa/src_140_lang/gplx/xowa/Xol_lang_srl.java b/400_xowa/src/gplx/xowa/langs/Xol_lang_srl.java
similarity index 95%
rename from 400_xowa/src_140_lang/gplx/xowa/Xol_lang_srl.java
rename to 400_xowa/src/gplx/xowa/langs/Xol_lang_srl.java
index fd22d57f9..3d2ab282d 100644
--- a/400_xowa/src_140_lang/gplx/xowa/Xol_lang_srl.java
+++ b/400_xowa/src/gplx/xowa/langs/Xol_lang_srl.java
@@ -15,8 +15,10 @@ GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see .
*/
-package gplx.xowa; import gplx.*;
-import gplx.intl.*; import gplx.xowa.langs.numbers.*;
+package gplx.xowa.langs; import gplx.*; import gplx.xowa.*;
+import gplx.core.intls.*;
+import gplx.xowa.apps.gfss.*; import gplx.xowa.langs.numbers.*;
+import gplx.xowa.nss.*;
public class Xol_lang_srl {
public static Xow_ns[] Load_ns_grps(byte[] src) {
int src_len = src.length, pos = 0, fld_bgn = 0;
@@ -135,7 +137,7 @@ public class Xol_lang_srl {
break;
case Byte_ascii.Nl:
byte[] cur_val_raw = csv_parser.Load(src, fld_bgn, pos);
- byte[][] cur_vals = Bry_.Split(cur_val_raw, Byte_ascii.Tilde);
+ byte[][] cur_vals = Bry_split_.Split(cur_val_raw, Byte_ascii.Tilde);
special_mgr.Add(cur_key, cur_vals);
fld_bgn = pos + 1;
break;
diff --git a/400_xowa/src_140_lang/gplx/xowa/Xol_lang_srl_tst.java b/400_xowa/src/gplx/xowa/langs/Xol_lang_srl_tst.java
similarity index 95%
rename from 400_xowa/src_140_lang/gplx/xowa/Xol_lang_srl_tst.java
rename to 400_xowa/src/gplx/xowa/langs/Xol_lang_srl_tst.java
index 6ac91b941..b59856188 100644
--- a/400_xowa/src_140_lang/gplx/xowa/Xol_lang_srl_tst.java
+++ b/400_xowa/src/gplx/xowa/langs/Xol_lang_srl_tst.java
@@ -15,9 +15,11 @@ GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see .
*/
-package gplx.xowa; import gplx.*;
+package gplx.xowa.langs; import gplx.*; import gplx.xowa.*;
import org.junit.*; import gplx.core.strings.*;
-import gplx.intl.*; import gplx.xowa.apps.*; import gplx.xowa.langs.numbers.*;
+import gplx.core.intls.*;
+import gplx.xowa.apps.gfss.*; import gplx.xowa.langs.numbers.*;
+import gplx.xowa.nss.*;
public class Xol_lang_srl_tst {
private Xol_lang_srl_fxt fxt = new Xol_lang_srl_fxt();
@Before public void init() {fxt.Clear();}
diff --git a/400_xowa/src_140_lang/gplx/xowa/Xol_lnki_trail_mgr.java b/400_xowa/src/gplx/xowa/langs/Xol_lnki_trail_mgr.java
similarity index 93%
rename from 400_xowa/src_140_lang/gplx/xowa/Xol_lnki_trail_mgr.java
rename to 400_xowa/src/gplx/xowa/langs/Xol_lnki_trail_mgr.java
index 753679598..6cf1379d4 100644
--- a/400_xowa/src_140_lang/gplx/xowa/Xol_lnki_trail_mgr.java
+++ b/400_xowa/src/gplx/xowa/langs/Xol_lnki_trail_mgr.java
@@ -15,7 +15,7 @@ GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see .
*/
-package gplx.xowa; import gplx.*;
+package gplx.xowa.langs; import gplx.*; import gplx.xowa.*;
import gplx.core.btries.*;
public class Xol_lnki_trail_mgr implements GfoInvkAble {
public Xol_lnki_trail_mgr(Xol_lang lang) {}
@@ -42,7 +42,7 @@ public class Xol_lnki_trail_mgr implements GfoInvkAble {
public void Add_bulk(byte[] src) {
int pos = 0, src_len = src.length;
while (true) {
- byte[] itm = gplx.intl.Utf8_.Get_char_at_pos_as_bry(src, pos);
+ byte[] itm = gplx.core.intls.Utf8_.Get_char_at_pos_as_bry(src, pos);
Add(itm);
pos += itm.length;
if (pos >= src_len) break;
diff --git a/400_xowa/src_140_lang/gplx/xowa/Xol_lnki_trail_mgr_tst.java b/400_xowa/src/gplx/xowa/langs/Xol_lnki_trail_mgr_tst.java
similarity index 95%
rename from 400_xowa/src_140_lang/gplx/xowa/Xol_lnki_trail_mgr_tst.java
rename to 400_xowa/src/gplx/xowa/langs/Xol_lnki_trail_mgr_tst.java
index e70c3efcd..4da3eafdc 100644
--- a/400_xowa/src_140_lang/gplx/xowa/Xol_lnki_trail_mgr_tst.java
+++ b/400_xowa/src/gplx/xowa/langs/Xol_lnki_trail_mgr_tst.java
@@ -15,7 +15,7 @@ GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see .
*/
-package gplx.xowa; import gplx.*;
+package gplx.xowa.langs; import gplx.*; import gplx.xowa.*;
import org.junit.*;
public class Xol_lnki_trail_mgr_tst {
@Before public void init() {fxt.Clear();} private Xol_lnki_trail_mgr_fxt fxt = new Xol_lnki_trail_mgr_fxt();
diff --git a/400_xowa/src_140_lang/gplx/xowa/Xol_msg_itm.java b/400_xowa/src/gplx/xowa/langs/Xol_msg_itm.java
similarity index 95%
rename from 400_xowa/src_140_lang/gplx/xowa/Xol_msg_itm.java
rename to 400_xowa/src/gplx/xowa/langs/Xol_msg_itm.java
index 6484c0676..77b57583a 100644
--- a/400_xowa/src_140_lang/gplx/xowa/Xol_msg_itm.java
+++ b/400_xowa/src/gplx/xowa/langs/Xol_msg_itm.java
@@ -15,7 +15,7 @@ GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see .
*/
-package gplx.xowa; import gplx.*;
+package gplx.xowa.langs; import gplx.*; import gplx.xowa.*;
public class Xol_msg_itm {
public Xol_msg_itm(int id, byte[] key) {this.id = id; this.key = key;}
public int Id() {return id;} public void Id_(int v) {this.id = v;} private int id;
diff --git a/400_xowa/src_140_lang/gplx/xowa/Xol_msg_itm_.java b/400_xowa/src/gplx/xowa/langs/Xol_msg_itm_.java
similarity index 98%
rename from 400_xowa/src_140_lang/gplx/xowa/Xol_msg_itm_.java
rename to 400_xowa/src/gplx/xowa/langs/Xol_msg_itm_.java
index 397773da5..1cbe52a19 100644
--- a/400_xowa/src_140_lang/gplx/xowa/Xol_msg_itm_.java
+++ b/400_xowa/src/gplx/xowa/langs/Xol_msg_itm_.java
@@ -15,7 +15,7 @@ GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see .
*/
-package gplx.xowa; import gplx.*;
+package gplx.xowa.langs; import gplx.*; import gplx.xowa.*;
import gplx.core.btries.*; import gplx.xowa.parsers.tmpls.*;
public class Xol_msg_itm_ {
public static final int
@@ -263,7 +263,7 @@ public static final int
private static final Bry_bfr tmp_bfr = Bry_bfr.reset_(255);
public static void update_val_(Xol_msg_itm itm, byte[] val) {
boolean has_fmt_arg = tmp_fmtr.Fmt_(val).Compile().Fmt_args_exist();
- boolean has_tmpl_txt = Bry_finder.Find_fwd(val, Xop_curly_bgn_lxr.Hook, 0) != -1;
+ boolean has_tmpl_txt = Bry_find_.Find_fwd(val, Xop_curly_bgn_lxr.Hook, 0) != -1;
val = trie_space.Replace(tmp_bfr, val, 0, val.length);
itm.Atrs_set(val, has_fmt_arg, has_tmpl_txt);
}
@@ -511,7 +511,7 @@ case Xol_msg_itm_.Id_xowa_wikidata_links_special: return new_(Xol_msg_itm_.Id_xo
}
}
public static byte[] eval_(Bry_bfr bfr, Xol_msg_itm tmp_msg_itm, byte[] val, Object... args) {
- val = gplx.xowa.apps.Xoa_gfs_php_mgr.Xto_gfs(bfr, val);
+ val = gplx.xowa.apps.gfss.Xoa_gfs_php_mgr.Xto_gfs(bfr, val);
update_val_(tmp_msg_itm, val);
return tmp_fmtr.Bld_bry_many(bfr, args);
}
diff --git a/400_xowa/src_140_lang/gplx/xowa/Xol_msg_itm_tst.java b/400_xowa/src/gplx/xowa/langs/Xol_msg_itm_tst.java
similarity index 95%
rename from 400_xowa/src_140_lang/gplx/xowa/Xol_msg_itm_tst.java
rename to 400_xowa/src/gplx/xowa/langs/Xol_msg_itm_tst.java
index 653817aef..e8a875324 100644
--- a/400_xowa/src_140_lang/gplx/xowa/Xol_msg_itm_tst.java
+++ b/400_xowa/src/gplx/xowa/langs/Xol_msg_itm_tst.java
@@ -15,7 +15,7 @@ GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see .
*/
-package gplx.xowa; import gplx.*;
+package gplx.xowa.langs; import gplx.*; import gplx.xowa.*;
import org.junit.*;
public class Xol_msg_itm_tst {
@Before public void init() {fxt.Clear();} private Xol_msg_itm_fxt fxt = new Xol_msg_itm_fxt();
diff --git a/400_xowa/src_140_lang/gplx/xowa/Xol_msg_mgr.java b/400_xowa/src/gplx/xowa/langs/Xol_msg_mgr.java
similarity index 95%
rename from 400_xowa/src_140_lang/gplx/xowa/Xol_msg_mgr.java
rename to 400_xowa/src/gplx/xowa/langs/Xol_msg_mgr.java
index 4211ff3b7..679f17fe7 100644
--- a/400_xowa/src_140_lang/gplx/xowa/Xol_msg_mgr.java
+++ b/400_xowa/src/gplx/xowa/langs/Xol_msg_mgr.java
@@ -15,7 +15,7 @@ GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see .
*/
-package gplx.xowa; import gplx.*;
+package gplx.xowa.langs; import gplx.*; import gplx.xowa.*;
public class Xol_msg_mgr implements GfoInvkAble {
private final GfoInvkAble owner; private final boolean owner_is_lang;
public Xol_msg_mgr(GfoInvkAble owner, boolean owner_is_lang) {
@@ -64,7 +64,7 @@ public class Xol_msg_mgr implements GfoInvkAble {
Xol_msg_itm itm = Itm_by_id_or_null(id);
if (itm == null) return null;
byte[] rv = itm.Val();
- if (itm.Has_tmpl_txt()) rv = wiki.Parser().Parse_text_to_wtxt(rv);
+ if (itm.Has_tmpl_txt()) rv = wiki.Parser_mgr().Main().Parse_text_to_wtxt(rv);
return rv;
}
public byte[] Val_by_str_or_empty(String str) {return Val_by_bry_or(Bry_.new_u8(str), Bry_.Empty);}
diff --git a/400_xowa/src_140_lang/gplx/xowa/Xol_msg_mgr_tst.java b/400_xowa/src/gplx/xowa/langs/Xol_msg_mgr_tst.java
similarity index 95%
rename from 400_xowa/src_140_lang/gplx/xowa/Xol_msg_mgr_tst.java
rename to 400_xowa/src/gplx/xowa/langs/Xol_msg_mgr_tst.java
index 41804ea6e..d78a47b59 100644
--- a/400_xowa/src_140_lang/gplx/xowa/Xol_msg_mgr_tst.java
+++ b/400_xowa/src/gplx/xowa/langs/Xol_msg_mgr_tst.java
@@ -15,8 +15,8 @@ GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see .
*/
-package gplx.xowa; import gplx.*;
-import org.junit.*;
+package gplx.xowa.langs; import gplx.*; import gplx.xowa.*;
+import org.junit.*; import gplx.xowa.langs.msgs.*;
public class Xol_msg_mgr_tst {
Xol_msg_mgr_fxt fxt = new Xol_msg_mgr_fxt();
@Before public void init() {fxt.Clear();}
diff --git a/400_xowa/src_140_lang/gplx/xowa/Xol_ns_grp.java b/400_xowa/src/gplx/xowa/langs/Xol_ns_grp.java
similarity index 94%
rename from 400_xowa/src_140_lang/gplx/xowa/Xol_ns_grp.java
rename to 400_xowa/src/gplx/xowa/langs/Xol_ns_grp.java
index 688ae3443..7565cac90 100644
--- a/400_xowa/src_140_lang/gplx/xowa/Xol_ns_grp.java
+++ b/400_xowa/src/gplx/xowa/langs/Xol_ns_grp.java
@@ -15,7 +15,8 @@ GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see .
*/
-package gplx.xowa; import gplx.*;
+package gplx.xowa.langs; import gplx.*; import gplx.xowa.*;
+import gplx.xowa.nss.*;
public class Xol_ns_grp implements GfoInvkAble {
public Xol_ns_grp(Xol_lang lang) {this.lang = lang;} private Xol_lang lang;
public int Len() {return ary.length;}
diff --git a/400_xowa/src_140_lang/gplx/xowa/Xol_specials_itm.java b/400_xowa/src/gplx/xowa/langs/Xol_specials_itm.java
similarity index 93%
rename from 400_xowa/src_140_lang/gplx/xowa/Xol_specials_itm.java
rename to 400_xowa/src/gplx/xowa/langs/Xol_specials_itm.java
index da4f4fa62..4ab8ae8fc 100644
--- a/400_xowa/src_140_lang/gplx/xowa/Xol_specials_itm.java
+++ b/400_xowa/src/gplx/xowa/langs/Xol_specials_itm.java
@@ -15,7 +15,7 @@ GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see .
*/
-package gplx.xowa; import gplx.*;
+package gplx.xowa.langs; import gplx.*; import gplx.xowa.*;
public class Xol_specials_itm {
public Xol_specials_itm(byte[] special, byte[][] aliases) {this.special = special; this.aliases = aliases;}
public byte[] Special() {return special;} private byte[] special;
diff --git a/400_xowa/src_140_lang/gplx/xowa/Xol_specials_mgr.java b/400_xowa/src/gplx/xowa/langs/Xol_specials_mgr.java
similarity index 96%
rename from 400_xowa/src_140_lang/gplx/xowa/Xol_specials_mgr.java
rename to 400_xowa/src/gplx/xowa/langs/Xol_specials_mgr.java
index a4f5445d5..69e90db8a 100644
--- a/400_xowa/src_140_lang/gplx/xowa/Xol_specials_mgr.java
+++ b/400_xowa/src/gplx/xowa/langs/Xol_specials_mgr.java
@@ -15,7 +15,7 @@ GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see .
*/
-package gplx.xowa; import gplx.*;
+package gplx.xowa.langs; import gplx.*; import gplx.xowa.*;
public class Xol_specials_mgr implements GfoInvkAble {
private Ordered_hash hash_by_special = Ordered_hash_.new_bry_(), hash_by_aliases = Ordered_hash_.new_bry_();
public Xol_specials_mgr(Xol_lang lang) {this.lang = lang;} private Xol_lang lang;
diff --git a/400_xowa/src/gplx/xowa/langs/cases/Xol_case_itm.java b/400_xowa/src/gplx/xowa/langs/cases/Xol_case_itm.java
index 474730f67..8012d1d3f 100644
--- a/400_xowa/src/gplx/xowa/langs/cases/Xol_case_itm.java
+++ b/400_xowa/src/gplx/xowa/langs/cases/Xol_case_itm.java
@@ -17,7 +17,7 @@ along with this program. If not, see .
*/
package gplx.xowa.langs.cases; import gplx.*; import gplx.xowa.*; import gplx.xowa.langs.*;
import gplx.core.primitives.*;
-import gplx.intl.*;
+import gplx.core.intls.*;
public interface Xol_case_itm extends Gfo_case_itm {
byte Tid();
byte[] Src_ary();
diff --git a/400_xowa/src/gplx/xowa/langs/cases/Xol_case_itm_.java b/400_xowa/src/gplx/xowa/langs/cases/Xol_case_itm_.java
index da9ef4eaa..79762f25d 100644
--- a/400_xowa/src/gplx/xowa/langs/cases/Xol_case_itm_.java
+++ b/400_xowa/src/gplx/xowa/langs/cases/Xol_case_itm_.java
@@ -82,8 +82,8 @@ public class Xol_case_itm_ {
private static int parse_mw_grp(Ordered_hash hash, byte[] raw, boolean section_is_upper, int find_bgn) {
byte[] find = section_is_upper ? parse_mw_upper : parse_mw_lower;
int raw_len = raw.length;
- int pos = Bry_finder.Find_fwd(raw, find, find_bgn); if (pos == Bry_.NotFound) throw Err_.new_wo_type("could not find section name", "name", String_.new_u8(find));
- pos = Bry_finder.Find_fwd(raw, Byte_ascii.Curly_bgn, pos, raw_len); if (pos == Bry_.NotFound) throw Err_.new_wo_type("could not find '{' after section name", "name", String_.new_u8(find));
+ int pos = Bry_find_.Find_fwd(raw, find, find_bgn); if (pos == Bry_.NotFound) throw Err_.new_wo_type("could not find section name", "name", String_.new_u8(find));
+ pos = Bry_find_.Find_fwd(raw, Byte_ascii.Curly_bgn, pos, raw_len); if (pos == Bry_.NotFound) throw Err_.new_wo_type("could not find '{' after section name", "name", String_.new_u8(find));
int itm_bgn = 0;
boolean quote_off = true, itm_is_first = true;
byte[] cur_lhs = Bry_.Empty;
diff --git a/400_xowa/src/gplx/xowa/langs/cases/Xol_case_mgr.java b/400_xowa/src/gplx/xowa/langs/cases/Xol_case_mgr.java
index eeff9ed6a..634a695cb 100644
--- a/400_xowa/src/gplx/xowa/langs/cases/Xol_case_mgr.java
+++ b/400_xowa/src/gplx/xowa/langs/cases/Xol_case_mgr.java
@@ -16,7 +16,7 @@ You should have received a copy of the GNU Affero General Public License
along with this program. If not, see .
*/
package gplx.xowa.langs.cases; import gplx.*; import gplx.xowa.*; import gplx.xowa.langs.*;
-import gplx.core.btries.*; import gplx.intl.*;
+import gplx.core.btries.*; import gplx.core.intls.*;
public class Xol_case_mgr implements GfoInvkAble, Gfo_case_mgr {
private Bry_bfr tmp_bfr = Bry_bfr.new_(); private Btrie_fast_mgr upper_trie = Btrie_fast_mgr.cs(), lower_trie = Btrie_fast_mgr.cs(); private Xol_case_itm[] itms;
public Xol_case_mgr(byte tid) {this.tid = tid;}
@@ -64,7 +64,7 @@ public class Xol_case_mgr implements GfoInvkAble, Gfo_case_mgr {
while (true) {
if (pos >= end) break;
byte b = src[pos];
- int b_len = gplx.intl.Utf8_.Len_of_char_by_1st_byte(b);
+ int b_len = gplx.core.intls.Utf8_.Len_of_char_by_1st_byte(b);
Object o = trie.Match_bgn_w_byte(b, src, pos, end); // NOTE: used to be (b, src, bgn, end) which would never case correctly; DATE:2013-12-25
if (o != null && pos < end) { // pos < end used for casing 1st letter only; upper_1st will pass end of 1
Xol_case_itm itm = (Xol_case_itm)o;
@@ -82,7 +82,7 @@ public class Xol_case_mgr implements GfoInvkAble, Gfo_case_mgr {
int src_len = src.length;
if (src_len == 0) return src; // empty bry
byte b = src[0];
- int b_len = gplx.intl.Utf8_.Len_of_char_by_1st_byte(b);
+ int b_len = gplx.core.intls.Utf8_.Len_of_char_by_1st_byte(b);
Object o = upper_trie.Match_bgn_w_byte(b, src, 0, b_len);
if (o == null) return src; // 1st letter is not a lower case char (either num, symbol, or upper)
Xol_case_itm itm = (Xol_case_itm)o;
@@ -102,7 +102,7 @@ public class Xol_case_mgr implements GfoInvkAble, Gfo_case_mgr {
while (true) {
if (pos >= end) break;
byte b = src[pos];
- int b_len = gplx.intl.Utf8_.Len_of_char_by_1st_byte(b);
+ int b_len = gplx.core.intls.Utf8_.Len_of_char_by_1st_byte(b);
Object o = trie.Match_bgn_w_byte(b, src, pos, end); // NOTE: used to be (b, src, bgn, end) which would never case correctly; DATE:2013-12-25
if (o != null && pos < end) { // pos < end used for casing 1st letter only; upper_1st will pass end of 1
Xol_case_itm itm = (Xol_case_itm)o;
@@ -122,7 +122,7 @@ public class Xol_case_mgr implements GfoInvkAble, Gfo_case_mgr {
public byte[] Case_build_1st_lower(Bry_bfr bfr, byte[] src, int bgn, int end) {return Case_build_1st(bfr, Bool_.N, src, bgn, end);}
public byte[] Case_build_1st(Bry_bfr bfr, boolean upper, byte[] src, int bgn, int end) {
if (bgn == end) return Bry_.Empty; // upper "" -> ""
- int b_len = gplx.intl.Utf8_.Len_of_char_by_1st_byte(src[bgn]);
+ int b_len = gplx.core.intls.Utf8_.Len_of_char_by_1st_byte(src[bgn]);
bfr.Add(Case_build(upper, src, bgn, bgn + b_len));
bfr.Add_mid(src, bgn + b_len, end);
return bfr.Xto_bry_and_clear();
diff --git a/400_xowa/src/gplx/xowa/langs/cases/Xol_case_mgr_.java b/400_xowa/src/gplx/xowa/langs/cases/Xol_case_mgr_.java
index ec0d89815..2a8752a8b 100644
--- a/400_xowa/src/gplx/xowa/langs/cases/Xol_case_mgr_.java
+++ b/400_xowa/src/gplx/xowa/langs/cases/Xol_case_mgr_.java
@@ -16,7 +16,7 @@ You should have received a copy of the GNU Affero General Public License
along with this program. If not, see .
*/
package gplx.xowa.langs.cases; import gplx.*; import gplx.xowa.*; import gplx.xowa.langs.*;
-import gplx.intl.*;
+import gplx.core.intls.*;
public class Xol_case_mgr_ {
@gplx.Internal protected static Xol_case_mgr new_() {return new Xol_case_mgr(Gfo_case_mgr_.Tid_custom);}
public static Xol_case_mgr A7() {if (mgr_a7 == null) mgr_a7 = new_mgr_a7_(); return mgr_a7;} private static Xol_case_mgr mgr_a7;
@@ -57,1065 +57,1065 @@ public class Xol_case_mgr_ {
private static Xol_case_mgr new_mgr_u8_() {
Xol_case_mgr rv = new Xol_case_mgr(Gfo_case_mgr_.Tid_u8);
Xol_case_itm[] itms = new Xol_case_itm[]
-{ Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(97), Bry_.ints_(65)) // a -> A -- LATIN CAPITAL LETTER A
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(98), Bry_.ints_(66)) // b -> B -- LATIN CAPITAL LETTER B
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(99), Bry_.ints_(67)) // c -> C -- LATIN CAPITAL LETTER C
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(100), Bry_.ints_(68)) // d -> D -- LATIN CAPITAL LETTER D
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(101), Bry_.ints_(69)) // e -> E -- LATIN CAPITAL LETTER E
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(102), Bry_.ints_(70)) // f -> F -- LATIN CAPITAL LETTER F
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(103), Bry_.ints_(71)) // g -> G -- LATIN CAPITAL LETTER G
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(104), Bry_.ints_(72)) // h -> H -- LATIN CAPITAL LETTER H
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(105), Bry_.ints_(73)) // i -> I -- LATIN CAPITAL LETTER I
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(106), Bry_.ints_(74)) // j -> J -- LATIN CAPITAL LETTER J
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(107), Bry_.ints_(75)) // k -> K -- LATIN CAPITAL LETTER K
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(108), Bry_.ints_(76)) // l -> L -- LATIN CAPITAL LETTER L
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(109), Bry_.ints_(77)) // m -> M -- LATIN CAPITAL LETTER M
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(110), Bry_.ints_(78)) // n -> N -- LATIN CAPITAL LETTER N
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(111), Bry_.ints_(79)) // o -> O -- LATIN CAPITAL LETTER O
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(112), Bry_.ints_(80)) // p -> P -- LATIN CAPITAL LETTER P
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(113), Bry_.ints_(81)) // q -> Q -- LATIN CAPITAL LETTER Q
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(114), Bry_.ints_(82)) // r -> R -- LATIN CAPITAL LETTER R
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(115), Bry_.ints_(83)) // s -> S -- LATIN CAPITAL LETTER S
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(116), Bry_.ints_(84)) // t -> T -- LATIN CAPITAL LETTER T
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(117), Bry_.ints_(85)) // u -> U -- LATIN CAPITAL LETTER U
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(118), Bry_.ints_(86)) // v -> V -- LATIN CAPITAL LETTER V
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(119), Bry_.ints_(87)) // w -> W -- LATIN CAPITAL LETTER W
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(120), Bry_.ints_(88)) // x -> X -- LATIN CAPITAL LETTER X
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(121), Bry_.ints_(89)) // y -> Y -- LATIN CAPITAL LETTER Y
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(122), Bry_.ints_(90)) // z -> Z -- LATIN CAPITAL LETTER Z
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(195,160), Bry_.ints_(195,128)) // à -> À -- LATIN CAPITAL LETTER A GRAVE
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(195,161), Bry_.ints_(195,129)) // á -> Á -- LATIN CAPITAL LETTER A ACUTE
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(195,162), Bry_.ints_(195,130)) // â -> Â -- LATIN CAPITAL LETTER A CIRCUMFLEX
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(195,163), Bry_.ints_(195,131)) // ã -> Ã -- LATIN CAPITAL LETTER A TILDE
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(195,164), Bry_.ints_(195,132)) // ä -> Ä -- LATIN CAPITAL LETTER A DIAERESIS
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(195,165), Bry_.ints_(195,133)) // å -> Å -- LATIN CAPITAL LETTER A RING
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(195,166), Bry_.ints_(195,134)) // æ -> Æ -- LATIN CAPITAL LETTER A E
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(195,167), Bry_.ints_(195,135)) // ç -> Ç -- LATIN CAPITAL LETTER C CEDILLA
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(195,168), Bry_.ints_(195,136)) // è -> È -- LATIN CAPITAL LETTER E GRAVE
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(195,169), Bry_.ints_(195,137)) // é -> É -- LATIN CAPITAL LETTER E ACUTE
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(195,170), Bry_.ints_(195,138)) // ê -> Ê -- LATIN CAPITAL LETTER E CIRCUMFLEX
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(195,171), Bry_.ints_(195,139)) // ë -> Ë -- LATIN CAPITAL LETTER E DIAERESIS
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(195,172), Bry_.ints_(195,140)) // ì -> Ì -- LATIN CAPITAL LETTER I GRAVE
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(195,173), Bry_.ints_(195,141)) // í -> Í -- LATIN CAPITAL LETTER I ACUTE
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(195,174), Bry_.ints_(195,142)) // î -> Î -- LATIN CAPITAL LETTER I CIRCUMFLEX
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(195,175), Bry_.ints_(195,143)) // ï -> Ï -- LATIN CAPITAL LETTER I DIAERESIS
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(195,176), Bry_.ints_(195,144)) // ð -> Ð -- LATIN CAPITAL LETTER ETH
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(195,177), Bry_.ints_(195,145)) // ñ -> Ñ -- LATIN CAPITAL LETTER N TILDE
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(195,178), Bry_.ints_(195,146)) // ò -> Ò -- LATIN CAPITAL LETTER O GRAVE
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(195,179), Bry_.ints_(195,147)) // ó -> Ó -- LATIN CAPITAL LETTER O ACUTE
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(195,180), Bry_.ints_(195,148)) // ô -> Ô -- LATIN CAPITAL LETTER O CIRCUMFLEX
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(195,181), Bry_.ints_(195,149)) // õ -> Õ -- LATIN CAPITAL LETTER O TILDE
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(195,182), Bry_.ints_(195,150)) // ö -> Ö -- LATIN CAPITAL LETTER O DIAERESIS
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(195,184), Bry_.ints_(195,152)) // ø -> Ø -- LATIN CAPITAL LETTER O SLASH
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(195,185), Bry_.ints_(195,153)) // ù -> Ù -- LATIN CAPITAL LETTER U GRAVE
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(195,186), Bry_.ints_(195,154)) // ú -> Ú -- LATIN CAPITAL LETTER U ACUTE
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(195,187), Bry_.ints_(195,155)) // û -> Û -- LATIN CAPITAL LETTER U CIRCUMFLEX
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(195,188), Bry_.ints_(195,156)) // ü -> Ü -- LATIN CAPITAL LETTER U DIAERESIS
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(195,189), Bry_.ints_(195,157)) // ý -> Ý -- LATIN CAPITAL LETTER Y ACUTE
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(195,190), Bry_.ints_(195,158)) // þ -> Þ -- LATIN CAPITAL LETTER THORN
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(195,191), Bry_.ints_(197,184)) // ÿ -> Ÿ -- LATIN SMALL LETTER Y DIAERESIS
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(196,129), Bry_.ints_(196,128)) // ā -> Ā -- LATIN CAPITAL LETTER A MACRON
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(196,131), Bry_.ints_(196,130)) // ă -> Ă -- LATIN CAPITAL LETTER A BREVE
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(196,133), Bry_.ints_(196,132)) // ą -> Ą -- LATIN CAPITAL LETTER A OGONEK
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(196,135), Bry_.ints_(196,134)) // ć -> Ć -- LATIN CAPITAL LETTER C ACUTE
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(196,137), Bry_.ints_(196,136)) // ĉ -> Ĉ -- LATIN CAPITAL LETTER C CIRCUMFLEX
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(196,139), Bry_.ints_(196,138)) // ċ -> Ċ -- LATIN CAPITAL LETTER C DOT
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(196,141), Bry_.ints_(196,140)) // č -> Č -- LATIN CAPITAL LETTER C HACEK
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(196,143), Bry_.ints_(196,142)) // ď -> Ď -- LATIN CAPITAL LETTER D HACEK
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(196,145), Bry_.ints_(196,144)) // đ -> Đ -- LATIN CAPITAL LETTER D BAR
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(196,147), Bry_.ints_(196,146)) // ē -> Ē -- LATIN CAPITAL LETTER E MACRON
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(196,149), Bry_.ints_(196,148)) // ĕ -> Ĕ -- LATIN CAPITAL LETTER E BREVE
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(196,151), Bry_.ints_(196,150)) // ė -> Ė -- LATIN CAPITAL LETTER E DOT
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(196,153), Bry_.ints_(196,152)) // ę -> Ę -- LATIN CAPITAL LETTER E OGONEK
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(196,155), Bry_.ints_(196,154)) // ě -> Ě -- LATIN CAPITAL LETTER E HACEK
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(196,157), Bry_.ints_(196,156)) // ĝ -> Ĝ -- LATIN CAPITAL LETTER G CIRCUMFLEX
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(196,159), Bry_.ints_(196,158)) // ğ -> Ğ -- LATIN CAPITAL LETTER G BREVE
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(196,161), Bry_.ints_(196,160)) // ġ -> Ġ -- LATIN CAPITAL LETTER G DOT
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(196,163), Bry_.ints_(196,162)) // ģ -> Ģ -- LATIN CAPITAL LETTER G CEDILLA
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(196,165), Bry_.ints_(196,164)) // ĥ -> Ĥ -- LATIN CAPITAL LETTER H CIRCUMFLEX
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(196,167), Bry_.ints_(196,166)) // ħ -> Ħ -- LATIN CAPITAL LETTER H BAR
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(196,169), Bry_.ints_(196,168)) // ĩ -> Ĩ -- LATIN CAPITAL LETTER I TILDE
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(196,171), Bry_.ints_(196,170)) // ī -> Ī -- LATIN CAPITAL LETTER I MACRON
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(196,173), Bry_.ints_(196,172)) // ĭ -> Ĭ -- LATIN CAPITAL LETTER I BREVE
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(196,175), Bry_.ints_(196,174)) // į -> Į -- LATIN CAPITAL LETTER I OGONEK
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(196,179), Bry_.ints_(196,178)) // ij -> IJ -- LATIN CAPITAL LETTER I J
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(196,181), Bry_.ints_(196,180)) // ĵ -> Ĵ -- LATIN CAPITAL LETTER J CIRCUMFLEX
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(196,183), Bry_.ints_(196,182)) // ķ -> Ķ -- LATIN CAPITAL LETTER K CEDILLA
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(196,186), Bry_.ints_(196,185)) // ĺ -> Ĺ -- LATIN CAPITAL LETTER L ACUTE
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(196,188), Bry_.ints_(196,187)) // ļ -> Ļ -- LATIN CAPITAL LETTER L CEDILLA
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(196,190), Bry_.ints_(196,189)) // ľ -> Ľ -- LATIN CAPITAL LETTER L HACEK
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(197,128), Bry_.ints_(196,191)) // ŀ -> Ŀ -- LATIN CAPITAL LETTER L WITH MIDDLE DOT
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(197,130), Bry_.ints_(197,129)) // ł -> Ł -- LATIN CAPITAL LETTER L SLASH
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(197,132), Bry_.ints_(197,131)) // ń -> Ń -- LATIN CAPITAL LETTER N ACUTE
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(197,134), Bry_.ints_(197,133)) // ņ -> Ņ -- LATIN CAPITAL LETTER N CEDILLA
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(197,136), Bry_.ints_(197,135)) // ň -> Ň -- LATIN CAPITAL LETTER N HACEK
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(197,139), Bry_.ints_(197,138)) // ŋ -> Ŋ -- LATIN CAPITAL LETTER ENG
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(197,141), Bry_.ints_(197,140)) // ō -> Ō -- LATIN CAPITAL LETTER O MACRON
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(197,143), Bry_.ints_(197,142)) // ŏ -> Ŏ -- LATIN CAPITAL LETTER O BREVE
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(197,145), Bry_.ints_(197,144)) // ő -> Ő -- LATIN CAPITAL LETTER O DOUBLE ACUTE
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(197,147), Bry_.ints_(197,146)) // œ -> Œ -- LATIN CAPITAL LETTER O E
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(197,149), Bry_.ints_(197,148)) // ŕ -> Ŕ -- LATIN CAPITAL LETTER R ACUTE
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(197,151), Bry_.ints_(197,150)) // ŗ -> Ŗ -- LATIN CAPITAL LETTER R CEDILLA
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(197,153), Bry_.ints_(197,152)) // ř -> Ř -- LATIN CAPITAL LETTER R HACEK
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(197,155), Bry_.ints_(197,154)) // ś -> Ś -- LATIN CAPITAL LETTER S ACUTE
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(197,157), Bry_.ints_(197,156)) // ŝ -> Ŝ -- LATIN CAPITAL LETTER S CIRCUMFLEX
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(197,159), Bry_.ints_(197,158)) // ş -> Ş -- LATIN CAPITAL LETTER S CEDILLA
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(197,161), Bry_.ints_(197,160)) // š -> Š -- LATIN CAPITAL LETTER S HACEK
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(197,163), Bry_.ints_(197,162)) // ţ -> Ţ -- LATIN CAPITAL LETTER T CEDILLA
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(197,165), Bry_.ints_(197,164)) // ť -> Ť -- LATIN CAPITAL LETTER T HACEK
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(197,167), Bry_.ints_(197,166)) // ŧ -> Ŧ -- LATIN CAPITAL LETTER T BAR
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(197,169), Bry_.ints_(197,168)) // ũ -> Ũ -- LATIN CAPITAL LETTER U TILDE
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(197,171), Bry_.ints_(197,170)) // ū -> Ū -- LATIN CAPITAL LETTER U MACRON
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(197,173), Bry_.ints_(197,172)) // ŭ -> Ŭ -- LATIN CAPITAL LETTER U BREVE
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(197,175), Bry_.ints_(197,174)) // ů -> Ů -- LATIN CAPITAL LETTER U RING
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(197,177), Bry_.ints_(197,176)) // ű -> Ű -- LATIN CAPITAL LETTER U DOUBLE ACUTE
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(197,179), Bry_.ints_(197,178)) // ų -> Ų -- LATIN CAPITAL LETTER U OGONEK
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(197,181), Bry_.ints_(197,180)) // ŵ -> Ŵ -- LATIN CAPITAL LETTER W CIRCUMFLEX
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(197,183), Bry_.ints_(197,182)) // ŷ -> Ŷ -- LATIN CAPITAL LETTER Y CIRCUMFLEX
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(197,186), Bry_.ints_(197,185)) // ź -> Ź -- LATIN CAPITAL LETTER Z ACUTE
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(197,188), Bry_.ints_(197,187)) // ż -> Ż -- LATIN CAPITAL LETTER Z DOT
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(197,190), Bry_.ints_(197,189)) // ž -> Ž -- LATIN CAPITAL LETTER Z HACEK
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(198,128), Bry_.ints_(201,131)) // ƀ -> Ƀ -- LATIN SMALL LETTER B BAR
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(201,147), Bry_.ints_(198,129)) // ɓ -> Ɓ -- LATIN CAPITAL LETTER B HOOK
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(198,131), Bry_.ints_(198,130)) // ƃ -> Ƃ -- LATIN CAPITAL LETTER B TOPBAR
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(198,133), Bry_.ints_(198,132)) // ƅ -> Ƅ -- LATIN CAPITAL LETTER TONE SIX
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(201,148), Bry_.ints_(198,134)) // ɔ -> Ɔ -- LATIN CAPITAL LETTER OPEN O
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(198,136), Bry_.ints_(198,135)) // ƈ -> Ƈ -- LATIN CAPITAL LETTER C HOOK
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(201,150), Bry_.ints_(198,137)) // ɖ -> Ɖ -- LATIN CAPITAL LETTER AFRICAN D
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(201,151), Bry_.ints_(198,138)) // ɗ -> Ɗ -- LATIN CAPITAL LETTER D HOOK
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(198,140), Bry_.ints_(198,139)) // ƌ -> Ƌ -- LATIN CAPITAL LETTER D TOPBAR
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(199,157), Bry_.ints_(198,142)) // ǝ -> Ǝ -- LATIN CAPITAL LETTER TURNED E
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(201,153), Bry_.ints_(198,143)) // ə -> Ə -- LATIN CAPITAL LETTER SCHWA
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(201,155), Bry_.ints_(198,144)) // ɛ -> Ɛ -- LATIN CAPITAL LETTER EPSILON
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(198,146), Bry_.ints_(198,145)) // ƒ -> Ƒ -- LATIN CAPITAL LETTER F HOOK
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(201,160), Bry_.ints_(198,147)) // ɠ -> Ɠ -- LATIN CAPITAL LETTER G HOOK
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(201,163), Bry_.ints_(198,148)) // ɣ -> Ɣ -- LATIN CAPITAL LETTER GAMMA
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(198,149), Bry_.ints_(199,182)) // ƕ -> Ƕ -- LATIN SMALL LETTER H V
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(201,169), Bry_.ints_(198,150)) // ɩ -> Ɩ -- LATIN CAPITAL LETTER IOTA
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(201,168), Bry_.ints_(198,151)) // ɨ -> Ɨ -- LATIN CAPITAL LETTER BARRED I
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(198,153), Bry_.ints_(198,152)) // ƙ -> Ƙ -- LATIN CAPITAL LETTER K HOOK
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(198,154), Bry_.ints_(200,189)) // ƚ -> Ƚ -- LATIN SMALL LETTER BARRED L
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(201,175), Bry_.ints_(198,156)) // ɯ -> Ɯ -- LATIN CAPITAL LETTER TURNED M
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(201,178), Bry_.ints_(198,157)) // ɲ -> Ɲ -- LATIN CAPITAL LETTER N HOOK
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(198,158), Bry_.ints_(200,160)) // ƞ -> Ƞ -- LATIN SMALL LETTER N WITH LONG RIGHT LEG
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(201,181), Bry_.ints_(198,159)) // ɵ -> Ɵ -- LATIN CAPITAL LETTER BARRED O
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(198,161), Bry_.ints_(198,160)) // ơ -> Ơ -- LATIN CAPITAL LETTER O HORN
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(198,163), Bry_.ints_(198,162)) // ƣ -> Ƣ -- LATIN CAPITAL LETTER O I
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(198,165), Bry_.ints_(198,164)) // ƥ -> Ƥ -- LATIN CAPITAL LETTER P HOOK
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(202,128), Bry_.ints_(198,166)) // ʀ -> Ʀ -- LATIN LETTER Y R
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(198,168), Bry_.ints_(198,167)) // ƨ -> Ƨ -- LATIN CAPITAL LETTER TONE TWO
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(202,131), Bry_.ints_(198,169)) // ʃ -> Ʃ -- LATIN CAPITAL LETTER ESH
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(198,173), Bry_.ints_(198,172)) // ƭ -> Ƭ -- LATIN CAPITAL LETTER T HOOK
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(202,136), Bry_.ints_(198,174)) // ʈ -> Ʈ -- LATIN CAPITAL LETTER T RETROFLEX HOOK
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(198,176), Bry_.ints_(198,175)) // ư -> Ư -- LATIN CAPITAL LETTER U HORN
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(202,138), Bry_.ints_(198,177)) // ʊ -> Ʊ -- LATIN CAPITAL LETTER UPSILON
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(202,139), Bry_.ints_(198,178)) // ʋ -> Ʋ -- LATIN CAPITAL LETTER SCRIPT V
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(198,180), Bry_.ints_(198,179)) // ƴ -> Ƴ -- LATIN CAPITAL LETTER Y HOOK
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(198,182), Bry_.ints_(198,181)) // ƶ -> Ƶ -- LATIN CAPITAL LETTER Z BAR
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(202,146), Bry_.ints_(198,183)) // ʒ -> Ʒ -- LATIN CAPITAL LETTER YOGH
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(198,185), Bry_.ints_(198,184)) // ƹ -> Ƹ -- LATIN CAPITAL LETTER REVERSED YOGH
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(198,189), Bry_.ints_(198,188)) // ƽ -> Ƽ -- LATIN CAPITAL LETTER TONE FIVE
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(198,191), Bry_.ints_(199,183)) // ƿ -> Ƿ -- LATIN LETTER WYNN
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(199,134), Bry_.ints_(199,132)) // dž -> DŽ -- LATIN CAPITAL LETTER D Z HACEK
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(199,137), Bry_.ints_(199,135)) // lj -> LJ -- LATIN CAPITAL LETTER L J
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(199,140), Bry_.ints_(199,138)) // nj -> NJ -- LATIN CAPITAL LETTER N J
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(199,142), Bry_.ints_(199,141)) // ǎ -> Ǎ -- LATIN CAPITAL LETTER A HACEK
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(199,144), Bry_.ints_(199,143)) // ǐ -> Ǐ -- LATIN CAPITAL LETTER I HACEK
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(199,146), Bry_.ints_(199,145)) // ǒ -> Ǒ -- LATIN CAPITAL LETTER O HACEK
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(199,148), Bry_.ints_(199,147)) // ǔ -> Ǔ -- LATIN CAPITAL LETTER U HACEK
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(199,150), Bry_.ints_(199,149)) // ǖ -> Ǖ -- LATIN CAPITAL LETTER U DIAERESIS MACRON
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(199,152), Bry_.ints_(199,151)) // ǘ -> Ǘ -- LATIN CAPITAL LETTER U DIAERESIS ACUTE
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(199,154), Bry_.ints_(199,153)) // ǚ -> Ǚ -- LATIN CAPITAL LETTER U DIAERESIS HACEK
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(199,156), Bry_.ints_(199,155)) // ǜ -> Ǜ -- LATIN CAPITAL LETTER U DIAERESIS GRAVE
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(199,159), Bry_.ints_(199,158)) // ǟ -> Ǟ -- LATIN CAPITAL LETTER A DIAERESIS MACRON
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(199,161), Bry_.ints_(199,160)) // ǡ -> Ǡ -- LATIN CAPITAL LETTER A DOT MACRON
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(199,163), Bry_.ints_(199,162)) // ǣ -> Ǣ -- LATIN CAPITAL LETTER A E MACRON
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(199,165), Bry_.ints_(199,164)) // ǥ -> Ǥ -- LATIN CAPITAL LETTER G BAR
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(199,167), Bry_.ints_(199,166)) // ǧ -> Ǧ -- LATIN CAPITAL LETTER G HACEK
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(199,169), Bry_.ints_(199,168)) // ǩ -> Ǩ -- LATIN CAPITAL LETTER K HACEK
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(199,171), Bry_.ints_(199,170)) // ǫ -> Ǫ -- LATIN CAPITAL LETTER O OGONEK
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(199,173), Bry_.ints_(199,172)) // ǭ -> Ǭ -- LATIN CAPITAL LETTER O OGONEK MACRON
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(199,175), Bry_.ints_(199,174)) // ǯ -> Ǯ -- LATIN CAPITAL LETTER YOGH HACEK
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(199,179), Bry_.ints_(199,177)) // dz -> DZ -- LATIN CAPITAL LETTER DZ
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(199,181), Bry_.ints_(199,180)) // ǵ -> Ǵ -- LATIN CAPITAL LETTER G WITH ACUTE
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(199,185), Bry_.ints_(199,184)) // ǹ -> Ǹ -- LATIN CAPITAL LETTER N WITH GRAVE
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(199,187), Bry_.ints_(199,186)) // ǻ -> Ǻ -- LATIN CAPITAL LETTER A WITH RING ABOVE AND ACUTE
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(199,189), Bry_.ints_(199,188)) // ǽ -> Ǽ -- LATIN CAPITAL LETTER AE WITH ACUTE
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(199,191), Bry_.ints_(199,190)) // ǿ -> Ǿ -- LATIN CAPITAL LETTER O WITH STROKE AND ACUTE
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(200,129), Bry_.ints_(200,128)) // ȁ -> Ȁ -- LATIN CAPITAL LETTER A WITH DOUBLE GRAVE
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(200,131), Bry_.ints_(200,130)) // ȃ -> Ȃ -- LATIN CAPITAL LETTER A WITH INVERTED BREVE
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(200,133), Bry_.ints_(200,132)) // ȅ -> Ȅ -- LATIN CAPITAL LETTER E WITH DOUBLE GRAVE
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(200,135), Bry_.ints_(200,134)) // ȇ -> Ȇ -- LATIN CAPITAL LETTER E WITH INVERTED BREVE
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(200,137), Bry_.ints_(200,136)) // ȉ -> Ȉ -- LATIN CAPITAL LETTER I WITH DOUBLE GRAVE
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(200,139), Bry_.ints_(200,138)) // ȋ -> Ȋ -- LATIN CAPITAL LETTER I WITH INVERTED BREVE
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(200,141), Bry_.ints_(200,140)) // ȍ -> Ȍ -- LATIN CAPITAL LETTER O WITH DOUBLE GRAVE
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(200,143), Bry_.ints_(200,142)) // ȏ -> Ȏ -- LATIN CAPITAL LETTER O WITH INVERTED BREVE
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(200,145), Bry_.ints_(200,144)) // ȑ -> Ȑ -- LATIN CAPITAL LETTER R WITH DOUBLE GRAVE
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(200,147), Bry_.ints_(200,146)) // ȓ -> Ȓ -- LATIN CAPITAL LETTER R WITH INVERTED BREVE
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(200,149), Bry_.ints_(200,148)) // ȕ -> Ȕ -- LATIN CAPITAL LETTER U WITH DOUBLE GRAVE
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(200,151), Bry_.ints_(200,150)) // ȗ -> Ȗ -- LATIN CAPITAL LETTER U WITH INVERTED BREVE
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(200,153), Bry_.ints_(200,152)) // ș -> Ș -- LATIN CAPITAL LETTER S WITH COMMA BELOW
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(200,155), Bry_.ints_(200,154)) // ț -> Ț -- LATIN CAPITAL LETTER T WITH COMMA BELOW
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(200,157), Bry_.ints_(200,156)) // ȝ -> Ȝ -- LATIN CAPITAL LETTER YOGH
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(200,159), Bry_.ints_(200,158)) // ȟ -> Ȟ -- LATIN CAPITAL LETTER H WITH CARON
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(200,163), Bry_.ints_(200,162)) // ȣ -> Ȣ -- LATIN CAPITAL LETTER OU
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(200,165), Bry_.ints_(200,164)) // ȥ -> Ȥ -- LATIN CAPITAL LETTER Z WITH HOOK
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(200,167), Bry_.ints_(200,166)) // ȧ -> Ȧ -- LATIN CAPITAL LETTER A WITH DOT ABOVE
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(200,169), Bry_.ints_(200,168)) // ȩ -> Ȩ -- LATIN CAPITAL LETTER E WITH CEDILLA
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(200,171), Bry_.ints_(200,170)) // ȫ -> Ȫ -- LATIN CAPITAL LETTER O WITH DIAERESIS AND MACRON
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(200,173), Bry_.ints_(200,172)) // ȭ -> Ȭ -- LATIN CAPITAL LETTER O WITH TILDE AND MACRON
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(200,175), Bry_.ints_(200,174)) // ȯ -> Ȯ -- LATIN CAPITAL LETTER O WITH DOT ABOVE
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(200,177), Bry_.ints_(200,176)) // ȱ -> Ȱ -- LATIN CAPITAL LETTER O WITH DOT ABOVE AND MACRON
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(200,179), Bry_.ints_(200,178)) // ȳ -> Ȳ -- LATIN CAPITAL LETTER Y WITH MACRON
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(226,177,165), Bry_.ints_(200,186)) // ⱥ -> Ⱥ -- LATIN CAPITAL LETTER A WITH STROKE
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(200,188), Bry_.ints_(200,187)) // ȼ -> Ȼ -- LATIN CAPITAL LETTER C WITH STROKE
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(226,177,166), Bry_.ints_(200,190)) // ⱦ -> Ⱦ -- LATIN CAPITAL LETTER T WITH DIAGONAL STROKE
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(200,191), Bry_.ints_(226,177,190)) // ȿ -> Ȿ -- LATIN SMALL LETTER S WITH SWASH TAIL
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(201,128), Bry_.ints_(226,177,191)) // ɀ -> Ɀ -- LATIN SMALL LETTER Z WITH SWASH TAIL
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(201,130), Bry_.ints_(201,129)) // ɂ -> Ɂ -- LATIN CAPITAL LETTER GLOTTAL STOP
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(202,137), Bry_.ints_(201,132)) // ʉ -> Ʉ -- LATIN CAPITAL LETTER U BAR
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(202,140), Bry_.ints_(201,133)) // ʌ -> Ʌ -- LATIN CAPITAL LETTER TURNED V
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(201,135), Bry_.ints_(201,134)) // ɇ -> Ɇ -- LATIN CAPITAL LETTER E WITH STROKE
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(201,137), Bry_.ints_(201,136)) // ɉ -> Ɉ -- LATIN CAPITAL LETTER J WITH STROKE
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(201,139), Bry_.ints_(201,138)) // ɋ -> Ɋ -- LATIN CAPITAL LETTER SMALL Q WITH HOOK TAIL
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(201,141), Bry_.ints_(201,140)) // ɍ -> Ɍ -- LATIN CAPITAL LETTER R WITH STROKE
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(201,143), Bry_.ints_(201,142)) // ɏ -> Ɏ -- LATIN CAPITAL LETTER Y WITH STROKE
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(201,144), Bry_.ints_(226,177,175)) // ɐ -> Ɐ -- LATIN SMALL LETTER TURNED A
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(201,145), Bry_.ints_(226,177,173)) // ɑ -> Ɑ -- LATIN SMALL LETTER SCRIPT A
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(201,146), Bry_.ints_(226,177,176)) // ɒ -> Ɒ -- LATIN SMALL LETTER TURNED SCRIPT A
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(201,165), Bry_.ints_(234,158,141)) // ɥ -> Ɥ -- LATIN SMALL LETTER TURNED H
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(201,166), Bry_.ints_(234,158,170)) // ɦ -> Ɦ -- LATIN SMALL LETTER H HOOK
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(201,171), Bry_.ints_(226,177,162)) // ɫ -> Ɫ -- LATIN SMALL LETTER L WITH MIDDLE TILDE
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(201,177), Bry_.ints_(226,177,174)) // ɱ -> Ɱ -- LATIN SMALL LETTER M HOOK
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(201,189), Bry_.ints_(226,177,164)) // ɽ -> Ɽ -- LATIN SMALL LETTER R HOOK
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(205,177), Bry_.ints_(205,176)) // ͱ -> Ͱ -- GREEK CAPITAL LETTER HETA
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(205,179), Bry_.ints_(205,178)) // ͳ -> Ͳ -- GREEK CAPITAL LETTER ARCHAIC SAMPI
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(205,183), Bry_.ints_(205,182)) // ͷ -> Ͷ -- GREEK CAPITAL LETTER PAMPHYLIAN DIGAMMA
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(205,187), Bry_.ints_(207,189)) // ͻ -> Ͻ -- GREEK SMALL REVERSED LUNATE SIGMA SYMBOL
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(205,188), Bry_.ints_(207,190)) // ͼ -> Ͼ -- GREEK SMALL DOTTED LUNATE SIGMA SYMBOL
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(205,189), Bry_.ints_(207,191)) // ͽ -> Ͽ -- GREEK SMALL REVERSED DOTTED LUNATE SIGMA SYMBOL
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(206,172), Bry_.ints_(206,134)) // ά -> Ά -- GREEK CAPITAL LETTER ALPHA TONOS
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(206,173), Bry_.ints_(206,136)) // έ -> Έ -- GREEK CAPITAL LETTER EPSILON TONOS
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(206,174), Bry_.ints_(206,137)) // ή -> Ή -- GREEK CAPITAL LETTER ETA TONOS
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(206,175), Bry_.ints_(206,138)) // ί -> Ί -- GREEK CAPITAL LETTER IOTA TONOS
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(207,140), Bry_.ints_(206,140)) // ό -> Ό -- GREEK CAPITAL LETTER OMICRON TONOS
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(207,141), Bry_.ints_(206,142)) // ύ -> Ύ -- GREEK CAPITAL LETTER UPSILON TONOS
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(207,142), Bry_.ints_(206,143)) // ώ -> Ώ -- GREEK CAPITAL LETTER OMEGA TONOS
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(206,177), Bry_.ints_(206,145)) // α -> Α -- GREEK CAPITAL LETTER ALPHA
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(206,178), Bry_.ints_(206,146)) // β -> Β -- GREEK CAPITAL LETTER BETA
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(206,179), Bry_.ints_(206,147)) // γ -> Γ -- GREEK CAPITAL LETTER GAMMA
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(206,180), Bry_.ints_(206,148)) // δ -> Δ -- GREEK CAPITAL LETTER DELTA
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(206,181), Bry_.ints_(206,149)) // ε -> Ε -- GREEK CAPITAL LETTER EPSILON
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(206,182), Bry_.ints_(206,150)) // ζ -> Ζ -- GREEK CAPITAL LETTER ZETA
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(206,183), Bry_.ints_(206,151)) // η -> Η -- GREEK CAPITAL LETTER ETA
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(206,184), Bry_.ints_(206,152)) // θ -> Θ -- GREEK CAPITAL LETTER THETA
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(206,186), Bry_.ints_(206,154)) // κ -> Κ -- GREEK CAPITAL LETTER KAPPA
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(206,187), Bry_.ints_(206,155)) // λ -> Λ -- GREEK CAPITAL LETTER LAMBDA
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(206,189), Bry_.ints_(206,157)) // ν -> Ν -- GREEK CAPITAL LETTER NU
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(206,190), Bry_.ints_(206,158)) // ξ -> Ξ -- GREEK CAPITAL LETTER XI
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(206,191), Bry_.ints_(206,159)) // ο -> Ο -- GREEK CAPITAL LETTER OMICRON
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(207,128), Bry_.ints_(206,160)) // π -> Π -- GREEK CAPITAL LETTER PI
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(207,129), Bry_.ints_(206,161)) // ρ -> Ρ -- GREEK CAPITAL LETTER RHO
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(207,131), Bry_.ints_(206,163)) // σ -> Σ -- GREEK CAPITAL LETTER SIGMA
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(207,132), Bry_.ints_(206,164)) // τ -> Τ -- GREEK CAPITAL LETTER TAU
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(207,133), Bry_.ints_(206,165)) // υ -> Υ -- GREEK CAPITAL LETTER UPSILON
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(207,134), Bry_.ints_(206,166)) // φ -> Φ -- GREEK CAPITAL LETTER PHI
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(207,135), Bry_.ints_(206,167)) // χ -> Χ -- GREEK CAPITAL LETTER CHI
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(207,136), Bry_.ints_(206,168)) // ψ -> Ψ -- GREEK CAPITAL LETTER PSI
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(207,137), Bry_.ints_(206,169)) // ω -> Ω -- GREEK CAPITAL LETTER OMEGA
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(207,138), Bry_.ints_(206,170)) // ϊ -> Ϊ -- GREEK CAPITAL LETTER IOTA DIAERESIS
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(207,139), Bry_.ints_(206,171)) // ϋ -> Ϋ -- GREEK CAPITAL LETTER UPSILON DIAERESIS
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(207,151), Bry_.ints_(207,143)) // ϗ -> Ϗ -- GREEK CAPITAL KAI SYMBOL
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(207,153), Bry_.ints_(207,152)) // ϙ -> Ϙ -- GREEK LETTER ARCHAIC KOPPA
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(207,155), Bry_.ints_(207,154)) // ϛ -> Ϛ -- GREEK CAPITAL LETTER STIGMA
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(207,157), Bry_.ints_(207,156)) // ϝ -> Ϝ -- GREEK CAPITAL LETTER DIGAMMA
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(207,159), Bry_.ints_(207,158)) // ϟ -> Ϟ -- GREEK CAPITAL LETTER KOPPA
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(207,161), Bry_.ints_(207,160)) // ϡ -> Ϡ -- GREEK CAPITAL LETTER SAMPI
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(207,163), Bry_.ints_(207,162)) // ϣ -> Ϣ -- GREEK CAPITAL LETTER SHEI
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(207,165), Bry_.ints_(207,164)) // ϥ -> Ϥ -- GREEK CAPITAL LETTER FEI
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(207,167), Bry_.ints_(207,166)) // ϧ -> Ϧ -- GREEK CAPITAL LETTER KHEI
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(207,169), Bry_.ints_(207,168)) // ϩ -> Ϩ -- GREEK CAPITAL LETTER HORI
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(207,171), Bry_.ints_(207,170)) // ϫ -> Ϫ -- GREEK CAPITAL LETTER GANGIA
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(207,173), Bry_.ints_(207,172)) // ϭ -> Ϭ -- GREEK CAPITAL LETTER SHIMA
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(207,175), Bry_.ints_(207,174)) // ϯ -> Ϯ -- GREEK CAPITAL LETTER DEI
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(207,178), Bry_.ints_(207,185)) // ϲ -> Ϲ -- GREEK SMALL LETTER LUNATE SIGMA
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(207,184), Bry_.ints_(207,183)) // ϸ -> Ϸ -- GREEK CAPITAL LETTER SHO
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(207,187), Bry_.ints_(207,186)) // ϻ -> Ϻ -- GREEK CAPITAL LETTER SAN
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(209,144), Bry_.ints_(208,128)) // ѐ -> Ѐ -- CYRILLIC CAPITAL LETTER IE WITH GRAVE
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(209,145), Bry_.ints_(208,129)) // ё -> Ё -- CYRILLIC CAPITAL LETTER IO
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(209,146), Bry_.ints_(208,130)) // ђ -> Ђ -- CYRILLIC CAPITAL LETTER DJE
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(209,147), Bry_.ints_(208,131)) // ѓ -> Ѓ -- CYRILLIC CAPITAL LETTER GJE
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(209,148), Bry_.ints_(208,132)) // є -> Є -- CYRILLIC CAPITAL LETTER E
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(209,149), Bry_.ints_(208,133)) // ѕ -> Ѕ -- CYRILLIC CAPITAL LETTER DZE
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(209,150), Bry_.ints_(208,134)) // і -> І -- CYRILLIC CAPITAL LETTER I
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(209,151), Bry_.ints_(208,135)) // ї -> Ї -- CYRILLIC CAPITAL LETTER YI
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(209,152), Bry_.ints_(208,136)) // ј -> Ј -- CYRILLIC CAPITAL LETTER JE
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(209,153), Bry_.ints_(208,137)) // љ -> Љ -- CYRILLIC CAPITAL LETTER LJE
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(209,154), Bry_.ints_(208,138)) // њ -> Њ -- CYRILLIC CAPITAL LETTER NJE
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(209,155), Bry_.ints_(208,139)) // ћ -> Ћ -- CYRILLIC CAPITAL LETTER TSHE
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(209,156), Bry_.ints_(208,140)) // ќ -> Ќ -- CYRILLIC CAPITAL LETTER KJE
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(209,157), Bry_.ints_(208,141)) // ѝ -> Ѝ -- CYRILLIC CAPITAL LETTER I WITH GRAVE
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(209,158), Bry_.ints_(208,142)) // ў -> Ў -- CYRILLIC CAPITAL LETTER SHORT U
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(209,159), Bry_.ints_(208,143)) // џ -> Џ -- CYRILLIC CAPITAL LETTER DZHE
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(208,176), Bry_.ints_(208,144)) // а -> А -- CYRILLIC CAPITAL LETTER A
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(208,177), Bry_.ints_(208,145)) // б -> Б -- CYRILLIC CAPITAL LETTER BE
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(208,178), Bry_.ints_(208,146)) // в -> В -- CYRILLIC CAPITAL LETTER VE
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(208,179), Bry_.ints_(208,147)) // г -> Г -- CYRILLIC CAPITAL LETTER GE
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(208,180), Bry_.ints_(208,148)) // д -> Д -- CYRILLIC CAPITAL LETTER DE
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(208,181), Bry_.ints_(208,149)) // е -> Е -- CYRILLIC CAPITAL LETTER IE
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(208,182), Bry_.ints_(208,150)) // ж -> Ж -- CYRILLIC CAPITAL LETTER ZHE
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(208,183), Bry_.ints_(208,151)) // з -> З -- CYRILLIC CAPITAL LETTER ZE
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(208,184), Bry_.ints_(208,152)) // и -> И -- CYRILLIC CAPITAL LETTER II
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(208,185), Bry_.ints_(208,153)) // й -> Й -- CYRILLIC CAPITAL LETTER SHORT II
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(208,186), Bry_.ints_(208,154)) // к -> К -- CYRILLIC CAPITAL LETTER KA
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(208,187), Bry_.ints_(208,155)) // л -> Л -- CYRILLIC CAPITAL LETTER EL
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(208,188), Bry_.ints_(208,156)) // м -> М -- CYRILLIC CAPITAL LETTER EM
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(208,189), Bry_.ints_(208,157)) // н -> Н -- CYRILLIC CAPITAL LETTER EN
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(208,190), Bry_.ints_(208,158)) // о -> О -- CYRILLIC CAPITAL LETTER O
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(208,191), Bry_.ints_(208,159)) // п -> П -- CYRILLIC CAPITAL LETTER PE
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(209,128), Bry_.ints_(208,160)) // р -> Р -- CYRILLIC CAPITAL LETTER ER
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(209,129), Bry_.ints_(208,161)) // с -> С -- CYRILLIC CAPITAL LETTER ES
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(209,130), Bry_.ints_(208,162)) // т -> Т -- CYRILLIC CAPITAL LETTER TE
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(209,131), Bry_.ints_(208,163)) // у -> У -- CYRILLIC CAPITAL LETTER U
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(209,132), Bry_.ints_(208,164)) // ф -> Ф -- CYRILLIC CAPITAL LETTER EF
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(209,133), Bry_.ints_(208,165)) // х -> Х -- CYRILLIC CAPITAL LETTER KHA
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(209,134), Bry_.ints_(208,166)) // ц -> Ц -- CYRILLIC CAPITAL LETTER TSE
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(209,135), Bry_.ints_(208,167)) // ч -> Ч -- CYRILLIC CAPITAL LETTER CHE
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(209,136), Bry_.ints_(208,168)) // ш -> Ш -- CYRILLIC CAPITAL LETTER SHA
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(209,137), Bry_.ints_(208,169)) // щ -> Щ -- CYRILLIC CAPITAL LETTER SHCHA
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(209,138), Bry_.ints_(208,170)) // ъ -> Ъ -- CYRILLIC CAPITAL LETTER HARD SIGN
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(209,139), Bry_.ints_(208,171)) // ы -> Ы -- CYRILLIC CAPITAL LETTER YERI
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(209,140), Bry_.ints_(208,172)) // ь -> Ь -- CYRILLIC CAPITAL LETTER SOFT SIGN
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(209,141), Bry_.ints_(208,173)) // э -> Э -- CYRILLIC CAPITAL LETTER REVERSED E
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(209,142), Bry_.ints_(208,174)) // ю -> Ю -- CYRILLIC CAPITAL LETTER IU
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(209,143), Bry_.ints_(208,175)) // я -> Я -- CYRILLIC CAPITAL LETTER IA
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(209,161), Bry_.ints_(209,160)) // ѡ -> Ѡ -- CYRILLIC CAPITAL LETTER OMEGA
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(209,163), Bry_.ints_(209,162)) // ѣ -> Ѣ -- CYRILLIC CAPITAL LETTER YAT
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(209,165), Bry_.ints_(209,164)) // ѥ -> Ѥ -- CYRILLIC CAPITAL LETTER IOTIFIED E
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(209,167), Bry_.ints_(209,166)) // ѧ -> Ѧ -- CYRILLIC CAPITAL LETTER LITTLE YUS
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(209,169), Bry_.ints_(209,168)) // ѩ -> Ѩ -- CYRILLIC CAPITAL LETTER IOTIFIED LITTLE YUS
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(209,171), Bry_.ints_(209,170)) // ѫ -> Ѫ -- CYRILLIC CAPITAL LETTER BIG YUS
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(209,173), Bry_.ints_(209,172)) // ѭ -> Ѭ -- CYRILLIC CAPITAL LETTER IOTIFIED BIG YUS
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(209,175), Bry_.ints_(209,174)) // ѯ -> Ѯ -- CYRILLIC CAPITAL LETTER KSI
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(209,177), Bry_.ints_(209,176)) // ѱ -> Ѱ -- CYRILLIC CAPITAL LETTER PSI
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(209,179), Bry_.ints_(209,178)) // ѳ -> Ѳ -- CYRILLIC CAPITAL LETTER FITA
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(209,181), Bry_.ints_(209,180)) // ѵ -> Ѵ -- CYRILLIC CAPITAL LETTER IZHITSA
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(209,183), Bry_.ints_(209,182)) // ѷ -> Ѷ -- CYRILLIC CAPITAL LETTER IZHITSA DOUBLE GRAVE
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(209,185), Bry_.ints_(209,184)) // ѹ -> Ѹ -- CYRILLIC CAPITAL LETTER UK DIGRAPH
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(209,187), Bry_.ints_(209,186)) // ѻ -> Ѻ -- CYRILLIC CAPITAL LETTER ROUND OMEGA
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(209,189), Bry_.ints_(209,188)) // ѽ -> Ѽ -- CYRILLIC CAPITAL LETTER OMEGA TITLO
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(209,191), Bry_.ints_(209,190)) // ѿ -> Ѿ -- CYRILLIC CAPITAL LETTER OT
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(210,129), Bry_.ints_(210,128)) // ҁ -> Ҁ -- CYRILLIC CAPITAL LETTER KOPPA
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(210,139), Bry_.ints_(210,138)) // ҋ -> Ҋ -- CYRILLIC CAPITAL LETTER SHORT I WITH TAIL
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(210,141), Bry_.ints_(210,140)) // ҍ -> Ҍ -- CYRILLIC CAPITAL LETTER SEMISOFT SIGN
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(210,143), Bry_.ints_(210,142)) // ҏ -> Ҏ -- CYRILLIC CAPITAL LETTER ER WITH TICK
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(210,145), Bry_.ints_(210,144)) // ґ -> Ґ -- CYRILLIC CAPITAL LETTER GE WITH UPTURN
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(210,147), Bry_.ints_(210,146)) // ғ -> Ғ -- CYRILLIC CAPITAL LETTER GE BAR
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(210,149), Bry_.ints_(210,148)) // ҕ -> Ҕ -- CYRILLIC CAPITAL LETTER GE HOOK
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(210,151), Bry_.ints_(210,150)) // җ -> Җ -- CYRILLIC CAPITAL LETTER ZHE WITH RIGHT DESCENDER
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(210,153), Bry_.ints_(210,152)) // ҙ -> Ҙ -- CYRILLIC CAPITAL LETTER ZE CEDILLA
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(210,155), Bry_.ints_(210,154)) // қ -> Қ -- CYRILLIC CAPITAL LETTER KA WITH RIGHT DESCENDER
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(210,157), Bry_.ints_(210,156)) // ҝ -> Ҝ -- CYRILLIC CAPITAL LETTER KA VERTICAL BAR
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(210,159), Bry_.ints_(210,158)) // ҟ -> Ҟ -- CYRILLIC CAPITAL LETTER KA BAR
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(210,161), Bry_.ints_(210,160)) // ҡ -> Ҡ -- CYRILLIC CAPITAL LETTER REVERSED GE KA
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(210,163), Bry_.ints_(210,162)) // ң -> Ң -- CYRILLIC CAPITAL LETTER EN WITH RIGHT DESCENDER
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(210,165), Bry_.ints_(210,164)) // ҥ -> Ҥ -- CYRILLIC CAPITAL LETTER EN GE
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(210,167), Bry_.ints_(210,166)) // ҧ -> Ҧ -- CYRILLIC CAPITAL LETTER PE HOOK
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(210,169), Bry_.ints_(210,168)) // ҩ -> Ҩ -- CYRILLIC CAPITAL LETTER O HOOK
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(210,171), Bry_.ints_(210,170)) // ҫ -> Ҫ -- CYRILLIC CAPITAL LETTER ES CEDILLA
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(210,173), Bry_.ints_(210,172)) // ҭ -> Ҭ -- CYRILLIC CAPITAL LETTER TE WITH RIGHT DESCENDER
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(210,175), Bry_.ints_(210,174)) // ү -> Ү -- CYRILLIC CAPITAL LETTER STRAIGHT U
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(210,177), Bry_.ints_(210,176)) // ұ -> Ұ -- CYRILLIC CAPITAL LETTER STRAIGHT U BAR
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(210,179), Bry_.ints_(210,178)) // ҳ -> Ҳ -- CYRILLIC CAPITAL LETTER KHA WITH RIGHT DESCENDER
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(210,181), Bry_.ints_(210,180)) // ҵ -> Ҵ -- CYRILLIC CAPITAL LETTER TE TSE
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(210,183), Bry_.ints_(210,182)) // ҷ -> Ҷ -- CYRILLIC CAPITAL LETTER CHE WITH RIGHT DESCENDER
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(210,185), Bry_.ints_(210,184)) // ҹ -> Ҹ -- CYRILLIC CAPITAL LETTER CHE VERTICAL BAR
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(210,187), Bry_.ints_(210,186)) // һ -> Һ -- CYRILLIC CAPITAL LETTER H
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(210,189), Bry_.ints_(210,188)) // ҽ -> Ҽ -- CYRILLIC CAPITAL LETTER IE HOOK
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(210,191), Bry_.ints_(210,190)) // ҿ -> Ҿ -- CYRILLIC CAPITAL LETTER IE HOOK OGONEK
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(211,143), Bry_.ints_(211,128)) // ӏ -> Ӏ -- CYRILLIC LETTER I
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(211,130), Bry_.ints_(211,129)) // ӂ -> Ӂ -- CYRILLIC CAPITAL LETTER SHORT ZHE
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(211,132), Bry_.ints_(211,131)) // ӄ -> Ӄ -- CYRILLIC CAPITAL LETTER KA HOOK
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(211,134), Bry_.ints_(211,133)) // ӆ -> Ӆ -- CYRILLIC CAPITAL LETTER EL WITH TAIL
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(211,136), Bry_.ints_(211,135)) // ӈ -> Ӈ -- CYRILLIC CAPITAL LETTER EN HOOK
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(211,138), Bry_.ints_(211,137)) // ӊ -> Ӊ -- CYRILLIC CAPITAL LETTER EN WITH TAIL
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(211,140), Bry_.ints_(211,139)) // ӌ -> Ӌ -- CYRILLIC CAPITAL LETTER CHE WITH LEFT DESCENDER
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(211,142), Bry_.ints_(211,141)) // ӎ -> Ӎ -- CYRILLIC CAPITAL LETTER EM WITH TAIL
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(211,145), Bry_.ints_(211,144)) // ӑ -> Ӑ -- CYRILLIC CAPITAL LETTER A WITH BREVE
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(211,147), Bry_.ints_(211,146)) // ӓ -> Ӓ -- CYRILLIC CAPITAL LETTER A WITH DIAERESIS
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(211,149), Bry_.ints_(211,148)) // ӕ -> Ӕ -- CYRILLIC CAPITAL LIGATURE A IE
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(211,151), Bry_.ints_(211,150)) // ӗ -> Ӗ -- CYRILLIC CAPITAL LETTER IE WITH BREVE
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(211,153), Bry_.ints_(211,152)) // ә -> Ә -- CYRILLIC CAPITAL LETTER SCHWA
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(211,155), Bry_.ints_(211,154)) // ӛ -> Ӛ -- CYRILLIC CAPITAL LETTER SCHWA WITH DIAERESIS
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(211,157), Bry_.ints_(211,156)) // ӝ -> Ӝ -- CYRILLIC CAPITAL LETTER ZHE WITH DIAERESIS
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(211,159), Bry_.ints_(211,158)) // ӟ -> Ӟ -- CYRILLIC CAPITAL LETTER ZE WITH DIAERESIS
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(211,161), Bry_.ints_(211,160)) // ӡ -> Ӡ -- CYRILLIC CAPITAL LETTER ABKHASIAN DZE
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(211,163), Bry_.ints_(211,162)) // ӣ -> Ӣ -- CYRILLIC CAPITAL LETTER I WITH MACRON
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(211,165), Bry_.ints_(211,164)) // ӥ -> Ӥ -- CYRILLIC CAPITAL LETTER I WITH DIAERESIS
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(211,167), Bry_.ints_(211,166)) // ӧ -> Ӧ -- CYRILLIC CAPITAL LETTER O WITH DIAERESIS
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(211,169), Bry_.ints_(211,168)) // ө -> Ө -- CYRILLIC CAPITAL LETTER BARRED O
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(211,171), Bry_.ints_(211,170)) // ӫ -> Ӫ -- CYRILLIC CAPITAL LETTER BARRED O WITH DIAERESIS
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(211,173), Bry_.ints_(211,172)) // ӭ -> Ӭ -- CYRILLIC CAPITAL LETTER E WITH DIAERESIS
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(211,175), Bry_.ints_(211,174)) // ӯ -> Ӯ -- CYRILLIC CAPITAL LETTER U WITH MACRON
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(211,177), Bry_.ints_(211,176)) // ӱ -> Ӱ -- CYRILLIC CAPITAL LETTER U WITH DIAERESIS
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(211,179), Bry_.ints_(211,178)) // ӳ -> Ӳ -- CYRILLIC CAPITAL LETTER U WITH DOUBLE ACUTE
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(211,181), Bry_.ints_(211,180)) // ӵ -> Ӵ -- CYRILLIC CAPITAL LETTER CHE WITH DIAERESIS
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(211,183), Bry_.ints_(211,182)) // ӷ -> Ӷ -- CYRILLIC CAPITAL LETTER GHE WITH DESCENDER
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(211,185), Bry_.ints_(211,184)) // ӹ -> Ӹ -- CYRILLIC CAPITAL LETTER YERU WITH DIAERESIS
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(211,187), Bry_.ints_(211,186)) // ӻ -> Ӻ -- CYRILLIC CAPITAL LETTER GHE WITH STROKE AND HOOK
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(211,189), Bry_.ints_(211,188)) // ӽ -> Ӽ -- CYRILLIC CAPITAL LETTER HA WITH HOOK
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(211,191), Bry_.ints_(211,190)) // ӿ -> Ӿ -- CYRILLIC CAPITAL LETTER HA WITH STROKE
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(212,129), Bry_.ints_(212,128)) // ԁ -> Ԁ -- CYRILLIC CAPITAL LETTER KOMI DE
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(212,131), Bry_.ints_(212,130)) // ԃ -> Ԃ -- CYRILLIC CAPITAL LETTER KOMI DJE
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(212,133), Bry_.ints_(212,132)) // ԅ -> Ԅ -- CYRILLIC CAPITAL LETTER KOMI ZJE
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(212,135), Bry_.ints_(212,134)) // ԇ -> Ԇ -- CYRILLIC CAPITAL LETTER KOMI DZJE
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(212,137), Bry_.ints_(212,136)) // ԉ -> Ԉ -- CYRILLIC CAPITAL LETTER KOMI LJE
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(212,139), Bry_.ints_(212,138)) // ԋ -> Ԋ -- CYRILLIC CAPITAL LETTER KOMI NJE
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(212,141), Bry_.ints_(212,140)) // ԍ -> Ԍ -- CYRILLIC CAPITAL LETTER KOMI SJE
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(212,143), Bry_.ints_(212,142)) // ԏ -> Ԏ -- CYRILLIC CAPITAL LETTER KOMI TJE
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(212,145), Bry_.ints_(212,144)) // ԑ -> Ԑ -- CYRILLIC CAPITAL LETTER REVERSED ZE
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(212,147), Bry_.ints_(212,146)) // ԓ -> Ԓ -- CYRILLIC CAPITAL LETTER EL WITH HOOK
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(212,149), Bry_.ints_(212,148)) // ԕ -> Ԕ -- CYRILLIC CAPITAL LETTER LHA
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(212,151), Bry_.ints_(212,150)) // ԗ -> Ԗ -- CYRILLIC CAPITAL LETTER RHA
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(212,153), Bry_.ints_(212,152)) // ԙ -> Ԙ -- CYRILLIC CAPITAL LETTER YAE
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(212,155), Bry_.ints_(212,154)) // ԛ -> Ԛ -- CYRILLIC CAPITAL LETTER QA
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(212,157), Bry_.ints_(212,156)) // ԝ -> Ԝ -- CYRILLIC CAPITAL LETTER WE
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(212,159), Bry_.ints_(212,158)) // ԟ -> Ԟ -- CYRILLIC CAPITAL LETTER ALEUT KA
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(212,161), Bry_.ints_(212,160)) // ԡ -> Ԡ -- CYRILLIC CAPITAL LETTER EL WITH MIDDLE HOOK
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(212,163), Bry_.ints_(212,162)) // ԣ -> Ԣ -- CYRILLIC CAPITAL LETTER EN WITH MIDDLE HOOK
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(212,165), Bry_.ints_(212,164)) // ԥ -> Ԥ -- CYRILLIC CAPITAL LETTER PE WITH DESCENDER
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(212,167), Bry_.ints_(212,166)) // ԧ -> Ԧ -- CYRILLIC CAPITAL LETTER SHHA WITH DESCENDER
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(213,161), Bry_.ints_(212,177)) // ա -> Ա -- ARMENIAN CAPITAL LETTER AYB
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(213,162), Bry_.ints_(212,178)) // բ -> Բ -- ARMENIAN CAPITAL LETTER BEN
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(213,163), Bry_.ints_(212,179)) // գ -> Գ -- ARMENIAN CAPITAL LETTER GIM
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(213,164), Bry_.ints_(212,180)) // դ -> Դ -- ARMENIAN CAPITAL LETTER DA
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(213,165), Bry_.ints_(212,181)) // ե -> Ե -- ARMENIAN CAPITAL LETTER ECH
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(213,166), Bry_.ints_(212,182)) // զ -> Զ -- ARMENIAN CAPITAL LETTER ZA
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(213,167), Bry_.ints_(212,183)) // է -> Է -- ARMENIAN CAPITAL LETTER EH
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(213,168), Bry_.ints_(212,184)) // ը -> Ը -- ARMENIAN CAPITAL LETTER ET
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(213,169), Bry_.ints_(212,185)) // թ -> Թ -- ARMENIAN CAPITAL LETTER TO
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(213,170), Bry_.ints_(212,186)) // ժ -> Ժ -- ARMENIAN CAPITAL LETTER ZHE
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(213,171), Bry_.ints_(212,187)) // ի -> Ի -- ARMENIAN CAPITAL LETTER INI
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(213,172), Bry_.ints_(212,188)) // լ -> Լ -- ARMENIAN CAPITAL LETTER LIWN
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(213,173), Bry_.ints_(212,189)) // խ -> Խ -- ARMENIAN CAPITAL LETTER XEH
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(213,174), Bry_.ints_(212,190)) // ծ -> Ծ -- ARMENIAN CAPITAL LETTER CA
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(213,175), Bry_.ints_(212,191)) // կ -> Կ -- ARMENIAN CAPITAL LETTER KEN
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(213,176), Bry_.ints_(213,128)) // հ -> Հ -- ARMENIAN CAPITAL LETTER HO
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(213,177), Bry_.ints_(213,129)) // ձ -> Ձ -- ARMENIAN CAPITAL LETTER JA
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(213,178), Bry_.ints_(213,130)) // ղ -> Ղ -- ARMENIAN CAPITAL LETTER LAD
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(213,179), Bry_.ints_(213,131)) // ճ -> Ճ -- ARMENIAN CAPITAL LETTER CHEH
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(213,180), Bry_.ints_(213,132)) // մ -> Մ -- ARMENIAN CAPITAL LETTER MEN
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(213,181), Bry_.ints_(213,133)) // յ -> Յ -- ARMENIAN CAPITAL LETTER YI
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(213,182), Bry_.ints_(213,134)) // ն -> Ն -- ARMENIAN CAPITAL LETTER NOW
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(213,183), Bry_.ints_(213,135)) // շ -> Շ -- ARMENIAN CAPITAL LETTER SHA
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(213,184), Bry_.ints_(213,136)) // ո -> Ո -- ARMENIAN CAPITAL LETTER VO
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(213,185), Bry_.ints_(213,137)) // չ -> Չ -- ARMENIAN CAPITAL LETTER CHA
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(213,186), Bry_.ints_(213,138)) // պ -> Պ -- ARMENIAN CAPITAL LETTER PEH
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(213,187), Bry_.ints_(213,139)) // ջ -> Ջ -- ARMENIAN CAPITAL LETTER JHEH
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(213,188), Bry_.ints_(213,140)) // ռ -> Ռ -- ARMENIAN CAPITAL LETTER RA
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(213,189), Bry_.ints_(213,141)) // ս -> Ս -- ARMENIAN CAPITAL LETTER SEH
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(213,190), Bry_.ints_(213,142)) // վ -> Վ -- ARMENIAN CAPITAL LETTER VEW
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(213,191), Bry_.ints_(213,143)) // տ -> Տ -- ARMENIAN CAPITAL LETTER TIWN
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(214,128), Bry_.ints_(213,144)) // ր -> Ր -- ARMENIAN CAPITAL LETTER REH
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(214,129), Bry_.ints_(213,145)) // ց -> Ց -- ARMENIAN CAPITAL LETTER CO
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(214,130), Bry_.ints_(213,146)) // ւ -> Ւ -- ARMENIAN CAPITAL LETTER YIWN
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(214,131), Bry_.ints_(213,147)) // փ -> Փ -- ARMENIAN CAPITAL LETTER PIWR
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(214,132), Bry_.ints_(213,148)) // ք -> Ք -- ARMENIAN CAPITAL LETTER KEH
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(214,133), Bry_.ints_(213,149)) // օ -> Օ -- ARMENIAN CAPITAL LETTER OH
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(214,134), Bry_.ints_(213,150)) // ֆ -> Ֆ -- ARMENIAN CAPITAL LETTER FEH
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(226,180,128), Bry_.ints_(225,130,160)) // ⴀ -> Ⴀ -- GEORGIAN CAPITAL LETTER AN
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(226,180,129), Bry_.ints_(225,130,161)) // ⴁ -> Ⴁ -- GEORGIAN CAPITAL LETTER BAN
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(226,180,130), Bry_.ints_(225,130,162)) // ⴂ -> Ⴂ -- GEORGIAN CAPITAL LETTER GAN
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(226,180,131), Bry_.ints_(225,130,163)) // ⴃ -> Ⴃ -- GEORGIAN CAPITAL LETTER DON
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(226,180,132), Bry_.ints_(225,130,164)) // ⴄ -> Ⴄ -- GEORGIAN CAPITAL LETTER EN
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(226,180,133), Bry_.ints_(225,130,165)) // ⴅ -> Ⴅ -- GEORGIAN CAPITAL LETTER VIN
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(226,180,134), Bry_.ints_(225,130,166)) // ⴆ -> Ⴆ -- GEORGIAN CAPITAL LETTER ZEN
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(226,180,135), Bry_.ints_(225,130,167)) // ⴇ -> Ⴇ -- GEORGIAN CAPITAL LETTER TAN
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(226,180,136), Bry_.ints_(225,130,168)) // ⴈ -> Ⴈ -- GEORGIAN CAPITAL LETTER IN
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(226,180,137), Bry_.ints_(225,130,169)) // ⴉ -> Ⴉ -- GEORGIAN CAPITAL LETTER KAN
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(226,180,138), Bry_.ints_(225,130,170)) // ⴊ -> Ⴊ -- GEORGIAN CAPITAL LETTER LAS
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(226,180,139), Bry_.ints_(225,130,171)) // ⴋ -> Ⴋ -- GEORGIAN CAPITAL LETTER MAN
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(226,180,140), Bry_.ints_(225,130,172)) // ⴌ -> Ⴌ -- GEORGIAN CAPITAL LETTER NAR
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(226,180,141), Bry_.ints_(225,130,173)) // ⴍ -> Ⴍ -- GEORGIAN CAPITAL LETTER ON
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(226,180,142), Bry_.ints_(225,130,174)) // ⴎ -> Ⴎ -- GEORGIAN CAPITAL LETTER PAR
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(226,180,143), Bry_.ints_(225,130,175)) // ⴏ -> Ⴏ -- GEORGIAN CAPITAL LETTER ZHAR
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(226,180,144), Bry_.ints_(225,130,176)) // ⴐ -> Ⴐ -- GEORGIAN CAPITAL LETTER RAE
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(226,180,145), Bry_.ints_(225,130,177)) // ⴑ -> Ⴑ -- GEORGIAN CAPITAL LETTER SAN
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(226,180,146), Bry_.ints_(225,130,178)) // ⴒ -> Ⴒ -- GEORGIAN CAPITAL LETTER TAR
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(226,180,147), Bry_.ints_(225,130,179)) // ⴓ -> Ⴓ -- GEORGIAN CAPITAL LETTER UN
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(226,180,148), Bry_.ints_(225,130,180)) // ⴔ -> Ⴔ -- GEORGIAN CAPITAL LETTER PHAR
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(226,180,149), Bry_.ints_(225,130,181)) // ⴕ -> Ⴕ -- GEORGIAN CAPITAL LETTER KHAR
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(226,180,150), Bry_.ints_(225,130,182)) // ⴖ -> Ⴖ -- GEORGIAN CAPITAL LETTER GHAN
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(226,180,151), Bry_.ints_(225,130,183)) // ⴗ -> Ⴗ -- GEORGIAN CAPITAL LETTER QAR
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(226,180,152), Bry_.ints_(225,130,184)) // ⴘ -> Ⴘ -- GEORGIAN CAPITAL LETTER SHIN
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(226,180,153), Bry_.ints_(225,130,185)) // ⴙ -> Ⴙ -- GEORGIAN CAPITAL LETTER CHIN
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(226,180,154), Bry_.ints_(225,130,186)) // ⴚ -> Ⴚ -- GEORGIAN CAPITAL LETTER CAN
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(226,180,155), Bry_.ints_(225,130,187)) // ⴛ -> Ⴛ -- GEORGIAN CAPITAL LETTER JIL
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(226,180,156), Bry_.ints_(225,130,188)) // ⴜ -> Ⴜ -- GEORGIAN CAPITAL LETTER CIL
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(226,180,157), Bry_.ints_(225,130,189)) // ⴝ -> Ⴝ -- GEORGIAN CAPITAL LETTER CHAR
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(226,180,158), Bry_.ints_(225,130,190)) // ⴞ -> Ⴞ -- GEORGIAN CAPITAL LETTER XAN
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(226,180,159), Bry_.ints_(225,130,191)) // ⴟ -> Ⴟ -- GEORGIAN CAPITAL LETTER JHAN
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(226,180,160), Bry_.ints_(225,131,128)) // ⴠ -> Ⴠ -- GEORGIAN CAPITAL LETTER HAE
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(226,180,161), Bry_.ints_(225,131,129)) // ⴡ -> Ⴡ -- GEORGIAN CAPITAL LETTER HE
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(226,180,162), Bry_.ints_(225,131,130)) // ⴢ -> Ⴢ -- GEORGIAN CAPITAL LETTER HIE
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(226,180,163), Bry_.ints_(225,131,131)) // ⴣ -> Ⴣ -- GEORGIAN CAPITAL LETTER WE
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(226,180,164), Bry_.ints_(225,131,132)) // ⴤ -> Ⴤ -- GEORGIAN CAPITAL LETTER HAR
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(226,180,165), Bry_.ints_(225,131,133)) // ⴥ -> Ⴥ -- GEORGIAN CAPITAL LETTER HOE
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(226,180,167), Bry_.ints_(225,131,135)) // ⴧ -> Ⴧ -- GEORGIAN CAPITAL LETTER YN
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(226,180,173), Bry_.ints_(225,131,141)) // ⴭ -> Ⴭ -- GEORGIAN CAPITAL LETTER AEN
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(225,181,185), Bry_.ints_(234,157,189)) // ᵹ -> Ᵹ -- LATIN SMALL LETTER INSULAR G
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(225,181,189), Bry_.ints_(226,177,163)) // ᵽ -> Ᵽ -- LATIN SMALL LETTER P WITH STROKE
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(225,184,129), Bry_.ints_(225,184,128)) // ḁ -> Ḁ -- LATIN CAPITAL LETTER A WITH RING BELOW
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(225,184,131), Bry_.ints_(225,184,130)) // ḃ -> Ḃ -- LATIN CAPITAL LETTER B WITH DOT ABOVE
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(225,184,133), Bry_.ints_(225,184,132)) // ḅ -> Ḅ -- LATIN CAPITAL LETTER B WITH DOT BELOW
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(225,184,135), Bry_.ints_(225,184,134)) // ḇ -> Ḇ -- LATIN CAPITAL LETTER B WITH LINE BELOW
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(225,184,137), Bry_.ints_(225,184,136)) // ḉ -> Ḉ -- LATIN CAPITAL LETTER C WITH CEDILLA AND ACUTE
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(225,184,139), Bry_.ints_(225,184,138)) // ḋ -> Ḋ -- LATIN CAPITAL LETTER D WITH DOT ABOVE
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(225,184,141), Bry_.ints_(225,184,140)) // ḍ -> Ḍ -- LATIN CAPITAL LETTER D WITH DOT BELOW
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(225,184,143), Bry_.ints_(225,184,142)) // ḏ -> Ḏ -- LATIN CAPITAL LETTER D WITH LINE BELOW
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(225,184,145), Bry_.ints_(225,184,144)) // ḑ -> Ḑ -- LATIN CAPITAL LETTER D WITH CEDILLA
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(225,184,147), Bry_.ints_(225,184,146)) // ḓ -> Ḓ -- LATIN CAPITAL LETTER D WITH CIRCUMFLEX BELOW
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(225,184,149), Bry_.ints_(225,184,148)) // ḕ -> Ḕ -- LATIN CAPITAL LETTER E WITH MACRON AND GRAVE
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(225,184,151), Bry_.ints_(225,184,150)) // ḗ -> Ḗ -- LATIN CAPITAL LETTER E WITH MACRON AND ACUTE
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(225,184,153), Bry_.ints_(225,184,152)) // ḙ -> Ḙ -- LATIN CAPITAL LETTER E WITH CIRCUMFLEX BELOW
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(225,184,155), Bry_.ints_(225,184,154)) // ḛ -> Ḛ -- LATIN CAPITAL LETTER E WITH TILDE BELOW
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(225,184,157), Bry_.ints_(225,184,156)) // ḝ -> Ḝ -- LATIN CAPITAL LETTER E WITH CEDILLA AND BREVE
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(225,184,159), Bry_.ints_(225,184,158)) // ḟ -> Ḟ -- LATIN CAPITAL LETTER F WITH DOT ABOVE
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(225,184,161), Bry_.ints_(225,184,160)) // ḡ -> Ḡ -- LATIN CAPITAL LETTER G WITH MACRON
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(225,184,163), Bry_.ints_(225,184,162)) // ḣ -> Ḣ -- LATIN CAPITAL LETTER H WITH DOT ABOVE
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(225,184,165), Bry_.ints_(225,184,164)) // ḥ -> Ḥ -- LATIN CAPITAL LETTER H WITH DOT BELOW
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(225,184,167), Bry_.ints_(225,184,166)) // ḧ -> Ḧ -- LATIN CAPITAL LETTER H WITH DIAERESIS
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(225,184,169), Bry_.ints_(225,184,168)) // ḩ -> Ḩ -- LATIN CAPITAL LETTER H WITH CEDILLA
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(225,184,171), Bry_.ints_(225,184,170)) // ḫ -> Ḫ -- LATIN CAPITAL LETTER H WITH BREVE BELOW
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(225,184,173), Bry_.ints_(225,184,172)) // ḭ -> Ḭ -- LATIN CAPITAL LETTER I WITH TILDE BELOW
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(225,184,175), Bry_.ints_(225,184,174)) // ḯ -> Ḯ -- LATIN CAPITAL LETTER I WITH DIAERESIS AND ACUTE
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(225,184,177), Bry_.ints_(225,184,176)) // ḱ -> Ḱ -- LATIN CAPITAL LETTER K WITH ACUTE
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(225,184,179), Bry_.ints_(225,184,178)) // ḳ -> Ḳ -- LATIN CAPITAL LETTER K WITH DOT BELOW
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(225,184,181), Bry_.ints_(225,184,180)) // ḵ -> Ḵ -- LATIN CAPITAL LETTER K WITH LINE BELOW
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(225,184,183), Bry_.ints_(225,184,182)) // ḷ -> Ḷ -- LATIN CAPITAL LETTER L WITH DOT BELOW
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(225,184,185), Bry_.ints_(225,184,184)) // ḹ -> Ḹ -- LATIN CAPITAL LETTER L WITH DOT BELOW AND MACRON
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(225,184,187), Bry_.ints_(225,184,186)) // ḻ -> Ḻ -- LATIN CAPITAL LETTER L WITH LINE BELOW
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(225,184,189), Bry_.ints_(225,184,188)) // ḽ -> Ḽ -- LATIN CAPITAL LETTER L WITH CIRCUMFLEX BELOW
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(225,184,191), Bry_.ints_(225,184,190)) // ḿ -> Ḿ -- LATIN CAPITAL LETTER M WITH ACUTE
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(225,185,129), Bry_.ints_(225,185,128)) // ṁ -> Ṁ -- LATIN CAPITAL LETTER M WITH DOT ABOVE
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(225,185,131), Bry_.ints_(225,185,130)) // ṃ -> Ṃ -- LATIN CAPITAL LETTER M WITH DOT BELOW
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(225,185,133), Bry_.ints_(225,185,132)) // ṅ -> Ṅ -- LATIN CAPITAL LETTER N WITH DOT ABOVE
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(225,185,135), Bry_.ints_(225,185,134)) // ṇ -> Ṇ -- LATIN CAPITAL LETTER N WITH DOT BELOW
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(225,185,137), Bry_.ints_(225,185,136)) // ṉ -> Ṉ -- LATIN CAPITAL LETTER N WITH LINE BELOW
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(225,185,139), Bry_.ints_(225,185,138)) // ṋ -> Ṋ -- LATIN CAPITAL LETTER N WITH CIRCUMFLEX BELOW
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(225,185,141), Bry_.ints_(225,185,140)) // ṍ -> Ṍ -- LATIN CAPITAL LETTER O WITH TILDE AND ACUTE
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(225,185,143), Bry_.ints_(225,185,142)) // ṏ -> Ṏ -- LATIN CAPITAL LETTER O WITH TILDE AND DIAERESIS
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(225,185,145), Bry_.ints_(225,185,144)) // ṑ -> Ṑ -- LATIN CAPITAL LETTER O WITH MACRON AND GRAVE
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(225,185,147), Bry_.ints_(225,185,146)) // ṓ -> Ṓ -- LATIN CAPITAL LETTER O WITH MACRON AND ACUTE
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(225,185,149), Bry_.ints_(225,185,148)) // ṕ -> Ṕ -- LATIN CAPITAL LETTER P WITH ACUTE
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(225,185,151), Bry_.ints_(225,185,150)) // ṗ -> Ṗ -- LATIN CAPITAL LETTER P WITH DOT ABOVE
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(225,185,153), Bry_.ints_(225,185,152)) // ṙ -> Ṙ -- LATIN CAPITAL LETTER R WITH DOT ABOVE
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(225,185,155), Bry_.ints_(225,185,154)) // ṛ -> Ṛ -- LATIN CAPITAL LETTER R WITH DOT BELOW
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(225,185,157), Bry_.ints_(225,185,156)) // ṝ -> Ṝ -- LATIN CAPITAL LETTER R WITH DOT BELOW AND MACRON
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(225,185,159), Bry_.ints_(225,185,158)) // ṟ -> Ṟ -- LATIN CAPITAL LETTER R WITH LINE BELOW
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(225,185,161), Bry_.ints_(225,185,160)) // ṡ -> Ṡ -- LATIN CAPITAL LETTER S WITH DOT ABOVE
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(225,185,163), Bry_.ints_(225,185,162)) // ṣ -> Ṣ -- LATIN CAPITAL LETTER S WITH DOT BELOW
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(225,185,165), Bry_.ints_(225,185,164)) // ṥ -> Ṥ -- LATIN CAPITAL LETTER S WITH ACUTE AND DOT ABOVE
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(225,185,167), Bry_.ints_(225,185,166)) // ṧ -> Ṧ -- LATIN CAPITAL LETTER S WITH CARON AND DOT ABOVE
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(225,185,169), Bry_.ints_(225,185,168)) // ṩ -> Ṩ -- LATIN CAPITAL LETTER S WITH DOT BELOW AND DOT ABOVE
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(225,185,171), Bry_.ints_(225,185,170)) // ṫ -> Ṫ -- LATIN CAPITAL LETTER T WITH DOT ABOVE
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(225,185,173), Bry_.ints_(225,185,172)) // ṭ -> Ṭ -- LATIN CAPITAL LETTER T WITH DOT BELOW
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(225,185,175), Bry_.ints_(225,185,174)) // ṯ -> Ṯ -- LATIN CAPITAL LETTER T WITH LINE BELOW
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(225,185,177), Bry_.ints_(225,185,176)) // ṱ -> Ṱ -- LATIN CAPITAL LETTER T WITH CIRCUMFLEX BELOW
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(225,185,179), Bry_.ints_(225,185,178)) // ṳ -> Ṳ -- LATIN CAPITAL LETTER U WITH DIAERESIS BELOW
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(225,185,181), Bry_.ints_(225,185,180)) // ṵ -> Ṵ -- LATIN CAPITAL LETTER U WITH TILDE BELOW
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(225,185,183), Bry_.ints_(225,185,182)) // ṷ -> Ṷ -- LATIN CAPITAL LETTER U WITH CIRCUMFLEX BELOW
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(225,185,185), Bry_.ints_(225,185,184)) // ṹ -> Ṹ -- LATIN CAPITAL LETTER U WITH TILDE AND ACUTE
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(225,185,187), Bry_.ints_(225,185,186)) // ṻ -> Ṻ -- LATIN CAPITAL LETTER U WITH MACRON AND DIAERESIS
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(225,185,189), Bry_.ints_(225,185,188)) // ṽ -> Ṽ -- LATIN CAPITAL LETTER V WITH TILDE
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(225,185,191), Bry_.ints_(225,185,190)) // ṿ -> Ṿ -- LATIN CAPITAL LETTER V WITH DOT BELOW
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(225,186,129), Bry_.ints_(225,186,128)) // ẁ -> Ẁ -- LATIN CAPITAL LETTER W WITH GRAVE
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(225,186,131), Bry_.ints_(225,186,130)) // ẃ -> Ẃ -- LATIN CAPITAL LETTER W WITH ACUTE
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(225,186,133), Bry_.ints_(225,186,132)) // ẅ -> Ẅ -- LATIN CAPITAL LETTER W WITH DIAERESIS
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(225,186,135), Bry_.ints_(225,186,134)) // ẇ -> Ẇ -- LATIN CAPITAL LETTER W WITH DOT ABOVE
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(225,186,137), Bry_.ints_(225,186,136)) // ẉ -> Ẉ -- LATIN CAPITAL LETTER W WITH DOT BELOW
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(225,186,139), Bry_.ints_(225,186,138)) // ẋ -> Ẋ -- LATIN CAPITAL LETTER X WITH DOT ABOVE
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(225,186,141), Bry_.ints_(225,186,140)) // ẍ -> Ẍ -- LATIN CAPITAL LETTER X WITH DIAERESIS
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(225,186,143), Bry_.ints_(225,186,142)) // ẏ -> Ẏ -- LATIN CAPITAL LETTER Y WITH DOT ABOVE
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(225,186,145), Bry_.ints_(225,186,144)) // ẑ -> Ẑ -- LATIN CAPITAL LETTER Z WITH CIRCUMFLEX
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(225,186,147), Bry_.ints_(225,186,146)) // ẓ -> Ẓ -- LATIN CAPITAL LETTER Z WITH DOT BELOW
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(225,186,149), Bry_.ints_(225,186,148)) // ẕ -> Ẕ -- LATIN CAPITAL LETTER Z WITH LINE BELOW
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(225,186,161), Bry_.ints_(225,186,160)) // ạ -> Ạ -- LATIN CAPITAL LETTER A WITH DOT BELOW
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(225,186,163), Bry_.ints_(225,186,162)) // ả -> Ả -- LATIN CAPITAL LETTER A WITH HOOK ABOVE
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(225,186,165), Bry_.ints_(225,186,164)) // ấ -> Ấ -- LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND ACUTE
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(225,186,167), Bry_.ints_(225,186,166)) // ầ -> Ầ -- LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND GRAVE
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(225,186,169), Bry_.ints_(225,186,168)) // ẩ -> Ẩ -- LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(225,186,171), Bry_.ints_(225,186,170)) // ẫ -> Ẫ -- LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND TILDE
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(225,186,173), Bry_.ints_(225,186,172)) // ậ -> Ậ -- LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND DOT BELOW
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(225,186,175), Bry_.ints_(225,186,174)) // ắ -> Ắ -- LATIN CAPITAL LETTER A WITH BREVE AND ACUTE
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(225,186,177), Bry_.ints_(225,186,176)) // ằ -> Ằ -- LATIN CAPITAL LETTER A WITH BREVE AND GRAVE
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(225,186,179), Bry_.ints_(225,186,178)) // ẳ -> Ẳ -- LATIN CAPITAL LETTER A WITH BREVE AND HOOK ABOVE
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(225,186,181), Bry_.ints_(225,186,180)) // ẵ -> Ẵ -- LATIN CAPITAL LETTER A WITH BREVE AND TILDE
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(225,186,183), Bry_.ints_(225,186,182)) // ặ -> Ặ -- LATIN CAPITAL LETTER A WITH BREVE AND DOT BELOW
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(225,186,185), Bry_.ints_(225,186,184)) // ẹ -> Ẹ -- LATIN CAPITAL LETTER E WITH DOT BELOW
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(225,186,187), Bry_.ints_(225,186,186)) // ẻ -> Ẻ -- LATIN CAPITAL LETTER E WITH HOOK ABOVE
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(225,186,189), Bry_.ints_(225,186,188)) // ẽ -> Ẽ -- LATIN CAPITAL LETTER E WITH TILDE
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(225,186,191), Bry_.ints_(225,186,190)) // ế -> Ế -- LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND ACUTE
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(225,187,129), Bry_.ints_(225,187,128)) // ề -> Ề -- LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND GRAVE
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(225,187,131), Bry_.ints_(225,187,130)) // ể -> Ể -- LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(225,187,133), Bry_.ints_(225,187,132)) // ễ -> Ễ -- LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND TILDE
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(225,187,135), Bry_.ints_(225,187,134)) // ệ -> Ệ -- LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND DOT BELOW
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(225,187,137), Bry_.ints_(225,187,136)) // ỉ -> Ỉ -- LATIN CAPITAL LETTER I WITH HOOK ABOVE
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(225,187,139), Bry_.ints_(225,187,138)) // ị -> Ị -- LATIN CAPITAL LETTER I WITH DOT BELOW
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(225,187,141), Bry_.ints_(225,187,140)) // ọ -> Ọ -- LATIN CAPITAL LETTER O WITH DOT BELOW
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(225,187,143), Bry_.ints_(225,187,142)) // ỏ -> Ỏ -- LATIN CAPITAL LETTER O WITH HOOK ABOVE
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(225,187,145), Bry_.ints_(225,187,144)) // ố -> Ố -- LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND ACUTE
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(225,187,147), Bry_.ints_(225,187,146)) // ồ -> Ồ -- LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND GRAVE
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(225,187,149), Bry_.ints_(225,187,148)) // ổ -> Ổ -- LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(225,187,151), Bry_.ints_(225,187,150)) // ỗ -> Ỗ -- LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND TILDE
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(225,187,153), Bry_.ints_(225,187,152)) // ộ -> Ộ -- LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND DOT BELOW
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(225,187,155), Bry_.ints_(225,187,154)) // ớ -> Ớ -- LATIN CAPITAL LETTER O WITH HORN AND ACUTE
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(225,187,157), Bry_.ints_(225,187,156)) // ờ -> Ờ -- LATIN CAPITAL LETTER O WITH HORN AND GRAVE
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(225,187,159), Bry_.ints_(225,187,158)) // ở -> Ở -- LATIN CAPITAL LETTER O WITH HORN AND HOOK ABOVE
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(225,187,161), Bry_.ints_(225,187,160)) // ỡ -> Ỡ -- LATIN CAPITAL LETTER O WITH HORN AND TILDE
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(225,187,163), Bry_.ints_(225,187,162)) // ợ -> Ợ -- LATIN CAPITAL LETTER O WITH HORN AND DOT BELOW
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(225,187,165), Bry_.ints_(225,187,164)) // ụ -> Ụ -- LATIN CAPITAL LETTER U WITH DOT BELOW
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(225,187,167), Bry_.ints_(225,187,166)) // ủ -> Ủ -- LATIN CAPITAL LETTER U WITH HOOK ABOVE
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(225,187,169), Bry_.ints_(225,187,168)) // ứ -> Ứ -- LATIN CAPITAL LETTER U WITH HORN AND ACUTE
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(225,187,171), Bry_.ints_(225,187,170)) // ừ -> Ừ -- LATIN CAPITAL LETTER U WITH HORN AND GRAVE
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(225,187,173), Bry_.ints_(225,187,172)) // ử -> Ử -- LATIN CAPITAL LETTER U WITH HORN AND HOOK ABOVE
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(225,187,175), Bry_.ints_(225,187,174)) // ữ -> Ữ -- LATIN CAPITAL LETTER U WITH HORN AND TILDE
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(225,187,177), Bry_.ints_(225,187,176)) // ự -> Ự -- LATIN CAPITAL LETTER U WITH HORN AND DOT BELOW
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(225,187,179), Bry_.ints_(225,187,178)) // ỳ -> Ỳ -- LATIN CAPITAL LETTER Y WITH GRAVE
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(225,187,181), Bry_.ints_(225,187,180)) // ỵ -> Ỵ -- LATIN CAPITAL LETTER Y WITH DOT BELOW
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(225,187,183), Bry_.ints_(225,187,182)) // ỷ -> Ỷ -- LATIN CAPITAL LETTER Y WITH HOOK ABOVE
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(225,187,185), Bry_.ints_(225,187,184)) // ỹ -> Ỹ -- LATIN CAPITAL LETTER Y WITH TILDE
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(225,187,187), Bry_.ints_(225,187,186)) // ỻ -> Ỻ -- LATIN CAPITAL LETTER MIDDLE-WELSH LL
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(225,187,189), Bry_.ints_(225,187,188)) // ỽ -> Ỽ -- LATIN CAPITAL LETTER MIDDLE-WELSH V
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(225,187,191), Bry_.ints_(225,187,190)) // ỿ -> Ỿ -- LATIN CAPITAL LETTER Y WITH LOOP
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(225,188,128), Bry_.ints_(225,188,136)) // ἀ -> Ἀ -- GREEK SMALL LETTER ALPHA WITH PSILI
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(225,188,129), Bry_.ints_(225,188,137)) // ἁ -> Ἁ -- GREEK SMALL LETTER ALPHA WITH DASIA
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(225,188,130), Bry_.ints_(225,188,138)) // ἂ -> Ἂ -- GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(225,188,131), Bry_.ints_(225,188,139)) // ἃ -> Ἃ -- GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(225,188,132), Bry_.ints_(225,188,140)) // ἄ -> Ἄ -- GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(225,188,133), Bry_.ints_(225,188,141)) // ἅ -> Ἅ -- GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(225,188,134), Bry_.ints_(225,188,142)) // ἆ -> Ἆ -- GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(225,188,135), Bry_.ints_(225,188,143)) // ἇ -> Ἇ -- GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(225,188,144), Bry_.ints_(225,188,152)) // ἐ -> Ἐ -- GREEK SMALL LETTER EPSILON WITH PSILI
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(225,188,145), Bry_.ints_(225,188,153)) // ἑ -> Ἑ -- GREEK SMALL LETTER EPSILON WITH DASIA
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(225,188,146), Bry_.ints_(225,188,154)) // ἒ -> Ἒ -- GREEK SMALL LETTER EPSILON WITH PSILI AND VARIA
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(225,188,147), Bry_.ints_(225,188,155)) // ἓ -> Ἓ -- GREEK SMALL LETTER EPSILON WITH DASIA AND VARIA
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(225,188,148), Bry_.ints_(225,188,156)) // ἔ -> Ἔ -- GREEK SMALL LETTER EPSILON WITH PSILI AND OXIA
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(225,188,149), Bry_.ints_(225,188,157)) // ἕ -> Ἕ -- GREEK SMALL LETTER EPSILON WITH DASIA AND OXIA
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(225,188,160), Bry_.ints_(225,188,168)) // ἠ -> Ἠ -- GREEK SMALL LETTER ETA WITH PSILI
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(225,188,161), Bry_.ints_(225,188,169)) // ἡ -> Ἡ -- GREEK SMALL LETTER ETA WITH DASIA
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(225,188,162), Bry_.ints_(225,188,170)) // ἢ -> Ἢ -- GREEK SMALL LETTER ETA WITH PSILI AND VARIA
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(225,188,163), Bry_.ints_(225,188,171)) // ἣ -> Ἣ -- GREEK SMALL LETTER ETA WITH DASIA AND VARIA
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(225,188,164), Bry_.ints_(225,188,172)) // ἤ -> Ἤ -- GREEK SMALL LETTER ETA WITH PSILI AND OXIA
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(225,188,165), Bry_.ints_(225,188,173)) // ἥ -> Ἥ -- GREEK SMALL LETTER ETA WITH DASIA AND OXIA
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(225,188,166), Bry_.ints_(225,188,174)) // ἦ -> Ἦ -- GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(225,188,167), Bry_.ints_(225,188,175)) // ἧ -> Ἧ -- GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(225,188,176), Bry_.ints_(225,188,184)) // ἰ -> Ἰ -- GREEK SMALL LETTER IOTA WITH PSILI
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(225,188,177), Bry_.ints_(225,188,185)) // ἱ -> Ἱ -- GREEK SMALL LETTER IOTA WITH DASIA
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(225,188,178), Bry_.ints_(225,188,186)) // ἲ -> Ἲ -- GREEK SMALL LETTER IOTA WITH PSILI AND VARIA
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(225,188,179), Bry_.ints_(225,188,187)) // ἳ -> Ἳ -- GREEK SMALL LETTER IOTA WITH DASIA AND VARIA
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(225,188,180), Bry_.ints_(225,188,188)) // ἴ -> Ἴ -- GREEK SMALL LETTER IOTA WITH PSILI AND OXIA
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(225,188,181), Bry_.ints_(225,188,189)) // ἵ -> Ἵ -- GREEK SMALL LETTER IOTA WITH DASIA AND OXIA
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(225,188,182), Bry_.ints_(225,188,190)) // ἶ -> Ἶ -- GREEK SMALL LETTER IOTA WITH PSILI AND PERISPOMENI
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(225,188,183), Bry_.ints_(225,188,191)) // ἷ -> Ἷ -- GREEK SMALL LETTER IOTA WITH DASIA AND PERISPOMENI
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(225,189,128), Bry_.ints_(225,189,136)) // ὀ -> Ὀ -- GREEK SMALL LETTER OMICRON WITH PSILI
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(225,189,129), Bry_.ints_(225,189,137)) // ὁ -> Ὁ -- GREEK SMALL LETTER OMICRON WITH DASIA
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(225,189,130), Bry_.ints_(225,189,138)) // ὂ -> Ὂ -- GREEK SMALL LETTER OMICRON WITH PSILI AND VARIA
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(225,189,131), Bry_.ints_(225,189,139)) // ὃ -> Ὃ -- GREEK SMALL LETTER OMICRON WITH DASIA AND VARIA
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(225,189,132), Bry_.ints_(225,189,140)) // ὄ -> Ὄ -- GREEK SMALL LETTER OMICRON WITH PSILI AND OXIA
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(225,189,133), Bry_.ints_(225,189,141)) // ὅ -> Ὅ -- GREEK SMALL LETTER OMICRON WITH DASIA AND OXIA
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(225,189,145), Bry_.ints_(225,189,153)) // ὑ -> Ὑ -- GREEK SMALL LETTER UPSILON WITH DASIA
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(225,189,147), Bry_.ints_(225,189,155)) // ὓ -> Ὓ -- GREEK SMALL LETTER UPSILON WITH DASIA AND VARIA
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(225,189,149), Bry_.ints_(225,189,157)) // ὕ -> Ὕ -- GREEK SMALL LETTER UPSILON WITH DASIA AND OXIA
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(225,189,151), Bry_.ints_(225,189,159)) // ὗ -> Ὗ -- GREEK SMALL LETTER UPSILON WITH DASIA AND PERISPOMENI
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(225,189,160), Bry_.ints_(225,189,168)) // ὠ -> Ὠ -- GREEK SMALL LETTER OMEGA WITH PSILI
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(225,189,161), Bry_.ints_(225,189,169)) // ὡ -> Ὡ -- GREEK SMALL LETTER OMEGA WITH DASIA
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(225,189,162), Bry_.ints_(225,189,170)) // ὢ -> Ὢ -- GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(225,189,163), Bry_.ints_(225,189,171)) // ὣ -> Ὣ -- GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(225,189,164), Bry_.ints_(225,189,172)) // ὤ -> Ὤ -- GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(225,189,165), Bry_.ints_(225,189,173)) // ὥ -> Ὥ -- GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(225,189,166), Bry_.ints_(225,189,174)) // ὦ -> Ὦ -- GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(225,189,167), Bry_.ints_(225,189,175)) // ὧ -> Ὧ -- GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(225,189,176), Bry_.ints_(225,190,186)) // ὰ -> Ὰ -- GREEK SMALL LETTER ALPHA WITH VARIA
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(225,189,177), Bry_.ints_(225,190,187)) // ά -> Ά -- GREEK SMALL LETTER ALPHA WITH OXIA
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(225,189,178), Bry_.ints_(225,191,136)) // ὲ -> Ὲ -- GREEK SMALL LETTER EPSILON WITH VARIA
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(225,189,179), Bry_.ints_(225,191,137)) // έ -> Έ -- GREEK SMALL LETTER EPSILON WITH OXIA
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(225,189,180), Bry_.ints_(225,191,138)) // ὴ -> Ὴ -- GREEK SMALL LETTER ETA WITH VARIA
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(225,189,181), Bry_.ints_(225,191,139)) // ή -> Ή -- GREEK SMALL LETTER ETA WITH OXIA
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(225,189,182), Bry_.ints_(225,191,154)) // ὶ -> Ὶ -- GREEK SMALL LETTER IOTA WITH VARIA
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(225,189,183), Bry_.ints_(225,191,155)) // ί -> Ί -- GREEK SMALL LETTER IOTA WITH OXIA
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(225,189,184), Bry_.ints_(225,191,184)) // ὸ -> Ὸ -- GREEK SMALL LETTER OMICRON WITH VARIA
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(225,189,185), Bry_.ints_(225,191,185)) // ό -> Ό -- GREEK SMALL LETTER OMICRON WITH OXIA
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(225,189,186), Bry_.ints_(225,191,170)) // ὺ -> Ὺ -- GREEK SMALL LETTER UPSILON WITH VARIA
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(225,189,187), Bry_.ints_(225,191,171)) // ύ -> Ύ -- GREEK SMALL LETTER UPSILON WITH OXIA
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(225,189,188), Bry_.ints_(225,191,186)) // ὼ -> Ὼ -- GREEK SMALL LETTER OMEGA WITH VARIA
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(225,189,189), Bry_.ints_(225,191,187)) // ώ -> Ώ -- GREEK SMALL LETTER OMEGA WITH OXIA
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(225,190,128), Bry_.ints_(225,190,136)) // ᾀ -> ᾈ -- GREEK SMALL LETTER ALPHA WITH PSILI AND YPOGEGRAMMENI
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(225,190,129), Bry_.ints_(225,190,137)) // ᾁ -> ᾉ -- GREEK SMALL LETTER ALPHA WITH DASIA AND YPOGEGRAMMENI
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(225,190,130), Bry_.ints_(225,190,138)) // ᾂ -> ᾊ -- GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA AND YPOGEGRAMMENI
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(225,190,131), Bry_.ints_(225,190,139)) // ᾃ -> ᾋ -- GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA AND YPOGEGRAMMENI
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(225,190,132), Bry_.ints_(225,190,140)) // ᾄ -> ᾌ -- GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA AND YPOGEGRAMMENI
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(225,190,133), Bry_.ints_(225,190,141)) // ᾅ -> ᾍ -- GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA AND YPOGEGRAMMENI
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(225,190,134), Bry_.ints_(225,190,142)) // ᾆ -> ᾎ -- GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(225,190,135), Bry_.ints_(225,190,143)) // ᾇ -> ᾏ -- GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(225,190,144), Bry_.ints_(225,190,152)) // ᾐ -> ᾘ -- GREEK SMALL LETTER ETA WITH PSILI AND YPOGEGRAMMENI
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(225,190,145), Bry_.ints_(225,190,153)) // ᾑ -> ᾙ -- GREEK SMALL LETTER ETA WITH DASIA AND YPOGEGRAMMENI
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(225,190,146), Bry_.ints_(225,190,154)) // ᾒ -> ᾚ -- GREEK SMALL LETTER ETA WITH PSILI AND VARIA AND YPOGEGRAMMENI
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(225,190,147), Bry_.ints_(225,190,155)) // ᾓ -> ᾛ -- GREEK SMALL LETTER ETA WITH DASIA AND VARIA AND YPOGEGRAMMENI
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(225,190,148), Bry_.ints_(225,190,156)) // ᾔ -> ᾜ -- GREEK SMALL LETTER ETA WITH PSILI AND OXIA AND YPOGEGRAMMENI
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(225,190,149), Bry_.ints_(225,190,157)) // ᾕ -> ᾝ -- GREEK SMALL LETTER ETA WITH DASIA AND OXIA AND YPOGEGRAMMENI
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(225,190,150), Bry_.ints_(225,190,158)) // ᾖ -> ᾞ -- GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(225,190,151), Bry_.ints_(225,190,159)) // ᾗ -> ᾟ -- GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(225,190,160), Bry_.ints_(225,190,168)) // ᾠ -> ᾨ -- GREEK SMALL LETTER OMEGA WITH PSILI AND YPOGEGRAMMENI
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(225,190,161), Bry_.ints_(225,190,169)) // ᾡ -> ᾩ -- GREEK SMALL LETTER OMEGA WITH DASIA AND YPOGEGRAMMENI
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(225,190,162), Bry_.ints_(225,190,170)) // ᾢ -> ᾪ -- GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA AND YPOGEGRAMMENI
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(225,190,163), Bry_.ints_(225,190,171)) // ᾣ -> ᾫ -- GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA AND YPOGEGRAMMENI
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(225,190,164), Bry_.ints_(225,190,172)) // ᾤ -> ᾬ -- GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA AND YPOGEGRAMMENI
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(225,190,165), Bry_.ints_(225,190,173)) // ᾥ -> ᾭ -- GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA AND YPOGEGRAMMENI
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(225,190,166), Bry_.ints_(225,190,174)) // ᾦ -> ᾮ -- GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(225,190,167), Bry_.ints_(225,190,175)) // ᾧ -> ᾯ -- GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(225,190,176), Bry_.ints_(225,190,184)) // ᾰ -> Ᾰ -- GREEK SMALL LETTER ALPHA WITH VRACHY
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(225,190,177), Bry_.ints_(225,190,185)) // ᾱ -> Ᾱ -- GREEK SMALL LETTER ALPHA WITH MACRON
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(225,190,179), Bry_.ints_(225,190,188)) // ᾳ -> ᾼ -- GREEK SMALL LETTER ALPHA WITH YPOGEGRAMMENI
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(225,191,131), Bry_.ints_(225,191,140)) // ῃ -> ῌ -- GREEK SMALL LETTER ETA WITH YPOGEGRAMMENI
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(225,191,144), Bry_.ints_(225,191,152)) // ῐ -> Ῐ -- GREEK SMALL LETTER IOTA WITH VRACHY
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(225,191,145), Bry_.ints_(225,191,153)) // ῑ -> Ῑ -- GREEK SMALL LETTER IOTA WITH MACRON
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(225,191,160), Bry_.ints_(225,191,168)) // ῠ -> Ῠ -- GREEK SMALL LETTER UPSILON WITH VRACHY
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(225,191,161), Bry_.ints_(225,191,169)) // ῡ -> Ῡ -- GREEK SMALL LETTER UPSILON WITH MACRON
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(225,191,165), Bry_.ints_(225,191,172)) // ῥ -> Ῥ -- GREEK SMALL LETTER RHO WITH DASIA
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(225,191,179), Bry_.ints_(225,191,188)) // ῳ -> ῼ -- GREEK SMALL LETTER OMEGA WITH YPOGEGRAMMENI
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(226,133,142), Bry_.ints_(226,132,178)) // ⅎ -> Ⅎ -- TURNED F
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(226,133,176), Bry_.ints_(226,133,160)) // ⅰ -> Ⅰ -- ROMAN NUMERAL ONE
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(226,133,177), Bry_.ints_(226,133,161)) // ⅱ -> Ⅱ -- ROMAN NUMERAL TWO
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(226,133,178), Bry_.ints_(226,133,162)) // ⅲ -> Ⅲ -- ROMAN NUMERAL THREE
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(226,133,179), Bry_.ints_(226,133,163)) // ⅳ -> Ⅳ -- ROMAN NUMERAL FOUR
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(226,133,180), Bry_.ints_(226,133,164)) // ⅴ -> Ⅴ -- ROMAN NUMERAL FIVE
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(226,133,181), Bry_.ints_(226,133,165)) // ⅵ -> Ⅵ -- ROMAN NUMERAL SIX
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(226,133,182), Bry_.ints_(226,133,166)) // ⅶ -> Ⅶ -- ROMAN NUMERAL SEVEN
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(226,133,183), Bry_.ints_(226,133,167)) // ⅷ -> Ⅷ -- ROMAN NUMERAL EIGHT
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(226,133,184), Bry_.ints_(226,133,168)) // ⅸ -> Ⅸ -- ROMAN NUMERAL NINE
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(226,133,185), Bry_.ints_(226,133,169)) // ⅹ -> Ⅹ -- ROMAN NUMERAL TEN
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(226,133,186), Bry_.ints_(226,133,170)) // ⅺ -> Ⅺ -- ROMAN NUMERAL ELEVEN
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(226,133,187), Bry_.ints_(226,133,171)) // ⅻ -> Ⅻ -- ROMAN NUMERAL TWELVE
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(226,133,188), Bry_.ints_(226,133,172)) // ⅼ -> Ⅼ -- ROMAN NUMERAL FIFTY
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(226,133,189), Bry_.ints_(226,133,173)) // ⅽ -> Ⅽ -- ROMAN NUMERAL ONE HUNDRED
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(226,133,190), Bry_.ints_(226,133,174)) // ⅾ -> Ⅾ -- ROMAN NUMERAL FIVE HUNDRED
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(226,133,191), Bry_.ints_(226,133,175)) // ⅿ -> Ⅿ -- ROMAN NUMERAL ONE THOUSAND
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(226,134,132), Bry_.ints_(226,134,131)) // ↄ -> Ↄ -- ROMAN NUMERAL REVERSED ONE HUNDRED
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(226,147,144), Bry_.ints_(226,146,182)) // ⓐ -> Ⓐ -- CIRCLED LATIN CAPITAL LETTER A
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(226,147,145), Bry_.ints_(226,146,183)) // ⓑ -> Ⓑ -- CIRCLED LATIN CAPITAL LETTER B
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(226,147,146), Bry_.ints_(226,146,184)) // ⓒ -> Ⓒ -- CIRCLED LATIN CAPITAL LETTER C
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(226,147,147), Bry_.ints_(226,146,185)) // ⓓ -> Ⓓ -- CIRCLED LATIN CAPITAL LETTER D
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(226,147,148), Bry_.ints_(226,146,186)) // ⓔ -> Ⓔ -- CIRCLED LATIN CAPITAL LETTER E
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(226,147,149), Bry_.ints_(226,146,187)) // ⓕ -> Ⓕ -- CIRCLED LATIN CAPITAL LETTER F
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(226,147,150), Bry_.ints_(226,146,188)) // ⓖ -> Ⓖ -- CIRCLED LATIN CAPITAL LETTER G
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(226,147,151), Bry_.ints_(226,146,189)) // ⓗ -> Ⓗ -- CIRCLED LATIN CAPITAL LETTER H
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(226,147,152), Bry_.ints_(226,146,190)) // ⓘ -> Ⓘ -- CIRCLED LATIN CAPITAL LETTER I
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(226,147,153), Bry_.ints_(226,146,191)) // ⓙ -> Ⓙ -- CIRCLED LATIN CAPITAL LETTER J
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(226,147,154), Bry_.ints_(226,147,128)) // ⓚ -> Ⓚ -- CIRCLED LATIN CAPITAL LETTER K
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(226,147,155), Bry_.ints_(226,147,129)) // ⓛ -> Ⓛ -- CIRCLED LATIN CAPITAL LETTER L
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(226,147,156), Bry_.ints_(226,147,130)) // ⓜ -> Ⓜ -- CIRCLED LATIN CAPITAL LETTER M
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(226,147,157), Bry_.ints_(226,147,131)) // ⓝ -> Ⓝ -- CIRCLED LATIN CAPITAL LETTER N
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(226,147,158), Bry_.ints_(226,147,132)) // ⓞ -> Ⓞ -- CIRCLED LATIN CAPITAL LETTER O
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(226,147,159), Bry_.ints_(226,147,133)) // ⓟ -> Ⓟ -- CIRCLED LATIN CAPITAL LETTER P
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(226,147,160), Bry_.ints_(226,147,134)) // ⓠ -> Ⓠ -- CIRCLED LATIN CAPITAL LETTER Q
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(226,147,161), Bry_.ints_(226,147,135)) // ⓡ -> Ⓡ -- CIRCLED LATIN CAPITAL LETTER R
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(226,147,162), Bry_.ints_(226,147,136)) // ⓢ -> Ⓢ -- CIRCLED LATIN CAPITAL LETTER S
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(226,147,163), Bry_.ints_(226,147,137)) // ⓣ -> Ⓣ -- CIRCLED LATIN CAPITAL LETTER T
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(226,147,164), Bry_.ints_(226,147,138)) // ⓤ -> Ⓤ -- CIRCLED LATIN CAPITAL LETTER U
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(226,147,165), Bry_.ints_(226,147,139)) // ⓥ -> Ⓥ -- CIRCLED LATIN CAPITAL LETTER V
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(226,147,166), Bry_.ints_(226,147,140)) // ⓦ -> Ⓦ -- CIRCLED LATIN CAPITAL LETTER W
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(226,147,167), Bry_.ints_(226,147,141)) // ⓧ -> Ⓧ -- CIRCLED LATIN CAPITAL LETTER X
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(226,147,168), Bry_.ints_(226,147,142)) // ⓨ -> Ⓨ -- CIRCLED LATIN CAPITAL LETTER Y
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(226,147,169), Bry_.ints_(226,147,143)) // ⓩ -> Ⓩ -- CIRCLED LATIN CAPITAL LETTER Z
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(226,176,176), Bry_.ints_(226,176,128)) // ⰰ -> Ⰰ -- GLAGOLITIC CAPITAL LETTER AZU
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(226,176,177), Bry_.ints_(226,176,129)) // ⰱ -> Ⰱ -- GLAGOLITIC CAPITAL LETTER BUKY
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(226,176,178), Bry_.ints_(226,176,130)) // ⰲ -> Ⰲ -- GLAGOLITIC CAPITAL LETTER VEDE
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(226,176,179), Bry_.ints_(226,176,131)) // ⰳ -> Ⰳ -- GLAGOLITIC CAPITAL LETTER GLAGOLI
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(226,176,180), Bry_.ints_(226,176,132)) // ⰴ -> Ⰴ -- GLAGOLITIC CAPITAL LETTER DOBRO
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(226,176,181), Bry_.ints_(226,176,133)) // ⰵ -> Ⰵ -- GLAGOLITIC CAPITAL LETTER YESTU
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(226,176,182), Bry_.ints_(226,176,134)) // ⰶ -> Ⰶ -- GLAGOLITIC CAPITAL LETTER ZHIVETE
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(226,176,183), Bry_.ints_(226,176,135)) // ⰷ -> Ⰷ -- GLAGOLITIC CAPITAL LETTER DZELO
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(226,176,184), Bry_.ints_(226,176,136)) // ⰸ -> Ⰸ -- GLAGOLITIC CAPITAL LETTER ZEMLJA
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(226,176,185), Bry_.ints_(226,176,137)) // ⰹ -> Ⰹ -- GLAGOLITIC CAPITAL LETTER IZHE
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(226,176,186), Bry_.ints_(226,176,138)) // ⰺ -> Ⰺ -- GLAGOLITIC CAPITAL LETTER INITIAL IZHE
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(226,176,187), Bry_.ints_(226,176,139)) // ⰻ -> Ⰻ -- GLAGOLITIC CAPITAL LETTER I
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(226,176,188), Bry_.ints_(226,176,140)) // ⰼ -> Ⰼ -- GLAGOLITIC CAPITAL LETTER DJERVI
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(226,176,189), Bry_.ints_(226,176,141)) // ⰽ -> Ⰽ -- GLAGOLITIC CAPITAL LETTER KAKO
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(226,176,190), Bry_.ints_(226,176,142)) // ⰾ -> Ⰾ -- GLAGOLITIC CAPITAL LETTER LJUDIJE
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(226,176,191), Bry_.ints_(226,176,143)) // ⰿ -> Ⰿ -- GLAGOLITIC CAPITAL LETTER MYSLITE
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(226,177,128), Bry_.ints_(226,176,144)) // ⱀ -> Ⱀ -- GLAGOLITIC CAPITAL LETTER NASHI
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(226,177,129), Bry_.ints_(226,176,145)) // ⱁ -> Ⱁ -- GLAGOLITIC CAPITAL LETTER ONU
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(226,177,130), Bry_.ints_(226,176,146)) // ⱂ -> Ⱂ -- GLAGOLITIC CAPITAL LETTER POKOJI
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(226,177,131), Bry_.ints_(226,176,147)) // ⱃ -> Ⱃ -- GLAGOLITIC CAPITAL LETTER RITSI
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(226,177,132), Bry_.ints_(226,176,148)) // ⱄ -> Ⱄ -- GLAGOLITIC CAPITAL LETTER SLOVO
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(226,177,133), Bry_.ints_(226,176,149)) // ⱅ -> Ⱅ -- GLAGOLITIC CAPITAL LETTER TVRIDO
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(226,177,134), Bry_.ints_(226,176,150)) // ⱆ -> Ⱆ -- GLAGOLITIC CAPITAL LETTER UKU
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(226,177,135), Bry_.ints_(226,176,151)) // ⱇ -> Ⱇ -- GLAGOLITIC CAPITAL LETTER FRITU
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(226,177,136), Bry_.ints_(226,176,152)) // ⱈ -> Ⱈ -- GLAGOLITIC CAPITAL LETTER HERU
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(226,177,137), Bry_.ints_(226,176,153)) // ⱉ -> Ⱉ -- GLAGOLITIC CAPITAL LETTER OTU
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(226,177,138), Bry_.ints_(226,176,154)) // ⱊ -> Ⱊ -- GLAGOLITIC CAPITAL LETTER PE
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(226,177,139), Bry_.ints_(226,176,155)) // ⱋ -> Ⱋ -- GLAGOLITIC CAPITAL LETTER SHTA
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(226,177,140), Bry_.ints_(226,176,156)) // ⱌ -> Ⱌ -- GLAGOLITIC CAPITAL LETTER TSI
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(226,177,141), Bry_.ints_(226,176,157)) // ⱍ -> Ⱍ -- GLAGOLITIC CAPITAL LETTER CHRIVI
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(226,177,142), Bry_.ints_(226,176,158)) // ⱎ -> Ⱎ -- GLAGOLITIC CAPITAL LETTER SHA
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(226,177,143), Bry_.ints_(226,176,159)) // ⱏ -> Ⱏ -- GLAGOLITIC CAPITAL LETTER YERU
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(226,177,144), Bry_.ints_(226,176,160)) // ⱐ -> Ⱐ -- GLAGOLITIC CAPITAL LETTER YERI
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(226,177,145), Bry_.ints_(226,176,161)) // ⱑ -> Ⱑ -- GLAGOLITIC CAPITAL LETTER YATI
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(226,177,146), Bry_.ints_(226,176,162)) // ⱒ -> Ⱒ -- GLAGOLITIC CAPITAL LETTER SPIDERY HA
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(226,177,147), Bry_.ints_(226,176,163)) // ⱓ -> Ⱓ -- GLAGOLITIC CAPITAL LETTER YU
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(226,177,148), Bry_.ints_(226,176,164)) // ⱔ -> Ⱔ -- GLAGOLITIC CAPITAL LETTER SMALL YUS
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(226,177,149), Bry_.ints_(226,176,165)) // ⱕ -> Ⱕ -- GLAGOLITIC CAPITAL LETTER SMALL YUS WITH TAIL
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(226,177,150), Bry_.ints_(226,176,166)) // ⱖ -> Ⱖ -- GLAGOLITIC CAPITAL LETTER YO
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(226,177,151), Bry_.ints_(226,176,167)) // ⱗ -> Ⱗ -- GLAGOLITIC CAPITAL LETTER IOTATED SMALL YUS
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(226,177,152), Bry_.ints_(226,176,168)) // ⱘ -> Ⱘ -- GLAGOLITIC CAPITAL LETTER BIG YUS
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(226,177,153), Bry_.ints_(226,176,169)) // ⱙ -> Ⱙ -- GLAGOLITIC CAPITAL LETTER IOTATED BIG YUS
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(226,177,154), Bry_.ints_(226,176,170)) // ⱚ -> Ⱚ -- GLAGOLITIC CAPITAL LETTER FITA
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(226,177,155), Bry_.ints_(226,176,171)) // ⱛ -> Ⱛ -- GLAGOLITIC CAPITAL LETTER IZHITSA
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(226,177,156), Bry_.ints_(226,176,172)) // ⱜ -> Ⱜ -- GLAGOLITIC CAPITAL LETTER SHTAPIC
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(226,177,157), Bry_.ints_(226,176,173)) // ⱝ -> Ⱝ -- GLAGOLITIC CAPITAL LETTER TROKUTASTI A
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(226,177,158), Bry_.ints_(226,176,174)) // ⱞ -> Ⱞ -- GLAGOLITIC CAPITAL LETTER LATINATE MYSLITE
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(226,177,161), Bry_.ints_(226,177,160)) // ⱡ -> Ⱡ -- LATIN CAPITAL LETTER L WITH DOUBLE BAR
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(226,177,168), Bry_.ints_(226,177,167)) // ⱨ -> Ⱨ -- LATIN CAPITAL LETTER H WITH DESCENDER
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(226,177,170), Bry_.ints_(226,177,169)) // ⱪ -> Ⱪ -- LATIN CAPITAL LETTER K WITH DESCENDER
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(226,177,172), Bry_.ints_(226,177,171)) // ⱬ -> Ⱬ -- LATIN CAPITAL LETTER Z WITH DESCENDER
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(226,177,179), Bry_.ints_(226,177,178)) // ⱳ -> Ⱳ -- LATIN CAPITAL LETTER W WITH HOOK
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(226,177,182), Bry_.ints_(226,177,181)) // ⱶ -> Ⱶ -- LATIN CAPITAL LETTER HALF H
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(226,178,129), Bry_.ints_(226,178,128)) // ⲁ -> Ⲁ -- COPTIC CAPITAL LETTER ALFA
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(226,178,131), Bry_.ints_(226,178,130)) // ⲃ -> Ⲃ -- COPTIC CAPITAL LETTER VIDA
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(226,178,133), Bry_.ints_(226,178,132)) // ⲅ -> Ⲅ -- COPTIC CAPITAL LETTER GAMMA
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(226,178,135), Bry_.ints_(226,178,134)) // ⲇ -> Ⲇ -- COPTIC CAPITAL LETTER DALDA
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(226,178,137), Bry_.ints_(226,178,136)) // ⲉ -> Ⲉ -- COPTIC CAPITAL LETTER EIE
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(226,178,139), Bry_.ints_(226,178,138)) // ⲋ -> Ⲋ -- COPTIC CAPITAL LETTER SOU
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(226,178,141), Bry_.ints_(226,178,140)) // ⲍ -> Ⲍ -- COPTIC CAPITAL LETTER ZATA
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(226,178,143), Bry_.ints_(226,178,142)) // ⲏ -> Ⲏ -- COPTIC CAPITAL LETTER HATE
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(226,178,145), Bry_.ints_(226,178,144)) // ⲑ -> Ⲑ -- COPTIC CAPITAL LETTER THETHE
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(226,178,147), Bry_.ints_(226,178,146)) // ⲓ -> Ⲓ -- COPTIC CAPITAL LETTER IAUDA
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(226,178,149), Bry_.ints_(226,178,148)) // ⲕ -> Ⲕ -- COPTIC CAPITAL LETTER KAPA
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(226,178,151), Bry_.ints_(226,178,150)) // ⲗ -> Ⲗ -- COPTIC CAPITAL LETTER LAULA
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(226,178,153), Bry_.ints_(226,178,152)) // ⲙ -> Ⲙ -- COPTIC CAPITAL LETTER MI
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(226,178,155), Bry_.ints_(226,178,154)) // ⲛ -> Ⲛ -- COPTIC CAPITAL LETTER NI
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(226,178,157), Bry_.ints_(226,178,156)) // ⲝ -> Ⲝ -- COPTIC CAPITAL LETTER KSI
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(226,178,159), Bry_.ints_(226,178,158)) // ⲟ -> Ⲟ -- COPTIC CAPITAL LETTER O
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(226,178,161), Bry_.ints_(226,178,160)) // ⲡ -> Ⲡ -- COPTIC CAPITAL LETTER PI
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(226,178,163), Bry_.ints_(226,178,162)) // ⲣ -> Ⲣ -- COPTIC CAPITAL LETTER RO
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(226,178,165), Bry_.ints_(226,178,164)) // ⲥ -> Ⲥ -- COPTIC CAPITAL LETTER SIMA
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(226,178,167), Bry_.ints_(226,178,166)) // ⲧ -> Ⲧ -- COPTIC CAPITAL LETTER TAU
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(226,178,169), Bry_.ints_(226,178,168)) // ⲩ -> Ⲩ -- COPTIC CAPITAL LETTER UA
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(226,178,171), Bry_.ints_(226,178,170)) // ⲫ -> Ⲫ -- COPTIC CAPITAL LETTER FI
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(226,178,173), Bry_.ints_(226,178,172)) // ⲭ -> Ⲭ -- COPTIC CAPITAL LETTER KHI
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(226,178,175), Bry_.ints_(226,178,174)) // ⲯ -> Ⲯ -- COPTIC CAPITAL LETTER PSI
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(226,178,177), Bry_.ints_(226,178,176)) // ⲱ -> Ⲱ -- COPTIC CAPITAL LETTER OOU
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(226,178,179), Bry_.ints_(226,178,178)) // ⲳ -> Ⲳ -- COPTIC CAPITAL LETTER DIALECT-P ALEF
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(226,178,181), Bry_.ints_(226,178,180)) // ⲵ -> Ⲵ -- COPTIC CAPITAL LETTER OLD COPTIC AIN
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(226,178,183), Bry_.ints_(226,178,182)) // ⲷ -> Ⲷ -- COPTIC CAPITAL LETTER CRYPTOGRAMMIC EIE
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(226,178,185), Bry_.ints_(226,178,184)) // ⲹ -> Ⲹ -- COPTIC CAPITAL LETTER DIALECT-P KAPA
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(226,178,187), Bry_.ints_(226,178,186)) // ⲻ -> Ⲻ -- COPTIC CAPITAL LETTER DIALECT-P NI
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(226,178,189), Bry_.ints_(226,178,188)) // ⲽ -> Ⲽ -- COPTIC CAPITAL LETTER CRYPTOGRAMMIC NI
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(226,178,191), Bry_.ints_(226,178,190)) // ⲿ -> Ⲿ -- COPTIC CAPITAL LETTER OLD COPTIC OOU
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(226,179,129), Bry_.ints_(226,179,128)) // ⳁ -> Ⳁ -- COPTIC CAPITAL LETTER SAMPI
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(226,179,131), Bry_.ints_(226,179,130)) // ⳃ -> Ⳃ -- COPTIC CAPITAL LETTER CROSSED SHEI
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(226,179,133), Bry_.ints_(226,179,132)) // ⳅ -> Ⳅ -- COPTIC CAPITAL LETTER OLD COPTIC SHEI
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(226,179,135), Bry_.ints_(226,179,134)) // ⳇ -> Ⳇ -- COPTIC CAPITAL LETTER OLD COPTIC ESH
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(226,179,137), Bry_.ints_(226,179,136)) // ⳉ -> Ⳉ -- COPTIC CAPITAL LETTER AKHMIMIC KHEI
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(226,179,139), Bry_.ints_(226,179,138)) // ⳋ -> Ⳋ -- COPTIC CAPITAL LETTER DIALECT-P HORI
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(226,179,141), Bry_.ints_(226,179,140)) // ⳍ -> Ⳍ -- COPTIC CAPITAL LETTER OLD COPTIC HORI
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(226,179,143), Bry_.ints_(226,179,142)) // ⳏ -> Ⳏ -- COPTIC CAPITAL LETTER OLD COPTIC HA
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(226,179,145), Bry_.ints_(226,179,144)) // ⳑ -> Ⳑ -- COPTIC CAPITAL LETTER L-SHAPED HA
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(226,179,147), Bry_.ints_(226,179,146)) // ⳓ -> Ⳓ -- COPTIC CAPITAL LETTER OLD COPTIC HEI
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(226,179,149), Bry_.ints_(226,179,148)) // ⳕ -> Ⳕ -- COPTIC CAPITAL LETTER OLD COPTIC HAT
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(226,179,151), Bry_.ints_(226,179,150)) // ⳗ -> Ⳗ -- COPTIC CAPITAL LETTER OLD COPTIC GANGIA
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(226,179,153), Bry_.ints_(226,179,152)) // ⳙ -> Ⳙ -- COPTIC CAPITAL LETTER OLD COPTIC DJA
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(226,179,155), Bry_.ints_(226,179,154)) // ⳛ -> Ⳛ -- COPTIC CAPITAL LETTER OLD COPTIC SHIMA
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(226,179,157), Bry_.ints_(226,179,156)) // ⳝ -> Ⳝ -- COPTIC CAPITAL LETTER OLD NUBIAN SHIMA
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(226,179,159), Bry_.ints_(226,179,158)) // ⳟ -> Ⳟ -- COPTIC CAPITAL LETTER OLD NUBIAN NGI
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(226,179,161), Bry_.ints_(226,179,160)) // ⳡ -> Ⳡ -- COPTIC CAPITAL LETTER OLD NUBIAN NYI
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(226,179,163), Bry_.ints_(226,179,162)) // ⳣ -> Ⳣ -- COPTIC CAPITAL LETTER OLD NUBIAN WAU
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(226,179,172), Bry_.ints_(226,179,171)) // ⳬ -> Ⳬ -- COPTIC CAPITAL LETTER CRYPTOGRAMMIC SHEI
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(226,179,174), Bry_.ints_(226,179,173)) // ⳮ -> Ⳮ -- COPTIC CAPITAL LETTER CRYPTOGRAMMIC GANGIA
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(226,179,179), Bry_.ints_(226,179,178)) // ⳳ -> Ⳳ -- COPTIC CAPITAL LETTER BOHAIRIC KHEI
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(234,153,129), Bry_.ints_(234,153,128)) // ꙁ -> Ꙁ -- CYRILLIC CAPITAL LETTER ZEMLYA
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(234,153,131), Bry_.ints_(234,153,130)) // ꙃ -> Ꙃ -- CYRILLIC CAPITAL LETTER DZELO
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(234,153,133), Bry_.ints_(234,153,132)) // ꙅ -> Ꙅ -- CYRILLIC CAPITAL LETTER REVERSED DZE
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(234,153,135), Bry_.ints_(234,153,134)) // ꙇ -> Ꙇ -- CYRILLIC CAPITAL LETTER IOTA
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(234,153,137), Bry_.ints_(234,153,136)) // ꙉ -> Ꙉ -- CYRILLIC CAPITAL LETTER DJERV
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(234,153,139), Bry_.ints_(234,153,138)) // ꙋ -> Ꙋ -- CYRILLIC CAPITAL LETTER MONOGRAPH UK
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(234,153,141), Bry_.ints_(234,153,140)) // ꙍ -> Ꙍ -- CYRILLIC CAPITAL LETTER BROAD OMEGA
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(234,153,143), Bry_.ints_(234,153,142)) // ꙏ -> Ꙏ -- CYRILLIC CAPITAL LETTER NEUTRAL YER
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(234,153,145), Bry_.ints_(234,153,144)) // ꙑ -> Ꙑ -- CYRILLIC CAPITAL LETTER YERU WITH BACK YER
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(234,153,147), Bry_.ints_(234,153,146)) // ꙓ -> Ꙓ -- CYRILLIC CAPITAL LETTER IOTIFIED YAT
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(234,153,149), Bry_.ints_(234,153,148)) // ꙕ -> Ꙕ -- CYRILLIC CAPITAL LETTER REVERSED YU
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(234,153,151), Bry_.ints_(234,153,150)) // ꙗ -> Ꙗ -- CYRILLIC CAPITAL LETTER IOTIFIED A
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(234,153,153), Bry_.ints_(234,153,152)) // ꙙ -> Ꙙ -- CYRILLIC CAPITAL LETTER CLOSED LITTLE YUS
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(234,153,155), Bry_.ints_(234,153,154)) // ꙛ -> Ꙛ -- CYRILLIC CAPITAL LETTER BLENDED YUS
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(234,153,157), Bry_.ints_(234,153,156)) // ꙝ -> Ꙝ -- CYRILLIC CAPITAL LETTER IOTIFIED CLOSED LITTLE YUS
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(234,153,159), Bry_.ints_(234,153,158)) // ꙟ -> Ꙟ -- CYRILLIC CAPITAL LETTER YN
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(234,153,161), Bry_.ints_(234,153,160)) // ꙡ -> Ꙡ -- CYRILLIC CAPITAL LETTER REVERSED TSE
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(234,153,163), Bry_.ints_(234,153,162)) // ꙣ -> Ꙣ -- CYRILLIC CAPITAL LETTER SOFT DE
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(234,153,165), Bry_.ints_(234,153,164)) // ꙥ -> Ꙥ -- CYRILLIC CAPITAL LETTER SOFT EL
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(234,153,167), Bry_.ints_(234,153,166)) // ꙧ -> Ꙧ -- CYRILLIC CAPITAL LETTER SOFT EM
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(234,153,169), Bry_.ints_(234,153,168)) // ꙩ -> Ꙩ -- CYRILLIC CAPITAL LETTER MONOCULAR O
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(234,153,171), Bry_.ints_(234,153,170)) // ꙫ -> Ꙫ -- CYRILLIC CAPITAL LETTER BINOCULAR O
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(234,153,173), Bry_.ints_(234,153,172)) // ꙭ -> Ꙭ -- CYRILLIC CAPITAL LETTER DOUBLE MONOCULAR O
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(234,154,129), Bry_.ints_(234,154,128)) // ꚁ -> Ꚁ -- CYRILLIC CAPITAL LETTER DWE
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(234,154,131), Bry_.ints_(234,154,130)) // ꚃ -> Ꚃ -- CYRILLIC CAPITAL LETTER DZWE
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(234,154,133), Bry_.ints_(234,154,132)) // ꚅ -> Ꚅ -- CYRILLIC CAPITAL LETTER ZHWE
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(234,154,135), Bry_.ints_(234,154,134)) // ꚇ -> Ꚇ -- CYRILLIC CAPITAL LETTER CCHE
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(234,154,137), Bry_.ints_(234,154,136)) // ꚉ -> Ꚉ -- CYRILLIC CAPITAL LETTER DZZE
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(234,154,139), Bry_.ints_(234,154,138)) // ꚋ -> Ꚋ -- CYRILLIC CAPITAL LETTER TE WITH MIDDLE HOOK
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(234,154,141), Bry_.ints_(234,154,140)) // ꚍ -> Ꚍ -- CYRILLIC CAPITAL LETTER TWE
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(234,154,143), Bry_.ints_(234,154,142)) // ꚏ -> Ꚏ -- CYRILLIC CAPITAL LETTER TSWE
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(234,154,145), Bry_.ints_(234,154,144)) // ꚑ -> Ꚑ -- CYRILLIC CAPITAL LETTER TSSE
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(234,154,147), Bry_.ints_(234,154,146)) // ꚓ -> Ꚓ -- CYRILLIC CAPITAL LETTER TCHE
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(234,154,149), Bry_.ints_(234,154,148)) // ꚕ -> Ꚕ -- CYRILLIC CAPITAL LETTER HWE
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(234,154,151), Bry_.ints_(234,154,150)) // ꚗ -> Ꚗ -- CYRILLIC CAPITAL LETTER SHWE
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(234,156,163), Bry_.ints_(234,156,162)) // ꜣ -> Ꜣ -- LATIN CAPITAL LETTER EGYPTOLOGICAL ALEF
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(234,156,165), Bry_.ints_(234,156,164)) // ꜥ -> Ꜥ -- LATIN CAPITAL LETTER EGYPTOLOGICAL AIN
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(234,156,167), Bry_.ints_(234,156,166)) // ꜧ -> Ꜧ -- LATIN CAPITAL LETTER HENG
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(234,156,169), Bry_.ints_(234,156,168)) // ꜩ -> Ꜩ -- LATIN CAPITAL LETTER TZ
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(234,156,171), Bry_.ints_(234,156,170)) // ꜫ -> Ꜫ -- LATIN CAPITAL LETTER TRESILLO
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(234,156,173), Bry_.ints_(234,156,172)) // ꜭ -> Ꜭ -- LATIN CAPITAL LETTER CUATRILLO
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(234,156,175), Bry_.ints_(234,156,174)) // ꜯ -> Ꜯ -- LATIN CAPITAL LETTER CUATRILLO WITH COMMA
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(234,156,179), Bry_.ints_(234,156,178)) // ꜳ -> Ꜳ -- LATIN CAPITAL LETTER AA
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(234,156,181), Bry_.ints_(234,156,180)) // ꜵ -> Ꜵ -- LATIN CAPITAL LETTER AO
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(234,156,183), Bry_.ints_(234,156,182)) // ꜷ -> Ꜷ -- LATIN CAPITAL LETTER AU
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(234,156,185), Bry_.ints_(234,156,184)) // ꜹ -> Ꜹ -- LATIN CAPITAL LETTER AV
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(234,156,187), Bry_.ints_(234,156,186)) // ꜻ -> Ꜻ -- LATIN CAPITAL LETTER AV WITH HORIZONTAL BAR
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(234,156,189), Bry_.ints_(234,156,188)) // ꜽ -> Ꜽ -- LATIN CAPITAL LETTER AY
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(234,156,191), Bry_.ints_(234,156,190)) // ꜿ -> Ꜿ -- LATIN CAPITAL LETTER REVERSED C WITH DOT
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(234,157,129), Bry_.ints_(234,157,128)) // ꝁ -> Ꝁ -- LATIN CAPITAL LETTER K WITH STROKE
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(234,157,131), Bry_.ints_(234,157,130)) // ꝃ -> Ꝃ -- LATIN CAPITAL LETTER K WITH DIAGONAL STROKE
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(234,157,133), Bry_.ints_(234,157,132)) // ꝅ -> Ꝅ -- LATIN CAPITAL LETTER K WITH STROKE AND DIAGONAL STROKE
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(234,157,135), Bry_.ints_(234,157,134)) // ꝇ -> Ꝇ -- LATIN CAPITAL LETTER BROKEN L
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(234,157,137), Bry_.ints_(234,157,136)) // ꝉ -> Ꝉ -- LATIN CAPITAL LETTER L WITH HIGH STROKE
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(234,157,139), Bry_.ints_(234,157,138)) // ꝋ -> Ꝋ -- LATIN CAPITAL LETTER O WITH LONG STROKE OVERLAY
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(234,157,141), Bry_.ints_(234,157,140)) // ꝍ -> Ꝍ -- LATIN CAPITAL LETTER O WITH LOOP
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(234,157,143), Bry_.ints_(234,157,142)) // ꝏ -> Ꝏ -- LATIN CAPITAL LETTER OO
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(234,157,145), Bry_.ints_(234,157,144)) // ꝑ -> Ꝑ -- LATIN CAPITAL LETTER P WITH STROKE THROUGH DESCENDER
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(234,157,147), Bry_.ints_(234,157,146)) // ꝓ -> Ꝓ -- LATIN CAPITAL LETTER P WITH FLOURISH
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(234,157,149), Bry_.ints_(234,157,148)) // ꝕ -> Ꝕ -- LATIN CAPITAL LETTER P WITH SQUIRREL TAIL
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(234,157,151), Bry_.ints_(234,157,150)) // ꝗ -> Ꝗ -- LATIN CAPITAL LETTER Q WITH STROKE THROUGH DESCENDER
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(234,157,153), Bry_.ints_(234,157,152)) // ꝙ -> Ꝙ -- LATIN CAPITAL LETTER Q WITH DIAGONAL STROKE
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(234,157,155), Bry_.ints_(234,157,154)) // ꝛ -> Ꝛ -- LATIN CAPITAL LETTER R ROTUNDA
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(234,157,157), Bry_.ints_(234,157,156)) // ꝝ -> Ꝝ -- LATIN CAPITAL LETTER RUM ROTUNDA
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(234,157,159), Bry_.ints_(234,157,158)) // ꝟ -> Ꝟ -- LATIN CAPITAL LETTER V WITH DIAGONAL STROKE
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(234,157,161), Bry_.ints_(234,157,160)) // ꝡ -> Ꝡ -- LATIN CAPITAL LETTER VY
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(234,157,163), Bry_.ints_(234,157,162)) // ꝣ -> Ꝣ -- LATIN CAPITAL LETTER VISIGOTHIC Z
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(234,157,165), Bry_.ints_(234,157,164)) // ꝥ -> Ꝥ -- LATIN CAPITAL LETTER THORN WITH STROKE
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(234,157,167), Bry_.ints_(234,157,166)) // ꝧ -> Ꝧ -- LATIN CAPITAL LETTER THORN WITH STROKE THROUGH DESCENDER
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(234,157,169), Bry_.ints_(234,157,168)) // ꝩ -> Ꝩ -- LATIN CAPITAL LETTER VEND
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(234,157,171), Bry_.ints_(234,157,170)) // ꝫ -> Ꝫ -- LATIN CAPITAL LETTER ET
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(234,157,173), Bry_.ints_(234,157,172)) // ꝭ -> Ꝭ -- LATIN CAPITAL LETTER IS
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(234,157,175), Bry_.ints_(234,157,174)) // ꝯ -> Ꝯ -- LATIN CAPITAL LETTER CON
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(234,157,186), Bry_.ints_(234,157,185)) // ꝺ -> Ꝺ -- LATIN CAPITAL LETTER INSULAR D
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(234,157,188), Bry_.ints_(234,157,187)) // ꝼ -> Ꝼ -- LATIN CAPITAL LETTER INSULAR F
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(234,157,191), Bry_.ints_(234,157,190)) // ꝿ -> Ꝿ -- LATIN CAPITAL LETTER TURNED INSULAR G
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(234,158,129), Bry_.ints_(234,158,128)) // ꞁ -> Ꞁ -- LATIN CAPITAL LETTER TURNED L
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(234,158,131), Bry_.ints_(234,158,130)) // ꞃ -> Ꞃ -- LATIN CAPITAL LETTER INSULAR R
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(234,158,133), Bry_.ints_(234,158,132)) // ꞅ -> Ꞅ -- LATIN CAPITAL LETTER INSULAR S
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(234,158,135), Bry_.ints_(234,158,134)) // ꞇ -> Ꞇ -- LATIN CAPITAL LETTER INSULAR T
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(234,158,140), Bry_.ints_(234,158,139)) // ꞌ -> Ꞌ -- LATIN CAPITAL LETTER SALTILLO
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(234,158,145), Bry_.ints_(234,158,144)) // ꞑ -> Ꞑ -- LATIN CAPITAL LETTER N WITH DESCENDER
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(234,158,147), Bry_.ints_(234,158,146)) // ꞓ -> Ꞓ -- LATIN CAPITAL LETTER C WITH BAR
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(234,158,161), Bry_.ints_(234,158,160)) // ꞡ -> Ꞡ -- LATIN CAPITAL LETTER G WITH OBLIQUE STROKE
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(234,158,163), Bry_.ints_(234,158,162)) // ꞣ -> Ꞣ -- LATIN CAPITAL LETTER K WITH OBLIQUE STROKE
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(234,158,165), Bry_.ints_(234,158,164)) // ꞥ -> Ꞥ -- LATIN CAPITAL LETTER N WITH OBLIQUE STROKE
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(234,158,167), Bry_.ints_(234,158,166)) // ꞧ -> Ꞧ -- LATIN CAPITAL LETTER R WITH OBLIQUE STROKE
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(234,158,169), Bry_.ints_(234,158,168)) // ꞩ -> Ꞩ -- LATIN CAPITAL LETTER S WITH OBLIQUE STROKE
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(239,189,129), Bry_.ints_(239,188,161)) // a -> A -- FULLWIDTH LATIN CAPITAL LETTER A
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(239,189,130), Bry_.ints_(239,188,162)) // b -> B -- FULLWIDTH LATIN CAPITAL LETTER B
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(239,189,131), Bry_.ints_(239,188,163)) // c -> C -- FULLWIDTH LATIN CAPITAL LETTER C
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(239,189,132), Bry_.ints_(239,188,164)) // d -> D -- FULLWIDTH LATIN CAPITAL LETTER D
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(239,189,133), Bry_.ints_(239,188,165)) // e -> E -- FULLWIDTH LATIN CAPITAL LETTER E
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(239,189,134), Bry_.ints_(239,188,166)) // f -> F -- FULLWIDTH LATIN CAPITAL LETTER F
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(239,189,135), Bry_.ints_(239,188,167)) // g -> G -- FULLWIDTH LATIN CAPITAL LETTER G
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(239,189,136), Bry_.ints_(239,188,168)) // h -> H -- FULLWIDTH LATIN CAPITAL LETTER H
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(239,189,137), Bry_.ints_(239,188,169)) // i -> I -- FULLWIDTH LATIN CAPITAL LETTER I
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(239,189,138), Bry_.ints_(239,188,170)) // j -> J -- FULLWIDTH LATIN CAPITAL LETTER J
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(239,189,139), Bry_.ints_(239,188,171)) // k -> K -- FULLWIDTH LATIN CAPITAL LETTER K
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(239,189,140), Bry_.ints_(239,188,172)) // l -> L -- FULLWIDTH LATIN CAPITAL LETTER L
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(239,189,141), Bry_.ints_(239,188,173)) // m -> M -- FULLWIDTH LATIN CAPITAL LETTER M
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(239,189,142), Bry_.ints_(239,188,174)) // n -> N -- FULLWIDTH LATIN CAPITAL LETTER N
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(239,189,143), Bry_.ints_(239,188,175)) // o -> O -- FULLWIDTH LATIN CAPITAL LETTER O
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(239,189,144), Bry_.ints_(239,188,176)) // p -> P -- FULLWIDTH LATIN CAPITAL LETTER P
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(239,189,145), Bry_.ints_(239,188,177)) // q -> Q -- FULLWIDTH LATIN CAPITAL LETTER Q
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(239,189,146), Bry_.ints_(239,188,178)) // r -> R -- FULLWIDTH LATIN CAPITAL LETTER R
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(239,189,147), Bry_.ints_(239,188,179)) // s -> S -- FULLWIDTH LATIN CAPITAL LETTER S
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(239,189,148), Bry_.ints_(239,188,180)) // t -> T -- FULLWIDTH LATIN CAPITAL LETTER T
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(239,189,149), Bry_.ints_(239,188,181)) // u -> U -- FULLWIDTH LATIN CAPITAL LETTER U
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(239,189,150), Bry_.ints_(239,188,182)) // v -> V -- FULLWIDTH LATIN CAPITAL LETTER V
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(239,189,151), Bry_.ints_(239,188,183)) // w -> W -- FULLWIDTH LATIN CAPITAL LETTER W
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(239,189,152), Bry_.ints_(239,188,184)) // x -> X -- FULLWIDTH LATIN CAPITAL LETTER X
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(239,189,153), Bry_.ints_(239,188,185)) // y -> Y -- FULLWIDTH LATIN CAPITAL LETTER Y
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(239,189,154), Bry_.ints_(239,188,186)) // z -> Z -- FULLWIDTH LATIN CAPITAL LETTER Z
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(240,144,144,168), Bry_.ints_(240,144,144,128)) // 𐐨 -> 𐐀 -- DESERET CAPITAL LETTER LONG I
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(240,144,144,169), Bry_.ints_(240,144,144,129)) // 𐐩 -> 𐐁 -- DESERET CAPITAL LETTER LONG E
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(240,144,144,170), Bry_.ints_(240,144,144,130)) // 𐐪 -> 𐐂 -- DESERET CAPITAL LETTER LONG A
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(240,144,144,171), Bry_.ints_(240,144,144,131)) // 𐐫 -> 𐐃 -- DESERET CAPITAL LETTER LONG AH
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(240,144,144,172), Bry_.ints_(240,144,144,132)) // 𐐬 -> 𐐄 -- DESERET CAPITAL LETTER LONG O
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(240,144,144,173), Bry_.ints_(240,144,144,133)) // 𐐭 -> 𐐅 -- DESERET CAPITAL LETTER LONG OO
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(240,144,144,174), Bry_.ints_(240,144,144,134)) // 𐐮 -> 𐐆 -- DESERET CAPITAL LETTER SHORT I
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(240,144,144,175), Bry_.ints_(240,144,144,135)) // 𐐯 -> 𐐇 -- DESERET CAPITAL LETTER SHORT E
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(240,144,144,176), Bry_.ints_(240,144,144,136)) // 𐐰 -> 𐐈 -- DESERET CAPITAL LETTER SHORT A
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(240,144,144,177), Bry_.ints_(240,144,144,137)) // 𐐱 -> 𐐉 -- DESERET CAPITAL LETTER SHORT AH
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(240,144,144,178), Bry_.ints_(240,144,144,138)) // 𐐲 -> 𐐊 -- DESERET CAPITAL LETTER SHORT O
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(240,144,144,179), Bry_.ints_(240,144,144,139)) // 𐐳 -> 𐐋 -- DESERET CAPITAL LETTER SHORT OO
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(240,144,144,180), Bry_.ints_(240,144,144,140)) // 𐐴 -> 𐐌 -- DESERET CAPITAL LETTER AY
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(240,144,144,181), Bry_.ints_(240,144,144,141)) // 𐐵 -> 𐐍 -- DESERET CAPITAL LETTER OW
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(240,144,144,182), Bry_.ints_(240,144,144,142)) // 𐐶 -> 𐐎 -- DESERET CAPITAL LETTER WU
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(240,144,144,183), Bry_.ints_(240,144,144,143)) // 𐐷 -> 𐐏 -- DESERET CAPITAL LETTER YEE
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(240,144,144,184), Bry_.ints_(240,144,144,144)) // 𐐸 -> 𐐐 -- DESERET CAPITAL LETTER H
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(240,144,144,185), Bry_.ints_(240,144,144,145)) // 𐐹 -> 𐐑 -- DESERET CAPITAL LETTER PEE
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(240,144,144,186), Bry_.ints_(240,144,144,146)) // 𐐺 -> 𐐒 -- DESERET CAPITAL LETTER BEE
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(240,144,144,187), Bry_.ints_(240,144,144,147)) // 𐐻 -> 𐐓 -- DESERET CAPITAL LETTER TEE
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(240,144,144,188), Bry_.ints_(240,144,144,148)) // 𐐼 -> 𐐔 -- DESERET CAPITAL LETTER DEE
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(240,144,144,189), Bry_.ints_(240,144,144,149)) // 𐐽 -> 𐐕 -- DESERET CAPITAL LETTER CHEE
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(240,144,144,190), Bry_.ints_(240,144,144,150)) // 𐐾 -> 𐐖 -- DESERET CAPITAL LETTER JEE
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(240,144,144,191), Bry_.ints_(240,144,144,151)) // 𐐿 -> 𐐗 -- DESERET CAPITAL LETTER KAY
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(240,144,145,128), Bry_.ints_(240,144,144,152)) // 𐑀 -> 𐐘 -- DESERET CAPITAL LETTER GAY
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(240,144,145,129), Bry_.ints_(240,144,144,153)) // 𐑁 -> 𐐙 -- DESERET CAPITAL LETTER EF
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(240,144,145,130), Bry_.ints_(240,144,144,154)) // 𐑂 -> 𐐚 -- DESERET CAPITAL LETTER VEE
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(240,144,145,131), Bry_.ints_(240,144,144,155)) // 𐑃 -> 𐐛 -- DESERET CAPITAL LETTER ETH
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(240,144,145,132), Bry_.ints_(240,144,144,156)) // 𐑄 -> 𐐜 -- DESERET CAPITAL LETTER THEE
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(240,144,145,133), Bry_.ints_(240,144,144,157)) // 𐑅 -> 𐐝 -- DESERET CAPITAL LETTER ES
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(240,144,145,134), Bry_.ints_(240,144,144,158)) // 𐑆 -> 𐐞 -- DESERET CAPITAL LETTER ZEE
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(240,144,145,135), Bry_.ints_(240,144,144,159)) // 𐑇 -> 𐐟 -- DESERET CAPITAL LETTER ESH
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(240,144,145,136), Bry_.ints_(240,144,144,160)) // 𐑈 -> 𐐠 -- DESERET CAPITAL LETTER ZHEE
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(240,144,145,137), Bry_.ints_(240,144,144,161)) // 𐑉 -> 𐐡 -- DESERET CAPITAL LETTER ER
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(240,144,145,138), Bry_.ints_(240,144,144,162)) // 𐑊 -> 𐐢 -- DESERET CAPITAL LETTER EL
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(240,144,145,139), Bry_.ints_(240,144,144,163)) // 𐑋 -> 𐐣 -- DESERET CAPITAL LETTER EM
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(240,144,145,140), Bry_.ints_(240,144,144,164)) // 𐑌 -> 𐐤 -- DESERET CAPITAL LETTER EN
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(240,144,145,141), Bry_.ints_(240,144,144,165)) // 𐑍 -> 𐐥 -- DESERET CAPITAL LETTER ENG
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(240,144,145,142), Bry_.ints_(240,144,144,166)) // 𐑎 -> 𐐦 -- DESERET CAPITAL LETTER OI
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(240,144,145,143), Bry_.ints_(240,144,144,167)) // 𐑏 -> 𐐧 -- DESERET CAPITAL LETTER EW
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_upper, Bry_.ints_(196,177), Bry_.ints_(73)) // ı -> I -- LATIN SMALL LETTER DOTLESS I
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_upper, Bry_.ints_(197,191), Bry_.ints_(83)) // ſ -> S -- LATIN SMALL LETTER LONG S
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_upper, Bry_.ints_(205,133), Bry_.ints_(206,153)) // ͅ -> Ι -- GREEK NON-SPACING IOTA BELOW
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_upper, Bry_.ints_(206,185), Bry_.ints_(206,153)) // ι -> Ι -- GREEK SMALL LETTER IOTA
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_upper, Bry_.ints_(207,130), Bry_.ints_(206,163)) // ς -> Σ -- GREEK SMALL LETTER FINAL SIGMA
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_upper, Bry_.ints_(207,144), Bry_.ints_(206,146)) // ϐ -> Β -- GREEK SMALL LETTER CURLED BETA
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_upper, Bry_.ints_(207,145), Bry_.ints_(206,152)) // ϑ -> Θ -- GREEK SMALL LETTER SCRIPT THETA
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_upper, Bry_.ints_(207,149), Bry_.ints_(206,166)) // ϕ -> Φ -- GREEK SMALL LETTER SCRIPT PHI
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_upper, Bry_.ints_(207,150), Bry_.ints_(206,160)) // ϖ -> Π -- GREEK SMALL LETTER OMEGA PI
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_upper, Bry_.ints_(207,176), Bry_.ints_(206,154)) // ϰ -> Κ -- GREEK SMALL LETTER SCRIPT KAPPA
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_upper, Bry_.ints_(207,177), Bry_.ints_(206,161)) // ϱ -> Ρ -- GREEK SMALL LETTER TAILED RHO
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_upper, Bry_.ints_(207,181), Bry_.ints_(206,149)) // ϵ -> Ε -- GREEK LUNATE EPSILON SYMBOL
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_upper, Bry_.ints_(225,186,155), Bry_.ints_(225,185,160)) // ẛ -> Ṡ -- LATIN SMALL LETTER LONG S WITH DOT ABOVE
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_upper, Bry_.ints_(225,190,190), Bry_.ints_(206,153)) // ι -> Ι -- GREEK PROSGEGRAMMENI
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_lower, Bry_.ints_(196,176), Bry_.ints_(105)) // İ -> i -- LATIN CAPITAL LETTER I DOT
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_lower, Bry_.ints_(199,133), Bry_.ints_(199,134)) // Dž -> dž -- LATIN LETTER CAPITAL D SMALL Z HACEK
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_lower, Bry_.ints_(199,136), Bry_.ints_(199,137)) // Lj -> lj -- LATIN LETTER CAPITAL L SMALL J
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_lower, Bry_.ints_(199,139), Bry_.ints_(199,140)) // Nj -> nj -- LATIN LETTER CAPITAL N SMALL J
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_lower, Bry_.ints_(199,178), Bry_.ints_(199,179)) // Dz -> dz -- LATIN CAPITAL LETTER D WITH SMALL LETTER Z
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_lower, Bry_.ints_(206,153), Bry_.ints_(206,185)) // Ι -> ι -- GREEK CAPITAL LETTER IOTA; NOTE: reversed; PAGE:en.d:ἀρχιερεύς DATE:2014-09-02
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_lower, Bry_.ints_(207,180), Bry_.ints_(206,184)) // ϴ -> θ -- GREEK CAPITAL THETA SYMBOL
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_lower, Bry_.ints_(225,186,158), Bry_.ints_(195,159)) // ẞ -> ß -- LATIN CAPITAL LETTER SHARP S
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_lower, Bry_.ints_(226,132,166), Bry_.ints_(207,137)) // Ω -> ω -- OHM
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_lower, Bry_.ints_(226,132,170), Bry_.ints_(107)) // K -> k -- DEGREES KELVIN
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_lower, Bry_.ints_(226,132,171), Bry_.ints_(195,165)) // Å -> å -- ANGSTROM UNIT
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_upper, Bry_.ints_(194,181), Bry_.ints_(206,156)) // µ -> Μ -- MICRO SIGN; SWAPPED
-, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.ints_(206,188), Bry_.ints_(206,156)) // μ -> Μ -- GREEK CAPITAL LETTER MU; CONSOLIDATED
-//, Xol_case_itm_.new_(Xol_case_itm_.Tid_upper, Bry_.ints_(206,188), Bry_.ints_(206,156)) // μ -> Μ -- GREEK SMALL LETTER MU
+{ Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(97), Bry_.new_ints(65)) // a -> A -- LATIN CAPITAL LETTER A
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(98), Bry_.new_ints(66)) // b -> B -- LATIN CAPITAL LETTER B
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(99), Bry_.new_ints(67)) // c -> C -- LATIN CAPITAL LETTER C
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(100), Bry_.new_ints(68)) // d -> D -- LATIN CAPITAL LETTER D
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(101), Bry_.new_ints(69)) // e -> E -- LATIN CAPITAL LETTER E
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(102), Bry_.new_ints(70)) // f -> F -- LATIN CAPITAL LETTER F
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(103), Bry_.new_ints(71)) // g -> G -- LATIN CAPITAL LETTER G
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(104), Bry_.new_ints(72)) // h -> H -- LATIN CAPITAL LETTER H
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(105), Bry_.new_ints(73)) // i -> I -- LATIN CAPITAL LETTER I
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(106), Bry_.new_ints(74)) // j -> J -- LATIN CAPITAL LETTER J
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(107), Bry_.new_ints(75)) // k -> K -- LATIN CAPITAL LETTER K
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(108), Bry_.new_ints(76)) // l -> L -- LATIN CAPITAL LETTER L
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(109), Bry_.new_ints(77)) // m -> M -- LATIN CAPITAL LETTER M
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(110), Bry_.new_ints(78)) // n -> N -- LATIN CAPITAL LETTER N
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(111), Bry_.new_ints(79)) // o -> O -- LATIN CAPITAL LETTER O
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(112), Bry_.new_ints(80)) // p -> P -- LATIN CAPITAL LETTER P
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(113), Bry_.new_ints(81)) // q -> Q -- LATIN CAPITAL LETTER Q
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(114), Bry_.new_ints(82)) // r -> R -- LATIN CAPITAL LETTER R
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(115), Bry_.new_ints(83)) // s -> S -- LATIN CAPITAL LETTER S
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(116), Bry_.new_ints(84)) // t -> T -- LATIN CAPITAL LETTER T
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(117), Bry_.new_ints(85)) // u -> U -- LATIN CAPITAL LETTER U
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(118), Bry_.new_ints(86)) // v -> V -- LATIN CAPITAL LETTER V
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(119), Bry_.new_ints(87)) // w -> W -- LATIN CAPITAL LETTER W
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(120), Bry_.new_ints(88)) // x -> X -- LATIN CAPITAL LETTER X
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(121), Bry_.new_ints(89)) // y -> Y -- LATIN CAPITAL LETTER Y
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(122), Bry_.new_ints(90)) // z -> Z -- LATIN CAPITAL LETTER Z
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(195,160), Bry_.new_ints(195,128)) // à -> À -- LATIN CAPITAL LETTER A GRAVE
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(195,161), Bry_.new_ints(195,129)) // á -> Á -- LATIN CAPITAL LETTER A ACUTE
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(195,162), Bry_.new_ints(195,130)) // â -> Â -- LATIN CAPITAL LETTER A CIRCUMFLEX
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(195,163), Bry_.new_ints(195,131)) // ã -> Ã -- LATIN CAPITAL LETTER A TILDE
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(195,164), Bry_.new_ints(195,132)) // ä -> Ä -- LATIN CAPITAL LETTER A DIAERESIS
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(195,165), Bry_.new_ints(195,133)) // å -> Å -- LATIN CAPITAL LETTER A RING
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(195,166), Bry_.new_ints(195,134)) // æ -> Æ -- LATIN CAPITAL LETTER A E
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(195,167), Bry_.new_ints(195,135)) // ç -> Ç -- LATIN CAPITAL LETTER C CEDILLA
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(195,168), Bry_.new_ints(195,136)) // è -> È -- LATIN CAPITAL LETTER E GRAVE
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(195,169), Bry_.new_ints(195,137)) // é -> É -- LATIN CAPITAL LETTER E ACUTE
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(195,170), Bry_.new_ints(195,138)) // ê -> Ê -- LATIN CAPITAL LETTER E CIRCUMFLEX
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(195,171), Bry_.new_ints(195,139)) // ë -> Ë -- LATIN CAPITAL LETTER E DIAERESIS
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(195,172), Bry_.new_ints(195,140)) // ì -> Ì -- LATIN CAPITAL LETTER I GRAVE
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(195,173), Bry_.new_ints(195,141)) // í -> Í -- LATIN CAPITAL LETTER I ACUTE
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(195,174), Bry_.new_ints(195,142)) // î -> Î -- LATIN CAPITAL LETTER I CIRCUMFLEX
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(195,175), Bry_.new_ints(195,143)) // ï -> Ï -- LATIN CAPITAL LETTER I DIAERESIS
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(195,176), Bry_.new_ints(195,144)) // ð -> Ð -- LATIN CAPITAL LETTER ETH
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(195,177), Bry_.new_ints(195,145)) // ñ -> Ñ -- LATIN CAPITAL LETTER N TILDE
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(195,178), Bry_.new_ints(195,146)) // ò -> Ò -- LATIN CAPITAL LETTER O GRAVE
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(195,179), Bry_.new_ints(195,147)) // ó -> Ó -- LATIN CAPITAL LETTER O ACUTE
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(195,180), Bry_.new_ints(195,148)) // ô -> Ô -- LATIN CAPITAL LETTER O CIRCUMFLEX
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(195,181), Bry_.new_ints(195,149)) // õ -> Õ -- LATIN CAPITAL LETTER O TILDE
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(195,182), Bry_.new_ints(195,150)) // ö -> Ö -- LATIN CAPITAL LETTER O DIAERESIS
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(195,184), Bry_.new_ints(195,152)) // ø -> Ø -- LATIN CAPITAL LETTER O SLASH
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(195,185), Bry_.new_ints(195,153)) // ù -> Ù -- LATIN CAPITAL LETTER U GRAVE
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(195,186), Bry_.new_ints(195,154)) // ú -> Ú -- LATIN CAPITAL LETTER U ACUTE
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(195,187), Bry_.new_ints(195,155)) // û -> Û -- LATIN CAPITAL LETTER U CIRCUMFLEX
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(195,188), Bry_.new_ints(195,156)) // ü -> Ü -- LATIN CAPITAL LETTER U DIAERESIS
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(195,189), Bry_.new_ints(195,157)) // ý -> Ý -- LATIN CAPITAL LETTER Y ACUTE
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(195,190), Bry_.new_ints(195,158)) // þ -> Þ -- LATIN CAPITAL LETTER THORN
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(195,191), Bry_.new_ints(197,184)) // ÿ -> Ÿ -- LATIN SMALL LETTER Y DIAERESIS
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(196,129), Bry_.new_ints(196,128)) // ā -> Ā -- LATIN CAPITAL LETTER A MACRON
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(196,131), Bry_.new_ints(196,130)) // ă -> Ă -- LATIN CAPITAL LETTER A BREVE
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(196,133), Bry_.new_ints(196,132)) // ą -> Ą -- LATIN CAPITAL LETTER A OGONEK
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(196,135), Bry_.new_ints(196,134)) // ć -> Ć -- LATIN CAPITAL LETTER C ACUTE
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(196,137), Bry_.new_ints(196,136)) // ĉ -> Ĉ -- LATIN CAPITAL LETTER C CIRCUMFLEX
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(196,139), Bry_.new_ints(196,138)) // ċ -> Ċ -- LATIN CAPITAL LETTER C DOT
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(196,141), Bry_.new_ints(196,140)) // č -> Č -- LATIN CAPITAL LETTER C HACEK
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(196,143), Bry_.new_ints(196,142)) // ď -> Ď -- LATIN CAPITAL LETTER D HACEK
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(196,145), Bry_.new_ints(196,144)) // đ -> Đ -- LATIN CAPITAL LETTER D BAR
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(196,147), Bry_.new_ints(196,146)) // ē -> Ē -- LATIN CAPITAL LETTER E MACRON
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(196,149), Bry_.new_ints(196,148)) // ĕ -> Ĕ -- LATIN CAPITAL LETTER E BREVE
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(196,151), Bry_.new_ints(196,150)) // ė -> Ė -- LATIN CAPITAL LETTER E DOT
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(196,153), Bry_.new_ints(196,152)) // ę -> Ę -- LATIN CAPITAL LETTER E OGONEK
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(196,155), Bry_.new_ints(196,154)) // ě -> Ě -- LATIN CAPITAL LETTER E HACEK
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(196,157), Bry_.new_ints(196,156)) // ĝ -> Ĝ -- LATIN CAPITAL LETTER G CIRCUMFLEX
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(196,159), Bry_.new_ints(196,158)) // ğ -> Ğ -- LATIN CAPITAL LETTER G BREVE
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(196,161), Bry_.new_ints(196,160)) // ġ -> Ġ -- LATIN CAPITAL LETTER G DOT
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(196,163), Bry_.new_ints(196,162)) // ģ -> Ģ -- LATIN CAPITAL LETTER G CEDILLA
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(196,165), Bry_.new_ints(196,164)) // ĥ -> Ĥ -- LATIN CAPITAL LETTER H CIRCUMFLEX
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(196,167), Bry_.new_ints(196,166)) // ħ -> Ħ -- LATIN CAPITAL LETTER H BAR
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(196,169), Bry_.new_ints(196,168)) // ĩ -> Ĩ -- LATIN CAPITAL LETTER I TILDE
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(196,171), Bry_.new_ints(196,170)) // ī -> Ī -- LATIN CAPITAL LETTER I MACRON
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(196,173), Bry_.new_ints(196,172)) // ĭ -> Ĭ -- LATIN CAPITAL LETTER I BREVE
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(196,175), Bry_.new_ints(196,174)) // į -> Į -- LATIN CAPITAL LETTER I OGONEK
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(196,179), Bry_.new_ints(196,178)) // ij -> IJ -- LATIN CAPITAL LETTER I J
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(196,181), Bry_.new_ints(196,180)) // ĵ -> Ĵ -- LATIN CAPITAL LETTER J CIRCUMFLEX
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(196,183), Bry_.new_ints(196,182)) // ķ -> Ķ -- LATIN CAPITAL LETTER K CEDILLA
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(196,186), Bry_.new_ints(196,185)) // ĺ -> Ĺ -- LATIN CAPITAL LETTER L ACUTE
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(196,188), Bry_.new_ints(196,187)) // ļ -> Ļ -- LATIN CAPITAL LETTER L CEDILLA
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(196,190), Bry_.new_ints(196,189)) // ľ -> Ľ -- LATIN CAPITAL LETTER L HACEK
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(197,128), Bry_.new_ints(196,191)) // ŀ -> Ŀ -- LATIN CAPITAL LETTER L WITH MIDDLE DOT
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(197,130), Bry_.new_ints(197,129)) // ł -> Ł -- LATIN CAPITAL LETTER L SLASH
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(197,132), Bry_.new_ints(197,131)) // ń -> Ń -- LATIN CAPITAL LETTER N ACUTE
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(197,134), Bry_.new_ints(197,133)) // ņ -> Ņ -- LATIN CAPITAL LETTER N CEDILLA
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(197,136), Bry_.new_ints(197,135)) // ň -> Ň -- LATIN CAPITAL LETTER N HACEK
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(197,139), Bry_.new_ints(197,138)) // ŋ -> Ŋ -- LATIN CAPITAL LETTER ENG
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(197,141), Bry_.new_ints(197,140)) // ō -> Ō -- LATIN CAPITAL LETTER O MACRON
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(197,143), Bry_.new_ints(197,142)) // ŏ -> Ŏ -- LATIN CAPITAL LETTER O BREVE
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(197,145), Bry_.new_ints(197,144)) // ő -> Ő -- LATIN CAPITAL LETTER O DOUBLE ACUTE
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(197,147), Bry_.new_ints(197,146)) // œ -> Œ -- LATIN CAPITAL LETTER O E
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(197,149), Bry_.new_ints(197,148)) // ŕ -> Ŕ -- LATIN CAPITAL LETTER R ACUTE
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(197,151), Bry_.new_ints(197,150)) // ŗ -> Ŗ -- LATIN CAPITAL LETTER R CEDILLA
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(197,153), Bry_.new_ints(197,152)) // ř -> Ř -- LATIN CAPITAL LETTER R HACEK
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(197,155), Bry_.new_ints(197,154)) // ś -> Ś -- LATIN CAPITAL LETTER S ACUTE
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(197,157), Bry_.new_ints(197,156)) // ŝ -> Ŝ -- LATIN CAPITAL LETTER S CIRCUMFLEX
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(197,159), Bry_.new_ints(197,158)) // ş -> Ş -- LATIN CAPITAL LETTER S CEDILLA
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(197,161), Bry_.new_ints(197,160)) // š -> Š -- LATIN CAPITAL LETTER S HACEK
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(197,163), Bry_.new_ints(197,162)) // ţ -> Ţ -- LATIN CAPITAL LETTER T CEDILLA
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(197,165), Bry_.new_ints(197,164)) // ť -> Ť -- LATIN CAPITAL LETTER T HACEK
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(197,167), Bry_.new_ints(197,166)) // ŧ -> Ŧ -- LATIN CAPITAL LETTER T BAR
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(197,169), Bry_.new_ints(197,168)) // ũ -> Ũ -- LATIN CAPITAL LETTER U TILDE
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(197,171), Bry_.new_ints(197,170)) // ū -> Ū -- LATIN CAPITAL LETTER U MACRON
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(197,173), Bry_.new_ints(197,172)) // ŭ -> Ŭ -- LATIN CAPITAL LETTER U BREVE
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(197,175), Bry_.new_ints(197,174)) // ů -> Ů -- LATIN CAPITAL LETTER U RING
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(197,177), Bry_.new_ints(197,176)) // ű -> Ű -- LATIN CAPITAL LETTER U DOUBLE ACUTE
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(197,179), Bry_.new_ints(197,178)) // ų -> Ų -- LATIN CAPITAL LETTER U OGONEK
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(197,181), Bry_.new_ints(197,180)) // ŵ -> Ŵ -- LATIN CAPITAL LETTER W CIRCUMFLEX
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(197,183), Bry_.new_ints(197,182)) // ŷ -> Ŷ -- LATIN CAPITAL LETTER Y CIRCUMFLEX
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(197,186), Bry_.new_ints(197,185)) // ź -> Ź -- LATIN CAPITAL LETTER Z ACUTE
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(197,188), Bry_.new_ints(197,187)) // ż -> Ż -- LATIN CAPITAL LETTER Z DOT
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(197,190), Bry_.new_ints(197,189)) // ž -> Ž -- LATIN CAPITAL LETTER Z HACEK
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(198,128), Bry_.new_ints(201,131)) // ƀ -> Ƀ -- LATIN SMALL LETTER B BAR
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(201,147), Bry_.new_ints(198,129)) // ɓ -> Ɓ -- LATIN CAPITAL LETTER B HOOK
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(198,131), Bry_.new_ints(198,130)) // ƃ -> Ƃ -- LATIN CAPITAL LETTER B TOPBAR
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(198,133), Bry_.new_ints(198,132)) // ƅ -> Ƅ -- LATIN CAPITAL LETTER TONE SIX
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(201,148), Bry_.new_ints(198,134)) // ɔ -> Ɔ -- LATIN CAPITAL LETTER OPEN O
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(198,136), Bry_.new_ints(198,135)) // ƈ -> Ƈ -- LATIN CAPITAL LETTER C HOOK
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(201,150), Bry_.new_ints(198,137)) // ɖ -> Ɖ -- LATIN CAPITAL LETTER AFRICAN D
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(201,151), Bry_.new_ints(198,138)) // ɗ -> Ɗ -- LATIN CAPITAL LETTER D HOOK
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(198,140), Bry_.new_ints(198,139)) // ƌ -> Ƌ -- LATIN CAPITAL LETTER D TOPBAR
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(199,157), Bry_.new_ints(198,142)) // ǝ -> Ǝ -- LATIN CAPITAL LETTER TURNED E
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(201,153), Bry_.new_ints(198,143)) // ə -> Ə -- LATIN CAPITAL LETTER SCHWA
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(201,155), Bry_.new_ints(198,144)) // ɛ -> Ɛ -- LATIN CAPITAL LETTER EPSILON
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(198,146), Bry_.new_ints(198,145)) // ƒ -> Ƒ -- LATIN CAPITAL LETTER F HOOK
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(201,160), Bry_.new_ints(198,147)) // ɠ -> Ɠ -- LATIN CAPITAL LETTER G HOOK
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(201,163), Bry_.new_ints(198,148)) // ɣ -> Ɣ -- LATIN CAPITAL LETTER GAMMA
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(198,149), Bry_.new_ints(199,182)) // ƕ -> Ƕ -- LATIN SMALL LETTER H V
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(201,169), Bry_.new_ints(198,150)) // ɩ -> Ɩ -- LATIN CAPITAL LETTER IOTA
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(201,168), Bry_.new_ints(198,151)) // ɨ -> Ɨ -- LATIN CAPITAL LETTER BARRED I
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(198,153), Bry_.new_ints(198,152)) // ƙ -> Ƙ -- LATIN CAPITAL LETTER K HOOK
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(198,154), Bry_.new_ints(200,189)) // ƚ -> Ƚ -- LATIN SMALL LETTER BARRED L
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(201,175), Bry_.new_ints(198,156)) // ɯ -> Ɯ -- LATIN CAPITAL LETTER TURNED M
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(201,178), Bry_.new_ints(198,157)) // ɲ -> Ɲ -- LATIN CAPITAL LETTER N HOOK
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(198,158), Bry_.new_ints(200,160)) // ƞ -> Ƞ -- LATIN SMALL LETTER N WITH LONG RIGHT LEG
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(201,181), Bry_.new_ints(198,159)) // ɵ -> Ɵ -- LATIN CAPITAL LETTER BARRED O
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(198,161), Bry_.new_ints(198,160)) // ơ -> Ơ -- LATIN CAPITAL LETTER O HORN
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(198,163), Bry_.new_ints(198,162)) // ƣ -> Ƣ -- LATIN CAPITAL LETTER O I
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(198,165), Bry_.new_ints(198,164)) // ƥ -> Ƥ -- LATIN CAPITAL LETTER P HOOK
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(202,128), Bry_.new_ints(198,166)) // ʀ -> Ʀ -- LATIN LETTER Y R
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(198,168), Bry_.new_ints(198,167)) // ƨ -> Ƨ -- LATIN CAPITAL LETTER TONE TWO
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(202,131), Bry_.new_ints(198,169)) // ʃ -> Ʃ -- LATIN CAPITAL LETTER ESH
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(198,173), Bry_.new_ints(198,172)) // ƭ -> Ƭ -- LATIN CAPITAL LETTER T HOOK
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(202,136), Bry_.new_ints(198,174)) // ʈ -> Ʈ -- LATIN CAPITAL LETTER T RETROFLEX HOOK
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(198,176), Bry_.new_ints(198,175)) // ư -> Ư -- LATIN CAPITAL LETTER U HORN
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(202,138), Bry_.new_ints(198,177)) // ʊ -> Ʊ -- LATIN CAPITAL LETTER UPSILON
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(202,139), Bry_.new_ints(198,178)) // ʋ -> Ʋ -- LATIN CAPITAL LETTER SCRIPT V
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(198,180), Bry_.new_ints(198,179)) // ƴ -> Ƴ -- LATIN CAPITAL LETTER Y HOOK
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(198,182), Bry_.new_ints(198,181)) // ƶ -> Ƶ -- LATIN CAPITAL LETTER Z BAR
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(202,146), Bry_.new_ints(198,183)) // ʒ -> Ʒ -- LATIN CAPITAL LETTER YOGH
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(198,185), Bry_.new_ints(198,184)) // ƹ -> Ƹ -- LATIN CAPITAL LETTER REVERSED YOGH
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(198,189), Bry_.new_ints(198,188)) // ƽ -> Ƽ -- LATIN CAPITAL LETTER TONE FIVE
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(198,191), Bry_.new_ints(199,183)) // ƿ -> Ƿ -- LATIN LETTER WYNN
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(199,134), Bry_.new_ints(199,132)) // dž -> DŽ -- LATIN CAPITAL LETTER D Z HACEK
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(199,137), Bry_.new_ints(199,135)) // lj -> LJ -- LATIN CAPITAL LETTER L J
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(199,140), Bry_.new_ints(199,138)) // nj -> NJ -- LATIN CAPITAL LETTER N J
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(199,142), Bry_.new_ints(199,141)) // ǎ -> Ǎ -- LATIN CAPITAL LETTER A HACEK
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(199,144), Bry_.new_ints(199,143)) // ǐ -> Ǐ -- LATIN CAPITAL LETTER I HACEK
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(199,146), Bry_.new_ints(199,145)) // ǒ -> Ǒ -- LATIN CAPITAL LETTER O HACEK
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(199,148), Bry_.new_ints(199,147)) // ǔ -> Ǔ -- LATIN CAPITAL LETTER U HACEK
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(199,150), Bry_.new_ints(199,149)) // ǖ -> Ǖ -- LATIN CAPITAL LETTER U DIAERESIS MACRON
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(199,152), Bry_.new_ints(199,151)) // ǘ -> Ǘ -- LATIN CAPITAL LETTER U DIAERESIS ACUTE
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(199,154), Bry_.new_ints(199,153)) // ǚ -> Ǚ -- LATIN CAPITAL LETTER U DIAERESIS HACEK
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(199,156), Bry_.new_ints(199,155)) // ǜ -> Ǜ -- LATIN CAPITAL LETTER U DIAERESIS GRAVE
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(199,159), Bry_.new_ints(199,158)) // ǟ -> Ǟ -- LATIN CAPITAL LETTER A DIAERESIS MACRON
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(199,161), Bry_.new_ints(199,160)) // ǡ -> Ǡ -- LATIN CAPITAL LETTER A DOT MACRON
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(199,163), Bry_.new_ints(199,162)) // ǣ -> Ǣ -- LATIN CAPITAL LETTER A E MACRON
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(199,165), Bry_.new_ints(199,164)) // ǥ -> Ǥ -- LATIN CAPITAL LETTER G BAR
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(199,167), Bry_.new_ints(199,166)) // ǧ -> Ǧ -- LATIN CAPITAL LETTER G HACEK
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(199,169), Bry_.new_ints(199,168)) // ǩ -> Ǩ -- LATIN CAPITAL LETTER K HACEK
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(199,171), Bry_.new_ints(199,170)) // ǫ -> Ǫ -- LATIN CAPITAL LETTER O OGONEK
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(199,173), Bry_.new_ints(199,172)) // ǭ -> Ǭ -- LATIN CAPITAL LETTER O OGONEK MACRON
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(199,175), Bry_.new_ints(199,174)) // ǯ -> Ǯ -- LATIN CAPITAL LETTER YOGH HACEK
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(199,179), Bry_.new_ints(199,177)) // dz -> DZ -- LATIN CAPITAL LETTER DZ
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(199,181), Bry_.new_ints(199,180)) // ǵ -> Ǵ -- LATIN CAPITAL LETTER G WITH ACUTE
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(199,185), Bry_.new_ints(199,184)) // ǹ -> Ǹ -- LATIN CAPITAL LETTER N WITH GRAVE
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(199,187), Bry_.new_ints(199,186)) // ǻ -> Ǻ -- LATIN CAPITAL LETTER A WITH RING ABOVE AND ACUTE
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(199,189), Bry_.new_ints(199,188)) // ǽ -> Ǽ -- LATIN CAPITAL LETTER AE WITH ACUTE
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(199,191), Bry_.new_ints(199,190)) // ǿ -> Ǿ -- LATIN CAPITAL LETTER O WITH STROKE AND ACUTE
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(200,129), Bry_.new_ints(200,128)) // ȁ -> Ȁ -- LATIN CAPITAL LETTER A WITH DOUBLE GRAVE
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(200,131), Bry_.new_ints(200,130)) // ȃ -> Ȃ -- LATIN CAPITAL LETTER A WITH INVERTED BREVE
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(200,133), Bry_.new_ints(200,132)) // ȅ -> Ȅ -- LATIN CAPITAL LETTER E WITH DOUBLE GRAVE
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(200,135), Bry_.new_ints(200,134)) // ȇ -> Ȇ -- LATIN CAPITAL LETTER E WITH INVERTED BREVE
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(200,137), Bry_.new_ints(200,136)) // ȉ -> Ȉ -- LATIN CAPITAL LETTER I WITH DOUBLE GRAVE
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(200,139), Bry_.new_ints(200,138)) // ȋ -> Ȋ -- LATIN CAPITAL LETTER I WITH INVERTED BREVE
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(200,141), Bry_.new_ints(200,140)) // ȍ -> Ȍ -- LATIN CAPITAL LETTER O WITH DOUBLE GRAVE
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(200,143), Bry_.new_ints(200,142)) // ȏ -> Ȏ -- LATIN CAPITAL LETTER O WITH INVERTED BREVE
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(200,145), Bry_.new_ints(200,144)) // ȑ -> Ȑ -- LATIN CAPITAL LETTER R WITH DOUBLE GRAVE
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(200,147), Bry_.new_ints(200,146)) // ȓ -> Ȓ -- LATIN CAPITAL LETTER R WITH INVERTED BREVE
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(200,149), Bry_.new_ints(200,148)) // ȕ -> Ȕ -- LATIN CAPITAL LETTER U WITH DOUBLE GRAVE
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(200,151), Bry_.new_ints(200,150)) // ȗ -> Ȗ -- LATIN CAPITAL LETTER U WITH INVERTED BREVE
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(200,153), Bry_.new_ints(200,152)) // ș -> Ș -- LATIN CAPITAL LETTER S WITH COMMA BELOW
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(200,155), Bry_.new_ints(200,154)) // ț -> Ț -- LATIN CAPITAL LETTER T WITH COMMA BELOW
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(200,157), Bry_.new_ints(200,156)) // ȝ -> Ȝ -- LATIN CAPITAL LETTER YOGH
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(200,159), Bry_.new_ints(200,158)) // ȟ -> Ȟ -- LATIN CAPITAL LETTER H WITH CARON
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(200,163), Bry_.new_ints(200,162)) // ȣ -> Ȣ -- LATIN CAPITAL LETTER OU
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(200,165), Bry_.new_ints(200,164)) // ȥ -> Ȥ -- LATIN CAPITAL LETTER Z WITH HOOK
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(200,167), Bry_.new_ints(200,166)) // ȧ -> Ȧ -- LATIN CAPITAL LETTER A WITH DOT ABOVE
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(200,169), Bry_.new_ints(200,168)) // ȩ -> Ȩ -- LATIN CAPITAL LETTER E WITH CEDILLA
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(200,171), Bry_.new_ints(200,170)) // ȫ -> Ȫ -- LATIN CAPITAL LETTER O WITH DIAERESIS AND MACRON
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(200,173), Bry_.new_ints(200,172)) // ȭ -> Ȭ -- LATIN CAPITAL LETTER O WITH TILDE AND MACRON
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(200,175), Bry_.new_ints(200,174)) // ȯ -> Ȯ -- LATIN CAPITAL LETTER O WITH DOT ABOVE
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(200,177), Bry_.new_ints(200,176)) // ȱ -> Ȱ -- LATIN CAPITAL LETTER O WITH DOT ABOVE AND MACRON
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(200,179), Bry_.new_ints(200,178)) // ȳ -> Ȳ -- LATIN CAPITAL LETTER Y WITH MACRON
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(226,177,165), Bry_.new_ints(200,186)) // ⱥ -> Ⱥ -- LATIN CAPITAL LETTER A WITH STROKE
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(200,188), Bry_.new_ints(200,187)) // ȼ -> Ȼ -- LATIN CAPITAL LETTER C WITH STROKE
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(226,177,166), Bry_.new_ints(200,190)) // ⱦ -> Ⱦ -- LATIN CAPITAL LETTER T WITH DIAGONAL STROKE
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(200,191), Bry_.new_ints(226,177,190)) // ȿ -> Ȿ -- LATIN SMALL LETTER S WITH SWASH TAIL
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(201,128), Bry_.new_ints(226,177,191)) // ɀ -> Ɀ -- LATIN SMALL LETTER Z WITH SWASH TAIL
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(201,130), Bry_.new_ints(201,129)) // ɂ -> Ɂ -- LATIN CAPITAL LETTER GLOTTAL STOP
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(202,137), Bry_.new_ints(201,132)) // ʉ -> Ʉ -- LATIN CAPITAL LETTER U BAR
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(202,140), Bry_.new_ints(201,133)) // ʌ -> Ʌ -- LATIN CAPITAL LETTER TURNED V
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(201,135), Bry_.new_ints(201,134)) // ɇ -> Ɇ -- LATIN CAPITAL LETTER E WITH STROKE
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(201,137), Bry_.new_ints(201,136)) // ɉ -> Ɉ -- LATIN CAPITAL LETTER J WITH STROKE
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(201,139), Bry_.new_ints(201,138)) // ɋ -> Ɋ -- LATIN CAPITAL LETTER SMALL Q WITH HOOK TAIL
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(201,141), Bry_.new_ints(201,140)) // ɍ -> Ɍ -- LATIN CAPITAL LETTER R WITH STROKE
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(201,143), Bry_.new_ints(201,142)) // ɏ -> Ɏ -- LATIN CAPITAL LETTER Y WITH STROKE
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(201,144), Bry_.new_ints(226,177,175)) // ɐ -> Ɐ -- LATIN SMALL LETTER TURNED A
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(201,145), Bry_.new_ints(226,177,173)) // ɑ -> Ɑ -- LATIN SMALL LETTER SCRIPT A
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(201,146), Bry_.new_ints(226,177,176)) // ɒ -> Ɒ -- LATIN SMALL LETTER TURNED SCRIPT A
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(201,165), Bry_.new_ints(234,158,141)) // ɥ -> Ɥ -- LATIN SMALL LETTER TURNED H
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(201,166), Bry_.new_ints(234,158,170)) // ɦ -> Ɦ -- LATIN SMALL LETTER H HOOK
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(201,171), Bry_.new_ints(226,177,162)) // ɫ -> Ɫ -- LATIN SMALL LETTER L WITH MIDDLE TILDE
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(201,177), Bry_.new_ints(226,177,174)) // ɱ -> Ɱ -- LATIN SMALL LETTER M HOOK
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(201,189), Bry_.new_ints(226,177,164)) // ɽ -> Ɽ -- LATIN SMALL LETTER R HOOK
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(205,177), Bry_.new_ints(205,176)) // ͱ -> Ͱ -- GREEK CAPITAL LETTER HETA
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(205,179), Bry_.new_ints(205,178)) // ͳ -> Ͳ -- GREEK CAPITAL LETTER ARCHAIC SAMPI
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(205,183), Bry_.new_ints(205,182)) // ͷ -> Ͷ -- GREEK CAPITAL LETTER PAMPHYLIAN DIGAMMA
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(205,187), Bry_.new_ints(207,189)) // ͻ -> Ͻ -- GREEK SMALL REVERSED LUNATE SIGMA SYMBOL
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(205,188), Bry_.new_ints(207,190)) // ͼ -> Ͼ -- GREEK SMALL DOTTED LUNATE SIGMA SYMBOL
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(205,189), Bry_.new_ints(207,191)) // ͽ -> Ͽ -- GREEK SMALL REVERSED DOTTED LUNATE SIGMA SYMBOL
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(206,172), Bry_.new_ints(206,134)) // ά -> Ά -- GREEK CAPITAL LETTER ALPHA TONOS
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(206,173), Bry_.new_ints(206,136)) // έ -> Έ -- GREEK CAPITAL LETTER EPSILON TONOS
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(206,174), Bry_.new_ints(206,137)) // ή -> Ή -- GREEK CAPITAL LETTER ETA TONOS
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(206,175), Bry_.new_ints(206,138)) // ί -> Ί -- GREEK CAPITAL LETTER IOTA TONOS
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(207,140), Bry_.new_ints(206,140)) // ό -> Ό -- GREEK CAPITAL LETTER OMICRON TONOS
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(207,141), Bry_.new_ints(206,142)) // ύ -> Ύ -- GREEK CAPITAL LETTER UPSILON TONOS
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(207,142), Bry_.new_ints(206,143)) // ώ -> Ώ -- GREEK CAPITAL LETTER OMEGA TONOS
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(206,177), Bry_.new_ints(206,145)) // α -> Α -- GREEK CAPITAL LETTER ALPHA
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(206,178), Bry_.new_ints(206,146)) // β -> Β -- GREEK CAPITAL LETTER BETA
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(206,179), Bry_.new_ints(206,147)) // γ -> Γ -- GREEK CAPITAL LETTER GAMMA
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(206,180), Bry_.new_ints(206,148)) // δ -> Δ -- GREEK CAPITAL LETTER DELTA
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(206,181), Bry_.new_ints(206,149)) // ε -> Ε -- GREEK CAPITAL LETTER EPSILON
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(206,182), Bry_.new_ints(206,150)) // ζ -> Ζ -- GREEK CAPITAL LETTER ZETA
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(206,183), Bry_.new_ints(206,151)) // η -> Η -- GREEK CAPITAL LETTER ETA
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(206,184), Bry_.new_ints(206,152)) // θ -> Θ -- GREEK CAPITAL LETTER THETA
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(206,186), Bry_.new_ints(206,154)) // κ -> Κ -- GREEK CAPITAL LETTER KAPPA
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(206,187), Bry_.new_ints(206,155)) // λ -> Λ -- GREEK CAPITAL LETTER LAMBDA
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(206,189), Bry_.new_ints(206,157)) // ν -> Ν -- GREEK CAPITAL LETTER NU
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(206,190), Bry_.new_ints(206,158)) // ξ -> Ξ -- GREEK CAPITAL LETTER XI
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(206,191), Bry_.new_ints(206,159)) // ο -> Ο -- GREEK CAPITAL LETTER OMICRON
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(207,128), Bry_.new_ints(206,160)) // π -> Π -- GREEK CAPITAL LETTER PI
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(207,129), Bry_.new_ints(206,161)) // ρ -> Ρ -- GREEK CAPITAL LETTER RHO
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(207,131), Bry_.new_ints(206,163)) // σ -> Σ -- GREEK CAPITAL LETTER SIGMA
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(207,132), Bry_.new_ints(206,164)) // τ -> Τ -- GREEK CAPITAL LETTER TAU
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(207,133), Bry_.new_ints(206,165)) // υ -> Υ -- GREEK CAPITAL LETTER UPSILON
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(207,134), Bry_.new_ints(206,166)) // φ -> Φ -- GREEK CAPITAL LETTER PHI
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(207,135), Bry_.new_ints(206,167)) // χ -> Χ -- GREEK CAPITAL LETTER CHI
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(207,136), Bry_.new_ints(206,168)) // ψ -> Ψ -- GREEK CAPITAL LETTER PSI
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(207,137), Bry_.new_ints(206,169)) // ω -> Ω -- GREEK CAPITAL LETTER OMEGA
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(207,138), Bry_.new_ints(206,170)) // ϊ -> Ϊ -- GREEK CAPITAL LETTER IOTA DIAERESIS
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(207,139), Bry_.new_ints(206,171)) // ϋ -> Ϋ -- GREEK CAPITAL LETTER UPSILON DIAERESIS
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(207,151), Bry_.new_ints(207,143)) // ϗ -> Ϗ -- GREEK CAPITAL KAI SYMBOL
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(207,153), Bry_.new_ints(207,152)) // ϙ -> Ϙ -- GREEK LETTER ARCHAIC KOPPA
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(207,155), Bry_.new_ints(207,154)) // ϛ -> Ϛ -- GREEK CAPITAL LETTER STIGMA
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(207,157), Bry_.new_ints(207,156)) // ϝ -> Ϝ -- GREEK CAPITAL LETTER DIGAMMA
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(207,159), Bry_.new_ints(207,158)) // ϟ -> Ϟ -- GREEK CAPITAL LETTER KOPPA
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(207,161), Bry_.new_ints(207,160)) // ϡ -> Ϡ -- GREEK CAPITAL LETTER SAMPI
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(207,163), Bry_.new_ints(207,162)) // ϣ -> Ϣ -- GREEK CAPITAL LETTER SHEI
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(207,165), Bry_.new_ints(207,164)) // ϥ -> Ϥ -- GREEK CAPITAL LETTER FEI
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(207,167), Bry_.new_ints(207,166)) // ϧ -> Ϧ -- GREEK CAPITAL LETTER KHEI
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(207,169), Bry_.new_ints(207,168)) // ϩ -> Ϩ -- GREEK CAPITAL LETTER HORI
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(207,171), Bry_.new_ints(207,170)) // ϫ -> Ϫ -- GREEK CAPITAL LETTER GANGIA
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(207,173), Bry_.new_ints(207,172)) // ϭ -> Ϭ -- GREEK CAPITAL LETTER SHIMA
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(207,175), Bry_.new_ints(207,174)) // ϯ -> Ϯ -- GREEK CAPITAL LETTER DEI
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(207,178), Bry_.new_ints(207,185)) // ϲ -> Ϲ -- GREEK SMALL LETTER LUNATE SIGMA
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(207,184), Bry_.new_ints(207,183)) // ϸ -> Ϸ -- GREEK CAPITAL LETTER SHO
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(207,187), Bry_.new_ints(207,186)) // ϻ -> Ϻ -- GREEK CAPITAL LETTER SAN
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(209,144), Bry_.new_ints(208,128)) // ѐ -> Ѐ -- CYRILLIC CAPITAL LETTER IE WITH GRAVE
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(209,145), Bry_.new_ints(208,129)) // ё -> Ё -- CYRILLIC CAPITAL LETTER IO
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(209,146), Bry_.new_ints(208,130)) // ђ -> Ђ -- CYRILLIC CAPITAL LETTER DJE
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(209,147), Bry_.new_ints(208,131)) // ѓ -> Ѓ -- CYRILLIC CAPITAL LETTER GJE
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(209,148), Bry_.new_ints(208,132)) // є -> Є -- CYRILLIC CAPITAL LETTER E
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(209,149), Bry_.new_ints(208,133)) // ѕ -> Ѕ -- CYRILLIC CAPITAL LETTER DZE
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(209,150), Bry_.new_ints(208,134)) // і -> І -- CYRILLIC CAPITAL LETTER I
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(209,151), Bry_.new_ints(208,135)) // ї -> Ї -- CYRILLIC CAPITAL LETTER YI
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(209,152), Bry_.new_ints(208,136)) // ј -> Ј -- CYRILLIC CAPITAL LETTER JE
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(209,153), Bry_.new_ints(208,137)) // љ -> Љ -- CYRILLIC CAPITAL LETTER LJE
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(209,154), Bry_.new_ints(208,138)) // њ -> Њ -- CYRILLIC CAPITAL LETTER NJE
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(209,155), Bry_.new_ints(208,139)) // ћ -> Ћ -- CYRILLIC CAPITAL LETTER TSHE
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(209,156), Bry_.new_ints(208,140)) // ќ -> Ќ -- CYRILLIC CAPITAL LETTER KJE
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(209,157), Bry_.new_ints(208,141)) // ѝ -> Ѝ -- CYRILLIC CAPITAL LETTER I WITH GRAVE
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(209,158), Bry_.new_ints(208,142)) // ў -> Ў -- CYRILLIC CAPITAL LETTER SHORT U
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(209,159), Bry_.new_ints(208,143)) // џ -> Џ -- CYRILLIC CAPITAL LETTER DZHE
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(208,176), Bry_.new_ints(208,144)) // а -> А -- CYRILLIC CAPITAL LETTER A
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(208,177), Bry_.new_ints(208,145)) // б -> Б -- CYRILLIC CAPITAL LETTER BE
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(208,178), Bry_.new_ints(208,146)) // в -> В -- CYRILLIC CAPITAL LETTER VE
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(208,179), Bry_.new_ints(208,147)) // г -> Г -- CYRILLIC CAPITAL LETTER GE
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(208,180), Bry_.new_ints(208,148)) // д -> Д -- CYRILLIC CAPITAL LETTER DE
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(208,181), Bry_.new_ints(208,149)) // е -> Е -- CYRILLIC CAPITAL LETTER IE
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(208,182), Bry_.new_ints(208,150)) // ж -> Ж -- CYRILLIC CAPITAL LETTER ZHE
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(208,183), Bry_.new_ints(208,151)) // з -> З -- CYRILLIC CAPITAL LETTER ZE
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(208,184), Bry_.new_ints(208,152)) // и -> И -- CYRILLIC CAPITAL LETTER II
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(208,185), Bry_.new_ints(208,153)) // й -> Й -- CYRILLIC CAPITAL LETTER SHORT II
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(208,186), Bry_.new_ints(208,154)) // к -> К -- CYRILLIC CAPITAL LETTER KA
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(208,187), Bry_.new_ints(208,155)) // л -> Л -- CYRILLIC CAPITAL LETTER EL
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(208,188), Bry_.new_ints(208,156)) // м -> М -- CYRILLIC CAPITAL LETTER EM
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(208,189), Bry_.new_ints(208,157)) // н -> Н -- CYRILLIC CAPITAL LETTER EN
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(208,190), Bry_.new_ints(208,158)) // о -> О -- CYRILLIC CAPITAL LETTER O
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(208,191), Bry_.new_ints(208,159)) // п -> П -- CYRILLIC CAPITAL LETTER PE
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(209,128), Bry_.new_ints(208,160)) // р -> Р -- CYRILLIC CAPITAL LETTER ER
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(209,129), Bry_.new_ints(208,161)) // с -> С -- CYRILLIC CAPITAL LETTER ES
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(209,130), Bry_.new_ints(208,162)) // т -> Т -- CYRILLIC CAPITAL LETTER TE
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(209,131), Bry_.new_ints(208,163)) // у -> У -- CYRILLIC CAPITAL LETTER U
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(209,132), Bry_.new_ints(208,164)) // ф -> Ф -- CYRILLIC CAPITAL LETTER EF
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(209,133), Bry_.new_ints(208,165)) // х -> Х -- CYRILLIC CAPITAL LETTER KHA
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(209,134), Bry_.new_ints(208,166)) // ц -> Ц -- CYRILLIC CAPITAL LETTER TSE
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(209,135), Bry_.new_ints(208,167)) // ч -> Ч -- CYRILLIC CAPITAL LETTER CHE
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(209,136), Bry_.new_ints(208,168)) // ш -> Ш -- CYRILLIC CAPITAL LETTER SHA
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(209,137), Bry_.new_ints(208,169)) // щ -> Щ -- CYRILLIC CAPITAL LETTER SHCHA
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(209,138), Bry_.new_ints(208,170)) // ъ -> Ъ -- CYRILLIC CAPITAL LETTER HARD SIGN
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(209,139), Bry_.new_ints(208,171)) // ы -> Ы -- CYRILLIC CAPITAL LETTER YERI
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(209,140), Bry_.new_ints(208,172)) // ь -> Ь -- CYRILLIC CAPITAL LETTER SOFT SIGN
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(209,141), Bry_.new_ints(208,173)) // э -> Э -- CYRILLIC CAPITAL LETTER REVERSED E
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(209,142), Bry_.new_ints(208,174)) // ю -> Ю -- CYRILLIC CAPITAL LETTER IU
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(209,143), Bry_.new_ints(208,175)) // я -> Я -- CYRILLIC CAPITAL LETTER IA
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(209,161), Bry_.new_ints(209,160)) // ѡ -> Ѡ -- CYRILLIC CAPITAL LETTER OMEGA
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(209,163), Bry_.new_ints(209,162)) // ѣ -> Ѣ -- CYRILLIC CAPITAL LETTER YAT
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(209,165), Bry_.new_ints(209,164)) // ѥ -> Ѥ -- CYRILLIC CAPITAL LETTER IOTIFIED E
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(209,167), Bry_.new_ints(209,166)) // ѧ -> Ѧ -- CYRILLIC CAPITAL LETTER LITTLE YUS
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(209,169), Bry_.new_ints(209,168)) // ѩ -> Ѩ -- CYRILLIC CAPITAL LETTER IOTIFIED LITTLE YUS
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(209,171), Bry_.new_ints(209,170)) // ѫ -> Ѫ -- CYRILLIC CAPITAL LETTER BIG YUS
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(209,173), Bry_.new_ints(209,172)) // ѭ -> Ѭ -- CYRILLIC CAPITAL LETTER IOTIFIED BIG YUS
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(209,175), Bry_.new_ints(209,174)) // ѯ -> Ѯ -- CYRILLIC CAPITAL LETTER KSI
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(209,177), Bry_.new_ints(209,176)) // ѱ -> Ѱ -- CYRILLIC CAPITAL LETTER PSI
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(209,179), Bry_.new_ints(209,178)) // ѳ -> Ѳ -- CYRILLIC CAPITAL LETTER FITA
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(209,181), Bry_.new_ints(209,180)) // ѵ -> Ѵ -- CYRILLIC CAPITAL LETTER IZHITSA
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(209,183), Bry_.new_ints(209,182)) // ѷ -> Ѷ -- CYRILLIC CAPITAL LETTER IZHITSA DOUBLE GRAVE
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(209,185), Bry_.new_ints(209,184)) // ѹ -> Ѹ -- CYRILLIC CAPITAL LETTER UK DIGRAPH
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(209,187), Bry_.new_ints(209,186)) // ѻ -> Ѻ -- CYRILLIC CAPITAL LETTER ROUND OMEGA
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(209,189), Bry_.new_ints(209,188)) // ѽ -> Ѽ -- CYRILLIC CAPITAL LETTER OMEGA TITLO
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(209,191), Bry_.new_ints(209,190)) // ѿ -> Ѿ -- CYRILLIC CAPITAL LETTER OT
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(210,129), Bry_.new_ints(210,128)) // ҁ -> Ҁ -- CYRILLIC CAPITAL LETTER KOPPA
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(210,139), Bry_.new_ints(210,138)) // ҋ -> Ҋ -- CYRILLIC CAPITAL LETTER SHORT I WITH TAIL
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(210,141), Bry_.new_ints(210,140)) // ҍ -> Ҍ -- CYRILLIC CAPITAL LETTER SEMISOFT SIGN
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(210,143), Bry_.new_ints(210,142)) // ҏ -> Ҏ -- CYRILLIC CAPITAL LETTER ER WITH TICK
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(210,145), Bry_.new_ints(210,144)) // ґ -> Ґ -- CYRILLIC CAPITAL LETTER GE WITH UPTURN
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(210,147), Bry_.new_ints(210,146)) // ғ -> Ғ -- CYRILLIC CAPITAL LETTER GE BAR
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(210,149), Bry_.new_ints(210,148)) // ҕ -> Ҕ -- CYRILLIC CAPITAL LETTER GE HOOK
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(210,151), Bry_.new_ints(210,150)) // җ -> Җ -- CYRILLIC CAPITAL LETTER ZHE WITH RIGHT DESCENDER
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(210,153), Bry_.new_ints(210,152)) // ҙ -> Ҙ -- CYRILLIC CAPITAL LETTER ZE CEDILLA
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(210,155), Bry_.new_ints(210,154)) // қ -> Қ -- CYRILLIC CAPITAL LETTER KA WITH RIGHT DESCENDER
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(210,157), Bry_.new_ints(210,156)) // ҝ -> Ҝ -- CYRILLIC CAPITAL LETTER KA VERTICAL BAR
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(210,159), Bry_.new_ints(210,158)) // ҟ -> Ҟ -- CYRILLIC CAPITAL LETTER KA BAR
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(210,161), Bry_.new_ints(210,160)) // ҡ -> Ҡ -- CYRILLIC CAPITAL LETTER REVERSED GE KA
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(210,163), Bry_.new_ints(210,162)) // ң -> Ң -- CYRILLIC CAPITAL LETTER EN WITH RIGHT DESCENDER
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(210,165), Bry_.new_ints(210,164)) // ҥ -> Ҥ -- CYRILLIC CAPITAL LETTER EN GE
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(210,167), Bry_.new_ints(210,166)) // ҧ -> Ҧ -- CYRILLIC CAPITAL LETTER PE HOOK
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(210,169), Bry_.new_ints(210,168)) // ҩ -> Ҩ -- CYRILLIC CAPITAL LETTER O HOOK
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(210,171), Bry_.new_ints(210,170)) // ҫ -> Ҫ -- CYRILLIC CAPITAL LETTER ES CEDILLA
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(210,173), Bry_.new_ints(210,172)) // ҭ -> Ҭ -- CYRILLIC CAPITAL LETTER TE WITH RIGHT DESCENDER
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(210,175), Bry_.new_ints(210,174)) // ү -> Ү -- CYRILLIC CAPITAL LETTER STRAIGHT U
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(210,177), Bry_.new_ints(210,176)) // ұ -> Ұ -- CYRILLIC CAPITAL LETTER STRAIGHT U BAR
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(210,179), Bry_.new_ints(210,178)) // ҳ -> Ҳ -- CYRILLIC CAPITAL LETTER KHA WITH RIGHT DESCENDER
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(210,181), Bry_.new_ints(210,180)) // ҵ -> Ҵ -- CYRILLIC CAPITAL LETTER TE TSE
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(210,183), Bry_.new_ints(210,182)) // ҷ -> Ҷ -- CYRILLIC CAPITAL LETTER CHE WITH RIGHT DESCENDER
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(210,185), Bry_.new_ints(210,184)) // ҹ -> Ҹ -- CYRILLIC CAPITAL LETTER CHE VERTICAL BAR
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(210,187), Bry_.new_ints(210,186)) // һ -> Һ -- CYRILLIC CAPITAL LETTER H
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(210,189), Bry_.new_ints(210,188)) // ҽ -> Ҽ -- CYRILLIC CAPITAL LETTER IE HOOK
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(210,191), Bry_.new_ints(210,190)) // ҿ -> Ҿ -- CYRILLIC CAPITAL LETTER IE HOOK OGONEK
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(211,143), Bry_.new_ints(211,128)) // ӏ -> Ӏ -- CYRILLIC LETTER I
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(211,130), Bry_.new_ints(211,129)) // ӂ -> Ӂ -- CYRILLIC CAPITAL LETTER SHORT ZHE
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(211,132), Bry_.new_ints(211,131)) // ӄ -> Ӄ -- CYRILLIC CAPITAL LETTER KA HOOK
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(211,134), Bry_.new_ints(211,133)) // ӆ -> Ӆ -- CYRILLIC CAPITAL LETTER EL WITH TAIL
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(211,136), Bry_.new_ints(211,135)) // ӈ -> Ӈ -- CYRILLIC CAPITAL LETTER EN HOOK
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(211,138), Bry_.new_ints(211,137)) // ӊ -> Ӊ -- CYRILLIC CAPITAL LETTER EN WITH TAIL
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(211,140), Bry_.new_ints(211,139)) // ӌ -> Ӌ -- CYRILLIC CAPITAL LETTER CHE WITH LEFT DESCENDER
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(211,142), Bry_.new_ints(211,141)) // ӎ -> Ӎ -- CYRILLIC CAPITAL LETTER EM WITH TAIL
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(211,145), Bry_.new_ints(211,144)) // ӑ -> Ӑ -- CYRILLIC CAPITAL LETTER A WITH BREVE
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(211,147), Bry_.new_ints(211,146)) // ӓ -> Ӓ -- CYRILLIC CAPITAL LETTER A WITH DIAERESIS
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(211,149), Bry_.new_ints(211,148)) // ӕ -> Ӕ -- CYRILLIC CAPITAL LIGATURE A IE
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(211,151), Bry_.new_ints(211,150)) // ӗ -> Ӗ -- CYRILLIC CAPITAL LETTER IE WITH BREVE
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(211,153), Bry_.new_ints(211,152)) // ә -> Ә -- CYRILLIC CAPITAL LETTER SCHWA
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(211,155), Bry_.new_ints(211,154)) // ӛ -> Ӛ -- CYRILLIC CAPITAL LETTER SCHWA WITH DIAERESIS
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(211,157), Bry_.new_ints(211,156)) // ӝ -> Ӝ -- CYRILLIC CAPITAL LETTER ZHE WITH DIAERESIS
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(211,159), Bry_.new_ints(211,158)) // ӟ -> Ӟ -- CYRILLIC CAPITAL LETTER ZE WITH DIAERESIS
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(211,161), Bry_.new_ints(211,160)) // ӡ -> Ӡ -- CYRILLIC CAPITAL LETTER ABKHASIAN DZE
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(211,163), Bry_.new_ints(211,162)) // ӣ -> Ӣ -- CYRILLIC CAPITAL LETTER I WITH MACRON
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(211,165), Bry_.new_ints(211,164)) // ӥ -> Ӥ -- CYRILLIC CAPITAL LETTER I WITH DIAERESIS
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(211,167), Bry_.new_ints(211,166)) // ӧ -> Ӧ -- CYRILLIC CAPITAL LETTER O WITH DIAERESIS
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(211,169), Bry_.new_ints(211,168)) // ө -> Ө -- CYRILLIC CAPITAL LETTER BARRED O
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(211,171), Bry_.new_ints(211,170)) // ӫ -> Ӫ -- CYRILLIC CAPITAL LETTER BARRED O WITH DIAERESIS
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(211,173), Bry_.new_ints(211,172)) // ӭ -> Ӭ -- CYRILLIC CAPITAL LETTER E WITH DIAERESIS
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(211,175), Bry_.new_ints(211,174)) // ӯ -> Ӯ -- CYRILLIC CAPITAL LETTER U WITH MACRON
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(211,177), Bry_.new_ints(211,176)) // ӱ -> Ӱ -- CYRILLIC CAPITAL LETTER U WITH DIAERESIS
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(211,179), Bry_.new_ints(211,178)) // ӳ -> Ӳ -- CYRILLIC CAPITAL LETTER U WITH DOUBLE ACUTE
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(211,181), Bry_.new_ints(211,180)) // ӵ -> Ӵ -- CYRILLIC CAPITAL LETTER CHE WITH DIAERESIS
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(211,183), Bry_.new_ints(211,182)) // ӷ -> Ӷ -- CYRILLIC CAPITAL LETTER GHE WITH DESCENDER
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(211,185), Bry_.new_ints(211,184)) // ӹ -> Ӹ -- CYRILLIC CAPITAL LETTER YERU WITH DIAERESIS
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(211,187), Bry_.new_ints(211,186)) // ӻ -> Ӻ -- CYRILLIC CAPITAL LETTER GHE WITH STROKE AND HOOK
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(211,189), Bry_.new_ints(211,188)) // ӽ -> Ӽ -- CYRILLIC CAPITAL LETTER HA WITH HOOK
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(211,191), Bry_.new_ints(211,190)) // ӿ -> Ӿ -- CYRILLIC CAPITAL LETTER HA WITH STROKE
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(212,129), Bry_.new_ints(212,128)) // ԁ -> Ԁ -- CYRILLIC CAPITAL LETTER KOMI DE
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(212,131), Bry_.new_ints(212,130)) // ԃ -> Ԃ -- CYRILLIC CAPITAL LETTER KOMI DJE
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(212,133), Bry_.new_ints(212,132)) // ԅ -> Ԅ -- CYRILLIC CAPITAL LETTER KOMI ZJE
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(212,135), Bry_.new_ints(212,134)) // ԇ -> Ԇ -- CYRILLIC CAPITAL LETTER KOMI DZJE
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(212,137), Bry_.new_ints(212,136)) // ԉ -> Ԉ -- CYRILLIC CAPITAL LETTER KOMI LJE
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(212,139), Bry_.new_ints(212,138)) // ԋ -> Ԋ -- CYRILLIC CAPITAL LETTER KOMI NJE
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(212,141), Bry_.new_ints(212,140)) // ԍ -> Ԍ -- CYRILLIC CAPITAL LETTER KOMI SJE
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(212,143), Bry_.new_ints(212,142)) // ԏ -> Ԏ -- CYRILLIC CAPITAL LETTER KOMI TJE
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(212,145), Bry_.new_ints(212,144)) // ԑ -> Ԑ -- CYRILLIC CAPITAL LETTER REVERSED ZE
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(212,147), Bry_.new_ints(212,146)) // ԓ -> Ԓ -- CYRILLIC CAPITAL LETTER EL WITH HOOK
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(212,149), Bry_.new_ints(212,148)) // ԕ -> Ԕ -- CYRILLIC CAPITAL LETTER LHA
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(212,151), Bry_.new_ints(212,150)) // ԗ -> Ԗ -- CYRILLIC CAPITAL LETTER RHA
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(212,153), Bry_.new_ints(212,152)) // ԙ -> Ԙ -- CYRILLIC CAPITAL LETTER YAE
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(212,155), Bry_.new_ints(212,154)) // ԛ -> Ԛ -- CYRILLIC CAPITAL LETTER QA
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(212,157), Bry_.new_ints(212,156)) // ԝ -> Ԝ -- CYRILLIC CAPITAL LETTER WE
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(212,159), Bry_.new_ints(212,158)) // ԟ -> Ԟ -- CYRILLIC CAPITAL LETTER ALEUT KA
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(212,161), Bry_.new_ints(212,160)) // ԡ -> Ԡ -- CYRILLIC CAPITAL LETTER EL WITH MIDDLE HOOK
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(212,163), Bry_.new_ints(212,162)) // ԣ -> Ԣ -- CYRILLIC CAPITAL LETTER EN WITH MIDDLE HOOK
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(212,165), Bry_.new_ints(212,164)) // ԥ -> Ԥ -- CYRILLIC CAPITAL LETTER PE WITH DESCENDER
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(212,167), Bry_.new_ints(212,166)) // ԧ -> Ԧ -- CYRILLIC CAPITAL LETTER SHHA WITH DESCENDER
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(213,161), Bry_.new_ints(212,177)) // ա -> Ա -- ARMENIAN CAPITAL LETTER AYB
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(213,162), Bry_.new_ints(212,178)) // բ -> Բ -- ARMENIAN CAPITAL LETTER BEN
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(213,163), Bry_.new_ints(212,179)) // գ -> Գ -- ARMENIAN CAPITAL LETTER GIM
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(213,164), Bry_.new_ints(212,180)) // դ -> Դ -- ARMENIAN CAPITAL LETTER DA
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(213,165), Bry_.new_ints(212,181)) // ե -> Ե -- ARMENIAN CAPITAL LETTER ECH
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(213,166), Bry_.new_ints(212,182)) // զ -> Զ -- ARMENIAN CAPITAL LETTER ZA
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(213,167), Bry_.new_ints(212,183)) // է -> Է -- ARMENIAN CAPITAL LETTER EH
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(213,168), Bry_.new_ints(212,184)) // ը -> Ը -- ARMENIAN CAPITAL LETTER ET
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(213,169), Bry_.new_ints(212,185)) // թ -> Թ -- ARMENIAN CAPITAL LETTER TO
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(213,170), Bry_.new_ints(212,186)) // ժ -> Ժ -- ARMENIAN CAPITAL LETTER ZHE
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(213,171), Bry_.new_ints(212,187)) // ի -> Ի -- ARMENIAN CAPITAL LETTER INI
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(213,172), Bry_.new_ints(212,188)) // լ -> Լ -- ARMENIAN CAPITAL LETTER LIWN
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(213,173), Bry_.new_ints(212,189)) // խ -> Խ -- ARMENIAN CAPITAL LETTER XEH
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(213,174), Bry_.new_ints(212,190)) // ծ -> Ծ -- ARMENIAN CAPITAL LETTER CA
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(213,175), Bry_.new_ints(212,191)) // կ -> Կ -- ARMENIAN CAPITAL LETTER KEN
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(213,176), Bry_.new_ints(213,128)) // հ -> Հ -- ARMENIAN CAPITAL LETTER HO
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(213,177), Bry_.new_ints(213,129)) // ձ -> Ձ -- ARMENIAN CAPITAL LETTER JA
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(213,178), Bry_.new_ints(213,130)) // ղ -> Ղ -- ARMENIAN CAPITAL LETTER LAD
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(213,179), Bry_.new_ints(213,131)) // ճ -> Ճ -- ARMENIAN CAPITAL LETTER CHEH
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(213,180), Bry_.new_ints(213,132)) // մ -> Մ -- ARMENIAN CAPITAL LETTER MEN
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(213,181), Bry_.new_ints(213,133)) // յ -> Յ -- ARMENIAN CAPITAL LETTER YI
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(213,182), Bry_.new_ints(213,134)) // ն -> Ն -- ARMENIAN CAPITAL LETTER NOW
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(213,183), Bry_.new_ints(213,135)) // շ -> Շ -- ARMENIAN CAPITAL LETTER SHA
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(213,184), Bry_.new_ints(213,136)) // ո -> Ո -- ARMENIAN CAPITAL LETTER VO
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(213,185), Bry_.new_ints(213,137)) // չ -> Չ -- ARMENIAN CAPITAL LETTER CHA
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(213,186), Bry_.new_ints(213,138)) // պ -> Պ -- ARMENIAN CAPITAL LETTER PEH
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(213,187), Bry_.new_ints(213,139)) // ջ -> Ջ -- ARMENIAN CAPITAL LETTER JHEH
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(213,188), Bry_.new_ints(213,140)) // ռ -> Ռ -- ARMENIAN CAPITAL LETTER RA
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(213,189), Bry_.new_ints(213,141)) // ս -> Ս -- ARMENIAN CAPITAL LETTER SEH
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(213,190), Bry_.new_ints(213,142)) // վ -> Վ -- ARMENIAN CAPITAL LETTER VEW
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(213,191), Bry_.new_ints(213,143)) // տ -> Տ -- ARMENIAN CAPITAL LETTER TIWN
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(214,128), Bry_.new_ints(213,144)) // ր -> Ր -- ARMENIAN CAPITAL LETTER REH
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(214,129), Bry_.new_ints(213,145)) // ց -> Ց -- ARMENIAN CAPITAL LETTER CO
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(214,130), Bry_.new_ints(213,146)) // ւ -> Ւ -- ARMENIAN CAPITAL LETTER YIWN
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(214,131), Bry_.new_ints(213,147)) // փ -> Փ -- ARMENIAN CAPITAL LETTER PIWR
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(214,132), Bry_.new_ints(213,148)) // ք -> Ք -- ARMENIAN CAPITAL LETTER KEH
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(214,133), Bry_.new_ints(213,149)) // օ -> Օ -- ARMENIAN CAPITAL LETTER OH
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(214,134), Bry_.new_ints(213,150)) // ֆ -> Ֆ -- ARMENIAN CAPITAL LETTER FEH
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(226,180,128), Bry_.new_ints(225,130,160)) // ⴀ -> Ⴀ -- GEORGIAN CAPITAL LETTER AN
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(226,180,129), Bry_.new_ints(225,130,161)) // ⴁ -> Ⴁ -- GEORGIAN CAPITAL LETTER BAN
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(226,180,130), Bry_.new_ints(225,130,162)) // ⴂ -> Ⴂ -- GEORGIAN CAPITAL LETTER GAN
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(226,180,131), Bry_.new_ints(225,130,163)) // ⴃ -> Ⴃ -- GEORGIAN CAPITAL LETTER DON
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(226,180,132), Bry_.new_ints(225,130,164)) // ⴄ -> Ⴄ -- GEORGIAN CAPITAL LETTER EN
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(226,180,133), Bry_.new_ints(225,130,165)) // ⴅ -> Ⴅ -- GEORGIAN CAPITAL LETTER VIN
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(226,180,134), Bry_.new_ints(225,130,166)) // ⴆ -> Ⴆ -- GEORGIAN CAPITAL LETTER ZEN
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(226,180,135), Bry_.new_ints(225,130,167)) // ⴇ -> Ⴇ -- GEORGIAN CAPITAL LETTER TAN
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(226,180,136), Bry_.new_ints(225,130,168)) // ⴈ -> Ⴈ -- GEORGIAN CAPITAL LETTER IN
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(226,180,137), Bry_.new_ints(225,130,169)) // ⴉ -> Ⴉ -- GEORGIAN CAPITAL LETTER KAN
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(226,180,138), Bry_.new_ints(225,130,170)) // ⴊ -> Ⴊ -- GEORGIAN CAPITAL LETTER LAS
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(226,180,139), Bry_.new_ints(225,130,171)) // ⴋ -> Ⴋ -- GEORGIAN CAPITAL LETTER MAN
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(226,180,140), Bry_.new_ints(225,130,172)) // ⴌ -> Ⴌ -- GEORGIAN CAPITAL LETTER NAR
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(226,180,141), Bry_.new_ints(225,130,173)) // ⴍ -> Ⴍ -- GEORGIAN CAPITAL LETTER ON
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(226,180,142), Bry_.new_ints(225,130,174)) // ⴎ -> Ⴎ -- GEORGIAN CAPITAL LETTER PAR
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(226,180,143), Bry_.new_ints(225,130,175)) // ⴏ -> Ⴏ -- GEORGIAN CAPITAL LETTER ZHAR
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(226,180,144), Bry_.new_ints(225,130,176)) // ⴐ -> Ⴐ -- GEORGIAN CAPITAL LETTER RAE
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(226,180,145), Bry_.new_ints(225,130,177)) // ⴑ -> Ⴑ -- GEORGIAN CAPITAL LETTER SAN
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(226,180,146), Bry_.new_ints(225,130,178)) // ⴒ -> Ⴒ -- GEORGIAN CAPITAL LETTER TAR
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(226,180,147), Bry_.new_ints(225,130,179)) // ⴓ -> Ⴓ -- GEORGIAN CAPITAL LETTER UN
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(226,180,148), Bry_.new_ints(225,130,180)) // ⴔ -> Ⴔ -- GEORGIAN CAPITAL LETTER PHAR
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(226,180,149), Bry_.new_ints(225,130,181)) // ⴕ -> Ⴕ -- GEORGIAN CAPITAL LETTER KHAR
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(226,180,150), Bry_.new_ints(225,130,182)) // ⴖ -> Ⴖ -- GEORGIAN CAPITAL LETTER GHAN
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(226,180,151), Bry_.new_ints(225,130,183)) // ⴗ -> Ⴗ -- GEORGIAN CAPITAL LETTER QAR
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(226,180,152), Bry_.new_ints(225,130,184)) // ⴘ -> Ⴘ -- GEORGIAN CAPITAL LETTER SHIN
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(226,180,153), Bry_.new_ints(225,130,185)) // ⴙ -> Ⴙ -- GEORGIAN CAPITAL LETTER CHIN
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(226,180,154), Bry_.new_ints(225,130,186)) // ⴚ -> Ⴚ -- GEORGIAN CAPITAL LETTER CAN
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(226,180,155), Bry_.new_ints(225,130,187)) // ⴛ -> Ⴛ -- GEORGIAN CAPITAL LETTER JIL
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(226,180,156), Bry_.new_ints(225,130,188)) // ⴜ -> Ⴜ -- GEORGIAN CAPITAL LETTER CIL
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(226,180,157), Bry_.new_ints(225,130,189)) // ⴝ -> Ⴝ -- GEORGIAN CAPITAL LETTER CHAR
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(226,180,158), Bry_.new_ints(225,130,190)) // ⴞ -> Ⴞ -- GEORGIAN CAPITAL LETTER XAN
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(226,180,159), Bry_.new_ints(225,130,191)) // ⴟ -> Ⴟ -- GEORGIAN CAPITAL LETTER JHAN
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(226,180,160), Bry_.new_ints(225,131,128)) // ⴠ -> Ⴠ -- GEORGIAN CAPITAL LETTER HAE
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(226,180,161), Bry_.new_ints(225,131,129)) // ⴡ -> Ⴡ -- GEORGIAN CAPITAL LETTER HE
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(226,180,162), Bry_.new_ints(225,131,130)) // ⴢ -> Ⴢ -- GEORGIAN CAPITAL LETTER HIE
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(226,180,163), Bry_.new_ints(225,131,131)) // ⴣ -> Ⴣ -- GEORGIAN CAPITAL LETTER WE
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(226,180,164), Bry_.new_ints(225,131,132)) // ⴤ -> Ⴤ -- GEORGIAN CAPITAL LETTER HAR
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(226,180,165), Bry_.new_ints(225,131,133)) // ⴥ -> Ⴥ -- GEORGIAN CAPITAL LETTER HOE
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(226,180,167), Bry_.new_ints(225,131,135)) // ⴧ -> Ⴧ -- GEORGIAN CAPITAL LETTER YN
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(226,180,173), Bry_.new_ints(225,131,141)) // ⴭ -> Ⴭ -- GEORGIAN CAPITAL LETTER AEN
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(225,181,185), Bry_.new_ints(234,157,189)) // ᵹ -> Ᵹ -- LATIN SMALL LETTER INSULAR G
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(225,181,189), Bry_.new_ints(226,177,163)) // ᵽ -> Ᵽ -- LATIN SMALL LETTER P WITH STROKE
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(225,184,129), Bry_.new_ints(225,184,128)) // ḁ -> Ḁ -- LATIN CAPITAL LETTER A WITH RING BELOW
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(225,184,131), Bry_.new_ints(225,184,130)) // ḃ -> Ḃ -- LATIN CAPITAL LETTER B WITH DOT ABOVE
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(225,184,133), Bry_.new_ints(225,184,132)) // ḅ -> Ḅ -- LATIN CAPITAL LETTER B WITH DOT BELOW
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(225,184,135), Bry_.new_ints(225,184,134)) // ḇ -> Ḇ -- LATIN CAPITAL LETTER B WITH LINE BELOW
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(225,184,137), Bry_.new_ints(225,184,136)) // ḉ -> Ḉ -- LATIN CAPITAL LETTER C WITH CEDILLA AND ACUTE
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(225,184,139), Bry_.new_ints(225,184,138)) // ḋ -> Ḋ -- LATIN CAPITAL LETTER D WITH DOT ABOVE
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(225,184,141), Bry_.new_ints(225,184,140)) // ḍ -> Ḍ -- LATIN CAPITAL LETTER D WITH DOT BELOW
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(225,184,143), Bry_.new_ints(225,184,142)) // ḏ -> Ḏ -- LATIN CAPITAL LETTER D WITH LINE BELOW
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(225,184,145), Bry_.new_ints(225,184,144)) // ḑ -> Ḑ -- LATIN CAPITAL LETTER D WITH CEDILLA
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(225,184,147), Bry_.new_ints(225,184,146)) // ḓ -> Ḓ -- LATIN CAPITAL LETTER D WITH CIRCUMFLEX BELOW
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(225,184,149), Bry_.new_ints(225,184,148)) // ḕ -> Ḕ -- LATIN CAPITAL LETTER E WITH MACRON AND GRAVE
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(225,184,151), Bry_.new_ints(225,184,150)) // ḗ -> Ḗ -- LATIN CAPITAL LETTER E WITH MACRON AND ACUTE
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(225,184,153), Bry_.new_ints(225,184,152)) // ḙ -> Ḙ -- LATIN CAPITAL LETTER E WITH CIRCUMFLEX BELOW
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(225,184,155), Bry_.new_ints(225,184,154)) // ḛ -> Ḛ -- LATIN CAPITAL LETTER E WITH TILDE BELOW
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(225,184,157), Bry_.new_ints(225,184,156)) // ḝ -> Ḝ -- LATIN CAPITAL LETTER E WITH CEDILLA AND BREVE
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(225,184,159), Bry_.new_ints(225,184,158)) // ḟ -> Ḟ -- LATIN CAPITAL LETTER F WITH DOT ABOVE
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(225,184,161), Bry_.new_ints(225,184,160)) // ḡ -> Ḡ -- LATIN CAPITAL LETTER G WITH MACRON
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(225,184,163), Bry_.new_ints(225,184,162)) // ḣ -> Ḣ -- LATIN CAPITAL LETTER H WITH DOT ABOVE
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(225,184,165), Bry_.new_ints(225,184,164)) // ḥ -> Ḥ -- LATIN CAPITAL LETTER H WITH DOT BELOW
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(225,184,167), Bry_.new_ints(225,184,166)) // ḧ -> Ḧ -- LATIN CAPITAL LETTER H WITH DIAERESIS
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(225,184,169), Bry_.new_ints(225,184,168)) // ḩ -> Ḩ -- LATIN CAPITAL LETTER H WITH CEDILLA
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(225,184,171), Bry_.new_ints(225,184,170)) // ḫ -> Ḫ -- LATIN CAPITAL LETTER H WITH BREVE BELOW
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(225,184,173), Bry_.new_ints(225,184,172)) // ḭ -> Ḭ -- LATIN CAPITAL LETTER I WITH TILDE BELOW
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(225,184,175), Bry_.new_ints(225,184,174)) // ḯ -> Ḯ -- LATIN CAPITAL LETTER I WITH DIAERESIS AND ACUTE
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(225,184,177), Bry_.new_ints(225,184,176)) // ḱ -> Ḱ -- LATIN CAPITAL LETTER K WITH ACUTE
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(225,184,179), Bry_.new_ints(225,184,178)) // ḳ -> Ḳ -- LATIN CAPITAL LETTER K WITH DOT BELOW
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(225,184,181), Bry_.new_ints(225,184,180)) // ḵ -> Ḵ -- LATIN CAPITAL LETTER K WITH LINE BELOW
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(225,184,183), Bry_.new_ints(225,184,182)) // ḷ -> Ḷ -- LATIN CAPITAL LETTER L WITH DOT BELOW
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(225,184,185), Bry_.new_ints(225,184,184)) // ḹ -> Ḹ -- LATIN CAPITAL LETTER L WITH DOT BELOW AND MACRON
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(225,184,187), Bry_.new_ints(225,184,186)) // ḻ -> Ḻ -- LATIN CAPITAL LETTER L WITH LINE BELOW
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(225,184,189), Bry_.new_ints(225,184,188)) // ḽ -> Ḽ -- LATIN CAPITAL LETTER L WITH CIRCUMFLEX BELOW
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(225,184,191), Bry_.new_ints(225,184,190)) // ḿ -> Ḿ -- LATIN CAPITAL LETTER M WITH ACUTE
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(225,185,129), Bry_.new_ints(225,185,128)) // ṁ -> Ṁ -- LATIN CAPITAL LETTER M WITH DOT ABOVE
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(225,185,131), Bry_.new_ints(225,185,130)) // ṃ -> Ṃ -- LATIN CAPITAL LETTER M WITH DOT BELOW
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(225,185,133), Bry_.new_ints(225,185,132)) // ṅ -> Ṅ -- LATIN CAPITAL LETTER N WITH DOT ABOVE
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(225,185,135), Bry_.new_ints(225,185,134)) // ṇ -> Ṇ -- LATIN CAPITAL LETTER N WITH DOT BELOW
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(225,185,137), Bry_.new_ints(225,185,136)) // ṉ -> Ṉ -- LATIN CAPITAL LETTER N WITH LINE BELOW
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(225,185,139), Bry_.new_ints(225,185,138)) // ṋ -> Ṋ -- LATIN CAPITAL LETTER N WITH CIRCUMFLEX BELOW
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(225,185,141), Bry_.new_ints(225,185,140)) // ṍ -> Ṍ -- LATIN CAPITAL LETTER O WITH TILDE AND ACUTE
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(225,185,143), Bry_.new_ints(225,185,142)) // ṏ -> Ṏ -- LATIN CAPITAL LETTER O WITH TILDE AND DIAERESIS
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(225,185,145), Bry_.new_ints(225,185,144)) // ṑ -> Ṑ -- LATIN CAPITAL LETTER O WITH MACRON AND GRAVE
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(225,185,147), Bry_.new_ints(225,185,146)) // ṓ -> Ṓ -- LATIN CAPITAL LETTER O WITH MACRON AND ACUTE
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(225,185,149), Bry_.new_ints(225,185,148)) // ṕ -> Ṕ -- LATIN CAPITAL LETTER P WITH ACUTE
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(225,185,151), Bry_.new_ints(225,185,150)) // ṗ -> Ṗ -- LATIN CAPITAL LETTER P WITH DOT ABOVE
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(225,185,153), Bry_.new_ints(225,185,152)) // ṙ -> Ṙ -- LATIN CAPITAL LETTER R WITH DOT ABOVE
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(225,185,155), Bry_.new_ints(225,185,154)) // ṛ -> Ṛ -- LATIN CAPITAL LETTER R WITH DOT BELOW
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(225,185,157), Bry_.new_ints(225,185,156)) // ṝ -> Ṝ -- LATIN CAPITAL LETTER R WITH DOT BELOW AND MACRON
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(225,185,159), Bry_.new_ints(225,185,158)) // ṟ -> Ṟ -- LATIN CAPITAL LETTER R WITH LINE BELOW
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(225,185,161), Bry_.new_ints(225,185,160)) // ṡ -> Ṡ -- LATIN CAPITAL LETTER S WITH DOT ABOVE
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(225,185,163), Bry_.new_ints(225,185,162)) // ṣ -> Ṣ -- LATIN CAPITAL LETTER S WITH DOT BELOW
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(225,185,165), Bry_.new_ints(225,185,164)) // ṥ -> Ṥ -- LATIN CAPITAL LETTER S WITH ACUTE AND DOT ABOVE
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(225,185,167), Bry_.new_ints(225,185,166)) // ṧ -> Ṧ -- LATIN CAPITAL LETTER S WITH CARON AND DOT ABOVE
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(225,185,169), Bry_.new_ints(225,185,168)) // ṩ -> Ṩ -- LATIN CAPITAL LETTER S WITH DOT BELOW AND DOT ABOVE
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(225,185,171), Bry_.new_ints(225,185,170)) // ṫ -> Ṫ -- LATIN CAPITAL LETTER T WITH DOT ABOVE
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(225,185,173), Bry_.new_ints(225,185,172)) // ṭ -> Ṭ -- LATIN CAPITAL LETTER T WITH DOT BELOW
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(225,185,175), Bry_.new_ints(225,185,174)) // ṯ -> Ṯ -- LATIN CAPITAL LETTER T WITH LINE BELOW
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(225,185,177), Bry_.new_ints(225,185,176)) // ṱ -> Ṱ -- LATIN CAPITAL LETTER T WITH CIRCUMFLEX BELOW
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(225,185,179), Bry_.new_ints(225,185,178)) // ṳ -> Ṳ -- LATIN CAPITAL LETTER U WITH DIAERESIS BELOW
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(225,185,181), Bry_.new_ints(225,185,180)) // ṵ -> Ṵ -- LATIN CAPITAL LETTER U WITH TILDE BELOW
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(225,185,183), Bry_.new_ints(225,185,182)) // ṷ -> Ṷ -- LATIN CAPITAL LETTER U WITH CIRCUMFLEX BELOW
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(225,185,185), Bry_.new_ints(225,185,184)) // ṹ -> Ṹ -- LATIN CAPITAL LETTER U WITH TILDE AND ACUTE
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(225,185,187), Bry_.new_ints(225,185,186)) // ṻ -> Ṻ -- LATIN CAPITAL LETTER U WITH MACRON AND DIAERESIS
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(225,185,189), Bry_.new_ints(225,185,188)) // ṽ -> Ṽ -- LATIN CAPITAL LETTER V WITH TILDE
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(225,185,191), Bry_.new_ints(225,185,190)) // ṿ -> Ṿ -- LATIN CAPITAL LETTER V WITH DOT BELOW
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(225,186,129), Bry_.new_ints(225,186,128)) // ẁ -> Ẁ -- LATIN CAPITAL LETTER W WITH GRAVE
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(225,186,131), Bry_.new_ints(225,186,130)) // ẃ -> Ẃ -- LATIN CAPITAL LETTER W WITH ACUTE
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(225,186,133), Bry_.new_ints(225,186,132)) // ẅ -> Ẅ -- LATIN CAPITAL LETTER W WITH DIAERESIS
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(225,186,135), Bry_.new_ints(225,186,134)) // ẇ -> Ẇ -- LATIN CAPITAL LETTER W WITH DOT ABOVE
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(225,186,137), Bry_.new_ints(225,186,136)) // ẉ -> Ẉ -- LATIN CAPITAL LETTER W WITH DOT BELOW
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(225,186,139), Bry_.new_ints(225,186,138)) // ẋ -> Ẋ -- LATIN CAPITAL LETTER X WITH DOT ABOVE
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(225,186,141), Bry_.new_ints(225,186,140)) // ẍ -> Ẍ -- LATIN CAPITAL LETTER X WITH DIAERESIS
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(225,186,143), Bry_.new_ints(225,186,142)) // ẏ -> Ẏ -- LATIN CAPITAL LETTER Y WITH DOT ABOVE
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(225,186,145), Bry_.new_ints(225,186,144)) // ẑ -> Ẑ -- LATIN CAPITAL LETTER Z WITH CIRCUMFLEX
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(225,186,147), Bry_.new_ints(225,186,146)) // ẓ -> Ẓ -- LATIN CAPITAL LETTER Z WITH DOT BELOW
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(225,186,149), Bry_.new_ints(225,186,148)) // ẕ -> Ẕ -- LATIN CAPITAL LETTER Z WITH LINE BELOW
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(225,186,161), Bry_.new_ints(225,186,160)) // ạ -> Ạ -- LATIN CAPITAL LETTER A WITH DOT BELOW
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(225,186,163), Bry_.new_ints(225,186,162)) // ả -> Ả -- LATIN CAPITAL LETTER A WITH HOOK ABOVE
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(225,186,165), Bry_.new_ints(225,186,164)) // ấ -> Ấ -- LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND ACUTE
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(225,186,167), Bry_.new_ints(225,186,166)) // ầ -> Ầ -- LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND GRAVE
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(225,186,169), Bry_.new_ints(225,186,168)) // ẩ -> Ẩ -- LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(225,186,171), Bry_.new_ints(225,186,170)) // ẫ -> Ẫ -- LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND TILDE
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(225,186,173), Bry_.new_ints(225,186,172)) // ậ -> Ậ -- LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND DOT BELOW
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(225,186,175), Bry_.new_ints(225,186,174)) // ắ -> Ắ -- LATIN CAPITAL LETTER A WITH BREVE AND ACUTE
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(225,186,177), Bry_.new_ints(225,186,176)) // ằ -> Ằ -- LATIN CAPITAL LETTER A WITH BREVE AND GRAVE
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(225,186,179), Bry_.new_ints(225,186,178)) // ẳ -> Ẳ -- LATIN CAPITAL LETTER A WITH BREVE AND HOOK ABOVE
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(225,186,181), Bry_.new_ints(225,186,180)) // ẵ -> Ẵ -- LATIN CAPITAL LETTER A WITH BREVE AND TILDE
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(225,186,183), Bry_.new_ints(225,186,182)) // ặ -> Ặ -- LATIN CAPITAL LETTER A WITH BREVE AND DOT BELOW
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(225,186,185), Bry_.new_ints(225,186,184)) // ẹ -> Ẹ -- LATIN CAPITAL LETTER E WITH DOT BELOW
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(225,186,187), Bry_.new_ints(225,186,186)) // ẻ -> Ẻ -- LATIN CAPITAL LETTER E WITH HOOK ABOVE
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(225,186,189), Bry_.new_ints(225,186,188)) // ẽ -> Ẽ -- LATIN CAPITAL LETTER E WITH TILDE
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(225,186,191), Bry_.new_ints(225,186,190)) // ế -> Ế -- LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND ACUTE
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(225,187,129), Bry_.new_ints(225,187,128)) // ề -> Ề -- LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND GRAVE
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(225,187,131), Bry_.new_ints(225,187,130)) // ể -> Ể -- LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(225,187,133), Bry_.new_ints(225,187,132)) // ễ -> Ễ -- LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND TILDE
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(225,187,135), Bry_.new_ints(225,187,134)) // ệ -> Ệ -- LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND DOT BELOW
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(225,187,137), Bry_.new_ints(225,187,136)) // ỉ -> Ỉ -- LATIN CAPITAL LETTER I WITH HOOK ABOVE
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(225,187,139), Bry_.new_ints(225,187,138)) // ị -> Ị -- LATIN CAPITAL LETTER I WITH DOT BELOW
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(225,187,141), Bry_.new_ints(225,187,140)) // ọ -> Ọ -- LATIN CAPITAL LETTER O WITH DOT BELOW
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(225,187,143), Bry_.new_ints(225,187,142)) // ỏ -> Ỏ -- LATIN CAPITAL LETTER O WITH HOOK ABOVE
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(225,187,145), Bry_.new_ints(225,187,144)) // ố -> Ố -- LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND ACUTE
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(225,187,147), Bry_.new_ints(225,187,146)) // ồ -> Ồ -- LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND GRAVE
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(225,187,149), Bry_.new_ints(225,187,148)) // ổ -> Ổ -- LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(225,187,151), Bry_.new_ints(225,187,150)) // ỗ -> Ỗ -- LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND TILDE
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(225,187,153), Bry_.new_ints(225,187,152)) // ộ -> Ộ -- LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND DOT BELOW
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(225,187,155), Bry_.new_ints(225,187,154)) // ớ -> Ớ -- LATIN CAPITAL LETTER O WITH HORN AND ACUTE
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(225,187,157), Bry_.new_ints(225,187,156)) // ờ -> Ờ -- LATIN CAPITAL LETTER O WITH HORN AND GRAVE
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(225,187,159), Bry_.new_ints(225,187,158)) // ở -> Ở -- LATIN CAPITAL LETTER O WITH HORN AND HOOK ABOVE
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(225,187,161), Bry_.new_ints(225,187,160)) // ỡ -> Ỡ -- LATIN CAPITAL LETTER O WITH HORN AND TILDE
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(225,187,163), Bry_.new_ints(225,187,162)) // ợ -> Ợ -- LATIN CAPITAL LETTER O WITH HORN AND DOT BELOW
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(225,187,165), Bry_.new_ints(225,187,164)) // ụ -> Ụ -- LATIN CAPITAL LETTER U WITH DOT BELOW
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(225,187,167), Bry_.new_ints(225,187,166)) // ủ -> Ủ -- LATIN CAPITAL LETTER U WITH HOOK ABOVE
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(225,187,169), Bry_.new_ints(225,187,168)) // ứ -> Ứ -- LATIN CAPITAL LETTER U WITH HORN AND ACUTE
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(225,187,171), Bry_.new_ints(225,187,170)) // ừ -> Ừ -- LATIN CAPITAL LETTER U WITH HORN AND GRAVE
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(225,187,173), Bry_.new_ints(225,187,172)) // ử -> Ử -- LATIN CAPITAL LETTER U WITH HORN AND HOOK ABOVE
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(225,187,175), Bry_.new_ints(225,187,174)) // ữ -> Ữ -- LATIN CAPITAL LETTER U WITH HORN AND TILDE
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(225,187,177), Bry_.new_ints(225,187,176)) // ự -> Ự -- LATIN CAPITAL LETTER U WITH HORN AND DOT BELOW
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(225,187,179), Bry_.new_ints(225,187,178)) // ỳ -> Ỳ -- LATIN CAPITAL LETTER Y WITH GRAVE
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(225,187,181), Bry_.new_ints(225,187,180)) // ỵ -> Ỵ -- LATIN CAPITAL LETTER Y WITH DOT BELOW
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(225,187,183), Bry_.new_ints(225,187,182)) // ỷ -> Ỷ -- LATIN CAPITAL LETTER Y WITH HOOK ABOVE
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(225,187,185), Bry_.new_ints(225,187,184)) // ỹ -> Ỹ -- LATIN CAPITAL LETTER Y WITH TILDE
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(225,187,187), Bry_.new_ints(225,187,186)) // ỻ -> Ỻ -- LATIN CAPITAL LETTER MIDDLE-WELSH LL
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(225,187,189), Bry_.new_ints(225,187,188)) // ỽ -> Ỽ -- LATIN CAPITAL LETTER MIDDLE-WELSH V
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(225,187,191), Bry_.new_ints(225,187,190)) // ỿ -> Ỿ -- LATIN CAPITAL LETTER Y WITH LOOP
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(225,188,128), Bry_.new_ints(225,188,136)) // ἀ -> Ἀ -- GREEK SMALL LETTER ALPHA WITH PSILI
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(225,188,129), Bry_.new_ints(225,188,137)) // ἁ -> Ἁ -- GREEK SMALL LETTER ALPHA WITH DASIA
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(225,188,130), Bry_.new_ints(225,188,138)) // ἂ -> Ἂ -- GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(225,188,131), Bry_.new_ints(225,188,139)) // ἃ -> Ἃ -- GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(225,188,132), Bry_.new_ints(225,188,140)) // ἄ -> Ἄ -- GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(225,188,133), Bry_.new_ints(225,188,141)) // ἅ -> Ἅ -- GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(225,188,134), Bry_.new_ints(225,188,142)) // ἆ -> Ἆ -- GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(225,188,135), Bry_.new_ints(225,188,143)) // ἇ -> Ἇ -- GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(225,188,144), Bry_.new_ints(225,188,152)) // ἐ -> Ἐ -- GREEK SMALL LETTER EPSILON WITH PSILI
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(225,188,145), Bry_.new_ints(225,188,153)) // ἑ -> Ἑ -- GREEK SMALL LETTER EPSILON WITH DASIA
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(225,188,146), Bry_.new_ints(225,188,154)) // ἒ -> Ἒ -- GREEK SMALL LETTER EPSILON WITH PSILI AND VARIA
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(225,188,147), Bry_.new_ints(225,188,155)) // ἓ -> Ἓ -- GREEK SMALL LETTER EPSILON WITH DASIA AND VARIA
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(225,188,148), Bry_.new_ints(225,188,156)) // ἔ -> Ἔ -- GREEK SMALL LETTER EPSILON WITH PSILI AND OXIA
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(225,188,149), Bry_.new_ints(225,188,157)) // ἕ -> Ἕ -- GREEK SMALL LETTER EPSILON WITH DASIA AND OXIA
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(225,188,160), Bry_.new_ints(225,188,168)) // ἠ -> Ἠ -- GREEK SMALL LETTER ETA WITH PSILI
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(225,188,161), Bry_.new_ints(225,188,169)) // ἡ -> Ἡ -- GREEK SMALL LETTER ETA WITH DASIA
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(225,188,162), Bry_.new_ints(225,188,170)) // ἢ -> Ἢ -- GREEK SMALL LETTER ETA WITH PSILI AND VARIA
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(225,188,163), Bry_.new_ints(225,188,171)) // ἣ -> Ἣ -- GREEK SMALL LETTER ETA WITH DASIA AND VARIA
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(225,188,164), Bry_.new_ints(225,188,172)) // ἤ -> Ἤ -- GREEK SMALL LETTER ETA WITH PSILI AND OXIA
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(225,188,165), Bry_.new_ints(225,188,173)) // ἥ -> Ἥ -- GREEK SMALL LETTER ETA WITH DASIA AND OXIA
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(225,188,166), Bry_.new_ints(225,188,174)) // ἦ -> Ἦ -- GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(225,188,167), Bry_.new_ints(225,188,175)) // ἧ -> Ἧ -- GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(225,188,176), Bry_.new_ints(225,188,184)) // ἰ -> Ἰ -- GREEK SMALL LETTER IOTA WITH PSILI
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(225,188,177), Bry_.new_ints(225,188,185)) // ἱ -> Ἱ -- GREEK SMALL LETTER IOTA WITH DASIA
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(225,188,178), Bry_.new_ints(225,188,186)) // ἲ -> Ἲ -- GREEK SMALL LETTER IOTA WITH PSILI AND VARIA
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(225,188,179), Bry_.new_ints(225,188,187)) // ἳ -> Ἳ -- GREEK SMALL LETTER IOTA WITH DASIA AND VARIA
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(225,188,180), Bry_.new_ints(225,188,188)) // ἴ -> Ἴ -- GREEK SMALL LETTER IOTA WITH PSILI AND OXIA
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(225,188,181), Bry_.new_ints(225,188,189)) // ἵ -> Ἵ -- GREEK SMALL LETTER IOTA WITH DASIA AND OXIA
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(225,188,182), Bry_.new_ints(225,188,190)) // ἶ -> Ἶ -- GREEK SMALL LETTER IOTA WITH PSILI AND PERISPOMENI
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(225,188,183), Bry_.new_ints(225,188,191)) // ἷ -> Ἷ -- GREEK SMALL LETTER IOTA WITH DASIA AND PERISPOMENI
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(225,189,128), Bry_.new_ints(225,189,136)) // ὀ -> Ὀ -- GREEK SMALL LETTER OMICRON WITH PSILI
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(225,189,129), Bry_.new_ints(225,189,137)) // ὁ -> Ὁ -- GREEK SMALL LETTER OMICRON WITH DASIA
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(225,189,130), Bry_.new_ints(225,189,138)) // ὂ -> Ὂ -- GREEK SMALL LETTER OMICRON WITH PSILI AND VARIA
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(225,189,131), Bry_.new_ints(225,189,139)) // ὃ -> Ὃ -- GREEK SMALL LETTER OMICRON WITH DASIA AND VARIA
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(225,189,132), Bry_.new_ints(225,189,140)) // ὄ -> Ὄ -- GREEK SMALL LETTER OMICRON WITH PSILI AND OXIA
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(225,189,133), Bry_.new_ints(225,189,141)) // ὅ -> Ὅ -- GREEK SMALL LETTER OMICRON WITH DASIA AND OXIA
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(225,189,145), Bry_.new_ints(225,189,153)) // ὑ -> Ὑ -- GREEK SMALL LETTER UPSILON WITH DASIA
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(225,189,147), Bry_.new_ints(225,189,155)) // ὓ -> Ὓ -- GREEK SMALL LETTER UPSILON WITH DASIA AND VARIA
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(225,189,149), Bry_.new_ints(225,189,157)) // ὕ -> Ὕ -- GREEK SMALL LETTER UPSILON WITH DASIA AND OXIA
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(225,189,151), Bry_.new_ints(225,189,159)) // ὗ -> Ὗ -- GREEK SMALL LETTER UPSILON WITH DASIA AND PERISPOMENI
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(225,189,160), Bry_.new_ints(225,189,168)) // ὠ -> Ὠ -- GREEK SMALL LETTER OMEGA WITH PSILI
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(225,189,161), Bry_.new_ints(225,189,169)) // ὡ -> Ὡ -- GREEK SMALL LETTER OMEGA WITH DASIA
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(225,189,162), Bry_.new_ints(225,189,170)) // ὢ -> Ὢ -- GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(225,189,163), Bry_.new_ints(225,189,171)) // ὣ -> Ὣ -- GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(225,189,164), Bry_.new_ints(225,189,172)) // ὤ -> Ὤ -- GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(225,189,165), Bry_.new_ints(225,189,173)) // ὥ -> Ὥ -- GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(225,189,166), Bry_.new_ints(225,189,174)) // ὦ -> Ὦ -- GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(225,189,167), Bry_.new_ints(225,189,175)) // ὧ -> Ὧ -- GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(225,189,176), Bry_.new_ints(225,190,186)) // ὰ -> Ὰ -- GREEK SMALL LETTER ALPHA WITH VARIA
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(225,189,177), Bry_.new_ints(225,190,187)) // ά -> Ά -- GREEK SMALL LETTER ALPHA WITH OXIA
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(225,189,178), Bry_.new_ints(225,191,136)) // ὲ -> Ὲ -- GREEK SMALL LETTER EPSILON WITH VARIA
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(225,189,179), Bry_.new_ints(225,191,137)) // έ -> Έ -- GREEK SMALL LETTER EPSILON WITH OXIA
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(225,189,180), Bry_.new_ints(225,191,138)) // ὴ -> Ὴ -- GREEK SMALL LETTER ETA WITH VARIA
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(225,189,181), Bry_.new_ints(225,191,139)) // ή -> Ή -- GREEK SMALL LETTER ETA WITH OXIA
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(225,189,182), Bry_.new_ints(225,191,154)) // ὶ -> Ὶ -- GREEK SMALL LETTER IOTA WITH VARIA
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(225,189,183), Bry_.new_ints(225,191,155)) // ί -> Ί -- GREEK SMALL LETTER IOTA WITH OXIA
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(225,189,184), Bry_.new_ints(225,191,184)) // ὸ -> Ὸ -- GREEK SMALL LETTER OMICRON WITH VARIA
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(225,189,185), Bry_.new_ints(225,191,185)) // ό -> Ό -- GREEK SMALL LETTER OMICRON WITH OXIA
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(225,189,186), Bry_.new_ints(225,191,170)) // ὺ -> Ὺ -- GREEK SMALL LETTER UPSILON WITH VARIA
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(225,189,187), Bry_.new_ints(225,191,171)) // ύ -> Ύ -- GREEK SMALL LETTER UPSILON WITH OXIA
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(225,189,188), Bry_.new_ints(225,191,186)) // ὼ -> Ὼ -- GREEK SMALL LETTER OMEGA WITH VARIA
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(225,189,189), Bry_.new_ints(225,191,187)) // ώ -> Ώ -- GREEK SMALL LETTER OMEGA WITH OXIA
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(225,190,128), Bry_.new_ints(225,190,136)) // ᾀ -> ᾈ -- GREEK SMALL LETTER ALPHA WITH PSILI AND YPOGEGRAMMENI
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(225,190,129), Bry_.new_ints(225,190,137)) // ᾁ -> ᾉ -- GREEK SMALL LETTER ALPHA WITH DASIA AND YPOGEGRAMMENI
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(225,190,130), Bry_.new_ints(225,190,138)) // ᾂ -> ᾊ -- GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA AND YPOGEGRAMMENI
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(225,190,131), Bry_.new_ints(225,190,139)) // ᾃ -> ᾋ -- GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA AND YPOGEGRAMMENI
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(225,190,132), Bry_.new_ints(225,190,140)) // ᾄ -> ᾌ -- GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA AND YPOGEGRAMMENI
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(225,190,133), Bry_.new_ints(225,190,141)) // ᾅ -> ᾍ -- GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA AND YPOGEGRAMMENI
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(225,190,134), Bry_.new_ints(225,190,142)) // ᾆ -> ᾎ -- GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(225,190,135), Bry_.new_ints(225,190,143)) // ᾇ -> ᾏ -- GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(225,190,144), Bry_.new_ints(225,190,152)) // ᾐ -> ᾘ -- GREEK SMALL LETTER ETA WITH PSILI AND YPOGEGRAMMENI
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(225,190,145), Bry_.new_ints(225,190,153)) // ᾑ -> ᾙ -- GREEK SMALL LETTER ETA WITH DASIA AND YPOGEGRAMMENI
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(225,190,146), Bry_.new_ints(225,190,154)) // ᾒ -> ᾚ -- GREEK SMALL LETTER ETA WITH PSILI AND VARIA AND YPOGEGRAMMENI
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(225,190,147), Bry_.new_ints(225,190,155)) // ᾓ -> ᾛ -- GREEK SMALL LETTER ETA WITH DASIA AND VARIA AND YPOGEGRAMMENI
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(225,190,148), Bry_.new_ints(225,190,156)) // ᾔ -> ᾜ -- GREEK SMALL LETTER ETA WITH PSILI AND OXIA AND YPOGEGRAMMENI
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(225,190,149), Bry_.new_ints(225,190,157)) // ᾕ -> ᾝ -- GREEK SMALL LETTER ETA WITH DASIA AND OXIA AND YPOGEGRAMMENI
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(225,190,150), Bry_.new_ints(225,190,158)) // ᾖ -> ᾞ -- GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(225,190,151), Bry_.new_ints(225,190,159)) // ᾗ -> ᾟ -- GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(225,190,160), Bry_.new_ints(225,190,168)) // ᾠ -> ᾨ -- GREEK SMALL LETTER OMEGA WITH PSILI AND YPOGEGRAMMENI
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(225,190,161), Bry_.new_ints(225,190,169)) // ᾡ -> ᾩ -- GREEK SMALL LETTER OMEGA WITH DASIA AND YPOGEGRAMMENI
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(225,190,162), Bry_.new_ints(225,190,170)) // ᾢ -> ᾪ -- GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA AND YPOGEGRAMMENI
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(225,190,163), Bry_.new_ints(225,190,171)) // ᾣ -> ᾫ -- GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA AND YPOGEGRAMMENI
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(225,190,164), Bry_.new_ints(225,190,172)) // ᾤ -> ᾬ -- GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA AND YPOGEGRAMMENI
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(225,190,165), Bry_.new_ints(225,190,173)) // ᾥ -> ᾭ -- GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA AND YPOGEGRAMMENI
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(225,190,166), Bry_.new_ints(225,190,174)) // ᾦ -> ᾮ -- GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(225,190,167), Bry_.new_ints(225,190,175)) // ᾧ -> ᾯ -- GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(225,190,176), Bry_.new_ints(225,190,184)) // ᾰ -> Ᾰ -- GREEK SMALL LETTER ALPHA WITH VRACHY
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(225,190,177), Bry_.new_ints(225,190,185)) // ᾱ -> Ᾱ -- GREEK SMALL LETTER ALPHA WITH MACRON
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(225,190,179), Bry_.new_ints(225,190,188)) // ᾳ -> ᾼ -- GREEK SMALL LETTER ALPHA WITH YPOGEGRAMMENI
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(225,191,131), Bry_.new_ints(225,191,140)) // ῃ -> ῌ -- GREEK SMALL LETTER ETA WITH YPOGEGRAMMENI
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(225,191,144), Bry_.new_ints(225,191,152)) // ῐ -> Ῐ -- GREEK SMALL LETTER IOTA WITH VRACHY
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(225,191,145), Bry_.new_ints(225,191,153)) // ῑ -> Ῑ -- GREEK SMALL LETTER IOTA WITH MACRON
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(225,191,160), Bry_.new_ints(225,191,168)) // ῠ -> Ῠ -- GREEK SMALL LETTER UPSILON WITH VRACHY
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(225,191,161), Bry_.new_ints(225,191,169)) // ῡ -> Ῡ -- GREEK SMALL LETTER UPSILON WITH MACRON
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(225,191,165), Bry_.new_ints(225,191,172)) // ῥ -> Ῥ -- GREEK SMALL LETTER RHO WITH DASIA
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(225,191,179), Bry_.new_ints(225,191,188)) // ῳ -> ῼ -- GREEK SMALL LETTER OMEGA WITH YPOGEGRAMMENI
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(226,133,142), Bry_.new_ints(226,132,178)) // ⅎ -> Ⅎ -- TURNED F
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(226,133,176), Bry_.new_ints(226,133,160)) // ⅰ -> Ⅰ -- ROMAN NUMERAL ONE
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(226,133,177), Bry_.new_ints(226,133,161)) // ⅱ -> Ⅱ -- ROMAN NUMERAL TWO
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(226,133,178), Bry_.new_ints(226,133,162)) // ⅲ -> Ⅲ -- ROMAN NUMERAL THREE
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(226,133,179), Bry_.new_ints(226,133,163)) // ⅳ -> Ⅳ -- ROMAN NUMERAL FOUR
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(226,133,180), Bry_.new_ints(226,133,164)) // ⅴ -> Ⅴ -- ROMAN NUMERAL FIVE
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(226,133,181), Bry_.new_ints(226,133,165)) // ⅵ -> Ⅵ -- ROMAN NUMERAL SIX
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(226,133,182), Bry_.new_ints(226,133,166)) // ⅶ -> Ⅶ -- ROMAN NUMERAL SEVEN
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(226,133,183), Bry_.new_ints(226,133,167)) // ⅷ -> Ⅷ -- ROMAN NUMERAL EIGHT
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(226,133,184), Bry_.new_ints(226,133,168)) // ⅸ -> Ⅸ -- ROMAN NUMERAL NINE
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(226,133,185), Bry_.new_ints(226,133,169)) // ⅹ -> Ⅹ -- ROMAN NUMERAL TEN
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(226,133,186), Bry_.new_ints(226,133,170)) // ⅺ -> Ⅺ -- ROMAN NUMERAL ELEVEN
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(226,133,187), Bry_.new_ints(226,133,171)) // ⅻ -> Ⅻ -- ROMAN NUMERAL TWELVE
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(226,133,188), Bry_.new_ints(226,133,172)) // ⅼ -> Ⅼ -- ROMAN NUMERAL FIFTY
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(226,133,189), Bry_.new_ints(226,133,173)) // ⅽ -> Ⅽ -- ROMAN NUMERAL ONE HUNDRED
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(226,133,190), Bry_.new_ints(226,133,174)) // ⅾ -> Ⅾ -- ROMAN NUMERAL FIVE HUNDRED
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(226,133,191), Bry_.new_ints(226,133,175)) // ⅿ -> Ⅿ -- ROMAN NUMERAL ONE THOUSAND
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(226,134,132), Bry_.new_ints(226,134,131)) // ↄ -> Ↄ -- ROMAN NUMERAL REVERSED ONE HUNDRED
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(226,147,144), Bry_.new_ints(226,146,182)) // ⓐ -> Ⓐ -- CIRCLED LATIN CAPITAL LETTER A
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(226,147,145), Bry_.new_ints(226,146,183)) // ⓑ -> Ⓑ -- CIRCLED LATIN CAPITAL LETTER B
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(226,147,146), Bry_.new_ints(226,146,184)) // ⓒ -> Ⓒ -- CIRCLED LATIN CAPITAL LETTER C
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(226,147,147), Bry_.new_ints(226,146,185)) // ⓓ -> Ⓓ -- CIRCLED LATIN CAPITAL LETTER D
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(226,147,148), Bry_.new_ints(226,146,186)) // ⓔ -> Ⓔ -- CIRCLED LATIN CAPITAL LETTER E
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(226,147,149), Bry_.new_ints(226,146,187)) // ⓕ -> Ⓕ -- CIRCLED LATIN CAPITAL LETTER F
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(226,147,150), Bry_.new_ints(226,146,188)) // ⓖ -> Ⓖ -- CIRCLED LATIN CAPITAL LETTER G
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(226,147,151), Bry_.new_ints(226,146,189)) // ⓗ -> Ⓗ -- CIRCLED LATIN CAPITAL LETTER H
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(226,147,152), Bry_.new_ints(226,146,190)) // ⓘ -> Ⓘ -- CIRCLED LATIN CAPITAL LETTER I
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(226,147,153), Bry_.new_ints(226,146,191)) // ⓙ -> Ⓙ -- CIRCLED LATIN CAPITAL LETTER J
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(226,147,154), Bry_.new_ints(226,147,128)) // ⓚ -> Ⓚ -- CIRCLED LATIN CAPITAL LETTER K
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(226,147,155), Bry_.new_ints(226,147,129)) // ⓛ -> Ⓛ -- CIRCLED LATIN CAPITAL LETTER L
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(226,147,156), Bry_.new_ints(226,147,130)) // ⓜ -> Ⓜ -- CIRCLED LATIN CAPITAL LETTER M
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(226,147,157), Bry_.new_ints(226,147,131)) // ⓝ -> Ⓝ -- CIRCLED LATIN CAPITAL LETTER N
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(226,147,158), Bry_.new_ints(226,147,132)) // ⓞ -> Ⓞ -- CIRCLED LATIN CAPITAL LETTER O
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(226,147,159), Bry_.new_ints(226,147,133)) // ⓟ -> Ⓟ -- CIRCLED LATIN CAPITAL LETTER P
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(226,147,160), Bry_.new_ints(226,147,134)) // ⓠ -> Ⓠ -- CIRCLED LATIN CAPITAL LETTER Q
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(226,147,161), Bry_.new_ints(226,147,135)) // ⓡ -> Ⓡ -- CIRCLED LATIN CAPITAL LETTER R
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(226,147,162), Bry_.new_ints(226,147,136)) // ⓢ -> Ⓢ -- CIRCLED LATIN CAPITAL LETTER S
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(226,147,163), Bry_.new_ints(226,147,137)) // ⓣ -> Ⓣ -- CIRCLED LATIN CAPITAL LETTER T
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(226,147,164), Bry_.new_ints(226,147,138)) // ⓤ -> Ⓤ -- CIRCLED LATIN CAPITAL LETTER U
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(226,147,165), Bry_.new_ints(226,147,139)) // ⓥ -> Ⓥ -- CIRCLED LATIN CAPITAL LETTER V
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(226,147,166), Bry_.new_ints(226,147,140)) // ⓦ -> Ⓦ -- CIRCLED LATIN CAPITAL LETTER W
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(226,147,167), Bry_.new_ints(226,147,141)) // ⓧ -> Ⓧ -- CIRCLED LATIN CAPITAL LETTER X
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(226,147,168), Bry_.new_ints(226,147,142)) // ⓨ -> Ⓨ -- CIRCLED LATIN CAPITAL LETTER Y
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(226,147,169), Bry_.new_ints(226,147,143)) // ⓩ -> Ⓩ -- CIRCLED LATIN CAPITAL LETTER Z
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(226,176,176), Bry_.new_ints(226,176,128)) // ⰰ -> Ⰰ -- GLAGOLITIC CAPITAL LETTER AZU
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(226,176,177), Bry_.new_ints(226,176,129)) // ⰱ -> Ⰱ -- GLAGOLITIC CAPITAL LETTER BUKY
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(226,176,178), Bry_.new_ints(226,176,130)) // ⰲ -> Ⰲ -- GLAGOLITIC CAPITAL LETTER VEDE
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(226,176,179), Bry_.new_ints(226,176,131)) // ⰳ -> Ⰳ -- GLAGOLITIC CAPITAL LETTER GLAGOLI
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(226,176,180), Bry_.new_ints(226,176,132)) // ⰴ -> Ⰴ -- GLAGOLITIC CAPITAL LETTER DOBRO
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(226,176,181), Bry_.new_ints(226,176,133)) // ⰵ -> Ⰵ -- GLAGOLITIC CAPITAL LETTER YESTU
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(226,176,182), Bry_.new_ints(226,176,134)) // ⰶ -> Ⰶ -- GLAGOLITIC CAPITAL LETTER ZHIVETE
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(226,176,183), Bry_.new_ints(226,176,135)) // ⰷ -> Ⰷ -- GLAGOLITIC CAPITAL LETTER DZELO
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(226,176,184), Bry_.new_ints(226,176,136)) // ⰸ -> Ⰸ -- GLAGOLITIC CAPITAL LETTER ZEMLJA
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(226,176,185), Bry_.new_ints(226,176,137)) // ⰹ -> Ⰹ -- GLAGOLITIC CAPITAL LETTER IZHE
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(226,176,186), Bry_.new_ints(226,176,138)) // ⰺ -> Ⰺ -- GLAGOLITIC CAPITAL LETTER INITIAL IZHE
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(226,176,187), Bry_.new_ints(226,176,139)) // ⰻ -> Ⰻ -- GLAGOLITIC CAPITAL LETTER I
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(226,176,188), Bry_.new_ints(226,176,140)) // ⰼ -> Ⰼ -- GLAGOLITIC CAPITAL LETTER DJERVI
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(226,176,189), Bry_.new_ints(226,176,141)) // ⰽ -> Ⰽ -- GLAGOLITIC CAPITAL LETTER KAKO
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(226,176,190), Bry_.new_ints(226,176,142)) // ⰾ -> Ⰾ -- GLAGOLITIC CAPITAL LETTER LJUDIJE
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(226,176,191), Bry_.new_ints(226,176,143)) // ⰿ -> Ⰿ -- GLAGOLITIC CAPITAL LETTER MYSLITE
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(226,177,128), Bry_.new_ints(226,176,144)) // ⱀ -> Ⱀ -- GLAGOLITIC CAPITAL LETTER NASHI
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(226,177,129), Bry_.new_ints(226,176,145)) // ⱁ -> Ⱁ -- GLAGOLITIC CAPITAL LETTER ONU
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(226,177,130), Bry_.new_ints(226,176,146)) // ⱂ -> Ⱂ -- GLAGOLITIC CAPITAL LETTER POKOJI
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(226,177,131), Bry_.new_ints(226,176,147)) // ⱃ -> Ⱃ -- GLAGOLITIC CAPITAL LETTER RITSI
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(226,177,132), Bry_.new_ints(226,176,148)) // ⱄ -> Ⱄ -- GLAGOLITIC CAPITAL LETTER SLOVO
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(226,177,133), Bry_.new_ints(226,176,149)) // ⱅ -> Ⱅ -- GLAGOLITIC CAPITAL LETTER TVRIDO
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(226,177,134), Bry_.new_ints(226,176,150)) // ⱆ -> Ⱆ -- GLAGOLITIC CAPITAL LETTER UKU
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(226,177,135), Bry_.new_ints(226,176,151)) // ⱇ -> Ⱇ -- GLAGOLITIC CAPITAL LETTER FRITU
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(226,177,136), Bry_.new_ints(226,176,152)) // ⱈ -> Ⱈ -- GLAGOLITIC CAPITAL LETTER HERU
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(226,177,137), Bry_.new_ints(226,176,153)) // ⱉ -> Ⱉ -- GLAGOLITIC CAPITAL LETTER OTU
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(226,177,138), Bry_.new_ints(226,176,154)) // ⱊ -> Ⱊ -- GLAGOLITIC CAPITAL LETTER PE
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(226,177,139), Bry_.new_ints(226,176,155)) // ⱋ -> Ⱋ -- GLAGOLITIC CAPITAL LETTER SHTA
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(226,177,140), Bry_.new_ints(226,176,156)) // ⱌ -> Ⱌ -- GLAGOLITIC CAPITAL LETTER TSI
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(226,177,141), Bry_.new_ints(226,176,157)) // ⱍ -> Ⱍ -- GLAGOLITIC CAPITAL LETTER CHRIVI
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(226,177,142), Bry_.new_ints(226,176,158)) // ⱎ -> Ⱎ -- GLAGOLITIC CAPITAL LETTER SHA
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(226,177,143), Bry_.new_ints(226,176,159)) // ⱏ -> Ⱏ -- GLAGOLITIC CAPITAL LETTER YERU
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(226,177,144), Bry_.new_ints(226,176,160)) // ⱐ -> Ⱐ -- GLAGOLITIC CAPITAL LETTER YERI
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(226,177,145), Bry_.new_ints(226,176,161)) // ⱑ -> Ⱑ -- GLAGOLITIC CAPITAL LETTER YATI
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(226,177,146), Bry_.new_ints(226,176,162)) // ⱒ -> Ⱒ -- GLAGOLITIC CAPITAL LETTER SPIDERY HA
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(226,177,147), Bry_.new_ints(226,176,163)) // ⱓ -> Ⱓ -- GLAGOLITIC CAPITAL LETTER YU
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(226,177,148), Bry_.new_ints(226,176,164)) // ⱔ -> Ⱔ -- GLAGOLITIC CAPITAL LETTER SMALL YUS
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(226,177,149), Bry_.new_ints(226,176,165)) // ⱕ -> Ⱕ -- GLAGOLITIC CAPITAL LETTER SMALL YUS WITH TAIL
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(226,177,150), Bry_.new_ints(226,176,166)) // ⱖ -> Ⱖ -- GLAGOLITIC CAPITAL LETTER YO
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(226,177,151), Bry_.new_ints(226,176,167)) // ⱗ -> Ⱗ -- GLAGOLITIC CAPITAL LETTER IOTATED SMALL YUS
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(226,177,152), Bry_.new_ints(226,176,168)) // ⱘ -> Ⱘ -- GLAGOLITIC CAPITAL LETTER BIG YUS
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(226,177,153), Bry_.new_ints(226,176,169)) // ⱙ -> Ⱙ -- GLAGOLITIC CAPITAL LETTER IOTATED BIG YUS
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(226,177,154), Bry_.new_ints(226,176,170)) // ⱚ -> Ⱚ -- GLAGOLITIC CAPITAL LETTER FITA
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(226,177,155), Bry_.new_ints(226,176,171)) // ⱛ -> Ⱛ -- GLAGOLITIC CAPITAL LETTER IZHITSA
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(226,177,156), Bry_.new_ints(226,176,172)) // ⱜ -> Ⱜ -- GLAGOLITIC CAPITAL LETTER SHTAPIC
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(226,177,157), Bry_.new_ints(226,176,173)) // ⱝ -> Ⱝ -- GLAGOLITIC CAPITAL LETTER TROKUTASTI A
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(226,177,158), Bry_.new_ints(226,176,174)) // ⱞ -> Ⱞ -- GLAGOLITIC CAPITAL LETTER LATINATE MYSLITE
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(226,177,161), Bry_.new_ints(226,177,160)) // ⱡ -> Ⱡ -- LATIN CAPITAL LETTER L WITH DOUBLE BAR
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(226,177,168), Bry_.new_ints(226,177,167)) // ⱨ -> Ⱨ -- LATIN CAPITAL LETTER H WITH DESCENDER
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(226,177,170), Bry_.new_ints(226,177,169)) // ⱪ -> Ⱪ -- LATIN CAPITAL LETTER K WITH DESCENDER
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(226,177,172), Bry_.new_ints(226,177,171)) // ⱬ -> Ⱬ -- LATIN CAPITAL LETTER Z WITH DESCENDER
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(226,177,179), Bry_.new_ints(226,177,178)) // ⱳ -> Ⱳ -- LATIN CAPITAL LETTER W WITH HOOK
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(226,177,182), Bry_.new_ints(226,177,181)) // ⱶ -> Ⱶ -- LATIN CAPITAL LETTER HALF H
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(226,178,129), Bry_.new_ints(226,178,128)) // ⲁ -> Ⲁ -- COPTIC CAPITAL LETTER ALFA
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(226,178,131), Bry_.new_ints(226,178,130)) // ⲃ -> Ⲃ -- COPTIC CAPITAL LETTER VIDA
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(226,178,133), Bry_.new_ints(226,178,132)) // ⲅ -> Ⲅ -- COPTIC CAPITAL LETTER GAMMA
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(226,178,135), Bry_.new_ints(226,178,134)) // ⲇ -> Ⲇ -- COPTIC CAPITAL LETTER DALDA
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(226,178,137), Bry_.new_ints(226,178,136)) // ⲉ -> Ⲉ -- COPTIC CAPITAL LETTER EIE
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(226,178,139), Bry_.new_ints(226,178,138)) // ⲋ -> Ⲋ -- COPTIC CAPITAL LETTER SOU
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(226,178,141), Bry_.new_ints(226,178,140)) // ⲍ -> Ⲍ -- COPTIC CAPITAL LETTER ZATA
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(226,178,143), Bry_.new_ints(226,178,142)) // ⲏ -> Ⲏ -- COPTIC CAPITAL LETTER HATE
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(226,178,145), Bry_.new_ints(226,178,144)) // ⲑ -> Ⲑ -- COPTIC CAPITAL LETTER THETHE
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(226,178,147), Bry_.new_ints(226,178,146)) // ⲓ -> Ⲓ -- COPTIC CAPITAL LETTER IAUDA
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(226,178,149), Bry_.new_ints(226,178,148)) // ⲕ -> Ⲕ -- COPTIC CAPITAL LETTER KAPA
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(226,178,151), Bry_.new_ints(226,178,150)) // ⲗ -> Ⲗ -- COPTIC CAPITAL LETTER LAULA
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(226,178,153), Bry_.new_ints(226,178,152)) // ⲙ -> Ⲙ -- COPTIC CAPITAL LETTER MI
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(226,178,155), Bry_.new_ints(226,178,154)) // ⲛ -> Ⲛ -- COPTIC CAPITAL LETTER NI
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(226,178,157), Bry_.new_ints(226,178,156)) // ⲝ -> Ⲝ -- COPTIC CAPITAL LETTER KSI
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(226,178,159), Bry_.new_ints(226,178,158)) // ⲟ -> Ⲟ -- COPTIC CAPITAL LETTER O
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(226,178,161), Bry_.new_ints(226,178,160)) // ⲡ -> Ⲡ -- COPTIC CAPITAL LETTER PI
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(226,178,163), Bry_.new_ints(226,178,162)) // ⲣ -> Ⲣ -- COPTIC CAPITAL LETTER RO
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(226,178,165), Bry_.new_ints(226,178,164)) // ⲥ -> Ⲥ -- COPTIC CAPITAL LETTER SIMA
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(226,178,167), Bry_.new_ints(226,178,166)) // ⲧ -> Ⲧ -- COPTIC CAPITAL LETTER TAU
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(226,178,169), Bry_.new_ints(226,178,168)) // ⲩ -> Ⲩ -- COPTIC CAPITAL LETTER UA
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(226,178,171), Bry_.new_ints(226,178,170)) // ⲫ -> Ⲫ -- COPTIC CAPITAL LETTER FI
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(226,178,173), Bry_.new_ints(226,178,172)) // ⲭ -> Ⲭ -- COPTIC CAPITAL LETTER KHI
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(226,178,175), Bry_.new_ints(226,178,174)) // ⲯ -> Ⲯ -- COPTIC CAPITAL LETTER PSI
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(226,178,177), Bry_.new_ints(226,178,176)) // ⲱ -> Ⲱ -- COPTIC CAPITAL LETTER OOU
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(226,178,179), Bry_.new_ints(226,178,178)) // ⲳ -> Ⲳ -- COPTIC CAPITAL LETTER DIALECT-P ALEF
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(226,178,181), Bry_.new_ints(226,178,180)) // ⲵ -> Ⲵ -- COPTIC CAPITAL LETTER OLD COPTIC AIN
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(226,178,183), Bry_.new_ints(226,178,182)) // ⲷ -> Ⲷ -- COPTIC CAPITAL LETTER CRYPTOGRAMMIC EIE
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(226,178,185), Bry_.new_ints(226,178,184)) // ⲹ -> Ⲹ -- COPTIC CAPITAL LETTER DIALECT-P KAPA
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(226,178,187), Bry_.new_ints(226,178,186)) // ⲻ -> Ⲻ -- COPTIC CAPITAL LETTER DIALECT-P NI
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(226,178,189), Bry_.new_ints(226,178,188)) // ⲽ -> Ⲽ -- COPTIC CAPITAL LETTER CRYPTOGRAMMIC NI
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(226,178,191), Bry_.new_ints(226,178,190)) // ⲿ -> Ⲿ -- COPTIC CAPITAL LETTER OLD COPTIC OOU
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(226,179,129), Bry_.new_ints(226,179,128)) // ⳁ -> Ⳁ -- COPTIC CAPITAL LETTER SAMPI
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(226,179,131), Bry_.new_ints(226,179,130)) // ⳃ -> Ⳃ -- COPTIC CAPITAL LETTER CROSSED SHEI
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(226,179,133), Bry_.new_ints(226,179,132)) // ⳅ -> Ⳅ -- COPTIC CAPITAL LETTER OLD COPTIC SHEI
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(226,179,135), Bry_.new_ints(226,179,134)) // ⳇ -> Ⳇ -- COPTIC CAPITAL LETTER OLD COPTIC ESH
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(226,179,137), Bry_.new_ints(226,179,136)) // ⳉ -> Ⳉ -- COPTIC CAPITAL LETTER AKHMIMIC KHEI
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(226,179,139), Bry_.new_ints(226,179,138)) // ⳋ -> Ⳋ -- COPTIC CAPITAL LETTER DIALECT-P HORI
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(226,179,141), Bry_.new_ints(226,179,140)) // ⳍ -> Ⳍ -- COPTIC CAPITAL LETTER OLD COPTIC HORI
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(226,179,143), Bry_.new_ints(226,179,142)) // ⳏ -> Ⳏ -- COPTIC CAPITAL LETTER OLD COPTIC HA
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(226,179,145), Bry_.new_ints(226,179,144)) // ⳑ -> Ⳑ -- COPTIC CAPITAL LETTER L-SHAPED HA
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(226,179,147), Bry_.new_ints(226,179,146)) // ⳓ -> Ⳓ -- COPTIC CAPITAL LETTER OLD COPTIC HEI
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(226,179,149), Bry_.new_ints(226,179,148)) // ⳕ -> Ⳕ -- COPTIC CAPITAL LETTER OLD COPTIC HAT
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(226,179,151), Bry_.new_ints(226,179,150)) // ⳗ -> Ⳗ -- COPTIC CAPITAL LETTER OLD COPTIC GANGIA
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(226,179,153), Bry_.new_ints(226,179,152)) // ⳙ -> Ⳙ -- COPTIC CAPITAL LETTER OLD COPTIC DJA
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(226,179,155), Bry_.new_ints(226,179,154)) // ⳛ -> Ⳛ -- COPTIC CAPITAL LETTER OLD COPTIC SHIMA
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(226,179,157), Bry_.new_ints(226,179,156)) // ⳝ -> Ⳝ -- COPTIC CAPITAL LETTER OLD NUBIAN SHIMA
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(226,179,159), Bry_.new_ints(226,179,158)) // ⳟ -> Ⳟ -- COPTIC CAPITAL LETTER OLD NUBIAN NGI
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(226,179,161), Bry_.new_ints(226,179,160)) // ⳡ -> Ⳡ -- COPTIC CAPITAL LETTER OLD NUBIAN NYI
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(226,179,163), Bry_.new_ints(226,179,162)) // ⳣ -> Ⳣ -- COPTIC CAPITAL LETTER OLD NUBIAN WAU
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(226,179,172), Bry_.new_ints(226,179,171)) // ⳬ -> Ⳬ -- COPTIC CAPITAL LETTER CRYPTOGRAMMIC SHEI
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(226,179,174), Bry_.new_ints(226,179,173)) // ⳮ -> Ⳮ -- COPTIC CAPITAL LETTER CRYPTOGRAMMIC GANGIA
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(226,179,179), Bry_.new_ints(226,179,178)) // ⳳ -> Ⳳ -- COPTIC CAPITAL LETTER BOHAIRIC KHEI
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(234,153,129), Bry_.new_ints(234,153,128)) // ꙁ -> Ꙁ -- CYRILLIC CAPITAL LETTER ZEMLYA
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(234,153,131), Bry_.new_ints(234,153,130)) // ꙃ -> Ꙃ -- CYRILLIC CAPITAL LETTER DZELO
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(234,153,133), Bry_.new_ints(234,153,132)) // ꙅ -> Ꙅ -- CYRILLIC CAPITAL LETTER REVERSED DZE
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(234,153,135), Bry_.new_ints(234,153,134)) // ꙇ -> Ꙇ -- CYRILLIC CAPITAL LETTER IOTA
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(234,153,137), Bry_.new_ints(234,153,136)) // ꙉ -> Ꙉ -- CYRILLIC CAPITAL LETTER DJERV
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(234,153,139), Bry_.new_ints(234,153,138)) // ꙋ -> Ꙋ -- CYRILLIC CAPITAL LETTER MONOGRAPH UK
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(234,153,141), Bry_.new_ints(234,153,140)) // ꙍ -> Ꙍ -- CYRILLIC CAPITAL LETTER BROAD OMEGA
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(234,153,143), Bry_.new_ints(234,153,142)) // ꙏ -> Ꙏ -- CYRILLIC CAPITAL LETTER NEUTRAL YER
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(234,153,145), Bry_.new_ints(234,153,144)) // ꙑ -> Ꙑ -- CYRILLIC CAPITAL LETTER YERU WITH BACK YER
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(234,153,147), Bry_.new_ints(234,153,146)) // ꙓ -> Ꙓ -- CYRILLIC CAPITAL LETTER IOTIFIED YAT
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(234,153,149), Bry_.new_ints(234,153,148)) // ꙕ -> Ꙕ -- CYRILLIC CAPITAL LETTER REVERSED YU
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(234,153,151), Bry_.new_ints(234,153,150)) // ꙗ -> Ꙗ -- CYRILLIC CAPITAL LETTER IOTIFIED A
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(234,153,153), Bry_.new_ints(234,153,152)) // ꙙ -> Ꙙ -- CYRILLIC CAPITAL LETTER CLOSED LITTLE YUS
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(234,153,155), Bry_.new_ints(234,153,154)) // ꙛ -> Ꙛ -- CYRILLIC CAPITAL LETTER BLENDED YUS
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(234,153,157), Bry_.new_ints(234,153,156)) // ꙝ -> Ꙝ -- CYRILLIC CAPITAL LETTER IOTIFIED CLOSED LITTLE YUS
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(234,153,159), Bry_.new_ints(234,153,158)) // ꙟ -> Ꙟ -- CYRILLIC CAPITAL LETTER YN
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(234,153,161), Bry_.new_ints(234,153,160)) // ꙡ -> Ꙡ -- CYRILLIC CAPITAL LETTER REVERSED TSE
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(234,153,163), Bry_.new_ints(234,153,162)) // ꙣ -> Ꙣ -- CYRILLIC CAPITAL LETTER SOFT DE
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(234,153,165), Bry_.new_ints(234,153,164)) // ꙥ -> Ꙥ -- CYRILLIC CAPITAL LETTER SOFT EL
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(234,153,167), Bry_.new_ints(234,153,166)) // ꙧ -> Ꙧ -- CYRILLIC CAPITAL LETTER SOFT EM
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(234,153,169), Bry_.new_ints(234,153,168)) // ꙩ -> Ꙩ -- CYRILLIC CAPITAL LETTER MONOCULAR O
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(234,153,171), Bry_.new_ints(234,153,170)) // ꙫ -> Ꙫ -- CYRILLIC CAPITAL LETTER BINOCULAR O
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(234,153,173), Bry_.new_ints(234,153,172)) // ꙭ -> Ꙭ -- CYRILLIC CAPITAL LETTER DOUBLE MONOCULAR O
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(234,154,129), Bry_.new_ints(234,154,128)) // ꚁ -> Ꚁ -- CYRILLIC CAPITAL LETTER DWE
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(234,154,131), Bry_.new_ints(234,154,130)) // ꚃ -> Ꚃ -- CYRILLIC CAPITAL LETTER DZWE
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(234,154,133), Bry_.new_ints(234,154,132)) // ꚅ -> Ꚅ -- CYRILLIC CAPITAL LETTER ZHWE
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(234,154,135), Bry_.new_ints(234,154,134)) // ꚇ -> Ꚇ -- CYRILLIC CAPITAL LETTER CCHE
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(234,154,137), Bry_.new_ints(234,154,136)) // ꚉ -> Ꚉ -- CYRILLIC CAPITAL LETTER DZZE
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(234,154,139), Bry_.new_ints(234,154,138)) // ꚋ -> Ꚋ -- CYRILLIC CAPITAL LETTER TE WITH MIDDLE HOOK
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(234,154,141), Bry_.new_ints(234,154,140)) // ꚍ -> Ꚍ -- CYRILLIC CAPITAL LETTER TWE
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(234,154,143), Bry_.new_ints(234,154,142)) // ꚏ -> Ꚏ -- CYRILLIC CAPITAL LETTER TSWE
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(234,154,145), Bry_.new_ints(234,154,144)) // ꚑ -> Ꚑ -- CYRILLIC CAPITAL LETTER TSSE
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(234,154,147), Bry_.new_ints(234,154,146)) // ꚓ -> Ꚓ -- CYRILLIC CAPITAL LETTER TCHE
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(234,154,149), Bry_.new_ints(234,154,148)) // ꚕ -> Ꚕ -- CYRILLIC CAPITAL LETTER HWE
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(234,154,151), Bry_.new_ints(234,154,150)) // ꚗ -> Ꚗ -- CYRILLIC CAPITAL LETTER SHWE
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(234,156,163), Bry_.new_ints(234,156,162)) // ꜣ -> Ꜣ -- LATIN CAPITAL LETTER EGYPTOLOGICAL ALEF
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(234,156,165), Bry_.new_ints(234,156,164)) // ꜥ -> Ꜥ -- LATIN CAPITAL LETTER EGYPTOLOGICAL AIN
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(234,156,167), Bry_.new_ints(234,156,166)) // ꜧ -> Ꜧ -- LATIN CAPITAL LETTER HENG
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(234,156,169), Bry_.new_ints(234,156,168)) // ꜩ -> Ꜩ -- LATIN CAPITAL LETTER TZ
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(234,156,171), Bry_.new_ints(234,156,170)) // ꜫ -> Ꜫ -- LATIN CAPITAL LETTER TRESILLO
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(234,156,173), Bry_.new_ints(234,156,172)) // ꜭ -> Ꜭ -- LATIN CAPITAL LETTER CUATRILLO
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(234,156,175), Bry_.new_ints(234,156,174)) // ꜯ -> Ꜯ -- LATIN CAPITAL LETTER CUATRILLO WITH COMMA
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(234,156,179), Bry_.new_ints(234,156,178)) // ꜳ -> Ꜳ -- LATIN CAPITAL LETTER AA
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(234,156,181), Bry_.new_ints(234,156,180)) // ꜵ -> Ꜵ -- LATIN CAPITAL LETTER AO
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(234,156,183), Bry_.new_ints(234,156,182)) // ꜷ -> Ꜷ -- LATIN CAPITAL LETTER AU
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(234,156,185), Bry_.new_ints(234,156,184)) // ꜹ -> Ꜹ -- LATIN CAPITAL LETTER AV
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(234,156,187), Bry_.new_ints(234,156,186)) // ꜻ -> Ꜻ -- LATIN CAPITAL LETTER AV WITH HORIZONTAL BAR
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(234,156,189), Bry_.new_ints(234,156,188)) // ꜽ -> Ꜽ -- LATIN CAPITAL LETTER AY
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(234,156,191), Bry_.new_ints(234,156,190)) // ꜿ -> Ꜿ -- LATIN CAPITAL LETTER REVERSED C WITH DOT
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(234,157,129), Bry_.new_ints(234,157,128)) // ꝁ -> Ꝁ -- LATIN CAPITAL LETTER K WITH STROKE
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(234,157,131), Bry_.new_ints(234,157,130)) // ꝃ -> Ꝃ -- LATIN CAPITAL LETTER K WITH DIAGONAL STROKE
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(234,157,133), Bry_.new_ints(234,157,132)) // ꝅ -> Ꝅ -- LATIN CAPITAL LETTER K WITH STROKE AND DIAGONAL STROKE
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(234,157,135), Bry_.new_ints(234,157,134)) // ꝇ -> Ꝇ -- LATIN CAPITAL LETTER BROKEN L
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(234,157,137), Bry_.new_ints(234,157,136)) // ꝉ -> Ꝉ -- LATIN CAPITAL LETTER L WITH HIGH STROKE
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(234,157,139), Bry_.new_ints(234,157,138)) // ꝋ -> Ꝋ -- LATIN CAPITAL LETTER O WITH LONG STROKE OVERLAY
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(234,157,141), Bry_.new_ints(234,157,140)) // ꝍ -> Ꝍ -- LATIN CAPITAL LETTER O WITH LOOP
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(234,157,143), Bry_.new_ints(234,157,142)) // ꝏ -> Ꝏ -- LATIN CAPITAL LETTER OO
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(234,157,145), Bry_.new_ints(234,157,144)) // ꝑ -> Ꝑ -- LATIN CAPITAL LETTER P WITH STROKE THROUGH DESCENDER
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(234,157,147), Bry_.new_ints(234,157,146)) // ꝓ -> Ꝓ -- LATIN CAPITAL LETTER P WITH FLOURISH
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(234,157,149), Bry_.new_ints(234,157,148)) // ꝕ -> Ꝕ -- LATIN CAPITAL LETTER P WITH SQUIRREL TAIL
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(234,157,151), Bry_.new_ints(234,157,150)) // ꝗ -> Ꝗ -- LATIN CAPITAL LETTER Q WITH STROKE THROUGH DESCENDER
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(234,157,153), Bry_.new_ints(234,157,152)) // ꝙ -> Ꝙ -- LATIN CAPITAL LETTER Q WITH DIAGONAL STROKE
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(234,157,155), Bry_.new_ints(234,157,154)) // ꝛ -> Ꝛ -- LATIN CAPITAL LETTER R ROTUNDA
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(234,157,157), Bry_.new_ints(234,157,156)) // ꝝ -> Ꝝ -- LATIN CAPITAL LETTER RUM ROTUNDA
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(234,157,159), Bry_.new_ints(234,157,158)) // ꝟ -> Ꝟ -- LATIN CAPITAL LETTER V WITH DIAGONAL STROKE
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(234,157,161), Bry_.new_ints(234,157,160)) // ꝡ -> Ꝡ -- LATIN CAPITAL LETTER VY
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(234,157,163), Bry_.new_ints(234,157,162)) // ꝣ -> Ꝣ -- LATIN CAPITAL LETTER VISIGOTHIC Z
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(234,157,165), Bry_.new_ints(234,157,164)) // ꝥ -> Ꝥ -- LATIN CAPITAL LETTER THORN WITH STROKE
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(234,157,167), Bry_.new_ints(234,157,166)) // ꝧ -> Ꝧ -- LATIN CAPITAL LETTER THORN WITH STROKE THROUGH DESCENDER
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(234,157,169), Bry_.new_ints(234,157,168)) // ꝩ -> Ꝩ -- LATIN CAPITAL LETTER VEND
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(234,157,171), Bry_.new_ints(234,157,170)) // ꝫ -> Ꝫ -- LATIN CAPITAL LETTER ET
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(234,157,173), Bry_.new_ints(234,157,172)) // ꝭ -> Ꝭ -- LATIN CAPITAL LETTER IS
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(234,157,175), Bry_.new_ints(234,157,174)) // ꝯ -> Ꝯ -- LATIN CAPITAL LETTER CON
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(234,157,186), Bry_.new_ints(234,157,185)) // ꝺ -> Ꝺ -- LATIN CAPITAL LETTER INSULAR D
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(234,157,188), Bry_.new_ints(234,157,187)) // ꝼ -> Ꝼ -- LATIN CAPITAL LETTER INSULAR F
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(234,157,191), Bry_.new_ints(234,157,190)) // ꝿ -> Ꝿ -- LATIN CAPITAL LETTER TURNED INSULAR G
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(234,158,129), Bry_.new_ints(234,158,128)) // ꞁ -> Ꞁ -- LATIN CAPITAL LETTER TURNED L
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(234,158,131), Bry_.new_ints(234,158,130)) // ꞃ -> Ꞃ -- LATIN CAPITAL LETTER INSULAR R
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(234,158,133), Bry_.new_ints(234,158,132)) // ꞅ -> Ꞅ -- LATIN CAPITAL LETTER INSULAR S
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(234,158,135), Bry_.new_ints(234,158,134)) // ꞇ -> Ꞇ -- LATIN CAPITAL LETTER INSULAR T
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(234,158,140), Bry_.new_ints(234,158,139)) // ꞌ -> Ꞌ -- LATIN CAPITAL LETTER SALTILLO
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(234,158,145), Bry_.new_ints(234,158,144)) // ꞑ -> Ꞑ -- LATIN CAPITAL LETTER N WITH DESCENDER
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(234,158,147), Bry_.new_ints(234,158,146)) // ꞓ -> Ꞓ -- LATIN CAPITAL LETTER C WITH BAR
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(234,158,161), Bry_.new_ints(234,158,160)) // ꞡ -> Ꞡ -- LATIN CAPITAL LETTER G WITH OBLIQUE STROKE
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(234,158,163), Bry_.new_ints(234,158,162)) // ꞣ -> Ꞣ -- LATIN CAPITAL LETTER K WITH OBLIQUE STROKE
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(234,158,165), Bry_.new_ints(234,158,164)) // ꞥ -> Ꞥ -- LATIN CAPITAL LETTER N WITH OBLIQUE STROKE
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(234,158,167), Bry_.new_ints(234,158,166)) // ꞧ -> Ꞧ -- LATIN CAPITAL LETTER R WITH OBLIQUE STROKE
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(234,158,169), Bry_.new_ints(234,158,168)) // ꞩ -> Ꞩ -- LATIN CAPITAL LETTER S WITH OBLIQUE STROKE
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(239,189,129), Bry_.new_ints(239,188,161)) // a -> A -- FULLWIDTH LATIN CAPITAL LETTER A
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(239,189,130), Bry_.new_ints(239,188,162)) // b -> B -- FULLWIDTH LATIN CAPITAL LETTER B
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(239,189,131), Bry_.new_ints(239,188,163)) // c -> C -- FULLWIDTH LATIN CAPITAL LETTER C
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(239,189,132), Bry_.new_ints(239,188,164)) // d -> D -- FULLWIDTH LATIN CAPITAL LETTER D
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(239,189,133), Bry_.new_ints(239,188,165)) // e -> E -- FULLWIDTH LATIN CAPITAL LETTER E
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(239,189,134), Bry_.new_ints(239,188,166)) // f -> F -- FULLWIDTH LATIN CAPITAL LETTER F
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(239,189,135), Bry_.new_ints(239,188,167)) // g -> G -- FULLWIDTH LATIN CAPITAL LETTER G
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(239,189,136), Bry_.new_ints(239,188,168)) // h -> H -- FULLWIDTH LATIN CAPITAL LETTER H
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(239,189,137), Bry_.new_ints(239,188,169)) // i -> I -- FULLWIDTH LATIN CAPITAL LETTER I
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(239,189,138), Bry_.new_ints(239,188,170)) // j -> J -- FULLWIDTH LATIN CAPITAL LETTER J
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(239,189,139), Bry_.new_ints(239,188,171)) // k -> K -- FULLWIDTH LATIN CAPITAL LETTER K
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(239,189,140), Bry_.new_ints(239,188,172)) // l -> L -- FULLWIDTH LATIN CAPITAL LETTER L
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(239,189,141), Bry_.new_ints(239,188,173)) // m -> M -- FULLWIDTH LATIN CAPITAL LETTER M
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(239,189,142), Bry_.new_ints(239,188,174)) // n -> N -- FULLWIDTH LATIN CAPITAL LETTER N
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(239,189,143), Bry_.new_ints(239,188,175)) // o -> O -- FULLWIDTH LATIN CAPITAL LETTER O
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(239,189,144), Bry_.new_ints(239,188,176)) // p -> P -- FULLWIDTH LATIN CAPITAL LETTER P
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(239,189,145), Bry_.new_ints(239,188,177)) // q -> Q -- FULLWIDTH LATIN CAPITAL LETTER Q
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(239,189,146), Bry_.new_ints(239,188,178)) // r -> R -- FULLWIDTH LATIN CAPITAL LETTER R
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(239,189,147), Bry_.new_ints(239,188,179)) // s -> S -- FULLWIDTH LATIN CAPITAL LETTER S
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(239,189,148), Bry_.new_ints(239,188,180)) // t -> T -- FULLWIDTH LATIN CAPITAL LETTER T
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(239,189,149), Bry_.new_ints(239,188,181)) // u -> U -- FULLWIDTH LATIN CAPITAL LETTER U
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(239,189,150), Bry_.new_ints(239,188,182)) // v -> V -- FULLWIDTH LATIN CAPITAL LETTER V
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(239,189,151), Bry_.new_ints(239,188,183)) // w -> W -- FULLWIDTH LATIN CAPITAL LETTER W
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(239,189,152), Bry_.new_ints(239,188,184)) // x -> X -- FULLWIDTH LATIN CAPITAL LETTER X
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(239,189,153), Bry_.new_ints(239,188,185)) // y -> Y -- FULLWIDTH LATIN CAPITAL LETTER Y
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(239,189,154), Bry_.new_ints(239,188,186)) // z -> Z -- FULLWIDTH LATIN CAPITAL LETTER Z
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(240,144,144,168), Bry_.new_ints(240,144,144,128)) // 𐐨 -> 𐐀 -- DESERET CAPITAL LETTER LONG I
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(240,144,144,169), Bry_.new_ints(240,144,144,129)) // 𐐩 -> 𐐁 -- DESERET CAPITAL LETTER LONG E
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(240,144,144,170), Bry_.new_ints(240,144,144,130)) // 𐐪 -> 𐐂 -- DESERET CAPITAL LETTER LONG A
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(240,144,144,171), Bry_.new_ints(240,144,144,131)) // 𐐫 -> 𐐃 -- DESERET CAPITAL LETTER LONG AH
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(240,144,144,172), Bry_.new_ints(240,144,144,132)) // 𐐬 -> 𐐄 -- DESERET CAPITAL LETTER LONG O
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(240,144,144,173), Bry_.new_ints(240,144,144,133)) // 𐐭 -> 𐐅 -- DESERET CAPITAL LETTER LONG OO
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(240,144,144,174), Bry_.new_ints(240,144,144,134)) // 𐐮 -> 𐐆 -- DESERET CAPITAL LETTER SHORT I
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(240,144,144,175), Bry_.new_ints(240,144,144,135)) // 𐐯 -> 𐐇 -- DESERET CAPITAL LETTER SHORT E
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(240,144,144,176), Bry_.new_ints(240,144,144,136)) // 𐐰 -> 𐐈 -- DESERET CAPITAL LETTER SHORT A
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(240,144,144,177), Bry_.new_ints(240,144,144,137)) // 𐐱 -> 𐐉 -- DESERET CAPITAL LETTER SHORT AH
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(240,144,144,178), Bry_.new_ints(240,144,144,138)) // 𐐲 -> 𐐊 -- DESERET CAPITAL LETTER SHORT O
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(240,144,144,179), Bry_.new_ints(240,144,144,139)) // 𐐳 -> 𐐋 -- DESERET CAPITAL LETTER SHORT OO
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(240,144,144,180), Bry_.new_ints(240,144,144,140)) // 𐐴 -> 𐐌 -- DESERET CAPITAL LETTER AY
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(240,144,144,181), Bry_.new_ints(240,144,144,141)) // 𐐵 -> 𐐍 -- DESERET CAPITAL LETTER OW
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(240,144,144,182), Bry_.new_ints(240,144,144,142)) // 𐐶 -> 𐐎 -- DESERET CAPITAL LETTER WU
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(240,144,144,183), Bry_.new_ints(240,144,144,143)) // 𐐷 -> 𐐏 -- DESERET CAPITAL LETTER YEE
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(240,144,144,184), Bry_.new_ints(240,144,144,144)) // 𐐸 -> 𐐐 -- DESERET CAPITAL LETTER H
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(240,144,144,185), Bry_.new_ints(240,144,144,145)) // 𐐹 -> 𐐑 -- DESERET CAPITAL LETTER PEE
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(240,144,144,186), Bry_.new_ints(240,144,144,146)) // 𐐺 -> 𐐒 -- DESERET CAPITAL LETTER BEE
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(240,144,144,187), Bry_.new_ints(240,144,144,147)) // 𐐻 -> 𐐓 -- DESERET CAPITAL LETTER TEE
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(240,144,144,188), Bry_.new_ints(240,144,144,148)) // 𐐼 -> 𐐔 -- DESERET CAPITAL LETTER DEE
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(240,144,144,189), Bry_.new_ints(240,144,144,149)) // 𐐽 -> 𐐕 -- DESERET CAPITAL LETTER CHEE
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(240,144,144,190), Bry_.new_ints(240,144,144,150)) // 𐐾 -> 𐐖 -- DESERET CAPITAL LETTER JEE
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(240,144,144,191), Bry_.new_ints(240,144,144,151)) // 𐐿 -> 𐐗 -- DESERET CAPITAL LETTER KAY
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(240,144,145,128), Bry_.new_ints(240,144,144,152)) // 𐑀 -> 𐐘 -- DESERET CAPITAL LETTER GAY
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(240,144,145,129), Bry_.new_ints(240,144,144,153)) // 𐑁 -> 𐐙 -- DESERET CAPITAL LETTER EF
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(240,144,145,130), Bry_.new_ints(240,144,144,154)) // 𐑂 -> 𐐚 -- DESERET CAPITAL LETTER VEE
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(240,144,145,131), Bry_.new_ints(240,144,144,155)) // 𐑃 -> 𐐛 -- DESERET CAPITAL LETTER ETH
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(240,144,145,132), Bry_.new_ints(240,144,144,156)) // 𐑄 -> 𐐜 -- DESERET CAPITAL LETTER THEE
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(240,144,145,133), Bry_.new_ints(240,144,144,157)) // 𐑅 -> 𐐝 -- DESERET CAPITAL LETTER ES
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(240,144,145,134), Bry_.new_ints(240,144,144,158)) // 𐑆 -> 𐐞 -- DESERET CAPITAL LETTER ZEE
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(240,144,145,135), Bry_.new_ints(240,144,144,159)) // 𐑇 -> 𐐟 -- DESERET CAPITAL LETTER ESH
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(240,144,145,136), Bry_.new_ints(240,144,144,160)) // 𐑈 -> 𐐠 -- DESERET CAPITAL LETTER ZHEE
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(240,144,145,137), Bry_.new_ints(240,144,144,161)) // 𐑉 -> 𐐡 -- DESERET CAPITAL LETTER ER
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(240,144,145,138), Bry_.new_ints(240,144,144,162)) // 𐑊 -> 𐐢 -- DESERET CAPITAL LETTER EL
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(240,144,145,139), Bry_.new_ints(240,144,144,163)) // 𐑋 -> 𐐣 -- DESERET CAPITAL LETTER EM
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(240,144,145,140), Bry_.new_ints(240,144,144,164)) // 𐑌 -> 𐐤 -- DESERET CAPITAL LETTER EN
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(240,144,145,141), Bry_.new_ints(240,144,144,165)) // 𐑍 -> 𐐥 -- DESERET CAPITAL LETTER ENG
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(240,144,145,142), Bry_.new_ints(240,144,144,166)) // 𐑎 -> 𐐦 -- DESERET CAPITAL LETTER OI
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(240,144,145,143), Bry_.new_ints(240,144,144,167)) // 𐑏 -> 𐐧 -- DESERET CAPITAL LETTER EW
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_upper, Bry_.new_ints(196,177), Bry_.new_ints(73)) // ı -> I -- LATIN SMALL LETTER DOTLESS I
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_upper, Bry_.new_ints(197,191), Bry_.new_ints(83)) // ſ -> S -- LATIN SMALL LETTER LONG S
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_upper, Bry_.new_ints(205,133), Bry_.new_ints(206,153)) // ͅ -> Ι -- GREEK NON-SPACING IOTA BELOW
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_upper, Bry_.new_ints(206,185), Bry_.new_ints(206,153)) // ι -> Ι -- GREEK SMALL LETTER IOTA
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_upper, Bry_.new_ints(207,130), Bry_.new_ints(206,163)) // ς -> Σ -- GREEK SMALL LETTER FINAL SIGMA
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_upper, Bry_.new_ints(207,144), Bry_.new_ints(206,146)) // ϐ -> Β -- GREEK SMALL LETTER CURLED BETA
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_upper, Bry_.new_ints(207,145), Bry_.new_ints(206,152)) // ϑ -> Θ -- GREEK SMALL LETTER SCRIPT THETA
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_upper, Bry_.new_ints(207,149), Bry_.new_ints(206,166)) // ϕ -> Φ -- GREEK SMALL LETTER SCRIPT PHI
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_upper, Bry_.new_ints(207,150), Bry_.new_ints(206,160)) // ϖ -> Π -- GREEK SMALL LETTER OMEGA PI
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_upper, Bry_.new_ints(207,176), Bry_.new_ints(206,154)) // ϰ -> Κ -- GREEK SMALL LETTER SCRIPT KAPPA
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_upper, Bry_.new_ints(207,177), Bry_.new_ints(206,161)) // ϱ -> Ρ -- GREEK SMALL LETTER TAILED RHO
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_upper, Bry_.new_ints(207,181), Bry_.new_ints(206,149)) // ϵ -> Ε -- GREEK LUNATE EPSILON SYMBOL
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_upper, Bry_.new_ints(225,186,155), Bry_.new_ints(225,185,160)) // ẛ -> Ṡ -- LATIN SMALL LETTER LONG S WITH DOT ABOVE
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_upper, Bry_.new_ints(225,190,190), Bry_.new_ints(206,153)) // ι -> Ι -- GREEK PROSGEGRAMMENI
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_lower, Bry_.new_ints(196,176), Bry_.new_ints(105)) // İ -> i -- LATIN CAPITAL LETTER I DOT
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_lower, Bry_.new_ints(199,133), Bry_.new_ints(199,134)) // Dž -> dž -- LATIN LETTER CAPITAL D SMALL Z HACEK
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_lower, Bry_.new_ints(199,136), Bry_.new_ints(199,137)) // Lj -> lj -- LATIN LETTER CAPITAL L SMALL J
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_lower, Bry_.new_ints(199,139), Bry_.new_ints(199,140)) // Nj -> nj -- LATIN LETTER CAPITAL N SMALL J
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_lower, Bry_.new_ints(199,178), Bry_.new_ints(199,179)) // Dz -> dz -- LATIN CAPITAL LETTER D WITH SMALL LETTER Z
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_lower, Bry_.new_ints(206,153), Bry_.new_ints(206,185)) // Ι -> ι -- GREEK CAPITAL LETTER IOTA; NOTE: reversed; PAGE:en.d:ἀρχιερεύς DATE:2014-09-02
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_lower, Bry_.new_ints(207,180), Bry_.new_ints(206,184)) // ϴ -> θ -- GREEK CAPITAL THETA SYMBOL
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_lower, Bry_.new_ints(225,186,158), Bry_.new_ints(195,159)) // ẞ -> ß -- LATIN CAPITAL LETTER SHARP S
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_lower, Bry_.new_ints(226,132,166), Bry_.new_ints(207,137)) // Ω -> ω -- OHM
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_lower, Bry_.new_ints(226,132,170), Bry_.new_ints(107)) // K -> k -- DEGREES KELVIN
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_lower, Bry_.new_ints(226,132,171), Bry_.new_ints(195,165)) // Å -> å -- ANGSTROM UNIT
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_upper, Bry_.new_ints(194,181), Bry_.new_ints(206,156)) // µ -> Μ -- MICRO SIGN; SWAPPED
+, Xol_case_itm_.new_(Xol_case_itm_.Tid_both, Bry_.new_ints(206,188), Bry_.new_ints(206,156)) // μ -> Μ -- GREEK CAPITAL LETTER MU; CONSOLIDATED
+//, Xol_case_itm_.new_(Xol_case_itm_.Tid_upper, Bry_.new_ints(206,188), Bry_.new_ints(206,156)) // μ -> Μ -- GREEK SMALL LETTER MU
};
rv.Add_bulk(itms);
return rv;
diff --git a/400_xowa/src_210_bldr_core/gplx/xowa/Cfg_nde_obj.java b/400_xowa/src/gplx/xowa/langs/cfgs/Cfg_nde_obj.java
similarity index 91%
rename from 400_xowa/src_210_bldr_core/gplx/xowa/Cfg_nde_obj.java
rename to 400_xowa/src/gplx/xowa/langs/cfgs/Cfg_nde_obj.java
index 55e9f1d98..9057198b3 100644
--- a/400_xowa/src_210_bldr_core/gplx/xowa/Cfg_nde_obj.java
+++ b/400_xowa/src/gplx/xowa/langs/cfgs/Cfg_nde_obj.java
@@ -15,7 +15,7 @@ GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see .
*/
-package gplx.xowa; import gplx.*;
+package gplx.xowa.langs.cfgs; import gplx.*; import gplx.xowa.*; import gplx.xowa.langs.*;
public interface Cfg_nde_obj {
boolean Nde_typ_is_grp();
void Nde_atrs_set(byte[][] ary);
diff --git a/400_xowa/src_210_bldr_core/gplx/xowa/Cfg_nde_obj_.java b/400_xowa/src/gplx/xowa/langs/cfgs/Cfg_nde_obj_.java
similarity index 91%
rename from 400_xowa/src_210_bldr_core/gplx/xowa/Cfg_nde_obj_.java
rename to 400_xowa/src/gplx/xowa/langs/cfgs/Cfg_nde_obj_.java
index ed5bddb5f..f3e57c10f 100644
--- a/400_xowa/src_210_bldr_core/gplx/xowa/Cfg_nde_obj_.java
+++ b/400_xowa/src/gplx/xowa/langs/cfgs/Cfg_nde_obj_.java
@@ -15,7 +15,7 @@ GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see .
*/
-package gplx.xowa; import gplx.*;
+package gplx.xowa.langs.cfgs; import gplx.*; import gplx.xowa.*; import gplx.xowa.langs.*;
public class Cfg_nde_obj_ {
public static void Fill_recurse(Ordered_hash rv, Cfg_nde_obj peer_grp) {
int subs_len = peer_grp.Nde_subs_len();
diff --git a/400_xowa/src_210_bldr_core/gplx/xowa/Cfg_nde_root.java b/400_xowa/src/gplx/xowa/langs/cfgs/Cfg_nde_root.java
similarity index 95%
rename from 400_xowa/src_210_bldr_core/gplx/xowa/Cfg_nde_root.java
rename to 400_xowa/src/gplx/xowa/langs/cfgs/Cfg_nde_root.java
index 3e388ac4b..30de19f46 100644
--- a/400_xowa/src_210_bldr_core/gplx/xowa/Cfg_nde_root.java
+++ b/400_xowa/src/gplx/xowa/langs/cfgs/Cfg_nde_root.java
@@ -15,7 +15,7 @@ GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see .
*/
-package gplx.xowa; import gplx.*;
+package gplx.xowa.langs.cfgs; import gplx.*; import gplx.xowa.*; import gplx.xowa.langs.*;
public class Cfg_nde_root implements GfoInvkAble {
public int Root_len() {return root.Nde_subs_len();}
public Cfg_nde_obj Root_get_at(int i) {return (Cfg_nde_obj)root.Nde_subs_get_at(i);} private Ordered_hash grps = Ordered_hash_.new_bry_();
@@ -92,7 +92,7 @@ public class Cfg_nde_root implements GfoInvkAble {
byte[][] cur_itm_atrs = Bry_.Ary_empty;
if (fld_idx == 4) {
byte[] cur_itm_atrs_raw = csv_parser.Load(src, fld_bgn, src_pos);
- cur_itm_atrs = Bry_.Split(cur_itm_atrs_raw, Byte_ascii.Tilde);
+ cur_itm_atrs = Bry_split_.Split(cur_itm_atrs_raw, Byte_ascii.Tilde);
}
else if (fld_idx == 3) {
cur_itm_key = csv_parser.Load(src, fld_bgn, src_pos);
diff --git a/400_xowa/src/gplx/xowa/apps/langs/Xoac_lang_grp.java b/400_xowa/src/gplx/xowa/langs/cfgs/Xoac_lang_grp.java
similarity index 95%
rename from 400_xowa/src/gplx/xowa/apps/langs/Xoac_lang_grp.java
rename to 400_xowa/src/gplx/xowa/langs/cfgs/Xoac_lang_grp.java
index 9037180ef..b5c51d894 100644
--- a/400_xowa/src/gplx/xowa/apps/langs/Xoac_lang_grp.java
+++ b/400_xowa/src/gplx/xowa/langs/cfgs/Xoac_lang_grp.java
@@ -15,7 +15,7 @@ GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see .
*/
-package gplx.xowa.apps.langs; import gplx.*; import gplx.xowa.*; import gplx.xowa.apps.*;
+package gplx.xowa.langs.cfgs; import gplx.*; import gplx.xowa.*; import gplx.xowa.langs.*;
interface Xoac_lang_obj {}
public class Xoac_lang_grp implements Cfg_nde_obj, Xoac_lang_obj {
public Xoac_lang_grp(byte[] key) {this.key_bry = key; this.name_bry = key_bry;}
diff --git a/400_xowa/src/gplx/xowa/apps/langs/Xoac_lang_grp_tst.java b/400_xowa/src/gplx/xowa/langs/cfgs/Xoac_lang_grp_tst.java
similarity index 95%
rename from 400_xowa/src/gplx/xowa/apps/langs/Xoac_lang_grp_tst.java
rename to 400_xowa/src/gplx/xowa/langs/cfgs/Xoac_lang_grp_tst.java
index 1b6865a3e..b31aa0247 100644
--- a/400_xowa/src/gplx/xowa/apps/langs/Xoac_lang_grp_tst.java
+++ b/400_xowa/src/gplx/xowa/langs/cfgs/Xoac_lang_grp_tst.java
@@ -15,8 +15,8 @@ GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see .
*/
-package gplx.xowa.apps.langs; import gplx.*; import gplx.xowa.*; import gplx.xowa.apps.*;
-import org.junit.*; import gplx.xowa.langs.*;
+package gplx.xowa.langs.cfgs; import gplx.*; import gplx.xowa.*; import gplx.xowa.langs.*;
+import org.junit.*; import gplx.core.tests.*;
public class Xoac_lang_grp_tst {
Xoac_lang_grp_fxt fxt = new Xoac_lang_grp_fxt();
@Before public void init() {fxt.Clear();}
diff --git a/400_xowa/src/gplx/xowa/apps/langs/Xoac_lang_itm.java b/400_xowa/src/gplx/xowa/langs/cfgs/Xoac_lang_itm.java
similarity index 95%
rename from 400_xowa/src/gplx/xowa/apps/langs/Xoac_lang_itm.java
rename to 400_xowa/src/gplx/xowa/langs/cfgs/Xoac_lang_itm.java
index 55bae7375..b2baa9600 100644
--- a/400_xowa/src/gplx/xowa/apps/langs/Xoac_lang_itm.java
+++ b/400_xowa/src/gplx/xowa/langs/cfgs/Xoac_lang_itm.java
@@ -15,7 +15,7 @@ GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see .
*/
-package gplx.xowa.apps.langs; import gplx.*; import gplx.xowa.*; import gplx.xowa.apps.*;
+package gplx.xowa.langs.cfgs; import gplx.*; import gplx.xowa.*; import gplx.xowa.langs.*;
public class Xoac_lang_itm implements Cfg_nde_obj, Xoac_lang_obj {
public Xoac_lang_itm(byte[] key) {this.key_bry = key; local_name_bry = key_bry; uid = uid_next++;} static int uid_next = 0;
public Xoac_lang_grp Grp() {return grp;} public Xoac_lang_itm Grp_(Xoac_lang_grp v) {grp = v; return this;} private Xoac_lang_grp grp;
diff --git a/400_xowa/src/gplx/xowa/langs/durations/Xol_duration_mgr.java b/400_xowa/src/gplx/xowa/langs/durations/Xol_duration_mgr.java
index f3c74e9f8..01f0ebbe0 100644
--- a/400_xowa/src/gplx/xowa/langs/durations/Xol_duration_mgr.java
+++ b/400_xowa/src/gplx/xowa/langs/durations/Xol_duration_mgr.java
@@ -49,7 +49,7 @@ public class Xol_duration_mgr {
Xol_interval_itm interval = intervals[i];
Xol_msg_itm msg_itm = interval_msgs[interval.Duration_itm().Tid()];
byte[] msg_bry = msg_itm.Fmt(tmp_bfr, interval.Val());
- msg_bry = ctx.Wiki().Parser().Parse_text_to_html(ctx, msg_bry);
+ msg_bry = ctx.Wiki().Parser_mgr().Main().Parse_text_to_html(ctx, msg_bry);
msgs_ary[i] = msg_bry;
}
return List_to_str(msgs_ary);
diff --git a/400_xowa/src/gplx/xowa/langs/msgs/Xol_msg_mgr_.java b/400_xowa/src/gplx/xowa/langs/msgs/Xol_msg_mgr_.java
index c76911f9e..4999365a1 100644
--- a/400_xowa/src/gplx/xowa/langs/msgs/Xol_msg_mgr_.java
+++ b/400_xowa/src/gplx/xowa/langs/msgs/Xol_msg_mgr_.java
@@ -16,7 +16,8 @@ You should have received a copy of the GNU Affero General Public License
along with this program. If not, see .
*/
package gplx.xowa.langs.msgs; import gplx.*; import gplx.xowa.*; import gplx.xowa.langs.*;
-import gplx.php.*; import gplx.xowa.parsers.*;
+import gplx.langs.phps.*; import gplx.xowa.parsers.*;
+import gplx.xowa.apps.gfss.*;
public class Xol_msg_mgr_ {
// public static String Get_msg_val_gui_or_null(Xol_lang lang, byte[] pre, byte[] key, byte[] suf) {
// String rv = Get_msg_val_gui_or_null(lang, pre, key, suf);
@@ -58,13 +59,13 @@ public class Xol_msg_mgr_ {
if (has_tmpl) {
Xop_ctx sub_ctx = Xop_ctx.new_sub_(wiki); Xop_tkn_mkr tkn_mkr = sub_ctx.Tkn_mkr();
Xop_root_tkn sub_root = tkn_mkr.Root(msg_val);
- msg_val = wiki.Parser().Parse_text_to_wtxt(sub_root, sub_ctx, tkn_mkr, msg_val);
+ msg_val = wiki.Parser_mgr().Main().Parse_text_to_wtxt(sub_root, sub_ctx, tkn_mkr, msg_val);
}
return msg_val;
}
public static Xol_msg_itm Get_msg_itm(Bry_bfr tmp_bfr, Xowe_wiki wiki, Xol_lang lang, byte[] msg_key) {
byte[] msg_key_sub_root = msg_key;
- int slash_pos = Bry_finder.Find_bwd(msg_key, Byte_ascii.Slash);
+ int slash_pos = Bry_find_.Find_bwd(msg_key, Byte_ascii.Slash);
if (slash_pos != Bry_.NotFound) { // key is of format "key/lang"; EX: "January/en"
int msg_key_len = msg_key.length;
if (slash_pos != msg_key_len) { // get text after slash; EX: "en"
@@ -93,7 +94,7 @@ public class Xol_msg_mgr_ {
}
}
else { // page found; dump entire contents
- msg_val = gplx.xowa.apps.Xoa_gfs_php_mgr.Xto_gfs(tmp_bfr, msg_page.Data_raw()); // note that MediaWiki msg's use php arg format ($1); xowa.gfs msgs are already converted
+ msg_val = Xoa_gfs_php_mgr.Xto_gfs(tmp_bfr, msg_page.Data_raw()); // note that MediaWiki msg's use php arg format ($1); xowa.gfs msgs are already converted
msg_in_wiki.Src_(Xol_msg_itm.Src_wiki);
}
Xol_msg_itm_.update_val_(msg_in_wiki, msg_val);
diff --git a/400_xowa/src_120_wiki/gplx/xowa/Xow_mainpage_finder.java b/400_xowa/src/gplx/xowa/langs/msgs/Xow_mainpage_finder.java
similarity index 91%
rename from 400_xowa/src_120_wiki/gplx/xowa/Xow_mainpage_finder.java
rename to 400_xowa/src/gplx/xowa/langs/msgs/Xow_mainpage_finder.java
index e3d87cc0b..3db8efb73 100644
--- a/400_xowa/src_120_wiki/gplx/xowa/Xow_mainpage_finder.java
+++ b/400_xowa/src/gplx/xowa/langs/msgs/Xow_mainpage_finder.java
@@ -15,8 +15,7 @@ GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see .
*/
-package gplx.xowa; import gplx.*;
-import gplx.xowa.langs.msgs.*;
+package gplx.xowa.langs.msgs; import gplx.*; import gplx.xowa.*; import gplx.xowa.langs.*;
public class Xow_mainpage_finder {
public static byte[] Find_or(Xowe_wiki wiki, byte[] or) {
Bry_bfr tmp_bfr = wiki.Utl__bfr_mkr().Get_b512();
diff --git a/400_xowa/src_120_wiki/gplx/xowa/Xow_mainpage_finder_tst.java b/400_xowa/src/gplx/xowa/langs/msgs/Xow_mainpage_finder_tst.java
similarity index 95%
rename from 400_xowa/src_120_wiki/gplx/xowa/Xow_mainpage_finder_tst.java
rename to 400_xowa/src/gplx/xowa/langs/msgs/Xow_mainpage_finder_tst.java
index 57e7ce4b2..c04a47756 100644
--- a/400_xowa/src_120_wiki/gplx/xowa/Xow_mainpage_finder_tst.java
+++ b/400_xowa/src/gplx/xowa/langs/msgs/Xow_mainpage_finder_tst.java
@@ -15,7 +15,7 @@ GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see .
*/
-package gplx.xowa; import gplx.*;
+package gplx.xowa.langs.msgs; import gplx.*; import gplx.xowa.*; import gplx.xowa.langs.*;
import org.junit.*;
public class Xow_mainpage_finder_tst {
@Before public void init() {fxt.Clear();} private Xow_mainpage_finder_fxt fxt = new Xow_mainpage_finder_fxt();
diff --git a/400_xowa/src_120_wiki/gplx/xowa/Xow_msg_mgr.java b/400_xowa/src/gplx/xowa/langs/msgs/Xow_msg_mgr.java
similarity index 94%
rename from 400_xowa/src_120_wiki/gplx/xowa/Xow_msg_mgr.java
rename to 400_xowa/src/gplx/xowa/langs/msgs/Xow_msg_mgr.java
index 323f00d86..682b3dc86 100644
--- a/400_xowa/src_120_wiki/gplx/xowa/Xow_msg_mgr.java
+++ b/400_xowa/src/gplx/xowa/langs/msgs/Xow_msg_mgr.java
@@ -15,8 +15,8 @@ GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see .
*/
-package gplx.xowa; import gplx.*;
-import gplx.xowa.html.sidebar.*; import gplx.xowa.langs.msgs.*;
+package gplx.xowa.langs.msgs; import gplx.*; import gplx.xowa.*; import gplx.xowa.langs.*;
+import gplx.xowa.html.sidebar.*;
public class Xow_msg_mgr implements GfoInvkAble {
private final Xowe_wiki wiki; private Xol_lang lang; private final Xol_msg_mgr msg_mgr;
public Xow_msg_mgr(Xowe_wiki wiki, Xol_lang lang) {
@@ -71,7 +71,7 @@ public class Xow_msg_mgr implements GfoInvkAble {
public byte[] Val_by_itm(Bry_bfr tmp_bfr, Xol_msg_itm itm, Object[] args) {
byte[] rv = itm.Val();
if (args != null) rv = itm.Fmt_tmp(tmp_bfr, rv, args);
- if (itm.Has_tmpl_txt()) rv = wiki.Parser().Parse_text_to_wtxt(rv);
+ if (itm.Has_tmpl_txt()) rv = wiki.Parser_mgr().Main().Parse_text_to_wtxt(rv);
return rv;
}
public byte[] Val_html_accesskey_and_title(byte[] id) {
diff --git a/400_xowa/src/gplx/xowa/langs/numbers/Xol_num_grp_fmtr.java b/400_xowa/src/gplx/xowa/langs/numbers/Xol_num_grp_fmtr.java
index b489a579a..f47195301 100644
--- a/400_xowa/src/gplx/xowa/langs/numbers/Xol_num_grp_fmtr.java
+++ b/400_xowa/src/gplx/xowa/langs/numbers/Xol_num_grp_fmtr.java
@@ -32,7 +32,7 @@ public class Xol_num_grp_fmtr {
switch (b) {
case Byte_ascii.Num_0: case Byte_ascii.Num_1: case Byte_ascii.Num_2: case Byte_ascii.Num_3: case Byte_ascii.Num_4:
case Byte_ascii.Num_5: case Byte_ascii.Num_6: case Byte_ascii.Num_7: case Byte_ascii.Num_8: case Byte_ascii.Num_9: {
- int num_end = Bry_finder.Find_fwd_while_num(src, pos, src_len);
+ int num_end = Bry_find_.Find_fwd_while_num(src, pos, src_len);
int num_len = num_end - pos;
if (num_len > grp_len) {
if (!dirty) {
@@ -49,7 +49,7 @@ public class Xol_num_grp_fmtr {
break;
}
case Byte_ascii.Dot: {
- int num_end = Bry_finder.Find_fwd_while_num(src, pos + 1, src_len); // +1 to skip dot
+ int num_end = Bry_find_.Find_fwd_while_num(src, pos + 1, src_len); // +1 to skip dot
if (dirty)
bfr.Add_mid(src, pos, num_end);
pos = num_end;
diff --git a/400_xowa/src/gplx/xowa/langs/numbers/Xol_num_mgr__commafy_5.java b/400_xowa/src/gplx/xowa/langs/numbers/Xol_num_mgr__commafy_5.java
index e7f2841f0..f3f27998e 100644
--- a/400_xowa/src/gplx/xowa/langs/numbers/Xol_num_mgr__commafy_5.java
+++ b/400_xowa/src/gplx/xowa/langs/numbers/Xol_num_mgr__commafy_5.java
@@ -26,13 +26,13 @@ class Xol_num_mgr__commafy_5 extends Xol_num_mgr { @Override public byte[] Comm
b = num[++num_bgn]; // skip negative sign
}
if (Byte_ascii.Is_num(b)) { // check for preg_match( '/^-?\d{1,4}(\.\d+)?$/', $_ )
- int num_end = Bry_finder.Find_fwd_while_num(num, num_bgn, num_len);
+ int num_end = Bry_find_.Find_fwd_while_num(num, num_bgn, num_len);
if (num_end - num_bgn < 5) { // 1-4 digits
if (num_end == num_len) return num; // no decimal; exit
b = num[num_end];
if ( b == Byte_ascii.Dot
&& num_end != num_len - 1) { // if dot at end, then no match on above regx; fall-thru to below
- num_end = Bry_finder.Find_fwd_while_num(num, num_end + 1, num_len);
+ num_end = Bry_find_.Find_fwd_while_num(num, num_end + 1, num_len);
if (num_end == num_len) return num; // only numbers after dot; matches regx;
}
}
diff --git a/400_xowa/src/gplx/xowa/langs/vnts/Xol_vnt_itm.java b/400_xowa/src/gplx/xowa/langs/vnts/Xol_vnt_itm.java
index 39ee6afa9..420730adb 100644
--- a/400_xowa/src/gplx/xowa/langs/vnts/Xol_vnt_itm.java
+++ b/400_xowa/src/gplx/xowa/langs/vnts/Xol_vnt_itm.java
@@ -16,24 +16,28 @@ You should have received a copy of the GNU Affero General Public License
along with this program. If not, see .
*/
package gplx.xowa.langs.vnts; import gplx.*; import gplx.xowa.*; import gplx.xowa.langs.*;
-import gplx.intl.*;
-import gplx.xowa.langs.cnvs.*;
+import gplx.xowa.langs.vnts.converts.*;
public class Xol_vnt_itm implements GfoInvkAble {
- public Xol_vnt_itm(Xol_vnt_mgr owner, byte[] key) {
- this.owner = owner;
- this.lang = owner.Lang(); this.key = key;
- converter = new Xol_vnt_converter(this);
+ public Xol_vnt_itm(byte[] key, byte[] name, int mask__vnt) {
+ this.key = key; this.name = name; this.mask__vnt = mask__vnt;
+ this.convert_wkr = new Xol_convert_wkr(key);
+ }
+ public byte[] Key() {return key;} private final byte[] key; // EX: zh-cn
+ public byte[] Name() {return name;} private final byte[] name; // EX: 大陆简体
+ public boolean Visible() {return visible;} private boolean visible = true; // visible in menu
+ public byte[][] Fallback_ary() {return fallback_ary;} private byte[][] fallback_ary = Bry_.Ary_empty; // EX: zh-hans|zh
+ public int Mask__vnt() {return mask__vnt;} private final int mask__vnt; // EX: 8
+ public int Mask__fallbacks() {return mask_fallbacks;} private int mask_fallbacks; // EX: 11 for zh,zh-hans,zh-cn
+ public byte[][] Convert_ary() {return convert_ary;} private byte[][] convert_ary = Bry_.Ary_empty; // EX: zh-hans|zh-cn
+ public Xol_convert_wkr Convert_wkr() {return convert_wkr;} private final Xol_convert_wkr convert_wkr;
+ public void Visible_(boolean v) {this.visible = v;}
+ public void Convert_ary_(byte[][] v) {convert_ary = v;}
+ public void Mask__fallbacks__calc(Xol_vnt_regy regy, byte[][] ary) {
+ this.mask_fallbacks = regy.Mask__calc(Bry_.Ary_add(Bry_.Ary(key), ary));// NOTE: must add lang.key which is not part of fallback; EX: "zh-cn" has fallback of "zh-hans", but chain should calc "zh-cn","zh-hans"
}
- public Xol_vnt_mgr Owner() {return owner;} private Xol_vnt_mgr owner;
- public Xol_lang Lang() {return lang;} private Xol_lang lang;
- public Xol_vnt_converter Converter() {return converter;} private Xol_vnt_converter converter;
- public byte[] Key() {return key;} private byte[] key;
- public byte[][] Fallback_ary() {return fallback_ary;} private byte[][] fallback_ary = Bry_.Ary_empty;
- public byte[][] Convert_ary() {return convert_ary;} private byte[][] convert_ary = Bry_.Ary_empty;
- public void Convert_ary_(byte[][] v) {convert_ary = v;}
public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) {
- if (ctx.Match(k, Invk_fallbacks_)) fallback_ary = Bry_.Split(m.ReadBry("v"), Byte_ascii.Pipe);
- else if (ctx.Match(k, Invk_converts_)) {convert_ary = Bry_.Split(m.ReadBry("v"), Byte_ascii.Pipe); converter.Rebuild();} // setting converts will always force rebuild
+ if (ctx.Match(k, Invk_fallbacks_)) fallback_ary = Bry_split_.Split(m.ReadBry("v"), Byte_ascii.Pipe);
+ else if (ctx.Match(k, Invk_converts_)) convert_ary = Bry_split_.Split(m.ReadBry("v"), Byte_ascii.Pipe);
else return GfoInvkAble_.Rv_unhandled;
return this;
} private static final String Invk_fallbacks_ = "fallbacks_", Invk_converts_ = "converts_";
diff --git a/400_xowa/src/gplx/xowa/langs/vnts/Xol_vnt_itm_sorter.java b/400_xowa/src/gplx/xowa/langs/vnts/Xol_vnt_itm_sorter.java
new file mode 100644
index 000000000..d6692d098
--- /dev/null
+++ b/400_xowa/src/gplx/xowa/langs/vnts/Xol_vnt_itm_sorter.java
@@ -0,0 +1,38 @@
+/*
+XOWA: the XOWA Offline Wiki Application
+Copyright (C) 2012 gnosygnu@gmail.com
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU Affero General Public License as
+published by the Free Software Foundation, either version 3 of the
+License, or (at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU Affero General Public License for more details.
+
+You should have received a copy of the GNU Affero General Public License
+along with this program. If not, see .
+*/
+package gplx.xowa.langs.vnts; import gplx.*; import gplx.xowa.*; import gplx.xowa.langs.*;
+import gplx.xowa.parsers.vnts.*;
+class Xol_vnt_itm_sorter__rule implements gplx.lists.ComparerAble {
+ private Ordered_hash hash;
+ public void Sort(Ordered_hash hash, Xop_vnt_rule_tkn[] ary) {
+ synchronized (hash) {
+ this.hash = hash;
+ Array_.Sort(ary, this);
+ }
+ }
+ public int compare(Object lhsObj, Object rhsObj) {
+ return -Int_.Compare(To_mask(lhsObj), To_mask(rhsObj)); // - to sort by descending order; "more specific" vnts are at end of list;
+ }
+ private int To_mask(Object o) {
+ int rv = -1;
+ Xop_vnt_rule_tkn rule = (Xop_vnt_rule_tkn)o; if (rule == null) return rv;
+ Xol_vnt_itm itm = (Xol_vnt_itm)hash.Get_by(rule.Rule_lang()); if (itm == null) return rv;
+ return itm.Mask__vnt();
+ }
+ public static final Xol_vnt_itm_sorter__rule I = new Xol_vnt_itm_sorter__rule(); Xol_vnt_itm_sorter__rule() {}
+}
diff --git a/400_xowa/src/gplx/xowa/langs/vnts/Xol_vnt_mgr.java b/400_xowa/src/gplx/xowa/langs/vnts/Xol_vnt_mgr.java
index 75598c997..829757bd6 100644
--- a/400_xowa/src/gplx/xowa/langs/vnts/Xol_vnt_mgr.java
+++ b/400_xowa/src/gplx/xowa/langs/vnts/Xol_vnt_mgr.java
@@ -16,117 +16,60 @@ You should have received a copy of the GNU Affero General Public License
along with this program. If not, see .
*/
package gplx.xowa.langs.vnts; import gplx.*; import gplx.xowa.*; import gplx.xowa.langs.*;
-import gplx.xowa.wikis.data.tbls.*;
+import gplx.xowa.langs.vnts.converts.*;
+import gplx.xowa.parsers.vnts.*;
public class Xol_vnt_mgr implements GfoInvkAble {
- private final Ordered_hash vnts = Ordered_hash_.new_bry_(); private int converter_ary_len, cur_converter_ary_idx = -1;
- private final Ordered_hash tmp_page_list = Ordered_hash_.new_bry_();
public Xol_vnt_mgr(Xol_lang lang) {this.lang = lang;}
- public Xol_lang Lang() {return lang;} private final Xol_lang lang;
- public Xol_vnt_converter[] Converter_ary() {return converter_ary;} private Xol_vnt_converter[] converter_ary;
- public Vnt_mnu_grp Vnt_grp() {return vnt_grp;} private final Vnt_mnu_grp vnt_grp = new Vnt_mnu_grp();
- public Vnt_mnu_grp_fmtr Vnt_mnu_fmtr() {return vnt_mnu_fmtr;} private final Vnt_mnu_grp_fmtr vnt_mnu_fmtr = new Vnt_mnu_grp_fmtr();
- public boolean Enabled() {return enabled;} public void Enabled_(boolean v) {this.enabled = v;} private boolean enabled = false;
- public byte[] Cur_vnt() {return cur_vnt;} private byte[] cur_vnt = Bry_.Empty;
- public void Vnt_grp_(byte[][] ary) {
- int len = ary.length;
- for (int i = 0; i < len; ++i) {
- byte[] vnt = ary[i];
- byte[] msg = lang.Msg_mgr().Itm_by_key_or_new(Bry_.Add(Msg_variantname, vnt)).Val();
- vnt_grp.Add(new Vnt_mnu_itm(vnt, msg));
+ public Xol_lang Lang() {return lang;} private final Xol_lang lang;
+ public boolean Enabled() {return enabled;} private boolean enabled = false;
+ public Xol_vnt_regy Regy() {return regy;} private final Xol_vnt_regy regy = new Xol_vnt_regy(); // EX:zh;zh-hans;zh-hant;zh-cn;zh-hk;zh-mo;zh-sg;zh-tw
+ public byte[] Cur_key() {return cur_key;} private byte[] cur_key; // EX:zh-cn
+ public Xol_vnt_itm Cur_itm() {return cur_itm;} private Xol_vnt_itm cur_itm;
+ public Xol_convert_mgr Convert_mgr() {return convert_mgr;} private final Xol_convert_mgr convert_mgr = new Xol_convert_mgr();
+ public String Html__lnki_style() {return html__lnki_style;} private String html__lnki_style = ""; // style for showing vnt lnkis in different colors
+ public Xol_vnt_itm Regy__get_or_new(byte[] key) {
+ Xol_vnt_itm rv = regy.Get_by(key);
+ if (rv == null) {
+ byte[] name = lang.Msg_mgr().Itm_by_key_or_new(Bry_.Add(Msg_variantname, key)).Val();
+ rv = regy.Add(key, name);
+ enabled = true; // NOTE: mark enabled if any vnts have been added
}
+ return rv;
}
- private static final byte[] Msg_variantname = Bry_.new_a7("variantname-");
- public String Html_style() {return html_style;} private String html_style = "";
- public Xol_vnt_mgr Cur_vnt_(byte[] v) {
- int new_converter_ary_idx = -1;
- for (int i = 0; i < converter_ary_len; i++) {
- Xol_vnt_converter itm = converter_ary[i];
- if (Bry_.Eq(v, itm.Owner().Key())) {
- new_converter_ary_idx = i;
- break;
- }
- }
- if (new_converter_ary_idx == -1) throw Err_.new_("lang.vnt", "unknown vnt", "key", v);
- this.cur_vnt = v;
- this.cur_converter_ary_idx = new_converter_ary_idx;
- return this;
+ private void Limit_visibility(byte[][] ary) {
+ int regy_len = regy.Len();
+ for (int i = 0; i < regy_len; ++i)
+ regy.Get_at(i).Visible_(Bool_.N);
+ int ary_len = ary.length;
+ for (int i = 0; i < ary_len; ++i)
+ regy.Get_by(ary[i]).Visible_(Bool_.Y);
+ }
+ public void Cur_vnt_(byte[] v) {
+ this.cur_itm = regy.Get_by(v); if (v == null) throw Err_.new_("lang.vnt", "vnt not found", "key", v);
+ this.cur_key = v;
+ convert_mgr.Cur_vnt_(v);
}
public void Init_by_wiki(Xowe_wiki wiki) {
if (!enabled) return;
- Xop_vnt_lxr_.set_(wiki);
+ Xop_vnt_lxr_.Init(wiki);
}
- public Xol_vnt_itm Get_or_new(byte[] key) {
- Xol_vnt_itm rv = (Xol_vnt_itm)vnts.Get_by(key);
- if (rv == null) {
- rv = new Xol_vnt_itm(this, key);
- vnts.Add(key, rv);
- enabled = true; // mark enabled if any vnts have been added
+ public void Init_end() {
+ int len = regy.Len();
+ for (int i = 0; i < len; ++i) { // calc fallback_flag; needs to be run after all items added, b/c "zh-cn" added before "zh-sg" but "zh-cn" can have "zh-sg" as fallback
+ Xol_vnt_itm itm = regy.Get_at(i);
+ Xol_lang vnt_lang = lang.Lang_mgr().Get_by_key_or_load(itm.Key()); // load vnt's language in order to get fallback; EX: "zh-mo" to get "zh-hant|zh-hk|zh-tw"
+ itm.Mask__fallbacks__calc(regy, vnt_lang.Fallback_bry_ary());
}
- return rv;
- }
- public byte[] Convert_text(Xowe_wiki wiki, byte[] src) {return Convert_text(wiki, src, 0, src.length);}
- public byte[] Convert_text(Xowe_wiki wiki, byte[] src, int bgn, int end) {
- Bry_bfr tmp_bfr = wiki.Utl__bfr_mkr().Get_m001();
- Xol_vnt_converter converter = converter_ary[cur_converter_ary_idx];
- converter.Convert_text(tmp_bfr, src, bgn, end);
- return tmp_bfr.To_bry_and_rls();
- }
- public void Convert_ttl_init() {
- int vnts_len = vnts.Count();
- converter_ary_len = vnts_len;
- converter_ary = new Xol_vnt_converter[vnts_len];
- for (int i = 0; i < vnts_len; i++) {
- Xol_vnt_itm itm = (Xol_vnt_itm)vnts.Get_at(i);
- converter_ary[i] = itm.Converter();
- if (i == 0) cur_vnt = itm.Key(); // default to 1st item
- }
- }
- public Xowd_page_itm Convert_ttl(Xowe_wiki wiki, Xoa_ttl ttl) {return Convert_ttl(wiki, ttl.Ns(), ttl.Page_db());} // NOTE: not Full_db as ttl.Ns is passed; EX:Шаблон:Šablon:Jez-eng; PAGE:sr.w:ДНК DATE:2014-07-06
- public Xowd_page_itm Convert_ttl(Xowe_wiki wiki, Xow_ns ns, byte[] ttl_bry) {
- Bry_bfr tmp_bfr = wiki.Utl__bfr_mkr().Get_b512();
- Xowd_page_itm rv = Convert_ttl(wiki, tmp_bfr, ns, ttl_bry);
- tmp_bfr.Mkr_rls();
- return rv;
- }
- public Xowd_page_itm Convert_ttl(Xowe_wiki wiki, Bry_bfr tmp_bfr, Xow_ns ns, byte[] ttl_bry) { // REF.MW:LanguageConverter.php|findVariantLink
- synchronized (tmp_page_list) {
- int converted = Convert_ttl__convert_each_vnt(wiki, tmp_bfr, ns, ttl_bry); // convert ttl for each vnt
- if (converted == 0) return Xowd_page_itm.Null; // ttl_bry has no conversions; exit;
- wiki.Db_mgr().Load_mgr().Load_by_ttls(Cancelable_.Never, tmp_page_list, true, 0, converted);
- for (int i = 0; i < converted; i++) {
- Xowd_page_itm page = (Xowd_page_itm)tmp_page_list.Get_at(i);
- if (page.Exists()) return page; // return 1st found page
- }
- return Xowd_page_itm.Null;
- }
- }
- private int Convert_ttl__convert_each_vnt(Xowe_wiki wiki, Bry_bfr tmp_bfr, Xow_ns ns, byte[] ttl_bry) {
- synchronized (tmp_page_list) {
- tmp_page_list.Clear();
- int rv = 0;
- for (int i = 0; i < converter_ary_len; i++) { // convert ttl for each variant
- Xol_vnt_converter converter = converter_ary[i];
- tmp_bfr.Clear();
- if (!converter.Convert_text(tmp_bfr, ttl_bry)) continue; // ttl is not converted for variant; ignore
- Xoa_ttl ttl = Xoa_ttl.parse(wiki, ns.Id(), tmp_bfr.Xto_bry_and_clear()); // NOTE: must convert to ttl in order to upper 1st letter; EX:{{jez-eng|sense}} -> Jez-eng; PAGE:sr.w:ДНК DATE:2014-07-06
- if (ttl == null) continue;
- Xowd_page_itm page = new Xowd_page_itm();
- page.Ttl_(ns, ttl.Page_db());
- byte[] converted_ttl = page.Ttl_full_db();
- if (tmp_page_list.Has(converted_ttl)) continue;
- tmp_page_list.Add(converted_ttl, page);
- ++rv;
- }
- return rv;
- }
- }
+ convert_mgr.Init(regy); // needs to run at end b/c converts are added one at a time
+ }
public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) {
- if (ctx.Match(k, Invk_get)) return Get_or_new(m.ReadBry("v"));
- else if (ctx.Match(k, Invk_init_end)) Convert_ttl_init();
- else if (ctx.Match(k, Invk_vnt_grp_)) Vnt_grp_(m.ReadBryAry("v", Byte_ascii.Pipe));
+ if (ctx.Match(k, Invk_get)) return Regy__get_or_new(m.ReadBry("v"));
+ else if (ctx.Match(k, Invk_init_end)) Init_end();
+ else if (ctx.Match(k, Invk_vnt_grp_)) Limit_visibility(m.ReadBryAry("v", Byte_ascii.Pipe));
else if (ctx.Match(k, Invk_cur_vnt_)) Cur_vnt_(m.ReadBry("v"));
- else if (ctx.Match(k, Invk_html_style_)) html_style = m.ReadStr("v");
+ else if (ctx.Match(k, Invk_html_style_)) html__lnki_style = m.ReadStr("v");
else return GfoInvkAble_.Rv_unhandled;
return this;
- } private static final String Invk_get = "get", Invk_init_end = "init_end", Invk_cur_vnt_ = "cur_vnt_", Invk_html_style_ = "html_style_", Invk_vnt_grp_ = "vnt_grp_";
+ } private static final String Invk_get = "get", Invk_init_end = "init_end", Invk_cur_vnt_ = "cur_vnt_", Invk_vnt_grp_ = "vnt_grp_", Invk_html_style_ = "html_style_";
+ private static final byte[] Msg_variantname = Bry_.new_a7("variantname-");
}
diff --git a/400_xowa/src/gplx/xowa/langs/vnts/Xol_vnt_regy.java b/400_xowa/src/gplx/xowa/langs/vnts/Xol_vnt_regy.java
new file mode 100644
index 000000000..196daafcf
--- /dev/null
+++ b/400_xowa/src/gplx/xowa/langs/vnts/Xol_vnt_regy.java
@@ -0,0 +1,59 @@
+/*
+XOWA: the XOWA Offline Wiki Application
+Copyright (C) 2012 gnosygnu@gmail.com
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU Affero General Public License as
+published by the Free Software Foundation, either version 3 of the
+License, or (at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU Affero General Public License for more details.
+
+You should have received a copy of the GNU Affero General Public License
+along with this program. If not, see .
+*/
+package gplx.xowa.langs.vnts; import gplx.*; import gplx.xowa.*; import gplx.xowa.langs.*;
+import gplx.core.btries.*;
+import gplx.xowa.parsers.vnts.*;
+public class Xol_vnt_regy {
+ private final Ordered_hash hash = Ordered_hash_.new_bry_(); private int hash_len;
+ public Btrie_slim_mgr Trie() {return trie;} private final Btrie_slim_mgr trie = Btrie_slim_mgr.ci_a7();
+ public int Len() {return hash.Count();}
+ public boolean Has(byte[] k) {return hash.Has(k);}
+ public Xol_vnt_itm Get_at(int i) {return (Xol_vnt_itm)hash.Get_at(i);}
+ public Xol_vnt_itm Get_by(byte[] k) {return (Xol_vnt_itm)hash.Get_by(k);}
+ public void Clear() {hash.Clear(); trie.Clear(); hash_len = 0;}
+ public Xol_vnt_itm Add(byte[] key, byte[] name) {
+ int mask = gplx.core.brys.Bit_.Get_flag(hash_len);
+ Xol_vnt_itm itm = new Xol_vnt_itm(key, name, mask);
+ hash.Add(key, itm);
+ trie.Add_obj(key, itm);
+ hash_len = hash.Count();
+ return itm;
+ }
+ public int Mask__calc(byte[]... ary) {
+ int rv = 0;
+ int len = ary.length;
+ for (int i = 0; i < len; ++i) {
+ byte[] key = ary[i];
+ Xol_vnt_itm itm = (Xol_vnt_itm)hash.Get_by(key); if (itm == null) continue; // handle bad vnt from user input; EX: -{zh;bad|text}-
+ int itm_mask = itm.Mask__vnt();
+ rv = rv == 0 ? itm_mask : Enm_.Flip_int(true, rv, itm_mask);
+ }
+ return rv;
+ }
+ public boolean Mask__match_any(int lhs, int rhs) { // EX: match "zh-cn|zh-hans|zh-hant" against "zh|zh-hans|zh-hant"
+ for (int i = 0; i < hash_len; ++i) {
+ int mask = gplx.core.brys.Bit_.Get_flag(i); // 1,2,4,8
+ if (Enm_.Has_int(lhs, mask)) { // lhs has mask; EX: for lhs=6, mask=1 -> 'n'; mask=2 -> 'y'
+ if (Enm_.Has_int(rhs, mask)) // if rhs does not have mask, return false;
+ return true;
+ }
+ }
+ return false; // should only occur when len = 0;
+ }
+ public void Mask__sort(Xop_vnt_rule_tkn... ary) {Xol_vnt_itm_sorter__rule.I.Sort(hash, ary);}
+}
diff --git a/400_xowa/src/gplx/xowa/langs/vnts/Xol_vnt_regy_tst.java b/400_xowa/src/gplx/xowa/langs/vnts/Xol_vnt_regy_tst.java
new file mode 100644
index 000000000..9220d5354
--- /dev/null
+++ b/400_xowa/src/gplx/xowa/langs/vnts/Xol_vnt_regy_tst.java
@@ -0,0 +1,84 @@
+/*
+XOWA: the XOWA Offline Wiki Application
+Copyright (C) 2012 gnosygnu@gmail.com
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU Affero General Public License as
+published by the Free Software Foundation, either version 3 of the
+License, or (at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU Affero General Public License for more details.
+
+You should have received a copy of the GNU Affero General Public License
+along with this program. If not, see .
+*/
+package gplx.xowa.langs.vnts; import gplx.*; import gplx.xowa.*; import gplx.xowa.langs.*;
+import org.junit.*; import gplx.xowa.parsers.vnts.*;
+public class Xol_vnt_regy_tst {
+ private final Xol_vnt_regy_fxt fxt = new Xol_vnt_regy_fxt();
+ @Test public void Calc() {
+ fxt.Test_calc(String_.Ary("zh") , 1);
+ fxt.Test_calc(String_.Ary("zh", "zh-hans") , 3);
+ fxt.Test_calc(String_.Ary("zh", "bad") , 1);
+ }
+ @Test public void Match() {
+ String[] lang_chain = fxt.Make_lang_chain_cn(); // zh;zh-hans;zh-hant;zh-cn
+ fxt.Test_match_any(Bool_.Y, lang_chain
+ , String_.Ary("zh")
+ , String_.Ary("zh-hans")
+ , String_.Ary("zh-hant")
+ , String_.Ary("zh-cn")
+ , String_.Ary("zh", "zh-hans")
+ , String_.Ary("zh-cn", "zh-hk")
+ );
+ fxt.Test_match_any(Bool_.N, lang_chain
+ , String_.Ary_empty
+ , String_.Ary("bad")
+ , String_.Ary("zh-hk")
+ , String_.Ary("zh-hk", "zh-sg")
+ );
+ }
+ @Test public void Match_2() {
+ fxt.Test_match_any(Bool_.Y, String_.Ary("zh-hans")
+ , String_.Ary("zh", "zh-hant", "zh-hans")
+ );
+ }
+ @Test public void Sort() {
+ fxt.Test_sort(String_.Ary("zh" ) , String_.Ary("zh"));
+ fxt.Test_sort(String_.Ary("zh", "zh-hans", "zh-cn" ) , String_.Ary("zh-cn", "zh-hans", "zh"));
+ }
+}
+class Xol_vnt_regy_fxt {
+ private final Xol_vnt_regy mgr = new Xol_vnt_regy();
+ public Xol_vnt_regy_fxt() {
+ String[] ary = Xop_vnt_parser_fxt.Vnts_chinese;
+ for (String itm : ary)
+ mgr.Add(Bry_.new_u8(itm), Bry_.Empty);
+ }
+ public String[] Make_lang_chain_cn() {return String_.Ary("zh-cn", "zh-hans", "zh-hant", "zh");}
+ public void Test_match_any(boolean expd, String[] lang_chain, String[]... vnt_chain_ary) {
+ int len = vnt_chain_ary.length;
+ int lang_flag = mgr.Mask__calc(Bry_.Ary(lang_chain));
+ for (int i = 0; i < len; ++i) {
+ String[] vnt_chain = vnt_chain_ary[i]; // EX: -{zh;zh-hans;zh-hant}-
+ int vnt_flag = mgr.Mask__calc(Bry_.Ary(vnt_chain));
+ Tfds.Eq(expd, mgr.Mask__match_any(vnt_flag, lang_flag), String_.Concat_with_str(";", vnt_chain) + "<>" + String_.Concat_with_str(";", lang_chain));
+ }
+ }
+ public void Test_calc(String[] ary, int expd) {
+ Tfds.Eq(expd, mgr.Mask__calc(Bry_.Ary(ary)));
+ }
+ public void Test_sort(String[] vnt_ary, String[] expd) {
+ int vnt_len = vnt_ary.length;
+ Xop_vnt_rule_tkn[] rule_ary = new Xop_vnt_rule_tkn[vnt_len];
+ for (int i = 0; i < vnt_len; ++i)
+ rule_ary[i] = new Xop_vnt_rule_tkn(Bry_.Empty, Bry_.new_u8(vnt_ary[i]), gplx.xowa.parsers.Xop_tkn_itm_.Ary_empty);
+ mgr.Mask__sort(rule_ary);
+ for (int i = 0; i < vnt_len; ++i)
+ vnt_ary[i] = String_.new_u8(rule_ary[i].Rule_lang());
+ Tfds.Eq_ary_str(expd, vnt_ary);
+ }
+}
diff --git a/400_xowa/src/gplx/xowa/langs/vnts/Xop_vnt_flag_lang_bldr.java b/400_xowa/src/gplx/xowa/langs/vnts/Xop_vnt_flag_lang_bldr.java
deleted file mode 100644
index 28ef3a04c..000000000
--- a/400_xowa/src/gplx/xowa/langs/vnts/Xop_vnt_flag_lang_bldr.java
+++ /dev/null
@@ -1,64 +0,0 @@
-/*
-XOWA: the XOWA Offline Wiki Application
-Copyright (C) 2012 gnosygnu@gmail.com
-
-This program is free software: you can redistribute it and/or modify
-it under the terms of the GNU Affero General Public License as
-published by the Free Software Foundation, either version 3 of the
-License, or (at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU Affero General Public License for more details.
-
-You should have received a copy of the GNU Affero General Public License
-along with this program. If not, see .
-*/
-package gplx.xowa.langs.vnts; import gplx.*; import gplx.xowa.*; import gplx.xowa.langs.*;
-import gplx.core.btries.*;
-class Xop_vnt_flag_lang_bldr {
- private Xop_vnt_flag_lang_itm[] ary; private int ary_len;
- private int ary_count;
- public Xop_vnt_flag_lang_bldr(Xol_vnt_mgr vnt_mgr) {
- Xol_vnt_converter[] converter_ary = vnt_mgr.Converter_ary();
- int len = converter_ary.length;
- for (int i = 0; i < len; i++) {
- byte[] lang = converter_ary[i].Owner().Key();
- Xop_vnt_flag_lang_itm itm = new Xop_vnt_flag_lang_itm(i, lang);
- trie.Add_obj(lang, itm);
- }
- ary = new Xop_vnt_flag_lang_itm[len];
- ary_len = len;
- }
- public Btrie_slim_mgr Trie() {return trie;} private Btrie_slim_mgr trie = Btrie_slim_mgr.ci_a7(); // NOTE:ci.ascii:MW_const.en; lang variant name; EX:zh-hans
- public void Add(Xop_vnt_flag_lang_itm itm) {
- int idx = itm.Idx();
- if (ary[idx] == null) {
- ary[idx] = itm;
- ++ary_count;
- }
- }
- public void Clear() {
- for (int i = 0; i < ary_len; i++)
- ary[i] = null;
- ary_count = 0;
- }
- public Xop_vnt_flag Bld() {
- if (ary_count == 0) return Xop_vnt_flag_.Flag_unknown;
- byte[][] langs = new byte[ary_count][];
- int ary_idx = 0;
- for (int i = 0; i < ary_len; i++) {
- Xop_vnt_flag_lang_itm itm = ary[i];
- if (itm != null)
- langs[ary_idx++] = itm.Key();
- }
- return Xop_vnt_flag_.new_langs_(langs);
- }
-}
-class Xop_vnt_flag_lang_itm {
- public Xop_vnt_flag_lang_itm(int idx, byte[] key) {this.idx = idx; this.key = key; this.key_len = key.length;}
- public int Idx() {return idx;} private int idx;
- public byte[] Key() {return key;} private byte[] key;
- public int Key_len() {return key_len;} private int key_len;
-}
diff --git a/400_xowa/src/gplx/xowa/langs/vnts/Xop_vnt_lxr_tst.java b/400_xowa/src/gplx/xowa/langs/vnts/Xop_vnt_lxr_tst.java
deleted file mode 100644
index f863b151c..000000000
--- a/400_xowa/src/gplx/xowa/langs/vnts/Xop_vnt_lxr_tst.java
+++ /dev/null
@@ -1,163 +0,0 @@
-/*
-XOWA: the XOWA Offline Wiki Application
-Copyright (C) 2012 gnosygnu@gmail.com
-
-This program is free software: you can redistribute it and/or modify
-it under the terms of the GNU Affero General Public License as
-published by the Free Software Foundation, either version 3 of the
-License, or (at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU Affero General Public License for more details.
-
-You should have received a copy of the GNU Affero General Public License
-along with this program. If not, see .
-*/
-package gplx.xowa.langs.vnts; import gplx.*; import gplx.xowa.*; import gplx.xowa.langs.*;
-import org.junit.*; import gplx.xowa.parsers.*; import gplx.xowa.parsers.miscs.*;
-public class Xop_vnt_lxr_tst {
- private Xop_vnt_lxr_fxt fxt = new Xop_vnt_lxr_fxt();
- @Before public void init() {fxt.Clear();}
- @Test public void Flag_unknown() {fxt.Test_parse("-{X|b}-" , fxt.vnt_().Flags_unknown_().Rule_("b"));}
- @Test public void Flag_raw_basic() {fxt.Test_parse("-{A|b}-" , fxt.vnt_().Flags_codes_("A").Rule_("b"));}
- @Test public void Flag_add_ws() {fxt.Test_parse("-{ A |b}-" , fxt.vnt_().Flags_codes_("A").Rule_("b"));}
- @Test public void Flag_add_unknown() {fxt.Test_parse("-{ A x |b}-" , fxt.vnt_().Flags_unknown_().Rule_("b"));}
- @Test public void Flag_langs_basic() {fxt.Test_parse("-{zh-hans;zh-hant|b}-" , fxt.vnt_().Flags_langs_("zh-hans", "zh-hant").Rule_("b"));}
- @Test public void Flag_langs_semic() {fxt.Test_parse("-{zh-hans;zh-hant;|b}-" , fxt.vnt_().Flags_langs_("zh-hans", "zh-hant").Rule_("b"));}
- @Test public void Flag_langs_ws() {fxt.Test_parse("-{ zh-hans ; zh-hant ; |b}-" , fxt.vnt_().Flags_langs_("zh-hans", "zh-hant").Rule_("b"));}
- @Test public void Flag_unknown_1st() {fxt.Test_parse("-{ zh-hans x ; zh-hant ; |b}-" , fxt.vnt_().Flags_unknown_().Rule_("b"));}
- @Test public void Flag_unknown_nth() {fxt.Test_parse("-{ zh-hans ; zh-hant x; |b}-" , fxt.vnt_().Flags_unknown_().Rule_("b"));}
- @Test public void Flag_unknown_all() {fxt.Test_parse("-{ zh-hans x ; zh-hant x;|b}-" , fxt.vnt_().Flags_unknown_().Rule_("b"));}
- @Test public void Flag_multiple() {fxt.Test_parse("-{A|D|E|b}-" , fxt.vnt_().Flags_codes_("A", "D", "E").Rule_("b"));}
- @Test public void Rule_add_one() {fxt.Test_parse("-{A|zh-hans:bcd}-" , fxt.vnt_().Flags_codes_("A").Rule_("zh-hans", "bcd"));}
- @Test public void Rule_add_one_semic() {fxt.Test_parse("-{A|zh-hans:bcd;}-" , fxt.vnt_().Flags_codes_("A").Rule_("zh-hans", "bcd"));}
- @Test public void Rule_add_one_semic_empty() {fxt.Test_parse("-{A|zh-hans:bcd;;}-" , fxt.vnt_().Flags_codes_("A").Rule_("zh-hans", "bcd"));}
- @Test public void Rule_add_one_ws() {fxt.Test_parse("-{A|zh-hans : b c ;}-" , fxt.vnt_().Flags_codes_("A").Rule_("zh-hans", "b c"));}
- @Test public void Rule_add_many() {fxt.Test_parse("-{A|zh-hans:b;zh-hant:c}-" , fxt.vnt_().Flags_codes_("A").Rule_("zh-hans", "b").Rule_("zh-hant", "c"));}
- @Test public void Macro_one() {fxt.Test_parse("-{H|A1=>zh-hans:b;zh-hant:c}-" , fxt.vnt_().Flags_codes_("H").Rule_("A1", "zh-hans", "b").Rule_("A1", "zh-hant", "c"));}
- @Test public void Bidi() {fxt.Test_parse("-{zh-hans:b;zh-hant:c}-" , fxt.vnt_().Flags_none_().Rule_("zh-hans", "b").Rule_("zh-hant", "c"));}
- @Test public void None() {fxt.Test_parse("-{a}-" , fxt.vnt_().Flags_none_().Rule_("a"));}
- @Test public void Macro_mult() {
- fxt.Test_parse("-{H|A1=>zh-hans:b;zh-hant:c;A2=>zh-hans:d;zh-hant:e}-"
- , fxt.vnt_().Flags_codes_("H")
- .Rule_("A1", "zh-hans", "b").Rule_("A1", "zh-hant", "c")
- .Rule_("A2", "zh-hans", "d").Rule_("A2", "zh-hant", "e")
- );
- }
-
-// @Test public void Disabled() {
-// Xop_fxt fxt = new Xop_fxt();
-// fxt.Wiki().Vnt_mgr().Set(null, null);
-// fxt.Test_parse_page_all_str("a-{b}-c", "a-{b}-c");
-// }
-// @Test public void Enabled() {
-// Xoae_app app = Xoa_app_fxt.app_();
-// Xol_lang lang = new Xol_lang(app, Bry_.new_a7("zh"));
-// Xowe_wiki wiki = Xoa_app_fxt.wiki_(app, "zh.wikipedia.org", lang);
-// Xop_fxt fxt = new Xop_fxt(app, wiki);
-// fxt.Test_parse_page_all_str("a-{b}-c", "ac");
-// fxt.Wiki().Vnt_mgr().Set(null, null); // set it back to null for other tests
-// }
-}
-class Xop_vnt_tkn_mok {
- private List_adp rules_list = List_adp_.new_();
- private List_adp flags_list = List_adp_.new_();
- public Xop_vnt_flag[] Flags() {
- if (flags == null) flags = (Xop_vnt_flag[])flags_list.To_ary(Xop_vnt_flag.class);
- return flags;
- } private Xop_vnt_flag[] flags;
- public Xop_vnt_tkn_mok Flags_none_() {flags_list.Clear(); return this;}
- public Xop_vnt_tkn_mok Flags_unknown_(String... v) {flags_list.Add(Xop_vnt_flag_.Flag_unknown); return this;}
- public Xop_vnt_tkn_mok Flags_langs_(String... v) {flags_list.Add(Xop_vnt_flag_.new_langs_(Bry_.Ary(v))); return this;}
- public Xop_vnt_tkn_mok Flags_codes_(String... ary) {
- int len = ary.length;
- for (int i = 0; i < len; i++) {
- byte[] bry = Bry_.new_a7(ary[i]);
- Xop_vnt_flag flag = (Xop_vnt_flag)Xop_vnt_flag_.Trie.Match_bgn(bry, 0, bry.length);
- flags_list.Add(flag);
- }
- return this;
- }
- public Xop_vnt_rule[] Rules() {
- if (rules == null) rules = (Xop_vnt_rule[])rules_list.To_ary(Xop_vnt_rule.class);
- return rules;
- } private Xop_vnt_rule[] rules;
- public Xop_vnt_tkn_mok Rule_(String rule) {return Rule_(Xop_vnt_rule.Null_lang, rule);}
- public Xop_vnt_tkn_mok Rule_(byte[] lang, String rule) {return Rule_(Xop_vnt_rule.Null_macro, lang, new Xop_bry_tkn(-1, -1, Bry_.new_u8(rule)));}
- public Xop_vnt_tkn_mok Rule_(String lang, String rule) {return Rule_(Xop_vnt_rule.Null_macro, Bry_.new_a7(lang), new Xop_bry_tkn(-1, -1, Bry_.new_u8(rule)));}
- public Xop_vnt_tkn_mok Rule_(String macro, String lang, String rule) {return Rule_(Bry_.new_a7(macro), Bry_.new_a7(lang), new Xop_bry_tkn(-1, -1, Bry_.new_u8(rule)));}
- public Xop_vnt_tkn_mok Rule_(byte[] macro, byte[] lang, Xop_tkn_itm... tkns) {rules_list.Add(new Xop_vnt_rule(macro, lang, tkns)); return this;}
-}
-class Xop_vnt_lxr_fxt {
- private Xop_fxt fxt;
- private Bry_bfr tmp_bfr = Bry_bfr.new_();
- public Xop_vnt_lxr_fxt Clear() {
- Xoae_app app = Xoa_app_fxt.app_();
- Xowe_wiki wiki = Xoa_app_fxt.wiki_(app, "zh.wikipedia.org");
- fxt = new Xop_fxt(app, wiki);
- Xop_vnt_lxr_fxt.Init_vnt_mgr(wiki.Lang().Vnt_mgr(), "zh-hans", "zh-hant");
- Xop_vnt_lxr_.set_(wiki);
- return this;
- }
- public Xop_vnt_tkn_mok vnt_() {return new Xop_vnt_tkn_mok();}
- public static void Init_vnt_mgr(Xol_vnt_mgr vnt_mgr, String... vnts_str) {
- byte[][] vnts_bry = Bry_.Ary(vnts_str);
- int vnts_bry_len = vnts_bry.length;
- for (int i = 0; i < vnts_bry_len; i++)
- vnt_mgr.Get_or_new(vnts_bry[i]);
- vnt_mgr.Convert_ttl_init();
- }
- public Xop_vnt_lxr_fxt Test_parse(String raw, Xop_vnt_tkn_mok expd) {
- byte[] raw_bry = Bry_.new_u8(raw);
- Xop_root_tkn root = fxt.Exec_parse_page_all_as_root(raw_bry);
- Xop_vnt_tkn actl = (Xop_vnt_tkn)root.Subs_get(0);
- Test_vnt_tkn(raw_bry, expd, actl);
- return this;
- }
- private void Test_vnt_tkn(byte[] raw_bry, Xop_vnt_tkn_mok expd, Xop_vnt_tkn actl) {
- Tfds.Eq(Vnt_flag_ary_to_str(tmp_bfr, expd.Flags()), Vnt_flag_ary_to_str(tmp_bfr, actl.Vnt_flags()), "flags");
- Tfds.Eq(Vnt_rule_ary_to_str(tmp_bfr, raw_bry, expd.Rules()), Vnt_rule_ary_to_str(tmp_bfr, raw_bry, actl.Vnt_rules()), "rules");
- }
- private String Vnt_flag_ary_to_str(Bry_bfr bfr, Xop_vnt_flag[] ary) {
- int len = ary.length;
- for (int i = 0; i < len; i++) {
- Xop_vnt_flag itm = ary[i];
- byte itm_tid = itm.Tid();
- if (itm_tid == Xop_vnt_flag_.Tid_lang)
- Vnt_flag_lang_to_bfr(bfr, itm);
- else
- bfr.Add_str(Xop_vnt_flag_.Xto_name(itm_tid)).Add_byte(Byte_ascii.Semic);
- }
- return bfr.Xto_str_and_clear();
- }
- private void Vnt_flag_lang_to_bfr(Bry_bfr bfr, Xop_vnt_flag itm) {
- byte[][] ary = itm.Langs();
- int len = ary.length;
- for (int i = 0; i < len; i++)
- bfr.Add(ary[i]).Add_byte(Byte_ascii.Semic);
- }
- private String Vnt_rule_ary_to_str(Bry_bfr bfr, byte[] src, Xop_vnt_rule[] ary) {
- if (ary == null) return "";
- int len = ary.length;
- for (int i = 0; i < len; i++) {
- Xop_vnt_rule itm = ary[i];
- if (itm.Rule_macro() != Xop_vnt_rule.Null_macro) // macro exists
- bfr.Add(itm.Rule_macro()).Add_str("=>");
- if (itm.Rule_lang() != Xop_vnt_rule.Null_lang) // lang exists
- bfr.Add(itm.Rule_lang()).Add_byte(Byte_ascii.Colon);
- Xop_tkn_itm[] subs = itm.Rule_subs();
- int subs_len = subs.length;
- for (int j = 0; j < subs_len; j++) {
- Xop_tkn_itm sub = subs[j];
- if (sub.Tkn_tid() == Xop_tkn_itm_.Tid_bry) // tests uses Xop_tkn_bry
- bfr.Add(((Xop_bry_tkn)sub).Val());
- else
- bfr.Add_mid(src, sub.Src_bgn(), sub.Src_end());
- }
- bfr.Add_byte(Byte_ascii.Semic);
- }
- return bfr.Xto_str_and_clear();
- }
-}
diff --git a/400_xowa/src/gplx/xowa/langs/vnts/Xop_vnt_rules_parser.java b/400_xowa/src/gplx/xowa/langs/vnts/Xop_vnt_rules_parser.java
deleted file mode 100644
index 71a6d13eb..000000000
--- a/400_xowa/src/gplx/xowa/langs/vnts/Xop_vnt_rules_parser.java
+++ /dev/null
@@ -1,230 +0,0 @@
-/*
-XOWA: the XOWA Offline Wiki Application
-Copyright (C) 2012 gnosygnu@gmail.com
-
-This program is free software: you can redistribute it and/or modify
-it under the terms of the GNU Affero General Public License as
-published by the Free Software Foundation, either version 3 of the
-License, or (at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU Affero General Public License for more details.
-
-You should have received a copy of the GNU Affero General Public License
-along with this program. If not, see .
-*/
-package gplx.xowa.langs.vnts; import gplx.*; import gplx.xowa.*; import gplx.xowa.langs.*;
-import gplx.core.btries.*;
-import gplx.xowa.parsers.*; import gplx.xowa.parsers.miscs.*;
-class Xop_vnt_rules_parser {
- private byte mode;
- private Xop_vnt_tkn vnt_tkn;
- private boolean loop_vnt_subs; private int vnt_subs_cur, vnt_subs_bgn, vnt_subs_len;
- private int rule_texts_bgn;
- private Btrie_slim_mgr trie;
- private List_adp rules_list = List_adp_.new_();
- private List_adp text_tkns_list = List_adp_.new_();
- private int text_tkns_ws_end_idx;
- private byte[] src;
- private Xop_tkn_mkr tkn_mkr;
-// private int cur_macro_bgn = -1;
- private int cur_key_bgn = -1;
- private byte[] cur_macro_bry = null;
- private byte[] cur_lang_bry = null;
- public Xop_vnt_rules_parser(Xol_vnt_mgr vnt_mgr) {
- trie = Btrie_slim_mgr.ci_a7(); // NOTE:ci.ascii:MW_const.en; lang variant name; EX:zh-hans
- Xol_vnt_converter[] ary = vnt_mgr.Converter_ary();
- int ary_len = ary.length;
- for (int i = 0; i < ary_len; i++) {
- Xol_vnt_converter itm = ary[i];
- byte[] itm_lang = itm.Owner_key();
- trie.Add_obj(itm_lang, Xop_vnt_rule_trie_itm.lang_(itm_lang));
- }
- trie.Add_obj(";", Xop_vnt_rule_trie_itm.Dlm_semic);
-// trie.Add("=>", Xop_vnt_rule_trie_itm.Dlm_eqgt);
- }
- public void Clear_all() {
- rules_list.Clear();
- text_tkns_list.Clear();
- cur_macro_bry = cur_lang_bry = null;
- cur_key_bgn = -1;
- text_tkns_ws_bgn = false;
- text_tkns_ws_end_idx = 0;
- }
- public Xop_vnt_rule[] Parse(Xop_ctx ctx, Xop_vnt_tkn vnt_tkn, byte[] src, int vnt_subs_bgn) {
- this.Clear_all();
- this.tkn_mkr = ctx.Tkn_mkr(); this.src = src;
- this.vnt_tkn = vnt_tkn;
- this.vnt_subs_len = vnt_tkn.Subs_len();
- this.vnt_subs_bgn = this.vnt_subs_cur = vnt_subs_bgn;
- mode = Mode_key;
- loop_vnt_subs = true;
- while (loop_vnt_subs) {
- if (vnt_subs_cur == vnt_subs_len) break;
- Parse_sub();
- ++vnt_subs_cur;
- }
- Make_rule(); // make rules for any pending items; EX: "-{A|text}-"; "text" is unclosed by semic and would need to be processed
- if (mode == Mode_key && rules_list.Count() == 0)
- Make_rule_literal();
- return (Xop_vnt_rule[])rules_list.To_ary_and_clear(Xop_vnt_rule.class);
- }
- private boolean text_tkns_ws_bgn = false;
- private void Parse_sub() {
- Xop_tkn_itm sub = vnt_tkn.Subs_get(vnt_subs_cur);
- if (cur_key_bgn == -1) cur_key_bgn = sub.Src_bgn();
- boolean text_tkns_list_add = true;
- boolean sub_is_ws = false;
- switch (sub.Tkn_tid()) {
- case Xop_tkn_itm_.Tid_txt:
- Parse_key(sub, src, sub.Src_bgn(), sub.Src_end());
- if (mode == Mode_key)
- text_tkns_list_add = false;
- break;
- case Xop_tkn_itm_.Tid_bry:
- Xop_bry_tkn bry_tkn = (Xop_bry_tkn)sub;
- byte[] bry = bry_tkn.Val();
- Parse_key(sub, bry, 0, bry.length);
- break;
- case Xop_tkn_itm_.Tid_colon:
- if ( mode == Mode_lang // colon should only follow lang; EX: zh-hant:text
- && cur_lang_bry == null) { // if pending lang, ignore; assume part of text
- cur_lang_bry = Bry_.Trim(Bry_.Mid(src, cur_key_bgn, sub.Src_bgn()));
- mode = Mode_text;
- rule_texts_bgn = vnt_subs_cur + 1;
- text_tkns_list_add = false;
- text_tkns_ws_bgn = true;
- }
- break;
- case Xop_tkn_itm_.Tid_space:
- case Xop_tkn_itm_.Tid_tab:
- case Xop_tkn_itm_.Tid_newLine: // skip ws
- if (text_tkns_ws_bgn) text_tkns_list_add = false;
- else sub_is_ws = true;
- break;
- case Xop_tkn_itm_.Tid_vnt_eqgt:
- if (mode == Mode_key) {
- cur_macro_bry = Bry_.Trim(Bry_.Mid(src, cur_key_bgn, sub.Src_bgn()));
- text_tkns_list_add = false;
- }
- break;
- default:
- break;
- }
- if (sub_is_ws)
- text_tkns_ws_end_idx = text_tkns_list.Count(); // update last_ws_idx
- else
- text_tkns_ws_end_idx = -1; // set last_ws_idx to nil
- if (mode == Mode_text && text_tkns_list_add) { // mode is text && not a "key" tkn
- text_tkns_list.Add(sub);
- text_tkns_ws_bgn = false; // mark ws_bgn as false (handles trimming at start)
- }
- }
- private void Parse_key(Xop_tkn_itm sub, byte[] src, int src_bgn, int src_end) {
- int pos = src_bgn;
- boolean loop_key_bry = true;
-// boolean rv_add_as_text_tkn = true;
- while (loop_key_bry) {
- if (pos == src_end) break;
- if (cur_key_bgn == -1) cur_key_bgn = pos;
- byte b = src[pos];
- Object itm_obj = trie.Match_bgn_w_byte(b, src, pos, src_end);
- if (itm_obj == null) { // not a lang, semic, or eqgt; treat rest of vnt as one rule tkn
-// if (mode == Mode_key)
-// loop_key_bry = Make_rule_literal();
-// else
- ++pos;
- }
- else {
- Xop_vnt_rule_trie_itm itm = (Xop_vnt_rule_trie_itm)itm_obj;
- int new_pos = trie.Match_pos();
- switch (itm.Tid()) {
- case Xop_vnt_rule_trie_itm.Tid_lang:
- if (mode == Mode_key) {
- int next_char_pos = Bry_finder.Find_fwd_while_space_or_tab(src, new_pos, src_end);
- if (next_char_pos == src_end) { // eos; EX: "zh-hant :a"
- cur_key_bgn = pos;
- mode = Mode_lang;
- }
- else
- loop_key_bry = Make_rule_literal();
- return;
- }
- break;
- case Xop_vnt_rule_trie_itm.Tid_semic:
- switch (mode) {
- case Mode_text:
- text_tkns_list.Add(tkn_mkr.Bry_raw(src_bgn, pos, Bry_.Trim(Bry_.Mid(src, src_bgn, pos))));
- Make_rule();
- cur_lang_bry = null;
- mode = Mode_key;
- cur_key_bgn = -1;
- break;
- case Mode_key: // ignore; empty semic's; EX: "zh-hant:a;;"
- break;
- }
-// rv_add_as_text_tkn = false;
- break;
-// case Xop_vnt_rule_trie_itm.Tid_eqgt:
-// if ( mode == Mode_key) { // if pending lang, ignore; assume part of text
-// cur_macro_bry = Bry_.Mid(src, cur_key_bgn, sub.Src_bgn());
-// cur_key_bgn = new_pos + 1;
-// }
-// break;
- }
- pos = new_pos;
- }
- }
-// if (rv_add_as_text_tkn)
-// mode = Mode_text;
-// return rv_add_as_text_tkn;
- }
- private boolean Make_rule_literal() { // return false for loop_key_bry
- this.Clear_all();
- Xop_tkn_itm[] rule_subs = Make_subs(vnt_subs_bgn, vnt_subs_len);
- rules_list.Add(new Xop_vnt_rule(Xop_vnt_rule.Null_macro, Xop_vnt_rule.Null_lang, rule_subs));
- loop_vnt_subs = false;
- return false;
- }
- private Xop_tkn_itm[] Make_subs(int bgn, int end) {
- int len = end - bgn;
- Xop_tkn_itm[] rv = new Xop_tkn_itm[len];
- for (int i = bgn; i < end; i++)
- rv[i - bgn] = vnt_tkn.Subs_get(i);
- return rv;
- }
- private void Make_rule() {
- if ( mode == Mode_text
- && rule_texts_bgn < vnt_subs_len) {
- if (text_tkns_ws_end_idx != -1) { // trailing ws
- text_tkns_list.Del_range(text_tkns_ws_end_idx, text_tkns_list.Count() - 1);
- }
- Xop_tkn_itm[] rule_subs = (Xop_tkn_itm[])text_tkns_list.To_ary_and_clear(Xop_tkn_itm.class);
- Xop_vnt_rule rule = new Xop_vnt_rule(cur_macro_bry, cur_lang_bry, rule_subs);
- rules_list.Add(rule);
- }
- }
- private static final byte Mode_key = 1, Mode_lang = 2, Mode_text = 3;//, Mode_macro = 4;
-}
-class Xop_vnt_rule_trie_itm {
- public Xop_vnt_rule_trie_itm(byte tid, byte[] lang) {this.tid = tid; this.lang = lang;}
- public byte Tid() {return tid;} private byte tid;
- public byte[] Lang() {return lang;} private byte[] lang;
- public static final byte Tid_semic = 1, Tid_lang = 2;
- public static Xop_vnt_rule_trie_itm lang_(byte[] lang) {return new Xop_vnt_rule_trie_itm(Tid_lang, lang);}
- public static final Xop_vnt_rule_trie_itm
- Dlm_semic = new Xop_vnt_rule_trie_itm(Tid_semic, null)
- ;
-}
-/*
--{flags|lang:rule}- EX: -{A|zh-hant:a}-
--{lang:rule;lang:rule} EX: -{zh-hans:a;zh-hant:b}-
--{lang;lang|rule}- EX: -{zh-hans;zh-hant|XXXX}-
--{rule}- EX: -{a}-
--{flags|from=>variant:to;}- EX: -{H|HUGEBLOCK=>zh-cn:macro;}-
--{lang:data_0;data_1;}- EX: -{zh-hans:;zh-hant:b}-
-. where data_0 and data_1 is actually one itm since ; is not delimiter b/c data_1 must be variant_code
--{zh-hans:a-{zh-hans:b}-c}-
-*/
diff --git a/400_xowa/src/gplx/xowa/langs/cnvs/Xol_cnv_grp.java b/400_xowa/src/gplx/xowa/langs/vnts/converts/Xol_convert_grp.java
similarity index 65%
rename from 400_xowa/src/gplx/xowa/langs/cnvs/Xol_cnv_grp.java
rename to 400_xowa/src/gplx/xowa/langs/vnts/converts/Xol_convert_grp.java
index 6ab2817f3..9060a1d36 100644
--- a/400_xowa/src/gplx/xowa/langs/cnvs/Xol_cnv_grp.java
+++ b/400_xowa/src/gplx/xowa/langs/vnts/converts/Xol_convert_grp.java
@@ -15,23 +15,20 @@ GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see .
*/
-package gplx.xowa.langs.cnvs; import gplx.*; import gplx.xowa.*; import gplx.xowa.langs.*;
-import gplx.intl.*;
-public class Xol_cnv_grp implements GfoInvkAble {
- private Ordered_hash hash = Ordered_hash_.new_bry_();
- public Xol_cnv_grp(byte[] key) {this.key = key;}
- public byte[] Key() {return key;} private byte[] key;
- public int Len() {return hash.Count();}
- public Xol_cnv_itm Get_at(int i) {return (Xol_cnv_itm)hash.Get_at(i);}
- public void Add(byte[] src, byte[] trg) {
- hash.Add_if_dupe_use_nth(src, new Xol_cnv_itm(src, trg));
- }
+package gplx.xowa.langs.vnts.converts; import gplx.*; import gplx.xowa.*; import gplx.xowa.langs.*; import gplx.xowa.langs.vnts.*;
+public class Xol_convert_grp implements GfoInvkAble {// group of convert_itm by vnt; EX: zh-hant {A -> A1; B -> B1}
+ private final Ordered_hash hash = Ordered_hash_.new_bry_();
+ public Xol_convert_grp(byte[] key) {this.key = key;}
+ public byte[] Key() {return key;} private final byte[] key;
+ public int Len() {return hash.Count();}
+ public Xol_convert_itm Get_at(int i) {return (Xol_convert_itm)hash.Get_at(i);}
+ public void Add(byte[] src, byte[] trg) {hash.Add_if_dupe_use_nth(src, new Xol_convert_itm(src, trg));}
public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) {
- if (ctx.Match(k, Invk_add_bulk)) Add_bulk(hash, m.ReadBry("v"));
+ if (ctx.Match(k, Invk_add_bulk)) Add_bulk(this, m.ReadBry("v"));
else return GfoInvkAble_.Rv_unhandled;
return this;
} private static final String Invk_add_bulk = "add_bulk";
- public static void Add_bulk(Ordered_hash hash, byte[] raw) { // COPY:add_bulk
+ private static void Add_bulk(Xol_convert_grp grp, byte[] raw) {
int len = raw.length;
int pos = 0, fld_bgn = 0, fld_idx = 0;
byte[] src = Bry_.Empty, trg = Bry_.Empty;
@@ -51,7 +48,7 @@ public class Xol_cnv_grp implements GfoInvkAble {
case Byte_ascii.Nl:
if (fld_bgn < pos) { // guard against trailing new lines
trg = csv_parser.Load(raw, fld_bgn, pos);
- hash.Add_if_dupe_use_nth(src, new Xol_cnv_itm(src, trg));
+ grp.Add(src, trg);
}
fld_bgn = pos + 1;
fld_idx = 0;
diff --git a/400_xowa/src/gplx/xowa/langs/vnts/Vnt_mnu_grp.java b/400_xowa/src/gplx/xowa/langs/vnts/converts/Xol_convert_itm.java
similarity index 58%
rename from 400_xowa/src/gplx/xowa/langs/vnts/Vnt_mnu_grp.java
rename to 400_xowa/src/gplx/xowa/langs/vnts/converts/Xol_convert_itm.java
index 3e2554ef5..760ac48a2 100644
--- a/400_xowa/src/gplx/xowa/langs/vnts/Vnt_mnu_grp.java
+++ b/400_xowa/src/gplx/xowa/langs/vnts/converts/Xol_convert_itm.java
@@ -15,12 +15,9 @@ GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see .
*/
-package gplx.xowa.langs.vnts; import gplx.*; import gplx.xowa.*; import gplx.xowa.langs.*;
-public class Vnt_mnu_grp {
- private final Ordered_hash list = Ordered_hash_.new_bry_();
- public int Len() {return list.Count();}
- public boolean Has(byte[] key) {return list.Has(key);}
- public Vnt_mnu_itm Get_at(int i) {return (Vnt_mnu_itm)list.Get_at(i);}
- public void Add(Vnt_mnu_itm itm) {list.Add_if_dupe_use_1st(itm.Key(), itm);}
- public Vnt_mnu_itm Get_by(byte[] key) {return (Vnt_mnu_itm)list.Get_by(key);}
+package gplx.xowa.langs.vnts.converts; import gplx.*; import gplx.xowa.*; import gplx.xowa.langs.*; import gplx.xowa.langs.vnts.*;
+public class Xol_convert_itm {
+ public Xol_convert_itm(byte[] src, byte[] trg) {this.src = src; this.trg = trg;} // convert from src to trg; EX: A -> A1
+ public byte[] Src() {return src;} private final byte[] src;
+ public byte[] Trg() {return trg;} private final byte[] trg;
}
diff --git a/400_xowa/src/gplx/xowa/langs/vnts/converts/Xol_convert_mgr.java b/400_xowa/src/gplx/xowa/langs/vnts/converts/Xol_convert_mgr.java
new file mode 100644
index 000000000..a607e3400
--- /dev/null
+++ b/400_xowa/src/gplx/xowa/langs/vnts/converts/Xol_convert_mgr.java
@@ -0,0 +1,92 @@
+/*
+XOWA: the XOWA Offline Wiki Application
+Copyright (C) 2012 gnosygnu@gmail.com
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU Affero General Public License as
+published by the Free Software Foundation, either version 3 of the
+License, or (at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU Affero General Public License for more details.
+
+You should have received a copy of the GNU Affero General Public License
+along with this program. If not, see .
+*/
+package gplx.xowa.langs.vnts.converts; import gplx.*; import gplx.xowa.*; import gplx.xowa.langs.*; import gplx.xowa.langs.vnts.*;
+import gplx.xowa.nss.*; import gplx.xowa.wikis.data.tbls.*;
+public class Xol_convert_mgr {
+ private final Ordered_hash tmp_page_list = Ordered_hash_.new_bry_();
+ private int wkr_ary_len, cur_wkr_idx = -1;
+ public Xol_convert_regy Converter_regy() {return converter_regy;} private final Xol_convert_regy converter_regy = new Xol_convert_regy();
+ public Xol_convert_wkr[] Converter_ary() {return wkr_ary;} private Xol_convert_wkr[] wkr_ary;
+ public void Init(Xol_vnt_regy regy) {
+ int len = regy.Len();
+ this.wkr_ary_len = len;
+ this.wkr_ary = new Xol_convert_wkr[len];
+ for (int i = 0; i < len; i++) {
+ Xol_vnt_itm itm = regy.Get_at(i);
+ itm.Convert_wkr().Rebuild(converter_regy, itm.Convert_ary());
+ wkr_ary[i] = itm.Convert_wkr();
+ }
+ }
+ public void Cur_vnt_(byte[] cur_vnt) {
+ int new_wkr_idx = -1;
+ for (int i = 0; i < wkr_ary_len; i++) {
+ Xol_convert_wkr wkr = wkr_ary[i];
+ if (Bry_.Eq(cur_vnt, wkr.Key())) {
+ new_wkr_idx = i;
+ break;
+ }
+ }
+ if (new_wkr_idx == -1) throw Err_.new_("lang.vnt", "unknown vnt", "key", cur_vnt);
+ this.cur_wkr_idx = new_wkr_idx;
+ }
+ public byte[] Convert_text(Xowe_wiki wiki, byte[] src) {return Convert_text(wiki, src, 0, src.length);}
+ public byte[] Convert_text(Xowe_wiki wiki, byte[] src, int bgn, int end) {
+ Bry_bfr tmp_bfr = wiki.Utl__bfr_mkr().Get_m001();
+ Xol_convert_wkr converter = wkr_ary[cur_wkr_idx];
+ converter.Convert_text(tmp_bfr, src, bgn, end);
+ return tmp_bfr.To_bry_and_rls();
+ }
+ public Xowd_page_itm Convert_ttl(Xowe_wiki wiki, Xoa_ttl ttl) {return Convert_ttl(wiki, ttl.Ns(), ttl.Page_db());} // NOTE: not Full_db as ttl.Ns is passed; EX:Шаблон:Šablon:Jez-eng; PAGE:sr.w:ДНК DATE:2014-07-06
+ public Xowd_page_itm Convert_ttl(Xowe_wiki wiki, Xow_ns ns, byte[] ttl_bry) {
+ Bry_bfr tmp_bfr = wiki.Utl__bfr_mkr().Get_b512();
+ Xowd_page_itm rv = Convert_ttl(wiki, tmp_bfr, ns, ttl_bry);
+ tmp_bfr.Mkr_rls();
+ return rv;
+ }
+ public Xowd_page_itm Convert_ttl(Xowe_wiki wiki, Bry_bfr tmp_bfr, Xow_ns ns, byte[] ttl_bry) { // REF.MW:LanguageConverter.php|findVariantLink
+ synchronized (tmp_page_list) {
+ int converted = Convert_ttl__convert_each_vnt(wiki, tmp_bfr, ns, ttl_bry); // convert ttl for each vnt
+ if (converted == 0) return Xowd_page_itm.Null; // ttl_bry has no conversions; exit;
+ wiki.Db_mgr().Load_mgr().Load_by_ttls(Cancelable_.Never, tmp_page_list, true, 0, converted);
+ for (int i = 0; i < converted; i++) {
+ Xowd_page_itm page = (Xowd_page_itm)tmp_page_list.Get_at(i);
+ if (page.Exists()) return page; // return 1st found page
+ }
+ return Xowd_page_itm.Null;
+ }
+ }
+ private int Convert_ttl__convert_each_vnt(Xowe_wiki wiki, Bry_bfr tmp_bfr, Xow_ns ns, byte[] ttl_bry) {
+ synchronized (tmp_page_list) {
+ tmp_page_list.Clear();
+ int rv = 0;
+ for (int i = 0; i < wkr_ary_len; i++) { // convert ttl for each variant
+ Xol_convert_wkr converter = wkr_ary[i];
+ tmp_bfr.Clear();
+ if (!converter.Convert_text(tmp_bfr, ttl_bry)) continue; // ttl is not converted for variant; ignore
+ Xoa_ttl ttl = Xoa_ttl.parse(wiki, ns.Id(), tmp_bfr.Xto_bry_and_clear()); // NOTE: must convert to ttl in order to upper 1st letter; EX:{{jez-eng|sense}} -> Jez-eng; PAGE:sr.w:ДНК DATE:2014-07-06
+ if (ttl == null) continue;
+ Xowd_page_itm page = new Xowd_page_itm();
+ page.Ttl_(ns, ttl.Page_db());
+ byte[] converted_ttl = page.Ttl_full_db(); if (tmp_page_list.Has(converted_ttl)) continue;
+ tmp_page_list.Add(converted_ttl, page);
+ ++rv;
+ }
+ return rv;
+ }
+ }
+}
diff --git a/400_xowa/src/gplx/xowa/langs/cnvs/Xol_cnv_mgr.java b/400_xowa/src/gplx/xowa/langs/vnts/converts/Xol_convert_regy.java
similarity index 63%
rename from 400_xowa/src/gplx/xowa/langs/cnvs/Xol_cnv_mgr.java
rename to 400_xowa/src/gplx/xowa/langs/vnts/converts/Xol_convert_regy.java
index 091a22370..94efceb13 100644
--- a/400_xowa/src/gplx/xowa/langs/cnvs/Xol_cnv_mgr.java
+++ b/400_xowa/src/gplx/xowa/langs/vnts/converts/Xol_convert_regy.java
@@ -15,16 +15,15 @@ GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see .
*/
-package gplx.xowa.langs.cnvs; import gplx.*; import gplx.xowa.*; import gplx.xowa.langs.*;
+package gplx.xowa.langs.vnts.converts; import gplx.*; import gplx.xowa.*; import gplx.xowa.langs.*; import gplx.xowa.langs.vnts.*;
import gplx.xowa.apps.fsys.*;
-public class Xol_cnv_mgr implements GfoInvkAble {
- private Ordered_hash hash = Ordered_hash_.new_bry_();
- public Xol_cnv_mgr(Xol_lang lang) {}//this.lang = lang;} private Xol_lang lang;
- public Xol_cnv_grp Get_or_null(byte[] key) {return (Xol_cnv_grp)hash.Get_by(key);}
- public Xol_cnv_grp Get_or_make(byte[] key) {
- Xol_cnv_grp rv = (Xol_cnv_grp)hash.Get_by(key);
+public class Xol_convert_regy implements GfoInvkAble { // registry of convert_grp; EX: zh-hans;zh-hant;
+ private final Ordered_hash hash = Ordered_hash_.new_bry_();
+ public Xol_convert_grp Get_or_null(byte[] key) {return (Xol_convert_grp)hash.Get_by(key);}
+ public Xol_convert_grp Get_or_make(byte[] key) {
+ Xol_convert_grp rv = (Xol_convert_grp)hash.Get_by(key);
if (rv == null) {
- rv = new Xol_cnv_grp(key);
+ rv = new Xol_convert_grp(key);
hash.Add(key, rv);
}
return rv;
@@ -34,5 +33,5 @@ public class Xol_cnv_mgr implements GfoInvkAble {
else return GfoInvkAble_.Rv_unhandled;
} private static final String Invk_get = "get";
public static Io_url Bld_url(Xoa_fsys_mgr app_fsys_mgr, String lang) {return Bld_url(app_fsys_mgr.Cfg_lang_core_dir(), lang);}
- public static Io_url Bld_url(Io_url dir, String lang) {return dir.GenSubFil_nest("variants", lang + ".gfs");}
+ public static Io_url Bld_url(Io_url dir, String lang) {return dir.GenSubFil_nest("variants", lang + ".gfs");}
}
diff --git a/400_xowa/src/gplx/xowa/langs/cnvs/Xol_cnv_mgr_tst.java b/400_xowa/src/gplx/xowa/langs/vnts/converts/Xol_convert_regy_tst.java
similarity index 79%
rename from 400_xowa/src/gplx/xowa/langs/cnvs/Xol_cnv_mgr_tst.java
rename to 400_xowa/src/gplx/xowa/langs/vnts/converts/Xol_convert_regy_tst.java
index 0edf70aaf..568273a06 100644
--- a/400_xowa/src/gplx/xowa/langs/cnvs/Xol_cnv_mgr_tst.java
+++ b/400_xowa/src/gplx/xowa/langs/vnts/converts/Xol_convert_regy_tst.java
@@ -15,11 +15,11 @@ GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see .
*/
-package gplx.xowa.langs.cnvs; import gplx.*; import gplx.xowa.*; import gplx.xowa.langs.*;
+package gplx.xowa.langs.vnts.converts; import gplx.*; import gplx.xowa.*; import gplx.xowa.langs.*; import gplx.xowa.langs.vnts.*;
import org.junit.*;
import gplx.xowa.langs.vnts.*; import gplx.xowa.wikis.data.tbls.*;
-public class Xol_cnv_mgr_tst {
- private Xol_cnv_mgr_fxt fxt = new Xol_cnv_mgr_fxt();
+public class Xol_convert_regy_tst {
+ private final Xol_convert_regy_fxt fxt = new Xol_convert_regy_fxt();
@Before public void init() {fxt.Clear();}
@Test public void Basic() {
fxt.Parser_fxt().Init_page_create("Template:Test_x1", "val");
@@ -41,7 +41,7 @@ public class Xol_cnv_mgr_tst {
fxt.Test_parse("{{#ifexist:Test_x0|y|n}}", "y");
}
}
-class Xol_cnv_mgr_fxt {
+class Xol_convert_regy_fxt {
public Xoae_app App() {return app;} private Xoae_app app;
public Xowe_wiki Wiki() {return wiki;} private Xowe_wiki wiki;
public Xop_fxt Parser_fxt() {return parser_fxt;} private Xop_fxt parser_fxt;
@@ -50,25 +50,24 @@ class Xol_cnv_mgr_fxt {
Xol_lang lang = app.Lang_mgr().Get_by_key_or_new(Bry_.new_a7("zh"));
Xol_lang_.Lang_init(lang);
Init_cnv(app, "zh", "zh-hant", KeyVal_.new_("x0", "x1"));
- lang.Vnt_mgr().Enabled_(true);
- lang.Vnt_mgr().Convert_ttl_init();
wiki = Xoa_app_fxt.wiki_(app, "zh.wikipedia.org", lang);
+ gplx.xowa.parsers.vnts.Xop_vnt_parser_fxt.Vnt_mgr__init(wiki.Lang().Vnt_mgr(), 1, String_.Ary("zh", "zh-hans", "zh-hant"));
parser_fxt = new Xop_fxt(app, wiki);
}
public static void Init_cnv(Xoae_app app, String lang_key, String vnt_key, KeyVal... ary) {
Xol_lang lang = app.Lang_mgr().Get_by_key_or_new(Bry_.new_a7(lang_key));
- Xol_cnv_grp grp = lang.Cnv_mgr().Get_or_make(Bry_.new_a7(vnt_key));
+ Xol_convert_grp grp = lang.Vnt_mgr().Convert_mgr().Converter_regy().Get_or_make(Bry_.new_a7(vnt_key));
int ary_len = ary.length;
for (int i = 0; i < ary_len; i++) {
KeyVal itm = ary[i];
grp.Add(Bry_.new_u8(itm.Key()), Bry_.new_u8(itm.Val_to_str_or_empty()));
}
- Xol_vnt_itm vnt_itm = lang.Vnt_mgr().Get_or_new(Bry_.new_a7(vnt_key));
+ Xol_vnt_itm vnt_itm = lang.Vnt_mgr().Regy__get_or_new(Bry_.new_a7(vnt_key));
vnt_itm.Convert_ary_(Bry_.Ary(vnt_key));
- vnt_itm.Converter().Rebuild();
+ vnt_itm.Convert_wkr().Rebuild(lang.Vnt_mgr().Convert_mgr().Converter_regy(), vnt_itm.Convert_ary());
}
// public void Test_convert(String lang, String vnt, String raw, String expd) {
-// Xol_cnv_grp convert_grp = app.Lang_mgr().Get_by_key_or_new(Bry_.new_a7(lang)).Cnv_mgr().Get_or_new(Bry_.new_a7(vnt));
+// Xol_convert_grp convert_grp = app.Lang_mgr().Get_by_key_or_new(Bry_.new_a7(lang)).Cnv_mgr().Get_or_new(Bry_.new_a7(vnt));
// Bry_bfr bfr = Bry_bfr.new_();
// boolean converted = convert_grp.Convert_to_bfr(bfr, Bry_.new_u8(raw));
// String actl = converted ? bfr.Xto_str_and_clear() : raw;
@@ -80,7 +79,7 @@ class Xol_cnv_mgr_fxt {
public void Test_convert_by_ttl(String lang_key, String raw, boolean expd) {
Xol_lang lang = app.Lang_mgr().Get_by_key_or_new(Bry_.new_a7(lang_key));
Xoa_ttl ttl = Xoa_ttl.parse(wiki, Bry_.new_u8(raw));
- Xowd_page_itm page = lang.Vnt_mgr().Convert_ttl(wiki, ttl);
+ Xowd_page_itm page = lang.Vnt_mgr().Convert_mgr().Convert_ttl(wiki, ttl);
if (expd)
Tfds.Eq_true(page.Exists());
else
diff --git a/400_xowa/src/gplx/xowa/langs/vnts/Xol_vnt_converter.java b/400_xowa/src/gplx/xowa/langs/vnts/converts/Xol_convert_wkr.java
similarity index 54%
rename from 400_xowa/src/gplx/xowa/langs/vnts/Xol_vnt_converter.java
rename to 400_xowa/src/gplx/xowa/langs/vnts/converts/Xol_convert_wkr.java
index eb9faa97b..4eee5bdbf 100644
--- a/400_xowa/src/gplx/xowa/langs/vnts/Xol_vnt_converter.java
+++ b/400_xowa/src/gplx/xowa/langs/vnts/converts/Xol_convert_wkr.java
@@ -15,14 +15,12 @@ GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see .
*/
-package gplx.xowa.langs.vnts; import gplx.*; import gplx.xowa.*; import gplx.xowa.langs.*;
-import gplx.core.btries.*; import gplx.intl.*;
-import gplx.xowa.langs.cnvs.*;
-public class Xol_vnt_converter {
- private Btrie_slim_mgr trie = Btrie_slim_mgr.cs();
- public Xol_vnt_converter(Xol_vnt_itm owner) {this.owner = owner;}
- public byte[] Owner_key() {return owner.Key();}
- public Xol_vnt_itm Owner() {return owner;} private Xol_vnt_itm owner;
+package gplx.xowa.langs.vnts.converts; import gplx.*; import gplx.xowa.*; import gplx.xowa.langs.*; import gplx.xowa.langs.vnts.*;
+import gplx.core.btries.*; import gplx.core.intls.*;
+public class Xol_convert_wkr {
+ private final Btrie_slim_mgr trie = Btrie_slim_mgr.cs();
+ public Xol_convert_wkr(byte[] key) {this.key = key;}
+ public byte[] Key() {return key;} private final byte[] key;
public boolean Convert_text(Bry_bfr bfr, byte[] src) {return Convert_text(bfr, src, 0, src.length);}
public boolean Convert_text(Bry_bfr bfr, byte[] src, int bgn, int end) {
int pos = bgn;
@@ -30,7 +28,7 @@ public class Xol_vnt_converter {
while (pos < end) {
byte b = src[pos];
Object o = trie.Match_bgn_w_byte(b, src, pos, end);
- if (o == null) { // no match; skip to next char
+ if (o == null) { // no match; skip to next char
int char_len = Utf8_.Len_of_char_by_1st_byte(b); // NOTE: must increment by char_len, not +1
if (matched) {
if (char_len == 1)
@@ -52,24 +50,20 @@ public class Xol_vnt_converter {
if (!matched) bfr.Add(src); // no convert; make sure to add back src, else bfr will be blank
return matched;
}
- public void Rebuild() {Clear(); Build();}
- private void Clear() {trie.Clear();}
- private void Build() {
- Xol_lang lang = owner.Lang();
- byte[][] convert_ary = owner.Convert_ary();
- int convert_ary_len = convert_ary.length;
- for (int i = 0; i < convert_ary_len; i++) {
- byte[] convert_grp_key = convert_ary[i];
- Xol_cnv_grp convert_grp = lang.Cnv_mgr().Get_or_null(convert_grp_key);
- if (convert_grp == null) continue; // vnts may not have convert mapping; EX: zh-my
- Build_grp(convert_grp);
+ public void Rebuild(Xol_convert_regy regy, byte[][] ary) {
+ trie.Clear();
+ int len = ary.length;
+ for (int i = 0; i < len; ++i) {
+ byte[] key = ary[i];
+ Xol_convert_grp grp = regy.Get_or_null(key); if (grp == null) continue; // vnts may not have convert mapping; EX: zh-my
+ Rebuild_grp(grp);
}
}
- private void Build_grp(Xol_cnv_grp convert_grp) {
- int len = convert_grp.Len();
- for (int i = 0; i < len; i++) {
- Xol_cnv_itm convert_itm = convert_grp.Get_at(i);
- trie.Add_obj(convert_itm.Src(), convert_itm.Trg()); // NOTE: for dupes, latest value wins
+ private void Rebuild_grp(Xol_convert_grp grp) {
+ int len = grp.Len();
+ for (int i = 0; i < len; ++i) {
+ Xol_convert_itm itm = grp.Get_at(i);
+ trie.Add_obj(itm.Src(), itm.Trg()); // NOTE: for dupes, latest value wins
}
}
}
diff --git a/400_xowa/src/gplx/xowa/langs/cnvs/Xol_mw_parse_tst.java b/400_xowa/src/gplx/xowa/langs/vnts/converts/Xol_mw_parse_tst.java
similarity index 92%
rename from 400_xowa/src/gplx/xowa/langs/cnvs/Xol_mw_parse_tst.java
rename to 400_xowa/src/gplx/xowa/langs/vnts/converts/Xol_mw_parse_tst.java
index c5f563300..b903f28e8 100644
--- a/400_xowa/src/gplx/xowa/langs/cnvs/Xol_mw_parse_tst.java
+++ b/400_xowa/src/gplx/xowa/langs/vnts/converts/Xol_mw_parse_tst.java
@@ -15,9 +15,9 @@ GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see .
*/
-package gplx.xowa.langs.cnvs; import gplx.*; import gplx.xowa.*; import gplx.xowa.langs.*;
+package gplx.xowa.langs.vnts.converts; import gplx.*; import gplx.xowa.*; import gplx.xowa.langs.*; import gplx.xowa.langs.vnts.*;
import org.junit.*;
-import gplx.php.*;
+import gplx.langs.phps.*;
public class Xol_mw_parse_tst {
private Xol_mw_parse_fxt fxt = new Xol_mw_parse_fxt();
@Test public void Basic() {
@@ -96,7 +96,7 @@ class Xol_mw_parse_fxt {
Xol_mw_parse_grp itm = itms[j];
itm.Write_as_gfs(bfr);
}
- Io_url trg_fil = Xol_cnv_mgr.Bld_url(trg_dir, lang_name);
+ Io_url trg_fil = Xol_convert_regy.Bld_url(trg_dir, lang_name);
Io_mgr.I.SaveFilBry(trg_fil, bfr.Xto_bry_and_clear());
}
}
@@ -120,7 +120,7 @@ class Xol_mw_parse_fxt {
Xol_mw_parse_grp grp = new Xol_mw_parse_grp();
byte[] key = line.Key().Val_obj_bry(); // EX: "zh2Hant"
key = Bry_.Lcase__all(key); // EX: "zh2hant"
- byte[][] parts = Bry_.Split(key, Byte_ascii.Num_2); // EX: "zh", "hant"
+ byte[][] parts = Bry_split_.Split(key, Byte_ascii.Num_2); // EX: "zh", "hant"
byte[] src = parts[0];
byte[] trg = Bry_.Add(parts[0], new byte[] {Byte_ascii.Dash}, parts[1]);
grp.Lng_(src).Vnt_(trg);
diff --git a/400_xowa/src_120_wiki/gplx/xowa/Xow_ns.java b/400_xowa/src/gplx/xowa/nss/Xow_ns.java
similarity index 97%
rename from 400_xowa/src_120_wiki/gplx/xowa/Xow_ns.java
rename to 400_xowa/src/gplx/xowa/nss/Xow_ns.java
index 2d53d8a95..76be62bba 100644
--- a/400_xowa/src_120_wiki/gplx/xowa/Xow_ns.java
+++ b/400_xowa/src/gplx/xowa/nss/Xow_ns.java
@@ -15,7 +15,7 @@ GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see .
*/
-package gplx.xowa; import gplx.*;
+package gplx.xowa.nss; import gplx.*; import gplx.xowa.*;
import gplx.xowa.bldrs.cmds.*;
public class Xow_ns implements GfoInvkAble {
public Xow_ns(int id, byte case_match, byte[] name, boolean is_alias) {
diff --git a/400_xowa/src_120_wiki/gplx/xowa/Xow_ns_.java b/400_xowa/src/gplx/xowa/nss/Xow_ns_.java
similarity index 96%
rename from 400_xowa/src_120_wiki/gplx/xowa/Xow_ns_.java
rename to 400_xowa/src/gplx/xowa/nss/Xow_ns_.java
index b8a699153..ff13d1fb3 100644
--- a/400_xowa/src_120_wiki/gplx/xowa/Xow_ns_.java
+++ b/400_xowa/src/gplx/xowa/nss/Xow_ns_.java
@@ -15,7 +15,7 @@ GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see .
*/
-package gplx.xowa; import gplx.*;
+package gplx.xowa.nss; import gplx.*; import gplx.xowa.*;
import gplx.core.primitives.*;
public class Xow_ns_ {
public static final int // PAGE:en.w:http://www.mediawiki.org/wiki/Help:Namespaces
diff --git a/400_xowa/src_120_wiki/gplx/xowa/Xow_ns_case_.java b/400_xowa/src/gplx/xowa/nss/Xow_ns_case_.java
similarity index 94%
rename from 400_xowa/src_120_wiki/gplx/xowa/Xow_ns_case_.java
rename to 400_xowa/src/gplx/xowa/nss/Xow_ns_case_.java
index 26c016c63..a6176dee5 100644
--- a/400_xowa/src_120_wiki/gplx/xowa/Xow_ns_case_.java
+++ b/400_xowa/src/gplx/xowa/nss/Xow_ns_case_.java
@@ -15,7 +15,7 @@ GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see .
*/
-package gplx.xowa; import gplx.*;
+package gplx.xowa.nss; import gplx.*; import gplx.xowa.*;
public class Xow_ns_case_ {
public static final byte Id_all = 0, Id_1st = 1;
public static final String Key_all = "case-sensitive", Key_1st = "first-letter";
diff --git a/400_xowa/src_120_wiki/gplx/xowa/Xow_ns_mgr.java b/400_xowa/src/gplx/xowa/nss/Xow_ns_mgr.java
similarity index 94%
rename from 400_xowa/src_120_wiki/gplx/xowa/Xow_ns_mgr.java
rename to 400_xowa/src/gplx/xowa/nss/Xow_ns_mgr.java
index aaaafd483..7c334bced 100644
--- a/400_xowa/src_120_wiki/gplx/xowa/Xow_ns_mgr.java
+++ b/400_xowa/src/gplx/xowa/nss/Xow_ns_mgr.java
@@ -15,7 +15,7 @@ GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see .
*/
-package gplx.xowa; import gplx.*;
+package gplx.xowa.nss; import gplx.*; import gplx.xowa.*;
import gplx.core.primitives.*; import gplx.core.btries.*; import gplx.xowa.langs.cases.*;
import gplx.xowa.bldrs.installs.*;
import gplx.xowa.xtns.scribunto.*;
@@ -70,13 +70,13 @@ public class Xow_ns_mgr implements GfoInvkAble, gplx.lists.ComparerAble {
return rv == null ? this.Ns_main() : rv;
}
public Object Names_get_w_colon(byte[] src, int bgn, int end) { // NOTE: get ns for a name with a ":"; EX: "Template:A" should return "Template" ns
- int colon_pos = Bry_finder.Find_fwd(src, Byte_ascii.Colon, bgn, end);
+ int colon_pos = Bry_find_.Find_fwd(src, Byte_ascii.Colon, bgn, end);
if (colon_pos == Bry_.NotFound) return null; // name does not have ":"; return;
Object rv = name_hash.Get_by_mid(src, bgn, colon_pos);
return rv == null ? null : ((Xow_ns_mgr_name_itm)rv).Ns();
}
public int Tmpls_get_w_colon(byte[] src, int bgn, int end) { // NOTE: get length of template name with a ":"; EX: "Template:A" returns 10; PERF
- int colon_pos = Bry_finder.Find_fwd(src, Byte_ascii.Colon, bgn, end);
+ int colon_pos = Bry_find_.Find_fwd(src, Byte_ascii.Colon, bgn, end);
if (colon_pos == Bry_.NotFound) return Bry_.NotFound;
Object o = tmpl_hash.Get_by_mid(src, bgn, colon_pos + 1); // +1 to include colon_pos
return o == null ? Bry_.NotFound : ((byte[])o).length;
@@ -122,7 +122,7 @@ public class Xow_ns_mgr implements GfoInvkAble, gplx.lists.ComparerAble {
}
private void Fix_project_talk(Xow_ns ns) {
byte[] ns_name = ns.Name_bry();
- if (Bry_finder.Find_fwd(ns.Name_bry(), Project_talk_fmt_arg)== Bry_.NotFound) return; // no $1 found; exit
+ if (Bry_find_.Find_fwd(ns.Name_bry(), Project_talk_fmt_arg)== Bry_.NotFound) return; // no $1 found; exit
Xow_ns project_ns = ords[ns.Ord_subj_id()];
if (project_ns == null) return; // should warn or throw error; for now just exit
ns.Name_bry_(Bry_.Replace(ns_name, Project_talk_fmt_arg, project_ns.Name_bry()));
@@ -130,7 +130,7 @@ public class Xow_ns_mgr implements GfoInvkAble, gplx.lists.ComparerAble {
private void Rebuild_hashes__add(Hash_adp_bry hash, Xow_ns ns, byte[] key) {
Xow_ns_mgr_name_itm ns_itm = new Xow_ns_mgr_name_itm(key, ns);
hash.Add_if_dupe_use_nth(key, ns_itm);
- if (Bry_finder.Find_fwd(key, Byte_ascii.Underline) != Bry_.NotFound) // ns has _; add another entry for space; EX: Help_talk -> Help talk
+ if (Bry_find_.Find_fwd(key, Byte_ascii.Underline) != Bry_.NotFound) // ns has _; add another entry for space; EX: Help_talk -> Help talk
hash.Add_if_dupe_use_nth(Bry_.Replace(key, Byte_ascii.Underline, Byte_ascii.Space), ns_itm);
}
public Xow_ns_mgr Add_defaults() { // NOTE: needs to happen after File ns is added; i.e.: cannot be put in Xow_ns_mgr() {} ctor
@@ -249,12 +249,12 @@ public class Xow_ns_mgr implements GfoInvkAble, gplx.lists.ComparerAble {
} private static final String Invk_add_alias_bulk = "add_alias_bulk", Invk_get_by_id_or_new = "get_by_id_or_new";
public static final String Invk_load = "load", Invk_clear = "clear";
private void Exec_add_alias_bulk(byte[] raw) {
- byte[][] lines = Bry_.Split(raw, Byte_ascii.Nl);
+ byte[][] lines = Bry_split_.Split(raw, Byte_ascii.Nl);
int lines_len = lines.length;
for (int i = 0; i < lines_len; i++) {
byte[] line = lines[i];
if (line.length == 0) continue;
- byte[][] flds = Bry_.Split(line, Byte_ascii.Pipe);
+ byte[][] flds = Bry_split_.Split(line, Byte_ascii.Pipe);
int cur_id = Bry_.To_int_or(flds[0], Int_.Min_value);
this.Aliases_add(cur_id, String_.new_u8(flds[1]));
}
diff --git a/400_xowa/src_120_wiki/gplx/xowa/Xow_ns_mgr_.java b/400_xowa/src/gplx/xowa/nss/Xow_ns_mgr_.java
similarity index 94%
rename from 400_xowa/src_120_wiki/gplx/xowa/Xow_ns_mgr_.java
rename to 400_xowa/src/gplx/xowa/nss/Xow_ns_mgr_.java
index 76fea3974..7a08df071 100644
--- a/400_xowa/src_120_wiki/gplx/xowa/Xow_ns_mgr_.java
+++ b/400_xowa/src/gplx/xowa/nss/Xow_ns_mgr_.java
@@ -15,8 +15,8 @@ GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see .
*/
-package gplx.xowa; import gplx.*;
-import gplx.xowa.langs.cases.*;
+package gplx.xowa.nss; import gplx.*; import gplx.xowa.*;
+import gplx.xowa.langs.*; import gplx.xowa.langs.cases.*;
public class Xow_ns_mgr_ {
public static final int Ordinal_max = 255; // ASSUME: no more than 255 ns in a wiki; choosing 255 to align with byte (no particular reason why it needs to be a byte, but better than 500, 1000, etc)
public static Xow_ns_mgr default_(Xol_case_mgr case_mgr) { // NOTE: same as en.wikipedia.org's ns circa 2012-01 (currently omitting ns:446,447,710,711)
diff --git a/400_xowa/src_120_wiki/gplx/xowa/Xow_ns_mgr_tst.java b/400_xowa/src/gplx/xowa/nss/Xow_ns_mgr_tst.java
similarity index 96%
rename from 400_xowa/src_120_wiki/gplx/xowa/Xow_ns_mgr_tst.java
rename to 400_xowa/src/gplx/xowa/nss/Xow_ns_mgr_tst.java
index 9ea316890..d2716108c 100644
--- a/400_xowa/src_120_wiki/gplx/xowa/Xow_ns_mgr_tst.java
+++ b/400_xowa/src/gplx/xowa/nss/Xow_ns_mgr_tst.java
@@ -15,7 +15,7 @@ GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see .
*/
-package gplx.xowa; import gplx.*;
+package gplx.xowa.nss; import gplx.*; import gplx.xowa.*;
import org.junit.*;
import gplx.xowa.langs.cases.*;
public class Xow_ns_mgr_tst {
diff --git a/400_xowa/src_120_wiki/gplx/xowa/Xow_ns_tst.java b/400_xowa/src/gplx/xowa/nss/Xow_ns_tst.java
similarity index 95%
rename from 400_xowa/src_120_wiki/gplx/xowa/Xow_ns_tst.java
rename to 400_xowa/src/gplx/xowa/nss/Xow_ns_tst.java
index 44c7acc76..da0b34453 100644
--- a/400_xowa/src_120_wiki/gplx/xowa/Xow_ns_tst.java
+++ b/400_xowa/src/gplx/xowa/nss/Xow_ns_tst.java
@@ -15,7 +15,7 @@ GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see .
*/
-package gplx.xowa; import gplx.*;
+package gplx.xowa.nss; import gplx.*; import gplx.xowa.*;
import org.junit.*;
public class Xow_ns_tst {
@Before public void init() {fxt.Clear();} private Xow_ns_fxt fxt = new Xow_ns_fxt();
diff --git a/400_xowa/src/gplx/xowa/pages/Xopg_html_data.java b/400_xowa/src/gplx/xowa/pages/Xopg_html_data.java
index 2a02af9e9..4bc05aba2 100644
--- a/400_xowa/src/gplx/xowa/pages/Xopg_html_data.java
+++ b/400_xowa/src/gplx/xowa/pages/Xopg_html_data.java
@@ -16,7 +16,7 @@ You should have received a copy of the GNU Affero General Public License
along with this program. If not, see .
*/
package gplx.xowa.pages; import gplx.*; import gplx.xowa.*;
-import gplx.html.*; import gplx.xowa.html.heads.*; import gplx.xowa.pages.skins.*; import gplx.xowa.xtns.indicators.*;
+import gplx.langs.htmls.*; import gplx.xowa.html.heads.*; import gplx.xowa.pages.skins.*; import gplx.xowa.xtns.indicators.*;
public class Xopg_html_data {
private Ordered_hash ctg_hash;
public boolean Html_restricted() {return html_restricted;} private boolean html_restricted = true;
diff --git a/400_xowa/src/gplx/xowa/langs/vnts/Vnt_mnu_itm.java b/400_xowa/src/gplx/xowa/parsers/Xoa_parser_mgr.java
similarity index 68%
rename from 400_xowa/src/gplx/xowa/langs/vnts/Vnt_mnu_itm.java
rename to 400_xowa/src/gplx/xowa/parsers/Xoa_parser_mgr.java
index ca4272217..76e0cd425 100644
--- a/400_xowa/src/gplx/xowa/langs/vnts/Vnt_mnu_itm.java
+++ b/400_xowa/src/gplx/xowa/parsers/Xoa_parser_mgr.java
@@ -15,9 +15,7 @@ GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see .
*/
-package gplx.xowa.langs.vnts; import gplx.*; import gplx.xowa.*; import gplx.xowa.langs.*;
-public class Vnt_mnu_itm {
- public Vnt_mnu_itm(byte[] key, byte[] text) {this.key = key; this.text = text;}
- public byte[] Key() {return key;} private final byte[] key;
- public byte[] Text() {return text;} private final byte[] text;
+package gplx.xowa.parsers; import gplx.*; import gplx.xowa.*;
+public class Xoa_parser_mgr {
+ public Xop_tkn_mkr Tkn_mkr() {return tkn_mkr;} private final Xop_tkn_mkr tkn_mkr = new Xop_tkn_mkr();
}
diff --git a/400_xowa/src/gplx/xowa/parsers/Xop_ctx.java b/400_xowa/src/gplx/xowa/parsers/Xop_ctx.java
index f9d8e1501..baac0dca1 100644
--- a/400_xowa/src/gplx/xowa/parsers/Xop_ctx.java
+++ b/400_xowa/src/gplx/xowa/parsers/Xop_ctx.java
@@ -16,37 +16,39 @@ You should have received a copy of the GNU Affero General Public License
along with this program. If not, see .
*/
package gplx.xowa.parsers; import gplx.*; import gplx.xowa.*;
-import gplx.core.btries.*; import gplx.xowa.gui.*; import gplx.xowa.xtns.lst.*;
+import gplx.core.btries.*;
+import gplx.xowa.langs.*;
+import gplx.xowa.gui.*; import gplx.xowa.xtns.lst.*;
import gplx.xowa.xtns.scribunto.*; import gplx.xowa.xtns.wdatas.*;
import gplx.xowa.parsers.apos.*; import gplx.xowa.parsers.amps.*; import gplx.xowa.parsers.lnkes.*; import gplx.xowa.parsers.hdrs.*; import gplx.xowa.parsers.lists.*; import gplx.xowa.parsers.tblws.*; import gplx.xowa.parsers.paras.*; import gplx.xowa.parsers.xndes.*; import gplx.xowa.parsers.lnkis.*; import gplx.xowa.parsers.tmpls.*;
import gplx.xowa.parsers.logs.*; import gplx.xowa.html.modules.popups.keeplists.*;
public class Xop_ctx {
private Xop_ctx_wkr[] wkrs = new Xop_ctx_wkr[] {};
Xop_ctx(Xowe_wiki wiki, Xoae_page page) {
- this.app = wiki.Appe(); this.msg_log = app.Msg_log();
- this.wiki = wiki; this.cur_page = page;
+ this.app = wiki.Appe(); this.msg_log = app.Msg_log(); this.tkn_mkr = app.Parser_mgr().Tkn_mkr();
+ this.wiki = wiki; this.cur_page = page; this.lang = wiki.Lang();
this.wkrs = new Xop_ctx_wkr[] {para, apos, xnde, list, lnki, hdr, amp, lnke, tblw, invk};
for (Xop_ctx_wkr wkr : wkrs) wkr.Ctor_ctx(this);
this.xnde_tag_regy = wiki.Mw_parser_mgr().Xnde_tag_regy();
}
- public Xoae_app App() {return app;} private Xoae_app app;
- public Xowe_wiki Wiki() {return wiki;} private Xowe_wiki wiki;
- public Xol_lang Lang() {return wiki.Lang();}
- public Xop_tkn_mkr Tkn_mkr() {return app.Tkn_mkr();}
+ public Xoae_app App() {return app;} private final Xoae_app app;
+ public Xowe_wiki Wiki() {return wiki;} private final Xowe_wiki wiki;
+ public Xol_lang Lang() {return lang;} private final Xol_lang lang;
+ public Xop_tkn_mkr Tkn_mkr() {return tkn_mkr;} private final Xop_tkn_mkr tkn_mkr;
public Xoae_page Cur_page() {return cur_page;} public void Cur_page_(Xoae_page v) {cur_page = v;} private Xoae_page cur_page;
public byte Parse_tid() {return parse_tid;} public Xop_ctx Parse_tid_(byte v) {parse_tid = v; xnde_names_tid = v; return this;} private byte parse_tid = Xop_parser_.Parse_tid_null;
public byte Xnde_names_tid() {return xnde_names_tid;} public Xop_ctx Xnde_names_tid_(byte v) {xnde_names_tid = v; return this;} private byte xnde_names_tid = Xop_parser_.Parse_tid_null;
- public Xop_amp_wkr Amp() {return amp;} private Xop_amp_wkr amp = new Xop_amp_wkr();
- public Xop_apos_wkr Apos() {return apos;} private Xop_apos_wkr apos = new Xop_apos_wkr();
- public Xop_lnke_wkr Lnke() {return lnke;} private Xop_lnke_wkr lnke = new Xop_lnke_wkr();
- public Xop_lnki_wkr Lnki() {return lnki;} private Xop_lnki_wkr lnki = new Xop_lnki_wkr();
- public Xop_hdr_wkr Hdr() {return hdr;} private Xop_hdr_wkr hdr = new Xop_hdr_wkr();
- public Xop_para_wkr Para() {return para;} private Xop_para_wkr para = new Xop_para_wkr();
- public Xop_list_wkr List() {return list;} private Xop_list_wkr list = new Xop_list_wkr();
- public Xop_tblw_wkr Tblw() {return tblw;} private Xop_tblw_wkr tblw = new Xop_tblw_wkr();
- public Xop_xnde_wkr Xnde() {return xnde;} private Xop_xnde_wkr xnde = new Xop_xnde_wkr();
- public Xot_invk_wkr Invk() {return invk;} private Xot_invk_wkr invk = new Xot_invk_wkr();
- public Xop_curly_wkr Curly() {return curly;} private Xop_curly_wkr curly = new Xop_curly_wkr();
+ public Xop_amp_wkr Amp() {return amp;} private final Xop_amp_wkr amp = new Xop_amp_wkr();
+ public Xop_apos_wkr Apos() {return apos;} private final Xop_apos_wkr apos = new Xop_apos_wkr();
+ public Xop_lnke_wkr Lnke() {return lnke;} private final Xop_lnke_wkr lnke = new Xop_lnke_wkr();
+ public Xop_lnki_wkr Lnki() {return lnki;} private final Xop_lnki_wkr lnki = new Xop_lnki_wkr();
+ public Xop_hdr_wkr Hdr() {return hdr;} private final Xop_hdr_wkr hdr = new Xop_hdr_wkr();
+ public Xop_para_wkr Para() {return para;} private final Xop_para_wkr para = new Xop_para_wkr();
+ public Xop_list_wkr List() {return list;} private final Xop_list_wkr list = new Xop_list_wkr();
+ public Xop_tblw_wkr Tblw() {return tblw;} private final Xop_tblw_wkr tblw = new Xop_tblw_wkr();
+ public Xop_xnde_wkr Xnde() {return xnde;} private final Xop_xnde_wkr xnde = new Xop_xnde_wkr();
+ public Xot_invk_wkr Invk() {return invk;} private final Xot_invk_wkr invk = new Xot_invk_wkr();
+ public Xop_curly_wkr Curly() {return curly;} private final Xop_curly_wkr curly = new Xop_curly_wkr();
public Xop_xnde_tag_regy Xnde_tag_regy() {return xnde_tag_regy;} private final Xop_xnde_tag_regy xnde_tag_regy; // PERF:demeter
public boolean Tmpl_load_enabled() {return tmpl_load_enabled;} public void Tmpl_load_enabled_(boolean v) {tmpl_load_enabled = v;} private boolean tmpl_load_enabled = true;
@@ -264,18 +266,18 @@ public class Xop_ctx {
int src_len = src.length;
switch (tkn.Tkn_tid()) {
case Xop_tkn_itm_.Tid_newLine: break; // NOOP: just a marker
- case Xop_tkn_itm_.Tid_list: list.AutoClose(this, app.Tkn_mkr(), root, src, src_len, bgn_pos, cur_pos, tkn); break;
+ case Xop_tkn_itm_.Tid_list: list.AutoClose(this, tkn_mkr, root, src, src_len, bgn_pos, cur_pos, tkn); break;
case Xop_tkn_itm_.Tid_xnde: xnde.AutoClose(this, root, src, src_len, bgn_pos, cur_pos, tkn, closing_tkn_tid); break;
case Xop_tkn_itm_.Tid_apos: apos.AutoClose(this, src, src_len, bgn_pos, cur_pos, tkn); break;
case Xop_tkn_itm_.Tid_lnke: lnke.AutoClose(this, src, src_len, bgn_pos, cur_pos, tkn); break;
- case Xop_tkn_itm_.Tid_hdr: hdr.AutoClose(this, app.Tkn_mkr(), root, src, src_len, bgn_pos, cur_pos, tkn); break;
+ case Xop_tkn_itm_.Tid_hdr: hdr.AutoClose(this, tkn_mkr, root, src, src_len, bgn_pos, cur_pos, tkn); break;
case Xop_tkn_itm_.Tid_tblw_tb:
case Xop_tkn_itm_.Tid_tblw_tr:
case Xop_tkn_itm_.Tid_tblw_td:
case Xop_tkn_itm_.Tid_tblw_th:
case Xop_tkn_itm_.Tid_tblw_tc: tblw.AutoClose(this, root, src, src_len, bgn_pos, cur_pos, tkn); break;
- case Xop_tkn_itm_.Tid_lnki: lnki.Auto_close(this, app.Tkn_mkr(), root, src, src_len, bgn_pos, cur_pos, tkn); break;
- case Xop_tkn_itm_.Tid_pre: para.AutoClose(this, app.Tkn_mkr(), root, src, src_len, bgn_pos, cur_pos, tkn); break;
+ case Xop_tkn_itm_.Tid_lnki: lnki.Auto_close(this, tkn_mkr, root, src, src_len, bgn_pos, cur_pos, tkn); break;
+ case Xop_tkn_itm_.Tid_pre: para.AutoClose(this, tkn_mkr, root, src, src_len, bgn_pos, cur_pos, tkn); break;
}
}
public void Stack_pop_idx(int tilIdx) {
@@ -304,9 +306,9 @@ public class Xop_ctx {
Xop_ctx rv = new Xop_ctx(wiki, Xoae_page.new_(wiki, Xoa_ttl.parse(wiki, Xoa_page_.Main_page_bry))); // HACK: use "Main_Page" to put in valid page title
return rv;
}
- public static Xop_ctx new_sub_(Xowe_wiki wiki) {return new_sub_(wiki, wiki.Ctx().cur_page);}
+ public static Xop_ctx new_sub_(Xowe_wiki wiki) {return new_sub_(wiki, wiki.Parser_mgr().Ctx().cur_page);}
public static Xop_ctx new_sub_(Xowe_wiki wiki, Xoae_page page) { // TODO: new_sub_ should reuse ctx's page; callers who want new_page should call new_sub_page_; DATE:2014-04-10
- Xop_ctx ctx = wiki.Ctx();
+ Xop_ctx ctx = wiki.Parser_mgr().Ctx();
Xop_ctx rv = new Xop_ctx(wiki, page);
new_copy(ctx, rv);
return rv;
diff --git a/400_xowa/src/gplx/xowa/parsers/Xop_lxr.java b/400_xowa/src/gplx/xowa/parsers/Xop_lxr.java
index d3de3c477..2920424e8 100644
--- a/400_xowa/src/gplx/xowa/parsers/Xop_lxr.java
+++ b/400_xowa/src/gplx/xowa/parsers/Xop_lxr.java
@@ -16,10 +16,11 @@ You should have received a copy of the GNU Affero General Public License
along with this program. If not, see .
*/
package gplx.xowa.parsers; import gplx.*; import gplx.xowa.*;
-import gplx.core.btries.*;
+import gplx.core.btries.*; import gplx.xowa.langs.*;
public interface Xop_lxr {
- byte Lxr_tid();
- void Init_by_wiki(Xowe_wiki wiki, Btrie_fast_mgr core_trie);
- void Init_by_lang(Xol_lang lang, Btrie_fast_mgr core_trie);
- int Make_tkn(Xop_ctx ctx, Xop_tkn_mkr tkn_mkr, Xop_root_tkn root, byte[] src, int src_len, int bgn_pos, int cur_pos);
+ int Lxr_tid();
+ void Init_by_wiki(Xowe_wiki wiki, Btrie_fast_mgr core_trie);
+ void Init_by_lang(Xol_lang lang, Btrie_fast_mgr core_trie);
+ void Term(Btrie_fast_mgr core_trie);
+ int Make_tkn(Xop_ctx ctx, Xop_tkn_mkr tkn_mkr, Xop_root_tkn root, byte[] src, int src_len, int bgn_pos, int cur_pos);
}
diff --git a/400_xowa/src/gplx/xowa/parsers/Xop_lxr_.java b/400_xowa/src/gplx/xowa/parsers/Xop_lxr_.java
index 8ecc13b1b..ea1834201 100644
--- a/400_xowa/src/gplx/xowa/parsers/Xop_lxr_.java
+++ b/400_xowa/src/gplx/xowa/parsers/Xop_lxr_.java
@@ -17,11 +17,11 @@ along with this program. If not, see .
*/
package gplx.xowa.parsers; import gplx.*; import gplx.xowa.*;
public class Xop_lxr_ {
- public static final byte
+ public static final int
Tid_pipe = 0, Tid_space = 1, Tid_nbsp = 2, Tid_tab = 3, Tid_nl = 4, Tid_amp = 5, Tid_apos = 6, Tid_colon = 7, Tid_lnki_bgn = 8, Tid_lnki_end = 9
, Tid_list = 10, Tid_hdr = 11, Tid_hr = 12, Tid_xnde = 13, Tid_lnke_bgn = 14, Tid_lnke_end = 15, Tid_tblw = 16, Tid_pre = 17, Tid_under = 18, Tid_comment = 19
, Tid_eq = 20, Tid_curly_bgn = 21, Tid_curly_end = 22, Tid_brack_bgn = 23, Tid_brack_end = 24, Tid_poem = 25
, Tid_tvar = 26, Tid_vnt_bgn = 27, Tid_vnt_end = 28, Tid_vnt_eqgt = 29, Tid_vnt_tmpl_bgn = 30, Tid_word = 31, Tid_nl_poem = 32, Tid_cr = 33
- , Tid_brack_end_lnki = 34, Tid_nl_tab = 35
+ , Tid_brack_end_lnki = 34, Tid_nl_tab = 35, Tid_macro = 36
;
}
diff --git a/400_xowa/src/gplx/xowa/parsers/Xop_lxr_mgr.java b/400_xowa/src/gplx/xowa/parsers/Xop_lxr_mgr.java
index e686ba736..9796db665 100644
--- a/400_xowa/src/gplx/xowa/parsers/Xop_lxr_mgr.java
+++ b/400_xowa/src/gplx/xowa/parsers/Xop_lxr_mgr.java
@@ -17,11 +17,28 @@ along with this program. If not, see .
*/
package gplx.xowa.parsers; import gplx.*; import gplx.xowa.*;
import gplx.core.btries.*;
+import gplx.xowa.langs.*;
import gplx.xowa.parsers.apos.*; import gplx.xowa.parsers.amps.*; import gplx.xowa.parsers.lnkes.*; import gplx.xowa.parsers.hdrs.*; import gplx.xowa.parsers.lists.*; import gplx.xowa.parsers.tblws.*; import gplx.xowa.parsers.paras.*; import gplx.xowa.parsers.xndes.*; import gplx.xowa.parsers.lnkis.*; import gplx.xowa.parsers.tmpls.*; import gplx.xowa.parsers.miscs.*;
public class Xop_lxr_mgr {
- private Xop_lxr[] ary;
+ private final Xop_lxr[] ary;
+ private final List_adp page_lxr_list = List_adp_.new_();
public Xop_lxr_mgr(Xop_lxr[] ary) {this.ary = ary;}
- public Btrie_fast_mgr Trie() {return trie;} private Btrie_fast_mgr trie = Btrie_fast_mgr.cs();
+ public Btrie_fast_mgr Trie() {return trie;} private final Btrie_fast_mgr trie = Btrie_fast_mgr.cs();
+ public void Page__add(Xowe_wiki wiki, Xop_lxr... ary) {
+ int len = ary.length;
+ for (int i = 0; i < len; ++i) {
+ Xop_lxr lxr = ary[i];
+ lxr.Init_by_wiki(wiki, trie);
+ page_lxr_list.Add(lxr);
+ }
+ }
+ public void Page__del_all() {
+ int len = page_lxr_list.Count();
+ for (int i = 0; i < len; ++i) {
+ Xop_lxr lxr = (Xop_lxr)page_lxr_list.Get_at(i);
+ lxr.Term(trie);
+ }
+ }
public void Init_by_wiki(Xowe_wiki wiki) {
int ary_len = ary.length;
for (int i = 0; i < ary_len; i++) {
@@ -64,6 +81,17 @@ public class Xop_lxr_mgr {
, Xop_under_lxr._
});
}
+ public static Xop_lxr_mgr new_anchor_encoder() {
+ return new Xop_lxr_mgr(new Xop_lxr[]
+ { Xop_pipe_lxr._, new Xop_eq_lxr(false), Xop_space_lxr._, Xop_tab_lxr._, Xop_nl_lxr._
+ , Xop_curly_bgn_lxr._, Xop_curly_end_lxr._
+ , Xop_amp_lxr._, Xop_colon_lxr._
+ , Xop_apos_lxr._
+ , Xop_lnki_lxr_bgn._, Xop_lnki_lxr_end._
+ , Xop_lnke_lxr._, Xop_lnke_end_lxr._
+ , Xop_xnde_lxr._
+ });
+ }
public static final Xop_lxr_mgr Popup_lxr_mgr // same as orig_page, except apos_lxr added
= new Xop_lxr_mgr(new Xop_lxr[]
{ Xop_pipe_lxr._, new Xop_eq_lxr(true), Xop_colon_lxr._, Xop_space_lxr._, Xop_tab_lxr._, Xop_nl_lxr._
diff --git a/400_xowa/src/gplx/xowa/parsers/Xop_parser.java b/400_xowa/src/gplx/xowa/parsers/Xop_parser.java
index 9be1236dc..d99889543 100644
--- a/400_xowa/src/gplx/xowa/parsers/Xop_parser.java
+++ b/400_xowa/src/gplx/xowa/parsers/Xop_parser.java
@@ -17,18 +17,18 @@ along with this program. If not, see .
*/
package gplx.xowa.parsers; import gplx.*; import gplx.xowa.*;
import gplx.core.btries.*;
+import gplx.xowa.langs.*; import gplx.xowa.nss.*;
import gplx.xowa.parsers.xndes.*; import gplx.xowa.parsers.tmpls.*;
public class Xop_parser { // NOTE: parsers are reused; do not keep any read-write state
- private Xowe_wiki wiki;
- public Xop_parser(Xowe_wiki wiki, Xop_lxr_mgr tmpl_lxr_mgr, Xop_lxr_mgr wtxt_lxr_mgr) {
+ private final Xowe_wiki wiki;
+ private final Btrie_fast_mgr tmpl_trie, wtxt_trie;
+ Xop_parser(Xowe_wiki wiki, Xop_lxr_mgr tmpl_lxr_mgr, Xop_lxr_mgr wtxt_lxr_mgr) {
this.wiki = wiki;
this.tmpl_lxr_mgr = tmpl_lxr_mgr; this.tmpl_trie = tmpl_lxr_mgr.Trie();
this.wtxt_lxr_mgr = wtxt_lxr_mgr; this.wtxt_trie = wtxt_lxr_mgr.Trie();
}
- public Xop_lxr_mgr Tmpl_lxr_mgr() {return tmpl_lxr_mgr;} private Xop_lxr_mgr tmpl_lxr_mgr;
- public Xop_lxr_mgr Wtxt_lxr_mgr() {return wtxt_lxr_mgr;} private Xop_lxr_mgr wtxt_lxr_mgr;
- public Btrie_fast_mgr Tmpl_trie() {return tmpl_trie;} private Btrie_fast_mgr tmpl_trie;
- public Btrie_fast_mgr Wtxt_trie() {return wtxt_trie;} private Btrie_fast_mgr wtxt_trie;
+ public Xop_lxr_mgr Tmpl_lxr_mgr() {return tmpl_lxr_mgr;} private final Xop_lxr_mgr tmpl_lxr_mgr;
+ public Xop_lxr_mgr Wtxt_lxr_mgr() {return wtxt_lxr_mgr;} private final Xop_lxr_mgr wtxt_lxr_mgr;
public void Init_by_wiki(Xowe_wiki wiki) {
tmpl_lxr_mgr.Init_by_wiki(wiki);
wtxt_lxr_mgr.Init_by_wiki(wiki);
@@ -38,7 +38,7 @@ public class Xop_parser { // NOTE: parsers are reused; do not keep any read-writ
wtxt_lxr_mgr.Init_by_lang(lang);
}
public byte[] Parse_text_to_html(Xop_ctx ctx, byte[] src) {
- Bry_bfr bfr = wiki.Utl__bfr_mkr().Get_b512();
+ Bry_bfr bfr = Xoa_app_.Utl__bfr_mkr().Get_b512();
Parse_text_to_html(bfr, ctx.Cur_page(), false, src);
return bfr.To_bry_and_rls();
}
@@ -46,7 +46,7 @@ public class Xop_parser { // NOTE: parsers are reused; do not keep any read-writ
Xop_ctx ctx = Xop_ctx.new_sub_(wiki, page);
Xop_tkn_mkr tkn_mkr = ctx.Tkn_mkr();
Xop_root_tkn root = tkn_mkr.Root(src);
- Xop_parser parser = wiki.Parser();
+ Xop_parser parser = wiki.Parser_mgr().Main();
byte[] wtxt = parser.Parse_text_to_wtxt(root, ctx, tkn_mkr, src);
root.Reset();
ctx.Para().Enabled_(para_enabled);
@@ -64,7 +64,7 @@ public class Xop_parser { // NOTE: parsers are reused; do not keep any read-writ
tmpl_props.OnlyInclude_exists = false; int subs_len = root.Subs_len();
for (int i = 0; i < subs_len; i++)
root.Subs_get(i).Tmpl_compile(ctx, src, tmpl_props);
- boolean only_include_chk = Bry_finder.Find_fwd(src, Xop_xnde_tag_.Name_onlyinclude, 0, src.length) != Bry_.NotFound;
+ boolean only_include_chk = Bry_find_.Find_fwd(src, Xop_xnde_tag_.Name_onlyinclude, 0, src.length) != Bry_.NotFound;
if (only_include_chk) tmpl_props.OnlyInclude_exists = true;
tmpl.Init_by_new(ns, name, src, root, tmpl_props.OnlyInclude_exists);
} private Xot_compile_data tmpl_props = new Xot_compile_data();
@@ -94,7 +94,7 @@ public class Xop_parser { // NOTE: parsers are reused; do not keep any read-writ
Xop_ctx ctx = Xop_ctx.new_sub_(wiki);
Xop_tkn_mkr tkn_mkr = ctx.Tkn_mkr();
Xop_root_tkn root = tkn_mkr.Root(src);
- return wiki.Parser().Parse_text_to_wtxt(root, ctx, tkn_mkr, src);
+ return wiki.Parser_mgr().Main().Parse_text_to_wtxt(root, ctx, tkn_mkr, src);
}
public byte[] Parse_text_to_wtxt(Xop_root_tkn root, Xop_ctx ctx, Xop_tkn_mkr tkn_mkr, byte[] src) {
Parse(root, ctx, tkn_mkr, src, Xop_parser_.Parse_tid_page_tmpl, tmpl_trie, Xop_parser_.Doc_bgn_bos);
@@ -138,7 +138,7 @@ public class Xop_parser { // NOTE: parsers are reused; do not keep any read-writ
return pos;
}
public int Parse_to_stack_end(Xop_root_tkn root, Xop_ctx ctx, Xop_tkn_mkr tkn_mkr, byte[] src, int src_len, Btrie_fast_mgr trie, int pos, int end) {
- byte b = pos == -1 ? Byte_ascii.Nl : src[pos]; // simulate newLine at bgn of src; needed for lxrs which rely on \n (EX: "=a=")
+ byte b = pos == -1 ? Byte_ascii.Nl : src[pos]; // simulate \n at bgn of src; needed for lxrs which rely on \n (EX: "=a=")
int txt_bgn = pos == -1 ? 0 : pos; Xop_tkn_itm txt_tkn = null;
Xop_lxr lxr = null;
while (true) {
@@ -191,7 +191,8 @@ public class Xop_parser { // NOTE: parsers are reused; do not keep any read-writ
tkn.Src_end_(pos);
return tkn;
}
- public static Xop_parser new_wiki_(Xowe_wiki wiki) {
+ public static Xop_parser new_(Xowe_wiki wiki, Xop_lxr_mgr tmpl_lxr_mgr, Xop_lxr_mgr wtxt_lxr_mgr) {return new Xop_parser(wiki, tmpl_lxr_mgr, wtxt_lxr_mgr);}
+ public static Xop_parser new_wiki(Xowe_wiki wiki) {
Xop_parser rv = new Xop_parser(wiki, Xop_lxr_mgr.new_tmpl_(), Xop_lxr_mgr.new_wiki_());
rv.Init_by_wiki(wiki);
rv.Init_by_lang(wiki.Lang());
diff --git a/400_xowa/src/gplx/xowa/parsers/Xop_parser_.java b/400_xowa/src/gplx/xowa/parsers/Xop_parser_.java
index fcc6cd518..d978175a0 100644
--- a/400_xowa/src/gplx/xowa/parsers/Xop_parser_.java
+++ b/400_xowa/src/gplx/xowa/parsers/Xop_parser_.java
@@ -25,7 +25,7 @@ public class Xop_parser_ {
Xop_ctx ctx = Xop_ctx.new_sub_(wiki, page);
Xop_tkn_mkr tkn_mkr = ctx.Tkn_mkr();
Xop_root_tkn root = tkn_mkr.Root(src);
- Xop_parser parser = wiki.Parser();
+ Xop_parser parser = wiki.Parser_mgr().Main();
byte[] wtxt = parser.Parse_text_to_wtxt(root, ctx, tkn_mkr, src);
root.Reset();
ctx.Para().Enabled_(para_enabled);
diff --git a/400_xowa/src/gplx/xowa/parsers/Xop_parser__tst.java b/400_xowa/src/gplx/xowa/parsers/Xop_parser__tst.java
index 3b505ead8..6831bc7a7 100644
--- a/400_xowa/src/gplx/xowa/parsers/Xop_parser__tst.java
+++ b/400_xowa/src/gplx/xowa/parsers/Xop_parser__tst.java
@@ -52,7 +52,7 @@ class Xop_parser__fxt {
}
public void Test_parse_to_html(String raw, boolean para_enabled, String expd) {
byte[] raw_bry = Bry_.new_u8(raw);
- fxt.Wiki().Parser().Parse_text_to_html(bfr, fxt.Page(), para_enabled, raw_bry);
+ fxt.Wiki().Parser_mgr().Main().Parse_text_to_html(bfr, fxt.Page(), para_enabled, raw_bry);
Tfds.Eq(expd, bfr.Xto_str_and_clear());
}
}
diff --git a/400_xowa/src/gplx/xowa/parsers/Xop_tkn_chkr_base.java b/400_xowa/src/gplx/xowa/parsers/Xop_tkn_chkr_base.java
index 5203ed127..78723feb4 100644
--- a/400_xowa/src/gplx/xowa/parsers/Xop_tkn_chkr_base.java
+++ b/400_xowa/src/gplx/xowa/parsers/Xop_tkn_chkr_base.java
@@ -16,6 +16,7 @@ You should have received a copy of the GNU Affero General Public License
along with this program. If not, see .
*/
package gplx.xowa.parsers; import gplx.*; import gplx.xowa.*;
+import gplx.core.tests.*;
public class Xop_tkn_chkr_base implements Tst_chkr {
@gplx.Virtual public Class> TypeOf() {return Xop_tkn_itm.class;}
@gplx.Virtual public byte Tkn_tid() {return Byte_.Max_value_127;}
diff --git a/400_xowa/src/gplx/xowa/parsers/Xop_tkn_mkr.java b/400_xowa/src/gplx/xowa/parsers/Xop_tkn_mkr.java
index 028063a04..523b08a26 100644
--- a/400_xowa/src/gplx/xowa/parsers/Xop_tkn_mkr.java
+++ b/400_xowa/src/gplx/xowa/parsers/Xop_tkn_mkr.java
@@ -16,19 +16,17 @@ You should have received a copy of the GNU Affero General Public License
along with this program. If not, see .
*/
package gplx.xowa.parsers; import gplx.*; import gplx.xowa.*;
-import gplx.xowa.parsers.apos.*; import gplx.xowa.parsers.amps.*; import gplx.xowa.parsers.lnkes.*; import gplx.xowa.parsers.hdrs.*; import gplx.xowa.parsers.lists.*; import gplx.xowa.xtns.cite.*; import gplx.xowa.parsers.tblws.*; import gplx.xowa.parsers.paras.*; import gplx.xowa.parsers.xndes.*; import gplx.xowa.parsers.lnkis.*; import gplx.xowa.parsers.tmpls.*; import gplx.xowa.parsers.miscs.*;
+import gplx.xowa.parsers.apos.*; import gplx.xowa.parsers.amps.*; import gplx.xowa.parsers.lnkes.*; import gplx.xowa.parsers.hdrs.*; import gplx.xowa.parsers.lists.*; import gplx.xowa.xtns.cite.*; import gplx.xowa.parsers.tblws.*; import gplx.xowa.parsers.paras.*; import gplx.xowa.parsers.xndes.*; import gplx.xowa.parsers.lnkis.*; import gplx.xowa.parsers.tmpls.*; import gplx.xowa.parsers.miscs.*; import gplx.xowa.parsers.vnts.*;
public class Xop_tkn_mkr {
- Xop_space_tkn space_tkn_immutable = new Xop_space_tkn(true, -1, -1);
public Xop_root_tkn Root(byte[] raw) {return new Xop_root_tkn().Root_src_(raw);}
public Xop_txt_tkn Txt(int bgn, int end) {return new Xop_txt_tkn(bgn, end);}
-// public Xop_space_tkn Space(Xop_tkn_grp grp, int bgn, int end) {grp.Subs_src_pos_(grp.Subs_len(), bgn, end); return space_tkn_immutable;}
public Xop_space_tkn Space(Xop_tkn_grp grp, int bgn, int end) {Xop_space_tkn rv = new Xop_space_tkn(false, bgn, end); grp.Subs_src_pos_(grp.Subs_len(), bgn, end); return rv;}
public Xop_space_tkn Space_mutable(int bgn, int end) {return new Xop_space_tkn(false, bgn, end);}
public Xop_apos_tkn Apos(int bgn, int end
, int aposLen, int typ, int cmd, int lit_apos) {return new Xop_apos_tkn(bgn, end, aposLen, typ, cmd, lit_apos);}
public Xop_tkn_itm Amp_txt(int bgn, int end, Xop_amp_trie_itm itm) {return new Xop_amp_tkn_txt(bgn, end, itm);}
public Xop_tkn_itm Amp_num(int bgn, int end, int val_int, byte[] val_bry) {return new Xop_amp_tkn_num(bgn, end, val_int, val_bry);}
- public Xop_tkn_itm Amp_num(int bgn, int end, int val_int) {return new Xop_amp_tkn_num(bgn, end, val_int, gplx.intl.Utf16_.Encode_int_to_bry(val_int));}
+ public Xop_tkn_itm Amp_num(int bgn, int end, int val_int) {return new Xop_amp_tkn_num(bgn, end, val_int, gplx.core.intls.Utf16_.Encode_int_to_bry(val_int));}
public Xop_nl_tkn NewLine(int bgn, int end, byte nl_typ, int nl_len) {return new Xop_nl_tkn(bgn, end, nl_typ, nl_len);}
public Xop_lnki_tkn Lnki(int bgn, int end) {return (Xop_lnki_tkn)new Xop_lnki_tkn().Tkn_ini_pos(false, bgn, end);}
public Xop_list_tkn List_bgn(int bgn, int end, byte listType, int symLen) {return Xop_list_tkn.bgn_(bgn, end, listType, symLen);}
@@ -91,9 +89,8 @@ public class Xop_tkn_mkr {
public gplx.xowa.xtns.translates.Xop_languages_xnde Xnde_languages() {return new gplx.xowa.xtns.translates.Xop_languages_xnde();}
public gplx.xowa.xtns.translates.Xop_tvar_tkn Tvar(int tkn_bgn, int tkn_end, int key_bgn, int key_end, int txt_bgn, int txt_end, byte[] wikitext)
{return new gplx.xowa.xtns.translates.Xop_tvar_tkn(tkn_bgn, tkn_end, key_bgn, key_end, txt_bgn, txt_end, wikitext);}
- public gplx.xowa.langs.vnts.Xop_vnt_tkn Vnt(int bgn_lhs, int bgn_rhs) {return new gplx.xowa.langs.vnts.Xop_vnt_tkn(bgn_lhs, bgn_rhs);}
- public gplx.xowa.langs.vnts.Xop_vnt_eqgt_tkn Vnt_eqgt(int bgn, int end) {return new gplx.xowa.langs.vnts.Xop_vnt_eqgt_tkn(bgn, end);}
-
+ public Xop_vnt_tkn Vnt(int bgn_lhs, int bgn_rhs) {return new Xop_vnt_tkn(bgn_lhs, bgn_rhs);}
+ public Xop_vnt_eqgt_tkn Vnt_eqgt(int bgn, int end) {return new Xop_vnt_eqgt_tkn(bgn, end);}
// public void Clear() {
// space_tkns_len = txt_tkns_len = 0;
// }
diff --git a/400_xowa/src/gplx/xowa/parsers/Xow_parser_mgr.java b/400_xowa/src/gplx/xowa/parsers/Xow_parser_mgr.java
new file mode 100644
index 000000000..b3d5e44c8
--- /dev/null
+++ b/400_xowa/src/gplx/xowa/parsers/Xow_parser_mgr.java
@@ -0,0 +1,50 @@
+/*
+XOWA: the XOWA Offline Wiki Application
+Copyright (C) 2012 gnosygnu@gmail.com
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU Affero General Public License as
+published by the Free Software Foundation, either version 3 of the
+License, or (at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU Affero General Public License for more details.
+
+You should have received a copy of the GNU Affero General Public License
+along with this program. If not, see .
+*/
+package gplx.xowa.parsers; import gplx.*; import gplx.xowa.*;
+import gplx.xowa.wikis.*;
+public class Xow_parser_mgr {
+ private final Xowe_wiki wiki; private final Xop_tkn_mkr tkn_mkr;
+ private Xop_parser anchor_encode_parser;
+ public Xow_parser_mgr(Xowe_wiki wiki) {
+ this.wiki = wiki; this.tkn_mkr = wiki.Appe().Parser_mgr().Tkn_mkr();
+ this.ctx = Xop_ctx.new_(wiki);
+ this.main = Xop_parser.new_wiki(wiki);
+ }
+ public Xop_ctx Ctx() {return ctx;} private final Xop_ctx ctx;
+ public Xop_parser Main() {return main;} private final Xop_parser main;
+ public Xop_parser Anchor_encoder() {
+ if (anchor_encode_parser == null) {
+ anchor_encode_parser = Xop_parser.new_(wiki, wiki.Parser_mgr().Main().Tmpl_lxr_mgr(), Xop_lxr_mgr.new_anchor_encoder());
+ anchor_encode_parser.Init_by_wiki(wiki);
+ anchor_encode_parser.Init_by_lang(wiki.Lang());
+ }
+ return anchor_encode_parser;
+ }
+ public void Parse(Xoae_page page, boolean clear) {
+ if (!Env_.Mode_testing()) wiki.Init_assert();
+ gplx.xowa.xtns.scribunto.Scrib_core.Core_page_changed(page); // notify scribunto about page changed
+ ctx.Cur_page_(page);
+ Xop_root_tkn root = ctx.Tkn_mkr().Root(page.Data_raw());
+ if (clear) {page.Clear();}
+ Xoa_ttl ttl = page.Ttl();
+ if (Xow_page_tid.Identify(wiki.Domain_tid(), ttl.Ns().Id(), ttl.Page_db()) == Xow_page_tid.Tid_wikitext) // only parse page if wikitext; skip .js, .css, Module; DATE:2013-11-10
+ main.Parse_text_to_wdom(root, ctx, tkn_mkr, page.Data_raw(), Xop_parser_.Doc_bgn_bos);
+ page.Root_(root);
+ root.Data_htm_(root.Root_src());
+ }
+}
diff --git a/400_xowa/src/gplx/xowa/parsers/Xow_utl_mgr.java b/400_xowa/src/gplx/xowa/parsers/Xow_utl_mgr.java
deleted file mode 100644
index 736c69233..000000000
--- a/400_xowa/src/gplx/xowa/parsers/Xow_utl_mgr.java
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
-XOWA: the XOWA Offline Wiki Application
-Copyright (C) 2012 gnosygnu@gmail.com
-
-This program is free software: you can redistribute it and/or modify
-it under the terms of the GNU Affero General Public License as
-published by the Free Software Foundation, either version 3 of the
-License, or (at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU Affero General Public License for more details.
-
-You should have received a copy of the GNU Affero General Public License
-along with this program. If not, see .
-*/
-package gplx.xowa.parsers; import gplx.*; import gplx.xowa.*;
-import gplx.xowa.parsers.apos.*; import gplx.xowa.parsers.amps.*; import gplx.xowa.parsers.lists.*; import gplx.xowa.parsers.lnkes.*; import gplx.xowa.parsers.paras.*; import gplx.xowa.parsers.xndes.*; import gplx.xowa.parsers.lnkis.*; import gplx.xowa.parsers.tmpls.*; import gplx.xowa.parsers.miscs.*;
-public class Xow_utl_mgr {
- public Xow_utl_mgr(Xowe_wiki wiki) {this.wiki = wiki;} private Xowe_wiki wiki;
- public Xop_parser Anchor_encode_parser() {
- if (anchor_encode_parser == null) {
- anchor_encode_parser = new Xop_parser(wiki, wiki.Parser().Tmpl_lxr_mgr(), Anchor_encode_lxr_mgr);
- anchor_encode_parser.Init_by_wiki(wiki);
- anchor_encode_parser.Init_by_lang(wiki.Lang());
- }
- return anchor_encode_parser;
- } private Xop_parser anchor_encode_parser;
- private static final Xop_lxr_mgr Anchor_encode_lxr_mgr
- = new Xop_lxr_mgr(new Xop_lxr[]
- { Xop_pipe_lxr._, new Xop_eq_lxr(false), Xop_space_lxr._, Xop_tab_lxr._, Xop_nl_lxr._
- , Xop_curly_bgn_lxr._, Xop_curly_end_lxr._
- , Xop_amp_lxr._, Xop_colon_lxr._
- , Xop_apos_lxr._
- , Xop_lnki_lxr_bgn._, Xop_lnki_lxr_end._
- , Xop_lnke_lxr._, Xop_lnke_end_lxr._
- , Xop_xnde_lxr._
- });
-}
diff --git a/400_xowa/src/gplx/xowa/parsers/amps/Xop_amp_lxr.java b/400_xowa/src/gplx/xowa/parsers/amps/Xop_amp_lxr.java
index 2a018aec8..79985e4b8 100644
--- a/400_xowa/src/gplx/xowa/parsers/amps/Xop_amp_lxr.java
+++ b/400_xowa/src/gplx/xowa/parsers/amps/Xop_amp_lxr.java
@@ -16,11 +16,12 @@ You should have received a copy of the GNU Affero General Public License
along with this program. If not, see .
*/
package gplx.xowa.parsers.amps; import gplx.*; import gplx.xowa.*; import gplx.xowa.parsers.*;
-import gplx.core.btries.*;
-public class Xop_amp_lxr implements Xop_lxr {
- public byte Lxr_tid() {return Xop_lxr_.Tid_amp;}
+import gplx.core.btries.*; import gplx.xowa.langs.*;
+public class Xop_amp_lxr implements Xop_lxr {
+ public int Lxr_tid() {return Xop_lxr_.Tid_amp;}
public void Init_by_wiki(Xowe_wiki wiki, Btrie_fast_mgr core_trie) {core_trie.Add(Byte_ascii.Amp, this);}
public void Init_by_lang(Xol_lang lang, Btrie_fast_mgr core_trie) {}
+ public void Term(Btrie_fast_mgr core_trie) {}
public int Make_tkn(Xop_ctx ctx, Xop_tkn_mkr tkn_mkr, Xop_root_tkn root, byte[] src, int src_len, int bgn_pos, int cur_pos) {
return ctx.Amp().Make_tkn(ctx, tkn_mkr, root, src, src_len, bgn_pos, cur_pos);
}
diff --git a/400_xowa/src/gplx/xowa/parsers/amps/Xop_amp_mgr.java b/400_xowa/src/gplx/xowa/parsers/amps/Xop_amp_mgr.java
index e642ee8b6..8ecd53fc4 100644
--- a/400_xowa/src/gplx/xowa/parsers/amps/Xop_amp_mgr.java
+++ b/400_xowa/src/gplx/xowa/parsers/amps/Xop_amp_mgr.java
@@ -45,8 +45,8 @@ public class Xop_amp_mgr {
rslt_pos = amp_pos + 1; // default to fail pos; after amp;
rslt_val = -1; // clear any previous setting
int cur_pos = int_bgn, int_end = -1;
- int semic_pos = Bry_finder.Find_fwd(src, Byte_ascii.Semic, cur_pos, src_len);
- if (semic_pos == Bry_finder.Not_found) return false;
+ int semic_pos = Bry_find_.Find_fwd(src, Byte_ascii.Semic, cur_pos, src_len);
+ if (semic_pos == Bry_find_.Not_found) return false;
int_end = semic_pos - 1; // int_end = pos before semicolon
int multiple = ncr_is_hex ? 16 : 10, val = 0, factor = 1, cur = 0;
for (int i = int_end; i >= int_bgn; i--) {
@@ -64,7 +64,7 @@ public class Xop_amp_mgr {
if (cur < 0 || cur > 10) return false;
}
val += cur * factor;
- if (val > gplx.intl.Utf8_.Codepoint_max) return false; // fail if value > largest_unicode_codepoint
+ if (val > gplx.core.intls.Utf8_.Codepoint_max) return false; // fail if value > largest_unicode_codepoint
factor *= multiple;
}
rslt_val = val;
diff --git a/400_xowa/src/gplx/xowa/parsers/amps/Xop_amp_trie_itm.java b/400_xowa/src/gplx/xowa/parsers/amps/Xop_amp_trie_itm.java
index 39955b925..a08b5b9e3 100644
--- a/400_xowa/src/gplx/xowa/parsers/amps/Xop_amp_trie_itm.java
+++ b/400_xowa/src/gplx/xowa/parsers/amps/Xop_amp_trie_itm.java
@@ -16,12 +16,12 @@ You should have received a copy of the GNU Affero General Public License
along with this program. If not, see .
*/
package gplx.xowa.parsers.amps; import gplx.*; import gplx.xowa.*; import gplx.xowa.parsers.*;
-import gplx.html.*; import gplx.xowa.html.lnkis.*;
+import gplx.langs.htmls.*; import gplx.xowa.html.lnkis.*;
public class Xop_amp_trie_itm {
public Xop_amp_trie_itm(byte tid, int char_int, byte[] xml_name_bry) {
this.tid = tid;
this.char_int = char_int;
- this.u8_bry = gplx.intl.Utf16_.Encode_int_to_bry(char_int);
+ this.u8_bry = gplx.core.intls.Utf16_.Encode_int_to_bry(char_int);
this.xml_name_bry = xml_name_bry;
this.key_name_len = xml_name_bry.length - 2; // 2 for & and ;
}
diff --git a/400_xowa/src/gplx/xowa/parsers/amps/Xop_html_num_tkn_chkr.java b/400_xowa/src/gplx/xowa/parsers/amps/Xop_html_num_tkn_chkr.java
index 8c733ac00..fac701e13 100644
--- a/400_xowa/src/gplx/xowa/parsers/amps/Xop_html_num_tkn_chkr.java
+++ b/400_xowa/src/gplx/xowa/parsers/amps/Xop_html_num_tkn_chkr.java
@@ -16,6 +16,7 @@ You should have received a copy of the GNU Affero General Public License
along with this program. If not, see .
*/
package gplx.xowa.parsers.amps; import gplx.*; import gplx.xowa.*; import gplx.xowa.parsers.*;
+import gplx.core.tests.*;
public class Xop_html_num_tkn_chkr extends Xop_tkn_chkr_base {
@Override public Class> TypeOf() {return Xop_amp_tkn_num.class;}
@Override public byte Tkn_tid() {return Xop_tkn_itm_.Tid_html_ncr;}
diff --git a/400_xowa/src/gplx/xowa/parsers/amps/Xop_html_txt_tkn_chkr.java b/400_xowa/src/gplx/xowa/parsers/amps/Xop_html_txt_tkn_chkr.java
index e9e4c744f..cde656e7f 100644
--- a/400_xowa/src/gplx/xowa/parsers/amps/Xop_html_txt_tkn_chkr.java
+++ b/400_xowa/src/gplx/xowa/parsers/amps/Xop_html_txt_tkn_chkr.java
@@ -16,6 +16,7 @@ You should have received a copy of the GNU Affero General Public License
along with this program. If not, see .
*/
package gplx.xowa.parsers.amps; import gplx.*; import gplx.xowa.*; import gplx.xowa.parsers.*;
+import gplx.core.tests.*;
public class Xop_html_txt_tkn_chkr extends Xop_tkn_chkr_base {
@Override public Class> TypeOf() {return Xop_amp_tkn_txt.class;}
@Override public byte Tkn_tid() {return Xop_tkn_itm_.Tid_html_ref;}
diff --git a/400_xowa/src/gplx/xowa/parsers/apos/Xop_apos_lxr.java b/400_xowa/src/gplx/xowa/parsers/apos/Xop_apos_lxr.java
index 82e6724a3..ebce3b4ff 100644
--- a/400_xowa/src/gplx/xowa/parsers/apos/Xop_apos_lxr.java
+++ b/400_xowa/src/gplx/xowa/parsers/apos/Xop_apos_lxr.java
@@ -16,11 +16,12 @@ You should have received a copy of the GNU Affero General Public License
along with this program. If not, see .
*/
package gplx.xowa.parsers.apos; import gplx.*; import gplx.xowa.*; import gplx.xowa.parsers.*;
-import gplx.core.btries.*;
+import gplx.core.btries.*; import gplx.xowa.langs.*;
public class Xop_apos_lxr implements Xop_lxr {
- public byte Lxr_tid() {return Xop_lxr_.Tid_apos;}
+ public int Lxr_tid() {return Xop_lxr_.Tid_apos;}
public void Init_by_wiki(Xowe_wiki wiki, Btrie_fast_mgr core_trie) {core_trie.Add(Apos_ary, this);} private static final byte[] Apos_ary = new byte[] {Byte_ascii.Apos, Byte_ascii.Apos};
public void Init_by_lang(Xol_lang lang, Btrie_fast_mgr core_trie) {}
+ public void Term(Btrie_fast_mgr core_trie) {}
public int Make_tkn(Xop_ctx ctx, Xop_tkn_mkr tkn_mkr, Xop_root_tkn root, byte[] src, int src_len, int bgn_pos, int cur_pos) {return ctx.Apos().Make_tkn(ctx, tkn_mkr, root, src, src_len, bgn_pos, cur_pos);}
public static final Xop_apos_lxr _ = new Xop_apos_lxr(); Xop_apos_lxr() {}
}
diff --git a/400_xowa/src/gplx/xowa/parsers/apos/Xop_apos_tkn_chkr.java b/400_xowa/src/gplx/xowa/parsers/apos/Xop_apos_tkn_chkr.java
index 4cf9fe6ae..7779d7dd4 100644
--- a/400_xowa/src/gplx/xowa/parsers/apos/Xop_apos_tkn_chkr.java
+++ b/400_xowa/src/gplx/xowa/parsers/apos/Xop_apos_tkn_chkr.java
@@ -16,6 +16,7 @@ You should have received a copy of the GNU Affero General Public License
along with this program. If not, see .
*/
package gplx.xowa.parsers.apos; import gplx.*; import gplx.xowa.*; import gplx.xowa.parsers.*;
+import gplx.core.tests.*;
public class Xop_apos_tkn_chkr extends Xop_tkn_chkr_base {
@Override public Class> TypeOf() {return Xop_apos_tkn.class;}
@Override public byte Tkn_tid() {return Xop_tkn_itm_.Tid_apos;}
diff --git a/400_xowa/src/gplx/xowa/parsers/apos/Xop_apos_wkr.java b/400_xowa/src/gplx/xowa/parsers/apos/Xop_apos_wkr.java
index ac9cdf497..fad15f110 100644
--- a/400_xowa/src/gplx/xowa/parsers/apos/Xop_apos_wkr.java
+++ b/400_xowa/src/gplx/xowa/parsers/apos/Xop_apos_wkr.java
@@ -29,7 +29,7 @@ public class Xop_apos_wkr implements Xop_ctx_wkr {
public void AutoClose(Xop_ctx ctx, byte[] src, int src_len, int bgn_pos, int cur_pos, Xop_tkn_itm tkn) {}
public int Stack_len() {return stack.Count();}
public int Make_tkn(Xop_ctx ctx, Xop_tkn_mkr tkn_mkr, Xop_root_tkn root, byte[] src, int src_len, int bgn_pos, int cur_pos) {
- cur_pos = Bry_finder.Find_fwd_while(src, cur_pos, src_len, Byte_ascii.Apos);
+ cur_pos = Bry_find_.Find_fwd_while(src, cur_pos, src_len, Byte_ascii.Apos);
int apos_len = cur_pos - bgn_pos;
dat.Ident(ctx, src, apos_len, cur_pos);
Xop_apos_tkn apos_tkn = tkn_mkr.Apos(bgn_pos, cur_pos, apos_len, dat.Typ(), dat.Cmd(), dat.Lit_apos());
diff --git a/400_xowa/src/gplx/xowa/parsers/hdrs/Xop_hdr_lxr.java b/400_xowa/src/gplx/xowa/parsers/hdrs/Xop_hdr_lxr.java
index c37ecb86b..099f4aeaf 100644
--- a/400_xowa/src/gplx/xowa/parsers/hdrs/Xop_hdr_lxr.java
+++ b/400_xowa/src/gplx/xowa/parsers/hdrs/Xop_hdr_lxr.java
@@ -16,11 +16,12 @@ You should have received a copy of the GNU Affero General Public License
along with this program. If not, see .
*/
package gplx.xowa.parsers.hdrs; import gplx.*; import gplx.xowa.*; import gplx.xowa.parsers.*;
-import gplx.core.btries.*;
-public class Xop_hdr_lxr implements Xop_lxr {
- public byte Lxr_tid() {return Xop_lxr_.Tid_hdr;}
+import gplx.core.btries.*; import gplx.xowa.langs.*;
+public class Xop_hdr_lxr implements Xop_lxr {
+ public int Lxr_tid() {return Xop_lxr_.Tid_hdr;}
public void Init_by_wiki(Xowe_wiki wiki, Btrie_fast_mgr core_trie) {core_trie.Add(Hook_bgn, this);} static final byte[] Hook_bgn = new byte[] {Byte_ascii.Nl, Byte_ascii.Eq};
public void Init_by_lang(Xol_lang lang, Btrie_fast_mgr core_trie) {}
+ public void Term(Btrie_fast_mgr core_trie) {}
public int Make_tkn(Xop_ctx ctx, Xop_tkn_mkr tkn_mkr, Xop_root_tkn root, byte[] src, int src_len, int bgn_pos, int cur_pos) {return ctx.Hdr().Make_tkn_bgn(ctx, tkn_mkr, root, src, src_len, bgn_pos, cur_pos);}
public static final Xop_hdr_lxr _ = new Xop_hdr_lxr(); Xop_hdr_lxr() {}
public static final byte Hook = Byte_ascii.Eq;
diff --git a/400_xowa/src/gplx/xowa/parsers/hdrs/Xop_hdr_tkn_chkr.java b/400_xowa/src/gplx/xowa/parsers/hdrs/Xop_hdr_tkn_chkr.java
index bb5373e2b..b569a27af 100644
--- a/400_xowa/src/gplx/xowa/parsers/hdrs/Xop_hdr_tkn_chkr.java
+++ b/400_xowa/src/gplx/xowa/parsers/hdrs/Xop_hdr_tkn_chkr.java
@@ -16,6 +16,7 @@ You should have received a copy of the GNU Affero General Public License
along with this program. If not, see .
*/
package gplx.xowa.parsers.hdrs; import gplx.*; import gplx.xowa.*; import gplx.xowa.parsers.*;
+import gplx.core.tests.*;
public class Xop_hdr_tkn_chkr extends Xop_tkn_chkr_base {
@Override public Class> TypeOf() {return Xop_hdr_tkn.class;}
@Override public byte Tkn_tid() {return Xop_tkn_itm_.Tid_hdr;}
diff --git a/400_xowa/src/gplx/xowa/parsers/hdrs/Xop_hdr_wkr.java b/400_xowa/src/gplx/xowa/parsers/hdrs/Xop_hdr_wkr.java
index 837aa488c..e4e19e1ac 100644
--- a/400_xowa/src/gplx/xowa/parsers/hdrs/Xop_hdr_wkr.java
+++ b/400_xowa/src/gplx/xowa/parsers/hdrs/Xop_hdr_wkr.java
@@ -35,7 +35,7 @@ public class Xop_hdr_wkr implements Xop_ctx_wkr {
ctx.Apos().EndFrame(ctx, root, src, bgn_pos, false);
Close_open_itms(ctx, tkn_mkr, root, src, src_len, bgn_pos, cur_pos);
ctx.Para().Process_block__bgn__nl_w_symbol(ctx, root, src, bgn_pos, cur_pos, Xop_xnde_tag_.Tag_h2); // pass h2; should pass h# where # is correct #, but for purpose of Para_wkr,
tag does not matter
- int new_pos = Bry_finder.Find_fwd_while(src, cur_pos, src_len, Xop_hdr_lxr.Hook); // count all =
+ int new_pos = Bry_find_.Find_fwd_while(src, cur_pos, src_len, Xop_hdr_lxr.Hook); // count all =
int hdr_len = new_pos - cur_pos + 1; // +1 b/c Hook has 1 eq: "\n="
switch (hdr_len) {
case 1: ctx.Msg_log().Add_itm_none(Xop_hdr_log.Len_1, src, bgn_pos, new_pos); break; // ; flag
diff --git a/400_xowa/src_060_utl/gplx/HierPosAryBldr.java b/400_xowa/src/gplx/xowa/parsers/lists/HierPosAryBldr.java
similarity index 92%
rename from 400_xowa/src_060_utl/gplx/HierPosAryBldr.java
rename to 400_xowa/src/gplx/xowa/parsers/lists/HierPosAryBldr.java
index cc9a24343..d1faa03d0 100644
--- a/400_xowa/src_060_utl/gplx/HierPosAryBldr.java
+++ b/400_xowa/src/gplx/xowa/parsers/lists/HierPosAryBldr.java
@@ -15,7 +15,7 @@ GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see .
*/
-package gplx;
+package gplx.xowa.parsers.lists; import gplx.*; import gplx.xowa.*; import gplx.xowa.parsers.*;
import gplx.core.strings.*;
public class HierPosAryBldr {
public void Init() {
diff --git a/400_xowa/src_060_utl/gplx/HierPosAryBldr_tst.java b/400_xowa/src/gplx/xowa/parsers/lists/HierPosAryBldr_tst.java
similarity index 92%
rename from 400_xowa/src_060_utl/gplx/HierPosAryBldr_tst.java
rename to 400_xowa/src/gplx/xowa/parsers/lists/HierPosAryBldr_tst.java
index b8d7d8fa0..957e11cfa 100644
--- a/400_xowa/src_060_utl/gplx/HierPosAryBldr_tst.java
+++ b/400_xowa/src/gplx/xowa/parsers/lists/HierPosAryBldr_tst.java
@@ -15,7 +15,7 @@ GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see .
*/
-package gplx;
+package gplx.xowa.parsers.lists; import gplx.*; import gplx.xowa.*; import gplx.xowa.parsers.*;
import org.junit.*;
public class HierPosAryBldr_tst {
@Before public void init() {bldr.Init();} HierPosAryBldr bldr = new HierPosAryBldr(256);
diff --git a/400_xowa/src/gplx/xowa/parsers/lists/Xop_colon_lxr.java b/400_xowa/src/gplx/xowa/parsers/lists/Xop_colon_lxr.java
index 520ae3cf3..90e0caf64 100644
--- a/400_xowa/src/gplx/xowa/parsers/lists/Xop_colon_lxr.java
+++ b/400_xowa/src/gplx/xowa/parsers/lists/Xop_colon_lxr.java
@@ -16,11 +16,12 @@ You should have received a copy of the GNU Affero General Public License
along with this program. If not, see .
*/
package gplx.xowa.parsers.lists; import gplx.*; import gplx.xowa.*; import gplx.xowa.parsers.*;
-import gplx.core.btries.*;
+import gplx.core.btries.*; import gplx.xowa.langs.*;
public class Xop_colon_lxr implements Xop_lxr {
- public byte Lxr_tid() {return Xop_lxr_.Tid_colon;}
+ public int Lxr_tid() {return Xop_lxr_.Tid_colon;}
public void Init_by_wiki(Xowe_wiki wiki, Btrie_fast_mgr core_trie) {core_trie.Add(Byte_ascii.Colon, this);}
public void Init_by_lang(Xol_lang lang, Btrie_fast_mgr core_trie) {}
+ public void Term(Btrie_fast_mgr core_trie) {}
public int Make_tkn(Xop_ctx ctx, Xop_tkn_mkr tkn_mkr, Xop_root_tkn root, byte[] src, int src_len, int bgn_pos, int cur_pos) {
Xop_list_wkr listCtx = ctx.List();
if (listCtx.Dd_chk()) { // handle ";a:b" construct; REF.MW: Parser.php|doBlockLevels|; title : definition text
diff --git a/400_xowa/src/gplx/xowa/parsers/lists/Xop_list_lxr.java b/400_xowa/src/gplx/xowa/parsers/lists/Xop_list_lxr.java
index c8038a7a2..3b91121b4 100644
--- a/400_xowa/src/gplx/xowa/parsers/lists/Xop_list_lxr.java
+++ b/400_xowa/src/gplx/xowa/parsers/lists/Xop_list_lxr.java
@@ -16,11 +16,12 @@ You should have received a copy of the GNU Affero General Public License
along with this program. If not, see .
*/
package gplx.xowa.parsers.lists; import gplx.*; import gplx.xowa.*; import gplx.xowa.parsers.*;
-import gplx.core.btries.*;
-public class Xop_list_lxr implements Xop_lxr {//20111222
- public byte Lxr_tid() {return Xop_lxr_.Tid_list;}
+import gplx.core.btries.*; import gplx.xowa.langs.*;
+public class Xop_list_lxr implements Xop_lxr {
+ public int Lxr_tid() {return Xop_lxr_.Tid_list;}
public void Init_by_wiki(Xowe_wiki wiki, Btrie_fast_mgr core_trie) {Add_ary(core_trie, this, Xop_list_tkn_.Hook_ul, Xop_list_tkn_.Hook_ol, Xop_list_tkn_.Hook_dt, Xop_list_tkn_.Hook_dd);}
public void Init_by_lang(Xol_lang lang, Btrie_fast_mgr core_trie) {}
+ public void Term(Btrie_fast_mgr core_trie) {}
private void Add_ary(Btrie_fast_mgr core_trie, Object val, byte[]... ary) {for (byte[] itm : ary) core_trie.Add(itm, val);}
public int Make_tkn(Xop_ctx ctx, Xop_tkn_mkr tkn_mkr, Xop_root_tkn root, byte[] src, int src_len, int bgn_pos, int cur_pos) {return ctx.List().MakeTkn_bgn(ctx, tkn_mkr, root, src, src_len, bgn_pos, cur_pos);}
public static final Xop_list_lxr _ = new Xop_list_lxr(); Xop_list_lxr() {}
diff --git a/400_xowa/src/gplx/xowa/parsers/lists/Xop_list_tkn_chkr.java b/400_xowa/src/gplx/xowa/parsers/lists/Xop_list_tkn_chkr.java
index 46fe1343f..129e137f0 100644
--- a/400_xowa/src/gplx/xowa/parsers/lists/Xop_list_tkn_chkr.java
+++ b/400_xowa/src/gplx/xowa/parsers/lists/Xop_list_tkn_chkr.java
@@ -16,6 +16,7 @@ You should have received a copy of the GNU Affero General Public License
along with this program. If not, see .
*/
package gplx.xowa.parsers.lists; import gplx.*; import gplx.xowa.*; import gplx.xowa.parsers.*;
+import gplx.core.tests.*;
public class Xop_list_tkn_chkr extends Xop_tkn_chkr_base {
@Override public Class> TypeOf() {return Xop_list_tkn.class;}
@Override public byte Tkn_tid() {return Xop_tkn_itm_.Tid_list;}
diff --git a/400_xowa/src/gplx/xowa/parsers/lnkes/Xoh_lnke_wtr.java b/400_xowa/src/gplx/xowa/parsers/lnkes/Xoh_lnke_wtr.java
index 453976373..c0c3f65cf 100644
--- a/400_xowa/src/gplx/xowa/parsers/lnkes/Xoh_lnke_wtr.java
+++ b/400_xowa/src/gplx/xowa/parsers/lnkes/Xoh_lnke_wtr.java
@@ -16,7 +16,7 @@ You should have received a copy of the GNU Affero General Public License
along with this program. If not, see .
*/
package gplx.xowa.parsers.lnkes; import gplx.*; import gplx.xowa.*; import gplx.xowa.parsers.*;
-import gplx.core.net.*;
+import gplx.core.net.*; import gplx.langs.htmls.encoders.*;
import gplx.xowa.html.*; import gplx.xowa.html.hrefs.*;
import gplx.xowa.urls.*;
public class Xoh_lnke_wtr {
diff --git a/400_xowa/src/gplx/xowa/parsers/lnkes/Xop_lnke_end_lxr.java b/400_xowa/src/gplx/xowa/parsers/lnkes/Xop_lnke_end_lxr.java
index f2e72a44c..c68b96528 100644
--- a/400_xowa/src/gplx/xowa/parsers/lnkes/Xop_lnke_end_lxr.java
+++ b/400_xowa/src/gplx/xowa/parsers/lnkes/Xop_lnke_end_lxr.java
@@ -16,11 +16,12 @@ You should have received a copy of the GNU Affero General Public License
along with this program. If not, see .
*/
package gplx.xowa.parsers.lnkes; import gplx.*; import gplx.xowa.*; import gplx.xowa.parsers.*;
-import gplx.core.btries.*;
-public class Xop_lnke_end_lxr implements Xop_lxr {//20111222
- public byte Lxr_tid() {return Xop_lxr_.Tid_lnke_end;}
+import gplx.core.btries.*; import gplx.xowa.langs.*;
+public class Xop_lnke_end_lxr implements Xop_lxr {
+ public int Lxr_tid() {return Xop_lxr_.Tid_lnke_end;}
public void Init_by_wiki(Xowe_wiki wiki, Btrie_fast_mgr core_trie) {core_trie.Add(Byte_ascii.Brack_end, this);}
public void Init_by_lang(Xol_lang lang, Btrie_fast_mgr core_trie) {}
+ public void Term(Btrie_fast_mgr core_trie) {}
public int Make_tkn(Xop_ctx ctx, Xop_tkn_mkr tkn_mkr, Xop_root_tkn root, byte[] src, int src_len, int bgn_pos, int cur_pos) {return ctx.Lnke().MakeTkn_end(ctx, tkn_mkr, root, src, src_len, bgn_pos, cur_pos);}
public static final Xop_lnke_end_lxr _ = new Xop_lnke_end_lxr(); Xop_lnke_end_lxr() {}
}
diff --git a/400_xowa/src/gplx/xowa/parsers/lnkes/Xop_lnke_lxr.java b/400_xowa/src/gplx/xowa/parsers/lnkes/Xop_lnke_lxr.java
index 4cd406f5e..058d04829 100644
--- a/400_xowa/src/gplx/xowa/parsers/lnkes/Xop_lnke_lxr.java
+++ b/400_xowa/src/gplx/xowa/parsers/lnkes/Xop_lnke_lxr.java
@@ -16,10 +16,11 @@ You should have received a copy of the GNU Affero General Public License
along with this program. If not, see .
*/
package gplx.xowa.parsers.lnkes; import gplx.*; import gplx.xowa.*; import gplx.xowa.parsers.*;
-import gplx.core.btries.*; import gplx.core.net.*;
-public class Xop_lnke_lxr implements Xop_lxr {
+import gplx.core.btries.*; import gplx.xowa.langs.*;
+import gplx.core.net.*;
+public class Xop_lnke_lxr implements Xop_lxr {
Xop_lnke_lxr(byte lnke_typ, byte[] protocol, byte tid) {this.lnke_typ = lnke_typ; this.protocol = protocol; this.tid = tid;} private byte lnke_typ; byte[] protocol; byte tid;
- public byte Lxr_tid() {return Xop_lxr_.Tid_lnke_bgn;}
+ public int Lxr_tid() {return Xop_lxr_.Tid_lnke_bgn;}
public void Init_by_wiki(Xowe_wiki wiki, Btrie_fast_mgr core_trie) {
Gfo_protocol_itm[] ary = Gfo_protocol_itm.Ary();
int ary_len = ary.length;
@@ -32,6 +33,7 @@ public class Xop_lnke_lxr implements Xop_lxr {
Ctor_lxr_add(core_trie, Bry_.new_a7("xowa-cmd"), Gfo_protocol_itm.Tid_xowa);
} private static final byte[] Bry_relative_1 = Bry_.new_a7("[//"), Bry_relative_2 = Bry_.new_a7("[[//");
public void Init_by_lang(Xol_lang lang, Btrie_fast_mgr core_trie) {}
+ public void Term(Btrie_fast_mgr core_trie) {}
private void Ctor_lxr_add(Btrie_fast_mgr core_trie, byte[] protocol_bry, byte tid) {
core_trie.Add(protocol_bry , new Xop_lnke_lxr(Xop_lnke_tkn.Lnke_typ_text, protocol_bry, tid));
core_trie.Add(Bry_.Add(Byte_ascii.Brack_bgn, protocol_bry) , new Xop_lnke_lxr(Xop_lnke_tkn.Lnke_typ_brack, protocol_bry, tid));
diff --git a/400_xowa/src/gplx/xowa/parsers/lnkes/Xop_lnke_wkr.java b/400_xowa/src/gplx/xowa/parsers/lnkes/Xop_lnke_wkr.java
index 8c905ffaf..9f7ae6faa 100644
--- a/400_xowa/src/gplx/xowa/parsers/lnkes/Xop_lnke_wkr.java
+++ b/400_xowa/src/gplx/xowa/parsers/lnkes/Xop_lnke_wkr.java
@@ -220,8 +220,8 @@ public class Xop_lnke_wkr implements Xop_ctx_wkr {
break;
case Byte_ascii.Paren_end: // differentiate between "(http://a.org)" (trim) and "http://a.org/b(c)" (don't trim)
if (paren_bgn_chk == Bool_.__byte) {
- int paren_bgn_pos = Bry_finder.Find_fwd(src, Byte_ascii.Paren_bgn, proto_end, lnke_end);
- paren_bgn_chk = paren_bgn_pos == Bry_finder.Not_found ? Bool_.N_byte : Bool_.Y_byte;
+ int paren_bgn_pos = Bry_find_.Find_fwd(src, Byte_ascii.Paren_bgn, proto_end, lnke_end);
+ paren_bgn_chk = paren_bgn_pos == Bry_find_.Not_found ? Bool_.N_byte : Bool_.Y_byte;
}
if (paren_bgn_chk == Bool_.Y_byte) // "(" found; do not ignore ")"
return rv;
@@ -274,7 +274,7 @@ public class Xop_lnke_wkr implements Xop_ctx_wkr {
return false; // alpha-numerical is invalid; EX: "titel:" should not generate a lnke for "tel:"
}
if (prv_byte >= Byte_ascii.Ascii_min && prv_byte <= Byte_ascii.Ascii_max) return true; // consider all other ASCII chars as true; EX: \t\n !, etc;
- prv_pos = gplx.intl.Utf8_.Get_pos0_of_char_bwd(src, prv_pos);
+ prv_pos = gplx.core.intls.Utf8_.Get_pos0_of_char_bwd(src, prv_pos);
prv_byte = src[prv_pos];
boolean prv_char_is_letter = ctx.Lang().Case_mgr().Match_any_exists(prv_byte, src, prv_pos, bgn_pos);
return !prv_char_is_letter;
@@ -283,7 +283,7 @@ public class Xop_lnke_wkr implements Xop_ctx_wkr {
// NOTE: fmt is [xowa-cmd:^"app.setup_mgr.import_wiki('');"^ ]
if (lnke_type != Xop_lnke_tkn.Lnke_typ_brack) return ctx.Lxr_make_txt_(cur_pos); // NOTE: must check for [ or else C:\xowa\ will cause it to evaluate as lnke
int proto_end_pos = cur_pos + 1; // +1 to skip past :
- int lhs_dlm_pos = Bry_finder.Find_fwd(src, Byte_ascii.Quote, proto_end_pos, src_len); if (lhs_dlm_pos == Bry_.NotFound) return ctx.Lxr_make_txt_(cur_pos);
+ int lhs_dlm_pos = Bry_find_.Find_fwd(src, Byte_ascii.Quote, proto_end_pos, src_len); if (lhs_dlm_pos == Bry_.NotFound) return ctx.Lxr_make_txt_(cur_pos);
int lnke_bgn_pos = lhs_dlm_pos + 1;
byte[] rhs_dlm_bry = Bry_quote;
if (lhs_dlm_pos - proto_end_pos > 0) {
@@ -291,9 +291,9 @@ public class Xop_lnke_wkr implements Xop_ctx_wkr {
rhs_dlm_bry = bfr.Add(Bry_quote).Add_mid(src, proto_end_pos, lhs_dlm_pos).Xto_bry_and_clear();
bfr.Mkr_rls();
}
- int rhs_dlm_pos = Bry_finder.Find_fwd(src, rhs_dlm_bry, lnke_bgn_pos, src_len); if (rhs_dlm_pos == Bry_.NotFound) return ctx.Lxr_make_txt_(cur_pos);
- int txt_bgn = Bry_finder.Find_fwd_while_space_or_tab(src, rhs_dlm_pos + rhs_dlm_bry.length, src_len); if (txt_bgn == Bry_.NotFound) return ctx.Lxr_make_txt_(cur_pos);
- int txt_end = Bry_finder.Find_fwd(src, Byte_ascii.Brack_end, txt_bgn, src_len); if (txt_end == Bry_.NotFound) return ctx.Lxr_make_txt_(cur_pos);
+ int rhs_dlm_pos = Bry_find_.Find_fwd(src, rhs_dlm_bry, lnke_bgn_pos, src_len); if (rhs_dlm_pos == Bry_.NotFound) return ctx.Lxr_make_txt_(cur_pos);
+ int txt_bgn = Bry_find_.Find_fwd_while_space_or_tab(src, rhs_dlm_pos + rhs_dlm_bry.length, src_len); if (txt_bgn == Bry_.NotFound) return ctx.Lxr_make_txt_(cur_pos);
+ int txt_end = Bry_find_.Find_fwd(src, Byte_ascii.Brack_end, txt_bgn, src_len); if (txt_end == Bry_.NotFound) return ctx.Lxr_make_txt_(cur_pos);
int end_pos = txt_end + 1; // +1 to place after ]
Xop_lnke_tkn tkn = tkn_mkr.Lnke(bgn_pos, end_pos, protocol, proto_tid, lnke_type, lnke_bgn_pos, rhs_dlm_pos); // +1 to ignore [
diff --git a/400_xowa/src/gplx/xowa/parsers/lnkes/Xop_tkn_chkr_lnke.java b/400_xowa/src/gplx/xowa/parsers/lnkes/Xop_tkn_chkr_lnke.java
index 399a2a0a3..2fdefb656 100644
--- a/400_xowa/src/gplx/xowa/parsers/lnkes/Xop_tkn_chkr_lnke.java
+++ b/400_xowa/src/gplx/xowa/parsers/lnkes/Xop_tkn_chkr_lnke.java
@@ -16,6 +16,7 @@ You should have received a copy of the GNU Affero General Public License
along with this program. If not, see .
*/
package gplx.xowa.parsers.lnkes; import gplx.*; import gplx.xowa.*; import gplx.xowa.parsers.*;
+import gplx.core.tests.*;
public class Xop_tkn_chkr_lnke extends Xop_tkn_chkr_base {
@Override public Class> TypeOf() {return Xop_lnke_tkn.class;}
@Override public byte Tkn_tid() {return Xop_tkn_itm_.Tid_lnke;}
diff --git a/400_xowa/src/gplx/xowa/parsers/lnkis/Xop_link_parser.java b/400_xowa/src/gplx/xowa/parsers/lnkis/Xop_link_parser.java
index 7466cf93e..accd12c5d 100644
--- a/400_xowa/src/gplx/xowa/parsers/lnkis/Xop_link_parser.java
+++ b/400_xowa/src/gplx/xowa/parsers/lnkis/Xop_link_parser.java
@@ -51,7 +51,7 @@ public class Xop_link_parser {
case Gfo_protocol_itm.Tid_file: // "file:///" or "File:A.png"
int proto_len = tmp_url.Protocol_bry().length;
if (proto_len + 1 < raw_len && raw[proto_len + 1] == Byte_ascii.Slash) { // next char is slash, assume xfer_itm refers to protocol; EX: file:///C/A.png
- int slash_pos = Bry_finder.Find_bwd(raw, Byte_ascii.Slash);
+ int slash_pos = Bry_find_.Find_bwd(raw, Byte_ascii.Slash);
if (slash_pos != Bry_.NotFound) // set xowa_title to file_name; TODO: call Xoa_url.build; note that this will fail sometimes when (a) xfer_itm is very long (File:ReallyLongName will be shortened to 128 chars) or (b) xfer_itm has invalid windows characters (EX:File:a"b"c.jpg)
html_xowa_ttl = Bry_.Mid(raw, slash_pos + Int_.Const_dlm_len, raw.length);
}
diff --git a/400_xowa/src/gplx/xowa/parsers/lnkis/Xop_lnki_arg_parser.java b/400_xowa/src/gplx/xowa/parsers/lnkis/Xop_lnki_arg_parser.java
index 85553ad02..96ba2ddea 100644
--- a/400_xowa/src/gplx/xowa/parsers/lnkis/Xop_lnki_arg_parser.java
+++ b/400_xowa/src/gplx/xowa/parsers/lnkis/Xop_lnki_arg_parser.java
@@ -17,7 +17,7 @@ along with this program. If not, see .
*/
package gplx.xowa.parsers.lnkis; import gplx.*; import gplx.xowa.*; import gplx.xowa.parsers.*;
import gplx.core.primitives.*; import gplx.core.btries.*;
-import gplx.xowa.langs.numbers.*;
+import gplx.xowa.langs.*; import gplx.xowa.langs.numbers.*;
public class Xop_lnki_arg_parser {
private final Btrie_fast_mgr key_trie = Btrie_fast_mgr.cs();
private final Bry_bfr int_bfr = Bry_bfr.reset_(16);
@@ -94,7 +94,7 @@ public class Xop_lnki_arg_parser {
case Key_space: break; // ignore space; EX: "100 px"
case Key_dim_px: { // 2nd px found; EX: "40pxpx"; "40px px"
int tmp_pos = size_trie.Match_pos();
- tmp_pos = Bry_finder.Find_fwd_while_space_or_tab(src, tmp_pos, itm_end); // look for next ws pos;
+ tmp_pos = Bry_find_.Find_fwd_while_space_or_tab(src, tmp_pos, itm_end); // look for next ws pos;
if (tmp_pos == itm_end) // no non-ws found; tmp_pos == itm_end; allow itm; EX: "40pxpx"; "40px px"; DATE:2014-03-01
i = itm_end;
else // non-ws found; consider as caption; EX: "20px20px"; "20pxpxpx"
diff --git a/400_xowa/src/gplx/xowa/parsers/lnkis/Xop_lnki_lxr_bgn.java b/400_xowa/src/gplx/xowa/parsers/lnkis/Xop_lnki_lxr_bgn.java
index 50186491a..f6470c35f 100644
--- a/400_xowa/src/gplx/xowa/parsers/lnkis/Xop_lnki_lxr_bgn.java
+++ b/400_xowa/src/gplx/xowa/parsers/lnkis/Xop_lnki_lxr_bgn.java
@@ -16,11 +16,13 @@ You should have received a copy of the GNU Affero General Public License
along with this program. If not, see .
*/
package gplx.xowa.parsers.lnkis; import gplx.*; import gplx.xowa.*; import gplx.xowa.parsers.*;
-import gplx.core.btries.*; import gplx.xowa.parsers.tmpls.*;
+import gplx.core.btries.*; import gplx.xowa.langs.*;
+import gplx.xowa.parsers.tmpls.*;
public class Xop_lnki_lxr_bgn implements Xop_lxr {
- public byte Lxr_tid() {return Xop_lxr_.Tid_lnki_bgn;}
+ public int Lxr_tid() {return Xop_lxr_.Tid_lnki_bgn;}
public void Init_by_wiki(Xowe_wiki wiki, Btrie_fast_mgr core_trie) {core_trie.Add(Xop_tkn_.Lnki_bgn, this);}
public void Init_by_lang(Xol_lang lang, Btrie_fast_mgr core_trie) {}
+ public void Term(Btrie_fast_mgr core_trie) {}
public int Make_tkn(Xop_ctx ctx, Xop_tkn_mkr tkn_mkr, Xop_root_tkn root, byte[] src, int src_len, int bgn_pos, int cur_pos) {
Xop_tkn_itm prv_tkn = ctx.Stack_get_last();
if (prv_tkn != null
diff --git a/400_xowa/src/gplx/xowa/parsers/lnkis/Xop_lnki_lxr_end.java b/400_xowa/src/gplx/xowa/parsers/lnkis/Xop_lnki_lxr_end.java
index 641c169fd..321329c41 100644
--- a/400_xowa/src/gplx/xowa/parsers/lnkis/Xop_lnki_lxr_end.java
+++ b/400_xowa/src/gplx/xowa/parsers/lnkis/Xop_lnki_lxr_end.java
@@ -16,11 +16,13 @@ You should have received a copy of the GNU Affero General Public License
along with this program. If not, see .
*/
package gplx.xowa.parsers.lnkis; import gplx.*; import gplx.xowa.*; import gplx.xowa.parsers.*;
-import gplx.core.btries.*; import gplx.xowa.parsers.tmpls.*;
+import gplx.core.btries.*; import gplx.xowa.langs.*;
+import gplx.xowa.parsers.tmpls.*;
public class Xop_lnki_lxr_end implements Xop_lxr {
- public byte Lxr_tid() {return Xop_lxr_.Tid_lnki_end;}
+ public int Lxr_tid() {return Xop_lxr_.Tid_lnki_end;}
public void Init_by_wiki(Xowe_wiki wiki, Btrie_fast_mgr core_trie) {core_trie.Add(Xop_tkn_.Lnki_end, this);}
public void Init_by_lang(Xol_lang lang, Btrie_fast_mgr core_trie) {}
+ public void Term(Btrie_fast_mgr core_trie) {}
public int Make_tkn(Xop_ctx ctx, Xop_tkn_mkr tkn_mkr, Xop_root_tkn root, byte[] src, int src_len, int bgn_pos, int cur_pos) {return ctx.Lnki().Make_tkn(ctx, tkn_mkr, root, src, src_len, bgn_pos, cur_pos);}
public static final Xop_lnki_lxr_end _ = new Xop_lnki_lxr_end();
}
diff --git a/400_xowa/src/gplx/xowa/parsers/lnkis/Xop_lnki_tkn.java b/400_xowa/src/gplx/xowa/parsers/lnkis/Xop_lnki_tkn.java
index bb83bd5c5..3475fb9be 100644
--- a/400_xowa/src/gplx/xowa/parsers/lnkis/Xop_lnki_tkn.java
+++ b/400_xowa/src/gplx/xowa/parsers/lnkis/Xop_lnki_tkn.java
@@ -17,6 +17,7 @@ along with this program. If not, see .
*/
package gplx.xowa.parsers.lnkis; import gplx.*; import gplx.xowa.*; import gplx.xowa.parsers.*;
import gplx.xowa.files.*; import gplx.xowa.html.*; import gplx.xowa.html.lnkis.*; import gplx.xowa.xtns.pfuncs.ttls.*;
+import gplx.xowa.nss.*;
import gplx.xowa.parsers.tmpls.*;
public class Xop_lnki_tkn extends Xop_tkn_itm_base {
@Override public byte Tkn_tid() {return tkn_tid;} private byte tkn_tid = Xop_tkn_itm_.Tid_lnki;
diff --git a/400_xowa/src/gplx/xowa/parsers/lnkis/Xop_lnki_tkn_chkr.java b/400_xowa/src/gplx/xowa/parsers/lnkis/Xop_lnki_tkn_chkr.java
index bd8de6f5b..a7b35e8f4 100644
--- a/400_xowa/src/gplx/xowa/parsers/lnkis/Xop_lnki_tkn_chkr.java
+++ b/400_xowa/src/gplx/xowa/parsers/lnkis/Xop_lnki_tkn_chkr.java
@@ -16,7 +16,7 @@ You should have received a copy of the GNU Affero General Public License
along with this program. If not, see .
*/
package gplx.xowa.parsers.lnkis; import gplx.*; import gplx.xowa.*; import gplx.xowa.parsers.*;
-import gplx.xowa.files.*;
+import gplx.core.tests.*; import gplx.xowa.files.*;
public class Xop_lnki_tkn_chkr extends Xop_tkn_chkr_base {
@Override public Class> TypeOf() {return Xop_lnki_tkn.class;}
@Override public byte Tkn_tid() {return Xop_tkn_itm_.Tid_lnki;}
diff --git a/400_xowa/src/gplx/xowa/parsers/lnkis/Xop_lnki_wkr.java b/400_xowa/src/gplx/xowa/parsers/lnkis/Xop_lnki_wkr.java
index b8e84d279..7bec482bd 100644
--- a/400_xowa/src/gplx/xowa/parsers/lnkis/Xop_lnki_wkr.java
+++ b/400_xowa/src/gplx/xowa/parsers/lnkis/Xop_lnki_wkr.java
@@ -16,7 +16,8 @@ You should have received a copy of the GNU Affero General Public License
along with this program. If not, see .
*/
package gplx.xowa.parsers.lnkis; import gplx.*; import gplx.xowa.*; import gplx.xowa.parsers.*;
-import gplx.core.btries.*;
+import gplx.core.btries.*; import gplx.core.primitives.*;
+import gplx.xowa.nss.*;
import gplx.xowa.wikis.*; import gplx.xowa.parsers.lnkis.redlinks.*; import gplx.xowa.xtns.pfuncs.ttls.*; import gplx.xowa.xtns.relatedSites.*;
import gplx.xowa.parsers.tmpls.*; import gplx.xowa.parsers.miscs.*;
public class Xop_lnki_wkr implements Xop_ctx_wkr, Xop_arg_wkr {
@@ -153,7 +154,7 @@ public class Xop_lnki_wkr implements Xop_ctx_wkr, Xop_arg_wkr {
case Xop_lnki_arg_parser.Tid_upright:
if (arg.KeyTkn_exists()) {
int val_tkn_bgn = arg.Val_tkn().Src_bgn(), val_tkn_end = arg.Val_tkn().Src_end();
- val_tkn_bgn = Bry_finder.Find_fwd_while_space_or_tab(src, val_tkn_bgn, val_tkn_end); // trim ws at bgn; needed for next step
+ val_tkn_bgn = Bry_find_.Find_fwd_while_space_or_tab(src, val_tkn_bgn, val_tkn_end); // trim ws at bgn; needed for next step
if (val_tkn_end - val_tkn_bgn > 19) val_tkn_end = val_tkn_bgn + 19; // HACK: limit upright tkn to 19 digits; 20 or more will overflow long; WHEN: rewrite number_parser to handle doubles; PAGE:de.w:Feuerland DATE:2015-02-03
number_parser.Parse(src, val_tkn_bgn, val_tkn_end);
if (number_parser.Has_err())
diff --git a/400_xowa/src/gplx/xowa/parsers/lnkis/Xop_lnki_wkr_.java b/400_xowa/src/gplx/xowa/parsers/lnkis/Xop_lnki_wkr_.java
index eae7644d1..fb2c8468b 100644
--- a/400_xowa/src/gplx/xowa/parsers/lnkis/Xop_lnki_wkr_.java
+++ b/400_xowa/src/gplx/xowa/parsers/lnkis/Xop_lnki_wkr_.java
@@ -17,6 +17,8 @@ along with this program. If not, see .
*/
package gplx.xowa.parsers.lnkis; import gplx.*; import gplx.xowa.*; import gplx.xowa.parsers.*;
import gplx.core.primitives.*; import gplx.core.btries.*;
+import gplx.xowa.langs.*;
+import gplx.xowa.nss.*;
import gplx.xowa.wikis.*; import gplx.xowa.xtns.pfuncs.ttls.*; import gplx.xowa.xtns.relatedSites.*;
import gplx.xowa.parsers.tmpls.*; import gplx.xowa.parsers.lnkis.redlinks.*;
public class Xop_lnki_wkr_ {
@@ -33,8 +35,8 @@ public class Xop_lnki_wkr_ {
}
public static boolean Parse_ttl(Xop_ctx ctx, byte[] src, Xop_lnki_tkn lnki, int pipe_pos) {
int ttl_bgn = lnki.Src_bgn() + Xop_tkn_.Lnki_bgn_len;
- ttl_bgn = Bry_finder.Find_fwd_while(src, ttl_bgn, pipe_pos, Byte_ascii.Space); // remove \s from bgn
- int ttl_end = Bry_finder.Find_bwd_while(src, pipe_pos, ttl_bgn, Byte_ascii.Space); // remove \s from end
+ ttl_bgn = Bry_find_.Find_fwd_while(src, ttl_bgn, pipe_pos, Byte_ascii.Space); // remove \s from bgn
+ int ttl_end = Bry_find_.Find_bwd_while(src, pipe_pos, ttl_bgn, Byte_ascii.Space); // remove \s from end
++ttl_end; // +1 to place after non-ws; EX: [[ a ]]; ttl_end should go from 3 -> 4
return Parse_ttl(ctx, src, lnki, ttl_bgn, ttl_end);
}
diff --git a/400_xowa/src/gplx/xowa/parsers/lnkis/Xop_lnki_wkr__basic_tst.java b/400_xowa/src/gplx/xowa/parsers/lnkis/Xop_lnki_wkr__basic_tst.java
index 7de62d1f7..61c532553 100644
--- a/400_xowa/src/gplx/xowa/parsers/lnkis/Xop_lnki_wkr__basic_tst.java
+++ b/400_xowa/src/gplx/xowa/parsers/lnkis/Xop_lnki_wkr__basic_tst.java
@@ -17,7 +17,9 @@ along with this program. If not, see .
*/
package gplx.xowa.parsers.lnkis; import gplx.*; import gplx.xowa.*; import gplx.xowa.parsers.*;
import org.junit.*;
-import gplx.xowa.langs.cases.*; import gplx.xowa.parsers.paras.*; import gplx.xowa.wikis.ttls.*;
+import gplx.xowa.langs.*; import gplx.xowa.langs.cases.*;
+import gplx.xowa.nss.*;
+import gplx.xowa.parsers.paras.*; import gplx.xowa.wikis.ttls.*;
public class Xop_lnki_wkr__basic_tst {
@Before public void init() {fxt.Reset(); fxt.Init_para_n_();} private Xop_fxt fxt = new Xop_fxt();
@Test public void Basic() {
diff --git a/400_xowa/src/gplx/xowa/parsers/lnkis/Xop_lnki_wkr__subpage_tst.java b/400_xowa/src/gplx/xowa/parsers/lnkis/Xop_lnki_wkr__subpage_tst.java
index 14af291a0..f0ef72c0f 100644
--- a/400_xowa/src/gplx/xowa/parsers/lnkis/Xop_lnki_wkr__subpage_tst.java
+++ b/400_xowa/src/gplx/xowa/parsers/lnkis/Xop_lnki_wkr__subpage_tst.java
@@ -16,7 +16,7 @@ You should have received a copy of the GNU Affero General Public License
along with this program. If not, see .
*/
package gplx.xowa.parsers.lnkis; import gplx.*; import gplx.xowa.*; import gplx.xowa.parsers.*;
-import org.junit.*;
+import org.junit.*; import gplx.xowa.nss.*;
public class Xop_lnki_wkr__subpage_tst {
@Before public void init() {fxt.Reset(); fxt.Init_para_n_();} private Xop_fxt fxt = new Xop_fxt();
@Test public void Disabled() { // PURPOSE: slash being interpreted as subpage; PAGE:en.w:[[/dev/null]]
diff --git a/400_xowa/src/gplx/xowa/parsers/lnkis/Xop_lnki_wkr__uncommon_tst.java b/400_xowa/src/gplx/xowa/parsers/lnkis/Xop_lnki_wkr__uncommon_tst.java
index f43ae77ec..2b91e3220 100644
--- a/400_xowa/src/gplx/xowa/parsers/lnkis/Xop_lnki_wkr__uncommon_tst.java
+++ b/400_xowa/src/gplx/xowa/parsers/lnkis/Xop_lnki_wkr__uncommon_tst.java
@@ -17,7 +17,7 @@ along with this program. If not, see .
*/
package gplx.xowa.parsers.lnkis; import gplx.*; import gplx.xowa.*; import gplx.xowa.parsers.*;
import org.junit.*;
-import gplx.xowa.langs.cases.*;
+import gplx.xowa.langs.*; import gplx.xowa.langs.cases.*;
public class Xop_lnki_wkr__uncommon_tst {
@Before public void init() {fxt.Reset(); fxt.Init_para_n_();} private Xop_fxt fxt = new Xop_fxt();
@Test public void Double_bracket() { // PURPOSE: handle [[[[A]]]] constructions; PAGE:ru.w:Меркатале_ин_Валь_ди_Песа; DATE:2014-02-04
diff --git a/400_xowa/src/gplx/xowa/parsers/lnkis/redlinks/Xog_redlink_mgr.java b/400_xowa/src/gplx/xowa/parsers/lnkis/redlinks/Xog_redlink_mgr.java
index f5053bb8c..39a25dd29 100644
--- a/400_xowa/src/gplx/xowa/parsers/lnkis/redlinks/Xog_redlink_mgr.java
+++ b/400_xowa/src/gplx/xowa/parsers/lnkis/redlinks/Xog_redlink_mgr.java
@@ -81,12 +81,12 @@ public class Xog_redlink_mgr implements GfoInvkAble {
if (!db_page.Exists()) {
String lnki_id = Xopg_redlink_lnki_list.Lnki_id_prefix + Int_.Xto_str(lnki.Html_uid());
if (variants_enabled) {
- Xowd_page_itm vnt_page = vnt_mgr.Convert_ttl(wiki, lnki.Ttl());
+ Xowd_page_itm vnt_page = vnt_mgr.Convert_mgr().Convert_ttl(wiki, lnki.Ttl());
if (vnt_page != null) {
Xoa_ttl vnt_ttl = Xoa_ttl.parse(wiki, lnki.Ttl().Ns().Id(), vnt_page.Ttl_page_db());
html_itm.Html_atr_set(lnki_id, "href", "/wiki/" + String_.new_u8(vnt_ttl.Full_url()));
- if (!String_.Eq(vnt_mgr.Html_style(), ""))
- html_itm.Html_atr_set(lnki_id, "style", vnt_mgr.Html_style());
+ if (!String_.Eq(vnt_mgr.Html__lnki_style(), ""))
+ html_itm.Html_atr_set(lnki_id, "style", vnt_mgr.Html__lnki_style());
continue;
}
}
diff --git a/400_xowa/src/gplx/xowa/parsers/lnkis/redlinks/Xopg_redlink_lnki_list.java b/400_xowa/src/gplx/xowa/parsers/lnkis/redlinks/Xopg_redlink_lnki_list.java
index abbba936e..d7b5d62eb 100644
--- a/400_xowa/src/gplx/xowa/parsers/lnkis/redlinks/Xopg_redlink_lnki_list.java
+++ b/400_xowa/src/gplx/xowa/parsers/lnkis/redlinks/Xopg_redlink_lnki_list.java
@@ -16,6 +16,7 @@ You should have received a copy of the GNU Affero General Public License
along with this program. If not, see .
*/
package gplx.xowa.parsers.lnkis.redlinks; import gplx.*; import gplx.xowa.*; import gplx.xowa.parsers.*; import gplx.xowa.parsers.lnkis.*;
+import gplx.xowa.nss.*;
import gplx.xowa.wikis.data.tbls.*; import gplx.xowa.users.*;
public class Xopg_redlink_lnki_list {
private int lnki_idx = gplx.xowa.html.lnkis.Xoh_lnki_wtr.Lnki_id_min; // NOTE: default to 1, not 0, b/c 0 is ignored by wtr; DATE:2014-10-09
diff --git a/400_xowa/src/gplx/xowa/parsers/miscs/Xop_comm_lxr.java b/400_xowa/src/gplx/xowa/parsers/miscs/Xop_comm_lxr.java
index 273a908cc..13f576025 100644
--- a/400_xowa/src/gplx/xowa/parsers/miscs/Xop_comm_lxr.java
+++ b/400_xowa/src/gplx/xowa/parsers/miscs/Xop_comm_lxr.java
@@ -16,16 +16,18 @@ You should have received a copy of the GNU Affero General Public License
along with this program. If not, see .
*/
package gplx.xowa.parsers.miscs; import gplx.*; import gplx.xowa.*; import gplx.xowa.parsers.*;
-import gplx.core.btries.*; import gplx.xowa.parsers.paras.*;
+import gplx.core.btries.*; import gplx.xowa.langs.*;
+import gplx.xowa.parsers.paras.*;
public class Xop_comm_lxr implements Xop_lxr {
- public byte Lxr_tid() {return Xop_lxr_.Tid_comment;}
+ public int Lxr_tid() {return Xop_lxr_.Tid_comment;}
public void Init_by_wiki(Xowe_wiki wiki, Btrie_fast_mgr core_trie) {core_trie.Add(Bgn_ary, this);}
public void Init_by_lang(Xol_lang lang, Btrie_fast_mgr core_trie) {}
+ public void Term(Btrie_fast_mgr core_trie) {}
public int Make_tkn(Xop_ctx ctx, Xop_tkn_mkr tkn_mkr, Xop_root_tkn root, byte[] src, int src_len, int bgn_pos, int cur_pos) {
int lhs_end = cur_pos;
- int end_pos = Bry_finder.Find_fwd(src, End_ary, cur_pos, src_len); // search for "-->" // NOTE: do not reuse cur_pos, else cur_pos may become -1 and fatal error in ctx.Msg_log() below; DATE:2014-06-08
+ int end_pos = Bry_find_.Find_fwd(src, End_ary, cur_pos, src_len); // search for "-->" // NOTE: do not reuse cur_pos, else cur_pos may become -1 and fatal error in ctx.Msg_log() below; DATE:2014-06-08
int rhs_bgn = end_pos;
- if (end_pos == Bry_finder.Not_found) { // "-->" not found
+ if (end_pos == Bry_find_.Not_found) { // "-->" not found
ctx.Msg_log().Add_itm_none(Xop_comm_log.Eos, src, bgn_pos, cur_pos);
cur_pos = src_len; // gobble up rest of content
}
diff --git a/400_xowa/src/gplx/xowa/parsers/miscs/Xop_cr_lxr.java b/400_xowa/src/gplx/xowa/parsers/miscs/Xop_cr_lxr.java
index 2b326c86d..476e7f6e4 100644
--- a/400_xowa/src/gplx/xowa/parsers/miscs/Xop_cr_lxr.java
+++ b/400_xowa/src/gplx/xowa/parsers/miscs/Xop_cr_lxr.java
@@ -16,13 +16,12 @@ You should have received a copy of the GNU Affero General Public License
along with this program. If not, see .
*/
package gplx.xowa.parsers.miscs; import gplx.*; import gplx.xowa.*; import gplx.xowa.parsers.*;
-import gplx.core.btries.*;
+import gplx.core.btries.*; import gplx.xowa.langs.*;
public class Xop_cr_lxr implements Xop_lxr {
- public byte Lxr_tid() {return Xop_lxr_.Tid_cr;}
- public void Init_by_wiki(Xowe_wiki wiki, Btrie_fast_mgr core_trie) {
- core_trie.Add(Byte_ascii.Cr, this);
- }
+ public int Lxr_tid() {return Xop_lxr_.Tid_cr;}
+ public void Init_by_wiki(Xowe_wiki wiki, Btrie_fast_mgr core_trie) {core_trie.Add(Byte_ascii.Cr, this);}
public void Init_by_lang(Xol_lang lang, Btrie_fast_mgr core_trie) {}
+ public void Term(Btrie_fast_mgr core_trie) {}
public int Make_tkn(Xop_ctx ctx, Xop_tkn_mkr tkn_mkr, Xop_root_tkn root, byte[] src, int src_len, int bgn_pos, int cur_pos) {
return cur_pos; //ignore
}
diff --git a/400_xowa/src/gplx/xowa/parsers/miscs/Xop_eq_lxr.java b/400_xowa/src/gplx/xowa/parsers/miscs/Xop_eq_lxr.java
index b67039208..aea4a6c88 100644
--- a/400_xowa/src/gplx/xowa/parsers/miscs/Xop_eq_lxr.java
+++ b/400_xowa/src/gplx/xowa/parsers/miscs/Xop_eq_lxr.java
@@ -16,14 +16,16 @@ You should have received a copy of the GNU Affero General Public License
along with this program. If not, see .
*/
package gplx.xowa.parsers.miscs; import gplx.*; import gplx.xowa.*; import gplx.xowa.parsers.*;
-import gplx.core.btries.*; import gplx.xowa.parsers.paras.*; import gplx.xowa.parsers.tmpls.*;
+import gplx.core.btries.*; import gplx.xowa.langs.*;
+import gplx.xowa.parsers.paras.*; import gplx.xowa.parsers.tmpls.*;
public class Xop_eq_lxr implements Xop_lxr {
public Xop_eq_lxr(boolean tmpl_mode) {this.tmpl_mode = tmpl_mode;} boolean tmpl_mode;
- public byte Lxr_tid() {return Xop_lxr_.Tid_eq;}
+ public int Lxr_tid() {return Xop_lxr_.Tid_eq;}
public void Init_by_wiki(Xowe_wiki wiki, Btrie_fast_mgr core_trie) {core_trie.Add(Byte_ascii.Eq, this);}
public void Init_by_lang(Xol_lang lang, Btrie_fast_mgr core_trie) {}
+ public void Term(Btrie_fast_mgr core_trie) {}
public int Make_tkn(Xop_ctx ctx, Xop_tkn_mkr tkn_mkr, Xop_root_tkn root, byte[] src, int src_len, int bgn_pos, int cur_pos) {
- cur_pos = Bry_finder.Find_fwd_while(src, cur_pos, src_len, Byte_ascii.Eq); // gobble up eq; "==" should produce 1 eq_tkn with len of 2, not 2 eq_tkn with len of 1; DATE:2014-04-17
+ cur_pos = Bry_find_.Find_fwd_while(src, cur_pos, src_len, Byte_ascii.Eq); // gobble up eq; "==" should produce 1 eq_tkn with len of 2, not 2 eq_tkn with len of 1; DATE:2014-04-17
int eq_len = cur_pos - bgn_pos;
boolean hdr_like = false;
if (tmpl_mode) {
@@ -34,7 +36,7 @@ public class Xop_eq_lxr implements Xop_lxr {
if (prv_pos > -1 && src[prv_pos] == Byte_ascii.Nl) // is prv char \n; EX: "\n==="
hdr_like = true;
else {
- int eol_pos = Bry_finder.Find_fwd_while_space_or_tab(src, cur_pos, src_len); // skip trailing ws; EX: "== \n"; PAGE:nl.q:Geert_Wilders; DATE:2014-06-05
+ int eol_pos = Bry_find_.Find_fwd_while_space_or_tab(src, cur_pos, src_len); // skip trailing ws; EX: "== \n"; PAGE:nl.q:Geert_Wilders; DATE:2014-06-05
if ( eol_pos == src_len // eos
|| src[eol_pos] == Byte_ascii.Nl // cur_pos is \n; EX: "===\n"
) {
@@ -55,15 +57,15 @@ public class Xop_eq_lxr implements Xop_lxr {
ctx.Subs_add(root, tkn_mkr.Eq(bgn_pos, cur_pos));
return cur_pos;
}
- int ws_end = Bry_finder.Find_fwd_while_space_or_tab(src, cur_pos, src_len);
+ int ws_end = Bry_find_.Find_fwd_while_space_or_tab(src, cur_pos, src_len);
hdr_like = ws_end == src_len || src[ws_end] == Byte_ascii.Nl; // hdr_like if next char \n or eos
if (!hdr_like) {
int ctg_end = Xop_nl_lxr.Scan_fwd_for_ctg(ctx, src, cur_pos, src_len); // check if ==[[Category:A]]; DATE:2014-04-17
if ( ctg_end != Bry_.NotFound) { // [[Category: found
- ctg_end = Bry_finder.Find_fwd(src, Xop_tkn_.Lnki_end, ctg_end, src_len);
+ ctg_end = Bry_find_.Find_fwd(src, Xop_tkn_.Lnki_end, ctg_end, src_len);
if (ctg_end != Bry_.NotFound) { // ]] found; note that this should do more validation; EX: [[Category:]] should not be valid; DATE:2014-04-17
ctg_end += Xop_tkn_.Lnki_end_len;
- ctg_end = Bry_finder.Find_fwd_while_space_or_tab(src, ctg_end, src_len);
+ ctg_end = Bry_find_.Find_fwd_while_space_or_tab(src, ctg_end, src_len);
if (ctg_end == src_len || src[ctg_end] == Byte_ascii.Nl) // hdr_like if ]]\n after [[Category:A]]
hdr_like = true;
}
diff --git a/400_xowa/src/gplx/xowa/parsers/miscs/Xop_hr_lxr.java b/400_xowa/src/gplx/xowa/parsers/miscs/Xop_hr_lxr.java
index ec7db63c1..313e81c3e 100644
--- a/400_xowa/src/gplx/xowa/parsers/miscs/Xop_hr_lxr.java
+++ b/400_xowa/src/gplx/xowa/parsers/miscs/Xop_hr_lxr.java
@@ -16,12 +16,13 @@ You should have received a copy of the GNU Affero General Public License
along with this program. If not, see .
*/
package gplx.xowa.parsers.miscs; import gplx.*; import gplx.xowa.*; import gplx.xowa.parsers.*;
-import gplx.core.btries.*;
+import gplx.core.btries.*; import gplx.xowa.langs.*;
import gplx.xowa.parsers.xndes.*;
-public class Xop_hr_lxr implements Xop_lxr {
- public byte Lxr_tid() {return Xop_lxr_.Tid_hr;}
+public class Xop_hr_lxr implements Xop_lxr {
+ public int Lxr_tid() {return Xop_lxr_.Tid_hr;}
public void Init_by_wiki(Xowe_wiki wiki, Btrie_fast_mgr parse_trie) {parse_trie.Add(Hook_ary, this);} static final byte[] Hook_ary = new byte[] {Byte_ascii.Nl, Byte_ascii.Dash, Byte_ascii.Dash, Byte_ascii.Dash, Byte_ascii.Dash};
public void Init_by_lang(Xol_lang lang, Btrie_fast_mgr core_trie) {}
+ public void Term(Btrie_fast_mgr core_trie) {}
public int Make_tkn(Xop_ctx ctx, Xop_tkn_mkr tkn_mkr, Xop_root_tkn root, byte[] src, int src_len, int bgn_pos, int cur_pos) {
int nl_adj = -1; // -1 to ignore nl at bgn for hr_len
boolean bos = bgn_pos == Xop_parser_.Doc_bgn_bos;
@@ -31,7 +32,7 @@ public class Xop_hr_lxr implements Xop_lxr {
}
ctx.Apos().EndFrame(ctx, root, src, bgn_pos, false);
ctx.CloseOpenItms(ctx, tkn_mkr, root, src, src_len, bgn_pos, cur_pos); // close open items
- cur_pos = Bry_finder.Find_fwd_while(src, cur_pos, src_len, Hook_byt); // gobble consecutive dashes
+ cur_pos = Bry_find_.Find_fwd_while(src, cur_pos, src_len, Hook_byt); // gobble consecutive dashes
if (!bos)
ctx.Para().Process_nl(ctx, root, src, bgn_pos, bgn_pos); // simulate \n in front of ----
ctx.Para().Process_block__bgn_y__end_n(Xop_xnde_tag_.Tag_hr); // para=n; block=y
diff --git a/400_xowa/src/gplx/xowa/parsers/miscs/Xop_ignore_tkn_chkr.java b/400_xowa/src/gplx/xowa/parsers/miscs/Xop_ignore_tkn_chkr.java
index afb1d10ee..92ad7dd66 100644
--- a/400_xowa/src/gplx/xowa/parsers/miscs/Xop_ignore_tkn_chkr.java
+++ b/400_xowa/src/gplx/xowa/parsers/miscs/Xop_ignore_tkn_chkr.java
@@ -16,6 +16,7 @@ You should have received a copy of the GNU Affero General Public License
along with this program. If not, see .
*/
package gplx.xowa.parsers.miscs; import gplx.*; import gplx.xowa.*; import gplx.xowa.parsers.*;
+import gplx.core.tests.*;
public class Xop_ignore_tkn_chkr extends Xop_tkn_chkr_base {
@Override public Class> TypeOf() {return Xop_ignore_tkn.class;}
@Override public byte Tkn_tid() {return Xop_tkn_itm_.Tid_ignore;}
diff --git a/400_xowa/src/gplx/xowa/parsers/miscs/Xop_macro_lxr.java b/400_xowa/src/gplx/xowa/parsers/miscs/Xop_macro_lxr.java
new file mode 100644
index 000000000..9b59da883
--- /dev/null
+++ b/400_xowa/src/gplx/xowa/parsers/miscs/Xop_macro_lxr.java
@@ -0,0 +1,35 @@
+/*
+XOWA: the XOWA Offline Wiki Application
+Copyright (C) 2012 gnosygnu@gmail.com
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU Affero General Public License as
+published by the Free Software Foundation, either version 3 of the
+License, or (at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU Affero General Public License for more details.
+
+You should have received a copy of the GNU Affero General Public License
+along with this program. If not, see .
+*/
+package gplx.xowa.parsers.miscs; import gplx.*; import gplx.xowa.*; import gplx.xowa.parsers.*;
+import gplx.core.btries.*; import gplx.xowa.langs.*;
+public class Xop_macro_lxr implements Xop_lxr {
+ public Xop_macro_lxr() {}
+ public int Lxr_tid() {return Xop_lxr_.Tid_macro;}
+ public void Init_by_wiki(Xowe_wiki wiki, Btrie_fast_mgr core_trie) {core_trie.Add(Byte_ascii.Tab, this); core_trie.Add(Xop_tab_tkn.Bry_tab_ent, this);}
+ public void Init_by_lang(Xol_lang lang, Btrie_fast_mgr core_trie) {}
+ public void Term(Btrie_fast_mgr core_trie) {}
+ public int Make_tkn(Xop_ctx ctx, Xop_tkn_mkr tkn_mkr, Xop_root_tkn root, byte[] src, int src_len, int bgn_pos, int cur_pos) {
+ cur_pos = Bry_find_.Find_fwd_while(src, cur_pos, src_len, Byte_ascii.Tab);
+ src[bgn_pos] = Byte_ascii.Tab; // HACK: SEE:NOTE_1:tabs
+ for (int i = bgn_pos + 1; i < cur_pos; i++)
+ src[i] = Byte_ascii.Space;
+ ctx.Subs_add(root, tkn_mkr.Tab(bgn_pos, cur_pos));
+ return cur_pos;
+ }
+ public static final Xop_tab_lxr _ = new Xop_tab_lxr();
+}
diff --git a/400_xowa/src/gplx/xowa/parsers/miscs/Xop_pipe_lxr.java b/400_xowa/src/gplx/xowa/parsers/miscs/Xop_pipe_lxr.java
index 7202ff484..9e2ed34b2 100644
--- a/400_xowa/src/gplx/xowa/parsers/miscs/Xop_pipe_lxr.java
+++ b/400_xowa/src/gplx/xowa/parsers/miscs/Xop_pipe_lxr.java
@@ -16,11 +16,13 @@ You should have received a copy of the GNU Affero General Public License
along with this program. If not, see .
*/
package gplx.xowa.parsers.miscs; import gplx.*; import gplx.xowa.*; import gplx.xowa.parsers.*;
-import gplx.core.btries.*; import gplx.xowa.parsers.tblws.*; import gplx.xowa.parsers.lnkis.*;
+import gplx.core.btries.*; import gplx.xowa.langs.*;
+import gplx.xowa.parsers.tblws.*; import gplx.xowa.parsers.lnkis.*; import gplx.xowa.parsers.vnts.*;
public class Xop_pipe_lxr implements Xop_lxr {
- public byte Lxr_tid() {return Xop_lxr_.Tid_pipe;}
+ public int Lxr_tid() {return Xop_lxr_.Tid_pipe;}
public void Init_by_wiki(Xowe_wiki wiki, Btrie_fast_mgr core_trie) {core_trie.Add(Byte_ascii.Pipe, this);}
public void Init_by_lang(Xol_lang lang, Btrie_fast_mgr core_trie) {}
+ public void Term(Btrie_fast_mgr core_trie) {}
public int Make_tkn(Xop_ctx ctx, Xop_tkn_mkr tkn_mkr, Xop_root_tkn root, byte[] src, int src_len, int bgn_pos, int cur_pos) {
int cur_stack_tid = ctx.Cur_tkn_tid(), rv = -1;
switch (cur_stack_tid) {
@@ -61,7 +63,7 @@ public class Xop_pipe_lxr implements Xop_lxr {
return cur_pos;
}
case Xop_tkn_itm_.Tid_vnt:
- gplx.xowa.langs.vnts.Xop_vnt_tkn vnt_tkn = (gplx.xowa.langs.vnts.Xop_vnt_tkn)ctx.Stack_get_typ(Xop_tkn_itm_.Tid_vnt);
+ Xop_vnt_tkn vnt_tkn = (Xop_vnt_tkn)ctx.Stack_get_typ(Xop_tkn_itm_.Tid_vnt);
vnt_tkn.Vnt_pipe_tkn_count_add_();
ctx.Subs_add(root, tkn_mkr.Pipe(bgn_pos, cur_pos));
return cur_pos;
diff --git a/400_xowa/src/gplx/xowa/parsers/miscs/Xop_space_lxr.java b/400_xowa/src/gplx/xowa/parsers/miscs/Xop_space_lxr.java
index d3792fd7e..a3aa9700b 100644
--- a/400_xowa/src/gplx/xowa/parsers/miscs/Xop_space_lxr.java
+++ b/400_xowa/src/gplx/xowa/parsers/miscs/Xop_space_lxr.java
@@ -16,13 +16,14 @@ You should have received a copy of the GNU Affero General Public License
along with this program. If not, see .
*/
package gplx.xowa.parsers.miscs; import gplx.*; import gplx.xowa.*; import gplx.xowa.parsers.*;
-import gplx.core.btries.*;
+import gplx.core.btries.*; import gplx.xowa.langs.*;
public class Xop_space_lxr implements Xop_lxr {
- public byte Lxr_tid() {return Xop_lxr_.Tid_space;}
+ public int Lxr_tid() {return Xop_lxr_.Tid_space;}
public void Init_by_wiki(Xowe_wiki wiki, Btrie_fast_mgr core_trie) {core_trie.Add(Byte_ascii.Space, this);}
public void Init_by_lang(Xol_lang lang, Btrie_fast_mgr core_trie) {}
+ public void Term(Btrie_fast_mgr core_trie) {}
public int Make_tkn(Xop_ctx ctx, Xop_tkn_mkr tkn_mkr, Xop_root_tkn root, byte[] src, int src_len, int bgn_pos, int cur_pos) {
- cur_pos = Bry_finder.Find_fwd_while(src, cur_pos, src_len, Byte_ascii.Space);
+ cur_pos = Bry_find_.Find_fwd_while(src, cur_pos, src_len, Byte_ascii.Space);
ctx.Subs_add(root, tkn_mkr.Space(root, bgn_pos, cur_pos));
return cur_pos;
}
diff --git a/400_xowa/src/gplx/xowa/parsers/miscs/Xop_tab_lxr.java b/400_xowa/src/gplx/xowa/parsers/miscs/Xop_tab_lxr.java
index 0d004958d..b0ca3f0bd 100644
--- a/400_xowa/src/gplx/xowa/parsers/miscs/Xop_tab_lxr.java
+++ b/400_xowa/src/gplx/xowa/parsers/miscs/Xop_tab_lxr.java
@@ -16,16 +16,14 @@ You should have received a copy of the GNU Affero General Public License
along with this program. If not, see .
*/
package gplx.xowa.parsers.miscs; import gplx.*; import gplx.xowa.*; import gplx.xowa.parsers.*;
-import gplx.core.btries.*;
+import gplx.core.btries.*; import gplx.xowa.langs.*;
public class Xop_tab_lxr implements Xop_lxr {
- public byte Lxr_tid() {return Xop_lxr_.Tid_tab;}
- public void Init_by_wiki(Xowe_wiki wiki, Btrie_fast_mgr core_trie) {
- core_trie.Add(Byte_ascii.Tab, this);
- core_trie.Add(Xop_tab_tkn.Bry_tab_ent, this);
- }
+ public int Lxr_tid() {return Xop_lxr_.Tid_tab;}
+ public void Init_by_wiki(Xowe_wiki wiki, Btrie_fast_mgr core_trie) {core_trie.Add(Byte_ascii.Tab, this); core_trie.Add(Xop_tab_tkn.Bry_tab_ent, this);}
public void Init_by_lang(Xol_lang lang, Btrie_fast_mgr core_trie) {}
+ public void Term(Btrie_fast_mgr core_trie) {}
public int Make_tkn(Xop_ctx ctx, Xop_tkn_mkr tkn_mkr, Xop_root_tkn root, byte[] src, int src_len, int bgn_pos, int cur_pos) {
- cur_pos = Bry_finder.Find_fwd_while(src, cur_pos, src_len, Byte_ascii.Tab);
+ cur_pos = Bry_find_.Find_fwd_while(src, cur_pos, src_len, Byte_ascii.Tab);
src[bgn_pos] = Byte_ascii.Tab; // HACK: SEE:NOTE_1:tabs
for (int i = bgn_pos + 1; i < cur_pos; i++)
src[i] = Byte_ascii.Space;
diff --git a/400_xowa/src/gplx/xowa/parsers/miscs/Xop_tkn_chkr_hr.java b/400_xowa/src/gplx/xowa/parsers/miscs/Xop_tkn_chkr_hr.java
index 0f6dfeb6f..37e4b4c8f 100644
--- a/400_xowa/src/gplx/xowa/parsers/miscs/Xop_tkn_chkr_hr.java
+++ b/400_xowa/src/gplx/xowa/parsers/miscs/Xop_tkn_chkr_hr.java
@@ -16,6 +16,7 @@ You should have received a copy of the GNU Affero General Public License
along with this program. If not, see .
*/
package gplx.xowa.parsers.miscs; import gplx.*; import gplx.xowa.*; import gplx.xowa.parsers.*;
+import gplx.core.tests.*;
public class Xop_tkn_chkr_hr extends Xop_tkn_chkr_base {
@Override public Class> TypeOf() {return Xop_hr_tkn.class;}
@Override public byte Tkn_tid() {return Xop_tkn_itm_.Tid_hr;}
diff --git a/400_xowa/src/gplx/xowa/parsers/miscs/Xop_under_lxr.java b/400_xowa/src/gplx/xowa/parsers/miscs/Xop_under_lxr.java
index 13e3156f9..2ef6d79a7 100644
--- a/400_xowa/src/gplx/xowa/parsers/miscs/Xop_under_lxr.java
+++ b/400_xowa/src/gplx/xowa/parsers/miscs/Xop_under_lxr.java
@@ -16,11 +16,11 @@ You should have received a copy of the GNU Affero General Public License
along with this program. If not, see .
*/
package gplx.xowa.parsers.miscs; import gplx.*; import gplx.xowa.*; import gplx.xowa.parsers.*;
-import gplx.core.btries.*;
+import gplx.core.btries.*; import gplx.xowa.langs.*;
import gplx.xowa.html.tocs.*;
public class Xop_under_lxr implements Xop_lxr {
private Btrie_mgr words_trie_ci, words_trie_cs;
- public byte Lxr_tid() {return Xop_lxr_.Tid_under;}
+ public int Lxr_tid() {return Xop_lxr_.Tid_under;}
public void Init_by_wiki(Xowe_wiki wiki, Btrie_fast_mgr core_trie) {}
public void Init_by_lang(Xol_lang lang, Btrie_fast_mgr core_trie) {
Xol_kwd_mgr kwd_mgr = lang.Kwd_mgr();
@@ -64,6 +64,7 @@ public class Xop_under_lxr implements Xop_lxr {
}
}
}
+ public void Term(Btrie_fast_mgr core_trie) {}
private static final int[] under_kwds = new int[] // REF.MW:MagicWord.php
{ Xol_kwd_grp_.Id_toc, Xol_kwd_grp_.Id_notoc, Xol_kwd_grp_.Id_forcetoc
, Xol_kwd_grp_.Id_nogallery, Xol_kwd_grp_.Id_noheader, Xol_kwd_grp_.Id_noeditsection
@@ -114,9 +115,10 @@ public class Xop_under_lxr implements Xop_lxr {
class Xop_word_lxr implements Xop_lxr {
private int kwd_id;
public Xop_word_lxr(int kwd_id) {this.kwd_id = kwd_id;}
- public byte Lxr_tid() {return Xop_lxr_.Tid_word;}
+ public int Lxr_tid() {return Xop_lxr_.Tid_word;}
public void Init_by_wiki(Xowe_wiki wiki, Btrie_fast_mgr core_trie) {}
public void Init_by_lang(Xol_lang lang, Btrie_fast_mgr core_trie) {}
+ public void Term(Btrie_fast_mgr core_trie) {}
public int Make_tkn(Xop_ctx ctx, Xop_tkn_mkr tkn_mkr, Xop_root_tkn root, byte[] src, int src_len, int bgn_pos, int cur_pos) {
Xop_under_lxr.Make_tkn(ctx, tkn_mkr, root, src, src_len, bgn_pos, cur_pos, kwd_id); // for now, all word_lxrs only call the under_lxr; DATE:2014-02-14
return cur_pos;
diff --git a/400_xowa/src/gplx/xowa/parsers/miscs/Xop_under_lxr_tst.java b/400_xowa/src/gplx/xowa/parsers/miscs/Xop_under_lxr_tst.java
index 53dce1072..13c566733 100644
--- a/400_xowa/src/gplx/xowa/parsers/miscs/Xop_under_lxr_tst.java
+++ b/400_xowa/src/gplx/xowa/parsers/miscs/Xop_under_lxr_tst.java
@@ -16,7 +16,7 @@ You should have received a copy of the GNU Affero General Public License
along with this program. If not, see .
*/
package gplx.xowa.parsers.miscs; import gplx.*; import gplx.xowa.*; import gplx.xowa.parsers.*;
-import org.junit.*;
+import org.junit.*; import gplx.xowa.langs.*;
public class Xop_under_lxr_tst {
private Xop_fxt fxt = new Xop_fxt();
@Before public void init() {fxt.Reset();}
@@ -142,13 +142,13 @@ public class Xop_under_lxr_tst {
@Test public void Hook_alt() { // PURPOSE: ja wikis use alternate __; DATE:2014-03-04
Xowe_wiki wiki = fxt.Wiki(); Xol_lang lang = wiki.Lang();
fxt.Init_lang_kwds(lang, Xol_kwd_grp_.Id_toc, true, "__TOC__");
- wiki.Parser().Init_by_lang(lang);
+ wiki.Parser_mgr().Main().Init_by_lang(lang);
fxt.Test_parse_page_all_str("a__TOC__b", "ab");
}
@Test public void Ascii_ci() { // PURPOSE: case-insensitive ascii; DATE:2014-07-10
Xowe_wiki wiki = fxt.Wiki(); Xol_lang lang = wiki.Lang();
fxt.Init_lang_kwds(lang, Xol_kwd_grp_.Id_toc, false, "__TOC__");
- wiki.Parser().Init_by_lang(lang);
+ wiki.Parser_mgr().Main().Init_by_lang(lang);
fxt.Test_parse_page_all_str("a__TOC__b", "ab");
fxt.Test_parse_page_all_str("a__toc__b", "ab");
}
@@ -156,7 +156,7 @@ public class Xop_under_lxr_tst {
Xowe_wiki wiki = fxt.Wiki(); Xol_lang lang = wiki.Lang();
lang.Case_mgr_u8_();
fxt.Init_lang_kwds(lang, Xol_kwd_grp_.Id_toc, false, "__AÉI__");
- wiki.Parser().Init_by_lang(lang);
+ wiki.Parser_mgr().Main().Init_by_lang(lang);
fxt.Test_parse_page_all_str("a__AÉI__b", "ab");
fxt.Test_parse_page_all_str("a__aéi__b", "ab");
}
@@ -164,13 +164,13 @@ public class Xop_under_lxr_tst {
Xowe_wiki wiki = fxt.Wiki(); Xol_lang lang = wiki.Lang();
lang.Case_mgr_u8_();
fxt.Init_lang_kwds(lang, Xol_kwd_grp_.Id_toc, false, "__İÇİNDEKİLER__"); // __TOC__ for tr.w
- wiki.Parser().Init_by_lang(lang);
+ wiki.Parser_mgr().Main().Init_by_lang(lang);
fxt.Test_parse_page_all_str("a__İçindekiler__b", "ab");
}
@Test public void Cs() { // PURPOSE: cs (ascii / utf8 doesn't matter); DATE:2014-07-11
Xowe_wiki wiki = fxt.Wiki(); Xol_lang lang = wiki.Lang();
fxt.Init_lang_kwds(lang, Xol_kwd_grp_.Id_toc , Bool_.Y, "__TOC__");
- wiki.Parser().Init_by_lang(lang);
+ wiki.Parser_mgr().Main().Init_by_lang(lang);
fxt.Test_parse_page_all_str("a__TOC__b" , "ab"); // ci.pass
fxt.Test_parse_page_all_str("a__toc__b" , "a__toc__b"); // ci.pass
}
@@ -178,7 +178,7 @@ public class Xop_under_lxr_tst {
Xowe_wiki wiki = fxt.Wiki(); Xol_lang lang = wiki.Lang();
fxt.Init_lang_kwds(lang, Xol_kwd_grp_.Id_toc , Bool_.N, "__TOC__");
fxt.Init_lang_kwds(lang, Xol_kwd_grp_.Id_notoc , Bool_.Y, "__NOTOC__");
- wiki.Parser().Init_by_lang(lang);
+ wiki.Parser_mgr().Main().Init_by_lang(lang);
fxt.Test_parse_page_all_str("a__TOC__b" , "ab"); // ci.pass
fxt.Test_parse_page_all_str("a__toc__b" , "ab"); // ci.pass
fxt.Test_parse_page_all_str("a__NOTOC__b" , "ab"); // cs.pass
diff --git a/400_xowa/src/gplx/xowa/parsers/paras/Xop_nl_lxr.java b/400_xowa/src/gplx/xowa/parsers/paras/Xop_nl_lxr.java
index bec38fa09..a7aaf04ef 100644
--- a/400_xowa/src/gplx/xowa/parsers/paras/Xop_nl_lxr.java
+++ b/400_xowa/src/gplx/xowa/parsers/paras/Xop_nl_lxr.java
@@ -16,11 +16,13 @@ You should have received a copy of the GNU Affero General Public License
along with this program. If not, see .
*/
package gplx.xowa.parsers.paras; import gplx.*; import gplx.xowa.*; import gplx.xowa.parsers.*;
-import gplx.core.btries.*; import gplx.xowa.parsers.lists.*; import gplx.xowa.parsers.tblws.*; import gplx.xowa.parsers.xndes.*; import gplx.xowa.parsers.lnkis.*; import gplx.xowa.parsers.miscs.*;
+import gplx.core.btries.*; import gplx.xowa.langs.*;
+import gplx.xowa.parsers.lists.*; import gplx.xowa.parsers.tblws.*; import gplx.xowa.parsers.xndes.*; import gplx.xowa.parsers.lnkis.*; import gplx.xowa.parsers.miscs.*;
public class Xop_nl_lxr implements Xop_lxr {
- public byte Lxr_tid() {return Xop_lxr_.Tid_nl;}
+ public int Lxr_tid() {return Xop_lxr_.Tid_nl;}
public void Init_by_wiki(Xowe_wiki wiki, Btrie_fast_mgr core_trie) {core_trie.Add(Byte_ascii.Nl, this);}
public void Init_by_lang(Xol_lang lang, Btrie_fast_mgr core_trie) {}
+ public void Term(Btrie_fast_mgr core_trie) {}
public int Make_tkn(Xop_ctx ctx, Xop_tkn_mkr tkn_mkr, Xop_root_tkn root, byte[] src, int src_len, int bgn_pos, int cur_pos) {
if (bgn_pos == Xop_parser_.Doc_bgn_bos) return ctx.Lxr_make_txt_(cur_pos); // simulated nl at beginning of every parse
int trim_category_pos = Scan_fwd_for_ctg(ctx, src, cur_pos, src_len);
@@ -93,13 +95,13 @@ public class Xop_nl_lxr implements Xop_lxr {
case Byte_ascii.Space: case Byte_ascii.Tab: case Byte_ascii.Nl: case Byte_ascii.Cr: // ignore ws
break;
case Byte_ascii.Brack_bgn: // [
- if ( Bry_.Eq_itm(src, src_len, i + 1, Byte_ascii.Brack_bgn) // [[
+ if ( Bry_.Has_at(src, src_len, i + 1, Byte_ascii.Brack_bgn) // [[
&& i + 2 < src_len) {
- int ttl_bgn = Bry_finder.Find_fwd_while(src, i + 2, src_len, Byte_ascii.Space);
+ int ttl_bgn = Bry_find_.Find_fwd_while(src, i + 2, src_len, Byte_ascii.Space);
Btrie_slim_mgr ctg_trie = ctx.Wiki().Ns_mgr().Category_trie();
Object ctg_ns = ctg_trie.Match_bgn(src, ttl_bgn, src_len);
if (ctg_ns != null // "[[Category" found
- && Bry_.Eq_itm(src, src_len, ctg_trie.Match_pos(), Byte_ascii.Colon)) { // check that next char is :
+ && Bry_.Has_at(src, src_len, ctg_trie.Match_pos(), Byte_ascii.Colon)) { // check that next char is :
return i;// return pos of 1st [
}
return Bry_.NotFound;
diff --git a/400_xowa/src/gplx/xowa/parsers/paras/Xop_nl_tab_lxr.java b/400_xowa/src/gplx/xowa/parsers/paras/Xop_nl_tab_lxr.java
index 67b066897..e5cb79e9f 100644
--- a/400_xowa/src/gplx/xowa/parsers/paras/Xop_nl_tab_lxr.java
+++ b/400_xowa/src/gplx/xowa/parsers/paras/Xop_nl_tab_lxr.java
@@ -16,13 +16,15 @@ You should have received a copy of the GNU Affero General Public License
along with this program. If not, see .
*/
package gplx.xowa.parsers.paras; import gplx.*; import gplx.xowa.*; import gplx.xowa.parsers.*;
-import gplx.core.btries.*; import gplx.xowa.parsers.tblws.*;
+import gplx.core.btries.*; import gplx.xowa.langs.*;
+import gplx.xowa.parsers.tblws.*;
public class Xop_nl_tab_lxr implements Xop_lxr {
- public byte Lxr_tid() {return Xop_lxr_.Tid_nl_tab;}
+ public int Lxr_tid() {return Xop_lxr_.Tid_nl_tab;}
public void Init_by_wiki(Xowe_wiki wiki, Btrie_fast_mgr core_trie) {core_trie.Add(Hook_nl_tab, this);} private static final byte[] Hook_nl_tab = new byte[] {Byte_ascii.Nl, Byte_ascii.Tab};
public void Init_by_lang(Xol_lang lang, Btrie_fast_mgr core_trie) {}
+ public void Term(Btrie_fast_mgr core_trie) {}
public int Make_tkn(Xop_ctx ctx, Xop_tkn_mkr tkn_mkr, Xop_root_tkn root, byte[] src, int src_len, int bgn_pos, int cur_pos) {
- int non_ws_pos = Bry_finder.Find_fwd_while_space_or_tab(src, cur_pos, src_len);
+ int non_ws_pos = Bry_find_.Find_fwd_while_space_or_tab(src, cur_pos, src_len);
if (non_ws_pos < src_len) { // bounds check
Btrie_slim_mgr tblw_trie = ctx.App().Utl_trie_tblw_ws();
Object tblw_obj = tblw_trie.Match_bgn(src, non_ws_pos, src_len);
diff --git a/400_xowa/src/gplx/xowa/parsers/paras/Xop_nl_tkn_chkr.java b/400_xowa/src/gplx/xowa/parsers/paras/Xop_nl_tkn_chkr.java
index aa2c05aa5..009682644 100644
--- a/400_xowa/src/gplx/xowa/parsers/paras/Xop_nl_tkn_chkr.java
+++ b/400_xowa/src/gplx/xowa/parsers/paras/Xop_nl_tkn_chkr.java
@@ -16,6 +16,7 @@ You should have received a copy of the GNU Affero General Public License
along with this program. If not, see .
*/
package gplx.xowa.parsers.paras; import gplx.*; import gplx.xowa.*; import gplx.xowa.parsers.*;
+import gplx.core.tests.*;
public class Xop_nl_tkn_chkr extends Xop_tkn_chkr_base {
@Override public Class> TypeOf() {return Xop_nl_tkn.class;}
@Override public byte Tkn_tid() {return Xop_tkn_itm_.Tid_newLine;}
diff --git a/400_xowa/src/gplx/xowa/parsers/paras/Xop_para_tkn_chkr.java b/400_xowa/src/gplx/xowa/parsers/paras/Xop_para_tkn_chkr.java
index 8b7d353b7..85fce7404 100644
--- a/400_xowa/src/gplx/xowa/parsers/paras/Xop_para_tkn_chkr.java
+++ b/400_xowa/src/gplx/xowa/parsers/paras/Xop_para_tkn_chkr.java
@@ -16,6 +16,7 @@ You should have received a copy of the GNU Affero General Public License
along with this program. If not, see .
*/
package gplx.xowa.parsers.paras; import gplx.*; import gplx.xowa.*; import gplx.xowa.parsers.*;
+import gplx.core.tests.*;
public class Xop_para_tkn_chkr extends Xop_tkn_chkr_base {
@Override public Class> TypeOf() {return Xop_para_tkn.class;}
@Override public byte Tkn_tid() {return Xop_tkn_itm_.Tid_para;}
diff --git a/400_xowa/src/gplx/xowa/parsers/paras/Xop_pre_lxr.java b/400_xowa/src/gplx/xowa/parsers/paras/Xop_pre_lxr.java
index 7e99a86bc..d4922cd04 100644
--- a/400_xowa/src/gplx/xowa/parsers/paras/Xop_pre_lxr.java
+++ b/400_xowa/src/gplx/xowa/parsers/paras/Xop_pre_lxr.java
@@ -16,11 +16,13 @@ You should have received a copy of the GNU Affero General Public License
along with this program. If not, see .
*/
package gplx.xowa.parsers.paras; import gplx.*; import gplx.xowa.*; import gplx.xowa.parsers.*;
-import gplx.core.btries.*; import gplx.xowa.parsers.lists.*; import gplx.xowa.parsers.tblws.*; import gplx.xowa.parsers.tmpls.*; import gplx.xowa.parsers.miscs.*;
+import gplx.core.btries.*; import gplx.xowa.langs.*;
+import gplx.xowa.parsers.lists.*; import gplx.xowa.parsers.tblws.*; import gplx.xowa.parsers.tmpls.*; import gplx.xowa.parsers.miscs.*;
public class Xop_pre_lxr implements Xop_lxr {
- public byte Lxr_tid() {return Xop_lxr_.Tid_pre;}
+ public int Lxr_tid() {return Xop_lxr_.Tid_pre;}
public void Init_by_wiki(Xowe_wiki wiki, Btrie_fast_mgr core_trie) {core_trie.Add(Hook_space, this);} // NOTE: do not treat \n\t as shorthand pre; EX:pl.w:Main_Page; DATE:2014-05-06
public void Init_by_lang(Xol_lang lang, Btrie_fast_mgr core_trie) {}
+ public void Term(Btrie_fast_mgr core_trie) {}
public int Make_tkn(Xop_ctx ctx, Xop_tkn_mkr tkn_mkr, Xop_root_tkn root, byte[] src, int src_len, int bgn_pos, int cur_pos) {
if ( !ctx.Para().Enabled() // para disabled; "\n\s" should just be "\n\s"; NOTE: para disabled in
|| ( ctx.Stack_len() > 0 // bounds check
@@ -32,7 +34,7 @@ public class Xop_pre_lxr implements Xop_lxr {
ctx.Subs_add(root, tkn_mkr.Space(root, cur_pos - 1, cur_pos));
return cur_pos;
}
- int txt_pos = Bry_finder.Find_fwd_while(src, cur_pos, src_len, Byte_ascii.Space); // NOTE: was Find_fwd_while_tab_or_space, which incorrectly converted tabs to spaces; PAGE:en.w:Cascading_Style_Sheets; DATE:2014-06-23
+ int txt_pos = Bry_find_.Find_fwd_while(src, cur_pos, src_len, Byte_ascii.Space); // NOTE: was Find_fwd_while_tab_or_space, which incorrectly converted tabs to spaces; PAGE:en.w:Cascading_Style_Sheets; DATE:2014-06-23
if (txt_pos == src_len) return cur_pos; // "\n\s" at EOS; treat as \n only; EX: "a\n " -> ""; also bounds check
byte b = src[txt_pos];
if (bgn_pos == Xop_parser_.Doc_bgn_bos) { // BOS; gobble up all \s\t; EX: "BOS\s\s\sa" -> "BOSa"
@@ -51,9 +53,9 @@ public class Xop_pre_lxr implements Xop_lxr {
break;
case Xop_tkn_itm_.Tid_list: // close all lists unless [[Category]]; SEE:NOTE_4; rewritten; DATE:2015-03-31
boolean close_all_lists = true;
- if (Bry_finder.Find_fwd(src, Xop_tkn_.Lnki_bgn, txt_pos, src_len) == txt_pos) { // look for "[["
+ if (Bry_find_.Find_fwd(src, Xop_tkn_.Lnki_bgn, txt_pos, src_len) == txt_pos) { // look for "[["
int tmp_pos = txt_pos + Xop_tkn_.Lnki_bgn.length;
- if (Bry_finder.Find_fwd(src, ctx.Wiki().Ns_mgr().Ns_category().Name_db_w_colon(), tmp_pos, src_len) == tmp_pos) // look for "Category:"
+ if (Bry_find_.Find_fwd(src, ctx.Wiki().Ns_mgr().Ns_category().Name_db_w_colon(), tmp_pos, src_len) == tmp_pos) // look for "Category:"
close_all_lists = false; // "[[Category:" found; "\n\s[[Category:" should not close list; note that [[Category]] is invisible
}
if (close_all_lists)
diff --git a/400_xowa/src/gplx/xowa/parsers/tblws/Xop_tblw_lxr.java b/400_xowa/src/gplx/xowa/parsers/tblws/Xop_tblw_lxr.java
index 41c2891b7..54c6b5f35 100644
--- a/400_xowa/src/gplx/xowa/parsers/tblws/Xop_tblw_lxr.java
+++ b/400_xowa/src/gplx/xowa/parsers/tblws/Xop_tblw_lxr.java
@@ -16,9 +16,10 @@ You should have received a copy of the GNU Affero General Public License
along with this program. If not, see .
*/
package gplx.xowa.parsers.tblws; import gplx.*; import gplx.xowa.*; import gplx.xowa.parsers.*;
-import gplx.core.btries.*; import gplx.xowa.parsers.paras.*; import gplx.xowa.parsers.lnkis.*; import gplx.xowa.parsers.miscs.*;
+import gplx.core.btries.*; import gplx.xowa.langs.*;
+import gplx.xowa.parsers.paras.*; import gplx.xowa.parsers.lnkis.*; import gplx.xowa.parsers.miscs.*;
public class Xop_tblw_lxr implements Xop_lxr {
- public byte Lxr_tid() {return Xop_lxr_.Tid_tblw;}
+ public int Lxr_tid() {return Xop_lxr_.Tid_tblw;}
public int Make_tkn(Xop_ctx ctx, Xop_tkn_mkr tkn_mkr, Xop_root_tkn root, byte[] src, int src_len, int bgn_pos, int cur_pos) {
int rv = Handle_bang(wlxr_type, ctx, ctx.Tkn_mkr(), root, src, src_len, bgn_pos, cur_pos);
if (rv != Continue) return rv;
@@ -54,11 +55,11 @@ public class Xop_tblw_lxr implements Xop_lxr {
}
}
if (wlxr_type == Xop_tblw_wkr.Tblw_type_th2) { // !!; extra check to make sure \n! exists; DATE:2014-10-19
- int prv_th_pos = Bry_finder.Find_bwd(src, Byte_ascii.Nl, bgn_pos); // search for previous \n
- boolean invalid = prv_th_pos == Bry_finder.Not_found; // no \n; invalid
+ int prv_th_pos = Bry_find_.Find_bwd(src, Byte_ascii.Nl, bgn_pos); // search for previous \n
+ boolean invalid = prv_th_pos == Bry_find_.Not_found; // no \n; invalid
if (!invalid) {
++prv_th_pos; // skip \n
- prv_th_pos = Bry_finder.Find_fwd_while_space_or_tab(src, prv_th_pos, src_len); // skip \s; needed for "\n\s!" which is still a tblw
+ prv_th_pos = Bry_find_.Find_fwd_while_space_or_tab(src, prv_th_pos, src_len); // skip \s; needed for "\n\s!" which is still a tblw
if (prv_th_pos == bgn_pos) // invalid: "\n" is directly in front of "!!"
invalid = true;
else
@@ -129,6 +130,7 @@ public class Xop_tblw_lxr implements Xop_lxr {
core_trie.Add(Hook_th2, new Xop_tblw_lxr(Xop_tblw_wkr.Tblw_type_th2));
}
public void Init_by_lang(Xol_lang lang, Btrie_fast_mgr core_trie) {}
+ public void Term(Btrie_fast_mgr core_trie) {}
public static final byte[] Hook_tb = Bry_.new_a7("\n{|"), Hook_te = Bry_.new_a7("\n|}"), Hook_tr = Bry_.new_a7("\n|-")
, Hook_td = Bry_.new_a7("\n|"), Hook_th = Bry_.new_a7("\n!"), Hook_tc = Bry_.new_a7("\n|+")
, Hook_td2 = Bry_.new_a7("||"), Hook_th2 = Bry_.new_a7("!!");
diff --git a/400_xowa/src/gplx/xowa/parsers/tblws/Xop_tblw_tb_tkn_chkr.java b/400_xowa/src/gplx/xowa/parsers/tblws/Xop_tblw_tb_tkn_chkr.java
index d00ba064f..3f0a0885f 100644
--- a/400_xowa/src/gplx/xowa/parsers/tblws/Xop_tblw_tb_tkn_chkr.java
+++ b/400_xowa/src/gplx/xowa/parsers/tblws/Xop_tblw_tb_tkn_chkr.java
@@ -16,6 +16,7 @@ You should have received a copy of the GNU Affero General Public License
along with this program. If not, see .
*/
package gplx.xowa.parsers.tblws; import gplx.*; import gplx.xowa.*; import gplx.xowa.parsers.*;
+import gplx.core.tests.*;
public class Xop_tblw_tb_tkn_chkr extends Xop_tkn_chkr_base {
@Override public Class> TypeOf() {return Xop_tblw_tb_tkn.class;}
@Override public byte Tkn_tid() {return Xop_tkn_itm_.Tid_tblw_tb;}
diff --git a/400_xowa/src/gplx/xowa/parsers/tblws/Xop_tblw_tc_tkn_chkr.java b/400_xowa/src/gplx/xowa/parsers/tblws/Xop_tblw_tc_tkn_chkr.java
index 9a1dbdb60..683da2376 100644
--- a/400_xowa/src/gplx/xowa/parsers/tblws/Xop_tblw_tc_tkn_chkr.java
+++ b/400_xowa/src/gplx/xowa/parsers/tblws/Xop_tblw_tc_tkn_chkr.java
@@ -16,6 +16,7 @@ You should have received a copy of the GNU Affero General Public License
along with this program. If not, see .
*/
package gplx.xowa.parsers.tblws; import gplx.*; import gplx.xowa.*; import gplx.xowa.parsers.*;
+import gplx.core.tests.*;
public class Xop_tblw_tc_tkn_chkr extends Xop_tkn_chkr_base {
@Override public Class> TypeOf() {return Xop_tblw_tc_tkn.class;}
@Override public byte Tkn_tid() {return Xop_tkn_itm_.Tid_tblw_tc;}
diff --git a/400_xowa/src/gplx/xowa/parsers/tblws/Xop_tblw_td_tkn_chkr.java b/400_xowa/src/gplx/xowa/parsers/tblws/Xop_tblw_td_tkn_chkr.java
index 4c5acc203..aee61cc3c 100644
--- a/400_xowa/src/gplx/xowa/parsers/tblws/Xop_tblw_td_tkn_chkr.java
+++ b/400_xowa/src/gplx/xowa/parsers/tblws/Xop_tblw_td_tkn_chkr.java
@@ -16,6 +16,7 @@ You should have received a copy of the GNU Affero General Public License
along with this program. If not, see .
*/
package gplx.xowa.parsers.tblws; import gplx.*; import gplx.xowa.*; import gplx.xowa.parsers.*;
+import gplx.core.tests.*;
public class Xop_tblw_td_tkn_chkr extends Xop_tkn_chkr_base {
@Override public Class> TypeOf() {return Xop_tblw_td_tkn.class;}
@Override public byte Tkn_tid() {return Xop_tkn_itm_.Tid_tblw_td;}
diff --git a/400_xowa/src/gplx/xowa/parsers/tblws/Xop_tblw_th_tkn_chkr.java b/400_xowa/src/gplx/xowa/parsers/tblws/Xop_tblw_th_tkn_chkr.java
index d7ba8bfab..1e3ce7e27 100644
--- a/400_xowa/src/gplx/xowa/parsers/tblws/Xop_tblw_th_tkn_chkr.java
+++ b/400_xowa/src/gplx/xowa/parsers/tblws/Xop_tblw_th_tkn_chkr.java
@@ -16,6 +16,7 @@ You should have received a copy of the GNU Affero General Public License
along with this program. If not, see .
*/
package gplx.xowa.parsers.tblws; import gplx.*; import gplx.xowa.*; import gplx.xowa.parsers.*;
+import gplx.core.tests.*;
public class Xop_tblw_th_tkn_chkr extends Xop_tkn_chkr_base {
@Override public Class> TypeOf() {return Xop_tblw_th_tkn.class;}
@Override public byte Tkn_tid() {return Xop_tkn_itm_.Tid_tblw_th;}
diff --git a/400_xowa/src/gplx/xowa/parsers/tblws/Xop_tblw_tr_tkn_chkr.java b/400_xowa/src/gplx/xowa/parsers/tblws/Xop_tblw_tr_tkn_chkr.java
index bed899a3a..3fdb63f79 100644
--- a/400_xowa/src/gplx/xowa/parsers/tblws/Xop_tblw_tr_tkn_chkr.java
+++ b/400_xowa/src/gplx/xowa/parsers/tblws/Xop_tblw_tr_tkn_chkr.java
@@ -16,6 +16,7 @@ You should have received a copy of the GNU Affero General Public License
along with this program. If not, see .
*/
package gplx.xowa.parsers.tblws; import gplx.*; import gplx.xowa.*; import gplx.xowa.parsers.*;
+import gplx.core.tests.*;
public class Xop_tblw_tr_tkn_chkr extends Xop_tkn_chkr_base {
@Override public Class> TypeOf() {return Xop_tblw_tr_tkn.class;}
@Override public byte Tkn_tid() {return Xop_tkn_itm_.Tid_tblw_tr;}
diff --git a/400_xowa/src/gplx/xowa/parsers/tblws/Xop_tblw_wkr.java b/400_xowa/src/gplx/xowa/parsers/tblws/Xop_tblw_wkr.java
index 8ae1bd2ae..4628058bf 100644
--- a/400_xowa/src/gplx/xowa/parsers/tblws/Xop_tblw_wkr.java
+++ b/400_xowa/src/gplx/xowa/parsers/tblws/Xop_tblw_wkr.java
@@ -149,7 +149,7 @@ public class Xop_tblw_wkr implements Xop_ctx_wkr {
if (ignore_prv) {
ctx.Subs_add(root, tkn_mkr.Ignore(bgn_pos, cur_pos, Xop_ignore_tkn.Ignore_tid_htmlTidy_tblw));
++tblw_te_ignore_count;
- cur_pos = Bry_finder.Find_fwd_until(src, cur_pos, src_len, Byte_ascii.Nl); // NOTE: minor hack; this tblw tkn will be ignored, so ignore any of its attributes as well; gobble up all chars till nl. see: if two consecutive tbs, ignore attributes on 2nd; en.wikibooks.org/wiki/Wikibooks:Featured books
+ cur_pos = Bry_find_.Find_fwd_until(src, cur_pos, src_len, Byte_ascii.Nl); // NOTE: minor hack; this tblw tkn will be ignored, so ignore any of its attributes as well; gobble up all chars till nl. see: if two consecutive tbs, ignore attributes on 2nd; en.wikibooks.org/wiki/Wikibooks:Featured books
return cur_pos;
}
if (auto_create) {
@@ -481,7 +481,7 @@ public class Xop_tblw_wkr implements Xop_ctx_wkr {
root.Subs_del_between(ctx, subs_bgn, subs_pos);
int atrs_bgn = prv_tblw.Src_end(), atrs_end = last_atr_tkn.Src_end();
if (prv_tblw.Tkn_tid() == Xop_tkn_itm_.Tid_tblw_tr) // NOTE: if "|-" gobble all trailing dashes; REF: Parser.php!doTableStuff; $line = preg_replace( '#^\|-+#', '', $line ); DATE:2013-06-21
- atrs_bgn = Bry_finder.Find_fwd_while(src, atrs_bgn, src.length, Byte_ascii.Dash);
+ atrs_bgn = Bry_find_.Find_fwd_while(src, atrs_bgn, src.length, Byte_ascii.Dash);
prv_tblw.Atrs_rng_set(atrs_bgn, atrs_end);
if (ctx.Parse_tid() == Xop_parser_.Parse_tid_page_wiki && atrs_bgn != -1) {
Xop_xatr_itm[] atrs = ctx.App().Xatr_parser().Parse(ctx.Msg_log(), src, atrs_bgn, atrs_end);
diff --git a/400_xowa/src/gplx/xowa/parsers/tblws/Xop_tblw_ws_itm.java b/400_xowa/src/gplx/xowa/parsers/tblws/Xop_tblw_ws_itm.java
index 361eb95e1..524994f9c 100644
--- a/400_xowa/src/gplx/xowa/parsers/tblws/Xop_tblw_ws_itm.java
+++ b/400_xowa/src/gplx/xowa/parsers/tblws/Xop_tblw_ws_itm.java
@@ -32,8 +32,8 @@ public class Xop_tblw_ws_itm {
trie_itm(rv, Type_tr, Xop_tblw_lxr_ws.Hook_tr);
trie_itm(rv, Type_th, Xop_tblw_lxr_ws.Hook_th);
trie_itm(rv, Type_tc, Xop_tblw_lxr_ws.Hook_tc);
- trie_itm(rv, Type_td, Bry_.bytes_(Byte_ascii.Pipe));
- trie_itm(rv, Type_nl, Bry_.bytes_(Byte_ascii.Nl));
+ trie_itm(rv, Type_td, Bry_.new_bytes(Byte_ascii.Pipe));
+ trie_itm(rv, Type_nl, Bry_.new_bytes(Byte_ascii.Nl));
trie_itm_xnde(rv, Xop_xnde_tag_.Tag_table);
trie_itm_xnde(rv, Xop_xnde_tag_.Tag_tr);
trie_itm_xnde(rv, Xop_xnde_tag_.Tag_td);
diff --git a/400_xowa/src/gplx/xowa/parsers/tmpls/Nowiki_escape_itm.java b/400_xowa/src/gplx/xowa/parsers/tmpls/Nowiki_escape_itm.java
index 59c97b033..43920b1a6 100644
--- a/400_xowa/src/gplx/xowa/parsers/tmpls/Nowiki_escape_itm.java
+++ b/400_xowa/src/gplx/xowa/parsers/tmpls/Nowiki_escape_itm.java
@@ -16,7 +16,7 @@ You should have received a copy of the GNU Affero General Public License
along with this program. If not, see .
*/
package gplx.xowa.parsers.tmpls; import gplx.*; import gplx.xowa.*; import gplx.xowa.parsers.*;
-import gplx.core.btries.*; import gplx.html.*; import gplx.xowa.parsers.amps.*;
+import gplx.core.btries.*; import gplx.langs.htmls.*; import gplx.xowa.parsers.amps.*;
public class Nowiki_escape_itm {
public Nowiki_escape_itm(byte[] src, byte[] trg) {this.src = src; this.trg = trg; this.src_adj = src.length - 1;}
private int src_adj;
diff --git a/400_xowa/src/gplx/xowa/parsers/tmpls/Xop_arg_itm_tkn_chkr.java b/400_xowa/src/gplx/xowa/parsers/tmpls/Xop_arg_itm_tkn_chkr.java
index 6087ce080..09d098660 100644
--- a/400_xowa/src/gplx/xowa/parsers/tmpls/Xop_arg_itm_tkn_chkr.java
+++ b/400_xowa/src/gplx/xowa/parsers/tmpls/Xop_arg_itm_tkn_chkr.java
@@ -16,6 +16,7 @@ You should have received a copy of the GNU Affero General Public License
along with this program. If not, see .
*/
package gplx.xowa.parsers.tmpls; import gplx.*; import gplx.xowa.*; import gplx.xowa.parsers.*;
+import gplx.core.tests.*;
public class Xop_arg_itm_tkn_chkr extends Xop_tkn_chkr_base {
@Override public Class> TypeOf() {return Arg_itm_tkn.class;}
@Override public byte Tkn_tid() {return Xop_tkn_itm_.Tid_arg_itm;}
diff --git a/400_xowa/src/gplx/xowa/parsers/tmpls/Xop_arg_nde_tkn_chkr.java b/400_xowa/src/gplx/xowa/parsers/tmpls/Xop_arg_nde_tkn_chkr.java
index 079d42ba8..b4f91e256 100644
--- a/400_xowa/src/gplx/xowa/parsers/tmpls/Xop_arg_nde_tkn_chkr.java
+++ b/400_xowa/src/gplx/xowa/parsers/tmpls/Xop_arg_nde_tkn_chkr.java
@@ -16,6 +16,7 @@ You should have received a copy of the GNU Affero General Public License
along with this program. If not, see .
*/
package gplx.xowa.parsers.tmpls; import gplx.*; import gplx.xowa.*; import gplx.xowa.parsers.*;
+import gplx.core.tests.*;
public class Xop_arg_nde_tkn_chkr extends Xop_tkn_chkr_base {
@Override public Class> TypeOf() {return Arg_nde_tkn.class;}
@Override public byte Tkn_tid() {return Xop_tkn_itm_.Tid_arg_nde;}
diff --git a/400_xowa/src/gplx/xowa/parsers/tmpls/Xop_brack_bgn_lxr.java b/400_xowa/src/gplx/xowa/parsers/tmpls/Xop_brack_bgn_lxr.java
index 8e7e9629f..44ff16fce 100644
--- a/400_xowa/src/gplx/xowa/parsers/tmpls/Xop_brack_bgn_lxr.java
+++ b/400_xowa/src/gplx/xowa/parsers/tmpls/Xop_brack_bgn_lxr.java
@@ -16,11 +16,12 @@ You should have received a copy of the GNU Affero General Public License
along with this program. If not, see .
*/
package gplx.xowa.parsers.tmpls; import gplx.*; import gplx.xowa.*; import gplx.xowa.parsers.*;
-import gplx.core.btries.*;
+import gplx.core.btries.*; import gplx.xowa.langs.*;
public class Xop_brack_bgn_lxr implements Xop_lxr {
- public byte Lxr_tid() {return Xop_lxr_.Tid_brack_bgn;}
+ public int Lxr_tid() {return Xop_lxr_.Tid_brack_bgn;}
public void Init_by_wiki(Xowe_wiki wiki, Btrie_fast_mgr core_trie) {core_trie.Add(Xop_tkn_.Lnki_bgn, this);}
public void Init_by_lang(Xol_lang lang, Btrie_fast_mgr core_trie) {}
+ public void Term(Btrie_fast_mgr core_trie) {}
public int Make_tkn(Xop_ctx ctx, Xop_tkn_mkr tkn_mkr, Xop_root_tkn root, byte[] src, int src_len, int bgn_pos, int cur_pos) {
Xop_tkn_itm tkn = tkn_mkr.Brack_bgn(bgn_pos, cur_pos);
ctx.Subs_add_and_stack(root, tkn);
diff --git a/400_xowa/src/gplx/xowa/parsers/tmpls/Xop_brack_end_lxr.java b/400_xowa/src/gplx/xowa/parsers/tmpls/Xop_brack_end_lxr.java
index e520843e6..0b76390a3 100644
--- a/400_xowa/src/gplx/xowa/parsers/tmpls/Xop_brack_end_lxr.java
+++ b/400_xowa/src/gplx/xowa/parsers/tmpls/Xop_brack_end_lxr.java
@@ -16,11 +16,12 @@ You should have received a copy of the GNU Affero General Public License
along with this program. If not, see .
*/
package gplx.xowa.parsers.tmpls; import gplx.*; import gplx.xowa.*; import gplx.xowa.parsers.*;
-import gplx.core.btries.*;
+import gplx.core.btries.*; import gplx.xowa.langs.*;
public class Xop_brack_end_lxr implements Xop_lxr {
- public byte Lxr_tid() {return Xop_lxr_.Tid_brack_end;}
+ public int Lxr_tid() {return Xop_lxr_.Tid_brack_end;}
public void Init_by_wiki(Xowe_wiki wiki, Btrie_fast_mgr core_trie) {core_trie.Add(Xop_tkn_.Lnki_end, this);}
public void Init_by_lang(Xol_lang lang, Btrie_fast_mgr core_trie) {}
+ public void Term(Btrie_fast_mgr core_trie) {}
public int Make_tkn(Xop_ctx ctx, Xop_tkn_mkr tkn_mkr, Xop_root_tkn root, byte[] src, int src_len, int bgn_pos, int cur_pos) {
int acs_pos = ctx.Stack_idx_typ(Xop_tkn_itm_.Tid_brack_bgn);
if (acs_pos != -1 && ctx.Cur_tkn_tid() != Xop_tkn_itm_.Tid_tmpl_curly_bgn) // NOTE: do not pop tkn if inside tmpl; EX: [[a|{{#switch:{{{1}}}|b=c]]|d=e]]|f]]}}
diff --git a/400_xowa/src/gplx/xowa/parsers/tmpls/Xop_curly_bgn_lxr.java b/400_xowa/src/gplx/xowa/parsers/tmpls/Xop_curly_bgn_lxr.java
index f71915104..9d2eda281 100644
--- a/400_xowa/src/gplx/xowa/parsers/tmpls/Xop_curly_bgn_lxr.java
+++ b/400_xowa/src/gplx/xowa/parsers/tmpls/Xop_curly_bgn_lxr.java
@@ -16,11 +16,13 @@ You should have received a copy of the GNU Affero General Public License
along with this program. If not, see .
*/
package gplx.xowa.parsers.tmpls; import gplx.*; import gplx.xowa.*; import gplx.xowa.parsers.*;
-import gplx.core.btries.*; import gplx.xowa.parsers.tblws.*;
+import gplx.core.btries.*; import gplx.xowa.langs.*;
+import gplx.xowa.parsers.tblws.*;
public class Xop_curly_bgn_lxr implements Xop_lxr {
- public byte Lxr_tid() {return Xop_lxr_.Tid_curly_bgn;}
+ public int Lxr_tid() {return Xop_lxr_.Tid_curly_bgn;}
public void Init_by_wiki(Xowe_wiki wiki, Btrie_fast_mgr core_trie) {core_trie.Add(Hook, this);} public static final byte[] Hook = new byte[] {Byte_ascii.Curly_bgn, Byte_ascii.Curly_bgn};
public void Init_by_lang(Xol_lang lang, Btrie_fast_mgr core_trie) {}
+ public void Term(Btrie_fast_mgr core_trie) {}
public int Make_tkn(Xop_ctx ctx, Xop_tkn_mkr tkn_mkr, Xop_root_tkn root, byte[] src, int src_len, int bgn_pos, int cur_pos) {return ctx.Curly().MakeTkn_bgn(ctx, tkn_mkr, root, src, src_len, bgn_pos, cur_pos);}
public static final Xop_curly_bgn_lxr _ = new Xop_curly_bgn_lxr(); Xop_curly_bgn_lxr() {}
public static Btrie_fast_mgr tmpl_bgn_trie_() { // hook sequences for adding new_line to tmpl return; "{|" "|-" ":" ";" "#" "*"; EX: "{{a}}" returns "*"; convert to "\n*"
diff --git a/400_xowa/src/gplx/xowa/parsers/tmpls/Xop_curly_end_lxr.java b/400_xowa/src/gplx/xowa/parsers/tmpls/Xop_curly_end_lxr.java
index 9a32d7c9a..0d283cd12 100644
--- a/400_xowa/src/gplx/xowa/parsers/tmpls/Xop_curly_end_lxr.java
+++ b/400_xowa/src/gplx/xowa/parsers/tmpls/Xop_curly_end_lxr.java
@@ -16,11 +16,12 @@ You should have received a copy of the GNU Affero General Public License
along with this program. If not, see .
*/
package gplx.xowa.parsers.tmpls; import gplx.*; import gplx.xowa.*; import gplx.xowa.parsers.*;
-import gplx.core.btries.*;
+import gplx.core.btries.*; import gplx.xowa.langs.*;
public class Xop_curly_end_lxr implements Xop_lxr {
- public byte Lxr_tid() {return Xop_lxr_.Tid_curly_end;}
+ public int Lxr_tid() {return Xop_lxr_.Tid_curly_end;}
public void Init_by_wiki(Xowe_wiki wiki, Btrie_fast_mgr core_trie) {core_trie.Add(Hook, this);} public static final byte[] Hook = new byte[] {Byte_ascii.Curly_end, Byte_ascii.Curly_end};
public void Init_by_lang(Xol_lang lang, Btrie_fast_mgr core_trie) {}
+ public void Term(Btrie_fast_mgr core_trie) {}
public int Make_tkn(Xop_ctx ctx, Xop_tkn_mkr tkn_mkr, Xop_root_tkn root, byte[] src, int src_len, int bgn_pos, int cur_pos) {return ctx.Curly().MakeTkn_end(ctx, tkn_mkr, root, src, src_len, bgn_pos, cur_pos);}
public static final Xop_curly_end_lxr _ = new Xop_curly_end_lxr(); Xop_curly_end_lxr() {}
}
diff --git a/400_xowa/src/gplx/xowa/parsers/tmpls/Xop_curly_wkr.java b/400_xowa/src/gplx/xowa/parsers/tmpls/Xop_curly_wkr.java
index b4f12d425..6e81eb723 100644
--- a/400_xowa/src/gplx/xowa/parsers/tmpls/Xop_curly_wkr.java
+++ b/400_xowa/src/gplx/xowa/parsers/tmpls/Xop_curly_wkr.java
@@ -23,14 +23,14 @@ public class Xop_curly_wkr implements Xop_ctx_wkr {
public void Page_end(Xop_ctx ctx, Xop_root_tkn root, byte[] src, int src_len) {}
public void AutoClose(Xop_ctx ctx, Xop_tkn_mkr tkn_mkr, Xop_root_tkn root, byte[] src, int src_len, int lxr_bgn_pos, int lxr_cur_pos, Xop_tkn_itm tkn) {}
public int MakeTkn_bgn(Xop_ctx ctx, Xop_tkn_mkr tkn_mkr, Xop_root_tkn root, byte[] src, int src_len, int lxr_bgn_pos, int lxr_cur_pos) {
- int lxr_end_pos = Bry_finder.Find_fwd_while(src, lxr_cur_pos, src_len, Byte_ascii.Curly_bgn); // NOTE: can be many consecutive {; EX: {{{{{1}}}|a}}
+ int lxr_end_pos = Bry_find_.Find_fwd_while(src, lxr_cur_pos, src_len, Byte_ascii.Curly_bgn); // NOTE: can be many consecutive {; EX: {{{{{1}}}|a}}
ctx.Subs_add_and_stack(root, tkn_mkr.Tmpl_curly_bgn(lxr_bgn_pos, lxr_end_pos));
return lxr_end_pos;
}
public int MakeTkn_end(Xop_ctx ctx, Xop_tkn_mkr tkn_mkr, Xop_root_tkn root, byte[] src, int src_len, int lxr_bgn_pos, int lxr_cur_pos) {
if (ctx.Cur_tkn_tid() == Xop_tkn_itm_.Tid_brack_bgn) // WORKAROUND: ignore }} if inside lnki; EX.CM:Template:Protected; {{#switch:a|b=[[a|ja=}}]]}}
return ctx.Lxr_make_txt_(lxr_cur_pos);
- int lxr_end_pos = Bry_finder.Find_fwd_while(src, lxr_cur_pos, src_len, Byte_ascii.Curly_end); // NOTE: can be many consecutive }; EX: {{a|{{{1}}}}}
+ int lxr_end_pos = Bry_find_.Find_fwd_while(src, lxr_cur_pos, src_len, Byte_ascii.Curly_end); // NOTE: can be many consecutive }; EX: {{a|{{{1}}}}}
int end_tkn_len = lxr_end_pos - lxr_bgn_pos;
boolean vnt_enabled = ctx.Wiki().Lang().Vnt_mgr().Enabled();
while (end_tkn_len > 0) {
diff --git a/400_xowa/src/gplx/xowa/parsers/tmpls/Xot_defn_.java b/400_xowa/src/gplx/xowa/parsers/tmpls/Xot_defn_.java
index dc9586600..085035244 100644
--- a/400_xowa/src/gplx/xowa/parsers/tmpls/Xot_defn_.java
+++ b/400_xowa/src/gplx/xowa/parsers/tmpls/Xot_defn_.java
@@ -16,6 +16,7 @@ You should have received a copy of the GNU Affero General Public License
along with this program. If not, see .
*/
package gplx.xowa.parsers.tmpls; import gplx.*; import gplx.xowa.*; import gplx.xowa.parsers.*;
+import gplx.xowa.langs.*;
public class Xot_defn_ {
public static final Xot_defn Null = Xot_defn_null._;
public static final byte
diff --git a/400_xowa/src/gplx/xowa/parsers/tmpls/Xot_defn_tmpl.java b/400_xowa/src/gplx/xowa/parsers/tmpls/Xot_defn_tmpl.java
index 2f22dbc70..b1d72acf8 100644
--- a/400_xowa/src/gplx/xowa/parsers/tmpls/Xot_defn_tmpl.java
+++ b/400_xowa/src/gplx/xowa/parsers/tmpls/Xot_defn_tmpl.java
@@ -16,6 +16,7 @@ You should have received a copy of the GNU Affero General Public License
along with this program. If not, see .
*/
package gplx.xowa.parsers.tmpls; import gplx.*; import gplx.xowa.*; import gplx.xowa.parsers.*;
+import gplx.xowa.nss.*;
public class Xot_defn_tmpl implements Xot_defn {
public byte Defn_tid() {return Xot_defn_.Tid_tmpl;}
public boolean Defn_require_colon_arg() {return false;}
@@ -39,12 +40,12 @@ public class Xot_defn_tmpl implements Xot_defn {
int pos = 0;
int src_len = src.length;
while (true) {
- int find_bgn = Bry_finder.Find_fwd(src, Bry_onlyinclude_bgn, pos, src_len);
+ int find_bgn = Bry_find_.Find_fwd(src, Bry_onlyinclude_bgn, pos, src_len);
if (find_bgn == Bry_.NotFound) {
break;
}
int find_bgn_lhs = find_bgn + Bry_onlyinclude_bgn_len;
- int find_end = Bry_finder.Find_fwd(src, Bry_onlyinclude_end, find_bgn_lhs, src_len);
+ int find_end = Bry_find_.Find_fwd(src, Bry_onlyinclude_end, find_bgn_lhs, src_len);
if (find_end == Bry_.NotFound) {
break;
}
@@ -59,12 +60,12 @@ public class Xot_defn_tmpl implements Xot_defn {
if (root != null) root.Clear();
root = null;
}
- public void Parse_tmpl(Xop_ctx ctx) {ctx.Wiki().Parser().Parse_text_to_defn(this, ctx, ctx.Tkn_mkr(), ns, name, data_raw);} boolean onlyinclude_parsed = false;
+ public void Parse_tmpl(Xop_ctx ctx) {ctx.Wiki().Parser_mgr().Main().Parse_text_to_defn(this, ctx, ctx.Tkn_mkr(), ns, name, data_raw);} boolean onlyinclude_parsed = false;
public boolean Tmpl_evaluate(Xop_ctx ctx, Xot_invk caller, Bry_bfr bfr) {
if (root == null) Parse_tmpl(ctx);
Xoae_page page = ctx.Cur_page();
if (!page.Tmpl_stack_add(full_name)) {
- bfr.Add_str_a7("");
+ bfr.Add_str_a7("");
Xoa_app_.Usr_dlg().Warn_many("", "", "template loop detected: url=~{0} name=~{1}", ctx.Cur_page().Url().To_str(), name);
return false;
}
@@ -75,7 +76,7 @@ public class Xot_defn_tmpl implements Xot_defn {
onlyinclude_parsed = true;
byte[] new_data = Extract_onlyinclude(data_raw, wiki.Utl__bfr_mkr());
Xop_ctx new_ctx = Xop_ctx.new_sub_(wiki);
- Xot_defn_tmpl tmpl = wiki.Parser().Parse_text_to_defn_obj(new_ctx, new_ctx.Tkn_mkr(), wiki.Ns_mgr().Ns_template(), Bry_.Empty, new_data);
+ Xot_defn_tmpl tmpl = wiki.Parser_mgr().Main().Parse_text_to_defn_obj(new_ctx, new_ctx.Tkn_mkr(), wiki.Ns_mgr().Ns_template(), Bry_.Empty, new_data);
tmpl.Root().Tmpl_compile(new_ctx, new_data, Xot_compile_data.Null);
data_raw = new_data;
root = tmpl.Root();
diff --git a/400_xowa/src/gplx/xowa/parsers/tmpls/Xot_invk_tkn.java b/400_xowa/src/gplx/xowa/parsers/tmpls/Xot_invk_tkn.java
index 3a8d81bfc..915f16a17 100644
--- a/400_xowa/src/gplx/xowa/parsers/tmpls/Xot_invk_tkn.java
+++ b/400_xowa/src/gplx/xowa/parsers/tmpls/Xot_invk_tkn.java
@@ -16,7 +16,8 @@ You should have received a copy of the GNU Affero General Public License
along with this program. If not, see .
*/
package gplx.xowa.parsers.tmpls; import gplx.*; import gplx.xowa.*; import gplx.xowa.parsers.*;
-import gplx.xowa.langs.*; import gplx.xowa.langs.vnts.*; import gplx.xowa.langs.cnvs.*;
+import gplx.xowa.langs.*; import gplx.xowa.langs.vnts.*; import gplx.xowa.langs.vnts.converts.*;
+import gplx.xowa.nss.*;
import gplx.xowa.wikis.caches.*; import gplx.xowa.xtns.scribunto.*; import gplx.xowa.xtns.pfuncs.*; import gplx.xowa.xtns.pfuncs.ttls.*; import gplx.xowa.pages.*;
import gplx.xowa.wikis.data.tbls.*;
import gplx.xowa.parsers.miscs.*;
@@ -67,7 +68,7 @@ public class Xot_invk_tkn extends Xop_tkn_itm_base implements Xot_invk {
name_had_subst = name_key_tkn.Dat_ary_had_subst();
name_ary_orig = name_ary; // cache name_ary_orig
name_ary_len = name_ary.length;
- name_bgn = Bry_finder.Find_fwd_while_not_ws(name_ary, 0, name_ary_len);
+ name_bgn = Bry_find_.Find_fwd_while_not_ws(name_ary, 0, name_ary_len);
if ( name_ary_len == 0 // name is blank; can occur with failed inner tmpl; EX: {{ {{does not exist}} }}
|| name_bgn == name_ary_len // name is ws; EX: {{test| }} -> {{{{{1}}}}}is whitespace String; PAGE:en.d:wear_one's_heart_on_one's_sleeve; EX:{{t+|fr|avoir le cœur sur la main| }}
) {
@@ -122,7 +123,7 @@ public class Xot_invk_tkn extends Xop_tkn_itm_base implements Xot_invk {
break;
case Xot_defn_.Tid_func:
if (defn.Defn_require_colon_arg()) {
- colon_pos = Bry_finder.Find_fwd(name_ary, Byte_ascii.Colon);
+ colon_pos = Bry_find_.Find_fwd(name_ary, Byte_ascii.Colon);
if (colon_pos == Bry_.NotFound)
defn = Xot_defn_.Null;
}
@@ -132,7 +133,7 @@ public class Xot_invk_tkn extends Xop_tkn_itm_base implements Xot_invk {
break;
case Xot_defn_.Tid_raw:
case Xot_defn_.Tid_msg:
- int raw_colon_pos = Bry_finder.Find_fwd(name_ary, Byte_ascii.Colon);
+ int raw_colon_pos = Bry_find_.Find_fwd(name_ary, Byte_ascii.Colon);
if (raw_colon_pos == Bry_.NotFound) {} // colon missing; EX: {{raw}}; noop and assume template name; DATE:2014-02-11
else { // colon present;
name_ary = Bry_.Mid(name_ary, finder.Subst_end() + 1, name_ary_len); // chop off "raw"; +1 is for ":"; note that +1 is in bounds b/c raw_colon was found
@@ -194,7 +195,7 @@ public class Xot_invk_tkn extends Xop_tkn_itm_base implements Xot_invk {
}
if ( defn.Defn_tid() == Xot_defn_.Tid_null // name is not a known defn
&& lang.Vnt_mgr().Enabled()) { // lang has vnts
- Xowd_page_itm page = lang.Vnt_mgr().Convert_ttl(wiki, wiki.Ns_mgr().Ns_template(), name_ary);
+ Xowd_page_itm page = lang.Vnt_mgr().Convert_mgr().Convert_ttl(wiki, wiki.Ns_mgr().Ns_template(), name_ary);
if (page != Xowd_page_itm.Null) {
name_ary = page.Ttl_page_db();
Xoa_ttl ttl = Xoa_ttl.parse(wiki, Bry_.Add(wiki.Ns_mgr().Ns_template().Name_db_w_colon(), name_ary));
@@ -265,7 +266,7 @@ public class Xot_invk_tkn extends Xop_tkn_itm_base implements Xot_invk {
prepend_mgr.End(ctx, bfr, rslt_bfr.Bfr(), rslt_bfr.Len(), Bool_.Y);
if (name_had_subst) { // current invk had "subst:"; parse incoming invk again to remove effects of subst; PAGE:pt.w:Argentina DATE:2014-09-24
byte[] tmp_src = rslt_bfr.Xto_bry_and_clear();
- rslt_bfr.Add(wiki.Parser().Parse_text_to_wtxt(tmp_src)); // this could be cleaner / more optimized
+ rslt_bfr.Add(wiki.Parser_mgr().Main().Parse_text_to_wtxt(tmp_src)); // this could be cleaner / more optimized
}
if (Cache_enabled) {
byte[] rslt_val = rslt_bfr.Xto_bry_and_clear();
@@ -350,7 +351,7 @@ public class Xot_invk_tkn extends Xop_tkn_itm_base implements Xot_invk {
}
}
if (transclude_src != null) {
- Xot_defn_tmpl transclude_tmpl = ctx.Wiki().Parser().Parse_text_to_defn_obj(ctx, ctx.Tkn_mkr(), page_ttl.Ns(), page_ttl.Page_db(), transclude_src);
+ Xot_defn_tmpl transclude_tmpl = ctx.Wiki().Parser_mgr().Main().Parse_text_to_defn_obj(ctx, ctx.Tkn_mkr(), page_ttl.Ns(), page_ttl.Page_db(), transclude_src);
return Eval_sub(ctx, transclude_tmpl, caller, src, bfr);
}
else {
@@ -375,7 +376,7 @@ public class Xot_invk_tkn extends Xop_tkn_itm_base implements Xot_invk {
if (tmpl_page_bry != null) {
byte old_parse_tid = ctx.Parse_tid(); // NOTE: reusing ctxs is a bad idea; will change Parse_tid and cause strange errors; however, keeping for PERF reasons
Xow_ns ns_tmpl = wiki.Ns_mgr().Ns_template();
- rv = wiki.Parser().Parse_text_to_defn_obj(ctx, ctx.Tkn_mkr(), ns_tmpl, name_ary, tmpl_page_bry);
+ rv = wiki.Parser_mgr().Main().Parse_text_to_defn_obj(ctx, ctx.Tkn_mkr(), ns_tmpl, name_ary, tmpl_page_bry);
byte[] frame_ttl = tmpl_page_itm.Ttl().Full_txt(); // NOTE: (1) must have ns (Full); (2) must be txt (space, not underscore); EX:Template:Location map+; DATE:2014-08-22
rv.Frame_ttl_(frame_ttl); // set defn's frame_ttl; needed for redirect_trg; PAGE:en.w:Statutory_city; DATE:2014-08-22
ctx.Parse_tid_(old_parse_tid);
@@ -406,7 +407,7 @@ public class Xot_invk_tkn extends Xop_tkn_itm_base implements Xot_invk {
Xow_page_cache_itm cache_itm = wiki.Cache_mgr().Page_cache().Get_or_load_as_itm(page_ttl);
if ( cache_itm != null) {
if (!Bry_.Eq(cache_itm.Ttl().Full_db(), ctx.Cur_page().Ttl().Full_db())) { // make sure that transcluded item is not same as page_ttl; DATE:2014-01-10
- transclude_tmpl = ctx.Wiki().Parser().Parse_text_to_defn_obj(ctx, ctx.Tkn_mkr(), page_ttl.Ns(), page_ttl.Page_db(), cache_itm.Wtxt());
+ transclude_tmpl = ctx.Wiki().Parser_mgr().Main().Parse_text_to_defn_obj(ctx, ctx.Tkn_mkr(), page_ttl.Ns(), page_ttl.Page_db(), cache_itm.Wtxt());
page_ttl = cache_itm.Ttl();
}
}
diff --git a/400_xowa/src/gplx/xowa/parsers/tmpls/Xot_invk_tkn_chkr.java b/400_xowa/src/gplx/xowa/parsers/tmpls/Xot_invk_tkn_chkr.java
index a5deb20e5..184f4dfaf 100644
--- a/400_xowa/src/gplx/xowa/parsers/tmpls/Xot_invk_tkn_chkr.java
+++ b/400_xowa/src/gplx/xowa/parsers/tmpls/Xot_invk_tkn_chkr.java
@@ -16,6 +16,7 @@ You should have received a copy of the GNU Affero General Public License
along with this program. If not, see .
*/
package gplx.xowa.parsers.tmpls; import gplx.*; import gplx.xowa.*; import gplx.xowa.parsers.*;
+import gplx.core.tests.*;
public class Xot_invk_tkn_chkr extends Xop_tkn_chkr_base {
@Override public Class> TypeOf() {return Xot_invk_tkn.class;}
@Override public byte Tkn_tid() {return Xop_tkn_itm_.Tid_tmpl_invk;}
diff --git a/400_xowa/src/gplx/xowa/parsers/tmpls/Xot_invk_wkr_basic_tst.java b/400_xowa/src/gplx/xowa/parsers/tmpls/Xot_invk_wkr_basic_tst.java
index 05694933c..6b9a6799f 100644
--- a/400_xowa/src/gplx/xowa/parsers/tmpls/Xot_invk_wkr_basic_tst.java
+++ b/400_xowa/src/gplx/xowa/parsers/tmpls/Xot_invk_wkr_basic_tst.java
@@ -16,7 +16,7 @@ You should have received a copy of the GNU Affero General Public License
along with this program. If not, see .
*/
package gplx.xowa.parsers.tmpls; import gplx.*; import gplx.xowa.*; import gplx.xowa.parsers.*;
-import org.junit.*; import gplx.xowa.wikis.ttls.*;
+import org.junit.*; import gplx.xowa.wikis.ttls.*; import gplx.xowa.nss.*;
public class Xot_invk_wkr_basic_tst {
private Xop_fxt fxt = new Xop_fxt();
@Before public void init() {fxt.Reset();}
diff --git a/400_xowa/src/gplx/xowa/parsers/tmpls/Xot_prm_chkr.java b/400_xowa/src/gplx/xowa/parsers/tmpls/Xot_prm_chkr.java
index 36401c7ad..83d12a94c 100644
--- a/400_xowa/src/gplx/xowa/parsers/tmpls/Xot_prm_chkr.java
+++ b/400_xowa/src/gplx/xowa/parsers/tmpls/Xot_prm_chkr.java
@@ -16,6 +16,7 @@ You should have received a copy of the GNU Affero General Public License
along with this program. If not, see .
*/
package gplx.xowa.parsers.tmpls; import gplx.*; import gplx.xowa.*; import gplx.xowa.parsers.*;
+import gplx.core.tests.*;
public class Xot_prm_chkr extends Xop_tkn_chkr_base {
@Override public Class> TypeOf() {return Xot_prm_tkn.class;}
@Override public byte Tkn_tid() {return Xop_tkn_itm_.Tid_tmpl_prm;}
diff --git a/400_xowa/src/gplx/xowa/parsers/utils/Xop_redirect_mgr.java b/400_xowa/src/gplx/xowa/parsers/utils/Xop_redirect_mgr.java
index 66e39f5b3..06e3f296c 100644
--- a/400_xowa/src/gplx/xowa/parsers/utils/Xop_redirect_mgr.java
+++ b/400_xowa/src/gplx/xowa/parsers/utils/Xop_redirect_mgr.java
@@ -16,7 +16,9 @@ You should have received a copy of the GNU Affero General Public License
along with this program. If not, see .
*/
package gplx.xowa.parsers.utils; import gplx.*; import gplx.xowa.*; import gplx.xowa.parsers.*;
+import gplx.langs.htmls.encoders.*;
import gplx.xowa.html.*; import gplx.xowa.html.hrefs.*; import gplx.xowa.parsers.tmpls.*;
+import gplx.xowa.langs.*;
public class Xop_redirect_mgr {
private final Xowe_wiki wiki; private final Url_encoder url_decoder; private Hash_adp_bry redirect_hash;
public Xop_redirect_mgr(Xowe_wiki wiki) {this.wiki = wiki; this.url_decoder = Xoa_app_.Utl__encoder_mgr().Http_url_ttl();} // NOTE: must be Url_ttl, not Url; PAGE:en.w:Template:Positionskarte+ -> Template:Location_map+, not Template:Location_map DATE:2014-08-21
@@ -33,7 +35,7 @@ public class Xop_redirect_mgr {
public Xoa_ttl Extract_redirect(byte[] src) {return Extract_redirect(src, src.length);}
public Xoa_ttl Extract_redirect(byte[] src, int src_len) { // NOTE: this proc is called by every page. be careful of changes; DATE:2014-07-05
if (src_len == 0) return Redirect_null_ttl;
- int bgn = Bry_finder.Find_fwd_while_not_ws(src, 0, src_len);
+ int bgn = Bry_find_.Find_fwd_while_not_ws(src, 0, src_len);
if (bgn == src_len) return Redirect_null_ttl; // article is entirely whitespace
int kwd_end = Xop_redirect_mgr_.Get_kwd_end_or_end(src, bgn, src_len);
if (kwd_end == src_len) return Redirect_null_ttl;
@@ -43,7 +45,7 @@ public class Xop_redirect_mgr {
int ttl_bgn = Xop_redirect_mgr_.Get_ttl_bgn_or_neg1(src, kwd_end, src_len);
if (ttl_bgn == Bry_.NotFound) return Redirect_null_ttl;
ttl_bgn += Xop_tkn_.Lnki_bgn.length;
- int ttl_end = Bry_finder.Find_fwd(src, Xop_tkn_.Lnki_end, ttl_bgn);
+ int ttl_end = Bry_find_.Find_fwd(src, Xop_tkn_.Lnki_end, ttl_bgn);
if (ttl_end == Bry_.NotFound) return Redirect_null_ttl;
byte[] redirect_bry = Bry_.Mid(src, ttl_bgn, ttl_end);
redirect_bry = url_decoder.Decode(redirect_bry); // NOTE: url-decode links; PAGE: en.w:Watcher_(Buffy_the_Vampire_Slayer); DATE:2014-08-18
diff --git a/400_xowa/src/gplx/xowa/parsers/utils/Xop_redirect_mgr_tst.java b/400_xowa/src/gplx/xowa/parsers/utils/Xop_redirect_mgr_tst.java
index 3eaed1c13..4a2ee3313 100644
--- a/400_xowa/src/gplx/xowa/parsers/utils/Xop_redirect_mgr_tst.java
+++ b/400_xowa/src/gplx/xowa/parsers/utils/Xop_redirect_mgr_tst.java
@@ -16,7 +16,7 @@ You should have received a copy of the GNU Affero General Public License
along with this program. If not, see .
*/
package gplx.xowa.parsers.utils; import gplx.*; import gplx.xowa.*; import gplx.xowa.parsers.*;
-import org.junit.*; import gplx.xowa.parsers.tmpls.*;
+import org.junit.*; import gplx.xowa.langs.*; import gplx.xowa.parsers.tmpls.*;
public class Xop_redirect_mgr_tst {
@Before public void init() {fxt.Clear();} private Xop_redirect_mgr_fxt fxt = new Xop_redirect_mgr_fxt();
@Test public void Basic() {fxt.Test_redirect("#REDIRECT [[a]]", "A");}
diff --git a/400_xowa/src/gplx/xowa/parsers/vnts/Vnt_converter_rule.java b/400_xowa/src/gplx/xowa/parsers/vnts/Vnt_converter_rule.java
new file mode 100644
index 000000000..24ac9d11f
--- /dev/null
+++ b/400_xowa/src/gplx/xowa/parsers/vnts/Vnt_converter_rule.java
@@ -0,0 +1,58 @@
+/*
+XOWA: the XOWA Offline Wiki Application
+Copyright (C) 2012 gnosygnu@gmail.com
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU Affero General Public License as
+published by the Free Software Foundation, either version 3 of the
+License, or (at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU Affero General Public License for more details.
+
+You should have received a copy of the GNU Affero General Public License
+along with this program. If not, see .
+*/
+package gplx.xowa.parsers.vnts; import gplx.*; import gplx.xowa.*; import gplx.xowa.parsers.*;
+import gplx.core.btries.*; import gplx.core.primitives.*;
+class Vnt_converter_rule { // REF.MW: /languages/LanguageConverter.php|ConverterRule
+ private final byte[] src;
+ private final int src_bgn, src_end;
+ private int pipe_pos = -1;
+ public Vnt_converter_rule(byte[] src, int src_bgn, int src_end) {
+ this.src = src; this.src_bgn = src_bgn; this.src_end = src_end;
+ }
+ public void Parse() {
+ }
+ public void Parse_flags(Vnt_flag_parser parser) {
+ this.pipe_pos = Bry_find_.Find_fwd(src, Byte_ascii.Pipe, src_bgn, src_end);
+ if (pipe_pos != Bry_find_.Not_found) // "|" found; EX: -{A|}-
+ parser.Parse(src, src_bgn, pipe_pos);
+ int flag_count = parser.Count();
+ if (flag_count == 0) parser.Set_y(Vnt_flag_itm_.Tid_show);
+ else if (parser.Limit_if_exists(Vnt_flag_itm_.Tid_raw)) {}
+ else if (parser.Limit_if_exists(Vnt_flag_itm_.Tid_name)) {}
+ else if (parser.Limit_if_exists(Vnt_flag_itm_.Tid_del)) {}
+ else if (flag_count == 1 && parser.Get(Vnt_flag_itm_.Tid_title)) parser.Set_y(Vnt_flag_itm_.Tid_macro);
+ else if (parser.Get(Vnt_flag_itm_.Tid_macro)) {
+ boolean exists_d = parser.Get(Vnt_flag_itm_.Tid_descrip);
+ boolean exists_t = parser.Get(Vnt_flag_itm_.Tid_title);
+ parser.Clear();
+ parser.Set_y_many(Vnt_flag_itm_.Tid_all, Vnt_flag_itm_.Tid_macro);
+ if (exists_d) parser.Set_y(Vnt_flag_itm_.Tid_descrip);
+ if (exists_t) parser.Set_y(Vnt_flag_itm_.Tid_title);
+ }
+ else {
+ if (parser.Get(Vnt_flag_itm_.Tid_add))
+ parser.Set_y_many(Vnt_flag_itm_.Tid_all, Vnt_flag_itm_.Tid_show);
+ if (parser.Get(Vnt_flag_itm_.Tid_descrip))
+ parser.Set_n(Vnt_flag_itm_.Tid_show);
+ parser.Limit_if_exists_vnts(); // try to find flags like "zh-hans", "zh-hant"; allow syntaxes like "-{zh-hans;zh-hant|XXXX}-"
+ }
+ }
+ public void Parse_rules(Vnt_rule_parser parser) {
+ parser.Parse(src, src_bgn, src_end);
+ }
+}
diff --git a/400_xowa/src/gplx/xowa/parsers/vnts/Vnt_flag_itm_.java b/400_xowa/src/gplx/xowa/parsers/vnts/Vnt_flag_itm_.java
new file mode 100644
index 000000000..6e3fa482e
--- /dev/null
+++ b/400_xowa/src/gplx/xowa/parsers/vnts/Vnt_flag_itm_.java
@@ -0,0 +1,52 @@
+/*
+XOWA: the XOWA Offline Wiki Application
+Copyright (C) 2012 gnosygnu@gmail.com
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU Affero General Public License as
+published by the Free Software Foundation, either version 3 of the
+License, or (at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU Affero General Public License for more details.
+
+You should have received a copy of the GNU Affero General Public License
+along with this program. If not, see .
+*/
+package gplx.xowa.parsers.vnts; import gplx.*; import gplx.xowa.*; import gplx.xowa.parsers.*;
+class Vnt_flag_itm_ {
+ public static final int
+ Tid_unknown = 0
+ , Tid_show = 1 // S: EX: -{S|zh-hans:A;zh-hant:B}- -> "A"
+ , Tid_all = 2 // +: EX: -{+|zh-hans:A;zh-hant:B}- -> "A"
+ , Tid_err = 3 // E: EX: -{E|zh-hans:A;zh-hant:B}- -> "A"
+ , Tid_add = 4 // A: add and output; EX: -{A|zh-hans:A;zh-hant:B}- -> "A"
+ , Tid_title = 5 // T: page_title; EX: -{T|zh-hans:A;zh-hant:B}- -> ""
+ , Tid_raw = 6 // R: raw: no convert; EX: -{R|zh-hans:A;zh-hant:B}- -> "zh-hans:A;zh-hant:B"
+ , Tid_descrip = 7 // D: describe; EX: -{D|zh-hans:A;zh-hant:B}- -> "简体:A;繁體:B;" (简体=Simplified;繁體=Traditional)
+ , Tid_del = 8 // -: remove; EX: -{-|zh-hans:A;zh-hant:B}- -> ""
+ , Tid_macro = 9 // H: macro; EX: -{H|zh-hans:A;zh-hant:B}- -> ""
+ , Tid_name = 10 // N: EX: -{N|zh-hans:A;zh-hant:B}- -> ""
+ , Tid_lang = 11 // vnt: EX: -{zh-hant|B}- -> "B"
+ , Tid__max = 12
+ ;
+ private static final String[] Tid__names = new String[]
+ { "unknown", "show", "all", "err", "add", "title"
+ , "raw", "descrip", "del", "macro", "name", "lang"
+ };
+ public static String To_name(int tid) {return Tid__names[tid];}
+ public static final Hash_adp_bry Regy = Hash_adp_bry.ci_a7() // NOTE: match either lc or uc; EX: -{D}- or -{d}-;
+ .Add_byte_int(Byte_ascii.Ltr_S , Tid_show)
+ .Add_byte_int(Byte_ascii.Plus , Tid_all)
+ .Add_byte_int(Byte_ascii.Ltr_E , Tid_err)
+ .Add_byte_int(Byte_ascii.Ltr_A , Tid_add)
+ .Add_byte_int(Byte_ascii.Ltr_T , Tid_title)
+ .Add_byte_int(Byte_ascii.Ltr_R , Tid_raw)
+ .Add_byte_int(Byte_ascii.Ltr_D , Tid_descrip)
+ .Add_byte_int(Byte_ascii.Dash , Tid_del)
+ .Add_byte_int(Byte_ascii.Ltr_H , Tid_macro)
+ .Add_byte_int(Byte_ascii.Ltr_N , Tid_name)
+ ;
+}
diff --git a/400_xowa/src/gplx/xowa/parsers/vnts/Vnt_flag_parser.java b/400_xowa/src/gplx/xowa/parsers/vnts/Vnt_flag_parser.java
new file mode 100644
index 000000000..ba4981bb7
--- /dev/null
+++ b/400_xowa/src/gplx/xowa/parsers/vnts/Vnt_flag_parser.java
@@ -0,0 +1,67 @@
+/*
+XOWA: the XOWA Offline Wiki Application
+Copyright (C) 2012 gnosygnu@gmail.com
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU Affero General Public License as
+published by the Free Software Foundation, either version 3 of the
+License, or (at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU Affero General Public License for more details.
+
+You should have received a copy of the GNU Affero General Public License
+along with this program. If not, see .
+*/
+package gplx.xowa.parsers.vnts; import gplx.*; import gplx.xowa.*; import gplx.xowa.parsers.*;
+class Vnt_flag_parser implements gplx.core.brys.Bry_split_wkr {
+ private final Hash_adp_bry flag_regy = Vnt_flag_itm_.Regy;
+ private final Hash_adp_bry vnt_regy = Hash_adp_bry.cs();
+ private final boolean[] flag_ary = new boolean[Vnt_flag_itm_.Tid__max];
+ private int count = 0;
+ public int Count() {return count;}
+ public boolean Get(int tid) {return flag_ary[tid];}
+ public void Set_y(int tid) {flag_ary[tid] = Bool_.Y;}
+ public void Set_y_many(int... ary) {
+ int len = ary.length;
+ for (int i = 0; i < len; ++i)
+ flag_ary[ary[i]] = Bool_.Y;
+ }
+ public void Set_n(int tid) {flag_ary[tid] = Bool_.N;}
+ public void Limit(int tid) {
+ for (int i = 0; i < Vnt_flag_itm_.Tid__max; ++i) {
+ if (i != tid) flag_ary[i] = false;
+ }
+ }
+ public boolean Limit_if_exists(int tid) {
+ boolean exists = flag_ary[tid]; if (!exists) return false;
+ for (int i = 0; i < Vnt_flag_itm_.Tid__max; ++i) {
+ if (i != tid) flag_ary[i] = false;
+ }
+ return true;
+ }
+ public boolean Limit_if_exists_vnts() {
+ return false;
+ }
+ public void Clear() {
+ count = 0;
+ for (int i = 0; i < Vnt_flag_itm_.Tid__max; ++i)
+ flag_ary[i] = false;
+ }
+ public void Parse(byte[] src, int src_bgn, int src_end) {
+ this.Clear();
+ Bry_split_.Split(src, Byte_ascii.Semic, true, this);
+ }
+ public int Split(byte[] src, int itm_bgn, int itm_end) {
+ int flag_tid = flag_regy.Get_as_int_or(src, itm_bgn, itm_end, -1);
+ if (flag_tid == -1) {
+ int vnt_tid = vnt_regy.Get_as_int_or(src, itm_bgn, itm_end, -1);
+ if (vnt_tid == -1) return Bry_split_.Rv__ok; // unknown flag; ignore
+ }
+ flag_ary[flag_tid] = true;
+ ++count;
+ return Bry_split_.Rv__ok;
+ }
+}
diff --git a/400_xowa/src/gplx/xowa/parsers/vnts/Vnt_language_converter.java b/400_xowa/src/gplx/xowa/parsers/vnts/Vnt_language_converter.java
new file mode 100644
index 000000000..5f502246e
--- /dev/null
+++ b/400_xowa/src/gplx/xowa/parsers/vnts/Vnt_language_converter.java
@@ -0,0 +1,110 @@
+/*
+XOWA: the XOWA Offline Wiki Application
+Copyright (C) 2012 gnosygnu@gmail.com
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU Affero General Public License as
+published by the Free Software Foundation, either version 3 of the
+License, or (at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU Affero General Public License for more details.
+
+You should have received a copy of the GNU Affero General Public License
+along with this program. If not, see .
+*/
+package gplx.xowa.parsers.vnts; import gplx.*; import gplx.xowa.*; import gplx.xowa.parsers.*;
+import gplx.core.btries.*; import gplx.core.primitives.*;
+public class Vnt_language_converter {
+ private final Bry_bfr bfr = Bry_bfr.new_();
+ private int max_depth = 32;
+ private byte[] src; private int src_len;
+ private boolean convert_needed;
+ private int pos;
+ public byte[] Parse(byte[] vnt, byte[] src) {// REF.MW:/languages/LanguageConverter.php!recursiveConvertTopLevel
+ synchronized (bfr) {
+ int markup_count = 0;
+ this.pos = 0;
+ this.convert_needed = false; // for sr lang; SEE:LanguageSr.php !$this->guessVariant(src, vnt);
+ this.src = src; this.src_len = src.length;
+ while (pos < src_len) {
+ int curly_bgn = Bry_find_.Find_fwd(src, Bry__curly_bgn, pos, src_len);
+ if (curly_bgn == Bry_find_.Not_found) { // No more markup, append final segment
+ if (markup_count == 0) return src; // no markups found; just return original
+ Add_output(vnt, convert_needed, src, pos, src_len);
+ return bfr.Xto_bry_and_clear();
+ }
+ bfr.Add_mid(src, pos, curly_bgn); // Markup found; append segment
+ Add_output(vnt, convert_needed, src, pos, src_len);
+ pos = curly_bgn; // Advance position
+ ++markup_count;
+ Parse_recursive(vnt, pos, 1); // Do recursive conversion
+ }
+ return bfr.Xto_bry_and_clear();
+ }
+ }
+ private void Parse_recursive(byte[] vnt, int pos, int depth) {
+ pos += 2; // skip "-{"
+ boolean warning_done = false;
+ // $inner = '';
+ while (pos < src_len) {
+ byte b = src[pos];
+ Object o = trie.Match_bgn_w_byte(b, src,pos, src_len);
+ if (o == null) { // char;
+ ++pos;
+ continue;
+ }
+ int new_pos = trie.Match_pos(); // Markup found; Append initial segment
+ bfr.Add_mid(src, pos, new_pos);
+ pos = new_pos; // Advance position
+ switch (((Byte_obj_val)o).Val()) {
+ case Tid__curly_bgn:
+ if (depth >= max_depth) {
+ bfr.Add(Bry__curly_bgn);
+ if (!warning_done) {
+ bfr.Add_str("");
+ // wfMessage('language-converter-depth-warning')->numParams($this->mMaxDepth)->inContentLanguage()->text()
+ bfr.Add_str("");
+ warning_done = true;
+ }
+ pos += 2; // skip "-{"
+ continue;
+ }
+ Parse_recursive(vnt, pos, depth + 1); // Recursively parse another rule
+ break;
+ case Tid__curly_end:
+ pos += 2;
+ /*
+ // Apply the rule
+ $rule = new ConverterRule($inner, $this);
+ $rule->parse($variant);
+ $this->applyManualConv($rule);
+ return $rule->getDisplay();
+ */
+ return;
+ default: throw Err_.new_unhandled(-1); // never happens
+ }
+ }
+ if (pos < src_len) { // Unclosed rule
+ byte[] frag = Auto_convert(vnt, src, pos, src_len);
+ bfr.Add(Bry__curly_bgn).Add(frag);
+ }
+ pos = src_len;
+ }
+ private void Add_output(byte[] vnt, boolean convert_needed, byte[] src, int pos, int src_len) {
+ if (convert_needed) {
+ byte[] frag = Auto_convert(vnt, src, pos, src_len);
+ bfr.Add(frag);
+ }
+ else
+ bfr.Add_mid(src, pos, src_len);
+ }
+ private byte[] Auto_convert(byte[] vnt, byte[] src, int bgn, int end) {return src;}
+ private static final byte Tid__curly_bgn = 1, Tid__curly_end = 2;
+ private static final byte[] Bry__curly_bgn = Bry_.new_a7("-{"), Bry__curly_end = Bry_.new_a7("}-");
+ private static final Btrie_fast_mgr trie = Btrie_fast_mgr.cs()
+ .Add_bry_byte(Bry__curly_bgn, Tid__curly_bgn)
+ .Add_bry_byte(Bry__curly_end, Tid__curly_end);
+}
diff --git a/400_xowa/src/gplx/xowa/parsers/vnts/Vnt_rule_parser.java b/400_xowa/src/gplx/xowa/parsers/vnts/Vnt_rule_parser.java
new file mode 100644
index 000000000..6456576e2
--- /dev/null
+++ b/400_xowa/src/gplx/xowa/parsers/vnts/Vnt_rule_parser.java
@@ -0,0 +1,61 @@
+/*
+XOWA: the XOWA Offline Wiki Application
+Copyright (C) 2012 gnosygnu@gmail.com
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU Affero General Public License as
+published by the Free Software Foundation, either version 3 of the
+License, or (at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU Affero General Public License for more details.
+
+You should have received a copy of the GNU Affero General Public License
+along with this program. If not, see .
+*/
+package gplx.xowa.parsers.vnts; import gplx.*; import gplx.xowa.*; import gplx.xowa.parsers.*;
+import gplx.core.btries.*;
+class Vnt_rule_parser implements gplx.core.brys.Bry_split_wkr {
+// private final Btrie_slim_mgr vnt_trie = Btrie_slim_mgr.ci_a7();
+ public void Parse(byte[] src, int src_bgn, int src_end) {
+ Bry_split_.Split(src, Byte_ascii.Semic, false, this); // trim=false for "entity;" check below
+ }
+ public int Split(byte[] src, int itm_bgn, int itm_end) {
+ int html_entity_pos = Bry_find_.Find_bwd_while_alphanum(src, itm_bgn);
+ if (Bry_.Eq(src, html_entity_pos - 2, html_entity_pos, Bry__html_entity)) return Bry_split_.Rv__extend; // reject "entity;"; EX: " zh-hans;"
+ /*
+ itm_bgn = skip fwd for ws;
+ itm_bgn = skip fwd for "=>"
+ Object vnt_obj = vnt_trie.Match_bgn(src, itm_bgn, itm_end); if (vnt_obj == null) return Bry_split_.Rv__extend; // reject ";not_variant"; EX: ";border" in "zh-hans:;zh-hant:"
+ itm_end = skip bwd for ws
+// val = trim( val[0] );
+// trg = trim( val[1] );
+// $u = explode( '=>', val, 2 );
+// // if trg is empty, strtr() could return a wrong result
+// if ( count( $u ) == 1 && trg && in_array( val, $variants ) ) {
+// bidi_ary[val] = trg;
+// } elseif ( count( $u ) == 2 ) {
+// $from = trim( $u[0] );
+// val = trim( $u[1] );
+// if ( array_key_exists( val, $unidtable )
+// && !is_array( $unidtable[val] )
+// && trg
+// && in_array( val, $variants ) ) {
+// $unidtable[val] = array( $from => trg );
+// } elseif ( trg && in_array( val, $variants ) ) {
+// $unidtable[val][$from] = trg;
+// }
+// }
+// // syntax error, pass
+// if ( !isset( $this->mConverter->mVariantNames[val] ) ) {
+// bidi_ary = array();
+// $unidtable = array();
+// break;
+// }
+ */
+ return Bry_split_.Rv__ok;
+ }
+ private static final byte[] Bry__html_entity = Bry_.new_a7("");
+}
diff --git a/400_xowa/src/gplx/xowa/langs/vnts/Xop_vnt_eqgt_tkn.java b/400_xowa/src/gplx/xowa/parsers/vnts/Xop_vnt_eqgt_tkn.java
similarity index 82%
rename from 400_xowa/src/gplx/xowa/langs/vnts/Xop_vnt_eqgt_tkn.java
rename to 400_xowa/src/gplx/xowa/parsers/vnts/Xop_vnt_eqgt_tkn.java
index 3bb5cc76c..8374a00ed 100644
--- a/400_xowa/src/gplx/xowa/langs/vnts/Xop_vnt_eqgt_tkn.java
+++ b/400_xowa/src/gplx/xowa/parsers/vnts/Xop_vnt_eqgt_tkn.java
@@ -15,9 +15,8 @@ GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see .
*/
-package gplx.xowa.langs.vnts; import gplx.*; import gplx.xowa.*; import gplx.xowa.langs.*;
-import gplx.xowa.parsers.*;
-public class Xop_vnt_eqgt_tkn extends Xop_tkn_itm_base {
+package gplx.xowa.parsers.vnts; import gplx.*; import gplx.xowa.*; import gplx.xowa.parsers.*;
+public class Xop_vnt_eqgt_tkn extends Xop_tkn_itm_base { // "=>"
public Xop_vnt_eqgt_tkn(int bgn, int end) {this.Tkn_ini_pos(false, bgn, end);}
@Override public byte Tkn_tid() {return Xop_tkn_itm_.Tid_vnt_eqgt;}
}
diff --git a/400_xowa/src/gplx/xowa/langs/vnts/Xop_vnt_flag.java b/400_xowa/src/gplx/xowa/parsers/vnts/Xop_vnt_flag.java
similarity index 57%
rename from 400_xowa/src/gplx/xowa/langs/vnts/Xop_vnt_flag.java
rename to 400_xowa/src/gplx/xowa/parsers/vnts/Xop_vnt_flag.java
index 9808a188c..bbc4502f6 100644
--- a/400_xowa/src/gplx/xowa/langs/vnts/Xop_vnt_flag.java
+++ b/400_xowa/src/gplx/xowa/parsers/vnts/Xop_vnt_flag.java
@@ -15,17 +15,18 @@ GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see .
*/
-package gplx.xowa.langs.vnts; import gplx.*; import gplx.xowa.*; import gplx.xowa.langs.*;
+package gplx.xowa.parsers.vnts; import gplx.*; import gplx.xowa.*; import gplx.xowa.parsers.*;
import gplx.core.btries.*;
public class Xop_vnt_flag {
- public Xop_vnt_flag(byte tid) {this.tid = tid; this.langs = Bry_.Ary_empty;}
- public Xop_vnt_flag(byte tid, byte[][] langs) {this.tid = tid; this.langs = langs;}
- public byte Tid() {return tid;} private byte tid;
- public byte[][] Langs() {return langs;} private byte[][] langs;
+ public Xop_vnt_flag(int tid) {this.tid = tid; this.mask = 0;}
+ public Xop_vnt_flag(int tid, int mask) {this.tid = tid; this.mask = mask;}
+ public int Tid() {return tid;} private final int tid;
+ public int Mask() {return mask;} private final int mask;
+ public static Xop_vnt_flag new_lang(int mask) {return new Xop_vnt_flag(Xop_vnt_flag_.Tid_lang, mask);}
}
-class Xop_vnt_flag_ {
+class Xop_vnt_flag_ { // REF.MW: /languages/LanguageConverter.php
public static final Xop_vnt_flag[] Ary_empty = new Xop_vnt_flag[0];
- public static final byte
+ public static final int
Tid_unknown = 0
, Tid_show = 1 // EX: -{S|zh-hans:A;zh-hant:B}- -> "A"
, Tid_all = 2 // EX: -{+|zh-hans:A;zh-hant:B}- -> "A"
@@ -38,37 +39,14 @@ class Xop_vnt_flag_ {
, Tid_macro = 9 // macro; EX: -{H|zh-hans:A;zh-hant:B}- -> ""
, Tid_name = 10 // EX: -{N|zh-hans:A;zh-hant:B}- -> ""
, Tid_lang = 11 // EX: -{zh-hant|B}- -> "B"
- ;
- public static String Xto_name(byte tid) {
- switch (tid) {
- case Tid_unknown: return "unknown";
- case Tid_show : return "show";
- case Tid_all : return "all";
- case Tid_err : return "err";
- case Tid_add : return "add";
- case Tid_title : return "title";
- case Tid_raw : return "raw";
- case Tid_descrip: return "descrip";
- case Tid_del : return "del";
- case Tid_macro : return "macro";
- case Tid_name : return "name";
- case Tid_lang : return "lang";
- default : throw Err_.new_unhandled(tid);
- }
- }
- public static final byte Tid__max = 12;
- public static final byte
- Key_show = Byte_ascii.Ltr_S
- , Key_all = Byte_ascii.Plus
- , Key_err = Byte_ascii.Ltr_E
- , Key_add = Byte_ascii.Ltr_A
- , Key_title = Byte_ascii.Ltr_T
- , Key_raw = Byte_ascii.Ltr_R
- , Key_descrip = Byte_ascii.Ltr_D
- , Key_del = Byte_ascii.Dash
- , Key_macro = Byte_ascii.Ltr_H
- , Key_name = Byte_ascii.Ltr_N
+ , Tid_len = 12
;
+ public static final byte Tid__max = 12;
+ private static final String[] Tid__names = new String[]
+ { "unknown", "show", "all", "err", "add", "title"
+ , "raw", "descrip", "del", "macro", "name", "lang"
+ };
+ public static String To_name(int tid) {return Tid__names[tid];}
public static final Xop_vnt_flag
Flag_unknown = new Xop_vnt_flag(Tid_unknown)
, Flag_show = new Xop_vnt_flag(Tid_show)
@@ -94,31 +72,4 @@ class Xop_vnt_flag_ {
.Add(Byte_ascii.Ltr_H , Xop_vnt_flag_.Flag_macro)
.Add(Byte_ascii.Ltr_N , Xop_vnt_flag_.Flag_name)
;
- public static Xop_vnt_flag new_langs_(byte[][] langs) {return new Xop_vnt_flag(Tid_lang, langs);}
-}
-class Xop_vnt_flag_ary_bldr {
- private Xop_vnt_flag[] ary = new Xop_vnt_flag[Xop_vnt_flag_.Tid__max];
- private int add_count = 0;
- public void Clear() {
- for (int i = 0; i < Xop_vnt_flag_.Tid__max; i++)
- ary[i] = null;
- add_count = 0;
- }
- public void Add(Xop_vnt_flag flag) {
- int idx = flag.Tid();
- if (ary[idx] == null) {
- ary[idx] = flag;
- ++add_count;
- }
- }
- public Xop_vnt_flag[] Bld() {
- Xop_vnt_flag[] rv = new Xop_vnt_flag[add_count];
- int rv_idx = 0;
- for (int i = 0; i < Xop_vnt_flag_.Tid__max; i++) {
- Xop_vnt_flag itm = ary[i];
- if (itm != null)
- rv[rv_idx++] = itm;
- }
- return rv;
- }
}
diff --git a/400_xowa/src/gplx/xowa/langs/vnts/Xop_vnt_flag_parser.java b/400_xowa/src/gplx/xowa/parsers/vnts/Xop_vnt_flag_parser.java
similarity index 56%
rename from 400_xowa/src/gplx/xowa/langs/vnts/Xop_vnt_flag_parser.java
rename to 400_xowa/src/gplx/xowa/parsers/vnts/Xop_vnt_flag_parser.java
index 63efcfa0d..2c738ef84 100644
--- a/400_xowa/src/gplx/xowa/langs/vnts/Xop_vnt_flag_parser.java
+++ b/400_xowa/src/gplx/xowa/parsers/vnts/Xop_vnt_flag_parser.java
@@ -15,43 +15,36 @@ GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see .
*/
-package gplx.xowa.langs.vnts; import gplx.*; import gplx.xowa.*; import gplx.xowa.langs.*;
+package gplx.xowa.parsers.vnts; import gplx.*; import gplx.xowa.*; import gplx.xowa.parsers.*;
import gplx.core.btries.*;
-import gplx.xowa.parsers.*;
+import gplx.xowa.langs.vnts.*;
class Xop_vnt_flag_parser {
- private Xop_vnt_flag_lang_bldr flag_lang_bldr;
- public Xop_vnt_flag_parser(Xol_vnt_mgr vnt_mgr) {flag_lang_bldr = new Xop_vnt_flag_lang_bldr(vnt_mgr);}
- private void Clear() {
- flag_lang_bldr.Clear();
- }
- public int Rslt_tkn_pos() {return rslt_tkn_pos;} private int rslt_tkn_pos;
- public int Rslt_pipe_last() {return rslt_pipe_last;} private int rslt_pipe_last;
- public Xop_vnt_flag[] Rslt_flags() {return rslt_flags;} private Xop_vnt_flag[] rslt_flags;
+ private final Xop_vnt_lang_bldr flag_lang_bldr;
+ private final Xol_vnt_regy vnt_regy;
+ public Xop_vnt_flag_parser(Xol_vnt_mgr vnt_mgr) {this.flag_lang_bldr = new Xop_vnt_lang_bldr(vnt_mgr); this.vnt_regy = vnt_mgr.Regy();}
+ public int Rslt_tkn_pos() {return rslt_tkn_pos;} private int rslt_tkn_pos;
+ public int Rslt_pipe_last() {return rslt_pipe_last;} private int rslt_pipe_last;
+ public Xop_vnt_flag[] Rslt_flags() {return rslt_flags;} private Xop_vnt_flag[] rslt_flags;
public void Parse(Xowe_wiki wiki, Xoa_url page_url, Xop_vnt_tkn vnt_tkn, int pipe_tkn_count, byte[] src) {
- this.Clear();
- rslt_flags = new Xop_vnt_flag[pipe_tkn_count];
+ flag_lang_bldr.Clear();
int rv_idx = 0;
int subs_len = vnt_tkn.Subs_len();
+ this.rslt_flags = new Xop_vnt_flag[pipe_tkn_count];
+ this.rslt_tkn_pos = 0;
Bry_bfr flag_bfr = wiki.Utl__bfr_mkr().Get_b128();
- rslt_tkn_pos = 0;
boolean loop = true;
- while (true) {
+ while (loop) {
Xop_tkn_itm sub = vnt_tkn.Subs_get(rslt_tkn_pos);
switch (sub.Tkn_tid()) {
- case Xop_tkn_itm_.Tid_txt:
- flag_bfr.Add_mid(src, sub.Src_bgn(), sub.Src_end());
- break;
+ case Xop_tkn_itm_.Tid_space: case Xop_tkn_itm_.Tid_tab: case Xop_tkn_itm_.Tid_newLine: break; // skip ws
+ case Xop_tkn_itm_.Tid_txt: flag_bfr.Add_mid(src, sub.Src_bgn(), sub.Src_end()); break; // just add text
case Xop_tkn_itm_.Tid_pipe:
rslt_flags[rv_idx++] = Parse_flag_bry(flag_bfr.Xto_bry_and_clear());
if (rv_idx == pipe_tkn_count) {
loop = false;
rslt_pipe_last = sub.Src_end();
}
- break;
- case Xop_tkn_itm_.Tid_space:
- case Xop_tkn_itm_.Tid_tab:
- case Xop_tkn_itm_.Tid_newLine: // skip ws
- break;
+ break;
default:
wiki.Appe().Usr_dlg().Log_many("", "", "unknown tkn in vnt flag; url=~{0} tid=~{1} txt=~{2}", page_url.To_str(), sub.Tkn_tid(), String_.new_u8(src, sub.Src_bgn(), sub.Src_end()));
flag_bfr.Add_mid(src, sub.Src_bgn(), sub.Src_end());
@@ -59,54 +52,41 @@ class Xop_vnt_flag_parser {
}
++rslt_tkn_pos;
if (rslt_tkn_pos == subs_len) break;
- if (!loop) break;
}
flag_bfr.Mkr_rls();
}
private Xop_vnt_flag Parse_flag_bry(byte[] bry) {
- int bry_len = bry.length;
- if (bry_len == 0) return Xop_vnt_flag_.Flag_unknown; // EX: exit early if 0 len, else trie will fail; EX: "-{|}-"
+ int bry_len = bry.length; if (bry_len == 0) return Xop_vnt_flag_.Flag_unknown; // EX: exit early if 0 len, else trie will fail; EX: "-{|}-"
Object flag_obj = flag_trie.Match_exact(bry, 0, bry_len);
return flag_obj == null
? Parse_flag_vnts(bry, bry_len) // unknown tid sequence; either (a) "lang" cmd ("-{zh-hans;zh-hant|a}-") or (b) invalid cmd ("-{X|a}-")
: (Xop_vnt_flag)flag_obj; // known flag; check that next non_ws is |
}
private Xop_vnt_flag Parse_flag_vnts(byte[] bry, int bry_len) {
- boolean loop = true;
int vnt_pos = 0;
- Btrie_slim_mgr trie = flag_lang_bldr.Trie();
+ boolean loop = true;
+ Btrie_slim_mgr trie = vnt_regy.Trie();
while (loop) {
- boolean last = false;
- boolean valid = true;
+ boolean last = false, valid = true;
Object vnt_obj = trie.Match_bgn(bry, vnt_pos, bry_len);
if (vnt_obj == null) break; // no more vnts found; stop
vnt_pos = trie.Match_pos(); // update pos to end of vnt
- int semic_pos = Bry_finder.Find_fwd_while_not_ws(bry, vnt_pos, bry_len);
+ int semic_pos = Bry_find_.Find_fwd_while_not_ws(bry, vnt_pos, bry_len);
if (semic_pos == bry_len) // note that Find_fwd_non_ws will return bry_len if no non-ws found;
last = true;
else { // char found; make sure it is semic
- if (bry[semic_pos] != Byte_ascii.Semic) { // invalid vnt; ignore; EX: -{zh-hansx|}-
+ if (bry[semic_pos] != Byte_ascii.Semic) // invalid vnt; ignore; EX: -{zh-hansx|}-
valid = false;
- }
vnt_pos = semic_pos + 1; // update pos to after semic
if (vnt_pos == bry_len) last = true; // EX: "a;"
}
if (valid)
- flag_lang_bldr.Add((Xop_vnt_flag_lang_itm)vnt_obj);
- else // invalid entry clears list; EX: -{zh-hans;zh-bad}-
+ flag_lang_bldr.Add(((Xol_vnt_itm)vnt_obj).Key());
+ else // invalid entry clears list; EX: -{zh-hans;zh-bad}-
flag_lang_bldr.Clear();
if (last) break;
}
return flag_lang_bldr.Bld();
}
- private static Btrie_fast_mgr flag_trie = Xop_vnt_flag_.Trie;
-// private static final byte Dlm_tid_bgn = 0, Dlm_tid_end = 1, Dlm_tid_pipe = 2, Dlm_tid_colon = 3, Dlm_tid_semic = 4, Dlm_tid_kv = 5;
-// private static Btrie_fast_mgr dlm_trie = Btrie_fast_mgr.cs()
-// .Add_bry_byte(Xop_vnt_lxr_.Hook_bgn , Dlm_tid_bgn)
-// .Add_bry_byte(Xop_vnt_lxr_.Hook_end , Dlm_tid_end)
-// .Add_bry_byte(Byte_ascii.Pipe , Dlm_tid_pipe)
-// .Add_bry_byte(Byte_ascii.Colon , Dlm_tid_colon)
-// .Add_bry_byte(Byte_ascii.Semic , Dlm_tid_semic)
-// .Add_bry_byte(Bry_.new_a7("=>") , Dlm_tid_kv)
-// ;
+ private static final Btrie_fast_mgr flag_trie = Xop_vnt_flag_.Trie;
}
diff --git a/400_xowa/src/gplx/xowa/langs/vnts/Xop_vnt_html_wtr.java b/400_xowa/src/gplx/xowa/parsers/vnts/Xop_vnt_html_wtr.java
similarity index 67%
rename from 400_xowa/src/gplx/xowa/langs/vnts/Xop_vnt_html_wtr.java
rename to 400_xowa/src/gplx/xowa/parsers/vnts/Xop_vnt_html_wtr.java
index 9800a02bd..868b1df49 100644
--- a/400_xowa/src/gplx/xowa/langs/vnts/Xop_vnt_html_wtr.java
+++ b/400_xowa/src/gplx/xowa/parsers/vnts/Xop_vnt_html_wtr.java
@@ -15,13 +15,13 @@ GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see .
*/
-package gplx.xowa.langs.vnts; import gplx.*; import gplx.xowa.*; import gplx.xowa.langs.*;
-import gplx.xowa.html.*;
-import gplx.xowa.parsers.*;
+package gplx.xowa.parsers.vnts; import gplx.*; import gplx.xowa.*; import gplx.xowa.parsers.*;
+import gplx.xowa.html.*; import gplx.xowa.langs.vnts.*;
public class Xop_vnt_html_wtr {
public static void Write(Bry_bfr bfr, Xoh_html_wtr html_wtr, Xop_ctx ctx, Xoh_wtr_ctx hctx, Xoae_page page, byte[] src, Xop_vnt_tkn vnt) {
- byte[] cur_lang_vnt = ctx.Wiki().Lang().Vnt_mgr().Cur_vnt();
- Xop_vnt_rule[] rules = vnt.Vnt_rules(); if (rules == null) return; // shouldn't happen, but guard anyway
+ Xol_vnt_mgr vnt_mgr = ctx.Wiki().Lang().Vnt_mgr(); Xol_vnt_regy vnt_regy = vnt_mgr.Regy();
+ byte[] cur_lang_vnt = vnt_mgr.Cur_key();
+ Xop_vnt_rule_tkn[] rules = vnt.Vnt_rules(); if (rules == null) return; // shouldn't happen, but guard anyway
int rules_len = rules.length;
switch (vnt.Vnt_cmd()) {
case Xop_vnt_html_wtr.Cmd_empty: break; // nothing: ""
@@ -29,27 +29,20 @@ public class Xop_vnt_html_wtr {
bfr.Add_mid(src, vnt.Src_bgn(), vnt.Src_end());
break;
case Xop_vnt_html_wtr.Cmd_literal: { // val only; "A"
- Xop_vnt_rule rule_0 = rules[0]; // Cmd_calc guarantees there will always be 1 item
+ Xop_vnt_rule_tkn rule_0 = rules[0]; // Cmd_calc guarantees there will always be 1 item
html_wtr.Write_tkn_ary(bfr, ctx, hctx, src, rule_0.Rule_subs());
break;
}
case Xop_vnt_html_wtr.Cmd_bidi: { // matching rule: "A" if zh-hans; -{zh-hans:A}-
- Xop_vnt_rule rule = Get_rule_by_key(rules, rules_len, cur_lang_vnt);
+ Xop_vnt_rule_tkn rule = Get_rule_by_key(vnt_mgr, vnt_regy, rules, rules_len, cur_lang_vnt);
if (rule != null) html_wtr.Write_tkn_ary(bfr, ctx, hctx, src, rule.Rule_subs());
break;
}
case Xop_vnt_html_wtr.Cmd_lang: { // matching lang: "A" if zh-hans; -{zh-hans|A}-
- Xop_vnt_rule rule_0 = rules[0]; // Cmd_calc guarantees there will always be 1 rule
+ Xop_vnt_rule_tkn rule_0 = rules[0]; // Cmd_calc guarantees there will always be 1 rule
Xop_vnt_flag flag_0 = vnt.Vnt_flags()[0]; // parse guarantees there will always be 1 flag
- byte[][] langs = flag_0.Langs();
- int flags_len = langs.length;
- for (int i = 0; i < flags_len; i++) {
- byte[] lang = langs[i];
- if (Bry_.Eq(lang, cur_lang_vnt)) {
- html_wtr.Write_tkn_ary(bfr, ctx, hctx, src, rule_0.Rule_subs());
- break;
- }
- }
+ if (vnt_regy.Mask__match_any(flag_0.Mask(), vnt_mgr.Cur_itm().Mask__fallbacks()))
+ html_wtr.Write_tkn_ary(bfr, ctx, hctx, src, rule_0.Rule_subs());
break;
}
case Xop_vnt_html_wtr.Cmd_raw: { // raw; everything between last flag and }-: "-{R|zh-hans:A;zh-hant:B}- -> "zh-hans:A;zh-hant:B"
@@ -57,16 +50,17 @@ public class Xop_vnt_html_wtr {
break;
}
case Xop_vnt_html_wtr.Cmd_descrip: { // descrip; similar to raw, but use localized lang
-// bfr.Add_mid(src, vnt.Vnt_pipe_idx_last(), vnt.Src_end() - 2);
+ // bfr.Add_mid(src, vnt.Vnt_pipe_idx_last(), vnt.Src_end() - 2);
break;
}
case Xop_vnt_html_wtr.Cmd_title: break; // title: ignore; already handled during parse; DATE:2014-08-29
}
}
- public static Xop_vnt_rule Get_rule_by_key(Xop_vnt_rule[] rules, int rules_len, byte[] cur_lang_vnt) {
+ public static Xop_vnt_rule_tkn Get_rule_by_key(Xol_vnt_mgr vnt_mgr, Xol_vnt_regy vnt_regy, Xop_vnt_rule_tkn[] rules, int rules_len, byte[] cur_lang_vnt) {
+ vnt_regy.Mask__sort(rules); // sort to put more specific in front; EX: -{zh-hans:A;zh-cn:B}- should be "B", not "A"
for (int i = 0; i < rules_len; i++) {
- Xop_vnt_rule rule = rules[i];
- if (Bry_.Eq(rule.Rule_lang(), cur_lang_vnt)) return rule;
+ Xop_vnt_rule_tkn rule = rules[i];
+ if (vnt_regy.Mask__match_any(vnt_regy.Mask__calc(rule.Rule_lang()), vnt_mgr.Cur_itm().Mask__fallbacks())) return rule;
}
return null;
}
diff --git a/400_xowa/src/gplx/xowa/parsers/vnts/Xop_vnt_lang_bldr.java b/400_xowa/src/gplx/xowa/parsers/vnts/Xop_vnt_lang_bldr.java
new file mode 100644
index 000000000..787d1aad3
--- /dev/null
+++ b/400_xowa/src/gplx/xowa/parsers/vnts/Xop_vnt_lang_bldr.java
@@ -0,0 +1,33 @@
+/*
+XOWA: the XOWA Offline Wiki Application
+Copyright (C) 2012 gnosygnu@gmail.com
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU Affero General Public License as
+published by the Free Software Foundation, either version 3 of the
+License, or (at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU Affero General Public License for more details.
+
+You should have received a copy of the GNU Affero General Public License
+along with this program. If not, see .
+*/
+package gplx.xowa.parsers.vnts; import gplx.*; import gplx.xowa.*; import gplx.xowa.parsers.*;
+import gplx.xowa.langs.vnts.*;
+class Xop_vnt_lang_bldr { // performant way of building langs; EX: -{zh;zh-hans;zh-cn|B}-
+ private final Xol_vnt_regy vnt_regy;
+ private int rslt_mask;
+ public Xop_vnt_lang_bldr(Xol_vnt_mgr vnt_mgr) {this.vnt_regy = vnt_mgr.Regy();}
+ public void Clear() {rslt_mask = 0;}
+ public void Add(byte[] key) {
+ Xol_vnt_itm vnt = vnt_regy.Get_by(key); if (vnt == null) return; // ignore invalid vnts; EX: -{zh;zhx}-
+ int vnt_mask = vnt.Mask__vnt();
+ this.rslt_mask = (rslt_mask == 0) ? vnt_mask : Enm_.Flip_int(true, rslt_mask, vnt_mask);
+ }
+ public Xop_vnt_flag Bld() {
+ return (rslt_mask == 0) ? Xop_vnt_flag_.Flag_unknown : Xop_vnt_flag.new_lang(rslt_mask);
+ }
+}
diff --git a/400_xowa/src/gplx/xowa/langs/vnts/Xop_vnt_lxr_.java b/400_xowa/src/gplx/xowa/parsers/vnts/Xop_vnt_lxr.java
similarity index 63%
rename from 400_xowa/src/gplx/xowa/langs/vnts/Xop_vnt_lxr_.java
rename to 400_xowa/src/gplx/xowa/parsers/vnts/Xop_vnt_lxr.java
index 219ff3d2c..ca32459f7 100644
--- a/400_xowa/src/gplx/xowa/langs/vnts/Xop_vnt_lxr_.java
+++ b/400_xowa/src/gplx/xowa/parsers/vnts/Xop_vnt_lxr.java
@@ -15,48 +15,24 @@ GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see .
*/
-package gplx.xowa.langs.vnts; import gplx.*; import gplx.xowa.*; import gplx.xowa.langs.*;
-import gplx.core.btries.*;
-import gplx.xowa.parsers.*;
-public class Xop_vnt_lxr_ {
- public static void set_(Xowe_wiki wiki) {
- Btrie_fast_mgr wiki_trie = wiki.Parser().Wtxt_trie();
- Object exists = wiki_trie.Match_bgn(Xop_vnt_lxr_.Hook_bgn, 0, Xop_vnt_lxr_.Hook_bgn.length);
- if (exists == null) {
- Xop_vnt_lxr_eqgt._.Init_by_wiki(wiki, wiki_trie);
- Xop_vnt_lxr_bgn._.Init_by_wiki(wiki, wiki_trie);
- new Xop_vnt_lxr_end().Init_by_wiki(wiki, wiki_trie);
- // Btrie_fast_mgr tmpl_trie = wiki.Parser().Tmpl_trie(); // do not add to tmpl trie
- // Xop_vnt_lxr_bgn._.Init_by_wiki(wiki, tmpl_trie);
- }
- }
- public static final byte[] Hook_bgn = new byte[] {Byte_ascii.Dash, Byte_ascii.Curly_bgn}, Hook_end = new byte[] {Byte_ascii.Curly_end, Byte_ascii.Dash};
-}
-class Xop_vnt_lxr_eqgt implements Xop_lxr {
- public byte Lxr_tid() {return Xop_lxr_.Tid_vnt_eqgt;}
- public void Init_by_wiki(Xowe_wiki wiki, Btrie_fast_mgr core_trie) {core_trie.Add(Hook, this);}
- public void Init_by_lang(Xol_lang lang, Btrie_fast_mgr core_trie) {}
- public int Make_tkn(Xop_ctx ctx, Xop_tkn_mkr tkn_mkr, Xop_root_tkn root, byte[] src, int src_len, int bgn_pos, int cur_pos) {
- ctx.Subs_add_and_stack(root, tkn_mkr.Vnt_eqgt(bgn_pos, cur_pos));
- return cur_pos;
- }
- public static final byte[] Hook = new byte[] {Byte_ascii.Eq, Byte_ascii.Gt};
- public static final Xop_vnt_lxr_eqgt _ = new Xop_vnt_lxr_eqgt(); Xop_vnt_lxr_eqgt() {}
-}
+package gplx.xowa.parsers.vnts; import gplx.*; import gplx.xowa.*; import gplx.xowa.parsers.*;
+import gplx.core.btries.*; import gplx.xowa.langs.*;
+import gplx.xowa.langs.vnts.*;
class Xop_vnt_lxr_bgn implements Xop_lxr {
- public byte Lxr_tid() {return Xop_lxr_.Tid_vnt_bgn;}
+ public int Lxr_tid() {return Xop_lxr_.Tid_vnt_bgn;}
public void Init_by_wiki(Xowe_wiki wiki, Btrie_fast_mgr core_trie) {core_trie.Add(Xop_vnt_lxr_.Hook_bgn, this);}
public void Init_by_lang(Xol_lang lang, Btrie_fast_mgr core_trie) {}
public int Make_tkn(Xop_ctx ctx, Xop_tkn_mkr tkn_mkr, Xop_root_tkn root, byte[] src, int src_len, int bgn_pos, int cur_pos) {
ctx.Subs_add_and_stack(root, tkn_mkr.Vnt(bgn_pos, cur_pos));
return cur_pos;
}
+ public void Term(Btrie_fast_mgr core_trie) {}
public static final Xop_vnt_lxr_bgn _ = new Xop_vnt_lxr_bgn(); Xop_vnt_lxr_bgn() {}
}
class Xop_vnt_lxr_end implements Xop_lxr {
private Xop_vnt_flag_parser flag_parser;
private Xop_vnt_rules_parser rule_parser;
- public byte Lxr_tid() {return Xop_lxr_.Tid_vnt_end;}
+ public int Lxr_tid() {return Xop_lxr_.Tid_vnt_end;}
public void Init_by_wiki(Xowe_wiki wiki, Btrie_fast_mgr core_trie) {
core_trie.Add(Xop_vnt_lxr_.Hook_end, this);
Xol_vnt_mgr vnt_mgr = wiki.Lang().Vnt_mgr();
@@ -64,6 +40,7 @@ class Xop_vnt_lxr_end implements Xop_lxr {
rule_parser = new Xop_vnt_rules_parser(vnt_mgr);
}
public void Init_by_lang(Xol_lang lang, Btrie_fast_mgr core_trie) {}
+ public void Term(Btrie_fast_mgr core_trie) {}
public int Make_tkn(Xop_ctx ctx, Xop_tkn_mkr tkn_mkr, Xop_root_tkn root, byte[] src, int src_len, int bgn_pos, int cur_pos) {
int stack_pos = ctx.Stack_idx_typ(Xop_tkn_itm_.Tid_vnt);
if (stack_pos == Xop_ctx.Stack_not_found) return ctx.Lxr_make_txt_(cur_pos); // "}-" found but no "-{" in stack;
@@ -82,7 +59,7 @@ class Xop_vnt_lxr_end implements Xop_lxr {
vnt_tkn.Vnt_pipe_idx_last_(flag_parser.Rslt_pipe_last());
}
vnt_tkn.Vnt_flags_(vnt_flag_ary);
- Xop_vnt_rule[] rules = rule_parser.Parse(ctx, vnt_tkn, src, rule_subs_bgn);
+ Xop_vnt_rule_tkn[] rules = rule_parser.Parse(ctx, vnt_tkn, src, rule_subs_bgn);
vnt_tkn.Vnt_rules_(rules);
vnt_tkn.Vnt_cmd_calc(wiki, ctx.Cur_page(), ctx, src);
}
diff --git a/400_xowa/src/gplx/xowa/parsers/vnts/Xop_vnt_lxr_.java b/400_xowa/src/gplx/xowa/parsers/vnts/Xop_vnt_lxr_.java
new file mode 100644
index 000000000..a154d5617
--- /dev/null
+++ b/400_xowa/src/gplx/xowa/parsers/vnts/Xop_vnt_lxr_.java
@@ -0,0 +1,46 @@
+/*
+XOWA: the XOWA Offline Wiki Application
+Copyright (C) 2012 gnosygnu@gmail.com
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU Affero General Public License as
+published by the Free Software Foundation, either version 3 of the
+License, or (at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU Affero General Public License for more details.
+
+You should have received a copy of the GNU Affero General Public License
+along with this program. If not, see .
+*/
+package gplx.xowa.parsers.vnts; import gplx.*; import gplx.xowa.*; import gplx.xowa.parsers.*;
+import gplx.core.btries.*; import gplx.xowa.langs.*;
+import gplx.xowa.langs.vnts.*;
+public class Xop_vnt_lxr_ {
+ public static void Init(Xowe_wiki wiki) {
+ Btrie_fast_mgr wiki_trie = wiki.Parser_mgr().Main().Wtxt_lxr_mgr().Trie();
+ Object exists = wiki_trie.Match_bgn(Xop_vnt_lxr_.Hook_bgn, 0, Xop_vnt_lxr_.Hook_bgn.length);
+ if (exists == null) {
+ Xop_vnt_lxr_eqgt._.Init_by_wiki(wiki, wiki_trie);
+ Xop_vnt_lxr_bgn._.Init_by_wiki(wiki, wiki_trie);
+ new Xop_vnt_lxr_end().Init_by_wiki(wiki, wiki_trie);
+ // Btrie_fast_mgr tmpl_trie = wiki.Parser_mgr().Main().Tmpl_trie(); // do not add to tmpl trie
+ // Xop_vnt_lxr_bgn._.Init_by_wiki(wiki, tmpl_trie);
+ }
+ }
+ public static final byte[] Hook_bgn = new byte[] {Byte_ascii.Dash, Byte_ascii.Curly_bgn}, Hook_end = new byte[] {Byte_ascii.Curly_end, Byte_ascii.Dash};
+}
+class Xop_vnt_lxr_eqgt implements Xop_lxr {
+ public int Lxr_tid() {return Xop_lxr_.Tid_vnt_eqgt;}
+ public void Init_by_wiki(Xowe_wiki wiki, Btrie_fast_mgr core_trie) {core_trie.Add(Hook, this);}
+ public void Init_by_lang(Xol_lang lang, Btrie_fast_mgr core_trie) {}
+ public int Make_tkn(Xop_ctx ctx, Xop_tkn_mkr tkn_mkr, Xop_root_tkn root, byte[] src, int src_len, int bgn_pos, int cur_pos) {
+ ctx.Subs_add_and_stack(root, tkn_mkr.Vnt_eqgt(bgn_pos, cur_pos));
+ return cur_pos;
+ }
+ public void Term(Btrie_fast_mgr core_trie) {}
+ public static final byte[] Hook = new byte[] {Byte_ascii.Eq, Byte_ascii.Gt};
+ public static final Xop_vnt_lxr_eqgt _ = new Xop_vnt_lxr_eqgt(); Xop_vnt_lxr_eqgt() {}
+}
diff --git a/400_xowa/src/gplx/xowa/langs/vnts/Xop_vnt_parser_tst.java b/400_xowa/src/gplx/xowa/parsers/vnts/Xop_vnt_parser__html__tst.java
similarity index 69%
rename from 400_xowa/src/gplx/xowa/langs/vnts/Xop_vnt_parser_tst.java
rename to 400_xowa/src/gplx/xowa/parsers/vnts/Xop_vnt_parser__html__tst.java
index 75f2cd7b9..6f0f80c13 100644
--- a/400_xowa/src/gplx/xowa/langs/vnts/Xop_vnt_parser_tst.java
+++ b/400_xowa/src/gplx/xowa/parsers/vnts/Xop_vnt_parser__html__tst.java
@@ -15,19 +15,20 @@ GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see .
*/
-package gplx.xowa.langs.vnts; import gplx.*; import gplx.xowa.*; import gplx.xowa.langs.*;
+package gplx.xowa.parsers.vnts; import gplx.*; import gplx.xowa.*; import gplx.xowa.parsers.*;
import org.junit.*;
-public class Xop_vnt_parser_tst { // uses zh-hant as cur_vnt
- private Xop_vnt_parser_fxt fxt = new Xop_vnt_parser_fxt();
+public class Xop_vnt_parser__html__tst { // NOTE: cur_vnt is zh-cn
+ private final Xop_vnt_parser_fxt fxt = new Xop_vnt_parser_fxt();
@Before public void init() {fxt.Clear();}
@Test public void Literal() {fxt.Test_parse("-{A}-", "A");}
- @Test public void Bidi() {fxt.Test_parse("-{zh-hans:A;zh-hant:B}-", "B");}
+ @Test public void Bidi_fwd() {fxt.Test_parse("-{zh-cn:B;zh-hans:A}-", "B");}
+ @Test public void Bidi_bwd() {fxt.Test_parse("-{zh-hans:A;zh-cn:B}-", "B");}
@Test public void Empty() {fxt.Test_parse("a-{}-b", "ab");}
@Test public void Unknown_empty() {fxt.Test_parse("a-{|}-c", "ac");}
@Test public void Unknown_text() {fxt.Test_parse("a-{|b}-c", "abc");}
@Test public void Unknown_flag() {fxt.Test_parse("a-{x|b}-c", "abc");}
@Test public void Lang_y() {fxt.Test_parse("-{zh-hant|A}-", "A");}
- @Test public void Lang_n() {fxt.Test_parse("-{zh-hans|A}-", "");}
+ @Test public void Lang_n() {fxt.Test_parse("-{zh-sg|A}-", "");}
@Test public void Raw() {fxt.Test_parse("-{R|zh-hans:A;}-", "zh-hans:A;");}
// @Test public void Descrip() {fxt.Test_parse("-{D|zh-hans:A;}-", "zh-hans:A");}
@Test public void Tmpl() {
@@ -62,27 +63,17 @@ public class Xop_vnt_parser_tst { // uses zh-hant as cur_vnt
fxt.Test_parse("-{T|zh-hant:A;zh-hans:B}-", "");
Tfds.Eq("A", String_.new_u8(fxt.Parser_fxt().Page().Html_data().Display_ttl_vnt()));
}
-}
-class Xop_vnt_parser_fxt {
- public Xop_fxt Parser_fxt() {return fxt;} private Xop_fxt fxt;
- public Xop_vnt_parser_fxt Clear() {
- Xoae_app app = Xoa_app_fxt.app_();
- Xowe_wiki wiki = Xoa_app_fxt.wiki_(app, "zh.wikipedia.org");
- fxt = new Xop_fxt(app, wiki);
- Init_vnt_mgr(wiki.Lang().Vnt_mgr(), "zh-hans", "zh-hant");
- Xop_vnt_lxr_.set_(wiki);
- wiki.Lang().Vnt_mgr().Cur_vnt_(Bry_.new_a7("zh-hant"));
- return this;
- }
- private static void Init_vnt_mgr(Xol_vnt_mgr vnt_mgr, String... vnts_str) {
- byte[][] vnts_bry = Bry_.Ary(vnts_str);
- int vnts_bry_len = vnts_bry.length;
- for (int i = 0; i < vnts_bry_len; i++)
- vnt_mgr.Get_or_new(vnts_bry[i]);
- vnt_mgr.Convert_ttl_init();
- }
- public Xop_vnt_parser_fxt Test_parse(String raw, String expd) {
- fxt.Test_parse_page_all_str(raw, expd);
- return this;
- }
+// @Test public void Disabled() {
+// Xop_fxt fxt = new Xop_fxt();
+// fxt.Wiki().Vnt_mgr().Set(null, null);
+// fxt.Test_parse_page_all_str("a-{b}-c", "a-{b}-c");
+// }
+// @Test public void Enabled() {
+// Xoae_app app = Xoa_app_fxt.app_();
+// Xol_lang lang = new Xol_lang(app, Bry_.new_a7("zh"));
+// Xowe_wiki wiki = Xoa_app_fxt.wiki_(app, "zh.wikipedia.org", lang);
+// Xop_fxt fxt = new Xop_fxt(app, wiki);
+// fxt.Test_parse_page_all_str("a-{b}-c", "ac");
+// fxt.Wiki().Vnt_mgr().Set(null, null); // set it back to null for other tests
+// }
}
diff --git a/400_xowa/src/gplx/xowa/parsers/vnts/Xop_vnt_parser__tkn__basic__tst.java b/400_xowa/src/gplx/xowa/parsers/vnts/Xop_vnt_parser__tkn__basic__tst.java
new file mode 100644
index 000000000..32446fc1b
--- /dev/null
+++ b/400_xowa/src/gplx/xowa/parsers/vnts/Xop_vnt_parser__tkn__basic__tst.java
@@ -0,0 +1,153 @@
+/*
+XOWA: the XOWA Offline Wiki Application
+Copyright (C) 2012 gnosygnu@gmail.com
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU Affero General Public License as
+published by the Free Software Foundation, either version 3 of the
+License, or (at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU Affero General Public License for more details.
+
+You should have received a copy of the GNU Affero General Public License
+along with this program. If not, see .
+*/
+package gplx.xowa.parsers.vnts; import gplx.*; import gplx.xowa.*; import gplx.xowa.parsers.*;
+import org.junit.*; import gplx.xowa.langs.vnts.*; import gplx.xowa.parsers.miscs.*;
+public class Xop_vnt_parser__tkn__basic__tst {
+ private final Xop_vnt_lxr_fxt fxt = new Xop_vnt_lxr_fxt();
+ @Before public void init() {fxt.Clear();}
+ @Test public void Add__flag__basic() {fxt.Test_parse("-{A|b}-" , fxt.vnt_().Flags_codes_("A").Rule_("b"));}
+ @Test public void Add__flag__ws() {fxt.Test_parse("-{ A |b}-" , fxt.vnt_().Flags_codes_("A").Rule_("b"));}
+ @Test public void Add__rule__semic_n() {fxt.Test_parse("-{A|zh-hans:bcd}-" , fxt.vnt_().Flags_codes_("A").Rule_("zh-hans", "bcd"));}
+ @Test public void Add__rule__semic_y() {fxt.Test_parse("-{A|zh-hans:bcd;}-" , fxt.vnt_().Flags_codes_("A").Rule_("zh-hans", "bcd"));}
+ @Test public void Add__rule__semic_empty() {fxt.Test_parse("-{A|zh-hans:bcd;;}-" , fxt.vnt_().Flags_codes_("A").Rule_("zh-hans", "bcd"));}
+ @Test public void Add__rule__ws() {fxt.Test_parse("-{A|zh-hans : b c ;}-" , fxt.vnt_().Flags_codes_("A").Rule_("zh-hans", "b c"));}
+ @Test public void Add__rule__many() {fxt.Test_parse("-{A|zh-hans:b;zh-hant:c}-" , fxt.vnt_().Flags_codes_("A").Rule_("zh-hans", "b").Rule_("zh-hant", "c"));}
+ @Test public void Langs__flag__semic_n() {fxt.Test_parse("-{zh-hans;zh-hant|b}-" , fxt.vnt_().Flags_langs_(Xop_vnt_tkn_mok.Mask__hans, Xop_vnt_tkn_mok.Mask__hant).Rule_("b"));}
+ @Test public void Langs__flag__semic_y() {fxt.Test_parse("-{zh-hans;zh-hant;|b}-" , fxt.vnt_().Flags_langs_(Xop_vnt_tkn_mok.Mask__hans, Xop_vnt_tkn_mok.Mask__hant).Rule_("b"));}
+ @Test public void Langs__flag__ws() {fxt.Test_parse("-{ zh-hans ; zh-hant ; |b}-" , fxt.vnt_().Flags_langs_(Xop_vnt_tkn_mok.Mask__hans, Xop_vnt_tkn_mok.Mask__hant).Rule_("b"));}
+ @Test public void Langs__unknown__1st() {fxt.Test_parse("-{ zh-hans x ; zh-hant ; |b}-" , fxt.vnt_().Flags_unknown_().Rule_("b"));}
+ @Test public void Langs__unknown__nth() {fxt.Test_parse("-{ zh-hans ; zh-hant x; |b}-" , fxt.vnt_().Flags_unknown_().Rule_("b"));}
+ @Test public void Langs__unknown__all() {fxt.Test_parse("-{ zh-hans x ; zh-hant x;|b}-" , fxt.vnt_().Flags_unknown_().Rule_("b"));}
+ @Test public void Multiple() {fxt.Test_parse("-{A|D|E|b}-" , fxt.vnt_().Flags_codes_("A", "D", "E").Rule_("b"));}
+ @Test public void Unknown__flag_only() {fxt.Test_parse("-{a}-" , fxt.vnt_().Flags_none_().Rule_("a"));}
+ @Test public void Unknown__flag_w_text() {fxt.Test_parse("-{ A x |b}-" , fxt.vnt_().Flags_unknown_().Rule_("b"));}
+ @Test public void Bidi__basic() {fxt.Test_parse("-{zh-hans:a;zh-hant:b}-" , fxt.vnt_().Flags_none_().Rule_("zh-hans", "a").Rule_("zh-hant", "b"));}
+ @Test public void Bidi__invalid__1st() {fxt.Test_parse("-{zh-x:x;zh-hans:a;zh-hant:b}-" , fxt.vnt_().Flags_none_().Rule_("zh-x:x;zh-hans:a;zh-hant:b"));}
+ @Test public void Bidi__invalid__nth() {fxt.Test_parse("-{zh-hans:a;zh-x:x;zh-hant:b}-" , fxt.vnt_().Flags_none_().Rule_("zh-hans", "a;zh-x:x").Rule_("zh-hant", "b"));}
+// @Test public void Bidi__html() {
+// fxt.Test_parse("-{zh-cn:text1;zh-tw:tex21;}-"
+// , fxt.vnt_().Flags_none_().Rule_("zh-hans", "a;zh-x:x").Rule_("zh-hant", "b"));
+// }
+}
+class Xop_vnt_tkn_mok {
+ private final List_adp rules_list = List_adp_.new_(), flags_list = List_adp_.new_();
+ private Xop_vnt_flag[] flags;
+ public Xop_vnt_flag[] Flags() {
+ if (flags == null) flags = (Xop_vnt_flag[])flags_list.To_ary(Xop_vnt_flag.class);
+ return flags;
+ }
+ public Xop_vnt_tkn_mok Flags_none_() {flags_list.Clear(); return this;}
+ public Xop_vnt_tkn_mok Flags_unknown_(String... v) {flags_list.Add(Xop_vnt_flag_.Flag_unknown); return this;}
+ public Xop_vnt_tkn_mok Flags_langs_(int... ary) {flags_list.Add(Xop_vnt_flag.new_lang(Enm_.Add_int_ary(ary))); return this;}
+ public Xop_vnt_tkn_mok Flags_codes_(String... ary) {
+ int len = ary.length;
+ for (int i = 0; i < len; i++) {
+ byte[] bry = Bry_.new_a7(ary[i]);
+ Xop_vnt_flag flag = (Xop_vnt_flag)Xop_vnt_flag_.Trie.Match_bgn(bry, 0, bry.length);
+ flags_list.Add(flag);
+ }
+ return this;
+ }
+ public Xop_vnt_rule_tkn[] Rules() {
+ if (rules == null) rules = (Xop_vnt_rule_tkn[])rules_list.To_ary(Xop_vnt_rule_tkn.class);
+ return rules;
+ } private Xop_vnt_rule_tkn[] rules;
+ public Xop_vnt_tkn_mok Rule_(String rule) {return Rule_(Xop_vnt_rule_tkn.Null_lang, rule);}
+ public Xop_vnt_tkn_mok Rule_(byte[] lang, String rule) {return Rule_(Xop_vnt_rule_tkn.Null_macro, lang, new Xop_bry_tkn(-1, -1, Bry_.new_u8(rule)));}
+ public Xop_vnt_tkn_mok Rule_(String lang, String rule) {return Rule_(Xop_vnt_rule_tkn.Null_macro, Bry_.new_a7(lang), new Xop_bry_tkn(-1, -1, Bry_.new_u8(rule)));}
+ public Xop_vnt_tkn_mok Rule_(String macro, String lang, String rule) {return Rule_(Bry_.new_a7(macro), Bry_.new_a7(lang), new Xop_bry_tkn(-1, -1, Bry_.new_u8(rule)));}
+ public Xop_vnt_tkn_mok Rule_(byte[] macro, byte[] lang, Xop_tkn_itm... tkns) {rules_list.Add(new Xop_vnt_rule_tkn(macro, lang, tkns)); return this;}
+ public static final int Mask__hans = 2, Mask__hant = 4;
+}
+class Xop_vnt_lxr_fxt {
+ private Xop_fxt fxt;
+ private Xol_vnt_regy vnt_regy;
+ private final Bry_bfr tmp_bfr = Bry_bfr.new_();
+ public Xop_vnt_lxr_fxt Clear() {
+ Xoae_app app = Xoa_app_fxt.app_();
+ Xowe_wiki wiki = Xoa_app_fxt.wiki_(app, "zh.wikipedia.org");
+ fxt = new Xop_fxt(app, wiki);
+ Xop_vnt_lxr_fxt.Init_vnt_mgr(wiki.Lang().Vnt_mgr(), "zh-hans", "zh-hant", "zh-cn");
+ Xop_vnt_lxr_.Init(wiki);
+ this.vnt_regy = wiki.Lang().Vnt_mgr().Regy();
+ return this;
+ }
+ public Xop_vnt_tkn_mok vnt_() {return new Xop_vnt_tkn_mok();}
+ public static void Init_vnt_mgr(Xol_vnt_mgr vnt_mgr, String... vnts_str) {
+ byte[][] vnts_bry = Bry_.Ary(vnts_str);
+ int vnts_bry_len = vnts_bry.length;
+ for (int i = 0; i < vnts_bry_len; i++)
+ vnt_mgr.Regy__get_or_new(vnts_bry[i]);
+ vnt_mgr.Convert_mgr().Init(vnt_mgr.Regy());
+ }
+ public Xop_vnt_lxr_fxt Test_parse(String raw, Xop_vnt_tkn_mok expd) {
+ byte[] raw_bry = Bry_.new_u8(raw);
+ Xop_root_tkn root = fxt.Exec_parse_page_all_as_root(raw_bry);
+ Xop_vnt_tkn actl = (Xop_vnt_tkn)root.Subs_get(0);
+ Test_vnt_tkn(raw_bry, expd, actl);
+ return this;
+ }
+ private void Test_vnt_tkn(byte[] raw_bry, Xop_vnt_tkn_mok expd, Xop_vnt_tkn actl) {
+ Tfds.Eq(Vnt_flag_ary_to_str(tmp_bfr, expd.Flags()), Vnt_flag_ary_to_str(tmp_bfr, actl.Vnt_flags()), "flags");
+ Tfds.Eq_str_lines(Vnt_rule_ary_to_str(tmp_bfr, raw_bry, expd.Rules()), Vnt_rule_ary_to_str(tmp_bfr, raw_bry, actl.Vnt_rules()), "rules");
+ }
+ private String Vnt_flag_ary_to_str(Bry_bfr bfr, Xop_vnt_flag[] ary) {
+ int len = ary.length;
+ for (int i = 0; i < len; i++) {
+ Xop_vnt_flag itm = ary[i];
+ int itm_tid = itm.Tid();
+ if (itm_tid == Xop_vnt_flag_.Tid_lang)
+ Vnt_flag_lang_to_bfr(bfr, itm);
+ else
+ bfr.Add_str(Xop_vnt_flag_.To_name(itm_tid)).Add_byte(Byte_ascii.Semic);
+ }
+ return bfr.Xto_str_and_clear();
+ }
+ private void Vnt_flag_lang_to_bfr(Bry_bfr bfr, Xop_vnt_flag itm) {
+ int itm_mask = itm.Mask();
+ for (int i = 0; i < 32; ++i) {
+ int mask = gplx.core.brys.Bit_.Get_flag(i);
+ if (Enm_.Has_int(mask, itm_mask)) {
+ Xol_vnt_itm vnt = vnt_regy.Get_at(i);
+ bfr.Add(vnt.Key()).Add_byte(Byte_ascii.Semic);
+ }
+ }
+ }
+ private String Vnt_rule_ary_to_str(Bry_bfr bfr, byte[] src, Xop_vnt_rule_tkn[] ary) {
+ if (ary == null) return "";
+ int len = ary.length;
+ for (int i = 0; i < len; i++) {
+ Xop_vnt_rule_tkn itm = ary[i];
+ if (itm.Rule_macro() != Xop_vnt_rule_tkn.Null_macro) // macro exists
+ bfr.Add(itm.Rule_macro()).Add_str("=>");
+ if (itm.Rule_lang() != Xop_vnt_rule_tkn.Null_lang) // lang exists
+ bfr.Add(itm.Rule_lang()).Add_byte(Byte_ascii.Colon);
+ Xop_tkn_itm[] subs = itm.Rule_subs();
+ int subs_len = subs.length;
+ for (int j = 0; j < subs_len; j++) {
+ Xop_tkn_itm sub = subs[j];
+ if (sub.Tkn_tid() == Xop_tkn_itm_.Tid_bry) // tests uses Xop_tkn_bry
+ bfr.Add(((Xop_bry_tkn)sub).Val());
+ else
+ bfr.Add_mid(src, sub.Src_bgn(), sub.Src_end());
+ }
+ bfr.Add_byte(Byte_ascii.Semic).Add_byte_nl();
+ }
+ return bfr.Xto_str_and_clear();
+ }
+}
diff --git a/400_xowa/src/gplx/xowa/parsers/vnts/Xop_vnt_parser__tkn__macro__tst.java b/400_xowa/src/gplx/xowa/parsers/vnts/Xop_vnt_parser__tkn__macro__tst.java
new file mode 100644
index 000000000..953633ec8
--- /dev/null
+++ b/400_xowa/src/gplx/xowa/parsers/vnts/Xop_vnt_parser__tkn__macro__tst.java
@@ -0,0 +1,42 @@
+/*
+XOWA: the XOWA Offline Wiki Application
+Copyright (C) 2012 gnosygnu@gmail.com
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU Affero General Public License as
+published by the Free Software Foundation, either version 3 of the
+License, or (at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU Affero General Public License for more details.
+
+You should have received a copy of the GNU Affero General Public License
+along with this program. If not, see .
+*/
+package gplx.xowa.parsers.vnts; import gplx.*; import gplx.xowa.*; import gplx.xowa.parsers.*;
+import org.junit.*; import gplx.xowa.langs.vnts.*; import gplx.xowa.parsers.miscs.*;
+public class Xop_vnt_parser__tkn__macro__tst {
+ private final Xop_vnt_lxr_fxt fxt = new Xop_vnt_lxr_fxt();
+ @Before public void init() {fxt.Clear();}
+ @Test public void Basic() {
+ fxt.Test_parse("-{H|A1=>zh-hans:B1}-", fxt.vnt_().Flags_codes_("H")
+ .Rule_("A1", "zh-hans", "B1"));
+ }
+ @Test public void Many() {
+ fxt.Test_parse("-{H|A1=>zh-hans:B1;A2=>zh-hant:B2;A3=>zh-cn:B3;}-", fxt.vnt_().Flags_codes_("H")
+ .Rule_("A1", "zh-hans", "B1")
+ .Rule_("A2", "zh-hant", "B2")
+ .Rule_("A3", "zh-cn" , "B3")
+ );
+ }
+ @Test public void Mixed() {
+ fxt.Test_parse("-{H|A1=>zh-hans:B1;zh-hant:B2;A3=>zh-cn:B3}-"
+ , fxt.vnt_().Flags_codes_("H")
+ .Rule_("A1" , "zh-hans" , "B1")
+ .Rule_( "zh-hant" , "B2")
+ .Rule_("A3", "zh-cn" , "B3")
+ );
+ }
+}
diff --git a/400_xowa/src/gplx/xowa/parsers/vnts/Xop_vnt_parser_fxt.java b/400_xowa/src/gplx/xowa/parsers/vnts/Xop_vnt_parser_fxt.java
new file mode 100644
index 000000000..331f43c27
--- /dev/null
+++ b/400_xowa/src/gplx/xowa/parsers/vnts/Xop_vnt_parser_fxt.java
@@ -0,0 +1,46 @@
+/*
+XOWA: the XOWA Offline Wiki Application
+Copyright (C) 2012 gnosygnu@gmail.com
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU Affero General Public License as
+published by the Free Software Foundation, either version 3 of the
+License, or (at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU Affero General Public License for more details.
+
+You should have received a copy of the GNU Affero General Public License
+along with this program. If not, see .
+*/
+package gplx.xowa.parsers.vnts; import gplx.*; import gplx.xowa.*; import gplx.xowa.parsers.*;
+import gplx.xowa.langs.*; import gplx.xowa.langs.vnts.*;
+public class Xop_vnt_parser_fxt {
+ public Xop_fxt Parser_fxt() {return fxt;} private Xop_fxt fxt;
+ public Xop_vnt_parser_fxt Clear() {
+ Xoae_app app = Xoa_app_fxt.app_();
+ Xowe_wiki wiki = Xoa_app_fxt.wiki_(app, "zh.wikipedia.org");
+ fxt = new Xop_fxt(app, wiki);
+ Xol_lang lang = wiki.Lang();
+ lang.Fallback_bry_(Bry_.new_a7("zh-cn,zh-hans,zh-hant"));
+ Xop_vnt_parser_fxt.Vnt_mgr__init(lang.Vnt_mgr(), 3, Vnts_chinese);
+ Xop_vnt_lxr_.Init(wiki);
+ return this;
+ }
+ public Xop_vnt_parser_fxt Test_parse(String raw, String expd) {
+ fxt.Test_parse_page_all_str(raw, expd);
+ return this;
+ }
+ public static void Vnt_mgr__init(Xol_vnt_mgr vnt_mgr, int cur_idx, String[] ary) {
+ int len = ary.length;
+ for (int i = 0; i < len; ++i) {
+ Xol_vnt_itm itm = vnt_mgr.Regy__get_or_new(Bry_.new_a7(ary[i]));
+ vnt_mgr.Lang().Lang_mgr().Get_by_key_or_load(itm.Key()).Fallback_bry_(Bry_.new_a7("zh-hans,zh-hant"));
+ }
+ vnt_mgr.Init_end();
+ vnt_mgr.Cur_vnt_(Bry_.new_a7(ary[cur_idx]));
+ }
+ public static final String[] Vnts_chinese = String_.Ary("zh", "zh-hans", "zh-hant", "zh-cn", "zh-hk", "zh-mo", "zh-sg", "zh-tw");
+}
diff --git a/400_xowa/src/gplx/xowa/langs/vnts/Xop_vnt_rule.java b/400_xowa/src/gplx/xowa/parsers/vnts/Xop_vnt_rule_tkn.java
similarity index 54%
rename from 400_xowa/src/gplx/xowa/langs/vnts/Xop_vnt_rule.java
rename to 400_xowa/src/gplx/xowa/parsers/vnts/Xop_vnt_rule_tkn.java
index 1874fa3fc..3e7cd56f4 100644
--- a/400_xowa/src/gplx/xowa/langs/vnts/Xop_vnt_rule.java
+++ b/400_xowa/src/gplx/xowa/parsers/vnts/Xop_vnt_rule_tkn.java
@@ -15,13 +15,14 @@ GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see .
*/
-package gplx.xowa.langs.vnts; import gplx.*; import gplx.xowa.*; import gplx.xowa.langs.*;
-import gplx.xowa.parsers.*;
-public class Xop_vnt_rule extends Xop_tkn_itm_base {
- public Xop_vnt_rule(byte[] rule_macro, byte[] rule_lang, Xop_tkn_itm[] rule_subs) {this.rule_macro = rule_macro; this.rule_lang = rule_lang; this.rule_subs = rule_subs;}
- @Override public byte Tkn_tid() {return Xop_tkn_itm_.Tid_vnt_rule;}
- public byte[] Rule_macro() {return rule_macro;} private byte[] rule_macro;
- public byte[] Rule_lang() {return rule_lang;} private byte[] rule_lang;
- public Xop_tkn_itm[] Rule_subs() {return rule_subs;} private Xop_tkn_itm[] rule_subs;
+package gplx.xowa.parsers.vnts; import gplx.*; import gplx.xowa.*; import gplx.xowa.parsers.*;
+public class Xop_vnt_rule_tkn extends Xop_tkn_itm_base {
+ public Xop_vnt_rule_tkn(byte[] rule_macro, byte[] rule_lang, Xop_tkn_itm[] rule_subs) {
+ this.rule_macro = rule_macro; this.rule_lang = rule_lang; this.rule_subs = rule_subs;
+ }
+ @Override public byte Tkn_tid() {return Xop_tkn_itm_.Tid_vnt_rule;}
+ public byte[] Rule_macro() {return rule_macro;} private final byte[] rule_macro;
+ public byte[] Rule_lang() {return rule_lang;} private final byte[] rule_lang;
+ public Xop_tkn_itm[] Rule_subs() {return rule_subs;} private final Xop_tkn_itm[] rule_subs;
public static final byte[] Null_lang = null, Null_macro = null;
}
diff --git a/400_xowa/src/gplx/xowa/parsers/vnts/Xop_vnt_rules_parser.java b/400_xowa/src/gplx/xowa/parsers/vnts/Xop_vnt_rules_parser.java
new file mode 100644
index 000000000..841a2eac6
--- /dev/null
+++ b/400_xowa/src/gplx/xowa/parsers/vnts/Xop_vnt_rules_parser.java
@@ -0,0 +1,172 @@
+/*
+XOWA: the XOWA Offline Wiki Application
+Copyright (C) 2012 gnosygnu@gmail.com
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU Affero General Public License as
+published by the Free Software Foundation, either version 3 of the
+License, or (at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU Affero General Public License for more details.
+
+You should have received a copy of the GNU Affero General Public License
+along with this program. If not, see .
+*/
+package gplx.xowa.parsers.vnts; import gplx.*; import gplx.xowa.*; import gplx.xowa.parsers.*;
+import gplx.core.btries.*;
+import gplx.xowa.langs.vnts.*;
+import gplx.xowa.parsers.miscs.*;
+class Xop_vnt_rules_parser {
+ private final Btrie_slim_mgr trie;
+ private final List_adp rules_list = List_adp_.new_(), text_tkns = List_adp_.new_();
+ private int tmp_area; private byte[] tmp_macro, tmp_lang; private int tmp_key_bgn = -1;
+ private int text_tkns__last_text_tkn; private boolean check_for_ws_at_bgn = false; private int semic_pos;
+ private Xop_tkn_mkr tkn_mkr;
+ public Xop_vnt_rules_parser(Xol_vnt_mgr vnt_mgr) {this.trie = Xop_vnt_rules_parser_.new_trie(vnt_mgr.Regy());}
+ public void Clear() {
+ rules_list.Clear(); text_tkns.Clear();
+ this.tmp_area = Area_key;
+ this.tmp_macro = tmp_lang = null;
+ this.tmp_key_bgn = -1;
+ this.text_tkns__last_text_tkn = 0;
+ this.check_for_ws_at_bgn = false;
+ this.semic_pos = -1;
+ }
+ public Xop_vnt_rule_tkn[] Parse(Xop_ctx ctx, Xop_vnt_tkn vnt_tkn, byte[] src, int subs_bgn) {// parse for macro;lang;text; EX: -{macro1=>lang1:text1;macro2=>lang2:text2;}
+ synchronized (rules_list) {
+ this.Clear();
+ this.tkn_mkr = ctx.Tkn_mkr();
+ int subs_len = vnt_tkn.Subs_len(); int subs_idx = subs_bgn;
+ boolean valid = true;
+ while (subs_idx < subs_len) {
+ if (!Parse_tkn(vnt_tkn, src, subs_idx)) {
+ valid = false;
+ break;
+ }
+ ++subs_idx;
+ }
+ if (valid)
+ Make_rule(); // make rules for any pending items; EX: "-{A|text}-"; "text" is unclosed by semic and would need to be processed
+ if (rules_list.Count() == 0) { // no rules made; assume text is just literal; EX: "-{Abc}-"
+ Xop_tkn_itm[] rule_subs = Xop_vnt_rules_parser_.Get_subs_as_ary(vnt_tkn, subs_bgn, subs_len);
+ rules_list.Add(new Xop_vnt_rule_tkn(Xop_vnt_rule_tkn.Null_macro, Xop_vnt_rule_tkn.Null_lang, rule_subs));
+ }
+ return (Xop_vnt_rule_tkn[])rules_list.To_ary_and_clear(Xop_vnt_rule_tkn.class);
+ }
+ }
+ private boolean Parse_tkn(Xop_vnt_tkn vnt_tkn, byte[] src, int subs_idx) {
+ Xop_tkn_itm sub = vnt_tkn.Subs_get(subs_idx);
+ boolean add_to_text_tkns = true, sub_is_middle_ws = false;
+ switch (sub.Tkn_tid()) {
+ case Xop_tkn_itm_.Tid_colon:
+ switch (tmp_area) {
+ case Area_lang_found: // colon should only follow lang; EX: -{zh-hant:text}-
+ if (tmp_lang == null) { // if tmp_lang already exists, ignore colon; treat as part of text; EX: -{zh-hant:text1:text2}-
+ tmp_lang = Bry_.Mid_w_trim(src, tmp_key_bgn, sub.Src_bgn());
+ tmp_area = Area_text;
+ add_to_text_tkns = false; // do not add ":"
+ check_for_ws_at_bgn = true;
+ }
+ break;
+ default: // colon found after unknown lang; EX: "-{zh-hant:a;zh-x:b}-"
+ if (rules_list.Count() == 0) return false; // invalid lang at start renders entire rule invalid;
+ Xop_vnt_rule_tkn rule = (Xop_vnt_rule_tkn)List_adp_.Pop(rules_list); // invalid rule in middle just adds text to previous rule
+ Xop_tkn_itm[] text_tkns_ary = rule.Rule_subs();
+ for (Xop_tkn_itm itm : text_tkns_ary)
+ text_tkns.Add(itm);
+ tmp_macro = rule.Rule_macro();
+ tmp_lang = rule.Rule_lang();
+ text_tkns.Add(tkn_mkr.Bry_raw(semic_pos, sub.Src_end(), Bry_.Mid_w_trim(src, semic_pos, sub.Src_end())));
+ tmp_area = Area_text;
+ add_to_text_tkns = false;
+ break;
+ }
+ break;
+ case Xop_tkn_itm_.Tid_space: case Xop_tkn_itm_.Tid_tab: case Xop_tkn_itm_.Tid_newLine: // skip ws
+ if (check_for_ws_at_bgn) add_to_text_tkns = false; // prevents ws at bgn from being added to text_tkns; EX: " a"
+ else sub_is_middle_ws = true;
+ break;
+ case Xop_tkn_itm_.Tid_vnt_eqgt:
+ if (tmp_area == Area_key) {
+ tmp_macro = Bry_.Mid_w_trim(src, tmp_key_bgn, sub.Src_bgn());
+ add_to_text_tkns = false;
+ }
+ break;
+ default:
+ break;
+ case Xop_tkn_itm_.Tid_txt:
+ add_to_text_tkns = Parse_bry(sub, src, sub.Src_bgn(), sub.Src_end());
+ break;
+ case Xop_tkn_itm_.Tid_bry:
+ byte[] bry = ((Xop_bry_tkn)sub).Val();
+ add_to_text_tkns = Parse_bry(sub, bry, 0, bry.length);
+ break;
+ }
+ if (sub_is_middle_ws)
+ text_tkns__last_text_tkn = text_tkns.Count(); // ws found in middle or end; update text_tkns__last_text_tkn; EX: "a "
+ else
+ text_tkns__last_text_tkn = -1; // not a middle_ws; set to -1; EX: "a b"
+ if (tmp_area == Area_text && add_to_text_tkns) { // tmp_area is text && not ":", "=>", or leading "\s"
+ text_tkns.Add(sub);
+ check_for_ws_at_bgn = false; // stop checking for ws at bgn
+ }
+ return true;
+ }
+ private boolean Parse_bry(Xop_tkn_itm sub, byte[] src, int src_bgn, int src_end) {// NOTE: parse byte-per-byte b/c ";" is not a tkn; note that class is designed around this behavior, particulary tmp_key_bgn
+ int cur_pos = src_bgn;
+ while (cur_pos < src_end) {
+ if (tmp_key_bgn == -1) tmp_key_bgn = cur_pos;
+ byte b = src[cur_pos];
+ Object itm_obj = trie.Match_bgn_w_byte(b, src, cur_pos, src_end);
+ if (itm_obj == null) // not a lang or semic; ignore
+ ++cur_pos;
+ else {
+ Xop_vnt_rule_trie_itm itm = (Xop_vnt_rule_trie_itm)itm_obj;
+ int new_pos = trie.Match_pos();
+ switch (itm.Tid()) {
+ case Xop_vnt_rule_trie_itm.Tid_lang: // lang; EX: "zh-hant"; only process inside Area_key;
+ if (tmp_area == Area_key) {
+ int nxt_pos = Bry_find_.Find_fwd_while_space_or_tab(src, new_pos, src_end); // skip any ws at end
+ if (nxt_pos == src_end) { // eos for tkn; valid; EX: "zh-hant", "zh-hant "
+ tmp_key_bgn = cur_pos;
+ tmp_area = Area_lang_found;
+ }
+ return false;
+ }
+ break;
+ case Xop_vnt_rule_trie_itm.Tid_semic: // delimiter for multiple langs; EX: -{zh-hans:A;zh-cn:B}-
+ semic_pos = cur_pos;
+ switch (tmp_area) {
+ case Area_text: // in Area_text; make rule;
+ text_tkns.Add(tkn_mkr.Bry_raw(src_bgn, cur_pos, Bry_.Mid_w_trim(src, src_bgn, cur_pos))); // add everything up to ";"; EX: "text1;zh-hant"; add "text1"
+ Make_rule();
+ break;
+ case Area_key: // ignore; empty semic's; EX: "zh-hant:a;;"
+ break;
+ }
+ break;
+ }
+ cur_pos = new_pos;
+ }
+ }
+ return tmp_area == Area_text;
+ }
+ private void Make_rule() {// called after ";" or before "}-"
+ int text_tkns_len = text_tkns.Count();
+ if ( tmp_area != Area_text // stil in key area; EX: -{text;}-
+ || text_tkns_len == 0 // no text tkns; EX: -{zh-hans:;}
+ ) return;
+ if (text_tkns__last_text_tkn != -1) text_tkns.Del_range(text_tkns__last_text_tkn, text_tkns.Count() - 1); // ignore trailing ws tkns
+ Xop_tkn_itm[] rule_subs = (Xop_tkn_itm[])text_tkns.To_ary_and_clear(Xop_tkn_itm.class);
+ Xop_vnt_rule_tkn rule = new Xop_vnt_rule_tkn(tmp_macro, tmp_lang, rule_subs);
+ rules_list.Add(rule);
+ tmp_macro = null;
+ tmp_lang = null;
+ tmp_area = Area_key;
+ tmp_key_bgn = -1;
+ }
+ private static final int Area_key = 1, Area_lang_found = 2, Area_text = 3;
+}
diff --git a/400_xowa/src/gplx/xowa/parsers/vnts/Xop_vnt_rules_parser_.java b/400_xowa/src/gplx/xowa/parsers/vnts/Xop_vnt_rules_parser_.java
new file mode 100644
index 000000000..946e73f0f
--- /dev/null
+++ b/400_xowa/src/gplx/xowa/parsers/vnts/Xop_vnt_rules_parser_.java
@@ -0,0 +1,60 @@
+/*
+XOWA: the XOWA Offline Wiki Application
+Copyright (C) 2012 gnosygnu@gmail.com
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU Affero General Public License as
+published by the Free Software Foundation, either version 3 of the
+License, or (at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU Affero General Public License for more details.
+
+You should have received a copy of the GNU Affero General Public License
+along with this program. If not, see .
+*/
+package gplx.xowa.parsers.vnts; import gplx.*; import gplx.xowa.*; import gplx.xowa.parsers.*;
+import gplx.core.btries.*;
+import gplx.xowa.langs.vnts.*;
+class Xop_vnt_rules_parser_ {
+ public static Btrie_slim_mgr new_trie(Xol_vnt_regy regy) {
+ Btrie_slim_mgr rv = Btrie_slim_mgr.ci_a7(); // NOTE:ci.ascii:MW_const.en; lang variant name; EX:zh-hans
+ int len = regy.Len();
+ for (int i = 0; i < len; ++i) {
+ Xol_vnt_itm itm = regy.Get_at(i);
+ byte[] key = itm.Key();
+ rv.Add_obj(key, Xop_vnt_rule_trie_itm.lang_(key));
+ }
+ rv.Add_obj(";", Xop_vnt_rule_trie_itm.Dlm_semic);
+ return rv;
+ }
+ public static Xop_tkn_itm[] Get_subs_as_ary(Xop_tkn_itm owner, int bgn, int end) {
+ int len = end - bgn;
+ Xop_tkn_itm[] rv = new Xop_tkn_itm[len];
+ for (int i = bgn; i < end; i++)
+ rv[i - bgn] = owner.Subs_get(i);
+ return rv;
+ }
+}
+class Xop_vnt_rule_trie_itm {
+ public Xop_vnt_rule_trie_itm(byte tid, byte[] lang) {this.tid = tid; this.lang = lang;}
+ public byte Tid() {return tid;} private byte tid;
+ public byte[] Lang() {return lang;} private byte[] lang;
+ public static final byte Tid_semic = 1, Tid_lang = 2;
+ public static Xop_vnt_rule_trie_itm lang_(byte[] lang) {return new Xop_vnt_rule_trie_itm(Tid_lang, lang);}
+ public static final Xop_vnt_rule_trie_itm
+ Dlm_semic = new Xop_vnt_rule_trie_itm(Tid_semic, null)
+ ;
+}
+/*
+-{flags|lang:rule}- EX: -{A|zh-hant:a}-
+-{lang:rule;lang:rule} EX: -{zh-hans:a;zh-hant:b}-
+-{lang;lang|rule}- EX: -{zh-hans;zh-hant|XXXX}-
+-{rule}- EX: -{a}-
+-{flags|from=>variant:to;}- EX: -{H|HUGEBLOCK=>zh-cn:macro;}-
+-{lang:data_0;data_1;}- EX: -{zh-hans:;zh-hant:b}-
+. where data_0 and data_1 is actually one itm since ; is not delimiter b/c data_1 must be variant_code
+-{zh-hans:a-{zh-hans:b}-c}-
+*/
diff --git a/400_xowa/src/gplx/xowa/langs/vnts/Xop_vnt_tkn.java b/400_xowa/src/gplx/xowa/parsers/vnts/Xop_vnt_tkn.java
similarity index 82%
rename from 400_xowa/src/gplx/xowa/langs/vnts/Xop_vnt_tkn.java
rename to 400_xowa/src/gplx/xowa/parsers/vnts/Xop_vnt_tkn.java
index e185cae3e..a7fe1a887 100644
--- a/400_xowa/src/gplx/xowa/langs/vnts/Xop_vnt_tkn.java
+++ b/400_xowa/src/gplx/xowa/parsers/vnts/Xop_vnt_tkn.java
@@ -15,9 +15,8 @@ GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see .
*/
-package gplx.xowa.langs.vnts; import gplx.*; import gplx.xowa.*; import gplx.xowa.langs.*;
-import gplx.xowa.html.*;
-import gplx.xowa.parsers.*;
+package gplx.xowa.parsers.vnts; import gplx.*; import gplx.xowa.*; import gplx.xowa.parsers.*;
+import gplx.xowa.html.*; import gplx.xowa.langs.vnts.*;
public class Xop_vnt_tkn extends Xop_tkn_itm_base {
public Xop_vnt_tkn(int bgn, int end) {
this.Tkn_ini_pos(false, bgn, end);
@@ -28,7 +27,7 @@ public class Xop_vnt_tkn extends Xop_tkn_itm_base {
public Xop_vnt_tkn Vnt_pipe_tkn_count_add_() {++vnt_pipe_tkn_count; return this;} private int vnt_pipe_tkn_count;
public int Vnt_pipe_idx_last() {return vnt_pipe_idx_last;} public Xop_vnt_tkn Vnt_pipe_idx_last_(int v) {vnt_pipe_idx_last = v; return this;} private int vnt_pipe_idx_last = -1;
public Xop_vnt_flag[] Vnt_flags() {return vnt_flags;} public Xop_vnt_tkn Vnt_flags_(Xop_vnt_flag[] v) {vnt_flags = v; return this;} private Xop_vnt_flag[] vnt_flags;
- public Xop_vnt_rule[] Vnt_rules() {return vnt_rules;} public Xop_vnt_tkn Vnt_rules_(Xop_vnt_rule[] v) {vnt_rules = v; return this;} private Xop_vnt_rule[] vnt_rules;
+ public Xop_vnt_rule_tkn[] Vnt_rules() {return vnt_rules;} public Xop_vnt_tkn Vnt_rules_(Xop_vnt_rule_tkn[] v) {vnt_rules = v; return this;} private Xop_vnt_rule_tkn[] vnt_rules;
public byte Vnt_cmd() {return vnt_cmd;} private byte vnt_cmd;
public void Vnt_cmd_calc(Xowe_wiki wiki, Xoae_page page, Xop_ctx ctx, byte[] src) {
int flags_len = vnt_flags.length;
@@ -36,9 +35,9 @@ public class Xop_vnt_tkn extends Xop_tkn_itm_base {
if (flags_len == 0) { // no flags; either literal ("-{A}-") or bidi ("-{zh-hans:A;zh-hant:B}-");
if (rules_len == 0) vnt_cmd = Xop_vnt_html_wtr.Cmd_empty;
else {
- Xop_vnt_rule rule_0 = vnt_rules[0];
+ Xop_vnt_rule_tkn rule_0 = vnt_rules[0];
if ( rules_len == 1 // only one rule
- && rule_0.Rule_lang() == Xop_vnt_rule.Null_lang // no lang; EX: -{A}-
+ && rule_0.Rule_lang() == Xop_vnt_rule_tkn.Null_lang // no lang; EX: -{A}-
)
vnt_cmd = Xop_vnt_html_wtr.Cmd_literal;
else // bidi: either one rule which has lang ("-{zh-hans:A}-") or more than one rule (which can't be literal)
@@ -55,8 +54,9 @@ public class Xop_vnt_tkn extends Xop_tkn_itm_base {
case Xop_vnt_flag_.Tid_macro : vnt_cmd = Xop_vnt_html_wtr.Cmd_empty; break; // TODO: implement macro; ignore for now; DATE:2014-05-03
case Xop_vnt_flag_.Tid_title: { // title; same as {{DISPLAYTITLE}} but variant aware; PAGE:zh.w:Help:進階字詞轉換處理 DATE:2014-08-29
vnt_cmd = Xop_vnt_html_wtr.Cmd_title;
- byte[] cur_lang_vnt = wiki.Lang().Vnt_mgr().Cur_vnt();
- Xop_vnt_rule rule = Xop_vnt_html_wtr.Get_rule_by_key(vnt_rules, vnt_rules.length, cur_lang_vnt);
+ Xol_vnt_mgr vnt_mgr = wiki.Lang().Vnt_mgr();
+ byte[] cur_lang_vnt = vnt_mgr.Cur_key();
+ Xop_vnt_rule_tkn rule = Xop_vnt_html_wtr.Get_rule_by_key(vnt_mgr, vnt_mgr.Regy(), vnt_rules, vnt_rules.length, cur_lang_vnt);
if (rule != null) {
Bry_bfr tmp_bfr = wiki.Utl__bfr_mkr().Get_b512();
wiki.Html_mgr().Html_wtr().Write_tkn_ary(tmp_bfr, ctx, Xoh_wtr_ctx.Alt, src, rule.Rule_subs());
diff --git a/400_xowa/src/gplx/xowa/parsers/xndes/Xop_xatr_parser.java b/400_xowa/src/gplx/xowa/parsers/xndes/Xop_xatr_parser.java
index f0ad5d7e5..8aaf30ca3 100644
--- a/400_xowa/src/gplx/xowa/parsers/xndes/Xop_xatr_parser.java
+++ b/400_xowa/src/gplx/xowa/parsers/xndes/Xop_xatr_parser.java
@@ -34,7 +34,7 @@ public class Xop_xatr_parser { // REF.MW:Sanitizer.php|decodeTagAttributes;MW_AT
++pos;
b = src[pos];
}
- int gt_pos = Bry_finder.Find_fwd(src, Byte_ascii.Gt, pos, end); if (gt_pos == Bry_.NotFound) return String_.Find_none;
+ int gt_pos = Bry_find_.Find_fwd(src, Byte_ascii.Gt, pos, end); if (gt_pos == Bry_.NotFound) return String_.Find_none;
byte[] bry = (byte[])xnde_hash.Get_by_mid(src, pos, gt_pos);
bry_ref.Val_(bry);
return bry == null ? String_.Find_none : bry.length + pos;
@@ -76,12 +76,12 @@ public class Xop_xatr_parser { // REF.MW:Sanitizer.php|decodeTagAttributes;MW_AT
while (true) {
if (i == end) {
if (mode == Mode_val_quote) { // quote still open
- int reset_pos = Bry_finder.Find_fwd(src, Byte_ascii.Space, atr_bgn, end); // try to find 1st space within quote; EX:"a='b c=d" should try to reset at c=d
- boolean reset_found = reset_pos != Bry_finder.Not_found;
+ int reset_pos = Bry_find_.Find_fwd(src, Byte_ascii.Space, atr_bgn, end); // try to find 1st space within quote; EX:"a='b c=d" should try to reset at c=d
+ boolean reset_found = reset_pos != Bry_find_.Not_found;
valid = false; val_end = reset_found ? reset_pos : end;
Make(log_mgr, src, val_end); // create invalid atr
if (reset_found) { // space found; resume from text after space; EX: "a='b c=d"; PAGE:en.w:Aubervilliers DATE:2014-06-25
- i = Bry_finder.Find_fwd_while_not_ws(src, reset_pos, end); // skip ws
+ i = Bry_find_.Find_fwd_while_not_ws(src, reset_pos, end); // skip ws
atr_bgn = -1;
mode = Mode_atr_bgn;
val_bfr.Clear();
diff --git a/400_xowa/src/gplx/xowa/parsers/xndes/Xop_xatr_parser_tst.java b/400_xowa/src/gplx/xowa/parsers/xndes/Xop_xatr_parser_tst.java
index 40f969b80..4ad8ea7eb 100644
--- a/400_xowa/src/gplx/xowa/parsers/xndes/Xop_xatr_parser_tst.java
+++ b/400_xowa/src/gplx/xowa/parsers/xndes/Xop_xatr_parser_tst.java
@@ -16,7 +16,7 @@ You should have received a copy of the GNU Affero General Public License
along with this program. If not, see .
*/
package gplx.xowa.parsers.xndes; import gplx.*; import gplx.xowa.*; import gplx.xowa.parsers.*;
-import org.junit.*;
+import org.junit.*; import gplx.core.tests.*;
public class Xop_xatr_parser_tst {
@Test public void Kv_quote_double() {fxt.tst_("a=\"b\"", fxt.new_atr_("a", "b"));} private Xop_xatr_parser_fxt fxt = new Xop_xatr_parser_fxt();
@Test public void Kv_quote_single() {fxt.tst_("a='b'", fxt.new_atr_("a", "b"));}
diff --git a/400_xowa/src/gplx/xowa/parsers/xndes/Xop_xnde_lxr.java b/400_xowa/src/gplx/xowa/parsers/xndes/Xop_xnde_lxr.java
index 8a967690b..2b517977b 100644
--- a/400_xowa/src/gplx/xowa/parsers/xndes/Xop_xnde_lxr.java
+++ b/400_xowa/src/gplx/xowa/parsers/xndes/Xop_xnde_lxr.java
@@ -16,11 +16,12 @@ You should have received a copy of the GNU Affero General Public License
along with this program. If not, see .
*/
package gplx.xowa.parsers.xndes; import gplx.*; import gplx.xowa.*; import gplx.xowa.parsers.*;
-import gplx.core.btries.*;
+import gplx.core.btries.*; import gplx.xowa.langs.*;
public class Xop_xnde_lxr implements Xop_lxr {
- public byte Lxr_tid() {return Xop_lxr_.Tid_xnde;}
+ public int Lxr_tid() {return Xop_lxr_.Tid_xnde;}
public void Init_by_wiki(Xowe_wiki wiki, Btrie_fast_mgr core_trie) {core_trie.Add(Byte_ascii.Lt, this);}
public void Init_by_lang(Xol_lang lang, Btrie_fast_mgr core_trie) {}
+ public void Term(Btrie_fast_mgr core_trie) {}
public int Make_tkn(Xop_ctx ctx, Xop_tkn_mkr tkn_mkr, Xop_root_tkn root, byte[] src, int src_len, int bgn_pos, int cur_pos) {return ctx.Xnde().Make_tkn(ctx, tkn_mkr, root, src, src_len, bgn_pos, cur_pos);}
public static final Xop_xnde_lxr _ = new Xop_xnde_lxr(); Xop_xnde_lxr() {}
}
diff --git a/400_xowa/src/gplx/xowa/parsers/xndes/Xop_xnde_tag.java b/400_xowa/src/gplx/xowa/parsers/xndes/Xop_xnde_tag.java
index e96d861bd..79bece15e 100644
--- a/400_xowa/src/gplx/xowa/parsers/xndes/Xop_xnde_tag.java
+++ b/400_xowa/src/gplx/xowa/parsers/xndes/Xop_xnde_tag.java
@@ -69,7 +69,7 @@ public class Xop_xnde_tag {
}
public Xop_xnde_tag_lang Langs_get(gplx.xowa.langs.cases.Xol_case_mgr case_mgr, int cur_lang, byte[] src, int bgn, int end) {
if (langs == null) return Xop_xnde_tag_lang._; // no langs defined; always return true; EX:
- if (Bry_.Eq(name_bry, src, bgn, end)) return Xop_xnde_tag_lang._; // canonical name (name_bry) is valid in all langs; EX: and cur_lang=de
+ if (Bry_.Eq(src, bgn, end, name_bry)) return Xop_xnde_tag_lang._; // canonical name (name_bry) is valid in all langs; EX: and cur_lang=de
synchronized (langs) {
langs_key.Val_(cur_lang);
}
diff --git a/400_xowa/src/gplx/xowa/parsers/xndes/Xop_xnde_tkn_chkr.java b/400_xowa/src/gplx/xowa/parsers/xndes/Xop_xnde_tkn_chkr.java
index 9f92ca897..d573e7801 100644
--- a/400_xowa/src/gplx/xowa/parsers/xndes/Xop_xnde_tkn_chkr.java
+++ b/400_xowa/src/gplx/xowa/parsers/xndes/Xop_xnde_tkn_chkr.java
@@ -16,6 +16,7 @@ You should have received a copy of the GNU Affero General Public License
along with this program. If not, see .
*/
package gplx.xowa.parsers.xndes; import gplx.*; import gplx.xowa.*; import gplx.xowa.parsers.*;
+import gplx.core.tests.*;
public class Xop_xnde_tkn_chkr extends Xop_tkn_chkr_base {
@Override public Class> TypeOf() {return Xop_xnde_tkn.class;}
@Override public byte Tkn_tid() {return Xop_tkn_itm_.Tid_xnde;}
diff --git a/400_xowa/src/gplx/xowa/parsers/xndes/Xop_xnde_wkr.java b/400_xowa/src/gplx/xowa/parsers/xndes/Xop_xnde_wkr.java
index 8d5e7b98d..876c61797 100644
--- a/400_xowa/src/gplx/xowa/parsers/xndes/Xop_xnde_wkr.java
+++ b/400_xowa/src/gplx/xowa/parsers/xndes/Xop_xnde_wkr.java
@@ -17,7 +17,7 @@ along with this program. If not, see .
*/
package gplx.xowa.parsers.xndes; import gplx.*; import gplx.xowa.*; import gplx.xowa.parsers.*;
import gplx.core.btries.*; import gplx.xowa.apps.progs.*;
-import gplx.xowa.wikis.domains.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.pfuncs.strings.*; import gplx.html.*;
+import gplx.xowa.wikis.domains.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.pfuncs.strings.*; import gplx.langs.htmls.*;
import gplx.xowa.parsers.logs.*; import gplx.xowa.parsers.tblws.*; import gplx.xowa.parsers.lnkis.*; import gplx.xowa.parsers.miscs.*;
public class Xop_xnde_wkr implements Xop_ctx_wkr {
public void Ctor_ctx(Xop_ctx ctx) {}
@@ -226,7 +226,7 @@ public class Xop_xnde_wkr implements Xop_ctx_wkr {
return tkn_mkr.Bry_raw(bgn_pos, cur_pos, bry);
}
private int Make_noinclude(Xop_ctx ctx, Xop_tkn_mkr tkn_mkr, Xop_root_tkn root, byte[] src, int src_len, int bgn_pos, int gtPos, Xop_xnde_tag tag, int tag_end_pos, boolean tag_is_closing) {
- tag_end_pos = Bry_finder.Find_fwd_while(src, tag_end_pos, src_len, Byte_ascii.Space);// NOTE: must skip spaces else "" will not work with safesubst; PAGE:en.w:Wikipedia:Featured_picture_candidates; DATE:2014-06-24
+ tag_end_pos = Bry_find_.Find_fwd_while(src, tag_end_pos, src_len, Byte_ascii.Space);// NOTE: must skip spaces else "" will not work with safesubst; PAGE:en.w:Wikipedia:Featured_picture_candidates; DATE:2014-06-24
byte tag_end_byte = src[tag_end_pos];
if (tag_end_byte == Byte_ascii.Slash) { // inline
boolean valid = true;
@@ -251,7 +251,7 @@ public class Xop_xnde_wkr implements Xop_ctx_wkr {
end_rhs = gtPos;
else { // ; search for end tag
while (true) {
- int end_lhs = Bry_finder.Find_fwd(src, end_bry, findPos);
+ int end_lhs = Bry_find_.Find_fwd(src, end_bry, findPos);
if (end_lhs == -1 || (end_lhs + end_bry_len) == src_len) break; // nothing found or EOS;
findPos = end_lhs;
for (int i = end_lhs + end_bry_len; i < src_len; i++) {
@@ -313,7 +313,7 @@ public class Xop_xnde_wkr implements Xop_ctx_wkr {
if ( page.Html_data().Html_restricted()
&& page.Wiki().Domain_tid() != Xow_domain_type_.Int__home) {
int end_pos = gtPos + 1;
- ctx.Subs_add(root, tkn_mkr.Bry_raw(bgn_pos, end_pos, Bry_.Add(gplx.html.Html_entity_.Lt_bry, Bry_.Mid(src, bgn_pos + 1, end_pos)))); // +1 to skip <
+ ctx.Subs_add(root, tkn_mkr.Bry_raw(bgn_pos, end_pos, Bry_.Add(gplx.langs.htmls.Html_entity_.Lt_bry, Bry_.Mid(src, bgn_pos + 1, end_pos)))); // +1 to skip <
return end_pos;
}
}
@@ -409,7 +409,7 @@ public class Xop_xnde_wkr implements Xop_ctx_wkr {
}
private int Make_xtag_end(Xop_ctx ctx, Xop_tkn_mkr tkn_mkr, Xop_root_tkn root, byte[] src, int src_len, int bgn_pos, int cur_pos, Xop_xnde_tag end_tag) {
int end_tag_id = end_tag.Id();
- cur_pos = Bry_finder.Find_fwd_while_not_ws(src, cur_pos, src_len) + 1;
+ cur_pos = Bry_find_.Find_fwd_while_not_ws(src, cur_pos, src_len) + 1;
int prv_xnde_pos = ctx.Stack_idx_find_but_stop_at_tbl(Xop_tkn_itm_.Tid_xnde); // find any previous xnde on stack
Xop_xnde_tkn bgn_nde = (Xop_xnde_tkn)ctx.Stack_get(prv_xnde_pos);
int bgn_tag_id = bgn_nde == null ? -1 : bgn_nde.Tag().Id();
@@ -473,7 +473,7 @@ public class Xop_xnde_wkr implements Xop_ctx_wkr {
}
}
if (end_tag.Restricted()) // restricted tags (like