diff --git a/100_core/src/gplx/Err.java b/100_core/src/gplx/Err.java index be332c792..c7027f768 100644 --- a/100_core/src/gplx/Err.java +++ b/100_core/src/gplx/Err.java @@ -56,7 +56,7 @@ public class Err extends RuntimeException { String nl_str = called_by_log ? "\t" : "\n"; String rv = ""; //nl_str + "----------------------------------------------------------------------" + nl_str; for (int i = 0; i < msgs_idx; ++i) { - rv += "[err " + Int_.Xto_str(i) + "] " + msgs_ary[i].To_str() + nl_str; + rv += "[err " + Int_.To_str(i) + "] " + msgs_ary[i].To_str() + nl_str; } if (include_trace) rv += "[trace]:" + Trace_to_str(is_gplx, called_by_log, trace_ignore, trace == null ? Err_.Trace_lang(this) : trace); diff --git a/100_core/src/gplx/Err_.java b/100_core/src/gplx/Err_.java index c54b54453..2d510b865 100644 --- a/100_core/src/gplx/Err_.java +++ b/100_core/src/gplx/Err_.java @@ -51,7 +51,8 @@ public class Err_ { return new Err(Bool_.Y, Trace_null, Type__gplx, "cast failed", "type", Type_adp_.NameOf_type(t), "obj", o_str); } - public static String Message_lang(Exception e) {return e.getMessage();} + public static String Message_lang(Exception e) {return e.getMessage();} + public static String Message_lang_error(Error e) {return e.getMessage();} public static String Trace_lang(Exception e) {return Trace_lang_exec(e.getStackTrace());} public static String Trace_lang(Error e) {return Trace_lang_exec(e.getStackTrace());} private static String Trace_lang_exec(StackTraceElement[] ary) { diff --git a/100_core/src/gplx/core/btries/Btrie_fast_mgr.java b/100_core/src/gplx/core/btries/Btrie_fast_mgr.java index adb2a5a7a..3ee5e23cc 100644 --- a/100_core/src/gplx/core/btries/Btrie_fast_mgr.java +++ b/100_core/src/gplx/core/btries/Btrie_fast_mgr.java @@ -108,7 +108,7 @@ public class Btrie_fast_mgr { pos = match_pos; } } - return dirty ? tmp_bfr.Xto_bry_and_clear() : src; + return dirty ? tmp_bfr.To_bry_and_clear() : src; } public static Btrie_fast_mgr cs() {return new Btrie_fast_mgr(Bool_.N);} public static Btrie_fast_mgr ci_a7() {return new Btrie_fast_mgr(Bool_.Y);} diff --git a/100_core/src/gplx/core/btries/Btrie_slim_itm.java b/100_core/src/gplx/core/btries/Btrie_slim_itm.java index 55559daa2..3cfa21922 100644 --- a/100_core/src/gplx/core/btries/Btrie_slim_itm.java +++ b/100_core/src/gplx/core/btries/Btrie_slim_itm.java @@ -79,7 +79,7 @@ public class Btrie_slim_itm { Btrie_slim_itm rv = new Btrie_slim_itm(b, val, case_any); ary[ary_len] = rv; ary_len = new_len; - ByteHashItm_sorter._.Sort(ary, ary_len); + ByteHashItm_sorter.Instance.Sort(ary, ary_len); return rv; } public void Ary_del(byte b) { @@ -126,5 +126,5 @@ class ByteHashItm_sorter {// quicksort if (lo < j) Sort_recurse(lo, j); if (i < hi) Sort_recurse(i, hi); } - public static final ByteHashItm_sorter _ = new ByteHashItm_sorter(); ByteHashItm_sorter() {} + public static final ByteHashItm_sorter Instance = new ByteHashItm_sorter(); ByteHashItm_sorter() {} } diff --git a/100_core/src/gplx/core/btries/Btrie_slim_mgr.java b/100_core/src/gplx/core/btries/Btrie_slim_mgr.java index 5767d434b..20a857edb 100644 --- a/100_core/src/gplx/core/btries/Btrie_slim_mgr.java +++ b/100_core/src/gplx/core/btries/Btrie_slim_mgr.java @@ -21,11 +21,12 @@ public class Btrie_slim_mgr implements Btrie_mgr { Btrie_slim_mgr(boolean case_match) {root = new Btrie_slim_itm(Byte_.Zero, null, !case_match);} private Btrie_slim_itm root; public int Count() {return count;} private int count; public int Match_pos() {return match_pos;} private int match_pos; + public Object Match_exact(byte[] src) {return src == null ? null : Match_exact(src, 0, src.length);} public Object Match_exact(byte[] src, int bgn_pos, int end_pos) { Object rv = Match_bgn_w_byte(src[bgn_pos], src, bgn_pos, end_pos); return rv == null ? null : match_pos - bgn_pos == end_pos - bgn_pos ? rv : null; } - public Object Match_bgn(byte[] src, int bgn_pos, int end_pos) {return Match_bgn_w_byte(src[bgn_pos], src, bgn_pos, end_pos);} + public Object Match_bgn(byte[] src, int bgn_pos, int end_pos) {return bgn_pos < end_pos ? Match_bgn_w_byte(src[bgn_pos], src, bgn_pos, end_pos) : null;} // handle out of bounds gracefully; EX: Match_bgn("abc", 3, 3) should return null not fail public Object Match_bgn_w_byte(byte b, byte[] src, int bgn_pos, int src_len) { Object rv = null; int cur_pos = match_pos = bgn_pos; Btrie_slim_itm cur = root; @@ -47,6 +48,7 @@ public class Btrie_slim_mgr implements Btrie_mgr { public Btrie_slim_mgr Add_bry(String key, String val) {return (Btrie_slim_mgr)Add_obj(Bry_.new_u8(key), Bry_.new_u8(val));} public Btrie_slim_mgr Add_bry(String key, byte[] val) {return (Btrie_slim_mgr)Add_obj(Bry_.new_u8(key), val);} public Btrie_slim_mgr Add_bry(byte[] v) {return (Btrie_slim_mgr)Add_obj(v, v);} + public Btrie_slim_mgr Add_bry_bry(byte[] key, byte[] val) {return (Btrie_slim_mgr)Add_obj(key, val);} public Btrie_slim_mgr Add_bry_byte(byte b, byte val) {return (Btrie_slim_mgr)Add_obj(new byte[] {b}, Byte_obj_val.new_(val));} public Btrie_slim_mgr Add_bry_byte(byte[] bry, byte val) {return (Btrie_slim_mgr)Add_obj(bry, Byte_obj_val.new_(val));} public Btrie_slim_mgr Add_str_byte__many(byte val, String... ary) { @@ -127,7 +129,7 @@ public class Btrie_slim_mgr implements Btrie_mgr { pos = match_pos; } } - return dirty ? tmp_bfr.Xto_bry_and_clear() : src; + return dirty ? tmp_bfr.To_bry_and_clear() : src; } public void Clear() {root.Clear(); count = 0;} public static Btrie_slim_mgr cs() {return new Btrie_slim_mgr(Bool_.Y);} diff --git a/100_core/src/gplx/core/consoles/Console_adp__sys.java b/100_core/src/gplx/core/consoles/Console_adp__sys.java index 3ff9bc6da..60928782a 100644 --- a/100_core/src/gplx/core/consoles/Console_adp__sys.java +++ b/100_core/src/gplx/core/consoles/Console_adp__sys.java @@ -62,5 +62,5 @@ public class Console_adp__sys implements Console_adp { catch (java.io.UnsupportedEncodingException e) {throw Err_.new_wo_type("unsupported exception");} ps.println(s); } - public static final Console_adp__sys I = new Console_adp__sys(); + public static final Console_adp__sys Instance = new Console_adp__sys(); } diff --git a/100_core/src/gplx/core/intls/Utf8__tst.java b/100_core/src/gplx/core/intls/Utf8__tst.java index 69ce5e489..660a0a88d 100644 --- a/100_core/src/gplx/core/intls/Utf8__tst.java +++ b/100_core/src/gplx/core/intls/Utf8__tst.java @@ -54,7 +54,7 @@ public class Utf8__tst { // bgn = end; // bgn_bry = end_by_codepoint_next; // } -// Tfds.WriteText(bfr.Xto_str_and_clear()); +// Tfds.WriteText(bfr.To_str_and_clear()); // } } class Utf8__fxt { diff --git a/100_core/src/gplx/core/js/Js_wtr.java b/100_core/src/gplx/core/js/Js_wtr.java index d64ce5ec7..95c060127 100644 --- a/100_core/src/gplx/core/js/Js_wtr.java +++ b/100_core/src/gplx/core/js/Js_wtr.java @@ -21,8 +21,8 @@ public class Js_wtr { private int arg_idx = 0, ary_idx = 0; public byte Quote_char() {return quote_char;} public Js_wtr Quote_char_(byte v) {quote_char = v; return this;} private byte quote_char = Byte_ascii.Quote; public void Clear() {bfr.Clear();} - public String To_str() {return bfr.Xto_str();} - public String To_str_and_clear() {return bfr.Xto_str_and_clear();} + public String To_str() {return bfr.To_str();} + public String To_str_and_clear() {return bfr.To_str_and_clear();} public Js_wtr Func_init(String name) {return Func_init(Bry_.new_u8(name));} public Js_wtr Func_init(byte[] name) { bfr.Add(name).Add_byte(Byte_ascii.Paren_bgn); diff --git a/100_core/src/gplx/core/primitives/Bool_obj_ref.java b/100_core/src/gplx/core/primitives/Bool_obj_ref.java index d775ba3a6..8bdaecead 100644 --- a/100_core/src/gplx/core/primitives/Bool_obj_ref.java +++ b/100_core/src/gplx/core/primitives/Bool_obj_ref.java @@ -20,7 +20,7 @@ public class Bool_obj_ref { public boolean Val() {return val;} private boolean val; public boolean Val_y() {return val;} public boolean Val_n() {return !val;} - public String Val_as_str_yn() {return Yn.Xto_str(val);} + public String Val_as_str_yn() {return Yn.To_str(val);} public Bool_obj_ref Val_y_() {val = true; return this;} public Bool_obj_ref Val_n_() {val = false; return this;} public Bool_obj_ref Val_(boolean v) {val = v; return this;} diff --git a/100_core/src/gplx/core/primitives/Byte_obj_ref.java b/100_core/src/gplx/core/primitives/Byte_obj_ref.java index c7fcbd630..437feabad 100644 --- a/100_core/src/gplx/core/primitives/Byte_obj_ref.java +++ b/100_core/src/gplx/core/primitives/Byte_obj_ref.java @@ -21,7 +21,7 @@ public class Byte_obj_ref { public Byte_obj_ref Val_(byte v) {val = v; return this;} @Override public int hashCode() {return val;} @Override public boolean equals(Object obj) {return obj == null ? false : val == ((Byte_obj_ref)obj).Val();} - @Override public String toString() {return Int_.Xto_str(val);} + @Override public String toString() {return Int_.To_str(val);} public static Byte_obj_ref zero_() {return new_(Byte_.Zero);} public static Byte_obj_ref new_(byte val) { Byte_obj_ref rv = new Byte_obj_ref(); diff --git a/100_core/src/gplx/core/primitives/Byte_obj_val.java b/100_core/src/gplx/core/primitives/Byte_obj_val.java index 2f14d17e0..939626073 100644 --- a/100_core/src/gplx/core/primitives/Byte_obj_val.java +++ b/100_core/src/gplx/core/primitives/Byte_obj_val.java @@ -18,7 +18,7 @@ along with this program. If not, see . package gplx.core.primitives; import gplx.*; import gplx.core.*; public class Byte_obj_val { public byte Val() {return val;} private byte val; - @Override public String toString() {return Int_.Xto_str(val);} + @Override public String toString() {return Int_.To_str(val);} @Override public int hashCode() {return val;} @Override public boolean equals(Object obj) {return obj == null ? false : val == ((Byte_obj_val)obj).Val();} public static Byte_obj_val new_(byte val) { diff --git a/100_core/src/gplx/core/primitives/Double_obj_val.java b/100_core/src/gplx/core/primitives/Double_obj_val.java index 979216375..6a8414e16 100644 --- a/100_core/src/gplx/core/primitives/Double_obj_val.java +++ b/100_core/src/gplx/core/primitives/Double_obj_val.java @@ -18,7 +18,7 @@ along with this program. If not, see . package gplx.core.primitives; import gplx.*; import gplx.core.*; public class Double_obj_val implements CompareAble { public double Val() {return val;} double val; - @Override public String toString() {return Double_.Xto_str(val);} + @Override public String toString() {return Double_.To_str(val);} @Override public int hashCode() {return (int)val;} @Override public boolean equals(Object obj) {return obj == null ? false : val == ((Double_obj_val)obj).Val();} public int compareTo(Object obj) {Double_obj_val comp = (Double_obj_val)obj; return Double_.Compare(val, comp.val);} diff --git a/100_core/src/gplx/core/primitives/Int_obj_ref.java b/100_core/src/gplx/core/primitives/Int_obj_ref.java index 883b71d03..fa9d384ee 100644 --- a/100_core/src/gplx/core/primitives/Int_obj_ref.java +++ b/100_core/src/gplx/core/primitives/Int_obj_ref.java @@ -23,8 +23,8 @@ public class Int_obj_ref { public int Val_add(int v) {val += v; return val;} public Int_obj_ref Val_zero_() {val = 0; return this;} public Int_obj_ref Val_neg1_() {val = -1; return this;} - public String Val_as_str() {return Int_.Xto_str(val);} - @Override public String toString() {return Int_.Xto_str(val);} + public String Val_as_str() {return Int_.To_str(val);} + @Override public String toString() {return Int_.To_str(val);} @Override public int hashCode() {return val;} @Override public boolean equals(Object obj) {return val == ((Int_obj_ref)obj).Val();} public static Int_obj_ref neg1_() {return new_(-1);} diff --git a/100_core/src/gplx/core/primitives/Int_obj_val.java b/100_core/src/gplx/core/primitives/Int_obj_val.java index 0f85da27d..2b2c29068 100644 --- a/100_core/src/gplx/core/primitives/Int_obj_val.java +++ b/100_core/src/gplx/core/primitives/Int_obj_val.java @@ -18,7 +18,7 @@ along with this program. If not, see . package gplx.core.primitives; import gplx.*; import gplx.core.*; public class Int_obj_val implements CompareAble { public int Val() {return val;} int val; - @Override public String toString() {return Int_.Xto_str(val);} + @Override public String toString() {return Int_.To_str(val);} @Override public int hashCode() {return val;} @Override public boolean equals(Object obj) {return obj == null ? false : val == ((Int_obj_val)obj).Val();} public int compareTo(Object obj) {Int_obj_val comp = (Int_obj_val)obj; return Int_.Compare(val, comp.val);} diff --git a/100_core/src/gplx/core/strings/String_bldr.java b/100_core/src/gplx/core/strings/String_bldr.java index a6a19c9de..6e06635b8 100644 --- a/100_core/src/gplx/core/strings/String_bldr.java +++ b/100_core/src/gplx/core/strings/String_bldr.java @@ -30,7 +30,7 @@ public interface String_bldr { String_bldr Add_str_w_crlf(String v); String_bldr Add_spr_unless_first(String s, String spr, int i); String_bldr Clear(); - String Xto_str_and_clear(); + String To_str_and_clear(); String To_str(); int Count(); String_bldr Add(byte[] v); @@ -70,7 +70,7 @@ abstract class String_bldr_base implements String_bldr { return this; } public String_bldr Clear() {Del(0, Count()); return this;} - public String Xto_str_and_clear() { + public String To_str_and_clear() { String rv = To_str(); Clear(); return rv; diff --git a/100_core/src/gplx/core/threads/Thread_adp.java b/100_core/src/gplx/core/threads/Thread_adp.java index a1513bff8..af2d3961e 100644 --- a/100_core/src/gplx/core/threads/Thread_adp.java +++ b/100_core/src/gplx/core/threads/Thread_adp.java @@ -39,7 +39,7 @@ public class Thread_adp implements Runnable { // public void Stop() {thread.stop();} public boolean IsAlive() {return thread.isAlive();} @Override public void run() { - invk.Invk(GfsCtx._, 0, cmd, msg); + invk.Invk(GfsCtx.Instance, 0, cmd, msg); } public static final Thread_adp Null = new Thread_adp(Thread_adp_.Name_null, GfoInvkAble_.Null, "", GfoMsg_.Null); } diff --git a/100_core/src_000_err/gplx/Gfo_msg_grp_.java b/100_core/src_000_err/gplx/Gfo_msg_grp_.java index cae3e8c9a..c45cf1827 100644 --- a/100_core/src_000_err/gplx/Gfo_msg_grp_.java +++ b/100_core/src_000_err/gplx/Gfo_msg_grp_.java @@ -24,7 +24,7 @@ public class Gfo_msg_grp_ { public static int Uid_next() {return uid_next++;} static int uid_next = 0; public static byte[] Path(byte[] owner_path, byte[] key) { if (owner_path != Bry_.Empty) tmp_bfr.Add(owner_path).Add_byte(Byte_ascii.Dot); // only add "." if owner_path is available; prevents creating ".gplx" - return tmp_bfr.Add(key).Xto_bry_and_clear(); + return tmp_bfr.Add(key).To_bry_and_clear(); } static Bry_bfr tmp_bfr = Bry_bfr.reset_(256); } diff --git a/100_core/src_000_err/gplx/Gfo_msg_itm.java b/100_core/src_000_err/gplx/Gfo_msg_itm.java index 65c61278f..dac56b62b 100644 --- a/100_core/src_000_err/gplx/Gfo_msg_itm.java +++ b/100_core/src_000_err/gplx/Gfo_msg_itm.java @@ -38,7 +38,7 @@ public class Gfo_msg_itm implements Gfo_msg_obj { if (fmtr == null) fmtr = Bry_fmtr.new_bry_(fmt).Compile(); if (fmtr.Fmt_args_exist()) { fmtr.Bld_bfr_many(tmp_bfr, vals); - return tmp_bfr.Xto_str_and_clear(); + return tmp_bfr.To_str_and_clear(); } else return String_.new_u8(fmt); @@ -47,7 +47,7 @@ public class Gfo_msg_itm implements Gfo_msg_obj { if (fmtr == null) fmtr = Bry_fmtr.new_bry_(fmt).Compile(); if (fmtr.Fmt_args_exist()) { fmtr.Bld_bfr_one(tmp_bfr, val); - return tmp_bfr.Xto_str_and_clear(); + return tmp_bfr.To_str_and_clear(); } else return String_.new_u8(fmt); diff --git a/100_core/src_000_err/gplx/Gfo_msg_root.java b/100_core/src_000_err/gplx/Gfo_msg_root.java index 015646e7f..91a289e76 100644 --- a/100_core/src_000_err/gplx/Gfo_msg_root.java +++ b/100_core/src_000_err/gplx/Gfo_msg_root.java @@ -73,8 +73,8 @@ public class Gfo_msg_root { return cur_list; } Gfo_msg_grp root; - Ordered_hash owners = Ordered_hash_.new_(); + Ordered_hash owners = Ordered_hash_.New(); int uid_list_next = 0; int uid_item_next = 0; - public static final Gfo_msg_root _ = new Gfo_msg_root("gplx"); + public static final Gfo_msg_root Instance = new Gfo_msg_root("gplx"); } diff --git a/100_core/src_100_types_primitive/gplx/Bool_.java b/100_core/src_100_types_primitive/gplx/Bool_.java index d7d9d1d6b..51d698b24 100644 --- a/100_core/src_100_types_primitive/gplx/Bool_.java +++ b/100_core/src_100_types_primitive/gplx/Bool_.java @@ -26,7 +26,7 @@ public class Bool_ implements GfoInvkAble { public static final String True_str = "true", False_str = "false"; public static final byte[] True_bry = Bry_.new_a7(True_str), False_bry = Bry_.new_a7(False_str); public static boolean cast(Object obj) {try {return (Boolean)obj;} catch (Exception e) {throw Err_.new_type_mismatch_w_exc(e, boolean.class, obj);}} - public static boolean cast_or(Object obj, boolean v) {try {return (Boolean)obj;} catch (Exception e) {Err_.Noop(e); return v;}} + public static boolean cast_or(Object obj, boolean v) {try {return (Boolean)obj;} catch (Exception e) {Err_.Noop(e); return v;}} public static boolean parse(String raw) { if ( String_.Eq(raw, True_str) || String_.Eq(raw, "True") // needed for Store_Wtr(){boolVal.toString();} @@ -42,7 +42,6 @@ public class Bool_ implements GfoInvkAble { public static int To_int(boolean v) {return v ? Y_int : N_int;} public static byte To_byte(boolean v) {return v ? Y_byte : N_byte;} public static String To_str_lower(boolean v) {return v ? True_str : False_str;} - public static final boolean[] Ary_empty = new boolean[0]; public static final Bool_ Gfs = new Bool_(); public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { diff --git a/100_core/src_100_types_primitive/gplx/Byte__tst.java b/100_core/src_100_types_primitive/gplx/Byte__tst.java index 736d8d583..d96b2864f 100644 --- a/100_core/src_100_types_primitive/gplx/Byte__tst.java +++ b/100_core/src_100_types_primitive/gplx/Byte__tst.java @@ -25,7 +25,7 @@ public class Byte__tst { tst_int_( 255, 255); tst_int_( 256, 0); // NOTE: 256 will cast to 1; (byte)256 works same in both JAVA/.NET } void tst_int_(int v, int expd) {Tfds.Eq((byte)expd, Byte_.By_int(v));} // WORKAROUND/JAVA: expd is of type int b/c java promotes numbers to ints - @Test public void XtoInt() { + @Test public void To_int() { tst_XtoInt( 0, 0); tst_XtoInt( 127, 127); tst_XtoInt( 128, 128); diff --git a/100_core/src_100_types_primitive/gplx/Byte_ascii.java b/100_core/src_100_types_primitive/gplx/Byte_ascii.java index 469c78432..8618b837e 100644 --- a/100_core/src_100_types_primitive/gplx/Byte_ascii.java +++ b/100_core/src_100_types_primitive/gplx/Byte_ascii.java @@ -101,6 +101,7 @@ public class Byte_ascii { , Quote_bry = new byte[] {Byte_ascii.Quote} , Hash_bry = new byte[] {Byte_ascii.Hash} , Dot_bry = new byte[] {Byte_ascii.Dot} + , Angle_bgn_bry = new byte[] {Byte_ascii.Angle_bgn} , Comma_bry = new byte[] {Byte_ascii.Comma} , Colon_bry = new byte[] {Byte_ascii.Colon} , Amp_bry = new byte[] {Byte_ascii.Amp} diff --git a/100_core/src_100_types_primitive/gplx/Char_.java b/100_core/src_100_types_primitive/gplx/Char_.java index d3d67454d..48635d4ef 100644 --- a/100_core/src_100_types_primitive/gplx/Char_.java +++ b/100_core/src_100_types_primitive/gplx/Char_.java @@ -19,14 +19,6 @@ package gplx; public class Char_ { public static final Class Cls_ref_type = Character.class; public static final char Null = '\0', NewLine = '\n'; - public static final int CharLen = 1; - public static final int AsciiZero = 48; - public static boolean IsNumber(char c) { - switch (c) { - case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': return true; - default: return false; - } - } public static boolean IsCaseLower(char c) {return Character.isLowerCase(c);} public static boolean IsLetterOrDigit(char c) {return Character.isLetterOrDigit(c);} public static boolean IsLetterEnglish(char c) { @@ -48,12 +40,23 @@ public class Char_ { default: return false; } } + public static boolean IsNumber(char c) { + switch (c) { + case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': return true; + default: return false; + } + } public static boolean IsWhitespace(char c) { switch (c) { case ' ': case '\t': case '\n': case '\r': return true; default: return false; } } + public static boolean In(char match, char... ary) { + for (char itm : ary) + if (itm == match) return true; + return false; + } public static int To_int_or(char c, int or) { switch (c) { case '0': return 0; case '1': return 1; case '2': return 2; case '3': return 3; case '4': return 4; @@ -61,17 +64,10 @@ public class Char_ { default: return or; } } - public static boolean In(char match, char... ary) { - for (char itm : ary) - if (itm == match) return true; - return false; - } public static String To_str(char[] ary, int pos, int length) {return new String(ary, pos, length);} - public static byte[] XtoByteAry(int v) {return Bry_.new_u8(Char_.To_str((char)v));} - public static char XbyInt(int i) {return (char)i;} public static String To_str(int b) {return To_str((char)b);} public static String To_str(char c) {return String.valueOf(c);} - public static byte XtoByte(char c) {return (byte)c;} + public static char By_int(int i) {return (char)i;} public static char cast(Object o) {try {return (Character)o;} catch(Exception e) {throw Err_.new_type_mismatch_w_exc(e, char.class, o);}} public static char parse(String raw) {try {return raw.charAt(0);} catch(Exception exc) {throw Err_.new_parse_exc(exc, char.class, raw);}} } diff --git a/100_core/src_100_types_primitive/gplx/Double_.java b/100_core/src_100_types_primitive/gplx/Double_.java index d26644125..421e00e75 100644 --- a/100_core/src_100_types_primitive/gplx/Double_.java +++ b/100_core/src_100_types_primitive/gplx/Double_.java @@ -36,15 +36,15 @@ public class Double_ { try {String s = String_.as_(v); return s == null ? Double_.cast(v) : Double_.parse(s);} catch (Exception e) {throw Err_.new_cast(e, double.class, v);} } - public static String Xto_str(double v) { + public static String To_str(double v) { int v_int = (int)v; - return v - v_int == 0 ? Int_.Xto_str(v_int) : Double.toString(v); + return v - v_int == 0 ? Int_.To_str(v_int) : Double.toString(v); } - public static String Xto_str_loose(double v) { + public static String To_str_loose(double v) { int v_as_int = (int)v; return v == v_as_int - ? Int_.Xto_str(v_as_int) // convert to int, and call print String to eliminate any trailing decimal places - : Float_.Xto_str((float)v); // calling ((float)v).toString is better at removing trailing 0s than String.format("%g", v). note that .net .toString() handles it better; EX:2449.600000000000d; DATE:2014-07-29 + ? Int_.To_str(v_as_int) // convert to int, and call print String to eliminate any trailing decimal places + : Float_.To_str((float)v); // calling ((float)v).toString is better at removing trailing 0s than String.format("%g", v). note that .net .toString() handles it better; EX:2449.600000000000d; DATE:2014-07-29 } public static int Compare(double lhs, double rhs) { if (lhs == rhs) return CompareAble_.Same; diff --git a/100_core/src_100_types_primitive/gplx/Double__tst.java b/100_core/src_100_types_primitive/gplx/Double__tst.java index 0d5b3ba91..9a2cad0bd 100644 --- a/100_core/src_100_types_primitive/gplx/Double__tst.java +++ b/100_core/src_100_types_primitive/gplx/Double__tst.java @@ -25,5 +25,5 @@ public class Double__tst { } } class Double__fxt { - public void Test_Xto_str_loose(double v, String expd) {Tfds.Eq(expd, Double_.Xto_str_loose(v));} + public void Test_Xto_str_loose(double v, String expd) {Tfds.Eq(expd, Double_.To_str_loose(v));} } diff --git a/100_core/src_100_types_primitive/gplx/Float_.java b/100_core/src_100_types_primitive/gplx/Float_.java index fb9c8f6a8..e7d393810 100644 --- a/100_core/src_100_types_primitive/gplx/Float_.java +++ b/100_core/src_100_types_primitive/gplx/Float_.java @@ -23,9 +23,9 @@ public class Float_ { public static boolean IsNaN(float v) {return Float.isNaN(v);} public static float cast(Object obj) {try {return (Float)obj;} catch(Exception exc) {throw Err_.new_type_mismatch_w_exc(exc, float.class, obj);}} public static float parse(String raw) {try {return Float.parseFloat(raw);} catch(Exception exc) {throw Err_.new_parse_exc(exc, float.class, raw);}} - public static String Xto_str(float v) { + public static String To_str(float v) { int v_int = (int)v; - return v - v_int == 0 ? Int_.Xto_str(v_int) : Float.toString(v); + return v - v_int == 0 ? Int_.To_str(v_int) : Float.toString(v); } public static float Div(int val, int divisor) {return (float)val / (float)divisor;} public static float Div(long val, long divisor) {return (float)val / (float)divisor;} diff --git a/100_core/src_100_types_primitive/gplx/Int_.java b/100_core/src_100_types_primitive/gplx/Int_.java index ea75622d9..805a12892 100644 --- a/100_core/src_100_types_primitive/gplx/Int_.java +++ b/100_core/src_100_types_primitive/gplx/Int_.java @@ -128,11 +128,11 @@ public class Int_ implements GfoInvkAble { if (val < 0) throw Err_.new_wo_type("key must be >= 0", "key", key, "val", val); return this; } - public static String Xto_str_pad_bgn_space(int v, int reqdPlaces) {return Xto_str_pad_bgn_zero(v, reqdPlaces, Byte_ascii.Space, true);} // EX: 1, 3 returns " 1" - public static String Xto_str_pad_bgn_zero(int v, int reqdPlaces) {return Xto_str_pad_bgn_zero(v, reqdPlaces, Byte_ascii.Num_0, true);} // EX: 1, 3 returns "001" - static String Xto_str_pad_bgn_zero(int val, int places, byte pad_chr, boolean bgn) { + public static String To_str_pad_bgn_space(int v, int reqdPlaces) {return To_str_pad_bgn_zero(v, reqdPlaces, Byte_ascii.Space, true);} // EX: 1, 3 returns " 1" + public static String To_str_pad_bgn_zero(int v, int reqdPlaces) {return To_str_pad_bgn_zero(v, reqdPlaces, Byte_ascii.Num_0, true);} // EX: 1, 3 returns "001" + static String To_str_pad_bgn_zero(int val, int places, byte pad_chr, boolean bgn) { int len = DigitCount(val); - int pad_len = places - len; if (pad_len < 0) return Int_.Xto_str(val); + int pad_len = places - len; if (pad_len < 0) return Int_.To_str(val); Bry_bfr bfr = Bry_bfr.new_(); boolean neg = val < 0; if (bgn) { // special logic to handle negative numbers; EX: -1 -> "-001", not "00-1" @@ -146,20 +146,20 @@ public class Int_ implements GfoInvkAble { bfr.Add_int_fixed(val, len); bfr.Add_byte_repeat(pad_chr, pad_len); if (bgn) bfr.Add_int_fixed(val, len); // NOTE: neg handled above - return bfr.Xto_str(); + return bfr.To_str(); } public static int read_(Object o) {String s = String_.as_(o); return s != null ? Int_.parse(s) : Int_.cast(o);} public static int parse(String raw) {try {return Integer.parseInt(raw);} catch(Exception e) {throw Err_.new_parse_exc(e, int.class, raw);}} public static int cast(Object obj) {try {return (Integer)obj;} catch(Exception exc) {throw Err_.new_type_mismatch_w_exc(exc, int.class, obj);}} public static int cast_or(Object obj, int or) {try {return (Integer)obj;} catch(Exception e) {Err_.Noop(e); return or;}} public static int Xby_double_(double v) {return (int)v;} - public static String Xto_str(int v) {return new Integer(v).toString();} - public static String Xto_str_fmt(int v, String fmt) {return new java.text.DecimalFormat(fmt).format(v);} + public static String To_str(int v) {return new Integer(v).toString();} + public static String To_str_fmt(int v, String fmt) {return new java.text.DecimalFormat(fmt).format(v);} public static boolean TypeMatch(Class type) {return type == int.class || type == Integer.class;} public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { if (ctx.Match(k, Invk_XtoStr_PadBgn)) { int v = m.ReadInt(GfsCore_.Arg_primitive), pad = m.ReadInt("pad"); - return ctx.Deny() ? (Object)this : Xto_str_pad_bgn_zero(v, pad); + return ctx.Deny() ? (Object)this : To_str_pad_bgn_zero(v, pad); } else if (ctx.Match(k, "Add")) { int v = m.ReadInt(GfsCore_.Arg_primitive), operand = m.ReadInt("operand"); @@ -168,18 +168,17 @@ public class Int_ implements GfoInvkAble { else return GfoInvkAble_.Rv_unhandled; } public static final String Invk_XtoStr_PadBgn = "XtoStr_PadBgn"; public static final Int_ Gfs = new Int_(); -// public static int Xto_int_hex(String v) {return Integer.parseInt(v, 16);} - public static int Xto_int_hex(byte[] src) {return Xto_int_hex(src, 0, src.length);} - public static int Xto_int_hex(byte[] src, int bgn, int end) { + public static int To_int_hex(byte[] src) {return To_int_hex(src, 0, src.length);} + public static int To_int_hex(byte[] src, int bgn, int end) { int rv = 0; int factor = 1; for (int i = end - 1; i >= bgn; i--) { - int val = Xto_int_hex(src[i]); + int val = To_int_hex(src[i]); rv += (val * factor); factor *= 16; } return rv; } - public static int Xto_int_hex(byte b) { + public static int To_int_hex(byte b) { 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: @@ -192,18 +191,18 @@ public class Int_ implements GfoInvkAble { return -1; } } - public static String Xto_str_hex(int v) {return Xto_str_hex(Bool_.Y, Bool_.Y, v);} - public static String Xto_str_hex(boolean zero_pad, boolean upper, int v) { + public static String To_str_hex(int v) {return To_str_hex(Bool_.Y, Bool_.Y, v);} + public static String To_str_hex(boolean zero_pad, boolean upper, int v) { String rv = Integer.toHexString(v); int rv_len = String_.Len(rv); if (zero_pad && rv_len < 8) rv = String_.Repeat("0", 8 - rv_len) + rv; return upper ? String_.Upper(rv) : rv; } - public static String Xto_str(int[] ary) {return Xto_str(ary, " ");} - public static String Xto_str(int[] ary, String dlm) { + public static String To_str(int[] ary) {return To_str(ary, " ");} + public static String To_str(int[] ary, String dlm) { String_bldr sb = String_bldr_.new_(); for (int i = 0; i < ary.length; i++) - sb.Add_spr_unless_first(Int_.Xto_str(ary[i]), dlm, i); + sb.Add_spr_unless_first(Int_.To_str(ary[i]), dlm, i); return sb.To_str(); } public static int[] Ary_parse(String raw_str, int reqd_len, int[] or) { @@ -251,7 +250,7 @@ public class Int_ implements GfoInvkAble { rv[i] = Int_.parse(ary[i]); return rv; } - public static byte[] Xto_bry(int v) {return Bry_.new_a7(Xto_str(v));} + public static byte[] To_bry(int v) {return Bry_.new_a7(To_str(v));} public static final int Min_value = Integer.MIN_VALUE , Max_value = Integer.MAX_VALUE diff --git a/100_core/src_100_types_primitive/gplx/Int__tst.java b/100_core/src_100_types_primitive/gplx/Int__tst.java index f96890019..b75d6c852 100644 --- a/100_core/src_100_types_primitive/gplx/Int__tst.java +++ b/100_core/src_100_types_primitive/gplx/Int__tst.java @@ -26,7 +26,7 @@ public class Int__tst { tst_XtoStr_PadLeft_Zeroes(-12 , 3, "-12"); // negative tst_XtoStr_PadLeft_Zeroes(-123 , 3, "-123"); // negative tst_XtoStr_PadLeft_Zeroes(-1234 , 3, "-1234"); // negative - } void tst_XtoStr_PadLeft_Zeroes(int val, int zeros, String expd) {Tfds.Eq(expd, Int_.Xto_str_pad_bgn_zero(val, zeros));} + } void tst_XtoStr_PadLeft_Zeroes(int val, int zeros, String expd) {Tfds.Eq(expd, Int_.To_str_pad_bgn_zero(val, zeros));} @Test public void parseOr_() { tst_ParseOr("", -1); // empty tst_ParseOr("123", 123); // single @@ -41,7 +41,7 @@ public class Int__tst { @Test public void Xto_fmt() { tst_XtoStr_fmt(1, "1"); tst_XtoStr_fmt(1000, "1,000"); - } void tst_XtoStr_fmt(int v, String expd) {Tfds.Eq(expd, Int_.Xto_str_fmt(v, "#,###"));} + } void tst_XtoStr_fmt(int v, String expd) {Tfds.Eq(expd, Int_.To_str_fmt(v, "#,###"));} @Test public void AryRng() { tst_AryRng(1, 3, Int_.Ary(1, 2, 3)); } void tst_AryRng(int bgn, int end, int[] expd) {Tfds.Eq_ary(expd, Int_.AryRng(bgn, end));} @@ -71,7 +71,7 @@ public class Int__tst { tst_DigitCount(100, 3); tst_DigitCount(-1, 2); tst_DigitCount(-100, 4); - } void tst_DigitCount(int val, int expd) {Tfds.Eq(expd, Int_.DigitCount(val), Int_.Xto_str(val));} + } void tst_DigitCount(int val, int expd) {Tfds.Eq(expd, Int_.DigitCount(val), Int_.To_str(val));} @Test public void Log10() { tst_Log10( 0, 0); tst_Log10( 1, 0); @@ -98,14 +98,14 @@ public class Int__tst { } @Test public void Xto_int_hex_tst() { Xto_int_hex("007C", 124); - } void Xto_int_hex(String raw, int expd) {Tfds.Eq(expd, Int_.Xto_int_hex(Bry_.new_a7(raw)));} + } void Xto_int_hex(String raw, int expd) {Tfds.Eq(expd, Int_.To_int_hex(Bry_.new_a7(raw)));} @Test public void Ary_parse() { Ary_parse__tst("1,2,3" , 3, Int_.Ary_empty, 1, 2, 3); Ary_parse__tst("123,321,213" , 3, Int_.Ary_empty, 123, 321, 213); Ary_parse__tst(" 1, 2,3" , 3, Int_.Ary_empty, 1, 2, 3); Ary_parse__tst("-1,+2,-3" , 3, Int_.Ary_empty, -1, 2, -3); - Ary_parse__tst(Int_.Xto_str(Int_.Min_value) , 1, Int_.Ary_empty, Int_.Min_value); - Ary_parse__tst(Int_.Xto_str(Int_.Max_value) , 1, Int_.Ary_empty, Int_.Max_value); + Ary_parse__tst(Int_.To_str(Int_.Min_value) , 1, Int_.Ary_empty, Int_.Min_value); + Ary_parse__tst(Int_.To_str(Int_.Max_value) , 1, Int_.Ary_empty, Int_.Max_value); Ary_parse__tst("1,2" , 1, Int_.Ary_empty); Ary_parse__tst("1" , 2, Int_.Ary_empty); Ary_parse__tst("a" , 1, Int_.Ary_empty); diff --git a/100_core/src_100_types_primitive/gplx/Long_.java b/100_core/src_100_types_primitive/gplx/Long_.java index 415f2eff1..8c72ca707 100644 --- a/100_core/src_100_types_primitive/gplx/Long_.java +++ b/100_core/src_100_types_primitive/gplx/Long_.java @@ -33,9 +33,8 @@ public class Long_ { try {String s = String_.as_(v); return s == null ? Long_.cast(v) : Long_.parse(s);} catch (Exception e) {throw Err_.new_cast(e, long.class, v);} } - public static long Xby_int(int v) {return (long)v;} - public static String Xto_str(long v) {return Long.toString(v);} - public static String Xto_str_PadBgn(long v, int reqdPlaces) {return String_.Pad(Xto_str(v), reqdPlaces, "0", true);} // ex: 1, 3 returns 001 + public static String To_str(long v) {return Long.toString(v);} + public static String To_str_PadBgn(long v, int reqdPlaces) {return String_.Pad(To_str(v), reqdPlaces, "0", true);} // ex: 1, 3 returns 001 public static long parse_or(String raw, long or) { if (raw == null) return or; try { diff --git a/100_core/src_100_types_primitive/gplx/Yn.java b/100_core/src_100_types_primitive/gplx/Yn.java index bdb33509c..ed32203c0 100644 --- a/100_core/src_100_types_primitive/gplx/Yn.java +++ b/100_core/src_100_types_primitive/gplx/Yn.java @@ -44,8 +44,8 @@ public class Yn { if (v_int == Bool_.__int) Err_.new_unhandled(v); return v_int == Bool_.Y_int; } - public static String Xto_str(boolean v) {return v ? "y" : "n";} - public static String Xto_nullable_str(byte v) { + public static String To_str(boolean v) {return v ? "y" : "n";} + public static String To_nullable_str(byte v) { switch (v) { case Bool_.Y_byte: return "y"; case Bool_.N_byte: return "n"; @@ -53,7 +53,7 @@ public class Yn { default: throw Err_.new_unhandled(v); } } - public static byte Xto_nullable_byte(String v) { + public static byte To_nullable_byte(String v) { if (v != null && String_.Len(v) == 1) { char c = String_.CharAt(v, 0); switch (c) { diff --git a/100_core/src_101_types_object/gplx/Array_.java b/100_core/src_101_types_object/gplx/Array_.java index 09fdbde75..66edca48a 100644 --- a/100_core/src_101_types_object/gplx/Array_.java +++ b/100_core/src_101_types_object/gplx/Array_.java @@ -66,7 +66,7 @@ public class Array_ { public static String To_str_nested_obj(Object o) { Bry_bfr bfr = Bry_bfr.new_(); To_str_nested_ary(bfr, (Object)o, 0); - return bfr.Xto_str_and_clear(); + return bfr.To_str_and_clear(); } private static void To_str_nested_ary(Bry_bfr bfr, Object ary, int indent) { int len = Len(ary); diff --git a/100_core/src_101_types_object/gplx/Object_.java b/100_core/src_101_types_object/gplx/Object_.java index 4b6cf59d7..50b4a2c10 100644 --- a/100_core/src_101_types_object/gplx/Object_.java +++ b/100_core/src_101_types_object/gplx/Object_.java @@ -40,7 +40,7 @@ public class Object_ { if (Type_adp_.Eq(c, String_.Cls_ref_type)) return (String)v; else if (Type_adp_.Eq(c, Bry_.Cls_ref_type)) return String_.new_u8((byte[])v); else if (Type_adp_.Eq(c, Bool_.Cls_ref_type)) return Bool_.cast(v) ? Bool_.True_str : Bool_.False_str; // always return "true" / "false" - else if (Type_adp_.Eq(c, Double_.Cls_ref_type)) return Double_.Xto_str_loose(Double_.cast(v)); + else if (Type_adp_.Eq(c, Double_.Cls_ref_type)) return Double_.To_str_loose(Double_.cast(v)); else return v.toString(); } public static final byte[] Bry__null = Bry_.new_a7("null"); diff --git a/100_core/src_101_types_object/gplx/String_.java b/100_core/src_101_types_object/gplx/String_.java index f5ae28f1f..3208240d8 100644 --- a/100_core/src_101_types_object/gplx/String_.java +++ b/100_core/src_101_types_object/gplx/String_.java @@ -355,13 +355,13 @@ public class String_ implements GfoInvkAble { c = String_.CharAt(raw, i); if (c == dlm) { if (!addEmptyIfDlmIsLast && sb.Count() == 0 && i == rawLen - 1) {} - else list.Add(sb.Xto_str_and_clear()); + else list.Add(sb.To_str_and_clear()); } else sb.Add(c); } if (sb.Count() > 0) - list.Add(sb.Xto_str_and_clear()); + list.Add(sb.To_str_and_clear()); return list.To_str_ary(); } public static String[] Split(String s, String separator) {return Split_do(s, separator, false);} @@ -431,7 +431,7 @@ public class String_ implements GfoInvkAble { while (true) { if (sprMatched || i == textLength) { // last pass; add whatever's in sb to list - list.Add(sb.Xto_str_and_clear()); + list.Add(sb.To_str_and_clear()); if (sprMatched && i == textLength) list.Add(""); // if s ends with spr and last pass, add emptyString as last sprMatched = false; } @@ -543,6 +543,6 @@ public class String_ implements GfoInvkAble { if (val != null) bfr.Add_str_u8(val); bfr.Add_byte_nl(); } - return bfr.Xto_str_and_clear(); + return bfr.To_str_and_clear(); } } diff --git a/100_core/src_120_basicDataType/gplx/Io_url.java b/100_core/src_120_basicDataType/gplx/Io_url.java index fd2507f04..cfc341ba5 100644 --- a/100_core/src_120_basicDataType/gplx/Io_url.java +++ b/100_core/src_120_basicDataType/gplx/Io_url.java @@ -29,7 +29,7 @@ public class Io_url implements CompareAble, EqAble, ParseAble, GfoInvkAble { //_ public byte[] To_http_file_bry() { return Bry_.Add(Http_file_bry, Http_file_str_encoder.Encode_bry(raw)); } - public static Url_encoder_interface Http_file_str_encoder = Url_encoder_interface_same._; + public static Url_encoder_interface Http_file_str_encoder = Url_encoder_interface_same.Instance; public static final String Http_file_str = "file:///"; public static final int Http_file_len = String_.Len(Http_file_str); diff --git a/100_core/src_120_basicDataType/gplx/Io_url_.java b/100_core/src_120_basicDataType/gplx/Io_url_.java index 88383d3ba..cd8091006 100644 --- a/100_core/src_120_basicDataType/gplx/Io_url_.java +++ b/100_core/src_120_basicDataType/gplx/Io_url_.java @@ -38,16 +38,16 @@ public class Io_url_ { public static Io_url Usr_Gplx() {return Usr().GenSubDir("gplx");} public static Io_url mem_dir_(String raw) { raw = EndsWith_or_add(raw, Op_sys.Lnx.Fsys_dir_spr_str()); - return new Io_url(raw, IoUrlInfoRegy._.Match(raw)); + return new Io_url(raw, IoUrlInfoRegy.Instance.Match(raw)); } - public static Io_url mem_fil_(String raw) {return new_inf_(raw, IoUrlInfoRegy._.Match(raw));} + public static Io_url mem_fil_(String raw) {return new_inf_(raw, IoUrlInfoRegy.Instance.Match(raw));} public static Io_url wnt_fil_(String raw) {return new_inf_(raw, IoUrlInfo_.Wnt);} public static Io_url wnt_dir_(String raw) {return new_inf_(EndsWith_or_add(raw, Op_sys.Wnt.Fsys_dir_spr_str()), IoUrlInfo_.Wnt);} public static Io_url lnx_fil_(String raw) {return new_inf_(raw, IoUrlInfo_.Lnx);} public static Io_url lnx_dir_(String raw) {return new_inf_(EndsWith_or_add(raw, Op_sys.Lnx.Fsys_dir_spr_str()), IoUrlInfo_.Lnx);} public static Io_url new_fil_(String raw) {return new_any_(raw);} public static Io_url new_dir_(String raw) {return new_any_(raw);} // NOTE: for now, same as new_fil; stack overflow when doing new_dir - public static Io_url new_any_(String raw) {return new_inf_(raw, IoUrlInfoRegy._.Match(raw));} + public static Io_url new_any_(String raw) {return new_inf_(raw, IoUrlInfoRegy.Instance.Match(raw));} public static Io_url new_inf_(String raw, IoUrlInfo info) {return String_.Eq(raw, "") ? Io_url_.Empty : new Io_url(raw, info);} public static Io_url http_any_(String src, boolean wnt) { return new_any_(parse_http_file(src, wnt)); diff --git a/100_core/src_120_basicDataType/gplx/KeyValHash.java b/100_core/src_120_basicDataType/gplx/KeyValHash.java index a5bada85b..4fb6bd9fc 100644 --- a/100_core/src_120_basicDataType/gplx/KeyValHash.java +++ b/100_core/src_120_basicDataType/gplx/KeyValHash.java @@ -17,7 +17,7 @@ along with this program. If not, see . */ package gplx; public class KeyValHash { - private Ordered_hash hash = Ordered_hash_.new_(); + private Ordered_hash hash = Ordered_hash_.New(); public int Count() {return hash.Count();} public KeyValHash Clear() {hash.Clear(); return this;} public boolean Has(String key) {return hash.Has(key);} diff --git a/100_core/src_120_basicDataType/gplx/KeyVal_.java b/100_core/src_120_basicDataType/gplx/KeyVal_.java index 000e814ec..cf95ba5f1 100644 --- a/100_core/src_120_basicDataType/gplx/KeyVal_.java +++ b/100_core/src_120_basicDataType/gplx/KeyVal_.java @@ -66,7 +66,7 @@ public class KeyVal_ { public static String Ary_to_str_nested(KeyVal... ary) { Bry_bfr bfr = Bry_bfr.new_(); Ary_to_str_nested(bfr, 0, ary); - return bfr.Xto_str_and_clear(); + return bfr.To_str_and_clear(); } private static void Ary_to_str_nested(Bry_bfr bfr, int indent, KeyVal[] ary) { int len = ary.length; diff --git a/100_core/src_120_basicDataType/gplx/TimeSpanAdp.java b/100_core/src_120_basicDataType/gplx/TimeSpanAdp.java index 7c4033f82..e8c8a708e 100644 --- a/100_core/src_120_basicDataType/gplx/TimeSpanAdp.java +++ b/100_core/src_120_basicDataType/gplx/TimeSpanAdp.java @@ -78,7 +78,7 @@ public class TimeSpanAdp implements CompareAble, EqAble { case 1: return "s"; case 2: return "m"; case 3: return "h"; - default: return "unknown:<" + Int_.Xto_str(i) + ">"; + default: return "unknown:<" + Int_.To_str(i) + ">"; } } @gplx.Internal protected TimeSpanAdp(long fracs) {this.fracs = fracs;} diff --git a/100_core/src_120_basicDataType/gplx/TimeSpanAdp_.java b/100_core/src_120_basicDataType/gplx/TimeSpanAdp_.java index f4b45a604..8fee5eff9 100644 --- a/100_core/src_120_basicDataType/gplx/TimeSpanAdp_.java +++ b/100_core/src_120_basicDataType/gplx/TimeSpanAdp_.java @@ -93,9 +93,9 @@ public class TimeSpanAdp_ { sb.Add(Sprs[i]); if (val < 10) // zeroPad sb.Add("0"); - sb.Add(Int_.Xto_str(val)); + sb.Add(Int_.To_str(val)); } - return sb.Xto_str_and_clear(); + return sb.To_str_and_clear(); } boolean fmt_fracs = !String_.Eq(fmt, TimeSpanAdp_.Fmt_NoFractionals); boolean fmt_padZeros = String_.Eq(fmt, TimeSpanAdp_.Fmt_PadZeros); @@ -116,7 +116,7 @@ public class TimeSpanAdp_ { zeros = first && !fmt_padZeros ? 1 : padZerosAry[i]; // if first, don't zero pad (avoid "01") dlm = first ? "" : Sprs[i]; // if first, don't use dlm (avoid ":01") sb.Add(dlm); - sb.Add(Int_.Xto_str_pad_bgn_zero(val, zeros)); + sb.Add(Int_.To_str_pad_bgn_zero(val, zeros)); first = false; } return sb.To_str(); diff --git a/100_core/src_120_basicDataType/gplx/Url_encoder_interface.java b/100_core/src_120_basicDataType/gplx/Url_encoder_interface.java index 041ede786..43e17535a 100644 --- a/100_core/src_120_basicDataType/gplx/Url_encoder_interface.java +++ b/100_core/src_120_basicDataType/gplx/Url_encoder_interface.java @@ -23,5 +23,5 @@ public interface Url_encoder_interface { class Url_encoder_interface_same implements Url_encoder_interface { public String Encode_str(String v) {return v;} public byte[] Encode_bry(String v) {return Bry_.new_u8(v);} - public static final Url_encoder_interface_same _ = new Url_encoder_interface_same(); Url_encoder_interface_same() {} + public static final Url_encoder_interface_same Instance = new Url_encoder_interface_same(); Url_encoder_interface_same() {} } diff --git a/100_core/src_130_brys/gplx/Bry_.java b/100_core/src_130_brys/gplx/Bry_.java index 42c9324e4..871eda3ba 100644 --- a/100_core/src_130_brys/gplx/Bry_.java +++ b/100_core/src_130_brys/gplx/Bry_.java @@ -743,7 +743,7 @@ public class Bry_ { } else if (next == lkp) { posRef.Val_(pos + 2); // 1=endQuote;1=lkp; - return make ? bb.Xto_bry() : Bry_.Empty; + return make ? bb.To_bry() : Bry_.Empty; } else throw Err_.new_wo_type("quote found, but not doubled", "txt", String_.new_u8__by_len(ary, bgn, pos + 1)); } @@ -830,7 +830,7 @@ public class Bry_ { } if (dirty) bfr.Add_mid(src, bfr_bgn, src_end); - return dirty ? bfr.Xto_bry_and_clear() : src; + return dirty ? bfr.To_bry_and_clear() : src; } public static byte[] Replace(byte[] src, byte[] find, byte[] replace) {return Replace_between(src, find, null, replace);} public static byte[] Replace_between(byte[] src, byte[] bgn, byte[] end, byte[] replace) { @@ -859,7 +859,7 @@ public class Bry_ { } } } - return bfr.Xto_bry_and_clear(); + return bfr.To_bry_and_clear(); } public static int Trim_end_pos(byte[] src, int end) { for (int i = end - 1; i > -1; i--) { diff --git a/100_core/src_130_brys/gplx/Bry_bfr.java b/100_core/src_130_brys/gplx/Bry_bfr.java index dcf6ffaf0..26da6b9fa 100644 --- a/100_core/src_130_brys/gplx/Bry_bfr.java +++ b/100_core/src_130_brys/gplx/Bry_bfr.java @@ -17,7 +17,7 @@ along with this program. If not, see . */ package gplx; import gplx.core.primitives.*; -public class Bry_bfr { +public class Bry_bfr { private Bry_bfr_mkr_mgr mkr_mgr; private int reset; public byte[] Bfr() {return bfr;} private byte[] bfr; public int Len() {return bfr_len;} private int bfr_len; @@ -50,7 +50,7 @@ public class Bry_bfr { public byte[] To_bry_and_rls() { byte[] rv = null; synchronized (bfr) { - rv = Xto_bry(); + rv = To_bry(); this.Clear(); if (reset > 0) Reset_if_gt(reset); synchronized (mkr_mgr) { @@ -279,6 +279,7 @@ public class Bry_bfr { return this; } public Bry_bfr Add_str(String v) {return Add_str_u8(v);} + public Bry_bfr Add_str_u8_w_nl(String s) {Add_str_u8(s); return Add_byte_nl();} public Bry_bfr Add_str_u8(String str) { try { int str_len = str.length(); @@ -290,6 +291,7 @@ public class Bry_bfr { } catch (Exception e) {throw Err_.new_exc(e, "core", "invalid UTF-8 sequence", "s", str);} } + public Bry_bfr Add_str_a7_w_nl(String s) {Add_str_a7(s); return Add_byte_nl();} public Bry_bfr Add_str_a7(String str) { try { int bry_len = str.length(); @@ -310,8 +312,8 @@ public class Bry_bfr { this.Add_byte(line ? Byte_ascii.Nl : Byte_ascii.Tab); return this; } - public Bry_bfr Add_float(float f) {Add_str(Float_.Xto_str(f)); return this;} - public Bry_bfr Add_double(double v) {Add_str(Double_.Xto_str(v)); return this;} + public Bry_bfr Add_float(float f) {Add_str(Float_.To_str(f)); return this;} + public Bry_bfr Add_double(double v) {Add_str(Double_.To_str(v)); return this;} public Bry_bfr Add_dte(DateAdp val) {return Add_dte_segs(val.Year(), val.Month(),val.Day(), val.Hour(), val.Minute(), val.Second(), val.Frac());} public Bry_bfr Add_dte_segs(int y, int M, int d, int H, int m, int s, int f) { // yyyyMMdd HHmmss.fff if (bfr_len + 19 > bfr_max) Resize((bfr_len + 19) * 2); @@ -403,7 +405,7 @@ public class Bry_bfr { else if (o_type == Boolean.class) Add_yn(Bool_.cast(o)); else if (o_type == Double.class) Add_double(Double_.cast(o)); else if (o_type == Float.class) Add_float(Float_.cast(o)); - else ((Bry_fmtr_arg)o).XferAry(this, 0); + else ((Bry_fmtr_arg)o).Fmt__do(this); return this; } public Bry_bfr Add_obj_strict(Object o) { @@ -420,7 +422,7 @@ public class Bry_bfr { else if (o_type == Boolean.class) Add_bool(Bool_.cast(o)); else if (o_type == Double.class) Add_double(Double_.cast(o)); else if (o_type == Float.class) Add_float(Float_.cast(o)); - else ((Bry_fmtr_arg)o).XferAry(this, 0); + else ((Bry_fmtr_arg)o).Fmt__do(this); return this; } public Bry_bfr Add_yn(boolean v) {Add_byte(v ? Byte_ascii.Ltr_y : Byte_ascii.Ltr_n); return this;} @@ -495,31 +497,26 @@ public class Bry_bfr { return this; } public boolean Eq(byte b) {return bfr_len == 1 && bfr[0] == b;} - public byte[] Xto_bry(int bgn, int end) {return bfr_len == 0 ? Bry_.Empty : Bry_.Mid(bfr, bgn, end);} - public byte[] Xto_bry() {return bfr_len == 0 ? Bry_.Empty : Bry_.Mid(bfr, 0, bfr_len);} - public byte[] Xto_bry_and_reset(int v) { - byte[] rv = Xto_bry(); - this.Clear().Reset_if_gt(v); - return rv; - } - public byte[] Xto_bry_and_clear_and_trim() {return Xto_bry_and_clear_and_trim(true, true, Bry_.Trim_ary_ws);} - public byte[] Xto_bry_and_clear_and_trim(boolean trim_bgn, boolean trim_end, byte[] trim_bry) { + public byte[] To_bry(int bgn, int end) {return bfr_len == 0 ? Bry_.Empty : Bry_.Mid(bfr, bgn, end);} + public byte[] To_bry() {return bfr_len == 0 ? Bry_.Empty : Bry_.Mid(bfr, 0, bfr_len);} + public byte[] To_bry_and_clear_and_trim() {return To_bry_and_clear_and_trim(true, true, Bry_.Trim_ary_ws);} + public byte[] To_bry_and_clear_and_trim(boolean trim_bgn, boolean trim_end, byte[] trim_bry) { byte[] rv = Bry_.Trim(bfr, 0, bfr_len, trim_bgn, trim_end, trim_bry); this.Clear(); return rv; } - public byte[] Xto_bry_and_clear() { - byte[] rv = Xto_bry(); + public byte[] To_bry_and_clear() { + byte[] rv = To_bry(); this.Clear(); if (reset > 0) Reset_if_gt(reset); return rv; } - public String Xto_str() {return String_.new_u8(Xto_bry());} - public String Xto_str_by_pos(int bgn, int end) {return String_.new_u8(Xto_bry(), bgn, end);} - public String Xto_str_and_clear() {return String_.new_u8(Xto_bry_and_clear());} - public String Xto_str_and_clear_and_trim() {return String_.new_u8(Xto_bry_and_clear_and_trim());} - public int XtoIntAndClear(int or) {int rv = XtoInt(or); this.Clear(); return rv;} - public int XtoInt(int or) { + public String To_str() {return String_.new_u8(To_bry());} + public String To_str_by_pos(int bgn, int end) {return String_.new_u8(To_bry(), bgn, end);} + public String To_str_and_clear() {return String_.new_u8(To_bry_and_clear());} + public String To_str_and_clear_and_trim() {return String_.new_u8(To_bry_and_clear_and_trim());} + public int To_int_and_clear(int or) {int rv = To_int(or); this.Clear(); return rv;} + public int To_int(int or) { switch (bfr_len) { case 0: return or; case 1: { diff --git a/100_core/src_130_brys/gplx/Bry_bfr_mkr.java b/100_core/src_130_brys/gplx/Bry_bfr_mkr.java index e9c2fbdaf..c91b096e3 100644 --- a/100_core/src_130_brys/gplx/Bry_bfr_mkr.java +++ b/100_core/src_130_brys/gplx/Bry_bfr_mkr.java @@ -25,7 +25,6 @@ public class Bry_bfr_mkr { public Bry_bfr Get_m001() {return mkr_m001.Get();} public void Rls(Bry_bfr v) { v.Mkr_rls(); -// v.Mkr_mgr().Rls(v); } public void Reset_if_gt(int v) { for (byte i = Tid_b128; i <= Tid_m001; i++) @@ -35,12 +34,11 @@ public class Bry_bfr_mkr { for (byte i = Tid_b128; i <= Tid_m001; i++) mkr(i).Clear_fail_check(); } - public void Clear() { for (byte i = Tid_b128; i <= Tid_m001; i++) mkr(i).Clear(); } - Bry_bfr_mkr_mgr mkr(byte tid) { + private Bry_bfr_mkr_mgr mkr(byte tid) { switch (tid) { case Tid_b128: return mkr_b128; case Tid_b512: return mkr_b512; @@ -51,9 +49,8 @@ public class Bry_bfr_mkr { } } class Bry_bfr_mkr_mgr { - private final Object thread_lock; + private final Object thread_lock = new Object(); public Bry_bfr_mkr_mgr(byte mgr_id, int reset) {// NOTE: random IndexOutOfBounds errors in Get around free[--free_len] with free_len being -1; put member variable initialization within thread_lock to try to avoid; DATE:2014-09-21 - thread_lock = new Object(); synchronized (thread_lock) { this.mgr_id = mgr_id; this.reset = reset; @@ -72,7 +69,7 @@ class Bry_bfr_mkr_mgr { for (int i = 0; i < ary_max; i++) { Bry_bfr itm = ary[i]; if (itm != null) { - if (!itm.Mkr_idx_is_null()) throw Err_.new_wo_type("failed to clear bfr", "idx", Int_.Xto_str(i)); + if (!itm.Mkr_idx_is_null()) throw Err_.new_wo_type("failed to clear bfr", "idx", Int_.To_str(i)); itm.Clear(); } ary[i] = null; @@ -132,18 +129,6 @@ class Bry_bfr_mkr_mgr { Array_.Copy_to(free, 0, new_free, 0, free_len); free = new_free; } -// public void Rls(Bry_bfr v) { -// synchronized (thread_lock) { -// int idx = v.Mkr_itm(); -// if (idx == -1) throw Err_mgr._.fmt_("gplx.Bry_bfr", "rls_failed", "rls called on bfr that was not created by factory"); -// int new_ary_len = nxt_idx - 1; -// if (idx == new_ary_len) -// nxt_idx = new_ary_len; -// else -// free[free_len++] = idx; -// v.Mkr_(null, -1); -// } -// } public void Rls(int idx) { synchronized (thread_lock) { if (idx == -1) throw Err_.new_wo_type("rls called on bfr that was not created by factory"); diff --git a/100_core/src_130_brys/gplx/Bry_bfr_tst.java b/100_core/src_130_brys/gplx/Bry_bfr_tst.java index 72f180579..4b28d1668 100644 --- a/100_core/src_130_brys/gplx/Bry_bfr_tst.java +++ b/100_core/src_130_brys/gplx/Bry_bfr_tst.java @@ -33,13 +33,13 @@ public class Bry_bfr_tst { @Test public void Add_byte_repeat() { // NOTE: make sure auto-expands bb = Bry_bfr.new_(2); tst_Add_byte_repeat(Byte_ascii.Space, 12, String_.Repeat(" ", 12)); - } void tst_Add_byte_repeat(byte b, int len, String expd) {Tfds.Eq(expd, bb.Add_byte_repeat(b, len).Xto_str_and_clear());} + } void tst_Add_byte_repeat(byte b, int len, String expd) {Tfds.Eq(expd, bb.Add_byte_repeat(b, len).To_str_and_clear());} void tst_AddByte(String s, String expdStr, int expdLen) { if (String_.Len(s) == 1) bb.Add_byte((byte)String_.CharAt(s, 0)); else bb.Add(Bry_.new_u8(s)); - Tfds.Eq(expdStr, String_.new_u8(bb.Xto_bry())); + Tfds.Eq(expdStr, String_.new_u8(bb.To_bry())); Tfds.Eq(expdLen, bb.Bfr_max()); } @Test public void Add_dte() { @@ -47,7 +47,7 @@ public class Bry_bfr_tst { } void tst_AddDte(String raw) { bb.Add_dte(DateAdp_.parse_fmt(raw, Bry_.Fmt_csvDte)); - Tfds.Eq(raw, String_.new_u8(bb.Xto_bry())); + Tfds.Eq(raw, String_.new_u8(bb.To_bry())); } @Test public void Add_int_variable() { Add_int_variable(-1); @@ -64,12 +64,12 @@ public class Bry_bfr_tst { } void tst_Add_float(float v) { bb.Add_float(v); - Tfds.Eq(v, Float_.parse(String_.new_u8(bb.Xto_bry()))); + Tfds.Eq(v, Float_.parse(String_.new_u8(bb.To_bry()))); } void Add_int_variable(int val) { bb.Clear(); bb.Add_int_variable(val); - Tfds.Eq(val, Int_.parse(String_.new_u8(bb.Xto_bry()))); + Tfds.Eq(val, Int_.parse(String_.new_u8(bb.To_bry()))); } @Test public void Add_int_fixed_len3() {tst_Add_int_fixed(123, 3, "123");} @Test public void Add_int_fixed_pad_1() {tst_Add_int_fixed(2, 1, "2");} @@ -79,7 +79,7 @@ public class Bry_bfr_tst { @Test public void Add_int_fixed_neg_pad1() {tst_Add_int_fixed(-2, 1, "-");} @Test public void Add_int_fixed_chop_1() {tst_Add_int_fixed(123, 1, "3");} @Test public void Add_int_fixed_chop_neg() {tst_Add_int_fixed(-21, 2, "-1");} - void tst_Add_int_fixed(int val, int digits, String expd) {Tfds.Eq(expd, String_.new_u8(bb.Add_int_fixed(val, digits).Xto_bry()));} + void tst_Add_int_fixed(int val, int digits, String expd) {Tfds.Eq(expd, String_.new_u8(bb.Add_int_fixed(val, digits).To_bry()));} @Test public void Add_long_fixed_len3() {tst_Add_long_fixed(123, 3, "123");} @Test public void Add_long_fixed_pad_1() {tst_Add_long_fixed(2, 1, "2");} @Test public void Add_long_fixed_pad_2() {tst_Add_long_fixed(2, 2, "02");} @@ -89,7 +89,7 @@ public class Bry_bfr_tst { @Test public void Add_long_fixed_chop_1() {tst_Add_long_fixed(123, 1, "3");} @Test public void Add_long_fixed_chop_neg() {tst_Add_long_fixed(-21, 2, "-1");} @Test public void Add_long_fixed_large() {tst_Add_long_fixed(123456789012345L, 15, "123456789012345");} - void tst_Add_long_fixed(long val, int digits, String expd) {Tfds.Eq(expd, String_.new_u8(bb.Add_long_fixed(val, digits).Xto_bry()));} + void tst_Add_long_fixed(long val, int digits, String expd) {Tfds.Eq(expd, String_.new_u8(bb.Add_long_fixed(val, digits).To_bry()));} @Test public void AddDte_short() { tst_AddDte_short("2010-08-26T22:38:36Z"); } @@ -100,12 +100,12 @@ public class Bry_bfr_tst { // for (int i = 0; i < aryLen; i++) { // byte b = ary[i]; // switch (i) { -// case 4: y = ib.XtoIntAndClear(); break; -// case 7: m = ib.XtoIntAndClear(); break; -// case 10: d = ib.XtoIntAndClear(); break; -// case 13: h = ib.XtoIntAndClear(); break; -// case 16: n = ib.XtoIntAndClear(); break; -// case 19: s = ib.XtoIntAndClear(); break; +// case 4: y = ib.To_int_and_clear(); break; +// case 7: m = ib.To_int_and_clear(); break; +// case 10: d = ib.To_int_and_clear(); break; +// case 13: h = ib.To_int_and_clear(); break; +// case 16: n = ib.To_int_and_clear(); break; +// case 19: s = ib.To_int_and_clear(); break; // default: ib.Add(b); break; // } // } @@ -122,10 +122,10 @@ public class Bry_bfr_tst { // bb = Bry_bfr.new_(16); // bb.Add_str(orig); // bb.InsertAt_str(insertAt, insertStr); -// String actl = bb.Xto_str_and_clear(); +// String actl = bb.To_str_and_clear(); // Tfds.Eq(expd, actl); // } - @Test public void Xto_bry_and_clear_and_trim() { + @Test public void To_bry_and_clear_and_trim() { tst_XtoAryAndClearAndTrim("a" , "a"); tst_XtoAryAndClearAndTrim(" a " , "a"); tst_XtoAryAndClearAndTrim(" a b " , "a b"); @@ -133,7 +133,7 @@ public class Bry_bfr_tst { } void tst_XtoAryAndClearAndTrim(String raw, String expd) { bb.Add_str(raw); - Tfds.Eq(expd, String_.new_u8(bb.Xto_bry_and_clear_and_trim())); + Tfds.Eq(expd, String_.new_u8(bb.To_bry_and_clear_and_trim())); } @Test public void XtoInt() { tst_XtoInt("123", 123); @@ -142,7 +142,7 @@ public class Bry_bfr_tst { } void tst_XtoInt(String raw, int expd) { bb.Add_str(raw); - Tfds.Eq(expd, bb.XtoIntAndClear(Int_.Min_value)); + Tfds.Eq(expd, bb.To_int_and_clear(Int_.Min_value)); } static long Pow38_to(int year, int month, int day, int hour, int minute, int second, int frac) { return ((long)year) << 26 @@ -167,7 +167,7 @@ public class Bry_bfr_tst { } void tst_Add_bfr_trimEnd_and_clear(String raw, String expd) { Bry_bfr tmp = Bry_bfr.new_().Add_str(raw); - Tfds.Eq(expd, bb.Add_bfr_trim_and_clear(tmp, false, true).Xto_str_and_clear()); + Tfds.Eq(expd, bb.Add_bfr_trim_and_clear(tmp, false, true).To_str_and_clear()); } @Test public void Add_bfr_trimAll_and_clear() { tst_Add_bfr_trimAll_and_clear(" a ", "a"); @@ -177,7 +177,7 @@ public class Bry_bfr_tst { } void tst_Add_bfr_trimAll_and_clear(String raw, String expd) { Bry_bfr tmp = Bry_bfr.new_().Add_str(raw); - Tfds.Eq(expd, bb.Add_bfr_trim_and_clear(tmp, true, true).Xto_str_and_clear()); + Tfds.Eq(expd, bb.Add_bfr_trim_and_clear(tmp, true, true).To_str_and_clear()); } @Test public void Add_int_pad_bgn() { fxt.Test_Add_int_pad_bgn(Byte_ascii.Num_0, 3, 0, "000"); @@ -214,14 +214,14 @@ class ByteAryBfr_fxt { public void Clear() { bfr.ClearAndReset(); } - public void Test_Add_int_pad_bgn(byte pad_byte, int str_len, int val, String expd) {Tfds.Eq(expd, bfr.Add_int_pad_bgn(pad_byte, str_len, val).Xto_str_and_clear());} + public void Test_Add_int_pad_bgn(byte pad_byte, int str_len, int val, String expd) {Tfds.Eq(expd, bfr.Add_int_pad_bgn(pad_byte, str_len, val).To_str_and_clear());} public void Test_Add_bry_escape(String val, String expd) { byte[] val_bry = Bry_.new_u8(val); - Tfds.Eq(expd, bfr.Add_bry_escape(Byte_ascii.Apos, Byte_.Ary(Byte_ascii.Apos, Byte_ascii.Apos), val_bry, 0, val_bry.length).Xto_str_and_clear()); + Tfds.Eq(expd, bfr.Add_bry_escape(Byte_ascii.Apos, Byte_.Ary(Byte_ascii.Apos, Byte_ascii.Apos), val_bry, 0, val_bry.length).To_str_and_clear()); } - public void Test_Insert_at(String init, int pos, String val, String expd) {Tfds.Eq(expd, bfr.Add_str(init).Insert_at(pos, Bry_.new_u8(val)).Xto_str_and_clear());} - public void Test_Insert_at(String init, int pos, String val, int val_bgn, int val_end, String expd) {Tfds.Eq(expd, bfr.Add_str(init).Insert_at(pos, Bry_.new_u8(val), val_bgn, val_end).Xto_str_and_clear());} - public void Test_Delete_rng(String init, int bgn, int end, String expd) {Tfds.Eq(expd, bfr.Add_str(init).Delete_rng(bgn, end).Xto_str_and_clear());} - public void Test_Delete_rng_to_bgn(String init, int pos, String expd) {Tfds.Eq(expd, bfr.Add_str(init).Delete_rng_to_bgn(pos).Xto_str_and_clear());} - public void Test_Delete_rng_to_end(String init, int pos, String expd) {Tfds.Eq(expd, bfr.Add_str(init).Delete_rng_to_end(pos).Xto_str_and_clear());} + public void Test_Insert_at(String init, int pos, String val, String expd) {Tfds.Eq(expd, bfr.Add_str(init).Insert_at(pos, Bry_.new_u8(val)).To_str_and_clear());} + public void Test_Insert_at(String init, int pos, String val, int val_bgn, int val_end, String expd) {Tfds.Eq(expd, bfr.Add_str(init).Insert_at(pos, Bry_.new_u8(val), val_bgn, val_end).To_str_and_clear());} + public void Test_Delete_rng(String init, int bgn, int end, String expd) {Tfds.Eq(expd, bfr.Add_str(init).Delete_rng(bgn, end).To_str_and_clear());} + public void Test_Delete_rng_to_bgn(String init, int pos, String expd) {Tfds.Eq(expd, bfr.Add_str(init).Delete_rng_to_bgn(pos).To_str_and_clear());} + public void Test_Delete_rng_to_end(String init, int pos, String expd) {Tfds.Eq(expd, bfr.Add_str(init).Delete_rng_to_end(pos).To_str_and_clear());} } diff --git a/100_core/src_130_brys/gplx/Bry_fmtr.java b/100_core/src_130_brys/gplx/Bry_fmtr.java index a2657c8bf..a703a85aa 100644 --- a/100_core/src_130_brys/gplx/Bry_fmtr.java +++ b/100_core/src_130_brys/gplx/Bry_fmtr.java @@ -20,7 +20,7 @@ import gplx.core.primitives.*; import gplx.core.strings.*; public class Bry_fmtr { public byte[] Fmt() {return fmt;} private byte[] fmt = Bry_.Empty; public boolean Fmt_null() {return fmt.length == 0;} - public Bry_fmtr_eval_mgr Eval_mgr() {return eval_mgr;} public Bry_fmtr Eval_mgr_(Bry_fmtr_eval_mgr v) {eval_mgr = v; return this;} Bry_fmtr_eval_mgr eval_mgr = Bry_fmtr_eval_mgr_gfs._; + public Bry_fmtr_eval_mgr Eval_mgr() {return eval_mgr;} public Bry_fmtr Eval_mgr_(Bry_fmtr_eval_mgr v) {eval_mgr = v; return this;} Bry_fmtr_eval_mgr eval_mgr = Bry_fmtr_eval_mgr_gfs.Instance; public Bry_fmtr Fmt_(byte[] v) {fmt = v; dirty = true; return this;} public Bry_fmtr Fmt_(String v) {return Fmt_(Bry_.new_u8(v));} public Bry_fmtr Keys_(String... ary) { if (keys == null) keys = Hash_adp_.new_(); @@ -62,7 +62,7 @@ public class Bry_fmtr { for (int i = 0; i < itms_len; i++) { Bry_fmtr_itm itm = itms[i]; if (itm.Arg) - args[itm.ArgIdx].XferAry(bfr, itm.ArgIdx); + args[itm.ArgIdx].Fmt__do(bfr); else bfr.Add(itm.Dat); } @@ -88,14 +88,14 @@ public class Bry_fmtr { bfr.Add(itm.Dat); } } - public byte[] Bld_bry_none(Bry_bfr bfr) {Bld_bfr_ary(bfr, Object_.Ary_empty); return bfr.Xto_bry_and_clear();} + public byte[] Bld_bry_none(Bry_bfr bfr) {Bld_bfr_ary(bfr, Object_.Ary_empty); return bfr.To_bry_and_clear();} public byte[] Bld_bry_many(Bry_bfr bfr, Object... args) { Bld_bfr_ary(bfr, args); - return bfr.Xto_bry_and_clear(); + return bfr.To_bry_and_clear(); } public String Bld_str_many(Bry_bfr bfr, String fmt, Object... args) { this.Fmt_(fmt).Bld_bfr_many(bfr, args); - return bfr.Xto_str_and_clear(); + return bfr.To_str_and_clear(); } public String Bld_str_many(String... args) { if (dirty) Compile(); @@ -134,9 +134,9 @@ public class Bry_fmtr { if (lkp_is_active) { if (cur_byte == char_arg_end) { if (lkp_is_numeric) - list.Add(Bry_fmtr_itm.arg_(lkp_bfr.XtoInt(0) - baseInt)); + list.Add(Bry_fmtr_itm.arg_(lkp_bfr.To_int(0) - baseInt)); else { - byte[] key_fmt = lkp_bfr.Xto_bry(); + byte[] key_fmt = lkp_bfr.To_bry(); Object idx_ref = keys.Get_by(Bry_obj_ref.new_(key_fmt)); if (idx_ref == null) { int lkp_bfr_len = lkp_bfr.Len(); @@ -195,7 +195,7 @@ public class Bry_fmtr { else if (nxt_byte == char_escape_nl) tmp_byte = Byte_ascii.Nl; else if (nxt_byte == char_escape_tab) tmp_byte = Byte_ascii.Tab; else { - if (fail_when_invalid_escapes) throw Err_.new_wo_type("unknown escape code", "code", Char_.XbyInt(nxt_byte), "fmt_pos", fmt_pos + 1); + if (fail_when_invalid_escapes) throw Err_.new_wo_type("unknown escape code", "code", Char_.By_int(nxt_byte), "fmt_pos", fmt_pos + 1); else tmp_byte = cur_byte; } @@ -254,12 +254,12 @@ public class Bry_fmtr { tmp_bfr.Add_byte(Byte_ascii.Curly_end); tmp_bfr.Add_byte(Byte_ascii.Apos); } - return tmp_bfr.Xto_str_and_clear(); + return tmp_bfr.To_str_and_clear(); } static Bry_bfr tmp_bfr = Bry_bfr.reset_(255); public void Bld_bfr_many_and_set_fmt(Object... args) { Bry_bfr bfr = Bry_bfr.new_(); this.Bld_bfr_many(bfr, args); - byte[] bry = bfr.Xto_bry_and_clear(); + byte[] bry = bfr.To_bry_and_clear(); this.Fmt_(bry).Compile(); } public static String Escape_tilde(String v) {return String_.Replace(v, "~", "~~");} diff --git a/100_core/src_130_brys/gplx/Bry_fmtr_arg.java b/100_core/src_130_brys/gplx/Bry_fmtr_arg.java index bd97503fa..eb1284c55 100644 --- a/100_core/src_130_brys/gplx/Bry_fmtr_arg.java +++ b/100_core/src_130_brys/gplx/Bry_fmtr_arg.java @@ -17,5 +17,5 @@ along with this program. If not, see . */ package gplx; public interface Bry_fmtr_arg { - void XferAry(Bry_bfr bfr, int idx); + void Fmt__do(Bry_bfr bfr); } diff --git a/100_core/src_130_brys/gplx/Bry_fmtr_arg_.java b/100_core/src_130_brys/gplx/Bry_fmtr_arg_.java index 53f0121eb..fc9f95caf 100644 --- a/100_core/src_130_brys/gplx/Bry_fmtr_arg_.java +++ b/100_core/src_130_brys/gplx/Bry_fmtr_arg_.java @@ -29,5 +29,5 @@ public class Bry_fmtr_arg_ { public static final Bry_fmtr_arg Noop = new Bry_fmtr_arg__noop(); } class Bry_fmtr_arg__noop implements Bry_fmtr_arg { - public void XferAry(Bry_bfr trg, int idx) {} + public void Fmt__do(Bry_bfr bfr) {} } diff --git a/100_core/src_130_brys/gplx/Bry_fmtr_arg_fmtr_objs.java b/100_core/src_130_brys/gplx/Bry_fmtr_arg_fmtr_objs.java index edf7179a4..7affdd188 100644 --- a/100_core/src_130_brys/gplx/Bry_fmtr_arg_fmtr_objs.java +++ b/100_core/src_130_brys/gplx/Bry_fmtr_arg_fmtr_objs.java @@ -18,8 +18,6 @@ along with this program. If not, see . package gplx; public class Bry_fmtr_arg_fmtr_objs implements Bry_fmtr_arg { public Bry_fmtr_arg_fmtr_objs Atrs_(Bry_fmtr fmtr, Object... objs) {this.fmtr = fmtr; this.objs = objs; return this;} - public void XferAry(Bry_bfr trg, int idx) { - fmtr.Bld_bfr_many(trg, objs); - } + public void Fmt__do(Bry_bfr bfr) {fmtr.Bld_bfr_many(bfr, objs);} public Bry_fmtr_arg_fmtr_objs(Bry_fmtr fmtr, Object[] objs) {this.fmtr = fmtr; this.objs = objs;} Bry_fmtr fmtr; Object[] objs; } diff --git a/100_core/src_130_brys/gplx/Bry_fmtr_eval_mgr_.java b/100_core/src_130_brys/gplx/Bry_fmtr_eval_mgr_.java index a013bd25c..b88b5c386 100644 --- a/100_core/src_130_brys/gplx/Bry_fmtr_eval_mgr_.java +++ b/100_core/src_130_brys/gplx/Bry_fmtr_eval_mgr_.java @@ -22,6 +22,6 @@ public class Bry_fmtr_eval_mgr_ { Bry_bfr bfr = Bry_bfr.reset_(255); Bry_fmtr fmtr = Bry_fmtr.tmp_(); fmtr.Eval_mgr_(eval_mgr).Fmt_(fmt).Bld_bfr_none(bfr); - return Io_url_.new_any_(bfr.Xto_str_and_clear()); + return Io_url_.new_any_(bfr.To_str_and_clear()); } } diff --git a/100_core/src_130_brys/gplx/Bry_fmtr_eval_mgr_gfs.java b/100_core/src_130_brys/gplx/Bry_fmtr_eval_mgr_gfs.java index c26068df2..78320d9c1 100644 --- a/100_core/src_130_brys/gplx/Bry_fmtr_eval_mgr_gfs.java +++ b/100_core/src_130_brys/gplx/Bry_fmtr_eval_mgr_gfs.java @@ -19,7 +19,7 @@ package gplx; public class Bry_fmtr_eval_mgr_gfs implements Bry_fmtr_eval_mgr { public boolean Enabled() {return enabled;} public void Enabled_(boolean v) {enabled = v;} private boolean enabled; public byte[] Eval(byte[] cmd) { - return enabled ? Bry_.new_u8(Object_.Xto_str_strict_or_null_mark(GfsCore._.ExecText(String_.new_u8(cmd)))) : null; + return enabled ? Bry_.new_u8(Object_.Xto_str_strict_or_null_mark(GfsCore.Instance.ExecText(String_.new_u8(cmd)))) : null; } - public static final Bry_fmtr_eval_mgr_gfs _ = new Bry_fmtr_eval_mgr_gfs(); Bry_fmtr_eval_mgr_gfs() {} + public static final Bry_fmtr_eval_mgr_gfs Instance = new Bry_fmtr_eval_mgr_gfs(); Bry_fmtr_eval_mgr_gfs() {} } diff --git a/100_core/src_130_brys/gplx/Bry_fmtr_vals.java b/100_core/src_130_brys/gplx/Bry_fmtr_vals.java index 58f8d516b..927ece379 100644 --- a/100_core/src_130_brys/gplx/Bry_fmtr_vals.java +++ b/100_core/src_130_brys/gplx/Bry_fmtr_vals.java @@ -20,7 +20,7 @@ public class Bry_fmtr_vals implements Bry_fmtr_arg { private final Bry_fmtr fmtr; private Object[] vals; Bry_fmtr_vals(Bry_fmtr fmtr) {this.fmtr = fmtr;} public Bry_fmtr_vals Vals_(Object... v) {this.vals = v; return this;} - public void XferAry(Bry_bfr bfr, int idx) { + public void Fmt__do(Bry_bfr bfr) { fmtr.Bld_bfr_ary(bfr, vals); } public static Bry_fmtr_vals new_fmt(String fmt, String... keys) { diff --git a/100_core/src_130_brys/gplx/Bry_split_.java b/100_core/src_130_brys/gplx/Bry_split_.java index 585a5175a..6fffe4326 100644 --- a/100_core/src_130_brys/gplx/Bry_split_.java +++ b/100_core/src_130_brys/gplx/Bry_split_.java @@ -22,7 +22,7 @@ public class Bry_split_ { public static byte[][] Split(byte[] src, byte dlm) {return Split(src, dlm, false);} public static byte[][] Split(byte[] src, byte dlm, boolean trim) { synchronized (thread_lock) { - Bry_split_wkr__to_ary wkr = Bry_split_wkr__to_ary.I; + Bry_split_wkr__to_ary wkr = Bry_split_wkr__to_ary.Instance; Split(src, 0, src == null ? 0 : src.length, dlm, trim, wkr); return wkr.To_ary(); } @@ -128,5 +128,5 @@ class Bry_split_wkr__to_ary implements gplx.core.brys.Bry_split_wkr { return (byte[][])list.To_ary_and_clear(byte[].class); } } - public static final Bry_split_wkr__to_ary I = new Bry_split_wkr__to_ary(); Bry_split_wkr__to_ary() {} + public static final Bry_split_wkr__to_ary Instance = new Bry_split_wkr__to_ary(); Bry_split_wkr__to_ary() {} } diff --git a/100_core/src_130_brys/gplx/brys/Bry_fmtr_arg_ary_dim2.java b/100_core/src_130_brys/gplx/brys/Bry_fmtr_arg_ary_dim2.java index 162684012..bfc78b3a6 100644 --- a/100_core/src_130_brys/gplx/brys/Bry_fmtr_arg_ary_dim2.java +++ b/100_core/src_130_brys/gplx/brys/Bry_fmtr_arg_ary_dim2.java @@ -19,9 +19,9 @@ package gplx.brys; import gplx.*; public class Bry_fmtr_arg_ary_dim2 implements Bry_fmtr_arg { public Bry_fmtr_arg_ary_dim2 Data_(byte[][] v) {ary_dim2 = v; return this;} public Bry_fmtr_arg_ary_dim2 Ary_dim2_(byte[][] v) {this.ary_dim2 = v; return this;} - public void XferAry(Bry_bfr trg, int idx) { + public void Fmt__do(Bry_bfr bfr) { for (byte[] ary : ary_dim2) - trg.Add(ary); + bfr.Add(ary); } public Bry_fmtr_arg_ary_dim2() {} byte[][] ary_dim2 = new byte[0][]; } diff --git a/100_core/src_130_brys/gplx/brys/Bry_fmtr_arg_bfr.java b/100_core/src_130_brys/gplx/brys/Bry_fmtr_arg_bfr.java index 1e5126984..6a04891bf 100644 --- a/100_core/src_130_brys/gplx/brys/Bry_fmtr_arg_bfr.java +++ b/100_core/src_130_brys/gplx/brys/Bry_fmtr_arg_bfr.java @@ -18,6 +18,6 @@ along with this program. If not, see . package gplx.brys; import gplx.*; public class Bry_fmtr_arg_bfr implements Bry_fmtr_arg { public Bry_fmtr_arg_bfr Data_(Bry_bfr v) {bfr = v; return this;} - public void XferAry(Bry_bfr trg, int idx) {trg.Add_bfr_and_clear(bfr);} + public void Fmt__do(Bry_bfr trg) {trg.Add_bfr_and_clear(bfr);} public Bry_fmtr_arg_bfr(Bry_bfr bfr) {this.bfr = bfr;} Bry_bfr bfr; } diff --git a/100_core/src_130_brys/gplx/brys/Bry_fmtr_arg_bfr_preserve.java b/100_core/src_130_brys/gplx/brys/Bry_fmtr_arg_bfr_preserve.java index 162036ba3..714f43b26 100644 --- a/100_core/src_130_brys/gplx/brys/Bry_fmtr_arg_bfr_preserve.java +++ b/100_core/src_130_brys/gplx/brys/Bry_fmtr_arg_bfr_preserve.java @@ -17,7 +17,7 @@ along with this program. If not, see . */ package gplx.brys; import gplx.*; public class Bry_fmtr_arg_bfr_preserve implements Bry_fmtr_arg { - public Bry_fmtr_arg_bfr_preserve Data_(Bry_bfr v) {bfr = v; return this;} - public void XferAry(Bry_bfr trg, int idx) {trg.Add_bfr_and_preserve(bfr);} public Bry_fmtr_arg_bfr_preserve(Bry_bfr bfr) {this.bfr = bfr;} Bry_bfr bfr; + public Bry_fmtr_arg_bfr_preserve Data_(Bry_bfr v) {bfr = v; return this;} + public void Fmt__do(Bry_bfr trg) {trg.Add_bfr_and_preserve(bfr);} } diff --git a/100_core/src_130_brys/gplx/brys/Bry_fmtr_arg_bry.java b/100_core/src_130_brys/gplx/brys/Bry_fmtr_arg_bry.java index e3e6e077e..ac3d68996 100644 --- a/100_core/src_130_brys/gplx/brys/Bry_fmtr_arg_bry.java +++ b/100_core/src_130_brys/gplx/brys/Bry_fmtr_arg_bry.java @@ -18,6 +18,6 @@ along with this program. If not, see . package gplx.brys; import gplx.*; public class Bry_fmtr_arg_bry implements Bry_fmtr_arg { public Bry_fmtr_arg_bry Data_(byte[] v) {ary = v; return this;} - public void XferAry(Bry_bfr trg, int idx) {trg.Add(ary);} + public void Fmt__do(Bry_bfr bfr) {bfr.Add(ary);} public Bry_fmtr_arg_bry(byte[] v) {this.ary = v;} byte[] ary; } diff --git a/100_core/src_130_brys/gplx/brys/Bry_fmtr_arg_byt.java b/100_core/src_130_brys/gplx/brys/Bry_fmtr_arg_byt.java index 0b5124d70..c4367a8ec 100644 --- a/100_core/src_130_brys/gplx/brys/Bry_fmtr_arg_byt.java +++ b/100_core/src_130_brys/gplx/brys/Bry_fmtr_arg_byt.java @@ -17,7 +17,7 @@ along with this program. If not, see . */ package gplx.brys; import gplx.*; public class Bry_fmtr_arg_byt implements Bry_fmtr_arg { - public Bry_fmtr_arg_byt Data_(byte v) {byt = v; return this;} - public void XferAry(Bry_bfr trg, int idx) {trg.Add_byte(byt);} public Bry_fmtr_arg_byt(byte byt) {this.byt = byt;} private byte byt; + public Bry_fmtr_arg_byt Data_(byte v) {byt = v; return this;} + public void Fmt__do(Bry_bfr bfr) {bfr.Add_byte(byt);} } diff --git a/100_core/src_130_brys/gplx/brys/Bry_fmtr_arg_decimal_int.java b/100_core/src_130_brys/gplx/brys/Bry_fmtr_arg_decimal_int.java index bf38773ce..b5086a122 100644 --- a/100_core/src_130_brys/gplx/brys/Bry_fmtr_arg_decimal_int.java +++ b/100_core/src_130_brys/gplx/brys/Bry_fmtr_arg_decimal_int.java @@ -19,7 +19,7 @@ package gplx.brys; import gplx.*; public class Bry_fmtr_arg_decimal_int implements Bry_fmtr_arg { public int Val() {return val;} public Bry_fmtr_arg_decimal_int Val_(int v) {val = v; return this;} int val; public Bry_fmtr_arg_decimal_int Places_(int v) {places = v; multiple = (int)Math_.Pow(10, v); return this;} int multiple = 1000, places = 3; - public void XferAry(Bry_bfr bfr, int idx) { + public void Fmt__do(Bry_bfr bfr) { bfr.Add_int_variable(val / multiple).Add_byte(Byte_ascii.Dot).Add_int_fixed(val % multiple, places); } } diff --git a/100_core/src_130_brys/gplx/brys/Bry_fmtr_arg_fmtr.java b/100_core/src_130_brys/gplx/brys/Bry_fmtr_arg_fmtr.java index d5ff31db0..8dddaffd3 100644 --- a/100_core/src_130_brys/gplx/brys/Bry_fmtr_arg_fmtr.java +++ b/100_core/src_130_brys/gplx/brys/Bry_fmtr_arg_fmtr.java @@ -18,8 +18,6 @@ along with this program. If not, see . package gplx.brys; import gplx.*; public class Bry_fmtr_arg_fmtr implements Bry_fmtr_arg { public Bry_fmtr_arg_fmtr Data_(Bry_fmtr v) {fmtr = v; return this;} - public void XferAry(Bry_bfr trg, int idx) { - fmtr.Bld_bfr(trg, arg_ary); - } + public void Fmt__do(Bry_bfr bfr) {fmtr.Bld_bfr(bfr, arg_ary);} public Bry_fmtr_arg_fmtr(Bry_fmtr fmtr, Bry_fmtr_arg... arg_ary) {this.fmtr = fmtr; this.arg_ary = arg_ary;} Bry_fmtr fmtr; Bry_fmtr_arg[] arg_ary; } diff --git a/100_core/src_130_brys/gplx/brys/Bry_fmtr_arg_int.java b/100_core/src_130_brys/gplx/brys/Bry_fmtr_arg_int.java index 001270e19..61a849484 100644 --- a/100_core/src_130_brys/gplx/brys/Bry_fmtr_arg_int.java +++ b/100_core/src_130_brys/gplx/brys/Bry_fmtr_arg_int.java @@ -18,6 +18,6 @@ along with this program. If not, see . package gplx.brys; import gplx.*; public class Bry_fmtr_arg_int implements Bry_fmtr_arg { public Bry_fmtr_arg_int Data_(int v) {val = Int_.cast(v); val_digits = Int_.DigitCount(val); return this;} - public void XferAry(Bry_bfr trg, int idx) {trg.Add_int_fixed(val, val_digits);} + public void Fmt__do(Bry_bfr bfr) {bfr.Add_int_fixed(val, val_digits);} public Bry_fmtr_arg_int(int v) {this.val = v; this.val_digits = Int_.DigitCount(v);} int val, val_digits; } diff --git a/100_core/src_130_brys/gplx/brys/Bry_fmtr_arg_time.java b/100_core/src_130_brys/gplx/brys/Bry_fmtr_arg_time.java index d32d51d10..6c1c4b4be 100644 --- a/100_core/src_130_brys/gplx/brys/Bry_fmtr_arg_time.java +++ b/100_core/src_130_brys/gplx/brys/Bry_fmtr_arg_time.java @@ -30,7 +30,7 @@ public class Bry_fmtr_arg_time implements Bry_fmtr_arg { int[] units = new int[] {86400, 3600, 60, 1}; int units_len; byte[] spr = new byte[] {Byte_ascii.Space}; - public void XferAry(Bry_bfr bfr, int idx) { + public void Fmt__do(Bry_bfr bfr) { if (seconds == 0) { // handle 0 separately (since it will always be < than units[*] bfr.Add_int_fixed(0, 2).Add(segs[units_len - 1]); return; diff --git a/100_core/src_130_brys/gplx/brys/Bry_fmtr_arg_time_tst.java b/100_core/src_130_brys/gplx/brys/Bry_fmtr_arg_time_tst.java index 78679709b..853318d0a 100644 --- a/100_core/src_130_brys/gplx/brys/Bry_fmtr_arg_time_tst.java +++ b/100_core/src_130_brys/gplx/brys/Bry_fmtr_arg_time_tst.java @@ -36,7 +36,7 @@ class Time_fmtr_arg_fxt { public void XferAry(int seconds, String expd) { Bry_bfr bfr = Bry_bfr.reset_(255); arg.Seconds_(seconds); - arg.XferAry(bfr, 0); - Tfds.Eq(expd, bfr.Xto_str()); + arg.Fmt__do(bfr); + Tfds.Eq(expd, bfr.To_str()); } } diff --git a/100_core/src_140_list/gplx/Hash_adp_.java b/100_core/src_140_list/gplx/Hash_adp_.java index c23280392..afdff41ef 100644 --- a/100_core/src_140_list/gplx/Hash_adp_.java +++ b/100_core/src_140_list/gplx/Hash_adp_.java @@ -34,5 +34,5 @@ class Hash_adp_noop implements Hash_adp { public boolean Add_if_dupe_use_1st(Object key, Object val) {return false;} public void Del(Object key) {} public void Clear() {} - public java.util.Iterator iterator() {return gplx.lists.Iterator_null._;} + public java.util.Iterator iterator() {return gplx.lists.Iterator_null.Instance;} } diff --git a/100_core/src_140_list/gplx/Hash_adp_bry.java b/100_core/src_140_list/gplx/Hash_adp_bry.java index 7667dcc1e..6b34f631e 100644 --- a/100_core/src_140_list/gplx/Hash_adp_bry.java +++ b/100_core/src_140_list/gplx/Hash_adp_bry.java @@ -68,8 +68,8 @@ public class Hash_adp_bry extends gplx.lists.Hash_adp_base implements Hash_adp { key_itm.Init(key_bry, 0, key_bry.length); super.Add_base(key_itm, val); } - public static Hash_adp_bry cs() {return new Hash_adp_bry(Hash_adp_bry_itm_cs._);} - public static Hash_adp_bry ci_a7() {return new Hash_adp_bry(Hash_adp_bry_itm_ci_a7._);} + public static Hash_adp_bry cs() {return new Hash_adp_bry(Hash_adp_bry_itm_cs.Instance);} + public static Hash_adp_bry ci_a7() {return new Hash_adp_bry(Hash_adp_bry_itm_ci_a7.Instance);} public static Hash_adp_bry ci_u8(Gfo_case_mgr case_mgr) {return new Hash_adp_bry(Hash_adp_bry_itm_ci_u8.get_or_new(case_mgr));} public static Hash_adp_bry c__u8(boolean case_match, Gfo_case_mgr case_mgr) {return case_match ? cs() : ci_u8(case_mgr);} } @@ -103,7 +103,7 @@ class Hash_adp_bry_itm_cs extends Hash_adp_bry_itm_base { } return true; } - public static final Hash_adp_bry_itm_cs _ = new Hash_adp_bry_itm_cs(); Hash_adp_bry_itm_cs() {} + public static final Hash_adp_bry_itm_cs Instance = new Hash_adp_bry_itm_cs(); Hash_adp_bry_itm_cs() {} } class Hash_adp_bry_itm_ci_a7 extends Hash_adp_bry_itm_base { private byte[] src; int src_bgn, src_end; @@ -136,7 +136,7 @@ class Hash_adp_bry_itm_ci_a7 extends Hash_adp_bry_itm_base { } return true; } - public static final Hash_adp_bry_itm_ci_a7 _ = new Hash_adp_bry_itm_ci_a7(); Hash_adp_bry_itm_ci_a7() {} + public static final Hash_adp_bry_itm_ci_a7 Instance = new Hash_adp_bry_itm_ci_a7(); Hash_adp_bry_itm_ci_a7() {} } class Hash_adp_bry_itm_ci_u8 extends Hash_adp_bry_itm_base { private final Gfo_case_mgr case_mgr; diff --git a/100_core/src_140_list/gplx/List_adp.java b/100_core/src_140_list/gplx/List_adp.java index 2772da4d5..d0d83fe1d 100644 --- a/100_core/src_140_list/gplx/List_adp.java +++ b/100_core/src_140_list/gplx/List_adp.java @@ -33,6 +33,7 @@ public interface List_adp extends EnumerAble { Object To_ary(Class memberType); Object To_ary_and_clear(Class memberType); String[] To_str_ary(); + String[] To_str_ary_and_clear(); String To_str(); Object[] To_obj_ary(); void Resize_bounds(int i); @@ -64,10 +65,11 @@ class List_adp_noop implements List_adp { public void Resize_bounds(int i) {} public Object To_ary(Class memberType) {return Object_.Ary_empty;} public Object To_ary_and_clear(Class memberType) {return Object_.Ary_empty;} - public String[] To_str_ary() {return new String[0];} + public String[] To_str_ary() {return String_.Ary_empty;} + public String[] To_str_ary_and_clear() {return To_str_ary();} public String To_str() {return "";} public Object[] To_obj_ary() {return Object_.Ary_empty;} - public java.util.Iterator iterator() {return Iterator_null._;} + public java.util.Iterator iterator() {return Iterator_null.Instance;} public void Reverse() {} public void Sort() {} public void Sort_by(ComparerAble comparer) {} diff --git a/100_core/src_140_list/gplx/List_adp_base.java b/100_core/src_140_list/gplx/List_adp_base.java index ff2a25717..12e75789f 100644 --- a/100_core/src_140_list/gplx/List_adp_base.java +++ b/100_core/src_140_list/gplx/List_adp_base.java @@ -24,7 +24,7 @@ public abstract class List_adp_base implements List_adp, GfoInvkAble { } public java.util.Iterator iterator() { if (count == 0) - return Iterator_null._; + return Iterator_null.Instance; else return new Iterator_objAry(list, count); } @@ -128,6 +128,7 @@ public abstract class List_adp_base implements List_adp, GfoInvkAble { Array_.Set_at(rv, i, list[i]); return rv; } + public String[] To_str_ary_and_clear() {String[] rv = To_str_ary(); this.Clear(); return rv;} public String[] To_str_ary() {return (String[])To_ary(String.class);} public Object[] To_obj_ary() { Object[] rv = new Object[count]; @@ -139,7 +140,7 @@ public abstract class List_adp_base implements List_adp, GfoInvkAble { Bry_bfr bfr = Bry_bfr.new_(); for (int i = 0; i < count; ++i) bfr.Add_str_u8(Object_.Xto_str_strict_or_null_mark(list[i])).Add_byte_nl(); - return bfr.Xto_str_and_clear(); + return bfr.To_str_and_clear(); } private void BoundsChk(int bgn, int end, int len) { if ( bgn >= 0 && bgn < len diff --git a/100_core/src_140_list/gplx/List_adp_tst.java b/100_core/src_140_list/gplx/List_adp_tst.java index 86e0f4640..0189474df 100644 --- a/100_core/src_140_list/gplx/List_adp_tst.java +++ b/100_core/src_140_list/gplx/List_adp_tst.java @@ -111,7 +111,7 @@ public class List_adp_tst { list_AddMany("0", "1", "2"); for (Object valObj : list) { String val = (String)valObj; - Tfds.Eq(Int_.Xto_str(pos++), val); + Tfds.Eq(Int_.To_str(pos++), val); tst_Enumerator("0", "1", "2"); } } diff --git a/100_core/src_140_list/gplx/Ordered_hash_.java b/100_core/src_140_list/gplx/Ordered_hash_.java index bdab7d3e8..f452958fd 100644 --- a/100_core/src_140_list/gplx/Ordered_hash_.java +++ b/100_core/src_140_list/gplx/Ordered_hash_.java @@ -17,9 +17,9 @@ along with this program. If not, see . */ package gplx; import gplx.core.primitives.*; -public class Ordered_hash_ { - public static Ordered_hash new_() {return new Ordered_hash_base();} - public static Ordered_hash new_bry_() {return new Ordered_hash_bry();} +public class Ordered_hash_ { + public static Ordered_hash New() {return new Ordered_hash_base();} + public static Ordered_hash New_bry() {return new Ordered_hash_bry();} } class Ordered_hash_bry extends Ordered_hash_base { private final Bry_obj_ref tmp_ref = Bry_obj_ref.null_(); diff --git a/100_core/src_140_list/gplx/Ordered_hash_base.java b/100_core/src_140_list/gplx/Ordered_hash_base.java index 302d66eba..ecf6e5134 100644 --- a/100_core/src_140_list/gplx/Ordered_hash_base.java +++ b/100_core/src_140_list/gplx/Ordered_hash_base.java @@ -67,9 +67,9 @@ public class Ordered_hash_base extends Hash_adp_base implements Ordered_hash, Gf private String To_str_ui() { String_bldr sb = String_bldr_.new_(); int count = ordered.Count(); - int pad = String_.Len(Int_.Xto_str(count)); + int pad = String_.Len(Int_.To_str(count)); for (int i = 0; i < count; i++) { - sb .Add(Int_.Xto_str_pad_bgn_zero(i, pad)) + sb .Add(Int_.To_str_pad_bgn_zero(i, pad)) .Add(":").Add(ordered.Get_at(i).toString()) .Add(Op_sys.Cur().Nl_str()); } diff --git a/100_core/src_140_list/gplx/Ordered_hash_tst.java b/100_core/src_140_list/gplx/Ordered_hash_tst.java index 2d1781c26..6887adc44 100644 --- a/100_core/src_140_list/gplx/Ordered_hash_tst.java +++ b/100_core/src_140_list/gplx/Ordered_hash_tst.java @@ -19,7 +19,7 @@ package gplx; import org.junit.*; public class Ordered_hash_tst { @Before public void setup() { - hash = Ordered_hash_.new_(); + hash = Ordered_hash_.New(); } @Test public void Get_at() { hash.Add("key1", "val1"); diff --git a/100_core/src_140_list/gplx/lists/Iterator_null.java b/100_core/src_140_list/gplx/lists/Iterator_null.java index 4d1af3975..2963302ae 100644 --- a/100_core/src_140_list/gplx/lists/Iterator_null.java +++ b/100_core/src_140_list/gplx/lists/Iterator_null.java @@ -20,5 +20,5 @@ public class Iterator_null implements java.util.Iterator { public boolean hasNext() {return false;} public Object next() {return null;} public void remove() {} - public static final Iterator_null _ = new Iterator_null(); + public static final Iterator_null Instance = new Iterator_null(); } diff --git a/100_core/src_150_text/gplx/texts/CharStream.java b/100_core/src_150_text/gplx/texts/CharStream.java index 68be5f4f6..5afe29840 100644 --- a/100_core/src_150_text/gplx/texts/CharStream.java +++ b/100_core/src_150_text/gplx/texts/CharStream.java @@ -53,7 +53,7 @@ public class CharStream { length = (pos + length > len) ? len - pos : length; return Char_.To_str(ary, pos, length); } - public String Xto_str_by_pos(int bgn, int end) { + public String To_str_by_pos(int bgn, int end) { if (bgn < 0) bgn = 0; if (end > len - 1) end = len - 1; return Char_.To_str(ary, bgn, end - bgn + 1); } diff --git a/100_core/src_150_text/gplx/texts/HexDecUtl.java b/100_core/src_150_text/gplx/texts/HexDecUtl.java index 1c8dec345..e9fc15104 100644 --- a/100_core/src_150_text/gplx/texts/HexDecUtl.java +++ b/100_core/src_150_text/gplx/texts/HexDecUtl.java @@ -74,7 +74,7 @@ public class HexDecUtl { case 0: return '0'; case 1: return '1'; case 2: return '2'; case 3: return '3'; case 4: return '4'; case 5: return '5'; case 6: return '6'; case 7: return '7'; case 8: return '8'; case 9: return '9'; case 10: return 'A'; case 11: return 'B'; case 12: return 'C'; case 13: return 'D'; case 14: return 'E'; case 15: return 'F'; - default: throw Err_.new_parse("hexstring", Int_.Xto_str(val)); + default: throw Err_.new_parse("hexstring", Int_.To_str(val)); } } static byte Xto_byte(int v) { @@ -82,7 +82,7 @@ public class HexDecUtl { case 0: return Byte_ascii.Num_0; case 1: return Byte_ascii.Num_1; case 2: return Byte_ascii.Num_2; case 3: return Byte_ascii.Num_3; case 4: return Byte_ascii.Num_4; case 5: return Byte_ascii.Num_5; case 6: return Byte_ascii.Num_6; case 7: return Byte_ascii.Num_7; case 8: return Byte_ascii.Num_8; case 9: return Byte_ascii.Num_9; case 10: return Byte_ascii.Ltr_A; case 11: return Byte_ascii.Ltr_B; case 12: return Byte_ascii.Ltr_C; case 13: return Byte_ascii.Ltr_D; case 14: return Byte_ascii.Ltr_E; case 15: return Byte_ascii.Ltr_F; - default: throw Err_.new_parse("hexstring", Int_.Xto_str(v)); + default: throw Err_.new_parse("hexstring", Int_.To_str(v)); } } public static void Write(byte[] bry, int bgn, int end, int val) { diff --git a/100_core/src_150_text/gplx/texts/StringTableBldr.java b/100_core/src_150_text/gplx/texts/StringTableBldr.java index 45b6207f1..39fa868b3 100644 --- a/100_core/src_150_text/gplx/texts/StringTableBldr.java +++ b/100_core/src_150_text/gplx/texts/StringTableBldr.java @@ -47,11 +47,11 @@ public class StringTableBldr { } sb.Add(String_.CrLf); } - return sb.Xto_str_and_clear(); + return sb.To_str_and_clear(); } public static StringTableBldr new_() {return new StringTableBldr();} StringTableBldr() {} - Ordered_hash cols = Ordered_hash_.new_(); + Ordered_hash cols = Ordered_hash_.New(); List_adp rows = List_adp_.new_(); String_bldr sb = String_bldr_.new_(); } diff --git a/100_core/src_160_hash/gplx/security/HashAlgo_tth192.java b/100_core/src_160_hash/gplx/security/HashAlgo_tth192.java index b10dba3e7..ba0f60be8 100644 --- a/100_core/src_160_hash/gplx/security/HashAlgo_tth192.java +++ b/100_core/src_160_hash/gplx/security/HashAlgo_tth192.java @@ -160,7 +160,7 @@ class HashDlgWtrDefault implements HashDlgWtr { current += increment; int percentage = (current * 100) / total; if (percentage <= lastPercentage) return; - dialog.Write_tmp(String_.LimitToFirst(p, dialog.Chars_per_line_max()) + Int_.Xto_str(percentage) + "%"); + dialog.Write_tmp(String_.LimitToFirst(p, dialog.Chars_per_line_max()) + Int_.To_str(percentage) + "%"); lastPercentage = percentage; } public void End() {} diff --git a/100_core/src_200_io/gplx/Io_mgr.java b/100_core/src_200_io/gplx/Io_mgr.java index 1100ba833..4951588b8 100644 --- a/100_core/src_200_io/gplx/Io_mgr.java +++ b/100_core/src_200_io/gplx/Io_mgr.java @@ -19,7 +19,7 @@ package gplx; import gplx.core.primitives.*; import gplx.ios.*; /*IoItmFil, IoItmDir..*/ public class Io_mgr { // exists primarily to gather all cmds under gplx namespace; otherwise need to use gplx.ios whenever copying/deleting file public boolean Exists(Io_url url) {return url.Type_dir() ? ExistsDir(url) : ExistsFil(url);} - public boolean ExistsFil(Io_url url) {return IoEnginePool._.Get_by(url.Info().EngineKey()).ExistsFil_api(url);} + public boolean ExistsFil(Io_url url) {return IoEnginePool.Instance.Get_by(url.Info().EngineKey()).ExistsFil_api(url);} public void ExistsFilOrFail(Io_url url) {if (!ExistsFil(url)) throw Err_.new_wo_type("could not find file", "url", url);} public void SaveFilStr(String url, String text) {SaveFilStr_args(Io_url_.new_fil_(url), text).Exec();} public void SaveFilStr(Io_url url, String text) {SaveFilStr_args(url, text).Exec();} @@ -32,16 +32,16 @@ public class Io_mgr { // exists primarily to gather all cmds under gplx namespac public IoEngine_xrg_xferFil MoveFil_args(Io_url src, Io_url trg, boolean overwrite) {return IoEngine_xrg_xferFil.move_(src, trg).Overwrite_(overwrite);} public void CopyFil(Io_url src, Io_url trg, boolean overwrite) {IoEngine_xrg_xferFil.copy_(src, trg).Overwrite_(overwrite).Exec();} public IoEngine_xrg_xferFil CopyFil_args(Io_url src, Io_url trg, boolean overwrite) {return IoEngine_xrg_xferFil.copy_(src, trg).Overwrite_(overwrite);} - public IoRecycleBin RecycleBin() {return recycleBin;} IoRecycleBin recycleBin = IoRecycleBin._; + public IoRecycleBin RecycleBin() {return recycleBin;} IoRecycleBin recycleBin = IoRecycleBin.Instance; public IoStream OpenStreamWrite(Io_url url) {return OpenStreamWrite_args(url).Exec();} public IoEngine_xrg_openWrite OpenStreamWrite_args(Io_url url) {return IoEngine_xrg_openWrite.new_(url);} - public IoItmFil QueryFil(Io_url url) {return IoEnginePool._.Get_by(url.Info().EngineKey()).QueryFil(url);} - public void UpdateFilAttrib(Io_url url, IoItmAttrib attrib) {IoEnginePool._.Get_by(url.Info().EngineKey()).UpdateFilAttrib(url, attrib);} - public void UpdateFilModifiedTime(Io_url url, DateAdp modified) {IoEnginePool._.Get_by(url.Info().EngineKey()).UpdateFilModifiedTime(url, modified);} + public IoItmFil QueryFil(Io_url url) {return IoEnginePool.Instance.Get_by(url.Info().EngineKey()).QueryFil(url);} + public void UpdateFilAttrib(Io_url url, IoItmAttrib attrib) {IoEnginePool.Instance.Get_by(url.Info().EngineKey()).UpdateFilAttrib(url, attrib);} + public void UpdateFilModifiedTime(Io_url url, DateAdp modified) {IoEnginePool.Instance.Get_by(url.Info().EngineKey()).UpdateFilModifiedTime(url, modified);} - public boolean ExistsDir(Io_url url) {return IoEnginePool._.Get_by(url.Info().EngineKey()).ExistsDir(url);} - public void CreateDir(Io_url url) {IoEnginePool._.Get_by(url.Info().EngineKey()).CreateDir(url);} + public boolean ExistsDir(Io_url url) {return IoEnginePool.Instance.Get_by(url.Info().EngineKey()).ExistsDir(url);} + public void CreateDir(Io_url url) {IoEnginePool.Instance.Get_by(url.Info().EngineKey()).CreateDir(url);} public boolean CreateDirIfAbsent(Io_url url) { boolean exists = ExistsDir(url); if (!exists) { @@ -70,7 +70,7 @@ public class Io_mgr { // exists primarily to gather all cmds under gplx namespac this.DeleteDirDeep(url); } public void AliasDir_sysEngine(String srcRoot, String trgRoot) {AliasDir(srcRoot, trgRoot, IoEngine_.SysKey);} - public void AliasDir(String srcRoot, String trgRoot, String engineKey) {IoUrlInfoRegy._.Reg(IoUrlInfo_.alias_(srcRoot, trgRoot, engineKey));} + public void AliasDir(String srcRoot, String trgRoot, String engineKey) {IoUrlInfoRegy.Instance.Reg(IoUrlInfo_.alias_(srcRoot, trgRoot, engineKey));} public IoStream OpenStreamRead(Io_url url) {return OpenStreamRead_args(url).ExecAsIoStreamOrFail();} public IoEngine_xrg_openRead OpenStreamRead_args(Io_url url) {return IoEngine_xrg_openRead.new_(url);} public String LoadFilStr(String url) {return LoadFilStr_args(Io_url_.new_fil_(url)).Exec();} @@ -131,30 +131,30 @@ public class Io_mgr { // exists primarily to gather all cmds under gplx namespac public IoEngine InitEngine_mem() {return IoEngine_.Mem_init_();} public IoEngine InitEngine_mem_(String key) { IoEngine engine = IoEngine_.mem_new_(key); - IoEnginePool._.Add_if_dupe_use_nth(engine); - IoUrlInfoRegy._.Reg(IoUrlInfo_.mem_(key, key)); + IoEnginePool.Instance.Add_if_dupe_use_nth(engine); + IoUrlInfoRegy.Instance.Reg(IoUrlInfo_.mem_(key, key)); return engine; } public boolean DownloadFil(String src, Io_url trg) {return IoEngine_xrg_downloadFil.new_(src, trg).Exec();} public IoEngine_xrg_downloadFil DownloadFil_args(String src, Io_url trg) {return IoEngine_xrg_downloadFil.new_(src, trg);} - public static final Io_mgr I = new Io_mgr(); public Io_mgr() {} + public static final Io_mgr Instance = new Io_mgr(); public Io_mgr() {} public static final int Len_kb = 1024, Len_mb = 1048576, Len_gb = 1073741824, Len_gb_2 = 2147483647; public static final long Len_mb_long = Len_mb; public static final long Len_null = -1; } class Io_mgr_ { public static int Delete_dir_empty(Io_url url) { - IoItmDir dir = Io_mgr.I.QueryDir_args(url).ExecAsDir(); + IoItmDir dir = Io_mgr.Instance.QueryDir_args(url).ExecAsDir(); int sub_dirs_len = dir.SubDirs().Count(); int deleted_dirs = 0; for (int i = 0; i < sub_dirs_len; ++i) { IoItmDir sub_dir = (IoItmDir)dir.SubDirs().Get_at(i); - deleted_dirs += Io_mgr.I.Delete_dir_empty(sub_dir.Url()); + deleted_dirs += Io_mgr.Instance.Delete_dir_empty(sub_dir.Url()); } if ( dir.SubFils().Count() == 0 && deleted_dirs == sub_dirs_len ) { - Io_mgr.I.DeleteDirIfEmpty(url); + Io_mgr.Instance.DeleteDirIfEmpty(url); return 1; } else diff --git a/100_core/src_200_io/gplx/Io_mgr__tst.java b/100_core/src_200_io/gplx/Io_mgr__tst.java index 74c04e7dc..3db917e98 100644 --- a/100_core/src_200_io/gplx/Io_mgr__tst.java +++ b/100_core/src_200_io/gplx/Io_mgr__tst.java @@ -77,23 +77,23 @@ public class Io_mgr__tst { } } class Io_mgr__fxt { - public void Clear() {Io_mgr.I.InitEngine_mem();} + public void Clear() {Io_mgr.Instance.InitEngine_mem();} public void Exec_itm_create(String... ary) { for (String itm : ary) { Io_url url = Io_url_.new_any_(itm); if (url.Type_dir()) - Io_mgr.I.CreateDir(url); + Io_mgr.Instance.CreateDir(url); else - Io_mgr.I.SaveFilStr(url, url.NameAndExt()); + Io_mgr.Instance.SaveFilStr(url, url.NameAndExt()); } } - public void Exec_dir_delete_empty(String url) {Io_mgr.I.Delete_dir_empty(Io_url_.mem_dir_(url));} + public void Exec_dir_delete_empty(String url) {Io_mgr.Instance.Delete_dir_empty(Io_url_.mem_dir_(url));} public void Test_itm_exists_n(String... ary) {Test_itm_exists(Bool_.N, ary);} public void Test_itm_exists_y(String... ary) {Test_itm_exists(Bool_.Y, ary);} public void Test_itm_exists(boolean expd, String... ary) { for (String itm : ary) { Io_url url = Io_url_.new_any_(itm); - boolean actl = url.Type_dir() ? Io_mgr.I.ExistsDir(url) : Io_mgr.I.ExistsFil(url); + boolean actl = url.Type_dir() ? Io_mgr.Instance.ExistsDir(url) : Io_mgr.Instance.ExistsFil(url); Tfds.Eq(expd, actl, itm); } } diff --git a/100_core/src_200_io/gplx/ios/IoEngine.java b/100_core/src_200_io/gplx/ios/IoEngine.java index 84d9dc586..88247acc3 100644 --- a/100_core/src_200_io/gplx/ios/IoEngine.java +++ b/100_core/src_200_io/gplx/ios/IoEngine.java @@ -141,7 +141,7 @@ class IoEngineUtl { IoStream srcStream = null; IoStream trgStream = null; try { - srcStream = IoEnginePool._.Get_by(src.Info().EngineKey()).OpenStreamRead(src); + srcStream = IoEnginePool.Instance.Get_by(src.Info().EngineKey()).OpenStreamRead(src); trgStream = IoEngine_xrg_openWrite.new_(trg).Exec(); srcStream.Transfer(trgStream, bufferLength); } diff --git a/100_core/src_200_io/gplx/ios/IoEnginePool.java b/100_core/src_200_io/gplx/ios/IoEnginePool.java index 4c52c1939..dfee6ef85 100644 --- a/100_core/src_200_io/gplx/ios/IoEnginePool.java +++ b/100_core/src_200_io/gplx/ios/IoEnginePool.java @@ -26,7 +26,7 @@ public class IoEnginePool { IoEngine rv = (IoEngine)hash.Get_by(key); return rv == null ? IoEngine_.Mem : rv; // rv == null when url is null or empty; return Mem which should be a noop; DATE:2013-06-04 } - public static final IoEnginePool _ = new IoEnginePool(); + public static final IoEnginePool Instance = new IoEnginePool(); IoEnginePool() { this.Add_if_dupe_use_nth(IoEngine_.Sys); this.Add_if_dupe_use_nth(IoEngine_.Mem); diff --git a/100_core/src_200_io/gplx/ios/IoEngine_base.java b/100_core/src_200_io/gplx/ios/IoEngine_base.java index f316e7983..31ac347bc 100644 --- a/100_core/src_200_io/gplx/ios/IoEngine_base.java +++ b/100_core/src_200_io/gplx/ios/IoEngine_base.java @@ -49,7 +49,7 @@ public abstract class IoEngine_base implements IoEngine { Io_url recycleUrl = xrg.RecycleUrl(); if (recycleUrl.Type_fil()) { this.MoveFil(IoEngine_xrg_xferFil.move_(xrg.Url(), recycleUrl).Overwrite_(false).ReadOnlyFails_(true).MissingFails_(xrg.MissingFails())); - IoRecycleBin._.Regy_add(xrg); + IoRecycleBin.Instance.Regy_add(xrg); } else this.MoveDirDeep(IoEngine_xrg_xferDir.move_(xrg.Url(), recycleUrl).Overwrite_(false).ReadOnlyFails_(true)); diff --git a/100_core/src_200_io/gplx/ios/IoEngine_memory.java b/100_core/src_200_io/gplx/ios/IoEngine_memory.java index a7779c44d..c3e034f46 100644 --- a/100_core/src_200_io/gplx/ios/IoEngine_memory.java +++ b/100_core/src_200_io/gplx/ios/IoEngine_memory.java @@ -118,8 +118,8 @@ public class IoEngine_memory extends IoEngine_base { IoItmDir ownerDir = FetchDir(url.OwnerDir()); if (ownerDir == null) return; // no ownerDir; no need to unregister ownerDir.SubDirs().Del(url); } - @Override public void XferDir(IoEngine_xrg_xferDir args) {Io_url trg = args.Trg(); utl.XferDir(this, args.Src(), IoEnginePool._.Get_by(trg.Info().EngineKey()), trg, args);} - @Override public void MoveDirDeep(IoEngine_xrg_xferDir args) {Io_url trg = args.Trg(); utl.XferDir(this, args.Src(), IoEnginePool._.Get_by(trg.Info().EngineKey()), trg, args);} + @Override public void XferDir(IoEngine_xrg_xferDir args) {Io_url trg = args.Trg(); utl.XferDir(this, args.Src(), IoEnginePool.Instance.Get_by(trg.Info().EngineKey()), trg, args);} + @Override public void MoveDirDeep(IoEngine_xrg_xferDir args) {Io_url trg = args.Trg(); utl.XferDir(this, args.Src(), IoEnginePool.Instance.Get_by(trg.Info().EngineKey()), trg, args);} @Override public void MoveDir(Io_url src, Io_url trg) {if (ExistsDir(trg)) throw Err_.new_wo_type("trg already exists", "trg", trg); IoItmDir dir = FetchDir(src); dir.Name_(trg.NameAndExt()); for (Object filObj : dir.SubFils()) { // move all subFiles diff --git a/100_core/src_200_io/gplx/ios/IoEngine_system.java b/100_core/src_200_io/gplx/ios/IoEngine_system.java index c41f0d1d3..65fa7d536 100644 --- a/100_core/src_200_io/gplx/ios/IoEngine_system.java +++ b/100_core/src_200_io/gplx/ios/IoEngine_system.java @@ -31,11 +31,11 @@ import gplx.core.criterias.*; public class IoEngine_system extends IoEngine_base { @Override public String Key() {return IoEngine_.SysKey;} @Override public void DeleteDirDeep(IoEngine_xrg_deleteDir args) {utl.DeleteDirDeep(this, args.Url(), args);} - @Override public void XferDir(IoEngine_xrg_xferDir args) {Io_url trg = args.Trg(); utl.XferDir(this, args.Src(), IoEnginePool._.Get_by(trg.Info().EngineKey()), trg, args);} + @Override public void XferDir(IoEngine_xrg_xferDir args) {Io_url trg = args.Trg(); utl.XferDir(this, args.Src(), IoEnginePool.Instance.Get_by(trg.Info().EngineKey()), trg, args);} @Override public void XferFil(IoEngine_xrg_xferFil args) {utl.XferFil(this, args);} @Override public IoItmDir QueryDirDeep(IoEngine_xrg_queryDir args) {return utl.QueryDirDeep(this, args);} @Override public void CopyDir(Io_url src, Io_url trg) {IoEngine_xrg_xferDir.copy_(src, trg).Recur_().Exec();} - @Override public void MoveDirDeep(IoEngine_xrg_xferDir args) {Io_url trg = args.Trg(); utl.XferDir(this, args.Src(), IoEnginePool._.Get_by(trg.Info().EngineKey()), trg, args);} + @Override public void MoveDirDeep(IoEngine_xrg_xferDir args) {Io_url trg = args.Trg(); utl.XferDir(this, args.Src(), IoEnginePool.Instance.Get_by(trg.Info().EngineKey()), trg, args);} @Override public void DeleteFil_api(IoEngine_xrg_deleteFil args) { Io_url url = args.Url(); File fil = Fil_(url); @@ -98,14 +98,14 @@ public class IoEngine_system extends IoEngine_base { } @SuppressWarnings("resource") public static String Load_from_stream_as_str(InputStream stream, String url_str) { InputStreamReader reader = null; - try {reader = new InputStreamReader(stream, IoEngineArgs._.LoadFilStr_Encoding);} + try {reader = new InputStreamReader(stream, IoEngineArgs.Instance.LoadFilStr_Encoding);} catch (UnsupportedEncodingException e) { Closeable_close(stream, url_str, false); - throw Err_text_unsupported_encoding(IoEngineArgs._.LoadFilStr_Encoding, "", url_str, e); + throw Err_text_unsupported_encoding(IoEngineArgs.Instance.LoadFilStr_Encoding, "", url_str, e); } // make other objects - char[] readerBuffer = new char[IoEngineArgs._.LoadFilStr_BufferSize]; + char[] readerBuffer = new char[IoEngineArgs.Instance.LoadFilStr_BufferSize]; int pos = 0; StringWriter sw = new StringWriter(); @@ -135,7 +135,7 @@ public class IoEngine_system extends IoEngine_base { File dir = new File(url.Xto_api()); if (!dir.exists()) return; boolean rv = dir.delete(); - if (!rv) throw Err_.new_(IoEngineArgs._.Err_IoException, "delete dir failed", "url", url.Xto_api()); + if (!rv) throw Err_.new_(IoEngineArgs.Instance.Err_IoException, "delete dir failed", "url", url.Xto_api()); } @Override public IoItmDir QueryDir(Io_url url) { IoItmDir rv = IoItmDir_.scan_(url); @@ -185,7 +185,7 @@ public class IoEngine_system extends IoEngine_base { if (!Op_sys.Cur().Tid_is_drd()) IoEngine_system_xtn.SetWritable(f, true); } - if (!rv) throw Err_.new_(IoEngineArgs._.Err_IoException, "set file attribute failed", "attribute", "readOnly", "cur", Fil_ReadOnly(f), "new", atr.ReadOnly(), "url", url.Xto_api()); + if (!rv) throw Err_.new_(IoEngineArgs.Instance.Err_IoException, "set file attribute failed", "attribute", "readOnly", "cur", Fil_ReadOnly(f), "new", atr.ReadOnly(), "url", url.Xto_api()); } if (atr.Hidden() != f.isHidden()) { //Runtime.getRuntime().exec("attrib +H myHiddenFile.java"); @@ -265,7 +265,7 @@ public class IoEngine_system extends IoEngine_base { long pos = 0, count = 0, read = 0; try {count = srcChannel.size();} catch (IOException e) {throw Err_.new_exc(e, "io", "size failed", "src", srcUrl.Xto_api());} - int totalBufferSize = IoEngineArgs._.LoadFilStr_BufferSize; + int totalBufferSize = IoEngineArgs.Instance.LoadFilStr_BufferSize; long transferSize = (count > totalBufferSize) ? totalBufferSize : count; // transfer as much as fileSize, but limit to LoadFilStr_BufferSize while (pos < count) { try {read = trgChannel.transferFrom(srcChannel, pos, transferSize);} @@ -389,7 +389,7 @@ public class IoEngine_system extends IoEngine_base { java.net.URL src_url = null; HttpURLConnection src_conn = null; if (user_agent_needs_resetting) {user_agent_needs_resetting = false; System.setProperty("http.agent", "");} - boolean exists = Io_mgr.I.ExistsDir(xrg.Trg().OwnerDir()); + boolean exists = Io_mgr.Instance.ExistsDir(xrg.Trg().OwnerDir()); Gfo_usr_dlg prog_dlg = null; String src_str = xrg.Src(); Io_download_fmt xfer_fmt = xrg.Download_fmt(); @@ -402,7 +402,7 @@ public class IoEngine_system extends IoEngine_base { return false; } try { - trg_stream = Io_mgr.I.OpenStreamWrite(xrg.Trg()); + trg_stream = Io_mgr.Instance.OpenStreamWrite(xrg.Trg()); src_url = new java.net.URL(src_str); src_conn = (HttpURLConnection)src_url.openConnection(); // src_conn.setReadTimeout(5000); // do not set; if file does not exist, will wait 5 seconds before timing out; want to fail immediately @@ -414,7 +414,7 @@ public class IoEngine_system extends IoEngine_base { if (xrg.Exec_meta_only()) return true; src_stream = new java.io.BufferedInputStream(src_conn.getInputStream()); if (!exists) { - Io_mgr.I.CreateDir(xrg.Trg().OwnerDir()); // dir must exist for OpenStreamWrite; create dir at last possible moment in case stream does not exist. + Io_mgr.Instance.CreateDir(xrg.Trg().OwnerDir()); // dir must exist for OpenStreamWrite; create dir at last possible moment in case stream does not exist. } byte[] download_bfr = new byte[Download_bfr_len]; // NOTE: download_bfr was originally member variable; DATE:2013-05-03 xfer_fmt.Bgn(content_length); @@ -423,7 +423,7 @@ public class IoEngine_system extends IoEngine_base { if (xrg.Prog_cancel()) { src_stream.close(); trg_stream.Rls(); - Io_mgr.I.DeleteFil(xrg.Trg()); + Io_mgr.Instance.DeleteFil(xrg.Trg()); } xfer_fmt.Prog(count); trg_stream.Write(download_bfr, 0, count); @@ -467,7 +467,7 @@ public class IoEngine_system extends IoEngine_base { } Io_url session_fil; Bry_bfr prog_fmt_bfr; byte[] download_bfr; static final int Download_bfr_len = Io_mgr.Len_kb * 128; public static Err Err_Fil_NotFound(Io_url url) { - return Err_.new_(IoEngineArgs._.Err_FileNotFound, "file not found", "url", url.Xto_api()).Trace_ignore_add_1_(); + return Err_.new_(IoEngineArgs.Instance.Err_FileNotFound, "file not found", "url", url.Xto_api()).Trace_ignore_add_1_(); } public static Err Err_Fil_NotFound(Exception e, Io_url url) { return Err_.new_exc(e, "io", "file not found", "url", url.Xto_api()).Trace_ignore_add_1_(); @@ -475,7 +475,7 @@ public class IoEngine_system extends IoEngine_base { void MarkFileWritable(File fil, Io_url url, boolean readOnlyFails, String op) { if (Fil_ReadOnly(fil)) { if (readOnlyFails) // NOTE: java will always allow final files to be deleted; programmer api is responsible for check - throw Err_.new_(IoEngineArgs._.Err_ReadonlyFileNotWritable, "writable operation attempted on readOnly file", "op", op, "url", url.Xto_api()); + throw Err_.new_(IoEngineArgs.Instance.Err_ReadonlyFileNotWritable, "writable operation attempted on readOnly file", "op", op, "url", url.Xto_api()); else Fil_Writable(fil); } @@ -483,7 +483,7 @@ public class IoEngine_system extends IoEngine_base { void DeleteFil_lang(File fil, Io_url url) { boolean rv = Fil_Delete(fil); if (!rv) - throw Err_.new_(IoEngineArgs._.Err_IoException, "file not deleted", "url", url.Xto_api()); + throw Err_.new_(IoEngineArgs.Instance.Err_IoException, "file not deleted", "url", url.Xto_api()); } IoEngineUtl utl = IoEngineUtl.new_(); public static IoEngine_system new_() {return new IoEngine_system();} IoEngine_system() {} @@ -496,7 +496,7 @@ class IoEngineArgs { public String Err_ReadonlyFileNotWritable = "gplx.ios.ReadonlyFileNotWritable"; public String Err_FileNotFound = "gplx.ios.FileNotFound"; public String Err_IoException = "gplx.ios.IoException"; - public static final IoEngineArgs _ = new IoEngineArgs(); + public static final IoEngineArgs Instance = new IoEngineArgs(); } class IoEngine_system_xtn { // PATCH.DROID:VerifyError if file.setExecutable is referenced directly in IoEngine_system. However, if placed in separate class @@ -513,10 +513,10 @@ class Io_download_http { Io_stream_rdr_http rdr = new Io_stream_rdr_http(xrg); IoStream trg_stream = null; try { - boolean exists = Io_mgr.I.ExistsDir(xrg.Trg().OwnerDir()); + boolean exists = Io_mgr.Instance.ExistsDir(xrg.Trg().OwnerDir()); if (!exists) - Io_mgr.I.CreateDir(xrg.Trg().OwnerDir()); // dir must exist for OpenStreamWrite; create dir at last possible moment in case stream does not exist. - trg_stream = Io_mgr.I.OpenStreamWrite(xrg.Trg()); + Io_mgr.Instance.CreateDir(xrg.Trg().OwnerDir()); // dir must exist for OpenStreamWrite; create dir at last possible moment in case stream does not exist. + trg_stream = Io_mgr.Instance.OpenStreamWrite(xrg.Trg()); byte[] bfr = new byte[Download_bfr_len]; rdr.Open(); while (rdr.Read(bfr, 0, Download_bfr_len) != Read_done) { @@ -527,7 +527,7 @@ class Io_download_http { if (trg_stream != null) trg_stream.Rls(); } if (xrg.Rslt() != IoEngine_xrg_downloadFil.Rslt_pass) - Io_mgr.I.DeleteFil_args(xrg.Trg()).MissingFails_off().Exec(); + Io_mgr.Instance.DeleteFil_args(xrg.Trg()).MissingFails_off().Exec(); } public static final int Read_done = -1; public static final int Download_bfr_len = Io_mgr.Len_kb * 128; diff --git a/100_core/src_200_io/gplx/ios/IoEngine_xrg_deleteDir.java b/100_core/src_200_io/gplx/ios/IoEngine_xrg_deleteDir.java index 4a6545bf6..b8cf7add5 100644 --- a/100_core/src_200_io/gplx/ios/IoEngine_xrg_deleteDir.java +++ b/100_core/src_200_io/gplx/ios/IoEngine_xrg_deleteDir.java @@ -25,7 +25,7 @@ public class IoEngine_xrg_deleteDir { public Criteria MatchCrt() {return matchCrt;} public IoEngine_xrg_deleteDir MatchCrt_(Criteria v) {matchCrt = v; return this;} Criteria matchCrt = Criteria_.All; public Criteria SubDirScanCrt() {return subDirScanCrt;} public IoEngine_xrg_deleteDir SubDirScanCrt_(Criteria v) {subDirScanCrt = v; return this;} Criteria subDirScanCrt = Criteria_.All; public Console_adp UsrDlg() {return usrDlg;} public IoEngine_xrg_deleteDir UsrDlg_(Console_adp v) {usrDlg = v; return this;} Console_adp usrDlg = Console_adp_.Noop; - public void Exec() {IoEnginePool._.Get_by(url.Info().EngineKey()).DeleteDirDeep(this);} + public void Exec() {IoEnginePool.Instance.Get_by(url.Info().EngineKey()).DeleteDirDeep(this);} public static IoEngine_xrg_deleteDir new_(Io_url url) { IoEngine_xrg_deleteDir rv = new IoEngine_xrg_deleteDir(); rv.url = url; diff --git a/100_core/src_200_io/gplx/ios/IoEngine_xrg_deleteFil.java b/100_core/src_200_io/gplx/ios/IoEngine_xrg_deleteFil.java index 3f1a7e47b..6b50c061d 100644 --- a/100_core/src_200_io/gplx/ios/IoEngine_xrg_deleteFil.java +++ b/100_core/src_200_io/gplx/ios/IoEngine_xrg_deleteFil.java @@ -20,7 +20,7 @@ public class IoEngine_xrg_deleteFil extends IoEngine_xrg_fil_affects1_base { @gplx.New public IoEngine_xrg_deleteFil Url_(Io_url val) {Url_set(val); return this;} public IoEngine_xrg_deleteFil ReadOnlyFails_off() {return ReadOnlyFails_(false);} public IoEngine_xrg_deleteFil ReadOnlyFails_(boolean v) {ReadOnlyFails_set(v); return this;} public IoEngine_xrg_deleteFil MissingFails_off() {return MissingFails_(false);} public IoEngine_xrg_deleteFil MissingFails_(boolean v) {MissingFails_set(v); return this;} - @Override public void Exec() {IoEnginePool._.Get_by(this.Url().Info().EngineKey()).DeleteFil_api(this);} + @Override public void Exec() {IoEnginePool.Instance.Get_by(this.Url().Info().EngineKey()).DeleteFil_api(this);} public static IoEngine_xrg_deleteFil proto_() {return new IoEngine_xrg_deleteFil();} public static IoEngine_xrg_deleteFil new_(Io_url url) { IoEngine_xrg_deleteFil rv = new IoEngine_xrg_deleteFil(); diff --git a/100_core/src_200_io/gplx/ios/IoEngine_xrg_downloadFil.java b/100_core/src_200_io/gplx/ios/IoEngine_xrg_downloadFil.java index 4fe653841..eafedf710 100644 --- a/100_core/src_200_io/gplx/ios/IoEngine_xrg_downloadFil.java +++ b/100_core/src_200_io/gplx/ios/IoEngine_xrg_downloadFil.java @@ -35,20 +35,20 @@ public class IoEngine_xrg_downloadFil { public boolean Src_last_modified_query() {return src_last_modified_query;} public IoEngine_xrg_downloadFil Src_last_modified_query_(boolean v) {src_last_modified_query = v; return this;} private boolean src_last_modified_query; public String Trg_engine_key() {return trg_engine_key;} public IoEngine_xrg_downloadFil Trg_engine_key_(String v) {trg_engine_key = v; return this;} private String trg_engine_key = IoEngine_.SysKey; public Io_download_fmt Download_fmt() {return download_fmt;} private final Io_download_fmt download_fmt = new Io_download_fmt(); - public boolean Exec() {return IoEnginePool._.Get_by(trg.Info().EngineKey()).DownloadFil(this);} - public Io_stream_rdr Exec_as_rdr() {return IoEnginePool._.Get_by(IoEngine_.SysKey).DownloadFil_as_rdr(this);} + public boolean Exec() {return IoEnginePool.Instance.Get_by(trg.Info().EngineKey()).DownloadFil(this);} + public Io_stream_rdr Exec_as_rdr() {return IoEnginePool.Instance.Get_by(IoEngine_.SysKey).DownloadFil_as_rdr(this);} public boolean Exec_meta_only() {return exec_meta_only;} private boolean exec_meta_only; public byte[] Exec_as_bry(String src) { this.Src_(src); this.Trg_(trg_mem); download_fmt.Download_init(src, prog_fmt_hdr); // NOTE: must set src else NULL error - boolean pass = IoEnginePool._.Get_by(trg_engine_key).DownloadFil(this); - return pass ? Io_mgr.I.LoadFilBry(trg_mem) : null; + boolean pass = IoEnginePool.Instance.Get_by(trg_engine_key).DownloadFil(this); + return pass ? Io_mgr.Instance.LoadFilBry(trg_mem) : null; } private Io_url trg_mem = Io_url_.mem_fil_("mem/download.tmp"); public boolean Exec_meta(String src) { this.Src_(src); this.Trg_(trg_mem); // NOTE: set Trg_ else error in download proc download_fmt.Download_init(src, prog_fmt_hdr); // NOTE: must set src else NULL error exec_meta_only = true; - boolean rv = IoEnginePool._.Get_by(trg_engine_key).DownloadFil(this); + boolean rv = IoEnginePool.Instance.Get_by(trg_engine_key).DownloadFil(this); exec_meta_only = false; return rv; } diff --git a/100_core/src_200_io/gplx/ios/IoEngine_xrg_loadFilStr.java b/100_core/src_200_io/gplx/ios/IoEngine_xrg_loadFilStr.java index 6abd4552b..bdbe9701b 100644 --- a/100_core/src_200_io/gplx/ios/IoEngine_xrg_loadFilStr.java +++ b/100_core/src_200_io/gplx/ios/IoEngine_xrg_loadFilStr.java @@ -22,10 +22,10 @@ public class IoEngine_xrg_loadFilStr { public boolean MissingIgnored() {return missingIgnored;} public IoEngine_xrg_loadFilStr MissingIgnored_() {return MissingIgnored_(true);} public IoEngine_xrg_loadFilStr MissingIgnored_(boolean v) {missingIgnored = v; return this;} private boolean missingIgnored = false; public boolean BomUtf8Convert() {return bomUtf8Convert;} public IoEngine_xrg_loadFilStr BomUtf8Convert_(boolean v) {bomUtf8Convert = v; return this;} private boolean bomUtf8Convert = true; public String Exec() { - String s = IoEnginePool._.Get_by(url.Info().EngineKey()).LoadFilStr(this); + String s = IoEnginePool.Instance.Get_by(url.Info().EngineKey()).LoadFilStr(this); if (bomUtf8Convert && String_.Len(s) > 0 && String_.CodePointAt(s, 0) == Bom_Utf8) { s = String_.Mid(s, 1); - UsrDlg_._.Warn(UsrMsg.new_("UTF8 BOM removed").Add("url", url.Xto_api())); + UsrDlg_.Instance.Warn(UsrMsg.new_("UTF8 BOM removed").Add("url", url.Xto_api())); } return s; } diff --git a/100_core/src_200_io/gplx/ios/IoEngine_xrg_openRead.java b/100_core/src_200_io/gplx/ios/IoEngine_xrg_openRead.java index 1fd9aaa86..05eb4ae61 100644 --- a/100_core/src_200_io/gplx/ios/IoEngine_xrg_openRead.java +++ b/100_core/src_200_io/gplx/ios/IoEngine_xrg_openRead.java @@ -19,9 +19,9 @@ package gplx.ios; import gplx.*; public class IoEngine_xrg_openRead { public Io_url Url() {return url;} Io_url url; public String ErrMsg() {return errMsg;} private String errMsg; - public IoStream ExecAsIoStreamOrFail() {return IoEnginePool._.Get_by(url.Info().EngineKey()).OpenStreamRead(url);} + public IoStream ExecAsIoStreamOrFail() {return IoEnginePool.Instance.Get_by(url.Info().EngineKey()).OpenStreamRead(url);} public IoStream ExecAsIoStreamOrNull() { - try {return IoEnginePool._.Get_by(url.Info().EngineKey()).OpenStreamRead(url);} + try {return IoEnginePool.Instance.Get_by(url.Info().EngineKey()).OpenStreamRead(url);} catch (Exception exc) { errMsg = Err_.Message_lang(exc); return IoStream_.Null; diff --git a/100_core/src_200_io/gplx/ios/IoEngine_xrg_openWrite.java b/100_core/src_200_io/gplx/ios/IoEngine_xrg_openWrite.java index a5906b9e3..68ffca5b5 100644 --- a/100_core/src_200_io/gplx/ios/IoEngine_xrg_openWrite.java +++ b/100_core/src_200_io/gplx/ios/IoEngine_xrg_openWrite.java @@ -22,7 +22,7 @@ public class IoEngine_xrg_openWrite { public boolean MissingIgnored() {return missingIgnored;} public IoEngine_xrg_openWrite MissingIgnored_() {return MissingIgnored_(true);} public IoEngine_xrg_openWrite MissingIgnored_(boolean v) {missingIgnored = v; return this;} private boolean missingIgnored = false; public byte Mode() {return mode;} public IoEngine_xrg_openWrite Mode_(byte v) {mode = v; return this;} private byte mode = IoStream_.Mode_wtr_create; public IoEngine_xrg_openWrite Mode_update_() {return Mode_(IoStream_.Mode_wtr_update);} - public IoStream Exec() {return IoEnginePool._.Get_by(url.Info().EngineKey()).OpenStreamWrite(this);} + public IoStream Exec() {return IoEnginePool.Instance.Get_by(url.Info().EngineKey()).OpenStreamWrite(this);} public static IoEngine_xrg_openWrite new_(Io_url url) { IoEngine_xrg_openWrite rv = new IoEngine_xrg_openWrite(); rv.url = url; diff --git a/100_core/src_200_io/gplx/ios/IoEngine_xrg_queryDir.java b/100_core/src_200_io/gplx/ios/IoEngine_xrg_queryDir.java index d6ac54e0c..8f2ff1468 100644 --- a/100_core/src_200_io/gplx/ios/IoEngine_xrg_queryDir.java +++ b/100_core/src_200_io/gplx/ios/IoEngine_xrg_queryDir.java @@ -36,12 +36,12 @@ public class IoEngine_xrg_queryDir { filCrt = Criteria_fld.new_(IoItm_base_.Prop_Path, crt); return this; } - public IoItmDir ExecAsDir() {return IoEnginePool._.Get_by(url.Info().EngineKey()).QueryDirDeep(this);} + public IoItmDir ExecAsDir() {return IoEnginePool.Instance.Get_by(url.Info().EngineKey()).QueryDirDeep(this);} public Io_url[] ExecAsUrlAry() {return ExecAsItmHash().XtoIoUrlAry();} public IoItmHash ExecAsItmHash() { Criteria crt = dirInclude ? Criteria_.All : Criteria_fld.new_(IoItm_base_.Prop_Type, Criteria_.eq_(IoItmFil.Type_Fil)); IoItmHash list = ExecAsDir().XtoIoItmList(crt); - list.Sort_by(IoItmBase_comparer_nest._); + list.Sort_by(IoItmBase_comparer_nest.Instance); return list; } public static IoEngine_xrg_queryDir new_(Io_url url) { diff --git a/100_core/src_200_io/gplx/ios/IoEngine_xrg_recycleFil.java b/100_core/src_200_io/gplx/ios/IoEngine_xrg_recycleFil.java index 787209286..62d04d635 100644 --- a/100_core/src_200_io/gplx/ios/IoEngine_xrg_recycleFil.java +++ b/100_core/src_200_io/gplx/ios/IoEngine_xrg_recycleFil.java @@ -44,7 +44,7 @@ public class IoEngine_xrg_recycleFil extends IoEngine_xrg_fil_affects1_base { return sb.To_str(); } @Override public void Exec() { - IoEnginePool._.Get_by(this.Url().Info().EngineKey()).RecycleFil(this); + IoEnginePool.Instance.Get_by(this.Url().Info().EngineKey()).RecycleFil(this); } public IoEngine_xrg_recycleFil(int v) { mode = v; diff --git a/100_core/src_200_io/gplx/ios/IoEngine_xrg_saveFilStr.java b/100_core/src_200_io/gplx/ios/IoEngine_xrg_saveFilStr.java index da2b44f91..0b54858dd 100644 --- a/100_core/src_200_io/gplx/ios/IoEngine_xrg_saveFilStr.java +++ b/100_core/src_200_io/gplx/ios/IoEngine_xrg_saveFilStr.java @@ -23,7 +23,7 @@ public class IoEngine_xrg_saveFilStr { public boolean Append() {return append;} public IoEngine_xrg_saveFilStr Append_() {return Append_(true);} public IoEngine_xrg_saveFilStr Append_(boolean val) {append = val; return this;} private boolean append = false; public void Exec() { if (String_.Eq(text, "") && append) return; // no change; don't bother writing to disc - IoEnginePool._.Get_by(url.Info().EngineKey()).SaveFilText_api(this); + IoEnginePool.Instance.Get_by(url.Info().EngineKey()).SaveFilText_api(this); } public static IoEngine_xrg_saveFilStr new_(Io_url url, String text) { IoEngine_xrg_saveFilStr rv = new IoEngine_xrg_saveFilStr(); diff --git a/100_core/src_200_io/gplx/ios/IoEngine_xrg_xferDir.java b/100_core/src_200_io/gplx/ios/IoEngine_xrg_xferDir.java index 1ce83f3bd..e4448250e 100644 --- a/100_core/src_200_io/gplx/ios/IoEngine_xrg_xferDir.java +++ b/100_core/src_200_io/gplx/ios/IoEngine_xrg_xferDir.java @@ -26,7 +26,7 @@ public class IoEngine_xrg_xferDir { public boolean ReadOnlyFails() {return readOnlyFails;} public IoEngine_xrg_xferDir ReadOnlyFails_() {return ReadOnlyFails_(true);} public IoEngine_xrg_xferDir ReadOnlyFails_(boolean v) {readOnlyFails = v; return this;} private boolean readOnlyFails = false; public Criteria MatchCrt() {return matchCrt;} public IoEngine_xrg_xferDir MatchCrt_(Criteria v) {matchCrt = v; return this;} Criteria matchCrt = Criteria_.All; public Criteria SubDirScanCrt() {return subDirScanCrt;} public IoEngine_xrg_xferDir SubDirScanCrt_(Criteria v) {subDirScanCrt = v; return this;} Criteria subDirScanCrt = Criteria_.All; - public void Exec() {IoEnginePool._.Get_by(src.Info().EngineKey()).XferDir(this);} + public void Exec() {IoEnginePool.Instance.Get_by(src.Info().EngineKey()).XferDir(this);} public static IoEngine_xrg_xferDir move_(Io_url src, Io_url trg) {return new_(src, trg, true);} public static IoEngine_xrg_xferDir copy_(Io_url src, Io_url trg) {return new_(src, trg, false);} static IoEngine_xrg_xferDir new_(Io_url src, Io_url trg, boolean move) { diff --git a/100_core/src_200_io/gplx/ios/IoEngine_xrg_xferFil.java b/100_core/src_200_io/gplx/ios/IoEngine_xrg_xferFil.java index 941b0cad9..f0a5975f5 100644 --- a/100_core/src_200_io/gplx/ios/IoEngine_xrg_xferFil.java +++ b/100_core/src_200_io/gplx/ios/IoEngine_xrg_xferFil.java @@ -23,7 +23,7 @@ public class IoEngine_xrg_xferFil { public boolean Overwrite() {return overwrite;} public IoEngine_xrg_xferFil Overwrite_() {return Overwrite_(true);} public IoEngine_xrg_xferFil Overwrite_(boolean v) {overwrite = v; return this;} private boolean overwrite = false; public boolean ReadOnlyFails() {return readOnlyFails;} public IoEngine_xrg_xferFil ReadOnlyFails_off() {return ReadOnlyFails_(false);} public IoEngine_xrg_xferFil ReadOnlyFails_(boolean v) {readOnlyFails = v; return this;} private boolean readOnlyFails = true; public boolean MissingFails() {return missingFails;} public IoEngine_xrg_xferFil MissingFails_off() {return MissingFails_(false);} public IoEngine_xrg_xferFil MissingFails_(boolean v) {missingFails = v; return this;} private boolean missingFails = true; - public void Exec() {IoEnginePool._.Get_by(src.Info().EngineKey()).XferFil(this);} + public void Exec() {IoEnginePool.Instance.Get_by(src.Info().EngineKey()).XferFil(this);} public static IoEngine_xrg_xferFil move_(Io_url src, Io_url trg) {return new_(src, trg, true);} public static IoEngine_xrg_xferFil copy_(Io_url src, Io_url trg) {return new_(src, trg, false);} static IoEngine_xrg_xferFil new_(Io_url src, Io_url trg, boolean move) { diff --git a/100_core/src_200_io/gplx/ios/IoItmClassXtn.java b/100_core/src_200_io/gplx/ios/IoItmClassXtn.java index 379917c6e..16a6d7e7c 100644 --- a/100_core/src_200_io/gplx/ios/IoItmClassXtn.java +++ b/100_core/src_200_io/gplx/ios/IoItmClassXtn.java @@ -28,5 +28,5 @@ public class IoItmClassXtn extends ClassXtn_base implements ClassXtn { else throw Err_.new_unhandled(raw); } @Override public Object XtoDb(Object obj) {return Int_.cast(obj);} - public static final IoItmClassXtn _ = new IoItmClassXtn(); IoItmClassXtn() {} + public static final IoItmClassXtn Instance = new IoItmClassXtn(); IoItmClassXtn() {} } diff --git a/100_core/src_200_io/gplx/ios/IoItmDir_.java b/100_core/src_200_io/gplx/ios/IoItmDir_.java index 181554d82..91eba13a1 100644 --- a/100_core/src_200_io/gplx/ios/IoItmDir_.java +++ b/100_core/src_200_io/gplx/ios/IoItmDir_.java @@ -37,7 +37,7 @@ public class IoItmDir_ { return rv; } public static void Make(IoItmDir dir) { - Io_mgr.I.CreateDir(dir.Url()); + Io_mgr.Instance.CreateDir(dir.Url()); int len = dir.SubDirs().Count(); for (int i = 0; i < len; ++i) { IoItmDir sub_dir = (IoItmDir)dir.SubDirs().Get_at(i); @@ -48,8 +48,8 @@ public class IoItmDir_ { IoItmFil sub_fil = (IoItmFil)dir.SubFils().Get_at(i); String text = String_.Repeat("a", (int)sub_fil.Size()); Io_url sub_url = sub_fil.Url(); - Io_mgr.I.SaveFilStr(sub_url, text); - Io_mgr.I.UpdateFilModifiedTime(sub_url, sub_fil.ModifiedTime()); + Io_mgr.Instance.SaveFilStr(sub_url, text); + Io_mgr.Instance.UpdateFilModifiedTime(sub_url, sub_fil.ModifiedTime()); } } } diff --git a/100_core/src_200_io/gplx/ios/IoItmList.java b/100_core/src_200_io/gplx/ios/IoItmList.java index f265df0ae..4c7e01c13 100644 --- a/100_core/src_200_io/gplx/ios/IoItmList.java +++ b/100_core/src_200_io/gplx/ios/IoItmList.java @@ -36,7 +36,7 @@ public class IoItmList extends Ordered_hash_base { rv[i] = IoItm_base_.as_(i).Url(); return rv; } - @Override public void Sort() {Sort_by(IoItmBase_comparer_nest._);} + @Override public void Sort() {Sort_by(IoItmBase_comparer_nest.Instance);} @Override protected Object Fetch_base(Object keyObj) { String key = MakeKey((String)keyObj); return super.Fetch_base(key); @@ -72,5 +72,5 @@ class IoItmBase_comparer_nest implements ComparerAble { Io_url url = itm.Url(); return String_.Count(url.OwnerDir().Raw(), url.Info().DirSpr()); // use OwnerDir, else dir.Raw will return extra dirSeparator } - public static final IoItmBase_comparer_nest _ = new IoItmBase_comparer_nest(); IoItmBase_comparer_nest() {} + public static final IoItmBase_comparer_nest Instance = new IoItmBase_comparer_nest(); IoItmBase_comparer_nest() {} } diff --git a/100_core/src_200_io/gplx/ios/IoRecycleBin.java b/100_core/src_200_io/gplx/ios/IoRecycleBin.java index 999b1ad24..836aa3dae 100644 --- a/100_core/src_200_io/gplx/ios/IoRecycleBin.java +++ b/100_core/src_200_io/gplx/ios/IoRecycleBin.java @@ -56,5 +56,5 @@ public class IoRecycleBin { String sourceApp = String_.GetStrBefore(url.NameAndExt_noDirSpr(), ";"); return url.OwnerDir().GenSubFil_ary(sourceApp, ".recycle.csv"); } - public static final IoRecycleBin _ = new IoRecycleBin(); IoRecycleBin() {} + public static final IoRecycleBin Instance = new IoRecycleBin(); IoRecycleBin() {} } diff --git a/100_core/src_200_io/gplx/ios/IoUrlInfo.java b/100_core/src_200_io/gplx/ios/IoUrlInfo.java index 36cf4e663..90838b954 100644 --- a/100_core/src_200_io/gplx/ios/IoUrlInfo.java +++ b/100_core/src_200_io/gplx/ios/IoUrlInfo.java @@ -49,7 +49,7 @@ class IoUrlInfo_nil implements IoUrlInfo { public String NameOnly(String raw) {return "";} public String Ext(String raw) {return "";} public String XtoRootName(String raw, int rawLen) {return "";} - public static final IoUrlInfo_nil _ = new IoUrlInfo_nil(); IoUrlInfo_nil() {} + public static final IoUrlInfo_nil Instance = new IoUrlInfo_nil(); IoUrlInfo_nil() {} } abstract class IoUrlInfo_base implements IoUrlInfo { @gplx.Internal protected static final int DirSprLen = 1; @@ -134,7 +134,7 @@ class IoUrlInfo_wnt extends IoUrlInfo_base { ? Char_.To_str(String_.CharAt(raw, 0)) : null; } - public static final IoUrlInfo_wnt _ = new IoUrlInfo_wnt(); IoUrlInfo_wnt() {} + public static final IoUrlInfo_wnt Instance = new IoUrlInfo_wnt(); IoUrlInfo_wnt() {} } class IoUrlInfo_lnx extends IoUrlInfo_base { @Override public String Key() {return "lnx";} @@ -154,7 +154,7 @@ class IoUrlInfo_lnx extends IoUrlInfo_base { ? DirSprStr : super.Xto_api(raw); // NOTE: super.Xto_api will strip off last / } - public static final IoUrlInfo_lnx _ = new IoUrlInfo_lnx(); IoUrlInfo_lnx() {} + public static final IoUrlInfo_lnx Instance = new IoUrlInfo_lnx(); IoUrlInfo_lnx() {} } class IoUrlInfo_rel extends IoUrlInfo_base { @Override public String Key() {return "rel";} diff --git a/100_core/src_200_io/gplx/ios/IoUrlInfoRegy.java b/100_core/src_200_io/gplx/ios/IoUrlInfoRegy.java index 8e17ae72e..ab5f9449a 100644 --- a/100_core/src_200_io/gplx/ios/IoUrlInfoRegy.java +++ b/100_core/src_200_io/gplx/ios/IoUrlInfoRegy.java @@ -28,10 +28,10 @@ public class IoUrlInfoRegy implements GfoInvkAble { } public void Reset() { hash.Clear(); - Reg(IoUrlInfo_rel.new_(Op_sys.Cur().Tid_is_wnt() ? (IoUrlInfo)IoUrlInfo_wnt._ : (IoUrlInfo)IoUrlInfo_lnx._)); + Reg(IoUrlInfo_rel.new_(Op_sys.Cur().Tid_is_wnt() ? (IoUrlInfo)IoUrlInfo_wnt.Instance : (IoUrlInfo)IoUrlInfo_lnx.Instance)); Reg(IoUrlInfo_.Mem); - Reg(IoUrlInfo_lnx._); - Reg(IoUrlInfo_wnt._); + Reg(IoUrlInfo_lnx.Instance); + Reg(IoUrlInfo_wnt.Instance); } public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { if (ctx.Match(k, Invk_Add)) { @@ -40,12 +40,12 @@ public class IoUrlInfoRegy implements GfoInvkAble { String engineKey = m.ReadStrOr("engineKey", IoEngine_.SysKey); if (ctx.Deny()) return this; IoUrlInfo_alias alias = IoUrlInfo_alias.new_(srcDirStr, trgDirStr, engineKey); - IoUrlInfoRegy._.Reg(alias); + IoUrlInfoRegy.Instance.Reg(alias); } return this; } public static final String Invk_Add = "Add"; - Ordered_hash hash = Ordered_hash_.new_(); - public static final IoUrlInfoRegy _ = new IoUrlInfoRegy(); + Ordered_hash hash = Ordered_hash_.New(); + public static final IoUrlInfoRegy Instance = new IoUrlInfoRegy(); IoUrlInfoRegy() { this.Reset(); } diff --git a/100_core/src_200_io/gplx/ios/IoUrlInfo_.java b/100_core/src_200_io/gplx/ios/IoUrlInfo_.java index 897e320fa..07fb1ccc4 100644 --- a/100_core/src_200_io/gplx/ios/IoUrlInfo_.java +++ b/100_core/src_200_io/gplx/ios/IoUrlInfo_.java @@ -17,9 +17,9 @@ along with this program. If not, see . */ package gplx.ios; import gplx.*; public class IoUrlInfo_ { - public static final IoUrlInfo Nil = IoUrlInfo_nil._; - public static final IoUrlInfo Wnt = IoUrlInfo_wnt._; - public static final IoUrlInfo Lnx = IoUrlInfo_lnx._; + public static final IoUrlInfo Nil = IoUrlInfo_nil.Instance; + public static final IoUrlInfo Wnt = IoUrlInfo_wnt.Instance; + public static final IoUrlInfo Lnx = IoUrlInfo_lnx.Instance; public static final IoUrlInfo Mem = IoUrlInfo_mem.new_("mem", IoEngine_.MemKey); public static IoUrlInfo mem_(String key, String engineKey) {return IoUrlInfo_mem.new_(key, engineKey);} diff --git a/100_core/src_200_io/gplx/ios/IoUrlTypeRegy.java b/100_core/src_200_io/gplx/ios/IoUrlTypeRegy.java index 30ac64dd8..bb3292ff4 100644 --- a/100_core/src_200_io/gplx/ios/IoUrlTypeRegy.java +++ b/100_core/src_200_io/gplx/ios/IoUrlTypeRegy.java @@ -36,8 +36,8 @@ public class IoUrlTypeRegy implements GfoInvkAble { else return GfoInvkAble_.Rv_unhandled; // return this; } public static final String Invk_Get = "Get"; - Ordered_hash hash = Ordered_hash_.new_(); - public static final IoUrlTypeRegy _ = new IoUrlTypeRegy(); IoUrlTypeRegy() {} + Ordered_hash hash = Ordered_hash_.New(); + public static final IoUrlTypeRegy Instance = new IoUrlTypeRegy(); IoUrlTypeRegy() {} } class IoUrlTypeGrp implements GfoInvkAble { public String[] AsAry() { @@ -46,7 +46,7 @@ class IoUrlTypeGrp implements GfoInvkAble { rv[i] = (String)list.Get_at(i); return rv; } - Ordered_hash list = Ordered_hash_.new_(); + Ordered_hash list = Ordered_hash_.New(); public IoUrlTypeGrp(String key) {this.key = key;} private String key; public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { if (ctx.Match(k, Invk_AddMany)) { diff --git a/100_core/src_200_io/gplx/ios/IoZipWkr.java b/100_core/src_200_io/gplx/ios/IoZipWkr.java index f3d015f46..3b3127fde 100644 --- a/100_core/src_200_io/gplx/ios/IoZipWkr.java +++ b/100_core/src_200_io/gplx/ios/IoZipWkr.java @@ -18,8 +18,8 @@ along with this program. If not, see . package gplx.ios; import gplx.*; import gplx.stores.*; /*GfoNdeRdr_*/ public class IoZipWkr { - public Io_url ExeUrl() {return (Io_url)GfoRegy._.FetchValOrFail(Regy_ExeUrl);} - public String ExeArgFmt() {return (String)GfoRegy._.FetchValOrFail(Regy_ExeArgFmt);} + public Io_url ExeUrl() {return (Io_url)GfoRegy.Instance.FetchValOrFail(Regy_ExeUrl);} + public String ExeArgFmt() {return (String)GfoRegy.Instance.FetchValOrFail(Regy_ExeArgFmt);} public void Expand(Io_url srcUrl, Io_url trgUrl) { String exeArgs = Expand_genCmdString(srcUrl, trgUrl); process.Exe_url_(this.ExeUrl()).Args_str_(exeArgs); @@ -32,8 +32,8 @@ public class IoZipWkr { public static IoZipWkr regy_() {return new IoZipWkr();} static final String Regy_ExeUrl = "gplx.ios.IoZipWkr.ExeUrl", Regy_ExeArgFmt = "gplx.ios.IoZipWkr.ExeArgFmt"; public static IoZipWkr new_(Io_url exeUrl, String expandArgs) { - GfoRegy._.RegObj(Regy_ExeUrl, exeUrl); - GfoRegy._.RegObj(Regy_ExeArgFmt, expandArgs); + GfoRegy.Instance.RegObj(Regy_ExeUrl, exeUrl); + GfoRegy.Instance.RegObj(Regy_ExeArgFmt, expandArgs); IoZipWkr rv = new IoZipWkr(); return rv; } diff --git a/100_core/src_200_io/gplx/ios/Io_download_fmt.java b/100_core/src_200_io/gplx/ios/Io_download_fmt.java index c0c3c97f3..e764700fd 100644 --- a/100_core/src_200_io/gplx/ios/Io_download_fmt.java +++ b/100_core/src_200_io/gplx/ios/Io_download_fmt.java @@ -79,7 +79,7 @@ public class Io_download_fmt { , rate_fmtr_arg.Val_(prog_rate) , prog_left_fmtr_arg.Seconds_(prog_left / 1000) ); - prog_msg = prog_bfr.Xto_str_and_clear(); + prog_msg = prog_bfr.To_str_and_clear(); if (usr_dlg != null) usr_dlg.Prog_none("", "prog", prog_msg); } diff --git a/100_core/src_200_io/gplx/ios/Io_fil.java b/100_core/src_200_io/gplx/ios/Io_fil.java index b921d5a74..452c7014d 100644 --- a/100_core/src_200_io/gplx/ios/Io_fil.java +++ b/100_core/src_200_io/gplx/ios/Io_fil.java @@ -28,7 +28,7 @@ public class Io_fil implements gplx.CompareAble { Io_fil[] rv = new Io_fil[url_ary_len]; for (int i = 0; i < url_ary_len; i++) { Io_url url = url_ary[i]; - String data = Io_mgr.I.LoadFilStr(url); + String data = Io_mgr.Instance.LoadFilStr(url); Io_fil fil = new Io_fil(url, data); rv[i] = fil; } diff --git a/100_core/src_200_io/gplx/ios/Io_size_.java b/100_core/src_200_io/gplx/ios/Io_size_.java index 8d3693ac0..e8b2b2a23 100644 --- a/100_core/src_200_io/gplx/ios/Io_size_.java +++ b/100_core/src_200_io/gplx/ios/Io_size_.java @@ -91,7 +91,7 @@ public class Io_size_ { long rv = parse_or(v, Long_.Min_value); if (rv == Long_.Min_value) throw Err_.new_wo_type("invalid val", "val", v); return rv; } - public static String To_str_mb(long v) {return Long_.Xto_str(v / Io_mgr.Len_mb_long);} + public static String To_str_mb(long v) {return Long_.To_str(v / Io_mgr.Len_mb_long);} public static long To_long_by_int_mb(int v) {return (long)v * Io_mgr.Len_mb_long;} public static long To_long_by_msg_mb(GfoMsg m, long cur) { long val = m.ReadLongOr("v", Int_.Min_value); @@ -101,7 +101,7 @@ public class Io_size_ { class Io_size_fmtr_arg implements Bry_fmtr_arg { public long Val() {return val;} public Io_size_fmtr_arg Val_(long v) {val = v; return this;} long val; public byte[] Suffix() {return suffix;} public Io_size_fmtr_arg Suffix_(byte[] v) {suffix = v; return this;} private byte[] suffix; - public void XferAry(Bry_bfr bfr, int idx) { + public void Fmt__do(Bry_bfr bfr) { long cur = val; int pow = 0; while (cur >= 1024) { cur /= 1024; diff --git a/100_core/src_200_io/gplx/ios/Io_stream_rdr_.java b/100_core/src_200_io/gplx/ios/Io_stream_rdr_.java index 2bef0b890..ec3e71aed 100644 --- a/100_core/src_200_io/gplx/ios/Io_stream_rdr_.java +++ b/100_core/src_200_io/gplx/ios/Io_stream_rdr_.java @@ -51,7 +51,7 @@ public class Io_stream_rdr_ { public static byte[] Load_all_as_bry(Io_stream_rdr rdr) {return Load_all_as_bry(Bry_bfr.new_(), rdr);} public static byte[] Load_all_as_bry(Bry_bfr rv, Io_stream_rdr rdr) { Load_all_to_bfr(rv, rdr); - return rv.Xto_bry_and_clear(); + return rv.To_bry_and_clear(); } public static void Load_all_to_bfr(Bry_bfr rv, Io_stream_rdr rdr) { try { @@ -176,11 +176,11 @@ class Io_stream_rdr_file extends Io_stream_rdr_base { @Override public byte Tid() {return Io_stream_.Tid_raw;} public Io_stream_rdr Open() { try { - if (!Io_mgr.I.Exists(url)) + if (!Io_mgr.Instance.Exists(url)) stream = Wrap_stream(new java.io.ByteArrayInputStream(Bry_.Empty)); else { if (url.Info().EngineKey() == gplx.ios.IoEngine_.MemKey) - stream = Wrap_stream(new java.io.ByteArrayInputStream(Io_mgr.I.LoadFilBry(url.Xto_api()))); + stream = Wrap_stream(new java.io.ByteArrayInputStream(Io_mgr.Instance.LoadFilBry(url.Xto_api()))); else stream = Wrap_stream(new java.io.FileInputStream(url.Xto_api())); } diff --git a/100_core/src_200_io/gplx/ios/Io_stream_wtr_.java b/100_core/src_200_io/gplx/ios/Io_stream_wtr_.java index 53f062279..82f589802 100644 --- a/100_core/src_200_io/gplx/ios/Io_stream_wtr_.java +++ b/100_core/src_200_io/gplx/ios/Io_stream_wtr_.java @@ -76,11 +76,11 @@ abstract class Io_stream_wtr_base implements Io_stream_wtr { java.io.OutputStream zip_stream; public Io_url Url() {return url;} public Io_stream_wtr Url_(Io_url v) {url = v; trg_bfr = null; return this;} Io_url url; public void Trg_bfr_(Bry_bfr v) {trg_bfr = v;} Bry_bfr trg_bfr; java.io.ByteArrayOutputStream mem_stream; - public byte[] To_ary_and_clear() {return trg_bfr.Xto_bry_and_clear();} + public byte[] To_ary_and_clear() {return trg_bfr.To_bry_and_clear();} @SuppressWarnings("resource") public Io_stream_wtr Open() { java.io.OutputStream bry_stream = null; if (trg_bfr == null) { - if (!Io_mgr.I.ExistsFil(url)) Io_mgr.I.SaveFilStr(url, ""); + if (!Io_mgr.Instance.ExistsFil(url)) Io_mgr.Instance.SaveFilStr(url, ""); try {bry_stream = new java.io.FileOutputStream(url.Raw());} catch (Exception e) {throw Err_.new_exc(e, "io", "open failed", "url", url.Raw());} } @@ -134,7 +134,7 @@ class Io_stream_wtr_zip implements Io_stream_wtr { public Io_stream_wtr Open() { java.io.OutputStream bry_stream; if (trg_bfr == null) { - if (!Io_mgr.I.ExistsFil(url)) Io_mgr.I.SaveFilStr(url, ""); // create file if it doesn't exist + if (!Io_mgr.Instance.ExistsFil(url)) Io_mgr.Instance.SaveFilStr(url, ""); // create file if it doesn't exist try {bry_stream = new java.io.FileOutputStream(url.Xto_api());} catch (Exception e) {throw Err_.new_exc(e, "io", "open failed", "url", url.Raw());} } @@ -170,7 +170,7 @@ class Io_stream_wtr_zip implements Io_stream_wtr { catch (Exception e) {throw Err_.new_exc(e, "io", "close failed", "url", url.Raw());} } public byte[] To_ary_and_clear() { - byte[] rv = trg_bfr.Xto_bry_and_clear(); + byte[] rv = trg_bfr.To_bry_and_clear(); this.Rls(); return rv; } @@ -183,7 +183,7 @@ class Io_stream_wtr_file implements Io_stream_wtr { public Io_stream_wtr Open() { try { if (trg_bfr == null) - bry_stream = Io_mgr.I.OpenStreamWrite(url); + bry_stream = Io_mgr.Instance.OpenStreamWrite(url); } catch (Exception e) {throw Err_.new_exc(e, "io", "open failed", "url", url.Raw());} return this; @@ -197,7 +197,7 @@ class Io_stream_wtr_file implements Io_stream_wtr { trg_bfr.Add_mid(bry, bgn, bgn + len); } public byte[] To_ary_and_clear() { - return trg_bfr == null ? Io_mgr.I.LoadFilBry(url) : trg_bfr.Xto_bry_and_clear(); + return trg_bfr == null ? Io_mgr.Instance.LoadFilBry(url) : trg_bfr.To_bry_and_clear(); } public void Flush() { if (trg_bfr == null) diff --git a/100_core/src_210_env/gplx/JarAdp_.java b/100_core/src_210_env/gplx/JarAdp_.java index d58be9f9c..e7a8d3adb 100644 --- a/100_core/src_210_env/gplx/JarAdp_.java +++ b/100_core/src_210_env/gplx/JarAdp_.java @@ -19,7 +19,7 @@ package gplx; public class JarAdp_ { public static DateAdp ModifiedTime_type(Class type) {if (type == null) throw Err_.new_null(); Io_url url = Url_type(type); - return Io_mgr.I.QueryFil(url).ModifiedTime(); + return Io_mgr.Instance.QueryFil(url).ModifiedTime(); } public static Io_url Url_type(Class type) {if (type == null) throw Err_.new_null(); String codeBase = type.getProtectionDomain().getCodeSource().getLocation().getPath(); diff --git a/100_core/src_210_env/gplx/ProcessAdp.java b/100_core/src_210_env/gplx/ProcessAdp.java index 9ecde72d9..eb33e810b 100644 --- a/100_core/src_210_env/gplx/ProcessAdp.java +++ b/100_core/src_210_env/gplx/ProcessAdp.java @@ -61,7 +61,7 @@ public class ProcessAdp implements GfoInvkAble, RlsAble { if (!args_fmtr.Fmt_null()) { Bry_bfr tmp_bfr = Bry_bfr.new_(); args_fmtr.Bld_bfr_many(tmp_bfr, args); - args_str = tmp_bfr.Xto_str_and_clear(); + args_str = tmp_bfr.To_str_and_clear(); } prog_dlg.Log_many(GRP_KEY, "run", "running process: ~{0} ~{1}", exe_url.Raw(), args_str); exit_code = Exit_init; @@ -158,7 +158,7 @@ public class ProcessAdp implements GfoInvkAble, RlsAble { elapsed = notify_checkpoint; notify_checkpoint += notify_interval; notify_fmtr.Bld_bfr_many(notify_bfr, exe_url.NameAndExt(), args_str, elapsed / 1000); - prog_dlg.Prog_none(GRP_KEY, "notify.prog", notify_bfr.Xto_str_and_clear()); + prog_dlg.Prog_none(GRP_KEY, "notify.prog", notify_bfr.To_str_and_clear()); } } if (thread_timeout == 0) break; @@ -179,7 +179,7 @@ public class ProcessAdp implements GfoInvkAble, RlsAble { } if (elapsed != notify_checkpoint) { notify_fmtr.Bld_bfr_many(notify_bfr, exe_url.NameAndExt(), args_str, elapsed / 1000); - if (prog_dlg != null) prog_dlg.Prog_none(GRP_KEY, "notify.prog", notify_bfr.Xto_str_and_clear()); + if (prog_dlg != null) prog_dlg.Prog_none(GRP_KEY, "notify.prog", notify_bfr.To_str_and_clear()); } return this; } @@ -241,7 +241,7 @@ public class ProcessAdp implements GfoInvkAble, RlsAble { exit_code = process.exitValue(); WhenEnd_run(); process.destroy(); - rslt_out = sb.Xto_str_and_clear(); + rslt_out = sb.To_str_and_clear(); } public void Process_term() { try { @@ -327,7 +327,7 @@ class Thread_ProcessAdp_sync extends Thread { String result = input_gobbler.Rslt() + "\n" + error_gobbler.Rslt(); process_adp.Process_post(result); } catch (Exception e) { // NOTE: warn; do not throw, else multiple errors if timidity not available; PAGE:fr.u:Pentatoniques_altérées/Gammes_avec_deux_notes_altérées DATE:2015-05-08 - Gfo_usr_dlg_.I.Warn_many("", "", "process.sync failed; cmd=~{0} args=~{1}", process_adp.Exe_url().Raw(), process_adp.Args_str()); + Gfo_usr_dlg_.Instance.Warn_many("", "", "process.sync failed; cmd=~{0} args=~{1}", process_adp.Exe_url().Raw(), process_adp.Args_str()); } finally {done = true;} } @@ -347,7 +347,7 @@ class StreamGobbler extends Thread { sb.Add(s); } stream.close(); - rslt = sb.Xto_str_and_clear(); + rslt = sb.To_str_and_clear(); } catch (Exception e) {throw Err_.new_exc(e, "io", "failed reading stream", "name", name);} } diff --git a/100_core/src_300_classXtn/gplx/BoolClassXtn.java b/100_core/src_300_classXtn/gplx/BoolClassXtn.java index 824144e54..6743111b6 100644 --- a/100_core/src_300_classXtn/gplx/BoolClassXtn.java +++ b/100_core/src_300_classXtn/gplx/BoolClassXtn.java @@ -37,5 +37,5 @@ public class BoolClassXtn extends ClassXtn_base implements ClassXtn { throw Err_.new_parse_type(boolean.class, raw); } @Override public Object XtoDb(Object obj) {return obj;} - public static final BoolClassXtn _ = new BoolClassXtn(); BoolClassXtn() {} // added to ClassXtnPool by default + public static final BoolClassXtn Instance = new BoolClassXtn(); BoolClassXtn() {} // added to ClassXtnPool by default } \ No newline at end of file diff --git a/100_core/src_300_classXtn/gplx/ByteClassXtn.java b/100_core/src_300_classXtn/gplx/ByteClassXtn.java index 1fd12de27..df360c59f 100644 --- a/100_core/src_300_classXtn/gplx/ByteClassXtn.java +++ b/100_core/src_300_classXtn/gplx/ByteClassXtn.java @@ -24,5 +24,5 @@ public class ByteClassXtn extends ClassXtn_base implements ClassXtn { public boolean Eq(Object lhs, Object rhs) {try {return Byte_.cast(lhs) == Byte_.cast(rhs);} catch (Exception e) {Err_.Noop(e); return false;}} @Override public Object ParseOrNull(String raw) {return raw == null ? (Object)null : Byte_.parse(raw);} @Override public Object XtoDb(Object obj) {return Byte_.cast(obj);} - public static final ByteClassXtn _ = new ByteClassXtn(); ByteClassXtn() {} // added to ClassXtnPool by default + public static final ByteClassXtn Instance = new ByteClassXtn(); ByteClassXtn() {} // added to ClassXtnPool by default } \ No newline at end of file diff --git a/100_core/src_300_classXtn/gplx/ClassXtnPool.java b/100_core/src_300_classXtn/gplx/ClassXtnPool.java index 3b40733c6..70fb0249c 100644 --- a/100_core/src_300_classXtn/gplx/ClassXtnPool.java +++ b/100_core/src_300_classXtn/gplx/ClassXtnPool.java @@ -21,19 +21,19 @@ public class ClassXtnPool extends Hash_adp_base { public void Add(ClassXtn typx) {Add_base(typx.Key(), typx);} public ClassXtn Get_by_or_fail(String key) {return (ClassXtn)Get_by_or_fail_base(key);} - public static final ClassXtnPool _ = new ClassXtnPool(); + public static final ClassXtnPool Instance = new ClassXtnPool(); public static final String Format_null = ""; public static ClassXtnPool new_() {return new ClassXtnPool();} ClassXtnPool() { - Add(ObjectClassXtn._); - Add(StringClassXtn._); - Add(IntClassXtn._); - Add(BoolClassXtn._); - Add(ByteClassXtn._); - Add(DateAdpClassXtn._); - Add(TimeSpanAdpClassXtn._); - Add(IoUrlClassXtn._); - Add(DecimalAdpClassXtn._); - Add(FloatClassXtn._); + Add(ObjectClassXtn.Instance); + Add(StringClassXtn.Instance); + Add(IntClassXtn.Instance); + Add(BoolClassXtn.Instance); + Add(ByteClassXtn.Instance); + Add(DateAdpClassXtn.Instance); + Add(TimeSpanAdpClassXtn.Instance); + Add(IoUrlClassXtn.Instance); + Add(DecimalAdpClassXtn.Instance); + Add(FloatClassXtn.Instance); } } diff --git a/100_core/src_300_classXtn/gplx/DateAdpClassXtn.java b/100_core/src_300_classXtn/gplx/DateAdpClassXtn.java index ad23d2019..af78d69c4 100644 --- a/100_core/src_300_classXtn/gplx/DateAdpClassXtn.java +++ b/100_core/src_300_classXtn/gplx/DateAdpClassXtn.java @@ -24,5 +24,5 @@ public class DateAdpClassXtn extends ClassXtn_base implements ClassXtn { @Override public Object ParseOrNull(String raw) {return DateAdp_.parse_gplx(raw);} @Override public Object XtoDb(Object obj) {return DateAdp_.cast(obj).XtoStr_gplx_long();} @Override public String XtoUi(Object obj, String fmt) {return DateAdp_.cast(obj).XtoStr_fmt(fmt);} - public static final DateAdpClassXtn _ = new DateAdpClassXtn(); DateAdpClassXtn() {} // added to ClassXtnPool by default + public static final DateAdpClassXtn Instance = new DateAdpClassXtn(); DateAdpClassXtn() {} // added to ClassXtnPool by default } diff --git a/100_core/src_300_classXtn/gplx/DateAdpClassXtn_tst.java b/100_core/src_300_classXtn/gplx/DateAdpClassXtn_tst.java index 2fe1efe22..2819da891 100644 --- a/100_core/src_300_classXtn/gplx/DateAdpClassXtn_tst.java +++ b/100_core/src_300_classXtn/gplx/DateAdpClassXtn_tst.java @@ -22,7 +22,7 @@ public class DateAdpClassXtn_tst { tst_XtoDb("20091115 220102.999", "2009-11-15 22:01:02.999"); } void tst_XtoDb(String val, String expdRaw) { - String actlRaw = (String)DateAdpClassXtn._.XtoDb(DateAdp_.parse_gplx(val)); + String actlRaw = (String)DateAdpClassXtn.Instance.XtoDb(DateAdp_.parse_gplx(val)); Tfds.Eq(expdRaw, actlRaw); } } diff --git a/100_core/src_300_classXtn/gplx/DecimalAdpClassXtn.java b/100_core/src_300_classXtn/gplx/DecimalAdpClassXtn.java index 602fd9657..bd3276d14 100644 --- a/100_core/src_300_classXtn/gplx/DecimalAdpClassXtn.java +++ b/100_core/src_300_classXtn/gplx/DecimalAdpClassXtn.java @@ -23,5 +23,5 @@ public class DecimalAdpClassXtn extends ClassXtn_base implements ClassXtn { public boolean Eq(Object lhs, Object rhs) {try {return Decimal_adp_.cast(lhs).Eq(Decimal_adp_.cast(rhs));} catch (Exception e) {Err_.Noop(e); return false;}} @Override public Object ParseOrNull(String raw) {return Decimal_adp_.parse(raw);} @Override public String XtoUi(Object obj, String fmt) {return Decimal_adp_.cast(obj).To_str();} - public static final DecimalAdpClassXtn _ = new DecimalAdpClassXtn(); DecimalAdpClassXtn() {} // added to ClassXtnPool by default + public static final DecimalAdpClassXtn Instance = new DecimalAdpClassXtn(); DecimalAdpClassXtn() {} // added to ClassXtnPool by default } diff --git a/100_core/src_300_classXtn/gplx/DoubleClassXtn.java b/100_core/src_300_classXtn/gplx/DoubleClassXtn.java index 92f48cd31..0fa9129d3 100644 --- a/100_core/src_300_classXtn/gplx/DoubleClassXtn.java +++ b/100_core/src_300_classXtn/gplx/DoubleClassXtn.java @@ -22,5 +22,5 @@ public class DoubleClassXtn extends ClassXtn_base implements ClassXtn { public Object DefaultValue() {return 0;} public boolean Eq(Object lhs, Object rhs) {try {return Double_.cast(lhs) == Double_.cast(rhs);} catch (Exception e) {Err_.Noop(e); return false;}} @Override public Object ParseOrNull(String raw) {return Double_.parse(raw);} - public static final DoubleClassXtn _ = new DoubleClassXtn(); DoubleClassXtn() {} // added to ClassXtnPool by default + public static final DoubleClassXtn Instance = new DoubleClassXtn(); DoubleClassXtn() {} // added to ClassXtnPool by default } \ No newline at end of file diff --git a/100_core/src_300_classXtn/gplx/FloatClassXtn.java b/100_core/src_300_classXtn/gplx/FloatClassXtn.java index a8716b30c..2d92523e6 100644 --- a/100_core/src_300_classXtn/gplx/FloatClassXtn.java +++ b/100_core/src_300_classXtn/gplx/FloatClassXtn.java @@ -22,5 +22,5 @@ public class FloatClassXtn extends ClassXtn_base implements ClassXtn { public Object DefaultValue() {return 0;} public boolean Eq(Object lhs, Object rhs) {try {return Float_.cast(lhs) == Float_.cast(rhs);} catch (Exception e) {Err_.Noop(e); return false;}} @Override public Object ParseOrNull(String raw) {return Float_.parse(raw);} - public static final FloatClassXtn _ = new FloatClassXtn(); FloatClassXtn() {} // added to ClassXtnPool by default + public static final FloatClassXtn Instance = new FloatClassXtn(); FloatClassXtn() {} // added to ClassXtnPool by default } \ No newline at end of file diff --git a/100_core/src_300_classXtn/gplx/IntClassXtn.java b/100_core/src_300_classXtn/gplx/IntClassXtn.java index 7e7a151cd..40a9d1ab4 100644 --- a/100_core/src_300_classXtn/gplx/IntClassXtn.java +++ b/100_core/src_300_classXtn/gplx/IntClassXtn.java @@ -24,5 +24,5 @@ public class IntClassXtn extends ClassXtn_base implements ClassXtn { public boolean Eq(Object lhs, Object rhs) {try {return Int_.cast(lhs) == Int_.cast(rhs);} catch (Exception e) {Err_.Noop(e); return false;}} @Override public Object XtoDb(Object obj) {return Int_.cast(obj);} // necessary for enums - public static final IntClassXtn _ = new IntClassXtn(); IntClassXtn() {} // added to ClassXtnPool by default + public static final IntClassXtn Instance = new IntClassXtn(); IntClassXtn() {} // added to ClassXtnPool by default } diff --git a/100_core/src_300_classXtn/gplx/IoUrlClassXtn.java b/100_core/src_300_classXtn/gplx/IoUrlClassXtn.java index 267c14eaa..d01f3c7bf 100644 --- a/100_core/src_300_classXtn/gplx/IoUrlClassXtn.java +++ b/100_core/src_300_classXtn/gplx/IoUrlClassXtn.java @@ -25,5 +25,5 @@ public class IoUrlClassXtn extends ClassXtn_base implements ClassXtn { @Override public String XtoUi(Object obj, String fmt) {return Io_url_.cast(obj).Raw();} @Override public boolean MatchesClass(Object obj) {return Io_url_.as_(obj) != null;} public boolean Eq(Object lhs, Object rhs) {try {return Io_url_.cast(lhs).Eq(Io_url_.cast(rhs));} catch (Exception e) {Err_.Noop(e); return false;}} - public static final IoUrlClassXtn _ = new IoUrlClassXtn(); IoUrlClassXtn() {} // added to ClassXtnPool by default + public static final IoUrlClassXtn Instance = new IoUrlClassXtn(); IoUrlClassXtn() {} // added to ClassXtnPool by default } diff --git a/100_core/src_300_classXtn/gplx/LongClassXtn.java b/100_core/src_300_classXtn/gplx/LongClassXtn.java index 54822f534..82c6d7ab8 100644 --- a/100_core/src_300_classXtn/gplx/LongClassXtn.java +++ b/100_core/src_300_classXtn/gplx/LongClassXtn.java @@ -23,5 +23,5 @@ public class LongClassXtn extends ClassXtn_base implements ClassXtn { public boolean Eq(Object lhs, Object rhs) {try {return Long_.cast(lhs) == Long_.cast(rhs);} catch (Exception e) {Err_.Noop(e); return false;}} @Override public Object ParseOrNull(String raw) {return raw == null ? (Object)null : Long_.parse(raw);} @Override public Object XtoDb(Object obj) {return Long_.cast(obj);} // necessary for enums - public static final LongClassXtn _ = new LongClassXtn(); LongClassXtn() {} // added to ClassXtnPool by default + public static final LongClassXtn Instance = new LongClassXtn(); LongClassXtn() {} // added to ClassXtnPool by default } \ No newline at end of file diff --git a/100_core/src_300_classXtn/gplx/ObjectClassXtn.java b/100_core/src_300_classXtn/gplx/ObjectClassXtn.java index 252e69876..408b4d9cd 100644 --- a/100_core/src_300_classXtn/gplx/ObjectClassXtn.java +++ b/100_core/src_300_classXtn/gplx/ObjectClassXtn.java @@ -23,5 +23,5 @@ public class ObjectClassXtn extends ClassXtn_base implements ClassXtn { @Override public Object ParseOrNull(String raw) {throw Err_.new_unimplemented();} @Override public Object XtoDb(Object obj) {throw Err_.new_unimplemented();} public boolean Eq(Object lhs, Object rhs) {return lhs == rhs;} - public static final ObjectClassXtn _ = new ObjectClassXtn(); ObjectClassXtn() {} // added to ClassXtnPool by default + public static final ObjectClassXtn Instance = new ObjectClassXtn(); ObjectClassXtn() {} // added to ClassXtnPool by default } diff --git a/100_core/src_300_classXtn/gplx/StringClassXtn.java b/100_core/src_300_classXtn/gplx/StringClassXtn.java index 78434dd44..c6acbd6ee 100644 --- a/100_core/src_300_classXtn/gplx/StringClassXtn.java +++ b/100_core/src_300_classXtn/gplx/StringClassXtn.java @@ -24,5 +24,5 @@ public class StringClassXtn extends ClassXtn_base implements ClassXtn { @Override public Object ParseOrNull(String raw) {return raw;} @Override public String XtoUi(Object obj, String fmt) {return String_.as_(obj);} public boolean Eq(Object lhs, Object rhs) {try {return String_.Eq(String_.cast(lhs), String_.cast(rhs));} catch (Exception e) {Err_.Noop(e); return false;}} - public static final StringClassXtn _ = new StringClassXtn(); StringClassXtn() {} // added to ClassXtnPool by default + public static final StringClassXtn Instance = new StringClassXtn(); StringClassXtn() {} // added to ClassXtnPool by default } \ No newline at end of file diff --git a/100_core/src_300_classXtn/gplx/TimeSpanAdpClassXtn.java b/100_core/src_300_classXtn/gplx/TimeSpanAdpClassXtn.java index 355c2cddf..f82f4b8d0 100644 --- a/100_core/src_300_classXtn/gplx/TimeSpanAdpClassXtn.java +++ b/100_core/src_300_classXtn/gplx/TimeSpanAdpClassXtn.java @@ -24,5 +24,5 @@ public class TimeSpanAdpClassXtn extends ClassXtn_base implements ClassXtn { @Override public Object XtoDb(Object obj) {return TimeSpanAdp_.cast(obj).TotalSecs();} @Override public String XtoUi(Object obj, String fmt) {return TimeSpanAdp_.cast(obj).To_str(fmt);} public boolean Eq(Object lhs, Object rhs) {try {return TimeSpanAdp_.cast(lhs).Eq(rhs);} catch (Exception e) {Err_.Noop(e); return false;}} - public static final TimeSpanAdpClassXtn _ = new TimeSpanAdpClassXtn(); TimeSpanAdpClassXtn() {} // added to ClassXtnPool by default + public static final TimeSpanAdpClassXtn Instance = new TimeSpanAdpClassXtn(); TimeSpanAdpClassXtn() {} // added to ClassXtnPool by default } \ No newline at end of file diff --git a/100_core/src_310_gfoNde/gplx/GfoFld.java b/100_core/src_310_gfoNde/gplx/GfoFld.java index 74c808609..0071d3772 100644 --- a/100_core/src_310_gfoNde/gplx/GfoFld.java +++ b/100_core/src_310_gfoNde/gplx/GfoFld.java @@ -19,7 +19,7 @@ package gplx; public class GfoFld { public String Key() {return key;} private String key; public ClassXtn Type() {return type;} ClassXtn type; - public static final GfoFld Null = new_(String_.Null_mark, ObjectClassXtn._); + public static final GfoFld Null = new_(String_.Null_mark, ObjectClassXtn.Instance); public static GfoFld new_(String key, ClassXtn c) { GfoFld rv = new GfoFld(); rv.key = key; rv.type = c; diff --git a/100_core/src_310_gfoNde/gplx/GfoFldList_.java b/100_core/src_310_gfoNde/gplx/GfoFldList_.java index 82632ffc8..7dd762a2d 100644 --- a/100_core/src_310_gfoNde/gplx/GfoFldList_.java +++ b/100_core/src_310_gfoNde/gplx/GfoFldList_.java @@ -23,7 +23,7 @@ public class GfoFldList_ { public static GfoFldList str_(String... names) { GfoFldList rv = new GfoFldList_base(); for (String name : names) - rv.Add(name, StringClassXtn._); + rv.Add(name, StringClassXtn.Instance); return rv; } } @@ -50,7 +50,7 @@ class GfoFldList_base implements GfoFldList { } return sb.To_str(); } - Ordered_hash hash = Ordered_hash_.new_(); Hash_adp idxs = Hash_adp_.new_(); // PERF: idxs used for Idx_of; need to recalc if Del ever added + Ordered_hash hash = Ordered_hash_.New(); Hash_adp idxs = Hash_adp_.new_(); // PERF: idxs used for Idx_of; need to recalc if Del ever added } class GfoFldList_null implements GfoFldList { public int Count() {return 0;} diff --git a/100_core/src_310_gfoNde/gplx/GfoNdeFxt.java b/100_core/src_310_gfoNde/gplx/GfoNdeFxt.java index 819db4e41..159baf59c 100644 --- a/100_core/src_310_gfoNde/gplx/GfoNdeFxt.java +++ b/100_core/src_310_gfoNde/gplx/GfoNdeFxt.java @@ -29,7 +29,7 @@ public class GfoNdeFxt { static GfoFldList GfoFldList_by_count_(int count) { GfoFldList rv = GfoFldList_.new_(); for (int i = 0; i < count; i++) - rv.Add("fld" + Int_.Xto_str(i), StringClassXtn._); + rv.Add("fld" + Int_.To_str(i), StringClassXtn.Instance); return rv; } } diff --git a/100_core/src_310_gfoNde/gplx/GfoNde_.java b/100_core/src_310_gfoNde/gplx/GfoNde_.java index 3cffa7a76..cd2641a05 100644 --- a/100_core/src_310_gfoNde/gplx/GfoNde_.java +++ b/100_core/src_310_gfoNde/gplx/GfoNde_.java @@ -31,7 +31,7 @@ public class GfoNde_ { GfoFldList flds = GfoFldList_.new_(); int fldLen = rdr.FieldCount(); for (int i = 0; i < fldLen; i++) - flds.Add(rdr.KeyAt(i), ObjectClassXtn._); + flds.Add(rdr.KeyAt(i), ObjectClassXtn.Instance); while (rdr.MoveNextPeer()) { Object[] valAry = new Object[fldLen]; for (int i = 0; i < fldLen; i++) diff --git a/100_core/src_311_gfoObj/gplx/GfoEvMgr.java b/100_core/src_311_gfoObj/gplx/GfoEvMgr.java index 6b3be9df8..a67a1a55d 100644 --- a/100_core/src_311_gfoObj/gplx/GfoEvMgr.java +++ b/100_core/src_311_gfoObj/gplx/GfoEvMgr.java @@ -20,7 +20,7 @@ import gplx.lists.*; public class GfoEvMgr { @gplx.Internal protected void AddSub(GfoEvMgrOwner pub, String pubEvt, GfoEvObj sub, String subPrc) { GfoEvLnk lnk = new GfoEvLnk(pub, pubEvt, sub, subPrc); - if (subsRegy == null) subsRegy = Ordered_hash_.new_(); + if (subsRegy == null) subsRegy = Ordered_hash_.New(); AddInList(subsRegy, pubEvt, lnk); sub.EvMgr().AddPub(pubEvt, lnk); } @@ -37,7 +37,7 @@ public class GfoEvMgr { list.Add(lnk); } @gplx.Internal protected void AddPub(String pubEvt, GfoEvLnk lnk) { - if (pubsRegy == null) pubsRegy = Ordered_hash_.new_(); + if (pubsRegy == null) pubsRegy = Ordered_hash_.New(); AddInList(pubsRegy, pubEvt, lnk); } @gplx.Internal protected void Pub(GfsCtx ctx, String evt, GfoMsg m) { diff --git a/100_core/src_311_gfoObj/gplx/GfoInvkAbleCmd.java b/100_core/src_311_gfoObj/gplx/GfoInvkAbleCmd.java index 939da6597..313e495be 100644 --- a/100_core/src_311_gfoObj/gplx/GfoInvkAbleCmd.java +++ b/100_core/src_311_gfoObj/gplx/GfoInvkAbleCmd.java @@ -22,7 +22,7 @@ public class GfoInvkAbleCmd { public String Cmd() {return cmd;} private String cmd; public Object Arg() {return arg;} private Object arg; public Object Invk() { - return invkAble.Invk(GfsCtx._, 0, cmd, m); + return invkAble.Invk(GfsCtx.Instance, 0, cmd, m); } public static final GfoInvkAbleCmd Null = new GfoInvkAbleCmd(); public static GfoInvkAbleCmd new_(GfoInvkAble invkAble, String cmd) {return arg_(invkAble, cmd, null);} diff --git a/100_core/src_311_gfoObj/gplx/GfoInvkAble_.java b/100_core/src_311_gfoObj/gplx/GfoInvkAble_.java index df2f24112..b72dcfce1 100644 --- a/100_core/src_311_gfoObj/gplx/GfoInvkAble_.java +++ b/100_core/src_311_gfoObj/gplx/GfoInvkAble_.java @@ -26,7 +26,7 @@ public class GfoInvkAble_ { public static Object InvkCmd(GfoInvkAble invk, String k) {return InvkCmd_msg(invk, k, GfoMsg_.Null);} public static Object InvkCmd_val(GfoInvkAble invk, String k, Object v) {return InvkCmd_msg(invk, k, GfoMsg_.new_cast_(k).Add("v", v));} public static Object InvkCmd_msg(GfoInvkAble invk, String k, GfoMsg m) { - Object rv = invk.Invk(GfsCtx._, 0, k, m); + Object rv = invk.Invk(GfsCtx.Instance, 0, k, m); if (rv == GfoInvkAble_.Rv_unhandled) throw Err_.new_wo_type("invkable did not handle message", "key", k); return rv; } diff --git a/100_core/src_311_gfoObj/gplx/GfoInvkXtoStr.java b/100_core/src_311_gfoObj/gplx/GfoInvkXtoStr.java index e1985edf5..924aa6242 100644 --- a/100_core/src_311_gfoObj/gplx/GfoInvkXtoStr.java +++ b/100_core/src_311_gfoObj/gplx/GfoInvkXtoStr.java @@ -21,12 +21,12 @@ public class GfoInvkXtoStr { GfsCtx ctx = GfsCtx.wtr_(); GfoMsg m = GfoMsg_.rdr_(k); invk.Invk(ctx, 0, k, m); - String invkKey = GfsCore._.FetchKey(invk); + String invkKey = GfsCore.Instance.FetchKey(invk); GfoMsg root = GfoMsg_.new_cast_(invkKey); root.Subs_add(m); return root; } - public static GfoMsg WriteMsg(GfoInvkAble invk, String k, Object... ary) {return WriteMsg(GfsCore._.FetchKey(invk), invk, k, ary);} + public static GfoMsg WriteMsg(GfoInvkAble invk, String k, Object... ary) {return WriteMsg(GfsCore.Instance.FetchKey(invk), invk, k, ary);} public static GfoMsg WriteMsg(String invkKey, GfoInvkAble invk, String k, Object... ary) { GfsCtx ctx = GfsCtx.wtr_(); GfoMsg m = GfoMsg_.wtr_(); diff --git a/100_core/src_311_gfoObj/gplx/GfoMsg_.java b/100_core/src_311_gfoObj/gplx/GfoMsg_.java index b9fd9d90a..1c267b5bb 100644 --- a/100_core/src_311_gfoObj/gplx/GfoMsg_.java +++ b/100_core/src_311_gfoObj/gplx/GfoMsg_.java @@ -223,7 +223,7 @@ class GfoMsg_base implements GfoMsg { public String To_str() { String_bldr sb = String_bldr_.new_(); To_str(sb, new XtoStrWkr_gplx(), this); - return sb.Xto_str_and_clear(); + return sb.To_str_and_clear(); } void To_str(String_bldr sb, XtoStrWkr wkr, GfoMsg m) { sb.Add(m.Key()); @@ -261,8 +261,8 @@ class XtoStrWkr_gplx implements XtoStrWkr { Class type = Type_adp_.ClassOf_obj(o); String rv = null; if (type == String.class) rv = String_.cast(o); - else if (Int_.TypeMatch(type)) return Int_.Xto_str(Int_.cast(o)); - else if (Type_adp_.Eq(type, Bool_.Cls_ref_type)) return Yn.Xto_str(Bool_.cast(o)); + else if (Int_.TypeMatch(type)) return Int_.To_str(Int_.cast(o)); + else if (Type_adp_.Eq(type, Bool_.Cls_ref_type)) return Yn.To_str(Bool_.cast(o)); else if (type == DateAdp.class) return DateAdp_.cast(o).XtoStr_gplx(); else rv = Object_.Xto_str_strict_or_empty(o); return String_.Replace(rv, "'", "''"); diff --git a/100_core/src_311_gfoObj/gplx/GfoMsg_tst.java b/100_core/src_311_gfoObj/gplx/GfoMsg_tst.java index aef741b74..97fe90abf 100644 --- a/100_core/src_311_gfoObj/gplx/GfoMsg_tst.java +++ b/100_core/src_311_gfoObj/gplx/GfoMsg_tst.java @@ -19,7 +19,7 @@ package gplx; import org.junit.*; public class GfoMsg_tst { @Before public void setup() { - GfsCore._.AddObj(new Mok(), "Mok"); + GfsCore.Instance.AddObj(new Mok(), "Mok"); } @Test public void Write1() { GfoMsg m = GfoMsg_.root_leafArgs_(String_.Ary("a", "b"), KeyVal_.new_("int0", 1)); diff --git a/100_core/src_311_gfoObj/gplx/GfoTemplateFactory.java b/100_core/src_311_gfoObj/gplx/GfoTemplateFactory.java index d484a20c6..8b1db8fda 100644 --- a/100_core/src_311_gfoObj/gplx/GfoTemplateFactory.java +++ b/100_core/src_311_gfoObj/gplx/GfoTemplateFactory.java @@ -27,6 +27,6 @@ public class GfoTemplateFactory implements GfoInvkAble { Object o = hash.Get_by(k); return o == null ? GfoInvkAble_.Rv_unhandled : o; } - public static final GfoTemplateFactory _ = new GfoTemplateFactory(); GfoTemplateFactory() {} + public static final GfoTemplateFactory Instance = new GfoTemplateFactory(); GfoTemplateFactory() {} Hash_adp hash = Hash_adp_.new_(); } diff --git a/100_core/src_330_store/gplx/stores/DataRdr_base.java b/100_core/src_330_store/gplx/stores/DataRdr_base.java index 703b16c88..740ae823d 100644 --- a/100_core/src_330_store/gplx/stores/DataRdr_base.java +++ b/100_core/src_330_store/gplx/stores/DataRdr_base.java @@ -78,7 +78,7 @@ public abstract class DataRdr_base implements SrlMgr { } @gplx.Virtual public boolean ReadBool(String key) { Object val = Read(key); - try {return (parse) ? Bool_.cast(BoolClassXtn._.ParseOrNull(String_.as_(val))) : Bool_.cast(val);} + try {return (parse) ? Bool_.cast(BoolClassXtn.Instance.ParseOrNull(String_.as_(val))) : Bool_.cast(val);} catch (Exception exc) {throw Err_dataRdr_ReadFailed_err(boolean.class, key, val, exc);} } @gplx.Virtual public boolean ReadBoolOr(String key, boolean or) { @@ -206,9 +206,9 @@ public abstract class DataRdr_base implements SrlMgr { return Err_.new_("DataRdr_ReadFailed", "failed to read data", "key", key, "val", val, "type", type, "innerMsg", innerMsg).Trace_ignore_add_1_(); } static void Err_dataRdr_ReadFailed_useOr(Class type, String key, Object val, Object or) { - UsrDlg_._.Warn(UsrMsg.new_("failed to read data; substituting default").Add("key", key).Add("val", val).Add("default", or).Add("type", type)); + UsrDlg_.Instance.Warn(UsrMsg.new_("failed to read data; substituting default").Add("key", key).Add("val", val).Add("default", or).Add("type", type)); } static void Err_dataRdr_ReadFailed_useOr(Exception exc, Class type, String key, Object val, Object or) { - UsrDlg_._.Warn(UsrMsg.new_("failed to read data; substituting default").Add("key", key).Add("val", val).Add("default", or).Add("type", type)); + UsrDlg_.Instance.Warn(UsrMsg.new_("failed to read data; substituting default").Add("key", key).Add("val", val).Add("default", or).Add("type", type)); } } diff --git a/100_core/src_330_store/gplx/stores/GfoNdeRdr_.java b/100_core/src_330_store/gplx/stores/GfoNdeRdr_.java index a952a8070..37ca13e46 100644 --- a/100_core/src_330_store/gplx/stores/GfoNdeRdr_.java +++ b/100_core/src_330_store/gplx/stores/GfoNdeRdr_.java @@ -23,7 +23,7 @@ public class GfoNdeRdr_ { Object[] vals = new Object[pairsLen]; for (int i = 0; i < pairsLen; i++) { KeyVal pair = kvList.GetAt(i); - flds.Add(pair.Key(), StringClassXtn._); + flds.Add(pair.Key(), StringClassXtn.Instance); vals[i] = pair.Val_to_str_or_empty(); } GfoNde nde = GfoNde_.vals_(flds, vals); diff --git a/100_core/src_330_store/gplx/stores/xmls/XmlDataRdr_.java b/100_core/src_330_store/gplx/stores/xmls/XmlDataRdr_.java index 4d5b82a93..26c45f3af 100644 --- a/100_core/src_330_store/gplx/stores/xmls/XmlDataRdr_.java +++ b/100_core/src_330_store/gplx/stores/xmls/XmlDataRdr_.java @@ -18,7 +18,7 @@ along with this program. If not, see . package gplx.stores.xmls; import gplx.*; import gplx.stores.*; public class XmlDataRdr_ { public static XmlDataRdr file_(Io_url url) { - String text = Io_mgr.I.LoadFilStr(url); + String text = Io_mgr.Instance.LoadFilStr(url); return new XmlDataRdr(text); } public static XmlDataRdr text_(String text) {return new XmlDataRdr(text);} diff --git a/100_core/src_340_dsv/gplx/stores/dsvs/DsvDataRdr_.java b/100_core/src_340_dsv/gplx/stores/dsvs/DsvDataRdr_.java index 9d5aaa0b0..83c2cf0a7 100644 --- a/100_core/src_340_dsv/gplx/stores/dsvs/DsvDataRdr_.java +++ b/100_core/src_340_dsv/gplx/stores/dsvs/DsvDataRdr_.java @@ -72,7 +72,7 @@ class DsvParser { qteOn = false; } else - throw Err_.new_wo_type("invalid quote in quoted field; quote must be followed by quote, fieldSpr, or recordSpr", "sym", strm.Cur(), "text", strm.Xto_str_by_pos(strm.Pos() - 10, strm.Pos() + 10)); + throw Err_.new_wo_type("invalid quote in quoted field; quote must be followed by quote, fieldSpr, or recordSpr", "sym", strm.Cur(), "text", strm.To_str_by_pos(strm.Pos() - 10, strm.Pos() + 10)); } else { // regular char; append and continue sb.Add(strm.Cur()); @@ -80,7 +80,7 @@ class DsvParser { } } void ProcessFld(CharStream strm) { - String val = sb.Xto_str_and_clear(); + String val = sb.To_str_and_clear(); if (cmdSeqOn) { cmdSeqOn = false; if (String_.Eq(val, sym.CmdDlm()) && qteOn) { // 2 cmdDlms in a row; cmdSeq encountered; next fld must be cmdName @@ -177,7 +177,7 @@ class DsvTblBldr { if (stage == Stage_Row) CreateTbl(); // CreateTbl if ROW is in progress; NOTE: exclude HDR, as first HDR would have called CreateTbl fldTypes.Clear(); for (Object fldTypeObj : tkns) { - ClassXtn type = ClassXtnPool._.Get_by_or_fail((String)fldTypeObj); + ClassXtn type = ClassXtnPool.Instance.Get_by_or_fail((String)fldTypeObj); fldTypes.Add(type); } layout.HeaderList().Add_LeafTypes(); @@ -228,13 +228,13 @@ class DsvTblBldr { int fldNamesCount = fldNames.Count(), fldTypesCount = fldTypes.Count(); if (fldNamesCount == 0 && fldTypesCount == 0) { // csv tbls where no names or types, just values for (int i = 0; i < valCount; i++) - tbl.SubFlds().Add("fld" + i, StringClassXtn._); + tbl.SubFlds().Add("fld" + i, StringClassXtn.Instance); } else { // all else, where either names or types is defined int maxCount = fldNamesCount > fldTypesCount ? fldNamesCount : fldTypesCount; for (int i = 0; i < maxCount; i++) { String name = i < fldNamesCount ? (String)fldNames.Get_at(i) : "fld" + i; - ClassXtn typx = i < fldTypesCount ? (ClassXtn)fldTypes.Get_at(i) : StringClassXtn._; + ClassXtn typx = i < fldTypesCount ? (ClassXtn)fldTypes.Get_at(i) : StringClassXtn.Instance; tbl.SubFlds().Add(name, typx); } } diff --git a/100_core/src_340_dsv/gplx/stores/dsvs/DsvDataRdr_csv_dat_tst.java b/100_core/src_340_dsv/gplx/stores/dsvs/DsvDataRdr_csv_dat_tst.java index b847ec2d1..6c999178c 100644 --- a/100_core/src_340_dsv/gplx/stores/dsvs/DsvDataRdr_csv_dat_tst.java +++ b/100_core/src_340_dsv/gplx/stores/dsvs/DsvDataRdr_csv_dat_tst.java @@ -137,9 +137,9 @@ public class DsvDataRdr_csv_dat_tst { fx.tst_DatCsv(fx.ary_("0", "me")); } // @Test public void Hdr_Manual() { -// fx.Parser_(DsvParser.csv_(false, GfoFldList_.new_().Add("id", IntClassXtn._).Add("name", StringClassXtn._), true)); +// fx.Parser_(DsvParser.csv_(false, GfoFldList_.new_().Add("id", IntClassXtn.Instance).Add("name", StringClassXtn.Instance), true)); // fx.run_parse_("0,me"); -// fx.tst_DatCsv(fx.ary_(0, "me")); // NOTE: testing auto-parsing of id to int b/c id fld is IntClassXtn._; +// fx.tst_DatCsv(fx.ary_(0, "me")); // NOTE: testing auto-parsing of id to int b/c id fld is IntClassXtn.Instance; // } } class DsvDataRdr_fxt { @@ -164,7 +164,7 @@ class DsvDataRdr_fxt { for (int i = 0; i < flds.Count(); i++) { GfoFld fld = flds.Get_at(i); sb.Add(fld.Key()).Add(",").Add(fld.Type().Key()); - list.Add(sb.Xto_str_and_clear()); + list.Add(sb.To_str_and_clear()); } } public DsvDataRdr_fxt tst_Tbls(String... expdNames) { @@ -195,7 +195,7 @@ class DsvDataRdr_fxt { if (j != 0) sb.Add("~"); sb.Add_obj(Object_.Xto_str_strict_or_null_mark(row.ReadAt(j))); } - expdList.Add(sb.Xto_str_and_clear()); + expdList.Add(sb.To_str_and_clear()); } for (Object[] expdRow : expdRows) { if (expdRow == null) { @@ -206,7 +206,7 @@ class DsvDataRdr_fxt { if (j != 0) sb.Add("~"); sb.Add_obj(Object_.Xto_str_strict_or_null_mark(expdRow[j])); } - actlList.Add(sb.Xto_str_and_clear()); + actlList.Add(sb.To_str_and_clear()); } Tfds.Eq_list(expdList, actlList); return this; diff --git a/100_core/src_340_dsv/gplx/stores/dsvs/DsvDataRdr_dsv_hdr_tst.java b/100_core/src_340_dsv/gplx/stores/dsvs/DsvDataRdr_dsv_hdr_tst.java index 3c16fe6de..94bdaf66a 100644 --- a/100_core/src_340_dsv/gplx/stores/dsvs/DsvDataRdr_dsv_hdr_tst.java +++ b/100_core/src_340_dsv/gplx/stores/dsvs/DsvDataRdr_dsv_hdr_tst.java @@ -38,7 +38,7 @@ public class DsvDataRdr_dsv_hdr_tst { , "0,me" , "1,you" ); - fx.tst_Flds(0, GfoFldList_.new_().Add("fld0", IntClassXtn._).Add("fld1", StringClassXtn._)); + fx.tst_Flds(0, GfoFldList_.new_().Add("fld0", IntClassXtn.Instance).Add("fld1", StringClassXtn.Instance)); fx.tst_Dat(0 , fx.ary_(0, "me") , fx.ary_(1, "you") @@ -51,7 +51,7 @@ public class DsvDataRdr_dsv_hdr_tst { , "0,me" , "1,you" ); - fx.tst_Flds(0, GfoFldList_.new_().Add("id", IntClassXtn._).Add("name", StringClassXtn._)); + fx.tst_Flds(0, GfoFldList_.new_().Add("id", IntClassXtn.Instance).Add("name", StringClassXtn.Instance)); fx.tst_Dat(0 , fx.ary_(0, "me") , fx.ary_(1, "you") diff --git a/100_core/src_340_dsv/gplx/stores/dsvs/DsvDataRdr_dsv_misc_tst.java b/100_core/src_340_dsv/gplx/stores/dsvs/DsvDataRdr_dsv_misc_tst.java index 680827565..e8dabe8df 100644 --- a/100_core/src_340_dsv/gplx/stores/dsvs/DsvDataRdr_dsv_misc_tst.java +++ b/100_core/src_340_dsv/gplx/stores/dsvs/DsvDataRdr_dsv_misc_tst.java @@ -52,7 +52,7 @@ public class DsvDataRdr_dsv_misc_tst { , ",val1" ); fx.tst_Tbls(DsvTblBldr.NullTblName); - fx.tst_Flds(0, GfoFldList_.new_().Add("fld0", IntClassXtn._).Add("fld1", StringClassXtn._)); + fx.tst_Flds(0, GfoFldList_.new_().Add("fld0", IntClassXtn.Instance).Add("fld1", StringClassXtn.Instance)); fx.tst_Dat(0, fx.ary_(null, "val1")); } @Test public void Null_String() { @@ -61,7 +61,7 @@ public class DsvDataRdr_dsv_misc_tst { , ",val1" ); fx.tst_Tbls(DsvTblBldr.NullTblName); - fx.tst_Flds(0, GfoFldList_.new_().Add("fld0", StringClassXtn._).Add("fld1", StringClassXtn._)); + fx.tst_Flds(0, GfoFldList_.new_().Add("fld0", StringClassXtn.Instance).Add("fld1", StringClassXtn.Instance)); fx.tst_Dat(0, fx.ary_(null, "val1")); } @Test public void EmptyString() { @@ -70,7 +70,7 @@ public class DsvDataRdr_dsv_misc_tst { , "\"\",val1" ); fx.tst_Tbls(DsvTblBldr.NullTblName); - fx.tst_Flds(0, GfoFldList_.new_().Add("fld0", StringClassXtn._).Add("fld1", StringClassXtn._)); + fx.tst_Flds(0, GfoFldList_.new_().Add("fld0", StringClassXtn.Instance).Add("fld1", StringClassXtn.Instance)); fx.tst_Dat(0, fx.ary_("", "val1")); } } diff --git a/100_core/src_340_dsv/gplx/stores/dsvs/DsvDataWtr_csv_tst.java b/100_core/src_340_dsv/gplx/stores/dsvs/DsvDataWtr_csv_tst.java index 1967e6e42..d8ed53ad3 100644 --- a/100_core/src_340_dsv/gplx/stores/dsvs/DsvDataWtr_csv_tst.java +++ b/100_core/src_340_dsv/gplx/stores/dsvs/DsvDataWtr_csv_tst.java @@ -75,7 +75,7 @@ public class DsvDataWtr_csv_tst { } @Test public void Hdr_Flds() { wtr = DsvDataWtr_.csv_hdr_(); - GfoFldList flds = GfoFldList_.new_().Add("id", StringClassXtn._).Add("name", StringClassXtn._); + GfoFldList flds = GfoFldList_.new_().Add("id", StringClassXtn.Instance).Add("name", StringClassXtn.Instance); root = fx_nde.csv_hdr_(flds); this.AddCsvRow(root, "0", "me"); expd = String_.Concat_lines_crlf ( "id,name" diff --git a/100_core/src_400_gfs/gplx/GfsCore.java b/100_core/src_400_gfs/gplx/GfsCore.java index 15dbb7826..76396278f 100644 --- a/100_core/src_400_gfs/gplx/GfsCore.java +++ b/100_core/src_400_gfs/gplx/GfsCore.java @@ -28,7 +28,7 @@ public class GfsCore implements GfoInvkAble { public void AddDeep(GfoInvkAble invk, String... ary) { GfoInvkCmdMgrOwner cur = (GfoInvkCmdMgrOwner)((GfsRegyItm)root.Get_by(ary[0])).InvkAble(); for (int i = 1; i < ary.length - 1; i++) - cur = (GfoInvkCmdMgrOwner)cur.InvkMgr().Invk(GfsCtx._, 0, ary[i], GfoMsg_.Null, cur); + cur = (GfoInvkCmdMgrOwner)cur.InvkMgr().Invk(GfsCtx.Instance, 0, ary[i], GfoMsg_.Null, cur); cur.InvkMgr().Add_cmd(ary[ary.length - 1], invk); } public String FetchKey(GfoInvkAble invk) {return root.FetchByType(invk).Key();} @@ -43,21 +43,21 @@ public class GfsCore implements GfoInvkAble { return rv; } public void ExecRegy(String key) { - GfoRegyItm itm = GfoRegy._.FetchOrNull(key); - if (itm == null) {UsrDlg_._.Warn(UsrMsg.new_("could not find script for key").Add("key", key)); return;} + GfoRegyItm itm = GfoRegy.Instance.FetchOrNull(key); + if (itm == null) {UsrDlg_.Instance.Warn(UsrMsg.new_("could not find script for key").Add("key", key)); return;} Io_url url = itm.Url(); - if (!Io_mgr.I.ExistsFil(url)) { - UsrDlg_._.Warn(UsrMsg.new_("script url does not exist").Add("key", key).Add("url", url)); + if (!Io_mgr.Instance.ExistsFil(url)) { + UsrDlg_.Instance.Warn(UsrMsg.new_("script url does not exist").Add("key", key).Add("url", url)); return; } - this.ExecText(Io_mgr.I.LoadFilStr(url)); + this.ExecText(Io_mgr.Instance.LoadFilStr(url)); } - public Object ExecFile_ignoreMissing(Io_url url) {if (!Io_mgr.I.ExistsFil(url)) return null; return ExecText(Io_mgr.I.LoadFilStr(url));} - public Object ExecFile(Io_url url) {return ExecText(Io_mgr.I.LoadFilStr(url));} + public Object ExecFile_ignoreMissing(Io_url url) {if (!Io_mgr.Instance.ExistsFil(url)) return null; return ExecText(Io_mgr.Instance.LoadFilStr(url));} + public Object ExecFile(Io_url url) {return ExecText(Io_mgr.Instance.LoadFilStr(url));} public Object ExecFile_ignoreMissing(GfoInvkAble root, Io_url url) { - if (!Io_mgr.I.ExistsFil(url)) return null; + if (!Io_mgr.Instance.ExistsFil(url)) return null; if (msgParser == null) throw Err_.new_wo_type("msgParser is null"); - return Exec_bry(Io_mgr.I.LoadFilBry(url), root); + return Exec_bry(Io_mgr.Instance.LoadFilBry(url), root); } public Object Exec_bry(byte[] bry) {return Exec_bry(bry, root);} public Object Exec_bry(byte[] bry, GfoInvkAble root) { @@ -84,13 +84,13 @@ public class GfsCore implements GfoInvkAble { else return GfoInvkAble_.Rv_unhandled; // return this; } public static final String Invk_ExecFil = "ExecFil"; - public static final GfsCore _ = new GfsCore(); + public static final GfsCore Instance = new GfsCore(); @gplx.Internal protected static GfsCore new_() {return new GfsCore();} } class GfsCore_ { public static final String Arg_primitive = "v"; public static Object Exec(GfsCtx ctx, GfoInvkAble owner_invk, GfoMsg owner_msg, Object owner_primitive, int depth) { - if (owner_msg.Args_count() == 0 && owner_msg.Subs_count() == 0 && String_.Eq(owner_msg.Key(), "")) {UsrDlg_._.Warn("empty msg"); return GfoInvkAble_.Rv_unhandled;} + if (owner_msg.Args_count() == 0 && owner_msg.Subs_count() == 0 && String_.Eq(owner_msg.Key(), "")) {UsrDlg_.Instance.Warn("empty msg"); return GfoInvkAble_.Rv_unhandled;} if (owner_primitive != null) owner_msg.Parse_(false).Add(GfsCore_.Arg_primitive, owner_primitive); Object rv = owner_invk.Invk(ctx, 0, owner_msg.Key(), owner_msg); if (rv == GfoInvkAble_.Rv_cancel) return rv; @@ -151,7 +151,7 @@ class GfsCore_ { // else if (ctx.Match(k, Invk_Load)) { // Io_url url = (Io_url)m.ReadObj("url", Io_url_.Parser); // if (ctx.Deny()) return this; -// String loadText = Io_mgr.I.LoadFilStr(url); +// String loadText = Io_mgr.Instance.LoadFilStr(url); // GfoMsg loadMsg = core.MsgParser().ParseToMsg(loadText); // return core.Exec(ctx, loadMsg); // } diff --git a/100_core/src_400_gfs/gplx/GfsCore_tst.java b/100_core/src_400_gfs/gplx/GfsCore_tst.java index d0bf0ccb0..158f265d7 100644 --- a/100_core/src_400_gfs/gplx/GfsCore_tst.java +++ b/100_core/src_400_gfs/gplx/GfsCore_tst.java @@ -69,7 +69,7 @@ public class GfsCore_tst { core.AddDeep(obj1_1, "1", "1_1"); GfoMsg root = GfoMsg_.root_("1", "1_1", GfsCore_tst_nest.Prop2); - Object actl = core.ExecOne(GfsCtx._, root); + Object actl = core.ExecOne(GfsCtx.Instance, root); Tfds.Eq("val2", actl); } void tst_String__Len_Err(GfoMsg m, Err expd) { diff --git a/100_core/src_400_gfs/gplx/GfsCtx.java b/100_core/src_400_gfs/gplx/GfsCtx.java index 460c93ac9..67b9fb668 100644 --- a/100_core/src_400_gfs/gplx/GfsCtx.java +++ b/100_core/src_400_gfs/gplx/GfsCtx.java @@ -17,7 +17,7 @@ along with this program. If not, see . */ package gplx; public class GfsCtx { - public Ordered_hash Vars() {return vars;} Ordered_hash vars = Ordered_hash_.new_(); + public Ordered_hash Vars() {return vars;} Ordered_hash vars = Ordered_hash_.New(); public boolean Fail_if_unhandled() {return fail_if_unhandled;} public GfsCtx Fail_if_unhandled_(boolean v) {fail_if_unhandled = v; return this;} private boolean fail_if_unhandled; public Gfo_usr_dlg Usr_dlg() {return usr_dlg;} public GfsCtx Usr_dlg_(Gfo_usr_dlg v) {usr_dlg = v; return this;} Gfo_usr_dlg usr_dlg; public boolean Help_browseMode() {return help_browseMode;} public GfsCtx Help_browseMode_(boolean v) {help_browseMode = v; return this;} private boolean help_browseMode; @@ -40,12 +40,12 @@ public class GfsCtx { } return String_.In(k, match); } - public boolean Write_note(String fmt, Object... ary) {UsrDlg_._.Note(fmt, ary); return false;} - public boolean Write_warn(String fmt, Object... ary) {UsrDlg_._.Note("! " + fmt, ary); return false;} - public boolean Write_stop(UsrMsg umsg) {UsrDlg_._.Note("* " + umsg.To_str()); return false;} - public boolean Write_stop(String fmt, Object... ary) {UsrDlg_._.Note("* " + fmt, ary); return false;} + public boolean Write_note(String fmt, Object... ary) {UsrDlg_.Instance.Note(fmt, ary); return false;} + public boolean Write_warn(String fmt, Object... ary) {UsrDlg_.Instance.Note("! " + fmt, ary); return false;} + public boolean Write_stop(UsrMsg umsg) {UsrDlg_.Instance.Note("* " + umsg.To_str()); return false;} + public boolean Write_stop(String fmt, Object... ary) {UsrDlg_.Instance.Note("* " + fmt, ary); return false;} public boolean Deny() {return deny;} private boolean deny; - public static final GfsCtx _ = new GfsCtx(); + public static final GfsCtx Instance = new GfsCtx(); public static GfsCtx new_() {return new GfsCtx();} GfsCtx() {} public static GfsCtx rdr_() { GfsCtx rv = new GfsCtx(); diff --git a/100_core/src_400_gfs/gplx/GfsLibIni_core.java b/100_core/src_400_gfs/gplx/GfsLibIni_core.java index 2b1e241a7..31312c7be 100644 --- a/100_core/src_400_gfs/gplx/GfsLibIni_core.java +++ b/100_core/src_400_gfs/gplx/GfsLibIni_core.java @@ -23,13 +23,13 @@ public class GfsLibIni_core implements GfsLibIni { core.AddObj(Int_.Gfs, "Int_"); core.AddObj(DateAdp_.Gfs, "Date_"); core.AddObj(RandomAdp_.Gfs, "RandomAdp_"); - core.AddObj(GfoTemplateFactory._, "factory"); - core.AddObj(GfoRegy._, "GfoRegy_"); - core.AddObj(GfsCore._, "GfsCore_"); - core.AddObj(gplx.ios.IoUrlInfoRegy._, "IoUrlInfoRegy_"); - core.AddObj(gplx.ios.IoUrlTypeRegy._, "IoUrlTypeRegy_"); + core.AddObj(GfoTemplateFactory.Instance, "factory"); + core.AddObj(GfoRegy.Instance, "GfoRegy_"); + core.AddObj(GfsCore.Instance, "GfsCore_"); + core.AddObj(gplx.ios.IoUrlInfoRegy.Instance, "IoUrlInfoRegy_"); + core.AddObj(gplx.ios.IoUrlTypeRegy.Instance, "IoUrlTypeRegy_"); - GfoRegy._.Parsers().Add("Io_url", Io_url_.Parser); + GfoRegy.Instance.Parsers().Add("Io_url", Io_url_.Parser); } - public static final GfsLibIni_core _ = new GfsLibIni_core(); GfsLibIni_core() {} + public static final GfsLibIni_core Instance = new GfsLibIni_core(); GfsLibIni_core() {} } diff --git a/100_core/src_400_gfs/gplx/GfsRegy.java b/100_core/src_400_gfs/gplx/GfsRegy.java index f999983f6..71acd80b8 100644 --- a/100_core/src_400_gfs/gplx/GfsRegy.java +++ b/100_core/src_400_gfs/gplx/GfsRegy.java @@ -41,7 +41,7 @@ class GfsRegy implements GfoInvkAble { hash.Del(k); } Hash_adp typeHash = Hash_adp_.new_(); - Ordered_hash hash = Ordered_hash_.new_(); + Ordered_hash hash = Ordered_hash_.New(); public static GfsRegy new_() {return new GfsRegy();} GfsRegy() {} } class GfsRegyItm implements GfoInvkAble { diff --git a/100_core/src_410_gfoCfg/gplx/GfoRegy.java b/100_core/src_410_gfoCfg/gplx/GfoRegy.java index 8b78c0407..49fbdc56d 100644 --- a/100_core/src_410_gfoCfg/gplx/GfoRegy.java +++ b/100_core/src_410_gfoCfg/gplx/GfoRegy.java @@ -32,8 +32,8 @@ public class GfoRegy implements GfoInvkAble { public void Del(String key) {hash.Del(key);} public void RegObj(String key, Object val) {RegItm(key, val, GfoRegyItm.ValType_Obj, Io_url_.Empty);} public void RegDir(Io_url dirUrl, String match, boolean recur, String chopBgn, String chopEnd) { - Io_url[] filUrls = Io_mgr.I.QueryDir_args(dirUrl).FilPath_(match).Recur_(recur).ExecAsUrlAry(); - if (filUrls.length == 0 && !Io_mgr.I.ExistsDir(dirUrl)) {UsrDlg_._.Stop(UsrMsg.new_("dirUrl does not exist").Add("dirUrl", dirUrl.Xto_api())); return;} + Io_url[] filUrls = Io_mgr.Instance.QueryDir_args(dirUrl).FilPath_(match).Recur_(recur).ExecAsUrlAry(); + if (filUrls.length == 0 && !Io_mgr.Instance.ExistsDir(dirUrl)) {UsrDlg_.Instance.Stop(UsrMsg.new_("dirUrl does not exist").Add("dirUrl", dirUrl.Xto_api())); return;} for (Io_url filUrl : filUrls) { String key = filUrl.NameAndExt(); int pos = String_.Find_none; @@ -89,6 +89,6 @@ public class GfoRegy implements GfoInvkAble { } Hash_adp hash = Hash_adp_.new_(); public static final String Err_ChopBgn = "chopBgn results in null key", Err_ChopEnd = "chopEnd results in null key", Err_Dupe = "key already registered"; - public static final GfoRegy _ = new GfoRegy(); GfoRegy() {} + public static final GfoRegy Instance = new GfoRegy(); GfoRegy() {} @gplx.Internal protected static GfoRegy new_() {return new GfoRegy();} } diff --git a/100_core/src_410_gfoCfg/gplx/GfoRegy_RegDir_tst.java b/100_core/src_410_gfoCfg/gplx/GfoRegy_RegDir_tst.java index e213c2f19..ca1d7054b 100644 --- a/100_core/src_410_gfoCfg/gplx/GfoRegy_RegDir_tst.java +++ b/100_core/src_410_gfoCfg/gplx/GfoRegy_RegDir_tst.java @@ -20,7 +20,7 @@ import org.junit.*; public class GfoRegy_RegDir_tst { @Before public void setup() { regy = GfoRegy.new_(); - Io_mgr.I.InitEngine_mem(); + Io_mgr.Instance.InitEngine_mem(); root = Io_url_.mem_dir_("mem/root"); } GfoRegy regy; Io_url root; @Test public void Basic() { @@ -57,5 +57,5 @@ public class GfoRegy_RegDir_tst { GfoRegyItm itm = regy.FetchOrNull(expd); Tfds.Eq_nullNot(itm); } - void ini_fil(String... nest) {Io_mgr.I.SaveFilStr(root.GenSubFil_nest(nest), "");} + void ini_fil(String... nest) {Io_mgr.Instance.SaveFilStr(root.GenSubFil_nest(nest), "");} } diff --git a/100_core/src_420_usrMsg/gplx/Gfo_log_bfr.java b/100_core/src_420_usrMsg/gplx/Gfo_log_bfr.java index f3a59c692..2d2757b62 100644 --- a/100_core/src_420_usrMsg/gplx/Gfo_log_bfr.java +++ b/100_core/src_420_usrMsg/gplx/Gfo_log_bfr.java @@ -25,5 +25,5 @@ public class Gfo_log_bfr { bfr.Add_byte_nl(); return this; } - public String Xto_str() {return bfr.Xto_str_and_clear();} + public String Xto_str() {return bfr.To_str_and_clear();} } diff --git a/100_core/src_420_usrMsg/gplx/Gfo_usr_dlg_.java b/100_core/src_420_usrMsg/gplx/Gfo_usr_dlg_.java index 55a422c82..135bf446f 100644 --- a/100_core/src_420_usrMsg/gplx/Gfo_usr_dlg_.java +++ b/100_core/src_420_usrMsg/gplx/Gfo_usr_dlg_.java @@ -17,8 +17,8 @@ along with this program. If not, see . */ package gplx; public class Gfo_usr_dlg_ { - public static Gfo_usr_dlg I = Gfo_usr_dlg_noop._; // NOTE: global instance which can be reassigned - public static final Gfo_usr_dlg Noop = Gfo_usr_dlg_noop._; + public static Gfo_usr_dlg Instance = Gfo_usr_dlg_noop.Instance; // NOTE: global instance which can be reassigned + public static final Gfo_usr_dlg Noop = Gfo_usr_dlg_noop.Instance; public static Gfo_usr_dlg Test() { if (test == null) test = new Gfo_usr_dlg_base(Gfo_usr_dlg__log_.Noop, Gfo_usr_dlg__gui_.Test); @@ -49,5 +49,5 @@ class Gfo_usr_dlg_noop implements Gfo_usr_dlg { public String Log_direct(String msg) {return "";} public String Plog_many(String grp_key, String msg_key, String fmt, Object... args) {return "";} public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) {return this;} - public static final Gfo_usr_dlg_noop _ = new Gfo_usr_dlg_noop(); Gfo_usr_dlg_noop() {} + public static final Gfo_usr_dlg_noop Instance = new Gfo_usr_dlg_noop(); Gfo_usr_dlg_noop() {} } diff --git a/100_core/src_420_usrMsg/gplx/Gfo_usr_dlg__gui_.java b/100_core/src_420_usrMsg/gplx/Gfo_usr_dlg__gui_.java index 748d37d61..175ff1448 100644 --- a/100_core/src_420_usrMsg/gplx/Gfo_usr_dlg__gui_.java +++ b/100_core/src_420_usrMsg/gplx/Gfo_usr_dlg__gui_.java @@ -31,7 +31,7 @@ class Gfo_usr_dlg__gui_noop implements Gfo_usr_dlg__gui { public void Write_stop(String text) {} } class Gfo_usr_dlg__gui_console implements Gfo_usr_dlg__gui { - private final Console_adp__sys console = Console_adp__sys.I; + private final Console_adp__sys console = Console_adp__sys.Instance; public void Clear() {} public String_ring Prog_msgs() {return ring;} private final String_ring ring = new String_ring().Max_(0); public void Write_prog(String text) {console.Write_tmp(text);} diff --git a/100_core/src_420_usrMsg/gplx/Gfo_usr_dlg__gui_test.java b/100_core/src_420_usrMsg/gplx/Gfo_usr_dlg__gui_test.java index d1183b28b..7067daf37 100644 --- a/100_core/src_420_usrMsg/gplx/Gfo_usr_dlg__gui_test.java +++ b/100_core/src_420_usrMsg/gplx/Gfo_usr_dlg__gui_test.java @@ -18,7 +18,8 @@ along with this program. If not, see . package gplx; import gplx.core.strings.*; public class Gfo_usr_dlg__gui_test implements Gfo_usr_dlg__gui { - public String[] Xto_str_ary() {return msgs.To_str_ary();} + public String[] Xto_str_ary() {return msgs.To_str_ary();} + public String[] Xto_str_ary_and_clear() {String[] rv = msgs.To_str_ary(); this.Clear(); return rv;} public List_adp Warns() {return warns;} public String_ring Prog_msgs() {return ring;} String_ring ring = new String_ring().Max_(0); public void Clear() {msgs.Clear(); warns.Clear();} diff --git a/100_core/src_420_usrMsg/gplx/Gfo_usr_dlg__log_base.java b/100_core/src_420_usrMsg/gplx/Gfo_usr_dlg__log_base.java index 61693fb0f..bea725451 100644 --- a/100_core/src_420_usrMsg/gplx/Gfo_usr_dlg__log_base.java +++ b/100_core/src_420_usrMsg/gplx/Gfo_usr_dlg__log_base.java @@ -20,7 +20,7 @@ import gplx.core.strings.*; import gplx.core.consoles.*; public class Gfo_usr_dlg__log_base implements Gfo_usr_dlg__log { private int archive_dirs_max = 8; private Io_url log_dir, err_fil; - private Ordered_hash queued_list = Ordered_hash_.new_(); + private Ordered_hash queued_list = Ordered_hash_.New(); private Bry_fmtr fmtr = Bry_fmtr.tmp_(); private Bry_bfr tmp_bfr = Bry_bfr.reset_(255); public boolean Queue_enabled() {return queue_enabled;} public void Queue_enabled_(boolean v) {queue_enabled = v; if (!v) this.Flush();} private boolean queue_enabled; public boolean Enabled() {return enabled;} public void Enabled_(boolean v) {enabled = v;} private boolean enabled = true; @@ -45,18 +45,18 @@ public class Gfo_usr_dlg__log_base implements Gfo_usr_dlg__log { } public void Log_term() { if (!enabled) return; - Io_url[] archive_dirs = Io_mgr.I.QueryDir_args(log_dir).DirInclude_().DirOnly_().ExecAsUrlAry(); + Io_url[] archive_dirs = Io_mgr.Instance.QueryDir_args(log_dir).DirInclude_().DirOnly_().ExecAsUrlAry(); int archive_dirs_len = archive_dirs.length; int session_cutoff = archive_dirs_len - archive_dirs_max; for (int i = 0; i < session_cutoff; i++) { Io_url archive_dir = archive_dirs[i]; - Io_mgr.I.DeleteDirDeep(archive_dir); + Io_mgr.Instance.DeleteDirDeep(archive_dir); this.Log_to_session("archive dir del: " + session_dir.Raw()); } this.Log_to_session("app term"); MoveCurrentToArchive(session_dir); } - private void MoveCurrentToArchive(Io_url dir) {Io_mgr.I.MoveDirDeep(dir, dir.OwnerDir().GenSubDir(DateAdp_.Now().XtoStr_fmt_yyyyMMdd_HHmmss_fff()));} + private void MoveCurrentToArchive(Io_url dir) {Io_mgr.Instance.MoveDirDeep(dir, dir.OwnerDir().GenSubDir(DateAdp_.Now().XtoStr_fmt_yyyyMMdd_HHmmss_fff()));} public void Log_info(boolean warn, String s) {if (warn) Log_to_err(s); else Log_to_session(s);} public void Log_msg_to_url_fmt(Io_url url, String fmt, Object... args) { if (!enabled) return; @@ -83,7 +83,7 @@ public class Gfo_usr_dlg__log_base implements Gfo_usr_dlg__log { } catch (Exception e) {Err_.Noop(e);} // java.lang.StringBuilder can throw exceptions in some situations when called on a different thread; ignore errors } private String_bldr sb = String_bldr_.new_thread(); // NOTE: use java.lang.StringBuffer to try to avoid random exceptions when called on a different thread - private String Bld_msg(String s) {return sb.Add(DateAdp_.Now().XtoUtc().XtoStr_fmt_yyyyMMdd_HHmmss_fff()).Add(" ").Add(s).Add_char_nl().Xto_str_and_clear();} + private String Bld_msg(String s) {return sb.Add(DateAdp_.Now().XtoUtc().XtoStr_fmt_yyyyMMdd_HHmmss_fff()).Add(" ").Add(s).Add_char_nl().To_str_and_clear();} private void Log_msg(Io_url url, String txt) { if (queue_enabled) { String url_raw = url == null ? "mem" : url.Raw(); @@ -95,7 +95,7 @@ public class Gfo_usr_dlg__log_base implements Gfo_usr_dlg__log { fil.Add(txt); } else - Io_mgr.I.AppendFilStr(url, txt); + Io_mgr.Instance.AppendFilStr(url, txt); } public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { if (ctx.Match(k, Invk_enabled_)) enabled = m.ReadYn("v"); @@ -105,7 +105,7 @@ public class Gfo_usr_dlg__log_base implements Gfo_usr_dlg__log { return this; } public static final String Invk_enabled_ = "enabled_", Invk_archive_dirs_max_ = "archive_dirs_max_", Invk_log_dir_ = "log_dir_"; static final String Dir_name_log = "log", Dir_name_current = "current"; - public static final Gfo_usr_dlg__log_base _ = new Gfo_usr_dlg__log_base(); + public static final Gfo_usr_dlg__log_base Instance = new Gfo_usr_dlg__log_base(); } class Usr_log_fil { public Usr_log_fil(Io_url url) {this.url = url;} @@ -114,10 +114,10 @@ class Usr_log_fil { public void Flush() { if (sb.Count() == 0) return; try { - Io_mgr.I.AppendFilStr(url, sb.Xto_str_and_clear()); + Io_mgr.Instance.AppendFilStr(url, sb.To_str_and_clear()); } catch (Exception e) { - Console_adp__sys.I.Write_str_w_nl(Err_.Message_gplx_full(e)); + Console_adp__sys.Instance.Write_str_w_nl(Err_.Message_gplx_full(e)); } } } diff --git a/100_core/src_420_usrMsg/gplx/Gfo_usr_dlg_base.java b/100_core/src_420_usrMsg/gplx/Gfo_usr_dlg_base.java index 414981426..29a167b23 100644 --- a/100_core/src_420_usrMsg/gplx/Gfo_usr_dlg_base.java +++ b/100_core/src_420_usrMsg/gplx/Gfo_usr_dlg_base.java @@ -45,11 +45,11 @@ public class Gfo_usr_dlg_base implements Gfo_usr_dlg { } private String Bld_msg_many(String grp_key, String msg_key, String fmt, Object[] args) { tmp_fmtr.Fmt_(fmt).Bld_bfr_many(tmp_bfr, args); - return tmp_bfr.Xto_str_and_clear(); + return tmp_bfr.To_str_and_clear(); } private String Bld_msg_one(String grp_key, String msg_key, String fmt, Object val) { tmp_fmtr.Fmt_(fmt).Bld_bfr_one(tmp_bfr, val); - return tmp_bfr.Xto_str_and_clear(); + return tmp_bfr.To_str_and_clear(); } private String Bld_msg_none(String grp_key, String msg_key, String fmt) {return fmt;} } diff --git a/100_core/src_420_usrMsg/gplx/UsrDlg_.java b/100_core/src_420_usrMsg/gplx/UsrDlg_.java index 72fb054e4..7d25013e6 100644 --- a/100_core/src_420_usrMsg/gplx/UsrDlg_.java +++ b/100_core/src_420_usrMsg/gplx/UsrDlg_.java @@ -17,5 +17,5 @@ along with this program. If not, see . */ package gplx; public class UsrDlg_ { - public static final UsrDlg _ = UsrDlg.new_(); + public static final UsrDlg Instance = UsrDlg.new_(); } diff --git a/100_core/src_420_usrMsg/gplx/UsrMsg.java b/100_core/src_420_usrMsg/gplx/UsrMsg.java index 792e04214..0160fba95 100644 --- a/100_core/src_420_usrMsg/gplx/UsrMsg.java +++ b/100_core/src_420_usrMsg/gplx/UsrMsg.java @@ -20,7 +20,7 @@ import gplx.core.strings.*; public class UsrMsg { public int VisibilityDuration() {return visibilityDuration;} public UsrMsg VisibilityDuration_(int v) {visibilityDuration = v; return this;} int visibilityDuration = 3000; public String Hdr() {return hdr;} public UsrMsg Hdr_(String val) {hdr = val; return this;} private String hdr; - public Ordered_hash Args() {return args;} Ordered_hash args = Ordered_hash_.new_(); + public Ordered_hash Args() {return args;} Ordered_hash args = Ordered_hash_.New(); public UsrMsg Add(String k, Object v) { args.Add(k, KeyVal_.new_(k, v)); return this; @@ -38,7 +38,7 @@ public class UsrMsg { KeyVal kv = (KeyVal)args.Get_at(i); m.Add(kv.Key(), kv.Val()); } - return Object_.Xto_str_strict_or_null_mark(invk.Invk(GfsCtx._, 0, cmd, m)); + return Object_.Xto_str_strict_or_null_mark(invk.Invk(GfsCtx.Instance, 0, cmd, m)); } String_bldr sb = String_bldr_.new_(); sb.Add(hdr).Add(spr); diff --git a/100_core/src_420_usrMsg/gplx/UsrMsgWkr_console.java b/100_core/src_420_usrMsg/gplx/UsrMsgWkr_console.java index 0a6a3aef7..c1ac51fdc 100644 --- a/100_core/src_420_usrMsg/gplx/UsrMsgWkr_console.java +++ b/100_core/src_420_usrMsg/gplx/UsrMsgWkr_console.java @@ -24,7 +24,7 @@ public class UsrMsgWkr_console implements UsrMsgWkr { text = "!!!!" + text; else if (type == UsrMsgWkr_.Type_Stop) text = "****" + text; - Console_adp__sys.I.Write_str(text); + Console_adp__sys.Instance.Write_str(text); } public static void RegAll(UsrDlg dlg) { UsrMsgWkr wkr = new UsrMsgWkr_console(); diff --git a/100_core/src_800_tst/gplx/PerfLogMgr_fxt.java b/100_core/src_800_tst/gplx/PerfLogMgr_fxt.java index 3e3c7007b..95884cc7b 100644 --- a/100_core/src_800_tst/gplx/PerfLogMgr_fxt.java +++ b/100_core/src_800_tst/gplx/PerfLogMgr_fxt.java @@ -41,11 +41,11 @@ public class PerfLogMgr_fxt { PerfLogItm itm = (PerfLogItm)itmObj; sb.Add(itm.To_str()).Add_char_crlf(); } - Io_mgr.I.AppendFilStr(url, sb.To_str()); + Io_mgr.Instance.AppendFilStr(url, sb.To_str()); entries.Clear(); } List_adp entries = List_adp_.new_(); PerfLogTmr tmr = PerfLogTmr.new_(); Io_url url = Io_url_.Empty; - public static final PerfLogMgr_fxt _ = new PerfLogMgr_fxt(); PerfLogMgr_fxt() {} + public static final PerfLogMgr_fxt Instance = new PerfLogMgr_fxt(); PerfLogMgr_fxt() {} class PerfLogItm { public String To_str() { String secondsStr = TimeSpanAdp_.To_str(milliseconds, TimeSpanAdp_.Fmt_Default); diff --git a/100_core/src_800_tst/gplx/Tfds.java b/100_core/src_800_tst/gplx/Tfds.java index 9695a68e4..b29369da1 100644 --- a/100_core/src_800_tst/gplx/Tfds.java +++ b/100_core/src_800_tst/gplx/Tfds.java @@ -47,10 +47,9 @@ public class Tfds { // URL:doc/gplx.tfds/Tfds.txt public static void Eq_str_intf(To_str_able expd, To_str_able actl) {Eq_wkr(expd.To_str(), actl.To_str(), true, String_.Empty);} public static void Eq_str_lines(String lhs, String rhs) {Eq_str_lines(lhs, rhs, EmptyStr);} public static void Eq_str_lines(String lhs, String rhs, String note) { - if (lhs == null && rhs == null) return; // true - else if (lhs == null) throw Err_.new_wo_type("lhs is null", "note", note); - else if (rhs == null) throw Err_.new_wo_type("rhs is null", "note", note); - else Eq_ary_wkr(String_.Split(lhs, Char_.NewLine), String_.Split(rhs, Char_.NewLine), false, note); + if (lhs == null) lhs = ""; + if (rhs == null) rhs = ""; + Eq_ary_wkr(String_.Split(lhs, Char_.NewLine), String_.Split(rhs, Char_.NewLine), false, note); } public static void Eq(Object expd, Object actl, String fmt, Object... args) {Eq_wkr(expd, actl, true, String_.Format(fmt, args));} public static void Eq_rev(Object actl, Object expd) {Eq_wkr(expd, actl, true, EmptyStr);} @@ -69,7 +68,7 @@ public class Tfds { // URL:doc/gplx.tfds/Tfds.txt public static void Eq_ary(Object lhs, Object rhs, String fmt, Object... args){Eq_ary_wkr(lhs, rhs, true, String_.Format(fmt, args));} public static void Eq_ary_str(Object lhs, Object rhs, String note) {Eq_ary_wkr(lhs, rhs, false, note);} public static void Eq_ary_str(Object lhs, Object rhs) {Eq_ary_wkr(lhs, rhs, false, EmptyStr);} - public static void Eq_list(List_adp lhs, List_adp rhs) {Eq_list_wkr(lhs, rhs, TfdsEqListItmStr_cls_default._, EmptyStr);} + public static void Eq_list(List_adp lhs, List_adp rhs) {Eq_list_wkr(lhs, rhs, TfdsEqListItmStr_cls_default.Instance, EmptyStr);} public static void Eq_list(List_adp lhs, List_adp rhs, TfdsEqListItmStr xtoStr) {Eq_list_wkr(lhs, rhs, xtoStr, EmptyStr);} private static void Eq_exec_y(Object lhs, Object rhs, String fmt, Object[] args) { if (Object_.Eq(lhs, rhs)) return; @@ -154,18 +153,19 @@ public class Tfds { // URL:doc/gplx.tfds/Tfds.txt static TfdsMsgBldr msgBldr = TfdsMsgBldr.new_(); public static final Io_url RscDir = Io_url_.Usr().GenSubDir_nest("xowa", "dev", "tst"); public static DateAdp Now_time0_add_min(int minutes) {return time0.Add_minute(minutes);} - @gplx.Internal protected static boolean Now_enabled() {return now_enabled;} static boolean now_enabled; - public static void Now_enabled_n_() {now_enabled = false;} + @gplx.Internal protected static boolean Now_enabled() {return now_enabled;} private static boolean now_enabled; private static boolean now_freeze; + public static void Now_enabled_n_() {now_enabled = false; now_freeze = false;} public static void Now_set(DateAdp date) {now_enabled = true; nowTime = date;} public static void Now_enabled_y_() {now_enabled = true; nowTime = time0;} + public static void Now_freeze_y_() {now_freeze = true;} @gplx.Internal protected static DateAdp Now() { DateAdp rv = nowTime; - nowTime = rv.Add_minute(1); + if (!now_freeze) nowTime = rv.Add_minute(1); return rv; } private static final DateAdp time0 = DateAdp_.parse_gplx("2001-01-01 00:00:00.000"); private static DateAdp nowTime; // NOTE: cannot set to time0 due to static initialization; - public static void WriteText(String text) {Console_adp__sys.I.Write_str(text);} + public static void WriteText(String text) {Console_adp__sys.Instance.Write_str(text);} public static void Write(byte[] s, int b, int e) {Write(Bry_.Mid(s, b, e));} public static void Write() {Write("tmp");} public static void Write(Object... ary) { @@ -180,7 +180,7 @@ class TfdsEqListItmStr_cls_default implements TfdsEqListItmStr { public String To_str(Object cur, Object actl) { return Object_.Xto_str_strict_or_null_mark(cur); } - public static final TfdsEqListItmStr_cls_default _ = new TfdsEqListItmStr_cls_default(); TfdsEqListItmStr_cls_default() {} + public static final TfdsEqListItmStr_cls_default Instance = new TfdsEqListItmStr_cls_default(); TfdsEqListItmStr_cls_default() {} } class TfdsEqAryItm { public int Idx() {return idx;} public TfdsEqAryItm Idx_(int v) {idx = v; return this;} int idx; @@ -213,14 +213,14 @@ class TfdsMsgBldr { for (int i = 0; i < list.Count(); i++) { TfdsEqAryItm itm = (TfdsEqAryItm)list.Get_at(i); sb.Add_fmt_line("{0}: {1} {2} {3}" - , Int_.Xto_str_pad_bgn_zero(itm.Idx(), 4) + , Int_.To_str_pad_bgn_zero(itm.Idx(), 4) , String_.PadBgn(itm.Lhs(), lhsLenMax, " ") , itm.Eq() ? "==" : "!=" , String_.PadBgn(itm.Rhs(), rhsLenMax, " ") ); } // String compSym = isEq ? " " : "!="; -// String result = String_.Format("{0}: {1}{2} {3} {4}", Int_.Xto_str_pad_bgn_zero(i, 4), lhsString, String_.CrLf + "\t\t", compSym, rhsString); +// String result = String_.Format("{0}: {1}{2} {3} {4}", Int_.To_str_pad_bgn_zero(i, 4), lhsString, String_.CrLf + "\t\t", compSym, rhsString); // foreach (Object obj in list) { // String itmComparison = (String)obj; // sb.Add_fmt_line("{0}{1}", "\t\t", itmComparison); diff --git a/100_core/src_900_xml/gplx/HierStrBldr.java b/100_core/src_900_xml/gplx/HierStrBldr.java index 6a2a6e331..c6a797434 100644 --- a/100_core/src_900_xml/gplx/HierStrBldr.java +++ b/100_core/src_900_xml/gplx/HierStrBldr.java @@ -42,8 +42,8 @@ public class HierStrBldr { multipleAry[i] = (idx / multiple) * multiple; // NOTE: rounds down to multiple; EX: 11 -> 10 } for (int i = 0; i < multipleAry.length; i++) - sb.Add_fmt(dirFmt, Int_.Xto_str_fmt(multipleAry[i], numFmt)); - sb.Add_fmt(filFmt, Int_.Xto_str_fmt(idx, numFmt)); + sb.Add_fmt(dirFmt, Int_.To_str_fmt(multipleAry[i], numFmt)); + sb.Add_fmt(filFmt, Int_.To_str_fmt(idx, numFmt)); return sb.To_str(); } public HierStrBldr Ctor_io(Io_url root, String dirFmt, String filFmt, String numFmt, int... filCountMaxs) { diff --git a/100_core/src_900_xml/gplx/xmls/XmlFileSplitter.java b/100_core/src_900_xml/gplx/xmls/XmlFileSplitter.java index 9a29ff5dc..fe5399232 100644 --- a/100_core/src_900_xml/gplx/xmls/XmlFileSplitter.java +++ b/100_core/src_900_xml/gplx/xmls/XmlFileSplitter.java @@ -47,7 +47,7 @@ public class XmlFileSplitter { XmlSplitWtr partWtr = new XmlSplitWtr().Init_(partDir, hdr, opts); while (true) { partWtr.Bgn(partIdx++); - if (opts.StatusFmt() != null) Console_adp__sys.I.Write_str_w_nl(String_.Format(opts.StatusFmt(), partWtr.Url().NameOnly())); + if (opts.StatusFmt() != null) Console_adp__sys.Instance.Write_str_w_nl(String_.Format(opts.StatusFmt(), partWtr.Url().NameOnly())); partWtr.Write(tempAry); if (!first) { rdr.Read(); diff --git a/100_core/src_900_xml/gplx/xmls/XmlFileSplitter_tst.java b/100_core/src_900_xml/gplx/xmls/XmlFileSplitter_tst.java index 3614916fc..d6dbda2a8 100644 --- a/100_core/src_900_xml/gplx/xmls/XmlFileSplitter_tst.java +++ b/100_core/src_900_xml/gplx/xmls/XmlFileSplitter_tst.java @@ -21,7 +21,7 @@ import gplx.ios.*; import gplx.texts.*; public class XmlFileSplitter_tst { @Before public void setup() { splitter = new XmlFileSplitter(); - Io_mgr.I.InitEngine_mem(); + Io_mgr.Instance.InitEngine_mem(); } XmlFileSplitter splitter; @Test public void FindMatchPos() { tst_FindMatchPos("abcde", "a", 0); @@ -59,16 +59,16 @@ public class XmlFileSplitter_tst { void tst_Split(String txt, String... expd) { Io_url xmlFil = Io_url_.mem_fil_("mem/800_misc/txt.xml"); Io_url tmpDir = xmlFil.OwnerDir().GenSubDir("temp_xml"); - Io_mgr.I.DeleteDirDeep(tmpDir); + Io_mgr.Instance.DeleteDirDeep(tmpDir); splitter.Opts().StatusFmt_(null).PartDir_(tmpDir); splitter.Opts().Namer().Ctor_io(tmpDir, "", "fil_{0}.xml", "000"); - Io_mgr.I.SaveFilStr(xmlFil, txt); + Io_mgr.Instance.SaveFilStr(xmlFil, txt); splitter.Split(xmlFil); - Io_url[] tmpFilAry = Io_mgr.I.QueryDir_fils(tmpDir); + Io_url[] tmpFilAry = Io_mgr.Instance.QueryDir_fils(tmpDir); Tfds.Eq(expd.length, tmpFilAry.length); for (int i = 0; i < tmpFilAry.length; i++) { Io_url tmpFil = tmpFilAry[i]; - Tfds.Eq(expd[i], Io_mgr.I.LoadFilStr(tmpFil)); + Tfds.Eq(expd[i], Io_mgr.Instance.LoadFilStr(tmpFil)); } } byte[] byte_(String s) {return Bry_.new_u8(s);} diff --git a/100_core/src_900_xml/gplx/xmls/XmlSplitRdr.java b/100_core/src_900_xml/gplx/xmls/XmlSplitRdr.java index b4c118d90..0959b6519 100644 --- a/100_core/src_900_xml/gplx/xmls/XmlSplitRdr.java +++ b/100_core/src_900_xml/gplx/xmls/XmlSplitRdr.java @@ -23,7 +23,7 @@ public class XmlSplitRdr { public int CurRead() {return curRead;} int curRead; public boolean Done() {return done;} private boolean done; public XmlSplitRdr InitAll_(Io_url url) { - stream = Io_mgr.I.OpenStreamRead(url); + stream = Io_mgr.Instance.OpenStreamRead(url); curLen = stream.Len(); curAry = new byte[(int)curLen]; curSum = 0; @@ -32,8 +32,8 @@ public class XmlSplitRdr { return this; } public XmlSplitRdr Init_(Io_url url, int curArySize) { - stream = Io_mgr.I.OpenStreamRead(url); - curLen = Io_mgr.I.QueryFil(url).Size(); + stream = Io_mgr.Instance.OpenStreamRead(url); + curLen = Io_mgr.Instance.QueryFil(url).Size(); curAry = new byte[curArySize]; curSum = 0; curRead = 0; diff --git a/100_core/src_900_xml/gplx/xmls/XmlSplitWtr.java b/100_core/src_900_xml/gplx/xmls/XmlSplitWtr.java index 48266d86b..35da43aad 100644 --- a/100_core/src_900_xml/gplx/xmls/XmlSplitWtr.java +++ b/100_core/src_900_xml/gplx/xmls/XmlSplitWtr.java @@ -26,7 +26,7 @@ public class XmlSplitWtr { public void Bgn(int partIdx) { String partStr = opts.Namer().GenStrIdxOnly(partIdx); url = Io_url_.mem_fil_(partStr); - stream = Io_mgr.I.OpenStreamWrite(url); + stream = Io_mgr.Instance.OpenStreamWrite(url); init = true; } boolean init = true; byte[] hdr; XmlFileSplitterOpts opts; Io_url partDir; IoStream stream; public void Write(byte[] ary) { diff --git a/100_core/tst/gplx/ios/IoEngineFxt.java b/100_core/tst/gplx/ios/IoEngineFxt.java index c4e5771f7..84c57d4eb 100644 --- a/100_core/tst/gplx/ios/IoEngineFxt.java +++ b/100_core/tst/gplx/ios/IoEngineFxt.java @@ -17,7 +17,7 @@ along with this program. If not, see . */ package gplx.ios; import gplx.*; public class IoEngineFxt { - IoEngine EngineOf(Io_url url) {return IoEnginePool._.Get_by(url.Info().EngineKey());} + IoEngine EngineOf(Io_url url) {return IoEnginePool.Instance.Get_by(url.Info().EngineKey());} public void tst_ExistsPaths(boolean expd, Io_url... ary) { for (Io_url fil : ary) { if (fil.Type_dir()) diff --git a/100_core/tst/gplx/ios/IoEngine_fil_basic_memory_tst.java b/100_core/tst/gplx/ios/IoEngine_fil_basic_memory_tst.java index eb0c2fca6..305f5fcff 100644 --- a/100_core/tst/gplx/ios/IoEngine_fil_basic_memory_tst.java +++ b/100_core/tst/gplx/ios/IoEngine_fil_basic_memory_tst.java @@ -38,7 +38,7 @@ public class IoEngine_fil_basic_memory_tst extends IoEngine_fil_basic_base { fx.run_SaveFilText(fil, "text"); fx.tst_ExistsPaths(true, fil); - IoRecycleBin bin = IoRecycleBin._; + IoRecycleBin bin = IoRecycleBin.Instance; List_adp list = Tfds.RscDir.XtoNames(); // foreach (String s in list) // Tfds.Write(s); diff --git a/100_core/tst/gplx/ios/IoEngine_fil_basic_system_tst.java b/100_core/tst/gplx/ios/IoEngine_fil_basic_system_tst.java index ca94650db..0dc2613fe 100644 --- a/100_core/tst/gplx/ios/IoEngine_fil_basic_system_tst.java +++ b/100_core/tst/gplx/ios/IoEngine_fil_basic_system_tst.java @@ -33,7 +33,7 @@ public class IoEngine_fil_basic_system_tst extends IoEngine_fil_basic_base { fx.run_SaveFilText(fil, "text"); fx.tst_ExistsPaths(true, fil); - IoRecycleBin bin = IoRecycleBin._; + IoRecycleBin bin = IoRecycleBin.Instance; List_adp list = root.XtoNames(); list.Del_at(0); // remove drive IoEngine_xrg_recycleFil recycleXrg = bin.Send_xrg(fil) .RootDirNames_(list) diff --git a/100_core/tst/gplx/ios/IoEngine_fil_xfer_memory_tst.java b/100_core/tst/gplx/ios/IoEngine_fil_xfer_memory_tst.java index cf3b97ea6..0248a8508 100644 --- a/100_core/tst/gplx/ios/IoEngine_fil_xfer_memory_tst.java +++ b/100_core/tst/gplx/ios/IoEngine_fil_xfer_memory_tst.java @@ -22,7 +22,7 @@ public class IoEngine_fil_xfer_memory_tst extends IoEngine_fil_xfer_base { root = Io_url_.mem_dir_("mem"); } @Override protected IoEngine engine_() {return IoEngine_.Mem_init_();} @Override protected Io_url AltRoot() { - Io_mgr.I.InitEngine_mem_("mem2"); + Io_mgr.Instance.InitEngine_mem_("mem2"); return Io_url_.mem_dir_("mem2"); } } diff --git a/100_core/tst/gplx/ios/IoEngine_stream_xfer_tst.java b/100_core/tst/gplx/ios/IoEngine_stream_xfer_tst.java index a4418ee9d..f710b4a82 100644 --- a/100_core/tst/gplx/ios/IoEngine_stream_xfer_tst.java +++ b/100_core/tst/gplx/ios/IoEngine_stream_xfer_tst.java @@ -21,9 +21,9 @@ public class IoEngine_stream_xfer_tst { @Before public void setup() { srcEngine = IoEngine_memory.new_("mock1"); trgEngine = IoEngine_memory.new_("mock2"); - IoEnginePool._.Add_if_dupe_use_nth(srcEngine); IoEnginePool._.Add_if_dupe_use_nth(trgEngine); - IoUrlInfoRegy._.Reg(IoUrlInfo_.mem_("mem1/", srcEngine.Key())); - IoUrlInfoRegy._.Reg(IoUrlInfo_.mem_("mem2/", trgEngine.Key())); + IoEnginePool.Instance.Add_if_dupe_use_nth(srcEngine); IoEnginePool.Instance.Add_if_dupe_use_nth(trgEngine); + IoUrlInfoRegy.Instance.Reg(IoUrlInfo_.mem_("mem1/", srcEngine.Key())); + IoUrlInfoRegy.Instance.Reg(IoUrlInfo_.mem_("mem2/", trgEngine.Key())); srcDir = Io_url_.mem_dir_("mem1/dir"); trgDir = Io_url_.mem_dir_("mem2/dir"); } @Test public void TransferBetween() { diff --git a/100_core/tst/gplx/ios/IoEngine_xrg_queryDir_tst.java b/100_core/tst/gplx/ios/IoEngine_xrg_queryDir_tst.java index dab411088..2a1e97db2 100644 --- a/100_core/tst/gplx/ios/IoEngine_xrg_queryDir_tst.java +++ b/100_core/tst/gplx/ios/IoEngine_xrg_queryDir_tst.java @@ -58,7 +58,7 @@ public class IoEngine_xrg_queryDir_tst { Io_url[] save_text_(Io_url... ary) { for (Io_url url : ary) - Io_mgr.I.SaveFilStr(url, url.Raw()); + Io_mgr.Instance.SaveFilStr(url, url.Raw()); return ary; } void tst_ExecPathAry(IoEngine_xrg_queryDir finder, Io_url... expd) {Tfds.Eq_ary(expd, finder.ExecAsUrlAry());} diff --git a/100_core/tst/gplx/stores/GfoNdeRdr_read_tst.java b/100_core/tst/gplx/stores/GfoNdeRdr_read_tst.java index 1b52b1a20..51939e43c 100644 --- a/100_core/tst/gplx/stores/GfoNdeRdr_read_tst.java +++ b/100_core/tst/gplx/stores/GfoNdeRdr_read_tst.java @@ -19,29 +19,29 @@ package gplx.stores; import gplx.*; import org.junit.*; public class GfoNdeRdr_read_tst { @Test public void ReadInt() { - rdr = rdr_(IntClassXtn._, "id", 1); + rdr = rdr_(IntClassXtn.Instance, "id", 1); Tfds.Eq(rdr.ReadInt("id"), 1); } @Test public void ReadIntOr() { - rdr = rdr_(IntClassXtn._, "id", 1); + rdr = rdr_(IntClassXtn.Instance, "id", 1); Tfds.Eq(rdr.ReadIntOr("id", -1), 1); } @Test public void ReadIntElse_minus1() { - rdr = rdr_(IntClassXtn._, "id", null); + rdr = rdr_(IntClassXtn.Instance, "id", null); Tfds.Eq(rdr.ReadIntOr("id", -1), -1); } @Test public void ReadInt_parse() { - rdr = rdr_(StringClassXtn._, "id", "1"); + rdr = rdr_(StringClassXtn.Instance, "id", "1"); Tfds.Eq(rdr.ReadInt("id"), 1); } @Test public void ReadIntElse_parse() { - rdr = rdr_(StringClassXtn._, "id", "2"); + rdr = rdr_(StringClassXtn.Instance, "id", "2"); Tfds.Eq(rdr.ReadIntOr("id", -1), 2); } GfoNdeRdr rdr_(ClassXtn type, String key, Object val) { // makes rdr with one row and one val GfoFldList flds = GfoFldList_.new_().Add(key, type); GfoNde row = GfoNde_.vals_(flds, new Object[] {val}); - boolean parse = type == StringClassXtn._; // assumes type is either StringClassXtn or IntClassXtn + boolean parse = type == StringClassXtn.Instance; // assumes type is either StringClassXtn or IntClassXtn return GfoNdeRdr_.leaf_(row, parse); } GfoNdeRdr rdr; diff --git a/110_gfml/src_100_tkn/gplx/gfml/GfmlLxr_.java b/110_gfml/src_100_tkn/gplx/gfml/GfmlLxr_.java index 186503369..86610890b 100644 --- a/110_gfml/src_100_tkn/gplx/gfml/GfmlLxr_.java +++ b/110_gfml/src_100_tkn/gplx/gfml/GfmlLxr_.java @@ -27,7 +27,7 @@ public class GfmlLxr_ { GfmlTkn tkn = GfmlTkn_.singleton_(key, raw, val, cmd); return GfmlLxr_.solo_(key, tkn); } - @gplx.Internal protected static GfmlLxr frame_(String key, GfmlFrame frame, String bgn, String end) {return GfmlLxr_frame.new_(key, frame, bgn, end, GfmlBldrCmd_pendingTkns_add._, GfmlBldrCmd_frameEnd.data_());} + @gplx.Internal protected static GfmlLxr frame_(String key, GfmlFrame frame, String bgn, String end) {return GfmlLxr_frame.new_(key, frame, bgn, end, GfmlBldrCmd_pendingTkns_add.Instance, GfmlBldrCmd_frameEnd.data_());} public static final GfmlLxr Null = new GfmlLxr_null(); public static final String CmdTknChanged_evt = "Changed"; public static GfmlLxr as_(Object obj) {return obj instanceof GfmlLxr ? (GfmlLxr)obj : null;} @@ -90,7 +90,7 @@ class GfmlLxr_group implements GfmlLxr { hookLength = trie.LastMatchCount; } if (ignoreOutput) return GfmlTkn_.IgnoreOutput; - String raw = sb.Xto_str_and_clear(); + String raw = sb.To_str_and_clear(); return outputTkn.MakeNew(raw, raw); } public GfmlLxr SubLxr() {throw Err_sublxr();} diff --git a/110_gfml/src_100_tkn/gplx/gfml/GfmlTrie.java b/110_gfml/src_100_tkn/gplx/gfml/GfmlTrie.java index ccc2c3482..b21e2a299 100644 --- a/110_gfml/src_100_tkn/gplx/gfml/GfmlTrie.java +++ b/110_gfml/src_100_tkn/gplx/gfml/GfmlTrie.java @@ -23,7 +23,7 @@ public class GfmlTrie { for (int i = 0; i < rv.length; i++) rv[i] = String_.cast(symbols.Get_at(i)); return rv; - } Ordered_hash symbols = Ordered_hash_.new_(); + } Ordered_hash symbols = Ordered_hash_.New(); public int LastMatchCount; // PERF: prop is faster than method public Object FindMatch(CharStream stream) { Object result = null; int moveCount = 0; LastMatchCount = 0; diff --git a/110_gfml/src_200_type/gplx/gfml/GfmlFld.java b/110_gfml/src_200_type/gplx/gfml/GfmlFld.java index 885296ae1..eeec67b6f 100644 --- a/110_gfml/src_200_type/gplx/gfml/GfmlFld.java +++ b/110_gfml/src_200_type/gplx/gfml/GfmlFld.java @@ -28,7 +28,7 @@ public class GfmlFld { rv.defaultTkn = defaultTkn; // FIXME: defaultTkn.clone_() return rv; } - public String To_str() {String_bldr sb = String_bldr_.new_(); this.To_str(sb); return sb.Xto_str_and_clear();} + public String To_str() {String_bldr sb = String_bldr_.new_(); this.To_str(sb); return sb.To_str_and_clear();} public void To_str(String_bldr sb) {sb.Add_fmt("name={0} typeKey={1}", name, typeKey);} public static final GfmlFld Null = new_(false, GfmlItmKeys.NullKey, GfmlType_.AnyKey); diff --git a/110_gfml/src_200_type/gplx/gfml/GfmlFldList.java b/110_gfml/src_200_type/gplx/gfml/GfmlFldList.java index a4358fc8a..f07f23bfe 100644 --- a/110_gfml/src_200_type/gplx/gfml/GfmlFldList.java +++ b/110_gfml/src_200_type/gplx/gfml/GfmlFldList.java @@ -29,6 +29,6 @@ public class GfmlFldList { hash.Del(fld); hash.Del(fld.Name()); } - Ordered_hash hash = Ordered_hash_.new_(); + Ordered_hash hash = Ordered_hash_.New(); public static GfmlFldList new_() {return new GfmlFldList();} GfmlFldList() {} } diff --git a/110_gfml/src_200_type/gplx/gfml/GfmlTypeMgr.java b/110_gfml/src_200_type/gplx/gfml/GfmlTypeMgr.java index 81cb5e819..d5c99fce1 100644 --- a/110_gfml/src_200_type/gplx/gfml/GfmlTypeMgr.java +++ b/110_gfml/src_200_type/gplx/gfml/GfmlTypeMgr.java @@ -131,7 +131,7 @@ class GfmlFldPool { } } } - Ordered_hash keyedRegy = Ordered_hash_.new_(); + Ordered_hash keyedRegy = Ordered_hash_.New(); public static GfmlFldPool new_(GfmlType type) { GfmlFldPool rv = new GfmlFldPool(); rv.InitByType(type); diff --git a/110_gfml/src_300_gdoc/gplx/gfml/GfmlDoc.java b/110_gfml/src_300_gdoc/gplx/gfml/GfmlDoc.java index bf03e0ed2..32b697628 100644 --- a/110_gfml/src_300_gdoc/gplx/gfml/GfmlDoc.java +++ b/110_gfml/src_300_gdoc/gplx/gfml/GfmlDoc.java @@ -26,7 +26,7 @@ public class GfmlDoc { @gplx.Internal protected void RootLxr_set(GfmlLxr v) {rootLxr = v;} @gplx.Internal protected void Clear() { usrMsgs.Clear(); - rootNde = GfmlNde.named_(GfmlTkn_.cmd_("tkn.gfml.root_tkn", GfmlBldrCmd_pendingTkns_add._), GfmlType_.Null); + rootNde = GfmlNde.named_(GfmlTkn_.cmd_("tkn.gfml.root_tkn", GfmlBldrCmd_pendingTkns_add.Instance), GfmlType_.Null); rootNde.DocPos_(GfmlDocPos_.Root); } @gplx.Internal protected static GfmlDoc new_() { @@ -41,5 +41,5 @@ public class GfmlDoc { // public GfmlTkn BgnBrace() {return bgnBrace;} public GfmlDocEditor BgnBrace_(GfmlTkn v) {bgnBrace = v; return this;} GfmlTkn bgnBrace = GfmlTkn_.new_("{", ""); // public GfmlTkn EndBrace() {return endBrace;} public GfmlDocEditor EndBrace_(GfmlTkn v) {endBrace = v; return this;} GfmlTkn endBrace = GfmlTkn_.new_("}", ""); // public GfmlTkn Hnd() {return hnd;} public GfmlDocEditor Hnd_(GfmlTkn v) {hnd = v; return this;} GfmlTkn hnd = GfmlTkn_.new_(":", ""); -// public static final GfmlDocEditor _ = new GfmlDocEditor(); GfmlDocEditor() {} +// public static final GfmlDocEditor Instance = new GfmlDocEditor(); GfmlDocEditor() {} // } diff --git a/110_gfml/src_300_gdoc/gplx/gfml/GfmlDocLxrs.java b/110_gfml/src_300_gdoc/gplx/gfml/GfmlDocLxrs.java index 28d1c24c6..4a641a330 100644 --- a/110_gfml/src_300_gdoc/gplx/gfml/GfmlDocLxrs.java +++ b/110_gfml/src_300_gdoc/gplx/gfml/GfmlDocLxrs.java @@ -41,11 +41,11 @@ class GfmlDocLxrs { rootLxr.SubLxr_Add(ary); } public static GfmlLxr Root_lxr() { - GfmlTkn txtTkn = GfmlTkn_.cmd_("tkn:text", GfmlBldrCmd_dataTkn_set._); + GfmlTkn txtTkn = GfmlTkn_.cmd_("tkn:text", GfmlBldrCmd_dataTkn_set.Instance); return GfmlLxr_.general_("lxr:root", txtTkn); } public static GfmlLxr Whitespace_lxr() { - GfmlTkn tkn = GfmlTkn_.cmd_("key:gfml.whitespace_0", GfmlBldrCmd_whitespace._); + GfmlTkn tkn = GfmlTkn_.cmd_("key:gfml.whitespace_0", GfmlBldrCmd_whitespace.Instance); GfmlLxr rv = GfmlLxr_.range_("lxr:gfml.whitespace_0", String_.Ary(" ", String_.Tab, String_.CrLf, String_.Lf), tkn, false); return rv; } @@ -103,7 +103,7 @@ class GfmlDocLxrs { public static GfmlLxr QuoteFold_lxr() { GfmlLxr rv = GfmlLxr_.frame_("gfml.quote_fold_0", GfmlFrame_.quote_(), "^'", "'^"); - GfmlTkn tkn = GfmlTkn_.valConst_("key:gfml.quote_fold_0_whitespace", GfmlTkn_.NullVal, GfmlBldrCmd_whitespace._); + GfmlTkn tkn = GfmlTkn_.valConst_("key:gfml.quote_fold_0_whitespace", GfmlTkn_.NullVal, GfmlBldrCmd_whitespace.Instance); GfmlLxr whitespace = GfmlLxr_.range_("lxr:gfml.quote_fold_0_whitespace", String_.Ary(String_.Tab, String_.CrLf, String_.Lf), tkn, false); GfmlLxr escapeBgn = lxr_escape_("gfml.quote_fold_0_escape_bgn", "^'^'", "^'"); GfmlLxr escapeEnd = lxr_escape_("gfml.quote_fold_0_escape_end", "'^'^", "'^"); @@ -114,17 +114,17 @@ class GfmlDocLxrs { Comment1_lxr()); return rv; } - public static GfmlLxr ElmKey_lxr() {return lxr_symbol_("gfml.elm_key_0", "=", GfmlBldrCmd_elemKey_set._);} - public static GfmlLxr NdeHeader_lxr() {return lxr_symbol_("gfml.node_name_0", ":", GfmlBldrCmd_ndeName_set._);} - public static GfmlLxr NdeInline_lxr() {return lxr_symbol_("gfml.node_inline_0", ";", GfmlBldrCmd_ndeInline._);} - public static GfmlLxr NdeBodyBgn_lxr() {return lxr_symbol_("gfml.node_body_0_begin", "{", GfmlBldrCmd_ndeBody_bgn._);} + public static GfmlLxr ElmKey_lxr() {return lxr_symbol_("gfml.elm_key_0", "=", GfmlBldrCmd_elemKey_set.Instance);} + public static GfmlLxr NdeHeader_lxr() {return lxr_symbol_("gfml.node_name_0", ":", GfmlBldrCmd_ndeName_set.Instance);} + public static GfmlLxr NdeInline_lxr() {return lxr_symbol_("gfml.node_inline_0", ";", GfmlBldrCmd_ndeInline.Instance);} + public static GfmlLxr NdeBodyBgn_lxr() {return lxr_symbol_("gfml.node_body_0_begin", "{", GfmlBldrCmd_ndeBody_bgn.Instance);} public static GfmlLxr NdeBodyEnd_lxr() {return lxr_symbol_("gfml.node_body_0_end", "}", GfmlBldrCmd_frameEnd.nde_(GfmlNdeSymType.BodyEnd));} - public static GfmlLxr NdePropBgn_lxr() {return lxr_symbol_("lxr.gfml.node_prop_0_bgn", "[", GfmlBldrCmd_ndeProp_bgn._);} + public static GfmlLxr NdePropBgn_lxr() {return lxr_symbol_("lxr.gfml.node_prop_0_bgn", "[", GfmlBldrCmd_ndeProp_bgn.Instance);} public static GfmlLxr NdePropEnd_lxr() {return lxr_symbol_("lxr.gfml.node_prop_0_end", "]", GfmlBldrCmd_frameEnd.nde_(GfmlNdeSymType.PrpEnd));} - public static GfmlLxr NdeDot_lxr() {return lxr_symbol_("gfml.node_drill_0", ".", GfmlBldrCmd_ndeDot._);} - public static GfmlLxr NdeHdrBgn_lxr() {return lxr_symbol_("lxr.gfml.node_hdr_0_bgn", "(", GfmlBldrCmd_ndeHdr_bgn._);} - public static GfmlLxr NdeHdrEnd_lxr() {return lxr_symbol_("lxr.gfml.node_hdr_0_end", ")", GfmlBldrCmd_ndeHdr_end._);} - public static GfmlLxr AtrSpr_lxr() {return lxr_symbol_("lxr.gfml.atrSpr", ",", GfmlBldrCmd_atrSpr._);} - static GfmlLxr lxr_escape_(String key, String raw, String escape) {return GfmlLxr_.symbol_(key, raw, escape, GfmlBldrCmd_pendingTkns_add._);} + public static GfmlLxr NdeDot_lxr() {return lxr_symbol_("gfml.node_drill_0", ".", GfmlBldrCmd_ndeDot.Instance);} + public static GfmlLxr NdeHdrBgn_lxr() {return lxr_symbol_("lxr.gfml.node_hdr_0_bgn", "(", GfmlBldrCmd_ndeHdr_bgn.Instance);} + public static GfmlLxr NdeHdrEnd_lxr() {return lxr_symbol_("lxr.gfml.node_hdr_0_end", ")", GfmlBldrCmd_ndeHdr_end.Instance);} + public static GfmlLxr AtrSpr_lxr() {return lxr_symbol_("lxr.gfml.atrSpr", ",", GfmlBldrCmd_atrSpr.Instance);} + static GfmlLxr lxr_escape_(String key, String raw, String escape) {return GfmlLxr_.symbol_(key, raw, escape, GfmlBldrCmd_pendingTkns_add.Instance);} static GfmlLxr lxr_symbol_(String key, String raw, GfmlBldrCmd cmd) {return GfmlLxr_.symbol_(key, raw, raw, cmd);} } diff --git a/110_gfml/src_300_gdoc/gplx/gfml/GfmlDocWtr_.java b/110_gfml/src_300_gdoc/gplx/gfml/GfmlDocWtr_.java index 16ebcb645..ea6487a80 100644 --- a/110_gfml/src_300_gdoc/gplx/gfml/GfmlDocWtr_.java +++ b/110_gfml/src_300_gdoc/gplx/gfml/GfmlDocWtr_.java @@ -18,7 +18,7 @@ along with this program. If not, see . package gplx.gfml; import gplx.*; import gplx.core.strings.*; public class GfmlDocWtr_ { - public String Xto_str_and_clear() {return sb.Xto_str_and_clear();} + public String To_str_and_clear() {return sb.To_str_and_clear();} public void BuildAttrib(GfmlAtr atr) {Build(atr);} public void BuildNode(GfmlNde nde) {Build(nde);} void Build(GfmlItm owner) { @@ -35,6 +35,6 @@ public class GfmlDocWtr_ { public static String xtoStr_(GfmlNde nde) { GfmlDocWtr_ wtr = new GfmlDocWtr_(); wtr.BuildNode(nde); - return wtr.Xto_str_and_clear(); + return wtr.To_str_and_clear(); } } diff --git a/110_gfml/src_300_gdoc/gplx/gfml/GfmlDoc_.java b/110_gfml/src_300_gdoc/gplx/gfml/GfmlDoc_.java index 012eeec06..2704bd467 100644 --- a/110_gfml/src_300_gdoc/gplx/gfml/GfmlDoc_.java +++ b/110_gfml/src_300_gdoc/gplx/gfml/GfmlDoc_.java @@ -39,7 +39,7 @@ class GfmlUsrMsgs { Err rv = Err_.new_wo_type("gfml parse error"); for (int i = 0; i < bldr.Doc().UsrMsgs().Count(); i++) { UsrMsg um = (UsrMsg)bldr.Doc().UsrMsgs().Get_at(i); - rv.Args_add("err" + Int_.Xto_str(i), um.To_str()); + rv.Args_add("err" + Int_.To_str(i), um.To_str()); } return rv; } diff --git a/110_gfml/src_400_pragma/gplx/gfml/GfmlPragmaType.java b/110_gfml/src_400_pragma/gplx/gfml/GfmlPragmaType.java index 7608d3321..5e1503003 100644 --- a/110_gfml/src_400_pragma/gplx/gfml/GfmlPragmaType.java +++ b/110_gfml/src_400_pragma/gplx/gfml/GfmlPragmaType.java @@ -20,7 +20,7 @@ import gplx.lists.*; class GfmlPragmaType implements GfmlPragma { public String KeyOfPragma() {return pragmaKey;} private String pragmaKey = "_type"; public void Exec(GfmlBldr bldr, GfmlNde pragmaNde) { - Ordered_hash list = Ordered_hash_.new_(); List_adp replaced = List_adp_.new_(); + Ordered_hash list = Ordered_hash_.New(); List_adp replaced = List_adp_.new_(); for (int i = 0 ; i < pragmaNde.SubHnds().Count(); i++) { GfmlNde typNde = pragmaNde.SubHnds().Get_at(i); GfmlType type = GfmlTypeCompiler.Compile(typNde, GfmlType_.Root, bldr.TypeMgr().TypeRegy(), list); diff --git a/110_gfml/src_500_build/gplx/gfml/GfmlBldrCmd.java b/110_gfml/src_500_build/gplx/gfml/GfmlBldrCmd.java index 7ad3039f6..d5ec1dc8d 100644 --- a/110_gfml/src_500_build/gplx/gfml/GfmlBldrCmd.java +++ b/110_gfml/src_500_build/gplx/gfml/GfmlBldrCmd.java @@ -33,8 +33,8 @@ class GfmlBldrCmdRegy { Hash_adp hash = Hash_adp_.new_(); public static GfmlBldrCmdRegy new_() { GfmlBldrCmdRegy rv = new GfmlBldrCmdRegy(); - rv.Add(GfmlBldrCmd_elemKey_set._); - rv.Add(GfmlBldrCmd_dataTkn_set._); + rv.Add(GfmlBldrCmd_elemKey_set.Instance); + rv.Add(GfmlBldrCmd_dataTkn_set.Instance); return rv; } GfmlBldrCmdRegy() {} } diff --git a/110_gfml/src_500_build/gplx/gfml/GfmlBldrCmds.java b/110_gfml/src_500_build/gplx/gfml/GfmlBldrCmds.java index d3005e49a..7cceab071 100644 --- a/110_gfml/src_500_build/gplx/gfml/GfmlBldrCmds.java +++ b/110_gfml/src_500_build/gplx/gfml/GfmlBldrCmds.java @@ -19,22 +19,22 @@ package gplx.gfml; import gplx.*; class GfmlBldrCmd_pendingTkns_add implements GfmlBldrCmd { public String Key() {return "gfml.pendingTkns_add";} public void Exec(GfmlBldr bldr, GfmlTkn tkn) {bldr.CurFrame().WaitingTkns().Add(tkn);} - public static final GfmlBldrCmd_pendingTkns_add _ = new GfmlBldrCmd_pendingTkns_add(); GfmlBldrCmd_pendingTkns_add() {} + public static final GfmlBldrCmd_pendingTkns_add Instance = new GfmlBldrCmd_pendingTkns_add(); GfmlBldrCmd_pendingTkns_add() {} } class GfmlBldrCmd_dataTkn_set implements GfmlBldrCmd { public String Key() {return "gfml.elm_data";} public void Exec(GfmlBldr bldr, GfmlTkn tkn) {bldr.CurNdeFrame().DatTkn_set(tkn);} - public static final GfmlBldrCmd_dataTkn_set _ = new GfmlBldrCmd_dataTkn_set(); GfmlBldrCmd_dataTkn_set() {} + public static final GfmlBldrCmd_dataTkn_set Instance = new GfmlBldrCmd_dataTkn_set(); GfmlBldrCmd_dataTkn_set() {} } class GfmlBldrCmd_elemKey_set implements GfmlBldrCmd { public String Key() {return "gfml.elm_key";} public void Exec(GfmlBldr bldr, GfmlTkn tkn) {bldr.CurNdeFrame().KeyTkn_set(tkn);} - public static final GfmlBldrCmd_elemKey_set _ = new GfmlBldrCmd_elemKey_set(); GfmlBldrCmd_elemKey_set() {} + public static final GfmlBldrCmd_elemKey_set Instance = new GfmlBldrCmd_elemKey_set(); GfmlBldrCmd_elemKey_set() {} } class GfmlBldrCmd_ndeName_set implements GfmlBldrCmd { public String Key() {return "gfml.ndeName_set";} public void Exec(GfmlBldr bldr, GfmlTkn tkn) {bldr.CurNdeFrame().NdeHeader_set(tkn);} - public static final GfmlBldrCmd_ndeName_set _ = new GfmlBldrCmd_ndeName_set(); GfmlBldrCmd_ndeName_set() {} + public static final GfmlBldrCmd_ndeName_set Instance = new GfmlBldrCmd_ndeName_set(); GfmlBldrCmd_ndeName_set() {} } class GfmlBldrCmd_ndeBody_bgn implements GfmlBldrCmd { public String Key() {return "gfml.nodeBody_bgn";} @@ -42,37 +42,37 @@ class GfmlBldrCmd_ndeBody_bgn implements GfmlBldrCmd { bldr.CurNdeFrame().NdeBody_bgn(tkn); bldr.CurNdeFrame().BgnPos_set(bldr.StreamPos() - String_.Len(tkn.Raw()));// stream has already advanced tkn.len so subtract } - public static final GfmlBldrCmd_ndeBody_bgn _ = new GfmlBldrCmd_ndeBody_bgn(); GfmlBldrCmd_ndeBody_bgn() {} + public static final GfmlBldrCmd_ndeBody_bgn Instance = new GfmlBldrCmd_ndeBody_bgn(); GfmlBldrCmd_ndeBody_bgn() {} } class GfmlBldrCmd_ndeProp_bgn implements GfmlBldrCmd { public String Key() {return "cmd.gfml.ndeProp_bgn";} public void Exec(GfmlBldr bldr, GfmlTkn tkn) {bldr.CurNdeFrame().NdeProp_bgn(tkn);} - public static final GfmlBldrCmd_ndeProp_bgn _ = new GfmlBldrCmd_ndeProp_bgn(); GfmlBldrCmd_ndeProp_bgn() {} + public static final GfmlBldrCmd_ndeProp_bgn Instance = new GfmlBldrCmd_ndeProp_bgn(); GfmlBldrCmd_ndeProp_bgn() {} } class GfmlBldrCmd_ndeHdr_bgn implements GfmlBldrCmd { public String Key() {return "cmd.gfml.ndeHdr_bgn";} public void Exec(GfmlBldr bldr, GfmlTkn tkn) {bldr.CurNdeFrame().NdeParen_bgn(tkn);} - public static final GfmlBldrCmd_ndeHdr_bgn _ = new GfmlBldrCmd_ndeHdr_bgn(); GfmlBldrCmd_ndeHdr_bgn() {} + public static final GfmlBldrCmd_ndeHdr_bgn Instance = new GfmlBldrCmd_ndeHdr_bgn(); GfmlBldrCmd_ndeHdr_bgn() {} } class GfmlBldrCmd_ndeHdr_end implements GfmlBldrCmd { public String Key() {return "cmd.gfml.ndeHdr_end";} public void Exec(GfmlBldr bldr, GfmlTkn tkn) {bldr.CurNdeFrame().NdeParen_end(tkn);} - public static final GfmlBldrCmd_ndeHdr_end _ = new GfmlBldrCmd_ndeHdr_end(); GfmlBldrCmd_ndeHdr_end() {} + public static final GfmlBldrCmd_ndeHdr_end Instance = new GfmlBldrCmd_ndeHdr_end(); GfmlBldrCmd_ndeHdr_end() {} } class GfmlBldrCmd_ndeInline implements GfmlBldrCmd { public String Key() {return "gfml.nodeInline_exec_end";} public void Exec(GfmlBldr bldr, GfmlTkn tkn) {bldr.CurNdeFrame().NdeInline(tkn);} - public static final GfmlBldrCmd_ndeInline _ = new GfmlBldrCmd_ndeInline(); GfmlBldrCmd_ndeInline() {} + public static final GfmlBldrCmd_ndeInline Instance = new GfmlBldrCmd_ndeInline(); GfmlBldrCmd_ndeInline() {} } class GfmlBldrCmd_ndeDot implements GfmlBldrCmd { public String Key() {return "gfml.ndeDot";} public void Exec(GfmlBldr bldr, GfmlTkn tkn) {bldr.CurNdeFrame().NdeDot(tkn);} - public static final GfmlBldrCmd_ndeDot _ = new GfmlBldrCmd_ndeDot(); GfmlBldrCmd_ndeDot() {} + public static final GfmlBldrCmd_ndeDot Instance = new GfmlBldrCmd_ndeDot(); GfmlBldrCmd_ndeDot() {} } class GfmlBldrCmd_atrSpr implements GfmlBldrCmd { public String Key() {return "gfml.nodeInline_atrSpr";} public void Exec(GfmlBldr bldr, GfmlTkn tkn) {bldr.CurNdeFrame().AtrSpr(tkn);} - public static final GfmlBldrCmd_atrSpr _ = new GfmlBldrCmd_atrSpr(); GfmlBldrCmd_atrSpr() {} + public static final GfmlBldrCmd_atrSpr Instance = new GfmlBldrCmd_atrSpr(); GfmlBldrCmd_atrSpr() {} } class GfmlBldrCmd_frameBgn implements GfmlBldrCmd { public String Key() {return "gfml.frame_bgn";} @@ -124,5 +124,5 @@ class GfmlBldrCmd_whitespace implements GfmlBldrCmd { else bldr.CurFrame().WaitingTkns().Add(tkn); } - public static final GfmlBldrCmd_whitespace _ = new GfmlBldrCmd_whitespace(); GfmlBldrCmd_whitespace() {} + public static final GfmlBldrCmd_whitespace Instance = new GfmlBldrCmd_whitespace(); GfmlBldrCmd_whitespace() {} } diff --git a/110_gfml/src_500_build/gplx/gfml/GfmlStringHighlighter.java b/110_gfml/src_500_build/gplx/gfml/GfmlStringHighlighter.java index 214f5b9b5..18b02ea14 100644 --- a/110_gfml/src_500_build/gplx/gfml/GfmlStringHighlighter.java +++ b/110_gfml/src_500_build/gplx/gfml/GfmlStringHighlighter.java @@ -67,12 +67,12 @@ class GfmlStringHighlighter { int gap = nxtMarkBgn - endPos; if (gap > 0) { int gapDigits = Int_.DigitCount(gap); - posBfr.Add_fmt("[{0}]", Int_.Xto_str_pad_bgn_zero(gap, gapDigits)); + posBfr.Add_fmt("[{0}]", Int_.To_str_pad_bgn_zero(gap, gapDigits)); rawBfr.Add_fmt("[{0}]", String_.Repeat(".", gapDigits)); symBfr.Add_fmt(" {0} ", String_.Repeat(" ", gapDigits)); } if (curMark.Sym() != ' ') - symList.Add(String_.Format("[{0}] {1} {2}", Int_.Xto_str_pad_bgn_zero(curMark.Pos(), rawLenDigits), curMark.Sym(), curMark.Msg())); + symList.Add(String_.Format("[{0}] {1} {2}", Int_.To_str_pad_bgn_zero(curMark.Pos(), rawLenDigits), curMark.Sym(), curMark.Msg())); } if (rawBfrBgn == 0) { posBfr.Add_at(0, "<"); diff --git a/110_gfml/src_600_rdrWtr/gplx/gfml/GfmlDataWtr.java b/110_gfml/src_600_rdrWtr/gplx/gfml/GfmlDataWtr.java index 1ac985738..ca170417c 100644 --- a/110_gfml/src_600_rdrWtr/gplx/gfml/GfmlDataWtr.java +++ b/110_gfml/src_600_rdrWtr/gplx/gfml/GfmlDataWtr.java @@ -93,7 +93,7 @@ public class GfmlDataWtr extends DataWtr_base implements DataWtr { @Override public SrlMgr SrlMgr_new(Object o) {return new GfmlDataWtr();} StackAdp stack = StackAdp_.new_(); GfmlDoc gdoc = GfmlDoc.new_(); GfmlNde nde; - String keyedSpr = GfmlDataWtrOpts._.KeyedSpr(); boolean indentNodes, ignoreNullNames; + String keyedSpr = GfmlDataWtrOpts.Instance.KeyedSpr(); boolean indentNodes, ignoreNullNames; public static GfmlDataWtr new_() {return new GfmlDataWtr();} GfmlDataWtr() {this.nde = this.gdoc.RootNde();} } diff --git a/110_gfml/src_600_rdrWtr/gplx/gfml/GfmlDataWtrOpts.java b/110_gfml/src_600_rdrWtr/gplx/gfml/GfmlDataWtrOpts.java index 5f0ae9965..827bc4815 100644 --- a/110_gfml/src_600_rdrWtr/gplx/gfml/GfmlDataWtrOpts.java +++ b/110_gfml/src_600_rdrWtr/gplx/gfml/GfmlDataWtrOpts.java @@ -21,7 +21,7 @@ public class GfmlDataWtrOpts { public String KeyedSpr() {return keyedSeparator;} public GfmlDataWtrOpts KeyedSeparator_(String val) {keyedSeparator = val; return this;} private String keyedSeparator = " "; public boolean IndentNodes() {return indentNodes;} public GfmlDataWtrOpts IndentNodesOn_() {indentNodes = true; return this;} private boolean indentNodes; public boolean IgnoreNullNames() {return ignoreNullNames;} public GfmlDataWtrOpts IgnoreNullNamesOn_() {ignoreNullNames = true; return this;} private boolean ignoreNullNames; - public static final GfmlDataWtrOpts _ = new GfmlDataWtrOpts(); + public static final GfmlDataWtrOpts Instance = new GfmlDataWtrOpts(); public static GfmlDataWtrOpts new_() {return new GfmlDataWtrOpts();} GfmlDataWtrOpts() {} public static GfmlDataWtrOpts cast(Object obj) {try {return (GfmlDataWtrOpts)obj;} catch(Exception exc) {throw Err_.new_type_mismatch_w_exc(exc, GfmlDataWtrOpts.class, obj);}} } diff --git a/110_gfml/src_600_rdrWtr/gplx/gfml/GfoMsgParser_gfml.java b/110_gfml/src_600_rdrWtr/gplx/gfml/GfoMsgParser_gfml.java index d3caaaee2..03c12e27a 100644 --- a/110_gfml/src_600_rdrWtr/gplx/gfml/GfoMsgParser_gfml.java +++ b/110_gfml/src_600_rdrWtr/gplx/gfml/GfoMsgParser_gfml.java @@ -18,5 +18,5 @@ along with this program. If not, see . package gplx.gfml; import gplx.*; public class GfoMsgParser_gfml implements GfoMsgParser { public GfoMsg ParseToMsg(String s) {return GfmlDataNde.XtoMsg(s);} - public static final GfoMsgParser_gfml _ = new GfoMsgParser_gfml(); GfoMsgParser_gfml() {} + public static final GfoMsgParser_gfml Instance = new GfoMsgParser_gfml(); GfoMsgParser_gfml() {} } diff --git a/110_gfml/src_600_rdrWtr/gplx/gfml/SqlDoc.java b/110_gfml/src_600_rdrWtr/gplx/gfml/SqlDoc.java index 8bd64c6dc..78e64ede9 100644 --- a/110_gfml/src_600_rdrWtr/gplx/gfml/SqlDoc.java +++ b/110_gfml/src_600_rdrWtr/gplx/gfml/SqlDoc.java @@ -24,7 +24,7 @@ public class SqlDoc { return bldr.XtoGfmlDoc(raw); } static GfmlLxr RootLxr_() { - GfmlTkn txtTkn = GfmlTkn_.cmd_("tkn:text", SqlCmd_root._); + GfmlTkn txtTkn = GfmlTkn_.cmd_("tkn:text", SqlCmd_root.Instance); GfmlLxr rv = GfmlLxr_.general_("lxr:root", txtTkn); whitespace_(rv); operator_(rv @@ -50,14 +50,14 @@ public class SqlDoc { return rv; } static GfmlLxr quote_(GfmlLxr lxr, String quote) { - GfmlLxr rv = GfmlLxr_frame.new_("gfml.quote_0", SqlFrame_quote._, quote, quote, SqlCmd_quote_str._, SqlCmd_quote_end._); + GfmlLxr rv = GfmlLxr_frame.new_("gfml.quote_0", SqlFrame_quote.Instance, quote, quote, SqlCmd_quote_str.Instance, SqlCmd_quote_end.Instance); GfmlLxr escape = lxr_escape_("gfml.quote_0_escape", quote + quote, quote); rv.SubLxr_Add(escape); lxr.SubLxr_Add(rv); return rv; } - static GfmlLxr lxr_escape_(String key, String raw, String escape) {return GfmlLxr_.symbol_(key, raw, escape, GfmlBldrCmd_pendingTkns_add._);} + static GfmlLxr lxr_escape_(String key, String raw, String escape) {return GfmlLxr_.symbol_(key, raw, escape, GfmlBldrCmd_pendingTkns_add.Instance);} static void operator_(GfmlLxr lxr, String... opAry) { for (String op : opAry) { @@ -71,7 +71,7 @@ class SqlCmd_quote_str implements GfmlBldrCmd { public void Exec(GfmlBldr bldr, GfmlTkn tkn) { bldr.CurFrame().WaitingTkns().Add(GfmlTkn_.raw_(tkn.Raw())); } - public static final SqlCmd_quote_str _ = new SqlCmd_quote_str(); SqlCmd_quote_str() {} + public static final SqlCmd_quote_str Instance = new SqlCmd_quote_str(); SqlCmd_quote_str() {} } class SqlCmd_quote_end implements GfmlBldrCmd { public String Key() {return "sql:root";} @@ -82,26 +82,26 @@ class SqlCmd_quote_end implements GfmlBldrCmd { GfmlTkn pnd = (GfmlTkn)list.Get_at(i); sb.Add(pnd.Val()); } - //Int_.Xto_str(bldr.CurNdeFrame().Nde().SubTkns().length) + //Int_.To_str(bldr.CurNdeFrame().Nde().SubTkns().length) GfmlAtr atr = GfmlAtr.new_(GfmlTkn_.raw_("word"), GfmlTkn_.raw_(sb.To_str()), GfmlType_.String); bldr.CurNdeFrame().CurNde().SubObjs_Add(atr); bldr.Frames_end(); } - public static final SqlCmd_quote_end _ = new SqlCmd_quote_end(); SqlCmd_quote_end() {} + public static final SqlCmd_quote_end Instance = new SqlCmd_quote_end(); SqlCmd_quote_end() {} } class SqlCmd_root implements GfmlBldrCmd { public String Key() {return "sql:root";} public void Exec(GfmlBldr bldr, GfmlTkn tkn) { GfmlSqlUtl.Atr_add(bldr, "word", tkn); } - public static final SqlCmd_root _ = new SqlCmd_root(); SqlCmd_root() {} + public static final SqlCmd_root Instance = new SqlCmd_root(); SqlCmd_root() {} } class SqlFrame_quote extends GfmlFrame_base { @Override public int FrameType() {return GfmlFrame_.Type_data;} @Override public void Build_end(GfmlBldr bldr, GfmlFrame ownerFrame) { } @Override protected GfmlFrame_base MakeNew_hook() {return new SqlFrame_quote();} - public static final SqlFrame_quote _ = new SqlFrame_quote(); SqlFrame_quote() {} + public static final SqlFrame_quote Instance = new SqlFrame_quote(); SqlFrame_quote() {} } class SqlCmd_operator implements GfmlBldrCmd { public String Key() {return "sql:operator";} diff --git a/110_gfml/tst/gplx/gfml/yfxts_GfmlTypeCompiler_fxt.java b/110_gfml/tst/gplx/gfml/yfxts_GfmlTypeCompiler_fxt.java index 3834b3725..016c5d210 100644 --- a/110_gfml/tst/gplx/gfml/yfxts_GfmlTypeCompiler_fxt.java +++ b/110_gfml/tst/gplx/gfml/yfxts_GfmlTypeCompiler_fxt.java @@ -34,7 +34,7 @@ class GfmlTypeCompiler_fxt { } public void tst_Compile(GfmlNde_mok nde, GfmlTyp_mok expd) { GfmlNde gnde = run_Resolve(this.Regy(), "_type/type", nde); - Ordered_hash list = Ordered_hash_.new_(); + Ordered_hash list = Ordered_hash_.New(); GfmlType actlType = GfmlTypeCompiler.Compile(gnde, GfmlType_.Root, this.Regy(), list); GfmlTyp_mok actl = GfmlTyp_mok.type_(actlType); TfdsTstr_fxt tstr = TfdsTstr_fxt.new_(); @@ -57,7 +57,7 @@ class GfmlTypeCompiler_fxt { for (int i = 0; i < max; i++) { GfmlFld_mok expdFld = (GfmlFld_mok)tstr.List_FetchAtOrNull(expd.Subs(), i); GfmlFld_mok actlFld = (GfmlFld_mok)tstr.List_FetchAtOrNull(actl.Subs(), i); - tstr.SubName_push(Int_.Xto_str(i) + " fld"); + tstr.SubName_push(Int_.To_str(i) + " fld"); tst(tstr, expdFld, actlFld); tstr.SubName_pop(); } diff --git a/110_gfml/tst/gplx/gfml/ymoks_GfmlAtr_GfmlNde_mok.java b/110_gfml/tst/gplx/gfml/ymoks_GfmlAtr_GfmlNde_mok.java index d498e9309..4a8ff2408 100644 --- a/110_gfml/tst/gplx/gfml/ymoks_GfmlAtr_GfmlNde_mok.java +++ b/110_gfml/tst/gplx/gfml/ymoks_GfmlAtr_GfmlNde_mok.java @@ -53,7 +53,7 @@ class GfmlNde_mok implements GfmlItm_mok { public List_adp Subs() {return subs;} public String XtoStrStub() { String_bldr sb = String_bldr_.new_(); - sb.Add_kv("key=", key).Add_kv("hnd=", hnd).Add_kv("typ=", typ).Add_kv("subs=", Int_.Xto_str(subs.Count())); + sb.Add_kv("key=", key).Add_kv("hnd=", hnd).Add_kv("typ=", typ).Add_kv("subs=", Int_.To_str(subs.Count())); return sb.To_str(); } public GfmlNde_mok Subs_(GfmlItm_mok... ary) { @@ -142,7 +142,7 @@ class GfmlTypeResolver_fxt { for (int i = 0; i < max; i++) { GfmlItm_mok expdSub = (GfmlItm_mok)tstr.List_FetchAtOrNull(expd.Subs(), i); GfmlItm_mok actlSub = (GfmlItm_mok)tstr.List_FetchAtOrNull(actl.Subs(), i); - tstr.SubName_push(Int_.Xto_str(i)); + tstr.SubName_push(Int_.To_str(i)); if (expdSub == null) { GfmlNde_mok mm = GfmlNde_mok.as_(actlSub); String actlSubStr = mm == null ? "sub:null" : mm.XtoStrStub(); diff --git a/110_gfml/tst/gplx/gfml/ymoks_GfmlTkn_mok.java b/110_gfml/tst/gplx/gfml/ymoks_GfmlTkn_mok.java index f6963d5d7..65d7f9cf1 100644 --- a/110_gfml/tst/gplx/gfml/ymoks_GfmlTkn_mok.java +++ b/110_gfml/tst/gplx/gfml/ymoks_GfmlTkn_mok.java @@ -68,7 +68,7 @@ class GfmlTkn_mok { for (int i = 0; i < max; i++) { GfmlTkn_mok expdSub = (GfmlTkn_mok)tstr.List_FetchAtOrNull(expd.Subs(), i); GfmlTkn_mok actlSub = (GfmlTkn_mok)tstr.List_FetchAtOrNull(actl.Subs(), i); - tstr.SubName_push(Int_.Xto_str(i)); + tstr.SubName_push(Int_.To_str(i)); tst(tstr, expdSub, actlSub); tstr.SubName_pop(); } diff --git a/110_gfml/tst/gplx/gfml/ymoks_UsrMsg_mok.java b/110_gfml/tst/gplx/gfml/ymoks_UsrMsg_mok.java index 440e7ab25..b7031c9de 100644 --- a/110_gfml/tst/gplx/gfml/ymoks_UsrMsg_mok.java +++ b/110_gfml/tst/gplx/gfml/ymoks_UsrMsg_mok.java @@ -20,8 +20,8 @@ class UsrMsg_mok { public String Main() {return main;} public UsrMsg_mok Main_(String v) {main = v; return this;} private String main; public UsrMsg_mok Add_(String k, Object o) {hash.Add(k, KeyVal_.new_(k, o)); return this;} public UsrMsg_mok Require_(String k) {required.Add(k, k); return this;} - public Ordered_hash Args() {return hash;} Ordered_hash hash = Ordered_hash_.new_(); - public Ordered_hash Required() {return required;} Ordered_hash required = Ordered_hash_.new_(); + public Ordered_hash Args() {return hash;} Ordered_hash hash = Ordered_hash_.New(); + public Ordered_hash Required() {return required;} Ordered_hash required = Ordered_hash_.New(); public static UsrMsg_mok new_(UsrMsg um) { UsrMsg_mok rv = new UsrMsg_mok(); if (um != null) { diff --git a/110_gfml/tst/gplx/gfml/z801_useCase_DataRdr_tst.java b/110_gfml/tst/gplx/gfml/z801_useCase_DataRdr_tst.java index 5b2103d21..a15c82c66 100644 --- a/110_gfml/tst/gplx/gfml/z801_useCase_DataRdr_tst.java +++ b/110_gfml/tst/gplx/gfml/z801_useCase_DataRdr_tst.java @@ -59,7 +59,7 @@ public class z801_useCase_DataRdr_tst { fx_rdr.tst_Atrs(subRdr, kv_("x", "1"), kv_("y", "2")); } KeyVal kv_(String key, Object val) {return KeyVal_.new_(key, val);} - DataRdr_Fxt fx_rdr = DataRdr_Fxt._; + DataRdr_Fxt fx_rdr = DataRdr_Fxt.Instance; DataRdr rdr, subRdr; } class DataRdr_Fxt { @@ -77,5 +77,5 @@ class DataRdr_Fxt { actlAry[i] = rdr.KeyValAt(i); Tfds.Eq_ary_str(expdAry, actlAry); } - public static final DataRdr_Fxt _ = new DataRdr_Fxt(); DataRdr_Fxt() {} + public static final DataRdr_Fxt Instance = new DataRdr_Fxt(); DataRdr_Fxt() {} } diff --git a/110_gfml/tst/gplx/gfml/z803_useCase_KbdKeyboard_tst.java b/110_gfml/tst/gplx/gfml/z803_useCase_KbdKeyboard_tst.java index 850c4c35f..100f4c451 100644 --- a/110_gfml/tst/gplx/gfml/z803_useCase_KbdKeyboard_tst.java +++ b/110_gfml/tst/gplx/gfml/z803_useCase_KbdKeyboard_tst.java @@ -56,7 +56,7 @@ public class z803_useCase_KbdKeyboard_tst { } @Test public void Load_Smoke() { Io_url url = Tfds.RscDir.GenSubFil_nest("110_gfml", "cfgs_archive", "gfui-keyboard-ui.cfg.gfml"); - raw = Io_mgr.I.LoadFilStr(url); + raw = Io_mgr.Instance.LoadFilStr(url); gdoc = GfmlDoc_.parse_any_eol_(raw); // Tfds.Write(gdoc.RootNde().To_str()); } diff --git a/110_gfml/tst/gplx/gfml/z901_perf_tst.java b/110_gfml/tst/gplx/gfml/z901_perf_tst.java index b0ee0154c..a3cadc1ca 100644 --- a/110_gfml/tst/gplx/gfml/z901_perf_tst.java +++ b/110_gfml/tst/gplx/gfml/z901_perf_tst.java @@ -23,7 +23,7 @@ public class z901_perf_tst { // @Test public void Long() { // String longText = String_.Repeat("a", 30 * 1000 * 1000); - String longText = Io_mgr.I.LoadFilStr(Io_url_.new_any_("C:\\core_weekly.temp.gfio")); + String longText = Io_mgr.Instance.LoadFilStr(Io_url_.new_any_("C:\\core_weekly.temp.gfio")); // String_bldr sbXml = String_bldr_.new_(); // sbXml.Add("<"); // sbXml.Add(longText); @@ -108,7 +108,7 @@ class TimerWatch { this.End(); Tfds.Write(XtoStr_ms() + " " + text); } - public String XtoStr_ms() {return Long_.Xto_str(duration);} + public String XtoStr_ms() {return Long_.To_str(duration);} public static TimerWatch new_() { TimerWatch rv = new TimerWatch(); rv.Bgn(); diff --git a/140_dbs/src/gplx/dbs/Db_conn.java b/140_dbs/src/gplx/dbs/Db_conn.java index d0bd726ac..0249ed053 100644 --- a/140_dbs/src/gplx/dbs/Db_conn.java +++ b/140_dbs/src/gplx/dbs/Db_conn.java @@ -45,7 +45,7 @@ public class Db_conn { public void Env_db_detach(String alias) {engine.Env_db_detach(alias);} public void Env_vacuum() {Exec_sql_plog_ntx("vacuuming: url=" + this.Conn_info().Xto_api(), "VACUUM;");} public void Ddl_create_tbl(Db_meta_tbl meta) {engine.Ddl_create_tbl(meta); engine.Ddl_create_idx(Gfo_usr_dlg_.Noop, meta.Idxs());} - public void Ddl_create_idx(Db_meta_idx... idxs) {engine.Ddl_create_idx(Gfo_usr_dlg_.I, idxs);} + public void Ddl_create_idx(Db_meta_idx... idxs) {engine.Ddl_create_idx(Gfo_usr_dlg_.Instance, idxs);} public void Ddl_create_idx(Gfo_usr_dlg usr_dlg, Db_meta_idx... idxs) {engine.Ddl_create_idx(usr_dlg, idxs);} public void Ddl_append_fld(String tbl, Db_meta_fld fld) {engine.Ddl_append_fld(tbl, fld);} public void Ddl_delete_tbl(String tbl) {engine.Ddl_delete_tbl(tbl);} @@ -59,18 +59,18 @@ public class Db_conn { itm.Rls(); } engine.Conn_term(); - Db_conn_pool.I.Del(engine.Conn_info()); + Db_conn_pool.Instance.Del(engine.Conn_info()); } public int Exec_sql(String sql) {return this.Exec_qry(Db_qry_sql.dml_(sql));} public Db_rdr Exec_sql_as_rdr_v2(String sql) {return this.Stmt_new(Db_qry_sql.dml_(sql)).Exec_select__rls_auto();} public int Exec_sql_plog_ntx(String msg, String sql) {return Exec_sql_plog(Bool_.N, msg, sql);} public int Exec_sql_plog_txn(String msg, String sql) {return Exec_sql_plog(Bool_.Y, msg, sql);} public int Exec_sql_plog(boolean txn, String msg, String sql) { - Gfo_usr_dlg_.I.Plog_many("", "", msg); + Gfo_usr_dlg_.Instance.Plog_many("", "", msg); if (txn) this.Txn_bgn(msg); int rv = Exec_sql(sql); if (txn) this.Txn_end(); - Gfo_usr_dlg_.I.Plog_many("", "", "done:" + msg); + Gfo_usr_dlg_.Instance.Plog_many("", "", "done:" + msg); return rv; } public int Exec_qry(Db_qry qry) {return Int_.cast(engine.Exec_as_obj(qry));} diff --git a/140_dbs/src/gplx/dbs/Db_conn_.java b/140_dbs/src/gplx/dbs/Db_conn_.java index 3a2a5449c..bdc6dffa5 100644 --- a/140_dbs/src/gplx/dbs/Db_conn_.java +++ b/140_dbs/src/gplx/dbs/Db_conn_.java @@ -18,7 +18,7 @@ along with this program. If not, see . package gplx.dbs; import gplx.*; import gplx.dbs.qrys.*; public class Db_conn_ { - public static final Db_conn Noop = Db_conn_pool.I.Get_or_new(Db_conn_info_.Null); + public static final Db_conn Noop = Db_conn_pool.Instance.Get_or_new(Db_conn_info_.Null); public static int Select_fld0_as_int_or(Db_conn p, String sql, int or) { DataRdr rdr = DataRdr_.Null; try { diff --git a/140_dbs/src/gplx/dbs/Db_conn_bldr.java b/140_dbs/src/gplx/dbs/Db_conn_bldr.java index d1a9b6fc9..d5af39084 100644 --- a/140_dbs/src/gplx/dbs/Db_conn_bldr.java +++ b/140_dbs/src/gplx/dbs/Db_conn_bldr.java @@ -18,8 +18,8 @@ along with this program. If not, see . package gplx.dbs; import gplx.*; public class Db_conn_bldr { private Db_conn_bldr_wkr wkr; - public void Reg_default_sqlite() {wkr = Db_conn_bldr_wkr__sqlite.I; wkr.Clear_for_tests();} - public void Reg_default_mem() {wkr = Db_conn_bldr_wkr__mem.I; wkr.Clear_for_tests();} + public void Reg_default_sqlite() {wkr = Db_conn_bldr_wkr__sqlite.Instance; wkr.Clear_for_tests();} + public void Reg_default_mem() {wkr = Db_conn_bldr_wkr__mem.Instance; wkr.Clear_for_tests();} public boolean Exists(Io_url url) {return wkr.Exists(url);} public Db_conn Get(Io_url url) {return wkr.Get(url);} public Db_conn New(Io_url url) {return wkr.New(url);} @@ -32,5 +32,5 @@ public class Db_conn_bldr { Db_conn rv = wkr.Get(url); return rv == null ? Db_conn_.Noop : rv; } - public static final Db_conn_bldr I = new Db_conn_bldr(); Db_conn_bldr() {} + public static final Db_conn_bldr Instance = new Db_conn_bldr(); Db_conn_bldr() {} } diff --git a/140_dbs/src/gplx/dbs/Db_conn_bldr_wkr.java b/140_dbs/src/gplx/dbs/Db_conn_bldr_wkr.java index a54c82670..ddbd23f5e 100644 --- a/140_dbs/src/gplx/dbs/Db_conn_bldr_wkr.java +++ b/140_dbs/src/gplx/dbs/Db_conn_bldr_wkr.java @@ -25,25 +25,25 @@ public interface Db_conn_bldr_wkr { } class Db_conn_bldr_wkr__sqlite implements Db_conn_bldr_wkr { public void Clear_for_tests() {} - public boolean Exists(Io_url url) {return Io_mgr.I.ExistsFil(url);} + public boolean Exists(Io_url url) {return Io_mgr.Instance.ExistsFil(url);} public Db_conn Get(Io_url url) { - if (!Io_mgr.I.ExistsFil(url)) return null; + if (!Io_mgr.Instance.ExistsFil(url)) return null; Db_conn_info db_url = Db_conn_info_.sqlite_(url); - return Db_conn_pool.I.Get_or_new(db_url); + return Db_conn_pool.Instance.Get_or_new(db_url); } public Db_conn New(Io_url url) { - Io_mgr.I.CreateDirIfAbsent(url.OwnerDir()); // must assert that dir exists + Io_mgr.Instance.CreateDirIfAbsent(url.OwnerDir()); // must assert that dir exists Db_conn_info db_url = Sqlite_conn_info.make_(url); - Db_conn conn = Db_conn_pool.I.Get_or_new(db_url); + Db_conn conn = Db_conn_pool.Instance.Get_or_new(db_url); Sqlite_engine_.Pragma_page_size(conn, 4096); // conn.Conn_term(); // close conn after PRAGMA adjusted return conn; } - public static final Db_conn_bldr_wkr__sqlite I = new Db_conn_bldr_wkr__sqlite(); Db_conn_bldr_wkr__sqlite() {} + public static final Db_conn_bldr_wkr__sqlite Instance = new Db_conn_bldr_wkr__sqlite(); Db_conn_bldr_wkr__sqlite() {} } class Db_conn_bldr_wkr__mem implements Db_conn_bldr_wkr { private final Hash_adp hash = Hash_adp_.new_(); - public void Clear_for_tests() {hash.Clear(); Db_conn_pool.I.Clear();} + public void Clear_for_tests() {hash.Clear(); Db_conn_pool.Instance.Clear();} public boolean Exists(Io_url url) { String io_url_str = url.Xto_api(); return hash.Has(io_url_str); @@ -51,12 +51,12 @@ class Db_conn_bldr_wkr__mem implements Db_conn_bldr_wkr { public Db_conn Get(Io_url url) { String io_url_str = url.Xto_api(); if (!hash.Has(io_url_str)) return null; - return Db_conn_pool.I.Get_or_new__mem(url.Xto_api()); + return Db_conn_pool.Instance.Get_or_new__mem(url.Xto_api()); } public Db_conn New(Io_url url) { String io_url_str = url.Xto_api(); hash.Add(io_url_str, io_url_str); - return Db_conn_pool.I.Get_or_new__mem(url.Xto_api()); + return Db_conn_pool.Instance.Get_or_new__mem(url.Xto_api()); } - public static final Db_conn_bldr_wkr__mem I = new Db_conn_bldr_wkr__mem(); Db_conn_bldr_wkr__mem() {} + public static final Db_conn_bldr_wkr__mem Instance = new Db_conn_bldr_wkr__mem(); Db_conn_bldr_wkr__mem() {} } diff --git a/140_dbs/src/gplx/dbs/Db_conn_info_.java b/140_dbs/src/gplx/dbs/Db_conn_info_.java index 535e02121..dcf12775a 100644 --- a/140_dbs/src/gplx/dbs/Db_conn_info_.java +++ b/140_dbs/src/gplx/dbs/Db_conn_info_.java @@ -19,19 +19,19 @@ package gplx.dbs; import gplx.*; import gplx.dbs.engines.nulls.*; import gplx.dbs.engines.mems.*; import gplx.dbs.engines.sqlite.*; import gplx.dbs.engines.tdbs.*; import gplx.dbs.engines.mysql.*; import gplx.dbs.engines.postgres.*; public class Db_conn_info_ { - public static final Db_conn_info Null = Noop_conn_info.I; + public static final Db_conn_info Null = Noop_conn_info.Instance; public static final Db_conn_info Test = Mysql_conn_info.new_("127.0.0.1", "unit_tests", "root", "mysql7760"); - public static Db_conn_info parse(String raw) {return Db_conn_info_pool._.Parse(raw);} + public static Db_conn_info parse(String raw) {return Db_conn_info_pool.Instance.Parse(raw);} public static Db_conn_info sqlite_(Io_url url) {return Sqlite_conn_info.load_(url);} public static Db_conn_info tdb_(Io_url url) {return Tdb_conn_info.new_(url);} public static Db_conn_info mem_(String db) {return Db_conn_info__mem.new_(db);} public static final String Key_tdb = Tdb_conn_info.Tid_const; } class Db_conn_info_pool { - private Ordered_hash regy = Ordered_hash_.new_(); + private Ordered_hash regy = Ordered_hash_.New(); public Db_conn_info_pool() { - this.Add(Noop_conn_info.I).Add(Tdb_conn_info._).Add(Mysql_conn_info._).Add(Postgres_conn_info._).Add(Sqlite_conn_info._); - this.Add(Db_conn_info__mem.I); + this.Add(Noop_conn_info.Instance).Add(Tdb_conn_info.Instance).Add(Mysql_conn_info.Instance).Add(Postgres_conn_info.Instance).Add(Sqlite_conn_info.Instance); + this.Add(Db_conn_info__mem.Instance); } public Db_conn_info_pool Add(Db_conn_info itm) {regy.Add_if_dupe_use_nth(itm.Tid(), itm); return this;} public Db_conn_info Parse(String raw) {// assume each pair has format of: name=val; @@ -52,5 +52,5 @@ class Db_conn_info_pool { } catch(Exception exc) {throw Err_.new_parse_exc(exc, Db_conn_info.class, raw);} } - public static final Db_conn_info_pool _ = new Db_conn_info_pool(); + public static final Db_conn_info_pool Instance = new Db_conn_info_pool(); } diff --git a/140_dbs/src/gplx/dbs/Db_conn_info__base.java b/140_dbs/src/gplx/dbs/Db_conn_info__base.java index b74461fff..93a09e229 100644 --- a/140_dbs/src/gplx/dbs/Db_conn_info__base.java +++ b/140_dbs/src/gplx/dbs/Db_conn_info__base.java @@ -47,6 +47,6 @@ public abstract class Db_conn_info__base implements Db_conn_info { bfr.Add_str_u8(itm); bfr.Add_byte(i % 2 == 0 ? Byte_ascii.Eq : Byte_ascii.Semic); } - return bfr.Xto_str(); + return bfr.To_str(); } } diff --git a/140_dbs/src/gplx/dbs/Db_conn_info_tst.java b/140_dbs/src/gplx/dbs/Db_conn_info_tst.java index 5aa8d41d5..2252a0405 100644 --- a/140_dbs/src/gplx/dbs/Db_conn_info_tst.java +++ b/140_dbs/src/gplx/dbs/Db_conn_info_tst.java @@ -19,7 +19,7 @@ package gplx.dbs; import gplx.*; import org.junit.*; public class Db_conn_info_tst { @Before public void setup() { - regy.Add(Db_conn_info_mock._); + regy.Add(Db_conn_info_mock.Instance); } private final Db_conn_info_pool regy = new Db_conn_info_pool(); @Test public void Parse() { tst_Parse("gplx_key=mock;id=1;", kv_("id", "1")); // one; gplx_key removed @@ -42,5 +42,5 @@ class Db_conn_info_mock extends Db_conn_info__base { rv.kvs[i] = m.Args_getAt(i); return rv; } - public static final Db_conn_info_mock _ = new Db_conn_info_mock(); Db_conn_info_mock() {} + public static final Db_conn_info_mock Instance = new Db_conn_info_mock(); Db_conn_info_mock() {} } diff --git a/140_dbs/src/gplx/dbs/Db_conn_pool.java b/140_dbs/src/gplx/dbs/Db_conn_pool.java index a12261bfc..97a4b0779 100644 --- a/140_dbs/src/gplx/dbs/Db_conn_pool.java +++ b/140_dbs/src/gplx/dbs/Db_conn_pool.java @@ -39,8 +39,8 @@ public class Db_conn_pool { for (Db_engine itm : ary) engine_hash.Add(itm.Tid(), itm); } - public static final Db_conn_pool I = new Db_conn_pool(); Db_conn_pool() {this.Init();} + public static final Db_conn_pool Instance = new Db_conn_pool(); Db_conn_pool() {this.Init();} private void Init() { - this.Engines__add(Noop_engine._, TdbEngine._, Mysql_engine._, Postgres_engine._, Sqlite_engine._, Db_engine__mem._); + this.Engines__add(Noop_engine.Instance, TdbEngine.Instance, Mysql_engine.Instance, Postgres_engine.Instance, Sqlite_engine.Instance, Db_engine__mem.Instance); } } diff --git a/140_dbs/src/gplx/dbs/Db_crt_tst.java b/140_dbs/src/gplx/dbs/Db_crt_tst.java index ced559b78..387f385d4 100644 --- a/140_dbs/src/gplx/dbs/Db_crt_tst.java +++ b/140_dbs/src/gplx/dbs/Db_crt_tst.java @@ -20,7 +20,7 @@ import org.junit.*; import gplx.core.criterias.*; public class Db_crt_tst { @Before public void setup() { - row = GfoNde_.vals_(GfoFldList_.new_().Add("id", IntClassXtn._).Add("name", StringClassXtn._), Object_.Ary(1, "me")); + row = GfoNde_.vals_(GfoFldList_.new_().Add("id", IntClassXtn.Instance).Add("name", StringClassXtn.Instance), Object_.Ary(1, "me")); } @Test public void EqualTest() { crt = Db_crt_.eq_("id", 1); diff --git a/140_dbs/src/gplx/dbs/Db_meta_fld_list.java b/140_dbs/src/gplx/dbs/Db_meta_fld_list.java index 9f2db101f..f015e349b 100644 --- a/140_dbs/src/gplx/dbs/Db_meta_fld_list.java +++ b/140_dbs/src/gplx/dbs/Db_meta_fld_list.java @@ -17,7 +17,7 @@ along with this program. If not, see . */ package gplx.dbs; import gplx.*; public class Db_meta_fld_list { - private final Ordered_hash flds = Ordered_hash_.new_(); + private final Ordered_hash flds = Ordered_hash_.New(); private final List_adp keys = List_adp_.new_(); public void Clear() {flds.Clear(); keys.Clear();} public Db_meta_fld Get_by(String name) {return (Db_meta_fld)flds.Get_by(name);} diff --git a/140_dbs/src/gplx/dbs/Db_meta_idx.java b/140_dbs/src/gplx/dbs/Db_meta_idx.java index a49bfdb4d..b71caeb19 100644 --- a/140_dbs/src/gplx/dbs/Db_meta_idx.java +++ b/140_dbs/src/gplx/dbs/Db_meta_idx.java @@ -23,7 +23,7 @@ public class Db_meta_idx { public String Name() {return name;} private final String name; public boolean Unique() {return unique;} private final boolean unique; public String[] Flds() {return flds;} private final String[] flds; - public String To_sql_create() {return Db_sqlbldr__sqlite.I.Bld_create_idx(this);} + public String To_sql_create() {return Db_sqlbldr__sqlite.Instance.Bld_create_idx(this);} public static Db_meta_idx new_unique_by_name(String tbl, String idx_name, String... flds) {return new Db_meta_idx(tbl, idx_name, Bool_.Y, flds);} public static Db_meta_idx new_normal_by_name(String tbl, String idx_name, String... flds) {return new Db_meta_idx(tbl, idx_name, Bool_.N, flds);} public static Db_meta_idx new_unique_by_tbl(String tbl, String name, String... flds) {return new Db_meta_idx(tbl, Bld_idx_name(tbl, name), Bool_.Y, flds);} diff --git a/140_dbs/src/gplx/dbs/Db_meta_tbl.java b/140_dbs/src/gplx/dbs/Db_meta_tbl.java index 6f7cd1faf..a32bd1bdb 100644 --- a/140_dbs/src/gplx/dbs/Db_meta_tbl.java +++ b/140_dbs/src/gplx/dbs/Db_meta_tbl.java @@ -26,7 +26,7 @@ public class Db_meta_tbl { public Db_meta_fld[] Flds() {return flds;} private final Db_meta_fld[] flds; public boolean Flds_has(String fld) { if (flds_hash == null) { - flds_hash = Ordered_hash_.new_(); + flds_hash = Ordered_hash_.New(); int len = flds.length; for (int i = 0; i < len; ++i) { Db_meta_fld fld_itm = flds[i]; @@ -36,7 +36,7 @@ public class Db_meta_tbl { return flds_hash.Has(fld); } private Ordered_hash flds_hash; public Db_meta_idx[] Idxs() {return idxs;} private final Db_meta_idx[] idxs; - public String To_sql_create() {return Db_sqlbldr__sqlite.I.Bld_create_tbl(this);} + public String To_sql_create() {return Db_sqlbldr__sqlite.Instance.Bld_create_tbl(this);} public static Db_meta_tbl new_(String name, Db_meta_fld_list flds, Db_meta_idx... idxs) {return new Db_meta_tbl(name, flds.To_fld_ary(), idxs);} public static Db_meta_tbl new_(String name, Db_meta_fld[] flds, Db_meta_idx... idxs) {return new Db_meta_tbl(name, flds, idxs);} public static Db_meta_tbl new_(String name, Db_meta_fld... flds) {return new Db_meta_tbl(name, flds, null);} diff --git a/140_dbs/src/gplx/dbs/Db_sql_select.java b/140_dbs/src/gplx/dbs/Db_sql_select.java index 1628168c7..d1a86b27e 100644 --- a/140_dbs/src/gplx/dbs/Db_sql_select.java +++ b/140_dbs/src/gplx/dbs/Db_sql_select.java @@ -30,7 +30,7 @@ class Db_sql_qry__select { // public int Limit() {return limit;} private int limit; // public int Offset() {return offset;} private int offset; public Db_sql_qry__select Select_all_() {this.select = Db_sql_col_.Ary(new Db_sql_col__all(0, from)); return this;} - public Db_sql_qry__select Select_flds_(String... ary) {this.select = Db_sql_col_bldr.I.new_fld_many(ary); return this;} + public Db_sql_qry__select Select_flds_(String... ary) {this.select = Db_sql_col_bldr.Instance.new_fld_many(ary); return this;} public static Db_sql_qry__select new_(String from) {return new Db_sql_qry__select(from);} } class Db_sql_bldr { @@ -63,7 +63,7 @@ class Db_sql_col_bldr { } return (Db_sql_col[])tmp_list.To_ary_and_clear(Db_sql_col.class); } - public static final Db_sql_col_bldr I = new Db_sql_col_bldr(); Db_sql_col_bldr() {} + public static final Db_sql_col_bldr Instance = new Db_sql_col_bldr(); Db_sql_col_bldr() {} } class Db_sql_col__name { public Db_sql_col__name(int ord, String key) {this.ord = ord; this.key = key;} diff --git a/140_dbs/src/gplx/dbs/Db_stmt.java b/140_dbs/src/gplx/dbs/Db_stmt.java index e58e350c3..65e47570a 100644 --- a/140_dbs/src/gplx/dbs/Db_stmt.java +++ b/140_dbs/src/gplx/dbs/Db_stmt.java @@ -26,6 +26,7 @@ public interface Db_stmt extends RlsAble { Db_stmt Val_byte(byte v); Db_stmt Crt_int(String k, int v); Db_stmt Val_int(String k, int v); + Db_stmt Val_int_by_bool(String k, boolean v); Db_stmt Val_int(int v); Db_stmt Crt_long(String k, long v); Db_stmt Val_long(String k, long v); diff --git a/140_dbs/src/gplx/dbs/engines/Db_engine_sql_base.java b/140_dbs/src/gplx/dbs/engines/Db_engine_sql_base.java index 05cd56332..0c28f60ba 100644 --- a/140_dbs/src/gplx/dbs/engines/Db_engine_sql_base.java +++ b/140_dbs/src/gplx/dbs/engines/Db_engine_sql_base.java @@ -65,16 +65,16 @@ public abstract class Db_engine_sql_base implements Db_engine { } } public void Ddl_append_fld(String tbl, Db_meta_fld fld) { - Gfo_usr_dlg_.I.Plog_many("", "", "adding column to table: db=~{0} tbl=~{1} fld=~{2}", conn_info.Database(), tbl, fld.Name()); + Gfo_usr_dlg_.Instance.Plog_many("", "", "adding column to table: db=~{0} tbl=~{1} fld=~{2}", conn_info.Database(), tbl, fld.Name()); try { - Exec_as_int(Db_sqlbldr__sqlite.I.Bld_alter_tbl_add(tbl, fld)); - Gfo_usr_dlg_.I.Plog_many("", "", "column added to table: db=~{0} tbl=~{1} fld=~{2}", conn_info.Database(), tbl, fld.Name()); + Exec_as_int(Db_sqlbldr__sqlite.Instance.Bld_alter_tbl_add(tbl, fld)); + Gfo_usr_dlg_.Instance.Plog_many("", "", "column added to table: db=~{0} tbl=~{1} fld=~{2}", conn_info.Database(), tbl, fld.Name()); } catch (Exception e) { // catch error if column already added to table - Gfo_usr_dlg_.I.Warn_many("", "", "column not added to table: db=~{0} tbl=~{1} fld=~{2} err=~{3}", conn_info.Database(), tbl, fld.Name(), Err_.Message_gplx_full(e)); + Gfo_usr_dlg_.Instance.Warn_many("", "", "column not added to table: db=~{0} tbl=~{1} fld=~{2} err=~{3}", conn_info.Database(), tbl, fld.Name(), Err_.Message_gplx_full(e)); } } - public void Ddl_delete_tbl(String tbl) {Exec_as_int(Db_sqlbldr__sqlite.I.Bld_drop_tbl(tbl));} + public void Ddl_delete_tbl(String tbl) {Exec_as_int(Db_sqlbldr__sqlite.Instance.Bld_drop_tbl(tbl));} @gplx.Virtual public void Env_db_attach(String alias, Io_url db_url) {} @gplx.Virtual public void Env_db_detach(String alias) {} @gplx.Virtual public boolean Meta_tbl_exists(String tbl) {return false;} diff --git a/140_dbs/src/gplx/dbs/engines/mems/Db_conn_info__mem.java b/140_dbs/src/gplx/dbs/engines/mems/Db_conn_info__mem.java index 3ec3de7ba..68e5b5a38 100644 --- a/140_dbs/src/gplx/dbs/engines/mems/Db_conn_info__mem.java +++ b/140_dbs/src/gplx/dbs/engines/mems/Db_conn_info__mem.java @@ -29,5 +29,5 @@ public class Db_conn_info__mem extends Db_conn_info__base { , "database", database )); } - public static final Db_conn_info__mem I = new Db_conn_info__mem(); Db_conn_info__mem() {} + public static final Db_conn_info__mem Instance = new Db_conn_info__mem(); Db_conn_info__mem() {} } diff --git a/140_dbs/src/gplx/dbs/engines/mems/Db_engine__mem.java b/140_dbs/src/gplx/dbs/engines/mems/Db_engine__mem.java index 6e95628b1..5a9d75ad9 100644 --- a/140_dbs/src/gplx/dbs/engines/mems/Db_engine__mem.java +++ b/140_dbs/src/gplx/dbs/engines/mems/Db_engine__mem.java @@ -52,5 +52,5 @@ public class Db_engine__mem implements Db_engine { return mem_tbl.Meta().Flds_has(fld); } // public boolean Meta_fld_exists(String name) {return tbl_hash.Has(name);} - public static final Db_engine__mem _ = new Db_engine__mem(); Db_engine__mem() {} + public static final Db_engine__mem Instance = new Db_engine__mem(); Db_engine__mem() {} } diff --git a/140_dbs/src/gplx/dbs/engines/mems/Db_stmt__mem.java b/140_dbs/src/gplx/dbs/engines/mems/Db_stmt__mem.java index bde950e5c..66e415f8f 100644 --- a/140_dbs/src/gplx/dbs/engines/mems/Db_stmt__mem.java +++ b/140_dbs/src/gplx/dbs/engines/mems/Db_stmt__mem.java @@ -18,7 +18,7 @@ along with this program. If not, see . package gplx.dbs.engines.mems; import gplx.*; import gplx.dbs.*; import gplx.dbs.engines.*; public class Db_stmt__mem implements Db_stmt { private static final String Key_na = ""; // key is not_available; only called by procs with signature of Val( v); - private final Ordered_hash val_list = Ordered_hash_.new_(); + private final Ordered_hash val_list = Ordered_hash_.New(); public Db_stmt__mem(Db_engine__mem engine, Db_qry qry) {Ctor_stmt(engine, qry);} private Db_engine__mem engine; public void Ctor_stmt(Db_engine engine, Db_qry qry) {this.engine = (Db_engine__mem)engine; this.qry = qry;} public Hash_adp Crts() {return crt_hash;} private final Hash_adp crt_hash = Hash_adp_.new_(); @@ -45,6 +45,7 @@ public class Db_stmt__mem implements Db_stmt { return this; } public Db_stmt Crt_int(String k, int v) {return Add_int(Bool_.Y, k, v);} + public Db_stmt Val_int_by_bool(String k, boolean v) {return Add_int(Bool_.N, k, v ? 1 : 0);} public Db_stmt Val_int(String k, int v) {return Add_int(Bool_.N, k, v);} public Db_stmt Val_int(int v) {return Add_int(Bool_.N, Key_na, v);} private Db_stmt Add_int(boolean where, String k, int v) { @@ -101,7 +102,7 @@ public class Db_stmt__mem implements Db_stmt { try { Bry_bfr bfr = Bry_bfr.new_(); gplx.ios.Io_stream_rdr_.Load_all_to_bfr(bfr, v); - Add("", Bool_.N, bfr.Xto_str_and_clear()); + Add("", Bool_.N, bfr.To_str_and_clear()); } catch (Exception e) {throw Err_.new_exc(e, "db", "failed to add value", "type", "rdr", "val", v);} return this; } diff --git a/140_dbs/src/gplx/dbs/engines/mems/Mem_row.java b/140_dbs/src/gplx/dbs/engines/mems/Mem_row.java index 8b4b38b8e..fd5d11280 100644 --- a/140_dbs/src/gplx/dbs/engines/mems/Mem_row.java +++ b/140_dbs/src/gplx/dbs/engines/mems/Mem_row.java @@ -17,7 +17,7 @@ along with this program. If not, see . */ package gplx.dbs.engines.mems; import gplx.*; import gplx.dbs.*; import gplx.dbs.engines.*; public class Mem_row implements GfoInvkAble { - private final Ordered_hash hash = Ordered_hash_.new_(); + private final Ordered_hash hash = Ordered_hash_.New(); public Object Get_by(String key) {return hash.Get_by(key);} public Object Get_at(int i) {return hash.Get_at(i);} public void Set_by(String key, Object val) {hash.Add_if_dupe_use_nth(key, val);} diff --git a/140_dbs/src/gplx/dbs/engines/mysql/Mysql_conn_info.java b/140_dbs/src/gplx/dbs/engines/mysql/Mysql_conn_info.java index 1e2601778..df4c78f3c 100644 --- a/140_dbs/src/gplx/dbs/engines/mysql/Mysql_conn_info.java +++ b/140_dbs/src/gplx/dbs/engines/mysql/Mysql_conn_info.java @@ -37,5 +37,5 @@ public class Mysql_conn_info extends Db_conn_info__base { rv.pwd = m.ReadStr("pwd"); return rv; } - public static final Mysql_conn_info _ = new Mysql_conn_info(); Mysql_conn_info() {} + public static final Mysql_conn_info Instance = new Mysql_conn_info(); Mysql_conn_info() {} } diff --git a/140_dbs/src/gplx/dbs/engines/mysql/Mysql_engine.java b/140_dbs/src/gplx/dbs/engines/mysql/Mysql_engine.java index 14aec8bbf..81f92cc2a 100644 --- a/140_dbs/src/gplx/dbs/engines/mysql/Mysql_engine.java +++ b/140_dbs/src/gplx/dbs/engines/mysql/Mysql_engine.java @@ -31,7 +31,7 @@ public class Mysql_engine extends Db_engine_sql_base { Mysql_conn_info conn_info_as_mysql = (Mysql_conn_info)conn_info; return Conn_make_by_url("jdbc:mysql://localhost/" + conn_info_as_mysql.Database() + "?characterEncoding=UTF8", conn_info_as_mysql.Uid(), conn_info_as_mysql.Pwd()); } - public static final Mysql_engine _ = new Mysql_engine(); Mysql_engine() {} + public static final Mysql_engine Instance = new Mysql_engine(); Mysql_engine() {} } class Mysql_rdr extends Db_data_rdr { //PATCH:MYSQL:byte actually returned as int by Jdbc ResultSet (or MYSQL impmentation); convert to byte diff --git a/140_dbs/src/gplx/dbs/engines/nulls/Noop_conn_info.java b/140_dbs/src/gplx/dbs/engines/nulls/Noop_conn_info.java index 868328437..a2c556e76 100644 --- a/140_dbs/src/gplx/dbs/engines/nulls/Noop_conn_info.java +++ b/140_dbs/src/gplx/dbs/engines/nulls/Noop_conn_info.java @@ -19,5 +19,5 @@ package gplx.dbs.engines.nulls; import gplx.*; import gplx.dbs.*; import gplx.db public class Noop_conn_info extends Db_conn_info__base { @Override public String Tid() {return Tid_const;} public static final String Tid_const = "null_db"; @Override public Db_conn_info New_self(String raw, GfoMsg m) {return this;} - public static final Noop_conn_info I = new Noop_conn_info(); Noop_conn_info() {this.Ctor("", "", "gplx_key=null_db", "");} + public static final Noop_conn_info Instance = new Noop_conn_info(); Noop_conn_info() {this.Ctor("", "", "gplx_key=null_db", "");} } diff --git a/140_dbs/src/gplx/dbs/engines/nulls/Noop_engine.java b/140_dbs/src/gplx/dbs/engines/nulls/Noop_engine.java index c23368516..54f051204 100644 --- a/140_dbs/src/gplx/dbs/engines/nulls/Noop_engine.java +++ b/140_dbs/src/gplx/dbs/engines/nulls/Noop_engine.java @@ -40,5 +40,5 @@ public class Noop_engine implements Db_engine { public void Env_db_detach(String alias) {} public boolean Meta_tbl_exists(String tbl) {return false;} public boolean Meta_fld_exists(String tbl, String fld) {return false;} - public static final Noop_engine _ = new Noop_engine(); Noop_engine() {} + public static final Noop_engine Instance = new Noop_engine(); Noop_engine() {} } diff --git a/140_dbs/src/gplx/dbs/engines/postgres/Postgres_conn_info.java b/140_dbs/src/gplx/dbs/engines/postgres/Postgres_conn_info.java index f319af364..56cb3bffc 100644 --- a/140_dbs/src/gplx/dbs/engines/postgres/Postgres_conn_info.java +++ b/140_dbs/src/gplx/dbs/engines/postgres/Postgres_conn_info.java @@ -38,5 +38,5 @@ public class Postgres_conn_info extends Db_conn_info__base { rv.pwd = m.ReadStr("password"); return rv; } - public static final Postgres_conn_info _ = new Postgres_conn_info(); Postgres_conn_info() {} + public static final Postgres_conn_info Instance = new Postgres_conn_info(); Postgres_conn_info() {} } diff --git a/140_dbs/src/gplx/dbs/engines/postgres/Postgres_engine.java b/140_dbs/src/gplx/dbs/engines/postgres/Postgres_engine.java index 65217fb6c..2a6216520 100644 --- a/140_dbs/src/gplx/dbs/engines/postgres/Postgres_engine.java +++ b/140_dbs/src/gplx/dbs/engines/postgres/Postgres_engine.java @@ -31,5 +31,5 @@ public class Postgres_engine extends Db_engine_sql_base { Postgres_conn_info conn_info_as_postgres = (Postgres_conn_info)conn_info; return Conn_make_by_url("jdbc:" + conn_info_as_postgres.Tid() + "://localhost/" + conn_info_as_postgres.Database(), conn_info_as_postgres.Uid(), conn_info_as_postgres.Pwd()); } - public static final Postgres_engine _ = new Postgres_engine(); Postgres_engine() {} + public static final Postgres_engine Instance = new Postgres_engine(); Postgres_engine() {} } diff --git a/140_dbs/src/gplx/dbs/engines/sqlite/Sqlite_conn_info.java b/140_dbs/src/gplx/dbs/engines/sqlite/Sqlite_conn_info.java index 03f2889c5..727a0157e 100644 --- a/140_dbs/src/gplx/dbs/engines/sqlite/Sqlite_conn_info.java +++ b/140_dbs/src/gplx/dbs/engines/sqlite/Sqlite_conn_info.java @@ -35,7 +35,7 @@ public class Sqlite_conn_info extends Db_conn_info__base { )); } public static Db_conn_info make_(Io_url url) { - Io_mgr.I.CreateDirIfAbsent(url.OwnerDir()); + Io_mgr.Instance.CreateDirIfAbsent(url.OwnerDir()); return Db_conn_info_.parse(Bld_raw ( "gplx_key" , Tid_const , "data source" , url.Xto_api() @@ -43,5 +43,5 @@ public class Sqlite_conn_info extends Db_conn_info__base { )); } - public static final Sqlite_conn_info _ = new Sqlite_conn_info(); Sqlite_conn_info() {} + public static final Sqlite_conn_info Instance = new Sqlite_conn_info(); Sqlite_conn_info() {} } \ No newline at end of file diff --git a/140_dbs/src/gplx/dbs/engines/sqlite/Sqlite_engine.java b/140_dbs/src/gplx/dbs/engines/sqlite/Sqlite_engine.java index b537edd46..96360f1e9 100644 --- a/140_dbs/src/gplx/dbs/engines/sqlite/Sqlite_engine.java +++ b/140_dbs/src/gplx/dbs/engines/sqlite/Sqlite_engine.java @@ -54,7 +54,7 @@ public class Sqlite_engine extends Db_engine_sql_base { Connection rv = Conn_make_by_url("jdbc:sqlite://" + String_.Replace(conn_info_as_sqlite.Url().Raw(), "\\", "/"), "", ""); return rv; } - public static final Sqlite_engine _ = new Sqlite_engine(); + public static final Sqlite_engine Instance = new Sqlite_engine(); } class Db_rdr__sqlite extends Db_rdr__basic { @Override public byte Read_byte(String k) {try {return (byte)Int_.cast(rdr.getObject(k));} catch (Exception e) {throw Err_.new_exc(e, "db", "read failed", "k", k, "type", Byte_.Cls_val_name);}} @Override public boolean Read_bool_by_byte(String k) { diff --git a/140_dbs/src/gplx/dbs/engines/sqlite/Sqlite_engine_.java b/140_dbs/src/gplx/dbs/engines/sqlite/Sqlite_engine_.java index af35b36d9..c919a663f 100644 --- a/140_dbs/src/gplx/dbs/engines/sqlite/Sqlite_engine_.java +++ b/140_dbs/src/gplx/dbs/engines/sqlite/Sqlite_engine_.java @@ -51,7 +51,7 @@ public class Sqlite_engine_ { p.Exec_qry(qry); } public static void Pragma_page_size(Db_conn p, int val) { - Db_qry qry = Db_qry_sql.ddl_("PRAGMA page_size = " + Int_.Xto_str(val) + ";"); + Db_qry qry = Db_qry_sql.ddl_("PRAGMA page_size = " + Int_.To_str(val) + ";"); p.Exec_qry(qry); } public static void Idx_create(Gfo_usr_dlg usr_dlg, Db_conn conn, String tbl, Db_meta_idx[] idx_ary) { @@ -75,10 +75,10 @@ public class Sqlite_engine_ { } } public static Db_conn Conn_load_or_make_(Io_url url, Bool_obj_ref created) { - boolean exists = Io_mgr.I.ExistsFil(url); + boolean exists = Io_mgr.Instance.ExistsFil(url); created.Val_(!exists); Db_conn_info connect = exists ? Sqlite_conn_info.load_(url) : Sqlite_conn_info.make_(url); - Db_conn p = Db_conn_pool.I.Get_or_new(connect); + Db_conn p = Db_conn_pool.Instance.Get_or_new(connect); if (!exists) Pragma_page_size(p, 4096); return p; diff --git a/140_dbs/src/gplx/dbs/engines/sqlite/Sqlite_schema_mgr.java b/140_dbs/src/gplx/dbs/engines/sqlite/Sqlite_schema_mgr.java index 70e7c1a18..4525f9b4e 100644 --- a/140_dbs/src/gplx/dbs/engines/sqlite/Sqlite_schema_mgr.java +++ b/140_dbs/src/gplx/dbs/engines/sqlite/Sqlite_schema_mgr.java @@ -34,7 +34,7 @@ public class Sqlite_schema_mgr { } private void Init(Db_engine engine) { init = false; - Gfo_usr_dlg_.I.Log_many("", "", "db.schema.load.bgn: conn=~{0}", engine.Conn_info().Xto_api()); + Gfo_usr_dlg_.Instance.Log_many("", "", "db.schema.load.bgn: conn=~{0}", engine.Conn_info().Xto_api()); Meta_parser__tbl tbl_parser = new Meta_parser__tbl(); Db_qry__select_in_tbl qry = Db_qry__select_in_tbl.new_("sqlite_master", String_.Ary_empty, String_.Ary("type", "name", "sql"), Db_qry__select_in_tbl.Order_by_null); Db_rdr rdr = engine.New_stmt_prep(qry).Exec_select__rls_auto(); @@ -56,11 +56,11 @@ public class Sqlite_schema_mgr { idx_mgr.Add(idx_itm); break; default: - Gfo_usr_dlg_.I.Log_many("", "", "db.schema.unknown type: conn=~{0} type=~{1} name=~{2} sql=~{3}", engine.Conn_info().Xto_api(), type_str, name, sql); + Gfo_usr_dlg_.Instance.Log_many("", "", "db.schema.unknown type: conn=~{0} type=~{1} name=~{2} sql=~{3}", engine.Conn_info().Xto_api(), type_str, name, sql); break; } } } finally {rdr.Rls();} - Gfo_usr_dlg_.I.Log_many("", "", "db.schema.load.end"); + Gfo_usr_dlg_.Instance.Log_many("", "", "db.schema.load.end"); } } diff --git a/140_dbs/src/gplx/dbs/engines/sqlite/Sqlite_txn_mgr.java b/140_dbs/src/gplx/dbs/engines/sqlite/Sqlite_txn_mgr.java index e99e5e2fa..96b33db00 100644 --- a/140_dbs/src/gplx/dbs/engines/sqlite/Sqlite_txn_mgr.java +++ b/140_dbs/src/gplx/dbs/engines/sqlite/Sqlite_txn_mgr.java @@ -43,7 +43,7 @@ public class Sqlite_txn_mgr { txn_list.Add(name); } public String Txn_end() { - if (txn_list.Count() == 0) {Gfo_usr_dlg_.I.Warn_many("", "", "no txns in stack;"); return "";} + if (txn_list.Count() == 0) {Gfo_usr_dlg_.Instance.Warn_many("", "", "no txns in stack;"); return "";} String txn_last = (String)List_adp_.Pop_last(txn_list); if (txn_list.Count() == 0) {// no txns left; commit it engine.Exec_as_obj(Db_qry_sql.xtn_("COMMIT TRANSACTION;")); @@ -54,7 +54,7 @@ public class Sqlite_txn_mgr { return txn_last; } public void Txn_cxl() { - if (txn_list.Count() == 0) {Gfo_usr_dlg_.I.Warn_many("", "", "no txns in stack;"); return;} + if (txn_list.Count() == 0) {Gfo_usr_dlg_.Instance.Warn_many("", "", "no txns in stack;"); return;} String txn_last = (String)List_adp_.Pop_last(txn_list); if (txn_list.Count() == 0) {// no txns left; rollback engine.Exec_as_obj(Db_qry_sql.xtn_("ROLLBACK TRANSACTION;")); @@ -64,7 +64,7 @@ public class Sqlite_txn_mgr { engine.Exec_as_obj(Db_qry_sql.xtn_(String_.Format("ROLBACK TRANSACTION TO SAVEPOINT {0};", txn_last))); } public void Txn_sav() { - if (txn_list.Count() == 0) {Gfo_usr_dlg_.I.Warn_many("", "", "no txns in stack;"); return;} + if (txn_list.Count() == 0) {Gfo_usr_dlg_.Instance.Warn_many("", "", "no txns in stack;"); return;} String name = (String)txn_list.Get_at(txn_list.Count() - 1); this.Txn_end(); this.Txn_bgn(name); } diff --git a/140_dbs/src/gplx/dbs/engines/tdbs/TdbDbLoadMgr.java b/140_dbs/src/gplx/dbs/engines/tdbs/TdbDbLoadMgr.java index 6742740f6..dd154a39d 100644 --- a/140_dbs/src/gplx/dbs/engines/tdbs/TdbDbLoadMgr.java +++ b/140_dbs/src/gplx/dbs/engines/tdbs/TdbDbLoadMgr.java @@ -19,7 +19,7 @@ package gplx.dbs.engines.tdbs; import gplx.*; import gplx.dbs.*; import gplx.dbs class TdbDbLoadMgr { public TdbDatabase LoadTbls(Io_url dbInfo) { TdbDatabase db = TdbDatabase.new_(dbInfo); - if (!Io_mgr.I.ExistsFil(dbInfo)) { + if (!Io_mgr.Instance.ExistsFil(dbInfo)) { db.IsNew_set(true); return db; } @@ -42,7 +42,7 @@ class TdbDbLoadMgr { if (db.Files().Count() == 0) throw Err_.new_wo_type("fatal error: db has no files", "connectInfo", db.DbUrl()); } DataRdr MakeDataRdr(Io_url fil) { - String text = Io_mgr.I.LoadFilStr(fil); + String text = Io_mgr.Instance.LoadFilStr(fil); return TdbStores.rdr_(text); } public static TdbDbLoadMgr new_() {return new TdbDbLoadMgr();} TdbDbLoadMgr() {} diff --git a/140_dbs/src/gplx/dbs/engines/tdbs/TdbDbSaveMgr.java b/140_dbs/src/gplx/dbs/engines/tdbs/TdbDbSaveMgr.java index d03e11a86..4a3a5d6ca 100644 --- a/140_dbs/src/gplx/dbs/engines/tdbs/TdbDbSaveMgr.java +++ b/140_dbs/src/gplx/dbs/engines/tdbs/TdbDbSaveMgr.java @@ -48,7 +48,7 @@ class TdbDbSaveMgr { TdbTable tbl = (TdbTable)tblObj; tbl.DataObj_Wtr(wtr); } - Io_mgr.I.SaveFilStr(fil.Path(), wtr.To_str()); + Io_mgr.Instance.SaveFilStr(fil.Path(), wtr.To_str()); } List_adp FetchTablesWithSamePath(TdbDatabase db, Io_url filPath) { List_adp list = List_adp_.new_(); diff --git a/140_dbs/src/gplx/dbs/engines/tdbs/TdbDbSaveMgr_tst.java b/140_dbs/src/gplx/dbs/engines/tdbs/TdbDbSaveMgr_tst.java index b7adfa6ab..8e45d8e2b 100644 --- a/140_dbs/src/gplx/dbs/engines/tdbs/TdbDbSaveMgr_tst.java +++ b/140_dbs/src/gplx/dbs/engines/tdbs/TdbDbSaveMgr_tst.java @@ -67,8 +67,8 @@ public class TdbDbSaveMgr_tst { , "================================, ,\" \",//" ); TdbTable tbl = db.MakeTbl("tbl", TdbFile.MainFileId); - tbl.Flds().Add("id", IntClassXtn._); - tbl.Flds().Add("name", StringClassXtn._); + tbl.Flds().Add("id", IntClassXtn.Instance); + tbl.Flds().Add("name", StringClassXtn.Instance); tbl.DataObj_Wtr(wtr); String actl = wtr.To_str(); diff --git a/140_dbs/src/gplx/dbs/engines/tdbs/TdbEngine.java b/140_dbs/src/gplx/dbs/engines/tdbs/TdbEngine.java index afbb96f0b..d0af22d42 100644 --- a/140_dbs/src/gplx/dbs/engines/tdbs/TdbEngine.java +++ b/140_dbs/src/gplx/dbs/engines/tdbs/TdbEngine.java @@ -41,7 +41,7 @@ public class TdbEngine implements Db_engine { Db_qryWkr wkr = (Db_qryWkr)wkrs.Get_by_or_fail(qry.Tid()); return wkr.Exec(this, qry); } - public Db_stmt New_stmt_prep(Db_qry qry) {return new Db_stmt_sql().Parse(qry, Sql_qry_wtr_.I.Xto_str(qry, true));} + public Db_stmt New_stmt_prep(Db_qry qry) {return new Db_stmt_sql().Parse(qry, Sql_qry_wtr_.Instance.Xto_str(qry, true));} public Object New_stmt_prep_as_obj(String sql) {throw Err_.new_unimplemented();} public Db_rdr New_rdr__rls_manual(Object rdr_obj, String sql) {return Db_rdr_.Empty;} public Db_rdr New_rdr__rls_auto(Db_stmt stmt, Object rdr_obj, String sql) {return Db_rdr_.Empty;} @@ -67,10 +67,10 @@ public class TdbEngine implements Db_engine { public boolean Meta_fld_exists(String tbl, String fld) {return false;} Hash_adp wkrs = Hash_adp_.new_(); TdbDbLoadMgr loadMgr = TdbDbLoadMgr.new_(); TdbDbSaveMgr saveMgr = TdbDbSaveMgr.new_(); - public static final TdbEngine _ = new TdbEngine(); + public static final TdbEngine Instance = new TdbEngine(); void CtorTdbEngine(Db_conn_info conn_info) { this.conn_info = conn_info; - wkrs.Add(Db_qry_.Tid_select, TdbSelectWkr._); + wkrs.Add(Db_qry_.Tid_select, TdbSelectWkr.Instance); wkrs.Add(Db_qry_.Tid_insert, TdbInsertWkr.new_()); wkrs.Add(Db_qry_.Tid_update, TdbUpdateWkr.new_()); wkrs.Add(Db_qry_.Tid_delete, TdbDeleteWkr.new_()); diff --git a/140_dbs/src/gplx/dbs/engines/tdbs/TdbFileList.java b/140_dbs/src/gplx/dbs/engines/tdbs/TdbFileList.java index 190c4e358..be98660c6 100644 --- a/140_dbs/src/gplx/dbs/engines/tdbs/TdbFileList.java +++ b/140_dbs/src/gplx/dbs/engines/tdbs/TdbFileList.java @@ -59,5 +59,5 @@ public class TdbFileList extends Ordered_hash_base { DsvStoreLayout layout; public static final String StoreTblName = "_files"; static final String Fld_id = "id"; static final String Fld_path = "url"; - static final GfoFldList FldList = GfoFldList_.new_().Add(Fld_id, IntClassXtn._).Add(Fld_path, StringClassXtn._).Add("format", StringClassXtn._); + static final GfoFldList FldList = GfoFldList_.new_().Add(Fld_id, IntClassXtn.Instance).Add(Fld_path, StringClassXtn.Instance).Add("format", StringClassXtn.Instance); } diff --git a/140_dbs/src/gplx/dbs/engines/tdbs/TdbFlush_tst.java b/140_dbs/src/gplx/dbs/engines/tdbs/TdbFlush_tst.java index 1083c797a..993ba7524 100644 --- a/140_dbs/src/gplx/dbs/engines/tdbs/TdbFlush_tst.java +++ b/140_dbs/src/gplx/dbs/engines/tdbs/TdbFlush_tst.java @@ -20,7 +20,7 @@ import org.junit.*; import gplx.ios.*; /*IoMgrFxt*/ import gplx.dbs.qrys.*; public class TdbFlush_tst { @Before public void setup() { - Io_mgr.I.InitEngine_mem(); + Io_mgr.Instance.InitEngine_mem(); engine = fx_engine.run_MakeEngine(dbPath); } TdbEngine engine; Io_url dbPath = Io_url_.mem_fil_("mem/dir/db0.dsv"); DateAdp time = DateAdp_.parse_gplx("2001-01-01"); @@ -82,14 +82,14 @@ public class TdbFlush_tst { class TdbEngineFxt { public TdbEngine run_MakeEngine(Io_url url) { Db_conn_info connectInfo = Db_conn_info_.tdb_(url); - TdbEngine engine = (TdbEngine)TdbEngine._.New_clone(connectInfo); + TdbEngine engine = (TdbEngine)TdbEngine.Instance.New_clone(connectInfo); engine.Conn_open(); return engine; } public TdbFile run_MakeFile(TdbEngine engine, Io_url url) {return engine.Db().MakeFile(url);} public TdbTable run_MakeTbl(TdbEngine engine, String tblName, int srcId) { TdbTable rv = engine.Db().MakeTbl(tblName, srcId); - rv.Flds().Add("id", IntClassXtn._); + rv.Flds().Add("id", IntClassXtn.Instance); return rv; } public void run_InsertRow(TdbEngine engine, String tblName, int idVal) { @@ -106,14 +106,14 @@ class TdbEngineFxt { public static TdbEngineFxt new_() {return new TdbEngineFxt();} TdbEngineFxt() {} } class IoMgrFxt { - public void run_UpdateFilModifiedTime(Io_url url, DateAdp val) {Io_mgr.I.UpdateFilModifiedTime(url, val);} + public void run_UpdateFilModifiedTime(Io_url url, DateAdp val) {Io_mgr.Instance.UpdateFilModifiedTime(url, val);} public void tst_QueryFilModified(boolean expdMatch, Io_url url, DateAdp expt) { - IoItmFil filItem = Io_mgr.I.QueryFil(url); + IoItmFil filItem = Io_mgr.Instance.QueryFil(url); DateAdp actl = filItem.ModifiedTime(); boolean actlMatch = String_.Eq(expt.XtoStr_gplx(), actl.XtoStr_gplx()); Tfds.Eq(expdMatch, actlMatch, expt.XtoStr_gplx() + (expdMatch ? "!=" : "==") + actl.XtoStr_gplx()); } - public void tst_Exists(boolean expd, Io_url url) {Tfds.Eq(expd, Io_mgr.I.ExistsFil(url));} + public void tst_Exists(boolean expd, Io_url url) {Tfds.Eq(expd, Io_mgr.Instance.ExistsFil(url));} public static IoMgrFxt new_() {return new IoMgrFxt();} IoMgrFxt() {} } diff --git a/140_dbs/src/gplx/dbs/engines/tdbs/TdbInsert.java b/140_dbs/src/gplx/dbs/engines/tdbs/TdbInsert.java index aa610b3f5..8a178f09d 100644 --- a/140_dbs/src/gplx/dbs/engines/tdbs/TdbInsert.java +++ b/140_dbs/src/gplx/dbs/engines/tdbs/TdbInsert.java @@ -29,7 +29,7 @@ class TdbInsertWkr implements Db_qryWkr { } int InsertRowsBySelect(TdbEngine engine, TdbTable tbl, Db_qry_insert insert) { int count = 0; - DataRdr rdr = (DataRdr)TdbSelectWkr._.Exec(engine, insert.Select()); + DataRdr rdr = (DataRdr)TdbSelectWkr.Instance.Exec(engine, insert.Select()); Sql_select_fld_list insertFlds = insert.Cols(); int insertFldsCount = insertFlds.Count(); GfoFldList selectFldsForNewRow = null; try {selectFldsForNewRow = insertFlds.XtoGfoFldLst(tbl);} diff --git a/140_dbs/src/gplx/dbs/engines/tdbs/TdbSelect.java b/140_dbs/src/gplx/dbs/engines/tdbs/TdbSelect.java index 6b378285a..62f9c40c0 100644 --- a/140_dbs/src/gplx/dbs/engines/tdbs/TdbSelect.java +++ b/140_dbs/src/gplx/dbs/engines/tdbs/TdbSelect.java @@ -44,12 +44,12 @@ class TdbSelectWkr implements Db_qryWkr { } return rv; } - public static final TdbSelectWkr _ = new TdbSelectWkr(); TdbSelectWkr() {} + public static final TdbSelectWkr Instance = new TdbSelectWkr(); TdbSelectWkr() {} } class TdbGroupByWkr { public static GfoNdeList GroupByExec(Db_qry__select_cmd select, GfoNdeList selectRows, TdbTable tbl) { GfoNdeList rv = GfoNdeList_.new_(); - Ordered_hash groupByHash = Ordered_hash_.new_(); + Ordered_hash groupByHash = Ordered_hash_.New(); List_adp groupByFlds = select.GroupBy().Flds(); GfoFldList selectFldsForNewRow = select.Cols().Flds().XtoGfoFldLst(tbl); Sql_select_fld_list selectFlds = select.Cols().Flds(); @@ -85,7 +85,7 @@ class TdbGroupByWkr { } else { if (o == null) { - Ordered_hash nextHash = Ordered_hash_.new_(); + Ordered_hash nextHash = Ordered_hash_.New(); curHash.Add(val, nextHash); curHash = nextHash; } diff --git a/140_dbs/src/gplx/dbs/engines/tdbs/TdbTableList.java b/140_dbs/src/gplx/dbs/engines/tdbs/TdbTableList.java index 846e9d453..95c237a7b 100644 --- a/140_dbs/src/gplx/dbs/engines/tdbs/TdbTableList.java +++ b/140_dbs/src/gplx/dbs/engines/tdbs/TdbTableList.java @@ -59,5 +59,5 @@ public class TdbTableList extends Ordered_hash_base { DsvStoreLayout layout; public static final String StoreTableName = "_tables"; static final String Fld_id = "id"; static final String Fld_name = "name"; static final String Fld_file_id = "file_id"; - static final GfoFldList FldList = GfoFldList_.new_().Add(Fld_id, IntClassXtn._).Add(Fld_name, StringClassXtn._).Add(Fld_file_id, IntClassXtn._); + static final GfoFldList FldList = GfoFldList_.new_().Add(Fld_id, IntClassXtn.Instance).Add(Fld_name, StringClassXtn.Instance).Add(Fld_file_id, IntClassXtn.Instance); } diff --git a/140_dbs/src/gplx/dbs/engines/tdbs/Tdb_conn_info.java b/140_dbs/src/gplx/dbs/engines/tdbs/Tdb_conn_info.java index e0ec79303..c6ec77e33 100644 --- a/140_dbs/src/gplx/dbs/engines/tdbs/Tdb_conn_info.java +++ b/140_dbs/src/gplx/dbs/engines/tdbs/Tdb_conn_info.java @@ -33,5 +33,5 @@ public class Tdb_conn_info extends Db_conn_info__base { rv.url = url; return rv; } - public static final Tdb_conn_info _ = new Tdb_conn_info(); + public static final Tdb_conn_info Instance = new Tdb_conn_info(); } diff --git a/140_dbs/src/gplx/dbs/metas/Meta_fld_mgr.java b/140_dbs/src/gplx/dbs/metas/Meta_fld_mgr.java index a5d61b93a..7ab44b5fd 100644 --- a/140_dbs/src/gplx/dbs/metas/Meta_fld_mgr.java +++ b/140_dbs/src/gplx/dbs/metas/Meta_fld_mgr.java @@ -17,7 +17,7 @@ along with this program. If not, see . */ package gplx.dbs.metas; import gplx.*; import gplx.dbs.*; public class Meta_fld_mgr { - private final Ordered_hash hash = Ordered_hash_.new_(); + private final Ordered_hash hash = Ordered_hash_.New(); public int Len() {return hash.Count();} public void Add(Meta_fld_itm itm) {hash.Add(itm.Name(), itm);} public boolean Has(String name) {return hash.Has(name);} diff --git a/140_dbs/src/gplx/dbs/metas/Meta_idx_mgr.java b/140_dbs/src/gplx/dbs/metas/Meta_idx_mgr.java index 1a46fca2a..c37906b05 100644 --- a/140_dbs/src/gplx/dbs/metas/Meta_idx_mgr.java +++ b/140_dbs/src/gplx/dbs/metas/Meta_idx_mgr.java @@ -17,7 +17,7 @@ along with this program. If not, see . */ package gplx.dbs.metas; import gplx.*; import gplx.dbs.*; public class Meta_idx_mgr { - private final Ordered_hash hash = Ordered_hash_.new_(); + private final Ordered_hash hash = Ordered_hash_.New(); public void Add(Meta_idx_itm itm) {hash.Add(itm.Name(), itm);} public boolean Has(String name) {return hash.Has(name);} public Meta_idx_itm Get(String name) {return (Meta_idx_itm)hash.Get_by(name);} diff --git a/140_dbs/src/gplx/dbs/metas/Meta_tbl_mgr.java b/140_dbs/src/gplx/dbs/metas/Meta_tbl_mgr.java index b67502d66..01964ae7a 100644 --- a/140_dbs/src/gplx/dbs/metas/Meta_tbl_mgr.java +++ b/140_dbs/src/gplx/dbs/metas/Meta_tbl_mgr.java @@ -17,7 +17,7 @@ along with this program. If not, see . */ package gplx.dbs.metas; import gplx.*; import gplx.dbs.*; public class Meta_tbl_mgr { - private final Ordered_hash hash = Ordered_hash_.new_(); + private final Ordered_hash hash = Ordered_hash_.New(); public void Add(Meta_tbl_itm itm) {hash.Add(itm.Name(), itm);} public boolean Has(String name) {return hash.Has(name);} public Meta_tbl_itm Get_by(String name) {return (Meta_tbl_itm)hash.Get_by(name);} diff --git a/140_dbs/src/gplx/dbs/metas/parsers/Meta_fld_wkr__base.java b/140_dbs/src/gplx/dbs/metas/parsers/Meta_fld_wkr__base.java index 5e9b3f9f8..f9611bea3 100644 --- a/140_dbs/src/gplx/dbs/metas/parsers/Meta_fld_wkr__base.java +++ b/140_dbs/src/gplx/dbs/metas/parsers/Meta_fld_wkr__base.java @@ -45,14 +45,14 @@ class Meta_fld_wkr__end_comma extends Meta_fld_wkr__base { @Override public int Tid() {return Tid_end_comma;} @Override protected void When_match(Meta_fld_itm fld) {} private static final byte[] Hook = Bry_.new_a7(","); - public static final Meta_fld_wkr__end_comma I = new Meta_fld_wkr__end_comma(); + public static final Meta_fld_wkr__end_comma Instance = new Meta_fld_wkr__end_comma(); } class Meta_fld_wkr__end_paren extends Meta_fld_wkr__base { public Meta_fld_wkr__end_paren() {this.Ctor(Hook);} @Override public int Tid() {return Tid_end_paren;} @Override protected void When_match(Meta_fld_itm fld) {} private static final byte[] Hook = Bry_.new_a7(")"); - public static final Meta_fld_wkr__end_paren I = new Meta_fld_wkr__end_paren(); + public static final Meta_fld_wkr__end_paren Instance = new Meta_fld_wkr__end_paren(); } class Meta_fld_wkr__nullable_null extends Meta_fld_wkr__base { public Meta_fld_wkr__nullable_null() {this.Ctor(Hook);} @@ -60,7 +60,7 @@ class Meta_fld_wkr__nullable_null extends Meta_fld_wkr__base { fld.Nullable_tid_(Meta_fld_itm.Nullable_null); } private static final byte[] Hook = Bry_.new_a7("null"); - public static final Meta_fld_wkr__nullable_null I = new Meta_fld_wkr__nullable_null(); + public static final Meta_fld_wkr__nullable_null Instance = new Meta_fld_wkr__nullable_null(); } class Meta_fld_wkr__nullable_not extends Meta_fld_wkr__base { public Meta_fld_wkr__nullable_not() {this.Ctor(Hook, Bry_null);} @@ -68,7 +68,7 @@ class Meta_fld_wkr__nullable_not extends Meta_fld_wkr__base { fld.Nullable_tid_(Meta_fld_itm.Nullable_not_null); } private static final byte[] Hook = Bry_.new_a7("not"), Bry_null = Bry_.new_a7("null"); - public static final Meta_fld_wkr__nullable_not I = new Meta_fld_wkr__nullable_not(); + public static final Meta_fld_wkr__nullable_not Instance = new Meta_fld_wkr__nullable_not(); } class Meta_fld_wkr__primary_key extends Meta_fld_wkr__base { public Meta_fld_wkr__primary_key() {this.Ctor(Hook, Bry_key);} @@ -76,7 +76,7 @@ class Meta_fld_wkr__primary_key extends Meta_fld_wkr__base { fld.Primary_key_y_(); } private static final byte[] Hook = Bry_.new_a7("primary"), Bry_key = Bry_.new_a7("key"); - public static final Meta_fld_wkr__primary_key I = new Meta_fld_wkr__primary_key(); + public static final Meta_fld_wkr__primary_key Instance = new Meta_fld_wkr__primary_key(); } class Meta_fld_wkr__autonumber extends Meta_fld_wkr__base { public Meta_fld_wkr__autonumber() {this.Ctor(Hook);} @@ -84,7 +84,7 @@ class Meta_fld_wkr__autonumber extends Meta_fld_wkr__base { fld.Autonumber_y_(); } private static final byte[] Hook = Bry_.new_a7("autoincrement"); - public static final Meta_fld_wkr__autonumber I = new Meta_fld_wkr__autonumber(); + public static final Meta_fld_wkr__autonumber Instance = new Meta_fld_wkr__autonumber(); } class Meta_fld_wkr__default extends Meta_fld_wkr__base { public Meta_fld_wkr__default() {this.Ctor(Hook);} @@ -113,5 +113,5 @@ class Meta_fld_wkr__default extends Meta_fld_wkr__base { } @Override protected void When_match(Meta_fld_itm fld) {} private static final byte[] Hook = Bry_.new_a7("default"); - public static final Meta_fld_wkr__default I = new Meta_fld_wkr__default(); + public static final Meta_fld_wkr__default Instance = new Meta_fld_wkr__default(); } diff --git a/140_dbs/src/gplx/dbs/metas/parsers/Meta_parser__fld.java b/140_dbs/src/gplx/dbs/metas/parsers/Meta_parser__fld.java index 3d57791bf..c86196326 100644 --- a/140_dbs/src/gplx/dbs/metas/parsers/Meta_parser__fld.java +++ b/140_dbs/src/gplx/dbs/metas/parsers/Meta_parser__fld.java @@ -63,11 +63,11 @@ public class Meta_parser__fld { // return fld; // NOTE: will happen for tests; EX: "fld_1 int" vs "fld_1 int," } private static final Btrie_slim_mgr fld_trie = fld_trie_init - ( Meta_fld_wkr__nullable_null.I - , Meta_fld_wkr__nullable_not.I - , Meta_fld_wkr__autonumber.I - , Meta_fld_wkr__primary_key.I - , Meta_fld_wkr__default.I + ( Meta_fld_wkr__nullable_null.Instance + , Meta_fld_wkr__nullable_not.Instance + , Meta_fld_wkr__autonumber.Instance + , Meta_fld_wkr__primary_key.Instance + , Meta_fld_wkr__default.Instance ); private static Btrie_slim_mgr fld_trie_init(Meta_fld_wkr__base... wkrs) { Btrie_slim_mgr rv = Btrie_slim_mgr.ci_a7(); diff --git a/140_dbs/src/gplx/dbs/qrys/Db_qry__select_cmd.java b/140_dbs/src/gplx/dbs/qrys/Db_qry__select_cmd.java index e8a587903..c9377d83c 100644 --- a/140_dbs/src/gplx/dbs/qrys/Db_qry__select_cmd.java +++ b/140_dbs/src/gplx/dbs/qrys/Db_qry__select_cmd.java @@ -21,8 +21,8 @@ public class Db_qry__select_cmd implements Db_qry { public int Tid() {return Db_qry_.Tid_select;} public boolean Exec_is_rdr() {return true;} public String Base_table() {return from.BaseTable().TblName();} - public String Xto_sql() {return Sql_qry_wtr_.I.Xto_str(this, false);} - public String Xto_sql_prepare() {return Sql_qry_wtr_.I.Xto_str(this, true);} + public String Xto_sql() {return Sql_qry_wtr_.Instance.Xto_str(this, false);} + public String Xto_sql_prepare() {return Sql_qry_wtr_.Instance.Xto_str(this, true);} public DataRdr Exec_qry_as_rdr(Db_conn conn) {return conn.Exec_qry_as_rdr(this);} public GfoNde ExecRdr_nde(Db_conn conn) { DataRdr rdr = DataRdr_.Null; diff --git a/140_dbs/src/gplx/dbs/qrys/Db_qry__select_in_tbl.java b/140_dbs/src/gplx/dbs/qrys/Db_qry__select_in_tbl.java index afe3d1cde..886ee78e8 100644 --- a/140_dbs/src/gplx/dbs/qrys/Db_qry__select_in_tbl.java +++ b/140_dbs/src/gplx/dbs/qrys/Db_qry__select_in_tbl.java @@ -73,7 +73,7 @@ public class Db_qry__select_in_tbl implements Db_qry { if (i != 0) bfr.Add_byte_comma(); bfr.Add_str_a7(order_fld); } - order_by_sql = bfr.Xto_str_and_clear(); + order_by_sql = bfr.To_str_and_clear(); break; } } diff --git a/140_dbs/src/gplx/dbs/qrys/Db_qry_delete.java b/140_dbs/src/gplx/dbs/qrys/Db_qry_delete.java index e62b97867..1cba042c5 100644 --- a/140_dbs/src/gplx/dbs/qrys/Db_qry_delete.java +++ b/140_dbs/src/gplx/dbs/qrys/Db_qry_delete.java @@ -22,7 +22,7 @@ public class Db_qry_delete implements Db_qry { public int Tid() {return Db_qry_.Tid_delete;} public boolean Exec_is_rdr() {return false;} public String Base_table() {return base_table;} private final String base_table; - public String Xto_sql() {return Sql_qry_wtr_.I.Xto_str(this, false);} + public String Xto_sql() {return Sql_qry_wtr_.Instance.Xto_str(this, false);} public Criteria Where() {return where;} private final Criteria where; public int Exec_qry(Db_conn conn) {return conn.Exec_qry(this);} public static Db_qry_delete new_all_(String tbl) {return new Db_qry_delete(tbl, Criteria_.All);} diff --git a/140_dbs/src/gplx/dbs/qrys/Db_qry_flush.java b/140_dbs/src/gplx/dbs/qrys/Db_qry_flush.java index 7a15d1133..2f3f2ad88 100644 --- a/140_dbs/src/gplx/dbs/qrys/Db_qry_flush.java +++ b/140_dbs/src/gplx/dbs/qrys/Db_qry_flush.java @@ -21,7 +21,7 @@ public class Db_qry_flush implements Db_qry { public int Tid() {return Db_qry_.Tid_flush;} public boolean Exec_is_rdr() {return false;} public String Base_table() {return tableNames[0];} - public String Xto_sql() {return Sql_qry_wtr_.I.Xto_str(this, false);} + public String Xto_sql() {return Sql_qry_wtr_.Instance.Xto_str(this, false);} public int Exec_qry(Db_conn conn) {return conn.Exec_qry(this);} public String[] TableNames() {return tableNames;} private String[] tableNames; diff --git a/140_dbs/src/gplx/dbs/qrys/Db_qry_insert.java b/140_dbs/src/gplx/dbs/qrys/Db_qry_insert.java index ad565c1cd..c1534075d 100644 --- a/140_dbs/src/gplx/dbs/qrys/Db_qry_insert.java +++ b/140_dbs/src/gplx/dbs/qrys/Db_qry_insert.java @@ -21,7 +21,7 @@ public class Db_qry_insert implements Db_qry_arg_owner { public Db_qry_insert(String base_table) {this.base_table = base_table;} public int Tid() {return Db_qry_.Tid_insert;} public boolean Exec_is_rdr() {return false;} - public String Xto_sql() {return Sql_qry_wtr_.I.Xto_str(this, false);} + public String Xto_sql() {return Sql_qry_wtr_.Instance.Xto_str(this, false);} public int Exec_qry(Db_conn conn) {return conn.Exec_qry(this);} public String Base_table() {return base_table;} private String base_table; public String[] Cols_for_insert() {return cols_for_insert;} private String[] cols_for_insert; diff --git a/140_dbs/src/gplx/dbs/qrys/Db_qry_sql.java b/140_dbs/src/gplx/dbs/qrys/Db_qry_sql.java index 4295fe114..22904f464 100644 --- a/140_dbs/src/gplx/dbs/qrys/Db_qry_sql.java +++ b/140_dbs/src/gplx/dbs/qrys/Db_qry_sql.java @@ -52,7 +52,7 @@ public class Db_qry_sql implements Db_qry { Gen_sql_arg(bfr, args[args_idx++]); pos = question_pos + 1; } - return bfr.Xto_str_and_clear(); + return bfr.To_str_and_clear(); } private static void Gen_sql_arg(Bry_bfr bfr, Object val) { if (val == null) {bfr.Add(Bry_null); return;} diff --git a/140_dbs/src/gplx/dbs/qrys/Db_qry_update.java b/140_dbs/src/gplx/dbs/qrys/Db_qry_update.java index 9758d9fcb..ceeaa6b78 100644 --- a/140_dbs/src/gplx/dbs/qrys/Db_qry_update.java +++ b/140_dbs/src/gplx/dbs/qrys/Db_qry_update.java @@ -20,7 +20,7 @@ import gplx.core.criterias.*; import gplx.dbs.sqls.*; public class Db_qry_update implements Db_qry_arg_owner { public int Tid() {return Db_qry_.Tid_update;} public boolean Exec_is_rdr() {return false;} - public String Xto_sql() {return Sql_qry_wtr_.I.Xto_str(this, false);} + public String Xto_sql() {return Sql_qry_wtr_.Instance.Xto_str(this, false);} public int Exec_qry(Db_conn conn) {return conn.Exec_qry(this);} public String Base_table() {return base_table;} private String base_table; public String[] Cols_for_update() {return cols_for_update;} private String[] cols_for_update; diff --git a/140_dbs/src/gplx/dbs/qrys/Db_stmt_cmd.java b/140_dbs/src/gplx/dbs/qrys/Db_stmt_cmd.java index 70528d479..33a7ce251 100644 --- a/140_dbs/src/gplx/dbs/qrys/Db_stmt_cmd.java +++ b/140_dbs/src/gplx/dbs/qrys/Db_stmt_cmd.java @@ -26,7 +26,7 @@ public class Db_stmt_cmd implements Db_stmt { public Db_stmt_cmd(Db_engine engine, Db_qry qry) {Ctor_stmt(engine, qry);} public void Ctor_stmt(Db_engine engine, Db_qry qry) { this.engine = engine; - sql = qry.Tid() == Db_qry_.Tid_select_in_tbl ? ((Db_qry__select_in_tbl)qry).Xto_sql() : Sql_qry_wtr_.I.Xto_str(qry, true); + sql = qry.Tid() == Db_qry_.Tid_select_in_tbl ? ((Db_qry__select_in_tbl)qry).Xto_sql() : Sql_qry_wtr_.Instance.Xto_str(qry, true); Reset_stmt(); } public Db_stmt Reset_stmt() { @@ -46,6 +46,7 @@ public class Db_stmt_cmd implements Db_stmt { return this; } public Db_stmt Crt_int(String k, int v) {return Add_int(Bool_.Y, k, v);} + public Db_stmt Val_int_by_bool(String k, boolean v) {return Add_int(Bool_.N, k, v ? 1 : 0);} public Db_stmt Val_int(String k, int v) {return Add_int(Bool_.N, k, v);} public Db_stmt Val_int(int v) {return Add_int(Bool_.N, Key_na, v);} private Db_stmt Add_int(boolean where, String k, int v) { diff --git a/140_dbs/src/gplx/dbs/qrys/Db_stmt_sql.java b/140_dbs/src/gplx/dbs/qrys/Db_stmt_sql.java index 9a3992167..d190bda13 100644 --- a/140_dbs/src/gplx/dbs/qrys/Db_stmt_sql.java +++ b/140_dbs/src/gplx/dbs/qrys/Db_stmt_sql.java @@ -37,31 +37,32 @@ public class Db_stmt_sql implements Db_stmt {// used for formatting SQL statemen return this; } public Db_stmt Crt_int(String k, int v) {return Add_int(Bool_.Y, k, v);} + public Db_stmt Val_int_by_bool(String k, boolean v) {return Add_int(Bool_.N, k, v ? 1 : 0);} public Db_stmt Val_int(String k, int v) {return Add_int(Bool_.N, k, v);} public Db_stmt Val_int(int v) {return Add_int(Bool_.N, Key_na, v);} private Db_stmt Add_int(boolean where, String k, int v) { - try {Add(k, Int_.Xto_str(v));} catch (Exception e) {throw Err_.new_exc(e, "db", "failed to add value", "type", "int", "val", v);} + try {Add(k, Int_.To_str(v));} catch (Exception e) {throw Err_.new_exc(e, "db", "failed to add value", "type", "int", "val", v);} return this; } public Db_stmt Crt_long(String k, long v) {return Add_long(Bool_.Y, k, v);} public Db_stmt Val_long(String k, long v) {return Add_long(Bool_.N, k, v);} public Db_stmt Val_long(long v) {return Add_long(Bool_.N, Key_na, v);} private Db_stmt Add_long(boolean where, String k, long v) { - try {Add(k, Long_.Xto_str(v));} catch (Exception e) {throw Err_.new_exc(e, "db", "failed to add value", "type", "long", "val", v);} + try {Add(k, Long_.To_str(v));} catch (Exception e) {throw Err_.new_exc(e, "db", "failed to add value", "type", "long", "val", v);} return this; } public Db_stmt Crt_float(String k, float v) {return Add_float(Bool_.Y, k, v);} public Db_stmt Val_float(String k, float v) {return Add_float(Bool_.N, k, v);} public Db_stmt Val_float(float v) {return Add_float(Bool_.N, Key_na, v);} private Db_stmt Add_float(boolean where, String k, float v) { - try {Add(k, Float_.Xto_str(v));} catch (Exception e) {throw Err_.new_exc(e, "db", "failed to add value", "type", "float", "val", v);} + try {Add(k, Float_.To_str(v));} catch (Exception e) {throw Err_.new_exc(e, "db", "failed to add value", "type", "float", "val", v);} return this; } public Db_stmt Crt_double(String k, double v) {return Add_double(Bool_.Y, k, v);} public Db_stmt Val_double(String k, double v) {return Add_double(Bool_.N, k, v);} public Db_stmt Val_double(double v) {return Add_double(Bool_.N, Key_na, v);} private Db_stmt Add_double(boolean where, String k, double v) { - try {Add(k, Double_.Xto_str(v));} catch (Exception e) {throw Err_.new_exc(e, "db", "failed to add value", "type", "double", "val", v);} + try {Add(k, Double_.To_str(v));} catch (Exception e) {throw Err_.new_exc(e, "db", "failed to add value", "type", "double", "val", v);} return this; } public Db_stmt Crt_decimal(String k, Decimal_adp v) {return Add_decimal(Bool_.Y, k, v);} @@ -93,7 +94,7 @@ public class Db_stmt_sql implements Db_stmt {// used for formatting SQL statemen try { Bry_bfr bfr = Bry_bfr.new_(); gplx.ios.Io_stream_rdr_.Load_all_to_bfr(bfr, v); - Add(Key_na, bfr.Xto_str_and_clear()); + Add(Key_na, bfr.To_str_and_clear()); } catch (Exception e) {throw Err_.new_exc(e, "db", "failed to add value", "type", "rdr", "val", v);} return this; } @@ -128,7 +129,7 @@ public class Db_stmt_sql implements Db_stmt {// used for formatting SQL statemen } public String Xto_sql() { tmp_fmtr.Bld_bfr_many(tmp_bfr, (Object[])args.To_ary_and_clear(Object.class)); - return tmp_bfr.Xto_str_and_clear(); + return tmp_bfr.To_str_and_clear(); } public int Args_len() {return args.Count();} public String Args_get_at(int i) {return (String)args.Get_at(i);} @@ -153,7 +154,7 @@ public class Db_stmt_sql implements Db_stmt {// used for formatting SQL statemen pos_prv = pos_cur + 1; } tmp_bfr.Add_mid(sql_bry, pos_prv, sql_bry.length); - tmp_fmtr.Fmt_(tmp_bfr.Xto_bry_and_clear()); + tmp_fmtr.Fmt_(tmp_bfr.To_bry_and_clear()); } public static String Xto_str(Bry_bfr tmp_bfr, Bry_fmtr tmp_fmtr, String sql_str, List_adp args) { Init_fmtr(tmp_bfr, tmp_fmtr, sql_str); @@ -172,6 +173,6 @@ public class Db_stmt_sql implements Db_stmt {// used for formatting SQL statemen ary[i] = str; } tmp_fmtr.Bld_bfr_many(tmp_bfr, ary); - return tmp_bfr.Xto_str_and_clear(); + return tmp_bfr.To_str_and_clear(); } } diff --git a/140_dbs/src/gplx/dbs/sqls/Db_obj_ary_tst.java b/140_dbs/src/gplx/dbs/sqls/Db_obj_ary_tst.java index f5b08dfac..0a6c6e0b1 100644 --- a/140_dbs/src/gplx/dbs/sqls/Db_obj_ary_tst.java +++ b/140_dbs/src/gplx/dbs/sqls/Db_obj_ary_tst.java @@ -31,12 +31,12 @@ class Db_obj_ary_fxt { public Db_obj_ary_fxt Init_fld(String name, int tid) {flds_list.Add(new Db_fld(name, tid)); return this;} private List_adp flds_list = List_adp_.new_(); public Db_obj_ary_fxt Init_vals(Object... ary) {vals_list.Add(ary); return this;} private List_adp vals_list = List_adp_.new_(); public Db_obj_ary_fxt Test_sql(String expd) { - Sql_qry_wtr_ansi cmd_wtr = (Sql_qry_wtr_ansi)Sql_qry_wtr_.I; + Sql_qry_wtr_ansi cmd_wtr = (Sql_qry_wtr_ansi)Sql_qry_wtr_.Instance; String_bldr sb = String_bldr_.new_(); crt.Flds_((Db_fld[])flds_list.To_ary_and_clear(Db_fld.class)); crt.Vals_((Object[][])vals_list.To_ary_and_clear(Object[].class)); cmd_wtr.Append_db_obj_ary(sb, crt); - Tfds.Eq(expd, sb.Xto_str_and_clear()); + Tfds.Eq(expd, sb.To_str_and_clear()); return this; } } diff --git a/140_dbs/src/gplx/dbs/sqls/Db_sqlbldr__sqlite.java b/140_dbs/src/gplx/dbs/sqls/Db_sqlbldr__sqlite.java index 2de93da3a..2562a758e 100644 --- a/140_dbs/src/gplx/dbs/sqls/Db_sqlbldr__sqlite.java +++ b/140_dbs/src/gplx/dbs/sqls/Db_sqlbldr__sqlite.java @@ -37,7 +37,7 @@ public class Db_sqlbldr__sqlite implements Db_sqlbldr { tmp_bfr.Add_str_a7(fld); } tmp_bfr.Add_str_a7(");"); - return tmp_bfr.Xto_str_and_clear(); + return tmp_bfr.To_str_and_clear(); } public String Bld_create_tbl(Db_meta_tbl tbl) { tmp_bfr.Add_str_a7("CREATE TABLE IF NOT EXISTS ").Add_str_a7(tbl.Name()).Add_byte_nl(); @@ -50,13 +50,13 @@ public class Db_sqlbldr__sqlite implements Db_sqlbldr { tmp_bfr.Add_byte_nl(); } tmp_bfr.Add_str_a7(");"); - return tmp_bfr.Xto_str_and_clear(); + return tmp_bfr.To_str_and_clear(); } public String Bld_alter_tbl_add(String tbl, Db_meta_fld fld) { tmp_bfr.Add_str_a7("ALTER TABLE ").Add_str_a7(tbl).Add_str_a7(" ADD "); Bld_fld(tmp_bfr, fld); tmp_bfr.Add_byte_semic(); - return tmp_bfr.Xto_str_and_clear(); + return tmp_bfr.To_str_and_clear(); } public String Bld_drop_tbl(String tbl) { return String_.Format("DROP TABLE IF EXISTS {0};", tbl); @@ -95,5 +95,5 @@ public class Db_sqlbldr__sqlite implements Db_sqlbldr { default: throw Err_.new_unhandled(tid); } } - public static final Db_sqlbldr__sqlite I = new Db_sqlbldr__sqlite(); Db_sqlbldr__sqlite() {} + public static final Db_sqlbldr__sqlite Instance = new Db_sqlbldr__sqlite(); Db_sqlbldr__sqlite() {} } diff --git a/140_dbs/src/gplx/dbs/sqls/Db_sqlbldr_tst.java b/140_dbs/src/gplx/dbs/sqls/Db_sqlbldr_tst.java index d72c57fab..ee66f1321 100644 --- a/140_dbs/src/gplx/dbs/sqls/Db_sqlbldr_tst.java +++ b/140_dbs/src/gplx/dbs/sqls/Db_sqlbldr_tst.java @@ -61,7 +61,7 @@ public class Db_sqlbldr_tst { } } class Db_sqlbldr_fxt { - private Db_sqlbldr__sqlite sqlbldr = Db_sqlbldr__sqlite.I; + private Db_sqlbldr__sqlite sqlbldr = Db_sqlbldr__sqlite.Instance; public void Test_create_idx(Db_meta_idx idx, String expd) {Tfds.Eq(expd, sqlbldr.Bld_create_idx(idx));} public void Test_create_tbl(Db_meta_tbl tbl, String expd) {Tfds.Eq_str_lines(expd, sqlbldr.Bld_create_tbl(tbl));} public void Test_alter_tbl_add(String tbl, Db_meta_fld fld, String expd) {Tfds.Eq_str_lines(expd, sqlbldr.Bld_alter_tbl_add(tbl, fld));} diff --git a/140_dbs/src/gplx/dbs/sqls/Sql_qry_wtr_.java b/140_dbs/src/gplx/dbs/sqls/Sql_qry_wtr_.java index 08cc06eb0..5ed331cfa 100644 --- a/140_dbs/src/gplx/dbs/sqls/Sql_qry_wtr_.java +++ b/140_dbs/src/gplx/dbs/sqls/Sql_qry_wtr_.java @@ -19,6 +19,6 @@ package gplx.dbs.sqls; import gplx.*; import gplx.dbs.*; public class Sql_qry_wtr_ { public static Sql_qry_wtr new_ansi() {return new Sql_qry_wtr_ansi();} public static Sql_qry_wtr new_escape_backslash() {return new Sql_qry_wtr_ansi_escape_backslash();} - public static final Sql_qry_wtr I = new Sql_qry_wtr_ansi(); - public static String Gen_placeholder_parameters(Db_qry qry) {return Sql_qry_wtr_.I.Xto_str(qry, true);} // replace arguments with ?; EX: UPDATE a SET b = ? WHERE c = ?; + public static final Sql_qry_wtr Instance = new Sql_qry_wtr_ansi(); + public static String Gen_placeholder_parameters(Db_qry qry) {return Sql_qry_wtr_.Instance.Xto_str(qry, true);} // replace arguments with ?; EX: UPDATE a SET b = ? WHERE c = ?; } diff --git a/140_dbs/src/gplx/dbs/sqls/Sql_qry_wtr_ansi.java b/140_dbs/src/gplx/dbs/sqls/Sql_qry_wtr_ansi.java index 2c6a4de09..6e213761f 100644 --- a/140_dbs/src/gplx/dbs/sqls/Sql_qry_wtr_ansi.java +++ b/140_dbs/src/gplx/dbs/sqls/Sql_qry_wtr_ansi.java @@ -38,7 +38,7 @@ public class Sql_qry_wtr_ansi implements Sql_qry_wtr { private String Bld_qry_delete(Db_qry_delete cmd) { sb.Add_many("DELETE FROM ", cmd.Base_table()); Bld_where(sb, cmd.Where()); - return sb.Xto_str_and_clear(); + return sb.To_str_and_clear(); } private String Bld_qry_insert(Db_qry_insert cmd) { if (cmd.Select() != null) { @@ -49,7 +49,7 @@ public class Sql_qry_wtr_ansi implements Sql_qry_wtr { sb.Add(i == cmd.Cols().Count() - 1 ? ") " : ", "); } sb.Add(Bld_qry_select(cmd.Select())); - return sb.Xto_str_and_clear(); + return sb.To_str_and_clear(); } int arg_count = cmd.Args().Count(); if (arg_count == 0) throw Err_.new_wo_type("Db_qry_insert has no columns", "base_table", cmd.Base_table()); int last = arg_count - 1; @@ -66,7 +66,7 @@ public class Sql_qry_wtr_ansi implements Sql_qry_wtr { this.Bld_val(sb, arg); sb.Add(i == last ? ")" : ", "); } - return sb.Xto_str_and_clear(); + return sb.To_str_and_clear(); } private String Bld_qry_update(Db_qry_update cmd) { int arg_count = cmd.Args().Count(); if (arg_count == 0) throw Err_.new_wo_type("Db_qry_update has no columns", "base_table", cmd.Base_table()); @@ -79,7 +79,7 @@ public class Sql_qry_wtr_ansi implements Sql_qry_wtr { this.Bld_val(sb, (Db_arg)pair.Val()); } Bld_where(sb, cmd.Where()); - return sb.Xto_str_and_clear(); + return sb.To_str_and_clear(); } private String Bld_qry_select(Db_qry__select_cmd cmd) { sb.Add("SELECT "); @@ -97,7 +97,7 @@ public class Sql_qry_wtr_ansi implements Sql_qry_wtr { Bld_select_group_by(sb, cmd.GroupBy()); Bld_select_order_by(sb, cmd.OrderBy()); Bld_select_limit(sb, cmd.Limit()); - return sb.Xto_str_and_clear(); + return sb.To_str_and_clear(); } private void Bld_select_group_by(String_bldr sb, Sql_group_by groupBy) { if (groupBy == null) return; diff --git a/140_dbs/src/gplx/dbs/sqls/Sql_select.java b/140_dbs/src/gplx/dbs/sqls/Sql_select.java index e301405af..2470a397d 100644 --- a/140_dbs/src/gplx/dbs/sqls/Sql_select.java +++ b/140_dbs/src/gplx/dbs/sqls/Sql_select.java @@ -25,6 +25,6 @@ public class Sql_select { public void Add(String fldName, String alias) {flds.Add(Sql_select_fld_.new_fld(Sql_select_fld_base.Tbl_null, fldName, alias));} public void Add(Sql_select_fld_base fld) {flds.Add(fld);} - public static final Sql_select All = all_(); static Sql_select all_() {Sql_select rv = new_(); rv.Add(Sql_select_fld_wild._); return rv;} + public static final Sql_select All = all_(); static Sql_select all_() {Sql_select rv = new_(); rv.Add(Sql_select_fld_wild.Instance); return rv;} public static Sql_select new_() {return new Sql_select();} Sql_select() {} } diff --git a/140_dbs/src/gplx/dbs/sqls/Sql_select_fld_.java b/140_dbs/src/gplx/dbs/sqls/Sql_select_fld_.java index 113f230a6..2ecd2e661 100644 --- a/140_dbs/src/gplx/dbs/sqls/Sql_select_fld_.java +++ b/140_dbs/src/gplx/dbs/sqls/Sql_select_fld_.java @@ -39,7 +39,7 @@ class Sql_select_fld_fld extends Sql_select_fld_base { class Sql_select_fld_count extends Sql_select_fld_func_base { public Sql_select_fld_count(String tbl, String fld, String alias) {this.ctor_(tbl, fld, alias);} @Override public String XtoSql_functionName() {return "COUNT";} - @Override public void GroupBy_type(GfoFld fld) {this.ValType_set(IntClassXtn._);} + @Override public void GroupBy_type(GfoFld fld) {this.ValType_set(IntClassXtn.Instance);} @Override public Object GroupBy_eval(Object groupByVal, Object curVal, ClassXtn type) { if (groupByVal == null) return 1; return Int_.cast(groupByVal) + 1; @@ -48,7 +48,7 @@ class Sql_select_fld_count extends Sql_select_fld_func_base { class Sql_select_fld_sum extends Sql_select_fld_func_base { public Sql_select_fld_sum(String tbl, String fld, String alias) {this.ctor_(tbl, fld, alias);} @Override public String XtoSql_functionName() {return "SUM";} - @Override public void GroupBy_type(GfoFld fld) {this.ValType_set(IntClassXtn._);} + @Override public void GroupBy_type(GfoFld fld) {this.ValType_set(IntClassXtn.Instance);} @Override public Object GroupBy_eval(Object groupByVal, Object curVal, ClassXtn type) { if (groupByVal == null) return Int_.cast(curVal); return Int_.cast(groupByVal) + Int_.cast(curVal); diff --git a/140_dbs/src/gplx/dbs/sqls/Sql_select_fld_base.java b/140_dbs/src/gplx/dbs/sqls/Sql_select_fld_base.java index 4bdf866a2..e9b7454c9 100644 --- a/140_dbs/src/gplx/dbs/sqls/Sql_select_fld_base.java +++ b/140_dbs/src/gplx/dbs/sqls/Sql_select_fld_base.java @@ -20,7 +20,7 @@ public abstract class Sql_select_fld_base { public String Tbl() {return tbl;} public void Tbl_set(String val) {tbl = val;} private String tbl; public String Fld() {return fld;} public void Fld_set(String val) {fld = val;} private String fld; public String Alias() {return alias;} public void Alias_set(String val) {alias = val;} private String alias; - public ClassXtn ValType() {return valType;} public void ValType_set(ClassXtn val) {valType = val;} ClassXtn valType = ObjectClassXtn._; + public ClassXtn ValType() {return valType;} public void ValType_set(ClassXtn val) {valType = val;} ClassXtn valType = ObjectClassXtn.Instance; public abstract Object GroupBy_eval(Object groupByVal, Object curVal, ClassXtn type); @gplx.Virtual public void GroupBy_type(GfoFld fld) {this.ValType_set(fld.Type());} @gplx.Virtual public boolean Type_fld() {return true;} @@ -34,7 +34,7 @@ class Sql_select_fld_wild extends Sql_select_fld_base { @Override public Object GroupBy_eval(Object groupByVal, Object curVal, ClassXtn type) {throw Err_.new_wo_type("group by eval not allowed on *");} @Override public void GroupBy_type(GfoFld fld) {throw Err_.new_wo_type("group by type not allowed on *");} @Override public String XtoSql() {return "*";} - public static final Sql_select_fld_wild _ = new Sql_select_fld_wild(); Sql_select_fld_wild() {this.ctor_(Tbl_null, "*", "*");} + public static final Sql_select_fld_wild Instance = new Sql_select_fld_wild(); Sql_select_fld_wild() {this.ctor_(Tbl_null, "*", "*");} } abstract class Sql_select_fld_func_base extends Sql_select_fld_base { public abstract String XtoSql_functionName(); diff --git a/140_dbs/src/gplx/dbs/sqls/Sql_select_fld_list.java b/140_dbs/src/gplx/dbs/sqls/Sql_select_fld_list.java index abaadef79..2bd7ad5ba 100644 --- a/140_dbs/src/gplx/dbs/sqls/Sql_select_fld_list.java +++ b/140_dbs/src/gplx/dbs/sqls/Sql_select_fld_list.java @@ -52,6 +52,6 @@ public class Sql_select_fld_list { } return sb.To_str(); } - Ordered_hash hash = Ordered_hash_.new_(); + Ordered_hash hash = Ordered_hash_.New(); public static Sql_select_fld_list new_() {return new Sql_select_fld_list();} Sql_select_fld_list() {} } diff --git a/140_dbs/src/gplx/dbs/utls/Db_cmd_backup.java b/140_dbs/src/gplx/dbs/utls/Db_cmd_backup.java index 0659c705e..de3e491dc 100644 --- a/140_dbs/src/gplx/dbs/utls/Db_cmd_backup.java +++ b/140_dbs/src/gplx/dbs/utls/Db_cmd_backup.java @@ -50,9 +50,9 @@ public class Db_cmd_backup implements GfoInvkAble { this.InitVars(); Io_url bkpCmdFil = bkpDir.GenSubFil_ary("backup_", dbName, ".cmd"); // Io_url bkpCmdFil = Io_url_.new_dir_("/home/").GenSubFil_ary("backup_", dbName, ".cmd"); // LNX: uncomment - Io_mgr.I.SaveFilStr_args(bkpCmdFil, cmdText).Exec(); // explicitly state utf8; + Io_mgr.Instance.SaveFilStr_args(bkpCmdFil, cmdText).Exec(); // explicitly state utf8; ProcessAdp.run_wait_(bkpCmdFil); - Io_mgr.I.DeleteFil(bkpCmdFil); + Io_mgr.Instance.DeleteFil(bkpCmdFil); return this; } @gplx.Internal protected Db_cmd_backup InitVars() { diff --git a/140_dbs/src/gplx/dbs/utls/Db_in_wkr__base.java b/140_dbs/src/gplx/dbs/utls/Db_in_wkr__base.java index a90d6a57d..2505a73c0 100644 --- a/140_dbs/src/gplx/dbs/utls/Db_in_wkr__base.java +++ b/140_dbs/src/gplx/dbs/utls/Db_in_wkr__base.java @@ -24,7 +24,7 @@ public abstract class Db_in_wkr__base { @gplx.Virtual protected boolean Show_progress() {return false;} public void Select_in(Cancelable cancelable, Db_conn conn, int full_bgn, int full_end) { int part_len = Interval(); - Gfo_usr_dlg usr_dlg = Gfo_usr_dlg_.I; + Gfo_usr_dlg usr_dlg = Gfo_usr_dlg_.Instance; boolean show_progress = this.Show_progress(); for (int part_bgn = full_bgn; part_bgn < full_end; part_bgn += part_len) { int part_end = part_bgn + part_len; diff --git a/140_dbs/src/gplx/dbs/utls/PoolIds.java b/140_dbs/src/gplx/dbs/utls/PoolIds.java index 471c81d55..6c1c5f346 100644 --- a/140_dbs/src/gplx/dbs/utls/PoolIds.java +++ b/140_dbs/src/gplx/dbs/utls/PoolIds.java @@ -32,9 +32,9 @@ public class PoolIds { return rv; } public int FetchNextAndCommit(String dbInfo, String url) { - Db_conn conn = Db_conn_pool.I.Get_or_new(dbInfo); - int rv = PoolIds._.FetchNext(conn, url); - PoolIds._.Commit(conn, url, rv + 1); + Db_conn conn = Db_conn_pool.Instance.Get_or_new(dbInfo); + int rv = PoolIds.Instance.FetchNext(conn, url); + PoolIds.Instance.Commit(conn, url, rv + 1); return rv; } public void Commit(Db_conn conn, String url, int val) { @@ -47,5 +47,5 @@ public class PoolIds { public static final String Tbl_Name = "pool_ids"; @gplx.Internal protected static final String Fld_id_path = "id_path"; @gplx.Internal protected static final String Fld_id_next_id = "id_next_id"; - public static final PoolIds _ = new PoolIds(); PoolIds() {} + public static final PoolIds Instance = new PoolIds(); PoolIds() {} } diff --git a/140_dbs/src/gplx/dbs/utls/PoolIds_tst.java b/140_dbs/src/gplx/dbs/utls/PoolIds_tst.java index cda26cb12..db5e5f57e 100644 --- a/140_dbs/src/gplx/dbs/utls/PoolIds_tst.java +++ b/140_dbs/src/gplx/dbs/utls/PoolIds_tst.java @@ -19,9 +19,9 @@ package gplx.dbs.utls; import gplx.*; import gplx.dbs.*; import org.junit.*; public class PoolIds_tst { @Before public void setup() { - conn = Db_conn_pool.I.Get_or_new(Db_conn_info_.Test); + conn = Db_conn_pool.Instance.Get_or_new(Db_conn_info_.Test); Db_qry_fxt.DeleteAll(conn, PoolIds.Tbl_Name); - mgr = PoolIds._; + mgr = PoolIds.Instance; } @Test public void FetchNextId() { tst_Fetch("/test0", 0); diff --git a/140_dbs/src/gplx/stores/DbMaprItm.java b/140_dbs/src/gplx/stores/DbMaprItm.java index c1a8693a7..87e1c6b8d 100644 --- a/140_dbs/src/gplx/stores/DbMaprItm.java +++ b/140_dbs/src/gplx/stores/DbMaprItm.java @@ -18,7 +18,7 @@ along with this program. If not, see . package gplx.stores; import gplx.*; public class DbMaprItm { public String TableName() {return tableName;} public DbMaprItm TableName_(String val) {tableName = val; return this;} private String tableName; - public Ordered_hash Flds() {return flds;} Ordered_hash flds = Ordered_hash_.new_(); + public Ordered_hash Flds() {return flds;} Ordered_hash flds = Ordered_hash_.New(); public Hash_adp ContextFlds() {return contextFlds;} Hash_adp contextFlds = Hash_adp_.new_(); public Hash_adp ConstantFlds() {return constantFlds;} Hash_adp constantFlds = Hash_adp_.new_(); public List_adp Subs() {return subs;} diff --git a/140_dbs/src/gplx/stores/DbMaprMgr.java b/140_dbs/src/gplx/stores/DbMaprMgr.java index 44461680a..f781bdcf7 100644 --- a/140_dbs/src/gplx/stores/DbMaprMgr.java +++ b/140_dbs/src/gplx/stores/DbMaprMgr.java @@ -20,7 +20,7 @@ public class DbMaprMgr { public DbMaprArg[] RootIndexFlds() {return rootIndexFlds;} public DbMaprMgr RootIndexFlds_(DbMaprArg... val) {rootIndexFlds = val; return this;} DbMaprArg[] rootIndexFlds; public DbMaprItm Root() {return root;} public DbMaprMgr Root_(DbMaprItm v) {root = v; return this;} DbMaprItm root; public List_adp OwnerStack() {return ownerStack;} List_adp ownerStack = List_adp_.new_(); - public Ordered_hash ContextVars() {return contextVars;} Ordered_hash contextVars = Ordered_hash_.new_(); + public Ordered_hash ContextVars() {return contextVars;} Ordered_hash contextVars = Ordered_hash_.New(); public List_adp MaprStack() {return maprStack;} List_adp maprStack = List_adp_.new_(); public void EnvStack_add(DbMaprItm mapr, SrlObj gobj) { for (Object argObj : mapr.ContextFlds()) { diff --git a/140_dbs/src/gplx/stores/DbMaprMgr_tst.java b/140_dbs/src/gplx/stores/DbMaprMgr_tst.java index d5e4d1b29..ab9a07f59 100644 --- a/140_dbs/src/gplx/stores/DbMaprMgr_tst.java +++ b/140_dbs/src/gplx/stores/DbMaprMgr_tst.java @@ -22,24 +22,24 @@ public class DbMaprMgr_tst { @Before public void setup() { mgr = DbMaprMgr.new_().RootIndexFlds_(DbMaprArg.new_("id", "disc_id")) .Root_ - ( DbMaprItm.proto_(MockDisc._, "discs", "mock_discs") + ( DbMaprItm.proto_(MockDisc.Instance, "discs", "mock_discs") . Flds_add(MockDisc.id_idk, "disc_id").Flds_add(MockDisc.name_idk, "disc_name") . ContextFlds_add(MockDisc.id_idk).Subs_add - ( DbMaprItm.proto_(MockTitle._, "titles", "mock_titles") + ( DbMaprItm.proto_(MockTitle.Instance, "titles", "mock_titles") . Flds_add(MockTitle.id_idk, "title_id").Flds_add(MockTitle.name_idk, "title_name") . ContextFlds_add(MockTitle.id_idk).Subs_add - ( DbMaprItm.proto_(MockChapter._, "chapters", "mock_chapters") + ( DbMaprItm.proto_(MockChapter.Instance, "chapters", "mock_chapters") . Flds_add(MockChapter.id_idk, "chapter_id").Flds_add(MockChapter.name_idk, "chapter_name") - , DbMaprItm.proto_(MockStream._, "audios", "mock_streams") + , DbMaprItm.proto_(MockStream.Instance, "audios", "mock_streams") . Flds_add(MockStream.id_idk, "stream_id").Flds_add(MockStream.name_idk, "stream_name") . ConstantFlds_add("stream_type", 0) - , DbMaprItm.proto_(MockStream._, "subtitles", "mock_streams") + , DbMaprItm.proto_(MockStream.Instance, "subtitles", "mock_streams") . Flds_add(MockStream.id_idk, "stream_id").Flds_add(MockStream.name_idk, "stream_name") . ConstantFlds_add("stream_type", 1) ))); wtr = DbMaprWtr.new_by_url_(Db_conn_info_.Test); wtr.EnvVars().Add(DbMaprWtr.Key_Mgr, mgr); - conn = Db_conn_pool.I.Get_or_new(Db_conn_info_.Test); + conn = Db_conn_pool.Instance.Get_or_new(Db_conn_info_.Test); Db_qry_fxt.DeleteAll(conn, "mock_discs", "mock_titles", "mock_chapters", "mock_streams"); } DbMaprMgr mgr; DbMaprWtr wtr; Db_conn conn; MockDisc disc; MockTitle title; MockChapter chapter; MockStream audio, subtitle; SrlMgr rdr; @Test public void PurgeObjTree() { @@ -93,7 +93,7 @@ public class DbMaprMgr_tst { @Test public void Load_root() { rdr = rdr_(); Db_qry_fxt.Insert_kvo(conn, "mock_discs", KeyValList.args_("disc_id", 1).Add("disc_name", "name")); - disc = (MockDisc)rdr.StoreRoot(MockDisc._, null); + disc = (MockDisc)rdr.StoreRoot(MockDisc.Instance, null); Tfds.Eq(1, disc.Id()); Tfds.Eq("name", disc.Name()); @@ -104,7 +104,7 @@ public class DbMaprMgr_tst { Db_qry_fxt.Insert_kvo(conn, "mock_discs", KeyValList.args_("disc_id", 1).Add("disc_name", "name")); Db_qry_fxt.Insert_kvo(conn, "mock_titles", KeyValList.args_("disc_id", 1).Add("title_id", 1).Add("title_name", "title1")); Db_qry_fxt.Insert_kvo(conn, "mock_titles", KeyValList.args_("disc_id", 1).Add("title_id", 2).Add("title_name", "title2")); - disc = (MockDisc)rdr.StoreRoot(MockDisc._, null); + disc = (MockDisc)rdr.StoreRoot(MockDisc.Instance, null); Tfds.Eq(1, disc.Id()); Tfds.Eq("name", disc.Name()); @@ -119,7 +119,7 @@ public class DbMaprMgr_tst { Db_qry_fxt.Insert_kvo(conn, "mock_chapters", KeyValList.args_("disc_id", 1).Add("title_id", 1).Add("chapter_id", 3).Add("chapter_name", "chapter1")); Db_qry_fxt.Insert_kvo(conn, "mock_streams", KeyValList.args_("disc_id", 1).Add("title_id", 1).Add("stream_id", 4).Add("stream_type", 0).Add("stream_name", "audio1")); Db_qry_fxt.Insert_kvo(conn, "mock_streams", KeyValList.args_("disc_id", 1).Add("title_id", 1).Add("stream_id", 5).Add("stream_type", 1).Add("stream_name", "subtitle1")); - disc = (MockDisc)rdr.StoreRoot(MockDisc._, null); + disc = (MockDisc)rdr.StoreRoot(MockDisc.Instance, null); Tfds.Eq(1, disc.Id()); Tfds.Eq("name", disc.Name()); diff --git a/140_dbs/src/gplx/stores/DbMaprRdr.java b/140_dbs/src/gplx/stores/DbMaprRdr.java index acef30709..b22ca202b 100644 --- a/140_dbs/src/gplx/stores/DbMaprRdr.java +++ b/140_dbs/src/gplx/stores/DbMaprRdr.java @@ -116,7 +116,7 @@ public class DbMaprRdr extends DataRdr_base implements SrlMgr { DbMaprMgr mgr; List_adp rowStack = List_adp_.new_(); public static DbMaprRdr new_(Db_conn_info dbInfo, Criteria rootCrt) { DbMaprRdr rv = new DbMaprRdr(); - rv.conn = Db_conn_pool.I.Get_or_new(dbInfo); rv.rootCrt = rootCrt; + rv.conn = Db_conn_pool.Instance.Get_or_new(dbInfo); rv.rootCrt = rootCrt; return rv; } DbMaprRdr() {} } \ No newline at end of file diff --git a/140_dbs/src/gplx/stores/DbMaprWtr.java b/140_dbs/src/gplx/stores/DbMaprWtr.java index 044fb39e7..11ad0e98a 100644 --- a/140_dbs/src/gplx/stores/DbMaprWtr.java +++ b/140_dbs/src/gplx/stores/DbMaprWtr.java @@ -86,7 +86,7 @@ public class DbMaprWtr extends DataWtr_base implements DataWtr { DbMaprMgr mgr; Db_conn conn; String curTableName; Db_qry_insert insertCmd; public static DbMaprWtr new_by_url_(Db_conn_info url) { DbMaprWtr rv = new DbMaprWtr(); - rv.conn = Db_conn_pool.I.Get_or_new(url); + rv.conn = Db_conn_pool.Instance.Get_or_new(url); return rv; } DbMaprWtr() {} public static final String Key_Mgr = "DbMapr.mgr"; diff --git a/140_dbs/src/gplx/stores/MockDiscObj.java b/140_dbs/src/gplx/stores/MockDiscObj.java index 5698e1ff7..5a1d9013c 100644 --- a/140_dbs/src/gplx/stores/MockDiscObj.java +++ b/140_dbs/src/gplx/stores/MockDiscObj.java @@ -20,7 +20,7 @@ class MockDisc implements SrlObj, GfoInvkAble { public int Id() {return id;} public MockDisc Id_(int val) {id = val; return this;} int id; public static final String id_idk = "id"; public String Name() {return name;} public MockDisc Name_(String val) {name = val; return this;} private String name; public static final String name_idk = "name"; public List_adp Titles() {return titles;} List_adp titles = List_adp_.new_(); public static final String titles_idk = "titles"; - public static final MockDisc _ = new MockDisc(); MockDisc() {} + public static final MockDisc Instance = new MockDisc(); MockDisc() {} public SrlObj SrlObj_New(Object o) {return new MockDisc();} public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { if (ctx.Match(k, id_idk)) return Id(); @@ -34,7 +34,7 @@ class MockDisc implements SrlObj, GfoInvkAble { // name = m.ReadStrOr(name_idk, name); // for (int i = 0; i < m.Subs_count(); i++) { // GfoMsg subMsg = m.Subs_getAt(i); -// if (String_.Eq(subMsg.Key(), titles_idk)) DoIt(ctx, ikey, k, subMsg, titles, MockTitle._, "title"); +// if (String_.Eq(subMsg.Key(), titles_idk)) DoIt(ctx, ikey, k, subMsg, titles, MockTitle.Instance, "title"); // } // } // public static void DoIt(GfsCtx ctx, int ikey, String k, GfoMsg m, List_adp list, Object o, String subKey) { @@ -42,7 +42,7 @@ class MockDisc implements SrlObj, GfoInvkAble { public void SrlObj_Srl(SrlMgr mgr) { id = mgr.SrlIntOr(id_idk, id); name = mgr.SrlStrOr(name_idk, name); - mgr.SrlList(titles_idk, titles, MockTitle._, "title"); + mgr.SrlList(titles_idk, titles, MockTitle.Instance, "title"); } public static MockDisc new_() { MockDisc rv = new MockDisc(); @@ -60,7 +60,7 @@ class MockTitle implements SrlObj, GfoInvkAble { MockTitle rv = new MockTitle(); return rv; } - public static final MockTitle _ = new MockTitle(); MockTitle() {} + public static final MockTitle Instance = new MockTitle(); MockTitle() {} public SrlObj SrlObj_New(Object o) {return new MockTitle();} public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { if (ctx.Match(k, id_idk)) return Id(); @@ -75,24 +75,24 @@ class MockTitle implements SrlObj, GfoInvkAble { // name = m.ReadStrOr(name_idk, name); // for (int i = 0; i < m.Subs_count(); i++) { // GfoMsg subMsg = m.Subs_getAt(i); -// if (String_.Eq(subMsg.Key(), chapters_idk)) MockDisc.DoIt(ctx, ikey, k, subMsg, chapters, MockChapter._, "chapter"); -// else if (String_.Eq(subMsg.Key(), audios_idk)) MockDisc.DoIt(ctx, ikey, k, subMsg, audios, MockStream._, "audio"); -// else if (String_.Eq(subMsg.Key(), subtitles_idk)) MockDisc.DoIt(ctx, ikey, k, subMsg, subtitles, MockStream._, "subtitle"); +// if (String_.Eq(subMsg.Key(), chapters_idk)) MockDisc.DoIt(ctx, ikey, k, subMsg, chapters, MockChapter.Instance, "chapter"); +// else if (String_.Eq(subMsg.Key(), audios_idk)) MockDisc.DoIt(ctx, ikey, k, subMsg, audios, MockStream.Instance, "audio"); +// else if (String_.Eq(subMsg.Key(), subtitles_idk)) MockDisc.DoIt(ctx, ikey, k, subMsg, subtitles, MockStream.Instance, "subtitle"); // } // } public void SrlObj_Srl(SrlMgr mgr) { id = mgr.SrlIntOr(id_idk, id); name = mgr.SrlStrOr(name_idk, name); - mgr.SrlList(chapters_idk, chapters, MockChapter._, "chapter"); - mgr.SrlList(audios_idk, audios, MockStream._, "audio"); - mgr.SrlList(subtitles_idk, subtitles, MockStream._, "subtitle"); + mgr.SrlList(chapters_idk, chapters, MockChapter.Instance, "chapter"); + mgr.SrlList(audios_idk, audios, MockStream.Instance, "audio"); + mgr.SrlList(subtitles_idk, subtitles, MockStream.Instance, "subtitle"); } } class MockChapter implements SrlObj, GfoInvkAble { public int Id() {return id;} public MockChapter Id_(int val) {id = val; return this;} int id; public static final String id_idk = "id"; public String Name() {return name;} public MockChapter Name_(String val) {name = val; return this;} private String name; public static final String name_idk = "name"; public MockChapter Title_(MockTitle title) {title.Chapters().Add(this); return this;} - public static final MockChapter _ = new MockChapter(); MockChapter() {} + public static final MockChapter Instance = new MockChapter(); MockChapter() {} public static MockChapter new_() { MockChapter rv = new MockChapter(); return rv; @@ -112,7 +112,7 @@ class MockStream implements SrlObj, GfoInvkAble { public int Id() {return id;} public MockStream Id_(int val) {id = val; return this;} int id; public static final String id_idk = "id"; public String Name() {return name;} public MockStream Name_(String val) {name = val; return this;} private String name; public static final String name_idk = "name"; public MockStream Title_(List_adp list) {list.Add(this); return this;} - public static final MockStream _ = new MockStream(); MockStream() {} + public static final MockStream Instance = new MockStream(); MockStream() {} public static MockStream new_() { MockStream rv = new MockStream(); return rv; diff --git a/140_dbs/tst/gplx/dbs/Db_conn_fxt.java b/140_dbs/tst/gplx/dbs/Db_conn_fxt.java index 82b212817..0ff33ea44 100644 --- a/140_dbs/tst/gplx/dbs/Db_conn_fxt.java +++ b/140_dbs/tst/gplx/dbs/Db_conn_fxt.java @@ -46,9 +46,9 @@ public class Db_conn_fxt implements RlsAble { } public void Rls() {conn.Rls_conn();} - public static Db_conn Mysql() {return Db_conn_pool.I.Get_or_new(Mysql_conn_info.new_("127.0.0.1", "unit_tests", "gplx_user", "gplx_password"));} - public static Db_conn Tdb(String fileName) {return Db_conn_pool.I.Get_or_new(Db_conn_info_.tdb_(Tfds.RscDir.GenSubDir_nest("140_dbs", "tdbs").GenSubFil(fileName)));} - public static Db_conn Postgres() {return Db_conn_pool.I.Get_or_new(Postgres_conn_info.new_("127.0.0.1", "unit_tests", "gplx_user", "gplx_password"));} - public static Db_conn Sqlite() {return Db_conn_pool.I.Get_or_new(Sqlite_conn_info.load_(Tfds.RscDir.GenSubFil_nest("140_dbs", "sqlite", "unit_tests.db")));} + public static Db_conn Mysql() {return Db_conn_pool.Instance.Get_or_new(Mysql_conn_info.new_("127.0.0.1", "unit_tests", "gplx_user", "gplx_password"));} + public static Db_conn Tdb(String fileName) {return Db_conn_pool.Instance.Get_or_new(Db_conn_info_.tdb_(Tfds.RscDir.GenSubDir_nest("140_dbs", "tdbs").GenSubFil(fileName)));} + public static Db_conn Postgres() {return Db_conn_pool.Instance.Get_or_new(Postgres_conn_info.new_("127.0.0.1", "unit_tests", "gplx_user", "gplx_password"));} + public static Db_conn Sqlite() {return Db_conn_pool.Instance.Get_or_new(Sqlite_conn_info.load_(Tfds.RscDir.GenSubFil_nest("140_dbs", "sqlite", "unit_tests.db")));} public static final boolean SkipPostgres = Tfds.SkipDb || true; } \ No newline at end of file diff --git a/140_dbs/tst/gplx/dbs/engines/db_DataTypes_tst.java b/140_dbs/tst/gplx/dbs/engines/db_DataTypes_tst.java index 7c0441cda..73a3b9cef 100644 --- a/140_dbs/tst/gplx/dbs/engines/db_DataTypes_tst.java +++ b/140_dbs/tst/gplx/dbs/engines/db_DataTypes_tst.java @@ -24,7 +24,7 @@ public class db_DataTypes_tst { fx.RunAll(Db_conn_fxt.Mysql()); } @Test public void Tdb() {if (Tfds.SkipDb) return; - fx.Select_FloatStr_(Float_.Xto_str(Float_.Div(1, 3))); + fx.Select_FloatStr_(Float_.To_str(Float_.Div(1, 3))); fx.RunAll(Db_conn_fxt.Tdb("110_dbs_multiple_data_types.dsv")); } @Test public void Postgres() {if (Db_conn_fxt.SkipPostgres) return; @@ -70,7 +70,7 @@ class DataTypes_base_fxt { Tfds.Eq_decimal(rdr.ReadDecimal("amount"), Decimal_adp_.parts_(12, 345)); } public void UpdateDate_hook() { - conn.Exec_qry(Db_qry_.update_("dbs_multiple_data_types", Db_crt_.eq_("unique_id", 1)).Arg_obj_("last_update", DateAdpClassXtn._.XtoDb(DateAdp_.parse_gplx("20091115 220000.000")))); + conn.Exec_qry(Db_qry_.update_("dbs_multiple_data_types", Db_crt_.eq_("unique_id", 1)).Arg_obj_("last_update", DateAdpClassXtn.Instance.XtoDb(DateAdp_.parse_gplx("20091115 220000.000")))); DataRdr rdr = Db_qry_.select_tbl_("dbs_multiple_data_types").Exec_qry_as_rdr(conn); rdr.MoveNextPeer(); diff --git a/140_dbs/xtn/gplx/dbs/SqliteDbMain.java b/140_dbs/xtn/gplx/dbs/SqliteDbMain.java index 1e7a68622..9006b6820 100644 --- a/140_dbs/xtn/gplx/dbs/SqliteDbMain.java +++ b/140_dbs/xtn/gplx/dbs/SqliteDbMain.java @@ -49,7 +49,7 @@ public class SqliteDbMain { // } private void CreateMany(int number, int base_val) { long time_bgn = Env_.TickCount(); - Db_conn provider = Db_conn_pool.I.Get_or_new__sqlite(Io_url_.new_fil_("E:\\test.sqlite3")); + Db_conn provider = Db_conn_pool.Instance.Get_or_new__sqlite(Io_url_.new_fil_("E:\\test.sqlite3")); String tbl_sql = String_.Concat_lines_nl ( "CREATE TABLE fsdb_xtn_thm" , "( thm_id integer NOT NULL PRIMARY KEY" @@ -162,7 +162,7 @@ public class SqliteDbMain { ); stat.executeUpdate(sql); - Console_adp__sys.I.Write_str_w_nl(DateAdp_.Now().XtoStr_fmt_yyyyMMdd_HHmmss_fff()); + Console_adp__sys.Instance.Write_str_w_nl(DateAdp_.Now().XtoStr_fmt_yyyyMMdd_HHmmss_fff()); // stat.executeUpdate("BEGIN TRANSACTION"); stat.executeUpdate("PRAGMA synchronous=OFF"); stat.executeUpdate("PRAGMA count_changes=OFF"); @@ -180,9 +180,9 @@ public class SqliteDbMain { } } void Iterate_dir(Io_url dir) { - Io_url[] urls = Io_mgr.I.QueryDir_args(dir).DirInclude_().ExecAsUrlAry(); + Io_url[] urls = Io_mgr.Instance.QueryDir_args(dir).DirInclude_().ExecAsUrlAry(); int urls_len = urls.length; - Console_adp__sys.I.Write_str_w_nl(dir.Raw()); + Console_adp__sys.Instance.Write_str_w_nl(dir.Raw()); boolean is_root = false; for (int i = 0; i < urls_len; i++) { Io_url url = urls[i]; @@ -208,7 +208,7 @@ public class SqliteDbMain { } void Insert_file(Io_url url) { if (String_.EqNot(url.Ext(), ".csv")) return; - String raw = Io_mgr.I.LoadFilStr(url); + String raw = Io_mgr.Instance.LoadFilStr(url); String[] lines = String_.SplitLines_nl(raw); int lines_len = lines.length; for (int i = 0; i < lines_len; i++) { diff --git a/150_gfui/lib/swt-gtk-3.8.jar b/150_gfui/lib/swt-gtk-3.8.jar new file mode 100644 index 000000000..c24c3aa4e Binary files /dev/null and b/150_gfui/lib/swt-gtk-3.8.jar differ diff --git a/150_gfui/src_110_draw_core/gplx/gfui/ColorAdp.java b/150_gfui/src_110_draw_core/gplx/gfui/ColorAdp.java index e20ced5d8..2087912e5 100644 --- a/150_gfui/src_110_draw_core/gplx/gfui/ColorAdp.java +++ b/150_gfui/src_110_draw_core/gplx/gfui/ColorAdp.java @@ -52,5 +52,5 @@ class ColorAdpCache { return (java.awt.Color)rv; } Hash_adp hash = Hash_adp_.new_(); - public static final ColorAdpCache _ = new ColorAdpCache(); ColorAdpCache() {} + public static final ColorAdpCache Instance = new ColorAdpCache(); ColorAdpCache() {} } diff --git a/150_gfui/src_110_draw_core/gplx/gfui/FontAdp.java b/150_gfui/src_110_draw_core/gplx/gfui/FontAdp.java index 7dbff37d1..1c62df5f6 100644 --- a/150_gfui/src_110_draw_core/gplx/gfui/FontAdp.java +++ b/150_gfui/src_110_draw_core/gplx/gfui/FontAdp.java @@ -26,7 +26,7 @@ public class FontAdp implements GfoInvkAble { @gplx.Internal protected Font UnderFont() {if (font == null) InitUnder(); return font;} Font font = null; void InitUnder() { if (Env_.Mode_testing()) return; // WORKAROUND/.NET: NUnit will randomlyly throw exceptions - font = FontAdpCache._.GetNativeFont(this); + font = FontAdpCache.Instance.GetNativeFont(this); if (ownerGxwCore != null) ownerGxwCore.TextFont_set(this); } @gplx.Internal protected FontAdp OwnerGxwCore_(GxwCore_base v) {ownerGxwCore = v; return this;} GxwCore_base ownerGxwCore; @@ -77,5 +77,5 @@ class FontAdpCache { public static int XtoOsDpi(float v) {return Math.round((v * 72) / screenResolutionInDpi);} // WORKAROUND/JAVA: Java needs 72 dpi screen resolution; wnt uses 96 or 120 dpi public static int XtoJavaDpi(float v) {return Math.round((v * screenResolutionInDpi) / 72);} static int screenResolutionInDpi = -1; - public static final FontAdpCache _ = new FontAdpCache(); FontAdpCache() {} + public static final FontAdpCache Instance = new FontAdpCache(); FontAdpCache() {} } diff --git a/150_gfui/src_110_draw_core/gplx/gfui/PenAdp.java b/150_gfui/src_110_draw_core/gplx/gfui/PenAdp.java index 317b9f037..acef354a5 100644 --- a/150_gfui/src_110_draw_core/gplx/gfui/PenAdp.java +++ b/150_gfui/src_110_draw_core/gplx/gfui/PenAdp.java @@ -23,7 +23,7 @@ public class PenAdp implements GfoInvkAble { public float Width() {return width;} public void Width_set(float v) {width = v; InitUnder();} float width; public ColorAdp Color() {return color;} public void Color_set(ColorAdp v) {color = v; InitUnder();} ColorAdp color; public BasicStroke UnderStroke() {if (underStroke == null) InitUnder(); return underStroke;} BasicStroke underStroke; - void InitUnder() {underStroke = PenAdpCache._.Fetch(width);} + void InitUnder() {underStroke = PenAdpCache.Instance.Fetch(width);} public PenAdp Clone() {return PenAdp_.new_(color, width);} public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { if (ctx.Match(k, Invk_Width_)) Width_set(m.ReadFloat(Invk_Width_)); @@ -49,5 +49,5 @@ class PenAdpCache { return (BasicStroke)rv; } Hash_adp hash = Hash_adp_.new_(); - public static final PenAdpCache _ = new PenAdpCache(); PenAdpCache() {} + public static final PenAdpCache Instance = new PenAdpCache(); PenAdpCache() {} } diff --git a/150_gfui/src_110_draw_core/gplx/gfui/SolidBrushAdp_.java b/150_gfui/src_110_draw_core/gplx/gfui/SolidBrushAdp_.java index 0a61bb37c..752fdfb2f 100644 --- a/150_gfui/src_110_draw_core/gplx/gfui/SolidBrushAdp_.java +++ b/150_gfui/src_110_draw_core/gplx/gfui/SolidBrushAdp_.java @@ -22,7 +22,7 @@ public class SolidBrushAdp_ { public static final SolidBrushAdp Black = new_(ColorAdp_.Black); public static final SolidBrushAdp White = new_(ColorAdp_.White); public static final SolidBrushAdp Null = new_(ColorAdp_.Null); - public static SolidBrushAdp new_(ColorAdp color) {return SolidBrushAdpCache._.Get_by(color);} + public static SolidBrushAdp new_(ColorAdp color) {return SolidBrushAdpCache.Instance.Get_by(color);} } class SolidBrushAdpCache { public SolidBrushAdp Get_by(ColorAdp color) { @@ -34,5 +34,5 @@ class SolidBrushAdpCache { return rv; } Hash_adp hash = Hash_adp_.new_(); - public static final SolidBrushAdpCache _ = new SolidBrushAdpCache(); SolidBrushAdpCache() {} + public static final SolidBrushAdpCache Instance = new SolidBrushAdpCache(); SolidBrushAdpCache() {} } diff --git a/150_gfui/src_120_draw_objs/gplx/gfui/GfxAdpBase.java b/150_gfui/src_120_draw_objs/gplx/gfui/GfxAdpBase.java index 59dfad622..fd4a12684 100644 --- a/150_gfui/src_120_draw_objs/gplx/gfui/GfxAdpBase.java +++ b/150_gfui/src_120_draw_objs/gplx/gfui/GfxAdpBase.java @@ -24,23 +24,23 @@ import java.awt.geom.Rectangle2D; import javax.swing.JComponent; public class GfxAdpBase implements GfxAdp { public void DrawLine(PenAdp pen, PointAdp src, PointAdp trg) { - gfx.setColor(ColorAdpCache._.GetNativeColor(pen.Color())); + gfx.setColor(ColorAdpCache.Instance.GetNativeColor(pen.Color())); gfx.setStroke(pen.UnderStroke()); gfx.drawLine(src.X(), src.Y(), trg.X(), trg.Y()); } public void DrawRect(PenAdp pen, PointAdp pos, SizeAdp size) {this.DrawRect(pen, pos.X(), pos.Y(), size.Width(), size.Height());} public void DrawRect(PenAdp pen, RectAdp rect) {this.DrawRect(pen, rect.X(), rect.Y(), rect.Width(), rect.Height());} public void DrawRect(PenAdp pen, int x, int y, int width, int height) { - gfx.setPaint(ColorAdpCache._.GetNativeColor(pen.Color())); + gfx.setPaint(ColorAdpCache.Instance.GetNativeColor(pen.Color())); gfx.setStroke(pen.UnderStroke()); gfx.drawRect(x, y, width, height); } public void FillRect(SolidBrushAdp brush, int x, int y, int width, int height) { - gfx.setPaint(ColorAdpCache._.GetNativeColor(brush.Color())); + gfx.setPaint(ColorAdpCache.Instance.GetNativeColor(brush.Color())); gfx.fillRect(x, y, width, height); } public void DrawStringXtn(String s, FontAdp font, SolidBrushAdp brush, float x, float y, float width, float height, GfxStringData sd) { - gfx.setPaint(ColorAdpCache._.GetNativeColor(brush.Color())); + gfx.setPaint(ColorAdpCache.Instance.GetNativeColor(brush.Color())); // height = y - ascent + descent -> rect.y - rect.height [assume ascent] + 2 [assume descent] gfx.setClip((int)x, (int)y - (int)height + 2, (int)width, (int)height); if (sd == null || sd.mnemonicString == null) { diff --git a/150_gfui/src_200_ipt/gplx/gfui/IptArg_.java b/150_gfui/src_200_ipt/gplx/gfui/IptArg_.java index 5b4c604cf..456c6ebbd 100644 --- a/150_gfui/src_200_ipt/gplx/gfui/IptArg_.java +++ b/150_gfui/src_200_ipt/gplx/gfui/IptArg_.java @@ -56,7 +56,7 @@ public class IptArg_ { if (String_.Eq(bgn, "wheel")) return IptMouseWheel_.parse(raw); else if (String_.Eq(bgn, "mouse")) return IptMouseBtn_.parse(raw); else if (String_.Eq(bgn, "key")) return IptKey_.parse(raw); - else return IptMacro._.parse(raw); + else return IptMacro.Instance.parse(raw); } // NOTE: the following two methods should theoretically be interface methods, but since they are only used by two procs, they will be handled with if/else @gplx.Internal protected static IptEventType EventType_default(IptArg arg) { @@ -83,13 +83,13 @@ class IptMacro { if (regy == null) Init(); Ordered_hash list = (Ordered_hash)regy.Get_by(prefix); if (list == null) { - list = Ordered_hash_.new_(); + list = Ordered_hash_.New(); regy.Add(prefix, list); } list.Add_if_dupe_use_nth(alias, arg); } void Init() { - regy = Ordered_hash_.new_(); + regy = Ordered_hash_.New(); Reg("mod", "c", IptKey_.add_(IptKey_.Ctrl)); Reg("mod", "a", IptKey_.add_(IptKey_.Alt)); Reg("mod", "s", IptKey_.add_(IptKey_.Shift)); @@ -114,5 +114,5 @@ class IptMacro { } Ordered_hash regy; static Err parse_err(String raw, String loc) {return Err_.new_("gfui", "could not parse IptArg", "raw", raw, "loc", loc).Trace_ignore_add_1_();} - public static final IptMacro _ = new IptMacro(); IptMacro() {} + public static final IptMacro Instance = new IptMacro(); IptMacro() {} } diff --git a/150_gfui/src_200_ipt/gplx/gfui/IptBndMgr.java b/150_gfui/src_200_ipt/gplx/gfui/IptBndMgr.java index 664944251..357374065 100644 --- a/150_gfui/src_200_ipt/gplx/gfui/IptBndMgr.java +++ b/150_gfui/src_200_ipt/gplx/gfui/IptBndMgr.java @@ -36,7 +36,7 @@ public class IptBndMgr implements SrlAble { List_adp del = List_adp_.new_(); for (int i = 0; i < cfgs.Count(); i++) { IptCfgPtr ptr = (IptCfgPtr)cfgs.Get_at(i); - IptCfg cfg = IptCfgRegy._.GetOrNew(ptr.CfgKey()); + IptCfg cfg = IptCfgRegy.Instance.GetOrNew(ptr.CfgKey()); cfg.Owners_del(ptr.CfgKey()); for (IptBndHash list : regy) { for (int j = 0; j < list.Count(); j++) { @@ -134,7 +134,7 @@ public class IptBndMgr implements SrlAble { if (evData.EventType() == IptEventType_.KeyDown) { chainP = chainMgr.Process(evData.EventArg()); if (!String_.Eq(chainP, "") && itm == null) - UsrDlg_._.Note("cancelled... {0}", chainP); + UsrDlg_.Instance.Note("cancelled... {0}", chainP); } if (itm == null) { return false; @@ -148,7 +148,7 @@ public class IptBndMgr implements SrlAble { return this; } IptArgChainMgr chainMgr = new IptArgChainMgr(); - Ordered_hash hash = Ordered_hash_.new_(); IptEventType curTypes = IptEventType_.None; + Ordered_hash hash = Ordered_hash_.New(); IptEventType curTypes = IptEventType_.None; public static IptBndMgr new_() {return new IptBndMgr();} IptBndHash[] regy = new IptBndHash[8]; IptBndMgr() {ClearLists();} @@ -206,7 +206,7 @@ class IptBndHash implements SrlAble { ((IptBndListItm)hash.Get_at(i)).Srl(m); return this; } - Ordered_hash hash = Ordered_hash_.new_(); + Ordered_hash hash = Ordered_hash_.New(); public IptBndHash(IptEventType eventType) {this.eventType = eventType;} } class IptBndListItm implements SrlAble { @@ -219,7 +219,7 @@ class IptBndListItm implements SrlAble { IptBnd bnd = (IptBnd)list.Get_at(i); try {bnd.Exec(evData);} catch (Exception exc) { - UsrDlg_._.Stop(UsrMsg.new_("Error while processing event").Add("bnd", SrlAble_.To_str(bnd)).Add("exc", Err_.Message_lang(exc))); + UsrDlg_.Instance.Stop(UsrMsg.new_("Error while processing event").Add("bnd", SrlAble_.To_str(bnd)).Add("exc", Err_.Message_lang(exc))); return false; } if (evData.CancelIteration) break; @@ -248,7 +248,7 @@ class IptArgChainMgr { } active = hash; activeKey = activeKey + arg.Key() + ","; - UsrDlg_._.Note("{0} pressed...", activeKey); + UsrDlg_.Instance.Note("{0} pressed...", activeKey); return ""; } public String ActiveKey() {return activeKey;} diff --git a/150_gfui/src_200_ipt/gplx/gfui/IptBnd_upDownRange.java b/150_gfui/src_200_ipt/gplx/gfui/IptBnd_upDownRange.java index 5e2a53e9d..a0a0bb225 100644 --- a/150_gfui/src_200_ipt/gplx/gfui/IptBnd_upDownRange.java +++ b/150_gfui/src_200_ipt/gplx/gfui/IptBnd_upDownRange.java @@ -31,7 +31,7 @@ public class IptBnd_upDownRange implements InjectAble, GfoInvkAble, GfoEvObj { if (ctx.Match(k, Invk_TxtBox_dec)) ExecCmd(cmd, curVal - 1); else if (ctx.Match(k, Invk_TxtBox_inc)) ExecCmd(cmd, curVal + 1); else if (ctx.Match(k, Invk_TxtBox_exec)) { - Object valObj = IntClassXtn._.ParseOrNull(txtBox.Text()); if (valObj == null) throw Err_.new_wo_type("invalid int", "text", txtBox.Text()); + Object valObj = IntClassXtn.Instance.ParseOrNull(txtBox.Text()); if (valObj == null) throw Err_.new_wo_type("invalid int", "text", txtBox.Text()); ExecCmd(doIt, Int_.cast(valObj)); } else if (ctx.Match(k, evt)) WhenEvt(ctx, m); @@ -41,7 +41,7 @@ public class IptBnd_upDownRange implements InjectAble, GfoInvkAble, GfoEvObj { public int Adj() {return adj;} public IptBnd_upDownRange Adj_(int v) {adj = v; return this;} int adj; void WhenEvt(GfsCtx ctx, GfoMsg m) { curVal = m.ReadInt(arg) + adj; - txtBox.Text_(Int_.Xto_str(curVal)); + txtBox.Text_(Int_.To_str(curVal)); } void ExecCmd(String c, int val) { GfoInvkAble_.InvkCmd_val(src, c, val - adj); diff --git a/150_gfui/src_200_ipt/gplx/gfui/IptCfg.java b/150_gfui/src_200_ipt/gplx/gfui/IptCfg.java index b3b54a133..8440b8f60 100644 --- a/150_gfui/src_200_ipt/gplx/gfui/IptCfg.java +++ b/150_gfui/src_200_ipt/gplx/gfui/IptCfg.java @@ -70,7 +70,7 @@ class IptCfg_base implements IptCfg { } list.Add(owner); owner.IptBnds().Cfgs().Add(new IptCfgPtr(cfgKey, bndKey)); - } Ordered_hash owners = Ordered_hash_.new_(); + } Ordered_hash owners = Ordered_hash_.New(); public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { if (ctx.MatchIn(k, Invk_Add, Invk_set)) { String bndKey = m.ReadStr("bndKey"); @@ -82,7 +82,7 @@ class IptCfg_base implements IptCfg { return this; } public static final String Invk_Add = "Add", Invk_set = "set"; public IptCfg_base(String cfgKey) {this.cfgKey = cfgKey;} - Ordered_hash hash = Ordered_hash_.new_(); + Ordered_hash hash = Ordered_hash_.New(); public Object NewByKey(Object o) {return new IptCfg_base((String)o);} @gplx.Internal protected static final IptCfg HashProto = new IptCfg_base(); @gplx.Internal protected IptCfg_base() {} } class IptCfgPtr { diff --git a/150_gfui/src_200_ipt/gplx/gfui/IptCfgRegy.java b/150_gfui/src_200_ipt/gplx/gfui/IptCfgRegy.java index 10e62e5c5..82e5b9f23 100644 --- a/150_gfui/src_200_ipt/gplx/gfui/IptCfgRegy.java +++ b/150_gfui/src_200_ipt/gplx/gfui/IptCfgRegy.java @@ -27,7 +27,7 @@ public class IptCfgRegy implements GfoInvkAble { } return this; } public static final String Invk_Get = "Get", Invk_get = "get"; - Ordered_hash hash = Ordered_hash_.new_(); - public static final IptCfgRegy _ = new IptCfgRegy(); + Ordered_hash hash = Ordered_hash_.New(); + public static final IptCfgRegy Instance = new IptCfgRegy(); public IptCfgRegy() {} } diff --git a/150_gfui/src_200_ipt/gplx/gfui/IptCfg_.java b/150_gfui/src_200_ipt/gplx/gfui/IptCfg_.java index 8b1fbdbb2..6b1d98847 100644 --- a/150_gfui/src_200_ipt/gplx/gfui/IptCfg_.java +++ b/150_gfui/src_200_ipt/gplx/gfui/IptCfg_.java @@ -17,8 +17,8 @@ along with this program. If not, see . */ package gplx.gfui; import gplx.*; public class IptCfg_ { - public static final IptCfg Null = IptCfg_null._; - public static IptCfg new_(String key) {return IptCfgRegy._.GetOrNew(key);} + public static final IptCfg Null = IptCfg_null.Instance; + public static IptCfg new_(String key) {return IptCfgRegy.Instance.GetOrNew(key);} } class IptCfg_null implements IptCfg { public String CfgKey() {return "<>";} @@ -27,5 +27,5 @@ class IptCfg_null implements IptCfg { public void Owners_del(String key) {} public Object NewByKey(Object o) {return this;} public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) {return GfoInvkAble_.Rv_unhandled;} - public static final IptCfg_null _ = new IptCfg_null(); IptCfg_null() {} + public static final IptCfg_null Instance = new IptCfg_null(); IptCfg_null() {} } diff --git a/150_gfui/src_200_ipt/gplx/gfui/IptCfg_tst.java b/150_gfui/src_200_ipt/gplx/gfui/IptCfg_tst.java index 66bd0b4fd..d88555388 100644 --- a/150_gfui/src_200_ipt/gplx/gfui/IptCfg_tst.java +++ b/150_gfui/src_200_ipt/gplx/gfui/IptCfg_tst.java @@ -19,7 +19,7 @@ package gplx.gfui; import gplx.*; import org.junit.*; public class IptCfg_tst { @Before public void setup() { - IptCfgRegy._.Clear(); + IptCfgRegy.Instance.Clear(); box = new IptBndsOwner_mok(); cfg = new IptCfg_mok(); key = IptBndsOwner_mok.Invk_Reg; diff --git a/150_gfui/src_200_ipt/gplx/gfui/IptEventMgr.java b/150_gfui/src_200_ipt/gplx/gfui/IptEventMgr.java index 852f1d712..5c6b04a45 100644 --- a/150_gfui/src_200_ipt/gplx/gfui/IptEventMgr.java +++ b/150_gfui/src_200_ipt/gplx/gfui/IptEventMgr.java @@ -30,7 +30,7 @@ class IptEventMgr implements GfoInvkAble { @gplx.Internal protected static void ExecKeyPress(GfuiElem sender, IptEvtDataKeyHeld keyPressState) { // Tfds.Write(keyPressState.KeyChar()); if (keyHandled) {keyPressState.Handled_set(true); return;} - IptEventData iptData = IptEventData.new_(sender, IptEventType_.KeyPress, IptKeyStrMgr._.FetchByKeyPress((int)(byte)keyPressState.KeyChar()), keyStateCur, keyPressState, mouseStateCur); + IptEventData iptData = IptEventData.new_(sender, IptEventType_.KeyPress, IptKeyStrMgr.Instance.FetchByKeyPress((int)(byte)keyPressState.KeyChar()), keyStateCur, keyPressState, mouseStateCur); sender.IptBnds().Process(iptData); SendData(iptData); } diff --git a/150_gfui/src_200_ipt/gplx/gfui/IptEvtDataKey.java b/150_gfui/src_200_ipt/gplx/gfui/IptEvtDataKey.java index a304008a3..f92ec03c0 100644 --- a/150_gfui/src_200_ipt/gplx/gfui/IptEvtDataKey.java +++ b/150_gfui/src_200_ipt/gplx/gfui/IptEvtDataKey.java @@ -28,7 +28,7 @@ public class IptEvtDataKey { IptKey keyArg = IptKey_.api_(val); return new_(keyArg); } - @gplx.Internal protected static IptEvtDataKey new_(IptKey key) { + public static IptEvtDataKey new_(IptKey key) { IptEvtDataKey rv = new IptEvtDataKey(); rv.key = key; return rv; diff --git a/150_gfui/src_200_ipt/gplx/gfui/IptKey.java b/150_gfui/src_200_ipt/gplx/gfui/IptKey.java index d21cecebe..76e7cc45e 100644 --- a/150_gfui/src_200_ipt/gplx/gfui/IptKey.java +++ b/150_gfui/src_200_ipt/gplx/gfui/IptKey.java @@ -21,7 +21,7 @@ public class IptKey implements IptArg { public String Key() {return key;} private final String key; public int Val() {return val;} private final int val; public boolean Eq(IptArg comp) {return String_.Eq(key, comp.Key());} - public String XtoUiStr() {return IptKeyStrMgr._.To_str(this);} + public String XtoUiStr() {return IptKeyStrMgr.Instance.To_str(this);} public IptKey Add(IptKey comp) {return IptKey_.add_(this, comp);} public boolean Mod_shift() {return Bitmask_.Has_int(val, IptKey_.Shift.Val());} public boolean Mod_ctrl() {return Bitmask_.Has_int(val, IptKey_.Ctrl.Val());} diff --git a/150_gfui/src_200_ipt/gplx/gfui/IptKeyStrMgr.java b/150_gfui/src_200_ipt/gplx/gfui/IptKeyStrMgr.java index 960c08884..ad2748f16 100644 --- a/150_gfui/src_200_ipt/gplx/gfui/IptKeyStrMgr.java +++ b/150_gfui/src_200_ipt/gplx/gfui/IptKeyStrMgr.java @@ -70,6 +70,6 @@ class IptKeyStrMgr { charKeys[charVal] = k; } IptKey[] charKeys; - Hash_adp literals; Ordered_hash keys = Ordered_hash_.new_(); - public static final IptKeyStrMgr _ = new IptKeyStrMgr(); IptKeyStrMgr() {} + Hash_adp literals; Ordered_hash keys = Ordered_hash_.New(); + public static final IptKeyStrMgr Instance = new IptKeyStrMgr(); IptKeyStrMgr() {} } diff --git a/150_gfui/src_200_ipt/gplx/gfui/IptKeyStrMgr_tst.java b/150_gfui/src_200_ipt/gplx/gfui/IptKeyStrMgr_tst.java index e14d04af8..ed4baecb3 100644 --- a/150_gfui/src_200_ipt/gplx/gfui/IptKeyStrMgr_tst.java +++ b/150_gfui/src_200_ipt/gplx/gfui/IptKeyStrMgr_tst.java @@ -50,7 +50,7 @@ public class IptKeyStrMgr_tst { tst_FetchByKeyPress('A', IptKey_.add_(IptKey_.A, IptKey_.Shift)); tst_FetchByKeyPress('1', IptKey_.add_(IptKey_.D1)); tst_FetchByKeyPress('!', IptKey_.add_(IptKey_.D1, IptKey_.Shift)); - } void tst_FetchByKeyPress(char c, IptKey expd) {Tfds.Eq(expd.Key(), IptKeyStrMgr._.FetchByKeyPress((int)c).Key());} + } void tst_FetchByKeyPress(char c, IptKey expd) {Tfds.Eq(expd.Key(), IptKeyStrMgr.Instance.FetchByKeyPress((int)c).Key());} void tst_XtoUiStr(IptKey key, String expd) {Tfds.Eq(expd, key.XtoUiStr());} void tst_XtoUiStrShifted(IptKey key, String expdNormal, String expdShifted) { Tfds.Eq(expdNormal, key.XtoUiStr()); diff --git a/150_gfui/src_200_ipt/gplx/gfui/IptKey_.java b/150_gfui/src_200_ipt/gplx/gfui/IptKey_.java index d9efcd956..f0a9b96c2 100644 --- a/150_gfui/src_200_ipt/gplx/gfui/IptKey_.java +++ b/150_gfui/src_200_ipt/gplx/gfui/IptKey_.java @@ -33,7 +33,7 @@ public class IptKey_ { } public static IptKey api_(int val) { IptKey rv = (IptKey)enm_mgr.Get(val); - return (rv == null) ? new_(val, "key_" + Int_.Xto_str(val)) : rv; + return (rv == null) ? new_(val, "key_" + Int_.To_str(val)) : rv; } public static IptKey parse(String raw) {return get_or_new_(enm_mgr.GetVal(raw));} public static IptKey rdr_or_(DataRdr rdr, String key, IptKey or) { @@ -44,7 +44,7 @@ public class IptKey_ { List_adp list = List_adp_.new_(); for (IptKey key : add) list.Add(key); - IptKeyStrMgr._.XtoIptKeyAry(list); + IptKeyStrMgr.Instance.XtoIptKeyAry(list); for (IptKey key : del) list.Del(key); return list; @@ -53,7 +53,7 @@ public class IptKey_ { List_adp list = List_adp_.new_(); for (IptKey key : add) list.Add(key); - IptKeyStrMgr._.XtoIptKeyAry(list); + IptKeyStrMgr.Instance.XtoIptKeyAry(list); for (IptKey key : del) list.Del(key); return (IptKey[])list.To_ary(IptKey.class); @@ -105,7 +105,7 @@ public class IptKey_ { private static Ordered_hash ui_str_hash; public static Ordered_hash Ui_str_hash() { if (ui_str_hash == null) { - ui_str_hash = Ordered_hash_.new_(); + ui_str_hash = Ordered_hash_.New(); All_add(ui_str_hash , IptKey_.Back, IptKey_.Tab, IptKey_.Clear, IptKey_.Enter , IptKey_.Pause, IptKey_.CapsLock, IptKey_.Escape, IptKey_.Space @@ -147,7 +147,7 @@ public class IptKey_ { rv += "+"; } IptKey key = (IptKey)IptKey_.Ui_str_hash().Get_by(Int_obj_ref.new_(val)); - String key_str = key == null ? "key.#" + Int_.Xto_str(val) : key.Key(); + String key_str = key == null ? "key.#" + Int_.To_str(val) : key.Key(); return rv + key_str; } } diff --git a/150_gfui/src_210_lyt/gplx/gfui/GftGrid_fx.java b/150_gfui/src_210_lyt/gplx/gfui/GftGrid_fx.java index 830853319..c7a5daf6e 100644 --- a/150_gfui/src_210_lyt/gplx/gfui/GftGrid_fx.java +++ b/150_gfui/src_210_lyt/gplx/gfui/GftGrid_fx.java @@ -27,7 +27,7 @@ class GftGrid_fx { } public GftGrid_fx ini_AddItms(int num) { for (int i = 0; i < num; i++) - itms.Add(new GftItem_mok());//.Key_("key" + Int_.Xto_str(i))); + itms.Add(new GftItem_mok());//.Key_("key" + Int_.To_str(i))); return this; } public GftGrid_fx ini_ItmWidth(int i, int width) { diff --git a/150_gfui/src_300_gxw/gplx/gfui/GxwCbkHost_.java b/150_gfui/src_300_gxw/gplx/gfui/GxwCbkHost_.java index dab5af3d5..3ce583cdf 100644 --- a/150_gfui/src_300_gxw/gplx/gfui/GxwCbkHost_.java +++ b/150_gfui/src_300_gxw/gplx/gfui/GxwCbkHost_.java @@ -20,7 +20,7 @@ import java.awt.KeyboardFocusManager; import java.awt.event.KeyEvent; import java.awt.event.MouseEvent; import java.awt.event.MouseWheelEvent; -class GxwCbkHost_ { +public class GxwCbkHost_ { public static final GxwCbkHost Null = new GfuiHost_cls_null(); public static final boolean ExecKeyEvent(GxwCbkHost host, KeyEvent e) { boolean rv = true; int id = e.getID(), val = e.getKeyCode(); diff --git a/150_gfui/src_300_gxw/gplx/gfui/GxwCore_lang.java b/150_gfui/src_300_gxw/gplx/gfui/GxwCore_lang.java index 7fdf686c5..9f76ae3aa 100644 --- a/150_gfui/src_300_gxw/gplx/gfui/GxwCore_lang.java +++ b/150_gfui/src_300_gxw/gplx/gfui/GxwCore_lang.java @@ -55,14 +55,14 @@ public class GxwCore_lang extends GxwCore_base { @Override public ColorAdp BackColor() {return XtoColorAdp(control.getBackground());} @Override public void BackColor_set(ColorAdp v) { if (control instanceof JComponent) { - ((JComponent)control).setBackground(ColorAdpCache._.GetNativeColor(v)); + ((JComponent)control).setBackground(ColorAdpCache.Instance.GetNativeColor(v)); } else if (control instanceof RootPaneContainer) { RootPaneContainer container = (RootPaneContainer)control; - container.getContentPane().setBackground(ColorAdpCache._.GetNativeColor(v)); + container.getContentPane().setBackground(ColorAdpCache.Instance.GetNativeColor(v)); } } - @Override public ColorAdp ForeColor() {return XtoColorAdp(control.getForeground());} @Override public void ForeColor_set(ColorAdp v) {control.setForeground(ColorAdpCache._.GetNativeColor(v));} + @Override public ColorAdp ForeColor() {return XtoColorAdp(control.getForeground());} @Override public void ForeColor_set(ColorAdp v) {control.setForeground(ColorAdpCache.Instance.GetNativeColor(v));} @Override public FontAdp TextFont() { if (prvFont != null) return prvFont; Font f = control.getFont(); diff --git a/150_gfui/src_300_gxw/gplx/gfui/GxwElemFactory_base.java b/150_gfui/src_300_gxw/gplx/gfui/GxwElemFactory_base.java index b1c6d1e71..91429831e 100644 --- a/150_gfui/src_300_gxw/gplx/gfui/GxwElemFactory_base.java +++ b/150_gfui/src_300_gxw/gplx/gfui/GxwElemFactory_base.java @@ -31,9 +31,9 @@ public abstract class GxwElemFactory_base { // @gplx.Internal protected GxwElem spacer_() {return MockControl.new_();} } class GxwElemFactory_ { - public static GxwElemFactory_base _ = new GxwElemFactory_cls_mock(); - public static void winForms_() {_ = new GxwElemFactory_cls_lang();} - public static void swt_(org.eclipse.swt.widgets.Display display) {_ = new GxwElemFactory_swt(display);} + public static GxwElemFactory_base Instance = new GxwElemFactory_cls_mock(); + public static void winForms_() {Instance = new GxwElemFactory_cls_lang();} + public static void swt_(org.eclipse.swt.widgets.Display display) {Instance = new GxwElemFactory_swt(display);} } class GxwElemFactory_cls_lang extends GxwElemFactory_base { @gplx.Internal @Override protected GxwElem control_() {return new GxwElem_lang();} @@ -61,9 +61,9 @@ class GxwElemFactory_cls_lang extends GxwElemFactory_base { } class GxwElemFactory_cls_mock extends GxwElemFactory_base { @gplx.Internal @Override protected GxwElem control_() {return GxwElem_mock_base.new_();} - @gplx.Internal @Override protected GxwWin win_app_() {return MockForm._;} - @gplx.Internal @Override protected GxwWin win_tool_(KeyValHash ctorArgs) {return MockForm._;} - @gplx.Internal @Override protected GxwWin win_toaster_(KeyValHash ctorArgs) {return MockForm._;} + @gplx.Internal @Override protected GxwWin win_app_() {return MockForm.Instance;} + @gplx.Internal @Override protected GxwWin win_tool_(KeyValHash ctorArgs) {return MockForm.Instance;} + @gplx.Internal @Override protected GxwWin win_toaster_(KeyValHash ctorArgs) {return MockForm.Instance;} @gplx.Internal @Override protected GxwElem lbl_() {return GxwElem_mock_base.new_();} @gplx.Internal @Override protected GxwTextFld text_fld_() {return new MockTextBox();} @gplx.Internal @Override protected GxwTextFld text_memo_() {return new MockTextBoxMulti();} diff --git a/150_gfui/src_300_gxw/gplx/gfui/GxwTextHtml_lang.java b/150_gfui/src_300_gxw/gplx/gfui/GxwTextHtml_lang.java index 271c10840..ee84848d1 100644 --- a/150_gfui/src_300_gxw/gplx/gfui/GxwTextHtml_lang.java +++ b/150_gfui/src_300_gxw/gplx/gfui/GxwTextHtml_lang.java @@ -159,8 +159,8 @@ class GxwTextHtml_editor extends JEditorPane implements GxwTextHtml { } public String Html_print() { String_bldr sb = String_bldr_.new_(); - sb.Add("selBgn=").Add(Int_.Xto_str(Html_sel_bgn())).Add_char_crlf(); - sb.Add("selEnd=").Add(Int_.Xto_str(Html_sel_end())).Add_char_crlf(); + sb.Add("selBgn=").Add(Int_.To_str(Html_sel_bgn())).Add_char_crlf(); + sb.Add("selEnd=").Add(Int_.To_str(Html_sel_end())).Add_char_crlf(); sb.Add("selTxt=").Add(Html_sel_text()).Add_char_crlf(); KeyVal[] atrs = Html_sel_atrs(); for (int i = 0; i < atrs.length; i++) { diff --git a/150_gfui/src_300_gxw/gplx/gfui/MockForm.java b/150_gfui/src_300_gxw/gplx/gfui/MockForm.java index f2c0447e7..3c85bed76 100644 --- a/150_gfui/src_300_gxw/gplx/gfui/MockForm.java +++ b/150_gfui/src_300_gxw/gplx/gfui/MockForm.java @@ -27,5 +27,5 @@ public class MockForm extends GxwElem_mock_base implements GxwWin { public void OpenedCmd_set(GfoInvkAbleCmd v) {} public void TaskbarVisible_set(boolean val) {} public void TaskbarParkingWindowFix(GxwElem form) {} - public static final MockForm _ = new MockForm(); MockForm() {} + public static final MockForm Instance = new MockForm(); MockForm() {} } diff --git a/150_gfui/src_400_win/gplx/gfui/GfoConsoleWin.java b/150_gfui/src_400_win/gplx/gfui/GfoConsoleWin.java index fd6aaadb9..2ae39af95 100644 --- a/150_gfui/src_400_win/gplx/gfui/GfoConsoleWin.java +++ b/150_gfui/src_400_win/gplx/gfui/GfoConsoleWin.java @@ -47,7 +47,7 @@ public class GfoConsoleWin implements GfoInvkAble, UsrMsgWkr { IptBnd_.cmd_to_(IptCfg_.Null, consoleBox, cmds, GfoConsoleWinCmds.Invk_Clear, IptKey_.add_(IptKey_.Ctrl, IptKey_.Alt, IptKey_.C)); logger = new GfuiTextBoxLogger(this).Init(statusBox); // gplx.ios.GfioApp.InitGfs(); - UsrDlg_._.Reg(UsrMsgWkr_.Type_Note, this); + UsrDlg_.Instance.Reg(UsrMsgWkr_.Type_Note, this); win.Lyt_activate(); win.Lyt().Bands_add(GftBand.fillWidth_()); @@ -82,7 +82,7 @@ public class GfoConsoleWin implements GfoInvkAble, UsrMsgWkr { return this; } public static final String Invk_Show = "Show" ; - public static final GfoConsoleWin _ = new GfoConsoleWin(); GfoConsoleWin() {} + public static final GfoConsoleWin Instance = new GfoConsoleWin(); GfoConsoleWin() {} } class GfoConsoleWinCmds implements GfoInvkAble { GfuiWin win; GfuiTextBox consoleFilBox, consoleBox, statusBox, resultBox; @@ -92,8 +92,8 @@ class GfoConsoleWinCmds implements GfoInvkAble { consoleBox = (GfuiTextBox)win.SubElems().Get_by("consoleBox"); resultBox = (GfuiTextBox)win.SubElems().Get_by("resultBox"); statusBox = (GfuiTextBox)win.SubElems().Get_by("statusBox"); - GfsCore._.AddObj(this, "gfoConsoleWin"); - GfsCore._.ExecRegy("gplx.gfui.GfoConsoleWin.ini"); + GfsCore.Instance.AddObj(this, "gfoConsoleWin"); + GfsCore.Instance.ExecRegy("gplx.gfui.GfoConsoleWin.ini"); } public void Results_add(String s) { if (!String_.Has_at_end(s, GfuiTextBox_.NewLine)) @@ -106,9 +106,9 @@ class GfoConsoleWinCmds implements GfoInvkAble { String cmdText = consoleBox.SelLen() == 0 ? consoleBox.Text() : consoleBox.SelText(); String cmd = FixNewLines(cmdText); GfoMsg runMsg = GfoMsg_.Null; - try {runMsg = GfsCore._.MsgParser().ParseToMsg(cmd);} catch (Exception e) {statusBox.Text_("invalid gfml " + Err_.Message_gplx_full(e)); return;} + try {runMsg = GfsCore.Instance.MsgParser().ParseToMsg(cmd);} catch (Exception e) {statusBox.Text_("invalid gfml " + Err_.Message_gplx_full(e)); return;} GfsCtx ctx = GfsCtx.new_(); - Object rv = GfsCore._.ExecMany(ctx, runMsg); + Object rv = GfsCore.Instance.ExecMany(ctx, runMsg); resultBox.Text_(Object_.Xto_str_strict_or_empty(rv)); } void Help() { @@ -120,9 +120,9 @@ class GfoConsoleWinCmds implements GfoInvkAble { try {runMsg = GfmlDataNde.XtoMsgNoRoot(cmd);} catch (Exception e) {statusBox.Text_("invalid gfml " + Err_.Message_gplx_full(e)); return;} GfsCtx ctx = GfsCtx.new_(); try { - Object rv = GfsCore._.ExecOne(ctx, runMsg); + Object rv = GfsCore.Instance.ExecOne(ctx, runMsg); if (rv != GfoInvkAble_.Rv_handled && rv != GfoInvkAble_.Rv_unhandled) { - UsrDlg_._.Note(Object_.Xto_str_strict_or_empty(rv)); + UsrDlg_.Instance.Note(Object_.Xto_str_strict_or_empty(rv)); } // Results_add(FixNewLines(ctx.Results_XtoStr())); } catch (Exception e) {statusBox.Text_("help failed " + Err_.Message_gplx_full(e)); return;} @@ -137,7 +137,7 @@ class GfoConsoleWinCmds implements GfoInvkAble { } else url = Io_url_.new_any_(consoleFilStr); - Io_mgr.I.SaveFilStr(url, consoleBox.Text()); + Io_mgr.Instance.SaveFilStr(url, consoleBox.Text()); } void Load() { String consoleFilStr = consoleFilBox.Text(); @@ -149,7 +149,7 @@ class GfoConsoleWinCmds implements GfoInvkAble { dir = dir.OwnerDir(); } Io_url url = GfuiIoDialogUtl.SelectFile(dir); if (url == Io_url_.Empty) return; - consoleBox.Text_(Io_mgr.I.LoadFilStr(url)); + consoleBox.Text_(Io_mgr.Instance.LoadFilStr(url)); } String FixNewLines(String cmd) { cmd = String_.Replace(cmd, "\n", "\r\n"); @@ -193,7 +193,7 @@ class GfoConsoleWinCmds implements GfoInvkAble { Io_url v = m.ReadIoUrl("v"); if (ctx.Deny()) return this; consoleFilBox.Text_(v.Xto_api()); - consoleBox.Text_(Io_mgr.I.LoadFilStr(v)); + consoleBox.Text_(Io_mgr.Instance.LoadFilStr(v)); } else return win.Invk(ctx, ikey, k, m); return this; diff --git a/150_gfui/src_400_win/gplx/gfui/GfuiFocusXferBnd.java b/150_gfui/src_400_win/gplx/gfui/GfuiFocusXferBnd.java index 01e09d17a..3ba1940b8 100644 --- a/150_gfui/src_400_win/gplx/gfui/GfuiFocusXferBnd.java +++ b/150_gfui/src_400_win/gplx/gfui/GfuiFocusXferBnd.java @@ -48,5 +48,5 @@ class GfuiFocusXferBnd implements InjectAble, GfoInvkAble { else return GfoInvkAble_.Rv_unhandled; return this; } public static final String Invk_FocusNext = "FocusNext", Invk_FocusPrev = "FocusPrev"; - public static final GfuiFocusXferBnd _ = new GfuiFocusXferBnd(); GfuiFocusXferBnd() {} + public static final GfuiFocusXferBnd Instance = new GfuiFocusXferBnd(); GfuiFocusXferBnd() {} } \ No newline at end of file diff --git a/150_gfui/src_400_win/gplx/gfui/GfuiMenuBar.java b/150_gfui/src_400_win/gplx/gfui/GfuiMenuBar.java index d2948e17c..ddc84da2a 100644 --- a/150_gfui/src_400_win/gplx/gfui/GfuiMenuBar.java +++ b/150_gfui/src_400_win/gplx/gfui/GfuiMenuBar.java @@ -47,8 +47,8 @@ public class GfuiMenuBar implements GfoInvkAble { root.ForeColor_(ColorAdp_.Black).BackColor_(ColorAdp_.White); root.ExecProps(); curOwnerItm = root; - GfsCore._.AddObj(this, "GfuiMenuBar_"); - GfsCore._.ExecRegy("gplx.gfui.GfuiMenuBar.ini"); + GfsCore.Instance.AddObj(this, "GfuiMenuBar_"); + GfsCore.Instance.ExecRegy("gplx.gfui.GfuiMenuBar.ini"); } catch (Exception e) {GfuiEnv_.ShowMsg(Err_.Message_gplx_full(e));} } @@ -79,7 +79,7 @@ public class GfuiMenuBar implements GfoInvkAble { GfuiMenuBarItm itm = GfuiMenuBarItm.sub_(curOwnerItm); itm.Type_(GfuiMenuBarItmType.Spr); itm.Text_(text); - itm.Key_(curOwnerItm.Key() + "." + text + Int_.Xto_str(separatorIdx++)); + itm.Key_(curOwnerItm.Key() + "." + text + Int_.To_str(separatorIdx++)); itm.ExecProps(); } else if (ctx.Match(k, Invk_RegCmd)) { @@ -197,8 +197,8 @@ class GfuiMenuBarItm { if (mnem != '\0') itm.setMnemonic(mnem); } void SetProps(JComponent itm) { - if (backColor != null) itm.setBackground(ColorAdpCache._.GetNativeColor(backColor)); - if (foreColor != null) itm.setForeground(ColorAdpCache._.GetNativeColor(foreColor)); + if (backColor != null) itm.setBackground(ColorAdpCache.Instance.GetNativeColor(backColor)); + if (foreColor != null) itm.setForeground(ColorAdpCache.Instance.GetNativeColor(foreColor)); itm.setFont(MakeFont(itm.getFont())); if (String_.Len(tipText) > 0) itm.setToolTipText(tipText); } @@ -258,7 +258,7 @@ class GxwBorderFactory { class GfuiMenuBarItmCmd implements ActionListener { public void actionPerformed(ActionEvent ev) { try { - GfsCore._.ExecOne(GfsCtx._, GfuiMenuBarItm.CmdMsg(itm)); + GfsCore.Instance.ExecOne(GfsCtx.Instance, GfuiMenuBarItm.CmdMsg(itm)); } catch (Exception e) { GfuiEnv_.ShowMsg(Err_.Message_gplx_full(e)); diff --git a/150_gfui/src_400_win/gplx/gfui/GfuiTipTextMgr.java b/150_gfui/src_400_win/gplx/gfui/GfuiTipTextMgr.java index 9a7291eb5..11e98f58d 100644 --- a/150_gfui/src_400_win/gplx/gfui/GfuiTipTextMgr.java +++ b/150_gfui/src_400_win/gplx/gfui/GfuiTipTextMgr.java @@ -29,5 +29,5 @@ class GfuiTipTextMgr implements GfuiWinOpenAble { ToolTipManager.sharedInstance().setReshowDelay(0); jcomp.setToolTipText(sub.TipText()); } - public static final GfuiTipTextMgr _ = new GfuiTipTextMgr(); + public static final GfuiTipTextMgr Instance = new GfuiTipTextMgr(); } diff --git a/150_gfui/src_400_win/gplx/gfui/GfuiWin.java b/150_gfui/src_400_win/gplx/gfui/GfuiWin.java index e28995a71..48a82495c 100644 --- a/150_gfui/src_400_win/gplx/gfui/GfuiWin.java +++ b/150_gfui/src_400_win/gplx/gfui/GfuiWin.java @@ -45,9 +45,9 @@ public class GfuiWin extends GfuiElemBase { win.OpenedCmd_set(GfoInvkAbleCmd.new_(this, Evt_Opened)); GfoEvMgr_.Sub(this, GfuiElemKeys.IptRcvd_evt, keyCmdMgr, GfuiWinKeyCmdMgr.CheckForHotKey_cmd); IptBnd_.cmd_(IptCfg_.Null, this, StopAppByAltF4_evt, IptKey_.Alt.Add(IptKey_.F4)); -// IptBnd_.cmd_to_(IptCfg_.Null, this, GfoConsoleWin._, GfoConsoleWin.Invk_Show, IptKey_.Ctrl.Add(IptKey_.Alt).Add(IptKey_.E)); +// IptBnd_.cmd_to_(IptCfg_.Null, this, GfoConsoleWin.Instance, GfoConsoleWin.Invk_Show, IptKey_.Ctrl.Add(IptKey_.Alt).Add(IptKey_.E)); IptBnd_.cmd_(IptCfg_.Null, this, Invk_ShowFocusOwner, IptKey_.add_(IptKey_.Ctrl, IptKey_.Alt, IptKey_.F12)); - loadList.Add(keyCmdMgr); loadList.Add(GfuiTipTextMgr._); + loadList.Add(keyCmdMgr); loadList.Add(GfuiTipTextMgr.Instance); focusMgr = GfuiWinFocusMgr.new_(this); } @Override public void ctor_GfuiBox_base(KeyValHash ctorArgs) { @@ -56,16 +56,16 @@ public class GfuiWin extends GfuiElemBase { win.OpenedCmd_set(GfoInvkAbleCmd.new_(this, Evt_Opened)); GfoEvMgr_.Sub(this, GfuiElemKeys.IptRcvd_evt, keyCmdMgr, GfuiWinKeyCmdMgr.CheckForHotKey_cmd); IptBnd_.cmd_(IptCfg_.Null, this, StopAppByAltF4_evt, IptKey_.Alt.Add(IptKey_.F4)); - IptBnd_.cmd_to_(IptCfg_.Null, this, GfoConsoleWin._, GfoConsoleWin.Invk_Show, IptKey_.Ctrl.Add(IptKey_.Alt).Add(IptKey_.E)); + IptBnd_.cmd_to_(IptCfg_.Null, this, GfoConsoleWin.Instance, GfoConsoleWin.Invk_Show, IptKey_.Ctrl.Add(IptKey_.Alt).Add(IptKey_.E)); IptBnd_.cmd_(IptCfg_.Null, this, Invk_ShowFocusOwner, IptKey_.add_(IptKey_.Ctrl, IptKey_.Alt, IptKey_.F12)); - loadList.Add(keyCmdMgr); loadList.Add(GfuiTipTextMgr._); + loadList.Add(keyCmdMgr); loadList.Add(GfuiTipTextMgr.Instance); focusMgr = GfuiWinFocusMgr.new_(this); } @Override public GxwElem UnderElem_make(KeyValHash ctorArgs) { String type = (String)ctorArgs.FetchValOr(GfuiWin_.InitKey_winType, GfuiWin_.InitKey_winType_app); - if (String_.Eq(type, GfuiWin_.InitKey_winType_tool)) return GxwElemFactory_._.win_tool_(ctorArgs); - else if (String_.Eq(type, GfuiWin_.InitKey_winType_toaster)) return GxwElemFactory_._.win_toaster_(ctorArgs); - else return GxwElemFactory_._.win_app_(); + if (String_.Eq(type, GfuiWin_.InitKey_winType_tool)) return GxwElemFactory_.Instance.win_tool_(ctorArgs); + else if (String_.Eq(type, GfuiWin_.InitKey_winType_toaster)) return GxwElemFactory_.Instance.win_toaster_(ctorArgs); + else return GxwElemFactory_.Instance.win_app_(); } @Override public void Opened_cbk() { if (!smallOpenSize.Eq(SizeAdp_.Null)) super.Size_(smallOpenSize); // NOTE: call before opened = true, else Layout will happen again @@ -107,8 +107,8 @@ public class GfuiWin extends GfuiElemBase { else if (ctx.Match(k, Invk_Show)) Show(); else if (ctx.Match(k, Evt_Opened)) Opened_cbk(); else if (ctx.Match(k, StopAppByAltF4_evt)) StopAppByAltF4(IptEventData.ctx_(ctx, m)); - else if (ctx.Match(k, Invk_ShowFocusOwner)) GfuiEnv_.ShowMsg(GfuiFocusMgr._.FocusedElem().Key_of_GfuiElem()); - else if (ctx.Match(k, GfuiStatusBoxBnd.Invk_ShowTime)) {UsrDlg_._.Note(UsrMsg.new_(DateAdp_.Now().toString())); return this;} + else if (ctx.Match(k, Invk_ShowFocusOwner)) GfuiEnv_.ShowMsg(GfuiFocusMgr.Instance.FocusedElem().Key_of_GfuiElem()); + else if (ctx.Match(k, GfuiStatusBoxBnd.Invk_ShowTime)) {UsrDlg_.Instance.Note(UsrMsg.new_(DateAdp_.Now().toString())); return this;} else if (ctx.MatchIn(k, Invk_Close, GfuiQuitMode.Destroy_cmd)) Close(); else if (ctx.MatchIn(k, Invk_Hide, GfuiQuitMode.Suspend_cmd)) Hide(); else { diff --git a/150_gfui/src_400_win/gplx/gfui/GfuiWin_toaster.java b/150_gfui/src_400_win/gplx/gfui/GfuiWin_toaster.java index ac2a114dd..51e8b6c9b 100644 --- a/150_gfui/src_400_win/gplx/gfui/GfuiWin_toaster.java +++ b/150_gfui/src_400_win/gplx/gfui/GfuiWin_toaster.java @@ -60,9 +60,9 @@ public class GfuiWin_toaster extends GfuiWin { public void ShowPopup(GfuiWin own this.Pos_(screenX_max / 2 - this.Width()/2, PopupAnchorTop); //screenRect.Bottom - 1 // gplx.gfui.npis.FormNpi.BringToFrontDoNotFocus(gplx.gfui.npis.ControlNpi.Hwnd(this.UnderElem())); if (!this.Visible()) { -// GfuiElem last = GfuiFocusMgr._.FocusedElem(); +// GfuiElem last = GfuiFocusMgr.Instance.FocusedElem(); this.Visible_on_(); -// GfuiFocusMgr._.FocusedElem_set(last); +// GfuiFocusMgr.Instance.FocusedElem_set(last); } timer.Interval_(growingTimerInterval); popupState = PopupState.Growing; @@ -83,8 +83,8 @@ public class GfuiWin_toaster extends GfuiWin { public void ShowPopup(GfuiWin own timer.Enabled_on(); } // public override boolean FocusGotCbk() { -// GfuiElem last = GfuiFocusMgr._.FocusedElemPrev(); -// GfuiFocusMgr._.FocusedElem_set(last); +// GfuiElem last = GfuiFocusMgr.Instance.FocusedElemPrev(); +// GfuiFocusMgr.Instance.FocusedElem_set(last); // last.Focus(); // return false; // } @@ -124,7 +124,7 @@ public class GfuiWin_toaster extends GfuiWin { public void ShowPopup(GfuiWin own this.Pos_(this.X(), PopupAnchorTop); //this.Top - increment this.Size_(SizeAdp_.new_(this.Width(), this.Height() + increment)); } - @Override public GxwElem UnderElem_make(KeyValHash ctorArgs) {return GxwElemFactory_._.win_toaster_(ctorArgs);} + @Override public GxwElem UnderElem_make(KeyValHash ctorArgs) {return GxwElemFactory_.Instance.win_toaster_(ctorArgs);} @Override public void ctor_GfuiBox_base(KeyValHash ctorArgs) { super.ctor_GfuiBox_base(ctorArgs); diff --git a/150_gfui/src_410_box_core/gplx/gfui/GfuiElemBase.java b/150_gfui/src_410_box_core/gplx/gfui/GfuiElemBase.java index 7ef473cf6..93099282f 100644 --- a/150_gfui/src_410_box_core/gplx/gfui/GfuiElemBase.java +++ b/150_gfui/src_410_box_core/gplx/gfui/GfuiElemBase.java @@ -160,7 +160,7 @@ public class GfuiElemBase implements GfuiElem { @gplx.Virtual public boolean DisposeCbk() {return true;} @gplx.Virtual public boolean VisibleChangedCbk() {return true;} @gplx.Virtual public boolean FocusGotCbk() { - GfuiFocusMgr._.FocusedElem_set(this); + GfuiFocusMgr.Instance.FocusedElem_set(this); return true; } @gplx.Virtual public boolean FocusLostCbk() {return true;} @@ -262,7 +262,7 @@ public class GfuiElemBase implements GfuiElem { public Gfui_kit Kit() {return kit;} private Gfui_kit kit = Gfui_kit_.Mem(); @gplx.Virtual public void ctor_GfuiBox_base(KeyValHash ctorArgs) { - this.kit = Swing_kit._; // NOTE: assume that callers want Swing; SWT / Mem should be calling ctor_kit_GfuiElemBase + this.kit = Swing_kit.Instance; // NOTE: assume that callers want Swing; SWT / Mem should be calling ctor_kit_GfuiElemBase underElem = UnderElem_make(ctorArgs); underElem.Host_set(this); underMgr = underElem.Core(); @@ -282,10 +282,10 @@ public class GfuiElemBase implements GfuiElem { this.Focus_able_(Bool_.cast(ctorArgs.FetchValOr(GfuiElem_.InitKey_focusAble, true))); // underMgr.Size_set(SizeAdp_.new_(20, 20)); // NOTE: CS inits to 20,20; JAVA inits to 0,0 } - @gplx.Virtual public GxwElem UnderElem_make(KeyValHash ctorArgs) {return GxwElemFactory_._.control_();} + @gplx.Virtual public GxwElem UnderElem_make(KeyValHash ctorArgs) {return GxwElemFactory_.Instance.control_();} public Object SubItms_getObj(String key) {return injected.Get_by(key);} public GfuiElemBase SubItms_add(String key, Object v) {injected.Add(key, v); return this;} - public Ordered_hash XtnAtrs() {return xtnAtrs;} Ordered_hash xtnAtrs = Ordered_hash_.new_(); + public Ordered_hash XtnAtrs() {return xtnAtrs;} Ordered_hash xtnAtrs = Ordered_hash_.New(); Hash_adp injected = Hash_adp_.new_(); GxwCore_base underMgr; @gplx.Internal protected static boolean SizeChanged_ignore = false; @@ -300,5 +300,5 @@ class GfuiFocusMgr implements GfoEvMgrOwner { this.focusedElem = focused; GfoEvMgr_.PubVal(this, FocusChanged_evt, focused); } - public static final GfuiFocusMgr _ = new GfuiFocusMgr(); GfuiFocusMgr() {} + public static final GfuiFocusMgr Instance = new GfuiFocusMgr(); GfuiFocusMgr() {} } diff --git a/150_gfui/src_410_box_core/gplx/gfui/GfuiElemList.java b/150_gfui/src_410_box_core/gplx/gfui/GfuiElemList.java index 05d5fbe6f..310e64ee6 100644 --- a/150_gfui/src_410_box_core/gplx/gfui/GfuiElemList.java +++ b/150_gfui/src_410_box_core/gplx/gfui/GfuiElemList.java @@ -44,7 +44,7 @@ public class GfuiElemList { owner.IptBnds().Cfgs_delAll(); box.Dispose(); } - GfuiElem owner; Ordered_hash hash = Ordered_hash_.new_(); + GfuiElem owner; Ordered_hash hash = Ordered_hash_.New(); public static GfuiElemList new_(GfuiElem owner) { GfuiElemList rv = new GfuiElemList(); rv.owner = owner; diff --git a/150_gfui/src_420_box_basic/gplx/gfui/GfuiBtn.java b/150_gfui/src_420_box_basic/gplx/gfui/GfuiBtn.java index 543a115a6..ec2e6386f 100644 --- a/150_gfui/src_420_box_basic/gplx/gfui/GfuiBtn.java +++ b/150_gfui/src_420_box_basic/gplx/gfui/GfuiBtn.java @@ -34,23 +34,23 @@ public class GfuiBtn extends GfuiElemBase { Object o = GfoInvkAble_.InvkCmd(UnderElem(), Invk_btn_img); return o == UnderElem() ? null : (ImageAdp)o; // NOTE: lgc guard } public GfuiBtn Btn_img_(ImageAdp v) {GfoInvkAble_.InvkCmd_val(UnderElem(), Invk_btn_img_, v); return this;} - @Override public GxwElem UnderElem_make(KeyValHash ctorArgs) {return GxwElemFactory_._.control_();} + @Override public GxwElem UnderElem_make(KeyValHash ctorArgs) {return GxwElemFactory_.Instance.control_();} @Override public void ctor_GfuiBox_base(KeyValHash ctorArgs) { focusBorder = GfuiBorderMgr.new_().All_(PenAdp_.new_(ColorAdp_.Gray, 1)); super.ctor_GfuiBox_base(ctorArgs); this.TextMgr().AlignH_(GfuiAlign_.Mid); this.Border().All_(PenAdp_.black_()); this.Border().Bounds_sync(RectAdp_.size_(this.Size().Op_subtract(1))); GfuiBtn_.FocusBorderRect_set(focusBorder, this); - Inject_(GfuiBtnClickBnd._); - Inject_(GfuiFocusXferBnd._); + Inject_(GfuiBtnClickBnd.Instance); + Inject_(GfuiFocusXferBnd.Instance); this.CustomDraw_set(true); } @Override public void ctor_kit_GfuiElemBase(Gfui_kit kit, String key, GxwElem underElem, KeyValHash ctorArgs) { this.kit = kit; super.ctor_kit_GfuiElemBase(kit, key, underElem, ctorArgs); focusBorder = GfuiBorderMgr.new_().All_(PenAdp_.new_(ColorAdp_.Gray, 1)); - Inject_(GfuiBtnClickBnd._); - Inject_(GfuiFocusXferBnd._); + Inject_(GfuiBtnClickBnd.Instance); + Inject_(GfuiFocusXferBnd.Instance); } Gfui_kit kit; @gplx.Internal protected static void DoThis(GfuiElem click, GfoMsg clickMsg, GfoInvkAbleCmd clickInvkCmd) { try { @@ -61,9 +61,9 @@ public class GfuiBtn extends GfuiElemBase { else if (clickMsg != null && clickMsg != GfoMsg_.Null) { GfsCtx ctx = GfsCtx.new_().MsgSrc_(click); if (String_.Eq(clickMsg.Key(), ".")) - GfsCore._.ExecOne_to(ctx, click, clickMsg.Subs_getAt(0)); + GfsCore.Instance.ExecOne_to(ctx, click, clickMsg.Subs_getAt(0)); else - GfsCore._.ExecOne(ctx, clickMsg); + GfsCore.Instance.ExecOne(ctx, clickMsg); } } catch (Exception e) {GfuiEnv_.ShowMsg(Err_.Message_gplx_full(e));} } diff --git a/150_gfui/src_420_box_basic/gplx/gfui/GfuiBtnClickBnd.java b/150_gfui/src_420_box_basic/gplx/gfui/GfuiBtnClickBnd.java index 145ed9470..ede5843f5 100644 --- a/150_gfui/src_420_box_basic/gplx/gfui/GfuiBtnClickBnd.java +++ b/150_gfui/src_420_box_basic/gplx/gfui/GfuiBtnClickBnd.java @@ -36,5 +36,5 @@ class GfuiBtnClickBnd implements InjectAble, GfoInvkAble { else return GfoInvkAble_.Rv_unhandled; return this; } static final String ExecMouseUp_cmd = "ExecMouseUp"; - public static final GfuiBtnClickBnd _ = new GfuiBtnClickBnd(); GfuiBtnClickBnd() {} + public static final GfuiBtnClickBnd Instance = new GfuiBtnClickBnd(); GfuiBtnClickBnd() {} } diff --git a/150_gfui/src_420_box_basic/gplx/gfui/GfuiChkBox.java b/150_gfui/src_420_box_basic/gplx/gfui/GfuiChkBox.java index 0780454bb..36996daba 100644 --- a/150_gfui/src_420_box_basic/gplx/gfui/GfuiChkBox.java +++ b/150_gfui/src_420_box_basic/gplx/gfui/GfuiChkBox.java @@ -51,11 +51,11 @@ public class GfuiChkBox extends GfuiElemBase { } @Override public boolean FocusGotCbk() {super.FocusGotCbk(); this.Redraw(); return true;} // Redraw for focusBorder @Override public boolean FocusLostCbk() {super.FocusLostCbk(); this.Redraw(); return true;} // Redraw for focusBorder - @Override public GxwElem UnderElem_make(KeyValHash ctorArgs) {return GxwElemFactory_._.lbl_();} + @Override public GxwElem UnderElem_make(KeyValHash ctorArgs) {return GxwElemFactory_.Instance.lbl_();} @Override public void ctor_GfuiBox_base(KeyValHash ctorArgs) { super.ctor_GfuiBox_base(ctorArgs); focusBorder.All_(PenAdp_.new_(ColorAdp_.Gray, 1)); - Inject_(GfuiFocusXferBnd._).Inject_(GfuiBtnClickBnd._); + Inject_(GfuiFocusXferBnd.Instance).Inject_(GfuiBtnClickBnd.Instance); this.CustomDraw_set(true); } } diff --git a/150_gfui/src_420_box_basic/gplx/gfui/GfuiComboBox.java b/150_gfui/src_420_box_basic/gplx/gfui/GfuiComboBox.java index 4e336f477..74c086759 100644 --- a/150_gfui/src_420_box_basic/gplx/gfui/GfuiComboBox.java +++ b/150_gfui/src_420_box_basic/gplx/gfui/GfuiComboBox.java @@ -17,7 +17,7 @@ along with this program. If not, see . */ package gplx.gfui; import gplx.*; public class GfuiComboBox extends GfuiElemBase { - @Override public GxwElem UnderElem_make(KeyValHash ctorArgs) {return GxwElemFactory_._.comboBox_();} GxwComboBox comboBox; + @Override public GxwElem UnderElem_make(KeyValHash ctorArgs) {return GxwElemFactory_.Instance.comboBox_();} GxwComboBox comboBox; public Object SelectedItm() {return comboBox.SelectedItm();} public void SelectedItm_set(Object v) {comboBox.SelectedItm_set(v);} @Override public void ctor_GfuiBox_base(KeyValHash ctorArgs) { super.ctor_GfuiBox_base(ctorArgs); diff --git a/150_gfui/src_420_box_basic/gplx/gfui/GfuiLbl.java b/150_gfui/src_420_box_basic/gplx/gfui/GfuiLbl.java index f3c30b32d..44ac1fd07 100644 --- a/150_gfui/src_420_box_basic/gplx/gfui/GfuiLbl.java +++ b/150_gfui/src_420_box_basic/gplx/gfui/GfuiLbl.java @@ -35,5 +35,5 @@ public class GfuiLbl extends GfuiElemBase { // standard label does not support t super.ctor_kit_GfuiElemBase(kit, key, underElem, ctorArgs); this.CustomDraw_set(true); } - @Override public GxwElem UnderElem_make(KeyValHash ctorArgs) {return GxwElemFactory_._.lbl_();} + @Override public GxwElem UnderElem_make(KeyValHash ctorArgs) {return GxwElemFactory_.Instance.lbl_();} } diff --git a/150_gfui/src_420_box_basic/gplx/gfui/GfuiListBox.java b/150_gfui/src_420_box_basic/gplx/gfui/GfuiListBox.java index cd1641e35..a3346f77c 100644 --- a/150_gfui/src_420_box_basic/gplx/gfui/GfuiListBox.java +++ b/150_gfui/src_420_box_basic/gplx/gfui/GfuiListBox.java @@ -18,7 +18,7 @@ along with this program. If not, see . package gplx.gfui; import gplx.*; import gplx.lists.*; /*EnumerAble*/ public class GfuiListBox extends GfuiElemBase { - @Override public GxwElem UnderElem_make(KeyValHash ctorArgs) {return GxwElemFactory_._.listBox_();} + @Override public GxwElem UnderElem_make(KeyValHash ctorArgs) {return GxwElemFactory_.Instance.listBox_();} @Override public void ctor_GfuiBox_base(KeyValHash ctorArgs) { super.ctor_GfuiBox_base(ctorArgs); this.listBox = (GxwListBox)UnderElem(); diff --git a/150_gfui/src_420_box_basic/gplx/gfui/GfuiTextBox.java b/150_gfui/src_420_box_basic/gplx/gfui/GfuiTextBox.java index 14a84da86..0aa85c53f 100644 --- a/150_gfui/src_420_box_basic/gplx/gfui/GfuiTextBox.java +++ b/150_gfui/src_420_box_basic/gplx/gfui/GfuiTextBox.java @@ -54,7 +54,7 @@ public class GfuiTextBox extends GfuiElemBase { @gplx.Internal protected void SetTextBox(GxwTextFld textBox) {this.textBox = textBox;} @gplx.Internal protected void CreateControlIfNeeded() {textBox.CreateControlIfNeeded();} - @Override public GxwElem UnderElem_make(KeyValHash ctorArgs) {return GxwElemFactory_._.text_fld_();} + @Override public GxwElem UnderElem_make(KeyValHash ctorArgs) {return GxwElemFactory_.Instance.text_fld_();} @Override public void ctor_GfuiBox_base(KeyValHash ctorArgs) { super.ctor_GfuiBox_base(ctorArgs); textBox = (GxwTextFld)this.UnderElem(); diff --git a/150_gfui/src_420_box_basic/gplx/gfui/GfuiTextMemo.java b/150_gfui/src_420_box_basic/gplx/gfui/GfuiTextMemo.java index 944c96c61..40a6948bb 100644 --- a/150_gfui/src_420_box_basic/gplx/gfui/GfuiTextMemo.java +++ b/150_gfui/src_420_box_basic/gplx/gfui/GfuiTextMemo.java @@ -32,7 +32,7 @@ public class GfuiTextMemo extends GfuiTextBox { public int LinesPerScreen() {re public void SelectionStart_toFirstChar() {textBox.SelectionStart_toFirstChar(); GfoEvMgr_.Pub(this, SelectionStartChanged_evt);} public void ScrollTillSelectionStartIsFirstLine() {textBox.ScrollTillSelectionStartIsFirstLine();} - @Override public GxwElem UnderElem_make(KeyValHash ctorArgs) {return GxwElemFactory_._.text_memo_();} + @Override public GxwElem UnderElem_make(KeyValHash ctorArgs) {return GxwElemFactory_.Instance.text_memo_();} @Override public void ctor_GfuiBox_base(KeyValHash ctorArgs) { super.ctor_GfuiBox_base(ctorArgs); textBox = (GxwTextMemo)UnderElem(); diff --git a/150_gfui/src_420_box_basic/gplx/gfui/Gfui_html.java b/150_gfui/src_420_box_basic/gplx/gfui/Gfui_html.java index 13b732bfc..c552b87ff 100644 --- a/150_gfui/src_420_box_basic/gplx/gfui/Gfui_html.java +++ b/150_gfui/src_420_box_basic/gplx/gfui/Gfui_html.java @@ -53,7 +53,7 @@ public class Gfui_html extends GfuiElemBase { String proc = (String)args[0]; GfoMsg rv = GfoMsg_.new_parse_(proc); for (int i = 1; i < args.length; i++) - rv.Add(Int_.Xto_str(i), args[i]); // NOTE: args[i] can be either String or String[] + rv.Add(Int_.To_str(i), args[i]); // NOTE: args[i] can be either String or String[] return rv; } public static final String Atr_href = "href", Atr_title = "title", Atr_value = "value", Atr_innerHTML = "innerHTML", Atr_src = "src"; diff --git a/150_gfui/src_430_box_custom/gplx/gfui/DataBndr_whenEvt_execCmd.java b/150_gfui/src_430_box_custom/gplx/gfui/DataBndr_whenEvt_execCmd.java index ad7aa130e..de1b38215 100644 --- a/150_gfui/src_430_box_custom/gplx/gfui/DataBndr_whenEvt_execCmd.java +++ b/150_gfui/src_430_box_custom/gplx/gfui/DataBndr_whenEvt_execCmd.java @@ -35,9 +35,9 @@ public class DataBndr_whenEvt_execCmd implements InjectAble, GfoInvkAble, GfoEvO public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { if (ctx.Match(k, whenEvt)) { Object evtVal = m.CastObjOr(whenArg, ""); - Object getVal = getInvk.Invk(GfsCtx._, 0, getCmd, GfoMsg_.new_cast_(getCmd).Add("v", evtVal)); + Object getVal = getInvk.Invk(GfsCtx.Instance, 0, getCmd, GfoMsg_.new_cast_(getCmd).Add("v", evtVal)); GfoMsg setMsg = GfoMsg_.new_cast_(setCmd).Add("v", Object_.Xto_str_strict_or_empty(getVal)); - setInvk.Invk(GfsCtx._, 0, setCmd, setMsg); + setInvk.Invk(GfsCtx.Instance, 0, setCmd, setMsg); return GfoInvkAble_.Rv_handled; } else return GfoInvkAble_.Rv_unhandled; diff --git a/150_gfui/src_430_box_custom/gplx/gfui/GfuiBnd_box_status.java b/150_gfui/src_430_box_custom/gplx/gfui/GfuiBnd_box_status.java index e0ba77fb1..fedee6617 100644 --- a/150_gfui/src_430_box_custom/gplx/gfui/GfuiBnd_box_status.java +++ b/150_gfui/src_430_box_custom/gplx/gfui/GfuiBnd_box_status.java @@ -22,7 +22,7 @@ public class GfuiBnd_box_status implements GfoInvkAble, UsrMsgWkr { box.Invoke(GfoInvkAbleCmd.arg_(this, WriteText_cmd, umsg.To_str())); } public void WriteText(String text) { - GfuiElem lastFocus = GfuiFocusMgr._.FocusedElem(); // HACK:WINFORMS:.Visible=true will automatically transfer focus to textBox; force Focus back to original + GfuiElem lastFocus = GfuiFocusMgr.Instance.FocusedElem(); // HACK:WINFORMS:.Visible=true will automatically transfer focus to textBox; force Focus back to original box.Text_(text); GfuiWin ownerWin = box.OwnerWin(); if (ownerWin != null && !ownerWin.Visible()) { diff --git a/150_gfui/src_430_box_custom/gplx/gfui/GfuiMoveElemBtn.java b/150_gfui/src_430_box_custom/gplx/gfui/GfuiMoveElemBtn.java index f629501f9..99a813622 100644 --- a/150_gfui/src_430_box_custom/gplx/gfui/GfuiMoveElemBtn.java +++ b/150_gfui/src_430_box_custom/gplx/gfui/GfuiMoveElemBtn.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.gfui; import gplx.*; -public class GfuiMoveElemBtn extends GfuiBtn { @Override public GxwElem UnderElem_make(KeyValHash ctorArgs) {return GxwElemFactory_._.lbl_();} +public class GfuiMoveElemBtn extends GfuiBtn { @Override public GxwElem UnderElem_make(KeyValHash ctorArgs) {return GxwElemFactory_.Instance.lbl_();} @Override public void ctor_GfuiBox_base(KeyValHash ctorArgs) { super.ctor_GfuiBox_base(ctorArgs); this.Text_("*"); diff --git a/150_gfui/src_430_box_custom/gplx/gfui/GfuiStatusBox.java b/150_gfui/src_430_box_custom/gplx/gfui/GfuiStatusBox.java index 0fddf1fba..0cfe3e7c8 100644 --- a/150_gfui/src_430_box_custom/gplx/gfui/GfuiStatusBox.java +++ b/150_gfui/src_430_box_custom/gplx/gfui/GfuiStatusBox.java @@ -20,7 +20,7 @@ public class GfuiStatusBox extends GfuiTextBox implements UsrMsgWkr { public Gf public GfuiStatusBox VisibilityDuration_(int v) {timer.Interval_(v); visibilityDuration = v; return this;} int visibilityDuration; @Override public void Opened_cbk() { super.Opened_cbk(); - UsrDlg_._.Reg(UsrMsgWkr_.Type_Note, this); + UsrDlg_.Instance.Reg(UsrMsgWkr_.Type_Note, this); } public void ExecUsrMsg(int type, UsrMsg umsg) { if ( !active @@ -49,7 +49,7 @@ public class GfuiStatusBox extends GfuiTextBox implements UsrMsgWkr { public Gf @Override public boolean DisposeCbk() { super.DisposeCbk(); timer.Rls(); - UsrDlg_._.RegOff(UsrMsgWkr_.Type_Note, this); + UsrDlg_.Instance.RegOff(UsrMsgWkr_.Type_Note, this); if (timerCmd != null) timerCmd.Rls(); return true; } diff --git a/150_gfui/src_500_tab/gplx/gfui/TabBox.java b/150_gfui/src_500_tab/gplx/gfui/TabBox.java index 848b929e2..70be61c56 100644 --- a/150_gfui/src_500_tab/gplx/gfui/TabBox.java +++ b/150_gfui/src_500_tab/gplx/gfui/TabBox.java @@ -41,7 +41,7 @@ public class TabBox extends GfuiElemBase { if (ctx.Match(k, TabBoxEvt_tabSelectByBtn.Key)) TabBoxEvt_tabSelectByBtn.Rcvd(ctx.MsgSrc(), this); else if (ctx.Match(k, TabBoxEvt_tabSelect.Key)) TabBoxEvt_tabSelect.Select(this, ctx, m); else if (ctx.Match(k, TabBoxEvt_nameChange.Key)) TabBoxEvt_nameChange.Rcvd(this, ctx, m); - else return super.Invk(GfsCtx._, 0, k, m); + else return super.Invk(GfsCtx.Instance, 0, k, m); return this; } @Override public void ctor_GfuiBox_base(KeyValHash ctorArgs) { diff --git a/150_gfui/src_500_tab/gplx/gfui/TabBoxMgr.java b/150_gfui/src_500_tab/gplx/gfui/TabBoxMgr.java index 4a95d7fb4..e3eb6c931 100644 --- a/150_gfui/src_500_tab/gplx/gfui/TabBoxMgr.java +++ b/150_gfui/src_500_tab/gplx/gfui/TabBoxMgr.java @@ -52,6 +52,6 @@ public class TabBoxMgr implements GfoEvMgrOwner { curTab = newTab; TabBoxEvt_tabSelect.Send(this, oldTab, newTab); } - Ordered_hash itms = Ordered_hash_.new_(); + Ordered_hash itms = Ordered_hash_.New(); @gplx.Internal protected static TabBoxMgr new_() {return new TabBoxMgr();} TabBoxMgr() {} } diff --git a/150_gfui/src_600_adp/gplx/gfui/IconAdp.java b/150_gfui/src_600_adp/gplx/gfui/IconAdp.java index e96d16338..895cec318 100644 --- a/150_gfui/src_600_adp/gplx/gfui/IconAdp.java +++ b/150_gfui/src_600_adp/gplx/gfui/IconAdp.java @@ -34,11 +34,11 @@ public class IconAdp { rv.url = url; return rv; } - public static void regy_loadDir_(Io_url imgDir) {GfoRegy._.RegDir(imgDir, "*.png", true, "_", ".");} - public static void regy_loadDir_shallow(Io_url imgDir) {GfoRegy._.RegDir(imgDir, "*.png", false, "_", ".");} + public static void regy_loadDir_(Io_url imgDir) {GfoRegy.Instance.RegDir(imgDir, "*.png", true, "_", ".");} + public static void regy_loadDir_shallow(Io_url imgDir) {GfoRegy.Instance.RegDir(imgDir, "*.png", false, "_", ".");} public static IconAdp regy_(String key) { - GfoRegyItm itm = GfoRegy._.FetchOrNull(key); - if (itm == null) {UsrDlg_._.Warn("missing icon; key={0}", key); return null;} + GfoRegyItm itm = GfoRegy.Instance.FetchOrNull(key); + if (itm == null) {UsrDlg_.Instance.Warn("missing icon; key={0}", key); return null;} if (itm.ValType() != GfoRegyItm.ValType_Url) throw Err_.new_wo_type("regyItm should be of type url", "key", key); return IconAdp.file_(itm.Url()); } diff --git a/150_gfui/src_600_adp/gplx/gfui/ImageAdp.java b/150_gfui/src_600_adp/gplx/gfui/ImageAdp.java index c761e3860..2df152c70 100644 --- a/150_gfui/src_600_adp/gplx/gfui/ImageAdp.java +++ b/150_gfui/src_600_adp/gplx/gfui/ImageAdp.java @@ -32,7 +32,7 @@ public interface ImageAdp extends RlsAble { ImageAdp Extract_image(int src_x, int src_y, int src_w, int src_h, int trg_w, int trg_h); } class ImageAdp_txt implements ImageAdp { - public Gfui_kit Kit() {return Swing_kit._;} + public Gfui_kit Kit() {return Swing_kit.Instance;} public SizeAdp Size() {return size;} SizeAdp size; public int Width() {return size.Width();} public int Height() {return size.Height();} @@ -42,7 +42,7 @@ class ImageAdp_txt implements ImageAdp { public void Rls() {disposed = true;} public void SaveAsBmp(Io_url url) {SaveAs(url, ".bmp");} public void SaveAsPng(Io_url url) {SaveAs(url, ".png");} - void SaveAs(Io_url url, String ext) {Io_mgr.I.SaveFilStr(url.GenNewExt(ext), size.To_str());} + void SaveAs(Io_url url, String ext) {Io_mgr.Instance.SaveFilStr(url.GenNewExt(ext), size.To_str());} public ImageAdp Extract_image(RectAdp src_rect, SizeAdp trg_size) {return Extract_image(src_rect.X(), src_rect.Y(), src_rect.Width(), src_rect.Height(), trg_size.Width(), trg_size.Height());} public ImageAdp Extract_image(int src_x, int src_y, int src_w, int src_h, int trg_w, int trg_h) {return ImageAdp_.txt_mem_(Io_url_.Empty, SizeAdp_.new_(trg_w, trg_h));} public ImageAdp Resize(int width, int height) {return ImageAdp_.txt_mem_(Io_url_.Empty, SizeAdp_.new_(width, height));} diff --git a/150_gfui/src_600_adp/gplx/gfui/ImageAdp_.java b/150_gfui/src_600_adp/gplx/gfui/ImageAdp_.java index ffc9e2840..ee2243bad 100644 --- a/150_gfui/src_600_adp/gplx/gfui/ImageAdp_.java +++ b/150_gfui/src_600_adp/gplx/gfui/ImageAdp_.java @@ -40,7 +40,7 @@ public class ImageAdp_ { } public static ImageAdp txt_mem_(Io_url url, SizeAdp size) {return new ImageAdp_txt(url, size);} public static ImageAdp txt_fil_(Io_url url) { - String raw = Io_mgr.I.LoadFilStr(url); + String raw = Io_mgr.Instance.LoadFilStr(url); SizeAdp size = null; if (String_.Eq(raw, "")) size = SizeAdp_.Zero; else if (String_.Eq(url.Ext(), ".svg")) size = SizeOf_svg(url); @@ -51,7 +51,7 @@ public class ImageAdp_ { public static ImageAdp file_(Io_url url) { if (url.EqNull()) throw Err_.new_wo_type("cannot load image from null url"); if (String_.Eq(url.Info().Key(), IoUrlInfo_.Mem.Key())) return txt_fil_(url); - if (!Io_mgr.I.ExistsFil(url)) return Null; + if (!Io_mgr.Instance.ExistsFil(url)) return Null; BufferedImage img = null; try { @@ -97,14 +97,14 @@ public class ImageAdp_ { else if (imageType == BufferedImage.TYPE_USHORT_555_RGB) return 16; //? else if (imageType == BufferedImage.TYPE_USHORT_565_RGB) return 16; //? else if (imageType == BufferedImage.TYPE_USHORT_GRAY) return 16; //? - else {UsrDlg_._.Warn("unknown bits per pixel", "imageType", imageType, "url", url.Xto_api()); return 8;} + else {UsrDlg_.Instance.Warn("unknown bits per pixel", "imageType", imageType, "url", url.Xto_api()); return 8;} } } class Gfui_svg_util { public static SizeAdp QuerySize(Io_url url) { try { // NOTE: not using XmlDoc b/c invalid doctypes can cause xml to hang; . package gplx.gfui; import gplx.*; public class GfsLibIni_gfui implements GfsLibIni { public void Ini(GfsCore core) { - core.AddCmd(IptCfgRegy._, "IptBndMgr_"); + core.AddCmd(IptCfgRegy.Instance, "IptBndMgr_"); } - public static final GfsLibIni_gfui _ = new GfsLibIni_gfui(); GfsLibIni_gfui() {} + public static final GfsLibIni_gfui Instance = new GfsLibIni_gfui(); GfsLibIni_gfui() {} } diff --git a/150_gfui/src_700_env/gplx/gfui/GfuiEnv_.java b/150_gfui/src_700_env/gplx/gfui/GfuiEnv_.java index a14517586..f70acc4dc 100644 --- a/150_gfui/src_700_env/gplx/gfui/GfuiEnv_.java +++ b/150_gfui/src_700_env/gplx/gfui/GfuiEnv_.java @@ -55,27 +55,27 @@ public class GfuiEnv_ { // reg interruptLnr if (swingHack) { // TODO: move to kit dependent functionality; WHEN: swing kit - UsrDlg_._.Reg(UsrMsgWkr_.Type_Warn, GfoConsoleWin._); - UsrDlg_._.Reg(UsrMsgWkr_.Type_Stop, GfuiInterruptLnr.new_()); + UsrDlg_.Instance.Reg(UsrMsgWkr_.Type_Warn, GfoConsoleWin.Instance); + UsrDlg_.Instance.Reg(UsrMsgWkr_.Type_Stop, GfuiInterruptLnr.new_()); } IptBndMgr_win = IptCfg_.new_("gplx.gfui.GfuiWin"); // alias default dirs - Io_mgr.I.AliasDir_sysEngine("app:\\", Env_.AppUrl().OwnerDir().Raw()); + Io_mgr.Instance.AliasDir_sysEngine("app:\\", Env_.AppUrl().OwnerDir().Raw()); - GfsCore._.MsgParser_(GfoMsgParser_gfml._); - GfsCore._.AddLib(GfsLibIni_core._); - GfsCore._.AddLib(GfsLibIni_gfui._); + GfsCore.Instance.MsgParser_(GfoMsgParser_gfml.Instance); + GfsCore.Instance.AddLib(GfsLibIni_core.Instance); + GfsCore.Instance.AddLib(GfsLibIni_gfui.Instance); Io_url iniFile = Env_.AppUrl().GenSubFil(".gfs"); - if (Io_mgr.I.ExistsFil(iniFile)) - GfsCore._.ExecFile(iniFile); + if (Io_mgr.Instance.ExistsFil(iniFile)) + GfsCore.Instance.ExecFile(iniFile); } public static void Init_swt(String[] args, Class type) { Env_.Init_swt(args, type); if (!Op_sys.Cur().Tid_is_drd()) GxwElemFactory_.winForms_(); - GfsCore._.MsgParser_(GfoMsgParser_gfml._); + GfsCore.Instance.MsgParser_(GfoMsgParser_gfml.Instance); } - public static void Gfs_init() {GfsCore._.MsgParser_(GfoMsgParser_gfml._);} + public static void Gfs_init() {GfsCore.Instance.MsgParser_(GfoMsgParser_gfml.Instance);} public static IptCfg IptBndMgr_win; public static void DoEvents() {;} public static void ShowMsg(String message) {javax.swing.JOptionPane.showMessageDialog(null, message, "", javax.swing.JOptionPane.INFORMATION_MESSAGE, null);} diff --git a/150_gfui/src_700_env/gplx/gfui/Gfui_clipboard.java b/150_gfui/src_700_env/gplx/gfui/Gfui_clipboard.java index 2362b71bd..d3582d2e9 100644 --- a/150_gfui/src_700_env/gplx/gfui/Gfui_clipboard.java +++ b/150_gfui/src_700_env/gplx/gfui/Gfui_clipboard.java @@ -23,5 +23,4 @@ class Gfui_clipboard_null implements Gfui_clipboard { public void Copy(String s) {} public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) {return this;} public void Rls() {} - public static final Gfui_clipboard_null Null = new Gfui_clipboard_null(); Gfui_clipboard_null() {} } diff --git a/150_gfui/src_700_env/gplx/gfui/Gfui_clipboard_.java b/150_gfui/src_700_env/gplx/gfui/Gfui_clipboard_.java index ccdd78340..154cb5cb6 100644 --- a/150_gfui/src_700_env/gplx/gfui/Gfui_clipboard_.java +++ b/150_gfui/src_700_env/gplx/gfui/Gfui_clipboard_.java @@ -17,5 +17,6 @@ along with this program. If not, see . */ package gplx.gfui; import gplx.*; public class Gfui_clipboard_ { + public static final Gfui_clipboard Null = new Gfui_clipboard_null(); public static final String Invk_copy = "copy", Invk_select_all = "select_all"; } diff --git a/150_gfui/src_700_env/gplx/gfui/Gfui_dlg_file.java b/150_gfui/src_700_env/gplx/gfui/Gfui_dlg_file.java index bdef62e86..5aec473b1 100644 --- a/150_gfui/src_700_env/gplx/gfui/Gfui_dlg_file.java +++ b/150_gfui/src_700_env/gplx/gfui/Gfui_dlg_file.java @@ -23,11 +23,3 @@ public interface Gfui_dlg_file { Gfui_dlg_file Init_exts_(String... v); String Ask(); } -class Gfui_dlg_file_null implements Gfui_dlg_file { - public Gfui_dlg_file Init_msg_(String v) {return this;} - public Gfui_dlg_file Init_file_(String v) {return this;} - public Gfui_dlg_file Init_dir_(Io_url v) {return this;} - public Gfui_dlg_file Init_exts_(String... v) {return this;} - public String Ask() {return "";} - public static final Gfui_dlg_file_null _ = new Gfui_dlg_file_null(); Gfui_dlg_file_null() {} -} diff --git a/150_gfui/src_700_env/gplx/gfui/Gfui_dlg_file_.java b/150_gfui/src_700_env/gplx/gfui/Gfui_dlg_file_.java new file mode 100644 index 000000000..b7105fd3c --- /dev/null +++ b/150_gfui/src_700_env/gplx/gfui/Gfui_dlg_file_.java @@ -0,0 +1,28 @@ +/* +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.gfui; import gplx.*; +public class Gfui_dlg_file_ { + public static final Gfui_dlg_file Noop = new Gfui_dlg_file_noop(); +} +class Gfui_dlg_file_noop implements Gfui_dlg_file { + public Gfui_dlg_file Init_msg_(String v) {return this;} + public Gfui_dlg_file Init_file_(String v) {return this;} + public Gfui_dlg_file Init_dir_(Io_url v) {return this;} + public Gfui_dlg_file Init_exts_(String... v) {return this;} + public String Ask() {return "";} +} diff --git a/150_gfui/src_700_env/gplx/gfui/Gfui_dlg_msg.java b/150_gfui/src_700_env/gplx/gfui/Gfui_dlg_msg.java index 3ea1ac91e..32bf56ede 100644 --- a/150_gfui/src_700_env/gplx/gfui/Gfui_dlg_msg.java +++ b/150_gfui/src_700_env/gplx/gfui/Gfui_dlg_msg.java @@ -23,11 +23,3 @@ public interface Gfui_dlg_msg { int Ask(); boolean Ask(int expd); } -class Gfui_dlg_msg_null implements Gfui_dlg_msg { - public Gfui_dlg_msg Init_msg_(String v) {return this;} - public Gfui_dlg_msg Init_ico_(int v) {return this;} - public Gfui_dlg_msg Init_btns_(int... ary) {return this;} - public boolean Ask(int expd) {return false;} - public int Ask() {return Int_.Min_value;} - public static final Gfui_dlg_msg_null _ = new Gfui_dlg_msg_null(); Gfui_dlg_msg_null() {} -} diff --git a/150_gfui/src_700_env/gplx/gfui/Gfui_dlg_msg_.java b/150_gfui/src_700_env/gplx/gfui/Gfui_dlg_msg_.java index ab112941e..268a796fe 100644 --- a/150_gfui/src_700_env/gplx/gfui/Gfui_dlg_msg_.java +++ b/150_gfui/src_700_env/gplx/gfui/Gfui_dlg_msg_.java @@ -17,6 +17,14 @@ along with this program. If not, see . */ package gplx.gfui; import gplx.*; public class Gfui_dlg_msg_ { + public static final Gfui_dlg_msg Noop = new Gfui_dlg_msg_noop(); public static final int Ico_error = 0, Ico_information = 1, Ico_question = 2, Ico_warning = 3, Ico_working = 4; public static final int Btn_ok = 0, Btn_cancel = 1, Btn_yes = 2, Btn_no = 3, Retry = 4, Btn_abort = 5, Btn_ignore = 6; } +class Gfui_dlg_msg_noop implements Gfui_dlg_msg { + public Gfui_dlg_msg Init_msg_(String v) {return this;} + public Gfui_dlg_msg Init_ico_(int v) {return this;} + public Gfui_dlg_msg Init_btns_(int... ary) {return this;} + public boolean Ask(int expd) {return false;} + public int Ask() {return Int_.Min_value;} +} diff --git a/150_gfui/src_700_env/gplx/gfui/Gfui_kit_.java b/150_gfui/src_700_env/gplx/gfui/Gfui_kit_.java index 150182280..6f982a1ff 100644 --- a/150_gfui/src_700_env/gplx/gfui/Gfui_kit_.java +++ b/150_gfui/src_700_env/gplx/gfui/Gfui_kit_.java @@ -18,9 +18,9 @@ along with this program. If not, see . package gplx.gfui; import gplx.*; public class Gfui_kit_ { public static final byte Mem_tid = 0, Swing_tid = 1, Swt_tid = 2, Android_tid = 3; - public static Gfui_kit Mem() {return mem_kit;} private static final Gfui_kit mem_kit = Mem_kit._; - public static Gfui_kit Swt() {if (swt_kit == null) swt_kit = Swt_kit._; return swt_kit;} private static Gfui_kit swt_kit; // NOTE: late-binding else swing apps will fail (since swt jar is not deployed) - public static Gfui_kit Swing() {if (swing_kit == null) swing_kit = Swing_kit._; return swing_kit;} private static Gfui_kit swing_kit; + public static Gfui_kit Mem() {return mem_kit;} private static final Gfui_kit mem_kit = Mem_kit.Instance; + public static Gfui_kit Swt() {if (swt_kit == null) swt_kit = Swt_kit.Instance; return swt_kit;} private static Gfui_kit swt_kit; // NOTE: late-binding else swing apps will fail (since swt jar is not deployed) + public static Gfui_kit Swing() {if (swing_kit == null) swing_kit = Swing_kit.Instance; return swing_kit;} private static Gfui_kit swing_kit; public static Gfui_kit Get_by_key(String key) { if (String_.Eq(key, Mem().Key())) return Mem(); else if (String_.Eq(key, Swt().Key())) return Swt(); diff --git a/150_gfui/src_700_env/gplx/gfui/Gfui_kit_base.java b/150_gfui/src_700_env/gplx/gfui/Gfui_kit_base.java index 1aedadd0c..2656525b8 100644 --- a/150_gfui/src_700_env/gplx/gfui/Gfui_kit_base.java +++ b/150_gfui/src_700_env/gplx/gfui/Gfui_kit_base.java @@ -22,7 +22,7 @@ public abstract class Gfui_kit_base implements Gfui_kit { public abstract String Key(); public abstract GxwElemFactory_base Factory(); public GfuiWin Main_win() {return main_win;} public Gfui_kit Main_win_(GfuiWin v) {main_win = v; return this;} private GfuiWin main_win; - public Gfui_clipboard Clipboard() {return Gfui_clipboard_null.Null;} + public Gfui_clipboard Clipboard() {return Gfui_clipboard_.Null;} public GfoInvkAbleCmd Kit_term_cbk() {return kit_term_cbk;} public void Kit_term_cbk_(GfoInvkAbleCmd v) {kit_term_cbk = v;} private GfoInvkAbleCmd kit_term_cbk; public void Cfg_set(String type, String key, Object val) {} public boolean Kit_mode__ready() {return true;} @@ -82,10 +82,10 @@ public abstract class Gfui_kit_base implements Gfui_kit { protected abstract Gxw_tab_mgr New_tab_mgr_impl(); protected abstract Gxw_tab_itm New_tab_itm_impl(); protected abstract GxwElem New_btn_impl(); - @gplx.Virtual public Gfui_dlg_file New_dlg_file(byte type, String msg) {return Gfui_dlg_file_null._;} - @gplx.Virtual public Gfui_dlg_msg New_dlg_msg(String msg) {return Gfui_dlg_msg_null._;} - @gplx.Virtual public Gfui_mnu_grp New_mnu_popup(String key, GfuiElem owner) {return Gfui_mnu_grp_null.Null;} - @gplx.Virtual public Gfui_mnu_grp New_mnu_bar(String key, GfuiWin owner) {return Gfui_mnu_grp_null.Null;} + @gplx.Virtual public Gfui_dlg_file New_dlg_file(byte type, String msg) {return Gfui_dlg_file_.Noop;} + @gplx.Virtual public Gfui_dlg_msg New_dlg_msg(String msg) {return Gfui_dlg_msg_.Noop;} + @gplx.Virtual public Gfui_mnu_grp New_mnu_popup(String key, GfuiElem owner) {return Gfui_mnu_grp_.Noop;} + @gplx.Virtual public Gfui_mnu_grp New_mnu_bar(String key, GfuiWin owner) {return Gfui_mnu_grp_.Noop;} public abstract ImageAdp New_img_load(Io_url url); public Object New_color(int a, int r, int g, int b) {return null;} public float Calc_font_height(GfuiElem elem, String s) {return 13;} diff --git a/150_gfui/src_700_env/gplx/gfui/Gfui_mnu_grp.java b/150_gfui/src_700_env/gplx/gfui/Gfui_mnu_grp.java index 9d0cdc806..010826e60 100644 --- a/150_gfui/src_700_env/gplx/gfui/Gfui_mnu_grp.java +++ b/150_gfui/src_700_env/gplx/gfui/Gfui_mnu_grp.java @@ -27,22 +27,3 @@ public interface Gfui_mnu_grp extends Gfui_mnu_itm { Gfui_mnu_grp Itms_add_grp (String txt, ImageAdp img); Gfui_mnu_itm Itms_add_separator(); } -class Gfui_mnu_grp_null implements Gfui_mnu_grp { - public String Uid() {return "";} - public int Tid() {return Gfui_mnu_itm_.Tid_grp;} - public boolean Enabled() {return true;} public void Enabled_(boolean v) {} - public boolean Disposed() {return false;} - public String Text() {return null;} public void Text_(String v) {} - public ImageAdp Img() {return null;} public void Img_(ImageAdp v) {} - public boolean Selected() {return true;} public void Selected_(boolean v) {} - public String Root_key() {return "null";} - public Object Under() {return null;} - public void Itms_clear() {} - public Gfui_mnu_itm Itms_add_btn_cmd (String txt, ImageAdp img, GfoInvkAble invk, String invk_cmd) {return Gfui_mnu_itm_null.Null;} - public Gfui_mnu_itm Itms_add_btn_msg (String txt, ImageAdp img, GfoInvkAble invk, GfoInvkRootWkr root_wkr, GfoMsg invk_msg) {return Gfui_mnu_itm_null.Null;} - public Gfui_mnu_itm Itms_add_chk_msg (String txt, ImageAdp img, GfoInvkAble invk, GfoInvkRootWkr root_wkr, GfoMsg msg_n, GfoMsg msg_y) {return Gfui_mnu_itm_null.Null;} - public Gfui_mnu_itm Itms_add_rdo_msg (String txt, ImageAdp img, GfoInvkAble invk, GfoInvkRootWkr root_wkr, GfoMsg msg) {return Gfui_mnu_itm_null.Null;} - public Gfui_mnu_grp Itms_add_grp(String txt, ImageAdp img) {return Gfui_mnu_grp_null.Null;} - public Gfui_mnu_itm Itms_add_separator() {return Gfui_mnu_itm_null.Null;} - public static final Gfui_mnu_grp_null Null = new Gfui_mnu_grp_null(); Gfui_mnu_grp_null() {} -} diff --git a/150_gfui/src_700_env/gplx/gfui/Gfui_mnu_grp_.java b/150_gfui/src_700_env/gplx/gfui/Gfui_mnu_grp_.java new file mode 100644 index 000000000..b5be95f66 --- /dev/null +++ b/150_gfui/src_700_env/gplx/gfui/Gfui_mnu_grp_.java @@ -0,0 +1,39 @@ +/* +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.gfui; import gplx.*; +public class Gfui_mnu_grp_ { + public static final Gfui_mnu_grp Noop = new Gfui_mnu_grp_noop(); +} +class Gfui_mnu_grp_noop implements Gfui_mnu_grp { + public String Uid() {return "";} + public int Tid() {return Gfui_mnu_itm_.Tid_grp;} + public boolean Enabled() {return true;} public void Enabled_(boolean v) {} + public boolean Disposed() {return false;} + public String Text() {return null;} public void Text_(String v) {} + public ImageAdp Img() {return null;} public void Img_(ImageAdp v) {} + public boolean Selected() {return true;} public void Selected_(boolean v) {} + public String Root_key() {return "null";} + public Object Under() {return null;} + public void Itms_clear() {} + public Gfui_mnu_itm Itms_add_btn_cmd (String txt, ImageAdp img, GfoInvkAble invk, String invk_cmd) {return Gfui_mnu_itm_null.Null;} + public Gfui_mnu_itm Itms_add_btn_msg (String txt, ImageAdp img, GfoInvkAble invk, GfoInvkRootWkr root_wkr, GfoMsg invk_msg) {return Gfui_mnu_itm_null.Null;} + public Gfui_mnu_itm Itms_add_chk_msg (String txt, ImageAdp img, GfoInvkAble invk, GfoInvkRootWkr root_wkr, GfoMsg msg_n, GfoMsg msg_y) {return Gfui_mnu_itm_null.Null;} + public Gfui_mnu_itm Itms_add_rdo_msg (String txt, ImageAdp img, GfoInvkAble invk, GfoInvkRootWkr root_wkr, GfoMsg msg) {return Gfui_mnu_itm_null.Null;} + public Gfui_mnu_grp Itms_add_grp(String txt, ImageAdp img) {return Gfui_mnu_grp_.Noop;} + public Gfui_mnu_itm Itms_add_separator() {return Gfui_mnu_itm_null.Null;} +} diff --git a/150_gfui/src_700_env/gplx/gfui/Gfui_mnu_itm_.java b/150_gfui/src_700_env/gplx/gfui/Gfui_mnu_itm_.java index 7478255fc..61edf86b0 100644 --- a/150_gfui/src_700_env/gplx/gfui/Gfui_mnu_itm_.java +++ b/150_gfui/src_700_env/gplx/gfui/Gfui_mnu_itm_.java @@ -17,6 +17,6 @@ along with this program. If not, see . */ package gplx.gfui; import gplx.*; public class Gfui_mnu_itm_ { - public static String Gen_uid() {return "mnu_" + Int_.Xto_str(++uid_next);} private static int uid_next = 0; + public static String Gen_uid() {return "mnu_" + Int_.To_str(++uid_next);} private static int uid_next = 0; public static final int Tid_nil = 0, Tid_grp = 1, Tid_spr = 2, Tid_btn = 3, Tid_chk = 4, Tid_rdo = 5; } diff --git a/150_gfui/src_700_env/gplx/gfui/Mem_kit.java b/150_gfui/src_700_env/gplx/gfui/Mem_kit.java index 9431a54bd..216bbaea5 100644 --- a/150_gfui/src_700_env/gplx/gfui/Mem_kit.java +++ b/150_gfui/src_700_env/gplx/gfui/Mem_kit.java @@ -33,6 +33,6 @@ public class Mem_kit extends Gfui_kit_base { @Override protected Gxw_tab_mgr New_tab_mgr_impl() {return new Mem_tab_mgr();} @Override protected Gxw_tab_itm New_tab_itm_impl() {return new Mem_tab_itm();} @Override protected GxwElem New_btn_impl() {return factory.control_();} - @Override public ImageAdp New_img_load(Io_url url) {return ImageAdp_null._;} - public static final Mem_kit _ = new Mem_kit(); Mem_kit() {} + @Override public ImageAdp New_img_load(Io_url url) {return ImageAdp_null.Instance;} + public static final Mem_kit Instance = new Mem_kit(); Mem_kit() {} } diff --git a/150_gfui/src_700_env/gplx/gfui/Swing_kit.java b/150_gfui/src_700_env/gplx/gfui/Swing_kit.java index a671c8932..e2799934c 100644 --- a/150_gfui/src_700_env/gplx/gfui/Swing_kit.java +++ b/150_gfui/src_700_env/gplx/gfui/Swing_kit.java @@ -29,5 +29,5 @@ public class Swing_kit extends Gfui_kit_base { @Override protected Gxw_tab_mgr New_tab_mgr_impl() {return new Mem_tab_mgr();} @Override protected Gxw_tab_itm New_tab_itm_impl() {return new Mem_tab_itm();} @Override protected GxwElem New_btn_impl() {return factory.control_();} - public static final Swing_kit _ = new Swing_kit(); Swing_kit() {} + public static final Swing_kit Instance = new Swing_kit(); Swing_kit() {} } diff --git a/150_gfui/src_700_env/gplx/gfui/Swt_kit.java b/150_gfui/src_700_env/gplx/gfui/Swt_kit.java index a11b826b9..212443f0f 100644 --- a/150_gfui/src_700_env/gplx/gfui/Swt_kit.java +++ b/150_gfui/src_700_env/gplx/gfui/Swt_kit.java @@ -68,8 +68,8 @@ public class Swt_kit implements Gfui_kit { this.msg_wkr_stop = new Swt_msg_wkr_stop(this, gui_wtr); this.display = new Display(); this.clipboard = new Swt_clipboard(display); - UsrDlg_._.Reg(UsrMsgWkr_.Type_Warn, GfoConsoleWin._); - UsrDlg_._.Reg(UsrMsgWkr_.Type_Stop, msg_wkr_stop); + UsrDlg_.Instance.Reg(UsrMsgWkr_.Type_Warn, GfoConsoleWin.Instance); + UsrDlg_.Instance.Reg(UsrMsgWkr_.Type_Stop, msg_wkr_stop); if (xul_runner_path != null) System.setProperty("org.eclipse.swt.browser.XULRunnerPath", xul_runner_path); this.Kit_mode_(Swt_kit_mode.Tid_ready); gui_wtr.Log_many("", "", "swt.kit.init.done"); @@ -207,7 +207,7 @@ public class Swt_kit implements Gfui_kit { return rv; } catch (Exception e) { - Gfo_usr_dlg_.I.Warn_many("", "", "error while calculating font height; err=~{0}", Err_.Message_gplx_full(e)); + Gfo_usr_dlg_.Instance.Warn_many("", "", "error while calculating font height; err=~{0}", Err_.Message_gplx_full(e)); return 8; } } @@ -235,7 +235,7 @@ public class Swt_kit implements Gfui_kit { } public static final String Invk_Cfg_add = "Cfg_add", Invk_ask_file = "ask_file"; // private or public? public static final String Invk_shell_close = "shell_close"; // public - public static final Swt_kit _ = new Swt_kit(); private Swt_kit() {} // singleton b/c of following line "In particular, some platforms which SWT supports will not allow more than one active display" (http://help.eclipse.org/indigo/topic/org.eclipse.platform.doc.isv/reference/api/org/eclipse/swt/widgets/Display.html) + public static final Swt_kit Instance = new Swt_kit(); private Swt_kit() {} // singleton b/c of following line "In particular, some platforms which SWT supports will not allow more than one active display" (http://help.eclipse.org/indigo/topic/org.eclipse.platform.doc.isv/reference/api/org/eclipse/swt/widgets/Display.html) public static final String Cfg_Html_BrowserType = "BrowserType"; public static int Cfg_Html_BrowserType_parse(String v) { if (String_.Eq(v, "mozilla")) return Swt_html.Browser_tid_mozilla; diff --git a/150_gfui/tst/gplx/gfui/GfuiFocusOrderer_tst.java b/150_gfui/tst/gplx/gfui/GfuiFocusOrderer_tst.java index d6c01e01f..81a40ac4b 100644 --- a/150_gfui/tst/gplx/gfui/GfuiFocusOrderer_tst.java +++ b/150_gfui/tst/gplx/gfui/GfuiFocusOrderer_tst.java @@ -69,7 +69,7 @@ public class GfuiFocusOrderer_tst { GfuiElem sub_(GfuiElem owner, int i) {return owner.SubElems().Get_at(i);} void ini_Subs(GfuiElem owner, List_adp list, PointAdp... points) { for (int i = 0; i < points.length; i++) { - GfuiElem sub = GfuiElem_.sub_(Int_.Xto_str(i), owner); + GfuiElem sub = GfuiElem_.sub_(Int_.To_str(i), owner); sub.Pos_(points[i]); sub.UnderElem().Core().Focus_index_set(i); list.Add(sub); diff --git a/150_gfui/tst/gplx/gfui/ImageAdp_tst.java b/150_gfui/tst/gplx/gfui/ImageAdp_tst.java index c08d8c4e2..c54851bd3 100644 --- a/150_gfui/tst/gplx/gfui/ImageAdp_tst.java +++ b/150_gfui/tst/gplx/gfui/ImageAdp_tst.java @@ -34,13 +34,13 @@ public class ImageAdp_tst { @Test public void SaveAsBmp() { img = ImageAdp_.file_(load); Io_url save = load.GenNewNameOnly("strawberry_temp"); - DateAdp beforeModifiedTime = Io_mgr.I.QueryFil(save).ModifiedTime(); + DateAdp beforeModifiedTime = Io_mgr.Instance.QueryFil(save).ModifiedTime(); img.SaveAsBmp(save); - DateAdp afterModifiedTime = Io_mgr.I.QueryFil(save).ModifiedTime(); + DateAdp afterModifiedTime = Io_mgr.Instance.QueryFil(save).ModifiedTime(); Tfds.Eq_true(CompareAble_.Is_more(afterModifiedTime, beforeModifiedTime)); - String loadHash = HashAlgo_.Md5.CalcHash(Console_adp_.Noop, Io_mgr.I.OpenStreamRead(load)); - String saveHash = HashAlgo_.Md5.CalcHash(Console_adp_.Noop, Io_mgr.I.OpenStreamRead(save)); + String loadHash = HashAlgo_.Md5.CalcHash(Console_adp_.Noop, Io_mgr.Instance.OpenStreamRead(load)); + String saveHash = HashAlgo_.Md5.CalcHash(Console_adp_.Noop, Io_mgr.Instance.OpenStreamRead(save)); Tfds.Eq(loadHash, saveHash); } } diff --git a/150_gfui/tst/gplx/gfui/TabBox_tst.java b/150_gfui/tst/gplx/gfui/TabBox_tst.java index bd71db016..aec34782d 100644 --- a/150_gfui/tst/gplx/gfui/TabBox_tst.java +++ b/150_gfui/tst/gplx/gfui/TabBox_tst.java @@ -70,7 +70,7 @@ class TabBoxFxt implements GfoInvkAble { for (int i = 0; i < tabBox.Tabs_Count(); i++) tabBox.Tabs_DelAt(0); for (int i = 0; i < count; i++) - tabBox.Tabs_Add(Int_.Xto_str(i), Int_.Xto_str(i)); + tabBox.Tabs_Add(Int_.To_str(i), Int_.To_str(i)); return this; } @gplx.Internal protected TabBoxFxt Del_at(int index) {tabBox.Tabs_DelAt(index); return this;} @@ -102,7 +102,7 @@ class TabBoxFxt implements GfoInvkAble { // @gplx.Internal protected TabBoxFxt tst_Raised(boolean expd) {Tfds.Eq(expd, received != null); return this;} // @gplx.Internal protected TabBoxFxt Reorder(int i, int delta) { // tabBox.Width_(240); // needed for lytMgr -// TabBnd_reorderTab reorderBnd = TabBnd_reorderTab._; +// TabBnd_reorderTab reorderBnd = TabBnd_reorderTab.Instance; // received = null; // TabPnl pnl = tabBox.Tabs_FetchAt(i); // reorderBnd.MoveTab(pnl.SubTabBtn(), delta); diff --git a/150_gfui/xtn/gplx/gfui/Swt_html.java b/150_gfui/xtn/gplx/gfui/Swt_html.java index 8f6af04c0..7dc277294 100644 --- a/150_gfui/xtn/gplx/gfui/Swt_html.java +++ b/150_gfui/xtn/gplx/gfui/Swt_html.java @@ -67,7 +67,7 @@ class Swt_html implements Gxw_html, Swt_control, FocusListener { public void Html_doc_html_load_by_url(Io_url path, String html) { this.html_doc_html_load_tid = Gxw_html_load_tid_.Tid_url; this.load_by_url_path = path.To_http_file_str(); - Io_mgr.I.SaveFilStr(path, html); + Io_mgr.Instance.SaveFilStr(path, html); browser.setUrl(path.Xto_api()); } public byte Html_doc_html_load_tid() {return html_doc_html_load_tid;} private byte html_doc_html_load_tid; @@ -99,7 +99,7 @@ class Swt_html implements Gxw_html, Swt_control, FocusListener { if (quote_val) bfr.Add_byte(Byte_ascii.Apos); } bfr.Add_byte(Byte_ascii.Paren_end).Add_byte(Byte_ascii.Semic); - return Eval_script(bfr.Xto_str_and_clear()); + return Eval_script(bfr.To_str_and_clear()); } private static String Escape_quote(String v) { String rv = v; @@ -149,12 +149,6 @@ class Swt_core_cmds_html extends Swt_core_cmds { this.Focus(); } } -class Swt_html_eval_rslt { - public void Clear() {error = null; result = null;} - public boolean Result_pass() {return error == null;} - public Object Result() {return result;} public void Result_set(Object v) {result = v; error = null;} private Object result; - public String Error () {return error;} public void Error_set(String v) {error = v; result = null;} private String error; -} class Swt_html_lnr_traverse implements TraverseListener { public Swt_html_lnr_traverse(Swt_html html_box) {} @Override public void keyTraversed(TraverseEvent arg0) {} @@ -163,7 +157,7 @@ class Swt_html_lnr_title implements TitleListener { private Swt_html html_box; public Swt_html_lnr_title(Swt_html html_box) {this.html_box = html_box;} @Override public void changed(TitleEvent ev) { - try {UsrDlg_._.Note(ev.title);} + try {UsrDlg_.Instance.Note(ev.title);} catch (Exception e) {html_box.Kit().Ask_ok("xowa.swt.html_box", "title.fail", Err_.Message_gplx_full(e));} // NOTE: must catch error or will cause app to lock; currently called inside displaySync } } diff --git a/400_xowa/src/gplx/xowa/parsers/vnts/Xop_vnt_eqgt_tkn.java b/150_gfui/xtn/gplx/gfui/Swt_html_eval_rslt.java similarity index 63% rename from 400_xowa/src/gplx/xowa/parsers/vnts/Xop_vnt_eqgt_tkn.java rename to 150_gfui/xtn/gplx/gfui/Swt_html_eval_rslt.java index 8374a00ed..a2662d8de 100644 --- a/400_xowa/src/gplx/xowa/parsers/vnts/Xop_vnt_eqgt_tkn.java +++ b/150_gfui/xtn/gplx/gfui/Swt_html_eval_rslt.java @@ -15,8 +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.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;} +package gplx.gfui; + +public class Swt_html_eval_rslt { + public void Clear() {error = null; result = null;} + public boolean Result_pass() {return error == null;} + public Object Result() {return result;} public void Result_set(Object v) {result = v; error = null;} private Object result; + public String Error () {return error;} public void Error_set(String v) {error = v; result = null;} private String error; } diff --git a/150_gfui/xtn/gplx/gfui/Swt_popup_grp.java b/150_gfui/xtn/gplx/gfui/Swt_popup_grp.java index 30f66fcf4..f0051e3f8 100644 --- a/150_gfui/xtn/gplx/gfui/Swt_popup_grp.java +++ b/150_gfui/xtn/gplx/gfui/Swt_popup_grp.java @@ -192,7 +192,7 @@ class Swt_lnr__menu_btn_cmd implements Listener { public Swt_lnr__menu_btn_cmd(GfoInvkAble invk, String cmd) {this.invk = invk; this.cmd = cmd;} GfoInvkAble invk; String cmd; public void handleEvent(Event ev) { try {GfoInvkAble_.InvkCmd(invk, cmd);} - catch (Exception e) {Swt_kit._.Ask_ok("", "", "error while invoking command: cmd=~{0} err=~{1}", cmd, Err_.Message_gplx_full(e));} + catch (Exception e) {Swt_kit.Instance.Ask_ok("", "", "error while invoking command: cmd=~{0} err=~{1}", cmd, Err_.Message_gplx_full(e));} } } class Swt_lnr__menu_btn_msg implements Listener { @@ -203,7 +203,7 @@ class Swt_lnr__menu_btn_msg implements Listener { msg.Args_reset(); root_wkr.Run_str_for(invk, msg); } - catch (Exception e) {Swt_kit._.Ask_ok("", "", "error while invoking command: cmd=~{0} err=~{1}", msg.Key(), Err_.Message_gplx_full(e));} + catch (Exception e) {Swt_kit.Instance.Ask_ok("", "", "error while invoking command: cmd=~{0} err=~{1}", msg.Key(), Err_.Message_gplx_full(e));} } } class Swt_lnr__menu_chk_msg implements Listener { @@ -219,6 +219,6 @@ class Swt_lnr__menu_chk_msg implements Listener { msg.Args_reset(); root_wkr.Run_str_for(invk, msg); } - catch (Exception e) {Swt_kit._.Ask_ok("", "", "error while invoking command: cmd=~{0} err=~{1}", msg.Key(), Err_.Message_gplx_full(e));} + catch (Exception e) {Swt_kit.Instance.Ask_ok("", "", "error while invoking command: cmd=~{0} err=~{1}", msg.Key(), Err_.Message_gplx_full(e));} } } diff --git a/150_gfui/xtn/gplx/gfui/Swt_tab_mgr.java b/150_gfui/xtn/gplx/gfui/Swt_tab_mgr.java index 37c03ba53..d5e1c28b2 100644 --- a/150_gfui/xtn/gplx/gfui/Swt_tab_mgr.java +++ b/150_gfui/xtn/gplx/gfui/Swt_tab_mgr.java @@ -93,7 +93,7 @@ public class Swt_tab_mgr implements Gxw_tab_mgr, Swt_control, FocusListener, Gfo if (i == Gfui_tab_itm_data.Idx_null) return; // 0 tabs; return; msg_tabs_select_by_idx_swt.Clear(); msg_tabs_select_by_idx_swt.Add("v", i); - cmd_sync.Invk(GfsCtx._, 0, Invk_tabs_select_by_idx_swt, msg_tabs_select_by_idx_swt); + cmd_sync.Invk(GfsCtx.Instance, 0, Invk_tabs_select_by_idx_swt, msg_tabs_select_by_idx_swt); } private GfoMsg msg_tabs_select_by_idx_swt = GfoMsg_.new_cast_(Invk_tabs_select_by_idx_swt); @Override public void Tabs_switch(int src, int trg) {Tabs_switch(tab_folder.getItem(src), tab_folder.getItem(trg));} public boolean Tabs_switch(CTabItem src_tab_itm, CTabItem trg_tab_itm) { @@ -120,7 +120,7 @@ public class Swt_tab_mgr implements Gxw_tab_mgr, Swt_control, FocusListener, Gfo if (itm == null) return; // 0 tabs; return; msg_tabs_select_by_itm_swt.Clear(); msg_tabs_select_by_itm_swt.Add("v", itm); - cmd_sync.Invk(GfsCtx._, 0, Invk_tabs_select_by_itm_swt, msg_tabs_select_by_itm_swt); + cmd_sync.Invk(GfsCtx.Instance, 0, Invk_tabs_select_by_itm_swt, msg_tabs_select_by_itm_swt); } private GfoMsg msg_tabs_select_by_itm_swt = GfoMsg_.new_cast_(Invk_tabs_select_by_itm_swt); private void Tabs_select_by_idx_swt(int idx) { tab_folder.setSelection(idx); diff --git a/400_xowa/.classpath b/400_xowa/.classpath index 3af6986cc..b360580d7 100644 --- a/400_xowa/.classpath +++ b/400_xowa/.classpath @@ -6,7 +6,7 @@ - + diff --git a/400_xowa/src/gplx/core/brys/Bry_comparer.java b/400_xowa/src/gplx/core/brys/Bry_comparer.java index 83a9c574a..0c0411a7f 100644 --- a/400_xowa/src/gplx/core/brys/Bry_comparer.java +++ b/400_xowa/src/gplx/core/brys/Bry_comparer.java @@ -22,5 +22,5 @@ public class Bry_comparer implements ComparerAble { byte[] lhs = (byte[])lhsObj, rhs = (byte[])rhsObj; return Bry_.Compare(lhs, 0, lhs.length, rhs, 0, rhs.length); } - public static final Bry_comparer _ = new Bry_comparer(); Bry_comparer() {} + public static final Bry_comparer Instance = new Bry_comparer(); Bry_comparer() {} } diff --git a/400_xowa/src/gplx/core/caches/Gfo_cache_mgr.java b/400_xowa/src/gplx/core/caches/Gfo_cache_mgr.java index 5af60c121..e6d4c6dfa 100644 --- a/400_xowa/src/gplx/core/caches/Gfo_cache_mgr.java +++ b/400_xowa/src/gplx/core/caches/Gfo_cache_mgr.java @@ -18,8 +18,8 @@ along with this program. If not, see . package gplx.core.caches; import gplx.*; import gplx.core.*; import gplx.core.consoles.*; public class Gfo_cache_mgr { - private Ordered_hash hash = Ordered_hash_.new_bry_(); - private Ordered_hash recent = Ordered_hash_.new_bry_(); + private Ordered_hash hash = Ordered_hash_.New_bry(); + private Ordered_hash recent = Ordered_hash_.New_bry(); public int Max_size() {return max_size;} public Gfo_cache_mgr Max_size_(int v) {max_size = v; return this;} private int max_size; public int Reduce_by() {return reduce_by;} public Gfo_cache_mgr Reduce_by_(int v) {reduce_by = v; return this;} private int reduce_by; public int Cur_size() {return cur_size;} private int cur_size; @@ -65,7 +65,7 @@ public class Gfo_cache_mgr { hash.Add(key, itm); } public void Reduce_recent() { -// Console_adp__sys.I.WriteLine("reducing"); +// Console_adp__sys.Instance.WriteLine("reducing"); int len = recent.Count(); for (int i = 0; i < len; i++) { Gfo_cache_data itm = (Gfo_cache_data)recent.Get_at(i); @@ -74,7 +74,7 @@ public class Gfo_cache_mgr { recent.Clear(); } public void Reduce_cache() { - Console_adp__sys.I.Write_str_w_nl("compacting:"); + Console_adp__sys.Instance.Write_str_w_nl("compacting:"); // hash.Sort(); // int len = hash.Count(); // List_adp deleted = List_adp_.new_(); diff --git a/400_xowa/src/gplx/core/caches/Gfo_cache_mgr_base.java b/400_xowa/src/gplx/core/caches/Gfo_cache_mgr_base.java index 6db1954ac..1c3a5eac7 100644 --- a/400_xowa/src/gplx/core/caches/Gfo_cache_mgr_base.java +++ b/400_xowa/src/gplx/core/caches/Gfo_cache_mgr_base.java @@ -17,7 +17,7 @@ along with this program. If not, see . */ package gplx.core.caches; import gplx.*; import gplx.core.*; public class Gfo_cache_mgr_base { - private Ordered_hash hash = Ordered_hash_.new_bry_(); + private Ordered_hash hash = Ordered_hash_.New_bry(); public int Compress_max() {return compress_max;} public void Compress_max_(int v) {compress_max = v;} private int compress_max = 16; public int Compress_to() {return compress_to;} public void Compress_to_(int v) {compress_to = v;} private int compress_to = 8; protected Object Base_get_or_null(byte[] key) { diff --git a/400_xowa/src/gplx/core/caches/Gfo_cache_mgr_bry.java b/400_xowa/src/gplx/core/caches/Gfo_cache_mgr_bry.java index bf286642f..5456877d6 100644 --- a/400_xowa/src/gplx/core/caches/Gfo_cache_mgr_bry.java +++ b/400_xowa/src/gplx/core/caches/Gfo_cache_mgr_bry.java @@ -46,7 +46,7 @@ class Io_url_exists_mgr { byte[] url_key = url.RawBry(); Object rv_obj = cache_mgr.Get_or_null(url_key); if (rv_obj != null) return ((Bool_obj_ref)rv_obj).Val(); // cached val exists; use it - boolean exists = Io_mgr.I.ExistsFil(url); + boolean exists = Io_mgr.Instance.ExistsFil(url); cache_mgr.Add(url_key, Bool_obj_ref.new_(exists)); return exists; } diff --git a/400_xowa/src/gplx/core/consoles/App_cmd_arg.java b/400_xowa/src/gplx/core/consoles/App_cmd_arg.java deleted file mode 100644 index dd530b9d5..000000000 --- a/400_xowa/src/gplx/core/consoles/App_cmd_arg.java +++ /dev/null @@ -1,113 +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.core.consoles; import gplx.*; import gplx.core.*; -public class App_cmd_arg { - App_cmd_arg(byte tid, byte val_tid, String key, boolean reqd) {this.tid = tid; this.val_tid = val_tid; this.key = key; this.reqd = reqd;} - public byte Tid() {return tid;} private byte tid; - public byte Val_tid() {return val_tid;} public App_cmd_arg Val_tid_(byte v) {val_tid = v; return this;} private byte val_tid; - public String Val_tid_str() { - switch (val_tid) { - case Val_tid_string: return "string"; - case Val_tid_yn: return "yes_no"; - case Val_tid_url: return "path"; - default: return "unknown"; - } - } - public String Key() {return key;} private String key; - public boolean Reqd() {return reqd;} private boolean reqd; - public String Reqd_str() {return reqd ? "required" : "optional";} - public boolean Dirty() {return dirty;} public App_cmd_arg Dirty_(boolean v) {this.dirty = v; return this;} private boolean dirty; - public String Note() {return note;} public App_cmd_arg Note_(String v) {note = v; return this;} private String note; - public String Example() {return example;} - public App_cmd_arg Example_(String v) {example = v; return this;} private String example; - public App_cmd_arg Example_url_(String v) { - Example_(v); - val_tid = Val_tid_url; - return this; - } - public App_cmd_arg Example_list_str_(String v) { - example = String_.Concat_with_obj(" ", v); - val_tid = Val_tid_list_string; - return this; - } - public Object Val() {return val;} public App_cmd_arg Val_(Object v) {this.val = v; return this;} Object val; - public Object Dflt() {return dflt;} public App_cmd_arg Dflt_(Object v) {dflt = v; return this;} Object dflt; - public boolean Val_as_bool() {return Bool_.cast(val);} - public String Val_as_str_or(String or) {return val == null ? or : (String)val;} - public String Val_as_str() {return (String)val;} - public int Val_as_int_or(int or) {return val == null ? or : Int_.parse_or((String)val, or);} - public Io_url Val_as_url_rel_dir_or(Io_url owner_dir, Io_url or) {return Val_as_url_rel_url_or(owner_dir, or, true);} - public Io_url Val_as_url_rel_fil_or(Io_url owner_dir, Io_url or) {return Val_as_url_rel_url_or(owner_dir, or, false);} - public Io_url Val_as_url_rel_url_or(Io_url owner_dir, Io_url or, boolean dir) {return Val_as_url_rel_url_or(Val_as_str(), owner_dir, or, dir);} - public boolean Parse(App_cmd_mgr mgr, String[] s_ary) { - dirty = true; - String s = s_ary.length == 0 ? "" : s_ary[0]; - switch (val_tid) { - case Val_tid_string: - val = s; - break; - case Val_tid_url: // NOTE: do not parse urls as it can either be absolute (C:\dir\fil.txt) or relative (fil.txt). relative cannot be parsed without knowing owner dir - val = s; - break; - case Val_tid_yn: - int v_int = Yn.parse_as_int(s); - if (v_int == Bool_.__int) {return mgr.Errs_add(Err_parse_yn, "value must be either y or n: ~{0}", s);} - val = v_int == Bool_.Y_int; - break; - } - return true; - } public static final String Err_parse_yn = "parse_yn"; - public App_cmd_arg Clone() { - App_cmd_arg rv = new App_cmd_arg(tid, val_tid, key, reqd); - rv.val = val; - rv.dflt = dflt; - rv.note = note; - rv.example = example; - return rv; - } - public static App_cmd_arg req_(String key) {return new App_cmd_arg(Tid_general, Val_tid_string, key, true);} - public static App_cmd_arg opt_(String key) {return new App_cmd_arg(Tid_general, Val_tid_string, key, false);} - public static App_cmd_arg new_(String key, boolean reqd) {return new App_cmd_arg(Tid_general, Val_tid_string, key, reqd);} - public static App_cmd_arg sys_help_() {return sys_help_("help");} - public static App_cmd_arg sys_help_(String key) {return new App_cmd_arg(Tid_help, Val_tid_string, key, false);} - public static App_cmd_arg sys_header_(String key) {return new App_cmd_arg(Tid_header, Val_tid_yn, key, false);} - public static App_cmd_arg sys_args_(String key) {return new App_cmd_arg(Tid_args, Val_tid_yn, key, false);} - public static final byte Tid_general = 0, Tid_help = 1, Tid_header = 2, Tid_args = 3; - public static final byte Val_tid_string = 0, Val_tid_yn = 1, Val_tid_url = 2, Val_tid_list_string = 3; - - public static Io_url Val_as_url_rel_url_or(String val_str, Io_url owner_dir, Io_url or, boolean dir) { - if (val_str == null) return or; - byte val_has_dir = Op_sys.Tid_nil; // if val_str is dir, use it literally (only checking for closing dir_spr); if it's just a name, assume a simple relative path - if (String_.Has(val_str, Op_sys.Lnx.Fsys_dir_spr_str())) - val_has_dir = Op_sys.Tid_lnx; - else if (String_.Has(val_str, Op_sys.Wnt.Fsys_dir_spr_str())) - val_has_dir = Op_sys.Tid_wnt; - if (val_has_dir != Op_sys.Tid_nil) { - if (dir) { // NOTE: need to do extra logic to guarantee trailing "/"; JAVA:7 apparently strips "/dir/" to "/dir" when passed in as argument; DATE:2013-03-20 - String val_dir_spr = val_has_dir == Op_sys.Tid_lnx ? Op_sys.Lnx.Fsys_dir_spr_str() : Op_sys.Wnt.Fsys_dir_spr_str(); - if (!String_.Has_at_end(val_str, val_dir_spr)) - val_str += val_dir_spr; - return Io_url_.new_dir_(val_str); - } - else - return Io_url_.new_fil_(val_str); - } - else - return dir ? owner_dir.GenSubDir(val_str) : owner_dir.GenSubFil(val_str); - } -} \ No newline at end of file diff --git a/400_xowa/src/gplx/core/consoles/App_cmd_mgr.java b/400_xowa/src/gplx/core/consoles/App_cmd_mgr.java deleted file mode 100644 index b75ea76e7..000000000 --- a/400_xowa/src/gplx/core/consoles/App_cmd_mgr.java +++ /dev/null @@ -1,162 +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.core.consoles; import gplx.*; import gplx.core.*; -import gplx.core.strings.*; -public class App_cmd_mgr { - private Ordered_hash expd_args = Ordered_hash_.new_(), actl_args = Ordered_hash_.new_(); - private List_adp tmp_vals = List_adp_.new_(); private String[] orig_ary; - public App_cmd_mgr Msg_root_(Gfo_msg_root v) {msg_root = v; return this;} private Gfo_msg_root msg_root = Gfo_msg_root._; - public String Arg_prefix() {return arg_prefix;} public App_cmd_mgr Arg_prefix_(String v) {arg_prefix = v; prefix_len = String_.Len(v); return this;} private String arg_prefix = "--"; int prefix_len = 2; - public void Clear() {expd_args.Clear(); actl_args.Clear(); errs.Clear(); key_help = key_header = null;} - public int Actl_len() {return actl_args.Count();} - public App_cmd_arg[] Actl_ary() {return (App_cmd_arg[])actl_args.To_ary(App_cmd_arg.class);} - public App_cmd_mgr Expd_add_many(App_cmd_arg... ary) {for (App_cmd_arg o : ary) Expd_add(o); return this;} - public App_cmd_mgr Expd_add(App_cmd_arg prm) { - expd_args.Add(prm.Key(), prm); - switch (prm.Tid()) { - case App_cmd_arg.Tid_help: key_help = prm.Key(); break; - case App_cmd_arg.Tid_header: key_header = prm.Key(); break; - case App_cmd_arg.Tid_args: key_args = prm.Key(); break; - } - return this; - } String key_help, key_header, key_args; - public boolean Args_process(String[] ary) {Args_parse(ary); return errs.Count() == 0;} - private void Args_parse(String[] ary) { - this.orig_ary = ary; - App_cmd_arg arg = null; - int ary_len = ary.length; - actl_args = Expd_copy(); - errs.Clear(); tmp_vals.Clear(); - for (int i = 0; i < ary_len; i++) { - String itm = ary[i]; - if (String_.Has_at_bgn(itm, arg_prefix)) { // key - if (arg != null) { - String[] tmp_ary = tmp_vals.To_str_ary(); - if (!arg.Parse(this, tmp_ary)) {continue;} - tmp_vals.Clear(); - } - String key = String_.Mid(itm, prefix_len); - Object o = actl_args.Get_by(key); - if (o == null) {Errs_add(Err_argument_is_unknown, "unknown argument: '~{0}'", key); continue;} - arg = (App_cmd_arg)o; - if (arg.Dirty()) {Errs_add(Err_argument_is_duplicate, "duplicate argument: '~{0}'", key); continue;} - arg.Dirty_(true); - } - else { - if (arg == null) {Errs_add(Err_argument_is_invalid_key, "argument key must be prefixed with '~{0}'; EX: '~{0}~{1}'", arg_prefix, itm); continue;} // should only happen if 1st itm is not "--%" -// if (arg.Val() != null) return Errs_add("argument_is_already_valued", "argument can only take one value: '{0}'", itm); - tmp_vals.Add(itm); - } - } - if (arg != null) { - String[] tmp_ary = tmp_vals.To_str_ary(); - arg.Parse(this, tmp_ary); - tmp_vals.Clear(); - } - int len = actl_args.Count(); - for (int i = 0; i < len; i++) { - arg = (App_cmd_arg)actl_args.Get_at(i); - if (arg.Reqd() && !arg.Dirty()) {Errs_add(Err_argument_is_required, "argument is required: '~{0}'", arg.Key()); continue;} - if (!arg.Dirty() && arg.Dflt() != null) arg.Val_(arg.Dflt()); - } - } public static final String Err_argument_is_duplicate = "argument_is_duplicate", Err_argument_is_required = "argument_is_required", Err_argument_is_unknown = "argument_is_unknown", Err_argument_is_invalid_key = "argument_is_invalid_key"; - public String Fmt_hdr() {return fmt_hdr;} public App_cmd_mgr Fmt_hdr_(String v) {fmt_hdr = v; return this;} private String fmt_hdr = ""; - public App_cmd_arg Args_get(String key) {return (App_cmd_arg)actl_args.Get_by(key);} - public boolean Args_has_help() { - App_cmd_arg arg = (App_cmd_arg)actl_args.Get_by(key_help); - return arg != null && arg.Dirty(); - } - public App_cmd_mgr Print_header(Gfo_usr_dlg usr_dlg) { - App_cmd_arg arg_hdr = (App_cmd_arg)actl_args.Get_by(key_header); - if (arg_hdr == null) return this; // no key_header specified; assume header shouldn't be printed - if (!arg_hdr.Val_as_bool()) return this; // key_header specified as false; return; - usr_dlg.Note_gui_none(GRP_KEY, "print.header", fmt_hdr); - return this; - } - public void Print_args(Gfo_usr_dlg usr_dlg) { - sb.Add_char_crlf(); - sb.Add_str_w_crlf("arguments:"); - int len = orig_ary.length; - if (len == 0) { - sb.Add_fmt_line(" **** NONE ****"); - sb.Add_fmt_line(" use --help to show help"); - } - else { - for (int i = 0; i < len; i++) - sb.Add_fmt_line(" [{0}] = '{1}'", i, orig_ary[i]); - } - usr_dlg.Note_none(GRP_KEY, "print.args", sb.Xto_str_and_clear()); - } String_bldr sb = String_bldr_.new_(); - public void Print_fail(Gfo_usr_dlg usr_dlg) { - sb.Add("** error: ").Add_char_crlf(); - int len = errs.Count(); - for (int i = 0; i < len; i++) { - Gfo_msg_data data = (Gfo_msg_data)errs.Get_at(i); - sb.Add_fmt_line(" " + data.Gen_str_ary()); - } - sb.Add_char_crlf(); - sb.Add_str_w_crlf(String_.Repeat("-", 80)); - usr_dlg.Note_none(GRP_KEY, "print.fail", sb.Xto_str_and_clear()); - } - public void Print_help(Gfo_usr_dlg usr_dlg, String app_name) { - sb.Add_str_w_crlf("example:"); - sb.Add_fmt(" java -jar {0}.jar", app_name); - int key_max = 0, tid_max = 0; - int len = expd_args.Count(); - for (int i = 0; i < len; i++) { - App_cmd_arg arg = (App_cmd_arg)expd_args.Get_at(i); - if (arg.Tid() != App_cmd_arg.Tid_general) continue; // skip header, help - sb.Add(" ").Add(arg_prefix).Add(arg.Key()).Add(" ").Add(arg.Example()); - int key_len = String_.Len(arg.Key()); if (key_len > key_max) key_max = key_len; - int tid_len = String_.Len(String_.Format("[{0}:{1}]", arg.Reqd_str(), arg.Val_tid_str())); if (tid_len > tid_max) tid_max = tid_len; - } sb.Add_char_crlf(); - sb.Add_char_crlf(); - sb.Add_str_w_crlf("detail:"); - for (int i = 0; i < len; i++) { - App_cmd_arg arg = (App_cmd_arg)expd_args.Get_at(i); -// if (arg.Tid() != App_cmd_arg.Tid_general) continue; // skip header, help - sb.Add(" ").Add(arg_prefix).Add(String_.PadEnd(arg.Key(), key_max + 1, " ")).Add(String_.PadEnd(String_.Format("[{0}:{1}]", arg.Reqd_str(), arg.Val_tid_str()), tid_max, " ")); - if (arg.Dflt() != null) - sb.Add_fmt(" default={0}", arg.Dflt()); - sb.Add_char_crlf(); - if (arg.Note() != null) - sb.Add(" ").Add(arg.Note()).Add_char_crlf(); -// for (int j = 0; j < arg.Itms().Count(); j++) { -// App_arg_info expdInf = (App_arg_info)arg.Itms().Get_at(j); -// sb.Add(" ").Add(String_.PadEnd(expdInf.Key(), key_max + 1, " ")).Add_str_w_crlf(expdInf.Descrip()); -// } - } - usr_dlg.Note_gui_none(GRP_KEY, "print.info", sb.Xto_str_and_clear()); - } - private Ordered_hash Expd_copy() { - Ordered_hash rv = Ordered_hash_.new_(); - int expd_len = expd_args.Count(); - for (int i = 0 ; i < expd_len; i++) { - App_cmd_arg arg = (App_cmd_arg)expd_args.Get_at(i); - rv.Add(arg.Key(), arg.Clone()); - } - return rv; - } - public boolean Errs_add(String key, String fmt, Object... vals) { - errs.Add(msg_root.Data_new_many(Gfo_msg_itm_.Cmd_warn, GRP_KEY, key, fmt, vals)); - return false; - } - public int Errs_len() {return errs.Count();} private List_adp errs = List_adp_.new_(); - public Gfo_msg_data Errs_get(int i) {return (Gfo_msg_data)errs.Get_at(i);} - private static final String GRP_KEY = "gplx.app.app_cmd_mgr"; -} \ No newline at end of file diff --git a/400_xowa/src/gplx/core/consoles/App_cmd_mgr_tst.java b/400_xowa/src/gplx/core/consoles/App_cmd_mgr_tst.java deleted file mode 100644 index 7324503ae..000000000 --- a/400_xowa/src/gplx/core/consoles/App_cmd_mgr_tst.java +++ /dev/null @@ -1,142 +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.core.consoles; import gplx.*; import gplx.core.*; -import org.junit.*; import gplx.core.tests.*; -public class App_cmd_mgr_tst { - App_cmd_mgr_fxt fxt = new App_cmd_mgr_fxt(); - @Before public void init() {fxt.Clear();} - @Test public void Basic() { - fxt .Expd_(fxt.arg_("a"), fxt.arg_("b")) - .Args_process("--a", "0", "--b", "1") - .Tst_errs_none() - .Tst_actl(fxt.chkr_("a", "0"), fxt.chkr_("b", "1")); - ; - } - @Test public void Dflt() { - fxt .Expd_(fxt.arg_("a").Val_tid_(App_cmd_arg.Val_tid_yn).Dflt_(true)); - fxt .Args_process("--a", "n").Tst_actl(fxt.chkr_("a", false)); // if val, use it - fxt .Args_process().Tst_actl(fxt.chkr_("a", true)); // if no val, use default - } - @Test public void Header_y() { - fxt.Expd_(App_cmd_arg.sys_header_("print_license")).Args_process("--print_license", "y"); - fxt.Mgr().Fmt_hdr_("test_hdr").Print_header(fxt.Usr_dlg()); - fxt.tst_write("test_hdr"); - fxt.Clear(); - } - @Test public void Header_n() { - fxt.Expd_(App_cmd_arg.sys_header_("print_license")).Args_process("--print_license", "n"); - fxt.Mgr().Fmt_hdr_("test_hdr").Print_header(fxt.Usr_dlg()); - fxt.tst_write(); - } -// @Test public void Help_y() { -// fxt.Expd_(App_cmd_arg.sys_header_("help")).Args_process("--help"); -//// fxt.Mgr().Fmt_help_grp("bgn ~{args} end").Fmt_help_itm_("~{0} ~{1}").Print_header(fxt.Status_mgr()); -//// fxt.Tst_write("test_hdr"); -// fxt.Clear(); -// } - @Test public void Err_parse_yn() { - fxt .Expd_(fxt.arg_("a").Val_tid_(App_cmd_arg.Val_tid_yn)) - .Args_process("--a", "x") - .Tst_errs(App_cmd_arg.Err_parse_yn); - ; - } - @Test public void Err_reqd() { - fxt .Expd_(fxt.arg_("a", true), fxt.arg_("b", false)) - .Args_process("--b", "1") - .Tst_errs(App_cmd_mgr.Err_argument_is_required); - ; - } - @Test public void Err_dupe() { - fxt .Expd_(fxt.arg_("a")) - .Args_process("--a", "0", "--a", "0") - .Tst_errs(App_cmd_mgr.Err_argument_is_duplicate); - ; - } - @Test public void Err_unknown() { - fxt .Expd_(fxt.arg_("a")) - .Args_process("--b") - .Tst_errs(App_cmd_mgr.Err_argument_is_unknown); - ; - } - @Test public void Err_key_invalid() { - fxt .Expd_(fxt.arg_("a")) - .Args_process("a") - .Tst_errs(App_cmd_mgr.Err_argument_is_invalid_key); - ; - } - @Test public void Val_as_url_rel_dir_or() { // PURPOSE: "/xowa" -> "/xowa/" - String root_dir = Op_sys.Cur().Tid_is_wnt() ? "C:\\" : "/", dir_spr = Op_sys.Cur().Fsys_dir_spr_str(); - Tst_val_as_url_rel_dir_or(root_dir, dir_spr, root_dir + "sub" , root_dir + "sub" + dir_spr); // /sub -> /sub/ - Tst_val_as_url_rel_dir_or(root_dir, dir_spr, root_dir + "sub" + dir_spr , root_dir + "sub" + dir_spr); // /sub/ -> /sub/ - Tst_val_as_url_rel_dir_or(root_dir, dir_spr, "sub" , root_dir + "dir" + dir_spr + "sub" + dir_spr); // sub -> /dir/sub/ - } - private void Tst_val_as_url_rel_dir_or(String root_dir, String dir_spr, String val, String expd) { - Io_url actl = fxt.arg_("key").Val_(val).Val_as_url_rel_dir_or(Io_url_.new_dir_(root_dir).GenSubDir("dir"), null); - Tfds.Eq(expd, actl.Raw()); - } -} -class App_cmd_mgr_fxt { - public Gfo_usr_dlg Usr_dlg() {return usr_dlg;} Gfo_usr_dlg usr_dlg; - public App_cmd_mgr Mgr() {return mgr;} App_cmd_mgr mgr = new App_cmd_mgr(); Tst_mgr tst_mgr = new Tst_mgr(); - public App_cmd_mgr_fxt Clear() { - if (usr_dlg == null) { - usr_dlg = Gfo_usr_dlg_.Test(); - } - mgr.Clear(); - usr_dlg.Gui_wkr().Clear(); - return this; - } - public App_cmd_arg arg_(String key) {return arg_(key, false);} - public App_cmd_arg arg_(String key, boolean reqd) {return App_cmd_arg.new_(key, reqd);} - public App_cmd_arg_chkr chkr_(String key, Object val) {return new App_cmd_arg_chkr(key, val);} - public App_cmd_mgr_fxt Expd_(App_cmd_arg... v) {mgr.Expd_add_many(v); return this;} - public App_cmd_mgr_fxt Args_process(String... v) {mgr.Args_process(v); return this;} - public App_cmd_mgr_fxt Tst_actl_len(int v) {Tfds.Eq(v, mgr.Actl_len()); return this;} - public App_cmd_mgr_fxt Tst_actl(App_cmd_arg_chkr... expd) { - App_cmd_arg[] actl = mgr.Actl_ary(); - tst_mgr.Tst_ary("", expd, actl); - return this; - } - public App_cmd_mgr_fxt Tst_errs_none() {return Tst_errs(String_.Ary_empty);} - public App_cmd_mgr_fxt Tst_errs(String... expd) { - int len = mgr.Errs_len(); - String[] actl = new String[len]; - for (int i = 0; i < len; i++) { - Gfo_msg_data data = mgr.Errs_get(i); - actl[i] = data.Item().Key_str(); - } - Tfds.Eq_ary_str(expd, actl); - return this; - } - public App_cmd_mgr_fxt tst_write(String... expd) { - String[] actl = ((Gfo_usr_dlg__gui_test)usr_dlg.Gui_wkr()).Xto_str_ary(); - Tfds.Eq_ary_str(expd, actl); - return this; - } -} -class App_cmd_arg_chkr implements Tst_chkr { - public App_cmd_arg_chkr(String key, Object val) {this.key = key; this.val = val;} private String key; Object val; - public Class TypeOf() {return App_cmd_arg.class;} - public int Chk(Tst_mgr mgr, String path, Object actl_obj) { - App_cmd_arg actl = (App_cmd_arg)actl_obj; - int err = 0; - err += mgr.Tst_val(false, path, "key", key, actl.Key()); - err += mgr.Tst_val(false, path, "val", val, actl.Val()); - return err; - } -} diff --git a/400_xowa/src/gplx/core/consoles/Gfo_cmd_arg_itm.java b/400_xowa/src/gplx/core/consoles/Gfo_cmd_arg_itm.java new file mode 100644 index 000000000..b16a73e90 --- /dev/null +++ b/400_xowa/src/gplx/core/consoles/Gfo_cmd_arg_itm.java @@ -0,0 +1,55 @@ +/* +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.core.consoles; import gplx.*; import gplx.core.*; +public class Gfo_cmd_arg_itm { + public Gfo_cmd_arg_itm(int tid, boolean reqd, String key, int val_tid) {this.tid = tid; this.reqd = reqd; this.key = key; this.val_tid = val_tid;} + public int Tid() {return tid;} private final int tid; + public boolean Reqd() {return reqd;} private final boolean reqd; + public String Key() {return key;} private final String key; + public int Val_tid() {return val_tid;} private int val_tid; + public Object Val() {return val;} public Gfo_cmd_arg_itm Val_(Object v) {this.val = v; dirty = true; return this;} private Object val; + public String Note() {return note;} public Gfo_cmd_arg_itm Note_(String v) {note = v; return this;} private String note = ""; + public String Example() {return example;} public Gfo_cmd_arg_itm Example_(String v) {example = v; return this;} private String example = ""; + public Object Dflt() {return dflt;} public Gfo_cmd_arg_itm Dflt_(Object v) {dflt = v; return this;} private Object dflt; + public boolean Dirty() {return dirty;} private boolean dirty; + public void Clear() { + dirty = false; + val = null; + } + public Gfo_cmd_arg_itm Example_url_(String v) { + Example_(v); + this.val_tid = Gfo_cmd_arg_itm_.Val_tid_url; + return this; + } + public String Reqd_str() {return reqd ? "required" : "optional";} + public String Val_tid_str() { + switch (val_tid) { + case Gfo_cmd_arg_itm_.Val_tid_string: return "string"; + case Gfo_cmd_arg_itm_.Val_tid_yn: return "y/n"; + case Gfo_cmd_arg_itm_.Val_tid_url: return "path"; + default: return "unknown"; + } + } + public boolean Val_as_bool() {return Bool_.cast(val);} + public String Val_as_str_or(String or) {return val == null ? or : (String)val;} + public String Val_as_str() {return (String)val;} + public int Val_as_int_or(int or) {return val == null ? or : Int_.parse_or((String)val, or);} + public Io_url Val_as_url__rel_dir_or(Io_url owner_dir, Io_url or) {return Val_as_url__rel_url_or(Bool_.Y, owner_dir, or);} + public Io_url Val_as_url__rel_fil_or(Io_url owner_dir, Io_url or) {return Val_as_url__rel_url_or(Bool_.N, owner_dir, or);} + public Io_url Val_as_url__rel_url_or(boolean to_dir, Io_url owner_dir, Io_url or) {return Gfo_cmd_arg_itm_.Val_as_url__rel_url_or(Val_as_str(), to_dir, owner_dir, or);} +} diff --git a/400_xowa/src/gplx/core/consoles/Gfo_cmd_arg_itm_.java b/400_xowa/src/gplx/core/consoles/Gfo_cmd_arg_itm_.java new file mode 100644 index 000000000..31ec77f61 --- /dev/null +++ b/400_xowa/src/gplx/core/consoles/Gfo_cmd_arg_itm_.java @@ -0,0 +1,47 @@ +/* +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.core.consoles; import gplx.*; import gplx.core.*; +public class Gfo_cmd_arg_itm_ { + public static final int Tid_general = 0, Tid_system = 1; + public static final int Val_tid_string = 0, Val_tid_yn = 1, Val_tid_url = 2, Val_tid_list_string = 3; + public static Gfo_cmd_arg_itm req_(String key) {return new Gfo_cmd_arg_itm(Tid_general, Bool_.Y, key, Val_tid_string);} + public static Gfo_cmd_arg_itm opt_(String key) {return new Gfo_cmd_arg_itm(Tid_general, Bool_.N, key, Val_tid_string);} + public static Gfo_cmd_arg_itm new_(String key, boolean reqd, int val_tid) {return new Gfo_cmd_arg_itm(Tid_general, reqd , key, val_tid);} + public static Gfo_cmd_arg_itm sys_(String key) {return new Gfo_cmd_arg_itm(Tid_system , Bool_.N, key, Val_tid_yn);} + public static Gfo_cmd_arg_itm new_(int tid, String key, boolean reqd, int val_tid) {return new Gfo_cmd_arg_itm(tid , reqd , key, val_tid);} + public static Io_url Val_as_url__rel_url_or(String raw, boolean to_dir, Io_url owner_dir, Io_url or) { + if (raw == null) return or; + byte val_has_dir = Op_sys.Tid_nil; // if raw is to_dir, use it literally (only checking for closing dir_spr); if it's just a name, assume a simple relative path + if (String_.Has(raw, Op_sys.Lnx.Fsys_dir_spr_str())) + val_has_dir = Op_sys.Tid_lnx; + else if (String_.Has(raw, Op_sys.Wnt.Fsys_dir_spr_str())) + val_has_dir = Op_sys.Tid_wnt; + if (val_has_dir != Op_sys.Tid_nil) { + if (to_dir) { // NOTE: need to do extra logic to guarantee trailing "/"; JAVA:7 apparently strips "/to_dir/" to "/to_dir" when passed in as argument; DATE:2013-03-20 + String val_dir_spr = val_has_dir == Op_sys.Tid_lnx ? Op_sys.Lnx.Fsys_dir_spr_str() : Op_sys.Wnt.Fsys_dir_spr_str(); + if (!String_.Has_at_end(raw, val_dir_spr)) + raw += val_dir_spr; + return Io_url_.new_dir_(raw); + } + else + return Io_url_.new_fil_(raw); + } + else + return to_dir ? owner_dir.GenSubDir(raw) : owner_dir.GenSubFil(raw); + } +} \ No newline at end of file diff --git a/400_xowa/src/gplx/core/consoles/Gfo_cmd_arg_mgr.java b/400_xowa/src/gplx/core/consoles/Gfo_cmd_arg_mgr.java new file mode 100644 index 000000000..78b2422a3 --- /dev/null +++ b/400_xowa/src/gplx/core/consoles/Gfo_cmd_arg_mgr.java @@ -0,0 +1,91 @@ +/* +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.core.consoles; import gplx.*; import gplx.core.*; +public class Gfo_cmd_arg_mgr { + private final Ordered_hash hash = Ordered_hash_.New(); + private final List_adp err_list = List_adp_.new_(), tmp_vals = List_adp_.new_(); + public String[] Orig_ary() {return orig_ary;} private String[] orig_ary; + public void Reset() { + hash.Clear(); + this.Clear(); + } + public void Clear() { + int len = hash.Count(); + for (int i = 0; i < len; ++i) { + Gfo_cmd_arg_itm itm = (Gfo_cmd_arg_itm)hash.Get_at(i); + itm.Clear(); + } + err_list.Clear(); + } + public Gfo_cmd_arg_mgr Reg_many(Gfo_cmd_arg_itm... ary) {for (Gfo_cmd_arg_itm itm : ary) Reg(itm); return this;} + public int Len() {return hash.Count();} + public boolean Has(String k) { + Gfo_cmd_arg_itm arg = (Gfo_cmd_arg_itm)hash.Get_by(k); + return arg != null && arg.Dirty(); + } + public boolean Get_by_as_bool(String k) { + Gfo_cmd_arg_itm arg = (Gfo_cmd_arg_itm)hash.Get_by(k); + return arg != null && arg.Val() != null && arg.Val_as_bool(); + } + public Gfo_cmd_arg_itm Get_at(int i) {return (Gfo_cmd_arg_itm)hash.Get_at(i);} + public Gfo_cmd_arg_itm Get_by(String key) {return (Gfo_cmd_arg_itm)hash.Get_by(key);} + public void Parse(String[] orig_ary) { + this.Clear(); + this.orig_ary = orig_ary; int orig_len = orig_ary.length; + Gfo_cmd_arg_itm cur_itm = null; + int orig_idx = 0; + while (true) { + boolean done = orig_idx == orig_len; + String itm = done ? "" : orig_ary[orig_idx++]; + boolean itm_is_key = String_.Has_at_bgn(itm, Key_prefix); // has "--" -> is key + if ( cur_itm != null // pending itm + && (itm_is_key || done)) { // cur arg is key ("--key2"), or all done + cur_itm.Val_(Gfo_cmd_arg_mgr_.Parse_ary_to_str(this, cur_itm.Val_tid(), tmp_vals.To_str_ary_and_clear())); + cur_itm = null; + } + if (done) break; + if (itm_is_key) { + String key = String_.Mid(itm, prefix_len); + Object o = hash.Get_by(key); if (o == null) {Errs__add(Gfo_cmd_arg_mgr_.Err__key__unknown , key); continue;} + cur_itm = (Gfo_cmd_arg_itm)o; if (cur_itm.Dirty()) {Errs__add(Gfo_cmd_arg_mgr_.Err__key__duplicate , key); continue;} + } + else { + if (cur_itm == null) {Errs__add(Gfo_cmd_arg_mgr_.Err__key__missing, itm); continue;} // should only happen if 1st itm is not "--%" + tmp_vals.Add(itm); + } + } + + // calc .Reqd and .Dflt + int len = hash.Count(); + for (int i = 0; i < len; ++i) { + cur_itm = (Gfo_cmd_arg_itm)hash.Get_at(i); + if (!cur_itm.Dirty()) { // arg not passed + if (cur_itm.Reqd()) // arg required but no value passed; add error + Errs__add(Gfo_cmd_arg_mgr_.Err__val__required, cur_itm.Key()); + else if (cur_itm.Dflt() != null) // arg has default + cur_itm.Val_(cur_itm.Dflt()); + } + } + } + public boolean Errs__exist() {return err_list.Count() > 0;} + public void Errs__add(String key, String val) {err_list.Add(key + ": " + val);} + public String[] Errs__to_str_ary() {return err_list.To_str_ary();} + public Gfo_cmd_arg_itm[] To_ary() {return (Gfo_cmd_arg_itm[])hash.To_ary(Gfo_cmd_arg_itm.class);} + private void Reg(Gfo_cmd_arg_itm defn) {hash.Add(defn.Key(), defn);} + public static final String Key_prefix = "--"; private static final int prefix_len = 2; +} diff --git a/400_xowa/src/gplx/core/consoles/Gfo_cmd_arg_mgr_.java b/400_xowa/src/gplx/core/consoles/Gfo_cmd_arg_mgr_.java new file mode 100644 index 000000000..22902e9e8 --- /dev/null +++ b/400_xowa/src/gplx/core/consoles/Gfo_cmd_arg_mgr_.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.core.consoles; import gplx.*; import gplx.core.*; +class Gfo_cmd_arg_mgr_ { + public static final String + Err__key__unknown = "unknown key" + , Err__key__duplicate = "duplicate key" + , Err__key__missing = "first argument must be prefixed with --" + , Err__val__required = "value is required" + , Err__val__invalid__yn = "value must be either y or n" + ; + public static Object Parse_ary_to_str(Gfo_cmd_arg_mgr mgr, int val_tid, String[] ary) { + String itm = ary.length == 0 ? "" : ary[0]; + switch (val_tid) { + case Gfo_cmd_arg_itm_.Val_tid_string: return itm; + case Gfo_cmd_arg_itm_.Val_tid_url: return itm; // NOTE: do not parse urls as it can either be absolute (C:\dir\fil.txt) or relative (fil.txt). relative cannot be parsed without knowing owner dir + case Gfo_cmd_arg_itm_.Val_tid_yn: + int itm_as_int = Yn.parse_as_int(itm); + if (itm_as_int == Bool_.__int) { + mgr.Errs__add(Gfo_cmd_arg_mgr_.Err__val__invalid__yn, itm); + return null; + } + return itm_as_int == Bool_.Y_int; + default: throw Err_.new_unhandled(val_tid); + } + } +} diff --git a/400_xowa/src/gplx/core/consoles/Gfo_cmd_arg_mgr_printer.java b/400_xowa/src/gplx/core/consoles/Gfo_cmd_arg_mgr_printer.java new file mode 100644 index 000000000..f885c6a5b --- /dev/null +++ b/400_xowa/src/gplx/core/consoles/Gfo_cmd_arg_mgr_printer.java @@ -0,0 +1,95 @@ +/* +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.core.consoles; import gplx.*; import gplx.core.*; +public class Gfo_cmd_arg_mgr_printer { + private final Gfo_cmd_arg_mgr arg_mgr; + private final Bry_bfr tmp_bfr = Bry_bfr.new_(); + public Gfo_cmd_arg_mgr_printer(Gfo_cmd_arg_mgr arg_mgr) {this.arg_mgr = arg_mgr;} + public boolean Print(Gfo_usr_dlg usr_dlg, String header, String app_name, String key__print_help, String key__print_header, String key__print_args) { + if (arg_mgr.Get_by_as_bool(key__print_header)) + usr_dlg.Note_gui_none("", "", header); + if (arg_mgr.Errs__exist()) { + usr_dlg.Note_none("", "", Get_args()); + usr_dlg.Note_none("", "", Get_fail()); + usr_dlg.Note_none("", "", Get_help(app_name)); + return false; + } + if (arg_mgr.Has(key__print_help)) { + usr_dlg.Note_none("", "", Get_help(app_name)); + return false; + } + if (arg_mgr.Get_by_as_bool(key__print_args)) + usr_dlg.Note_none("", "", Get_args()); + return true; + } + public String Get_args() { + tmp_bfr.Add_byte_nl(); + tmp_bfr.Add_str_a7_w_nl("arguments:"); + String[] orig_ary = arg_mgr.Orig_ary(); + int len = orig_ary.length; + if (len == 0) { + tmp_bfr.Add_str_a7_w_nl(" **** NONE ****"); + tmp_bfr.Add_str_a7_w_nl(" use --help to show help"); + } + else { + for (int i = 0; i < len; i++) { + String line = String_.Format(" [{0}] = '{1}'", i, orig_ary[i]); + tmp_bfr.Add_str_u8_w_nl(line); + } + } + return tmp_bfr.To_str_and_clear(); + } + public String Get_fail() { + tmp_bfr.Add_str_a7_w_nl("** error: "); + String[] err_ary = arg_mgr.Errs__to_str_ary(); + int len = err_ary.length; + for (int i = 0; i < len; ++i) + tmp_bfr.Add_str_u8_w_nl(" " + err_ary[i]); + tmp_bfr.Add_byte_nl(); + tmp_bfr.Add_str_a7_w_nl(String_.Repeat("-", 80)); + return tmp_bfr.To_str_and_clear(); + } + public String Get_help(String app_name) { + tmp_bfr.Add_str_a7_w_nl("example:"); + tmp_bfr.Add_str_a7(String_.Format(" java -jar {0}.jar", app_name)); + int key_max = 0, tid_max = 0; + int len = arg_mgr.Len(); + for (int i = 0; i < len; i++) { + Gfo_cmd_arg_itm arg = arg_mgr.Get_at(i); if (arg.Tid() != Gfo_cmd_arg_itm_.Tid_general) continue; // skip header, help + tmp_bfr.Add_str_a7(" ").Add_str_a7(Gfo_cmd_arg_mgr.Key_prefix).Add_str_u8(arg.Key()).Add_str_a7(" ").Add_str_u8(arg.Example()); + int key_len = String_.Len(arg.Key()); if (key_len > key_max) key_max = key_len; + int tid_len = String_.Len(String_.Format("[{0}:{1}]", arg.Reqd_str(), arg.Val_tid_str())); if (tid_len > tid_max) tid_max = tid_len; + } + tmp_bfr.Add_byte_nl().Add_byte_nl(); + tmp_bfr.Add_str_a7_w_nl("detail:"); + for (int i = 0; i < len; i++) { + Gfo_cmd_arg_itm arg = (Gfo_cmd_arg_itm)arg_mgr.Get_at(i); + tmp_bfr.Add_str_a7(" ").Add_str_a7(Gfo_cmd_arg_mgr.Key_prefix) + .Add_str_u8(String_.PadEnd(arg.Key(), key_max + 1, " ")) + .Add_str_u8(String_.PadEnd(String_.Format("[{0}:{1}]", arg.Reqd_str(), arg.Val_tid_str()), tid_max, " ")); + if (arg.Dflt() != null) { + String dflt_val = Object_.Xto_str_strict_or_null_mark(arg.Dflt()); + tmp_bfr.Add_str_u8(String_.Format(" default={0}", dflt_val)); + } + tmp_bfr.Add_byte_nl(); + if (arg.Note() != null) + tmp_bfr.Add_str_a7(" ").Add_str_u8(arg.Note()).Add_byte_nl(); + } + return tmp_bfr.To_str_and_clear(); + } +} \ No newline at end of file diff --git a/400_xowa/src/gplx/core/consoles/Gfo_cmd_arg_mgr_tst.java b/400_xowa/src/gplx/core/consoles/Gfo_cmd_arg_mgr_tst.java new file mode 100644 index 000000000..e6a81f72f --- /dev/null +++ b/400_xowa/src/gplx/core/consoles/Gfo_cmd_arg_mgr_tst.java @@ -0,0 +1,123 @@ +/* +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.core.consoles; import gplx.*; import gplx.core.*; +import org.junit.*; import gplx.core.tests.*; +public class Gfo_cmd_arg_mgr_tst { + @Before public void init() {fxt.Clear();} private final Gfo_cmd_arg_mgr_fxt fxt = new Gfo_cmd_arg_mgr_fxt(); + @Test public void Val__many() { + fxt.Init_args(fxt.Make_arg("a"), fxt.Make_arg("b")); + fxt.Exec_process("--a", "0", "--b", "1"); + fxt.Test_errs_none(); + fxt.Test_actl(fxt.Make_chkr("a", "0"), fxt.Make_chkr("b", "1")); + } + @Test public void Val__yn() { + fxt.Init_args(fxt.Make_arg("a", Gfo_cmd_arg_itm_.Val_tid_yn), fxt.Make_arg("b", Gfo_cmd_arg_itm_.Val_tid_yn)); + fxt.Exec_process("--a", "y", "--b", "n"); + fxt.Test_errs_none(); + fxt.Test_actl(fxt.Make_chkr("a", Bool_.Y), fxt.Make_chkr("b", Bool_.N)); + } + @Test public void Dflt() { + fxt.Init_args(fxt.Make_arg("a", Gfo_cmd_arg_itm_.Val_tid_yn).Dflt_(Bool_.Y)); + fxt.Exec_process("--a", "n").Test_actl(fxt.Make_chkr("a", Bool_.N)); // if val, use it + fxt.Exec_process() .Test_actl(fxt.Make_chkr("a", Bool_.Y)); // if no val, use default + } + @Test public void Err__key__unknown() { + fxt.Init_args(fxt.Make_arg("a")); + fxt.Exec_process("--b"); + fxt.Test_errs(Gfo_cmd_arg_mgr_.Err__key__unknown); + } + @Test public void Err__key__missing() { + fxt.Init_args(fxt.Make_arg("a")); + fxt.Exec_process("a"); + fxt.Test_errs(Gfo_cmd_arg_mgr_.Err__key__missing); + } + @Test public void Err__key__dupe() { + fxt.Init_args(fxt.Make_arg("a")); + fxt.Exec_process("--a", "0", "--a", "0"); + fxt.Test_errs(Gfo_cmd_arg_mgr_.Err__key__duplicate); + } + @Test public void Err__val__reqd() { + fxt.Init_args(fxt.Make_arg("a", Bool_.Y), fxt.Make_arg("b", Bool_.N)); + fxt.Exec_process("--b", "1"); + fxt.Test_errs(Gfo_cmd_arg_mgr_.Err__val__required); + } + @Test public void Err__val__parse__yn() { + fxt.Init_args(fxt.Make_arg("a", Gfo_cmd_arg_itm_.Val_tid_yn)); + fxt.Exec_process("--a", "x"); + fxt.Test_errs(Gfo_cmd_arg_mgr_.Err__val__invalid__yn); + } + @Test public void Val_as_url_rel_dir_or() { // PURPOSE: "/xowa" -> "/xowa/" + String root_dir = Op_sys.Cur().Tid_is_wnt() ? "C:\\" : "/", dir_spr = Op_sys.Cur().Fsys_dir_spr_str(); + fxt.Test_val_as_url_rel_dir_or(root_dir, dir_spr, root_dir + "sub" , root_dir + "sub" + dir_spr); // /sub -> /sub/ + fxt.Test_val_as_url_rel_dir_or(root_dir, dir_spr, root_dir + "sub" + dir_spr , root_dir + "sub" + dir_spr); // /sub/ -> /sub/ + fxt.Test_val_as_url_rel_dir_or(root_dir, dir_spr, "sub" , root_dir + "dir" + dir_spr + "sub" + dir_spr); // sub -> /dir/sub/ + } +} +class Gfo_cmd_arg_mgr_fxt { + private final Tst_mgr tst_mgr = new Tst_mgr(); + public Gfo_usr_dlg Usr_dlg() {return usr_dlg;} Gfo_usr_dlg usr_dlg; + public Gfo_cmd_arg_mgr Mgr() {return mgr;} private final Gfo_cmd_arg_mgr mgr = new Gfo_cmd_arg_mgr(); + public Gfo_cmd_arg_mgr_fxt Clear() { + if (usr_dlg == null) + usr_dlg = Gfo_usr_dlg_.Test(); + mgr.Reset(); + usr_dlg.Gui_wkr().Clear(); + return this; + } + public Gfo_cmd_arg_itm Make_arg(String key) {return Make_arg(key, false);} + public Gfo_cmd_arg_itm Make_arg(String key, int tid) {return Make_arg(key, false, tid);} + public Gfo_cmd_arg_itm Make_arg(String key, boolean reqd) {return Gfo_cmd_arg_itm_.new_(key, reqd, Gfo_cmd_arg_itm_.Val_tid_string);} + public Gfo_cmd_arg_itm Make_arg(String key, boolean reqd, int tid) {return Gfo_cmd_arg_itm_.new_(key, reqd, tid);} + public Gfo_cmd_itm_chkr Make_chkr(String key, Object val) {return new Gfo_cmd_itm_chkr(key, val);} + public Gfo_cmd_arg_mgr_fxt Init_args(Gfo_cmd_arg_itm... v) {mgr.Reg_many(v); return this;} + public Gfo_cmd_arg_mgr_fxt Exec_process(String... v) {mgr.Parse(v); return this;} + public Gfo_cmd_arg_mgr_fxt Test_actl(Gfo_cmd_itm_chkr... expd) { + Gfo_cmd_arg_itm[] actl = mgr.To_ary(); + tst_mgr.Tst_ary("", expd, actl); + return this; + } + public Gfo_cmd_arg_mgr_fxt Test_errs_none() {return Test_errs(String_.Ary_empty);} + public Gfo_cmd_arg_mgr_fxt Test_errs(String... expd) { + String[] actl = mgr.Errs__to_str_ary(); + int len = actl.length; + for (int i = 0; i < len; ++i) { // extract key part; EX: "unknown key: abc" -> unknown key + actl[i] = String_.GetStrBefore(actl[i], ":"); + } + Tfds.Eq_ary_str(expd, actl); + return this; + } + public Gfo_cmd_arg_mgr_fxt Test_write(String... expd) { + Tfds.Eq_ary_str(expd, ((Gfo_usr_dlg__gui_test)usr_dlg.Gui_wkr()).Xto_str_ary_and_clear()); + return this; + } + public void Test_val_as_url_rel_dir_or(String root_dir, String dir_spr, String val, String expd) { + Io_url actl = Make_arg("key").Val_(val).Val_as_url__rel_dir_or(Io_url_.new_dir_(root_dir).GenSubDir("dir"), null); + Tfds.Eq(expd, actl.Raw()); + } +} +class Gfo_cmd_itm_chkr implements Tst_chkr { + public Gfo_cmd_itm_chkr(String key, Object val) {this.key = key; this.val = val;} private String key; Object val; + public Class TypeOf() {return Gfo_cmd_arg_itm.class;} + public int Chk(Tst_mgr mgr, String path, Object actl_obj) { + Gfo_cmd_arg_itm actl = (Gfo_cmd_arg_itm)actl_obj; + int err = 0; + err += mgr.Tst_val(false, path, "key", key, actl.Key()); + err += mgr.Tst_val(false, path, "val", val, actl.Val()); + return err; + } +} diff --git a/400_xowa/src/gplx/core/enums/Gfo_enum_grp.java b/400_xowa/src/gplx/core/enums/Gfo_enum_grp.java index 90cc49802..95f8f8e97 100644 --- a/400_xowa/src/gplx/core/enums/Gfo_enum_grp.java +++ b/400_xowa/src/gplx/core/enums/Gfo_enum_grp.java @@ -17,7 +17,7 @@ along with this program. If not, see . */ package gplx.core.enums; import gplx.*; import gplx.core.*; class Gfo_enum_grp { -// private Ordered_hash itms = Ordered_hash_.new_(); +// private Ordered_hash itms = Ordered_hash_.New(); public Gfo_enum_grp(Guid_adp uid, String key, int id, String name, int sort, String xtn) { this.uid = uid; this.key = key; this.id = id; this.name = name; this.sort = sort; this.xtn = xtn; } diff --git a/400_xowa/src/gplx/core/flds/Gfo_fld_rdr.java b/400_xowa/src/gplx/core/flds/Gfo_fld_rdr.java index 74b7075b7..dd5d6adec 100644 --- a/400_xowa/src/gplx/core/flds/Gfo_fld_rdr.java +++ b/400_xowa/src/gplx/core/flds/Gfo_fld_rdr.java @@ -80,8 +80,8 @@ public class Gfo_fld_rdr extends Gfo_fld_base { } throw Err_.new_wo_type("fld_dlm failed", "fld_dlm", (char)fld_dlm, "bgn", fld_bgn); } - public String Read_str_escape() {Move_next_escaped(bfr); return String_.new_u8(bfr.Xto_bry_and_clear());} - public byte[] Read_bry_escape() {Move_next_escaped(bfr); return bfr.Xto_bry_and_clear();} + public String Read_str_escape() {Move_next_escaped(bfr); return String_.new_u8(bfr.To_bry_and_clear());} + public byte[] Read_bry_escape() {Move_next_escaped(bfr); return bfr.To_bry_and_clear();} public void Move_1() {++pos;} public void Move_next_escaped() {Move_next_escaped(bfr); bfr.Clear();} public int Move_next_simple_fld() { diff --git a/400_xowa/src/gplx/core/flds/Gfo_fld_rdr_tst.java b/400_xowa/src/gplx/core/flds/Gfo_fld_rdr_tst.java index 23fcb0b71..0f15ff27c 100644 --- a/400_xowa/src/gplx/core/flds/Gfo_fld_rdr_tst.java +++ b/400_xowa/src/gplx/core/flds/Gfo_fld_rdr_tst.java @@ -50,7 +50,7 @@ class Gfo_fld_rdr_fxt { byte[] bry = Bry_.new_u8(val); wtr.Bfr_(bfr); wtr.Write_bry_escape_fld(bry); - Tfds.Eq(expd, bfr.Xto_str()); + Tfds.Eq(expd, bfr.To_str()); return this; } private Bry_bfr bfr = Bry_bfr.new_(); } diff --git a/400_xowa/src/gplx/core/flds/Gfo_fld_wtr.java b/400_xowa/src/gplx/core/flds/Gfo_fld_wtr.java index de638f441..77301d24a 100644 --- a/400_xowa/src/gplx/core/flds/Gfo_fld_wtr.java +++ b/400_xowa/src/gplx/core/flds/Gfo_fld_wtr.java @@ -51,7 +51,7 @@ public class Gfo_fld_wtr extends Gfo_fld_base { public boolean Flush_needed(int v) {return bfr.Len() + v > bfr_max;} public void Flush() { if (Fil_gen().Cur_url() == null) fil_gen.Nxt_url(); - Io_mgr.I.AppendFilBfr(fil_gen.Cur_url(), bfr); + Io_mgr.Instance.AppendFilBfr(fil_gen.Cur_url(), bfr); } public void Flush_nxt() {Flush(); fil_gen.Nxt_url();} public Gfo_fld_wtr Ctor_xdat() {return (Gfo_fld_wtr)super.Ctor_xdat_base();} diff --git a/400_xowa/src/gplx/core/intls/Gfo_i18n_itm.java b/400_xowa/src/gplx/core/intls/Gfo_i18n_itm.java index 9fee3e231..43b4ec97c 100644 --- a/400_xowa/src/gplx/core/intls/Gfo_i18n_itm.java +++ b/400_xowa/src/gplx/core/intls/Gfo_i18n_itm.java @@ -33,7 +33,7 @@ class Gfo_i18n_itm { synchronized (tmp_fmtr) { tmp_fmtr.Fmt_(val); tmp_fmtr.Bld_bfr_many(tmp_bfr, args); - rv = tmp_bfr.Xto_bry_and_clear(); + rv = tmp_bfr.To_bry_and_clear(); } return val_cmd == null ? rv : val_cmd.Process(src, key, rv); } diff --git a/400_xowa/src/gplx/core/lists/StatRng_tst.java b/400_xowa/src/gplx/core/lists/StatRng_tst.java index 5d15ab691..2c32c15df 100644 --- a/400_xowa/src/gplx/core/lists/StatRng_tst.java +++ b/400_xowa/src/gplx/core/lists/StatRng_tst.java @@ -18,7 +18,7 @@ along with this program. If not, see . package gplx.core.lists; import gplx.*; import gplx.core.*; import org.junit.*; public class StatRng_tst { -// Mwl_parser_fxt fx = new Mwl_parser_fxt(); Pf_func_lang_rsc rsc = Pf_func_lang_rsc._; +// Mwl_parser_fxt fx = new Mwl_parser_fxt(); Pf_func_lang_rsc rsc = Pf_func_lang_rsc.Instance; StatRng_fxt fx = new StatRng_fxt(); @Test public void Empty() { fx.ini_(1, 1, 5); @@ -34,6 +34,6 @@ public class StatRng_tst { } /* public class Pf_func_switch_tst { -// Mwl_parser_fxt fx = new Mwl_parser_fxt(); Pf_func_lang_rsc rsc = Pf_func_lang_rsc._; +// Mwl_parser_fxt fx = new Mwl_parser_fxt(); Pf_func_lang_rsc rsc = Pf_func_lang_rsc.Instance; */ \ No newline at end of file diff --git a/400_xowa/src/gplx/core/logs/Gfo_log_fil.java b/400_xowa/src/gplx/core/logs/Gfo_log_fil.java index 137438352..881ee07cc 100644 --- a/400_xowa/src/gplx/core/logs/Gfo_log_fil.java +++ b/400_xowa/src/gplx/core/logs/Gfo_log_fil.java @@ -46,10 +46,10 @@ public class Gfo_log_fil { if (session != null) session.Add_by_bfr(msg_bfr); } public void Flush() { - Io_mgr.I.AppendFilBfr(fil_cur, fil_bfr); + Io_mgr.Instance.AppendFilBfr(fil_cur, fil_bfr); } private Io_url Fil_new() { - String part = size_max == -1 ? "" : "-" + Int_.Xto_str(++file_idx); + String part = size_max == -1 ? "" : "-" + Int_.To_str(++file_idx); return dir.OwnerDir().GenSubFil_ary(key, part, ".log"); } } diff --git a/400_xowa/src/gplx/core/logs/Gfo_log_mgr.java b/400_xowa/src/gplx/core/logs/Gfo_log_mgr.java index ce1ea27a5..3b4e5f599 100644 --- a/400_xowa/src/gplx/core/logs/Gfo_log_mgr.java +++ b/400_xowa/src/gplx/core/logs/Gfo_log_mgr.java @@ -17,7 +17,7 @@ along with this program. If not, see . */ package gplx.core.logs; import gplx.*; import gplx.core.*; public class Gfo_log_mgr { - private final Ordered_hash fil_list = Ordered_hash_.new_(); + private final Ordered_hash fil_list = Ordered_hash_.New(); private final Gfo_log_fil session_fil; private final Io_url dir; private final long size_dflt = Io_mgr.Len_mb * 2; diff --git a/400_xowa/src/gplx/core/net/Gfo_inet_conn.java b/400_xowa/src/gplx/core/net/Gfo_inet_conn.java index 7c08b7536..3600579fd 100644 --- a/400_xowa/src/gplx/core/net/Gfo_inet_conn.java +++ b/400_xowa/src/gplx/core/net/Gfo_inet_conn.java @@ -17,7 +17,8 @@ along with this program. If not, see . */ package gplx.core.net; import gplx.*; import gplx.core.*; public interface Gfo_inet_conn { - void Clear(); - void Upload_by_bytes(String url, byte[] data); - byte[] Download_as_bytes_or_null(String url); // return null instead of throwing exception + int Tid(); + void Clear(); + void Upload_by_bytes(String url, byte[] data); + byte[] Download_as_bytes_or_null(String url); // return null instead of throwing exception } diff --git a/400_xowa/src/gplx/core/net/Gfo_inet_conn_.java b/400_xowa/src/gplx/core/net/Gfo_inet_conn_.java index 91c38ae16..94c2b589a 100644 --- a/400_xowa/src/gplx/core/net/Gfo_inet_conn_.java +++ b/400_xowa/src/gplx/core/net/Gfo_inet_conn_.java @@ -17,19 +17,31 @@ along with this program. If not, see . */ package gplx.core.net; import gplx.*; import gplx.core.*; public class Gfo_inet_conn_ { + public static final int Tid__http = 1, Tid__mem__hash = 2, Tid__mem__pile = 3; public static Gfo_inet_conn new_http() {return new Gfo_inet_conn__http();} public static Gfo_inet_conn new_mem_hash() {return new Gfo_inet_conn__mem__hash();} public static Gfo_inet_conn new_mem_pile() {return new Gfo_inet_conn__mem__pile();} + public static Gfo_inet_conn new_() { + switch (new_prototype) { + default: + case Tid__http: return new_http(); + case Tid__mem__hash: return new_mem_hash(); + case Tid__mem__pile: return new_mem_pile(); + } + } + public static void new_prototype_(int v) {new_prototype = v;} private static int new_prototype = Tid__http; } class Gfo_inet_conn__mem__hash implements Gfo_inet_conn { - private final Hash_adp_bry hash = Hash_adp_bry.cs(); - public void Clear() {hash.Clear();} - public void Upload_by_bytes(String url, byte[] data) {hash.Add(url, data);} - public byte[] Download_as_bytes_or_null(String url) {return (byte[])hash.Get_by(url);} + private final Hash_adp hash = Hash_adp_.new_(); + public int Tid() {return Gfo_inet_conn_.Tid__mem__hash;} + public void Clear() {hash.Clear();} + public void Upload_by_bytes(String url, byte[] data) {hash.Add(url, data);} + public byte[] Download_as_bytes_or_null(String url) {return (byte[])hash.Get_by(url);} } class Gfo_inet_conn__mem__pile implements Gfo_inet_conn { private final List_adp pile = List_adp_.new_(); - public void Clear() {pile.Clear();} - public void Upload_by_bytes(String url, byte[] data) {pile.Add(data);} - public byte[] Download_as_bytes_or_null(String url) {return (byte[])List_adp_.Pop_last(pile);} + public int Tid() {return Gfo_inet_conn_.Tid__mem__hash;} + public void Clear() {pile.Clear();} + public void Upload_by_bytes(String url, byte[] data) {pile.Add(data);} + public byte[] Download_as_bytes_or_null(String url) {return (byte[])List_adp_.Pop_last(pile);} } diff --git a/400_xowa/src/gplx/core/net/Gfo_inet_conn__http.java b/400_xowa/src/gplx/core/net/Gfo_inet_conn__http.java index 2c3e346fd..2b2047c1f 100644 --- a/400_xowa/src/gplx/core/net/Gfo_inet_conn__http.java +++ b/400_xowa/src/gplx/core/net/Gfo_inet_conn__http.java @@ -19,9 +19,10 @@ package gplx.core.net; import gplx.*; import gplx.core.*; import gplx.ios.*; class Gfo_inet_conn__http implements Gfo_inet_conn { private final IoEngine_xrg_downloadFil downloader = IoEngine_xrg_downloadFil.new_("", Io_url_.Empty); - public void Clear() {throw Err_.new_unsupported();} - public void Upload_by_bytes(String url, byte[] data) {throw Err_.new_unsupported();} - public byte[] Download_as_bytes_or_null(String url) { + public int Tid() {return Gfo_inet_conn_.Tid__http;} + public void Clear() {throw Err_.new_unsupported();} + public void Upload_by_bytes(String url, byte[] data) {throw Err_.new_unsupported();} + public byte[] Download_as_bytes_or_null(String url) { try {return downloader.Exec_as_bry(url);} catch (Exception e) {Err_.Noop(e); return null;} } diff --git a/400_xowa/src/gplx/core/net/Gfo_protocol_itm.java b/400_xowa/src/gplx/core/net/Gfo_protocol_itm.java index ae0c99892..40d86b7ea 100644 --- a/400_xowa/src/gplx/core/net/Gfo_protocol_itm.java +++ b/400_xowa/src/gplx/core/net/Gfo_protocol_itm.java @@ -76,7 +76,7 @@ public class Gfo_protocol_itm { , Tid_relative_1 = 29 // [//a.org] , Tid_relative_2 = 30 // [[//a.org]] ; - public static final Ordered_hash Regy = Ordered_hash_.new_bry_(); + public static final Ordered_hash Regy = Ordered_hash_.New_bry(); public static final Gfo_protocol_itm Itm_http = new_(Tid_http , "http://") , Itm_https = new_(Tid_https , "https://") diff --git a/400_xowa/src/gplx/core/net/Gfo_qarg_itm.java b/400_xowa/src/gplx/core/net/Gfo_qarg_itm.java index 9aa590548..cfd3c4ea0 100644 --- a/400_xowa/src/gplx/core/net/Gfo_qarg_itm.java +++ b/400_xowa/src/gplx/core/net/Gfo_qarg_itm.java @@ -46,6 +46,6 @@ public class Gfo_qarg_itm { bfr.Add(itm.Val_bry()); bfr.Add_byte_nl(); } - return bfr.Xto_str_and_clear(); + return bfr.To_str_and_clear(); } } diff --git a/400_xowa/src/gplx/core/net/Gfo_qarg_mgr.java b/400_xowa/src/gplx/core/net/Gfo_qarg_mgr.java index 53b8b0b43..70915f25e 100644 --- a/400_xowa/src/gplx/core/net/Gfo_qarg_mgr.java +++ b/400_xowa/src/gplx/core/net/Gfo_qarg_mgr.java @@ -39,7 +39,7 @@ public class Gfo_qarg_mgr { Gfo_qarg_itm arg = (Gfo_qarg_itm)hash.Get_by(key); return arg == null ? or : String_.new_u8(arg.Val_bry()); } - public void Set_val_by_int(byte[] key, int val) {Set_val_by_bry(key, Bry_.new_a7(Int_.Xto_str(val)));} + public void Set_val_by_int(byte[] key, int val) {Set_val_by_bry(key, Bry_.new_a7(Int_.To_str(val)));} public void Set_val_by_bry(byte[] key, byte[] val) { Gfo_qarg_itm arg = (Gfo_qarg_itm)hash.Get_by(key); if (arg == null) { @@ -68,13 +68,13 @@ public class Gfo_qarg_mgr { Gfo_qarg_itm itm = Get_arg(key); if (itm == null) continue; bfr.Add_byte(Byte_ascii.Amp).Add(itm.Key_bry()).Add_byte(Byte_ascii.Eq).Add(itm.Val_bry()); } - return bfr.Xto_bry_and_clear(); + return bfr.To_bry_and_clear(); } public byte[] To_bry() { int len = list.Count(); if (len == 0) return Bry_.Empty; Bry_bfr bfr = Bry_bfr.new_(); To_bry(bfr, gplx.xowa.Xoa_app_.Utl__encoder_mgr().Href(), false); - return bfr.Xto_bry_and_clear(); + return bfr.To_bry_and_clear(); } public void To_bry(Bry_bfr bfr, Url_encoder href_encoder, boolean encode) { int len = list.Count(); if (len == 0) return; diff --git a/400_xowa/src/gplx/core/net/Gfo_url_parser.java b/400_xowa/src/gplx/core/net/Gfo_url_parser.java index e81ab00a2..0f5734afb 100644 --- a/400_xowa/src/gplx/core/net/Gfo_url_parser.java +++ b/400_xowa/src/gplx/core/net/Gfo_url_parser.java @@ -255,7 +255,7 @@ public class Gfo_url_parser { tmp_bfr.Add_byte_eq().Add(qarg_val); } qargs.Clear(); - segs_ary.Set_at_last(tmp_bfr.Xto_bry_and_clear()); + segs_ary.Set_at_last(tmp_bfr.To_bry_and_clear()); } public static final byte[] Bry_double_slash = new byte[] {Byte_ascii.Slash, Byte_ascii.Slash}; } diff --git a/400_xowa/src/gplx/core/net/Http_post_data_hash.java b/400_xowa/src/gplx/core/net/Http_post_data_hash.java index 83ee80be7..583ad6552 100644 --- a/400_xowa/src/gplx/core/net/Http_post_data_hash.java +++ b/400_xowa/src/gplx/core/net/Http_post_data_hash.java @@ -17,7 +17,7 @@ along with this program. If not, see . */ package gplx.core.net; import gplx.*; import gplx.core.*; public class Http_post_data_hash { - private final Ordered_hash hash = Ordered_hash_.new_bry_(); + private final Ordered_hash hash = Ordered_hash_.New_bry(); public int Len() {return hash.Count();} public Http_post_data_itm Get_at(int i) {return (Http_post_data_itm)hash.Get_at(i);} public Http_post_data_itm Get_by(byte[] k) {return (Http_post_data_itm)hash.Get_by(k);} diff --git a/400_xowa/src/gplx/core/net/Http_request_itm.java b/400_xowa/src/gplx/core/net/Http_request_itm.java index 3c79ec916..4b52b3f8c 100644 --- a/400_xowa/src/gplx/core/net/Http_request_itm.java +++ b/400_xowa/src/gplx/core/net/Http_request_itm.java @@ -76,7 +76,7 @@ public class Http_request_itm { bfr.Add_kv_dlm(line, String_.new_u8(itm.Key()), itm.Val()); } } - return bfr.Xto_str_and_clear(); + return bfr.To_str_and_clear(); } public static final int Type_get = 1, Type_post = 2; } diff --git a/400_xowa/src/gplx/core/net/Http_request_parser.java b/400_xowa/src/gplx/core/net/Http_request_parser.java index 35720ac17..05e809e1f 100644 --- a/400_xowa/src/gplx/core/net/Http_request_parser.java +++ b/400_xowa/src/gplx/core/net/Http_request_parser.java @@ -121,7 +121,7 @@ public class Http_request_parser { if (Bry_.Has_at_bgn(line, content_type_boundary)) break; tmp_bfr.Add(line); } - byte[] val = tmp_bfr.Xto_bry_and_clear(); + byte[] val = tmp_bfr.To_bry_and_clear(); post_data_hash.Add(key, val); return line; } diff --git a/400_xowa/src/gplx/core/net/Http_server_wtr__console.java b/400_xowa/src/gplx/core/net/Http_server_wtr__console.java index 790318c4b..b05686fca 100644 --- a/400_xowa/src/gplx/core/net/Http_server_wtr__console.java +++ b/400_xowa/src/gplx/core/net/Http_server_wtr__console.java @@ -18,5 +18,5 @@ along with this program. If not, see . package gplx.core.net; import gplx.*; import gplx.core.*; import gplx.core.consoles.*; class Http_server_wtr__console implements Http_server_wtr { - public void Write_str_w_nl(String s) {Console_adp__sys.I.Write_str_w_nl(s);} + public void Write_str_w_nl(String s) {Console_adp__sys.Instance.Write_str_w_nl(s);} } diff --git a/400_xowa/src/gplx/core/primitives/Bry_cache.java b/400_xowa/src/gplx/core/primitives/Bry_cache.java index 8de98734c..fafdcf9b4 100644 --- a/400_xowa/src/gplx/core/primitives/Bry_cache.java +++ b/400_xowa/src/gplx/core/primitives/Bry_cache.java @@ -30,5 +30,5 @@ public class Bry_cache { return ((Bry_obj_ref)rv).Val(); } Hash_adp hash = Hash_adp_.new_(); Bry_obj_ref hash_ref = Bry_obj_ref.null_(); - public static final Bry_cache _ = new Bry_cache(); Bry_cache() {} + public static final Bry_cache Instance = new Bry_cache(); Bry_cache() {} } diff --git a/400_xowa/src/gplx/core/primitives/Int_2_val.java b/400_xowa/src/gplx/core/primitives/Int_2_val.java index 604cd1f76..90a256132 100644 --- a/400_xowa/src/gplx/core/primitives/Int_2_val.java +++ b/400_xowa/src/gplx/core/primitives/Int_2_val.java @@ -29,5 +29,5 @@ public class Int_2_val { int v1 = Int_.parse_or(itms[1], Int_.Min_value); if (v1 == Int_.Min_value) return Null_ptr; return new Int_2_val(v0, v1); } - public static String Xto_str(Bry_bfr bfr, int x, int y) {return bfr.Add_int_variable(x).Add_byte_comma().Add_int_variable(y).Xto_str_and_clear();} + public static String Xto_str(Bry_bfr bfr, int x, int y) {return bfr.Add_int_variable(x).Add_byte_comma().Add_int_variable(y).To_str_and_clear();} } diff --git a/400_xowa/src/gplx/core/primitives/Int_ary_parser.java b/400_xowa/src/gplx/core/primitives/Int_ary_parser.java index a033286c2..0e96208b8 100644 --- a/400_xowa/src/gplx/core/primitives/Int_ary_parser.java +++ b/400_xowa/src/gplx/core/primitives/Int_ary_parser.java @@ -35,5 +35,5 @@ public class Int_ary_parser extends Obj_ary_parser_base { parser.Parse(bry, bgn, end); if (parser.Has_err() || parser.Has_frac()) throw Err_.new_wo_type("failed to parse number", "val", String_.new_u8(bry, bgn, end)); ary[ary_idx++] = parser.Rv_as_int(); } - public static final Int_ary_parser _ = new Int_ary_parser(); + public static final Int_ary_parser Instance = new Int_ary_parser(); } diff --git a/400_xowa/src/gplx/core/primitives/Int_ary_parser_tst.java b/400_xowa/src/gplx/core/primitives/Int_ary_parser_tst.java index 5baffcff9..b855e41fb 100644 --- a/400_xowa/src/gplx/core/primitives/Int_ary_parser_tst.java +++ b/400_xowa/src/gplx/core/primitives/Int_ary_parser_tst.java @@ -22,7 +22,7 @@ public class Int_ary_parser_tst { @Test public void One() {tst_ints("1" , 0, 1, Int_.Ary(1));} @Test public void None() {tst_ints("" , 0, 0, Int_.Ary());} private void tst_ints(String raw, int bgn, int end, int[] expd) { - int[] actl = Int_ary_parser._.Parse_ary(Bry_.new_a7(raw), bgn, end, Byte_ascii.Comma); + int[] actl = Int_ary_parser.Instance.Parse_ary(Bry_.new_a7(raw), bgn, end, Byte_ascii.Comma); Tfds.Eq_ary(expd, actl); } } diff --git a/400_xowa/src/gplx/core/tests/Tst_mgr.java b/400_xowa/src/gplx/core/tests/Tst_mgr.java index 4beee35fb..397e2327c 100644 --- a/400_xowa/src/gplx/core/tests/Tst_mgr.java +++ b/400_xowa/src/gplx/core/tests/Tst_mgr.java @@ -51,7 +51,7 @@ public class Tst_mgr { int max_len = expd_ary_len > actl_ary_len ? expd_ary_len : actl_ary_len; int err = 0; for (int i = 0; i < max_len; i++) { - String path = ownerPath + Int_.Xto_str(i); + String path = ownerPath + Int_.To_str(i); Tst_chkr expd_obj = i < expd_ary_len ? expd_ary[i] : Tst_mgr.Null_chkr; Object actl_obj = i < actl_ary_len ? actl_ary[i] : ""; String actl_type = i < actl_ary_len ? Type_adp_.NameOf_obj(actl_obj) : ""; @@ -86,7 +86,7 @@ public class Tst_mgr { Object itm = Array_.Get_at(ary, i); ary_sb.Add(Object_.Xto_str_strict_or_null_mark(itm)).Add(","); } - return ary_sb.Xto_str_and_clear(); + return ary_sb.To_str_and_clear(); } String_bldr ary_sb = String_bldr_.new_(); String Build() { String_bldr sb = String_bldr_.new_(); @@ -104,7 +104,7 @@ public class Tst_mgr { if (!itm.Pass()) sb.Add_fmt("\n{0} {1} {2} '{3}'", String_.PadEnd("", comp_max, " "), " " + String_.PadEnd("", path_max, " "), " " + String_.PadEnd("", name_max, " ") + " ", itm.Actl()); } - return sb.Xto_str_and_clear(); + return sb.To_str_and_clear(); } int Max(int max, String s) {int len = String_.Len(s); return len > max ? len : max;} public static final Tst_chkr Null_chkr = new Tst_chkr_null(); diff --git a/400_xowa/src/gplx/core/threads/Gfo_thread_cmd_download.java b/400_xowa/src/gplx/core/threads/Gfo_thread_cmd_download.java index d7e3d3e9f..b806fc975 100644 --- a/400_xowa/src/gplx/core/threads/Gfo_thread_cmd_download.java +++ b/400_xowa/src/gplx/core/threads/Gfo_thread_cmd_download.java @@ -32,10 +32,10 @@ public class Gfo_thread_cmd_download implements Gfo_thread_cmd { public int Async_sleep_interval() {return Gfo_thread_cmd_.Async_sleep_interval_1_second;} public boolean Async_prog_enabled() {return false;} @gplx.Virtual public byte Async_init() { - if (Io_mgr.I.ExistsFil(trg)) { + if (Io_mgr.Instance.ExistsFil(trg)) { int rslt = kit.Ask_yes_no_cancel(GRP_KEY, "target_exists", "Target file already exists: '~{0}'.\nDo you want to delete it?", trg.Raw()); switch (rslt) { - case Gfui_dlg_msg_.Btn_yes: Io_mgr.I.DeleteFil(trg); break; + case Gfui_dlg_msg_.Btn_yes: Io_mgr.Instance.DeleteFil(trg); break; case Gfui_dlg_msg_.Btn_no: return Gfo_thread_cmd_.Init_cancel_step; case Gfui_dlg_msg_.Btn_cancel: return Gfo_thread_cmd_.Init_cancel_all; default: throw Err_.new_unhandled(rslt); @@ -59,7 +59,7 @@ public class Gfo_thread_cmd_download implements Gfo_thread_cmd { kit.Ask_ok(GRP_KEY, "download.fail", "download failed. Please select 'read from file' if you've already downloaded a dump: url=~{0} error=~{1}", src, xrg.Rslt_err_str()); } } boolean download_pass = true; - protected gplx.ios.IoEngine_xrg_downloadFil xrg = Io_mgr.I.DownloadFil_args("", Io_url_.Empty); + protected gplx.ios.IoEngine_xrg_downloadFil xrg = Io_mgr.Instance.DownloadFil_args("", Io_url_.Empty); public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { if (ctx.Match(k, Invk_async_bgn)) Download(); else if (ctx.Match(k, Invk_owner)) return owner; diff --git a/400_xowa/src/gplx/core/threads/Gfo_thread_cmd_replace.java b/400_xowa/src/gplx/core/threads/Gfo_thread_cmd_replace.java index 01c164027..1b2ecf563 100644 --- a/400_xowa/src/gplx/core/threads/Gfo_thread_cmd_replace.java +++ b/400_xowa/src/gplx/core/threads/Gfo_thread_cmd_replace.java @@ -30,7 +30,7 @@ public class Gfo_thread_cmd_replace implements Gfo_thread_cmd { public int Async_sleep_interval() {return Gfo_thread_cmd_.Async_sleep_interval_1_second;} public boolean Async_prog_enabled() {return false;} @gplx.Virtual public byte Async_init() { - if (!Io_mgr.I.ExistsFil(fil)) {kit.Ask_ok(GRP_KEY, "file_missing", "File does not exist: '~{0}'", fil.Raw()); return Gfo_thread_cmd_.Init_cancel_step;} + if (!Io_mgr.Instance.ExistsFil(fil)) {kit.Ask_ok(GRP_KEY, "file_missing", "File does not exist: '~{0}'", fil.Raw()); return Gfo_thread_cmd_.Init_cancel_step;} return Gfo_thread_cmd_.Init_ok; } public boolean Async_term() {return true;} @@ -38,13 +38,13 @@ public class Gfo_thread_cmd_replace implements Gfo_thread_cmd { public boolean Async_running() {return false;} @gplx.Virtual public void Async_run() {Exec_find_replace();} // NOTE: do not run async; if multiple commands for same file then they will not always work public void Exec_find_replace() { - String raw = Io_mgr.I.LoadFilStr(fil); + String raw = Io_mgr.Instance.LoadFilStr(fil); int pairs_len = pairs.Count(); for (int i = 0; i < pairs_len; i++) { KeyVal kv = (KeyVal)pairs.Get_at(i); raw = String_.Replace(raw, kv.Key(), kv.Val_to_str_or_null()); } - Io_mgr.I.SaveFilStr(fil, raw); + Io_mgr.Instance.SaveFilStr(fil, raw); usr_dlg.Prog_many(GRP_KEY, "done", "replace completed: ~{0} ~{1}", fil.Raw(), pairs_len); } public List_adp pairs = List_adp_.new_(); diff --git a/400_xowa/src/gplx/core/threads/Gfo_thread_cmd_unzip.java b/400_xowa/src/gplx/core/threads/Gfo_thread_cmd_unzip.java index 8a444afa7..2e73b8527 100644 --- a/400_xowa/src/gplx/core/threads/Gfo_thread_cmd_unzip.java +++ b/400_xowa/src/gplx/core/threads/Gfo_thread_cmd_unzip.java @@ -32,22 +32,22 @@ public class Gfo_thread_cmd_unzip implements Gfo_thread_cmd { public boolean Async_prog_enabled() {return true;} public void Async_prog_run(int async_sleep_sum) { String size_str = " please wait..."; - if (trg.Type_fil()) size_str = gplx.ios.Io_size_.To_str(Io_mgr.I.QueryFil(trg).Size()); + if (trg.Type_fil()) size_str = gplx.ios.Io_size_.To_str(Io_mgr.Instance.QueryFil(trg).Size()); usr_dlg.Prog_many(GRP_KEY, "unzip", "unzipping: ~{0}", size_str); } @gplx.Virtual public byte Async_init() { - if (!Io_mgr.I.ExistsFil(src)) { + if (!Io_mgr.Instance.ExistsFil(src)) { kit.Ask_ok(GRP_KEY, "source_missing", "Source file does not exist: '~{0}'", src.Raw()); return Gfo_thread_cmd_.Init_cancel_step; } trg_is_dir = trg.Type_dir(); if (delete_trg_if_exists - && (( trg_is_dir && Io_mgr.I.ExistsDir(trg)) - || (!trg_is_dir && Io_mgr.I.ExistsFil(trg))) + && (( trg_is_dir && Io_mgr.Instance.ExistsDir(trg)) + || (!trg_is_dir && Io_mgr.Instance.ExistsFil(trg))) ) { int rslt = kit.Ask_yes_no_cancel(GRP_KEY, "target_exists", "Target file already exists: '~{0}'.\nDo you want to delete it?", trg.Raw()); switch (rslt) { - case Gfui_dlg_msg_.Btn_yes: if (trg_is_dir) Io_mgr.I.DeleteDirDeep(trg); else Io_mgr.I.DeleteFil(trg); break; + case Gfui_dlg_msg_.Btn_yes: if (trg_is_dir) Io_mgr.Instance.DeleteDirDeep(trg); else Io_mgr.Instance.DeleteFil(trg); break; case Gfui_dlg_msg_.Btn_no: return Gfo_thread_cmd_.Init_cancel_step; case Gfui_dlg_msg_.Btn_cancel: return Gfo_thread_cmd_.Init_cancel_all; } @@ -61,7 +61,7 @@ public class Gfo_thread_cmd_unzip implements Gfo_thread_cmd { } public boolean Async_term() { if (rename_dir) { - Io_url[] dirs = Io_mgr.I.QueryDir_args(trg.OwnerDir()).DirOnly_().Recur_(false).ExecAsUrlAry(); + Io_url[] dirs = Io_mgr.Instance.QueryDir_args(trg.OwnerDir()).DirOnly_().Recur_(false).ExecAsUrlAry(); int dirs_len = dirs.length; Io_url zip_dir = Io_url_.Empty; for (int i = 0; i < dirs_len; i++) { @@ -76,14 +76,14 @@ public class Gfo_thread_cmd_unzip implements Gfo_thread_cmd { return false; } if (!String_.Eq(String_.Lower(zip_dir.Raw()), String_.Lower(trg.Raw()))) // HACK: inkscape is itself - Io_mgr.I.MoveDirDeep(zip_dir, trg); + Io_mgr.Instance.MoveDirDeep(zip_dir, trg); } switch (term_cmd_for_src) { case Term_cmd_for_src_noop: break; - case Term_cmd_for_src_delete: Io_mgr.I.DeleteFil(src); break; + case Term_cmd_for_src_delete: Io_mgr.Instance.DeleteFil(src); break; case Term_cmd_for_src_move: if (term_cmd_for_src_url == Io_url_.Empty) throw Err_.new_wo_type("move specified, but no url"); - Io_mgr.I.MoveFil_args(src, term_cmd_for_src_url, true).Exec(); + Io_mgr.Instance.MoveFil_args(src, term_cmd_for_src_url, true).Exec(); break; default: throw Err_.new_unhandled(term_cmd_for_src); } diff --git a/400_xowa/src/gplx/langs/htmls/parsers/Gfo_html_wkr.java b/400_xowa/src/gplx/core/threads/poolables/Gfo_poolable_itm.java similarity index 73% rename from 400_xowa/src/gplx/langs/htmls/parsers/Gfo_html_wkr.java rename to 400_xowa/src/gplx/core/threads/poolables/Gfo_poolable_itm.java index 326d9dbbb..52e9d3e48 100644 --- a/400_xowa/src/gplx/langs/htmls/parsers/Gfo_html_wkr.java +++ b/400_xowa/src/gplx/core/threads/poolables/Gfo_poolable_itm.java @@ -15,8 +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.langs.htmls.parsers; import gplx.*; import gplx.langs.*; import gplx.langs.htmls.*; -interface Gfo_html_wkr { - Gfo_html_tkn Get_or_null(byte[] src, int bgn, int end); - void Process(Gfo_html_node node); +package gplx.core.threads.poolables; import gplx.*; import gplx.core.*; import gplx.core.threads.*; +public interface Gfo_poolable_itm { + int Pool__idx(); + void Pool__clear (Object[] args); + Gfo_poolable_itm Pool__make (int idx, Object[] args); } diff --git a/400_xowa/src/gplx/core/threads/poolables/Gfo_poolable_mgr.java b/400_xowa/src/gplx/core/threads/poolables/Gfo_poolable_mgr.java new file mode 100644 index 000000000..65d4ad7e8 --- /dev/null +++ b/400_xowa/src/gplx/core/threads/poolables/Gfo_poolable_mgr.java @@ -0,0 +1,127 @@ +/* +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.core.threads.poolables; import gplx.*; import gplx.core.*; import gplx.core.threads.*; +public class Gfo_poolable_mgr { + private final Object thread_lock = new Object(); + private final Gfo_poolable_itm prototype; private final Object[] make_args, clear_args; + private Gfo_poolable_itm[] pool; private int pool_next, pool_len; private final int pool_max; + public Gfo_poolable_mgr(Gfo_poolable_itm prototype, Object[] make_args, Object[] clear_args, int init_pool_len, int pool_max) {// NOTE: random IndexOutOfBounds errors in Get around free[--free_len] with free_len being -1; put member variable initialization within thread_lock to try to avoid; DATE:2014-09-21 + this.prototype = prototype; this.make_args = make_args; this.clear_args = clear_args; + this.pool_len = init_pool_len; this.pool_max = pool_max; + this.Clear_fast(); + } + public void Clear_safe() {synchronized (thread_lock) {Clear_fast();}} + public void Clear_fast() { + this.pool = new Gfo_poolable_itm[pool_len]; + for (int i = 0; i < pool_len; ++i) + pool[i] = prototype.Pool__make(i, make_args); + this.free = new int[pool_len]; + pool_next = free_len = 0; + } + public Gfo_poolable_itm Get_safe() {synchronized (thread_lock) {return Get_fast();}} + public Gfo_poolable_itm Get_fast() { + Gfo_poolable_itm rv = null; + int pool_idx = -1; + if (free_len > 0) { // free_itms in pool; use it + pool_idx = free[--free_len]; + rv = pool[pool_idx]; + } + else { // nothing in pool; take next + if (pool_next == pool_len) + Expand_pool(); + pool_idx = pool_next++; + rv = pool[pool_idx]; + if (rv == null) { + rv = prototype.Pool__make(pool_idx, make_args); + pool[pool_idx] = rv; + } + } + rv.Pool__clear(clear_args); // NOTE: ALWAYS call Clear when doing Get. caller may forget to call Clear, and reused bfr may have leftover bytes. unit tests will not catch, and difficult to spot in app + return rv; + } + public void Rls_safe(int idx) {synchronized (thread_lock) {Rls_safe(idx);}} + public void Rls_fast(int idx) { + if (idx == -1) throw Err_.new_wo_type("rls called on poolable that was not created by pool_mgr"); + int pool_idx = pool_next - 1; + if (idx == pool_idx) // in-sequence; decrement count + this.pool_next = pool_idx; + else { // out-of-sequence + if (free_len == pool_max) { // all used; assume entire pool released, but out of order +// Array_.Sort((Object[])free); +// for (int i = 0; i < pool_max; ++i) { +// if (i != free[i]) throw Err_.new_("pool", "available_list out of order", "contents", ""); +// } + for (int i = 0; i < free_len; ++i) + free[i] = 0; + free_len = 0; + } + else { // add to free pool + free[free_len] = idx; + ++free_len; + } + } + } + private void Expand_pool() { + // expand pool + int new_pool_len = pool_len == 0 ? 2 : pool_len * 2; + Gfo_poolable_itm[] new_pool = new Gfo_poolable_itm[new_pool_len]; + Array_.Copy_to(pool, 0, new_pool, 0, pool_len); + this.pool = new_pool; + this.pool_len = new_pool_len; + + // expand free to same len + int[] new_free = new int[pool_len]; + Array_.Copy_to(free, 0, new_free, 0, free_len); + this.free = new_free; + } + @gplx.Internal protected int[] Free() {return free;} private int[] free; private int free_len; + @gplx.Internal protected int Pool_len() {return pool_len;} +// public int Mgr_id() {return mgr_id;} private int mgr_id; +// public void Reset_if_gt(int v) { +// this.Clear(); // TODO: for now, just call clear +// } +// public void Clear_fail_check() { +// synchronized (thread_lock) { +// for (int i = 0; i < ary_max; i++) { +// Object itm = ary[i]; +// if (itm != null) { +// if (!itm.Mkr_idx_is_null()) throw Err_.new_wo_type("failed to clear bfr", "idx", Int_.To_str(i)); +// itm.Clear(); +// } +// ary[i] = null; +// } +// ary = Ary_empty; +// free = Int_.Ary_empty; +// free_len = 0; +// nxt_idx = ary_max = 0; +// } +// } +// public void Clear() { +// synchronized (thread_lock) { +// for (int i = 0; i < ary_max; i++) { +// Object itm = ary[i]; +// if (itm != null) itm.Clear(); +// ary[i] = null; +// } +// ary = Ary_empty; +// free = Int_.Ary_empty; +// free_len = 0; +// nxt_idx = ary_max = 0; +// } +// } +} diff --git a/400_xowa/src/gplx/core/threads/poolables/Gfo_poolable_mgr_tst.java b/400_xowa/src/gplx/core/threads/poolables/Gfo_poolable_mgr_tst.java new file mode 100644 index 000000000..74387b69d --- /dev/null +++ b/400_xowa/src/gplx/core/threads/poolables/Gfo_poolable_mgr_tst.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.core.threads.poolables; import gplx.*; import gplx.core.*; import gplx.core.threads.*; +import org.junit.*; +public class Gfo_poolable_mgr_tst { + private final Gfo_poolable_mgr_tstr tstr = new Gfo_poolable_mgr_tstr(); + @Before public void init() {tstr.Clear();} + @Test public void Get__one() { + tstr.Test__get(0); + tstr.Test__mgr__free(0, 0); + tstr.Test__pool__len(2); + } +} +class Gfo_poolable_mgr_tstr { + private final Gfo_poolable_mgr mgr = new Gfo_poolable_mgr(new Sample_poolable_itm(-1, Object_.Ary_empty), Object_.Ary("make"), Object_.Ary("clear"), 2, 8); + public void Clear() {mgr.Clear_fast();} + public void Test__get(int expd_idx) { + Sample_poolable_itm actl_itm = (Sample_poolable_itm)mgr.Get_fast(); + Tfds.Eq(expd_idx, actl_itm.Pool__idx(), "pool_idx"); + } + public void Test__mgr__free(int... expd) { + Tfds.Eq_ary(expd, mgr.Free(), "mgr.Free()"); + } + public void Test__pool__len(int expd) { + Tfds.Eq(expd, mgr.Pool_len(), "mgr.Pool_len()"); + } +} +class Sample_poolable_itm implements Gfo_poolable_itm { + public Sample_poolable_itm(int pool_idx, Object[] make_args) {this.pool_idx = pool_idx; this.pool__make_args = make_args;} + public int Pool__idx() {return pool_idx;} private final int pool_idx; + public Object[] Pool__make_args() {return pool__make_args;} private final Object[] pool__make_args; + public Object[] Pool__clear_args() {return pool__clear_args;} private Object[] pool__clear_args; + public void Pool__clear (Object[] args) {this.pool__clear_args = args;} + public Gfo_poolable_itm Pool__make (int idx, Object[] args) {return new Sample_poolable_itm(idx, args);} +} diff --git a/400_xowa/src/gplx/dbs/Db_attach_cmd.java b/400_xowa/src/gplx/dbs/Db_attach_cmd.java index ed4db2911..929094385 100644 --- a/400_xowa/src/gplx/dbs/Db_attach_cmd.java +++ b/400_xowa/src/gplx/dbs/Db_attach_cmd.java @@ -33,7 +33,7 @@ public class Db_attach_cmd { return this; } public void Exec() { - Gfo_usr_dlg usr_dlg = Gfo_usr_dlg_.I; + Gfo_usr_dlg usr_dlg = Gfo_usr_dlg_.Instance; if (diff_db) conn.Env_db_attach(attach_name, attach_url); conn.Txn_bgn(attach_name); // NOTE: BEGIN TRAN must occur after ATTACH else sqlite will throw error int len = sql_list.Count(); diff --git a/400_xowa/src/gplx/dbs/Db_attach_rdr.java b/400_xowa/src/gplx/dbs/Db_attach_rdr.java index 9e30c3907..be5178316 100644 --- a/400_xowa/src/gplx/dbs/Db_attach_rdr.java +++ b/400_xowa/src/gplx/dbs/Db_attach_rdr.java @@ -28,7 +28,7 @@ public class Db_attach_rdr { public void Attach() { try { if (diff_db) conn.Env_db_attach(attach_name, attach_url); - } catch (Exception e) {Err_.Noop(e); Gfo_usr_dlg_.I.Warn_many("", "", "db:failed to attach db; name=~{0} url=~{1}", attach_name, attach_url.Raw());} + } catch (Exception e) {Err_.Noop(e); Gfo_usr_dlg_.Instance.Warn_many("", "", "db:failed to attach db; name=~{0} url=~{1}", attach_name, attach_url.Raw());} } public Db_rdr Exec_as_rdr(String sql) { sql = String_.Replace(sql, "", diff_db ? attach_name + "." : ""); // replace with either "attach_db." or ""; diff --git a/400_xowa/src/gplx/dbs/cfgs/Db_cfg_hash.java b/400_xowa/src/gplx/dbs/cfgs/Db_cfg_hash.java index 994852a3f..0e0ad61e6 100644 --- a/400_xowa/src/gplx/dbs/cfgs/Db_cfg_hash.java +++ b/400_xowa/src/gplx/dbs/cfgs/Db_cfg_hash.java @@ -17,11 +17,11 @@ along with this program. If not, see . */ package gplx.dbs.cfgs; import gplx.*; import gplx.dbs.*; public class Db_cfg_hash { - private final String grp; private final Ordered_hash hash = Ordered_hash_.new_(); + private final String grp; private final Ordered_hash hash = Ordered_hash_.New(); public Db_cfg_hash(String grp) {this.grp = grp;} public int Len() {return hash.Count();} public Db_cfg_itm Get_at(int i) {return (Db_cfg_itm)hash.Get_at(i);} - public Db_cfg_itm Get(String key) { + public Db_cfg_itm Get_by(String key) { Db_cfg_itm rv = (Db_cfg_itm)hash.Get_by(key); return rv == null ? Db_cfg_itm.Empty : rv; } diff --git a/400_xowa/src/gplx/dbs/cfgs/Db_cfg_itm.java b/400_xowa/src/gplx/dbs/cfgs/Db_cfg_itm.java index a6347013d..53e1a309b 100644 --- a/400_xowa/src/gplx/dbs/cfgs/Db_cfg_itm.java +++ b/400_xowa/src/gplx/dbs/cfgs/Db_cfg_itm.java @@ -42,14 +42,14 @@ public class Db_cfg_itm { public static Db_cfg_itm new_str (String grp, String key, String val) {return new Db_cfg_itm(grp , key, val);} public static Db_cfg_itm new_bry (String key, byte[] val) {return new Db_cfg_itm(Grp_none , key, String_.new_u8(val));} public static Db_cfg_itm new_bry (String grp, String key, byte[] val) {return new Db_cfg_itm(grp , key, String_.new_u8(val));} - public static Db_cfg_itm new_int (String key, int val) {return new Db_cfg_itm(Grp_none , key, Int_.Xto_str(val));} - public static Db_cfg_itm new_int (String grp, String key, int val) {return new Db_cfg_itm(grp , key, Int_.Xto_str(val));} - public static Db_cfg_itm new_long (String key, long val) {return new Db_cfg_itm(Grp_none , key, Long_.Xto_str(val));} - public static Db_cfg_itm new_long (String grp, String key, long val) {return new Db_cfg_itm(grp , key, Long_.Xto_str(val));} + public static Db_cfg_itm new_int (String key, int val) {return new Db_cfg_itm(Grp_none , key, Int_.To_str(val));} + public static Db_cfg_itm new_int (String grp, String key, int val) {return new Db_cfg_itm(grp , key, Int_.To_str(val));} + public static Db_cfg_itm new_long (String key, long val) {return new Db_cfg_itm(Grp_none , key, Long_.To_str(val));} + public static Db_cfg_itm new_long (String grp, String key, long val) {return new Db_cfg_itm(grp , key, Long_.To_str(val));} public static Db_cfg_itm new_byte (String key, byte val) {return new Db_cfg_itm(Grp_none , key, Byte_.To_str(val));} public static Db_cfg_itm new_byte (String grp, String key, byte val) {return new Db_cfg_itm(grp , key, Byte_.To_str(val));} - public static Db_cfg_itm new_yn (String key, boolean val) {return new Db_cfg_itm(Grp_none , key, Yn.Xto_str(val));} - public static Db_cfg_itm new_yn (String grp, String key, boolean val) {return new Db_cfg_itm(grp , key, Yn.Xto_str(val));} + public static Db_cfg_itm new_yn (String key, boolean val) {return new Db_cfg_itm(Grp_none , key, Yn.To_str(val));} + public static Db_cfg_itm new_yn (String grp, String key, boolean val) {return new Db_cfg_itm(grp , key, Yn.To_str(val));} public static Db_cfg_itm new_DateAdp (String key, DateAdp val) {return new Db_cfg_itm(Grp_none , key, val.XtoStr_fmt_yyyyMMdd_HHmmss());} public static Db_cfg_itm new_DateAdp (String grp, String key, DateAdp val) {return new Db_cfg_itm(grp , key, val.XtoStr_fmt_yyyyMMdd_HHmmss());} public static Db_cfg_itm new_guid (String key, Guid_adp val) {return new Db_cfg_itm(Grp_none , key, val.To_str());} diff --git a/400_xowa/src/gplx/dbs/cfgs/Db_cfg_tbl.java b/400_xowa/src/gplx/dbs/cfgs/Db_cfg_tbl.java index ec7a4b28b..a78e35ccf 100644 --- a/400_xowa/src/gplx/dbs/cfgs/Db_cfg_tbl.java +++ b/400_xowa/src/gplx/dbs/cfgs/Db_cfg_tbl.java @@ -40,8 +40,8 @@ public class Db_cfg_tbl implements RlsAble { public void Delete_all() {conn.Stmt_delete(tbl_name, Db_meta_fld.Ary_empty).Exec_delete();} public void Insert_yn (String grp, String key, boolean val) {Insert_str(grp, key, val ? "y" : "n");} public void Insert_byte (String grp, String key, byte val) {Insert_str(grp, key, Byte_.To_str(val));} - public void Insert_int (String grp, String key, int val) {Insert_str(grp, key, Int_.Xto_str(val));} - public void Insert_long (String grp, String key, long val) {Insert_str(grp, key, Long_.Xto_str(val));} + public void Insert_int (String grp, String key, int val) {Insert_str(grp, key, Int_.To_str(val));} + public void Insert_long (String grp, String key, long val) {Insert_str(grp, key, Long_.To_str(val));} public void Insert_date (String grp, String key, DateAdp val) {Insert_str(grp, key, val.XtoStr_fmt_yyyyMMdd_HHmmss());} public void Insert_guid (String grp, String key, Guid_adp val) {Insert_str(grp, key, val.To_str());} public void Insert_bry (String grp, String key, byte[] val) {Insert_str(grp, key, String_.new_u8(val));} @@ -53,8 +53,8 @@ public class Db_cfg_tbl implements RlsAble { } public void Update_yn (String grp, String key, boolean val) {Update_str(grp, key, val ? "y" : "n");} public void Update_byte (String grp, String key, byte val) {Update_str(grp, key, Byte_.To_str(val));} - public void Update_int (String grp, String key, int val) {Update_str(grp, key, Int_.Xto_str(val));} - public void Update_long (String grp, String key, long val) {Update_str(grp, key, Long_.Xto_str(val));} + public void Update_int (String grp, String key, int val) {Update_str(grp, key, Int_.To_str(val));} + public void Update_long (String grp, String key, long val) {Update_str(grp, key, Long_.To_str(val));} public void Update_date (String grp, String key, DateAdp val) {Update_str(grp, key, val.XtoStr_fmt_yyyyMMdd_HHmmss());} public void Update_guid (String grp, String key, Guid_adp val) {Update_str(grp, key, val.To_str());} public void Update_bry (String grp, String key, byte[] val) {Update_str(grp, key, String_.new_u8(val));} @@ -63,7 +63,7 @@ public class Db_cfg_tbl implements RlsAble { stmt_update.Clear().Val_str(fld_val, val).Crt_str(fld_grp, grp).Crt_str(fld_key, key).Exec_update(); } public void Upsert_yn (String grp, String key, boolean val) {Upsert_str(grp, key, val ? "y" : "n");} - public void Upsert_int (String grp, String key, int val) {Upsert_str(grp, key, Int_.Xto_str(val));} + public void Upsert_int (String grp, String key, int val) {Upsert_str(grp, key, Int_.To_str(val));} public void Upsert_str (String grp, String key, String val) { String cur_val = this.Select_str_or(grp, key, null); if (cur_val == null) this.Insert_str(grp, key, val); @@ -103,6 +103,16 @@ public class Db_cfg_tbl implements RlsAble { finally {rdr.Rls();} return rv; } + public void Select_as_hash_bry(Hash_adp_bry rv, String grp) { + rv.Clear(); + Db_rdr rdr = conn.Stmt_select(tbl_name, flds, fld_grp).Crt_str(fld_grp, grp).Exec_select__rls_auto(); + try { + while (rdr.Move_next()) { + rv.Add(rdr.Read_bry_by_str(fld_key), rdr.Read_bry_by_str(fld_val)); + } + } + finally {rdr.Rls();} + } // NOTE: Assert guarantees that a value exists in database and returns it (Select + Insert); (1) String val = Assert('grp', 'key', 'val'); (2) Update('grp', 'key', 'val2'); public boolean Assert_yn (String grp, String key, boolean or) {String val = Select_str_or(grp, key, null) ; if (val == null) {Insert_yn (grp, key, or); return or;} return Parse_yn (grp, key, val);} public byte Assert_byte (String grp, String key, byte or) {String val = Select_str_or(grp, key, null) ; if (val == null) {Insert_byte (grp, key, or); return or;} return Parse_byte (grp, key, val);} diff --git a/400_xowa/src/gplx/dbs/metas/Schema_loader_mgr_.java b/400_xowa/src/gplx/dbs/metas/Schema_loader_mgr_.java index d56d67d52..bdc6015dd 100644 --- a/400_xowa/src/gplx/dbs/metas/Schema_loader_mgr_.java +++ b/400_xowa/src/gplx/dbs/metas/Schema_loader_mgr_.java @@ -26,7 +26,7 @@ class Schema_loader_mgr__null implements Schema_loader_mgr { } class Schema_loader_mgr__sqlite implements Schema_loader_mgr { public void Load(Schema_db_mgr db_mgr, Db_conn conn) { - Gfo_usr_dlg_.I.Log_many("", "", "db.schema.load.bgn: conn=~{0}", conn.Conn_info().Xto_api()); + Gfo_usr_dlg_.Instance.Log_many("", "", "db.schema.load.bgn: conn=~{0}", conn.Conn_info().Xto_api()); Meta_tbl_mgr tbl_mgr = db_mgr.Tbl_mgr(); Db_qry__select_in_tbl qry = Db_qry__select_in_tbl.new_("sqlite_master", String_.Ary_empty, String_.Ary("type", "name", "sql"), Db_qry__select_in_tbl.Order_by_null); Db_rdr rdr = conn.Stmt_new(qry).Exec_select__rls_auto(); @@ -46,6 +46,6 @@ class Schema_loader_mgr__sqlite implements Schema_loader_mgr { } } } finally {rdr.Rls();} - Gfo_usr_dlg_.I.Log_many("", "", "db.schema.load.end"); + Gfo_usr_dlg_.Instance.Log_many("", "", "db.schema.load.end"); } } diff --git a/400_xowa/src/gplx/dbs/metas/updates/Schema_update_cmd_.java b/400_xowa/src/gplx/dbs/metas/updates/Schema_update_cmd_.java index 820bff0bc..c38e3e051 100644 --- a/400_xowa/src/gplx/dbs/metas/updates/Schema_update_cmd_.java +++ b/400_xowa/src/gplx/dbs/metas/updates/Schema_update_cmd_.java @@ -29,7 +29,7 @@ class Schema_update_cmd__tbl_create implements Schema_update_cmd { public boolean Exec_is_done() {return exec_is_done;} private boolean exec_is_done; public void Exec(Schema_db_mgr db_mgr, Db_conn conn) { if (db_mgr.Tbl_mgr().Has(tbl_name)) return; - Gfo_usr_dlg_.I.Log_many("", "", "schema.tbl.create: tbl=~{0}", tbl_name); + Gfo_usr_dlg_.Instance.Log_many("", "", "schema.tbl.create: tbl=~{0}", tbl_name); Sqlite_engine_.Tbl_create(conn, tbl_name, tbl_sql); Sqlite_engine_.Idx_create(conn, tbl_idxs); exec_is_done = true; diff --git a/400_xowa/src/gplx/dbs/metas/updates/Schema_update_mgr.java b/400_xowa/src/gplx/dbs/metas/updates/Schema_update_mgr.java index e09cc3822..81079011f 100644 --- a/400_xowa/src/gplx/dbs/metas/updates/Schema_update_mgr.java +++ b/400_xowa/src/gplx/dbs/metas/updates/Schema_update_mgr.java @@ -25,7 +25,7 @@ public class Schema_update_mgr { Schema_update_cmd cmd = (Schema_update_cmd)cmds.Get_at(i); try {cmd.Exec(schema_mgr, conn);} catch (Exception e) { - Gfo_usr_dlg_.I.Warn_many("", "", "failed to run update cmd; name=~{0} err=~{1}", cmd.Name(), Err_.Message_gplx_full(e)); + Gfo_usr_dlg_.Instance.Warn_many("", "", "failed to run update cmd; name=~{0} err=~{1}", cmd.Name(), Err_.Message_gplx_full(e)); } } } diff --git a/400_xowa/src/gplx/fsdb/Fsdb_db_mgr_.java b/400_xowa/src/gplx/fsdb/Fsdb_db_mgr_.java index 5e13f3265..088ca4f79 100644 --- a/400_xowa/src/gplx/fsdb/Fsdb_db_mgr_.java +++ b/400_xowa/src/gplx/fsdb/Fsdb_db_mgr_.java @@ -21,13 +21,13 @@ public class Fsdb_db_mgr_ { public static Fsdb_db_mgr new_detect(Xow_wiki wiki, Io_url wiki_dir, Io_url file_dir) { Gfo_usr_dlg usr_dlg = Xoa_app_.Usr_dlg(); Io_url url = file_dir.GenSubFil(Fsdb_db_mgr__v1.Mnt_name); // EX: /xowa/file/en.wikipedia.org/wiki.mnt.sqlite3 - if (Db_conn_bldr.I.Exists(url)) { // NOTE: check v1 before v2; note that as of v2.5.4, v2 files are automatically created on new import; DATE:2015-06-09 + if (Db_conn_bldr.Instance.Exists(url)) { // NOTE: check v1 before v2; note that as of v2.5.4, v2 files are automatically created on new import; DATE:2015-06-09 usr_dlg.Log_many("", "", "fsdb.db_core.v1: url=~{0}", url.Raw()); usr_dlg.Log_many("", "", "fsdb.db_core.v1 exists: orig=~{0} abc=~{1} atr_a=~{2}, atr_b=~{3}" - , Db_conn_bldr.I.Exists(file_dir.GenSubFil(Fsdb_db_mgr__v1.Orig_name)) - , Db_conn_bldr.I.Exists(file_dir.GenSubFil_nest(Fsm_mnt_tbl.Mnt_name_main, Fsdb_db_mgr__v1.Abc_name)) - , Db_conn_bldr.I.Exists(file_dir.GenSubFil_nest(Fsm_mnt_tbl.Mnt_name_main, Fsdb_db_mgr__v1.Atr_name_v1a)) - , Db_conn_bldr.I.Exists(file_dir.GenSubFil_nest(Fsm_mnt_tbl.Mnt_name_main, Fsdb_db_mgr__v1.Atr_name_v1b)) + , Db_conn_bldr.Instance.Exists(file_dir.GenSubFil(Fsdb_db_mgr__v1.Orig_name)) + , Db_conn_bldr.Instance.Exists(file_dir.GenSubFil_nest(Fsm_mnt_tbl.Mnt_name_main, Fsdb_db_mgr__v1.Abc_name)) + , Db_conn_bldr.Instance.Exists(file_dir.GenSubFil_nest(Fsm_mnt_tbl.Mnt_name_main, Fsdb_db_mgr__v1.Atr_name_v1a)) + , Db_conn_bldr.Instance.Exists(file_dir.GenSubFil_nest(Fsm_mnt_tbl.Mnt_name_main, Fsdb_db_mgr__v1.Atr_name_v1b)) ); return new Fsdb_db_mgr__v1(file_dir); } @@ -41,15 +41,15 @@ public class Fsdb_db_mgr_ { } private static Fsdb_db_mgr load_or_null(Xowd_db_layout layout, Gfo_usr_dlg usr_dlg, Io_url wiki_dir, Xow_wiki wiki, String domain_str) { Io_url main_core_url = wiki_dir.GenSubFil(Fsdb_db_mgr__v2_bldr.Main_core_name(layout, domain_str)); - if (!Db_conn_bldr.I.Exists(main_core_url)) return null; + if (!Db_conn_bldr.Instance.Exists(main_core_url)) return null; usr_dlg.Log_many("", "", "fsdb.db_core.v2: type=~{0} url=~{1}", layout.Name(), main_core_url.Raw()); - Db_conn main_core_conn = Db_conn_bldr.I.Get(main_core_url); + Db_conn main_core_conn = Db_conn_bldr.Instance.Get(main_core_url); if (wiki.Data__core_mgr().Props().Layout_file().Tid_is_all()) return new Fsdb_db_mgr__v2(Fsdb_db_mgr__v2.Cfg__layout_file__get(main_core_conn), wiki_dir, new Fsdb_db_file(main_core_url, main_core_conn), new Fsdb_db_file(main_core_url, main_core_conn)); Io_url user_core_url = wiki_dir.GenSubFil(Fsdb_db_mgr__v2_bldr.Make_user_name(domain_str)); - if (!Db_conn_bldr.I.Exists(user_core_url)) // if user file does not exist, create it; needed b/c offline packages don't include file; DATE:2015-04-19 - Fsdb_db_mgr__v2_bldr.I.Make_core_file_user(wiki, user_core_url, user_core_url.NameAndExt(), main_core_url.NameAndExt()); - Db_conn user_core_conn = Db_conn_bldr.I.Get(user_core_url); + if (!Db_conn_bldr.Instance.Exists(user_core_url)) // if user file does not exist, create it; needed b/c offline packages don't include file; DATE:2015-04-19 + Fsdb_db_mgr__v2_bldr.Instance.Make_core_file_user(wiki, user_core_url, user_core_url.NameAndExt(), main_core_url.NameAndExt()); + Db_conn user_core_conn = Db_conn_bldr.Instance.Get(user_core_url); return new Fsdb_db_mgr__v2(Fsdb_db_mgr__v2.Cfg__layout_file__get(main_core_conn), wiki_dir, new Fsdb_db_file(main_core_url, main_core_conn), new Fsdb_db_file(user_core_url, user_core_conn)); } } diff --git a/400_xowa/src/gplx/fsdb/Fsdb_db_mgr__v1.java b/400_xowa/src/gplx/fsdb/Fsdb_db_mgr__v1.java index 7bd2bfbfc..51486e266 100644 --- a/400_xowa/src/gplx/fsdb/Fsdb_db_mgr__v1.java +++ b/400_xowa/src/gplx/fsdb/Fsdb_db_mgr__v1.java @@ -28,8 +28,8 @@ public class Fsdb_db_mgr__v1 implements Fsdb_db_mgr { this.mnt_file = get_db(file_dir.GenSubFil(Mnt_name)); // EX: /xowa/enwiki/wiki.mnt.sqlite3 this.abc_file__main = get_db(file_dir.GenSubFil_nest(Fsm_mnt_tbl.Mnt_name_main, Abc_name)); // EX: /xowa/enwiki/fsdb.main/fsdb.abc.sqlite3 this.atr_file__main = get_db(Get_atr_db_url(Bool_.Y, file_dir, Fsm_mnt_tbl.Mnt_name_main)); // EX: /xowa/enwiki/fsdb.main/fsdb.atr.00.sqlite3 - if (Db_conn_bldr.I.Get(file_dir.GenSubFil_nest(Fsm_mnt_tbl.Mnt_name_user, Abc_name)) == null) // user doesn't exist; create; DATE:2015-04-20 - Fsdb_db_mgr__v1_bldr.I.Make_core_dir(file_dir, Fsm_mnt_mgr.Mnt_idx_user, Fsm_mnt_tbl.Mnt_name_user); + if (Db_conn_bldr.Instance.Get(file_dir.GenSubFil_nest(Fsm_mnt_tbl.Mnt_name_user, Abc_name)) == null) // user doesn't exist; create; DATE:2015-04-20 + Fsdb_db_mgr__v1_bldr.Instance.Make_core_dir(file_dir, Fsm_mnt_mgr.Mnt_idx_user, Fsm_mnt_tbl.Mnt_name_user); this.abc_file__user = get_db(file_dir.GenSubFil_nest(Fsm_mnt_tbl.Mnt_name_user, Abc_name)); // EX: /xowa/enwiki/fsdb.user/fsdb.abc.sqlite3 this.atr_file__user = get_db(Get_atr_db_url(Bool_.N, file_dir, Fsm_mnt_tbl.Mnt_name_user)); // EX: /xowa/enwiki/fsdb.user/fsdb.atr.00.sqlite3 this.orig_tbl_ary = new Xof_orig_tbl[] {new Xof_orig_tbl(orig_file.Conn(), this.File__schema_is_1())}; @@ -43,13 +43,13 @@ public class Fsdb_db_mgr__v1 implements Fsdb_db_mgr { public Fsdb_db_file File__atr_file__at(int mnt_id) {return mnt_id == Fsm_mnt_mgr.Mnt_idx_main ? atr_file__main : atr_file__user;} public Fsdb_db_file File__bin_file__at(int mnt_id, int bin_id, String file_name) { boolean mnt_is_main = mnt_id == Fsm_mnt_mgr.Mnt_idx_main; - String bin_name = (mnt_is_main ? bin_prefix__main : bin_prefix__user) + Int_.Xto_str_pad_bgn_zero(bin_id, 4) + ".sqlite3"; + String bin_name = (mnt_is_main ? bin_prefix__main : bin_prefix__user) + Int_.To_str_pad_bgn_zero(bin_id, 4) + ".sqlite3"; String mnt_name = mnt_is_main ? Fsm_mnt_tbl.Mnt_name_main : Fsm_mnt_tbl.Mnt_name_user; Io_url url = file_dir.GenSubFil_nest(mnt_name, bin_name); // EX: /xowa/enwiki/fsdb.main/fsdb.bin.0000.sqlite3 - Db_conn conn = Db_conn_bldr.I.Get(url); + Db_conn conn = Db_conn_bldr.Instance.Get(url); if (conn == null) { // NOTE: handle wikis with missing bin files; EX:sv.w missing bin.0010; DATE:2015-07-04 gplx.xowa.Xoa_app_.Usr_dlg().Warn_many("", "", "fsdb.v1: missing db; db=~{0}", url.Raw()); - return Fsdb_db_mgr__v1_bldr.I.new_db__bin(url); + return Fsdb_db_mgr__v1_bldr.Instance.new_db__bin(url); } else return new Fsdb_db_file(url, conn); @@ -57,27 +57,27 @@ public class Fsdb_db_mgr__v1 implements Fsdb_db_mgr { public Fsdb_db_file File__bin_file__new(int mnt_id, String file_name) { String mnt_name = mnt_id == Fsm_mnt_mgr.Mnt_idx_main ? Fsm_mnt_tbl.Mnt_name_main : Fsm_mnt_tbl.Mnt_name_user; Io_url url = file_dir.GenSubFil_nest(mnt_name, file_name); // EX: /xowa/enwiki/fsdb.main/fsdb.bin.0000.sqlite3 - Db_conn conn = Db_conn_bldr.I.New(url); + Db_conn conn = Db_conn_bldr.Instance.New(url); Fsd_bin_tbl bin_tbl = new Fsd_bin_tbl(conn, Bool_.Y); bin_tbl.Create_tbl(); return new Fsdb_db_file(url, conn); } private Io_url Get_atr_db_url(boolean main, Io_url file_dir, String mnt_name) { Io_url rv = null; rv = file_dir.GenSubFil_nest(mnt_name, Atr_name_v1a); - if (Io_mgr.I.ExistsFil(rv)) { + if (Io_mgr.Instance.ExistsFil(rv)) { if (main) bin_prefix__main = "fsdb.bin#"; else bin_prefix__user = "fsdb.bin#"; return rv; } - rv = file_dir.GenSubFil_nest(mnt_name, Atr_name_v1b); if (Io_mgr.I.ExistsFil(rv)) return rv; + rv = file_dir.GenSubFil_nest(mnt_name, Atr_name_v1b); if (Io_mgr.Instance.ExistsFil(rv)) return rv; throw Err_.new_wo_type("could not find atr file", "dir", file_dir.Raw(), "mnt", mnt_name); } public static final String Orig_name = "wiki.orig#00.sqlite3", Mnt_name = "wiki.mnt.sqlite3", Abc_name = "fsdb.abc.sqlite3" , Atr_name_v1a = "fsdb.atr#00.sqlite3", Atr_name_v1b = "fsdb.atr.00.sqlite3"; private static Fsdb_db_file get_db(Io_url file) { - Db_conn conn = Db_conn_bldr.I.Get(file); + Db_conn conn = Db_conn_bldr.Instance.Get(file); if (conn == null) conn = Db_conn_.Noop; return new Fsdb_db_file(file, conn); } @@ -102,12 +102,12 @@ class Fsdb_db_mgr__v1_bldr { // make bin_fil new_db__bin(mnt_dir.GenSubFil("fsdb.bin.0000.sqlite3")); } - private Fsdb_db_file new_db(Io_url url) {return new Fsdb_db_file(url, Db_conn_bldr.I.New(url));} + private Fsdb_db_file new_db(Io_url url) {return new Fsdb_db_file(url, Db_conn_bldr.Instance.New(url));} public Fsdb_db_file new_db__bin(Io_url url) { Fsdb_db_file rv = new_db(url); Fsd_bin_tbl bin_tbl = new Fsd_bin_tbl(rv.Conn(), true); // NOTE: schema_is_1 is always true b/c it is in Fsdb_db_mgr__v1_bldr bin_tbl.Create_tbl(); return rv; } - public static final Fsdb_db_mgr__v1_bldr I = new Fsdb_db_mgr__v1_bldr(); Fsdb_db_mgr__v1_bldr() {} + public static final Fsdb_db_mgr__v1_bldr Instance = new Fsdb_db_mgr__v1_bldr(); Fsdb_db_mgr__v1_bldr() {} } diff --git a/400_xowa/src/gplx/fsdb/Fsdb_db_mgr__v2.java b/400_xowa/src/gplx/fsdb/Fsdb_db_mgr__v2.java index 09134af7f..472c8d6a7 100644 --- a/400_xowa/src/gplx/fsdb/Fsdb_db_mgr__v2.java +++ b/400_xowa/src/gplx/fsdb/Fsdb_db_mgr__v2.java @@ -40,9 +40,9 @@ public class Fsdb_db_mgr__v2 implements Fsdb_db_mgr { if (mnt_id == Fsm_mnt_mgr.Mnt_idx_user) return file_user_core; if (layout.Tid_is_all_or_few()) return file_main_core; Io_url url = wiki_dir.GenSubFil(file_name); - Db_conn conn = Db_conn_bldr.I.Get(url); + Db_conn conn = Db_conn_bldr.Instance.Get(url); if (conn == null) { // bin file deleted or not downloaded; use Noop Db_conn and continue; do not fail; DATE:2015-04-16 - Gfo_usr_dlg_.I.Warn_many("", "", "fsdb.bin:file does not exist; url=~{0}", url); + Gfo_usr_dlg_.Instance.Warn_many("", "", "fsdb.bin:file does not exist; url=~{0}", url); conn = Db_conn_.Noop; } return new Fsdb_db_file(url, conn); @@ -51,7 +51,7 @@ public class Fsdb_db_mgr__v2 implements Fsdb_db_mgr { if (mnt_id == Fsm_mnt_mgr.Mnt_idx_user) return Fsdb_db_mgr__v2_bldr.Make_bin_tbl(file_user_core); if (layout.Tid_is_all_or_few()) return Fsdb_db_mgr__v2_bldr.Make_bin_tbl(file_main_core); Io_url url = wiki_dir.GenSubFil(file_name); - Db_conn conn = Db_conn_bldr.I.New(url); + Db_conn conn = Db_conn_bldr.Instance.New(url); Db_cfg_tbl cfg_tbl = new Db_cfg_tbl(conn, Cfg_tbl_name); cfg_tbl.Create_tbl(); return Fsdb_db_mgr__v2_bldr.Make_bin_tbl(new Fsdb_db_file(url, conn)); } diff --git a/400_xowa/src/gplx/fsdb/Fsdb_db_mgr__v2_bldr.java b/400_xowa/src/gplx/fsdb/Fsdb_db_mgr__v2_bldr.java index 9671fbed9..b321bdb34 100644 --- a/400_xowa/src/gplx/fsdb/Fsdb_db_mgr__v2_bldr.java +++ b/400_xowa/src/gplx/fsdb/Fsdb_db_mgr__v2_bldr.java @@ -28,18 +28,18 @@ public class Fsdb_db_mgr__v2_bldr { Io_url main_core_url = wiki_dir.GenSubFil(main_core_name); Io_url user_core_url = wiki_dir.GenSubFil(user_core_name); if (delete_if_exists) { - Db_conn_bldr.I.Get_or_noop(main_core_url).Rls_conn(); - Db_conn_bldr.I.Get_or_noop(user_core_url).Rls_conn(); - Io_mgr.I.DeleteFil(main_core_url); - Io_mgr.I.DeleteFil(user_core_url); + Db_conn_bldr.Instance.Get_or_noop(main_core_url).Rls_conn(); + Db_conn_bldr.Instance.Get_or_noop(user_core_url).Rls_conn(); + Io_mgr.Instance.DeleteFil(main_core_url); + Io_mgr.Instance.DeleteFil(user_core_url); } - Fsdb_db_file main_core_file = Io_mgr.I.ExistsFil(main_core_url) ? Load_core_file(main_core_url) : Make_core_file_main(wiki, main_core_url, main_core_name, layout); - Fsdb_db_file user_core_file = Io_mgr.I.ExistsFil(user_core_url) ? Load_core_file(user_core_url) : Make_core_file_user(wiki, user_core_url, user_core_name, main_core_name); + Fsdb_db_file main_core_file = Io_mgr.Instance.ExistsFil(main_core_url) ? Load_core_file(main_core_url) : Make_core_file_main(wiki, main_core_url, main_core_name, layout); + Fsdb_db_file user_core_file = Io_mgr.Instance.ExistsFil(user_core_url) ? Load_core_file(user_core_url) : Make_core_file_user(wiki, user_core_url, user_core_name, main_core_name); return new Fsdb_db_mgr__v2(layout, wiki_dir, main_core_file, user_core_file); } - private Fsdb_db_file Load_core_file(Io_url url) {return new Fsdb_db_file(url, Db_conn_bldr.I.Get(url));} + private Fsdb_db_file Load_core_file(Io_url url) {return new Fsdb_db_file(url, Db_conn_bldr.Instance.Get(url));} private Fsdb_db_file Make_core_file_main(Xow_wiki wiki, Io_url main_core_url, String main_core_name, Xowd_db_layout layout) { - Db_conn conn = layout.Tid_is_all() ? Db_conn_bldr.I.Get(main_core_url) : Db_conn_bldr.I.New(main_core_url); // if all, use existing (assumes same file name); else, create new + Db_conn conn = layout.Tid_is_all() ? Db_conn_bldr.Instance.Get(main_core_url) : Db_conn_bldr.Instance.New(main_core_url); // if all, use existing (assumes same file name); else, create new conn.Txn_bgn("fsdb__core_file"); Fsdb_db_file rv = Make_core_file(main_core_url, conn, schema_is_1, Fsm_mnt_mgr.Mnt_idx_main); if (!layout.Tid_is_all()) // do not make cfg data if all @@ -49,7 +49,7 @@ public class Fsdb_db_mgr__v2_bldr { return rv; } public Fsdb_db_file Make_core_file_user(Xow_wiki wiki, Io_url user_core_url, String user_file_name, String main_core_name) { // always create file; do not create mnt_tbl; - Db_conn conn = Db_conn_bldr.I.New(user_core_url); + Db_conn conn = Db_conn_bldr.Instance.New(user_core_url); conn.Txn_bgn("fsdb__core_user"); Fsdb_db_file rv = Make_core_file(user_core_url, conn, schema_is_1, Fsm_mnt_mgr.Mnt_idx_user); Fsm_bin_tbl dbb_tbl = new Fsm_bin_tbl(conn, schema_is_1, Fsm_mnt_mgr.Mnt_idx_user); dbb_tbl.Insert(0, user_file_name); @@ -109,5 +109,5 @@ public class Fsdb_db_mgr__v2_bldr { private static String Main_core_name_lot(String wiki_domain) {return wiki_domain + "-file-core.xowa";} // EX: en.wikipedia.org-file-core.xowa public static String Make_user_name(String wiki_domain) {return wiki_domain + "-file-user.xowa";} // EX: en.wikipedia.org-file-user.xowa private static final boolean schema_is_1 = false; - public static final Fsdb_db_mgr__v2_bldr I = new Fsdb_db_mgr__v2_bldr(); Fsdb_db_mgr__v2_bldr() {} + public static final Fsdb_db_mgr__v2_bldr Instance = new Fsdb_db_mgr__v2_bldr(); Fsdb_db_mgr__v2_bldr() {} } diff --git a/400_xowa/src/gplx/fsdb/data/Fsd_bin_tbl.java b/400_xowa/src/gplx/fsdb/data/Fsd_bin_tbl.java index 7fe617c65..af587648d 100644 --- a/400_xowa/src/gplx/fsdb/data/Fsd_bin_tbl.java +++ b/400_xowa/src/gplx/fsdb/data/Fsd_bin_tbl.java @@ -67,7 +67,7 @@ public class Fsd_bin_tbl implements RlsAble { byte[] rv = Select(owner_id, url); if (rv == null) return false; if (saved_in_parts.Val_y()) return true; - Io_mgr.I.SaveFilBry(url, rv); + Io_mgr.Instance.SaveFilBry(url, rv); return true; } private byte[] Select(int owner_id, Io_url url) { diff --git a/400_xowa/src/gplx/fsdb/data/Fsd_fil_itm.java b/400_xowa/src/gplx/fsdb/data/Fsd_fil_itm.java index b3f1b465b..23abc38ef 100644 --- a/400_xowa/src/gplx/fsdb/data/Fsd_fil_itm.java +++ b/400_xowa/src/gplx/fsdb/data/Fsd_fil_itm.java @@ -29,6 +29,6 @@ public class Fsd_fil_itm { public int Ext_id() {return ext_id;} private int ext_id; public static final Fsd_fil_itm Null = null; public static byte[] Gen_cache_key(Bry_bfr bfr, int dir_id, byte[] name) { - return bfr.Add_int_variable(dir_id).Add_byte_pipe().Add(name).Xto_bry_and_clear(); + return bfr.Add_int_variable(dir_id).Add_byte_pipe().Add(name).To_bry_and_clear(); } } diff --git a/400_xowa/src/gplx/fsdb/data/Fsd_thm_itm.java b/400_xowa/src/gplx/fsdb/data/Fsd_thm_itm.java index 780204cfb..8822220d0 100644 --- a/400_xowa/src/gplx/fsdb/data/Fsd_thm_itm.java +++ b/400_xowa/src/gplx/fsdb/data/Fsd_thm_itm.java @@ -57,5 +57,5 @@ class Fsdb_thm_itm_sorter implements gplx.lists.ComparerAble { comp = Double_.Compare (lhs.Time() , rhs.Time()); if (comp != CompareAble_.Same) return comp; // sort by increasing time return Int_.Compare (lhs.Page() , rhs.Page()); // sort by increasing page } - public static final Fsdb_thm_itm_sorter I = new Fsdb_thm_itm_sorter(); Fsdb_thm_itm_sorter() {} + public static final Fsdb_thm_itm_sorter Instance = new Fsdb_thm_itm_sorter(); Fsdb_thm_itm_sorter() {} } diff --git a/400_xowa/src/gplx/fsdb/data/Fsd_thm_tbl.java b/400_xowa/src/gplx/fsdb/data/Fsd_thm_tbl.java index 13b6bfdbd..912238533 100644 --- a/400_xowa/src/gplx/fsdb/data/Fsd_thm_tbl.java +++ b/400_xowa/src/gplx/fsdb/data/Fsd_thm_tbl.java @@ -130,7 +130,7 @@ public class Fsd_thm_tbl implements RlsAble { public static final String Hash_null = "", Modified_null_str = ""; public static boolean Match_nearest(List_adp list, Fsd_thm_itm thm, boolean schema_thm_page) { int len = list.Count(); if (len == 0) return Bool_.N; - list.Sort_by(Fsdb_thm_itm_sorter.I); + list.Sort_by(Fsdb_thm_itm_sorter.Instance); int thm_w = thm.W(), thm_page = thm.Page(); double thm_time = thm.Time(); Fsd_thm_itm max = null; for (int i = 0; i < len; ++i) { diff --git a/400_xowa/src/gplx/fsdb/meta/Fsm_cfg_mgr.java b/400_xowa/src/gplx/fsdb/meta/Fsm_cfg_mgr.java index e1ad594c7..d6e1b724e 100644 --- a/400_xowa/src/gplx/fsdb/meta/Fsm_cfg_mgr.java +++ b/400_xowa/src/gplx/fsdb/meta/Fsm_cfg_mgr.java @@ -24,10 +24,10 @@ public class Fsm_cfg_mgr { } public void Ctor_by_load() { Db_cfg_hash hash = Grps_get_or_load(Grp_core); - this.next_id = hash.Get(Key_next_id).To_int_or(-1); if (next_id == -1) throw Err_.new_wo_type("next_id not found in cfg", "url", tbl.Conn().Conn_info().Xto_api()); - this.schema_thm_page = hash.Get(Key_schema_thm_page).To_yn_or_n(); - this.patch__next_id = hash.Get(Key_patch__next_id).To_yn_or_n(); - this.patch__page_gt_1 = hash.Get(Key_patch__page_gt_1).To_yn_or_n(); + this.next_id = hash.Get_by(Key_next_id).To_int_or(-1); if (next_id == -1) throw Err_.new_wo_type("next_id not found in cfg", "url", tbl.Conn().Conn_info().Xto_api()); + this.schema_thm_page = hash.Get_by(Key_schema_thm_page).To_yn_or_n(); + this.patch__next_id = hash.Get_by(Key_patch__next_id).To_yn_or_n(); + this.patch__page_gt_1 = hash.Get_by(Key_patch__page_gt_1).To_yn_or_n(); } public Db_cfg_tbl Tbl() {return tbl;} public int Next_id() {return next_id++;} private int next_id = 1; diff --git a/400_xowa/src/gplx/fsdb/meta/Fsm_mnt_mgr.java b/400_xowa/src/gplx/fsdb/meta/Fsm_mnt_mgr.java index 57667570b..8b763af0a 100644 --- a/400_xowa/src/gplx/fsdb/meta/Fsm_mnt_mgr.java +++ b/400_xowa/src/gplx/fsdb/meta/Fsm_mnt_mgr.java @@ -31,8 +31,8 @@ public class Fsm_mnt_mgr implements GfoInvkAble { } this.insert_idx = cfg_tbl.Select_int(Cfg_grp_core, Cfg_key_mnt_insert_idx); Db_cfg_hash cfg_hash = this.Mnts__get_main().Cfg_mgr().Grps_get_or_load(Xof_fsdb_mgr_cfg.Grp_xowa); - boolean use_thumb_w = cfg_hash.Get(Xof_fsdb_mgr_cfg.Key_upright_use_thumb_w).To_yn_or_n(); - boolean fix_default = cfg_hash.Get(Xof_fsdb_mgr_cfg.Key_upright_fix_default).To_yn_or_n(); + boolean use_thumb_w = cfg_hash.Get_by(Xof_fsdb_mgr_cfg.Key_upright_use_thumb_w).To_yn_or_n(); + boolean fix_default = cfg_hash.Get_by(Xof_fsdb_mgr_cfg.Key_upright_fix_default).To_yn_or_n(); this.patch_upright_tid = Xof_patch_upright_tid_.Merge(use_thumb_w, fix_default); } public int Mnts__len() {return mnt_ary_len;} diff --git a/400_xowa/src/gplx/gfui/Gfui_bnd_parser.java b/400_xowa/src/gplx/gfui/Gfui_bnd_parser.java index 0a2c14125..7968bbf5a 100644 --- a/400_xowa/src/gplx/gfui/Gfui_bnd_parser.java +++ b/400_xowa/src/gplx/gfui/Gfui_bnd_parser.java @@ -94,7 +94,7 @@ public class Gfui_bnd_parser { Gfui_bnd_tkn tkn = (Gfui_bnd_tkn)tkns.Get_at(i); tkn.Write(tmp_bfr, !src_is_gfui); } - return tmp_bfr.Xto_str_and_clear(); + return tmp_bfr.To_str_and_clear(); } private void Process_sym(boolean src_is_gfui, boolean is_numeric, Gfui_bnd_tkn sym_tkn, int itm_bgn, int itm_end) { Hash_adp_bry regy = src_is_gfui ? gfui_regy : norm_regy; diff --git a/400_xowa/src/gplx/ios/BinaryHeap_Io_line_rdr_tst.java b/400_xowa/src/gplx/ios/BinaryHeap_Io_line_rdr_tst.java index f05373acd..1403e19e3 100644 --- a/400_xowa/src/gplx/ios/BinaryHeap_Io_line_rdr_tst.java +++ b/400_xowa/src/gplx/ios/BinaryHeap_Io_line_rdr_tst.java @@ -26,12 +26,12 @@ public class BinaryHeap_Io_line_rdr_tst { } } class BinaryHeap_Io_line_rdr_fxt { - BinaryHeap_Io_line_rdr heap = new BinaryHeap_Io_line_rdr(Io_sort_split_itm_sorter._); int file_total; + BinaryHeap_Io_line_rdr heap = new BinaryHeap_Io_line_rdr(Io_sort_split_itm_sorter.Instance); int file_total; public BinaryHeap_Io_line_rdr_fxt Add(String... ary) { file_total = ary.length; for (int i = 0; i < file_total; i++) { Io_url url = Io_url_.mem_fil_("mem/fil_" + ary[i] + ".txt"); - Io_mgr.I.SaveFilStr(url, ary[i]); + Io_mgr.Instance.SaveFilStr(url, ary[i]); Io_line_rdr stream = new Io_line_rdr(Gfo_usr_dlg_.Test(), url); stream.Read_next(); heap.Add(stream); diff --git a/400_xowa/src/gplx/ios/Io_buffer_rdr.java b/400_xowa/src/gplx/ios/Io_buffer_rdr.java index 12061fb79..fec60d8a8 100644 --- a/400_xowa/src/gplx/ios/Io_buffer_rdr.java +++ b/400_xowa/src/gplx/ios/Io_buffer_rdr.java @@ -23,7 +23,7 @@ public class Io_buffer_rdr implements RlsAble { this.rdr = rdr; this.url = url; if (bfr_len <= 0) throw Err_.new_wo_type("bfr_len must be > 0", "bfr_len", bfr_len); bfr = new byte[bfr_len]; this.bfr_len = bfr_len; - IoItmFil fil = Io_mgr.I.QueryFil(url); if (!fil.Exists()) throw Err_.new_wo_type("fil does not exist", "url", url); + IoItmFil fil = Io_mgr.Instance.QueryFil(url); if (!fil.Exists()) throw Err_.new_wo_type("fil does not exist", "url", url); fil_len = fil.Size(); fil_pos = 0; fil_eof = false; @@ -61,7 +61,7 @@ public class Io_buffer_rdr implements RlsAble { } @gplx.Internal protected void Dump_to_file(int bgn, int len, String url_str, String msg) { // DBG: String text = String_.new_u8__by_len(bfr, bgn, len); - Io_mgr.I.AppendFilStr(Io_url_.new_any_(url_str), msg + text + "\n"); + Io_mgr.Instance.AppendFilStr(Io_url_.new_any_(url_str), msg + text + "\n"); } public static Io_buffer_rdr new_(Io_stream_rdr rdr, int bfr_len) { Io_buffer_rdr rv = new Io_buffer_rdr(rdr, rdr.Url(), bfr_len); diff --git a/400_xowa/src/gplx/ios/Io_buffer_rdr_tst.java b/400_xowa/src/gplx/ios/Io_buffer_rdr_tst.java index 02ec3c8dc..d76ede2fe 100644 --- a/400_xowa/src/gplx/ios/Io_buffer_rdr_tst.java +++ b/400_xowa/src/gplx/ios/Io_buffer_rdr_tst.java @@ -19,7 +19,7 @@ package gplx.ios; import gplx.*; import org.junit.*; import gplx.ios.*; public class Io_buffer_rdr_tst { @Before public void init() { - Io_mgr.I.InitEngine_mem(); + Io_mgr.Instance.InitEngine_mem(); fil = Io_url_.mem_fil_("mem/byteStreamRdr.txt"); ini_Write("0123456789"); rdr = Io_buffer_rdr.new_(Io_stream_rdr_.file_(fil), 4); @@ -52,7 +52,7 @@ public class Io_buffer_rdr_tst { rdr.Bfr_load_all(); // NOTE: change to zip_rdrs make eof detection difficult; force another load to ensure that file_pos goes past file_len tst_Bfr("8", "9").tst_ReadDone(true); } - private void ini_Write(String s) {Io_mgr.I.SaveFilStr(fil, s);} + private void ini_Write(String s) {Io_mgr.Instance.SaveFilStr(fil, s);} Io_buffer_rdr_tst tst_Bfr(String... expdAry) { String[] actlAry = new String[rdr.Bfr_len()]; for (int i = 0; i < actlAry.length; i++) diff --git a/400_xowa/src/gplx/ios/Io_line_rdr.java b/400_xowa/src/gplx/ios/Io_line_rdr.java index 755eef9cc..78d993c92 100644 --- a/400_xowa/src/gplx/ios/Io_line_rdr.java +++ b/400_xowa/src/gplx/ios/Io_line_rdr.java @@ -137,7 +137,7 @@ public class Io_line_rdr { Io_url url = urls[url_idx]; usr_dlg.Prog_many(GRP_KEY, "load", "loading dump file: ~{0}", url.NameAndExt()); if (file_skip_line0) { - byte[] stream_bry = Io_mgr.I.LoadFilBry(url); + byte[] stream_bry = Io_mgr.Instance.LoadFilBry(url); int stream_bry_len = stream_bry.length; int nl_pos = Bry_find_.Find_fwd(stream_bry, Byte_ascii.Nl, 0, stream_bry_len); if (nl_pos == Bry_.NotFound) @@ -147,7 +147,7 @@ public class Io_line_rdr { stream = gplx.ios.IoStream_.ary_(stream_bry); } else { - stream = Io_mgr.I.OpenStreamRead(url); + stream = Io_mgr.Instance.OpenStreamRead(url); } file_pos = 0; file_len = stream.Len(); file_done = false; diff --git a/400_xowa/src/gplx/ios/Io_line_rdr_tst.java b/400_xowa/src/gplx/ios/Io_line_rdr_tst.java index 481c475af..105fae21a 100644 --- a/400_xowa/src/gplx/ios/Io_line_rdr_tst.java +++ b/400_xowa/src/gplx/ios/Io_line_rdr_tst.java @@ -55,7 +55,7 @@ class Io_line_rdr_fxt { public Io_line_rdr_fxt File_lines_(int count) { for (int i = 0; i < count; i++) tmp.Add_int_fixed(i, 2).Add_byte_nl(); - Io_mgr.I.SaveFilBry(rdr.Urls()[0], tmp.Xto_bry_and_clear()); + Io_mgr.Instance.SaveFilBry(rdr.Urls()[0], tmp.To_bry_and_clear()); return this; } // public Io_url[] Src_fils() {return src_fils;} public Io_line_rdr_fxt Src_fils_(Io_url[] v) {src_fils = v; return this;} Io_url[] src_fils; @@ -69,14 +69,14 @@ class Io_line_rdr_fxt { public Io_line_rdr_fxt File_lines_pipe_(int count) { for (int i = 0; i < count; i++) tmp.Add_int_fixed(i, 2).Add_byte(Byte_ascii.Pipe).Add_byte_nl(); - Io_mgr.I.SaveFilBry(rdr.Urls()[0], tmp.Xto_bry_and_clear()); + Io_mgr.Instance.SaveFilBry(rdr.Urls()[0], tmp.To_bry_and_clear()); return this; } public Io_line_rdr_fxt File_lines_(int fil_idx, int bgn, int end) { for (int i = bgn; i < end; i++) tmp.Add_int_fixed(i, 2).Add_byte_nl(); - Io_mgr.I.SaveFilBry(rdr.Urls()[fil_idx], tmp.Xto_bry_and_clear()); + Io_mgr.Instance.SaveFilBry(rdr.Urls()[fil_idx], tmp.To_bry_and_clear()); return this; } public Io_line_rdr_fxt Clear() {rdr.Clear(); return this;} diff --git a/400_xowa/src/gplx/ios/Io_sort.java b/400_xowa/src/gplx/ios/Io_sort.java index df6715930..08aa36003 100644 --- a/400_xowa/src/gplx/ios/Io_sort.java +++ b/400_xowa/src/gplx/ios/Io_sort.java @@ -19,7 +19,7 @@ package gplx.ios; import gplx.*; import gplx.lists.*; public class Io_sort { public Io_sort Memory_max_(int v) {memory_max = v; return this;} private int memory_max = Io_mgr.Len_kb; - public Io_url[] Split(Gfo_usr_dlg usr_dlg, Io_url_gen src_fil_gen, Io_url_gen trg_fil_gen, Io_line_rdr_key_gen key_gen) {return Split(usr_dlg, src_fil_gen, trg_fil_gen, Io_sort_split_itm_sorter._, key_gen);} + public Io_url[] Split(Gfo_usr_dlg usr_dlg, Io_url_gen src_fil_gen, Io_url_gen trg_fil_gen, Io_line_rdr_key_gen key_gen) {return Split(usr_dlg, src_fil_gen, trg_fil_gen, Io_sort_split_itm_sorter.Instance, key_gen);} public Io_url[] Split(Gfo_usr_dlg usr_dlg, Io_url_gen src_fil_gen, Io_url_gen trg_fil_gen, ComparerAble row_comparer, Io_line_rdr_key_gen key_gen) { Io_line_rdr rdr = new Io_line_rdr(usr_dlg, src_fil_gen.Prv_urls()).Load_len_(4 * Io_mgr.Len_kb).Key_gen_(key_gen); // NOTE: do not set load_len to memory_max; only want to load in increments List_adp rv = List_adp_.new_(); @@ -70,11 +70,11 @@ public class Io_sort { for (int i = 0; i < len; i++) { Io_sort_split_itm itm = (Io_sort_split_itm)list.Get_at(i); int add_len = itm.Row_end() - itm.Row_bgn(); - if ((tmp.Len() + add_len) > Const_bfr_max) Io_mgr.I.AppendFilBfr(url, tmp); + if ((tmp.Len() + add_len) > Const_bfr_max) Io_mgr.Instance.AppendFilBfr(url, tmp); tmp.Add_mid(itm.Bfr(), itm.Row_bgn(), itm.Row_end()); itm.Rls(); } - Io_mgr.I.AppendFilBfr(url, tmp); + Io_mgr.Instance.AppendFilBfr(url, tmp); list.Clear(); url_list.Add(url); } @@ -84,7 +84,7 @@ public class Io_sort { int default_load_len = memory_max / urls_len + 1; for (int i = 0; i < urls_len; i++) { Io_url url = urls[i]; - int file_len = (int)Io_mgr.I.QueryFil(url).Size(); + int file_len = (int)Io_mgr.Instance.QueryFil(url).Size(); int load_len = file_len < default_load_len ? file_len : default_load_len; // PERF.NOTE: 32 MB is default, but if file is 1 MB (or else) only create a bfr for 1 MB; using 32 MB will throw OutOfMemory on -Xmx 64m; DATE:20130112 Io_line_rdr stream_bfr = new Io_line_rdr(usr_dlg, url).Key_gen_(key_gen).Load_len_(load_len); boolean read = stream_bfr.Read_next(); diff --git a/400_xowa/src/gplx/ios/Io_sort_filCmd.java b/400_xowa/src/gplx/ios/Io_sort_filCmd.java index bca417549..e0aa8822c 100644 --- a/400_xowa/src/gplx/ios/Io_sort_filCmd.java +++ b/400_xowa/src/gplx/ios/Io_sort_filCmd.java @@ -25,5 +25,5 @@ class Io_sort_filCmd_null implements Io_sort_filCmd { public void Bfr_add(Io_line_rdr stream) {} public void Fil_bgn(Io_line_rdr stream) {} public void Fil_end() {} - public static final Io_sort_filCmd_null _ = new Io_sort_filCmd_null(); Io_sort_filCmd_null() {} + public static final Io_sort_filCmd_null Instance = new Io_sort_filCmd_null(); Io_sort_filCmd_null() {} } diff --git a/400_xowa/src/gplx/ios/Io_sort_fil_basic.java b/400_xowa/src/gplx/ios/Io_sort_fil_basic.java index 2e43eaa01..6f2a7fb4f 100644 --- a/400_xowa/src/gplx/ios/Io_sort_fil_basic.java +++ b/400_xowa/src/gplx/ios/Io_sort_fil_basic.java @@ -31,7 +31,7 @@ public class Io_sort_fil_basic implements Io_sort_cmd { // 123|bgn|end|1 private void Flush() { Io_url url = url_gen.Nxt_url(); usr_dlg.Prog_one(GRP_KEY, "make", "making: ~{0}", url.NameAndExt()); - Io_mgr.I.SaveFilBry(url, bfr.Bfr(), bfr.Len()); + Io_mgr.Instance.SaveFilBry(url, bfr.Bfr(), bfr.Len()); bfr.Clear(); } static final String GRP_KEY = "xowa.bldr.io_sort"; diff --git a/400_xowa/src/gplx/ios/Io_sort_misc_tst.java b/400_xowa/src/gplx/ios/Io_sort_misc_tst.java index 4a959627f..326565eea 100644 --- a/400_xowa/src/gplx/ios/Io_sort_misc_tst.java +++ b/400_xowa/src/gplx/ios/Io_sort_misc_tst.java @@ -47,7 +47,7 @@ public class Io_sort_misc_tst { } Io_line_rdr new_Io_line_rdr(String url_str, String text) { Io_url url = Io_url_.mem_fil_(url_str); - Io_mgr.I.SaveFilStr(url, text); + Io_mgr.Instance.SaveFilStr(url, text); Io_line_rdr rv = new Io_line_rdr(Gfo_usr_dlg_.Test(), url); rv.Read_next(); return rv; diff --git a/400_xowa/src/gplx/ios/Io_sort_split_itm_sorter.java b/400_xowa/src/gplx/ios/Io_sort_split_itm_sorter.java index a704980cb..c96d1a85d 100644 --- a/400_xowa/src/gplx/ios/Io_sort_split_itm_sorter.java +++ b/400_xowa/src/gplx/ios/Io_sort_split_itm_sorter.java @@ -22,5 +22,5 @@ public class Io_sort_split_itm_sorter implements gplx.lists.ComparerAble { // Tfds.Write(String_.new_u8(lhs.Bfr(), lhs.Key_bgn(), lhs.Key_end()), String_.new_u8(rhs.Bfr(), rhs.Key_bgn(), rhs.Key_end())); return Bry_.Compare(lhs.Bfr(), lhs.Key_bgn(), lhs.Key_end(), rhs.Bfr(), rhs.Key_bgn(), rhs.Key_end()); } - public static final Io_sort_split_itm_sorter _ = new Io_sort_split_itm_sorter(); Io_sort_split_itm_sorter() {} + public static final Io_sort_split_itm_sorter Instance = new Io_sort_split_itm_sorter(); Io_sort_split_itm_sorter() {} } diff --git a/400_xowa/src/gplx/ios/Io_sort_tst.java b/400_xowa/src/gplx/ios/Io_sort_tst.java index 055f0dfe0..b56fc14c9 100644 --- a/400_xowa/src/gplx/ios/Io_sort_tst.java +++ b/400_xowa/src/gplx/ios/Io_sort_tst.java @@ -27,40 +27,40 @@ public class Io_sort_tst { class Io_sort_fxt { Io_sort externalSort = new Io_sort().Memory_max_(Io_mgr.Len_kb); String_bldr sb = String_bldr_.new_(); - public Io_sort_fxt Clear() {Io_mgr.I.InitEngine_mem(); return this;} + public Io_sort_fxt Clear() {Io_mgr.Instance.InitEngine_mem(); return this;} public Io_sort_fxt Memory_max_(int v) {externalSort.Memory_max_(v); return this;} public Io_sort_fxt Src_(String v) {src = v; return this;} private String src; public Io_sort_fxt Sorted_(String v) {sorted = v; return this;} private String sorted; public void tst() { Io_url src_url = Io_url_.mem_fil_("mem/src.txt"); Io_url trg_url = Io_url_.mem_fil_("mem/trg.txt"); - Io_mgr.I.DeleteFil(src_url); Io_mgr.I.DeleteFil(trg_url); + Io_mgr.Instance.DeleteFil(src_url); Io_mgr.Instance.DeleteFil(trg_url); - Io_mgr.I.SaveFilStr(src_url, src); + Io_mgr.Instance.SaveFilStr(src_url, src); Gfo_usr_dlg usr_dlg = Gfo_usr_dlg_.Test(); Io_url_gen src_fil_gen = Io_url_gen_.fil_(src_url); Io_url[] tmp_url_ary = externalSort.Split(usr_dlg, src_fil_gen, Io_url_gen_.dir_(src_url.OwnerDir()), Io_line_rdr_key_gen_.first_pipe); Io_sort_fil_basic cmd = new Io_sort_fil_basic(usr_dlg, Io_url_gen_.fil_(trg_url), Io_mgr.Len_kb); - externalSort.Merge(usr_dlg, tmp_url_ary, Io_sort_split_itm_sorter._, Io_line_rdr_key_gen_.first_pipe, cmd); + externalSort.Merge(usr_dlg, tmp_url_ary, Io_sort_split_itm_sorter.Instance, Io_line_rdr_key_gen_.first_pipe, cmd); - String actl = Io_mgr.I.LoadFilStr(trg_url); + String actl = Io_mgr.Instance.LoadFilStr(trg_url); Tfds.Eq_ary_str(String_.SplitLines_nl(sorted), String_.SplitLines_nl(actl)); } public String GenRandom(int rows, int pad) { List_adp list = List_adp_.new_(); for (int i = 0; i < rows; i++) - list.Add(Int_.Xto_str_pad_bgn_zero(i, pad) + "|"); + list.Add(Int_.To_str_pad_bgn_zero(i, pad) + "|"); list.Shuffle(); for (int i = 0; i < rows; i++) { String itm = (String)list.Get_at(i); sb.Add(itm).Add_char_nl(); } - return sb.Xto_str_and_clear(); + return sb.To_str_and_clear(); } public String GenOrdered(int rows, int pad) { for (int i = 0; i < rows; i++) - sb.Add(Int_.Xto_str_pad_bgn_zero(i, pad) + "|" + "\n"); - return sb.Xto_str_and_clear(); + sb.Add(Int_.To_str_pad_bgn_zero(i, pad) + "|" + "\n"); + return sb.To_str_and_clear(); } } diff --git a/400_xowa/src/gplx/ios/Io_url_gen_.java b/400_xowa/src/gplx/ios/Io_url_gen_.java index 62af6ae60..35457c177 100644 --- a/400_xowa/src/gplx/ios/Io_url_gen_.java +++ b/400_xowa/src/gplx/ios/Io_url_gen_.java @@ -25,21 +25,21 @@ class Io_url_gen_dir implements Io_url_gen { public String Fmt() {return fmt;} public Io_url_gen_dir Fmt_(String v) {fmt = v; return this;} private String fmt = "{0}.csv"; public int Fmt_digits() {return fmt_digits;} public Io_url_gen_dir Fmt_digits_(int v) {fmt_digits = v; return this;} private int fmt_digits = 10; public Io_url Cur_url() {return cur_url;} Io_url cur_url; - public Io_url Nxt_url() {cur_url = dir.GenSubFil(String_.Format(fmt, Int_.Xto_str_pad_bgn_zero(idx++, fmt_digits))); return cur_url;} private int idx = 0; + public Io_url Nxt_url() {cur_url = dir.GenSubFil(String_.Format(fmt, Int_.To_str_pad_bgn_zero(idx++, fmt_digits))); return cur_url;} private int idx = 0; public Io_url[] Prv_urls() { Io_url[] rv = new Io_url[idx]; for (int i = 0; i < idx; i++) { - rv[i] = dir.GenSubFil(String_.Format(fmt, Int_.Xto_str_pad_bgn_zero(i, fmt_digits))); + rv[i] = dir.GenSubFil(String_.Format(fmt, Int_.To_str_pad_bgn_zero(i, fmt_digits))); } return rv; } - public void Del_all() {if (Io_mgr.I.ExistsDir(dir)) Io_mgr.I.DeleteDirDeep(dir);} + public void Del_all() {if (Io_mgr.Instance.ExistsDir(dir)) Io_mgr.Instance.DeleteDirDeep(dir);} public Io_url_gen_dir(Io_url dir) {this.dir = dir;} Io_url dir; } class Io_url_gen_fil implements Io_url_gen { public Io_url Cur_url() {return cur_url;} Io_url cur_url; public Io_url Nxt_url() {return cur_url;} public Io_url[] Prv_urls() {return new Io_url[]{cur_url};} - public void Del_all() {Io_mgr.I.DeleteFil_args(cur_url).MissingFails_off().Exec();} + public void Del_all() {Io_mgr.Instance.DeleteFil_args(cur_url).MissingFails_off().Exec();} public Io_url_gen_fil(Io_url fil) {this.cur_url = fil;} } diff --git a/400_xowa/src/gplx/ios/Io_zip_mgr_base.java b/400_xowa/src/gplx/ios/Io_zip_mgr_base.java index 1517e8c9f..a4d4281eb 100644 --- a/400_xowa/src/gplx/ios/Io_zip_mgr_base.java +++ b/400_xowa/src/gplx/ios/Io_zip_mgr_base.java @@ -20,9 +20,9 @@ import java.io.*; import java.util.zip.*; public class Io_zip_mgr_base implements Io_zip_mgr { public void Zip_fil(Io_url src_fil, Io_url trg_fil) { - byte[] src_bry = Io_mgr.I.LoadFilBry(src_fil); + byte[] src_bry = Io_mgr.Instance.LoadFilBry(src_fil); byte[] trg_bry = Zip_bry(src_bry, 0, src_bry.length); - Io_mgr.I.SaveFilBry(trg_fil, trg_bry); + Io_mgr.Instance.SaveFilBry(trg_fil, trg_bry); } public void Zip_dir(Io_url src_dir, Io_url trg_fil) { try { @@ -56,7 +56,7 @@ public class Io_zip_mgr_base implements Io_zip_mgr { } catch(IOException e) {throw Err_.new_exc(e, "io", "error duing zip", "src", zip_path);} } private Io_url[] Zip_dir__get_subs(Io_url url) { - return Io_mgr.I.QueryDir_args(url).DirInclude_().ExecAsUrlAry(); + return Io_mgr.Instance.QueryDir_args(url).DirInclude_().ExecAsUrlAry(); } public byte[] Zip_bry(byte[] src, int bgn, int len) { ByteArrayInputStream src_stream = new ByteArrayInputStream(src, bgn, len); @@ -90,7 +90,7 @@ public class Io_zip_mgr_base implements Io_zip_mgr { public void Unzip_to_dir(Io_url src_fil, Io_url trg_dir) { byte[] buffer = new byte[4096]; try{ - Io_mgr.I.CreateDirIfAbsent(trg_dir); + Io_mgr.Instance.CreateDirIfAbsent(trg_dir); ZipInputStream zip_strm = new ZipInputStream(new FileInputStream(src_fil.Raw())); ZipEntry zip_eny = zip_strm.getNextEntry(); @@ -98,9 +98,9 @@ public class Io_zip_mgr_base implements Io_zip_mgr { String itm_name = zip_eny.getName(); if (Op_sys.Cur().Tid_is_wnt()) itm_name = String_.Replace(itm_name, "/", "\\"); Io_url itm_url = Io_url_.new_any_(trg_dir.GenSubFil(itm_name).Raw()); - Io_mgr.I.CreateDirIfAbsent(itm_url.OwnerDir()); // make sure owner dir exists + Io_mgr.Instance.CreateDirIfAbsent(itm_url.OwnerDir()); // make sure owner dir exists if (itm_url.Type_fil()) { - Io_mgr.I.SaveFilStr_args(itm_url, "").Exec(); + Io_mgr.Instance.SaveFilStr_args(itm_url, "").Exec(); File itm_file = new File(itm_url.Raw()); FileOutputStream itm_strm = new FileOutputStream(itm_file); int len; @@ -115,5 +115,5 @@ public class Io_zip_mgr_base implements Io_zip_mgr { } catch(IOException e) {throw Err_.new_exc(e, "io", "error duing unzip", "src", src_fil.Raw(), "trg", trg_dir.Raw());} } byte[] tmp = new byte[4096]; int tmpLen = 4096; - public static final Io_zip_mgr _ = new Io_zip_mgr_base(); + public static final Io_zip_mgr Instance = new Io_zip_mgr_base(); } diff --git a/400_xowa/src/gplx/ios/Io_zip_mgr_mok.java b/400_xowa/src/gplx/ios/Io_zip_mgr_mok.java index 375551371..7a4668641 100644 --- a/400_xowa/src/gplx/ios/Io_zip_mgr_mok.java +++ b/400_xowa/src/gplx/ios/Io_zip_mgr_mok.java @@ -18,9 +18,9 @@ along with this program. If not, see . package gplx.ios; import gplx.*; public class Io_zip_mgr_mok implements Io_zip_mgr { public void Zip_fil(Io_url src_fil, Io_url trg_fil) { - byte[] src_bry = Io_mgr.I.LoadFilBry(src_fil); + byte[] src_bry = Io_mgr.Instance.LoadFilBry(src_fil); byte[] zip_bry = Zip_bry(src_bry, 0, src_bry.length); - Io_mgr.I.SaveFilBry(trg_fil, zip_bry); + Io_mgr.Instance.SaveFilBry(trg_fil, zip_bry); } public void Zip_dir(Io_url src_dir, Io_url trg_fil) {} public byte[] Zip_bry(byte[] src, int bgn, int len) {return Bry_.Add(Bry_zipped, Bry_.Mid(src, bgn, len));} @@ -32,5 +32,5 @@ public class Io_zip_mgr_mok implements Io_zip_mgr { } public void Unzip_to_dir(Io_url src_fil, Io_url trg_dir) {} private static final byte[] Bry_zipped = Bry_.new_a7("zipped:"); - public static final Io_zip_mgr_mok _ = new Io_zip_mgr_mok(); Io_zip_mgr_mok() {} + public static final Io_zip_mgr_mok Instance = new Io_zip_mgr_mok(); Io_zip_mgr_mok() {} } diff --git a/400_xowa/src/gplx/ios/Io_zip_mgr_tst.java b/400_xowa/src/gplx/ios/Io_zip_mgr_tst.java index beb64b255..55e92fc68 100644 --- a/400_xowa/src/gplx/ios/Io_zip_mgr_tst.java +++ b/400_xowa/src/gplx/ios/Io_zip_mgr_tst.java @@ -22,7 +22,7 @@ public class Io_zip_mgr_tst { Zip_unzip_tst("abcdefghijklmnopqrstuvwxyz"); } private void Zip_unzip_tst(String s) { - Io_zip_mgr zip_mgr = Io_zip_mgr_base._; + Io_zip_mgr zip_mgr = Io_zip_mgr_base.Instance; byte[] src = Bry_.new_a7(s); byte[] zip = zip_mgr.Zip_bry(src, 0, src.length); byte[] unz = zip_mgr.Unzip_bry(zip, 0, zip.length); diff --git a/400_xowa/src/gplx/langs/dsvs/Dsv_fld_parser_.java b/400_xowa/src/gplx/langs/dsvs/Dsv_fld_parser_.java index fafb57994..5245287b7 100644 --- a/400_xowa/src/gplx/langs/dsvs/Dsv_fld_parser_.java +++ b/400_xowa/src/gplx/langs/dsvs/Dsv_fld_parser_.java @@ -17,8 +17,8 @@ along with this program. If not, see . */ package gplx.langs.dsvs; import gplx.*; import gplx.langs.*; public class Dsv_fld_parser_ { - public static final Dsv_fld_parser Bry_parser = Dsv_fld_parser_bry._; - public static final Dsv_fld_parser Int_parser = Dsv_fld_parser_int._; + public static final Dsv_fld_parser Bry_parser = Dsv_fld_parser_bry.Instance; + public static final Dsv_fld_parser Int_parser = Dsv_fld_parser_int.Instance; public static final Dsv_fld_parser Line_parser__comment_is_pipe = new Dsv_fld_parser_line(Byte_ascii.Pipe); public static Err err_fld_unhandled(Dsv_fld_parser parser, Dsv_wkr_base wkr, int fld_idx, byte[] src, int bgn, int end) { throw Err_.new_wo_type("fld unhandled", "parser", Type_adp_.NameOf_obj(parser), "wkr", Type_adp_.NameOf_obj(wkr), "fld_idx", fld_idx, "val", String_.new_u8(src, bgn, end)).Trace_ignore_add_1_(); @@ -80,7 +80,7 @@ class Dsv_fld_parser_bry implements Dsv_fld_parser { ++pos; } } - public static final Dsv_fld_parser_bry _ = new Dsv_fld_parser_bry(); Dsv_fld_parser_bry() {} + public static final Dsv_fld_parser_bry Instance = new Dsv_fld_parser_bry(); Dsv_fld_parser_bry() {} } class Dsv_fld_parser_int implements Dsv_fld_parser { private byte fld_dlm = Byte_ascii.Pipe, row_dlm = Byte_ascii.Nl; @@ -110,5 +110,5 @@ class Dsv_fld_parser_int implements Dsv_fld_parser { ++pos; } } - public static final Dsv_fld_parser_int _ = new Dsv_fld_parser_int(); Dsv_fld_parser_int() {} + public static final Dsv_fld_parser_int Instance = new Dsv_fld_parser_int(); Dsv_fld_parser_int() {} } diff --git a/400_xowa/src/gplx/langs/dsvs/Dsv_tbl_parser.java b/400_xowa/src/gplx/langs/dsvs/Dsv_tbl_parser.java index 38963b8c8..bf8374270 100644 --- a/400_xowa/src/gplx/langs/dsvs/Dsv_tbl_parser.java +++ b/400_xowa/src/gplx/langs/dsvs/Dsv_tbl_parser.java @@ -18,7 +18,7 @@ along with this program. If not, see . package gplx.langs.dsvs; import gplx.*; import gplx.langs.*; public class Dsv_tbl_parser implements GfoInvkAble, RlsAble { private Dsv_wkr_base mgr; - private Dsv_fld_parser[] fld_parsers = new Dsv_fld_parser[2]; + private Dsv_fld_parser[] fld_parsers = new Dsv_fld_parser[2]; private int fld_parsers_len = 2; public byte[] Src() {return src;} private byte[] src; public int Fld_bgn() {return fld_bgn;} private int fld_bgn = 0; public int Fld_idx() {return fld_idx;} private int fld_idx = 0; @@ -30,7 +30,7 @@ public class Dsv_tbl_parser implements GfoInvkAble, RlsAble { public void Init(Dsv_wkr_base mgr, Dsv_fld_parser... fld_parsers) { this.mgr = mgr; this.fld_parsers = fld_parsers; - int fld_parsers_len = fld_parsers.length; + this.fld_parsers_len = fld_parsers.length; for (int i = 0; i < fld_parsers_len; i++) fld_parsers[i].Init(fld_dlm, row_dlm); } @@ -50,10 +50,10 @@ public class Dsv_tbl_parser implements GfoInvkAble, RlsAble { fld_idx = 0; } public void Parse(byte[] src) { + int src_len = src.length; if (src_len == 0) return; // NOTE: do not process if empty; note that loop below will process once for empty row this.src = src; - int src_len = src.length; int pos = 0; - while (pos < src_len) { + while (true) { if (fld_idx == 0 && skip_blank_lines) { // row committed; skip blank lines while (pos < src_len) { if (src[pos] == row_dlm) { @@ -64,12 +64,16 @@ public class Dsv_tbl_parser implements GfoInvkAble, RlsAble { break; } } + if (fld_idx == fld_parsers_len) break; Dsv_fld_parser fld_parser = fld_parsers[fld_idx]; pos = fld_parser.Parse(this, mgr, src, pos, src_len, fld_idx, fld_bgn); + if ( pos > src_len // pos is now fully past src_len; exit + || pos == src_len && fld_idx == 0 // last pos but fld_idx > 0; do one more iteration which will "commit row; EX: 2 fields and src of "a|"; EOS should close out row + ) break; } } public void Rls() { - src = null; fld_parsers = null; mgr = null; + src = null; fld_parsers = null; mgr = null; fld_parsers_len = 0; } public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { if (ctx.Match(k, Invk_load_by_str)) Parse(m.ReadBry("v")); diff --git a/400_xowa/src/gplx/langs/dsvs/Dsv_tbl_parser_int_tst.java b/400_xowa/src/gplx/langs/dsvs/Dsv_tbl_parser_int_tst.java index e18321865..7b68d27df 100644 --- a/400_xowa/src/gplx/langs/dsvs/Dsv_tbl_parser_int_tst.java +++ b/400_xowa/src/gplx/langs/dsvs/Dsv_tbl_parser_int_tst.java @@ -34,7 +34,7 @@ class Mok_int_itm implements To_str_able { private String fld_0; private int fld_1, fld_2; public Mok_int_itm(String fld_0, int fld_1, int fld_2) {this.fld_0 = fld_0; this.fld_1 = fld_1; this.fld_2 = fld_2;} - public String To_str() {return String_.Concat_with_str("|", fld_0, Int_.Xto_str(fld_1), Int_.Xto_str(fld_2));} + public String To_str() {return String_.Concat_with_str("|", fld_0, Int_.To_str(fld_1), Int_.To_str(fld_2));} } class Mok_int_mgr extends Mok_mgr_base { public void Clear() {itms.Clear();} @@ -42,7 +42,7 @@ class Mok_int_mgr extends Mok_mgr_base { private String fld_0; private int fld_1, fld_2; @Override public Dsv_fld_parser[] Fld_parsers() { - return new Dsv_fld_parser[] {Dsv_fld_parser_bry._, Dsv_fld_parser_int._, Dsv_fld_parser_int._}; + return new Dsv_fld_parser[] {Dsv_fld_parser_bry.Instance, Dsv_fld_parser_int.Instance, Dsv_fld_parser_int.Instance}; } @Override public boolean Write_bry(Dsv_tbl_parser parser, int fld_idx, byte[] src, int bgn, int end) { switch (fld_idx) { diff --git a/400_xowa/src/gplx/langs/dsvs/Dsv_tbl_parser_str_tst.java b/400_xowa/src/gplx/langs/dsvs/Dsv_tbl_parser_str_tst.java index 67d44c6b7..e7e53b014 100644 --- a/400_xowa/src/gplx/langs/dsvs/Dsv_tbl_parser_str_tst.java +++ b/400_xowa/src/gplx/langs/dsvs/Dsv_tbl_parser_str_tst.java @@ -53,6 +53,13 @@ public class Dsv_tbl_parser_str_tst { , fxt.itm_str_("b") ); } + @Test public void Incomplete_row_2() { // PURPOSE: handle multiple incomplete cells + fxt .Test_load(String_.Concat_lines_nl_skip_last + ( "a|") + , fxt.mgr_str_(3) + , fxt.itm_str_("a", "") + ); + } } abstract class Mok_mgr_base extends Dsv_wkr_base { public abstract To_str_able[] Itms(); diff --git a/400_xowa/src/gplx/langs/gfss/Gfs_lxr.java b/400_xowa/src/gplx/langs/gfs/Gfs_lxr.java similarity index 86% rename from 400_xowa/src/gplx/langs/gfss/Gfs_lxr.java rename to 400_xowa/src/gplx/langs/gfs/Gfs_lxr.java index e47b6950f..ac7d7b3dc 100644 --- a/400_xowa/src/gplx/langs/gfss/Gfs_lxr.java +++ b/400_xowa/src/gplx/langs/gfs/Gfs_lxr.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.langs.gfss; import gplx.*; import gplx.langs.*; +package gplx.langs.gfs; import gplx.*; import gplx.langs.*; interface Gfs_lxr { int Lxr_tid(); int Process(Gfs_parser_ctx ctx, int bgn, int end); @@ -45,7 +45,7 @@ class Gfs_lxr_whitespace implements Gfs_lxr { } return rv; } - public static final Gfs_lxr_whitespace _ = new Gfs_lxr_whitespace(); Gfs_lxr_whitespace() {} + public static final Gfs_lxr_whitespace Instance = new Gfs_lxr_whitespace(); Gfs_lxr_whitespace() {} } class Gfs_lxr_comment_flat implements Gfs_lxr { public Gfs_lxr_comment_flat(byte[] bgn_bry, byte[] end_bry) { @@ -89,7 +89,7 @@ class Gfs_lxr_identifier implements Gfs_lxr { if (rv == Gfs_lxr_.Rv_eos) ctx.Process_eos(); // eos return rv; } - public static final Gfs_lxr_identifier _ = new Gfs_lxr_identifier(); Gfs_lxr_identifier() {} + public static final Gfs_lxr_identifier Instance = new Gfs_lxr_identifier(); Gfs_lxr_identifier() {} } class Gfs_lxr_semic implements Gfs_lxr { public int Lxr_tid() {return Gfs_lxr_.Tid_semic;} @@ -103,7 +103,7 @@ class Gfs_lxr_semic implements Gfs_lxr { } return end; } - public static final Gfs_lxr_semic _ = new Gfs_lxr_semic(); Gfs_lxr_semic() {} + public static final Gfs_lxr_semic Instance = new Gfs_lxr_semic(); Gfs_lxr_semic() {} } class Gfs_lxr_dot implements Gfs_lxr { public int Lxr_tid() {return Gfs_lxr_.Tid_dot;} @@ -115,7 +115,7 @@ class Gfs_lxr_dot implements Gfs_lxr { } return end; } - public static final Gfs_lxr_dot _ = new Gfs_lxr_dot(); Gfs_lxr_dot() {} + public static final Gfs_lxr_dot Instance = new Gfs_lxr_dot(); Gfs_lxr_dot() {} } class Gfs_lxr_paren_bgn implements Gfs_lxr { public int Lxr_tid() {return Gfs_lxr_.Tid_paren_bgn;} @@ -126,7 +126,7 @@ class Gfs_lxr_paren_bgn implements Gfs_lxr { } return end; } - public static final Gfs_lxr_paren_bgn _ = new Gfs_lxr_paren_bgn(); Gfs_lxr_paren_bgn() {} + public static final Gfs_lxr_paren_bgn Instance = new Gfs_lxr_paren_bgn(); Gfs_lxr_paren_bgn() {} } class Gfs_lxr_paren_end implements Gfs_lxr { public int Lxr_tid() {return Gfs_lxr_.Tid_paren_end;} @@ -139,7 +139,7 @@ class Gfs_lxr_paren_end implements Gfs_lxr { } return end; } - public static final Gfs_lxr_paren_end _ = new Gfs_lxr_paren_end(); Gfs_lxr_paren_end() {} + public static final Gfs_lxr_paren_end Instance = new Gfs_lxr_paren_end(); Gfs_lxr_paren_end() {} } class Gfs_lxr_quote implements Gfs_lxr { public Gfs_lxr_quote(byte[] bgn_bry, byte[] end_bry) { @@ -167,7 +167,7 @@ class Gfs_lxr_quote implements Gfs_lxr { break; } } - ctx.Make_atr_by_bry(lxr_bgn + bgn_bry_len, end_pos, bfr.Xto_bry_and_clear()); + ctx.Make_atr_by_bry(lxr_bgn + bgn_bry_len, end_pos, bfr.To_bry_and_clear()); } else ctx.Make_atr(lxr_bgn + bgn_bry_len, end_pos); @@ -184,7 +184,7 @@ class Gfs_lxr_curly_bgn implements Gfs_lxr { } return end; } - public static final Gfs_lxr_curly_bgn _ = new Gfs_lxr_curly_bgn(); Gfs_lxr_curly_bgn() {} + public static final Gfs_lxr_curly_bgn Instance = new Gfs_lxr_curly_bgn(); Gfs_lxr_curly_bgn() {} } class Gfs_lxr_curly_end implements Gfs_lxr { public int Lxr_tid() {return Gfs_lxr_.Tid_curly_end;} @@ -192,7 +192,7 @@ class Gfs_lxr_curly_end implements Gfs_lxr { ctx.Stack_pop(bgn); return end; } - public static final Gfs_lxr_curly_end _ = new Gfs_lxr_curly_end(); Gfs_lxr_curly_end() {} + public static final Gfs_lxr_curly_end Instance = new Gfs_lxr_curly_end(); Gfs_lxr_curly_end() {} } class Gfs_lxr_equal implements Gfs_lxr { public int Lxr_tid() {return Gfs_lxr_.Tid_eq;} @@ -200,7 +200,7 @@ class Gfs_lxr_equal implements Gfs_lxr { ctx.Make_nde(bgn, end).Op_tid_(Gfs_nde.Op_tid_assign); return end; } - public static final Gfs_lxr_equal _ = new Gfs_lxr_equal(); Gfs_lxr_equal() {} + public static final Gfs_lxr_equal Instance = new Gfs_lxr_equal(); Gfs_lxr_equal() {} } class Gfs_lxr_comma implements Gfs_lxr { public int Lxr_tid() {return Gfs_lxr_.Tid_comma;} @@ -210,5 +210,5 @@ class Gfs_lxr_comma implements Gfs_lxr { } return end; } - public static final Gfs_lxr_comma _ = new Gfs_lxr_comma(); Gfs_lxr_comma() {} + public static final Gfs_lxr_comma Instance = new Gfs_lxr_comma(); Gfs_lxr_comma() {} } diff --git a/400_xowa/src/gplx/langs/gfss/Gfs_lxr_.java b/400_xowa/src/gplx/langs/gfs/Gfs_lxr_.java similarity index 95% rename from 400_xowa/src/gplx/langs/gfss/Gfs_lxr_.java rename to 400_xowa/src/gplx/langs/gfs/Gfs_lxr_.java index 8f532c2ea..e0ae95beb 100644 --- a/400_xowa/src/gplx/langs/gfss/Gfs_lxr_.java +++ b/400_xowa/src/gplx/langs/gfs/Gfs_lxr_.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.langs.gfss; import gplx.*; import gplx.langs.*; +package gplx.langs.gfs; import gplx.*; import gplx.langs.*; class Gfs_lxr_ { public static final int Rv_init = -1, Rv_null = -2, Rv_eos = -3, Rv_lxr = -4; public static final int Tid_identifier = 1, Tid_dot = 2, Tid_semic = 3, Tid_paren_bgn = 4, Tid_paren_end = 5, Tid_curly_bgn = 6, Tid_curly_end = 7, Tid_quote = 8, Tid_comma = 9, Tid_whitespace = 10, Tid_comment = 11, Tid_eq = 12; diff --git a/400_xowa/src/gplx/langs/gfss/Gfs_msg_bldr.java b/400_xowa/src/gplx/langs/gfs/Gfs_msg_bldr.java similarity index 85% rename from 400_xowa/src/gplx/langs/gfss/Gfs_msg_bldr.java rename to 400_xowa/src/gplx/langs/gfs/Gfs_msg_bldr.java index e850a4d5d..9922c530a 100644 --- a/400_xowa/src/gplx/langs/gfss/Gfs_msg_bldr.java +++ b/400_xowa/src/gplx/langs/gfs/Gfs_msg_bldr.java @@ -15,16 +15,16 @@ 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.langs.gfss; import gplx.*; import gplx.langs.*; +package gplx.langs.gfs; import gplx.*; import gplx.langs.*; public class Gfs_msg_bldr implements GfoMsgParser { - Gfs_parser parser = new Gfs_parser(); + private final Gfs_parser parser = new Gfs_parser(); public GfoMsg ParseToMsg(String s) {return Bld(s);} public GfoMsg Bld(String src) {return Bld(Bry_.new_u8(src));} public GfoMsg Bld(byte[] src) { Gfs_nde nde = parser.Parse(src); return Bld_msg(src, nde); } - GfoMsg Bld_msg(byte[] src, Gfs_nde nde) { + private GfoMsg Bld_msg(byte[] src, Gfs_nde nde) { boolean op_is_assign = (nde.Op_tid() == Gfs_nde.Op_tid_assign); String name = String_.new_u8(nde.Name_bry(src)); if (op_is_assign) name += Tkn_mutator; @@ -44,6 +44,6 @@ public class Gfs_msg_bldr implements GfoMsgParser { } return rv; } - public static final Gfs_msg_bldr _ = new Gfs_msg_bldr(); Gfs_msg_bldr() {} + public static final Gfs_msg_bldr Instance = new Gfs_msg_bldr(); Gfs_msg_bldr() {} public static final String Tkn_mutator = "_"; } diff --git a/400_xowa/src/gplx/langs/gfss/Gfs_msg_bldr_tst.java b/400_xowa/src/gplx/langs/gfs/Gfs_msg_bldr_tst.java similarity index 92% rename from 400_xowa/src/gplx/langs/gfss/Gfs_msg_bldr_tst.java rename to 400_xowa/src/gplx/langs/gfs/Gfs_msg_bldr_tst.java index 3ed2ec52b..6e96d5bc3 100644 --- a/400_xowa/src/gplx/langs/gfss/Gfs_msg_bldr_tst.java +++ b/400_xowa/src/gplx/langs/gfs/Gfs_msg_bldr_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.langs.gfss; import gplx.*; import gplx.langs.*; +package gplx.langs.gfs; import gplx.*; import gplx.langs.*; import org.junit.*; import gplx.core.strings.*; public class Gfs_msg_bldr_tst { @Before public void init() {fxt.Clear();} Gfs_msg_bldr_fxt fxt = new Gfs_msg_bldr_fxt(); @@ -43,7 +43,7 @@ public class Gfs_msg_bldr_tst { } } class Gfs_msg_bldr_fxt { - public void Clear() {} String_bldr sb = String_bldr_.new_(); Gfs_msg_bldr msg_bldr = Gfs_msg_bldr._; + public void Clear() {} String_bldr sb = String_bldr_.new_(); Gfs_msg_bldr msg_bldr = Gfs_msg_bldr.Instance; public KeyVal kv_(String key, String val) {return KeyVal_.new_(key, val);} public GfoMsg msg_(String key, KeyVal... args) { GfoMsg rv = GfoMsg_.new_parse_(key); @@ -71,6 +71,6 @@ class Gfs_msg_bldr_fxt { if (i != 0) sb.Add_char_crlf(); sb.Add(ary[i].To_str()); } - return sb.Xto_str_and_clear(); + return sb.To_str_and_clear(); } } diff --git a/400_xowa/src/gplx/langs/gfss/Gfs_nde.java b/400_xowa/src/gplx/langs/gfs/Gfs_nde.java similarity index 96% rename from 400_xowa/src/gplx/langs/gfss/Gfs_nde.java rename to 400_xowa/src/gplx/langs/gfs/Gfs_nde.java index 77b1cec35..17c2ac170 100644 --- a/400_xowa/src/gplx/langs/gfss/Gfs_nde.java +++ b/400_xowa/src/gplx/langs/gfs/Gfs_nde.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.langs.gfss; import gplx.*; import gplx.langs.*; +package gplx.langs.gfs; import gplx.*; import gplx.langs.*; public class Gfs_nde { public byte[] Name_bry(byte[] src) {return name == null ? Bry_.Mid(src, name_bgn, name_end) : name;} public byte[] Name() {return name;} public Gfs_nde Name_(byte[] v) {name = v; return this;} private byte[] name; diff --git a/400_xowa/src/gplx/langs/gfss/Gfs_parser.java b/400_xowa/src/gplx/langs/gfs/Gfs_parser.java similarity index 82% rename from 400_xowa/src/gplx/langs/gfss/Gfs_parser.java rename to 400_xowa/src/gplx/langs/gfs/Gfs_parser.java index 5ac530d6c..5c96684c5 100644 --- a/400_xowa/src/gplx/langs/gfss/Gfs_parser.java +++ b/400_xowa/src/gplx/langs/gfs/Gfs_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.langs.gfss; import gplx.*; import gplx.langs.*; +package gplx.langs.gfs; import gplx.*; import gplx.langs.*; import gplx.core.btries.*; public class Gfs_parser { Btrie_fast_mgr trie = Gfs_parser_.trie_(); @@ -67,26 +67,26 @@ public class Gfs_parser { class Gfs_parser_ { public static Btrie_fast_mgr trie_() { Btrie_fast_mgr rv = Btrie_fast_mgr.ci_a7(); // NOTE:ci.ascii:gfs;letters/symbols only; - Gfs_lxr_identifier word_lxr = Gfs_lxr_identifier._; + Gfs_lxr_identifier word_lxr = Gfs_lxr_identifier.Instance; trie_add_rng(rv, word_lxr, Byte_ascii.Ltr_a, Byte_ascii.Ltr_z); trie_add_rng(rv, word_lxr, Byte_ascii.Ltr_A, Byte_ascii.Ltr_Z); trie_add_rng(rv, word_lxr, Byte_ascii.Num_0, Byte_ascii.Num_9); rv.Add(Byte_ascii.Underline, word_lxr); - trie_add_many(rv, Gfs_lxr_whitespace._, Byte_ascii.Space, Byte_ascii.Nl, Byte_ascii.Cr, Byte_ascii.Tab); + trie_add_many(rv, Gfs_lxr_whitespace.Instance, Byte_ascii.Space, Byte_ascii.Nl, Byte_ascii.Cr, Byte_ascii.Tab); trie_add_quote(rv, new byte[] {Byte_ascii.Apos}); trie_add_quote(rv, new byte[] {Byte_ascii.Quote}); trie_add_quote(rv, Bry_.new_a7("<:[\"\n"), Bry_.new_a7("\n\"]:>")); trie_add_quote(rv, Bry_.new_a7("<:['\n"), Bry_.new_a7("\n']:>")); trie_add_comment(rv, new byte[] {Byte_ascii.Slash, Byte_ascii.Slash}, new byte[] {Byte_ascii.Nl}); trie_add_comment(rv, new byte[] {Byte_ascii.Slash, Byte_ascii.Star}, new byte[] {Byte_ascii.Star, Byte_ascii.Slash}); - rv.Add(Byte_ascii.Semic, Gfs_lxr_semic._); - rv.Add(Byte_ascii.Paren_bgn, Gfs_lxr_paren_bgn._); - rv.Add(Byte_ascii.Paren_end, Gfs_lxr_paren_end._); - rv.Add(Byte_ascii.Curly_bgn, Gfs_lxr_curly_bgn._); - rv.Add(Byte_ascii.Curly_end, Gfs_lxr_curly_end._); - rv.Add(Byte_ascii.Dot, Gfs_lxr_dot._); - rv.Add(Byte_ascii.Comma, Gfs_lxr_comma._); - rv.Add(Byte_ascii.Eq, Gfs_lxr_equal._); + rv.Add(Byte_ascii.Semic, Gfs_lxr_semic.Instance); + rv.Add(Byte_ascii.Paren_bgn, Gfs_lxr_paren_bgn.Instance); + rv.Add(Byte_ascii.Paren_end, Gfs_lxr_paren_end.Instance); + rv.Add(Byte_ascii.Curly_bgn, Gfs_lxr_curly_bgn.Instance); + rv.Add(Byte_ascii.Curly_end, Gfs_lxr_curly_end.Instance); + rv.Add(Byte_ascii.Dot, Gfs_lxr_dot.Instance); + rv.Add(Byte_ascii.Comma, Gfs_lxr_comma.Instance); + rv.Add(Byte_ascii.Eq, Gfs_lxr_equal.Instance); return rv; } private static void trie_add_rng(Btrie_fast_mgr trie, Gfs_lxr lxr, byte bgn, byte end) { diff --git a/400_xowa/src/gplx/langs/gfss/Gfs_parser_ctx.java b/400_xowa/src/gplx/langs/gfs/Gfs_parser_ctx.java similarity index 95% rename from 400_xowa/src/gplx/langs/gfss/Gfs_parser_ctx.java rename to 400_xowa/src/gplx/langs/gfs/Gfs_parser_ctx.java index 32c67d363..4ea2006d1 100644 --- a/400_xowa/src/gplx/langs/gfss/Gfs_parser_ctx.java +++ b/400_xowa/src/gplx/langs/gfs/Gfs_parser_ctx.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.langs.gfss; import gplx.*; import gplx.langs.*; +package gplx.langs.gfs; import gplx.*; import gplx.langs.*; import gplx.core.btries.*; class Gfs_parser_ctx { public Btrie_fast_mgr Trie() {return trie;} Btrie_fast_mgr trie; @@ -97,7 +97,7 @@ class Gfs_err_mgr { tmp_fail_bfr.Add_byte(Byte_ascii.Eq).Add_byte(Byte_ascii.Apos); tmp_fail_bfr.Add_str(kv.Val_to_str_or_empty()).Add_byte(Byte_ascii.Apos); } - return tmp_fail_bfr.Xto_str_and_clear(); + return tmp_fail_bfr.To_str_and_clear(); } Bry_bfr tmp_fail_bfr = Bry_bfr.reset_(255); KeyValList tmp_fail_args = new KeyValList(); @@ -105,12 +105,12 @@ class Gfs_err_mgr { String Fail_excerpt_bgn(byte[] src, int src_len, int pos) { int bgn = pos - excerpt_len; if (bgn < 0) bgn = 0; Fail_excerpt_rng(tmp_fail_bfr, src, bgn, pos); - return tmp_fail_bfr.Xto_str_and_clear(); + return tmp_fail_bfr.To_str_and_clear(); } String Fail_excerpt_end(byte[] src, int src_len, int pos) { int end = pos + excerpt_len; if (end > src_len) end = src_len; Fail_excerpt_rng(tmp_fail_bfr, src, pos, end); - return tmp_fail_bfr.Xto_str_and_clear(); + return tmp_fail_bfr.To_str_and_clear(); } private static void Fail_excerpt_rng(Bry_bfr bfr, byte[] src, int bgn, int end) { for (int i = bgn; i < end; i++) { diff --git a/400_xowa/src/gplx/langs/gfss/Gfs_parser_tst.java b/400_xowa/src/gplx/langs/gfs/Gfs_parser_tst.java similarity index 96% rename from 400_xowa/src/gplx/langs/gfss/Gfs_parser_tst.java rename to 400_xowa/src/gplx/langs/gfs/Gfs_parser_tst.java index 16cff1b49..5aa1c927b 100644 --- a/400_xowa/src/gplx/langs/gfss/Gfs_parser_tst.java +++ b/400_xowa/src/gplx/langs/gfs/Gfs_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.langs.gfss; import gplx.*; import gplx.langs.*; +package gplx.langs.gfs; import gplx.*; import gplx.langs.*; import org.junit.*; public class Gfs_parser_tst { @Before public void init() {fxt.Clear();} Gfs_parser_fxt fxt = new Gfs_parser_fxt(); @@ -159,7 +159,7 @@ class Gfs_parser_fxt { path_bfr.Clear().Add_int_variable(i); To_str(tmp_bfr, path_bfr, src, expd[i]); } - return tmp_bfr.Xto_str_and_clear(); + return tmp_bfr.To_str_and_clear(); } public void To_str(Bry_bfr bfr, Bry_bfr path, byte[] src, Gfs_nde nde) { To_str_atr(bfr, path, src, Atr_name, nde.Name(), nde.Name_bgn(), nde.Name_end()); diff --git a/400_xowa/src/gplx/langs/gfss/Gfs_wtr.java b/400_xowa/src/gplx/langs/gfs/Gfs_wtr.java similarity index 94% rename from 400_xowa/src/gplx/langs/gfss/Gfs_wtr.java rename to 400_xowa/src/gplx/langs/gfs/Gfs_wtr.java index ed6737900..9ce824a7a 100644 --- a/400_xowa/src/gplx/langs/gfss/Gfs_wtr.java +++ b/400_xowa/src/gplx/langs/gfs/Gfs_wtr.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.langs.gfss; import gplx.*; import gplx.langs.*; +package gplx.langs.gfs; import gplx.*; import gplx.langs.*; public class Gfs_wtr { public byte Quote_char() {return quote_char;} public Gfs_wtr Quote_char_(byte v) {quote_char = v; return this;} private byte quote_char = Byte_ascii.Apos; public Bry_bfr Bfr() {return bfr;} private Bry_bfr bfr = Bry_bfr.reset_(255); diff --git a/400_xowa/src/gplx/langs/htmls/Html_nde.java b/400_xowa/src/gplx/langs/htmls/Html_nde.java index cbd72bff7..c400c7894 100644 --- a/400_xowa/src/gplx/langs/htmls/Html_nde.java +++ b/400_xowa/src/gplx/langs/htmls/Html_nde.java @@ -77,7 +77,7 @@ public class Html_nde { break; } } - return dirty ? tmp_bfr.Xto_bry_and_clear() : Bry_.Mid(src, bgn, end); + return dirty ? tmp_bfr.To_bry_and_clear() : Bry_.Mid(src, bgn, end); } public byte[] Data(byte[] src) { return Bry_.Mid(src, tag_lhs_end, tag_rhs_bgn); diff --git a/400_xowa/src/gplx/langs/htmls/Html_utl.java b/400_xowa/src/gplx/langs/htmls/Html_utl.java index dd9bcd24a..7615fe73c 100644 --- a/400_xowa/src/gplx/langs/htmls/Html_utl.java +++ b/400_xowa/src/gplx/langs/htmls/Html_utl.java @@ -32,7 +32,7 @@ public class Html_utl { public static byte[] Escape_for_atr_val_as_bry(Bry_bfr bfr, byte quote_byte, byte[] bry) { if (bry == null) return null; boolean dirty = Escape_for_atr_val_as_bry(bfr, quote_byte, bry, 0, bry.length); - return dirty ? bfr.Xto_bry_and_clear() : bry; + return dirty ? bfr.To_bry_and_clear() : bry; } public static boolean Escape_for_atr_val_as_bry(Bry_bfr bfr, byte quote_byte, byte[] src, int bgn, int end) { boolean dirty = false; @@ -100,7 +100,7 @@ public class Html_utl { if (write_to_bfr) return null; else - return dirty ? bfr.Xto_bry_and_clear() : bry; + return dirty ? bfr.To_bry_and_clear() : bry; } private static final Btrie_slim_mgr unescape_trie = Btrie_slim_mgr.ci_a7() @@ -114,7 +114,7 @@ public class Html_utl { Bry_bfr bfr = Bry_bfr.reset_(255); byte[] bry = Bry_.new_u8(src); Unescape(Bool_.Y, bfr, bry, 0, bry.length, Bool_.Y, Bool_.Y, Bool_.Y, Bool_.Y, Bool_.Y); - return bfr.Xto_str_and_clear(); + return bfr.To_str_and_clear(); } public static byte[] Unescape(boolean write_to_bfr, Bry_bfr bfr, byte[] bry, int bgn, int end, boolean escape_lt, boolean escape_gt, boolean escape_amp, boolean escape_quote, boolean escape_apos) { if (bry == null) return null; @@ -156,7 +156,7 @@ public class Html_utl { if (write_to_bfr) return null; else - return dirty ? bfr.Xto_bry_and_clear() : bry; + return dirty ? bfr.To_bry_and_clear() : bry; } public static byte[] Del_comments(Bry_bfr bfr, byte[] src) {return Del_comments(bfr, src, 0, src.length);} public static byte[] Del_comments(Bry_bfr bfr, byte[] src, int pos, int end) { @@ -175,6 +175,6 @@ public class Html_utl { bfr.Add_mid(src, pos, comm_bgn); // add everything between pos and comm_bgn pos = comm_end + Html_tag_.Comm_end_len; // reposition pos after comm_end } - return bfr.Xto_bry_and_clear(); + return bfr.To_bry_and_clear(); } } diff --git a/400_xowa/src/gplx/langs/htmls/Html_wtr.java b/400_xowa/src/gplx/langs/htmls/Html_wtr.java index 26b8b16a8..93db73540 100644 --- a/400_xowa/src/gplx/langs/htmls/Html_wtr.java +++ b/400_xowa/src/gplx/langs/htmls/Html_wtr.java @@ -82,9 +82,9 @@ public class Html_wtr { bfr.Add_byte(Byte_ascii.Gt); return this; } - public byte[] Xto_bry_and_clear() {return bfr.Xto_bry_and_clear();} - public byte[] Xto_bry() {return bfr.Xto_bry();} - public String Xto_str() {return bfr.Xto_str();} + public byte[] To_bry_and_clear() {return bfr.To_bry_and_clear();} + public byte[] Xto_bry() {return bfr.To_bry();} + public String Xto_str() {return bfr.To_str();} public static void Write_atr_bry(Bry_bfr bfr, byte[] key, byte[] val) {Write_atr_bry(bfr, Bool_.Y, Byte_ascii.Quote, key, val);} public static void Write_atr_bry(Bry_bfr bfr, boolean write_space, byte atr_quote, byte[] key, byte[] val) { if (Bry_.Len_eq_0(val)) return; // don't write empty diff --git a/400_xowa/src/gplx/langs/htmls/encoders/Url_encoder.java b/400_xowa/src/gplx/langs/htmls/encoders/Url_encoder.java index d9ce27986..e67eece58 100644 --- a/400_xowa/src/gplx/langs/htmls/encoders/Url_encoder.java +++ b/400_xowa/src/gplx/langs/htmls/encoders/Url_encoder.java @@ -27,7 +27,7 @@ public class Url_encoder implements Url_encoder_interface { Url_encoder_itm_hex hex = new Url_encoder_itm_hex(primary_encode_marker); for (int i = 0; i < 256; i++) { encode_ary[i] = hex; // default encode to hex - decode_ary[i] = Url_encoder_itm_same._; // default decode to same; needed for files; EX: A!%21.png -> A!!.png; + decode_ary[i] = Url_encoder_itm_same.Instance; // default decode to same; needed for files; EX: A!%21.png -> A!!.png; } decode_ary[primary_encode_marker] = hex; } @@ -49,15 +49,15 @@ public class Url_encoder implements Url_encoder_interface { } public void Itms_raw_same_rng(int bgn, int end) { for (int i = bgn; i <= end; i++) { - encode_ary[i] = Url_encoder_itm_same._; - decode_ary[i] = Url_encoder_itm_same._; + encode_ary[i] = Url_encoder_itm_same.Instance; + decode_ary[i] = Url_encoder_itm_same.Instance; } } public Url_encoder Itms_raw_same_many(int... ary) { int ary_len = ary.length; for (int i = 0; i < ary_len; i++) { - encode_ary[ary[i]] = Url_encoder_itm_same._; - decode_ary[ary[i]] = Url_encoder_itm_same._; + encode_ary[ary[i]] = Url_encoder_itm_same.Instance; + decode_ary[ary[i]] = Url_encoder_itm_same.Instance; } return this; } @@ -75,20 +75,20 @@ public class Url_encoder implements Url_encoder_interface { synchronized (thread_lock) { tmp_bfr.Add(Io_url.Http_file_bry); Encode(tmp_bfr, url.RawBry()); - return tmp_bfr.Xto_bry_and_clear(); + return tmp_bfr.To_bry_and_clear(); } } public String Encode_str(String str) { synchronized (thread_lock) { - byte[] bry = Bry_.new_u8(str); Encode(tmp_bfr, bry, 0, bry.length); return tmp_bfr.Xto_str_and_clear(); + byte[] bry = Bry_.new_u8(str); Encode(tmp_bfr, bry, 0, bry.length); return tmp_bfr.To_str_and_clear(); } } public byte[] Encode_bry(String str) { synchronized (thread_lock) { - byte[] bry = Bry_.new_u8(str); Encode(tmp_bfr, bry, 0, bry.length); return tmp_bfr.Xto_bry_and_clear(); + byte[] bry = Bry_.new_u8(str); Encode(tmp_bfr, bry, 0, bry.length); return tmp_bfr.To_bry_and_clear(); } } - public byte[] Encode(byte[] bry) {Encode(tmp_bfr, bry, 0, bry.length); return tmp_bfr.Xto_bry_and_clear();} + public byte[] Encode(byte[] bry) {Encode(tmp_bfr, bry, 0, bry.length); return tmp_bfr.To_bry_and_clear();} public Bry_bfr Encode(Bry_bfr bfr, byte[] bry) {Encode(bfr, bry, 0, bry.length); return bfr;} public void Encode(Bry_bfr bfr, byte[] bry, int bgn, int end) { synchronized (thread_lock) { @@ -106,15 +106,15 @@ public class Url_encoder implements Url_encoder_interface { } public String Decode_str(String str) { synchronized (thread_lock) { - byte[] bry = Bry_.new_u8(str); Decode(bry, 0, bry.length, tmp_bfr, true); return tmp_bfr.Xto_str_and_clear(); + byte[] bry = Bry_.new_u8(str); Decode(bry, 0, bry.length, tmp_bfr, true); return tmp_bfr.To_str_and_clear(); } } public byte[] Decode(byte[] bry) {return Decode(tmp_bfr, bry, 0, bry.length);} public byte[] Decode(byte[] bry, int bgn, int end) {return Decode(tmp_bfr, bry, bgn, end);} - public byte[] Decode(Bry_bfr bfr, byte[] bry, int bgn, int end) {Decode(bry, bgn, end, bfr , false); return bfr.Xto_bry_and_clear();} + public byte[] Decode(Bry_bfr bfr, byte[] bry, int bgn, int end) {Decode(bry, bgn, end, bfr , false); return bfr.To_bry_and_clear();} public byte[] Decode_lax(byte[] bry) { synchronized (thread_lock) { - Decode(bry, 0, bry.length, tmp_bfr, false); return tmp_bfr.Xto_bry_and_clear(); + Decode(bry, 0, bry.length, tmp_bfr, false); return tmp_bfr.To_bry_and_clear(); } } public void Decode(byte[] bry, int bgn, int end, Bry_bfr bfr, boolean fail_when_invalid) { @@ -145,7 +145,7 @@ public class Url_encoder implements Url_encoder_interface { mediawiki_base(rv, true); rv.Itms_decode_marker(Byte_ascii.Dot); rv.Itms_raw_diff(Byte_ascii.Space, Byte_ascii.Underline); - rv.Itms_raw_html_ent(Byte_ascii.Amp, Xop_amp_trie._); + rv.Itms_raw_html_ent(Byte_ascii.Amp, Xop_amp_trie.Instance); return rv; } public static Url_encoder new_http_url_() { @@ -230,7 +230,7 @@ interface Url_encoder_itm { class Url_encoder_itm_same implements Url_encoder_itm { public int Encode(Bry_bfr bfr, byte[] src, int end, int idx, byte b) {bfr.Add_byte(b); return 0;} public int Decode(Bry_bfr bfr, byte[] src, int end, int idx, byte b, boolean fail_when_invalid) {bfr.Add_byte(b); return 0;} - public static final Url_encoder_itm _ = new Url_encoder_itm_same(); + public static final Url_encoder_itm Instance = new Url_encoder_itm_same(); } class Url_encoder_itm_diff implements Url_encoder_itm { public Url_encoder_itm_diff(byte orig, byte repl) {this.orig = orig; this.repl = repl;} private byte orig, repl; @@ -254,14 +254,14 @@ class Url_encoder_itm_hex implements Url_encoder_itm { return 0; } } - int hex_val = Int_.Xto_int_hex(src[idx + 1]); + int hex_val = Int_.To_int_hex(src[idx + 1]); if (hex_val == -1) { // invalid hex byte; EX: %GC; DATE:2014-04-10 bfr.Add_byte(b); return 0; } int v_0 = hex_val * 16; if (v_0 != -1) { - int v_1 = Int_.Xto_int_hex(src[idx + 2]); + int v_1 = Int_.To_int_hex(src[idx + 2]); if (v_1 != -1) { bfr.Add_byte((byte)(v_0 + v_1)); return 2; diff --git a/400_xowa/src/gplx/langs/htmls/encoders/Url_encoder_tst.java b/400_xowa/src/gplx/langs/htmls/encoders/Url_encoder_tst.java index 6a00fc9d4..b9529b6a3 100644 --- a/400_xowa/src/gplx/langs/htmls/encoders/Url_encoder_tst.java +++ b/400_xowa/src/gplx/langs/htmls/encoders/Url_encoder_tst.java @@ -29,7 +29,7 @@ public class Url_encoder_tst { byte[] raw = Bry_.new_a7("0%.jpg"); Bry_bfr tmp_bfr = Bry_bfr.new_(); fxt.Encoder_id().Encoder().Decode(raw, 0, raw.length, tmp_bfr, false); - Tfds.Eq("0%.jpg", tmp_bfr.Xto_str_and_clear()); + Tfds.Eq("0%.jpg", tmp_bfr.To_str_and_clear()); } @Test public void Id_nbsp() {fxt.Encoder_id().Test_encode("a b", "a.C2.A0b");} // NOTE: not just .A0 (160) but utf8-encoded .C2.A0 @Test public void Url_syms() {fxt.Encoder_url().Test_encode_decode("!?^~", "%21%3F%5E%7E");} diff --git a/400_xowa/src/gplx/langs/htmls/parsers/Gfo_html_parser.java b/400_xowa/src/gplx/langs/htmls/parsers/Gfo_html_parser.java deleted file mode 100644 index 44df2f1e6..000000000 --- a/400_xowa/src/gplx/langs/htmls/parsers/Gfo_html_parser.java +++ /dev/null @@ -1,69 +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.langs.htmls.parsers; import gplx.*; import gplx.langs.*; import gplx.langs.htmls.*; -import gplx.core.btries.*; import gplx.core.primitives.*; -import gplx.xowa.*; -import gplx.xowa.parsers.xndes.*; -class Gfo_html_parser { - private final Gfo_msg_log msg_log = Gfo_msg_log.Test(); - private final Xop_xatr_parser xatr_parser = new Xop_xatr_parser(); - public void Parse(Gfo_html_wkr handler, byte[] src, int bgn, int end) { -// int src_len = src.length; -// int prv_pos = 0; -// int css_find_bgn_len = Css_find_bgn.length; -// byte[] protocol_prefix_bry = Bry_.new_u8(protocol_prefix); -// while (true) { -// int url_bgn = Bry_find_.Find_fwd(src, Css_find_bgn, prv_pos); if (url_bgn == Bry_.NotFound) break; // nothing left; stop -// url_bgn += css_find_bgn_len; -// int url_end = Bry_find_.Find_fwd(src, Byte_ascii.Quote, url_bgn, src_len); if (url_end == Bry_.NotFound) {usr_dlg.Warn_many("", "main_page.css_parse", "could not find css; pos='~{0}' text='~{1}'", url_bgn, String_.new_u8__by_len(src, url_bgn, url_bgn + 32)); break;} -// byte[] css_url_bry = Bry_.Mid(src, url_bgn, url_end); -// css_url_bry = Bry_.Replace(css_url_bry, Css_amp_find, Css_amp_repl); // & -> & -// css_url_bry = url_encoder.Decode(css_url_bry); // %2C -> %7C -> | -// css_url_bry = Bry_.Add(protocol_prefix_bry, css_url_bry); -// rv.Add(String_.new_u8(css_url_bry)); -// prv_pos = url_end; -// } -// return rv.XtoStrAry(); - int src_len = src.length; int pos = 0; - while (pos < src_len) { - byte b = src[pos]; - switch (b) { - case Byte_ascii.Angle_bgn: - pos = Parse_node(handler, src, end, pos, pos + 1); - break; - default: - ++pos; - break; - } - } - } - private int Parse_node(Gfo_html_wkr handler, byte[] src, int end, int tkn_bgn, int tkn_end) { - int name_bgn = tkn_end; - int name_end = Bry_find_.Find_fwd_until_ws(src, name_bgn, end); - if (name_end == Bry_find_.Not_found) return end; // EOS; EX: "" - int node_end = Bry_find_.Find_fwd(src, Byte_ascii.Angle_end, name_end, end); - if (node_end == Bry_find_.Not_found) return end; // EOS; EX: ". -*/ -package gplx.langs.htmls.parsers; import gplx.*; import gplx.langs.*; import gplx.langs.htmls.*; -import gplx.xowa.*; -import gplx.xowa.parsers.xndes.*; -interface Gfo_html_tkn { - int Tid(); - byte[] Key(); - void Process(byte[] src, Xop_xatr_hash hash); -} -class Gfo_html_tkn_ { - public static final int Tid_link = 1; - public static final byte[] Key_link = Bry_.new_a7("link"); -} -class Gfo_html_tkn__link implements Gfo_html_tkn { - public int Tid() {return Gfo_html_tkn_.Tid_link;} - public byte[] Key() {return Gfo_html_tkn_.Key_link;} - @gplx.Virtual public void Process(byte[] src, Xop_xatr_hash hash) {} -} diff --git a/400_xowa/src/gplx/langs/jsons/Json_doc.java b/400_xowa/src/gplx/langs/jsons/Json_doc.java index 2f799600f..d976ace40 100644 --- a/400_xowa/src/gplx/langs/jsons/Json_doc.java +++ b/400_xowa/src/gplx/langs/jsons/Json_doc.java @@ -50,7 +50,7 @@ public class Json_doc { Json_itm rv = Find_nde(root_nde, tmp_qry_bry, 0, 0); if (rv == null) return null; return (Json_grp)rv; } - public Json_grp Get_grp(byte[][] qry_bry) { + public Json_grp Get_grp_many(byte[]... qry_bry) { Json_itm rv = Find_nde(root_nde, qry_bry, qry_bry.length - 1, 0); if (rv == null) return null; return (Json_grp)rv; } diff --git a/400_xowa/src/gplx/langs/jsons/Json_doc_srl.java b/400_xowa/src/gplx/langs/jsons/Json_doc_srl.java index e50916886..4c6bd298c 100644 --- a/400_xowa/src/gplx/langs/jsons/Json_doc_srl.java +++ b/400_xowa/src/gplx/langs/jsons/Json_doc_srl.java @@ -20,8 +20,8 @@ public class Json_doc_srl { private int indent = -1; private Bry_bfr bfr = Bry_bfr.reset_(255); public boolean Ws_enabled() {return ws_enabled;} public void Ws_enabled_(boolean v) {ws_enabled = v;} private boolean ws_enabled = false; - public byte[] Bld() {return bfr.Xto_bry_and_clear();} - public String Bld_as_str() {return bfr.Xto_str_and_clear();} + public byte[] Bld() {return bfr.To_bry_and_clear();} + public String Bld_as_str() {return bfr.To_str_and_clear();} public Json_doc_srl Write_root(byte[] key, Object val) { Write_nde_bgn(); Write_obj(false, key, val); diff --git a/400_xowa/src/gplx/langs/jsons/Json_doc_wtr.java b/400_xowa/src/gplx/langs/jsons/Json_doc_wtr.java index be0aee648..56959ccd7 100644 --- a/400_xowa/src/gplx/langs/jsons/Json_doc_wtr.java +++ b/400_xowa/src/gplx/langs/jsons/Json_doc_wtr.java @@ -93,6 +93,6 @@ public class Json_doc_wtr { bfr.Add_byte(Byte_ascii.Colon); return this; } - public byte[] Bld() {return bfr.Xto_bry_and_clear();} - public String Bld_as_str() {return bfr.Xto_str_and_clear();} + public byte[] Bld() {return bfr.To_bry_and_clear();} + public String Bld_as_str() {return bfr.To_str_and_clear();} } diff --git a/400_xowa/src/gplx/langs/jsons/Json_itm_.java b/400_xowa/src/gplx/langs/jsons/Json_itm_.java index 4c7c75646..2d9522f3d 100644 --- a/400_xowa/src/gplx/langs/jsons/Json_itm_.java +++ b/400_xowa/src/gplx/langs/jsons/Json_itm_.java @@ -23,6 +23,6 @@ public class Json_itm_ { public static byte[] To_bry(Bry_bfr bfr, Json_itm itm) { if (itm == null) return Bry_.Empty; itm.Print_as_json(bfr, 0); - return bfr.Xto_bry_and_clear(); + return bfr.To_bry_and_clear(); } } diff --git a/400_xowa/src/gplx/langs/jsons/Json_itm_base.java b/400_xowa/src/gplx/langs/jsons/Json_itm_base.java index c653b9d85..684ea39e8 100644 --- a/400_xowa/src/gplx/langs/jsons/Json_itm_base.java +++ b/400_xowa/src/gplx/langs/jsons/Json_itm_base.java @@ -23,7 +23,7 @@ public abstract class Json_itm_base implements Json_itm { public int Src_end() {return src_end;} protected int src_end; public abstract Object Data(); public abstract byte[] Data_bry(); - public String Print_as_json() {Bry_bfr bfr = Bry_bfr.new_(); Print_as_json(bfr, 0); return bfr.Xto_str_and_clear();} + public String Print_as_json() {Bry_bfr bfr = Bry_bfr.new_(); Print_as_json(bfr, 0); return bfr.To_str_and_clear();} public abstract void Print_as_json(Bry_bfr bfr, int depth); @gplx.Virtual public boolean Data_eq(byte[] comp) {return false;} } diff --git a/400_xowa/src/gplx/langs/jsons/Json_itm_str.java b/400_xowa/src/gplx/langs/jsons/Json_itm_str.java index 5f2c5bcd5..3d8fe7aac 100644 --- a/400_xowa/src/gplx/langs/jsons/Json_itm_str.java +++ b/400_xowa/src/gplx/langs/jsons/Json_itm_str.java @@ -73,6 +73,6 @@ class Json_itm_str extends Json_itm_base { break; } } - return bfr.Xto_bry_and_clear(); + return bfr.To_bry_and_clear(); } } diff --git a/400_xowa/src/gplx/langs/jsons/Json_itm_tmp.java b/400_xowa/src/gplx/langs/jsons/Json_itm_tmp.java index f8de40ed7..3f789d535 100644 --- a/400_xowa/src/gplx/langs/jsons/Json_itm_tmp.java +++ b/400_xowa/src/gplx/langs/jsons/Json_itm_tmp.java @@ -27,5 +27,5 @@ public class Json_itm_tmp implements Json_itm { // TEST: public boolean Data_eq(byte[] comp) {return false;} public void Clear() {} public static Json_itm new_str_(String v) {return new Json_itm_tmp(Json_itm_.Tid__str, "\"" + v + "\"");} - public static Json_itm new_int_(int v) {return new Json_itm_tmp(Json_itm_.Tid__int, Int_.Xto_str(v));} + public static Json_itm new_int_(int v) {return new Json_itm_tmp(Json_itm_.Tid__int, Int_.To_str(v));} } diff --git a/400_xowa/src/gplx/langs/jsons/Json_kv_ary_srl.java b/400_xowa/src/gplx/langs/jsons/Json_kv_ary_srl.java index 21932c3bd..07678dcff 100644 --- a/400_xowa/src/gplx/langs/jsons/Json_kv_ary_srl.java +++ b/400_xowa/src/gplx/langs/jsons/Json_kv_ary_srl.java @@ -44,7 +44,7 @@ public class Json_kv_ary_srl { KeyVal[] rv = new KeyVal[subs_len]; for (int i = 0; i < subs_len; i++) { Json_itm sub = itm.Get_at(i); - KeyVal kv = KeyVal_.new_(Int_.Xto_str(i + Int_.Base1), Val_by_itm(sub)); + KeyVal kv = KeyVal_.new_(Int_.To_str(i + Int_.Base1), Val_by_itm(sub)); rv[i] = kv; } return rv; diff --git a/400_xowa/src/gplx/langs/jsons/Json_parser.java b/400_xowa/src/gplx/langs/jsons/Json_parser.java index 9026c821f..2e30c17fe 100644 --- a/400_xowa/src/gplx/langs/jsons/Json_parser.java +++ b/400_xowa/src/gplx/langs/jsons/Json_parser.java @@ -174,7 +174,7 @@ public class Json_parser { } private Err err_(byte[] src, int bgn, String fmt, Object... args) {return err_(src, bgn, src.length, fmt, args);} private Err err_(byte[] src, int bgn, int src_len, String fmt, Object... args) { - String msg = String_.Format(fmt, args) + " " + Int_.Xto_str(bgn) + " " + String_.new_u8__by_len(src, bgn, 20); + String msg = String_.Format(fmt, args) + " " + Int_.To_str(bgn) + " " + String_.new_u8__by_len(src, bgn, 20); return Err_.new_wo_type(msg); } private static final byte[] Bry_bool_rue = Bry_.new_a7("rue"), Bry_bool_alse = Bry_.new_a7("alse"), Bry_null_ull = Bry_.new_a7("ull"); diff --git a/400_xowa/src/gplx/langs/jsons/Json_parser__itm__base.java b/400_xowa/src/gplx/langs/jsons/Json_parser__itm__base.java index da5768691..47a7e1d98 100644 --- a/400_xowa/src/gplx/langs/jsons/Json_parser__itm__base.java +++ b/400_xowa/src/gplx/langs/jsons/Json_parser__itm__base.java @@ -69,6 +69,6 @@ public abstract class Json_parser__itm__base { public boolean Kv__has(Json_kv[] ary, int i) {return Kv__bry_or_empty(ary, i) != null;} protected abstract void Parse_hook_nde(Json_nde sub, Json_kv[] atrs); protected void Warn(String msg, Json_kv kv) { - Gfo_usr_dlg_.I.Warn_many("", "", msg + ": path=~{0}.~{1} excerpt=~{2}", context, kv.Key_as_bry(), Json_itm_.To_bry(tmp_bfr, cur_itm)); + Gfo_usr_dlg_.Instance.Warn_many("", "", msg + ": path=~{0}.~{1} excerpt=~{2}", context, kv.Key_as_bry(), Json_itm_.To_bry(tmp_bfr, cur_itm)); } } diff --git a/400_xowa/src/gplx/langs/jsons/Json_parser_tst.java b/400_xowa/src/gplx/langs/jsons/Json_parser_tst.java index 7b539f0f4..178c4df42 100644 --- a/400_xowa/src/gplx/langs/jsons/Json_parser_tst.java +++ b/400_xowa/src/gplx/langs/jsons/Json_parser_tst.java @@ -79,7 +79,7 @@ class Json_parser_fxt { byte[] raw = Json_parser_tst.Replace_apos(Bry_.new_u8(raw_str)); Json_doc doc = parser.Parse(raw); doc.Root_grp().Print_as_json(tmp_bfr, 0); - String actl = tmp_bfr.Xto_str_and_clear(); + String actl = tmp_bfr.To_str_and_clear(); String expd = Xto_str(raw, doc, expd_ary, 0, expd_ary.length); Tfds.Eq_str_lines(expd, actl, actl); } @@ -95,6 +95,6 @@ class Json_parser_fxt { Json_itm itm = ary[i]; itm.Print_as_json(tmp_bfr, 0); } - return tmp_bfr.Xto_str_and_clear(); + return tmp_bfr.To_str_and_clear(); } } diff --git a/400_xowa/src/gplx/langs/jsons/Json_printer.java b/400_xowa/src/gplx/langs/jsons/Json_printer.java new file mode 100644 index 000000000..49b56610a --- /dev/null +++ b/400_xowa/src/gplx/langs/jsons/Json_printer.java @@ -0,0 +1,54 @@ +/* +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.langs.jsons; import gplx.*; import gplx.langs.*; +public class Json_printer { + private final Json_parser parser = new Json_parser(); + private final Json_wtr wtr = new Json_wtr(); + public Json_printer Opt_quote_byte_(byte v) {wtr.Opt_quote_byte_(v); return this;} + public Json_wtr Wtr() {return wtr;} + public byte[] To_bry() {return wtr.To_bry_and_clear();} + public String To_str() {return wtr.To_str_and_clear();} + public Json_printer Print_by_bry(byte[] src) { + Json_doc jdoc = parser.Parse(src); + return (jdoc.Root_grp().Tid() == Json_itm_.Tid__ary) + ? Print_by_ary(jdoc.Root_ary()) + : Print_by_nde(jdoc.Root_nde()) + ; + } + public Json_printer Print_by_ary(Json_ary ary) { + wtr.Doc_ary_bgn(); + int len = ary.Len(); + for (int i = 0; i < len; ++i) { + Json_itm itm = ary.Get_at(i); + wtr.Ary_itm_obj(wtr.Get_x(itm)); + } + wtr.Doc_ary_end(); + return this; + } + public Json_printer Print_by_nde(Json_nde nde) { + wtr.Doc_nde_bgn(); + int len = nde.Len(); + for (int i = 0; i < len; ++i) { + Json_kv kv = nde.Get_at_as_kv(i); + Object kv_val = wtr.Get_x(kv.Val()); + wtr.Kv_obj(kv.Key_as_bry(), kv_val, Type_adp_.To_tid_obj(kv_val)); + } + wtr.Doc_nde_end(); + return this; + } +} diff --git a/400_xowa/src/gplx/langs/jsons/Json_printer_tst.java b/400_xowa/src/gplx/langs/jsons/Json_printer_tst.java new file mode 100644 index 000000000..1de18a5a7 --- /dev/null +++ b/400_xowa/src/gplx/langs/jsons/Json_printer_tst.java @@ -0,0 +1,88 @@ +/* +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.langs.jsons; import gplx.*; import gplx.langs.*; +import org.junit.*; +public class Json_printer_tst { + private final Json_printer_fxt fxt = new Json_printer_fxt(); + @Test public void Root_nde() { + fxt.Test_print(Json_doc.Make_str_by_apos("{'k1':'v1','k2':'v2'}"), String_.Concat_lines_nl + ( "{ 'k1':'v1'" + , ", 'k2':'v2'" + , "}" + )); + } + @Test public void Root_ary() { + fxt.Test_print(Json_doc.Make_str_by_apos("[1,2,3]"), String_.Concat_lines_nl + ( "[ 1" + , ", 2" + , ", 3" + , "]" + )); + } + @Test public void Ary_w_ary() { + fxt.Test_print(Json_doc.Make_str_by_apos("[[1,2],[3,4]]"), String_.Concat_lines_nl + ( "[ " + , " [ 1" + , " , 2" + , " ]" + , ", " + , " [ 3" + , " , 4" + , " ]" + , "]" + )); + } + @Test public void Ary_w_nde() { + fxt.Test_print(Json_doc.Make_str_by_apos("[{'k1':'v1','k2':'v2'},{'k3':'v3','k4':'v4'}]"), String_.Concat_lines_nl + ( "[ " + , " { 'k1':'v1'" + , " , 'k2':'v2'" + , " }" + , ", " + , " { 'k3':'v3'" + , " , 'k4':'v4'" + , " }" + , "]" + )); + } + @Test public void Nde_w_ary() { + fxt.Test_print(Json_doc.Make_str_by_apos("{'k1':[1,2],'k2':[3,4]}"), String_.Concat_lines_nl + ( "{ 'k1':" + , " [ 1" + , " , 2" + , " ]" + , ", 'k2':" + , " [ 3" + , " , 4" + , " ]" + , "}" + )); + } +// @Test public void Smoke() { +// Json_printer printer = new Json_printer(); +// String url = "C:\\temp.json"; +// String s = printer.Pretty_print_as_str(Bry_.new_u8(Io_mgr.Instance.LoadFilStr(url))); +// Io_mgr.Instance.SaveFilStr(url, s); +// } +} +class Json_printer_fxt { + private final Json_printer printer = new Json_printer().Opt_quote_byte_(Byte_ascii.Apos); + public void Test_print(String raw, String expd) { + Tfds.Eq_str_lines(expd, printer.Print_by_bry(Bry_.new_u8(raw)).To_str()); + } +} diff --git a/400_xowa/src/gplx/langs/jsons/Json_wtr.java b/400_xowa/src/gplx/langs/jsons/Json_wtr.java index 2222f7688..d59d547ee 100644 --- a/400_xowa/src/gplx/langs/jsons/Json_wtr.java +++ b/400_xowa/src/gplx/langs/jsons/Json_wtr.java @@ -20,14 +20,14 @@ import gplx.core.primitives.*; public class Json_wtr { private final Bry_bfr bfr = Bry_bfr.new_(255); private final Int_ary idx_stack = new Int_ary(4); - private int idx = 0; - private int indent; + private int idx = 0; public Bry_bfr Bfr() {return bfr;} - public void Indent_(int v) {this.indent = v;} + public void Indent_(int v) {this.indent = v;} private int indent; public byte Opt_quote_byte() {return opt_quote_byte;} public Json_wtr Opt_quote_byte_(byte v) {opt_quote_byte = v; return this;} private byte opt_quote_byte = Byte_ascii.Quote; public boolean Opt_ws() {return opt_ws;} public Json_wtr Opt_ws_(boolean v) {opt_ws = v; return this;} private boolean opt_ws = true; - public byte[] To_bry_and_clear() {return bfr.Xto_bry_and_clear();} - public String To_str_and_clear() {return bfr.Xto_str_and_clear();} + public byte[] To_bry_and_clear() {return bfr.To_bry_and_clear();} + public String To_str_and_clear() {return bfr.To_str_and_clear();} + public Json_wtr () {this.Clear();} public Json_wtr Clear() { indent = -1; idx_stack.Clear(); @@ -63,7 +63,7 @@ public class Json_wtr { public Json_wtr Ary_itm_obj(Object itm) {return Ary_itm_by_type_tid(Type_adp_.To_tid_obj(itm), itm);} public Json_wtr Ary_itm_by_type_tid(int itm_type_tid, Object itm) { Write_indent_itm(); - Write_val_obj(itm_type_tid, itm); + Write_val_obj(Bool_.Y, itm_type_tid, itm); Write_nl(); ++idx; return this; @@ -78,10 +78,10 @@ public class Json_wtr { } public Json_wtr Kv_bool(String key, boolean val) {return Kv_bool(Bry_.new_u8(key), val);} public Json_wtr Kv_bool(byte[] key, boolean val) {return Kv_raw(key, val ? Bool_.True_bry : Bool_.False_bry);} - public Json_wtr Kv_int(String key, int val) {return Kv_raw(Bry_.new_u8(key), Int_.Xto_bry(val));} - public Json_wtr Kv_long(String key, long val) {return Kv_raw(Bry_.new_u8(key), Bry_.new_a7(Long_.Xto_str(val)));} - public Json_wtr Kv_float(String key, float val) {return Kv_raw(Bry_.new_u8(key), Bry_.new_a7(Float_.Xto_str(val)));} - public Json_wtr Kv_double(String key, double val) {return Kv_raw(Bry_.new_u8(key), Bry_.new_a7(Double_.Xto_str(val)));} + public Json_wtr Kv_int(String key, int val) {return Kv_raw(Bry_.new_u8(key), Int_.To_bry(val));} + public Json_wtr Kv_long(String key, long val) {return Kv_raw(Bry_.new_u8(key), Bry_.new_a7(Long_.To_str(val)));} + public Json_wtr Kv_float(String key, float val) {return Kv_raw(Bry_.new_u8(key), Bry_.new_a7(Float_.To_str(val)));} + public Json_wtr Kv_double(String key, double val) {return Kv_raw(Bry_.new_u8(key), Bry_.new_a7(Double_.To_str(val)));} private Json_wtr Kv_raw(byte[] key, byte[] val) { Write_indent_itm(); Write_key(key); @@ -99,10 +99,29 @@ public class Json_wtr { Write_nl(); return this; } + public Object Get_x(Json_itm itm) { + switch (itm.Tid()) { + case Json_itm_.Tid__ary: + case Json_itm_.Tid__nde: + return itm; + default: + case Json_itm_.Tid__kv: throw Err_.new_unsupported(); + case Json_itm_.Tid__bool: + case Json_itm_.Tid__int: + case Json_itm_.Tid__decimal: + case Json_itm_.Tid__str: + return itm.Data(); + } + } + public void Kv_itm_x(byte[] key, Json_itm itm) { + Object val = Get_x(itm); + int val_tid = Type_adp_.To_tid_obj(val); + Kv_obj(key, val, val_tid); + } public Json_wtr Kv_obj(byte[] key, Object val, int val_tid) { Write_indent_itm(); Write_key(key); - Write_val_obj(val_tid, val); + Write_val_obj(Bool_.N, val_tid, val); Write_nl(); return this; } @@ -130,7 +149,7 @@ public class Json_wtr { ++idx; return this; } - private void Write_val_obj(int type_tid, Object obj) { + private void Write_val_obj(boolean called_by_ary, int type_tid, Object obj) { switch (type_tid) { case Type_adp_.Tid__null: bfr.Add(Object_.Bry__null); break; case Type_adp_.Tid__bool: bfr.Add_bool(Bool_.cast(obj)); break; @@ -145,42 +164,80 @@ public class Json_wtr { case Type_adp_.Tid__date: case Type_adp_.Tid__decimal: Write_str(Bry_.new_u8(Object_.Xto_str_strict_or_empty(obj))); break; case Type_adp_.Tid__obj: - Class type = obj.getClass(); - if (Type_adp_.Eq(type, KeyVal[].class)) { - if (idx == 0) { // if nde, and first item, then put on new line - bfr.Del_by_1(); - if (opt_ws) { - bfr.Add_byte_nl(); - ++indent; - Write_indent(); - --indent; - } - } - KeyVal[] kvy = (KeyVal[])obj; - Write_grp_bgn(Sym_nde_bgn, Bool_.N); - int kvy_len = kvy.length; - for (int i = 0; i < kvy_len; ++i) { - KeyVal kv = kvy[i]; - Object kv_val = kv.Val(); - Kv_obj(Bry_.new_u8(kv.Key()), kv_val, Type_adp_.To_tid_obj(kv_val)); - } - Write_grp_end(Bool_.Y, Sym_nde_end); - } - else if (Type_adp_.Is_array(type)) - Write_val_ary(obj); + int grp_type = Grp_type__get(obj); + if (grp_type < Grp_type__json_ary) + Write_val_obj__nde(called_by_ary, grp_type, obj); else - throw Err_.new_unhandled(type); + Write_val_itm__ary(called_by_ary, grp_type, obj); break; default: throw Err_.new_unhandled(type_tid); } } - private void Write_val_ary(Object ary_obj) { + private void Handle_nde_as_ary_itm_0() { + if (idx == 0) { // if nde, and first item, then put on new line + bfr.Del_by_1(); + if (opt_ws) { + bfr.Add_byte_nl(); + ++indent; + Write_indent(); + --indent; + } + } + } + private void Write_val_obj__nde(boolean called_by_ary, int grp_type, Object obj) { + if (grp_type == Grp_type__json_nde) { + if (idx == 0) { // if nde, and first item, then put on new line + if (!called_by_ary) { + bfr.Del_by_1(); + if (opt_ws) { + bfr.Add_byte_nl(); + ++indent; + Write_indent(); + --indent; + } + } + } +// else { + bfr.Add_byte_nl(); +// } + Write_grp_bgn(Sym_nde_bgn, Bool_.Y); + Json_nde sub_nde = (Json_nde)obj; + int sub_nde_len = sub_nde.Len(); + for (int i = 0; i < sub_nde_len; ++i) { + Json_kv sub_kv = sub_nde.Get_at_as_kv(i); + Kv_itm_x(sub_kv.Key_as_bry(), sub_kv.Val()); + } + } + else { + Handle_nde_as_ary_itm_0(); + Write_grp_bgn(Sym_nde_bgn, Bool_.N); + KeyVal[] kvy = (KeyVal[])obj; + int kvy_len = kvy.length; + for (int i = 0; i < kvy_len; ++i) { + KeyVal kv = kvy[i]; + Object kv_val = kv.Val(); + Kv_obj(Bry_.new_u8(kv.Key()), kv_val, Type_adp_.To_tid_obj(kv_val)); + } + } + Write_grp_end(Bool_.Y, Sym_nde_end); + } + private void Write_val_itm__ary(boolean called_by_ary, int grp_type, Object obj) { Ary_bgn_keyless(); - Object ary = Array_.cast(ary_obj); - int len = Array_.Len(ary); - for (int i = 0; i < len; ++i) { - Object itm = Array_.Get_at(ary, i); - Ary_itm_obj(itm); + if (grp_type == Grp_type__json_ary) { + Json_ary sub_ary = (Json_ary)(obj); + int len = sub_ary.Len(); + for (int i = 0; i < len; ++i) { + Json_itm sub_itm = sub_ary.Get_at(i); + Ary_itm_obj(Get_x(sub_itm)); + } + } + else { + Object ary = Array_.cast(obj); + int len = Array_.Len(ary); + for (int i = 0; i < len; ++i) { + Object itm = Array_.Get_at(ary, i); + Ary_itm_obj(itm); + } } Write_grp_end(Bool_.N, Sym_ary_end); } @@ -227,4 +284,13 @@ public class Json_wtr { , Sym_ary_end = Bry_.new_a7("]") , Sym_itm_spr = Bry_.new_a7(",") ; + private static final int Grp_type__json_nde = 1, Grp_type__kv_ary = 2, Grp_type__json_ary = 3, Grp_type__obj_ary = 4; + private static int Grp_type__get(Object obj) { + Class type = obj.getClass(); + if (Type_adp_.Eq(type, KeyVal[].class)) return Grp_type__kv_ary; + else if (Type_adp_.Is_array(type)) return Grp_type__obj_ary; + else if (Type_adp_.Eq(type, Json_nde.class)) return Grp_type__json_nde; + else if (Type_adp_.Eq(type, Json_ary.class)) return Grp_type__json_ary; + else throw Err_.new_unhandled(type); + } } diff --git a/400_xowa/src/gplx/langs/phps/Php_evaluator.java b/400_xowa/src/gplx/langs/phps/Php_evaluator.java index 3dc34e31f..c25cff08e 100644 --- a/400_xowa/src/gplx/langs/phps/Php_evaluator.java +++ b/400_xowa/src/gplx/langs/phps/Php_evaluator.java @@ -102,9 +102,9 @@ public class Php_evaluator implements Php_tkn_wkr { case Mode_val: Php_itm line_val = null; switch (tkn_tid) { - case Php_tkn_.Tid_null: Expect(Php_tkn_.Tid_semic, Mode_key_bgn); line_val = Php_itm_null._; break; - case Php_tkn_.Tid_false: Expect(Php_tkn_.Tid_semic, Mode_key_bgn); line_val = Php_itm_bool_false._; break; - case Php_tkn_.Tid_true: Expect(Php_tkn_.Tid_semic, Mode_key_bgn); line_val = Php_itm_bool_true._; break; + case Php_tkn_.Tid_null: Expect(Php_tkn_.Tid_semic, Mode_key_bgn); line_val = Php_itm_null.Instance; break; + case Php_tkn_.Tid_false: Expect(Php_tkn_.Tid_semic, Mode_key_bgn); line_val = Php_itm_bool_false.Instance; break; + case Php_tkn_.Tid_true: Expect(Php_tkn_.Tid_semic, Mode_key_bgn); line_val = Php_itm_bool_true.Instance; break; case Php_tkn_.Tid_quote: Expect(Php_tkn_.Tid_semic, Mode_key_bgn); Php_tkn_quote tkn_quote = (Php_tkn_quote)tkn; @@ -138,9 +138,9 @@ public class Php_evaluator implements Php_tkn_wkr { break; case Mode_ary_subs: switch (tkn_tid) { - case Php_tkn_.Tid_null: Ary_add_itm(Php_itm_null._); break; - case Php_tkn_.Tid_false: Ary_add_itm(Php_itm_bool_false._); break; - case Php_tkn_.Tid_true: Ary_add_itm(Php_itm_bool_true._); break; + case Php_tkn_.Tid_null: Ary_add_itm(Php_itm_null.Instance); break; + case Php_tkn_.Tid_false: Ary_add_itm(Php_itm_bool_false.Instance); break; + case Php_tkn_.Tid_true: Ary_add_itm(Php_itm_bool_true.Instance); break; case Php_tkn_.Tid_quote: Php_tkn_quote tkn_quote = (Php_tkn_quote)tkn; Ary_add_itm(new Php_itm_quote(tkn_quote.Quote_text(src))); diff --git a/400_xowa/src/gplx/langs/phps/Php_itm.java b/400_xowa/src/gplx/langs/phps/Php_itm.java index daf42d0db..293eb4a29 100644 --- a/400_xowa/src/gplx/langs/phps/Php_itm.java +++ b/400_xowa/src/gplx/langs/phps/Php_itm.java @@ -23,18 +23,18 @@ public interface Php_itm { class Php_itm_null implements Php_itm, Php_itm_sub { public byte Itm_tid() {return Php_itm_.Tid_null;} public byte[] Val_obj_bry() {return null;} - public static final Php_itm_null _ = new Php_itm_null(); Php_itm_null() {} + public static final Php_itm_null Instance = new Php_itm_null(); Php_itm_null() {} } class Php_itm_bool_true implements Php_itm, Php_itm_sub { public byte Itm_tid() {return Php_itm_.Tid_bool_true;} public byte[] Val_obj_bry() {return Bry_true;} - public static final Php_itm_bool_true _ = new Php_itm_bool_true(); Php_itm_bool_true() {} + public static final Php_itm_bool_true Instance = new Php_itm_bool_true(); Php_itm_bool_true() {} private static final byte[] Bry_true = Bry_.new_a7("true"); } class Php_itm_bool_false implements Php_itm, Php_itm_sub { public byte Itm_tid() {return Php_itm_.Tid_bool_false;} public byte[] Val_obj_bry() {return Bry_true;} - public static final Php_itm_bool_false _ = new Php_itm_bool_false(); Php_itm_bool_false() {} + public static final Php_itm_bool_false Instance = new Php_itm_bool_false(); Php_itm_bool_false() {} private static final byte[] Bry_true = Bry_.new_a7("false"); } class Php_itm_var implements Php_itm, Php_itm_sub, Php_key { diff --git a/400_xowa/src/gplx/langs/phps/Php_parser_tst.java b/400_xowa/src/gplx/langs/phps/Php_parser_tst.java index 1f17455c4..5ab122545 100644 --- a/400_xowa/src/gplx/langs/phps/Php_parser_tst.java +++ b/400_xowa/src/gplx/langs/phps/Php_parser_tst.java @@ -132,7 +132,7 @@ class Php_parser_fxt { Tst_mgr tst_mgr = new Tst_mgr(); Gfo_msg_log_chkr log_mgr_chkr = new Gfo_msg_log_chkr(); public void Clear() {log_mgr_chkr.Clear(); tkn_wkr.Clear(); line_wkr.Clear();} - public Php_tkn_chkr_base tkn_declaration() {return Php_tkn_declaration_chkr._;} + public Php_tkn_chkr_base tkn_declaration() {return Php_tkn_declaration_chkr.Instance;} public Php_tkn_chkr_base tkn_txt(int bgn, int end) {return new Php_tkn_txt_chkr(bgn, end);} public Php_tkn_chkr_base tkn_ws(int bgn, int end) {return new Php_tkn_ws_chkr(bgn, end);} public Php_tkn_chkr_base tkn_generic(int bgn, int end, byte tid) {return new Php_tkn_generic_chkr(bgn, end, tid);} @@ -197,7 +197,7 @@ abstract class Php_tkn_chkr_base implements Tst_chkr { class Php_tkn_declaration_chkr extends Php_tkn_chkr_base { @Override public Class TypeOf() {return Php_tkn_declaration.class;} @Override public byte Tkn_tid() {return Php_tkn_.Tid_declaration;} - public static final Php_tkn_declaration_chkr _ = new Php_tkn_declaration_chkr(); + public static final Php_tkn_declaration_chkr Instance = new Php_tkn_declaration_chkr(); } class Php_tkn_txt_chkr extends Php_tkn_chkr_base { public Php_tkn_txt_chkr(int src_bgn, int src_end) {this.Src_rng_(src_bgn, src_end);} diff --git a/400_xowa/src/gplx/langs/phps/Php_srl_parser.java b/400_xowa/src/gplx/langs/phps/Php_srl_parser.java index b351c4636..9fbfc3387 100644 --- a/400_xowa/src/gplx/langs/phps/Php_srl_parser.java +++ b/400_xowa/src/gplx/langs/phps/Php_srl_parser.java @@ -190,7 +190,7 @@ public class Php_srl_parser { } Err err_(byte[] raw, int bgn, String fmt, Object... args) {return err_(raw, bgn, raw.length, fmt, args);} Err err_(byte[] raw, int bgn, int raw_len, String fmt, Object... args) { - String msg = String_.Format(fmt, args) + " " + Int_.Xto_str(bgn) + " " + String_.new_u8__by_len(raw, bgn, 20); + String msg = String_.Format(fmt, args) + " " + Int_.To_str(bgn) + " " + String_.new_u8__by_len(raw, bgn, 20); return Err_.new_wo_type(msg); } } diff --git a/400_xowa/src/gplx/langs/phps/Php_srl_parser_tst.java b/400_xowa/src/gplx/langs/phps/Php_srl_parser_tst.java index c227303b9..d1c669e55 100644 --- a/400_xowa/src/gplx/langs/phps/Php_srl_parser_tst.java +++ b/400_xowa/src/gplx/langs/phps/Php_srl_parser_tst.java @@ -98,7 +98,7 @@ class Php_srl_parser_fxt { Php_srl_itm_ary root = parser.Parse(raw); Php_srl_itm root_sub = root.Subs_get_at(0).Val(); root_sub.Xto_bfr(tmp_bfr, 0); - String actl = tmp_bfr.Xto_str_and_clear(); + String actl = tmp_bfr.To_str_and_clear(); String expd = Xto_str(expd_ary, 0, expd_ary.length); Tfds.Eq_str_lines(expd, actl, actl); } @@ -107,6 +107,6 @@ class Php_srl_parser_fxt { Php_srl_itm itm = ary[i]; itm.Xto_bfr(tmp_bfr, 0); } - return tmp_bfr.Xto_str_and_clear(); + return tmp_bfr.To_str_and_clear(); } } diff --git a/400_xowa/src/gplx/langs/phps/Php_text_itm_parser.java b/400_xowa/src/gplx/langs/phps/Php_text_itm_parser.java index 605181408..38db9a320 100644 --- a/400_xowa/src/gplx/langs/phps/Php_text_itm_parser.java +++ b/400_xowa/src/gplx/langs/phps/Php_text_itm_parser.java @@ -33,7 +33,7 @@ public class Php_text_itm_parser { Php_text_itm itm = (Php_text_itm)tmp_list.Get_at(i); itm.Bld(tmp_bfr, raw); } - rv = tmp_bfr.Xto_bry_and_clear(); + rv = tmp_bfr.To_bry_and_clear(); break; } return rv; @@ -101,7 +101,7 @@ public class Php_text_itm_parser { case Byte_ascii.Dollar: if (txt_bgn != -1) {tmp_list.Add(new Php_text_itm_text(txt_bgn, i)); txt_bgn = -1;} if (i == raw_last) { - //throw Err_mgr._.fmt_auto_(GRP_KEY, "dollar_is_last_char", String_.new_u8(raw)); + //throw Err_mgr.Instance.fmt_auto_(GRP_KEY, "dollar_is_last_char", String_.new_u8(raw)); } int int_end = Find_fwd_non_int(raw, i + 1, raw_len); // +1 to search after $ int int_val = Bry_.To_int_or(raw, i + 1, int_end, -1); // +1 to search after $ @@ -109,7 +109,7 @@ public class Php_text_itm_parser { tmp_list.Add(new Php_text_itm_text(i, i + 1)); continue; } - //throw Err_mgr._.fmt_auto_(GRP_KEY, "invalid_arg", String_.new_u8(raw)); + //throw Err_mgr.Instance.fmt_auto_(GRP_KEY, "invalid_arg", String_.new_u8(raw)); tmp_list.Add(new Php_text_itm_arg(i, int_end, int_val)); rslt_val = Rslt_fmt; i = int_end - 1; // -1 b/c i++ in for loop @@ -125,7 +125,7 @@ public class Php_text_itm_parser { private void Parse_utf16(List_adp rv, byte[] src, int bgn, int src_len) { int end = bgn + 4; if (end >= src_len) throw Err_.new_wo_type("utf16_parse", "src", String_.new_u8(src)); - int v = Int_.Xto_int_hex(src, bgn, end); // +2; skip "\" + "u" + int v = Int_.To_int_hex(src, bgn, end); // +2; skip "\" + "u" byte[] literal = gplx.core.intls.Utf16_.Encode_int_to_bry(v); rv.Add(new Php_text_itm_utf16(bgn, end, literal)); } diff --git a/400_xowa/src/gplx/langs/phps/Php_text_itm_tst.java b/400_xowa/src/gplx/langs/phps/Php_text_itm_tst.java index 973f0a658..028d69de8 100644 --- a/400_xowa/src/gplx/langs/phps/Php_text_itm_tst.java +++ b/400_xowa/src/gplx/langs/phps/Php_text_itm_tst.java @@ -48,6 +48,6 @@ class Php_text_itm_fxt { Php_text_itm itm = (Php_text_itm)list.Get_at(i); itm.Bld(bfr, raw); } - Tfds.Eq(expd, bfr.Xto_str_and_clear()); + Tfds.Eq(expd, bfr.To_str_and_clear()); } } diff --git a/400_xowa/src/gplx/langs/phps/Php_tkn.java b/400_xowa/src/gplx/langs/phps/Php_tkn.java index b571cee23..e3a254750 100644 --- a/400_xowa/src/gplx/langs/phps/Php_tkn.java +++ b/400_xowa/src/gplx/langs/phps/Php_tkn.java @@ -70,5 +70,5 @@ class Php_tkn_quote extends Php_tkn_base { } class Php_tkn_declaration extends Php_tkn_base { @Override public byte Tkn_tid() {return Php_tkn_.Tid_declaration;} - public static final Php_tkn_declaration _ = new Php_tkn_declaration(); + public static final Php_tkn_declaration Instance = new Php_tkn_declaration(); } diff --git a/400_xowa/src/gplx/langs/phps/Php_tkn_factory.java b/400_xowa/src/gplx/langs/phps/Php_tkn_factory.java index c66592a4e..616eb5bdb 100644 --- a/400_xowa/src/gplx/langs/phps/Php_tkn_factory.java +++ b/400_xowa/src/gplx/langs/phps/Php_tkn_factory.java @@ -19,7 +19,7 @@ package gplx.langs.phps; import gplx.*; import gplx.langs.*; class Php_tkn_factory { public Php_tkn_generic Generic(int bgn, int end, byte tid) {return new Php_tkn_generic(bgn, end, tid);} public Php_tkn_txt Txt(int bgn, int end) {return new Php_tkn_txt(bgn, end);} - public Php_tkn Declaration(int bgn, int end) {return Php_tkn_declaration._;} + public Php_tkn Declaration(int bgn, int end) {return Php_tkn_declaration.Instance;} public Php_tkn_ws Ws(int bgn, int end, byte ws_tid) {return new Php_tkn_ws(bgn, end, ws_tid);} public Php_tkn_var Var(int bgn, int end) {return new Php_tkn_var(bgn, end);} public Php_tkn_num Num(int bgn, int end) {return new Php_tkn_num(bgn, end);} diff --git a/400_xowa/src/gplx/langs/regxs/Gfo_pattern_itm.java b/400_xowa/src/gplx/langs/regxs/Gfo_pattern_itm.java index 0762254ae..1071408eb 100644 --- a/400_xowa/src/gplx/langs/regxs/Gfo_pattern_itm.java +++ b/400_xowa/src/gplx/langs/regxs/Gfo_pattern_itm.java @@ -60,5 +60,5 @@ class Gfo_pattern_itm_wild implements Gfo_pattern_itm { return ctx.Itm_idx_is_last() ? src_len : pos; } public void Xto_str(String_bldr sb) {sb.Add(this.Tid()).Add("|*");} - public static final Gfo_pattern_itm_wild _ = new Gfo_pattern_itm_wild(); Gfo_pattern_itm_wild() {} + public static final Gfo_pattern_itm_wild Instance = new Gfo_pattern_itm_wild(); Gfo_pattern_itm_wild() {} } diff --git a/400_xowa/src/gplx/langs/regxs/Gfo_pattern_itm_.java b/400_xowa/src/gplx/langs/regxs/Gfo_pattern_itm_.java index 591a54c00..0c66da7ac 100644 --- a/400_xowa/src/gplx/langs/regxs/Gfo_pattern_itm_.java +++ b/400_xowa/src/gplx/langs/regxs/Gfo_pattern_itm_.java @@ -33,7 +33,7 @@ public class Gfo_pattern_itm_ { break; case Byte_ascii.Star: if (itm != null) {itm.Compile(raw, itm_bgn, pos); itm = null; itm_bgn = -1;} - rv.Add(Gfo_pattern_itm_wild._); + rv.Add(Gfo_pattern_itm_wild.Instance); break; default: if (itm_bgn == -1) { diff --git a/400_xowa/src/gplx/langs/regxs/Gfo_pattern_tst.java b/400_xowa/src/gplx/langs/regxs/Gfo_pattern_tst.java index 240fa57ec..55020518e 100644 --- a/400_xowa/src/gplx/langs/regxs/Gfo_pattern_tst.java +++ b/400_xowa/src/gplx/langs/regxs/Gfo_pattern_tst.java @@ -69,7 +69,7 @@ class Gfo_pattern_itm_fxt { Tfds.Eq(expd, pattern.Match(Bry_.new_u8(itm)), "pattern={0} itm={1} expd={2}", String_.new_u8(pattern.Raw()), itm, expd); } } - public Gfo_pattern_itm_wild itm_wild_() {return Gfo_pattern_itm_wild._;} + public Gfo_pattern_itm_wild itm_wild_() {return Gfo_pattern_itm_wild.Instance;} public Gfo_pattern_itm_text itm_text_(String raw) { Gfo_pattern_itm_text rv = new Gfo_pattern_itm_text(); byte[] bry = Bry_.new_u8(raw); @@ -88,6 +88,6 @@ class Gfo_pattern_itm_fxt { Gfo_pattern_itm itm = ary[i]; itm.Xto_str(sb); } - return sb.Xto_str_and_clear(); + return sb.To_str_and_clear(); } } diff --git a/400_xowa/src/gplx/langs/xmls/Gfo_xml_wtr.java b/400_xowa/src/gplx/langs/xmls/Gfo_xml_wtr.java index f8445b432..efdc01da3 100644 --- a/400_xowa/src/gplx/langs/xmls/Gfo_xml_wtr.java +++ b/400_xowa/src/gplx/langs/xmls/Gfo_xml_wtr.java @@ -76,7 +76,7 @@ public class Gfo_xml_wtr { } public Gfo_xml_wtr Nde_txt_int(String name, int text) { this.Nde_lhs(Bool_.N, name); - this.Txt_bry(Int_.Xto_bry(text)); + this.Txt_bry(Int_.To_bry(text)); this.Nde_rhs(); return this; } @@ -92,7 +92,7 @@ public class Gfo_xml_wtr { bfr.Add_byte(quote_byte); return this; } - public Gfo_xml_wtr Atr_kv_int(String key, int val) {return Atr_kv_bry(key, Int_.Xto_bry(val));} + public Gfo_xml_wtr Atr_kv_int(String key, int val) {return Atr_kv_bry(key, Int_.To_bry(val));} public Gfo_xml_wtr Atr_kv_str_a7(String key, String val) {return Atr_kv_bry(key, Bry_.new_a7(val));} public Gfo_xml_wtr Atr_kv_str_u8(String key, String val) {return Atr_kv_bry(key, Bry_.new_u8(val));} public Gfo_xml_wtr Atr_kv_bry(String key, byte[] val) { @@ -133,7 +133,7 @@ public class Gfo_xml_wtr { return this; } public Gfo_xml_wtr Txt_str_u8(String txt) {return Txt_bry(Bry_.new_u8(txt));} - public String Bld_str() {return bfr.Xto_str_and_clear();} + public String Bld_str() {return bfr.To_str_and_clear();} private static final byte[] Bry_nde_rhs_bgn = Bry_.new_a7("") diff --git a/400_xowa/src/gplx/xowa/Xoa_app.java b/400_xowa/src/gplx/xowa/Xoa_app.java index 20e162aa7..97fcf4abd 100644 --- a/400_xowa/src/gplx/xowa/Xoa_app.java +++ b/400_xowa/src/gplx/xowa/Xoa_app.java @@ -17,20 +17,24 @@ along with this program. If not, see . */ package gplx.xowa; import gplx.*; import gplx.ios.*; import gplx.core.net.*; -import gplx.langs.jsons.*; -import gplx.xowa.apps.*; import gplx.xowa.apps.fsys.*; import gplx.xowa.apps.metas.*; import gplx.xowa.apis.*; +import gplx.langs.jsons.*; import gplx.langs.htmls.encoders.*; +import gplx.xowa.apps.*; import gplx.xowa.apps.fsys.*; import gplx.xowa.apps.site_cfgs.*; import gplx.xowa.apps.metas.*; import gplx.xowa.apps.apis.*; +import gplx.xowa.apps.gfs.*; import gplx.xowa.bldrs.css.*; -import gplx.xowa.files.caches.*; import gplx.xowa.files.imgs.*; -import gplx.langs.htmls.encoders.*; -import gplx.xowa.wikis.*; -import gplx.xowa.wms.*; -import gplx.xowa.html.hrefs.*; import gplx.xowa.html.wtrs.*; import gplx.xowa.html.js.*; import gplx.xowa.html.bridges.*; +import gplx.xowa.files.caches.*; import gplx.xowa.files.imgs.*; +import gplx.xowa.htmls.hrefs.*; import gplx.xowa.htmls.wtrs.*; import gplx.xowa.htmls.js.*; import gplx.xowa.htmls.bridges.*; +import gplx.xowa.wikis.*; import gplx.xowa.wikis.xwikis.*; import gplx.xowa.wikis.xwikis.parsers.*; import gplx.xowa.wikis.xwikis.sitelinks.*; +import gplx.xowa.langs.*; +import gplx.xowa.bldrs.wms.*; import gplx.xowa.users.*; -public interface Xoa_app { - Xoa_app_type App_type(); +public interface Xoa_app extends GfoInvkAble { + boolean Tid_is_edit(); + Xoa_app_mode Mode(); Xoapi_root Api_root(); Xoa_fsys_mgr Fsys_mgr(); Xoa_wiki_mgr Wiki_mgri(); + Xoa_lang_mgr Lang_mgr(); + Xoa_gfs_mgr Gfs_mgr(); Xof_cache_mgr File__cache_mgr(); Xof_img_mgr File__img_mgr(); Io_download_fmt File__download_fmt(); @@ -39,14 +43,17 @@ public interface Xoa_app { Xoh_lnki_bldr Html__lnki_bldr(); Xoa_css_extractor Html__css_installer(); Xoh_bridge_mgr Html__bridge_mgr(); - Xoa_meta_mgr Meta_mgr(); Xou_user User(); Xowmf_mgr Wmf_mgr(); boolean Xwiki_mgr__missing(byte[] domain); + Xoa_sitelink_mgr Xwiki_mgr__sitelink_mgr(); + Xow_xwiki_itm_parser Xwiki_mgr__itm_parser(); boolean Bldr__running(); void Bldr__running_(boolean v); Gfo_usr_dlg Usr_dlg(); Bry_bfr_mkr Utl__bfr_mkr(); Url_encoder_mgr Utl__encoder_mgr(); Json_parser Utl__json_parser(); Gfo_inet_conn Utl__inet_conn(); + Xoa_meta_mgr Meta_mgr(); + Xoa_site_cfg_mgr Site_cfg_mgr(); } diff --git a/400_xowa/src/gplx/xowa/Xoa_app_.java b/400_xowa/src/gplx/xowa/Xoa_app_.java index fad2daa8a..44d443fd0 100644 --- a/400_xowa/src/gplx/xowa/Xoa_app_.java +++ b/400_xowa/src/gplx/xowa/Xoa_app_.java @@ -16,232 +16,37 @@ 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.core.consoles.*; import gplx.dbs.*; import gplx.ios.*; import gplx.gfui.*; -import gplx.xowa.apps.*; import gplx.xowa.apps.gfss.*; import gplx.xowa.langs.*; import gplx.xowa.users.*; -import gplx.xowa.files.*; import gplx.xowa.html.hdumps.*; import gplx.xowa.html.hdumps.core.*; -import gplx.xowa.gui.views.boots.*; +import gplx.ios.*; import gplx.langs.htmls.encoders.*; +import gplx.xowa.guis.views.boots.*; +import gplx.xowa.apps.boots.*; import gplx.xowa.apps.gfs.*; public class Xoa_app_ { public static void Run(String... args) { + Xoa_cmd_arg_mgr arg_mgr = Xoa_cmd_arg_mgr.new_(); try { - Xoa_app_boot_mgr boot_mgr = new Xoa_app_boot_mgr(); - boot_mgr.Run(args); + Xoa_boot_mgr boot_mgr = new Xoa_boot_mgr(); + boot_mgr.Run(args, arg_mgr); } catch (Error e) { - String err_text = e.toString(); - String err_details = String_.Concat_lines_nl_skip_last - ( "OS: " + Op_sys.Cur().Os_name() - , "Java: " + Env_.Env_prop__java_version() + " (" + Op_sys.Cur().Bitness_str() + " bit)" - , "Java path: " + Env_.Env_prop("java.home") - , "XOWA: " + Version - , "XOWA path: " + Env_.AppUrl().Raw() - , "" - , "Error: " + err_text - , "Stack: " + Err_.Trace_lang(e) - ); - String full_msg = String_.Concat_lines_nl_skip_last - ( "Sorry! XOWA failed to run!" - , "" - , "Please check the TROUBLESHOOTING section in the readme.txt for known issues." - , "" - , "You can also open an issue or send an email with the data below." - , "" - , "Thanks!" - , "" - , "----" - , err_details - ); - if (Op_sys.Cur().Tid_is_osx()) - Console_adp__sys.I.Write_str(err_text); + if (arg_mgr.App_type().Tid_is_gui()) + Xog_error_win.Run(Err_.Message_lang_error(e), Err_.Trace_lang(e)); else - new Xog_error_win(new Xog_error_data(full_msg, err_details, err_text)); - Gfo_usr_dlg_.I.Log_many("", "", err_details); + throw e; } } - public static final String Name = "xowa"; - public static final String Version = "2.9.4.1"; - public static String Build_date = "2012-12-30 00:00:00"; - public static String Op_sys_str; - public static String User_agent = ""; + public static final String Name = "xowa"; + public static final String Version = "2.10.3.1"; + public static String Build_date = "2012-12-30 00:00:00"; + public static String Op_sys_str; + public static String User_agent = ""; public static final Gfo_msg_grp Nde = Gfo_msg_grp_.prj_(Name); - public static Gfo_usr_dlg usr_dlg_console_() { - Gfo_usr_dlg rv = new Gfo_usr_dlg_base(new Gfo_usr_dlg__log_base(), Gfo_usr_dlg__gui_.Console); - rv.Log_wkr().Queue_enabled_(true); - return rv; - } public static Gfo_usr_dlg Usr_dlg() {return usr_dlg;} public static void Usr_dlg_(Gfo_usr_dlg v) {usr_dlg = v;} private static Gfo_usr_dlg usr_dlg; public static Bry_bfr_mkr Utl__bfr_mkr() {return utl__bry_bfr_mkr;} private static final Bry_bfr_mkr utl__bry_bfr_mkr = new Bry_bfr_mkr(); public static Url_encoder_mgr Utl__encoder_mgr() {return utl__encoder_mgr;} private static final Url_encoder_mgr utl__encoder_mgr = new Url_encoder_mgr(); public static Io_stream_zip_mgr Utl__zip_mgr() {return utl__zip_mgr;} private static final Io_stream_zip_mgr utl__zip_mgr = new Io_stream_zip_mgr(); - public static Xoa_gfs_mgr Gfs_mgr() {return gfs_mgr;} public static void Gfs_mgr_(Xoa_gfs_mgr v) {gfs_mgr = v;} private static Xoa_gfs_mgr gfs_mgr; -} -class Xoa_app_boot_mgr { - private Gfo_usr_dlg usr_dlg; private Gfo_usr_dlg__log log_wtr; private String chkpoint = "null"; - public void Run(String[] args) { - try { - if (!Init_env(args)) return; - App_cmd_mgr args_mgr = Init_args_mgr(args); if (args_mgr == null) return; - Run_app(args_mgr); - } - catch (Exception e) { - String err_str = Err_.Message_gplx_full(e); - log_wtr.Log_to_err(err_str); - Console_adp__sys.I.Write_str_w_nl(err_str); - if (log_wtr.Log_dir() == null) log_wtr.Log_dir_(Env_.AppUrl().OwnerDir().GenSubFil("xowa.log")); - log_wtr.Queue_enabled_(false); - } - } - private boolean Init_env(String[] args) { - Gfo_usr_dlg_.I = usr_dlg = Xoa_app_.usr_dlg_console_(); - log_wtr = usr_dlg.Log_wkr(); log_wtr.Log_to_session_fmt("env.init: version=~{0}", Xoa_app_.Version); - GfuiEnv_.Init_swt(args, Xoa_app_.class); - Io_url jar_url = Env_.AppUrl(); - Xoa_app_.Build_date = Io_mgr.I.QueryFil(jar_url).ModifiedTime().XtoUtc().XtoStr_fmt("yyyy-MM-dd HH:mm"); - log_wtr.Log_to_session_fmt("env.init: jar_url=~{0}; build_date=~{1}", jar_url.NameAndExt(), Xoa_app_.Build_date); - log_wtr.Log_to_session_fmt("env.init: op_sys=~{0}", Op_sys.Cur().To_str()); - chkpoint = "init_env"; - return true; - } - private App_cmd_mgr Init_args_mgr(String[] args) { - App_cmd_mgr rv = new App_cmd_mgr(); - try { - String hdr = String_.Concat_lines_nl_skip_last - ( Env_.GenHdr(false, "XOWA", "XOWA: the XOWA Offline Wiki Application\n", "") - , String_.Repeat("-", 80) - , "" - , "version: " + Xoa_app_.Version + "; build date: " + Xoa_app_.Build_date - ); - rv - .Fmt_hdr_(hdr) - .Expd_add_many - ( App_cmd_arg.opt_("root_dir").Example_url_("C:\\xowa").Note_("root directory for xowa; defaults to current directory of xowa.jar") - , App_cmd_arg.opt_("user_dir").Example_url_("C:\\xowa\\user\\" + Xoue_user.Key_xowa_user).Note_("directory for user_data; defaults to '/xowa/user/" + Xoue_user.Key_xowa_user + "'") - , App_cmd_arg.opt_("wiki_dir").Example_url_("C:\\xowa\\wiki\\").Note_("directory for wikis; defaults to '/xowa/wiki/'") - , App_cmd_arg.opt_("bin_dir_name").Example_("windows").Note_("platform-dependent directory name inside /xowa/bin/; valid values are 'linux', 'macosx', 'windows', 'linux_64', 'macosx_64', 'windows_64'; defaults to detected version") - , App_cmd_arg.opt_("app_mode").Example_("gui").Note_("type of app to run; valid values are 'gui', 'cmd', 'server', 'http_server'; defaults to 'gui'") - , App_cmd_arg.opt_("cmd_file").Example_url_("C:\\xowa\\bin\\any\\xowa\\cfg\\app\\xowa.gfs").Note_("file_path of script to execute; defaults to 'xowa.gfs'") - , App_cmd_arg.opt_("cmd_text").Example_("\"app.shell.fetch_page('en.wikipedia.org/wiki/Earth', 'html');\"").Note_("script to run; runs after cmd_file; does nothing if empty; default is empty.\nCurrently a useful cmd is to do 'java -jar xowa_your_platform.jar --app_mode cmd --show_license n --show_args n --cmd_text \"app.shell.fetch_page('en.wikipedia.org/wiki/Earth' 'html');\"'. This will output the page's html to the console. You can also change 'html' to 'wiki' to get the wikitext.") - , App_cmd_arg.opt_("url").Example_("en.wikipedia.org/wiki/Earth").Note_("url to be shown when xowa first launches; default is home/wiki/Main_Page") - , App_cmd_arg.opt_("server_port_recv").Example_("55000").Note_("applies to --app_mode server; port where xowa server will receive messages; clients should send messages to this port") - , App_cmd_arg.opt_("server_port_send").Example_("55001").Note_("applies to --app_mode server; port where xowa server will send messages; clients should listen for messages from this port") - , App_cmd_arg.opt_("http_server_port").Example_("8080").Note_("applies to --app_mode http_server; port used by http_server; default is 8080") - , App_cmd_arg.opt_("http_server_home").Example_("home/wiki/Main_Page").Note_("applies to --app_mode http_server; default home page for root address. EX: navigating to localhost:8080 will navigate to localhost:8080/home/wiki/Main_Page") - , App_cmd_arg.opt_("http_server.max_clients").Example_("15").Note_("applies to --app_mode http_server; limits maximum number of concurrent connections; default is 0 (no limit)") - , App_cmd_arg.opt_("http_server.max_clients_timeout").Example_("50").Note_("applies to --app_mode http_server; time in milliseconds to wait before checking again to see if a connection is free; default is 50 (wait 50 ms)") - , App_cmd_arg.sys_header_("show_license").Dflt_(true) - , App_cmd_arg.sys_args_("show_args").Dflt_(true) - , App_cmd_arg.sys_help_() - ) - ; chkpoint = "fmt_hdr"; - boolean pass = rv.Args_process(args); chkpoint = "args_process"; - rv.Print_header(usr_dlg); // always call print_header - if (!pass) { - rv.Print_args(usr_dlg); - rv.Print_fail(usr_dlg); - rv.Print_help(usr_dlg, Xoa_app_.Name); - return null; - } - if (rv.Args_has_help()) { - rv.Print_help(usr_dlg, Xoa_app_.Name); - return null; - } - if (rv.Args_get("show_args").Val_as_bool()) - rv.Print_args(usr_dlg); - } catch (Exception e) {usr_dlg.Warn_many("", "", "args failed: ~{0} ~{1}", chkpoint, Err_.Message_gplx_full(e)); return null;} - return rv; - } - private void Run_app(App_cmd_mgr args_mgr) { - boolean app_type_is_gui = false; - Xoae_app app = null; - try { - // init vars - Io_url jar_dir = Env_.AppUrl().OwnerDir(); - Io_url root_dir = args_mgr.Args_get("root_dir").Val_as_url_rel_dir_or(jar_dir, jar_dir); - Io_url user_dir = args_mgr.Args_get("user_dir").Val_as_url_rel_dir_or(root_dir.GenSubDir("user"), root_dir.GenSubDir_nest("user", Xoue_user.Key_xowa_user)); - Io_url wiki_dir = args_mgr.Args_get("wiki_dir").Val_as_url_rel_dir_or(root_dir.GenSubDir("wiki"), root_dir.GenSubDir("wiki")); - Io_url cmd_file = args_mgr.Args_get("cmd_file").Val_as_url_rel_fil_or(jar_dir, root_dir.GenSubFil_nest("bin", "any", "xowa", "cfg" ,"app", "xowa.gfs")); - String app_mode = args_mgr.Args_get("app_mode").Val_as_str_or("gui"); - String launch_url = args_mgr.Args_get("url").Val_as_str_or(null); - int server_port_recv = args_mgr.Args_get("server_port_recv").Val_as_int_or(55000); - int server_port_send = args_mgr.Args_get("server_port_send").Val_as_int_or(55001); - int http_server_port = args_mgr.Args_get("http_server_port").Val_as_int_or(8080); - String http_server_home = args_mgr.Args_get("http_server_home").Val_as_str_or("home/wiki/Main_Page"); - int http_server_max_clients = args_mgr.Args_get("http_server.max_clients").Val_as_int_or(0); - int http_server_max_clients_timeout = args_mgr.Args_get("http_server.max_clients_timeout").Val_as_int_or(50); - Xoa_app_.Op_sys_str = args_mgr.Args_get("bin_dir_name").Val_as_str_or(Bin_dir_name()); - Xoa_app_.User_agent = String_.Format("XOWA/{0} ({1}) [gnosygnu@gmail.com]", Xoa_app_.Version, Xoa_app_.Op_sys_str); - String cmd_text = args_mgr.Args_get("cmd_text").Val_as_str_or(null); - Xoa_app_type app_type = Xoa_app_type.parse(app_mode); - app_type_is_gui = app_type.Uid_is_gui(); - Xog_splash_win splash_win = new Xog_splash_win(app_type_is_gui); - - // init app - Db_conn_bldr.I.Reg_default_sqlite(); - app = new Xoae_app(usr_dlg, app_type, root_dir, wiki_dir, root_dir.GenSubDir("file"), user_dir, root_dir.GenSubDir_nest("user", "anonymous", "wiki"), Xoa_app_.Op_sys_str); - usr_dlg.Log_wkr().Queue_enabled_(false); log_wtr.Log_to_session_fmt("app.init"); - try { - app.Sys_cfg().Lang_(System_lang()); - if (launch_url != null) - app.Api_root().App().Startup().Tabs().Manual_(launch_url); - app.Tcp_server().Rdr_port_(server_port_recv).Wtr_port_(server_port_send); - gplx.xowa.servers.http.Http_server_mgr server_mgr = app.Http_server(); - server_mgr.Port_(http_server_port); - server_mgr.Home_(http_server_home); - server_mgr.Wkr_pool().Init(http_server_max_clients, http_server_max_clients_timeout); - app.Init_by_app(); chkpoint = "init_gfs"; - } - catch (Exception e) {usr_dlg.Warn_many("", "", "app init failed: ~{0} ~{1}", chkpoint, Err_.Message_gplx_full(e));} - app.Usr_dlg().Log_wkr_(app.Log_wtr()); // NOTE: log_wtr must be set for cmd-line (else process will fail); - - // run gfs - gplx.xowa.users.prefs.Prefs_rename_mgr._.Check(app.Usere().Fsys_mgr().App_data_cfg_user_fil()); - try {app.Gfs_mgr().Run_url(cmd_file); chkpoint = "run_url";} - catch (Exception e) { - usr_dlg.Warn_many("", "", "script file failed: ~{0} ~{1} ~{2}", chkpoint, cmd_file.Raw(), Err_.Message_gplx_full(e)); - if (app_type_is_gui) - GfuiEnv_.ShowMsg(Err_.Message_gplx_full(e)); - } - gplx.xowa.apps.setups.Xoa_setup_mgr.Delete_old_files(app); - - // launch - app.Launch(); chkpoint = "launch"; - if (app_type.Uid_is_tcp()) - app.Tcp_server().Run(); - else if (app_type.Uid_is_http()) - app.Http_server().Run(); - else { - if (cmd_text != null) { - gplx.xowa.servers.Gxw_html_server.Init_gui_for_server(app, null); // NOTE: must init kit else "app.shell.fetch_page" will fail; DATE:2015-04-30 - Console_adp__sys.I.Write_str_w_nl_utf8(Object_.Xto_str_strict_or_empty(app.Gfs_mgr().Run_str(cmd_text))); - } - if (app_type_is_gui) { - app.Gui_mgr().Run(splash_win); chkpoint = "run"; - } - else // teardown app, else lua will keep process running - if (gplx.xowa.xtns.scribunto.Scrib_core.Core() != null) gplx.xowa.xtns.scribunto.Scrib_core.Core().Term(); - } - } - catch (Exception e) {usr_dlg.Warn_many("", "", "app launch failed: ~{0} ~{1}", chkpoint, Err_.Message_gplx_full(e));} - finally { - if (app != null && app_type_is_gui) // only cancel if app_type_is_gui is true; (force cmd_line to end process) - app.Setup_mgr().Cmd_mgr().Canceled_y_(); - } - } - private static String Bin_dir_name() { - String rv = ""; - Op_sys op_sys = Op_sys.Cur(); - switch (op_sys.Tid()) { - case Op_sys.Tid_lnx: rv = "linux"; break; - case Op_sys.Tid_wnt: rv = "windows"; break; - case Op_sys.Tid_osx: rv = "macosx"; break; - default: throw Err_.new_unhandled("unknown platform " + Op_sys.Cur()); - } - if (op_sys.Bitness() == Op_sys.Bitness_64) rv += "_64"; + public static Xoa_gfs_mgr Gfs_mgr() {return gfs_mgr;} public static void Gfs_mgr_(Xoa_gfs_mgr v) {gfs_mgr = v;} private static Xoa_gfs_mgr gfs_mgr; + public static Gfo_usr_dlg usr_dlg_console_() { + Gfo_usr_dlg rv = new Gfo_usr_dlg_base(new Gfo_usr_dlg__log_base(), Gfo_usr_dlg__gui_.Console); + rv.Log_wkr().Queue_enabled_(true); return rv; } - private static byte[] System_lang() { - String lang_code = Env_.Env_prop__user_language(); - byte[] lang_code_bry = Bry_.new_a7(lang_code); - Xol_lang_itm lang_itm = Xol_lang_itm_.Get_by_key(lang_code_bry); - return lang_itm == null ? Xol_lang_.Key_en : lang_itm.Key(); - } } diff --git a/400_xowa/src/gplx/xowa/Xoa_app_fxt.java b/400_xowa/src/gplx/xowa/Xoa_app_fxt.java index 8f39189f0..6e49284a5 100644 --- a/400_xowa/src/gplx/xowa/Xoa_app_fxt.java +++ b/400_xowa/src/gplx/xowa/Xoa_app_fxt.java @@ -19,33 +19,33 @@ package gplx.xowa; import gplx.*; import gplx.dbs.*; import gplx.xowa.bldrs.*; import gplx.xowa.langs.*; -import gplx.xowa.nss.*; +import gplx.xowa.wikis.nss.*; import gplx.xowa.apps.*; import gplx.xowa.files.exts.*; import gplx.xowa.wikis.domains.*; public class Xoa_app_fxt { public static Xoae_app app_() { - Io_mgr.I.InitEngine_mem(); - Db_conn_bldr.I.Reg_default_mem(); + Io_mgr.Instance.InitEngine_mem(); + Db_conn_bldr.Instance.Reg_default_mem(); return app_("linux", Io_url_.mem_dir_("mem/xowa/")); } public static Xoae_app app_(String op_sys, Io_url root_dir) { Io_url user_dir = root_dir.GenSubDir_nest("user", "test_user"); - Gfo_usr_dlg__log_base._.Log_dir_(user_dir.GenSubDir_nest("tmp", "current")); - Xoae_app app = new Xoae_app(Gfo_usr_dlg_.Test(), Xoa_app_type.Itm_cmd, root_dir, root_dir.GenSubDir("wiki"), root_dir.GenSubDir("file"), user_dir, root_dir.GenSubDir_nest("user", "anonymous", "wiki"), op_sys); + Gfo_usr_dlg__log_base.Instance.Log_dir_(user_dir.GenSubDir_nest("tmp", "current")); + Xoae_app app = new Xoae_app(Gfo_usr_dlg_.Test(), Xoa_app_mode.Itm_cmd, root_dir, root_dir.GenSubDir("wiki"), root_dir.GenSubDir("file"), user_dir, root_dir.GenSubDir_nest("user", "anonymous", "wiki"), op_sys); app.Setup_mgr().Dump_mgr().Data_storage_format_(gplx.ios.Io_stream_.Tid_raw); // TEST: set data_storage_format to file, else bldr tests will fails (expects plain text) - GfsCore._.Clear(); // NOTE: must clear - GfsCore._.AddCmd(app, Xoae_app.Invk_app); // NOTE: must add app to GfsCore; app.Gfs_mgr() always adds current app to GfsCore; note this causes old test to leave behind GfsCore for new test - GfsCore._.AddCmd(app, Xoae_app.Invk_xowa); // add alias for app; DATE:2014-06-09 + GfsCore.Instance.Clear(); // NOTE: must clear + GfsCore.Instance.AddCmd(app, Xoae_app.Invk_app); // NOTE: must add app to GfsCore; app.Gfs_mgr() always adds current app to GfsCore; note this causes old test to leave behind GfsCore for new test + GfsCore.Instance.AddCmd(app, Xoae_app.Invk_xowa); // add alias for app; DATE:2014-06-09 return app; } public static Xowe_wiki wiki_nonwmf(Xoae_app app, String key) { - Xol_lang lang = new Xol_lang(app.Lang_mgr(), Xol_lang_.Key_en).Kwd_mgr__strx_(true); - Xol_lang_.Lang_init(lang); + Xol_lang_itm lang = new Xol_lang_itm(app.Lang_mgr(), Xol_lang_itm_.Key_en).Kwd_mgr__strx_(true); + Xol_lang_itm_.Lang_init(lang); return wiki_(app, key, lang); } public static Xowe_wiki wiki_tst_(Xoae_app app) {return wiki_(app, "en.wikipedia.org");} public static Xowe_wiki wiki_(Xoae_app app, String key) {return wiki_(app, key, app.Lang_mgr().Lang_en());} - public static Xowe_wiki wiki_(Xoae_app app, String key, Xol_lang lang) { + public static Xowe_wiki wiki_(Xoae_app app, String key, Xol_lang_itm lang) { Io_url wiki_dir = app.Fsys_mgr().Wiki_dir().GenSubDir(key); Xowe_wiki rv = new Xowe_wiki(app, lang, Xow_ns_mgr_.default_(lang.Case_mgr()), Xow_domain_itm_.parse(Bry_.new_u8(key)), wiki_dir); rv.File_mgr().Meta_mgr().Depth_(2); // TEST: written for 2 depth @@ -71,7 +71,7 @@ public class Xoa_app_fxt { wiki.File_mgr().Repo_mgr().Add_repo(Bry_.new_a7("src:comm"), Bry_.new_a7("trg:comm")); } public static void Init_gui(Xoae_app app, Xowe_wiki wiki) { - app.Gui_mgr().Browser_win().Init_by_kit(gplx.gfui.Mem_kit._); + app.Gui_mgr().Browser_win().Init_by_kit(gplx.gfui.Mem_kit.Instance); app.Gui_mgr().Browser_win().Tab_mgr().Tabs_new_init(wiki, Xoae_page.Empty); } public static Xob_bldr bldr_(Xoae_app app) { diff --git a/400_xowa/src/gplx/xowa/Xoa_consts.java b/400_xowa/src/gplx/xowa/Xoa_consts.java deleted file mode 100644 index e2daee7ac..000000000 --- a/400_xowa/src/gplx/xowa/Xoa_consts.java +++ /dev/null @@ -1,30 +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; import gplx.*; -public class Xoa_consts { - public static final byte[] - Nl_bry = new byte[] {Byte_ascii.Nl} - , Slash_bry = new byte[] {Byte_ascii.Slash} - , Pipe_bry = new byte[] {Byte_ascii.Pipe} - , Invk_bgn = new byte[] {Byte_ascii.Curly_bgn, Byte_ascii.Curly_bgn} // "{{" - , Invk_end = new byte[] {Byte_ascii.Curly_end, Byte_ascii.Curly_end} // "}}" - , Transclude_bgn = new byte[] {Byte_ascii.Curly_bgn, Byte_ascii.Curly_bgn, Byte_ascii.Colon} // "{{:" - , Url_relative_prefix = new byte[] {Byte_ascii.Slash, Byte_ascii.Slash} // "//" - , Url_wiki_intermediary = Bry_.new_a7("/wiki/") - ; -} diff --git a/400_xowa/src/gplx/xowa/Xoa_page.java b/400_xowa/src/gplx/xowa/Xoa_page.java index 86328a214..baddcc143 100644 --- a/400_xowa/src/gplx/xowa/Xoa_page.java +++ b/400_xowa/src/gplx/xowa/Xoa_page.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; import gplx.*; -import gplx.xowa.pages.*; +import gplx.xowa.wikis.pages.*; public interface Xoa_page { Xow_wiki Wiki(); Xoa_url Url(); diff --git a/400_xowa/src/gplx/xowa/Xoa_test_.java b/400_xowa/src/gplx/xowa/Xoa_test_.java index 3741440aa..3e75fb628 100644 --- a/400_xowa/src/gplx/xowa/Xoa_test_.java +++ b/400_xowa/src/gplx/xowa/Xoa_test_.java @@ -17,20 +17,32 @@ along with this program. If not, see . */ package gplx.xowa; import gplx.*; import gplx.dbs.*; +import gplx.core.net.*; +import gplx.xowa.wikis.data.*; import gplx.xowa.bldrs.infos.*; public class Xoa_test_ { public static boolean Db_skip() {return Bool_.N;} public static boolean Db_is_mem_dflt() {return Bool_.Y;} public static void Db_init(Io_url sqlite_url) {Db_init(Db_is_mem_dflt(), sqlite_url);} + public static void Db__init__mem(Xowe_wiki wiki) { + Db__init__mem(); + wiki.Db_mgr_create_as_sql(); + wiki.Data__core_mgr().Init_by_make(Xowd_core_db_props.Test, Xob_info_session.Test); + } + public static void Db__init__mem() { + Io_mgr.Instance.InitEngine_mem(); + Db_conn_bldr.Instance.Reg_default_mem(); + } public static void Db_init(boolean db_is_mem, Io_url sqlite_url) { - if (db_is_mem) { - Io_mgr.I.InitEngine_mem(); - Db_conn_bldr.I.Reg_default_mem(); - } + if (db_is_mem) + Db__init__mem(); else { - Io_mgr.I.DeleteDirDeep(sqlite_url); - Db_conn_bldr.I.Reg_default_sqlite(); + Io_mgr.Instance.DeleteDirDeep(sqlite_url); + Db_conn_bldr.Instance.Reg_default_sqlite(); } } + public static void Inet__init() { + Gfo_inet_conn_.new_prototype_(Gfo_inet_conn_.Tid__mem__hash); + } public static Io_url Url_root() {return Io_url_.Usr().GenSubDir_nest("xowa", "dev", "tst", "400_xowa");} public static Io_url Url_wiki_enwiki() {return Url_root().GenSubDir_nest("root", "wiki", "en.wikipedia.org");} public static Io_url Url_file_enwiki() {return Url_root().GenSubDir_nest("root", "file", "en.wikipedia.org");} diff --git a/400_xowa/src/gplx/xowa/Xoa_ttl.java b/400_xowa/src/gplx/xowa/Xoa_ttl.java index 3bb5c59af..bf230b411 100644 --- a/400_xowa/src/gplx/xowa/Xoa_ttl.java +++ b/400_xowa/src/gplx/xowa/Xoa_ttl.java @@ -17,8 +17,9 @@ along with this program. If not, see . */ package gplx.xowa; import gplx.*; import gplx.core.primitives.*; import gplx.core.btries.*; import gplx.langs.htmls.encoders.*; import gplx.xowa.wikis.xwikis.*; import gplx.xowa.langs.cases.*; -import gplx.xowa.nss.*; +import gplx.xowa.wikis.nss.*; import gplx.xowa.parsers.amps.*; import gplx.xowa.parsers.miscs.*; import gplx.xowa.wikis.ttls.*; +import gplx.xowa.apps.urls.*; public class Xoa_ttl { // PAGE:en.w:http://en.wikipedia.org/wiki/Help:Link; REF.MW: Ttl.php|secureAndSplit; public Xow_ns Ns() {return ns;} private Xow_ns ns; public boolean ForceLiteralLink() {return forceLiteralLink;} private boolean forceLiteralLink; @@ -51,16 +52,16 @@ public class Xoa_ttl { // PAGE:en.w:http://en.wikipedia.org/wiki/Help:Link; REF. public byte[] Anch_txt() {return anch_bgn == -1 ? Bry_.Empty : Bry_.Mid(full_txt, anch_bgn, full_txt.length);} public byte[] Talk_txt() {return ns.Id_talk() ? Full_txt() : Bry_.Add(tors_txt, Page_txt());} public byte[] Subj_txt() {return ns.Id_subj() ? Full_txt() : Bry_.Add(tors_txt, Page_txt());} - public byte[] Full_url() {return Xoa_url_encoder._.Encode(full_txt);} + public byte[] Full_url() {return Xoa_url_encoder.Instance.Encode(full_txt);} public String Full_db_as_str() {return String_.new_u8(Full_db());} public byte[] Full_db() {return ns.Gen_ttl(this.Page_db());} - public byte[] Page_url() {return Xoa_url_encoder._.Encode(this.Page_txt());} - public byte[] Leaf_url() {return Xoa_url_encoder._.Encode(this.Leaf_txt());} - public byte[] Base_url() {return Xoa_url_encoder._.Encode(this.Base_txt());} + public byte[] Page_url() {return Xoa_url_encoder.Instance.Encode(this.Page_txt());} + public byte[] Leaf_url() {return Xoa_url_encoder.Instance.Encode(this.Leaf_txt());} + public byte[] Base_url() {return Xoa_url_encoder.Instance.Encode(this.Base_txt());} public byte[] Root_txt() {return root_bgn == -1 ? Page_txt() : Bry_.Mid(full_txt, page_bgn, root_bgn - 1);} public byte[] Rest_txt() {return root_bgn == -1 ? Page_txt() : Bry_.Mid(full_txt, root_bgn, anch_bgn == -1 ? full_txt.length : anch_bgn - 1);} - public byte[] Talk_url() {return Xoa_url_encoder._.Encode(this.Talk_txt());} - public byte[] Subj_url() {return Xoa_url_encoder._.Encode(this.Subj_txt());} + public byte[] Talk_url() {return Xoa_url_encoder.Instance.Encode(this.Talk_txt());} + public byte[] Subj_url() {return Xoa_url_encoder.Instance.Encode(this.Subj_txt());} public int Qarg_bgn() {return qarg_bgn;} private int qarg_bgn = -1; public byte[] Qarg_txt() {return this.Qarg_bgn() == -1 ? null : Bry_.Mid(full_txt, this.Qarg_bgn(), full_txt.length);} public byte[] Base_txt_wo_qarg() { @@ -281,7 +282,7 @@ public class Xoa_ttl { // PAGE:en.w:http://en.wikipedia.org/wiki/Help:Link; REF. anchor_encoder_bfr = Bry_bfr.reset_(32); } anchor_encoder.Encode(anchor_encoder_bfr, src, cur, cur + 1); - b_ary = anchor_encoder_bfr.Xto_bry_and_clear(); + b_ary = anchor_encoder_bfr.To_bry_and_clear(); match_pos = cur + 1; } break; @@ -294,7 +295,7 @@ public class Xoa_ttl { // PAGE:en.w:http://en.wikipedia.org/wiki/Help:Link; REF. anchor_encoder_bfr = Bry_bfr.reset_(32); } anchor_encoder.Encode(anchor_encoder_bfr, src, cur, cur + 1); - b_ary = anchor_encoder_bfr.Xto_bry_and_clear(); + b_ary = anchor_encoder_bfr.To_bry_and_clear(); match_pos = cur + 1; } else { @@ -338,7 +339,7 @@ public class Xoa_ttl { // PAGE:en.w:http://en.wikipedia.org/wiki/Help:Link; REF. msg_log.Add_itm_none(Xop_ttl_log.Ttl_is_ns_only, src, bgn, end); return false; } - full_txt = bfr.Xto_bry_and_clear(); + full_txt = bfr.To_bry_and_clear(); if ( ns.Case_match() == Xow_ns_case_.Id_1st && wik_bgn == -1 ) { // do not check case if xwiki; EX: "fr:" would have a wik_bgn of 0 (and a wik_end of 3); "A" (and any non-xwiki ttl) would have a wik_bgn == -1 byte char_1st = full_txt[page_bgn]; diff --git a/400_xowa/src/gplx/xowa/Xoa_url.java b/400_xowa/src/gplx/xowa/Xoa_url.java index 7e8ac3d7c..402b88c3c 100644 --- a/400_xowa/src/gplx/xowa/Xoa_url.java +++ b/400_xowa/src/gplx/xowa/Xoa_url.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; import gplx.*; -import gplx.core.net.*; import gplx.xowa.urls.*; -import gplx.xowa.html.hrefs.*; +import gplx.core.net.*; import gplx.xowa.apps.urls.*; +import gplx.xowa.htmls.hrefs.*; public class Xoa_url { public int Tid() {return tid;} private int tid; public byte[] Raw() {return raw;} private byte[] raw = Bry_.Empty; diff --git a/400_xowa/src/gplx/xowa/Xoa_url_.java b/400_xowa/src/gplx/xowa/Xoa_url_.java index 3c567c43d..e8c1371a3 100644 --- a/400_xowa/src/gplx/xowa/Xoa_url_.java +++ b/400_xowa/src/gplx/xowa/Xoa_url_.java @@ -25,7 +25,7 @@ public class Xoa_url_ { } } public static void Invalid_warn(String url) {Xoa_app_.Usr_dlg().Plog_many("", "", "invalid url; url=~{0}", url);} - public static String Main_page__home_str = gplx.xowa.wikis.domains.Xow_domain_itm_.Str__home + gplx.xowa.html.hrefs.Xoh_href_.Str__wiki + gplx.xowa.Xoa_page_.Main_page_str; // EX:home/wiki/Main_Page + public static String Main_page__home_str = gplx.xowa.wikis.domains.Xow_domain_itm_.Str__home + gplx.xowa.htmls.hrefs.Xoh_href_.Str__wiki + gplx.xowa.Xoa_page_.Main_page_str; // EX:home/wiki/Main_Page public static final byte[] Qarg__redirect = Bry_.new_a7("redirect") , Qarg__redirect__yes = Bry_.new_a7("yes") diff --git a/400_xowa/src/gplx/xowa/Xoae_app.java b/400_xowa/src/gplx/xowa/Xoae_app.java index 587841a44..9e02df873 100644 --- a/400_xowa/src/gplx/xowa/Xoae_app.java +++ b/400_xowa/src/gplx/xowa/Xoae_app.java @@ -17,21 +17,21 @@ along with this program. If not, see . */ package gplx.xowa; import gplx.*; import gplx.core.btries.*; import gplx.core.flds.*; import gplx.ios.*; import gplx.core.threads.*; import gplx.langs.jsons.*; import gplx.core.primitives.*; import gplx.core.net.*; -import gplx.xowa.apps.*; import gplx.xowa.apps.caches.*; import gplx.xowa.apps.fsys.*; import gplx.xowa.apis.*; import gplx.xowa.apps.metas.*; import gplx.langs.htmls.encoders.*; import gplx.xowa.apps.progs.*; import gplx.xowa.apps.gfss.*; -import gplx.xowa.langs.*; import gplx.xowa.specials.*; import gplx.xowa.cfgs2.*; +import gplx.xowa.apps.*; import gplx.xowa.apps.fsys.*; import gplx.xowa.apps.site_cfgs.*; import gplx.xowa.apps.caches.*; import gplx.xowa.apps.apis.*; import gplx.xowa.apps.metas.*; import gplx.langs.htmls.encoders.*; import gplx.xowa.apps.progs.*; import gplx.xowa.apps.gfs.*; +import gplx.xowa.langs.*; import gplx.xowa.specials.*; import gplx.xowa.apps.cfgs.old.*; import gplx.xowa.bldrs.*; import gplx.xowa.bldrs.css.*; import gplx.xowa.bldrs.installs.*; import gplx.xowa.files.*; import gplx.xowa.files.caches.*; import gplx.xowa.files.imgs.*; -import gplx.xowa.wikis.*; import gplx.xowa.users.*; import gplx.xowa.gui.*; import gplx.xowa.cfgs.*; import gplx.xowa.ctgs.*; import gplx.xowa.html.tocs.*; import gplx.xowa.apps.fmtrs.*; import gplx.xowa.html.*; -import gplx.xowa.html.hrefs.*; import gplx.xowa.html.wtrs.*; import gplx.xowa.html.ns_files.*; import gplx.xowa.html.bridges.*; +import gplx.xowa.wikis.*; import gplx.xowa.users.*; import gplx.xowa.guis.*; import gplx.xowa.apps.cfgs.*; import gplx.xowa.wikis.ctgs.*; import gplx.xowa.htmls.tocs.*; import gplx.xowa.apps.fmtrs.*; import gplx.xowa.htmls.*; import gplx.xowa.wikis.xwikis.sitelinks.*; import gplx.xowa.wikis.xwikis.parsers.*; +import gplx.xowa.htmls.hrefs.*; import gplx.xowa.htmls.wtrs.*; import gplx.xowa.htmls.ns_files.*; import gplx.xowa.htmls.bridges.*; import gplx.xowa.parsers.*; import gplx.xowa.parsers.amps.*; import gplx.xowa.parsers.tblws.*; import gplx.xowa.parsers.xndes.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.scribunto.*; import gplx.xowa.xtns.math.*; -import gplx.xowa.parsers.utils.*; import gplx.xowa.parsers.logs.*; import gplx.xowa.servers.tcp.*; import gplx.xowa.servers.http.*; -import gplx.xowa.wms.*; -import gplx.xowa.tdbs.*; import gplx.xowa.tdbs.hives.*; +import gplx.xowa.parsers.utils.*; import gplx.xowa.parsers.logs.*; import gplx.xowa.apps.servers.tcp.*; import gplx.xowa.apps.servers.http.*; +import gplx.xowa.bldrs.wms.*; +import gplx.xowa.wikis.tdbs.*; import gplx.xowa.wikis.tdbs.hives.*; import gplx.xowa.wikis.xwikis.*; public class Xoae_app implements Xoa_app, GfoInvkAble { - public Xoae_app(Gfo_usr_dlg usr_dlg, Xoa_app_type app_type, Io_url root_dir, Io_url wiki_dir, Io_url file_dir, Io_url user_dir, Io_url css_dir, String bin_dir_name) { + public Xoae_app(Gfo_usr_dlg usr_dlg, Xoa_app_mode mode, Io_url root_dir, Io_url wiki_dir, Io_url file_dir, Io_url user_dir, Io_url css_dir, String bin_dir_name) { Xoa_app_.Usr_dlg_(usr_dlg); - this.app_type = app_type; + this.mode = mode; Io_url.Http_file_str_encoder = Xoa_app_.Utl__encoder_mgr().Fsys(); fsys_mgr = new Xoa_fsys_mgr(bin_dir_name, root_dir, wiki_dir, file_dir, css_dir); log_wtr = usr_dlg.Log_wkr(); @@ -64,8 +64,10 @@ public class Xoae_app implements Xoa_app, GfoInvkAble { html_mgr = new Xoh_html_mgr(this); this.html__lnki_bldr = new Xoh_lnki_bldr(this, html__href_wtr); this.html__bridge_mgr = new Xoh_bridge_mgr(utl__json_parser); + this.site_cfg_mgr = new Xoa_site_cfg_mgr(this); } - public Xoa_app_type App_type() {return app_type;} private final Xoa_app_type app_type; + public boolean Tid_is_edit() {return Bool_.Y;} + public Xoa_app_mode Mode() {return mode;} private final Xoa_app_mode mode; public Xoa_fsys_mgr Fsys_mgr() {return fsys_mgr;} private final Xoa_fsys_mgr fsys_mgr; public Xof_cache_mgr File__cache_mgr() {return file_mgr.Cache_mgr();} public Xof_img_mgr File__img_mgr() {return file_mgr.Img_mgr();} @@ -79,10 +81,16 @@ public class Xoae_app implements Xoa_app, GfoInvkAble { public Bry_bfr_mkr Utl__bfr_mkr() {return Xoa_app_.Utl__bfr_mkr();} public Url_encoder_mgr Utl__encoder_mgr() {return Xoa_app_.Utl__encoder_mgr();} public Json_parser Utl__json_parser() {return utl__json_parser;} private final Json_parser utl__json_parser = new Json_parser(); - public Gfo_inet_conn Utl__inet_conn() {return inet_conn;} public void Utl__inet_conn_(Gfo_inet_conn v) {this.inet_conn = v;} private Gfo_inet_conn inet_conn = Gfo_inet_conn_.new_http(); + public Gfo_inet_conn Utl__inet_conn() {return inet_conn;} private final Gfo_inet_conn inet_conn = Gfo_inet_conn_.new_(); public Xoa_meta_mgr Meta_mgr() {return meta_mgr;} private final Xoa_meta_mgr meta_mgr; public boolean Bldr__running() {return bldr__running;} public void Bldr__running_(boolean v) {this.bldr__running = v;} private boolean bldr__running; public Xoa_parser_mgr Parser_mgr() {return parser_mgr;} private final Xoa_parser_mgr parser_mgr = new Xoa_parser_mgr(); + public Xoa_site_cfg_mgr Site_cfg_mgr() {return site_cfg_mgr;} private final Xoa_site_cfg_mgr site_cfg_mgr; + public Xoa_sitelink_mgr Xwiki_mgr__sitelink_mgr() {return xwiki_mgr__sitelink_mgr;} private final Xoa_sitelink_mgr xwiki_mgr__sitelink_mgr = new Xoa_sitelink_mgr(); + public boolean Xwiki_mgr__missing(byte[] wiki_key) {return user.Wiki().Xwiki_mgr().Get_by_key(wiki_key) == null;} // NOTE: only the user_wiki has a full list of all wikis b/c it has xwiki objects; wiki_mgr does not, b/c it has heavier wiki objects which are loaded dynamically; + public boolean Xwiki_mgr__exists(byte[] wiki_key) {return user.Wiki().Xwiki_mgr().Get_by_key(wiki_key) != null;} + public Xow_xwiki_itm_parser Xwiki_mgr__itm_parser() {return xwiki_mgr__itm_parser;} private final Xow_xwiki_itm_parser xwiki_mgr__itm_parser = new Xow_xwiki_itm_parser(); + public Xoae_wiki_mgr Wiki_mgr() {return wiki_mgr;} private Xoae_wiki_mgr wiki_mgr; public Xoa_wiki_mgr Wiki_mgri() {return wiki_mgr;} @@ -105,7 +113,6 @@ public class Xoae_app implements Xoa_app, GfoInvkAble { public Xoa_thread_mgr Thread_mgr() {return thread_mgr;} private Xoa_thread_mgr thread_mgr = new Xoa_thread_mgr(); public Xoa_hive_mgr Hive_mgr() {return hive_mgr;} private Xoa_hive_mgr hive_mgr; public Xop_sanitizer Sanitizer() {return sanitizer;} private Xop_sanitizer sanitizer; - public Xop_xatr_parser Xatr_parser() {return xatr_parser;} private Xop_xatr_parser xatr_parser = new Xop_xatr_parser(); public Xof_math_subst_regy Math_subst_regy() {return math_subst_regy;} private Xof_math_subst_regy math_subst_regy = new Xof_math_subst_regy(); public Xoa_prog_mgr Prog_mgr() {return prog_mgr;} private final Xoa_prog_mgr prog_mgr = new Xoa_prog_mgr(); public Gfo_async_mgr Async_mgr() {return async_mgr;} private Gfo_async_mgr async_mgr = new Gfo_async_mgr(); @@ -120,8 +127,6 @@ public class Xoae_app implements Xoa_app, GfoInvkAble { public Gfo_log_bfr Log_bfr() {return log_bfr;} private Gfo_log_bfr log_bfr = new Gfo_log_bfr(); public Xoa_sys_cfg Sys_cfg() {return sys_cfg;} private Xoa_sys_cfg sys_cfg; public Bry_fmtr Tmp_fmtr() {return tmp_fmtr;} Bry_fmtr tmp_fmtr = Bry_fmtr.new_(""); - public boolean Xwiki_mgr__missing(byte[] wiki_key) {return user.Wiki().Xwiki_mgr().Get_by_key(wiki_key) == null;} // NOTE: only the user_wiki has a full list of all wikis b/c it has xwiki objects; wiki_mgr does not, b/c it has heavier wiki objects which are loaded dynamically; - public boolean Xwiki_mgr__exists(byte[] wiki_key) {return user.Wiki().Xwiki_mgr().Get_by_key(wiki_key) != null;} public Xoa_ctg_mgr Ctg_mgr() {return ctg_mgr;} private Xoa_ctg_mgr ctg_mgr = new Xoa_ctg_mgr(); public Xoa_fsys_eval Url_cmd_eval() {return url_cmd_eval;} Xoa_fsys_eval url_cmd_eval; public Xoa_cur Cur_redirect() {return cur_redirect;} private Xoa_cur cur_redirect; @@ -132,7 +137,7 @@ public class Xoae_app implements Xoa_app, GfoInvkAble { public Xosrv_server Tcp_server() {return tcp_server;} private Xosrv_server tcp_server = new Xosrv_server(); public Http_server_mgr Http_server() {return http_server;} private Http_server_mgr http_server; - public Xop_amp_mgr Parser_amp_mgr() {return parser_amp_mgr;} private Xop_amp_mgr parser_amp_mgr = Xop_amp_mgr.I; + public Xop_amp_mgr Parser_amp_mgr() {return parser_amp_mgr;} private Xop_amp_mgr parser_amp_mgr = Xop_amp_mgr.Instance; private Xoa_fmtr_mgr fmtr_mgr; public Number_parser Utl_num_parser() {return utl_num_parser;} private Number_parser utl_num_parser = new Number_parser(); @@ -144,7 +149,7 @@ public class Xoae_app implements Xoa_app, GfoInvkAble { gui_mgr.Init_by_app(); html__css_installer.Init_by_app(this); wiki_mgr.Init_by_app(); - gplx.xowa.utls.upgrades.Xoa_upgrade_mgr.Check(this); + gplx.xowa.bldrs.setups.upgrades.Xoa_upgrade_mgr.Check(this); ctg_mgr.Init_by_app(this); setup_mgr.Init_by_app(this); thread_mgr.Usr_dlg_(Xoa_app_.Usr_dlg()); @@ -155,9 +160,10 @@ public class Xoae_app implements Xoa_app, GfoInvkAble { public boolean Launch_done() {return stage == Xoa_stage_.Tid_launch;} public void Launch() { if (Launch_done()) return; + xwiki_mgr__sitelink_mgr.Init_by_app(); stage = Xoa_stage_.Tid_launch; user.Cfg_mgr().Setup_mgr().Setup_run_check(this); log_bfr.Add("app.upgrade.done"); - gplx.xowa.users.prefs.Prefs_converter._.Check(this); + gplx.xowa.users.prefs.Prefs_converter.Instance.Check(this); user.Wiki().Init_assert(); // NOTE: must assert wiki and load langs first, else will be asserted during Portal_mgr().Init(), which will cause IndexOutOfBounds; DATE:2014-10-04 } public byte Stage() {return stage;} public Xoae_app Stage_(byte v) {stage = v; return this;} private byte stage = Xoa_stage_.Tid_ctor; @@ -215,7 +221,9 @@ public class Xoae_app implements Xoa_app, GfoInvkAble { else if (ctx.Match(k, Invk_xowa)) return this; else if (ctx.Match(k, Invk_fmtrs)) return fmtr_mgr; else if (ctx.Match(k, Invk_cfg)) return cfg_regy; + else if (ctx.Match(k, Invk_xwiki_langs_load)) xwiki_mgr__sitelink_mgr.Parse(m.ReadBry("v")); else return GfoInvkAble_.Rv_unhandled; + return this; } public static final String Invk_gui = "gui", Invk_bldr = "bldr", Invk_wikis = "wikis", Invk_files = "files", Invk_langs = "langs", Invk_users = "users" , Invk_sys_cfg = "sys_cfg", Invk_fsys = "fsys", Invk_cur = "cur", Invk_shell = "shell", Invk_log = "log" @@ -225,6 +233,7 @@ public class Xoae_app implements Xoa_app, GfoInvkAble { , Invk_fmtrs = "fmtrs" , Invk_cfg = "cfg" , Invk_api = "api" + , Invk_xwiki_langs_load = "xwiki_langs_load" ; public static final String Invk_term_cbk = "term_cbk"; } diff --git a/400_xowa/src/gplx/xowa/Xoae_page.java b/400_xowa/src/gplx/xowa/Xoae_page.java index 3c08060f2..b3dec64b1 100644 --- a/400_xowa/src/gplx/xowa/Xoae_page.java +++ b/400_xowa/src/gplx/xowa/Xoae_page.java @@ -17,9 +17,9 @@ along with this program. If not, see . */ package gplx.xowa; import gplx.*; import gplx.xowa.langs.*; -import gplx.xowa.gui.*; import gplx.xowa.gui.views.*; import gplx.xowa.html.*; import gplx.xowa.pages.*; -import gplx.xowa.files.*; import gplx.xowa.files.xfers.*; import gplx.xowa.xtns.cite.*; import gplx.xowa.xtns.wdatas.*; import gplx.xowa.parsers.lnkis.redlinks.*; import gplx.xowa.html.tocs.*; -import gplx.xowa.html.modules.popups.*; import gplx.xowa.html.hdumps.pages.*; import gplx.xowa.xtns.wdatas.pfuncs.*; +import gplx.xowa.guis.*; import gplx.xowa.guis.views.*; import gplx.xowa.htmls.*; import gplx.xowa.wikis.pages.*; +import gplx.xowa.files.*; import gplx.xowa.files.xfers.*; import gplx.xowa.xtns.cite.*; import gplx.xowa.xtns.wdatas.*; import gplx.xowa.parsers.lnkis.redlinks.*; import gplx.xowa.htmls.tocs.*; +import gplx.xowa.htmls.modules.popups.*; import gplx.xowa.htmls.hdumps.pages.*; import gplx.xowa.xtns.wdatas.pfuncs.*; import gplx.xowa.parsers.*; public class Xoae_page implements Xoa_page { Xoae_page(Xowe_wiki wiki, Xoa_ttl ttl) { @@ -40,7 +40,7 @@ public class Xoae_page implements Xoa_page { public Xopg_revision_data Revision_data() {return revision_data;} private Xopg_revision_data revision_data = new Xopg_revision_data(); public Xowe_wiki Wikie() {return wiki;} private Xowe_wiki wiki; public Xopg_redlink_lnki_list Redlink_lnki_list() {return redlink_lnki_list;} private Xopg_redlink_lnki_list redlink_lnki_list; - public Xol_lang Lang() {return lang;} public Xoae_page Lang_(Xol_lang v) {lang = v; return this;} private Xol_lang lang; + public Xol_lang_itm Lang() {return lang;} public Xoae_page Lang_(Xol_lang_itm v) {lang = v; return this;} private Xol_lang_itm lang; public Xopg_html_data Html_data() {return html_data;} private Xopg_html_data html_data = new Xopg_html_data(); public Xopg_tab_data Tab_data() {return tab_data;} private final Xopg_tab_data tab_data = new Xopg_tab_data(); public Xopg_hdump_data Hdump_data() {return hdump_data;} private final Xopg_hdump_data hdump_data = new Xopg_hdump_data(); diff --git a/400_xowa/src/gplx/xowa/Xop_fxt.java b/400_xowa/src/gplx/xowa/Xop_fxt.java index a343eabfc..1c30ebc7f 100644 --- a/400_xowa/src/gplx/xowa/Xop_fxt.java +++ b/400_xowa/src/gplx/xowa/Xop_fxt.java @@ -17,12 +17,12 @@ along with this program. If not, see . */ package gplx.xowa; import gplx.*; import gplx.core.tests.*; -import gplx.xowa.cfgs.*; -import gplx.xowa.langs.*; import gplx.xowa.html.*; +import gplx.xowa.apps.cfgs.*; +import gplx.xowa.langs.*; import gplx.xowa.langs.kwds.*; import gplx.xowa.htmls.*; import gplx.xowa.parsers.*; import gplx.xowa.parsers.amps.*; import gplx.xowa.parsers.apos.*; import gplx.xowa.parsers.hdrs.*; import gplx.xowa.parsers.lists.*; import gplx.xowa.parsers.paras.*; import gplx.xowa.parsers.xndes.*; import gplx.xowa.parsers.tmpls.*; import gplx.xowa.parsers.miscs.*; import gplx.xowa.parsers.tblws.*; import gplx.xowa.parsers.lnkes.*; import gplx.xowa.parsers.lnkis.*; import gplx.xowa.files.exts.*; import gplx.xowa.files.repos.*; -import gplx.xowa.nss.*; -import gplx.xowa.tdbs.hives.*; +import gplx.xowa.wikis.nss.*; +import gplx.xowa.wikis.tdbs.hives.*; public class Xop_fxt { public Xop_fxt() { Xoae_app app = Xoa_app_fxt.app_(); @@ -57,7 +57,7 @@ public class Xop_fxt { public Xop_ctx Ctx() {return ctx;} private Xop_ctx ctx; public Xop_parser Parser() {return parser;} private Xop_parser parser; public Xoae_page Page() {return ctx.Cur_page();} - public void Lang_by_id_(int id) {ctx.Cur_page().Lang_(wiki.Appe().Lang_mgr().Get_by_key_or_new(Xol_lang_itm_.Get_by_id(id).Key()));} + public void Lang_by_id_(int id) {ctx.Cur_page().Lang_(wiki.Appe().Lang_mgr().Get_by_or_new(Xol_lang_stub_.Get_by_id(id).Key()));} public Xoh_html_wtr_cfg Wtr_cfg() {return hdom_wtr.Cfg();} private Xoh_html_wtr hdom_wtr; public Xop_fxt Reset() { ctx.Clear(); @@ -65,12 +65,12 @@ public class Xop_fxt { ctx.Cur_page().Clear(); wiki.Db_mgr().Load_mgr().Clear(); app.Wiki_mgr().Clear(); - Io_mgr.I.InitEngine_mem(); // clear created pages + Io_mgr.Instance.InitEngine_mem(); // clear created pages wiki.Cfg_parser().Display_title_restrict_(false); // default to false, as a small number of tests assume restrict = false; return this; } public Xop_fxt Reset_for_msgs() { - Io_mgr.I.InitEngine_mem(); + Io_mgr.Instance.InitEngine_mem(); wiki.Lang().Msg_mgr().Clear(); // need to clear out lang wiki.Msg_mgr().Clear(); // need to clear out wiki.Msgs this.Reset(); @@ -198,13 +198,13 @@ public class Xop_fxt { return this; } public Xop_fxt Init_xwiki_add_wiki_and_user_(String alias, String domain) { - wiki.Xwiki_mgr().Add_full(alias, domain); - app.Usere().Wiki().Xwiki_mgr().Add_full(domain, domain); + wiki.Xwiki_mgr().Add_by_atrs(alias, domain); + app.Usere().Wiki().Xwiki_mgr().Add_by_atrs(domain, domain); return this; } public Xop_fxt Init_xwiki_add_user_(String domain) {return Init_xwiki_add_user_(domain, domain);} public Xop_fxt Init_xwiki_add_user_(String alias, String domain) { - app.Usere().Wiki().Xwiki_mgr().Add_full(alias, domain); + app.Usere().Wiki().Xwiki_mgr().Add_by_atrs(alias, domain); return this; } public void Test_parse_template(String tmpl_raw, String expd) {Test_parse_tmpl_str_test(tmpl_raw, "{{test}}", expd);} @@ -282,7 +282,7 @@ public class Xop_fxt { Xop_root_tkn root = Exec_parse_page_all_as_root(Bry_.new_u8(raw)); Bry_bfr actl_bfr = Bry_bfr.new_(); hdom_wtr.Write_all(actl_bfr, ctx, root.Root_src(), root); - return actl_bfr.Xto_str_and_clear(); + return actl_bfr.To_str_and_clear(); } public String Exec_parse_page_wiki_as_str(String raw) { byte[] raw_bry = Bry_.new_u8(raw); @@ -290,7 +290,7 @@ public class Xop_fxt { parser.Parse_wtxt_to_wdom(root, ctx, tkn_mkr, raw_bry, Xop_parser_.Doc_bgn_bos); Bry_bfr actl_bfr = Bry_bfr.new_(); hdom_wtr.Write_all(actl_bfr, ctx, raw_bry, root); - return actl_bfr.Xto_str_and_clear(); + return actl_bfr.To_str_and_clear(); } private void Parse_chk(byte[] raw_bry, Xop_root_tkn root, Tst_chkr[] expd_ary) { int subs_len = root.Subs_len(); @@ -350,8 +350,8 @@ public class Xop_fxt { } public static void Reg_xwiki_alias(Xowe_wiki wiki, String alias, String domain) { byte[] domain_bry = Bry_.new_a7(domain); - wiki.Xwiki_mgr().Add_full(Bry_.new_a7(alias), domain_bry, Bry_.Add(domain_bry, Bry_.new_a7("/wiki/~{0}"))); - wiki.Appe().Usere().Wiki().Xwiki_mgr().Add_full(domain_bry, domain_bry); + wiki.Xwiki_mgr().Add_by_atrs(Bry_.new_a7(alias), domain_bry, Bry_.Add(domain_bry, Bry_.new_a7("/wiki/~{0}"))); + wiki.Appe().Usere().Wiki().Xwiki_mgr().Add_by_atrs(domain_bry, domain_bry); } public static String html_img_none(String trg, String alt, String src, String ttl) { return String_.Format(String_.Concat_lines_nl_skip_last("\"{1}\""), trg, alt, src, ttl); @@ -386,16 +386,16 @@ public class Xop_fxt { public void Test_html_modules_js(String expd) { Bry_bfr bfr = app.Utl__bfr_mkr().Get_k004(); this.Page().Html_data().Head_mgr().Init(app, wiki, this.Page()); - this.Page().Html_data().Head_mgr().XferAry(bfr, 0); + this.Page().Html_data().Head_mgr().Fmt__do(bfr); bfr.Mkr_rls(); - Tfds.Eq_str_lines(expd, bfr.Xto_str_and_clear()); + Tfds.Eq_str_lines(expd, bfr.To_str_and_clear()); } private Tst_mgr tst_mgr = new Tst_mgr(); private Xop_tkn_mkr tkn_mkr; public static final String Ttl_str = "Test page"; public Xop_fxt Init_lang_numbers_separators_en() {return Init_lang_numbers_separators(",", ".");} public Xop_fxt Init_lang_numbers_separators(String grp_spr, String dec_spr) {return Init_lang_numbers_separators(wiki.Lang(), grp_spr, dec_spr);} - public Xop_fxt Init_lang_numbers_separators(Xol_lang lang, String grp_spr, String dec_spr) { + public Xop_fxt Init_lang_numbers_separators(Xol_lang_itm lang, String grp_spr, String dec_spr) { gplx.xowa.langs.numbers.Xol_transform_mgr separator_mgr = lang.Num_mgr().Separators_mgr(); separator_mgr.Clear(); separator_mgr.Set(gplx.xowa.langs.numbers.Xol_num_mgr.Separators_key__grp, Bry_.new_u8(grp_spr)); @@ -403,13 +403,13 @@ public class Xop_fxt { return this; } public void Init_lang_kwds(int kwd_id, boolean case_match, String... kwds) {Init_lang_kwds(wiki.Lang(), kwd_id, case_match, kwds);} - public void Init_lang_kwds(Xol_lang lang, int kwd_id, boolean case_match, String... kwds) { + public void Init_lang_kwds(Xol_lang_itm lang, int kwd_id, boolean case_match, String... kwds) { Xol_kwd_mgr kwd_mgr = lang.Kwd_mgr(); Xol_kwd_grp kwd_grp = kwd_mgr.Get_or_new(kwd_id); kwd_grp.Srl_load(case_match, Bry_.Ary(kwds)); } public void Init_xtn_pages() { - Io_mgr.I.InitEngine_mem(); + Io_mgr.Instance.InitEngine_mem(); wiki.Xtn_mgr().Xtn_proofread().Enabled_y_(); wiki.Db_mgr().Load_mgr().Clear(); // must clear; otherwise fails b/c files get deleted, but wiki.data_mgr caches the Xowd_regy_mgr (the .reg file) in memory; wiki.Ns_mgr().Add_new(Xowc_xtn_pages.Ns_page_id_default, "Page").Add_new(Xowc_xtn_pages.Ns_index_id_default, "Index").Init(); diff --git a/400_xowa/src/gplx/xowa/Xow_wiki.java b/400_xowa/src/gplx/xowa/Xow_wiki.java index 5fe48e3a9..f9ddc1ca6 100644 --- a/400_xowa/src/gplx/xowa/Xow_wiki.java +++ b/400_xowa/src/gplx/xowa/Xow_wiki.java @@ -20,16 +20,16 @@ import gplx.core.primitives.*; import gplx.xowa.langs.*; import gplx.xowa.wikis.*; import gplx.xowa.wikis.domains.*; import gplx.xowa.wikis.metas.*; import gplx.xowa.wikis.ttls.*; import gplx.xowa.wikis.data.*; import gplx.xowa.wikis.xwikis.*; import gplx.xowa.files.*; import gplx.xowa.files.repos.*; import gplx.xowa.files.origs.*; import gplx.xowa.files.bins.*; import gplx.fsdb.meta.*; import gplx.fsdb.*; -import gplx.xowa.html.*; import gplx.xowa.html.wtrs.*; import gplx.xowa.html.hzips.*; import gplx.xowa.html.hdumps.*; import gplx.xowa.html.bridges.dbuis.tbls.*; +import gplx.xowa.htmls.*; import gplx.xowa.htmls.wtrs.*; import gplx.xowa.htmls.hzips.*; import gplx.xowa.htmls.hdumps.*; import gplx.xowa.htmls.bridges.dbuis.tbls.*; import gplx.xowa.parsers.*; -import gplx.xowa.urls.*; -public interface Xow_wiki extends Xow_ttl_parser { +import gplx.xowa.apps.urls.*; +public interface Xow_wiki extends Xow_ttl_parser, GfoInvkAble { boolean Type_is_edit(); Xoa_app App(); - Xol_lang Lang(); + Xol_lang_itm Lang(); byte[] Domain_bry(); // EX: en.wikipedia.org String Domain_str(); - int Domain_tid(); // Xow_domain_type_.Int__wikipedia + int Domain_tid(); // Xow_domain_tid_.Int__wikipedia byte[] Domain_abrv(); // enwiki Xow_domain_itm Domain_itm(); Xow_fsys_mgr Fsys_mgr(); @@ -43,7 +43,7 @@ public interface Xow_wiki extends Xow_ttl_parser { boolean Html__hdump_enabled(); Xow_hzip_mgr Html__hzip_mgr(); Xohd_hdump_rdr Html__hdump_rdr(); - Xoh_page_wtr_mgr_base Html__page_wtr_mgr(); + Xoh_page_wtr_mgr Html__wtr_mgr(); boolean Html__css_installing(); void Html__css_installing_(boolean v); Xow_mw_parser_mgr Mw_parser_mgr(); Xow_xwiki_mgr Xwiki_mgr(); diff --git a/400_xowa/src/gplx/xowa/Xowe_wiki.java b/400_xowa/src/gplx/xowa/Xowe_wiki.java index 78ca5c9b7..3e0ef02ae 100644 --- a/400_xowa/src/gplx/xowa/Xowe_wiki.java +++ b/400_xowa/src/gplx/xowa/Xowe_wiki.java @@ -17,26 +17,26 @@ along with this program. If not, see . */ package gplx.xowa; import gplx.*; import gplx.core.primitives.*; -import gplx.xowa.apps.*; import gplx.xowa.apps.fsys.*; import gplx.xowa.cfgs.*; import gplx.xowa.cfgs.gui.*; import gplx.xowa.urls.*; +import gplx.xowa.apps.*; import gplx.xowa.apps.fsys.*; import gplx.xowa.apps.cfgs.*; import gplx.xowa.apps.cfgs.gui.*; import gplx.xowa.apps.urls.*; import gplx.xowa.langs.*; import gplx.xowa.langs.msgs.*; -import gplx.xowa.wikis.*; import gplx.xowa.wikis.domains.*; import gplx.xowa.wikis.xwikis.*; import gplx.xowa.nss.*; import gplx.xowa.wikis.metas.*; import gplx.xowa.wikis.ttls.*; import gplx.xowa.wikis.data.*; import gplx.xowa.wikis.data.tbls.*; import gplx.xowa.wikis.caches.*; -import gplx.xowa.users.*; import gplx.xowa.html.*; import gplx.xowa.users.history.*; import gplx.xowa.specials.*; import gplx.xowa.xtns.*; import gplx.xowa.dbs.*; +import gplx.xowa.wikis.*; import gplx.xowa.wikis.domains.*; import gplx.xowa.wikis.xwikis.*; import gplx.xowa.wikis.nss.*; import gplx.xowa.wikis.metas.*; import gplx.xowa.wikis.ttls.*; import gplx.xowa.wikis.data.*; import gplx.xowa.wikis.data.tbls.*; import gplx.xowa.wikis.caches.*; +import gplx.xowa.users.*; import gplx.xowa.htmls.*; import gplx.xowa.users.history.*; import gplx.xowa.specials.*; import gplx.xowa.xtns.*; import gplx.xowa.wikis.dbs.*; import gplx.xowa.files.*; import gplx.xowa.files.repos.*; import gplx.xowa.files.origs.*; import gplx.xowa.files.bins.*; import gplx.fsdb.*; import gplx.fsdb.meta.*; import gplx.xowa.files.exts.*; -import gplx.xowa.html.heads.*; import gplx.xowa.html.wtrs.*; import gplx.xowa.html.hzips.*; import gplx.xowa.html.hdumps.*; import gplx.xowa.html.css.*; import gplx.xowa.html.ns_files.*; import gplx.xowa.html.bridges.dbuis.tbls.*; -import gplx.xowa.bldrs.xmls.*; import gplx.xowa.bldrs.installs.*; import gplx.xowa.setup.maints.*; +import gplx.xowa.htmls.heads.*; import gplx.xowa.htmls.wtrs.*; import gplx.xowa.htmls.hzips.*; import gplx.xowa.htmls.hdumps.*; import gplx.xowa.htmls.css.*; import gplx.xowa.htmls.ns_files.*; import gplx.xowa.htmls.bridges.dbuis.tbls.*; +import gplx.xowa.bldrs.xmls.*; import gplx.xowa.bldrs.installs.*; import gplx.xowa.bldrs.setups.maints.*; import gplx.xowa.parsers.*; import gplx.xowa.parsers.utils.*; -import gplx.xowa.gui.views.*; +import gplx.xowa.guis.views.*; import gplx.xowa.xtns.gallery.*; import gplx.xowa.xtns.pfuncs.*; -import gplx.xowa.tdbs.*; import gplx.xowa.tdbs.hives.*; +import gplx.xowa.wikis.tdbs.*; import gplx.xowa.wikis.tdbs.hives.*; public class Xowe_wiki implements Xow_wiki, GfoInvkAble, GfoEvObj { private boolean init_in_process = false; - public Xowe_wiki(Xoae_app app, Xol_lang lang, Xow_ns_mgr ns_mgr, Xow_domain_itm domain_itm, Io_url wiki_dir) { + public Xowe_wiki(Xoae_app app, Xol_lang_itm lang, Xow_ns_mgr ns_mgr, Xow_domain_itm domain_itm, Io_url wiki_dir) { this.ev_mgr = GfoEvMgr.new_(this); this.app = app; this.lang = lang; this.ns_mgr = ns_mgr; this.domain_itm = domain_itm; this.domain_str = domain_itm.Domain_str(); this.domain_bry = domain_itm.Domain_bry(); this.domain_tid = domain_itm.Domain_type_id(); this.domain_abrv = Xow_abrv_wm_.To_abrv(domain_itm); this.fsys_mgr = new Xow_fsys_mgr(wiki_dir, app.Fsys_mgr().File_dir().GenSubDir(domain_str)); this.url__parser = new Xoa_url_parser(this); - this.xwiki_mgr = new Xow_xwiki_mgr(this, url__parser.Url_parser()); + this.xwiki_mgr = new Xow_xwiki_mgr(this); this.html_mgr = new Xow_html_mgr(this); this.html_mgr__hdump_rdr = new Xohd_hdump_rdr(app, this); this.html_mgr__hdump_wtr = new Xohd_hdump_wtr(app, this); @@ -61,19 +61,19 @@ public class Xowe_wiki implements Xow_wiki, GfoInvkAble, GfoEvObj { eval_mgr = new Bfmtr_eval_wiki(this); fragment_mgr = new Xow_fragment_mgr(this); xtn_mgr = new Xow_xtn_mgr().Ctor_by_wiki(this); - if (domain_tid == Xow_domain_type_.Int__home) { - wdata_wiki_tid = Xow_domain_type_.Int__wikipedia; - wdata_wiki_lang = Xol_lang_.Key_en; + if (domain_tid == Xow_domain_tid_.Int__home) { + wdata_wiki_tid = Xow_domain_tid_.Int__wikipedia; + wdata_wiki_lang = Xol_lang_itm_.Key_en; } else { wdata_wiki_tid = domain_tid; wdata_wiki_lang = domain_itm.Lang_orig_key(); // NOTE: must use orig_key for nowiki; "no" not "nb" DATE:2014-10-07 } Wdata_wiki_abrv_(); - db_mgr = new gplx.xowa.dbs.Xodb_mgr_txt(this, data_mgr); + db_mgr = new gplx.xowa.wikis.dbs.Xodb_mgr_txt(this, data_mgr); maint_mgr = new Xow_maint_mgr(this); cache_mgr = new Xow_cache_mgr(this); - /*if (Bry_.Eq(domain_bry, Xow_domain_itm_.Bry__home))*/ xwiki_mgr.Add_full(domain_bry, domain_bry); // add full name to xwiki_mgr; needed for lookup in home ns; EX: [[home:Help/Contents]] + /*if (Bry_.Eq(domain_bry, Xow_domain_itm_.Bry__home))*/ xwiki_mgr.Add_by_atrs(domain_bry, domain_bry); // add full name to xwiki_mgr; needed for lookup in home ns; EX: [[home:Help/Contents]] } public GfoEvMgr EvMgr() {return ev_mgr;} private final GfoEvMgr ev_mgr; public Xow_ns_mgr Ns_mgr() {return ns_mgr;} private final Xow_ns_mgr ns_mgr; @@ -81,7 +81,7 @@ public class Xowe_wiki implements Xow_wiki, GfoInvkAble, GfoEvObj { public Xoa_ttl Ttl_parse(int ns_id, byte[] ttl) {return Xoa_ttl.parse(this, ns_id, ttl);} public boolean Type_is_edit() {return Bool_.Y;} public Xoa_app App() {return app;} - public Xol_lang Lang() {return lang;} private final Xol_lang lang; + public Xol_lang_itm Lang() {return lang;} private final Xol_lang_itm lang; public byte[] Domain_bry() {return domain_bry;} private final byte[] domain_bry; public String Domain_str() {return domain_str;} private final String domain_str; public int Domain_tid() {return domain_tid;} private final int domain_tid; @@ -98,7 +98,7 @@ public class Xowe_wiki implements Xow_wiki, GfoInvkAble, GfoEvObj { public boolean Html__hdump_enabled() {return html_mgr__hdump_enabled;} private boolean html_mgr__hdump_enabled = Bool_.N; public Xow_hzip_mgr Html__hzip_mgr() {return html_mgr.Hzip_mgr();} public Xohd_hdump_rdr Html__hdump_rdr() {return html_mgr__hdump_rdr;} private final Xohd_hdump_rdr html_mgr__hdump_rdr; - public Xoh_page_wtr_mgr_base Html__page_wtr_mgr() {return html_mgr.Page_wtr_mgr();} + public Xoh_page_wtr_mgr Html__wtr_mgr() {return html_mgr.Page_wtr_mgr();} public boolean Html__css_installing() {return html__css_installing;} public void Html__css_installing_(boolean v) {html__css_installing = v;} private boolean html__css_installing; public Xoa_url_parser Utl__url_parser() {return url__parser;} private final Xoa_url_parser url__parser; public Xow_mw_parser_mgr Mw_parser_mgr() {return mw_parser_mgr;} private final Xow_mw_parser_mgr mw_parser_mgr = new Xow_mw_parser_mgr(); @@ -182,10 +182,10 @@ public class Xowe_wiki implements Xow_wiki, GfoInvkAble, GfoEvObj { if (!app.Bldr().Import_marker().Chk(this)) {app.Wiki_mgr().Del(domain_bry); init_needed = false; return;} // NOTE: must call after Db_mgr_create_as_sql(); also, must delete wiki from mgr; DATE:2014-08-24 db_mgr.Load_mgr().Load_init(this); app.Gfs_mgr().Run_url_for(this, tdb_fsys_mgr.Cfg_wiki_core_fil()); - gplx.xowa.utls.upgrades.Xoa_upgrade_mgr.Check(this); + gplx.xowa.bldrs.setups.upgrades.Xoa_upgrade_mgr.Check(this); // init ns_mgr if (lang.Init_by_load()) { - if (domain_tid == Xow_domain_type_.Int__wikipedia) // NOTE: if type is wikipedia, add "Wikipedia" as an alias; PAGE:en.w:pt.wikipedia.org/wiki/Página principal which redirects to Wikipedia:Página principal + if (domain_tid == Xow_domain_tid_.Int__wikipedia) // NOTE: if type is wikipedia, add "Wikipedia" as an alias; PAGE:en.w:pt.wikipedia.org/wiki/Página principal which redirects to Wikipedia:Página principal ns_mgr.Aliases_add(Xow_ns_.Id_project, Xow_ns_.Ns_name_wikipedia); } app.Gfs_mgr().Run_url_for(this, app.Fsys_mgr().Cfg_wiki_core_dir().GenSubFil(domain_str + ".gfs")); // NOTE: must be run after lang.Init_by_load b/c lang will reload ns_mgr; DATE:2015-04-17run cfg for wiki by user ; EX: /xowa/user/anonymous/wiki/en.wikipedia.org/cfg/user_wiki.gfs @@ -195,7 +195,6 @@ public class Xowe_wiki implements Xow_wiki, GfoInvkAble, GfoEvObj { fragment_mgr.Evt_lang_changed(lang); parser_mgr.Main().Init_by_lang(lang); html_mgr.Init_by_lang(lang); - lang.Vnt_mgr().Init_by_wiki(this); // other init Bry_fmtr.Null.Eval_mgr().Enabled_(false); app.Wiki_mgr().Scripts().Exec(this); Bry_fmtr.Null.Eval_mgr().Enabled_(true); app.Html__css_installer().Install(this, Xowd_css_core_mgr.Key_default); @@ -208,7 +207,7 @@ public class Xowe_wiki implements Xow_wiki, GfoInvkAble, GfoEvObj { app.Log_wtr().Log_to_session_direct(log_bfr.Xto_str()); init_in_process = false; app.Api_root().Wikis().Get(domain_bry).Subscribe(this); - app.Meta_mgr().Init_by_wiki(this); + app.Site_cfg_mgr().Load(this); } private void Html__hdump_enabled_(boolean v) { this.html_mgr__hdump_enabled = v; @@ -229,7 +228,6 @@ public class Xowe_wiki implements Xow_wiki, GfoInvkAble, GfoEvObj { private void Copy_cfg(Xowe_wiki wiki) {html_mgr.Copy_cfg(wiki.Html_mgr());} public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { if (ctx.Match(k, Invk_files)) return file_mgr; - else if (ctx.Match(k, Invk_xwikis)) return xwiki_mgr; else if (ctx.Match(k, Invk_stats)) return stats; else if (ctx.Match(k, Invk_props)) return props; else if (ctx.Match(k, Invk_cfg_gallery_)) return cfg_gallery; @@ -255,12 +253,12 @@ public class Xowe_wiki implements Xow_wiki, GfoInvkAble, GfoEvObj { else if (ctx.Match(k, Invk_domain)) return domain_str; else if (ctx.Match(k, Invk_xtns)) return xtn_mgr; else if (ctx.Match(k, Invk_hdump_enabled_)) this.html_mgr__hdump_enabled = m.ReadYn("v"); - else if (ctx.Match(k, gplx.xowa.apis.xowa.wikis.langs.Xoap_lang_variants.Evt_current_changed)) lang.Vnt_mgr().Cur_vnt_(m.ReadBry("v")); + else if (ctx.Match(k, gplx.xowa.apps.apis.xowa.wikis.langs.Xoap_lang_variants.Evt_current_changed)) lang.Vnt_mgr().Cur_itm_(m.ReadBry("v")); else return GfoInvkAble_.Rv_unhandled; return this; } public static final String - Invk_ZipDirs = "zip_dirs_", Invk_files = "files", Invk_xwikis = "xwikis", Invk_cfg_gallery_ = "cfg_gallery_", Invk_commons_wiki_ = "commons_wiki_", Invk_stats = "stats" + Invk_files = "files", Invk_cfg_gallery_ = "cfg_gallery_", Invk_commons_wiki_ = "commons_wiki_", Invk_stats = "stats" , Invk_lang = "lang", Invk_html = "html", Invk_gui = "gui", Invk_cfg_history = "cfg_history", Invk_user = "user", Invk_data_mgr = "data_mgr", Invk_sys_cfg = "sys_cfg", Invk_ns_mgr = "ns_mgr" , Invk_special = "special" , Invk_props = "props", Invk_parser = "parser" diff --git a/400_xowa/src/gplx/xowa/Xowe_wiki_.java b/400_xowa/src/gplx/xowa/Xowe_wiki_.java index 566412a4f..ed51e6a2f 100644 --- a/400_xowa/src/gplx/xowa/Xowe_wiki_.java +++ b/400_xowa/src/gplx/xowa/Xowe_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; import gplx.*; -import gplx.xowa.apis.xowa.bldrs.imports.*; import gplx.xowa.wikis.data.*; import gplx.xowa.bldrs.infos.*; +import gplx.xowa.apps.apis.xowa.bldrs.imports.*; import gplx.xowa.wikis.data.*; import gplx.xowa.bldrs.infos.*; public class Xowe_wiki_ { public static void Create(Xowe_wiki wiki, long src_fil_len, String src_fil_name) { wiki.Db_mgr_create_as_sql(); // create db_mgr as sql diff --git a/400_xowa/src/gplx/xowa/apps/Xoa_app_eval.java b/400_xowa/src/gplx/xowa/apps/Xoa_app_eval.java index c742d08f7..dd0f357b6 100644 --- a/400_xowa/src/gplx/xowa/apps/Xoa_app_eval.java +++ b/400_xowa/src/gplx/xowa/apps/Xoa_app_eval.java @@ -19,7 +19,7 @@ package gplx.xowa.apps; import gplx.*; import gplx.xowa.*; public class Xoa_app_eval implements Bry_fmtr_eval_mgr { public boolean Enabled() {return enabled;} public void Enabled_(boolean v) {enabled = v;} private boolean enabled = true; public byte[] Eval(byte[] cmd) { - Object rslt = GfsCore._.Exec_bry(cmd); + Object rslt = GfsCore.Instance.Exec_bry(cmd); return Bry_.new_u8(Object_.Xto_str_strict_or_null_mark(rslt)); } } diff --git a/400_xowa/src/gplx/xowa/apps/Xoa_app_eval_tst.java b/400_xowa/src/gplx/xowa/apps/Xoa_app_eval_tst.java index 17f58bf8a..97f93dd3e 100644 --- a/400_xowa/src/gplx/xowa/apps/Xoa_app_eval_tst.java +++ b/400_xowa/src/gplx/xowa/apps/Xoa_app_eval_tst.java @@ -17,7 +17,7 @@ along with this program. If not, see . */ package gplx.xowa.apps; import gplx.*; import gplx.xowa.*; import org.junit.*; -import gplx.xowa.apps.gfss.*; +import gplx.xowa.apps.gfs.*; public class Xoa_app_eval_tst { Xoa_app_eval_fxt fxt = new Xoa_app_eval_fxt(); @Before public void init() {fxt.Clear();} diff --git a/400_xowa/src/gplx/xowa/apps/Xoa_app_mode.java b/400_xowa/src/gplx/xowa/apps/Xoa_app_mode.java new file mode 100644 index 000000000..bbc0049df --- /dev/null +++ b/400_xowa/src/gplx/xowa/apps/Xoa_app_mode.java @@ -0,0 +1,65 @@ +/* +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.apps; import gplx.*; import gplx.xowa.*; +import gplx.core.primitives.*; +public class Xoa_app_mode { + Xoa_app_mode(int tid) {this.tid = tid;} + public int Tid() {return tid;} private final int tid; + public boolean Tid_is_gui() {return tid == Tid_gui;} + public boolean Tid_is_tcp() {return tid == Tid_tcp;} + public boolean Tid_is_http() {return tid == Tid_http;} + public boolean Tid_supports_js() { + switch (tid) { + case Tid_gui: + case Tid_tcp: return true; + default: return false; + } + } + public byte[] Name() { + switch (tid) { + case Tid_cmd: return Key_cmd; + case Tid_gui: return Key_gui; + case Tid_http: return Key_http; + case Tid_tcp: return Key_tcp; + case Tid_file: return Key_file; + default: return Key_cmd; // see parse + } + } + private static final int Tid_cmd = 1, Tid_gui = 2, Tid_tcp = 3, Tid_http = 4, Tid_file = 5; + private static final byte[] Key_cmd = Bry_.new_a7("cmd"), Key_gui = Bry_.new_a7("gui"), Key_tcp = Bry_.new_a7("server"), Key_http = Bry_.new_a7("http_server"), Key_file = Bry_.new_a7("file"); + public static final Xoa_app_mode Itm_cmd = new Xoa_app_mode(Tid_cmd), Itm_gui = new Xoa_app_mode(Tid_gui), Itm_tcp = new Xoa_app_mode(Tid_tcp), Itm_http = new Xoa_app_mode(Tid_http), Itm_file = new Xoa_app_mode(Tid_file); + private static final Hash_adp_bry type_hash = Hash_adp_bry.cs() + .Add_bry_int(Key_cmd , Tid_cmd) + .Add_bry_int(Key_gui , Tid_gui) + .Add_bry_int(Key_http , Tid_http) + .Add_bry_int(Key_tcp , Tid_tcp) + .Add_bry_int(Key_file , Tid_file) + ; + public static Xoa_app_mode parse(String s) { + Object o = type_hash.Get_by(Bry_.new_u8(s)); if (o == null) return Itm_cmd; // default to cmd as per early behaviour; handles mistaken "--app_mode wrong" + int tid = ((Int_obj_val)o).Val(); + switch (tid) { + case Tid_cmd: return Itm_cmd; + case Tid_gui: return Itm_gui; + case Tid_http: return Itm_http; + case Tid_tcp: return Itm_tcp; + case Tid_file: return Itm_file; + default: throw Err_.new_unhandled(tid); + } + } +} diff --git a/400_xowa/src/gplx/xowa/apps/Xoa_app_type.java b/400_xowa/src/gplx/xowa/apps/Xoa_app_type.java deleted file mode 100644 index be6faf5b1..000000000 --- a/400_xowa/src/gplx/xowa/apps/Xoa_app_type.java +++ /dev/null @@ -1,65 +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.apps; import gplx.*; import gplx.xowa.*; -import gplx.core.primitives.*; -public class Xoa_app_type { - Xoa_app_type(int uid) {this.uid = uid;} - public int Uid() {return uid;} private final int uid; - public boolean Uid_is_gui() {return uid == Uid_gui;} - public boolean Uid_is_tcp() {return uid == Uid_tcp;} - public boolean Uid_is_http() {return uid == Uid_http;} - public boolean Uid_supports_js() { - switch (uid) { - case Uid_gui: - case Uid_tcp: return true; - default: return false; - } - } - public byte[] Name() { - switch (uid) { - case Uid_cmd: return Key_cmd; - case Uid_gui: return Key_gui; - case Uid_http: return Key_http; - case Uid_tcp: return Key_tcp; - case Uid_file: return Key_file; - default: return Key_cmd; // see parse - } - } - private static final int Uid_cmd = 1, Uid_gui = 2, Uid_tcp = 3, Uid_http = 4, Uid_file = 5; - private static final byte[] Key_cmd = Bry_.new_a7("cmd"), Key_gui = Bry_.new_a7("gui"), Key_tcp = Bry_.new_a7("server"), Key_http = Bry_.new_a7("http_server"), Key_file = Bry_.new_a7("file"); - private static final Hash_adp_bry type_hash = Hash_adp_bry.cs() - .Add_bry_int(Key_cmd , Uid_cmd) - .Add_bry_int(Key_gui , Uid_gui) - .Add_bry_int(Key_http , Uid_http) - .Add_bry_int(Key_tcp , Uid_tcp) - .Add_bry_int(Key_file , Uid_file) - ; - public static final Xoa_app_type Itm_cmd = new Xoa_app_type(Uid_cmd), Itm_gui = new Xoa_app_type(Uid_gui), Itm_tcp = new Xoa_app_type(Uid_tcp), Itm_http = new Xoa_app_type(Uid_http), Itm_file = new Xoa_app_type(Uid_file); - public static Xoa_app_type parse(String s) { - Object o = type_hash.Get_by(Bry_.new_u8(s)); if (o == null) return Itm_cmd; // default to cmd as per early behaviour; handles mistaken "--app_mode wrong" - int uid = ((Int_obj_val)o).Val(); - switch (uid) { - case Uid_cmd: return Itm_cmd; - case Uid_gui: return Itm_gui; - case Uid_http: return Itm_http; - case Uid_tcp: return Itm_tcp; - case Uid_file: return Itm_file; - default: throw Err_.new_unhandled(uid); - } - } -} diff --git a/400_xowa/src/gplx/xowa/apps/Xoa_cur.java b/400_xowa/src/gplx/xowa/apps/Xoa_cur.java index aa7d8ad46..835c4aea9 100644 --- a/400_xowa/src/gplx/xowa/apps/Xoa_cur.java +++ b/400_xowa/src/gplx/xowa/apps/Xoa_cur.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.apps; import gplx.*; import gplx.xowa.*; -import gplx.xowa.gui.views.*; +import gplx.xowa.guis.views.*; public class Xoa_cur implements GfoInvkAble { public Xoa_cur(Xoae_app app) {this.app = app;} private Xoae_app app; public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { diff --git a/400_xowa/src/gplx/xowa/apps/Xoa_shell.java b/400_xowa/src/gplx/xowa/apps/Xoa_shell.java index 625f58a97..5e3d7cf17 100644 --- a/400_xowa/src/gplx/xowa/apps/Xoa_shell.java +++ b/400_xowa/src/gplx/xowa/apps/Xoa_shell.java @@ -18,14 +18,14 @@ along with this program. If not, see . package gplx.xowa.apps; import gplx.*; import gplx.xowa.*; import gplx.core.consoles.*; import gplx.xowa.wikis.*; -import gplx.xowa.html.hrefs.*; +import gplx.xowa.htmls.hrefs.*; public class Xoa_shell implements GfoInvkAble { public Xoa_shell(Xoae_app app) {this.app = app;} private Xoae_app app; public boolean Fetch_page_exec_async() {return fetch_page_exec_async;} private boolean fetch_page_exec_async = true; public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { if (ctx.Match(k, Invk_fetch_page)) return Fetch_page(m); - else if (ctx.Match(k, Invk_chars_per_line_max_)) Console_adp__sys.I.Chars_per_line_max_(m.ReadInt("v")); - else if (ctx.Match(k, Invk_backspace_by_bytes_)) Console_adp__sys.I.Backspace_by_bytes_(m.ReadYn("v")); + else if (ctx.Match(k, Invk_chars_per_line_max_)) Console_adp__sys.Instance.Chars_per_line_max_(m.ReadInt("v")); + else if (ctx.Match(k, Invk_backspace_by_bytes_)) Console_adp__sys.Instance.Backspace_by_bytes_(m.ReadYn("v")); else return GfoInvkAble_.Rv_unhandled; return this; } diff --git a/400_xowa/src/gplx/xowa/apps/Xoa_shell_tst.java b/400_xowa/src/gplx/xowa/apps/Xoa_shell_tst.java index 67aced6e0..955f9b107 100644 --- a/400_xowa/src/gplx/xowa/apps/Xoa_shell_tst.java +++ b/400_xowa/src/gplx/xowa/apps/Xoa_shell_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.apps; import gplx.*; import gplx.xowa.*; -import org.junit.*; import gplx.xowa.apps.gfss.*; +import org.junit.*; import gplx.xowa.apps.gfs.*; public class Xoa_shell_tst { @Test public void Fetch_page() { // PURPOSE.fix: fetch_page failed with nullRef; DATE:2013-04-12 Xop_fxt parser_fxt = new Xop_fxt(); diff --git a/400_xowa/src/gplx/xowa/apps/Xoa_sys_cfg.java b/400_xowa/src/gplx/xowa/apps/Xoa_sys_cfg.java index 0fce72dab..23482ee36 100644 --- a/400_xowa/src/gplx/xowa/apps/Xoa_sys_cfg.java +++ b/400_xowa/src/gplx/xowa/apps/Xoa_sys_cfg.java @@ -22,14 +22,14 @@ public class Xoa_sys_cfg implements GfoInvkAble { public Xoa_sys_cfg(Xoae_app app) {this.app = app;} public byte[] Lang() {return lang_key;} public Xoa_sys_cfg Lang_(byte[] v) { - lang_key = Xol_lang_itm_.Get_by_key_or_en(v).Key(); + lang_key = Xol_lang_stub_.Get_by_key_or_en(v).Key(); if (app.Stage() == gplx.xowa.apps.Xoa_stage_.Tid_launch) { // do not update user lang unless launched; DATE:2014-05-26 - Xol_lang lang = app.Lang_mgr().Get_by_key_or_load(lang_key); + Xol_lang_itm lang = app.Lang_mgr().Get_by_or_load(lang_key); app.Usere().Lang_(lang); app.Usere().Wiki().Html_mgr().Portal_mgr().Init(); } return this; - } private byte[] lang_key = Xol_lang_.Key_en; + } private byte[] lang_key = Xol_lang_itm_.Key_en; public int Options_version() {return options_version;} public Xoa_sys_cfg Options_version_(int v) {options_version = v; return this;} private int options_version = 1; public KeyVal[] Options_lang_list() {if (options_lang_list == null) options_lang_list = Options_list_lang_.new_(); return options_lang_list;} private KeyVal[] options_lang_list; public long Free_mem_when() {return free_mem_when;} long free_mem_when; @@ -50,35 +50,35 @@ public class Xoa_sys_cfg implements GfoInvkAble { } class Options_list_lang_ { public static KeyVal[] new_() { - Ordered_hash translated = Ordered_hash_.new_bry_(); + Ordered_hash translated = Ordered_hash_.New_bry(); List_adp untranslated = List_adp_.new_(); - Add_itm_many(translated, Xol_lang_itm_.Id_en, Xol_lang_itm_.Id_de, Xol_lang_itm_.Id_pl, Xol_lang_itm_.Id_zh_hans, Xol_lang_itm_.Id_zh_hant); // add langs with translations first, so they alphabetize to top of list - int len = Xol_lang_itm_.Id__max; + Add_itm_many(translated, Xol_lang_stub_.Id_en, Xol_lang_stub_.Id_de, Xol_lang_stub_.Id_pl, Xol_lang_stub_.Id_zh_hans, Xol_lang_stub_.Id_zh_hant); // add langs with translations first, so they alphabetize to top of list + int len = Xol_lang_stub_.Id__max; for (int i = 0; i < len; i++) { // add rest of langs, but sort by code - Xol_lang_itm itm = Xol_lang_itm_.Get_by_id(i); + Xol_lang_stub itm = Xol_lang_stub_.Get_by_id(i); if (translated.Has(itm.Key())) continue; untranslated.Add(itm); } - untranslated.Sort_by(Xol_lang_itm_.Comparer_key); + untranslated.Sort_by(Xol_lang_stub_.Comparer_key); KeyVal[] rv = new KeyVal[len]; int translated_max = translated.Count(); for (int i = 0; i < translated_max; i++) - rv[i] = new_itm((Xol_lang_itm)translated.Get_at(i)); + rv[i] = new_itm((Xol_lang_stub)translated.Get_at(i)); for (int i = translated_max; i < len; i++) - rv[i] = new_itm((Xol_lang_itm)untranslated.Get_at(i - translated_max)); + rv[i] = new_itm((Xol_lang_stub)untranslated.Get_at(i - translated_max)); return rv; } - private static KeyVal new_itm(Xol_lang_itm itm) { + private static KeyVal new_itm(Xol_lang_stub itm) { String key_str = String_.new_u8(itm.Key()); - String name_str = String_.new_u8(itm.Localized_name()); + String name_str = String_.new_u8(itm.Canonical_name()); return KeyVal_.new_(key_str, name_str + " [" + key_str + "]"); } private static void Add_itm_many(Ordered_hash translated, int... langs) { int langs_len = langs.length; for (int i = 0; i < langs_len; i++) { - Xol_lang_itm itm = Xol_lang_itm_.Get_by_id(langs[i]); + Xol_lang_stub itm = Xol_lang_stub_.Get_by_id(langs[i]); translated.Add_if_dupe_use_nth(itm.Key(), itm); } } diff --git a/400_xowa/src/gplx/xowa/apps/Xoav_app.java b/400_xowa/src/gplx/xowa/apps/Xoav_app.java index 163ebe77c..504619092 100644 --- a/400_xowa/src/gplx/xowa/apps/Xoav_app.java +++ b/400_xowa/src/gplx/xowa/apps/Xoav_app.java @@ -18,19 +18,23 @@ along with this program. If not, see . package gplx.xowa.apps; import gplx.*; import gplx.xowa.*; import gplx.core.net.*; import gplx.langs.jsons.*; import gplx.ios.*; -import gplx.dbs.*; import gplx.xowa.apis.*; import gplx.xowa.apps.fsys.*; import gplx.xowa.apps.metas.*; import gplx.xowa.parsers.amps.*; import gplx.xowa.langs.cases.*; import gplx.core.intls.*; import gplx.xowa.users.data.*; -import gplx.xowa.apps.urls.*; import gplx.xowa.files.caches.*; import gplx.xowa.files.imgs.*; +import gplx.dbs.*; import gplx.xowa.apps.apis.*; import gplx.xowa.apps.fsys.*; import gplx.xowa.apps.metas.*; import gplx.xowa.parsers.amps.*; import gplx.xowa.langs.cases.*; import gplx.core.intls.*; import gplx.xowa.users.data.*; +import gplx.xowa.apps.site_cfgs.*; import gplx.xowa.apps.urls.*; import gplx.xowa.files.caches.*; import gplx.xowa.files.imgs.*; import gplx.xowa.bldrs.css.*; -import gplx.xowa.html.hrefs.*; import gplx.xowa.html.wtrs.*; import gplx.xowa.html.bridges.*; +import gplx.xowa.apps.gfs.*; +import gplx.xowa.htmls.hrefs.*; import gplx.xowa.htmls.wtrs.*; import gplx.xowa.htmls.bridges.*; import gplx.xowa.users.*; -import gplx.xowa.wikis.*; -import gplx.xowa.wms.*; +import gplx.xowa.wikis.*; import gplx.xowa.wikis.xwikis.*; import gplx.xowa.wikis.xwikis.parsers.*; import gplx.xowa.wikis.xwikis.sitelinks.*; +import gplx.xowa.langs.*; +import gplx.xowa.bldrs.wms.*; import gplx.langs.htmls.encoders.*; -public class Xoav_app implements Xoa_app { - public Xoav_app(Gfo_usr_dlg usr_dlg, Xoa_app_type app_type, String plat_name, Io_url root_dir, Io_url file_dir, Io_url css_dir) { - Xoa_app_.Usr_dlg_(usr_dlg); this.usr_dlg = usr_dlg; this.app_type = app_type; +public class Xoav_app implements Xoa_app, GfoInvkAble { + public Xoav_app(Gfo_usr_dlg usr_dlg, Xoa_app_mode mode, String plat_name, Io_url root_dir, Io_url file_dir, Io_url css_dir) { + Xoa_app_.Usr_dlg_(usr_dlg); this.usr_dlg = usr_dlg; this.mode = mode; this.fsys_mgr = new Xoa_fsys_mgr(plat_name, root_dir, root_dir.GenSubDir("wiki"), file_dir, css_dir); + this.lang_mgr = new Xoa_lang_mgr(this); this.meta_mgr = new Xoa_meta_mgr(this); + this.gfs_mgr = new Xoa_gfs_mgr(this, fsys_mgr, null); this.file__cache_mgr = new Xof_cache_mgr(usr_dlg, null, null); this.file__img_mgr = new Xof_img_mgr(); this.wiki_mgr = new Xoav_wiki_mgr(this, utl_case_mgr); @@ -39,13 +43,17 @@ public class Xoav_app implements Xoa_app { this.html__bridge_mgr = new Xoh_bridge_mgr(utl__json_parser); this.user = new Xouv_user("anonymous"); this.api_root = null; + this.site_cfg_mgr = new Xoa_site_cfg_mgr(this); } + public boolean Tid_is_edit() {return Bool_.N;} + public Xoa_app_mode Mode() {return mode;} private final Xoa_app_mode mode; public Xou_user User() {return user;} private final Xouv_user user; public Xoapi_root Api_root() {return api_root;} private final Xoapi_root api_root; - public Xoa_app_type App_type() {return app_type;} private final Xoa_app_type app_type; public Xoa_fsys_mgr Fsys_mgr() {return fsys_mgr;} private final Xoa_fsys_mgr fsys_mgr; public Xoav_wiki_mgr Wiki_mgr() {return wiki_mgr;} private final Xoav_wiki_mgr wiki_mgr; public Xoa_wiki_mgr Wiki_mgri() {return wiki_mgr;} + public Xoa_lang_mgr Lang_mgr() {return lang_mgr;} private final Xoa_lang_mgr lang_mgr; + public Xoa_gfs_mgr Gfs_mgr() {return gfs_mgr;} private final Xoa_gfs_mgr gfs_mgr; public Xof_cache_mgr File__cache_mgr() {return file__cache_mgr;} private final Xof_cache_mgr file__cache_mgr; public Xof_img_mgr File__img_mgr() {return file__img_mgr;} private final Xof_img_mgr file__img_mgr; public Io_download_fmt File__download_fmt() {return file__download_fmt;} private final Io_download_fmt file__download_fmt = new Io_download_fmt(); @@ -55,9 +63,12 @@ public class Xoav_app implements Xoa_app { public Xoa_css_extractor Html__css_installer() {return html__css_installer;} private final Xoa_css_extractor html__css_installer = new Xoa_css_extractor(); public Xoh_bridge_mgr Html__bridge_mgr() {return html__bridge_mgr;} private final Xoh_bridge_mgr html__bridge_mgr; public Xoa_meta_mgr Meta_mgr() {return meta_mgr;} private final Xoa_meta_mgr meta_mgr; - public Gfo_inet_conn Utl__inet_conn() {return inet_conn;} public void Utl__inet_conn_(Gfo_inet_conn v) {this.inet_conn = v;} private Gfo_inet_conn inet_conn; - + public Gfo_inet_conn Utl__inet_conn() {return inet_conn;} private final Gfo_inet_conn inet_conn = Gfo_inet_conn_.new_(); + public Xoa_site_cfg_mgr Site_cfg_mgr() {return site_cfg_mgr;} private final Xoa_site_cfg_mgr site_cfg_mgr; public boolean Xwiki_mgr__missing(byte[] domain) {return wiki_mgr.Get_by_domain(domain) == null;} + public Xoa_sitelink_mgr Xwiki_mgr__sitelink_mgr() {return xwiki_mgr__sitelink_mgr;} private final Xoa_sitelink_mgr xwiki_mgr__sitelink_mgr = new Xoa_sitelink_mgr(); + public Xow_xwiki_itm_parser Xwiki_mgr__itm_parser() {return xwiki_mgr__itm_parser;} private final Xow_xwiki_itm_parser xwiki_mgr__itm_parser = new Xow_xwiki_itm_parser(); + public Xowmf_mgr Wmf_mgr() {return wmf_mgr;} private final Xowmf_mgr wmf_mgr = new Xowmf_mgr(); public Gfo_usr_dlg Usr_dlg() {return usr_dlg;} public void Usr_dlg_(Gfo_usr_dlg v) {usr_dlg = v; Xoa_app_.Usr_dlg_(usr_dlg);} private Gfo_usr_dlg usr_dlg = Gfo_usr_dlg_.Noop; public Bry_bfr_mkr Utl__bfr_mkr() {return Xoa_app_.Utl__bfr_mkr();} @@ -65,13 +76,13 @@ public class Xoav_app implements Xoa_app { public Json_parser Utl__json_parser() {return utl__json_parser;} private final Json_parser utl__json_parser = new Json_parser(); public boolean Bldr__running() {return bldr__running;} public void Bldr__running_(boolean v) {this.bldr__running = v;} private boolean bldr__running; - public Xop_amp_mgr Utl_amp_mgr() {return utl_amp_mgr;} private Xop_amp_mgr utl_amp_mgr = Xop_amp_mgr.I; + public Xop_amp_mgr Utl_amp_mgr() {return utl_amp_mgr;} private Xop_amp_mgr utl_amp_mgr = Xop_amp_mgr.Instance; public Xol_case_mgr Utl_case_mgr() {return utl_case_mgr;} private Xol_case_mgr utl_case_mgr = Xol_case_mgr_.U8(); public Url_encoder Utl_encoder_fsys() {return utl_encoder_fsys;} private Url_encoder utl_encoder_fsys = Url_encoder.new_fsys_lnx_(); public Gfo_msg_log Utl_msg_log() {return utl_msg_log;} private Gfo_msg_log utl_msg_log; public Xoav_url_parser Utl_url_parser_xo() {return utl_url_parser_xo;} private Xoav_url_parser utl_url_parser_xo = new Xoav_url_parser(); public Gfo_url_parser Utl_url_parser_gfo() {return utl_url_parser_gfo;} private final Gfo_url_parser utl_url_parser_gfo = new Gfo_url_parser(); - + public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) {throw Err_.new_unimplemented_w_msg("implemented for Xoa_cfg_mgr");} public void Init_by_app(Io_url user_db_url) { user.Init_db(this, wiki_mgr, user_db_url); } diff --git a/400_xowa/src/gplx/xowa/apps/Xoav_wiki_mgr.java b/400_xowa/src/gplx/xowa/apps/Xoav_wiki_mgr.java index 2ebedc8c0..f22ef8bd9 100644 --- a/400_xowa/src/gplx/xowa/apps/Xoav_wiki_mgr.java +++ b/400_xowa/src/gplx/xowa/apps/Xoav_wiki_mgr.java @@ -19,8 +19,10 @@ package gplx.xowa.apps; import gplx.*; import gplx.xowa.*; import gplx.xowa.*; import gplx.xowa.langs.cases.*; import gplx.xowa.users.data.*; import gplx.xowa.wikis.*; public class Xoav_wiki_mgr implements Xoa_wiki_mgr, GfoInvkAble { - private final Xoav_app app; private final Ordered_hash hash = Ordered_hash_.new_bry_(); + private final Xoav_app app; private final Ordered_hash hash = Ordered_hash_.New_bry(); public Xoav_wiki_mgr(Xoav_app app, Xol_case_mgr case_mgr) {this.app = app;} + public int Count() {return hash.Count();} + public Xow_wiki Get_at_i(int i) {return (Xow_wiki)hash.Get_at(i);} public Xowv_wiki Get_by_domain(byte[] domain) {return (Xowv_wiki)hash.Get_by(domain);} public Xowv_wiki Import_by_fil(Io_url fil) { Io_url wiki_dir = fil.OwnerDir(); @@ -40,6 +42,7 @@ public class Xoav_wiki_mgr implements Xoa_wiki_mgr, GfoInvkAble { return Load(Gen_domain_str(fil.NameOnly()), fil.OwnerDir()); } public boolean Has(byte[] key) {return hash.Has(key);} + public Xow_wiki Get_by_key_or_null_i(byte[] key) {return (Xowv_wiki)hash.Get_by(key);} public Xow_wiki Get_by_key_or_make_init_y(byte[] key) { Xow_wiki rv = this.Get_by_domain(key); // if (rv == null) rv = New_wiki(key); // TODO: must init wiki, but need wiki_url; DATE:2015-05-23 @@ -47,7 +50,7 @@ public class Xoav_wiki_mgr implements Xoa_wiki_mgr, GfoInvkAble { } public Xow_wiki Get_by_key_or_make_init_n(byte[] key) {return Get_by_key_or_make_init_y(key);} public void Load_by_dir(Io_url wiki_root_dir) { - Io_url[] wiki_dirs = Io_mgr.I.QueryDir_args(wiki_root_dir).DirOnly_().ExecAsUrlAry(); + Io_url[] wiki_dirs = Io_mgr.Instance.QueryDir_args(wiki_root_dir).DirOnly_().ExecAsUrlAry(); for (Io_url wiki_dir : wiki_dirs) { String wiki_dir_url = wiki_dir.Raw(); if (String_.Has_at_bgn(wiki_dir_url, "#")) continue; diff --git a/400_xowa/src/gplx/xowa/apis/Xoapi_doc.java b/400_xowa/src/gplx/xowa/apps/apis/Xoapi_doc.java similarity index 94% rename from 400_xowa/src/gplx/xowa/apis/Xoapi_doc.java rename to 400_xowa/src/gplx/xowa/apps/apis/Xoapi_doc.java index d829fd12c..649287722 100644 --- a/400_xowa/src/gplx/xowa/apis/Xoapi_doc.java +++ b/400_xowa/src/gplx/xowa/apps/apis/Xoapi_doc.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.apis; import gplx.*; import gplx.xowa.*; +package gplx.xowa.apps.apis; import gplx.*; import gplx.xowa.*; import gplx.xowa.apps.*; class Xoapi_doc {} /* xowa { diff --git a/400_xowa/src/gplx/xowa/apis/Xoapi_root.java b/400_xowa/src/gplx/xowa/apps/apis/Xoapi_root.java similarity index 94% rename from 400_xowa/src/gplx/xowa/apis/Xoapi_root.java rename to 400_xowa/src/gplx/xowa/apps/apis/Xoapi_root.java index c0de8ebf9..9f259641c 100644 --- a/400_xowa/src/gplx/xowa/apis/Xoapi_root.java +++ b/400_xowa/src/gplx/xowa/apps/apis/Xoapi_root.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.apis; import gplx.*; import gplx.xowa.*; -import gplx.xowa.apis.xowa.*; import gplx.xowa.gui.cmds.*; +package gplx.xowa.apps.apis; import gplx.*; import gplx.xowa.*; import gplx.xowa.apps.*; +import gplx.xowa.apps.apis.xowa.*; import gplx.xowa.guis.cmds.*; public class Xoapi_root implements GfoInvkAble { private Xoae_app app; public Xoapi_root(Xoae_app app) { diff --git a/400_xowa/src/gplx/xowa/apis/xowa/Xoapi_app.java b/400_xowa/src/gplx/xowa/apps/apis/xowa/Xoapi_app.java similarity index 85% rename from 400_xowa/src/gplx/xowa/apis/xowa/Xoapi_app.java rename to 400_xowa/src/gplx/xowa/apps/apis/xowa/Xoapi_app.java index 124446a75..cf287c10b 100644 --- a/400_xowa/src/gplx/xowa/apis/xowa/Xoapi_app.java +++ b/400_xowa/src/gplx/xowa/apps/apis/xowa/Xoapi_app.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.apis.xowa; import gplx.*; import gplx.xowa.*; import gplx.xowa.apis.*; -import gplx.xowa.gui.views.*; -import gplx.xowa.apis.xowa.apps.*; import gplx.xowa.apis.xowa.envs.*; import gplx.xowa.apis.xowa.startups.*; +package gplx.xowa.apps.apis.xowa; import gplx.*; import gplx.xowa.*; import gplx.xowa.apps.*; import gplx.xowa.apps.apis.*; +import gplx.xowa.guis.views.*; +import gplx.xowa.apps.apis.xowa.apps.*; import gplx.xowa.apps.apis.xowa.envs.*; import gplx.xowa.apps.apis.xowa.startups.*; public class Xoapi_app implements GfoInvkAble { private Xog_win_itm win; public void Ctor_by_app(Xoae_app app) { diff --git a/400_xowa/src/gplx/xowa/apis/xowa/Xoapi_app_wiki.java b/400_xowa/src/gplx/xowa/apps/apis/xowa/Xoapi_app_wiki.java similarity index 87% rename from 400_xowa/src/gplx/xowa/apis/xowa/Xoapi_app_wiki.java rename to 400_xowa/src/gplx/xowa/apps/apis/xowa/Xoapi_app_wiki.java index 649d0acee..81381d8b9 100644 --- a/400_xowa/src/gplx/xowa/apis/xowa/Xoapi_app_wiki.java +++ b/400_xowa/src/gplx/xowa/apps/apis/xowa/Xoapi_app_wiki.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.apis.xowa; import gplx.*; import gplx.xowa.*; import gplx.xowa.apis.*; -import gplx.xowa.apis.xowa.wikis.*; +package gplx.xowa.apps.apis.xowa; import gplx.*; import gplx.xowa.*; import gplx.xowa.apps.*; import gplx.xowa.apps.apis.*; +import gplx.xowa.apps.apis.xowa.wikis.*; public class Xoapi_app_wiki implements GfoInvkAble { public Xoapi_wiki_lang Lang() {return lang;} private final Xoapi_wiki_lang lang = new Xoapi_wiki_lang(); public void Subscribe(GfoEvObj sub) {lang.Subscribe(sub);} diff --git a/400_xowa/src/gplx/xowa/apis/xowa/Xoapi_app_wikis.java b/400_xowa/src/gplx/xowa/apps/apis/xowa/Xoapi_app_wikis.java similarity index 85% rename from 400_xowa/src/gplx/xowa/apis/xowa/Xoapi_app_wikis.java rename to 400_xowa/src/gplx/xowa/apps/apis/xowa/Xoapi_app_wikis.java index 9c8177c42..80ae00b4d 100644 --- a/400_xowa/src/gplx/xowa/apis/xowa/Xoapi_app_wikis.java +++ b/400_xowa/src/gplx/xowa/apps/apis/xowa/Xoapi_app_wikis.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.apis.xowa; import gplx.*; import gplx.xowa.*; import gplx.xowa.apis.*; +package gplx.xowa.apps.apis.xowa; import gplx.*; import gplx.xowa.*; import gplx.xowa.apps.*; import gplx.xowa.apps.apis.*; public class Xoapi_app_wikis implements GfoInvkAble { - private final Ordered_hash hash = Ordered_hash_.new_bry_(); + private final Ordered_hash hash = Ordered_hash_.New_bry(); public Xoapi_app_wiki Get(byte[] domain) { Xoapi_app_wiki rv = (Xoapi_app_wiki)hash.Get_by(domain); if (rv == null) { diff --git a/400_xowa/src/gplx/xowa/apis/xowa/Xoapi_bldr.java b/400_xowa/src/gplx/xowa/apps/apis/xowa/Xoapi_bldr.java similarity index 86% rename from 400_xowa/src/gplx/xowa/apis/xowa/Xoapi_bldr.java rename to 400_xowa/src/gplx/xowa/apps/apis/xowa/Xoapi_bldr.java index 242d58a3f..ad47ce134 100644 --- a/400_xowa/src/gplx/xowa/apis/xowa/Xoapi_bldr.java +++ b/400_xowa/src/gplx/xowa/apps/apis/xowa/Xoapi_bldr.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.apis.xowa; import gplx.*; import gplx.xowa.*; import gplx.xowa.apis.*; -import gplx.xowa.apis.xowa.bldrs.*; +package gplx.xowa.apps.apis.xowa; import gplx.*; import gplx.xowa.*; import gplx.xowa.apps.*; import gplx.xowa.apps.apis.*; +import gplx.xowa.apps.apis.xowa.bldrs.*; public class Xoapi_bldr implements GfoInvkAble { public void Ctor_by_app(Xoa_app app) {wiki.Ctor_by_app(app);} public Xoapi_bldr_wiki Wiki() {return wiki;} private final Xoapi_bldr_wiki wiki = new Xoapi_bldr_wiki(); diff --git a/400_xowa/src/gplx/xowa/apis/xowa/Xoapi_gui.java b/400_xowa/src/gplx/xowa/apps/apis/xowa/Xoapi_gui.java similarity index 89% rename from 400_xowa/src/gplx/xowa/apis/xowa/Xoapi_gui.java rename to 400_xowa/src/gplx/xowa/apps/apis/xowa/Xoapi_gui.java index 78699b08b..8394e9a69 100644 --- a/400_xowa/src/gplx/xowa/apis/xowa/Xoapi_gui.java +++ b/400_xowa/src/gplx/xowa/apps/apis/xowa/Xoapi_gui.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.apis.xowa; import gplx.*; import gplx.xowa.*; import gplx.xowa.apis.*; -import gplx.xowa.apis.xowa.gui.*; +package gplx.xowa.apps.apis.xowa; import gplx.*; import gplx.xowa.*; import gplx.xowa.apps.*; import gplx.xowa.apps.apis.*; +import gplx.xowa.apps.apis.xowa.gui.*; public class Xoapi_gui implements GfoInvkAble { public void Init_by_kit(Xoae_app app) { browser.Init_by_kit(app); diff --git a/400_xowa/src/gplx/xowa/apis/xowa/Xoapi_html.java b/400_xowa/src/gplx/xowa/apps/apis/xowa/Xoapi_html.java similarity index 90% rename from 400_xowa/src/gplx/xowa/apis/xowa/Xoapi_html.java rename to 400_xowa/src/gplx/xowa/apps/apis/xowa/Xoapi_html.java index 22b06f813..744c92c9d 100644 --- a/400_xowa/src/gplx/xowa/apis/xowa/Xoapi_html.java +++ b/400_xowa/src/gplx/xowa/apps/apis/xowa/Xoapi_html.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.apis.xowa; import gplx.*; import gplx.xowa.*; import gplx.xowa.apis.*; -import gplx.xowa.apis.xowa.html.*; +package gplx.xowa.apps.apis.xowa; import gplx.*; import gplx.xowa.*; import gplx.xowa.apps.*; import gplx.xowa.apps.apis.*; +import gplx.xowa.apps.apis.xowa.html.*; public class Xoapi_html implements GfoInvkAble { public void Ctor_by_app(Xoae_app app) { page.Ctor_by_app(app); diff --git a/400_xowa/src/gplx/xowa/apis/xowa/Xoapi_nav.java b/400_xowa/src/gplx/xowa/apps/apis/xowa/Xoapi_nav.java similarity index 88% rename from 400_xowa/src/gplx/xowa/apis/xowa/Xoapi_nav.java rename to 400_xowa/src/gplx/xowa/apps/apis/xowa/Xoapi_nav.java index e3e3fda53..06a3a43ba 100644 --- a/400_xowa/src/gplx/xowa/apis/xowa/Xoapi_nav.java +++ b/400_xowa/src/gplx/xowa/apps/apis/xowa/Xoapi_nav.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.apis.xowa; import gplx.*; import gplx.xowa.*; import gplx.xowa.apis.*; -import gplx.xowa.gui.views.*; -import gplx.xowa.apis.xowa.navs.*; +package gplx.xowa.apps.apis.xowa; import gplx.*; import gplx.xowa.*; import gplx.xowa.apps.*; import gplx.xowa.apps.apis.*; +import gplx.xowa.guis.views.*; +import gplx.xowa.apps.apis.xowa.navs.*; public class Xoapi_nav implements GfoInvkAble { private Xog_win_itm win; public void Init_by_kit(Xoae_app app) { diff --git a/400_xowa/src/gplx/xowa/apis/xowa/Xoapi_net.java b/400_xowa/src/gplx/xowa/apps/apis/xowa/Xoapi_net.java similarity index 87% rename from 400_xowa/src/gplx/xowa/apis/xowa/Xoapi_net.java rename to 400_xowa/src/gplx/xowa/apps/apis/xowa/Xoapi_net.java index 68d879624..ed8608386 100644 --- a/400_xowa/src/gplx/xowa/apis/xowa/Xoapi_net.java +++ b/400_xowa/src/gplx/xowa/apps/apis/xowa/Xoapi_net.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.apis.xowa; import gplx.*; import gplx.xowa.*; import gplx.xowa.apis.*; +package gplx.xowa.apps.apis.xowa; import gplx.*; import gplx.xowa.*; import gplx.xowa.apps.*; import gplx.xowa.apps.apis.*; public class Xoapi_net implements GfoInvkAble, GfoEvObj { public Xoapi_net() {this.ev_mgr = GfoEvMgr.new_(this);} public GfoEvMgr EvMgr() {return ev_mgr;} private GfoEvMgr ev_mgr; @@ -25,7 +25,7 @@ public class Xoapi_net implements GfoInvkAble, GfoEvObj { public void Enabled_(boolean v) { this.enabled = v; gplx.ios.IoEngine_system.Web_access_enabled = v; - GfoEvMgr_.PubVal(this, gplx.xowa.gui.menus.dom.Xog_mnu_evt_mgr.Evt_selected_changed, v); + GfoEvMgr_.PubVal(this, gplx.xowa.guis.menus.dom.Xog_mnu_evt_mgr.Evt_selected_changed, v); } public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { if (ctx.Match(k, Invk_enabled)) return this.Enabled(); diff --git a/400_xowa/src/gplx/xowa/apis/xowa/Xoapi_special.java b/400_xowa/src/gplx/xowa/apps/apis/xowa/Xoapi_special.java similarity index 86% rename from 400_xowa/src/gplx/xowa/apis/xowa/Xoapi_special.java rename to 400_xowa/src/gplx/xowa/apps/apis/xowa/Xoapi_special.java index 38cb8642b..2acc10f48 100644 --- a/400_xowa/src/gplx/xowa/apis/xowa/Xoapi_special.java +++ b/400_xowa/src/gplx/xowa/apps/apis/xowa/Xoapi_special.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.apis.xowa; import gplx.*; import gplx.xowa.*; import gplx.xowa.apis.*; -import gplx.xowa.apis.xowa.specials.*; +package gplx.xowa.apps.apis.xowa; import gplx.*; import gplx.xowa.*; import gplx.xowa.apps.*; import gplx.xowa.apps.apis.*; +import gplx.xowa.apps.apis.xowa.specials.*; public class Xoapi_special implements GfoInvkAble { public void Ctor_by_app(Xoae_app app) { } diff --git a/400_xowa/src/gplx/xowa/apis/xowa/Xoapi_usr.java b/400_xowa/src/gplx/xowa/apps/apis/xowa/Xoapi_usr.java similarity index 91% rename from 400_xowa/src/gplx/xowa/apis/xowa/Xoapi_usr.java rename to 400_xowa/src/gplx/xowa/apps/apis/xowa/Xoapi_usr.java index cfda81ccc..73df37498 100644 --- a/400_xowa/src/gplx/xowa/apis/xowa/Xoapi_usr.java +++ b/400_xowa/src/gplx/xowa/apps/apis/xowa/Xoapi_usr.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.apis.xowa; import gplx.*; import gplx.xowa.*; import gplx.xowa.apis.*; -import gplx.xowa.apis.xowa.usrs.*; +package gplx.xowa.apps.apis.xowa; import gplx.*; import gplx.xowa.*; import gplx.xowa.apps.*; import gplx.xowa.apps.apis.*; +import gplx.xowa.apps.apis.xowa.usrs.*; public class Xoapi_usr implements GfoInvkAble { public void Ctor_by_app(Xoae_app app) { bookmarks.Ctor_by_app(app); diff --git a/400_xowa/src/gplx/xowa/apis/xowa/Xoapi_xtns.java b/400_xowa/src/gplx/xowa/apps/apis/xowa/Xoapi_xtns.java similarity index 88% rename from 400_xowa/src/gplx/xowa/apis/xowa/Xoapi_xtns.java rename to 400_xowa/src/gplx/xowa/apps/apis/xowa/Xoapi_xtns.java index 46a26e6b4..9e58447c6 100644 --- a/400_xowa/src/gplx/xowa/apis/xowa/Xoapi_xtns.java +++ b/400_xowa/src/gplx/xowa/apps/apis/xowa/Xoapi_xtns.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.apis.xowa; import gplx.*; import gplx.xowa.*; import gplx.xowa.apis.*; -import gplx.xowa.apis.xowa.xtns.*; +package gplx.xowa.apps.apis.xowa; import gplx.*; import gplx.xowa.*; import gplx.xowa.apps.*; import gplx.xowa.apps.apis.*; +import gplx.xowa.apps.apis.xowa.xtns.*; public class Xoapi_xtns implements GfoInvkAble { public void Init_by_kit(Xoae_app app) { scribunto.Init_by_kit(app); diff --git a/400_xowa/src/gplx/xowa/apis/xowa/apps/Xoapi_fsys.java b/400_xowa/src/gplx/xowa/apps/apis/xowa/apps/Xoapi_fsys.java similarity index 88% rename from 400_xowa/src/gplx/xowa/apis/xowa/apps/Xoapi_fsys.java rename to 400_xowa/src/gplx/xowa/apps/apis/xowa/apps/Xoapi_fsys.java index 091d17cf4..be8227f10 100644 --- a/400_xowa/src/gplx/xowa/apis/xowa/apps/Xoapi_fsys.java +++ b/400_xowa/src/gplx/xowa/apps/apis/xowa/apps/Xoapi_fsys.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.apis.xowa.apps; import gplx.*; import gplx.xowa.*; import gplx.xowa.apis.*; import gplx.xowa.apis.xowa.*; +package gplx.xowa.apps.apis.xowa.apps; import gplx.*; import gplx.xowa.*; import gplx.xowa.apps.*; import gplx.xowa.apps.apis.*; import gplx.xowa.apps.apis.xowa.*; public class Xoapi_fsys implements GfoInvkAble { public void Ctor_by_app(Xoae_app app) { this.plat_jar = Env_.AppUrl(); diff --git a/400_xowa/src/gplx/xowa/apis/xowa/bldrs/Xoapi_bldr_wiki.java b/400_xowa/src/gplx/xowa/apps/apis/xowa/bldrs/Xoapi_bldr_wiki.java similarity index 83% rename from 400_xowa/src/gplx/xowa/apis/xowa/bldrs/Xoapi_bldr_wiki.java rename to 400_xowa/src/gplx/xowa/apps/apis/xowa/bldrs/Xoapi_bldr_wiki.java index 0402115a2..09d0e4a39 100644 --- a/400_xowa/src/gplx/xowa/apis/xowa/bldrs/Xoapi_bldr_wiki.java +++ b/400_xowa/src/gplx/xowa/apps/apis/xowa/bldrs/Xoapi_bldr_wiki.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.apis.xowa.bldrs; import gplx.*; import gplx.xowa.*; import gplx.xowa.apis.*; import gplx.xowa.apis.xowa.*; -import gplx.xowa.apis.xowa.bldrs.filters.*; -import gplx.xowa.apis.xowa.bldrs.imports.*; +package gplx.xowa.apps.apis.xowa.bldrs; import gplx.*; import gplx.xowa.*; import gplx.xowa.apps.*; import gplx.xowa.apps.apis.*; import gplx.xowa.apps.apis.xowa.*; +import gplx.xowa.apps.apis.xowa.bldrs.filters.*; +import gplx.xowa.apps.apis.xowa.bldrs.imports.*; public class Xoapi_bldr_wiki implements GfoInvkAble { public void Ctor_by_app(Xoa_app app) {filter.Ctor_by_app(app);} public Xoapi_filter Filter() {return filter;} private final Xoapi_filter filter = new Xoapi_filter(); diff --git a/400_xowa/src/gplx/xowa/apis/xowa/bldrs/filters/Xoapi_filter.java b/400_xowa/src/gplx/xowa/apps/apis/xowa/bldrs/filters/Xoapi_filter.java similarity index 80% rename from 400_xowa/src/gplx/xowa/apis/xowa/bldrs/filters/Xoapi_filter.java rename to 400_xowa/src/gplx/xowa/apps/apis/xowa/bldrs/filters/Xoapi_filter.java index 4f8706aa5..78779a86d 100644 --- a/400_xowa/src/gplx/xowa/apis/xowa/bldrs/filters/Xoapi_filter.java +++ b/400_xowa/src/gplx/xowa/apps/apis/xowa/bldrs/filters/Xoapi_filter.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.apis.xowa.bldrs.filters; import gplx.*; import gplx.xowa.*; import gplx.xowa.apis.*; import gplx.xowa.apis.xowa.*; import gplx.xowa.apis.xowa.bldrs.*; -import gplx.xowa.apis.xowa.bldrs.filters.dansguardians.*; +package gplx.xowa.apps.apis.xowa.bldrs.filters; import gplx.*; import gplx.xowa.*; import gplx.xowa.apps.*; import gplx.xowa.apps.apis.*; import gplx.xowa.apps.apis.xowa.*; import gplx.xowa.apps.apis.xowa.bldrs.*; +import gplx.xowa.apps.apis.xowa.bldrs.filters.dansguardians.*; public class Xoapi_filter implements GfoInvkAble { public void Ctor_by_app(Xoa_app app) {dansguardian.Ctor_by_app(app);} public Xoapi_dansguardian Dansguardian() {return dansguardian;} private final Xoapi_dansguardian dansguardian = new Xoapi_dansguardian(); diff --git a/400_xowa/src/gplx/xowa/apis/xowa/bldrs/filters/dansguardians/Xoapi_dansguardian.java b/400_xowa/src/gplx/xowa/apps/apis/xowa/bldrs/filters/dansguardians/Xoapi_dansguardian.java similarity index 82% rename from 400_xowa/src/gplx/xowa/apis/xowa/bldrs/filters/dansguardians/Xoapi_dansguardian.java rename to 400_xowa/src/gplx/xowa/apps/apis/xowa/bldrs/filters/dansguardians/Xoapi_dansguardian.java index 953706ca0..6d12b9ee7 100644 --- a/400_xowa/src/gplx/xowa/apis/xowa/bldrs/filters/dansguardians/Xoapi_dansguardian.java +++ b/400_xowa/src/gplx/xowa/apps/apis/xowa/bldrs/filters/dansguardians/Xoapi_dansguardian.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.apis.xowa.bldrs.filters.dansguardians; import gplx.*; import gplx.xowa.*; import gplx.xowa.apis.*; import gplx.xowa.apis.xowa.*; import gplx.xowa.apis.xowa.bldrs.*; import gplx.xowa.apis.xowa.bldrs.filters.*; +package gplx.xowa.apps.apis.xowa.bldrs.filters.dansguardians; import gplx.*; import gplx.xowa.*; import gplx.xowa.apps.*; import gplx.xowa.apps.apis.*; import gplx.xowa.apps.apis.xowa.*; import gplx.xowa.apps.apis.xowa.bldrs.*; import gplx.xowa.apps.apis.xowa.bldrs.filters.*; import gplx.ios.*; import gplx.xowa.bldrs.filters.dansguardians.*; public class Xoapi_dansguardian implements GfoInvkAble { public void Ctor_by_app(Xoa_app app) { @@ -38,25 +38,25 @@ public class Xoapi_dansguardian implements GfoInvkAble { return rv; } public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { - if (ctx.Match(k, Invk_enabled)) return Yn.Xto_str(enabled); + if (ctx.Match(k, Invk_enabled)) return Yn.To_str(enabled); else if (ctx.Match(k, Invk_enabled_)) enabled = m.ReadYn("v"); else if (ctx.Match(k, Invk_root_dir)) return root_dir.Raw(); else if (ctx.Match(k, Invk_root_dir_)) root_dir = m.ReadIoUrl("v"); - else if (ctx.Match(k, Invk_score_init)) return Int_.Xto_str(score_init); + else if (ctx.Match(k, Invk_score_init)) return Int_.To_str(score_init); else if (ctx.Match(k, Invk_score_init_)) score_init = m.ReadInt("v"); - else if (ctx.Match(k, Invk_score_fail)) return Int_.Xto_str(score_fail); + else if (ctx.Match(k, Invk_score_fail)) return Int_.To_str(score_fail); else if (ctx.Match(k, Invk_score_fail_)) score_fail = m.ReadInt("v"); - else if (ctx.Match(k, Invk_case_match)) return Yn.Xto_str(case_match); + else if (ctx.Match(k, Invk_case_match)) return Yn.To_str(case_match); else if (ctx.Match(k, Invk_case_match_)) case_match = m.ReadYn("v"); - else if (ctx.Match(k, Invk_wildcard_enabled)) return Yn.Xto_str(wildcard_enabled); + else if (ctx.Match(k, Invk_wildcard_enabled)) return Yn.To_str(wildcard_enabled); else if (ctx.Match(k, Invk_wildcard_enabled_)) wildcard_enabled = m.ReadYn("v"); else if (ctx.Match(k, Invk_wildcard_char)) return String_.new_u8(wildcard_char); else if (ctx.Match(k, Invk_wildcard_char_)) wildcard_char = m.ReadBry("v"); else if (ctx.Match(k, Invk_wildcard_list)) return ""; else if (ctx.Match(k, Invk_wildcard_list_)) {} - else if (ctx.Match(k, Invk_target_tid)) return Int_.Xto_str(target_tid); + else if (ctx.Match(k, Invk_target_tid)) return Int_.To_str(target_tid); else if (ctx.Match(k, Invk_target_tid_)) target_tid = m.ReadInt("v"); - else if (ctx.Match(k, Invk_log_enabled)) return Yn.Xto_str(log_enabled); + else if (ctx.Match(k, Invk_log_enabled)) return Yn.To_str(log_enabled); else if (ctx.Match(k, Invk_log_enabled_)) log_enabled = m.ReadYn("v"); else return GfoInvkAble_.Rv_unhandled; return this; diff --git a/400_xowa/src/gplx/xowa/apis/xowa/bldrs/filters/titles/Xoapi_title.java b/400_xowa/src/gplx/xowa/apps/apis/xowa/bldrs/filters/titles/Xoapi_title.java similarity index 76% rename from 400_xowa/src/gplx/xowa/apis/xowa/bldrs/filters/titles/Xoapi_title.java rename to 400_xowa/src/gplx/xowa/apps/apis/xowa/bldrs/filters/titles/Xoapi_title.java index fddc65a90..891cc226b 100644 --- a/400_xowa/src/gplx/xowa/apis/xowa/bldrs/filters/titles/Xoapi_title.java +++ b/400_xowa/src/gplx/xowa/apps/apis/xowa/bldrs/filters/titles/Xoapi_title.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.apis.xowa.bldrs.filters.titles; import gplx.*; import gplx.xowa.*; import gplx.xowa.apis.*; import gplx.xowa.apis.xowa.*; import gplx.xowa.apis.xowa.bldrs.*; import gplx.xowa.apis.xowa.bldrs.filters.*; +package gplx.xowa.apps.apis.xowa.bldrs.filters.titles; import gplx.*; import gplx.xowa.*; import gplx.xowa.apps.*; import gplx.xowa.apps.apis.*; import gplx.xowa.apps.apis.xowa.*; import gplx.xowa.apps.apis.xowa.bldrs.*; import gplx.xowa.apps.apis.xowa.bldrs.filters.*; public class Xoapi_title implements GfoInvkAble { public void Init_by_kit(Xoae_app app) { // wordlist_dir = app.Fsys_mgr().Bin_xtns_dir().GenSubDir_nest("xowa", "DansGuardian"); @@ -26,15 +26,15 @@ public class Xoapi_title implements GfoInvkAble { public int Score_pass() {return score_pass;} private int score_pass = 0; public boolean Log_enabled() {return log_enabled;} private boolean log_enabled = Bool_.Y; public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { - if (ctx.Match(k, Invk_enabled)) return Yn.Xto_str(enabled); + if (ctx.Match(k, Invk_enabled)) return Yn.To_str(enabled); else if (ctx.Match(k, Invk_enabled_)) enabled = m.ReadYn("v"); - else if (ctx.Match(k, Invk_wordlist_dir)) return Int_.Xto_str(score_init); + else if (ctx.Match(k, Invk_wordlist_dir)) return Int_.To_str(score_init); else if (ctx.Match(k, Invk_wordlist_dir_)) wordlist_dir= m.ReadIoUrl("v"); - else if (ctx.Match(k, Invk_score_init)) return Int_.Xto_str(score_init); + else if (ctx.Match(k, Invk_score_init)) return Int_.To_str(score_init); else if (ctx.Match(k, Invk_score_init_)) score_init = m.ReadInt("v"); - else if (ctx.Match(k, Invk_score_pass)) return Int_.Xto_str(score_pass); + else if (ctx.Match(k, Invk_score_pass)) return Int_.To_str(score_pass); else if (ctx.Match(k, Invk_score_pass_)) score_pass = m.ReadInt("v"); - else if (ctx.Match(k, Invk_log_enabled)) return Yn.Xto_str(enabled); + else if (ctx.Match(k, Invk_log_enabled)) return Yn.To_str(enabled); else if (ctx.Match(k, Invk_log_enabled_)) log_enabled = m.ReadYn("v"); else return GfoInvkAble_.Rv_unhandled; return this; diff --git a/400_xowa/src/gplx/xowa/apis/xowa/bldrs/imports/Xoapi_import.java b/400_xowa/src/gplx/xowa/apps/apis/xowa/bldrs/imports/Xoapi_import.java similarity index 96% rename from 400_xowa/src/gplx/xowa/apis/xowa/bldrs/imports/Xoapi_import.java rename to 400_xowa/src/gplx/xowa/apps/apis/xowa/bldrs/imports/Xoapi_import.java index 67d4dabef..b83f4fab2 100644 --- a/400_xowa/src/gplx/xowa/apis/xowa/bldrs/imports/Xoapi_import.java +++ b/400_xowa/src/gplx/xowa/apps/apis/xowa/bldrs/imports/Xoapi_import.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.apis.xowa.bldrs.imports; import gplx.*; import gplx.xowa.*; import gplx.xowa.apis.*; import gplx.xowa.apis.xowa.*; import gplx.xowa.apis.xowa.bldrs.*; +package gplx.xowa.apps.apis.xowa.bldrs.imports; import gplx.*; import gplx.xowa.*; import gplx.xowa.apps.*; import gplx.xowa.apps.apis.*; import gplx.xowa.apps.apis.xowa.*; import gplx.xowa.apps.apis.xowa.bldrs.*; import gplx.ios.*; import gplx.xowa.wikis.data.*; public class Xoapi_import implements GfoInvkAble { public long Layout_all_max() {return layout_all_max;} private long layout_all_max = 0; // disable by default; may set to 200 MB in future diff --git a/400_xowa/src/gplx/xowa/apis/xowa/envs/Xoapi_env.java b/400_xowa/src/gplx/xowa/apps/apis/xowa/envs/Xoapi_env.java similarity index 88% rename from 400_xowa/src/gplx/xowa/apis/xowa/envs/Xoapi_env.java rename to 400_xowa/src/gplx/xowa/apps/apis/xowa/envs/Xoapi_env.java index c402fff9a..538ced8fa 100644 --- a/400_xowa/src/gplx/xowa/apis/xowa/envs/Xoapi_env.java +++ b/400_xowa/src/gplx/xowa/apps/apis/xowa/envs/Xoapi_env.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.apis.xowa.envs; import gplx.*; import gplx.xowa.*; import gplx.xowa.apis.*; import gplx.xowa.apis.xowa.*; +package gplx.xowa.apps.apis.xowa.envs; import gplx.*; import gplx.xowa.*; import gplx.xowa.apps.*; import gplx.xowa.apps.apis.*; import gplx.xowa.apps.apis.xowa.*; public class Xoapi_env implements GfoInvkAble { public void Init_by_kit(Xoae_app app) {} public String Version_previous() {return version_previous;} private String version_previous = ""; diff --git a/400_xowa/src/gplx/xowa/apis/xowa/gui/Xoapi_browser.java b/400_xowa/src/gplx/xowa/apps/apis/xowa/gui/Xoapi_browser.java similarity index 91% rename from 400_xowa/src/gplx/xowa/apis/xowa/gui/Xoapi_browser.java rename to 400_xowa/src/gplx/xowa/apps/apis/xowa/gui/Xoapi_browser.java index c2335b08a..4a8af27a3 100644 --- a/400_xowa/src/gplx/xowa/apis/xowa/gui/Xoapi_browser.java +++ b/400_xowa/src/gplx/xowa/apps/apis/xowa/gui/Xoapi_browser.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.apis.xowa.gui; import gplx.*; import gplx.xowa.*; import gplx.xowa.apis.*; import gplx.xowa.apis.xowa.*; -import gplx.xowa.apis.xowa.gui.browsers.*; +package gplx.xowa.apps.apis.xowa.gui; import gplx.*; import gplx.xowa.*; import gplx.xowa.apps.*; import gplx.xowa.apps.apis.*; import gplx.xowa.apps.apis.xowa.*; +import gplx.xowa.apps.apis.xowa.gui.browsers.*; public class Xoapi_browser implements GfoInvkAble { public void Init_by_kit(Xoae_app app) { url.Init_by_kit(app); diff --git a/400_xowa/src/gplx/xowa/apis/xowa/gui/Xoapi_font.java b/400_xowa/src/gplx/xowa/apps/apis/xowa/gui/Xoapi_font.java similarity index 85% rename from 400_xowa/src/gplx/xowa/apis/xowa/gui/Xoapi_font.java rename to 400_xowa/src/gplx/xowa/apps/apis/xowa/gui/Xoapi_font.java index da7e4d7d5..62419139f 100644 --- a/400_xowa/src/gplx/xowa/apis/xowa/gui/Xoapi_font.java +++ b/400_xowa/src/gplx/xowa/apps/apis/xowa/gui/Xoapi_font.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.apis.xowa.gui; import gplx.*; import gplx.xowa.*; import gplx.xowa.apis.*; import gplx.xowa.apis.xowa.*; -import gplx.xowa.cfgs.gui.*; import gplx.xowa.html.*; +package gplx.xowa.apps.apis.xowa.gui; import gplx.*; import gplx.xowa.*; import gplx.xowa.apps.*; import gplx.xowa.apps.apis.*; import gplx.xowa.apps.apis.xowa.*; +import gplx.xowa.apps.cfgs.gui.*; import gplx.xowa.htmls.*; public class Xoapi_font implements GfoInvkAble { private Xoae_app app; public void Init_by_kit(Xoae_app app) { @@ -36,9 +36,9 @@ public class Xoapi_font implements GfoInvkAble { app.Html_mgr().Page_mgr().Font_enabled_(enabled); app.Html_mgr().Page_mgr().Font_size_(html_font_size); app.Cfg_mgr().Set_by_app("app.html.page.font_enabled", "y"); - app.Cfg_mgr().Set_by_app("app.html.page.font_size", Float_.Xto_str(app.Html_mgr().Page_mgr().Font_size())); + app.Cfg_mgr().Set_by_app("app.html.page.font_size", Float_.To_str(app.Html_mgr().Page_mgr().Font_size())); app.Gui_mgr().Win_cfg().Font().Size_(gui_font_size); - app.Cfg_mgr().Set_by_app("app.gui.win_opts.font.size", Float_.Xto_str(gui_font_size)); + app.Cfg_mgr().Set_by_app("app.gui.win_opts.font.size", Float_.To_str(gui_font_size)); app.Cfg_mgr().Db_save_txt(); app.Gui_mgr().Browser_win().Page__reload(); // NOTE: force reload; needed if viewing Help:Options/HTML, else Font size won't update } diff --git a/400_xowa/src/gplx/xowa/apis/xowa/gui/Xoapi_page.java b/400_xowa/src/gplx/xowa/apps/apis/xowa/gui/Xoapi_page.java similarity index 87% rename from 400_xowa/src/gplx/xowa/apis/xowa/gui/Xoapi_page.java rename to 400_xowa/src/gplx/xowa/apps/apis/xowa/gui/Xoapi_page.java index bd4bb654e..00d372598 100644 --- a/400_xowa/src/gplx/xowa/apis/xowa/gui/Xoapi_page.java +++ b/400_xowa/src/gplx/xowa/apps/apis/xowa/gui/Xoapi_page.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.apis.xowa.gui; import gplx.*; import gplx.xowa.*; import gplx.xowa.apis.*; import gplx.xowa.apis.xowa.*; -import gplx.xowa.apis.xowa.gui.pages.*; +package gplx.xowa.apps.apis.xowa.gui; import gplx.*; import gplx.xowa.*; import gplx.xowa.apps.*; import gplx.xowa.apps.apis.*; import gplx.xowa.apps.apis.xowa.*; +import gplx.xowa.apps.apis.xowa.gui.pages.*; public class Xoapi_page implements GfoInvkAble { public void Init_by_kit(Xoae_app app) { view.Init_by_kit(app); diff --git a/400_xowa/src/gplx/xowa/apis/xowa/gui/browsers/Xoapi_find.java b/400_xowa/src/gplx/xowa/apps/apis/xowa/gui/browsers/Xoapi_find.java similarity index 87% rename from 400_xowa/src/gplx/xowa/apis/xowa/gui/browsers/Xoapi_find.java rename to 400_xowa/src/gplx/xowa/apps/apis/xowa/gui/browsers/Xoapi_find.java index d8e5c3343..432254c1e 100644 --- a/400_xowa/src/gplx/xowa/apis/xowa/gui/browsers/Xoapi_find.java +++ b/400_xowa/src/gplx/xowa/apps/apis/xowa/gui/browsers/Xoapi_find.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.apis.xowa.gui.browsers; import gplx.*; import gplx.xowa.*; import gplx.xowa.apis.*; import gplx.xowa.apis.xowa.*; import gplx.xowa.apis.xowa.gui.*; -import gplx.gfui.*; import gplx.xowa.pages.*; import gplx.xowa.gui.*; import gplx.xowa.gui.views.*; +package gplx.xowa.apps.apis.xowa.gui.browsers; import gplx.*; import gplx.xowa.*; import gplx.xowa.apps.*; import gplx.xowa.apps.apis.*; import gplx.xowa.apps.apis.xowa.*; import gplx.xowa.apps.apis.xowa.gui.*; +import gplx.gfui.*; import gplx.xowa.wikis.pages.*; import gplx.xowa.guis.*; import gplx.xowa.guis.views.*; public class Xoapi_find implements GfoInvkAble { private Xog_find_box find_box; public void Init_by_kit(Xoae_app app) { @@ -50,7 +50,7 @@ class Xog_find_box { public void Hide() { app.Gui_mgr().Layout().Find_close(); Xog_tab_itm tab = win.Tab_mgr().Active_tab(); if (tab == Xog_tab_itm_.Null) return; - if (tab.View_mode() == Xopg_view_mode.Tid_read) // do not fire find("") for edit / html, else focus issues; DATE:2015-06-10 + if (tab.View_mode() == Xopg_page_.Tid_read) // do not fire find("") for edit / html, else focus issues; DATE:2015-06-10 Exec_find(prv_find_text, Bool_.N); } public void Show_by_paste() { @@ -72,7 +72,7 @@ class Xog_find_box { private void Exec_find(String find, boolean highlight_matches) { Xog_tab_itm tab = win.Tab_mgr().Active_tab(); if (tab == Xog_tab_itm_.Null) return; find = String_.Replace(find, "\\", "\\\\"); // NOTE: backslashes are always literal, never escape codes; EX: "C:\new" "\n" means "\n", not (byte)10; DATE:2015-08-17 - boolean find_in_hdoc = tab.View_mode() == Xopg_view_mode.Tid_read; + boolean find_in_hdoc = tab.View_mode() == Xopg_page_.Tid_read; if (find_in_hdoc) tab.Html_box().Html_js_eval_proc_as_str(Xog_js_procs.Win__find_in_hdoc , find, dir_fwd, case_match, wrap_search, highlight_matches); else diff --git a/400_xowa/src/gplx/xowa/apis/xowa/gui/browsers/Xoapi_html_box.java b/400_xowa/src/gplx/xowa/apps/apis/xowa/gui/browsers/Xoapi_html_box.java similarity index 84% rename from 400_xowa/src/gplx/xowa/apis/xowa/gui/browsers/Xoapi_html_box.java rename to 400_xowa/src/gplx/xowa/apps/apis/xowa/gui/browsers/Xoapi_html_box.java index a56c1a22b..ba4ccac49 100644 --- a/400_xowa/src/gplx/xowa/apis/xowa/gui/browsers/Xoapi_html_box.java +++ b/400_xowa/src/gplx/xowa/apps/apis/xowa/gui/browsers/Xoapi_html_box.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.apis.xowa.gui.browsers; import gplx.*; import gplx.xowa.*; import gplx.xowa.apis.*; import gplx.xowa.apis.xowa.*; import gplx.xowa.apis.xowa.gui.*; -import gplx.gfui.*; import gplx.xowa.pages.*; import gplx.xowa.gui.*; import gplx.xowa.gui.views.*; +package gplx.xowa.apps.apis.xowa.gui.browsers; import gplx.*; import gplx.xowa.*; import gplx.xowa.apps.*; import gplx.xowa.apps.apis.*; import gplx.xowa.apps.apis.xowa.*; import gplx.xowa.apps.apis.xowa.gui.*; +import gplx.gfui.*; import gplx.xowa.wikis.pages.*; import gplx.xowa.guis.*; import gplx.xowa.guis.views.*; public class Xoapi_html_box implements GfoInvkAble, GfoEvMgrOwner { private Xog_win_itm win; public Xoapi_html_box() { @@ -29,7 +29,7 @@ public class Xoapi_html_box implements GfoInvkAble, GfoEvMgrOwner { Xog_tab_itm tab = win.Active_tab(); if (tab == Xog_tab_itm_.Null) return; Gfui_html html_box = tab.Html_itm().Html_box(); html_box.Focus(); - if (tab.View_mode() != Xopg_view_mode.Tid_read) // if edit / html, place focus in edit box + if (tab.View_mode() != Xopg_page_.Tid_read) // if edit / html, place focus in edit box html_box.Html_js_eval_proc_as_str(Xog_js_procs.Doc__elem_focus, Xog_html_itm.Elem_id__xowa_edit_data_box); } public void Selection_focus() { diff --git a/400_xowa/src/gplx/xowa/apis/xowa/gui/browsers/Xoapi_info.java b/400_xowa/src/gplx/xowa/apps/apis/xowa/gui/browsers/Xoapi_info.java similarity index 81% rename from 400_xowa/src/gplx/xowa/apis/xowa/gui/browsers/Xoapi_info.java rename to 400_xowa/src/gplx/xowa/apps/apis/xowa/gui/browsers/Xoapi_info.java index aa6d6f2cd..39ef6b8e2 100644 --- a/400_xowa/src/gplx/xowa/apis/xowa/gui/browsers/Xoapi_info.java +++ b/400_xowa/src/gplx/xowa/apps/apis/xowa/gui/browsers/Xoapi_info.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.apis.xowa.gui.browsers; import gplx.*; import gplx.xowa.*; import gplx.xowa.apis.*; import gplx.xowa.apis.xowa.*; import gplx.xowa.apis.xowa.gui.*; -import gplx.gfui.*; import gplx.xowa.gui.views.*; +package gplx.xowa.apps.apis.xowa.gui.browsers; import gplx.*; import gplx.xowa.*; import gplx.xowa.apps.*; import gplx.xowa.apps.apis.*; import gplx.xowa.apps.apis.xowa.*; import gplx.xowa.apps.apis.xowa.gui.*; +import gplx.gfui.*; import gplx.xowa.guis.views.*; public class Xoapi_info implements Gfo_usr_dlg__gui__opt, GfoInvkAble { public void Init_by_kit(Xoae_app app) {this.app = app;} private Xoae_app app; private Xog_win_itm Win() {return app.Gui_mgr().Browser_win();} @@ -32,9 +32,9 @@ public class Xoapi_info implements Gfo_usr_dlg__gui__opt, GfoInvkAble { if (ctx.Match(k, Invk_focus)) this.Focus(); else if (ctx.Match(k, Invk_clear)) this.Clear(); else if (ctx.Match(k, Invk_launch)) this.Launch(); - else if (ctx.Match(k, Invk_warn_enabled)) return Yn.Xto_str(warn_enabled); + else if (ctx.Match(k, Invk_warn_enabled)) return Yn.To_str(warn_enabled); else if (ctx.Match(k, Invk_warn_enabled_)) warn_enabled = m.ReadYn("v"); - else if (ctx.Match(k, Invk_note_enabled)) return Yn.Xto_str(note_enabled); + else if (ctx.Match(k, Invk_note_enabled)) return Yn.To_str(note_enabled); else if (ctx.Match(k, Invk_note_enabled_)) note_enabled = m.ReadYn("v"); else return GfoInvkAble_.Rv_unhandled; return this; diff --git a/400_xowa/src/gplx/xowa/apis/xowa/gui/browsers/Xoapi_prog.java b/400_xowa/src/gplx/xowa/apps/apis/xowa/gui/browsers/Xoapi_prog.java similarity index 80% rename from 400_xowa/src/gplx/xowa/apis/xowa/gui/browsers/Xoapi_prog.java rename to 400_xowa/src/gplx/xowa/apps/apis/xowa/gui/browsers/Xoapi_prog.java index 0e4f2aa48..24860dbd2 100644 --- a/400_xowa/src/gplx/xowa/apis/xowa/gui/browsers/Xoapi_prog.java +++ b/400_xowa/src/gplx/xowa/apps/apis/xowa/gui/browsers/Xoapi_prog.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.apis.xowa.gui.browsers; import gplx.*; import gplx.xowa.*; import gplx.xowa.apis.*; import gplx.xowa.apis.xowa.*; import gplx.xowa.apis.xowa.gui.*; -import gplx.gfui.*; import gplx.xowa.gui.views.*; +package gplx.xowa.apps.apis.xowa.gui.browsers; import gplx.*; import gplx.xowa.*; import gplx.xowa.apps.*; import gplx.xowa.apps.apis.*; import gplx.xowa.apps.apis.xowa.*; import gplx.xowa.apps.apis.xowa.gui.*; +import gplx.gfui.*; import gplx.xowa.guis.views.*; public class Xoapi_prog implements GfoInvkAble { public void Init_by_kit(Xoae_app app) {this.app = app;} private Xoae_app app; private Xog_win_itm Win() {return app.Gui_mgr().Browser_win();} @@ -25,7 +25,7 @@ public class Xoapi_prog implements GfoInvkAble { public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { if (ctx.Match(k, Invk_focus)) this.Focus(); - else if (ctx.Match(k, Invk_show_short_url)) return Yn.Xto_str(show_short_url); + else if (ctx.Match(k, Invk_show_short_url)) return Yn.To_str(show_short_url); else if (ctx.Match(k, Invk_show_short_url_)) show_short_url = m.ReadBool("v"); else return GfoInvkAble_.Rv_unhandled; return this; diff --git a/400_xowa/src/gplx/xowa/apis/xowa/gui/browsers/Xoapi_prog_log.java b/400_xowa/src/gplx/xowa/apps/apis/xowa/gui/browsers/Xoapi_prog_log.java similarity index 80% rename from 400_xowa/src/gplx/xowa/apis/xowa/gui/browsers/Xoapi_prog_log.java rename to 400_xowa/src/gplx/xowa/apps/apis/xowa/gui/browsers/Xoapi_prog_log.java index 3edf3e1af..a30fadbe3 100644 --- a/400_xowa/src/gplx/xowa/apis/xowa/gui/browsers/Xoapi_prog_log.java +++ b/400_xowa/src/gplx/xowa/apps/apis/xowa/gui/browsers/Xoapi_prog_log.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.apis.xowa.gui.browsers; import gplx.*; import gplx.xowa.*; import gplx.xowa.apis.*; import gplx.xowa.apis.xowa.*; import gplx.xowa.apis.xowa.gui.*; -import gplx.gfui.*; import gplx.xowa.gui.views.*; +package gplx.xowa.apps.apis.xowa.gui.browsers; import gplx.*; import gplx.xowa.*; import gplx.xowa.apps.*; import gplx.xowa.apps.apis.*; import gplx.xowa.apps.apis.xowa.*; import gplx.xowa.apps.apis.xowa.gui.*; +import gplx.gfui.*; import gplx.xowa.guis.views.*; public class Xoapi_prog_log implements GfoInvkAble { public void Init_by_kit(Xoae_app app) {this.app = app;} private Xoae_app app; public void Show() {app.Gui_mgr().Show_prog();} diff --git a/400_xowa/src/gplx/xowa/apis/xowa/gui/browsers/Xoapi_search.java b/400_xowa/src/gplx/xowa/apps/apis/xowa/gui/browsers/Xoapi_search.java similarity index 83% rename from 400_xowa/src/gplx/xowa/apis/xowa/gui/browsers/Xoapi_search.java rename to 400_xowa/src/gplx/xowa/apps/apis/xowa/gui/browsers/Xoapi_search.java index 9da0d9503..508d90256 100644 --- a/400_xowa/src/gplx/xowa/apis/xowa/gui/browsers/Xoapi_search.java +++ b/400_xowa/src/gplx/xowa/apps/apis/xowa/gui/browsers/Xoapi_search.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.apis.xowa.gui.browsers; import gplx.*; import gplx.xowa.*; import gplx.xowa.apis.*; import gplx.xowa.apis.xowa.*; import gplx.xowa.apis.xowa.gui.*; -import gplx.gfui.*; import gplx.xowa.gui.views.*; +package gplx.xowa.apps.apis.xowa.gui.browsers; import gplx.*; import gplx.xowa.*; import gplx.xowa.apps.*; import gplx.xowa.apps.apis.*; import gplx.xowa.apps.apis.xowa.*; import gplx.xowa.apps.apis.xowa.gui.*; +import gplx.gfui.*; import gplx.xowa.guis.views.*; public class Xoapi_search implements GfoInvkAble { public void Init_by_kit(Xoae_app app) {this.app = app;} private Xoae_app app; private GfuiTextBox Search_box() {return app.Gui_mgr().Browser_win().Search_box();} diff --git a/400_xowa/src/gplx/xowa/apis/xowa/gui/browsers/Xoapi_tabs.java b/400_xowa/src/gplx/xowa/apps/apis/xowa/gui/browsers/Xoapi_tabs.java similarity index 94% rename from 400_xowa/src/gplx/xowa/apis/xowa/gui/browsers/Xoapi_tabs.java rename to 400_xowa/src/gplx/xowa/apps/apis/xowa/gui/browsers/Xoapi_tabs.java index c8877fe30..8a97b27df 100644 --- a/400_xowa/src/gplx/xowa/apis/xowa/gui/browsers/Xoapi_tabs.java +++ b/400_xowa/src/gplx/xowa/apps/apis/xowa/gui/browsers/Xoapi_tabs.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.apis.xowa.gui.browsers; import gplx.*; import gplx.xowa.*; import gplx.xowa.apis.*; import gplx.xowa.apis.xowa.*; import gplx.xowa.apis.xowa.gui.*; -import gplx.xowa.gui.views.*; +package gplx.xowa.apps.apis.xowa.gui.browsers; import gplx.*; import gplx.xowa.*; import gplx.xowa.apps.*; import gplx.xowa.apps.apis.*; import gplx.xowa.apps.apis.xowa.*; import gplx.xowa.apps.apis.xowa.gui.*; +import gplx.xowa.guis.views.*; public class Xoapi_tabs implements GfoInvkAble { private Xog_tab_mgr tab_mgr; public void Init_by_kit(Xoae_app app) { diff --git a/400_xowa/src/gplx/xowa/apis/xowa/gui/browsers/Xoapi_url.java b/400_xowa/src/gplx/xowa/apps/apis/xowa/gui/browsers/Xoapi_url.java similarity index 90% rename from 400_xowa/src/gplx/xowa/apis/xowa/gui/browsers/Xoapi_url.java rename to 400_xowa/src/gplx/xowa/apps/apis/xowa/gui/browsers/Xoapi_url.java index 9017c1247..928ef5aea 100644 --- a/400_xowa/src/gplx/xowa/apis/xowa/gui/browsers/Xoapi_url.java +++ b/400_xowa/src/gplx/xowa/apps/apis/xowa/gui/browsers/Xoapi_url.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.apis.xowa.gui.browsers; import gplx.*; import gplx.xowa.*; import gplx.xowa.apis.*; import gplx.xowa.apis.xowa.*; import gplx.xowa.apis.xowa.gui.*; -import gplx.gfui.*; import gplx.xowa.gui.views.*; +package gplx.xowa.apps.apis.xowa.gui.browsers; import gplx.*; import gplx.xowa.*; import gplx.xowa.apps.*; import gplx.xowa.apps.apis.*; import gplx.xowa.apps.apis.xowa.*; import gplx.xowa.apps.apis.xowa.gui.*; +import gplx.gfui.*; import gplx.xowa.guis.views.*; public class Xoapi_url implements GfoInvkAble { public void Init_by_kit(Xoae_app app) {this.app = app;} private Xoae_app app; private GfuiTextBox Url_box() {return app.Gui_mgr().Browser_win().Url_box();} diff --git a/400_xowa/src/gplx/xowa/apis/xowa/gui/pages/Xoapi_edit.java b/400_xowa/src/gplx/xowa/apps/apis/xowa/gui/pages/Xoapi_edit.java similarity index 86% rename from 400_xowa/src/gplx/xowa/apis/xowa/gui/pages/Xoapi_edit.java rename to 400_xowa/src/gplx/xowa/apps/apis/xowa/gui/pages/Xoapi_edit.java index 6c2c8fcd1..33d87e5df 100644 --- a/400_xowa/src/gplx/xowa/apis/xowa/gui/pages/Xoapi_edit.java +++ b/400_xowa/src/gplx/xowa/apps/apis/xowa/gui/pages/Xoapi_edit.java @@ -15,22 +15,22 @@ 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.apis.xowa.gui.pages; import gplx.*; import gplx.xowa.*; import gplx.xowa.apis.*; import gplx.xowa.apis.xowa.*; import gplx.xowa.apis.xowa.gui.*; -import gplx.xowa.gui.*; import gplx.xowa.gui.views.*; import gplx.xowa.pages.*; +package gplx.xowa.apps.apis.xowa.gui.pages; import gplx.*; import gplx.xowa.*; import gplx.xowa.apps.*; import gplx.xowa.apps.apis.*; import gplx.xowa.apps.apis.xowa.*; import gplx.xowa.apps.apis.xowa.gui.*; +import gplx.xowa.guis.*; import gplx.xowa.guis.views.*; import gplx.xowa.wikis.pages.*; public class Xoapi_edit implements GfoInvkAble { private Xog_win_itm win; public void Init_by_kit(Xoae_app app) { win = app.Gui_mgr().Browser_win(); } private boolean Active_tab_is_null() {return win.Tab_mgr().Active_tab_is_null();} - private boolean Active_tab_is_edit() {return !win.Tab_mgr().Active_tab_is_null() && win.Tab_mgr().Active_tab().View_mode() == Xopg_view_mode.Tid_edit;} + private boolean Active_tab_is_edit() {return !win.Tab_mgr().Active_tab_is_null() && win.Tab_mgr().Active_tab().View_mode() == Xopg_page_.Tid_edit;} public void Copy() {if (Active_tab_is_null()) return; win.Kit().Clipboard().Copy(win.Active_html_itm().Html_selected_get_text_or_href());} public void Select_all() {if (Active_tab_is_null()) return; GfoInvkAble_.InvkCmd(win.Win_box().Kit().Clipboard(), gplx.gfui.Gfui_clipboard_.Invk_select_all);} public void Save() {if (!Active_tab_is_edit()) return; Xog_tab_itm_edit_mgr.Save(win.Active_tab(), false);} public void Save_draft() {if (!Active_tab_is_edit()) return; Xog_tab_itm_edit_mgr.Save(win.Active_tab(), true);} public void Preview() {if (!Active_tab_is_edit()) return; Xog_tab_itm_edit_mgr.Preview(win.Active_tab());} - public void Dbg_tmpl() {if (!Active_tab_is_edit()) return; Xog_tab_itm_edit_mgr.Debug(win, Xopg_view_mode.Tid_edit);} - public void Dbg_html() {if (!Active_tab_is_edit()) return; Xog_tab_itm_edit_mgr.Debug(win, Xopg_view_mode.Tid_html);} + public void Dbg_tmpl() {if (!Active_tab_is_edit()) return; Xog_tab_itm_edit_mgr.Debug(win, Xopg_page_.Tid_edit);} + public void Dbg_html() {if (!Active_tab_is_edit()) return; Xog_tab_itm_edit_mgr.Debug(win, Xopg_page_.Tid_html);} public void Focus_edit_box(){if (!Active_tab_is_edit()) return; Xog_tab_itm_edit_mgr.Focus(win, Xog_html_itm.Elem_id__xowa_edit_data_box);} public void Exec() { } diff --git a/400_xowa/src/gplx/xowa/apis/xowa/gui/pages/Xoapi_selection.java b/400_xowa/src/gplx/xowa/apps/apis/xowa/gui/pages/Xoapi_selection.java similarity index 87% rename from 400_xowa/src/gplx/xowa/apis/xowa/gui/pages/Xoapi_selection.java rename to 400_xowa/src/gplx/xowa/apps/apis/xowa/gui/pages/Xoapi_selection.java index 347dfd40a..22840657e 100644 --- a/400_xowa/src/gplx/xowa/apis/xowa/gui/pages/Xoapi_selection.java +++ b/400_xowa/src/gplx/xowa/apps/apis/xowa/gui/pages/Xoapi_selection.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.apis.xowa.gui.pages; import gplx.*; import gplx.xowa.*; import gplx.xowa.apis.*; import gplx.xowa.apis.xowa.*; import gplx.xowa.apis.xowa.gui.*; -import gplx.gfui.*; import gplx.xowa.gui.*; import gplx.xowa.gui.views.*; +package gplx.xowa.apps.apis.xowa.gui.pages; import gplx.*; import gplx.xowa.*; import gplx.xowa.apps.*; import gplx.xowa.apps.apis.*; import gplx.xowa.apps.apis.xowa.*; import gplx.xowa.apps.apis.xowa.gui.*; +import gplx.gfui.*; import gplx.xowa.guis.*; import gplx.xowa.guis.views.*; public class Xoapi_selection implements GfoInvkAble { private Xoae_app app; private Xog_win_itm win; public void Init_by_kit(Xoae_app app) { @@ -37,7 +37,7 @@ public class Xoapi_selection implements GfoInvkAble { String trg = app.Gui_mgr().Kit().New_dlg_file(Gfui_kit_.File_dlg_type_save, "Select file to save to:").Init_file_(trg_name).Ask(); if (String_.Len_eq_0(trg)) return; Io_url trg_url = Io_url_.new_fil_(trg); - Io_mgr.I.CopyFil(src_url, trg_url, true); + Io_mgr.Instance.CopyFil(src_url, trg_url, true); } public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { if (ctx.Match(k, Invk_copy)) this.Copy(); diff --git a/400_xowa/src/gplx/xowa/apis/xowa/gui/pages/Xoapi_view.java b/400_xowa/src/gplx/xowa/apps/apis/xowa/gui/pages/Xoapi_view.java similarity index 81% rename from 400_xowa/src/gplx/xowa/apis/xowa/gui/pages/Xoapi_view.java rename to 400_xowa/src/gplx/xowa/apps/apis/xowa/gui/pages/Xoapi_view.java index 9b49be0b1..73f572573 100644 --- a/400_xowa/src/gplx/xowa/apis/xowa/gui/pages/Xoapi_view.java +++ b/400_xowa/src/gplx/xowa/apps/apis/xowa/gui/pages/Xoapi_view.java @@ -15,17 +15,17 @@ 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.apis.xowa.gui.pages; import gplx.*; import gplx.xowa.*; import gplx.xowa.apis.*; import gplx.xowa.apis.xowa.*; import gplx.xowa.apis.xowa.gui.*; -import gplx.gfui.*; import gplx.xowa.gui.*; import gplx.xowa.gui.views.*; import gplx.xowa.pages.*; +package gplx.xowa.apps.apis.xowa.gui.pages; import gplx.*; import gplx.xowa.*; import gplx.xowa.apps.*; import gplx.xowa.apps.apis.*; import gplx.xowa.apps.apis.xowa.*; import gplx.xowa.apps.apis.xowa.gui.*; +import gplx.gfui.*; import gplx.xowa.guis.*; import gplx.xowa.guis.views.*; import gplx.xowa.wikis.pages.*; public class Xoapi_view implements GfoInvkAble { private Xoae_app app; private Xog_win_itm win; public void Init_by_kit(Xoae_app app) { this.app = app; this.win = app.Gui_mgr().Browser_win(); } private boolean Active_tab_is_null() {return win.Tab_mgr().Active_tab_is_null();} - public void Mode_read() {Mode(Xopg_view_mode.Tid_read);} - public void Mode_edit() {Mode(Xopg_view_mode.Tid_edit);} - public void Mode_html() {Mode(Xopg_view_mode.Tid_html);} + public void Mode_read() {Mode(Xopg_page_.Tid_read);} + public void Mode_edit() {Mode(Xopg_page_.Tid_edit);} + public void Mode_html() {Mode(Xopg_page_.Tid_html);} private void Mode(byte v) {if (Active_tab_is_null()) return; win.Page__mode_(v);} public void Reload() {if (Active_tab_is_null()) return; win.Page__reload();} public void Refresh() {if (Active_tab_is_null()) return; win.Page__refresh();} @@ -39,7 +39,7 @@ public class Xoapi_view implements GfoInvkAble { String file_name = Xoa_app_.Utl__encoder_mgr().Fsys_safe().Encode_str(String_.new_u8(tab.Page().Ttl().Full_url())) + ".html"; String file_url = app.Gui_mgr().Kit().New_dlg_file(Gfui_kit_.File_dlg_type_save, "Select file to save to:").Init_file_(file_name).Ask(); if (String_.Len_eq_0(file_url)) return; - Io_mgr.I.SaveFilStr(file_url, tab.Html_box().Text()); + Io_mgr.Instance.SaveFilStr(file_url, tab.Html_box().Text()); app.Usr_dlg().Prog_many("", "", "saved page: file=~{0}", file_url); } public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { diff --git a/400_xowa/src/gplx/xowa/apis/xowa/html/Xoapi_modules.java b/400_xowa/src/gplx/xowa/apps/apis/xowa/html/Xoapi_modules.java similarity index 88% rename from 400_xowa/src/gplx/xowa/apis/xowa/html/Xoapi_modules.java rename to 400_xowa/src/gplx/xowa/apps/apis/xowa/html/Xoapi_modules.java index a6c778fb9..1e6a16d5a 100644 --- a/400_xowa/src/gplx/xowa/apis/xowa/html/Xoapi_modules.java +++ b/400_xowa/src/gplx/xowa/apps/apis/xowa/html/Xoapi_modules.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.apis.xowa.html; import gplx.*; import gplx.xowa.*; import gplx.xowa.apis.*; import gplx.xowa.apis.xowa.*; -import gplx.xowa.apis.xowa.html.modules.*; +package gplx.xowa.apps.apis.xowa.html; import gplx.*; import gplx.xowa.*; import gplx.xowa.apps.*; import gplx.xowa.apps.apis.*; import gplx.xowa.apps.apis.xowa.*; +import gplx.xowa.apps.apis.xowa.html.modules.*; public class Xoapi_modules implements GfoInvkAble { public void Init_by_kit(Xoae_app app) { popups.Init_by_app(app); diff --git a/400_xowa/src/gplx/xowa/apis/xowa/html/Xoapi_page.java b/400_xowa/src/gplx/xowa/apps/apis/xowa/html/Xoapi_page.java similarity index 78% rename from 400_xowa/src/gplx/xowa/apis/xowa/html/Xoapi_page.java rename to 400_xowa/src/gplx/xowa/apps/apis/xowa/html/Xoapi_page.java index 902885b18..a81ec028e 100644 --- a/400_xowa/src/gplx/xowa/apis/xowa/html/Xoapi_page.java +++ b/400_xowa/src/gplx/xowa/apps/apis/xowa/html/Xoapi_page.java @@ -15,15 +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.apis.xowa.html; import gplx.*; import gplx.xowa.*; import gplx.xowa.apis.*; import gplx.xowa.apis.xowa.*; +package gplx.xowa.apps.apis.xowa.html; import gplx.*; import gplx.xowa.*; import gplx.xowa.apps.*; import gplx.xowa.apps.apis.*; import gplx.xowa.apps.apis.xowa.*; import gplx.core.btries.*; public class Xoapi_page implements GfoInvkAble { public void Ctor_by_app(Xoae_app app) { toggle_mgr.Ctor_by_app(app); } - public Xoapi_toggle_mgr Toggle_mgr() {return toggle_mgr;} private final Xoapi_toggle_mgr toggle_mgr = new Xoapi_toggle_mgr(); + public Xoapi_toggle_mgr Toggle_mgr() {return toggle_mgr;} private final Xoapi_toggle_mgr toggle_mgr = new Xoapi_toggle_mgr(); public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { - if (ctx.Match(k, Invk_toggles)) return toggle_mgr; + if (ctx.Match(k, Invk_toggles)) return toggle_mgr; else return GfoInvkAble_.Rv_unhandled; } private static final String Invk_toggles = "toggles"; diff --git a/400_xowa/src/gplx/xowa/apis/xowa/html/Xoapi_skins.java b/400_xowa/src/gplx/xowa/apps/apis/xowa/html/Xoapi_skins.java similarity index 86% rename from 400_xowa/src/gplx/xowa/apis/xowa/html/Xoapi_skins.java rename to 400_xowa/src/gplx/xowa/apps/apis/xowa/html/Xoapi_skins.java index 8fef7221f..96c3dc526 100644 --- a/400_xowa/src/gplx/xowa/apis/xowa/html/Xoapi_skins.java +++ b/400_xowa/src/gplx/xowa/apps/apis/xowa/html/Xoapi_skins.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.apis.xowa.html; import gplx.*; import gplx.xowa.*; import gplx.xowa.apis.*; import gplx.xowa.apis.xowa.*; -import gplx.xowa.apis.xowa.html.skins.*; +package gplx.xowa.apps.apis.xowa.html; import gplx.*; import gplx.xowa.*; import gplx.xowa.apps.*; import gplx.xowa.apps.apis.*; import gplx.xowa.apps.apis.xowa.*; +import gplx.xowa.apps.apis.xowa.html.skins.*; public class Xoapi_skins implements GfoInvkAble { private Hash_adp hash = Hash_adp_.new_(); public Xoapi_skins() { diff --git a/400_xowa/src/gplx/xowa/apis/xowa/html/Xoapi_tidy.java b/400_xowa/src/gplx/xowa/apps/apis/xowa/html/Xoapi_tidy.java similarity index 87% rename from 400_xowa/src/gplx/xowa/apis/xowa/html/Xoapi_tidy.java rename to 400_xowa/src/gplx/xowa/apps/apis/xowa/html/Xoapi_tidy.java index 10a4e057a..94f0b97f8 100644 --- a/400_xowa/src/gplx/xowa/apis/xowa/html/Xoapi_tidy.java +++ b/400_xowa/src/gplx/xowa/apps/apis/xowa/html/Xoapi_tidy.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.apis.xowa.html; import gplx.*; import gplx.xowa.*; import gplx.xowa.apis.*; import gplx.xowa.apis.xowa.*; -import gplx.xowa.html.tidy.*; +package gplx.xowa.apps.apis.xowa.html; import gplx.*; import gplx.xowa.*; import gplx.xowa.apps.*; import gplx.xowa.apps.apis.*; import gplx.xowa.apps.apis.xowa.*; +import gplx.xowa.htmls.tidy.*; public class Xoapi_tidy implements GfoInvkAble { private Xoae_app app; public void Init_by_kit(Xoae_app app) { diff --git a/400_xowa/src/gplx/xowa/apis/xowa/html/Xoapi_toggle_itm.java b/400_xowa/src/gplx/xowa/apps/apis/xowa/html/Xoapi_toggle_itm.java similarity index 93% rename from 400_xowa/src/gplx/xowa/apis/xowa/html/Xoapi_toggle_itm.java rename to 400_xowa/src/gplx/xowa/apps/apis/xowa/html/Xoapi_toggle_itm.java index efc911e8a..64972bc82 100644 --- a/400_xowa/src/gplx/xowa/apis/xowa/html/Xoapi_toggle_itm.java +++ b/400_xowa/src/gplx/xowa/apps/apis/xowa/html/Xoapi_toggle_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.apis.xowa.html; import gplx.*; import gplx.xowa.*; import gplx.xowa.apis.*; import gplx.xowa.apis.xowa.*; +package gplx.xowa.apps.apis.xowa.html; import gplx.*; import gplx.xowa.*; import gplx.xowa.apps.*; import gplx.xowa.apps.apis.*; import gplx.xowa.apps.apis.xowa.*; public class Xoapi_toggle_itm implements GfoInvkAble { private final Xoae_app app; // NOTE: needed to get "img_dir" below private byte[] img_title_val_y, img_title_val_n; @@ -79,7 +79,7 @@ public class Xoapi_toggle_itm implements GfoInvkAble { ; } public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { - if (ctx.Match(k, Invk_visible)) return Yn.Xto_str(visible); + if (ctx.Match(k, Invk_visible)) return Yn.To_str(visible); else if (ctx.Match(k, Invk_visible_)) this.visible = m.ReadYn("v"); else return GfoInvkAble_.Rv_unhandled; return this; diff --git a/400_xowa/src/gplx/xowa/apis/xowa/html/Xoapi_toggle_mgr.java b/400_xowa/src/gplx/xowa/apps/apis/xowa/html/Xoapi_toggle_mgr.java similarity index 83% rename from 400_xowa/src/gplx/xowa/apis/xowa/html/Xoapi_toggle_mgr.java rename to 400_xowa/src/gplx/xowa/apps/apis/xowa/html/Xoapi_toggle_mgr.java index 84c1b6b13..c1a7c5bb7 100644 --- a/400_xowa/src/gplx/xowa/apis/xowa/html/Xoapi_toggle_mgr.java +++ b/400_xowa/src/gplx/xowa/apps/apis/xowa/html/Xoapi_toggle_mgr.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.apis.xowa.html; import gplx.*; import gplx.xowa.*; import gplx.xowa.apis.*; import gplx.xowa.apis.xowa.*; -import gplx.xowa.cfgs.*; +package gplx.xowa.apps.apis.xowa.html; import gplx.*; import gplx.xowa.*; import gplx.xowa.apps.*; import gplx.xowa.apps.apis.*; import gplx.xowa.apps.apis.xowa.*; +import gplx.xowa.apps.cfgs.*; public class Xoapi_toggle_mgr implements GfoInvkAble { private Xoae_app app; - private final Ordered_hash hash = Ordered_hash_.new_bry_(); + private final Ordered_hash hash = Ordered_hash_.New_bry(); public void Ctor_by_app(Xoae_app app) {this.app = app;} public Xoapi_toggle_itm Get_or_new(String key_str) { byte[] key_bry = Bry_.new_u8(key_str); @@ -41,7 +41,7 @@ public class Xoapi_toggle_mgr implements GfoInvkAble { int len = hash.Count(); for (int i = 0; i < len; ++i) { Xoapi_toggle_itm itm = (Xoapi_toggle_itm)hash.Get_at(i); - cfg_mgr.Set_by_app("xowa.api.html.page.toggles.get('" + String_.new_u8(itm.Key_bry()) + "').visible", Yn.Xto_str(itm.Visible())); + cfg_mgr.Set_by_app("xowa.api.html.page.toggles.get('" + String_.new_u8(itm.Key_bry()) + "').visible", Yn.To_str(itm.Visible())); } } public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { diff --git a/400_xowa/src/gplx/xowa/apis/xowa/html/modules/Xoapi_collapsible.java b/400_xowa/src/gplx/xowa/apps/apis/xowa/html/modules/Xoapi_collapsible.java similarity index 80% rename from 400_xowa/src/gplx/xowa/apis/xowa/html/modules/Xoapi_collapsible.java rename to 400_xowa/src/gplx/xowa/apps/apis/xowa/html/modules/Xoapi_collapsible.java index 1e614e107..4bc92977d 100644 --- a/400_xowa/src/gplx/xowa/apis/xowa/html/modules/Xoapi_collapsible.java +++ b/400_xowa/src/gplx/xowa/apps/apis/xowa/html/modules/Xoapi_collapsible.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.apis.xowa.html.modules; import gplx.*; import gplx.xowa.*; import gplx.xowa.apis.*; import gplx.xowa.apis.xowa.*; import gplx.xowa.apis.xowa.html.*; +package gplx.xowa.apps.apis.xowa.html.modules; import gplx.*; import gplx.xowa.*; import gplx.xowa.apps.*; import gplx.xowa.apps.apis.*; import gplx.xowa.apps.apis.xowa.*; import gplx.xowa.apps.apis.xowa.html.*; public class Xoapi_collapsible implements GfoInvkAble { public void Init_by_kit(Xoae_app app) { } public boolean Collapsed() {return collapsed;} private boolean collapsed; public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { - if (ctx.Match(k, Invk_collapsed)) return Yn.Xto_str(collapsed); + if (ctx.Match(k, Invk_collapsed)) return Yn.To_str(collapsed); else if (ctx.Match(k, Invk_collapsed_)) collapsed = m.ReadYn("v"); else return GfoInvkAble_.Rv_unhandled; return this; diff --git a/400_xowa/src/gplx/xowa/apis/xowa/html/modules/Xoapi_navframe.java b/400_xowa/src/gplx/xowa/apps/apis/xowa/html/modules/Xoapi_navframe.java similarity index 79% rename from 400_xowa/src/gplx/xowa/apis/xowa/html/modules/Xoapi_navframe.java rename to 400_xowa/src/gplx/xowa/apps/apis/xowa/html/modules/Xoapi_navframe.java index 9f310f674..ae742f2d2 100644 --- a/400_xowa/src/gplx/xowa/apis/xowa/html/modules/Xoapi_navframe.java +++ b/400_xowa/src/gplx/xowa/apps/apis/xowa/html/modules/Xoapi_navframe.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.apis.xowa.html.modules; import gplx.*; import gplx.xowa.*; import gplx.xowa.apis.*; import gplx.xowa.apis.xowa.*; import gplx.xowa.apis.xowa.html.*; +package gplx.xowa.apps.apis.xowa.html.modules; import gplx.*; import gplx.xowa.*; import gplx.xowa.apps.*; import gplx.xowa.apps.apis.*; import gplx.xowa.apps.apis.xowa.*; import gplx.xowa.apps.apis.xowa.html.*; public class Xoapi_navframe implements GfoInvkAble { public void Init_by_kit(Xoae_app app) { } public boolean Collapsed() {return collapsed;} private boolean collapsed; public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { - if (ctx.Match(k, Invk_collapsed)) return Yn.Xto_str(collapsed); + if (ctx.Match(k, Invk_collapsed)) return Yn.To_str(collapsed); else if (ctx.Match(k, Invk_collapsed_)) collapsed = m.ReadYn("v"); else return GfoInvkAble_.Rv_unhandled; return this; diff --git a/400_xowa/src/gplx/xowa/apis/xowa/html/modules/Xoapi_popups.java b/400_xowa/src/gplx/xowa/apps/apis/xowa/html/modules/Xoapi_popups.java similarity index 97% rename from 400_xowa/src/gplx/xowa/apis/xowa/html/modules/Xoapi_popups.java rename to 400_xowa/src/gplx/xowa/apps/apis/xowa/html/modules/Xoapi_popups.java index 40aaf4893..4aabeef96 100644 --- a/400_xowa/src/gplx/xowa/apis/xowa/html/modules/Xoapi_popups.java +++ b/400_xowa/src/gplx/xowa/apps/apis/xowa/html/modules/Xoapi_popups.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.apis.xowa.html.modules; import gplx.*; import gplx.xowa.*; import gplx.xowa.apis.*; import gplx.xowa.apis.xowa.*; import gplx.xowa.apis.xowa.html.*; -import gplx.xowa.html.modules.popups.*; +package gplx.xowa.apps.apis.xowa.html.modules; import gplx.*; import gplx.xowa.*; import gplx.xowa.apps.*; import gplx.xowa.apps.apis.*; import gplx.xowa.apps.apis.xowa.*; import gplx.xowa.apps.apis.xowa.html.*; +import gplx.xowa.htmls.modules.popups.*; public class Xoapi_popups implements GfoInvkAble, GfoEvMgrOwner { private Xoae_app app; public Xoapi_popups() { @@ -60,7 +60,7 @@ public class Xoapi_popups implements GfoInvkAble, GfoEvMgrOwner { wiki.Html_mgr().Head_mgr().Popup_mgr().Show_all(popup_id); } public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { - if (ctx.Match(k, Invk_enabled)) return Yn.Xto_str(enabled); + if (ctx.Match(k, Invk_enabled)) return Yn.To_str(enabled); else if (ctx.Match(k, Invk_enabled_)) enabled = m.ReadYn("v"); else if (ctx.Match(k, Invk_show_more)) Show_more(m.ReadStr("popup_id")); else if (ctx.Match(k, Invk_show_all)) Show_all (m.ReadStr("popup_id")); @@ -80,7 +80,7 @@ public class Xoapi_popups implements GfoInvkAble, GfoEvMgrOwner { else if (ctx.Match(k, Invk_win_max_h_)) {win_max_h = Set_int(m, win_max_h, Evt_win_max_h_changed);} else if (ctx.Match(k, Invk_win_show_all_max_w)) return win_show_all_max_w; else if (ctx.Match(k, Invk_win_show_all_max_w_)) {win_show_all_max_w = m.ReadInt("v");} - else if (ctx.Match(k, Invk_win_bind_focus_blur)) return Yn.Xto_str(win_bind_focus_blur); + else if (ctx.Match(k, Invk_win_bind_focus_blur)) return Yn.To_str(win_bind_focus_blur); else if (ctx.Match(k, Invk_win_bind_focus_blur_)) win_bind_focus_blur = m.ReadYn("v"); else if (ctx.Match(k, Invk_xnde_ignore_ids)) return String_.new_u8(xnde_ignore_ids); else if (ctx.Match(k, Invk_xnde_ignore_ids_)) {xnde_ignore_ids = m.ReadBry("v"); GfoEvMgr_.PubVal(this, Evt_xnde_ignore_ids_changed, xnde_ignore_ids);} diff --git a/400_xowa/src/gplx/xowa/apis/xowa/html/modules/Xoapi_toc.java b/400_xowa/src/gplx/xowa/apps/apis/xowa/html/modules/Xoapi_toc.java similarity index 80% rename from 400_xowa/src/gplx/xowa/apis/xowa/html/modules/Xoapi_toc.java rename to 400_xowa/src/gplx/xowa/apps/apis/xowa/html/modules/Xoapi_toc.java index e5e773557..0442b64ac 100644 --- a/400_xowa/src/gplx/xowa/apis/xowa/html/modules/Xoapi_toc.java +++ b/400_xowa/src/gplx/xowa/apps/apis/xowa/html/modules/Xoapi_toc.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.apis.xowa.html.modules; import gplx.*; import gplx.xowa.*; import gplx.xowa.apis.*; import gplx.xowa.apis.xowa.*; import gplx.xowa.apis.xowa.html.*; +package gplx.xowa.apps.apis.xowa.html.modules; import gplx.*; import gplx.xowa.*; import gplx.xowa.apps.*; import gplx.xowa.apps.apis.*; import gplx.xowa.apps.apis.xowa.*; import gplx.xowa.apps.apis.xowa.html.*; public class Xoapi_toc implements GfoInvkAble { public void Init_by_kit(Xoae_app app) { } public boolean Collapsed() {return collapsed;} private boolean collapsed = false; public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { - if (ctx.Match(k, Invk_collapsed)) return Yn.Xto_str(collapsed); + if (ctx.Match(k, Invk_collapsed)) return Yn.To_str(collapsed); else if (ctx.Match(k, Invk_collapsed_)) collapsed = m.ReadYn("v"); else return GfoInvkAble_.Rv_unhandled; return this; diff --git a/400_xowa/src/gplx/xowa/apis/xowa/html/skins/Xoapi_skin_app_base.java b/400_xowa/src/gplx/xowa/apps/apis/xowa/html/skins/Xoapi_skin_app_base.java similarity index 80% rename from 400_xowa/src/gplx/xowa/apis/xowa/html/skins/Xoapi_skin_app_base.java rename to 400_xowa/src/gplx/xowa/apps/apis/xowa/html/skins/Xoapi_skin_app_base.java index f84be4ea7..bfb2b8225 100644 --- a/400_xowa/src/gplx/xowa/apis/xowa/html/skins/Xoapi_skin_app_base.java +++ b/400_xowa/src/gplx/xowa/apps/apis/xowa/html/skins/Xoapi_skin_app_base.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.apis.xowa.html.skins; import gplx.*; import gplx.xowa.*; import gplx.xowa.apis.*; import gplx.xowa.apis.xowa.*; import gplx.xowa.apis.xowa.html.*; +package gplx.xowa.apps.apis.xowa.html.skins; import gplx.*; import gplx.xowa.*; import gplx.xowa.apps.*; import gplx.xowa.apps.apis.*; import gplx.xowa.apps.apis.xowa.*; import gplx.xowa.apps.apis.xowa.html.*; public class Xoapi_skin_app_base implements GfoInvkAble { public void Init_by_kit(Xoae_app app) { } public boolean Sidebar_home_enabled() {return sidebar_home_enabled;} public void Sidebar_home_enabled_(boolean v) {sidebar_home_enabled = v;} private boolean sidebar_home_enabled; public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { - if (ctx.Match(k, Invk_sidebar_home_enabled)) return Yn.Xto_str(sidebar_home_enabled); + if (ctx.Match(k, Invk_sidebar_home_enabled)) return Yn.To_str(sidebar_home_enabled); else if (ctx.Match(k, Invk_sidebar_home_enabled_)) sidebar_home_enabled = m.ReadYn("v"); return this; } diff --git a/400_xowa/src/gplx/xowa/apis/xowa/navs/Xoapi_wiki.java b/400_xowa/src/gplx/xowa/apps/apis/xowa/navs/Xoapi_wiki.java similarity index 88% rename from 400_xowa/src/gplx/xowa/apis/xowa/navs/Xoapi_wiki.java rename to 400_xowa/src/gplx/xowa/apps/apis/xowa/navs/Xoapi_wiki.java index c639394cf..61c99da7f 100644 --- a/400_xowa/src/gplx/xowa/apis/xowa/navs/Xoapi_wiki.java +++ b/400_xowa/src/gplx/xowa/apps/apis/xowa/navs/Xoapi_wiki.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.apis.xowa.navs; import gplx.*; import gplx.xowa.*; import gplx.xowa.apis.*; import gplx.xowa.apis.xowa.*; -import gplx.xowa.gui.views.*; -import gplx.xowa.html.hrefs.*; +package gplx.xowa.apps.apis.xowa.navs; import gplx.*; import gplx.xowa.*; import gplx.xowa.apps.*; import gplx.xowa.apps.apis.*; import gplx.xowa.apps.apis.xowa.*; +import gplx.xowa.guis.views.*; +import gplx.xowa.htmls.hrefs.*; public class Xoapi_wiki implements GfoInvkAble { private Xog_win_itm win; public void Init_by_kit(Xoae_app app) { diff --git a/400_xowa/src/gplx/xowa/apis/xowa/specials/Xoapi_search.java b/400_xowa/src/gplx/xowa/apps/apis/xowa/specials/Xoapi_search.java similarity index 92% rename from 400_xowa/src/gplx/xowa/apis/xowa/specials/Xoapi_search.java rename to 400_xowa/src/gplx/xowa/apps/apis/xowa/specials/Xoapi_search.java index 06e90e4e9..f267b3afb 100644 --- a/400_xowa/src/gplx/xowa/apis/xowa/specials/Xoapi_search.java +++ b/400_xowa/src/gplx/xowa/apps/apis/xowa/specials/Xoapi_search.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.apis.xowa.specials; import gplx.*; import gplx.xowa.*; import gplx.xowa.apis.*; import gplx.xowa.apis.xowa.*; +package gplx.xowa.apps.apis.xowa.specials; import gplx.*; import gplx.xowa.*; import gplx.xowa.apps.*; import gplx.xowa.apps.apis.*; import gplx.xowa.apps.apis.xowa.*; import gplx.xowa.wikis.domains.*; import gplx.xowa.wikis.domains.crts.*; public class Xoapi_search implements GfoInvkAble, GfoEvMgrOwner { private final Xow_domain_crt_kv_itm_mgr multi_wikis_mgr = new Xow_domain_crt_kv_itm_mgr(); private byte[] multi_wikis_bry = Dflt_multi_wikis_bry; @@ -47,7 +47,7 @@ public class Xoapi_search implements GfoInvkAble, GfoEvMgrOwner { public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { if (ctx.Match(k, Invk_results_per_page)) return results_per_page; else if (ctx.Match(k, Invk_results_per_page_)) results_per_page = m.ReadInt("v"); - else if (ctx.Match(k, Invk_async_db)) return Yn.Xto_str(async_db); + else if (ctx.Match(k, Invk_async_db)) return Yn.To_str(async_db); else if (ctx.Match(k, Invk_async_db_)) async_db = m.ReadYn("v"); else if (ctx.Match(k, Invk_multi_wikis)) return String_.new_u8(multi_wikis_bry); else if (ctx.Match(k, Invk_multi_wikis_)) Multi_wikis_bry_(m.ReadBry("v")); diff --git a/400_xowa/src/gplx/xowa/apis/xowa/startups/Xoapi_startups.java b/400_xowa/src/gplx/xowa/apps/apis/xowa/startups/Xoapi_startups.java similarity index 83% rename from 400_xowa/src/gplx/xowa/apis/xowa/startups/Xoapi_startups.java rename to 400_xowa/src/gplx/xowa/apps/apis/xowa/startups/Xoapi_startups.java index f0c112fe5..a25d4094c 100644 --- a/400_xowa/src/gplx/xowa/apis/xowa/startups/Xoapi_startups.java +++ b/400_xowa/src/gplx/xowa/apps/apis/xowa/startups/Xoapi_startups.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.apis.xowa.startups; import gplx.*; import gplx.xowa.*; import gplx.xowa.apis.*; import gplx.xowa.apis.xowa.*; -import gplx.xowa.apis.xowa.startups.tabs.*; +package gplx.xowa.apps.apis.xowa.startups; import gplx.*; import gplx.xowa.*; import gplx.xowa.apps.*; import gplx.xowa.apps.apis.*; import gplx.xowa.apps.apis.xowa.*; +import gplx.xowa.apps.apis.xowa.startups.tabs.*; public class Xoapi_startups implements GfoInvkAble { public void Init_by_kit(Xoae_app app) { } diff --git a/400_xowa/src/gplx/xowa/apis/xowa/startups/tabs/Xoapi_startup_tabs.java b/400_xowa/src/gplx/xowa/apps/apis/xowa/startups/tabs/Xoapi_startup_tabs.java similarity index 91% rename from 400_xowa/src/gplx/xowa/apis/xowa/startups/tabs/Xoapi_startup_tabs.java rename to 400_xowa/src/gplx/xowa/apps/apis/xowa/startups/tabs/Xoapi_startup_tabs.java index 72309da04..c6a08519d 100644 --- a/400_xowa/src/gplx/xowa/apis/xowa/startups/tabs/Xoapi_startup_tabs.java +++ b/400_xowa/src/gplx/xowa/apps/apis/xowa/startups/tabs/Xoapi_startup_tabs.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.apis.xowa.startups.tabs; import gplx.*; import gplx.xowa.*; import gplx.xowa.apis.*; import gplx.xowa.apis.xowa.*; import gplx.xowa.apis.xowa.startups.*; +package gplx.xowa.apps.apis.xowa.startups.tabs; import gplx.*; import gplx.xowa.*; import gplx.xowa.apps.*; import gplx.xowa.apps.apis.*; import gplx.xowa.apps.apis.xowa.*; import gplx.xowa.apps.apis.xowa.startups.*; import gplx.xowa.specials.*; public class Xoapi_startup_tabs implements GfoInvkAble { public String Custom() {return custom;} private String custom; @@ -31,7 +31,7 @@ public class Xoapi_startup_tabs implements GfoInvkAble { else if (ctx.Match(k, Invk_previous_)) previous = m.ReadStr("v"); else if (ctx.Match(k, Invk_custom)) return custom; else if (ctx.Match(k, Invk_custom_)) custom = m.ReadStr("v"); - else if (ctx.Match(k, Invk_custom_is_expr)) return Yn.Xto_str(custom_is_expr); + else if (ctx.Match(k, Invk_custom_is_expr)) return Yn.To_str(custom_is_expr); else if (ctx.Match(k, Invk_custom_is_expr_)) custom_is_expr = m.ReadYn("v"); else return GfoInvkAble_.Rv_unhandled; return this; diff --git a/400_xowa/src/gplx/xowa/apis/xowa/startups/tabs/Xoapi_startup_tabs_tid_.java b/400_xowa/src/gplx/xowa/apps/apis/xowa/startups/tabs/Xoapi_startup_tabs_tid_.java similarity index 87% rename from 400_xowa/src/gplx/xowa/apis/xowa/startups/tabs/Xoapi_startup_tabs_tid_.java rename to 400_xowa/src/gplx/xowa/apps/apis/xowa/startups/tabs/Xoapi_startup_tabs_tid_.java index b6a948bb5..2e13cef20 100644 --- a/400_xowa/src/gplx/xowa/apis/xowa/startups/tabs/Xoapi_startup_tabs_tid_.java +++ b/400_xowa/src/gplx/xowa/apps/apis/xowa/startups/tabs/Xoapi_startup_tabs_tid_.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.apis.xowa.startups.tabs; import gplx.*; import gplx.xowa.*; import gplx.xowa.apis.*; import gplx.xowa.apis.xowa.*; import gplx.xowa.apis.xowa.startups.*; +package gplx.xowa.apps.apis.xowa.startups.tabs; import gplx.*; import gplx.xowa.*; import gplx.xowa.apps.*; import gplx.xowa.apps.apis.*; import gplx.xowa.apps.apis.xowa.*; import gplx.xowa.apps.apis.xowa.startups.*; public class Xoapi_startup_tabs_tid_ { public static final byte Tid_blank = 0, Tid_xowa = 1, Tid_previous = 2, Tid_custom = 3; public static final String Key_blank = "blank", Key_xowa = "xowa", Key_previous = "previous", Key_custom = "custom"; diff --git a/400_xowa/src/gplx/xowa/apis/xowa/usrs/Xoapi_bookmarks.java b/400_xowa/src/gplx/xowa/apps/apis/xowa/usrs/Xoapi_bookmarks.java similarity index 86% rename from 400_xowa/src/gplx/xowa/apis/xowa/usrs/Xoapi_bookmarks.java rename to 400_xowa/src/gplx/xowa/apps/apis/xowa/usrs/Xoapi_bookmarks.java index 8460588c8..d41c58857 100644 --- a/400_xowa/src/gplx/xowa/apis/xowa/usrs/Xoapi_bookmarks.java +++ b/400_xowa/src/gplx/xowa/apps/apis/xowa/usrs/Xoapi_bookmarks.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.apis.xowa.usrs; import gplx.*; import gplx.xowa.*; import gplx.xowa.apis.*; import gplx.xowa.apis.xowa.*; -import gplx.xowa.gui.history.*; import gplx.xowa.gui.views.*; +package gplx.xowa.apps.apis.xowa.usrs; import gplx.*; import gplx.xowa.*; import gplx.xowa.apps.*; import gplx.xowa.apps.apis.*; import gplx.xowa.apps.apis.xowa.*; +import gplx.xowa.guis.history.*; import gplx.xowa.guis.views.*; import gplx.xowa.users.bmks.*; import gplx.xowa.wikis.*; public class Xoapi_bookmarks implements GfoInvkAble { @@ -43,9 +43,9 @@ public class Xoapi_bookmarks implements GfoInvkAble { return rv; } public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { - if (ctx.Match(k, Invk_enabled)) return Yn.Xto_str(enabled); + if (ctx.Match(k, Invk_enabled)) return Yn.To_str(enabled); else if (ctx.Match(k, Invk_enabled_)) enabled = m.ReadYn("v"); - else if (ctx.Match(k, Invk_delete_confirm)) return Yn.Xto_str(delete_confirm); + else if (ctx.Match(k, Invk_delete_confirm)) return Yn.To_str(delete_confirm); else if (ctx.Match(k, Invk_delete_confirm_)) delete_confirm = m.ReadYn("v"); else if (ctx.Match(k, Invk_add)) return this.Add(m.ReadStrOr("v", null)); else if (ctx.Match(k, Invk_show)) this.Show(); diff --git a/400_xowa/src/gplx/xowa/apis/xowa/usrs/Xoapi_cache.java b/400_xowa/src/gplx/xowa/apps/apis/xowa/usrs/Xoapi_cache.java similarity index 91% rename from 400_xowa/src/gplx/xowa/apis/xowa/usrs/Xoapi_cache.java rename to 400_xowa/src/gplx/xowa/apps/apis/xowa/usrs/Xoapi_cache.java index 12f5a49d1..855c1c26a 100644 --- a/400_xowa/src/gplx/xowa/apis/xowa/usrs/Xoapi_cache.java +++ b/400_xowa/src/gplx/xowa/apps/apis/xowa/usrs/Xoapi_cache.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.apis.xowa.usrs; import gplx.*; import gplx.xowa.*; import gplx.xowa.apis.*; import gplx.xowa.apis.xowa.*; +package gplx.xowa.apps.apis.xowa.usrs; import gplx.*; import gplx.xowa.*; import gplx.xowa.apps.*; import gplx.xowa.apps.apis.*; import gplx.xowa.apps.apis.xowa.*; import gplx.ios.*; import gplx.xowa.files.caches.*; public class Xoapi_cache implements GfoInvkAble { private Xou_cache_mgr cache_mgr; @@ -29,7 +29,7 @@ public class Xoapi_cache implements GfoInvkAble { KeyVal kv = ary[i]; bfr.Add_str_a7(kv.Key()).Add_str_a7(": ").Add_str_u8(kv.Val_to_str_or_empty()).Add_byte_nl(); } - return bfr.Xto_str_and_clear(); + return bfr.To_str_and_clear(); } public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { if (ctx.Match(k, Invk_fsys_size_min)) return cache_mgr.Fsys_size_min() / Io_mgr.Len_mb; diff --git a/400_xowa/src/gplx/xowa/apis/xowa/usrs/Xoapi_history.java b/400_xowa/src/gplx/xowa/apps/apis/xowa/usrs/Xoapi_history.java similarity index 85% rename from 400_xowa/src/gplx/xowa/apis/xowa/usrs/Xoapi_history.java rename to 400_xowa/src/gplx/xowa/apps/apis/xowa/usrs/Xoapi_history.java index 79ad511cd..ad6989431 100644 --- a/400_xowa/src/gplx/xowa/apis/xowa/usrs/Xoapi_history.java +++ b/400_xowa/src/gplx/xowa/apps/apis/xowa/usrs/Xoapi_history.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.apis.xowa.usrs; import gplx.*; import gplx.xowa.*; import gplx.xowa.apis.*; import gplx.xowa.apis.xowa.*; -import gplx.xowa.gui.views.*; +package gplx.xowa.apps.apis.xowa.usrs; import gplx.*; import gplx.xowa.*; import gplx.xowa.apps.*; import gplx.xowa.apps.apis.*; import gplx.xowa.apps.apis.xowa.*; +import gplx.xowa.guis.views.*; public class Xoapi_history implements GfoInvkAble { private Xoae_app app; private Xog_win_itm win; public void Ctor_by_app(Xoae_app app) {this.app = app;} @@ -26,7 +26,7 @@ public class Xoapi_history implements GfoInvkAble { public void Goto_recent() {win.Page__navigate_by_url_bar(app.Usere().History_mgr().Get_at_last());} public void Show() {win.Page__navigate_by_url_bar("home/wiki/Special:XowaPageHistory");} public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { - if (ctx.Match(k, Invk_enabled)) return Yn.Xto_str(this.Enabled()); + if (ctx.Match(k, Invk_enabled)) return Yn.To_str(this.Enabled()); else if (ctx.Match(k, Invk_enabled_)) Enabled_(m.ReadYn("v")); else if (ctx.Match(k, Invk_goto_recent)) this.Goto_recent(); else if (ctx.Match(k, Invk_show)) this.Show(); diff --git a/400_xowa/src/gplx/xowa/apis/xowa/usrs/Xoapi_logs.java b/400_xowa/src/gplx/xowa/apps/apis/xowa/usrs/Xoapi_logs.java similarity index 77% rename from 400_xowa/src/gplx/xowa/apis/xowa/usrs/Xoapi_logs.java rename to 400_xowa/src/gplx/xowa/apps/apis/xowa/usrs/Xoapi_logs.java index 3ca96df9b..c820ad1b3 100644 --- a/400_xowa/src/gplx/xowa/apis/xowa/usrs/Xoapi_logs.java +++ b/400_xowa/src/gplx/xowa/apps/apis/xowa/usrs/Xoapi_logs.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.apis.xowa.usrs; import gplx.*; import gplx.xowa.*; import gplx.xowa.apis.*; import gplx.xowa.apis.xowa.*; -import gplx.xowa.gui.views.*; +package gplx.xowa.apps.apis.xowa.usrs; import gplx.*; import gplx.xowa.*; import gplx.xowa.apps.*; import gplx.xowa.apps.apis.*; import gplx.xowa.apps.apis.xowa.*; +import gplx.xowa.guis.views.*; public class Xoapi_logs implements GfoInvkAble { private Xoae_app app; public void Ctor_by_app(Xoae_app app) {this.app = app;} @@ -25,10 +25,10 @@ public class Xoapi_logs implements GfoInvkAble { public void Enabled_(boolean v) { app.Log_wtr().Enabled_(v); if (!v) - Io_mgr.I.DeleteFil_args(app.Log_wtr().Session_fil()).MissingFails_off().Exec(); + Io_mgr.Instance.DeleteFil_args(app.Log_wtr().Session_fil()).MissingFails_off().Exec(); } public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { - if (ctx.Match(k, Invk_enabled)) return Yn.Xto_str(this.Enabled()); + if (ctx.Match(k, Invk_enabled)) return Yn.To_str(this.Enabled()); else if (ctx.Match(k, Invk_enabled_)) Enabled_(m.ReadYn("v")); else return GfoInvkAble_.Rv_unhandled; return this; diff --git a/400_xowa/src/gplx/xowa/apis/xowa/wikis/Xoapi_wiki_lang.java b/400_xowa/src/gplx/xowa/apps/apis/xowa/wikis/Xoapi_wiki_lang.java similarity index 84% rename from 400_xowa/src/gplx/xowa/apis/xowa/wikis/Xoapi_wiki_lang.java rename to 400_xowa/src/gplx/xowa/apps/apis/xowa/wikis/Xoapi_wiki_lang.java index 660bc7a58..4efead908 100644 --- a/400_xowa/src/gplx/xowa/apis/xowa/wikis/Xoapi_wiki_lang.java +++ b/400_xowa/src/gplx/xowa/apps/apis/xowa/wikis/Xoapi_wiki_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.apis.xowa.wikis; import gplx.*; import gplx.xowa.*; import gplx.xowa.apis.*; import gplx.xowa.apis.xowa.*; -import gplx.xowa.apis.xowa.wikis.langs.*; +package gplx.xowa.apps.apis.xowa.wikis; import gplx.*; import gplx.xowa.*; import gplx.xowa.apps.*; import gplx.xowa.apps.apis.*; import gplx.xowa.apps.apis.xowa.*; +import gplx.xowa.apps.apis.xowa.wikis.langs.*; public class Xoapi_wiki_lang implements GfoInvkAble { public Xoap_lang_variants Variants() {return variants;} private final Xoap_lang_variants variants = new Xoap_lang_variants(); public void Subscribe(GfoEvObj sub) {variants.Subscribe(sub);} diff --git a/400_xowa/src/gplx/xowa/apis/xowa/wikis/langs/Xoap_lang_variants.java b/400_xowa/src/gplx/xowa/apps/apis/xowa/wikis/langs/Xoap_lang_variants.java similarity index 87% rename from 400_xowa/src/gplx/xowa/apis/xowa/wikis/langs/Xoap_lang_variants.java rename to 400_xowa/src/gplx/xowa/apps/apis/xowa/wikis/langs/Xoap_lang_variants.java index 74e016f9e..46550aadf 100644 --- a/400_xowa/src/gplx/xowa/apis/xowa/wikis/langs/Xoap_lang_variants.java +++ b/400_xowa/src/gplx/xowa/apps/apis/xowa/wikis/langs/Xoap_lang_variants.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.apis.xowa.wikis.langs; import gplx.*; import gplx.xowa.*; import gplx.xowa.apis.*; import gplx.xowa.apis.xowa.*; import gplx.xowa.apis.xowa.wikis.*; +package gplx.xowa.apps.apis.xowa.wikis.langs; import gplx.*; import gplx.xowa.*; import gplx.xowa.apps.*; import gplx.xowa.apps.apis.*; import gplx.xowa.apps.apis.xowa.*; import gplx.xowa.apps.apis.xowa.wikis.*; public class Xoap_lang_variants implements GfoInvkAble, GfoEvMgrOwner { public Xoap_lang_variants() { this.ev_mgr = GfoEvMgr.new_(this); diff --git a/400_xowa/src/gplx/xowa/apis/xowa/xtns/Xoapi_scribunto.java b/400_xowa/src/gplx/xowa/apps/apis/xowa/xtns/Xoapi_scribunto.java similarity index 88% rename from 400_xowa/src/gplx/xowa/apis/xowa/xtns/Xoapi_scribunto.java rename to 400_xowa/src/gplx/xowa/apps/apis/xowa/xtns/Xoapi_scribunto.java index 304f630f3..53331ec39 100644 --- a/400_xowa/src/gplx/xowa/apis/xowa/xtns/Xoapi_scribunto.java +++ b/400_xowa/src/gplx/xowa/apps/apis/xowa/xtns/Xoapi_scribunto.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.apis.xowa.xtns; import gplx.*; import gplx.xowa.*; import gplx.xowa.apis.*; import gplx.xowa.apis.xowa.*; +package gplx.xowa.apps.apis.xowa.xtns; import gplx.*; import gplx.xowa.*; import gplx.xowa.apps.*; import gplx.xowa.apps.apis.*; import gplx.xowa.apps.apis.xowa.*; import gplx.xowa.xtns.scribunto.*; import gplx.xowa.xtns.scribunto.engines.*; public class Xoapi_scribunto implements GfoInvkAble { private Xoae_app app; diff --git a/400_xowa/src/gplx/xowa/apis/xowa/xtns/Xoapi_wikibase.java b/400_xowa/src/gplx/xowa/apps/apis/xowa/xtns/Xoapi_wikibase.java similarity index 92% rename from 400_xowa/src/gplx/xowa/apis/xowa/xtns/Xoapi_wikibase.java rename to 400_xowa/src/gplx/xowa/apps/apis/xowa/xtns/Xoapi_wikibase.java index 1bf9e25fd..704e1f861 100644 --- a/400_xowa/src/gplx/xowa/apis/xowa/xtns/Xoapi_wikibase.java +++ b/400_xowa/src/gplx/xowa/apps/apis/xowa/xtns/Xoapi_wikibase.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.apis.xowa.xtns; import gplx.*; import gplx.xowa.*; import gplx.xowa.apis.*; import gplx.xowa.apis.xowa.*; +package gplx.xowa.apps.apis.xowa.xtns; import gplx.*; import gplx.xowa.*; import gplx.xowa.apps.*; import gplx.xowa.apps.apis.*; import gplx.xowa.apps.apis.xowa.*; import gplx.xowa.xtns.wdatas.*; public class Xoapi_wikibase implements GfoInvkAble, GfoEvMgrOwner { public Xoapi_wikibase() { diff --git a/400_xowa/src/gplx/xowa/apps/boots/Xoa_boot_mgr.java b/400_xowa/src/gplx/xowa/apps/boots/Xoa_boot_mgr.java new file mode 100644 index 000000000..00c3ecf60 --- /dev/null +++ b/400_xowa/src/gplx/xowa/apps/boots/Xoa_boot_mgr.java @@ -0,0 +1,125 @@ +/* +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.apps.boots; import gplx.*; import gplx.xowa.*; import gplx.xowa.apps.*; +import gplx.core.consoles.*; +import gplx.dbs.*; +import gplx.gfui.*; import gplx.xowa.guis.views.boots.*; +import gplx.xowa.langs.*; +import gplx.xowa.users.*; +public class Xoa_boot_mgr { + private Gfo_usr_dlg usr_dlg; private Gfo_usr_dlg__log log_wtr; + public void Run(String[] args, Xoa_cmd_arg_mgr arg_mgr) { + try { + Init_env(args); + if (arg_mgr.Process(usr_dlg, args, Env_.AppUrl().OwnerDir())) + Run_app(arg_mgr); + } + catch (Exception e) { + String err_str = Err_.Message_gplx_full(e); + log_wtr.Log_to_err(err_str); + Console_adp__sys.Instance.Write_str_w_nl(err_str); + if (log_wtr.Log_dir() == null) log_wtr.Log_dir_(Env_.AppUrl().OwnerDir().GenSubFil("xowa.log")); + log_wtr.Queue_enabled_(false); + } + } + private void Init_env(String[] args) { + Gfo_usr_dlg_.Instance = usr_dlg = Xoa_app_.usr_dlg_console_(); + log_wtr = usr_dlg.Log_wkr(); log_wtr.Log_to_session_fmt("env.init: version=~{0}", Xoa_app_.Version); + GfuiEnv_.Init_swt(args, Xoa_app_.class); + Io_url jar_url = Env_.AppUrl(); + Xoa_app_.Build_date = Io_mgr.Instance.QueryFil(jar_url).ModifiedTime().XtoUtc().XtoStr_fmt("yyyy-MM-dd HH:mm"); + log_wtr.Log_to_session_fmt("env.init: jar_url=~{0}; build_date=~{1}", jar_url.NameAndExt(), Xoa_app_.Build_date); + log_wtr.Log_to_session_fmt("env.init: op_sys=~{0}", Op_sys.Cur().To_str()); + } + private void Run_app(Xoa_cmd_arg_mgr arg_mgr) { + boolean app_type_is_gui = false; + Xoae_app app = null; + try { + // init vars + Io_url root_dir = arg_mgr.Fsys__root_dir(); + Xoa_app_.Op_sys_str = arg_mgr.Fsys__bin_dir(); + Xoa_app_.User_agent = String_.Format("XOWA/{0} ({1}) [gnosygnu@gmail.com]", Xoa_app_.Version, Xoa_app_.Op_sys_str); + Xoa_app_mode app_type = arg_mgr.App_type(); + app_type_is_gui = app_type.Tid_is_gui(); + Xog_splash_win splash_win = new Xog_splash_win(app_type_is_gui); + Db_conn_bldr.Instance.Reg_default_sqlite(); + + // init app + app = new Xoae_app(usr_dlg, app_type + , root_dir + , arg_mgr.Fsys__wiki_dir() + , root_dir.GenSubDir("file") + , arg_mgr.Fsys__user_dir() + , root_dir.GenSubDir_nest("user", "anonymous", "wiki") + , Xoa_app_.Op_sys_str); + usr_dlg.Log_wkr().Queue_enabled_(false); log_wtr.Log_to_session_fmt("app.init"); + try { + app.Sys_cfg().Lang_(System_lang()); + String launch_url = arg_mgr.Gui__home_page(); + if (launch_url != null) app.Api_root().App().Startup().Tabs().Manual_(launch_url); + app.Tcp_server().Rdr_port_(arg_mgr.Tcp__port_recv()).Wtr_port_(arg_mgr.Tcp__port_send()); + gplx.xowa.apps.servers.http.Http_server_mgr server_mgr = app.Http_server(); + server_mgr.Port_(arg_mgr.Http__port()); + server_mgr.Home_(Bry_.new_u8(arg_mgr.Http__home_page())); + server_mgr.Wkr_pool().Init(arg_mgr.Http__max_clients(), arg_mgr.Http__max_clients_timeout()); + app.Init_by_app(); + } + catch (Exception e) {usr_dlg.Warn_many("", "", "app init failed: ~{0}", Err_.Message_gplx_full(e));} + app.Usr_dlg().Log_wkr_(app.Log_wtr()); // NOTE: log_wtr must be set for cmd-line (else process will fail); + + // run gfs + gplx.xowa.users.prefs.Prefs_rename_mgr.Instance.Check(app.Usere().Fsys_mgr().App_data_cfg_user_fil()); + Io_url cmd_file = arg_mgr.Cmd__file(); + try {app.Gfs_mgr().Run_url(cmd_file);} + catch (Exception e) { + usr_dlg.Warn_many("", "", "script file failed: ~{0} ~{1}", cmd_file.Raw(), Err_.Message_gplx_full(e)); + if (app_type_is_gui) + GfuiEnv_.ShowMsg(Err_.Message_gplx_full(e)); + } + gplx.xowa.apps.setups.Xoa_setup_mgr.Delete_old_files(app); + + // launch + app.Launch(); + if (app_type.Tid_is_tcp()) app.Tcp_server().Run(); + else if (app_type.Tid_is_http()) app.Http_server().Run(); + else { + String cmd_text = arg_mgr.Cmd__text(); + if (cmd_text != null) { + gplx.xowa.apps.servers.Gxw_html_server.Init_gui_for_server(app, null); // NOTE: must init kit else "app.shell.fetch_page" will fail; DATE:2015-04-30 + Console_adp__sys.Instance.Write_str_w_nl_utf8(Object_.Xto_str_strict_or_empty(app.Gfs_mgr().Run_str(cmd_text))); + } + if (app_type_is_gui) + app.Gui_mgr().Run(splash_win); + else // teardown app, else lua will keep process running + if (gplx.xowa.xtns.scribunto.Scrib_core.Core() != null) gplx.xowa.xtns.scribunto.Scrib_core.Core().Term(); + } + } + catch (Exception e) {usr_dlg.Warn_many("", "", "app launch failed: ~{0}", Err_.Message_gplx_full(e));} + finally { + if (app != null && app_type_is_gui) // only cancel if app_type_is_gui is true; (force cmd_line to end process) + app.Setup_mgr().Cmd_mgr().Canceled_y_(); + } + } + private static byte[] System_lang() { + String lang_code = Env_.Env_prop__user_language(); + byte[] lang_code_bry = Bry_.new_a7(lang_code); + Xol_lang_stub lang_itm = Xol_lang_stub_.Get_by_key_or_null(lang_code_bry); + return lang_itm == null ? Xol_lang_itm_.Key_en : lang_itm.Key(); + } +} + \ No newline at end of file diff --git a/400_xowa/src/gplx/xowa/apps/boots/Xoa_cmd_arg_mgr.java b/400_xowa/src/gplx/xowa/apps/boots/Xoa_cmd_arg_mgr.java new file mode 100644 index 000000000..8c70f7220 --- /dev/null +++ b/400_xowa/src/gplx/xowa/apps/boots/Xoa_cmd_arg_mgr.java @@ -0,0 +1,102 @@ +/* +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.apps.boots; import gplx.*; import gplx.xowa.*; import gplx.xowa.apps.*; +import gplx.core.consoles.*; +import gplx.xowa.apps.*; +public class Xoa_cmd_arg_mgr { + Xoa_cmd_arg_mgr(Gfo_cmd_arg_mgr arg_mgr) {this.arg_mgr = arg_mgr;} + public Gfo_cmd_arg_mgr Arg_mgr() {return arg_mgr;} private final Gfo_cmd_arg_mgr arg_mgr; + public Xoa_app_mode App_type() {return app_type;} private Xoa_app_mode app_type; + public Io_url Fsys__root_dir() {return fsys__root_dir;} private Io_url fsys__root_dir; + public String Fsys__bin_dir() {return fsys__bin_dir;} private String fsys__bin_dir; + public Io_url Fsys__user_dir() {return fsys__user_dir;} private Io_url fsys__user_dir; + public Io_url Fsys__wiki_dir() {return fsys__wiki_dir;} private Io_url fsys__wiki_dir; + public Io_url Cmd__file() {return cmd__file;} private Io_url cmd__file; + public String Cmd__text() {return cmd__text;} private String cmd__text; + public int Tcp__port_recv() {return tcp__port_recv;} private int tcp__port_recv; + public int Tcp__port_send() {return tcp__port_send;} private int tcp__port_send; + public int Http__port() {return http__port;} private int http__port; + public String Http__home_page() {return http__home_page;} private String http__home_page; + public int Http__max_clients() {return http__max_clients;} private int http__max_clients; + public int Http__max_clients_timeout() {return http__max_clients_timeout;} private int http__max_clients_timeout; + public String Gui__home_page() {return gui__home_page;} private String gui__home_page; + public boolean Process(Gfo_usr_dlg usr_dlg, String[] args, Io_url jar_dir) { + arg_mgr.Parse(args); + if (!Print(usr_dlg)) return false; + this.app_type = Xoa_app_mode.parse(arg_mgr.Get_by("app_mode").Val_as_str_or("gui")); + this.fsys__root_dir = arg_mgr.Get_by("root_dir").Val_as_url__rel_dir_or(jar_dir, jar_dir); + this.fsys__user_dir = arg_mgr.Get_by("user_dir").Val_as_url__rel_dir_or(fsys__root_dir.GenSubDir("user"), fsys__root_dir.GenSubDir_nest("user", User_name_default)); + this.fsys__wiki_dir = arg_mgr.Get_by("wiki_dir").Val_as_url__rel_dir_or(fsys__root_dir.GenSubDir("wiki"), fsys__root_dir.GenSubDir("wiki")); + this.cmd__file = arg_mgr.Get_by("cmd_file").Val_as_url__rel_fil_or(jar_dir, fsys__root_dir.GenSubFil_nest("bin", "any", "xowa", "cfg" ,"app", "xowa.gfs")); + this.cmd__text = arg_mgr.Get_by("cmd_text").Val_as_str_or(null); + this.tcp__port_recv = arg_mgr.Get_by("server_port_recv").Val_as_int_or(55000); + this.tcp__port_send = arg_mgr.Get_by("server_port_send").Val_as_int_or(55001); + this.http__port = arg_mgr.Get_by("http_server_port").Val_as_int_or(8080); + this.http__home_page = arg_mgr.Get_by("http_server_home").Val_as_str_or("home/wiki/Main_Page"); + this.http__max_clients = arg_mgr.Get_by("http_server.max_clients").Val_as_int_or(0); + this.http__max_clients_timeout = arg_mgr.Get_by("http_server.max_clients_timeout").Val_as_int_or(50); + this.gui__home_page = arg_mgr.Get_by("url").Val_as_str_or(null); + this.fsys__bin_dir = arg_mgr.Get_by("bin_dir_name").Val_as_str_or(Bin_dir_name()); + return true; + } + private boolean Print(Gfo_usr_dlg usr_dlg) { + String header = String_.Concat_lines_nl_skip_last + ( Env_.GenHdr(false, "XOWA", "XOWA: the XOWA Offline Wiki Application\n", "") + , String_.Repeat("-", 80) + , "" + , "version: " + Xoa_app_.Version + "; build date: " + Xoa_app_.Build_date + ); + Gfo_cmd_arg_mgr_printer printer = new Gfo_cmd_arg_mgr_printer(arg_mgr); + return printer.Print(usr_dlg, header, Xoa_app_.Name, "help", "show_license", "show_args"); + } + public static Xoa_cmd_arg_mgr new_() { + Gfo_cmd_arg_mgr arg_mgr = new Gfo_cmd_arg_mgr().Reg_many + ( Gfo_cmd_arg_itm_.opt_("root_dir").Example_url_("C:\\xowa").Note_("root directory for xowa; defaults to current directory of xowa.jar") + , Gfo_cmd_arg_itm_.opt_("user_dir").Example_url_("C:\\xowa\\user\\" + User_name_default).Note_("directory for user_data; defaults to '/xowa/user/" + User_name_default + "'") + , Gfo_cmd_arg_itm_.opt_("wiki_dir").Example_url_("C:\\xowa\\wiki\\").Note_("directory for wikis; defaults to '/xowa/wiki/'") + , Gfo_cmd_arg_itm_.opt_("bin_dir_name").Example_("windows").Note_("platform-dependent directory name inside /xowa/bin/; valid values are 'linux', 'macosx', 'windows', 'linux_64', 'macosx_64', 'windows_64'; defaults to detected version") + , Gfo_cmd_arg_itm_.opt_("app_mode").Example_("gui").Note_("type of app to run; valid values are 'gui', 'cmd', 'server', 'http_server'; defaults to 'gui'") + , Gfo_cmd_arg_itm_.opt_("cmd_file").Example_url_("C:\\xowa\\bin\\any\\xowa\\cfg\\app\\xowa.gfs").Note_("file_path of script to execute; defaults to 'xowa.gfs'") + , Gfo_cmd_arg_itm_.opt_("cmd_text").Example_("\"app.shell.fetch_page('en.wikipedia.org/wiki/Earth', 'html');\"").Note_("script to run; runs after cmd_file; does nothing if empty; default is empty.\nCurrently a useful cmd is to do 'java -jar xowa_your_platform.jar --app_mode cmd --show_license n --show_args n --cmd_text \"app.shell.fetch_page('en.wikipedia.org/wiki/Earth' 'html');\"'. This will output the page's html to the console. You can also change 'html' to 'wiki' to get the wikitext.") + , Gfo_cmd_arg_itm_.opt_("url").Example_("en.wikipedia.org/wiki/Earth").Note_("url to be shown when xowa first launches; default is home/wiki/Main_Page") + , Gfo_cmd_arg_itm_.opt_("server_port_recv").Example_("55000").Note_("applies to --app_mode server; port where xowa server will receive messages; clients should send messages to this port") + , Gfo_cmd_arg_itm_.opt_("server_port_send").Example_("55001").Note_("applies to --app_mode server; port where xowa server will send messages; clients should listen for messages from this port") + , Gfo_cmd_arg_itm_.opt_("http_server_port").Example_("8080").Note_("applies to --app_mode http_server; port used by http_server; default is 8080") + , Gfo_cmd_arg_itm_.opt_("http_server_home").Example_("home/wiki/Main_Page").Note_("applies to --app_mode http_server; default home page for root address. EX: navigating to localhost:8080 will navigate to localhost:8080/home/wiki/Main_Page") + , Gfo_cmd_arg_itm_.opt_("http_server.max_clients").Example_("15").Note_("applies to --app_mode http_server; limits maximum number of concurrent connections; default is 0 (no limit)") + , Gfo_cmd_arg_itm_.opt_("http_server.max_clients_timeout").Example_("50").Note_("applies to --app_mode http_server; time in milliseconds to wait before checking again to see if a connection is free; default is 50 (wait 50 ms)") + , Gfo_cmd_arg_itm_.sys_("show_license").Dflt_(true) + , Gfo_cmd_arg_itm_.sys_("show_args").Dflt_(true) + , Gfo_cmd_arg_itm_.new_(Gfo_cmd_arg_itm_.Tid_system, "help", Bool_.N, Gfo_cmd_arg_itm_.Val_tid_string) + ); + return new Xoa_cmd_arg_mgr(arg_mgr); + } + private static final String User_name_default = gplx.xowa.users.Xoue_user.Key_xowa_user; + private static String Bin_dir_name() { + String rv = ""; + Op_sys op_sys = Op_sys.Cur(); + switch (op_sys.Tid()) { + case Op_sys.Tid_lnx: rv = "linux"; break; + case Op_sys.Tid_wnt: rv = "windows"; break; + case Op_sys.Tid_osx: rv = "macosx"; break; + default: throw Err_.new_unhandled("unknown platform " + Op_sys.Cur()); + } + if (op_sys.Bitness() == Op_sys.Bitness_64) rv += "_64"; + return rv; + } +} diff --git a/400_xowa/src/gplx/xowa/cfgs/Xoa_cfg_db.java b/400_xowa/src/gplx/xowa/apps/cfgs/Xoa_cfg_db.java similarity index 91% rename from 400_xowa/src/gplx/xowa/cfgs/Xoa_cfg_db.java rename to 400_xowa/src/gplx/xowa/apps/cfgs/Xoa_cfg_db.java index 9bc4f7a26..b33fc67db 100644 --- a/400_xowa/src/gplx/xowa/cfgs/Xoa_cfg_db.java +++ b/400_xowa/src/gplx/xowa/apps/cfgs/Xoa_cfg_db.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.cfgs; import gplx.*; import gplx.xowa.*; +package gplx.xowa.apps.cfgs; import gplx.*; import gplx.xowa.*; import gplx.xowa.apps.*; public interface Xoa_cfg_db { void Cfg_reset_all(Xoa_cfg_mgr cfg_mgr); void Cfg_save_bgn(Xoa_cfg_mgr cfg_mgr); diff --git a/400_xowa/src/gplx/xowa/cfgs/Xoa_cfg_db_txt.java b/400_xowa/src/gplx/xowa/apps/cfgs/Xoa_cfg_db_txt.java similarity index 64% rename from 400_xowa/src/gplx/xowa/cfgs/Xoa_cfg_db_txt.java rename to 400_xowa/src/gplx/xowa/apps/cfgs/Xoa_cfg_db_txt.java index 84b1e5265..ea80129be 100644 --- a/400_xowa/src/gplx/xowa/cfgs/Xoa_cfg_db_txt.java +++ b/400_xowa/src/gplx/xowa/apps/cfgs/Xoa_cfg_db_txt.java @@ -15,30 +15,31 @@ 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.cfgs; import gplx.*; import gplx.xowa.*; -import gplx.xowa.apps.gfss.*; +package gplx.xowa.apps.cfgs; import gplx.*; import gplx.xowa.*; import gplx.xowa.apps.*; +import gplx.xowa.apps.gfs.*; public class Xoa_cfg_db_txt implements Xoa_cfg_db { private Bry_fmtr fmtr = Bry_fmtr.new_("app.cfgs.get('~{msg}', '~{wiki}').val = '~{val}';\n", "msg", "wiki", "val"); public void Cfg_reset_all(Xoa_cfg_mgr cfg_mgr) { Io_url src_url = this.Cfg_url(cfg_mgr); Io_url trg_url = src_url.GenNewNameAndExt("xowa_user_cfg." + DateAdp_.Now().XtoStr_fmt_yyyyMMdd_HHmmss() + ".gfs"); - Io_mgr.I.MoveFil_args(src_url, trg_url, true).Exec(); - cfg_mgr.App().Gui_mgr().Kit().Ask_ok("", "", "Options cleared. Please restart XOWA."); + Io_mgr.Instance.MoveFil_args(src_url, trg_url, true).Exec(); + if (cfg_mgr.App().Tid_is_edit()) + ((Xoae_app)cfg_mgr.App()).Gui_mgr().Kit().Ask_ok("", "", "Options cleared. Please restart XOWA."); } public void Cfg_load_run(Xoa_cfg_mgr cfg_mgr) { - String load = Io_mgr.I.LoadFilStr(Cfg_url(cfg_mgr)); + String load = Io_mgr.Instance.LoadFilStr(Cfg_url(cfg_mgr)); cfg_mgr.App().Gfs_mgr().Run_str(load); } public void Cfg_save_bgn(Xoa_cfg_mgr cfg_mgr) { bfr.ClearAndReset(); } private Bry_bfr bfr = Bry_bfr.new_(); public void Cfg_save_end(Xoa_cfg_mgr cfg_mgr) { - cfg_mgr.App().Usr_dlg().Log_many("", "", "shutting down app; saving cfg: len=~{0}", bfr.Len()); - Io_mgr.I.SaveFilBfr(Cfg_url(cfg_mgr), bfr); + Xoa_app_.Usr_dlg().Log_many("", "", "shutting down app; saving cfg: len=~{0}", bfr.Len()); + Io_mgr.Instance.SaveFilBfr(Cfg_url(cfg_mgr), bfr); } public void Cfg_save_run(Xoa_cfg_mgr cfg_mgr, Xoa_cfg_grp cfg_grp, Xoa_cfg_itm cfg_itm) { - fmtr.Bld_bfr_many(bfr, Xoa_gfs_mgr.Cfg_save_escape(cfg_grp.Key_bry()), Xoa_gfs_mgr.Cfg_save_escape(cfg_itm.Key()), Xoa_gfs_mgr.Cfg_save_escape(cfg_itm.Val())); + fmtr.Bld_bfr_many(bfr, Xoa_gfs_wtr_.Escape(cfg_grp.Key_bry()), Xoa_gfs_wtr_.Escape(cfg_itm.Key()), Xoa_gfs_wtr_.Escape(cfg_itm.Val())); } - public Io_url Cfg_url(Xoa_cfg_mgr cfg_mgr) {return cfg_mgr.App().Usere().Fsys_mgr().App_data_cfg_dir().GenSubFil(File_name);} + public Io_url Cfg_url(Xoa_cfg_mgr cfg_mgr) {return ((Xoae_app)cfg_mgr.App()).Usere().Fsys_mgr().App_data_cfg_dir().GenSubFil(File_name);} public static final String File_name = "xowa_user_cfg.gfs"; } diff --git a/400_xowa/src/gplx/xowa/apps/cfgs/Xoa_cfg_grp.java b/400_xowa/src/gplx/xowa/apps/cfgs/Xoa_cfg_grp.java new file mode 100644 index 000000000..cfa9426ea --- /dev/null +++ b/400_xowa/src/gplx/xowa/apps/cfgs/Xoa_cfg_grp.java @@ -0,0 +1,64 @@ +/* +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.apps.cfgs; import gplx.*; import gplx.xowa.*; import gplx.xowa.apps.*; +import gplx.xowa.wikis.domains.*; +public class Xoa_cfg_grp { + private final Ordered_hash hash = Ordered_hash_.New_bry(); private final Xoa_cfg_mgr mgr; + public Xoa_cfg_grp(Xoa_cfg_mgr mgr, Xoa_cfg_grp_tid tid, byte[] key_bry) { + this.mgr = mgr; this.tid = tid; this.key_bry = key_bry; this.key_str = String_.new_u8(key_bry); + } + public Xoa_cfg_grp_tid Tid() {return tid;} private final Xoa_cfg_grp_tid tid; + 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 boolean Notify(Xoa_cfg_itm itm) {return mgr.Notify(this, itm);} + public Xoa_cfg_itm Get_by_or_null(byte[] key) {return (Xoa_cfg_itm)hash.Get_by(key);} + public Xoa_cfg_itm Get_by_or_make(byte[] key) { + Xoa_cfg_itm rv = (Xoa_cfg_itm)hash.Get_by(key); + if (rv == null) { + rv = new Xoa_cfg_itm(this, key); + hash.Add(key, rv); + } + return rv; + } + public Xoa_cfg_itm Get_by_wiki(byte[] domain_bry, int domain_tid) { + Xoa_cfg_itm rv = (Xoa_cfg_itm)hash.Get_by(domain_bry); + if (rv == null) { // match by domain_bry failed; try tid + rv = (Xoa_cfg_itm)hash.Get_by(Xow_domain_tid_.Get_type_as_bry(domain_tid)); + if (rv == null) // match by type failed; try all + rv = (Xoa_cfg_itm)hash.Get_by(Xoa_cfg_grp_tid.Key_all_bry); + if (rv == null) // match by all failed; try app + rv = (Xoa_cfg_itm)hash.Get_by(Xoa_cfg_grp_tid.Key_app_bry); + } + return rv; + } + public void Db_load_end() { + int len = hash.Count(); + for (int i = 0; i < len; ++i) { + Xoa_cfg_itm itm = (Xoa_cfg_itm)hash.Get_at(i); + itm.Val_load_done(); + } + } + public void Db_save(Xoa_cfg_db db) { + int len = hash.Count(); + for (int i = 0; i < len; ++i) { + Xoa_cfg_itm itm = (Xoa_cfg_itm)hash.Get_at(i); + if (!itm.Val_is_customized() && !itm.Val_is_dirty()) continue; // system default and unchanged; no need to save + db.Cfg_save_run(mgr, this, itm); + } + } +} diff --git a/400_xowa/src/gplx/xowa/cfgs/Xoa_cfg_grp_tid.java b/400_xowa/src/gplx/xowa/apps/cfgs/Xoa_cfg_grp_tid.java similarity index 90% rename from 400_xowa/src/gplx/xowa/cfgs/Xoa_cfg_grp_tid.java rename to 400_xowa/src/gplx/xowa/apps/cfgs/Xoa_cfg_grp_tid.java index 4faa51ef7..3bda802e8 100644 --- a/400_xowa/src/gplx/xowa/cfgs/Xoa_cfg_grp_tid.java +++ b/400_xowa/src/gplx/xowa/apps/cfgs/Xoa_cfg_grp_tid.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.cfgs; import gplx.*; import gplx.xowa.*; +package gplx.xowa.apps.cfgs; import gplx.*; import gplx.xowa.*; import gplx.xowa.apps.*; import gplx.xowa.wikis.domains.*; public class Xoa_cfg_grp_tid { public byte Tid() {return tid;} private byte tid; @@ -32,7 +32,7 @@ public class Xoa_cfg_grp_tid { else if (Bry_.Eq(key, Key_app_bry)) rv.tid = Tid_app; else { Xow_domain_itm wiki_type = Xow_domain_itm_.parse(key); - if (wiki_type.Domain_type_id() == Xow_domain_type_.Int__other) + if (wiki_type.Domain_type_id() == Xow_domain_tid_.Int__other) rv.tid = Tid_wiki; else { rv.tid = Tid_type; diff --git a/400_xowa/src/gplx/xowa/cfgs/Xoa_cfg_itm.java b/400_xowa/src/gplx/xowa/apps/cfgs/Xoa_cfg_itm.java similarity index 64% rename from 400_xowa/src/gplx/xowa/cfgs/Xoa_cfg_itm.java rename to 400_xowa/src/gplx/xowa/apps/cfgs/Xoa_cfg_itm.java index ded1c3fcd..f3a6d9177 100644 --- a/400_xowa/src/gplx/xowa/cfgs/Xoa_cfg_itm.java +++ b/400_xowa/src/gplx/xowa/apps/cfgs/Xoa_cfg_itm.java @@ -15,25 +15,25 @@ 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.cfgs; import gplx.*; import gplx.xowa.*; +package gplx.xowa.apps.cfgs; import gplx.*; import gplx.xowa.*; import gplx.xowa.apps.*; public class Xoa_cfg_itm implements GfoInvkAble { public Xoa_cfg_itm(Xoa_cfg_grp grp, byte[] key) {this.grp = grp; this.key = key;} - public Xoa_cfg_grp Grp() {return grp;} private Xoa_cfg_grp grp; - public byte[] Key() {return key;} private byte[] key; + public Xoa_cfg_grp Grp() {return grp;} private final Xoa_cfg_grp grp; + public byte[] Key() {return key;} private final byte[] key; public String Val() {return val;} private String val; - public Xoa_cfg_itm Val_(String v) { - val = v; + public boolean Val_is_dirty() {return val_is_dirty;} private boolean val_is_dirty; + public boolean Val_is_customized() {return val_is_customized;} private boolean val_is_customized; // false if value is system default; true if changed by user + public void Val_(String v) { + this.val = v; if (grp.Notify(this)) { - db_customized = true; - db_dirty = true; + val_is_customized = true; + val_is_dirty = true; } - return this; } - public boolean Db_customized() {return db_customized;} public Xoa_cfg_itm Db_customized_(boolean v) {db_customized = v; return this;} private boolean db_customized; - public boolean Db_dirty() {return db_dirty;} public Xoa_cfg_itm Db_dirty_(boolean v) {db_dirty = v; return this;} private boolean db_dirty; - public void Clear() { - grp = null; - } + public void Val_load_done() { + val_is_dirty = false; + val_is_customized = true; + } public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { if (ctx.Match(k, Invk_val)) return val; else if (ctx.Match(k, Invk_val_)) Val_(m.ReadStr("v")); diff --git a/400_xowa/src/gplx/xowa/cfgs/Xoa_cfg_mgr.java b/400_xowa/src/gplx/xowa/apps/cfgs/Xoa_cfg_mgr.java similarity index 72% rename from 400_xowa/src/gplx/xowa/cfgs/Xoa_cfg_mgr.java rename to 400_xowa/src/gplx/xowa/apps/cfgs/Xoa_cfg_mgr.java index 8b7b6c1b7..337baf0c7 100644 --- a/400_xowa/src/gplx/xowa/cfgs/Xoa_cfg_mgr.java +++ b/400_xowa/src/gplx/xowa/apps/cfgs/Xoa_cfg_mgr.java @@ -15,14 +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.cfgs; import gplx.*; import gplx.xowa.*; +package gplx.xowa.apps.cfgs; import gplx.*; import gplx.xowa.*; import gplx.xowa.apps.*; import gplx.xowa.wikis.domains.*; public class Xoa_cfg_mgr implements GfoInvkAble { - public Xoa_cfg_mgr(Xoae_app app) {this.app = app;} private Ordered_hash hash = Ordered_hash_.new_bry_(); - public Xoae_app App() {return app;} private Xoae_app app; + private final Ordered_hash hash = Ordered_hash_.New_bry(); + public Xoa_cfg_mgr(Xoa_app app) {this.app = app;} + public Xoa_app App() {return app;} private final Xoa_app app; public Xoa_cfg_itm Get_itm_or_null(byte[] grp_key, byte[] itm_key) { Xoa_cfg_grp grp = (Xoa_cfg_grp)hash.Get_by(grp_key); - return grp == null ? null : grp.Get_itm_or_null(itm_key); + return grp == null ? null : grp.Get_by_or_null(itm_key); } public Xoa_cfg_itm Get_itm_or_make(byte[] grp_key, byte[] itm_key) { Xoa_cfg_grp grp = null; @@ -34,20 +35,17 @@ public class Xoa_cfg_mgr implements GfoInvkAble { } else grp = (Xoa_cfg_grp)grp_obj; - return grp.Get_itm_or_make(itm_key); + return grp.Get_by_or_make(itm_key); } public void Set_by_app(String grp_key, String val) {Set(Bry_.new_u8(grp_key), Xoa_cfg_grp_tid.Key_app_bry, val);} public void Set_by_all(String grp_key, String val) {Set(Bry_.new_u8(grp_key), Xoa_cfg_grp_tid.Key_all_bry, val);} - public void Set_by_type(String grp_key, byte tid, String val) {Set(Bry_.new_u8(grp_key), Xow_domain_type_.Get_type_as_bry(tid), val);} - private void Set(byte[] grp_key, byte[] tid_key, String val) { - Xoa_cfg_itm itm = Get_itm_or_make(grp_key, tid_key); - itm.Val_(val); - } - public void Init(Xowe_wiki wiki) { + public void Set_by_type(String grp_key, byte tid, String val) {Set(Bry_.new_u8(grp_key), Xow_domain_tid_.Get_type_as_bry(tid), val);} + private void Set(byte[] grp_key, byte[] tid_key, String val) {Get_itm_or_make(grp_key, tid_key).Val_(val);} + public void Init(Xow_wiki wiki) { int len = hash.Count(); for (int i = 0; i < len; i++) { Xoa_cfg_grp grp = (Xoa_cfg_grp)hash.Get_at(i); - Xoa_cfg_itm itm = grp.Get_itm_by_wiki(wiki.Domain_bry(), wiki.Domain_tid()); + Xoa_cfg_itm itm = grp.Get_by_wiki(wiki.Domain_bry(), wiki.Domain_tid()); if (itm == null) continue; // grp exists, but not for wiki; EX: rule exists for download.enabled and enwiki, but frwiki loaded if (itm.Grp().Tid().Tid() == Xoa_cfg_grp_tid.Tid_app) continue; // rule is for app; don't run for wiki init Eval_set(wiki, grp.Key_str(), itm.Val()); @@ -62,10 +60,10 @@ public class Xoa_cfg_mgr implements GfoInvkAble { case Xoa_cfg_grp_tid.Tid_all: case Xoa_cfg_grp_tid.Tid_type: boolean all = tid_byte == Xoa_cfg_grp_tid.Tid_all; - int wiki_count = app.Wiki_mgr().Count(); + int wiki_count = app.Wiki_mgri().Count(); boolean rv = true; for (int i = 0; i < wiki_count; i++) { - Xowe_wiki wiki = app.Wiki_mgr().Get_at(i); + Xow_wiki wiki = app.Wiki_mgri().Get_at_i(i); if (all || wiki.Domain_tid() == grp_tid.Wiki_tid()) { if (!Eval_set(wiki, grp.Key_str(), itm.Val())) rv = false; @@ -73,7 +71,7 @@ public class Xoa_cfg_mgr implements GfoInvkAble { } return rv; case Xoa_cfg_grp_tid.Tid_wiki: { - Xowe_wiki wiki = app.Wiki_mgr().Get_by_key_or_null(itm.Key()); + Xow_wiki wiki = app.Wiki_mgri().Get_by_key_or_null_i(itm.Key()); if (wiki == null) return true; // wiki not installed; return true (no error) return Eval_set(wiki, grp.Key_str(), itm.Val()); } @@ -85,26 +83,19 @@ public class Xoa_cfg_mgr implements GfoInvkAble { hash.Clear(); db_txt.Cfg_reset_all(this); } - public void Db_customized_n_() { - int len = hash.Count(); - for (int i = 0; i < len; i++) { - Xoa_cfg_grp grp = (Xoa_cfg_grp)hash.Get_at(i); - grp.Db_customized_n_(); - } + public void Db_load_txt() {Db_load(db_txt);} + public void Db_load(Xoa_cfg_db db) { + db.Cfg_load_run(this); + this.Db_load_end(); } - public void Db_loaded_y_() { + private void Db_load_end() { int len = hash.Count(); for (int i = 0; i < len; i++) { Xoa_cfg_grp grp = (Xoa_cfg_grp)hash.Get_at(i); - grp.Db_loaded_y_(); + grp.Db_load_end(); } } - public void Db_load_txt() {Db_load(db_txt);} - public void Db_load(Xoa_cfg_db db) { - db.Cfg_load_run(this); - this.Db_loaded_y_(); - } - public void Db_save_txt() {Db_save(db_txt);} private Xoa_cfg_db_txt db_txt = new Xoa_cfg_db_txt(); + public void Db_save_txt() {Db_save(db_txt);} private final Xoa_cfg_db_txt db_txt = new Xoa_cfg_db_txt(); public void Db_save(Xoa_cfg_db db) { int len = hash.Count(); db.Cfg_save_bgn(this); @@ -114,15 +105,7 @@ public class Xoa_cfg_mgr implements GfoInvkAble { } db.Cfg_save_end(this); } - public void Clear() { - int len = hash.Count(); - for (int i = 0; i < len; i++) { - Xoa_cfg_grp grp = (Xoa_cfg_grp)hash.Get_at(i); - grp.Clear(); - } - hash.Clear(); - } - boolean Eval_set(GfoInvkAble invk, String key, String val) { + private boolean Eval_set(GfoInvkAble invk, String key, String val) { String msg_str = key + "_(<:['\n" + val + "\n']:>);"; Object rslt = app.Gfs_mgr().Run_str_for(invk, msg_str); return rslt != GfoInvkAble_.Rv_error; diff --git a/400_xowa/src/gplx/xowa/cfgs/Xoa_cfg_mgr_tst.java b/400_xowa/src/gplx/xowa/apps/cfgs/Xoa_cfg_mgr_tst.java similarity index 92% rename from 400_xowa/src/gplx/xowa/cfgs/Xoa_cfg_mgr_tst.java rename to 400_xowa/src/gplx/xowa/apps/cfgs/Xoa_cfg_mgr_tst.java index bb36481e0..e14b5ac89 100644 --- a/400_xowa/src/gplx/xowa/cfgs/Xoa_cfg_mgr_tst.java +++ b/400_xowa/src/gplx/xowa/apps/cfgs/Xoa_cfg_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.cfgs; import gplx.*; import gplx.xowa.*; +package gplx.xowa.apps.cfgs; import gplx.*; import gplx.xowa.*; import gplx.xowa.apps.*; import org.junit.*; import gplx.dbs.*; public class Xoa_cfg_mgr_tst { @Before public void init() {fxt.Clear();} private Xoa_cfg_mgr_fxt fxt = new Xoa_cfg_mgr_fxt(); @@ -52,7 +52,6 @@ class Xoa_cfg_mgr_fxt { private void Init_cfg(String key, String val, byte[] tid) { Xoa_cfg_itm itm = app.Cfg_mgr().Get_itm_or_make(Bry_.new_a7(key), tid); itm.Val_(val); - itm.Db_customized_(false); } public Xowe_wiki Exec_make_wiki(String wiki_key_str) {return Exec_make_wiki(Bry_.new_a7(wiki_key_str));} public Xowe_wiki Exec_make_wiki(byte[] wiki_key_bry) {return app.Wiki_mgr().Get_by_key_or_make(wiki_key_bry);} @@ -76,12 +75,12 @@ class Xoa_cfg_mgr_fxt { } public void Test_cfg_itm(byte[] wiki, byte[] prop, boolean expd_customized, boolean expd_dirty) { Xoa_cfg_itm itm = cfg_mgr.Get_itm_or_make(prop, wiki); - Tfds.Eq(itm.Db_customized(), expd_customized); - Tfds.Eq(itm.Db_dirty(), expd_dirty); + Tfds.Eq(itm.Val_is_customized(), expd_customized); + Tfds.Eq(itm.Val_is_dirty(), expd_dirty); } public void Test_save(String expd) { Xoa_cfg_db_txt db = new Xoa_cfg_db_txt(); cfg_mgr.Db_save(db); - Tfds.Eq(expd, Io_mgr.I.LoadFilStr(db.Cfg_url(cfg_mgr))); + Tfds.Eq(expd, Io_mgr.Instance.LoadFilStr(db.Cfg_url(cfg_mgr))); } } diff --git a/400_xowa/src/gplx/xowa/cfgs/Xowc_parser.java b/400_xowa/src/gplx/xowa/apps/cfgs/Xowc_parser.java similarity index 94% rename from 400_xowa/src/gplx/xowa/cfgs/Xowc_parser.java rename to 400_xowa/src/gplx/xowa/apps/cfgs/Xowc_parser.java index d65cc9a34..4012fbc5c 100644 --- a/400_xowa/src/gplx/xowa/cfgs/Xowc_parser.java +++ b/400_xowa/src/gplx/xowa/apps/cfgs/Xowc_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.cfgs; import gplx.*; import gplx.xowa.*; +package gplx.xowa.apps.cfgs; import gplx.*; import gplx.xowa.*; import gplx.xowa.apps.*; import gplx.xowa.parsers.lnkis.cfgs.*; public class Xowc_parser implements GfoInvkAble { public Xowc_parser(Xowe_wiki wiki) { diff --git a/400_xowa/src/gplx/xowa/cfgs/Xowc_xtn_pages.java b/400_xowa/src/gplx/xowa/apps/cfgs/Xowc_xtn_pages.java similarity index 95% rename from 400_xowa/src/gplx/xowa/cfgs/Xowc_xtn_pages.java rename to 400_xowa/src/gplx/xowa/apps/cfgs/Xowc_xtn_pages.java index be0503796..2ad33eaa8 100644 --- a/400_xowa/src/gplx/xowa/cfgs/Xowc_xtn_pages.java +++ b/400_xowa/src/gplx/xowa/apps/cfgs/Xowc_xtn_pages.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.cfgs; import gplx.*; import gplx.xowa.*; -import gplx.xowa.nss.*; +package gplx.xowa.apps.cfgs; import gplx.*; import gplx.xowa.*; import gplx.xowa.apps.*; +import gplx.xowa.wikis.nss.*; public class Xowc_xtn_pages implements GfoInvkAble { public boolean Init_needed() {return init_needed;} private boolean init_needed = true; public int Ns_page_id() {return ns_page_id;} private int ns_page_id = Int_.Min_value; diff --git a/400_xowa/src/gplx/xowa/cfgs/Xowc_xtn_pages_tst.java b/400_xowa/src/gplx/xowa/apps/cfgs/Xowc_xtn_pages_tst.java similarity index 93% rename from 400_xowa/src/gplx/xowa/cfgs/Xowc_xtn_pages_tst.java rename to 400_xowa/src/gplx/xowa/apps/cfgs/Xowc_xtn_pages_tst.java index a964961a5..b15e83d8e 100644 --- a/400_xowa/src/gplx/xowa/cfgs/Xowc_xtn_pages_tst.java +++ b/400_xowa/src/gplx/xowa/apps/cfgs/Xowc_xtn_pages_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.cfgs; import gplx.*; import gplx.xowa.*; -import org.junit.*; import gplx.xowa.wikis.*; import gplx.xowa.nss.*; +package gplx.xowa.apps.cfgs; import gplx.*; import gplx.xowa.*; import gplx.xowa.apps.*; +import org.junit.*; import gplx.xowa.wikis.*; import gplx.xowa.wikis.nss.*; public class Xowc_xtn_pages_tst { @Before public void init() {fxt.Clear();} private Xowc_xtn_pages_fxt fxt = new Xowc_xtn_pages_fxt(); @Test public void Init() { diff --git a/400_xowa/src/gplx/xowa/cfgs/Xowc_xtns.java b/400_xowa/src/gplx/xowa/apps/cfgs/Xowc_xtns.java similarity index 92% rename from 400_xowa/src/gplx/xowa/cfgs/Xowc_xtns.java rename to 400_xowa/src/gplx/xowa/apps/cfgs/Xowc_xtns.java index fa19809e6..7ea8ddbed 100644 --- a/400_xowa/src/gplx/xowa/cfgs/Xowc_xtns.java +++ b/400_xowa/src/gplx/xowa/apps/cfgs/Xowc_xtns.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.cfgs; import gplx.*; import gplx.xowa.*; +package gplx.xowa.apps.cfgs; import gplx.*; import gplx.xowa.*; import gplx.xowa.apps.*; public class Xowc_xtns implements GfoInvkAble { private Hash_adp_bry hash = Hash_adp_bry.ci_a7(); public Xowc_xtns() {hash.Add(Xowc_xtn_pages.Xtn_key, itm_pages);} diff --git a/400_xowa/src/gplx/xowa/cfgs/gui/Xocfg_gui_mgr.java b/400_xowa/src/gplx/xowa/apps/cfgs/gui/Xocfg_gui_mgr.java similarity index 90% rename from 400_xowa/src/gplx/xowa/cfgs/gui/Xocfg_gui_mgr.java rename to 400_xowa/src/gplx/xowa/apps/cfgs/gui/Xocfg_gui_mgr.java index 2efcbab36..8ae5f5157 100644 --- a/400_xowa/src/gplx/xowa/cfgs/gui/Xocfg_gui_mgr.java +++ b/400_xowa/src/gplx/xowa/apps/cfgs/gui/Xocfg_gui_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.cfgs.gui; import gplx.*; import gplx.xowa.*; import gplx.xowa.cfgs.*; +package gplx.xowa.apps.cfgs.gui; import gplx.*; import gplx.xowa.*; import gplx.xowa.apps.*; import gplx.xowa.apps.cfgs.*; public class Xocfg_gui_mgr implements GfoInvkAble { public Xocfg_gui_mgr(Xoae_app app) { win_cfg = new Xocfg_win(app); diff --git a/400_xowa/src/gplx/xowa/cfgs/gui/Xocfg_html.java b/400_xowa/src/gplx/xowa/apps/cfgs/gui/Xocfg_html.java similarity index 86% rename from 400_xowa/src/gplx/xowa/cfgs/gui/Xocfg_html.java rename to 400_xowa/src/gplx/xowa/apps/cfgs/gui/Xocfg_html.java index 7a9267974..35429486a 100644 --- a/400_xowa/src/gplx/xowa/cfgs/gui/Xocfg_html.java +++ b/400_xowa/src/gplx/xowa/apps/cfgs/gui/Xocfg_html.java @@ -15,14 +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.cfgs.gui; import gplx.*; import gplx.xowa.*; import gplx.xowa.cfgs.*; +package gplx.xowa.apps.cfgs.gui; import gplx.*; import gplx.xowa.*; import gplx.xowa.apps.*; import gplx.xowa.apps.cfgs.*; public class Xocfg_html implements GfoInvkAble { public Xocfg_html() { this.content_editable = false; // CFG: default to false for general user } public boolean Content_editable() {return content_editable;} public Xocfg_html Content_editable_(boolean v) {content_editable = v; return this;} private boolean content_editable; public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { - if (ctx.Match(k, Invk_content_editable)) return Yn.Xto_str(content_editable); + if (ctx.Match(k, Invk_content_editable)) return Yn.To_str(content_editable); else if (ctx.Match(k, Invk_content_editable_)) content_editable = m.ReadYn_toggle("v", content_editable); else return GfoInvkAble_.Rv_unhandled; return this; diff --git a/400_xowa/src/gplx/xowa/cfgs/gui/Xocfg_pref_mgr.java b/400_xowa/src/gplx/xowa/apps/cfgs/gui/Xocfg_pref_mgr.java similarity index 96% rename from 400_xowa/src/gplx/xowa/cfgs/gui/Xocfg_pref_mgr.java rename to 400_xowa/src/gplx/xowa/apps/cfgs/gui/Xocfg_pref_mgr.java index f7901d232..c9669e814 100644 --- a/400_xowa/src/gplx/xowa/cfgs/gui/Xocfg_pref_mgr.java +++ b/400_xowa/src/gplx/xowa/apps/cfgs/gui/Xocfg_pref_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.cfgs.gui; import gplx.*; import gplx.xowa.*; import gplx.xowa.cfgs.*; +package gplx.xowa.apps.cfgs.gui; import gplx.*; import gplx.xowa.*; import gplx.xowa.apps.*; import gplx.xowa.apps.cfgs.*; class Test_api implements GfoInvkAble { public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { if (ctx.Match(k, Invk_meta)) return meta_mgr.Get_or_null(m.ReadStr("v")); diff --git a/400_xowa/src/gplx/xowa/cfgs/gui/Xocfg_win.java b/400_xowa/src/gplx/xowa/apps/cfgs/gui/Xocfg_win.java similarity index 89% rename from 400_xowa/src/gplx/xowa/cfgs/gui/Xocfg_win.java rename to 400_xowa/src/gplx/xowa/apps/cfgs/gui/Xocfg_win.java index 76a42e517..439dbc426 100644 --- a/400_xowa/src/gplx/xowa/cfgs/gui/Xocfg_win.java +++ b/400_xowa/src/gplx/xowa/apps/cfgs/gui/Xocfg_win.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.cfgs.gui; import gplx.*; import gplx.xowa.*; import gplx.xowa.cfgs.*; -import gplx.xowa.langs.*; +package gplx.xowa.apps.cfgs.gui; import gplx.*; import gplx.xowa.*; import gplx.xowa.apps.*; import gplx.xowa.apps.cfgs.*; +import gplx.xowa.guis.langs.*; public class Xocfg_win implements GfoInvkAble { public Xocfg_win(Xoae_app app) {} public Xol_font_info Font() {return font;} private Xol_font_info font = new Xol_font_info("Arial", 8, gplx.gfui.FontStyleAdp_.Plain); diff --git a/400_xowa/src/gplx/xowa/cfgs/gui/Xow_gui_mgr.java b/400_xowa/src/gplx/xowa/apps/cfgs/gui/Xow_gui_mgr.java similarity index 89% rename from 400_xowa/src/gplx/xowa/cfgs/gui/Xow_gui_mgr.java rename to 400_xowa/src/gplx/xowa/apps/cfgs/gui/Xow_gui_mgr.java index 385c6728b..5c494e15a 100644 --- a/400_xowa/src/gplx/xowa/cfgs/gui/Xow_gui_mgr.java +++ b/400_xowa/src/gplx/xowa/apps/cfgs/gui/Xow_gui_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.cfgs.gui; import gplx.*; import gplx.xowa.*; import gplx.xowa.cfgs.*; +package gplx.xowa.apps.cfgs.gui; import gplx.*; import gplx.xowa.*; import gplx.xowa.apps.*; import gplx.xowa.apps.cfgs.*; public class Xow_gui_mgr implements GfoInvkAble { public Xocfg_html Cfg_browser() {return cfg_browser;} private Xocfg_html cfg_browser = new Xocfg_html(); public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { diff --git a/400_xowa/src/gplx/xowa/cfgs2/Xocfg_bnd_itm.java b/400_xowa/src/gplx/xowa/apps/cfgs/old/Xocfg_bnd_itm.java similarity index 86% rename from 400_xowa/src/gplx/xowa/cfgs2/Xocfg_bnd_itm.java rename to 400_xowa/src/gplx/xowa/apps/cfgs/old/Xocfg_bnd_itm.java index 2f3b65e2e..afaad0bd1 100644 --- a/400_xowa/src/gplx/xowa/cfgs2/Xocfg_bnd_itm.java +++ b/400_xowa/src/gplx/xowa/apps/cfgs/old/Xocfg_bnd_itm.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.cfgs2; import gplx.*; import gplx.xowa.*; -import gplx.gfui.*; import gplx.xowa.gui.bnds.*; import gplx.xowa.gui.cmds.*; -import gplx.langs.gfss.*; import gplx.xowa.apps.*; +package gplx.xowa.apps.cfgs.old; import gplx.*; import gplx.xowa.*; import gplx.xowa.apps.*; import gplx.xowa.apps.cfgs.*; +import gplx.gfui.*; import gplx.xowa.guis.bnds.*; import gplx.xowa.guis.cmds.*; +import gplx.langs.gfs.*; import gplx.xowa.apps.*; public class Xocfg_bnd_itm implements GfoInvkAble { private Xocfg_bnd_mgr mgr; public Xocfg_bnd_itm(Xocfg_bnd_mgr mgr, Xog_cmd_itm cmd, Xog_bnd_itm bnd) { @@ -33,7 +33,7 @@ public class Xocfg_bnd_itm implements GfoInvkAble { else if (ctx.Match(k, Invk_cmd_ctg_sort)) return cmd.Ctg().Tid(); else if (ctx.Match(k, Invk_bnd_key)) return bnd.Key(); else if (ctx.Match(k, Invk_bnd_uid)) return bnd.Uid(); - else if (ctx.Match(k, Invk_bnd_sys)) return Yn.Xto_str(bnd.Sys()); + else if (ctx.Match(k, Invk_bnd_sys)) return Yn.To_str(bnd.Sys()); else if (ctx.Match(k, Invk_bnd_cmd)) return bnd.Cmd(); else if (ctx.Match(k, Invk_bnd_cmd_)) bnd.Cmd_(m.ReadStr("v")); else if (ctx.Match(k, Invk_bnd_box)) return Xog_bnd_box_.Xto_gui_str(bnd.Box()); diff --git a/400_xowa/src/gplx/xowa/cfgs2/Xocfg_bnd_itm_srl.java b/400_xowa/src/gplx/xowa/apps/cfgs/old/Xocfg_bnd_itm_srl.java similarity index 88% rename from 400_xowa/src/gplx/xowa/cfgs2/Xocfg_bnd_itm_srl.java rename to 400_xowa/src/gplx/xowa/apps/cfgs/old/Xocfg_bnd_itm_srl.java index b33e0e6d1..0baa78704 100644 --- a/400_xowa/src/gplx/xowa/cfgs2/Xocfg_bnd_itm_srl.java +++ b/400_xowa/src/gplx/xowa/apps/cfgs/old/Xocfg_bnd_itm_srl.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.cfgs2; import gplx.*; import gplx.xowa.*; -import gplx.gfui.*; import gplx.xowa.gui.bnds.*; -import gplx.langs.gfss.*; import gplx.xowa.apps.gfss.*; +package gplx.xowa.apps.cfgs.old; import gplx.*; import gplx.xowa.*; import gplx.xowa.apps.*; import gplx.xowa.apps.cfgs.*; +import gplx.gfui.*; import gplx.xowa.guis.bnds.*; +import gplx.langs.gfs.*; import gplx.xowa.apps.gfs.*; public class Xocfg_bnd_itm_srl implements GfoInvkAble { private Xoae_app app; public Xocfg_bnd_itm_srl(Xoae_app app, String key) { @@ -39,7 +39,7 @@ public class Xocfg_bnd_itm_srl implements GfoInvkAble { Gfs_wtr wtr = app.Gfs_mgr().Wtr(); wtr.Add_set_eq(Key_box, Bry_.new_a7(Xog_bnd_box_.Xto_sys_str(box))); wtr.Add_set_eq(Key_ipt, Bry_.new_a7(ipt.Key())); - return wtr.Bfr().Xto_str_and_clear(); + return wtr.Bfr().To_str_and_clear(); } private static final byte[] Key_box = Bry_.new_a7("box"), Key_ipt = Bry_.new_a7("ipt"); public static void Src_(Xoae_app app, Xocfg_bnd_itm_srl itm, String v) { Xoa_gfs_mgr gfs_mgr = app.Gfs_mgr(); diff --git a/400_xowa/src/gplx/xowa/cfgs2/Xocfg_bnd_mgr.java b/400_xowa/src/gplx/xowa/apps/cfgs/old/Xocfg_bnd_mgr.java similarity index 91% rename from 400_xowa/src/gplx/xowa/cfgs2/Xocfg_bnd_mgr.java rename to 400_xowa/src/gplx/xowa/apps/cfgs/old/Xocfg_bnd_mgr.java index ab6d2885d..f512762d3 100644 --- a/400_xowa/src/gplx/xowa/cfgs2/Xocfg_bnd_mgr.java +++ b/400_xowa/src/gplx/xowa/apps/cfgs/old/Xocfg_bnd_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.cfgs2; import gplx.*; import gplx.xowa.*; -import gplx.gfui.*; import gplx.xowa.gui.bnds.*; import gplx.xowa.gui.cmds.*; +package gplx.xowa.apps.cfgs.old; import gplx.*; import gplx.xowa.*; import gplx.xowa.apps.*; import gplx.xowa.apps.cfgs.*; +import gplx.gfui.*; import gplx.xowa.guis.bnds.*; import gplx.xowa.guis.cmds.*; import gplx.xowa.apps.fmtrs.*; public class Xocfg_bnd_mgr implements GfoInvkAble, Gfo_sort_able { private Xog_bnd_mgr_srl bnd_mgr_srl; private Xog_cmd_mgr cmd_mgr; @@ -30,7 +30,7 @@ public class Xocfg_bnd_mgr implements GfoInvkAble, Gfo_sort_able { public Xog_bnd_mgr Bnd_mgr() {return bnd_mgr;} private Xog_bnd_mgr bnd_mgr; private Ordered_hash regy; public void Init() { - regy = Ordered_hash_.new_(); + regy = Ordered_hash_.New(); int len = bnd_mgr.Len(); for (int i = 0; i < len; i++) { Xog_bnd_itm bnd = bnd_mgr.Get_at(i); diff --git a/400_xowa/src/gplx/xowa/cfgs2/Xocfg_gui_mgr.java b/400_xowa/src/gplx/xowa/apps/cfgs/old/Xocfg_gui_mgr.java similarity index 90% rename from 400_xowa/src/gplx/xowa/cfgs2/Xocfg_gui_mgr.java rename to 400_xowa/src/gplx/xowa/apps/cfgs/old/Xocfg_gui_mgr.java index a3b36b6e9..73369f385 100644 --- a/400_xowa/src/gplx/xowa/cfgs2/Xocfg_gui_mgr.java +++ b/400_xowa/src/gplx/xowa/apps/cfgs/old/Xocfg_gui_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.cfgs2; import gplx.*; import gplx.xowa.*; +package gplx.xowa.apps.cfgs.old; import gplx.*; import gplx.xowa.*; import gplx.xowa.apps.*; import gplx.xowa.apps.cfgs.*; public class Xocfg_gui_mgr implements GfoInvkAble { public Xocfg_gui_mgr(Xoae_app app) {bnd_mgr = new Xocfg_bnd_mgr(app);} public Xocfg_tab_mgr Tab_mgr() {return tab_mgr;} private Xocfg_tab_mgr tab_mgr = new Xocfg_tab_mgr(); diff --git a/400_xowa/src/gplx/xowa/cfgs2/Xocfg_regy.java b/400_xowa/src/gplx/xowa/apps/cfgs/old/Xocfg_regy.java similarity index 90% rename from 400_xowa/src/gplx/xowa/cfgs2/Xocfg_regy.java rename to 400_xowa/src/gplx/xowa/apps/cfgs/old/Xocfg_regy.java index 997c0e674..6ac7dd434 100644 --- a/400_xowa/src/gplx/xowa/cfgs2/Xocfg_regy.java +++ b/400_xowa/src/gplx/xowa/apps/cfgs/old/Xocfg_regy.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.cfgs2; import gplx.*; import gplx.xowa.*; +package gplx.xowa.apps.cfgs.old; import gplx.*; import gplx.xowa.*; import gplx.xowa.apps.*; import gplx.xowa.apps.cfgs.*; public class Xocfg_regy implements GfoInvkAble { public Xocfg_regy(Xoae_app app) { app_cfg = new Xocfg_root(app, Xocfg_root_.Tid_app); diff --git a/400_xowa/src/gplx/xowa/cfgs2/Xocfg_root.java b/400_xowa/src/gplx/xowa/apps/cfgs/old/Xocfg_root.java similarity index 89% rename from 400_xowa/src/gplx/xowa/cfgs2/Xocfg_root.java rename to 400_xowa/src/gplx/xowa/apps/cfgs/old/Xocfg_root.java index 0f9c2c65a..7746a5cef 100644 --- a/400_xowa/src/gplx/xowa/cfgs2/Xocfg_root.java +++ b/400_xowa/src/gplx/xowa/apps/cfgs/old/Xocfg_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.cfgs2; import gplx.*; import gplx.xowa.*; +package gplx.xowa.apps.cfgs.old; import gplx.*; import gplx.xowa.*; import gplx.xowa.apps.*; import gplx.xowa.apps.cfgs.*; public class Xocfg_root implements GfoInvkAble { public Xocfg_root(Xoae_app app, byte tid) { this.tid = tid; diff --git a/400_xowa/src/gplx/xowa/cfgs2/Xocfg_root_.java b/400_xowa/src/gplx/xowa/apps/cfgs/old/Xocfg_root_.java similarity index 86% rename from 400_xowa/src/gplx/xowa/cfgs2/Xocfg_root_.java rename to 400_xowa/src/gplx/xowa/apps/cfgs/old/Xocfg_root_.java index 864afdde9..b481a4699 100644 --- a/400_xowa/src/gplx/xowa/cfgs2/Xocfg_root_.java +++ b/400_xowa/src/gplx/xowa/apps/cfgs/old/Xocfg_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.cfgs2; import gplx.*; import gplx.xowa.*; +package gplx.xowa.apps.cfgs.old; import gplx.*; import gplx.xowa.*; import gplx.xowa.apps.*; import gplx.xowa.apps.cfgs.*; public class Xocfg_root_ { public static final byte Tid_app = 0, Tid_wiki = 1, Tid_ns = 2; } diff --git a/400_xowa/src/gplx/xowa/cfgs2/Xocfg_tab_btn_mgr.java b/400_xowa/src/gplx/xowa/apps/cfgs/old/Xocfg_tab_btn_mgr.java similarity index 89% rename from 400_xowa/src/gplx/xowa/cfgs2/Xocfg_tab_btn_mgr.java rename to 400_xowa/src/gplx/xowa/apps/cfgs/old/Xocfg_tab_btn_mgr.java index 1d24fea4a..2e9414d77 100644 --- a/400_xowa/src/gplx/xowa/cfgs2/Xocfg_tab_btn_mgr.java +++ b/400_xowa/src/gplx/xowa/apps/cfgs/old/Xocfg_tab_btn_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.cfgs2; import gplx.*; import gplx.xowa.*; -import gplx.xowa.gui.views.*; +package gplx.xowa.apps.cfgs.old; import gplx.*; import gplx.xowa.*; import gplx.xowa.apps.*; import gplx.xowa.apps.cfgs.*; +import gplx.xowa.guis.views.*; public class Xocfg_tab_btn_mgr implements GfoInvkAble, GfoEvMgrOwner { public Xocfg_tab_btn_mgr() { evMgr = GfoEvMgr.new_(this); @@ -31,21 +31,21 @@ public class Xocfg_tab_btn_mgr implements GfoInvkAble, GfoEvMgrOwner { public int Text_max_chars() {return text_max_chars;} public Xocfg_tab_btn_mgr Text_max_chars_(int v) {text_max_chars = v; return this;} private int text_max_chars = 40; public boolean Hide_if_one() {return hide_if_one;} public Xocfg_tab_btn_mgr Hide_if_one_(boolean v) {hide_if_one = v; return this;} private boolean hide_if_one; public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { - if (ctx.Match(k, Invk_place_on_top)) return Yn.Xto_str(place_on_top); + if (ctx.Match(k, Invk_place_on_top)) return Yn.To_str(place_on_top); else if (ctx.Match(k, Invk_place_on_top_)) {place_on_top = m.ReadYn("v"); GfoEvMgr_.PubVal(this, Evt_place_on_top_changed, place_on_top);} - else if (ctx.Match(k, Invk_curved)) return Yn.Xto_str(curved); + else if (ctx.Match(k, Invk_curved)) return Yn.To_str(curved); else if (ctx.Match(k, Invk_curved_)) {curved = m.ReadYn("v"); GfoEvMgr_.PubVal(this, Evt_curved_changed, curved);} else if (ctx.Match(k, Invk_height)) return height; else if (ctx.Match(k, Invk_height_)) {height = m.ReadInt("v"); GfoEvMgr_.PubVal(this, Evt_height_changed, height);} - else if (ctx.Match(k, Invk_close_visible)) return Yn.Xto_str(close_visible); + else if (ctx.Match(k, Invk_close_visible)) return Yn.To_str(close_visible); else if (ctx.Match(k, Invk_close_visible_)) {close_visible = m.ReadYn("v"); GfoEvMgr_.PubVal(this, Evt_close_visible_changed, close_visible);} - else if (ctx.Match(k, Invk_unselected_close_visible)) return Yn.Xto_str(unselected_close_visible); + else if (ctx.Match(k, Invk_unselected_close_visible)) return Yn.To_str(unselected_close_visible); else if (ctx.Match(k, Invk_unselected_close_visible_)) {unselected_close_visible = m.ReadYn("v"); GfoEvMgr_.PubVal(this, Evt_unselected_close_visible_changed, unselected_close_visible);} else if (ctx.Match(k, Invk_text_min_chars)) return text_min_chars; else if (ctx.Match(k, Invk_text_min_chars_)) {text_min_chars = m.ReadInt("v"); GfoEvMgr_.PubVal(this, Evt_text_min_chars_changed, text_min_chars);} else if (ctx.Match(k, Invk_text_max_chars)) return text_max_chars; else if (ctx.Match(k, Invk_text_max_chars_)) {text_max_chars = m.ReadInt("v"); GfoEvMgr_.PubVal(this, Evt_text_max_chars_changed, text_max_chars);} - else if (ctx.Match(k, Invk_hide_if_one)) return Yn.Xto_str(hide_if_one); + else if (ctx.Match(k, Invk_hide_if_one)) return Yn.To_str(hide_if_one); else if (ctx.Match(k, Invk_hide_if_one_)) {hide_if_one = m.ReadYn("v"); GfoEvMgr_.PubVal(this, Evt_hide_if_one_changed, hide_if_one);} else return GfoInvkAble_.Rv_unhandled; return this; diff --git a/400_xowa/src/gplx/xowa/cfgs2/Xocfg_tab_mgr.java b/400_xowa/src/gplx/xowa/apps/cfgs/old/Xocfg_tab_mgr.java similarity index 90% rename from 400_xowa/src/gplx/xowa/cfgs2/Xocfg_tab_mgr.java rename to 400_xowa/src/gplx/xowa/apps/cfgs/old/Xocfg_tab_mgr.java index c67108359..6ae281f4f 100644 --- a/400_xowa/src/gplx/xowa/cfgs2/Xocfg_tab_mgr.java +++ b/400_xowa/src/gplx/xowa/apps/cfgs/old/Xocfg_tab_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.cfgs2; import gplx.*; import gplx.xowa.*; +package gplx.xowa.apps.cfgs.old; import gplx.*; import gplx.xowa.*; import gplx.xowa.apps.*; import gplx.xowa.apps.cfgs.*; public class Xocfg_tab_mgr implements GfoInvkAble { public Xocfg_tab_new_mgr New_mgr() {return new_mgr;} private Xocfg_tab_new_mgr new_mgr = new Xocfg_tab_new_mgr(); public Xocfg_tab_btn_mgr Btn_mgr() {return btn_mgr;} private Xocfg_tab_btn_mgr btn_mgr = new Xocfg_tab_btn_mgr(); diff --git a/400_xowa/src/gplx/xowa/cfgs2/Xocfg_tab_new_mgr.java b/400_xowa/src/gplx/xowa/apps/cfgs/old/Xocfg_tab_new_mgr.java similarity index 93% rename from 400_xowa/src/gplx/xowa/cfgs2/Xocfg_tab_new_mgr.java rename to 400_xowa/src/gplx/xowa/apps/cfgs/old/Xocfg_tab_new_mgr.java index ebb570e72..4a5577c2f 100644 --- a/400_xowa/src/gplx/xowa/cfgs2/Xocfg_tab_new_mgr.java +++ b/400_xowa/src/gplx/xowa/apps/cfgs/old/Xocfg_tab_new_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.cfgs2; import gplx.*; import gplx.xowa.*; +package gplx.xowa.apps.cfgs.old; import gplx.*; import gplx.xowa.*; import gplx.xowa.apps.*; import gplx.xowa.apps.cfgs.*; public class Xocfg_tab_new_mgr implements GfoInvkAble { public byte Insert_pos() {return insert_pos;} private byte insert_pos = Xocfg_new_tab_pos.Tid_cur_nxt; public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { diff --git a/400_xowa/src/gplx/xowa/apps/fmtrs/Xoa_fmtr_itm.java b/400_xowa/src/gplx/xowa/apps/fmtrs/Xoa_fmtr_itm.java index 7d9e3ee5d..a89d1c388 100644 --- a/400_xowa/src/gplx/xowa/apps/fmtrs/Xoa_fmtr_itm.java +++ b/400_xowa/src/gplx/xowa/apps/fmtrs/Xoa_fmtr_itm.java @@ -35,7 +35,7 @@ public class Xoa_fmtr_itm implements GfoInvkAble { eval_mgr.Invk_(itm_invk); fmtr.Bld_bfr(bfr, Bry_.Ary_empty); } - return bfr.Xto_str_and_clear(); + return bfr.To_str_and_clear(); } public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { if (ctx.Match(k, Invk_src)) return src; diff --git a/400_xowa/src/gplx/xowa/apps/fmtrs/Xoa_fmtr_itm_tst.java b/400_xowa/src/gplx/xowa/apps/fmtrs/Xoa_fmtr_itm_tst.java index efc6c0f12..e76220951 100644 --- a/400_xowa/src/gplx/xowa/apps/fmtrs/Xoa_fmtr_itm_tst.java +++ b/400_xowa/src/gplx/xowa/apps/fmtrs/Xoa_fmtr_itm_tst.java @@ -31,7 +31,7 @@ class Xoa_fmtr_itm_fxt { app = Xoa_app_fxt.app_(); Xoa_app_fxt.wiki_tst_(app); // create enwiki itm = new Xoa_fmtr_itm(app); - GfsCore._.MsgParser_(gplx.langs.gfss.Gfs_msg_bldr._); + GfsCore.Instance.MsgParser_(gplx.langs.gfs.Gfs_msg_bldr.Instance); } public Xoa_fmtr_itm_fxt Init_src(String v) {itm.Src_(v); return this;} public Xoa_fmtr_itm_fxt Init_fmt(String v) {itm.Fmt_(Bry_.new_a7(v)); return this;} diff --git a/400_xowa/src/gplx/xowa/apps/fmtrs/Xoa_fmtr_sort_mgr.java b/400_xowa/src/gplx/xowa/apps/fmtrs/Xoa_fmtr_sort_mgr.java index b61066931..e9b3282a7 100644 --- a/400_xowa/src/gplx/xowa/apps/fmtrs/Xoa_fmtr_sort_mgr.java +++ b/400_xowa/src/gplx/xowa/apps/fmtrs/Xoa_fmtr_sort_mgr.java @@ -17,7 +17,7 @@ along with this program. If not, see . */ package gplx.xowa.apps.fmtrs; import gplx.*; import gplx.xowa.*; import gplx.xowa.apps.*; public class Xoa_fmtr_sort_mgr implements GfoInvkAble { - private Ordered_hash itms = Ordered_hash_.new_(); + private Ordered_hash itms = Ordered_hash_.New(); private Xoa_fmtr_sort_wkr wkr = new Xoa_fmtr_sort_wkr(); private Gfo_sort_able sort_able; public Xoa_fmtr_sort_mgr(Gfo_sort_able sort_able) {this.sort_able = sort_able;} diff --git a/400_xowa/src/gplx/xowa/apps/fsys/Xoa_fsys_mgr.java b/400_xowa/src/gplx/xowa/apps/fsys/Xoa_fsys_mgr.java index c5c953088..007329b6b 100644 --- a/400_xowa/src/gplx/xowa/apps/fsys/Xoa_fsys_mgr.java +++ b/400_xowa/src/gplx/xowa/apps/fsys/Xoa_fsys_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.apps.fsys; import gplx.*; import gplx.xowa.*; import gplx.xowa.apps.*; -import gplx.xowa.apps.gfss.*; +import gplx.xowa.apps.gfs.*; import gplx.xowa.wikis.domains.*; public class Xoa_fsys_mgr implements GfoInvkAble { public Xoa_fsys_mgr(String plat_name, Io_url root_dir, Io_url wiki_dir, Io_url file_dir, Io_url css_dir) { diff --git a/400_xowa/src/gplx/xowa/apps/gfs/Xoa_gfs_bldr.java b/400_xowa/src/gplx/xowa/apps/gfs/Xoa_gfs_bldr.java new file mode 100644 index 000000000..4e9b3b19f --- /dev/null +++ b/400_xowa/src/gplx/xowa/apps/gfs/Xoa_gfs_bldr.java @@ -0,0 +1,89 @@ +/* +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.apps.gfs; import gplx.*; import gplx.xowa.*; import gplx.xowa.apps.*; +public class Xoa_gfs_bldr { + public Bry_bfr Bfr() {return bfr;} private Bry_bfr bfr = Bry_bfr.new_(); + public byte[] Xto_bry() {return bfr.To_bry_and_clear();} + public Xoa_gfs_bldr Add_byte(byte b) {bfr.Add_byte(b); return this;} + public Xoa_gfs_bldr Add_blob(byte[] bry) {bfr.Add(bry); return this;} + public Xoa_gfs_bldr Add_proc_init_many(String... ary) {return Add_proc_core_many(false, ary);} + public Xoa_gfs_bldr Add_proc_init_one(String itm) {return Add_proc_core_many(false, itm);} + public Xoa_gfs_bldr Add_proc_cont_one(String itm) {return Add_proc_core_many(true, itm);} + public Xoa_gfs_bldr Add_proc_cont_many(String... ary) {return Add_proc_core_many(true, ary);} + Xoa_gfs_bldr Add_proc_core_many(boolean cont, String... ary) { + int ary_len = ary.length; + for (int i = 0; i < ary_len; i++) { + if (i != 0 || cont) bfr.Add_byte(Byte_ascii.Dot); + bfr.Add_str(ary[i]); + } + return this; + } + public Xoa_gfs_bldr Add_indent(int i) {bfr.Add_byte_repeat(Byte_ascii.Space, i * 2); return this;} + public Xoa_gfs_bldr Add_parens_str(String v) {return Add_parens_str(Bry_.new_u8(v));} + public Xoa_gfs_bldr Add_parens_str(byte[] v) {return this.Add_paren_bgn().Add_arg_str(v).Add_paren_end();} + public Xoa_gfs_bldr Add_parens_str_many(String... ary) { + this.Add_paren_bgn(); + int len = ary.length; + for (int i = 0; i < len; i++) { + if (i != 0) this.Add_comma(); + this.Add_arg_str(Bry_.new_u8(ary[i])); + } + this.Add_paren_end(); + return this; + } + public Xoa_gfs_bldr Add_arg_int(int v) {bfr.Add_int_variable(v); return this;} + public Xoa_gfs_bldr Add_arg_yn(boolean v) {Add_quote_0(); bfr.Add_byte(v ? Byte_ascii.Ltr_y : Byte_ascii.Ltr_n); Add_quote_0(); return this;} + public Xoa_gfs_bldr Add_arg_str(byte[] v) {bfr.Add_byte(Byte_ascii.Apos); Add_str_escape_apos(bfr, v); bfr.Add_byte(Byte_ascii.Apos); return this;} + public Xoa_gfs_bldr Add_indent() {bfr.Add_byte(Byte_ascii.Space).Add_byte(Byte_ascii.Space); return this;} + public Xoa_gfs_bldr Add_nl() {bfr.Add_byte_nl(); return this;} + public Xoa_gfs_bldr Add_comma() {bfr.Add_byte(Byte_ascii.Comma).Add_byte(Byte_ascii.Space); return this;} + public Xoa_gfs_bldr Add_curly_bgn_nl() {bfr.Add_byte(Byte_ascii.Space).Add_byte(Byte_ascii.Curly_bgn).Add_byte_nl(); return this;} + public Xoa_gfs_bldr Add_curly_end_nl() {bfr.Add_byte(Byte_ascii.Curly_end).Add_byte_nl(); return this;} + public Xoa_gfs_bldr Add_paren_bgn() {bfr.Add_byte(Byte_ascii.Paren_bgn); return this;} + public Xoa_gfs_bldr Add_paren_end() {bfr.Add_byte(Byte_ascii.Paren_end); return this;} + public Xoa_gfs_bldr Add_quote_xtn_bgn() {bfr.Add(Bry_xquote_bgn); return this;} + public Xoa_gfs_bldr Add_quote_xtn_end() {bfr.Add(Bry_xquote_end); return this;} + public Xoa_gfs_bldr Add_quote_xtn_apos_bgn() {bfr.Add_byte(Byte_ascii.Paren_bgn).Add_byte(Byte_ascii.Apos).Add_byte(Byte_ascii.Nl); return this;} + public Xoa_gfs_bldr Add_quote_xtn_apos_end() {bfr.Add_byte(Byte_ascii.Apos).Add_byte(Byte_ascii.Paren_end).Add_byte(Byte_ascii.Semic).Add_byte(Byte_ascii.Nl); return this;} + public Xoa_gfs_bldr Add_quote_0() {bfr.Add_byte(Byte_ascii.Apos); return this;} + public Xoa_gfs_bldr Add_term_nl() {bfr.Add(Bry_semic_nl); return this;} + public Xoa_gfs_bldr Add_eq_str(String k, byte[] v) { + bfr.Add_str(k); + bfr.Add(Bry_eq); + bfr.Add_byte_apos(); + bfr.Add(v); + bfr.Add_byte_apos(); + bfr.Add(Bry_semic_nl); + return this; + } + private static final byte[] Bry_eq = Bry_.new_a7(" = "), Bry_semic_nl = Bry_.new_a7(";\n"); + private void Add_str_escape_apos(Bry_bfr bfr, byte[] src) { + int len = src.length; + for (int i = 0; i < len; i++) { + byte b = src[i]; + if (b == Byte_ascii.Apos) + bfr.Add_byte(Byte_ascii.Apos).Add_byte(Byte_ascii.Apos); + else + bfr.Add_byte(b); + } + } + public static final byte[] + Bry_xquote_bgn = Bry_.new_a7("<:['\n") + , Bry_xquote_end = Bry_.new_a7("']:>\n") + ; +} diff --git a/400_xowa/src/gplx/xowa/apps/gfs/Xoa_gfs_mgr.java b/400_xowa/src/gplx/xowa/apps/gfs/Xoa_gfs_mgr.java new file mode 100644 index 000000000..3855ad6e0 --- /dev/null +++ b/400_xowa/src/gplx/xowa/apps/gfs/Xoa_gfs_mgr.java @@ -0,0 +1,81 @@ +/* +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.apps.gfs; import gplx.*; import gplx.xowa.*; import gplx.xowa.apps.*; +import gplx.langs.gfs.*; +import gplx.xowa.users.*; import gplx.xowa.apps.fsys.*; +public class Xoa_gfs_mgr implements GfoInvkAble, GfoInvkRootWkr { + private final Xou_fsys_mgr usr_fsys_mgr; + public Xoa_gfs_mgr(GfoInvkAble root_invk, Xoa_fsys_mgr app_fsys_mgr, Xou_fsys_mgr usr_fsys_mgr) { + this.root_invk = root_invk; this.app_fsys_mgr = app_fsys_mgr; this.usr_fsys_mgr = usr_fsys_mgr; + GfsCore.Instance.AddCmd(root_invk, Xoae_app.Invk_app); + GfsCore.Instance.AddCmd(root_invk, Xoae_app.Invk_xowa); + } + public GfoInvkAble Root_invk() {return root_invk;} private final GfoInvkAble root_invk; + public Xoa_fsys_mgr App_fsys_mgr() {return app_fsys_mgr;} private final Xoa_fsys_mgr app_fsys_mgr; + public Xoa_app_eval Eval_mgr() {return eval_mgr;} private final Xoa_app_eval eval_mgr = new Xoa_app_eval(); + public Gfs_wtr Wtr() {return wtr;} private final Gfs_wtr wtr = new Gfs_wtr(); + public void Run_url(Io_url url) { + Run_url_for(GfsCore.Instance.Root(), url); + Gfo_usr_dlg_.Instance.Log_wkr().Log_to_session_fmt("gfs.done: ~{0}", url.Raw()); + } + public void Run_url_for(GfoInvkAble invk, Io_url url) { + String raw = Io_mgr.Instance.LoadFilStr_args(url).MissingIgnored_().Exec(); if (String_.Len_eq_0(raw)) return; + Run_str_for(invk, raw); + } + public Object Run_str(String raw) {return Run_str_for(GfsCore.Instance.Root(), raw);} + public Object Run_str_for(GfoInvkAble invk, String raw) {return Run_str_for(invk, Xoa_gfs_mgr_.Parse_to_msg(raw));} + public Object Run_str_for(GfoInvkAble invk, GfoMsg root_msg) { + try { + Object rv = null; + GfsCtx ctx = GfsCtx.new_().Fail_if_unhandled_(Fail_if_unhandled).Usr_dlg_(Gfo_usr_dlg_.Instance); + int len = root_msg.Subs_count(); + for (int i = 0; i < len; ++i) + rv = GfsCore.Instance.ExecOne_to(ctx, invk, root_msg.Subs_getAt(i)); + return rv; // return rv from last call + } catch (Exception e) { + Gfo_usr_dlg_.Instance.Warn_many("", "", "error while executing script: err=~{0}", Err_.Message_gplx_full(e)); + return GfoInvkAble_.Rv_error; + } + } + private void Run_url_by_type(String type) { + Io_url app_data_dir = usr_fsys_mgr.App_data_dir(); + Io_url url = null; + if (String_.Eq(type, "user_system_cfg")) url = app_data_dir.GenSubFil_nest("cfg", "user_system_cfg.gfs"); + else if (String_.Eq(type, "xowa_cfg_custom")) url = usr_fsys_mgr.App_data_cfg_custom_fil(); + else if (String_.Eq(type, "xowa_cfg_user")) url = usr_fsys_mgr.App_data_cfg_user_fil(); + else if (String_.Eq(type, "xowa_cfg_os")) {url = app_fsys_mgr.Bin_data_os_cfg_fil(); Xoa_gfs_mgr_.Cfg_os_assert(url);} + else if (String_.Eq(type, "xowa_cfg_app")) url = app_fsys_mgr.Cfg_app_fil(); + else throw Err_.new_wo_type("invalid gfs type", "type", type); + try {Run_url(url);} + catch (Exception e) { // gfs is corrupt; may happen if multiple XOWAs opened, and "Close all" chosen in OS; DATE:2014-07-01 + if (!String_.Eq(type, "xowa")) // check if user.gfs + Io_mgr.Instance.MoveFil(url, url.GenNewNameOnly(url.NameOnly() + "-" + DateAdp_.Now().XtoStr_fmt_yyyyMMdd_HHmmss())); // move file + Gfo_usr_dlg_.Instance.Warn_many("", "", "invalid gfs; obsoleting: src=~{0} err=~{1}", url.Raw(), Err_.Message_gplx_full(e)); + } + } + public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { + if (ctx.Match(k, Invk_run_file_by_type)) Run_url_by_type(m.ReadStr("v")); + else if (ctx.Match(k, Invk_fail_if_unhandled_)) {Fail_if_unhandled = m.ReadYn("v"); ctx.Fail_if_unhandled_(Fail_if_unhandled);} + else if (ctx.Match(k, Invk_txns)) {return GfoInvkAble_.Null;} // FUTURE: handle version for upgrades + else return GfoInvkAble_.Rv_unhandled; + return this; + } private static final String Invk_run_file_by_type = "run_file_by_type", Invk_fail_if_unhandled_ = "fail_if_unhandled_", Invk_txns = "txns"; + public static void Msg_parser_init() {GfsCore.Instance.MsgParser_(gplx.langs.gfs.Gfs_msg_bldr.Instance);} + public static final String Cfg_user_file = "xowa_user_cfg.gfs", Cfg_user_custom_file = "user_custom_cfg.gfs", Cfg_os = "xowa_cfg_os.gfs"; + public static boolean Fail_if_unhandled = false; +} diff --git a/400_xowa/src/gplx/xowa/gui/views/boots/Xog_error_data.java b/400_xowa/src/gplx/xowa/apps/gfs/Xoa_gfs_mgr_.java similarity index 53% rename from 400_xowa/src/gplx/xowa/gui/views/boots/Xog_error_data.java rename to 400_xowa/src/gplx/xowa/apps/gfs/Xoa_gfs_mgr_.java index eb161048c..171c8ccdb 100644 --- a/400_xowa/src/gplx/xowa/gui/views/boots/Xog_error_data.java +++ b/400_xowa/src/gplx/xowa/apps/gfs/Xoa_gfs_mgr_.java @@ -15,14 +15,16 @@ 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.gui.views.boots; import gplx.*; import gplx.xowa.*; import gplx.xowa.gui.*; import gplx.xowa.gui.views.*; -public class Xog_error_data { - public Xog_error_data(String full_msg, String err_details, String err_msg) { - this.full_msg = full_msg; - this.err_details = err_details; - this.err_msg = err_msg; +package gplx.xowa.apps.gfs; import gplx.*; import gplx.xowa.*; import gplx.xowa.apps.*; +import gplx.langs.gfs.*; +public class Xoa_gfs_mgr_ { + public static GfoMsg Parse_to_msg(String v) {return Gfs_msg_bldr.Instance.ParseToMsg(v);} + public static void Cfg_os_assert(Io_url orig_url) { + Io_url dflt_url = orig_url.GenNewNameOnly(orig_url.NameOnly() + "_default"); + if (!Io_mgr.Instance.ExistsFil(dflt_url)) return; // no dflt + if (!Io_mgr.Instance.ExistsFil(orig_url)) { + Io_mgr.Instance.CopyFil(dflt_url, orig_url, true); + Gfo_usr_dlg_.Instance.Log_many("", "", "xowa_cfg_os generated; url=~{0}", orig_url.Raw()); + } } - public String Full_msg() {return full_msg;} private final String full_msg; - public String Err_details() {return err_details;} private final String err_details; - public String Err_msg() {return err_msg;} private final String err_msg; } diff --git a/400_xowa/src/gplx/xowa/apps/gfss/Xoa_gfs_php_mgr.java b/400_xowa/src/gplx/xowa/apps/gfs/Xoa_gfs_php_mgr.java similarity index 92% rename from 400_xowa/src/gplx/xowa/apps/gfss/Xoa_gfs_php_mgr.java rename to 400_xowa/src/gplx/xowa/apps/gfs/Xoa_gfs_php_mgr.java index c9bc6c54d..3bb48fc77 100644 --- a/400_xowa/src/gplx/xowa/apps/gfss/Xoa_gfs_php_mgr.java +++ b/400_xowa/src/gplx/xowa/apps/gfs/Xoa_gfs_php_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.apps.gfss; import gplx.*; import gplx.xowa.*; import gplx.xowa.apps.*; +package gplx.xowa.apps.gfs; import gplx.*; import gplx.xowa.*; import gplx.xowa.apps.*; import gplx.langs.phps.*; public class Xoa_gfs_php_mgr { public static byte[] Xto_php(Bry_bfr bfr, boolean escape_backslash, byte[] src) { @@ -55,7 +55,7 @@ public class Xoa_gfs_php_mgr { break; } } - return dirty ? bfr.Xto_bry_and_clear() : src; + return dirty ? bfr.To_bry_and_clear() : src; } private static int Xto_php_swap(Bry_bfr bfr, byte[] src, int len, int pos) { if (pos >= len) throw Err_.new_wo_type("invalid gfs: tilde is last char", "src", String_.new_u8(src)); @@ -112,6 +112,6 @@ public class Xoa_gfs_php_mgr { break; } } - return bfr.Xto_bry_and_clear(); + return bfr.To_bry_and_clear(); } } diff --git a/400_xowa/src/gplx/xowa/apps/gfss/Xoa_gfs_php_mgr_tst.java b/400_xowa/src/gplx/xowa/apps/gfs/Xoa_gfs_php_mgr_tst.java similarity index 95% rename from 400_xowa/src/gplx/xowa/apps/gfss/Xoa_gfs_php_mgr_tst.java rename to 400_xowa/src/gplx/xowa/apps/gfs/Xoa_gfs_php_mgr_tst.java index 150032fe2..c770d6d3a 100644 --- a/400_xowa/src/gplx/xowa/apps/gfss/Xoa_gfs_php_mgr_tst.java +++ b/400_xowa/src/gplx/xowa/apps/gfs/Xoa_gfs_php_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.apps.gfss; import gplx.*; import gplx.xowa.*; import gplx.xowa.apps.*; +package gplx.xowa.apps.gfs; import gplx.*; import gplx.xowa.*; import gplx.xowa.apps.*; import org.junit.*; public class Xoa_gfs_php_mgr_tst { @Before public void init() {fxt.Clear();} private Xoa_gfs_php_mgr_fxt fxt = new Xoa_gfs_php_mgr_fxt(); diff --git a/400_xowa/src/gplx/xowa/apps/gfs/Xoa_gfs_wtr_.java b/400_xowa/src/gplx/xowa/apps/gfs/Xoa_gfs_wtr_.java new file mode 100644 index 000000000..a6b848045 --- /dev/null +++ b/400_xowa/src/gplx/xowa/apps/gfs/Xoa_gfs_wtr_.java @@ -0,0 +1,36 @@ +/* +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.apps.gfs; import gplx.*; import gplx.xowa.*; import gplx.xowa.apps.*; +public class Xoa_gfs_wtr_ { + public static byte[] Escape(String v) {return Escape(Bry_.new_u8(v));} + public static byte[] Escape(byte[] v) { + return Bry_find_.Find_fwd(v, Byte_ascii.Apos) == Bry_.NotFound ? v : Bry_.Replace(v, Byte_ascii.Apos_bry, Bry__apos_escaped); + } private static final byte[] Bry__apos_escaped = Bry_.new_a7("''"); + public static void Write_prop(Bry_bfr bfr, byte[] prop, byte[] val) { + bfr.Add(prop).Add(Bry__val_bgn).Add(Xoa_gfs_wtr_.Escape(val)).Add(Bry__val_end); // EX: "a_('b');\n" + } private static final byte[] Bry__val_bgn = Bry_.new_a7("_('"), Bry__val_end = Bry_.new_a7("');\n"); + public static String Write_func_chain(String... ary) { // EX: "a.b.c" + Bry_bfr bfr = Xoa_app_.Utl__bfr_mkr().Get_b128(); // Bry_bfr.try_none: simple-ops + int len = ary.length; + for (int i = 0; i < len; ++i) { + if (i != 0) bfr.Add_byte(Byte_ascii.Dot); + bfr.Add_str(ary[i]); + } + return bfr.To_str_and_rls(); + } +} diff --git a/400_xowa/src/gplx/xowa/apps/gfss/Gfs_bldr.java b/400_xowa/src/gplx/xowa/apps/gfss/Gfs_bldr.java deleted file mode 100644 index 333041448..000000000 --- a/400_xowa/src/gplx/xowa/apps/gfss/Gfs_bldr.java +++ /dev/null @@ -1,89 +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.apps.gfss; import gplx.*; import gplx.xowa.*; import gplx.xowa.apps.*; -public class Gfs_bldr { - public Bry_bfr Bfr() {return bfr;} private Bry_bfr bfr = Bry_bfr.new_(); - public byte[] Xto_bry() {return bfr.Xto_bry_and_clear();} - public Gfs_bldr Add_byte(byte b) {bfr.Add_byte(b); return this;} - public Gfs_bldr Add_blob(byte[] bry) {bfr.Add(bry); return this;} - public Gfs_bldr Add_proc_init_many(String... ary) {return Add_proc_core_many(false, ary);} - public Gfs_bldr Add_proc_init_one(String itm) {return Add_proc_core_many(false, itm);} - public Gfs_bldr Add_proc_cont_one(String itm) {return Add_proc_core_many(true, itm);} - public Gfs_bldr Add_proc_cont_many(String... ary) {return Add_proc_core_many(true, ary);} - Gfs_bldr Add_proc_core_many(boolean cont, String... ary) { - int ary_len = ary.length; - for (int i = 0; i < ary_len; i++) { - if (i != 0 || cont) bfr.Add_byte(Byte_ascii.Dot); - bfr.Add_str(ary[i]); - } - return this; - } - public Gfs_bldr Add_indent(int i) {bfr.Add_byte_repeat(Byte_ascii.Space, i * 2); return this;} - public Gfs_bldr Add_parens_str(String v) {return Add_parens_str(Bry_.new_u8(v));} - public Gfs_bldr Add_parens_str(byte[] v) {return this.Add_paren_bgn().Add_arg_str(v).Add_paren_end();} - public Gfs_bldr Add_parens_str_many(String... ary) { - this.Add_paren_bgn(); - int len = ary.length; - for (int i = 0; i < len; i++) { - if (i != 0) this.Add_comma(); - this.Add_arg_str(Bry_.new_u8(ary[i])); - } - this.Add_paren_end(); - return this; - } - public Gfs_bldr Add_arg_int(int v) {bfr.Add_int_variable(v); return this;} - public Gfs_bldr Add_arg_yn(boolean v) {Add_quote_0(); bfr.Add_byte(v ? Byte_ascii.Ltr_y : Byte_ascii.Ltr_n); Add_quote_0(); return this;} - public Gfs_bldr Add_arg_str(byte[] v) {bfr.Add_byte(Byte_ascii.Apos); Add_str_escape_apos(bfr, v); bfr.Add_byte(Byte_ascii.Apos); return this;} - public Gfs_bldr Add_indent() {bfr.Add_byte(Byte_ascii.Space).Add_byte(Byte_ascii.Space); return this;} - public Gfs_bldr Add_nl() {bfr.Add_byte_nl(); return this;} - public Gfs_bldr Add_comma() {bfr.Add_byte(Byte_ascii.Comma).Add_byte(Byte_ascii.Space); return this;} - public Gfs_bldr Add_curly_bgn_nl() {bfr.Add_byte(Byte_ascii.Space).Add_byte(Byte_ascii.Curly_bgn).Add_byte_nl(); return this;} - public Gfs_bldr Add_curly_end_nl() {bfr.Add_byte(Byte_ascii.Curly_end).Add_byte_nl(); return this;} - public Gfs_bldr Add_paren_bgn() {bfr.Add_byte(Byte_ascii.Paren_bgn); return this;} - public Gfs_bldr Add_paren_end() {bfr.Add_byte(Byte_ascii.Paren_end); return this;} - public Gfs_bldr Add_quote_xtn_bgn() {bfr.Add(Bry_xquote_bgn); return this;} - public Gfs_bldr Add_quote_xtn_end() {bfr.Add(Bry_xquote_end); return this;} - public Gfs_bldr Add_quote_xtn_apos_bgn() {bfr.Add_byte(Byte_ascii.Paren_bgn).Add_byte(Byte_ascii.Apos).Add_byte(Byte_ascii.Nl); return this;} - public Gfs_bldr Add_quote_xtn_apos_end() {bfr.Add_byte(Byte_ascii.Apos).Add_byte(Byte_ascii.Paren_end).Add_byte(Byte_ascii.Semic).Add_byte(Byte_ascii.Nl); return this;} - public Gfs_bldr Add_quote_0() {bfr.Add_byte(Byte_ascii.Apos); return this;} - public Gfs_bldr Add_term_nl() {bfr.Add(Bry_semic_nl); return this;} - public Gfs_bldr Add_eq_str(String k, byte[] v) { - bfr.Add_str(k); - bfr.Add(Bry_eq); - bfr.Add_byte_apos(); - bfr.Add(v); - bfr.Add_byte_apos(); - bfr.Add(Bry_semic_nl); - return this; - } - private static final byte[] Bry_eq = Bry_.new_a7(" = "), Bry_semic_nl = Bry_.new_a7(";\n"); - private void Add_str_escape_apos(Bry_bfr bfr, byte[] src) { - int len = src.length; - for (int i = 0; i < len; i++) { - byte b = src[i]; - if (b == Byte_ascii.Apos) - bfr.Add_byte(Byte_ascii.Apos).Add_byte(Byte_ascii.Apos); - else - bfr.Add_byte(b); - } - } - public static final byte[] - Bry_xquote_bgn = Bry_.new_a7("<:['\n") - , Bry_xquote_end = Bry_.new_a7("']:>\n") - ; -} diff --git a/400_xowa/src/gplx/xowa/apps/gfss/Xoa_gfs_mgr.java b/400_xowa/src/gplx/xowa/apps/gfss/Xoa_gfs_mgr.java deleted file mode 100644 index 9db691bda..000000000 --- a/400_xowa/src/gplx/xowa/apps/gfss/Xoa_gfs_mgr.java +++ /dev/null @@ -1,126 +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.apps.gfss; import gplx.*; import gplx.xowa.*; import gplx.xowa.apps.*; -import gplx.langs.gfss.*; -import gplx.xowa.users.*; import gplx.xowa.apps.fsys.*; -public class Xoa_gfs_mgr implements GfoInvkAble, GfoInvkRootWkr { - private final GfoInvkAble root_invk; private final Xoa_fsys_mgr app_fsys_mgr; private final Xou_fsys_mgr usr_fsys_mgr; - public Xoa_gfs_mgr(GfoInvkAble root_invk, Xoa_fsys_mgr app_fsys_mgr, Xou_fsys_mgr usr_fsys_mgr) { - this.root_invk = root_invk; this.app_fsys_mgr = app_fsys_mgr; this.usr_fsys_mgr = usr_fsys_mgr; - GfsCore._.AddCmd(root_invk, Xoae_app.Invk_app); - GfsCore._.AddCmd(root_invk, Xoae_app.Invk_xowa); - } - public GfoInvkAble Root_invk() {return root_invk;} - public Xoa_fsys_mgr App_fsys_mgr() {return app_fsys_mgr;} - public Xoa_app_eval Eval_mgr() {return eval_mgr;} private final Xoa_app_eval eval_mgr = new Xoa_app_eval(); - private void Run_url_by_type(String type) { - Io_url app_data_dir = usr_fsys_mgr.App_data_dir(); - Io_url url = null; - if (String_.Eq(type, "user_system_cfg")) url = app_data_dir.GenSubFil_nest("cfg", "user_system_cfg.gfs"); - else if (String_.Eq(type, "xowa_cfg_custom")) url = usr_fsys_mgr.App_data_cfg_custom_fil(); - else if (String_.Eq(type, "xowa_cfg_user")) url = usr_fsys_mgr.App_data_cfg_user_fil(); - else if (String_.Eq(type, "xowa_cfg_os")) {url = app_fsys_mgr.Bin_data_os_cfg_fil(); Xoa_gfs_mgr_.Cfg_os_assert(url);} - else if (String_.Eq(type, "xowa_cfg_app")) url = app_fsys_mgr.Cfg_app_fil(); - else throw Err_.new_wo_type("invalid gfs type", "type", type); - try {Run_url(url);} - catch (Exception e) { // gfs is corrupt; may happen if multiple XOWAs opened, and "Close all" chosen in OS; DATE:2014-07-01 - if (!String_.Eq(type, "xowa")) // check if user.gfs - Io_mgr.I.MoveFil(url, url.GenNewNameOnly(url.NameOnly() + "-" + DateAdp_.Now().XtoStr_fmt_yyyyMMdd_HHmmss())); // move file - Gfo_usr_dlg_.I.Warn_many("", "", "invalid gfs; obsoleting: src=~{0} err=~{1}", url.Raw(), Err_.Message_gplx_full(e)); - } - } - public GfoMsg Parse_root_msg(String v) {return gplx.langs.gfss.Gfs_msg_bldr._.ParseToMsg(v);} - public Gfs_wtr Wtr() {return wtr;} private Gfs_wtr wtr = new Gfs_wtr(); - public void Run_url(Io_url url) { - Run_url_for(GfsCore._.Root(), url); - Gfo_usr_dlg_.I.Log_wkr().Log_to_session_fmt("gfs.done: ~{0}", url.Raw()); - } - public void Run_url_for(GfoInvkAble invk, Io_url url) { - String raw = Io_mgr.I.LoadFilStr_args(url).MissingIgnored_().Exec(); if (String_.Len_eq_0(raw)) return; - Run_str_for(invk, raw); - } - public Object Run_str(String raw) {return Run_str_for(GfsCore._.Root(), raw);} - public Object Run_str_for(GfoInvkAble invk, String raw) {return Run_str_for(invk, Parse_root_msg(raw));} - public Object Run_str_for(GfoInvkAble invk, GfoMsg root_msg) { - try { - int sub_msgs_len = root_msg.Subs_count(); - GfsCtx ctx = GfsCtx.new_().Fail_if_unhandled_(Fail_if_unhandled).Usr_dlg_(Gfo_usr_dlg_.I); - Object rv = null; - for (int i = 0; i < sub_msgs_len; i++) { - GfoMsg sub_msg = root_msg.Subs_getAt(i); - rv = GfsCore._.ExecOne_to(ctx, invk, sub_msg); - } - return rv; - } catch (Exception e) { - Gfo_usr_dlg_.I.Warn_many("", "", "error while executing script: err=~{0}", Err_.Message_gplx_full(e)); - return GfoInvkAble_.Rv_error; - } - } - public GfoEvObj Get_owner_as_event_obj(String cmd) { - GfoMsg cur_msg = Parse_root_msg(cmd).Subs_getAt(0); // ignore root_msg which is "" - GfoInvkAble cur_invk = root_invk; - while (true) { - if (cur_msg.Subs_count() == 0) return (GfoEvObj)cur_invk; // terminal msg; return cur_invk - cur_invk = (GfoInvkAble)GfoInvkAble_.InvkCmd(cur_invk, cur_msg.Key()); - cur_msg = cur_msg.Subs_getAt(0); - } - } - public byte[] Build_prop_set_to_bry(Bry_bfr bfr, byte[] prop, byte[] val) {Build_prop_set(bfr, prop, val); return bfr.Xto_bry_and_clear();} - public void Build_prop_set(Bry_bfr bfr, byte[] prop, byte[] val) { - fmtr_eval_set.Bld_bfr_many(bfr, prop, Xoa_gfs_mgr.Cfg_save_escape(val)); - } private Bry_fmtr fmtr_eval_set = Bry_fmtr.new_("~{prop}_('~{val}');\n", "prop", "val"); - public byte[] Build_prop_get_to_bry(Bry_bfr bfr, byte[] prop) {Build_prop_get(bfr, prop); return bfr.Xto_bry_and_clear();} - public void Build_prop_get(Bry_bfr bfr, byte[] prop) { - fmtr_eval_get.Bld_bfr_many(bfr, prop); - } private Bry_fmtr fmtr_eval_get = Bry_fmtr.new_("~{prop};\n", "prop"); - static final String GRP_KEY = "Xoa_gfs_mgr"; - public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { - if (ctx.Match(k, Invk_run_file_by_type)) Run_url_by_type(m.ReadStr("v")); - else if (ctx.Match(k, Invk_fail_if_unhandled_)) {Fail_if_unhandled = m.ReadYn("v"); ctx.Fail_if_unhandled_(Fail_if_unhandled);} - else if (ctx.Match(k, Invk_txns)) {return GfoInvkAble_.Null;} // FUTURE: handle version for upgrades - else return GfoInvkAble_.Rv_unhandled; - return this; - } private static final String Invk_run_file_by_type = "run_file_by_type", Invk_fail_if_unhandled_ = "fail_if_unhandled_", Invk_txns = "txns"; - public static void Msg_parser_init() { - GfsCore._.MsgParser_(gplx.langs.gfss.Gfs_msg_bldr._); - } - public static byte[] Cfg_save_escape(String v) {return Cfg_save_escape(Bry_.new_u8(v));} - public static byte[] Cfg_save_escape(byte[] v) { - return Bry_find_.Find_fwd(v, Byte_ascii.Apos) == Bry_.NotFound ? v : Bry_.Replace(v, Bry_apos_1, Bry_apos_2); - } static final byte[] Bry_apos_1 = Bry_.new_a7("'"), Bry_apos_2 = Bry_.new_a7("''"); - public static String Build_code(String... ary) { - int len = ary.length; - for (int i = 0; i < len; i++) { - if (i != 0) Build_code_bfr.Add_byte(Byte_ascii.Dot); - Build_code_bfr.Add_str(ary[i]); - } - return Build_code_bfr.Xto_str_and_clear(); - } static final Bry_bfr Build_code_bfr = Bry_bfr.new_(); - public static final String Cfg_user_file = "xowa_user_cfg.gfs", Cfg_user_custom_file = "user_custom_cfg.gfs", Cfg_os = "xowa_cfg_os.gfs"; - public static boolean Fail_if_unhandled = false; -} -class Xoa_gfs_mgr_ { - public static void Cfg_os_assert(Io_url orig_url) { - Io_url dflt_url = orig_url.GenNewNameOnly(orig_url.NameOnly() + "_default"); - if (!Io_mgr.I.ExistsFil(dflt_url)) return; // no dflt - if (!Io_mgr.I.ExistsFil(orig_url)) { - Io_mgr.I.CopyFil(dflt_url, orig_url, true); - Gfo_usr_dlg_.I.Log_many("", "", "xowa_cfg_os generated; url=~{0}", orig_url.Raw()); - } - } -} diff --git a/400_xowa/src/gplx/xowa/apps/metas/Xoa_meta_mgr.java b/400_xowa/src/gplx/xowa/apps/metas/Xoa_meta_mgr.java index c99e4478a..aad9425e7 100644 --- a/400_xowa/src/gplx/xowa/apps/metas/Xoa_meta_mgr.java +++ b/400_xowa/src/gplx/xowa/apps/metas/Xoa_meta_mgr.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.apps.metas; import gplx.*; import gplx.xowa.*; import gplx.xowa.apps.*; -import gplx.xowa.nss.*; -import gplx.xowa.wms.sites.*; +import gplx.xowa.wikis.nss.*; +import gplx.xowa.bldrs.wms.sites.*; public class Xoa_meta_mgr { private final Xoa_app app; private final Hash_adp_bry ns__hash = Hash_adp_bry.cs(); @@ -35,10 +35,6 @@ public class Xoa_meta_mgr { } return rv; } - public void Init_by_wiki(Xow_wiki wiki) { - Core_db__assert(); - core_db.Load_extensiontag(wiki.Domain_itm(), wiki.Mw_parser_mgr().Xnde_tag_regy()); - } private void Core_db__assert() { if (core_db == null) core_db = new Site_core_db(app.Fsys_mgr().Cfg_site_meta_fil()); } diff --git a/400_xowa/src/gplx/xowa/servers/Gxw_html_server.java b/400_xowa/src/gplx/xowa/apps/servers/Gxw_html_server.java similarity index 94% rename from 400_xowa/src/gplx/xowa/servers/Gxw_html_server.java rename to 400_xowa/src/gplx/xowa/apps/servers/Gxw_html_server.java index 9a239d98d..90a718ba6 100644 --- a/400_xowa/src/gplx/xowa/servers/Gxw_html_server.java +++ b/400_xowa/src/gplx/xowa/apps/servers/Gxw_html_server.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.servers; import gplx.*; import gplx.xowa.*; +package gplx.xowa.apps.servers; import gplx.*; import gplx.xowa.*; import gplx.xowa.apps.*; import gplx.core.primitives.*; import gplx.core.js.*; import gplx.gfui.*; -import gplx.xowa.servers.tcp.*; -import gplx.xowa.servers.http.*; import gplx.xowa.gui.views.*; +import gplx.xowa.apps.servers.tcp.*; +import gplx.xowa.apps.servers.http.*; import gplx.xowa.guis.views.*; public class Gxw_html_server implements Gxw_html { private Xosrv_socket_wtr wtr; private Gfo_usr_dlg usr_dlg; private final Js_wtr js_wtr = new Js_wtr(); diff --git a/400_xowa/src/gplx/xowa/servers/http/File_retrieve_mode.java b/400_xowa/src/gplx/xowa/apps/servers/http/File_retrieve_mode.java similarity index 90% rename from 400_xowa/src/gplx/xowa/servers/http/File_retrieve_mode.java rename to 400_xowa/src/gplx/xowa/apps/servers/http/File_retrieve_mode.java index da124b65c..4fe563a8c 100644 --- a/400_xowa/src/gplx/xowa/servers/http/File_retrieve_mode.java +++ b/400_xowa/src/gplx/xowa/apps/servers/http/File_retrieve_mode.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.servers.http; import gplx.*; import gplx.xowa.*; import gplx.xowa.servers.*; +package gplx.xowa.apps.servers.http; import gplx.*; import gplx.xowa.*; import gplx.xowa.apps.*; import gplx.xowa.apps.servers.*; class File_retrieve_mode { public static String Xto_str(byte v) { switch (v) { diff --git a/400_xowa/src/gplx/xowa/servers/http/Http_data__client.java b/400_xowa/src/gplx/xowa/apps/servers/http/Http_data__client.java similarity index 88% rename from 400_xowa/src/gplx/xowa/servers/http/Http_data__client.java rename to 400_xowa/src/gplx/xowa/apps/servers/http/Http_data__client.java index 03e7111fd..2e2f00f76 100644 --- a/400_xowa/src/gplx/xowa/servers/http/Http_data__client.java +++ b/400_xowa/src/gplx/xowa/apps/servers/http/Http_data__client.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.servers.http; import gplx.*; import gplx.xowa.*; import gplx.xowa.servers.*; +package gplx.xowa.apps.servers.http; import gplx.*; import gplx.xowa.*; import gplx.xowa.apps.*; import gplx.xowa.apps.servers.*; import gplx.langs.jsons.*; public class Http_data__client { public Http_data__client(byte[] server_host, String ip_address_str) { diff --git a/400_xowa/src/gplx/xowa/servers/http/Http_server_mgr.java b/400_xowa/src/gplx/xowa/apps/servers/http/Http_server_mgr.java similarity index 91% rename from 400_xowa/src/gplx/xowa/servers/http/Http_server_mgr.java rename to 400_xowa/src/gplx/xowa/apps/servers/http/Http_server_mgr.java index 03b4e669f..d31c12a84 100644 --- a/400_xowa/src/gplx/xowa/servers/http/Http_server_mgr.java +++ b/400_xowa/src/gplx/xowa/apps/servers/http/Http_server_mgr.java @@ -32,9 +32,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.servers.http; import gplx.*; import gplx.xowa.*; import gplx.xowa.servers.*; +package gplx.xowa.apps.servers.http; import gplx.*; import gplx.xowa.*; import gplx.xowa.apps.*; import gplx.xowa.apps.servers.*; import gplx.core.threads.*; import gplx.core.net.*; import gplx.core.primitives.*; import gplx.langs.jsons.*; import gplx.langs.htmls.encoders.*; -import gplx.xowa.pages.*; +import gplx.xowa.wikis.pages.*; public class Http_server_mgr implements GfoInvkAble { private final Object thread_lock = new Object(); private final Gfo_usr_dlg usr_dlg; @@ -53,7 +53,7 @@ public class Http_server_mgr implements GfoInvkAble { public int Port() {return port;} public Http_server_mgr Port_(int v) {port = v; return this;} private int port = 8080; public Http_server_wkr_pool Wkr_pool() {return wkr_pool;} private final Http_server_wkr_pool wkr_pool = new Http_server_wkr_pool(); public Int_pool Uid_pool() {return uid_pool;} private final Int_pool uid_pool = new Int_pool(); - public String Home() {return home;} public void Home_(String v) {home = v;} private String home = "home/wiki/Main_Page"; + public byte[] Home() {return home;} public void Home_(byte[] v) {home = Bry_.Add(Byte_ascii.Slash_bry, v);} private byte[] home = Bry_.new_a7("/home/wiki/Main_Page"); private void Init_gui() { // create a shim gui to automatically handle default XOWA gui JS calls if (init_gui_done) return; init_gui_done = true; @@ -81,7 +81,7 @@ public class Http_server_mgr implements GfoInvkAble { public void Run() { if (wkr == null) wkr = new Http_server_socket(this); Thread_adp_.invk_("thread:xowa.http_server.server", wkr, Http_server_socket.Invk_run).Start(); - Note("HTTP Server started: Navigate to http://localhost:" + Int_.Xto_str(port)); + Note("HTTP Server started: Navigate to http://localhost:" + Int_.To_str(port)); } public void Run_xowa_cmd(Xoae_app app, String url_encoded_str) { Url_encoder url_converter = Url_encoder.new_http_url_(); // create instance for each call @@ -104,14 +104,14 @@ public class Http_server_mgr implements GfoInvkAble { wiki.Parser_mgr().Parse(page, false); } page.Html_data().Head_mgr().Itm__server().Init_by_http(data__client).Enabled_y_(); - byte[] output_html = wiki.Html_mgr().Page_wtr_mgr().Gen(page, Xopg_view_mode.Tid_read); // write html from page data + byte[] output_html = wiki.Html_mgr().Page_wtr_mgr().Gen(page, Xopg_page_.Tid_read); // write html from page data switch (retrieve_mode) { case File_retrieve_mode.Mode_skip: break; // noop case File_retrieve_mode.Mode_async_server: app.Gui_mgr().Browser_win().Page__async__bgn(page.Tab_data().Tab()); break; case File_retrieve_mode.Mode_wait: if (page.File_queue().Count() > 0) { app.Gui_mgr().Browser_win().Active_tab().Async(); - output_html = wiki.Html_mgr().Page_wtr_mgr().Gen(page, Xopg_view_mode.Tid_read); + output_html = wiki.Html_mgr().Page_wtr_mgr().Gen(page, Xopg_page_.Tid_read); } break; } @@ -125,7 +125,7 @@ public class Http_server_mgr implements GfoInvkAble { public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { if (ctx.Match(k, Invk_port)) return port; else if (ctx.Match(k, Invk_port_)) Port_(m.ReadInt("v")); - else if (ctx.Match(k, Invk_running)) return Yn.Xto_str(running); + else if (ctx.Match(k, Invk_running)) return Yn.To_str(running); else if (ctx.Match(k, Invk_running_)) Running_(m.ReadYn("v")); else if (ctx.Match(k, Invk_retrieve_mode)) return File_retrieve_mode.Xto_str(retrieve_mode); else if (ctx.Match(k, Invk_retrieve_mode_)) retrieve_mode = File_retrieve_mode.Xto_byte(m.ReadStr("v")); diff --git a/400_xowa/src/gplx/xowa/servers/http/Http_server_socket.java b/400_xowa/src/gplx/xowa/apps/servers/http/Http_server_socket.java similarity index 89% rename from 400_xowa/src/gplx/xowa/servers/http/Http_server_socket.java rename to 400_xowa/src/gplx/xowa/apps/servers/http/Http_server_socket.java index 4547f6cd4..0109bc2e2 100644 --- a/400_xowa/src/gplx/xowa/servers/http/Http_server_socket.java +++ b/400_xowa/src/gplx/xowa/apps/servers/http/Http_server_socket.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.servers.http; import gplx.*; import gplx.xowa.*; import gplx.xowa.servers.*; +package gplx.xowa.apps.servers.http; import gplx.*; import gplx.xowa.*; import gplx.xowa.apps.*; import gplx.xowa.apps.servers.*; import gplx.core.net.*; import gplx.core.threads.*; import gplx.core.primitives.*; class Http_server_socket implements GfoInvkAble { private final Http_server_mgr server_mgr; @@ -34,7 +34,7 @@ class Http_server_socket implements GfoInvkAble { if (server_socket == null) server_socket = new Server_socket_adp__base().Ctor(server_mgr.Port()); while (true) { // listen for incoming requests Socket_adp client_socket = server_socket.Accept(); // NOTE: blocking call - int wkr_uid = 0; + int wkr_uid = -1; // NOTE: default to -1 to handle cases when http_server.max_clients is not set; DATE:2015-10-11 Http_server_wkr_pool wkr_pool = server_mgr.Wkr_pool(); if (wkr_pool.Enabled()) { Http_server_wtr server_wtr = server_mgr.Server_wtr(); diff --git a/400_xowa/src/gplx/xowa/servers/http/Http_server_wkr_.java b/400_xowa/src/gplx/xowa/apps/servers/http/Http_server_wkr_.java similarity index 85% rename from 400_xowa/src/gplx/xowa/servers/http/Http_server_wkr_.java rename to 400_xowa/src/gplx/xowa/apps/servers/http/Http_server_wkr_.java index 676961c3d..aa6d7707c 100644 --- a/400_xowa/src/gplx/xowa/servers/http/Http_server_wkr_.java +++ b/400_xowa/src/gplx/xowa/apps/servers/http/Http_server_wkr_.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.servers.http; import gplx.*; import gplx.xowa.*; import gplx.xowa.servers.*; +package gplx.xowa.apps.servers.http; import gplx.*; import gplx.xowa.*; import gplx.xowa.apps.*; import gplx.xowa.apps.servers.*; import gplx.xowa.wikis.domains.*; import gplx.xowa.langs.*; class Http_server_wkr_ { public static String Assert_main_page(Xoae_app app, String req) { @@ -28,7 +28,7 @@ class Http_server_wkr_ { if (req_array.length < 3) return req; // shouldn't happen; EX: "localhost:8080wiki" byte[] wiki_domain = Bry_.new_u8(req_array[1]); Xow_domain_itm domain_itm = Xow_domain_itm_.parse(wiki_domain); - if (domain_itm.Domain_type_id() == Xow_domain_type_.Int__other && domain_itm.Lang_actl_itm().Id() == Xol_lang_itm_.Id__intl) return req; + if (domain_itm.Domain_type_id() == Xow_domain_tid_.Int__other && domain_itm.Lang_actl_itm().Id() == Xol_lang_stub_.Id__intl) return req; Xowe_wiki wiki = app.Wiki_mgr().Get_by_key_or_make(wiki_domain); wiki.Init_assert(); String main_page = String_.new_u8(wiki.Props().Main_page()); diff --git a/400_xowa/src/gplx/xowa/servers/http/Http_server_wkr__tst.java b/400_xowa/src/gplx/xowa/apps/servers/http/Http_server_wkr__tst.java similarity index 92% rename from 400_xowa/src/gplx/xowa/servers/http/Http_server_wkr__tst.java rename to 400_xowa/src/gplx/xowa/apps/servers/http/Http_server_wkr__tst.java index b56df6242..d60f44b62 100644 --- a/400_xowa/src/gplx/xowa/servers/http/Http_server_wkr__tst.java +++ b/400_xowa/src/gplx/xowa/apps/servers/http/Http_server_wkr__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.servers.http; import gplx.*; import gplx.xowa.*; import gplx.xowa.servers.*; +package gplx.xowa.apps.servers.http; import gplx.*; import gplx.xowa.*; import gplx.xowa.apps.*; import gplx.xowa.apps.servers.*; import org.junit.*; public class Http_server_wkr__tst { @Before public void init() {fxt.Clear();} private Http_server_wkr__fxt fxt = new Http_server_wkr__fxt(); diff --git a/400_xowa/src/gplx/xowa/servers/http/Http_server_wkr_pool.java b/400_xowa/src/gplx/xowa/apps/servers/http/Http_server_wkr_pool.java similarity index 84% rename from 400_xowa/src/gplx/xowa/servers/http/Http_server_wkr_pool.java rename to 400_xowa/src/gplx/xowa/apps/servers/http/Http_server_wkr_pool.java index 8454e5781..6670c9bb5 100644 --- a/400_xowa/src/gplx/xowa/servers/http/Http_server_wkr_pool.java +++ b/400_xowa/src/gplx/xowa/apps/servers/http/Http_server_wkr_pool.java @@ -15,10 +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.servers.http; import gplx.*; import gplx.xowa.*; import gplx.xowa.servers.*; +package gplx.xowa.apps.servers.http; import gplx.*; import gplx.xowa.*; import gplx.xowa.apps.*; import gplx.xowa.apps.servers.*; import gplx.core.primitives.*; public class Http_server_wkr_pool { - private final Ordered_hash hash = Ordered_hash_.new_(); private final Int_obj_ref hash_key = Int_obj_ref.neg1_(); + private final Ordered_hash hash = Ordered_hash_.New(); private final Int_obj_ref hash_key = Int_obj_ref.neg1_(); public boolean Enabled() {return max != 0;} public int Max() {return max;} private int max; public int Timeout() {return timeout;} private int timeout; diff --git a/400_xowa/src/gplx/xowa/servers/http/Http_server_wkr_v1.java b/400_xowa/src/gplx/xowa/apps/servers/http/Http_server_wkr_v1.java similarity index 94% rename from 400_xowa/src/gplx/xowa/servers/http/Http_server_wkr_v1.java rename to 400_xowa/src/gplx/xowa/apps/servers/http/Http_server_wkr_v1.java index 01ffe37ee..34dae2918 100644 --- a/400_xowa/src/gplx/xowa/servers/http/Http_server_wkr_v1.java +++ b/400_xowa/src/gplx/xowa/apps/servers/http/Http_server_wkr_v1.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.servers.http; import gplx.*; import gplx.xowa.*; import gplx.xowa.servers.*; +package gplx.xowa.apps.servers.http; import gplx.*; import gplx.xowa.*; import gplx.xowa.apps.*; import gplx.xowa.apps.servers.*; import gplx.core.net.*; import gplx.core.threads.*; import gplx.langs.htmls.encoders.*; import java.io.*; import java.net.*; @@ -44,10 +44,10 @@ class Http_server_wkr_v1 implements Runnable{ if(!req.contains("%file%")){ if(req.equals("/")) { // no page; EX:"localhost:8080" vs "localhost:8080/en.wikipedia.org/wiki/Earth" - String home_url = app.Http_server().Home(); err_line = "08"; + String home_url = String_.new_u8(app.Http_server().Home()); err_line = "08"; if (String_.Has_at_bgn(home_url, "file://")) { Io_url file_url = Io_url_.http_any_(home_url, Op_sys.Cur().Tid_is_wnt()); err_line = "09"; - String page_html = Io_mgr.I.LoadFilStr(file_url); err_line = "10"; + String page_html = Io_mgr.Instance.LoadFilStr(file_url); err_line = "10"; Write_page(dos, page_html, app_root_dir, wiki_domain); err_line = "11"; } else { diff --git a/400_xowa/src/gplx/xowa/servers/http/Http_server_wkr_v2.java b/400_xowa/src/gplx/xowa/apps/servers/http/Http_server_wkr_v2.java similarity index 91% rename from 400_xowa/src/gplx/xowa/servers/http/Http_server_wkr_v2.java rename to 400_xowa/src/gplx/xowa/apps/servers/http/Http_server_wkr_v2.java index b6c1c7942..c837d1403 100644 --- a/400_xowa/src/gplx/xowa/servers/http/Http_server_wkr_v2.java +++ b/400_xowa/src/gplx/xowa/apps/servers/http/Http_server_wkr_v2.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.servers.http; import gplx.*; import gplx.xowa.*; import gplx.xowa.servers.*; +package gplx.xowa.apps.servers.http; import gplx.*; import gplx.xowa.*; import gplx.xowa.apps.*; import gplx.xowa.apps.servers.*; import gplx.ios.*; import gplx.core.primitives.*; import gplx.core.net.*; import gplx.langs.htmls.encoders.*; import gplx.xowa.apps.*; -import gplx.xowa.html.js.*; +import gplx.xowa.htmls.js.*; class Http_server_wkr_v2 implements GfoInvkAble { private final int uid; private final Http_server_mgr server_mgr; @@ -52,7 +52,7 @@ class Http_server_wkr_v2 implements GfoInvkAble { request = request_parser.Parse(client_rdr); this.data__client = new Http_data__client(request.Host(), socket.Ip_address()); byte[] url_bry = request.Url(); - if (Bry_.Eq(url_bry, Url__home)) url_bry = Url__home__main_page; // "localhost:8080" comes thru as url of "/"; transform to "home/wiki/Main_Page" + if (Bry_.Eq(url_bry, Url__home)) url_bry = server_mgr.Home(); // "localhost:8080" comes thru as url of "/"; transform to custom home page; DATE:2015-10-11 switch (request.Type()) { case Http_request_itm.Type_get: Process_get(request, url_bry); break; case Http_request_itm.Type_post: Process_post(request); break; @@ -64,8 +64,10 @@ class Http_server_wkr_v2 implements GfoInvkAble { server_wtr.Write_str_w_nl(String_.Format("failed to process request;\nrequest={0}\nerr_msg={1}", request_str, Err_.Message_gplx_full(e))); } finally { - server_mgr.Wkr_pool().Del(uid); - server_mgr.Uid_pool().Del(uid); + if (uid != -1) { // only release if uid was acquired; DATE:2015-10-11 + server_mgr.Wkr_pool().Del(uid); + server_mgr.Uid_pool().Del(uid); + } } } private void Process_get(Http_request_itm request, byte[] url) { @@ -81,7 +83,7 @@ class Http_server_wkr_v2 implements GfoInvkAble { int url_bgn = Bry_.Has_at_bgn(url, Url__fsys) ? Url__fsys_len : 0; // most files will have "/fsys/" at start, but Mathjax will not int url_end = question_pos == Bry_find_.Not_found ? url.length : question_pos; // ignore files with query params; EX: /file/A.png?key=val url_encoder.Decode(url, url_bgn, url_end, tmp_bfr, false); // decode url to actual chars; note that XOWA stores on fsys in UTF-8 chars; "�" not "%C3" - byte[] path = tmp_bfr.Xto_bry_and_clear(); + byte[] path = tmp_bfr.To_bry_and_clear(); client_wtr.Write_bry(Xosrv_http_wkr_.Rsp__http_ok); // client_wtr.Write_str("Expires: Sun, 17-Jan-2038 19:14:07 GMT\n"); String mime_type = String_.new_u8(Http_file_utl.To_mime_type_by_path_as_bry(path)); @@ -114,7 +116,7 @@ class Http_server_wkr_v2 implements GfoInvkAble { private void Process_post(Http_request_itm request) { byte[] msg = request.Post_data_hash().Get_by(Key__msg).Val(); byte[] app_mode = request.Post_data_hash().Get_by(Key__app_mode).Val(); - Xoa_app_type app_mode_itm = Xoa_app_type.parse(String_.new_u8(app_mode)); + Xoa_app_mode app_mode_itm = Xoa_app_mode.parse(String_.new_u8(app_mode)); server_wtr.Write_str_w_nl(String_.new_u8(request.Host()) + "|POST|" + String_.new_u8(msg)); Object url_tid_obj = post_url_hash.Get_by_bry(request.Url()); if (url_tid_obj == null) throw Err_.new_wo_type("unknown url", "url", request.Url(), "request", request.To_str(tmp_bfr, Bool_.N)); String rv = null; @@ -126,9 +128,9 @@ class Http_server_wkr_v2 implements GfoInvkAble { rv = Object_.Xto_str_strict_or_null_mark(app.Gfs_mgr().Run_str(String_.new_u8(msg))); break; } - if (app_mode_itm.Uid_is_http()) + if (app_mode_itm.Tid_is_http()) rv = Convert_page(rv, root_dir_http , "<>"); - Xosrv_http_wkr_.Write_response_as_html(client_wtr, app_mode_itm.Uid() == Xoa_app_type.Itm_file.Uid(), rv); + Xosrv_http_wkr_.Write_response_as_html(client_wtr, app_mode_itm.Tid() == Xoa_app_mode.Itm_file.Tid(), rv); } private static final byte[] Key__msg = Bry_.new_a7("msg"), Key__app_mode = Bry_.new_a7("app_mode"); private static final int Tid_post_url_json = 1, Tid_post_url_gfs = 2; @@ -153,7 +155,7 @@ class Http_server_wkr_v2 implements GfoInvkAble { private static final byte[] Url__home = Bry_.new_a7("/"), Url__fsys = Bry_.new_a7("/fsys/") , Url__exec = Bry_.new_a7("/exec/"), Url__exec_2 = Bry_.new_a7("/xowa-cmd:") - , Url__home__main_page = Bry_.new_a7("/home/wiki/Main_Page"); + ; private static final int Url__fsys_len = Url__fsys.length; } class Xosrv_http_wkr_ { diff --git a/400_xowa/src/gplx/xowa/servers/tcp/Socket_rdr.java b/400_xowa/src/gplx/xowa/apps/servers/tcp/Socket_rdr.java similarity index 92% rename from 400_xowa/src/gplx/xowa/servers/tcp/Socket_rdr.java rename to 400_xowa/src/gplx/xowa/apps/servers/tcp/Socket_rdr.java index 1cc1e695c..a26d20084 100644 --- a/400_xowa/src/gplx/xowa/servers/tcp/Socket_rdr.java +++ b/400_xowa/src/gplx/xowa/apps/servers/tcp/Socket_rdr.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.servers.tcp; import gplx.*; import gplx.xowa.*; import gplx.xowa.servers.*; +package gplx.xowa.apps.servers.tcp; import gplx.*; import gplx.xowa.*; import gplx.xowa.apps.*; import gplx.xowa.apps.servers.*; import gplx.ios.*; public class Socket_rdr { private java.net.ServerSocket server; diff --git a/400_xowa/src/gplx/xowa/servers/tcp/Socket_wtr.java b/400_xowa/src/gplx/xowa/apps/servers/tcp/Socket_wtr.java similarity index 92% rename from 400_xowa/src/gplx/xowa/servers/tcp/Socket_wtr.java rename to 400_xowa/src/gplx/xowa/apps/servers/tcp/Socket_wtr.java index a00ef08eb..af524b2b0 100644 --- a/400_xowa/src/gplx/xowa/servers/tcp/Socket_wtr.java +++ b/400_xowa/src/gplx/xowa/apps/servers/tcp/Socket_wtr.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.servers.tcp; import gplx.*; import gplx.xowa.*; import gplx.xowa.servers.*; +package gplx.xowa.apps.servers.tcp; import gplx.*; import gplx.xowa.*; import gplx.xowa.apps.*; import gplx.xowa.apps.servers.*; public class Socket_wtr { private String host; private int port; diff --git a/400_xowa/src/gplx/xowa/servers/tcp/Xosrv_cmd_types.java b/400_xowa/src/gplx/xowa/apps/servers/tcp/Xosrv_cmd_types.java similarity index 89% rename from 400_xowa/src/gplx/xowa/servers/tcp/Xosrv_cmd_types.java rename to 400_xowa/src/gplx/xowa/apps/servers/tcp/Xosrv_cmd_types.java index a4cf1d363..20e9bc7dc 100644 --- a/400_xowa/src/gplx/xowa/servers/tcp/Xosrv_cmd_types.java +++ b/400_xowa/src/gplx/xowa/apps/servers/tcp/Xosrv_cmd_types.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.servers.tcp; import gplx.*; import gplx.xowa.*; import gplx.xowa.servers.*; +package gplx.xowa.apps.servers.tcp; import gplx.*; import gplx.xowa.*; import gplx.xowa.apps.*; import gplx.xowa.apps.servers.*; public class Xosrv_cmd_types { public static final byte[] Cmd_exec = Bry_.new_a7("xowa.cmd.exec") , Cmd_pass = Bry_.new_a7("xowa.cmd.result") , Cmd_fail = Bry_.new_a7("xowa.cmd.error") diff --git a/400_xowa/src/gplx/xowa/servers/tcp/Xosrv_msg.java b/400_xowa/src/gplx/xowa/apps/servers/tcp/Xosrv_msg.java similarity index 95% rename from 400_xowa/src/gplx/xowa/servers/tcp/Xosrv_msg.java rename to 400_xowa/src/gplx/xowa/apps/servers/tcp/Xosrv_msg.java index dc469f002..701a4b2ad 100644 --- a/400_xowa/src/gplx/xowa/servers/tcp/Xosrv_msg.java +++ b/400_xowa/src/gplx/xowa/apps/servers/tcp/Xosrv_msg.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.servers.tcp; import gplx.*; import gplx.xowa.*; import gplx.xowa.servers.*; +package gplx.xowa.apps.servers.tcp; import gplx.*; import gplx.xowa.*; import gplx.xowa.apps.*; import gplx.xowa.apps.servers.*; public class Xosrv_msg { public byte Version_tid() {return Version_tid_0;} static final byte Version_tid_0 = 0; public byte[] Cmd_name() {return cmd_name;} private byte[] cmd_name; diff --git a/400_xowa/src/gplx/xowa/servers/tcp/Xosrv_msg_rdr.java b/400_xowa/src/gplx/xowa/apps/servers/tcp/Xosrv_msg_rdr.java similarity index 96% rename from 400_xowa/src/gplx/xowa/servers/tcp/Xosrv_msg_rdr.java rename to 400_xowa/src/gplx/xowa/apps/servers/tcp/Xosrv_msg_rdr.java index aff3481c5..c7bd7854f 100644 --- a/400_xowa/src/gplx/xowa/servers/tcp/Xosrv_msg_rdr.java +++ b/400_xowa/src/gplx/xowa/apps/servers/tcp/Xosrv_msg_rdr.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.servers.tcp; import gplx.*; import gplx.xowa.*; import gplx.xowa.servers.*; +package gplx.xowa.apps.servers.tcp; import gplx.*; import gplx.xowa.*; import gplx.xowa.apps.*; import gplx.xowa.apps.servers.*; import gplx.core.primitives.*; import gplx.ios.*; import gplx.texts.*; public class Xosrv_msg_rdr { diff --git a/400_xowa/src/gplx/xowa/servers/tcp/Xosrv_msg_rdr_tst.java b/400_xowa/src/gplx/xowa/apps/servers/tcp/Xosrv_msg_rdr_tst.java similarity index 92% rename from 400_xowa/src/gplx/xowa/servers/tcp/Xosrv_msg_rdr_tst.java rename to 400_xowa/src/gplx/xowa/apps/servers/tcp/Xosrv_msg_rdr_tst.java index 916b1795a..d5099ac40 100644 --- a/400_xowa/src/gplx/xowa/servers/tcp/Xosrv_msg_rdr_tst.java +++ b/400_xowa/src/gplx/xowa/apps/servers/tcp/Xosrv_msg_rdr_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.servers.tcp; import gplx.*; import gplx.xowa.*; import gplx.xowa.servers.*; +package gplx.xowa.apps.servers.tcp; import gplx.*; import gplx.xowa.*; import gplx.xowa.apps.*; import gplx.xowa.apps.servers.*; import org.junit.*; import gplx.ios.*; public class Xosrv_msg_rdr_tst { @@ -60,6 +60,6 @@ class Xosrv_msg_rdr_fxt { public void Test_print(Xosrv_msg msg, String expd) { Bry_bfr bfr = Bry_bfr.new_(); msg.Print(bfr); - Tfds.Eq(expd, bfr.Xto_str_and_clear()); + Tfds.Eq(expd, bfr.To_str_and_clear()); } } diff --git a/400_xowa/src/gplx/xowa/servers/tcp/Xosrv_server.java b/400_xowa/src/gplx/xowa/apps/servers/tcp/Xosrv_server.java similarity index 96% rename from 400_xowa/src/gplx/xowa/servers/tcp/Xosrv_server.java rename to 400_xowa/src/gplx/xowa/apps/servers/tcp/Xosrv_server.java index 81f1bf1c2..e2bbd6f22 100644 --- a/400_xowa/src/gplx/xowa/servers/tcp/Xosrv_server.java +++ b/400_xowa/src/gplx/xowa/apps/servers/tcp/Xosrv_server.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.servers.tcp; import gplx.*; import gplx.xowa.*; import gplx.xowa.servers.*; +package gplx.xowa.apps.servers.tcp; import gplx.*; import gplx.xowa.*; import gplx.xowa.apps.*; import gplx.xowa.apps.servers.*; import gplx.core.primitives.*; import gplx.ios.*; import gplx.langs.jsons.*; import gplx.core.threads.*; public class Xosrv_server implements GfoInvkAble { private long last_cmd; diff --git a/400_xowa/src/gplx/xowa/servers/tcp/Xosrv_server_tst.java b/400_xowa/src/gplx/xowa/apps/servers/tcp/Xosrv_server_tst.java similarity index 91% rename from 400_xowa/src/gplx/xowa/servers/tcp/Xosrv_server_tst.java rename to 400_xowa/src/gplx/xowa/apps/servers/tcp/Xosrv_server_tst.java index 5061bf929..db9379924 100644 --- a/400_xowa/src/gplx/xowa/servers/tcp/Xosrv_server_tst.java +++ b/400_xowa/src/gplx/xowa/apps/servers/tcp/Xosrv_server_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.servers.tcp; import gplx.*; import gplx.xowa.*; import gplx.xowa.servers.*; +package gplx.xowa.apps.servers.tcp; import gplx.*; import gplx.xowa.*; import gplx.xowa.apps.*; import gplx.xowa.apps.servers.*; import org.junit.*; import gplx.ios.*; public class Xosrv_server_tst { diff --git a/400_xowa/src/gplx/xowa/servers/tcp/Xosrv_socket_rdr.java b/400_xowa/src/gplx/xowa/apps/servers/tcp/Xosrv_socket_rdr.java similarity index 91% rename from 400_xowa/src/gplx/xowa/servers/tcp/Xosrv_socket_rdr.java rename to 400_xowa/src/gplx/xowa/apps/servers/tcp/Xosrv_socket_rdr.java index d70f3e06f..9290b57ed 100644 --- a/400_xowa/src/gplx/xowa/servers/tcp/Xosrv_socket_rdr.java +++ b/400_xowa/src/gplx/xowa/apps/servers/tcp/Xosrv_socket_rdr.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.servers.tcp; import gplx.*; import gplx.xowa.*; import gplx.xowa.servers.*; +package gplx.xowa.apps.servers.tcp; import gplx.*; import gplx.xowa.*; import gplx.xowa.apps.*; import gplx.xowa.apps.servers.*; import gplx.ios.*; public class Xosrv_socket_rdr implements GfoInvkAble { private Socket_rdr rdr = new Socket_rdr(); diff --git a/400_xowa/src/gplx/xowa/servers/tcp/Xosrv_socket_wtr.java b/400_xowa/src/gplx/xowa/apps/servers/tcp/Xosrv_socket_wtr.java similarity index 86% rename from 400_xowa/src/gplx/xowa/servers/tcp/Xosrv_socket_wtr.java rename to 400_xowa/src/gplx/xowa/apps/servers/tcp/Xosrv_socket_wtr.java index 4963ba716..f03db81f1 100644 --- a/400_xowa/src/gplx/xowa/servers/tcp/Xosrv_socket_wtr.java +++ b/400_xowa/src/gplx/xowa/apps/servers/tcp/Xosrv_socket_wtr.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.servers.tcp; import gplx.*; import gplx.xowa.*; import gplx.xowa.servers.*; +package gplx.xowa.apps.servers.tcp; import gplx.*; import gplx.xowa.*; import gplx.xowa.apps.*; import gplx.xowa.apps.servers.*; public class Xosrv_socket_wtr { public String Host() {return host;} private String host = "localhost"; public int Port() {return port;} private int port; @@ -24,7 +24,7 @@ public class Xosrv_socket_wtr { public void Write(Xosrv_msg msg) { wtr.Open(); msg.Print(msg_bfr); - byte[] msg_bry = msg_bfr.Xto_bry_and_clear(); + byte[] msg_bry = msg_bfr.To_bry_and_clear(); wtr.Write(msg_bry); wtr.Close(); } diff --git a/400_xowa/src/gplx/xowa/servers/tcp/Xowa_tcp_console.java b/400_xowa/src/gplx/xowa/apps/servers/tcp/Xowa_tcp_console.java similarity index 95% rename from 400_xowa/src/gplx/xowa/servers/tcp/Xowa_tcp_console.java rename to 400_xowa/src/gplx/xowa/apps/servers/tcp/Xowa_tcp_console.java index 409747766..87dd0778e 100644 --- a/400_xowa/src/gplx/xowa/servers/tcp/Xowa_tcp_console.java +++ b/400_xowa/src/gplx/xowa/apps/servers/tcp/Xowa_tcp_console.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.servers.tcp; import gplx.*; import gplx.xowa.*; import gplx.xowa.servers.*; +package gplx.xowa.apps.servers.tcp; import gplx.*; import gplx.xowa.*; import gplx.xowa.apps.*; import gplx.xowa.apps.servers.*; import java.io.BufferedReader; import java.io.FileInputStream; import java.io.IOException; diff --git a/400_xowa/src/gplx/xowa/apps/setups/Xoa_setup_mgr.java b/400_xowa/src/gplx/xowa/apps/setups/Xoa_setup_mgr.java index 5710ee256..7de91997c 100644 --- a/400_xowa/src/gplx/xowa/apps/setups/Xoa_setup_mgr.java +++ b/400_xowa/src/gplx/xowa/apps/setups/Xoa_setup_mgr.java @@ -30,8 +30,8 @@ public class Xoa_setup_mgr { @gplx.Internal protected static void Delete_old_dir(Gfo_usr_dlg usr_dlg, String version_prv, String version_del, Io_url dir) { if (Xoa_version_.Compare(version_prv, version_del) != CompareAble_.Less) return; usr_dlg.Log_many("", "", "setup:checking if dir exists: version_prv=~{0} version_del=~{1} dir=~{2}", version_prv, version_del, dir.Raw()); - if (!Io_mgr.I.ExistsDir(dir)) return; + if (!Io_mgr.Instance.ExistsDir(dir)) return; usr_dlg.Log_many("", "", "setup:deleting dir", version_prv, version_del, dir.Raw()); - Io_mgr.I.DeleteDirDeep(dir); + Io_mgr.Instance.DeleteDirDeep(dir); } } diff --git a/400_xowa/src/gplx/xowa/apps/setups/Xoa_setup_mgr_tst.java b/400_xowa/src/gplx/xowa/apps/setups/Xoa_setup_mgr_tst.java index aa5c8c10d..958791fe6 100644 --- a/400_xowa/src/gplx/xowa/apps/setups/Xoa_setup_mgr_tst.java +++ b/400_xowa/src/gplx/xowa/apps/setups/Xoa_setup_mgr_tst.java @@ -29,8 +29,8 @@ class Xoa_setup_mgr_fxt { public void Clear() {} public void Test_delete_old_dir(String dir_str, String version_prv, String version_del, boolean expd) { Io_url dir = Io_url_.new_fil_(dir_str); - Io_mgr.I.CreateDirIfAbsent(dir); + Io_mgr.Instance.CreateDirIfAbsent(dir); Xoa_setup_mgr.Delete_old_dir(Gfo_usr_dlg_.Noop, version_prv, version_del, dir); - Tfds.Eq(expd, !Io_mgr.I.ExistsDir(dir), version_prv + "|" + version_del); + Tfds.Eq(expd, !Io_mgr.Instance.ExistsDir(dir), version_prv + "|" + version_del); } } diff --git a/400_xowa/src/gplx/xowa/apps/site_cfgs/Xoa_site_cfg_itm__base.java b/400_xowa/src/gplx/xowa/apps/site_cfgs/Xoa_site_cfg_itm__base.java new file mode 100644 index 000000000..fb4672189 --- /dev/null +++ b/400_xowa/src/gplx/xowa/apps/site_cfgs/Xoa_site_cfg_itm__base.java @@ -0,0 +1,37 @@ +/* +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.apps.site_cfgs; import gplx.*; import gplx.xowa.*; import gplx.xowa.apps.*; +import gplx.langs.jsons.*; +import gplx.xowa.bldrs.wms.sites.*; +public abstract class Xoa_site_cfg_itm__base { + public void Ctor(String key_str) { + this.key_str = key_str; this.key_bry = Bry_.new_u8(key_str); + } + public String Key_str() {return key_str;} private String key_str; + public byte[] Key_bry() {return key_bry;} private byte[] key_bry; + public byte[] Parse_json(Xow_wiki wiki, Json_itm js_itm) { + Json_ary ary = Json_ary.cast(js_itm); + Bry_bfr bfr = Xoa_app_.Utl__bfr_mkr().Get_b512(); + int len = ary.Len(); + for (int i = 0; i < len; ++i) + Parse_json_ary_itm(bfr, wiki, i, ary.Get_at(i)); + return bfr.To_bry_and_rls(); + } + public abstract void Parse_json_ary_itm(Bry_bfr bfr, Xow_wiki wiki, int i, Json_itm itm); + public abstract void Exec_csv(Xow_wiki wiki, int loader_tid, byte[] dsv_bry); +} diff --git a/400_xowa/src/gplx/xowa/apps/site_cfgs/Xoa_site_cfg_itm__extensiontags.java b/400_xowa/src/gplx/xowa/apps/site_cfgs/Xoa_site_cfg_itm__extensiontags.java new file mode 100644 index 000000000..78120f9af --- /dev/null +++ b/400_xowa/src/gplx/xowa/apps/site_cfgs/Xoa_site_cfg_itm__extensiontags.java @@ -0,0 +1,48 @@ +/* +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.apps.site_cfgs; import gplx.*; import gplx.xowa.*; import gplx.xowa.apps.*; +import gplx.langs.jsons.*; +class Xoa_site_cfg_itm__extensiontags extends Xoa_site_cfg_itm__base { + public Xoa_site_cfg_itm__extensiontags() { + this.Ctor(Xoa_site_cfg_loader__inet.Qarg__extensiontags); + } + @Override public void Parse_json_ary_itm(Bry_bfr bfr, Xow_wiki wiki, int i, Json_itm itm) { + byte[] tag = itm.Data_bry(); + if (i != 0) bfr.Add_byte_nl(); + int idx_last = tag.length - 1; + if ( tag.length < 3 + || tag[0] != Byte_ascii.Angle_bgn + || tag[idx_last] != Byte_ascii.Angle_end + ) + throw Err_.new_("site_meta", "invalid extensiontag", "tag", tag); + bfr.Add_mid(tag, 1, idx_last); // convert "
" to "pre"
+	}
+	@Override public void Exec_csv(Xow_wiki wiki, int loader_tid, byte[] dsv_bry) {
+		Hash_adp_bry hash = null;
+		if (loader_tid != Xoa_site_cfg_loader_.Tid__fallback) {	// fallback will result in null hash which will result in loading all extensions
+			hash = Hash_adp_bry.ci_a7();						// NOTE: must be case-insensitive; EX:  vs 
+			byte[][] lines = Bry_split_.Split_lines(dsv_bry);
+			int lines_len = lines.length;
+			for (int i = 0; i < lines_len; ++i) {
+				byte[] line = lines[i]; if (Bry_.Len_eq_0(line)) continue;	// ignore blank lines
+				hash.Add(line, line);
+			}
+		}
+		wiki.Mw_parser_mgr().Xnde_tag_regy().Init_by_meta(hash);
+	}
+}
diff --git a/400_xowa/src/gplx/xowa/apps/site_cfgs/Xoa_site_cfg_itm__interwikimap.java b/400_xowa/src/gplx/xowa/apps/site_cfgs/Xoa_site_cfg_itm__interwikimap.java
new file mode 100644
index 000000000..66f0800e7
--- /dev/null
+++ b/400_xowa/src/gplx/xowa/apps/site_cfgs/Xoa_site_cfg_itm__interwikimap.java
@@ -0,0 +1,118 @@
+/*
+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.apps.site_cfgs; import gplx.*; import gplx.xowa.*; import gplx.xowa.apps.*;
+import gplx.core.net.*; import gplx.langs.jsons.*; import gplx.xowa.apps.gfs.*;
+import gplx.xowa.langs.*;
+import gplx.xowa.wikis.domains.*; import gplx.xowa.wikis.xwikis.*;
+class Xoa_site_cfg_itm__interwikimap extends Xoa_site_cfg_itm__base {
+	private final Bry_bfr tmp_bfr = Bry_bfr.new_();
+	private final Gfo_url_parser url_parser = new Gfo_url_parser(); private final Gfo_url url = new Gfo_url();
+	public Xoa_site_cfg_itm__interwikimap() {this.Ctor(Xoa_site_cfg_loader__inet.Qarg__interwikimap);}
+	@Override public void Parse_json_ary_itm(Bry_bfr bfr, Xow_wiki wiki, int i, Json_itm itm) {
+		Json_nde nde = Json_nde.cast(itm);
+		if (i != 0) bfr.Add_byte_nl();
+		byte[] iw_key = nde.Get_bry_or_null("prefix");	if (iw_key == null) throw Err_.new_("site_meta", "invalid interwiki", "key", iw_key);
+		byte[] iw_url = nde.Get_bry_or_null("url");		if (iw_url == null) throw Err_.new_("site_meta", "invalid interwiki", "url", iw_key);
+		bfr.Add(iw_key).Add_byte_pipe().Add(Xoa_gfs_php_mgr.Xto_gfs(tmp_bfr, iw_url));
+	}
+	@Override public void Exec_csv(Xow_wiki wiki, int loader_tid, byte[] dsv_bry) {
+		if (loader_tid == Xoa_site_cfg_loader_.Tid__fallback)
+			Exec_csv__fallback(wiki);
+		else {
+			byte[][] lines = Bry_split_.Split_lines(dsv_bry);
+			int lines_len = lines.length;
+			for (int i = 0; i < lines_len; ++i) {
+				byte[] line = lines[i]; if (Bry_.Len_eq_0(line)) continue;	// ignore blank lines
+				byte[][] flds = Bry_split_.Split(line, Byte_ascii.Pipe);
+				byte[] url_fmt = flds[1];
+				byte[] domain_bry = Xow_xwiki_mgr.Get_domain_from_url(url_parser, url, url_fmt);
+				wiki.Xwiki_mgr().Add_by_atrs(flds[0], domain_bry, url_fmt);
+			}
+		}
+	}
+	private void Exec_csv__fallback(Xow_wiki wiki) {
+		Xow_xwiki_mgr xwiki_mgr = wiki.Xwiki_mgr();
+		int domain_tid = wiki.Domain_tid();
+		xwiki_mgr.Add_by_csv(Csv__manual);	// adds manual xwikis that should exist in all wikis; EX: 'commons', 'wikidata', 'oldwikisource', 'wmf'
+		switch (domain_tid) {
+			case Xow_domain_tid_.Int__wikipedia: case Xow_domain_tid_.Int__wiktionary:	case Xow_domain_tid_.Int__wikisource:	case Xow_domain_tid_.Int__wikivoyage:
+			case Xow_domain_tid_.Int__wikiquote: case Xow_domain_tid_.Int__wikibooks:	case Xow_domain_tid_.Int__wikiversity:	case Xow_domain_tid_.Int__wikinews:
+				xwiki_mgr.Add_by_sitelink_mgr();									// lang: EX: [[fr:]]  -> fr.wikipedia.org
+				xwiki_mgr.Add_by_csv(Csv__peers__lang);								// peer: EX: [[wikt]] -> en.wiktionary.org
+				break;
+			case Xow_domain_tid_.Int__commons:		case Xow_domain_tid_.Int__wikidata:
+			case Xow_domain_tid_.Int__wikimedia:	case Xow_domain_tid_.Int__species:	case Xow_domain_tid_.Int__meta: case Xow_domain_tid_.Int__incubator:
+			case Xow_domain_tid_.Int__mediawiki:	case Xow_domain_tid_.Int__wmfblog:
+			case Xow_domain_tid_.Int__home:			case Xow_domain_tid_.Int__other:
+				xwiki_mgr.Add_by_sitelink_mgr(Xow_domain_tid_.Int__wikipedia);		// lang: hardcode to wikipedia; EX: "[[en:]] -> "en.wikipedia.org"
+				xwiki_mgr.Add_by_csv(Csv__peers__english);							// peer: hardcode to english
+				break;
+		}
+
+		// wikivoyage
+		switch (domain_tid) {
+			case Xow_domain_tid_.Int__wikivoyage: case Xow_domain_tid_.Int__home:	// NOTE: home needed for diagnostic; DATE:2015-10-13
+				xwiki_mgr.Add_by_csv(Csv__wikivoyage);
+				break;
+		}
+
+		// if simplewiki, add "w" -> "enwiki"
+		if	(Bry_.Eq(wiki.Domain_bry(), Xow_domain_itm_.Bry__simplewiki))	
+			xwiki_mgr.Add_by_csv(Csv__enwiki);
+	}
+	private static final byte[] 
+	  Csv__manual = Bry_.new_a7(String_.Concat_lines_nl_skip_last
+	( "1|commons;c|commons.wikimedia.org|Commons"
+	, "1|m;metawikipedia|meta.wikipedia.org"
+	, "1|species;wikispecies|species.wikimedia.org"
+	, "1|d;wikidata|www.wikidata.org"
+	, "1|mw;mediawikiwiki|www.mediawiki.org"
+	, "1|wmf;wikimedia;foundation|wikimediafoundation.org"
+	, "1|incubator|incubator.wikimedia.org"
+	, "0|oldwikisource|https://wikisource.org/wiki/~{0}|Old Wikisoure"
+	, "0|mail|https://lists.wikimedia.org/mailman/listinfo/~{0}|Wikitech Mailing List"
+	))
+	, Csv__peers__lang = Bry_.new_a7(String_.Concat_lines_nl_skip_last
+	( "2|w;wikipedia|wikipedia"
+	, "2|wikt;wiktionary|wiktionary"
+	, "2|s;wikisource|wikisource"
+	, "2|b;wikibooks|wikibooks"
+	, "2|v;wikiversity|wikiversity"
+	, "2|q;wikiquote|wikiquote"
+	, "2|n;wikinews|wikinews"
+	, "2|voy;wikivoyage|wikivoyage"
+	))
+	, Csv__peers__english = Bry_.new_a7(String_.Concat_lines_nl_skip_last
+	( "1|w|en.wikipedia.org"
+	, "1|wikt|en.wiktionary.org"
+	, "1|s|en.wikisource.org"
+	, "1|b|en.wikibooks.org"
+	, "1|v|en.wikiversity.org"
+	, "1|q|en.wikiquote.org"
+	, "1|n|en.wikinews.org"
+	, "1|voy|en.wikivoyage.org"
+	))
+	, Csv__wikivoyage = Bry_.new_a7(String_.Concat_lines_nl_skip_last
+	( "0|commons|commons.wikimedia.org|Wikimedia Commons"
+	, "2|wikipedia|wikipedia|Wikipedia"
+	, "0|dmoz|http://www.dmoz.org/~{0}|DMOZ"
+	))
+	, Csv__enwiki = Bry_.new_a7("2|w|wikipedia")
+	;
+}
+
diff --git a/400_xowa/src/gplx/xowa/apps/site_cfgs/Xoa_site_cfg_loader.java b/400_xowa/src/gplx/xowa/apps/site_cfgs/Xoa_site_cfg_loader.java
new file mode 100644
index 000000000..e46582f5a
--- /dev/null
+++ b/400_xowa/src/gplx/xowa/apps/site_cfgs/Xoa_site_cfg_loader.java
@@ -0,0 +1,36 @@
+/*
+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.apps.site_cfgs; import gplx.*; import gplx.xowa.*; import gplx.xowa.apps.*;
+public interface Xoa_site_cfg_loader {
+	int			Tid();
+	void		Load_csv__bgn(Xoa_site_cfg_mgr mgr, Xow_wiki wiki);
+	byte[]		Load_csv(Xoa_site_cfg_mgr mgr, Xow_wiki wiki, Xoa_site_cfg_itm__base itm);
+}
+class Xoa_site_cfg_loader_ {
+	public static final int Tid__null = -1, Tid__cfg = 0, Tid__fsys = 1, Tid__inet = 2, Tid__fallback = 3;
+	private static final String Key__cfg = "cfg", Key__fsys = "fsys", Key__inet = "inet", Key__fallback = "itm";
+	public static String Get_key(int tid) {
+		switch (tid) {
+			case Tid__cfg:			return Key__cfg;
+			case Tid__fsys:			return Key__fsys;
+			case Tid__inet:			return Key__inet;
+			case Tid__fallback:		return Key__fallback;
+			default:				throw Err_.new_unhandled(tid);
+		}
+	}
+}
diff --git a/400_xowa/src/gplx/xowa/apps/site_cfgs/Xoa_site_cfg_loader__cfg.java b/400_xowa/src/gplx/xowa/apps/site_cfgs/Xoa_site_cfg_loader__cfg.java
new file mode 100644
index 000000000..6a82c1dc5
--- /dev/null
+++ b/400_xowa/src/gplx/xowa/apps/site_cfgs/Xoa_site_cfg_loader__cfg.java
@@ -0,0 +1,44 @@
+/*
+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.apps.site_cfgs; import gplx.*; import gplx.xowa.*; import gplx.xowa.apps.*;
+import gplx.dbs.cfgs.*;
+class Xoa_site_cfg_loader__db implements Xoa_site_cfg_loader {
+	private Db_cfg_tbl cfg_tbl;
+	public int Tid() {return Xoa_site_cfg_loader_.Tid__cfg;}
+	public void Load_csv__bgn(Xoa_site_cfg_mgr mgr, Xow_wiki wiki) {
+		this.cfg_tbl = wiki.Data__core_mgr().Tbl__cfg();
+		cfg_tbl.Select_as_hash_bry(mgr.Data_hash(), Grp__xowa_wm_api);
+	}
+	public byte[] Load_csv(Xoa_site_cfg_mgr mgr, Xow_wiki wiki, Xoa_site_cfg_itm__base itm) {
+		byte[] rv = (byte[])mgr.Data_hash().Get_by_bry(itm.Key_bry()); if (rv == null) return null;
+		int meta_end = Bry_find_.Find_fwd(rv, Byte_ascii.Nl);
+		if (meta_end == Bry_find_.Not_found) {// fallback will only log one line; ignore; EX: //#xowa|fallback
+			return null;
+		}
+		return Bry_.Mid(rv, meta_end + 1);
+	}
+	public void Save_bry(int loader_tid, String db_key, byte[] val) {
+		byte[] meta = Bry_.new_a7(Bld_meta(loader_tid));
+		byte[] data = Bry_.Len_eq_0(val) ? meta : Bry_.Add(meta, Byte_ascii.Nl_bry, val);
+		cfg_tbl.Assert_bry(Grp__xowa_wm_api, db_key, data);
+	}
+	public static String Bld_meta(int loader_tid) {
+		return String_.Format("//#xowa|{0}|{1}|{2}", Xoa_app_.Version, Xoa_site_cfg_loader_.Get_key(loader_tid), DateAdp_.Now().XtoUtc().XtoStr_fmt_yyyyMMdd_HHmmss());
+	}
+	public static final String Grp__xowa_wm_api = "xowa.site_cfg";
+}
diff --git a/400_xowa/src/gplx/langs/htmls/parsers/Gfo_html_node.java b/400_xowa/src/gplx/xowa/apps/site_cfgs/Xoa_site_cfg_loader__fallback.java
similarity index 60%
rename from 400_xowa/src/gplx/langs/htmls/parsers/Gfo_html_node.java
rename to 400_xowa/src/gplx/xowa/apps/site_cfgs/Xoa_site_cfg_loader__fallback.java
index 664b6416f..2722c6150 100644
--- a/400_xowa/src/gplx/langs/htmls/parsers/Gfo_html_node.java
+++ b/400_xowa/src/gplx/xowa/apps/site_cfgs/Xoa_site_cfg_loader__fallback.java
@@ -15,10 +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.langs.htmls.parsers; import gplx.*; import gplx.langs.*; import gplx.langs.htmls.*;
-class Gfo_html_node {
-	public Gfo_html_node(byte[] src, int bgn, int end) {this.src = src; this.bgn = bgn; this.end = end;}
-	public byte[] Src() {return src;} private final byte[] src;
-	public int Bgn() {return bgn;} private final int bgn;
-	public int End() {return end;} private final int end;
+package gplx.xowa.apps.site_cfgs; import gplx.*; import gplx.xowa.*; import gplx.xowa.apps.*;
+class Xoa_site_cfg_loader__fallback implements Xoa_site_cfg_loader {
+	public int			Tid() {return Xoa_site_cfg_loader_.Tid__fallback;}
+	public void			Load_csv__bgn(Xoa_site_cfg_mgr mgr, Xow_wiki wiki) {}
+	public byte[]		Load_csv(Xoa_site_cfg_mgr mgr, Xow_wiki wiki, Xoa_site_cfg_itm__base itm) {return Bry_.Empty;}	// return non-null so "data != null" check works
 }
diff --git a/400_xowa/src/gplx/xowa/apps/site_cfgs/Xoa_site_cfg_loader__fsys.java b/400_xowa/src/gplx/xowa/apps/site_cfgs/Xoa_site_cfg_loader__fsys.java
new file mode 100644
index 000000000..f33e63a88
--- /dev/null
+++ b/400_xowa/src/gplx/xowa/apps/site_cfgs/Xoa_site_cfg_loader__fsys.java
@@ -0,0 +1,30 @@
+/*
+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.apps.site_cfgs; import gplx.*; import gplx.xowa.*; import gplx.xowa.apps.*;
+import gplx.xowa.apps.fsys.*;
+class Xoa_site_cfg_loader__fsys implements Xoa_site_cfg_loader {
+	private final Io_url site_cfg_dir;
+	public Xoa_site_cfg_loader__fsys(Io_url site_cfg_dir) {this.site_cfg_dir = site_cfg_dir;}
+	public int Tid() {return Xoa_site_cfg_loader_.Tid__fsys;}
+	public void Load_csv__bgn(Xoa_site_cfg_mgr mgr, Xow_wiki wiki) {}
+	public byte[] Load_csv(Xoa_site_cfg_mgr mgr, Xow_wiki wiki, Xoa_site_cfg_itm__base itm) {
+		return Io_mgr.Instance.LoadFilBryOrNull(Make_load_url(wiki.Domain_str(), itm.Key_str()));
+	}
+	public Io_url Make_load_url(String wiki, String key) {return site_cfg_dir.GenSubFil_nest(key, key + "-" + wiki + ".csv");}
+	public static Xoa_site_cfg_loader__fsys new_(Xoa_app app) {return new Xoa_site_cfg_loader__fsys(app.Fsys_mgr().Bin_xowa_dir().GenSubDir_nest("cfg", "wiki", "api"));}
+}
diff --git a/400_xowa/src/gplx/xowa/apps/site_cfgs/Xoa_site_cfg_loader__inet.java b/400_xowa/src/gplx/xowa/apps/site_cfgs/Xoa_site_cfg_loader__inet.java
new file mode 100644
index 000000000..98f188cc5
--- /dev/null
+++ b/400_xowa/src/gplx/xowa/apps/site_cfgs/Xoa_site_cfg_loader__inet.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.apps.site_cfgs; import gplx.*; import gplx.xowa.*; import gplx.xowa.apps.*;
+import gplx.core.net.*; import gplx.xowa.bldrs.wms.*;
+import gplx.langs.jsons.*;
+import gplx.xowa.wikis.domains.*;
+public class Xoa_site_cfg_loader__inet implements Xoa_site_cfg_loader {
+	private final Gfo_inet_conn inet_conn; private final Json_parser json_parser;
+	private String api_url; private boolean call_api = true; private Json_doc jdoc;		
+	public Xoa_site_cfg_loader__inet(Gfo_inet_conn inet_conn, Json_parser json_parser) {this.inet_conn = inet_conn; this.json_parser = json_parser;}
+	public int Tid() {return Xoa_site_cfg_loader_.Tid__inet;}
+	public void Load_csv__bgn(Xoa_site_cfg_mgr mgr, Xow_wiki wiki) {
+		this.call_api = true;
+		this.jdoc = null;
+		this.api_url = Bld_url(wiki.Domain_str(), mgr.Data_hash(), mgr.Itm_ary());
+	}
+	public String Api_url() {return api_url;}
+	public byte[] Load_csv(Xoa_site_cfg_mgr mgr, Xow_wiki wiki, Xoa_site_cfg_itm__base itm) {
+		if (Int_.In(wiki.Domain_tid(), Xow_domain_tid_.Int__home, Xow_domain_tid_.Int__other)) return null;	// do not call api if "home", "other"; for "wikia" and other non-wm wikis
+		if (call_api) {
+			call_api = false;
+			byte[] json_bry = Xowm_api_mgr.Call_by_url(Xoa_app_.Usr_dlg(), inet_conn, wiki.Domain_str(), api_url);
+			if (json_bry != null) jdoc = json_parser.Parse(json_bry);
+		}
+		if (jdoc == null) return null;
+		Json_itm js_itm = jdoc.Get_grp_many(Bry__query, itm.Key_bry()); if (js_itm == null) return null;
+		return itm.Parse_json(wiki, js_itm);
+	}
+	public static String Bld_url(String domain_str, Hash_adp_bry db_hash, Xoa_site_cfg_itm__base[] itm_ary) {
+		Bry_bfr bfr = Xoa_app_.Utl__bfr_mkr().Get_b512();
+		boolean first = true;
+		int len = itm_ary.length;
+		for (int i = 0; i < len; ++i) {
+			Xoa_site_cfg_itm__base itm = itm_ary[i];
+			byte[] itm_key = itm.Key_bry();
+			if (db_hash.Has(itm_key)) continue;
+			if (first)
+				first = false;
+			else
+				bfr.Add_byte_pipe();
+			bfr.Add(itm.Key_bry());
+		}
+		return Xowm_api_mgr.Bld_api_url(domain_str, Qarg__bgn + bfr.To_str_and_rls());
+	}
+	private static final byte[] Bry__query = Bry_.new_a7("query");
+	public static final String
+	  Qarg__all							= "action=query&format=json&rawcontinue=&meta=siteinfo&siprop=general|namespaces|statistics|interwikimap|namespacealiases|specialpagealiases|libraries|extensions|skins|magicwords|functionhooks|showhooks|extensiontags|protocols|defaultoptions|languages"
+	, Qarg__bgn							= "action=query&format=json&rawcontinue=&meta=siteinfo&siprop="
+	, Qarg__extensiontags				= "extensiontags"
+	, Qarg__interwikimap				= "interwikimap"
+	;
+}
diff --git a/400_xowa/src/gplx/xowa/apps/site_cfgs/Xoa_site_cfg_mgr.java b/400_xowa/src/gplx/xowa/apps/site_cfgs/Xoa_site_cfg_mgr.java
new file mode 100644
index 000000000..212657d5e
--- /dev/null
+++ b/400_xowa/src/gplx/xowa/apps/site_cfgs/Xoa_site_cfg_mgr.java
@@ -0,0 +1,69 @@
+/*
+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.apps.site_cfgs; import gplx.*; import gplx.xowa.*; import gplx.xowa.apps.*;
+import gplx.xowa.bldrs.wms.sites.*;
+public class Xoa_site_cfg_mgr {
+	private final Xoa_site_cfg_loader__db loader__db = new Xoa_site_cfg_loader__db();		
+	public Xoa_site_cfg_mgr(Xoa_app app) {
+		this.itm_ary = new Xoa_site_cfg_itm__base[]
+		{ new Xoa_site_cfg_itm__extensiontags()
+		, new Xoa_site_cfg_itm__interwikimap()
+		};
+		this.loader_ary = new Xoa_site_cfg_loader[] 
+		{ loader__db
+		, Xoa_site_cfg_loader__fsys.new_(app)
+		, new Xoa_site_cfg_loader__inet(app.Utl__inet_conn(), app.Utl__json_parser())
+		, new Xoa_site_cfg_loader__fallback()
+		};
+	}
+	public Xoa_site_cfg_loader[]		Loader_ary() {return loader_ary;} private final Xoa_site_cfg_loader[] loader_ary;
+	public Xoa_site_cfg_itm__base[]		Itm_ary() {return itm_ary;} private final Xoa_site_cfg_itm__base[] itm_ary;
+	public Hash_adp_bry					Data_hash() {return data_hash;} private final Hash_adp_bry data_hash = Hash_adp_bry.cs();
+	public void Init_loader_bgn(Xow_wiki wiki) {
+		data_hash.Clear();	
+		int loader_len = loader_ary.length;
+		for (int i = 0; i < loader_len; ++i)
+			loader_ary[i].Load_csv__bgn(this, wiki);
+	}
+	public void Load(Xow_wiki wiki) {
+		if (wiki.Data__core_mgr() == null) return;	// TEST:
+		synchronized (loader__db) {	// THREAD: data_hash; loader_ary
+			this.Init_loader_bgn(wiki);
+			int len = itm_ary.length;
+			for (int i = 0; i < len; ++i) {
+				Xoa_site_cfg_itm__base itm = itm_ary[i];
+				Load_by_loader(wiki, itm);
+			}
+		}
+	}
+	private void Load_by_loader(Xow_wiki wiki, Xoa_site_cfg_itm__base itm) {
+		int len = loader_ary.length;
+		for (int i = 0; i < len; ++i) {
+			Xoa_site_cfg_loader loader = loader_ary[i];
+			try {// guard against individual loader failing, particularly inet
+				byte[] data = loader.Load_csv(this, wiki, itm);
+				if (data != null) {
+					if (loader.Tid() != Xoa_site_cfg_loader_.Tid__cfg) loader__db.Save_bry(loader.Tid(), itm.Key_str(), data);
+					Xoa_app_.Usr_dlg().Log_many("", "", "site_cfg loaded; wiki=~{0} itm=~{1} tid=~{2}", wiki.Domain_str(), itm.Key_bry(), Xoa_site_cfg_loader_.Get_key(loader.Tid()));
+					itm.Exec_csv(wiki, loader.Tid(), data);
+					break;
+				}
+			} catch (Exception e) {Xoa_app_.Usr_dlg().Warn_many("", "", "error while loading site_cfg; wiki=~{0} itm=~{1} err=~{2}", wiki.Domain_str(), itm.Key_bry(), Err_.Message_gplx_log(e));}
+		}
+	}
+}
diff --git a/400_xowa/src/gplx/xowa/apps/site_cfgs/Xoa_site_cfg_mgr_tst.java b/400_xowa/src/gplx/xowa/apps/site_cfgs/Xoa_site_cfg_mgr_tst.java
new file mode 100644
index 000000000..1afeb1d7b
--- /dev/null
+++ b/400_xowa/src/gplx/xowa/apps/site_cfgs/Xoa_site_cfg_mgr_tst.java
@@ -0,0 +1,183 @@
+/*
+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.apps.site_cfgs; import gplx.*; import gplx.xowa.*; import gplx.xowa.apps.*;
+import org.junit.*;
+import gplx.core.btries.*;
+import gplx.dbs.cfgs.*;
+import gplx.langs.jsons.*; import gplx.xowa.wikis.nss.*;
+import gplx.xowa.parsers.*; import gplx.xowa.bldrs.wms.*;
+public class Xoa_site_cfg_mgr_tst {
+	private final Xoa_site_cfg_mgr_fxt fxt = new Xoa_site_cfg_mgr_fxt();
+	@Before		public void init() {fxt.Init();}
+	@After  public void term() {fxt.Term();}
+	@Test  public void Extensiontags__cfg() {
+		fxt.Init_db(Xoa_site_cfg_loader__inet.Qarg__extensiontags, fxt.Make_data(Xoa_site_cfg_loader_.Tid__inet, 1, "math", "source"));
+		fxt.Exec_load();
+		fxt.Test_extensiontags_y("math"	, "source");
+		fxt.Test_extensiontags_n("ref"	, "graph");
+		fxt.Test_extensiontags_y("translate", "languages");	// always whitelist , DATE:2015-10-13
+	}
+	@Test  public void Extensiontags__fsys() {
+		fxt.Init_fsys(Xoa_site_cfg_loader__inet.Qarg__extensiontags, fxt.Make_data(Xoa_site_cfg_loader_.Tid__null, 1, "math", "source"));
+		fxt.Exec_load();
+		fxt.Test_extensiontags_y("math", "source");
+		fxt.Test_extensiontags_n("ref"	, "graph");
+		fxt.Test_db(Xoa_site_cfg_loader__inet.Qarg__extensiontags, fxt.Make_data(Xoa_site_cfg_loader_.Tid__fsys, 1, "math", "source"));
+	}
+	@Test  public void Extensiontags__inet() {
+		fxt.Init_inet(fxt.Make_api(fxt.Make_api_extensiontags("math", "source")));
+		fxt.Exec_load();
+		fxt.Test_extensiontags_y("math", "source");
+		fxt.Test_extensiontags_n("ref"	, "graph");
+		fxt.Test_db(Xoa_site_cfg_loader__inet.Qarg__extensiontags, fxt.Make_data(Xoa_site_cfg_loader_.Tid__inet, 1, "math", "source"));
+	}
+	@Test  public void Extensiontags__fallback() {
+		fxt.Exec_load();
+		fxt.Test_db(Xoa_site_cfg_loader__inet.Qarg__extensiontags, fxt.Make_data(Xoa_site_cfg_loader_.Tid__fallback, 1));
+		fxt.Test_extensiontags_y("math", "source", "ref", "graph");
+	}
+	@Test  public void Interwikimap__inet() {
+		fxt.Init_inet(fxt.Make_api(fxt.Make_api_interwikimap("w", "https://en.wikipedia.org", "c", "https://commons.wikimedia.org")));
+		fxt.Exec_load();
+		fxt.Test_db(Xoa_site_cfg_loader__inet.Qarg__interwikimap, fxt.Make_data(Xoa_site_cfg_loader_.Tid__inet, 2, "w", "https://en.wikipedia.org", "c", "https://commons.wikimedia.org"));
+	}
+	@Test  public void Inet__once() {
+		fxt.Init_db(Xoa_site_cfg_loader__inet.Qarg__extensiontags, fxt.Make_data(Xoa_site_cfg_loader_.Tid__inet, 1, "math", "source"));
+		fxt.Exec_load();
+		fxt.Test_inet_qarg("interwikimap");	// should not have extensiontags
+	}
+//		@Test   public void Print() {
+//			String s = fxt.Make_api(fxt.Make_api_interwikimap("k1", "v1", "k2", "v2"), fxt.Make_api_extensiontags2("k3", "v3", "k4", "v4"));
+//            Tfds.Write(s);
+//		}
+}
+class Xoa_site_cfg_mgr_fxt {
+	private final Xoae_app app; private final Xowe_wiki wiki;
+	private final Xoa_site_cfg_mgr site_cfg_mgr;
+	private final Db_cfg_tbl cfg_tbl;
+	private final Json_printer printer = new Json_printer();
+	public Xoa_site_cfg_mgr_fxt() {
+		// Xoa_app_.Usr_dlg_(Xoa_app_.usr_dlg_console_());
+		Xoa_test_.Inet__init();
+		this.app = Xoa_app_fxt.app_();
+		this.wiki = Xoa_app_fxt.wiki_tst_(app);
+		Xoa_test_.Db__init__mem(wiki);
+		this.cfg_tbl = wiki.Data__core_mgr().Tbl__cfg();
+		this.site_cfg_mgr = app.Site_cfg_mgr();
+	}
+	public void Init() {
+		Tfds.Now_enabled_y_(); Tfds.Now_freeze_y_();
+		Io_mgr.Instance.InitEngine_mem();
+		cfg_tbl.Delete_grp(Xoa_site_cfg_loader__db.Grp__xowa_wm_api);
+		site_cfg_mgr.Init_loader_bgn(wiki);
+		app.Utl__inet_conn().Clear();
+	}
+	public void Term() {
+		Tfds.Now_enabled_n_();
+	}
+	public void Init_db(String key, String data) {
+		cfg_tbl.Assert_bry(Xoa_site_cfg_loader__db.Grp__xowa_wm_api, key, Bry_.new_u8(data));
+	}
+	public void Test_db(String key, String expd) {
+		byte[] actl = cfg_tbl.Select_bry_or(Xoa_site_cfg_loader__db.Grp__xowa_wm_api, key, null);
+		Tfds.Eq_str_lines(expd, String_.new_u8(actl));
+	}
+	public void Init_inet(String data) {
+		String url = Xoa_site_cfg_loader__inet.Bld_url(wiki.Domain_str(), site_cfg_mgr.Data_hash(), site_cfg_mgr.Itm_ary());
+		app.Utl__inet_conn().Upload_by_bytes(url, Bry_.new_u8(data));
+	}
+	public void Init_fsys(String key, String data) {
+		Xoa_site_cfg_loader__fsys loader = Xoa_site_cfg_loader__fsys.new_(app);
+		Io_url url = loader.Make_load_url(wiki.Domain_str(), key);
+		Io_mgr.Instance.SaveFilStr(url, data);
+	}
+	public Xoa_site_cfg_mgr_fxt Exec_load() {
+		site_cfg_mgr.Load(wiki);
+		return this;
+	}
+	public void Test_extensiontags_y(String... ary) {Test_extensiontags(Bool_.Y, ary);}
+	public void Test_extensiontags_n(String... ary) {Test_extensiontags(Bool_.N, ary);}
+	public void Test_extensiontags(boolean expd_exists, String... ary) {
+		Btrie_slim_mgr trie = wiki.Mw_parser_mgr().Xnde_tag_regy().Get_trie(Xop_parser_.Parse_tid_tmpl);
+		int len = ary.length;
+		for (int i = 0; i < len; ++i) {
+			String str = ary[i];
+			byte[] bry = Bry_.new_u8(str);
+			boolean actl_exists = trie.Match_exact(bry, 0, bry.length) != null;
+			Tfds.Eq_bool(expd_exists, actl_exists, str);
+		}
+	}
+	public void Test_inet_qarg(String expd) {
+		Xoa_site_cfg_loader__inet loader__inet = (Xoa_site_cfg_loader__inet)site_cfg_mgr.Loader_ary()[2];
+		String api_url = loader__inet.Api_url();
+		Tfds.Eq(expd, String_.Mid(api_url, String_.FindBwd(api_url, "=") + 1));
+	}
+	public String Make_api(byte[]... sections) {
+		Bry_bfr bfr = Xoa_app_.Utl__bfr_mkr().Get_b512();
+		bfr.Add_str_a7("{'query':");
+		int len = sections.length;
+		bfr.Add_str_a7("{");
+		for (int i = 0; i < len; ++i) {
+			if (i != 0) bfr.Add_str_a7(",");
+			bfr.Add(sections[i]);
+		}
+		bfr.Add_str_a7("}");
+		bfr.Add_str_a7("}");
+		return printer.Print_by_bry(Bry_.new_u8(Json_doc.Make_str_by_apos(bfr.To_str_and_rls()))).To_str();
+	}
+	public byte[] Make_api_interwikimap(String... ary) {
+		Bry_bfr bfr = Xoa_app_.Utl__bfr_mkr().Get_b512();
+		bfr.Add_str_a7("'interwikimap':");
+		int len = ary.length;
+		bfr.Add_str_a7("[");
+		for (int i = 0; i < len; i += 2) {
+			if (i != 0) bfr.Add_str_a7(",");
+			bfr.Add_str_a7("{'prefix':'"	+ ary[i] + "'");
+			bfr.Add_str_a7(",'url':'"	+ ary[i + 1] + "'");
+			bfr.Add_str_a7("}");
+		}
+		bfr.Add_str_a7("]");
+		return bfr.To_bry_and_clear();
+	}
+	public byte[] Make_api_extensiontags(String... ary) {
+		Bry_bfr bfr = Xoa_app_.Utl__bfr_mkr().Get_b512();
+		bfr.Add_str_a7("'extensiontags':");
+		int len = ary.length;
+		bfr.Add_str_a7("[");
+		for (int i = 0; i < len; ++i) {
+			if (i != 0) bfr.Add_str_a7(",");
+			bfr.Add_str_a7("'<"	+ ary[i] + ">'");
+		}
+		bfr.Add_str_a7("]");
+		return bfr.To_bry_and_clear();
+	}
+	public String Make_data(int loader_tid, int flds, String... ary) {
+		Bry_bfr bfr = Xoa_app_.Utl__bfr_mkr().Get_b512();
+		if (loader_tid != Xoa_site_cfg_loader_.Tid__null)	// null when constructing data for fsys
+			bfr.Add_str_u8(Xoa_site_cfg_loader__db.Bld_meta(loader_tid)).Add_byte_nl();
+		int len = ary.length;
+		for (int i = 0; i < len; i += flds) {
+			if (i != 0) bfr.Add_byte_nl();
+			for (int j = 0; j < flds; ++j) {
+				if (j != 0) bfr.Add_byte_pipe();
+				bfr.Add_str_u8(ary[i + j]);
+			}
+		}
+		return bfr.To_str_and_rls();
+	}
+}
diff --git a/400_xowa/src/gplx/xowa/urls/Xoa_url__basic__tst.java b/400_xowa/src/gplx/xowa/apps/urls/Xoa_url__basic__tst.java
similarity index 92%
rename from 400_xowa/src/gplx/xowa/urls/Xoa_url__basic__tst.java
rename to 400_xowa/src/gplx/xowa/apps/urls/Xoa_url__basic__tst.java
index 45307a51d..e51c77a87 100644
--- a/400_xowa/src/gplx/xowa/urls/Xoa_url__basic__tst.java
+++ b/400_xowa/src/gplx/xowa/apps/urls/Xoa_url__basic__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.urls; import gplx.*; import gplx.xowa.*;
+package gplx.xowa.apps.urls; import gplx.*; import gplx.xowa.*; import gplx.xowa.apps.*;
 import org.junit.*;
 public class Xoa_url__basic__tst {
 	private final Xoa_url_fxt fxt = new Xoa_url_fxt();
diff --git a/400_xowa/src/gplx/xowa/urls/Xoa_url__to_str__tst.java b/400_xowa/src/gplx/xowa/apps/urls/Xoa_url__to_str__tst.java
similarity index 90%
rename from 400_xowa/src/gplx/xowa/urls/Xoa_url__to_str__tst.java
rename to 400_xowa/src/gplx/xowa/apps/urls/Xoa_url__to_str__tst.java
index 5059616b6..f38a3b77e 100644
--- a/400_xowa/src/gplx/xowa/urls/Xoa_url__to_str__tst.java
+++ b/400_xowa/src/gplx/xowa/apps/urls/Xoa_url__to_str__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.urls; import gplx.*; import gplx.xowa.*;
-import org.junit.*; import gplx.xowa.html.hrefs.*;
-import gplx.xowa.nss.*;
+package gplx.xowa.apps.urls; import gplx.*; import gplx.xowa.*; import gplx.xowa.apps.*;
+import org.junit.*; import gplx.xowa.htmls.hrefs.*;
+import gplx.xowa.wikis.nss.*;
 public class Xoa_url__to_str__tst {
 	private final Xoa_url__to_str__fxt fxt = new Xoa_url__to_str__fxt();
 	@Test   public void Http()				{fxt.Chk_to_str_href(Bool_.N, "http://a.org/b"						, "http://a.org/b");}
@@ -28,7 +28,7 @@ public class Xoa_url__to_str__tst {
 	@Test   public void Full__anch()		{fxt.Chk_to_str_href(Bool_.Y, "#b"									, "en.wikipedia.org/wiki/Page_1#b");}
 	@Test   public void Vnt() {
 		Xowe_wiki zh_wiki = fxt.Prep_create_wiki("zh.wikipedia.org");
-		gplx.xowa.parsers.vnts.Xop_vnt_parser_fxt.Vnt_mgr__init(zh_wiki.Lang().Vnt_mgr(), 0, String_.Ary("zh-hans", "zh-hant"));
+		gplx.xowa.langs.vnts.Xol_vnt_regy_fxt.Init__vnt_mgr(zh_wiki.Lang().Vnt_mgr(), 0, String_.Ary("zh-hans", "zh-hant"));
 		fxt.Chk_to_str_href(zh_wiki, Bool_.Y, "/site/zh.wikipedia.org/zh-hans/A"	, "zh.wikipedia.org/zh-hans/A");
 		fxt.Chk_to_str_href(zh_wiki, Bool_.Y, "/site/zh.wikipedia.org/zh-hant/A"	, "zh.wikipedia.org/zh-hant/A");
 		fxt.Chk_to_str_href(zh_wiki, Bool_.Y, "/site/zh.wikipedia.org/zh-cn/A"		, "zh.wikipedia.org/wiki/A");
diff --git a/400_xowa/src/gplx/xowa/Xoa_url_encoder.java b/400_xowa/src/gplx/xowa/apps/urls/Xoa_url_encoder.java
similarity index 86%
rename from 400_xowa/src/gplx/xowa/Xoa_url_encoder.java
rename to 400_xowa/src/gplx/xowa/apps/urls/Xoa_url_encoder.java
index 878fbe09b..f2137917a 100644
--- a/400_xowa/src/gplx/xowa/Xoa_url_encoder.java
+++ b/400_xowa/src/gplx/xowa/apps/urls/Xoa_url_encoder.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.apps.urls; import gplx.*; import gplx.xowa.*; import gplx.xowa.apps.*;
 public class Xoa_url_encoder {
 	public byte[] Encode(byte[] src) {
 		int src_len = src.length;
@@ -31,12 +31,12 @@ public class Xoa_url_encoder {
 				// FUTURE: html_entities, etc:
 			}
 		}
-		return bb.Xto_bry_and_clear();
+		return bb.To_bry_and_clear();
 	}
 	private static final byte[] Bry_amp = Bry_.new_a7("%26"), Bry_eq = Bry_.new_a7("%3D")
 		, Bry_plus = Bry_.new_a7("%2B"), Bry_apos = Bry_.new_a7("%27")
 		, Bry_underline = new byte[] {Byte_ascii.Underline}
 		;
 	Bry_bfr bb = Bry_bfr.new_();
-	public static final Xoa_url_encoder _ = new Xoa_url_encoder(); Xoa_url_encoder() {}
+	public static final Xoa_url_encoder Instance = new Xoa_url_encoder(); Xoa_url_encoder() {}
 }
diff --git a/400_xowa/src/gplx/xowa/urls/Xoa_url_parser.java b/400_xowa/src/gplx/xowa/apps/urls/Xoa_url_parser.java
similarity index 94%
rename from 400_xowa/src/gplx/xowa/urls/Xoa_url_parser.java
rename to 400_xowa/src/gplx/xowa/apps/urls/Xoa_url_parser.java
index 15bbbf294..2dbce286b 100644
--- a/400_xowa/src/gplx/xowa/urls/Xoa_url_parser.java
+++ b/400_xowa/src/gplx/xowa/apps/urls/Xoa_url_parser.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.urls; import gplx.*; import gplx.xowa.*;
+package gplx.xowa.apps.urls; import gplx.*; import gplx.xowa.*; import gplx.xowa.apps.*;
 import gplx.core.primitives.*; import gplx.core.net.*; import gplx.langs.htmls.encoders.*;
-import gplx.xowa.html.hrefs.*;
+import gplx.xowa.htmls.hrefs.*;
 import gplx.xowa.langs.*; import gplx.xowa.langs.vnts.*;
-import gplx.xowa.nss.*;
+import gplx.xowa.wikis.nss.*;
 import gplx.xowa.wikis.domains.*; import gplx.xowa.wikis.xwikis.*; import gplx.xowa.files.*;
 public class Xoa_url_parser {
 	private final Url_encoder encoder;
@@ -151,12 +151,12 @@ public class Xoa_url_parser {
 		//	thum: https://upload.wikimedia.org/wikipedia/commons/thumb/a/ab/A.jpg/220px-A.jpg
 		byte[] domain_type = tmp_segs[1];						// seg[0] = type; EX: "/wikipedia/"
 		byte[] lang = tmp_segs[2];								// seg[1] = lang; EX: "en", "fr"; "commons"
-		if (Bry_.Eq(lang, Xow_domain_type_.Bry__commons))	// commons links will have fmt of "/wikipedia/commons"; must change to wikimedia
-			domain_type = Xow_domain_type_.Bry__wikimedia;
+		if (Bry_.Eq(lang, Xow_domain_tid_.Bry__commons))	// commons links will have fmt of "/wikipedia/commons"; must change to wikimedia
+			domain_type = Xow_domain_tid_.Bry__wikimedia;
 		tmp_wiki = tmp_bfr.Clear()
 			.Add(lang).Add_byte(Byte_ascii.Dot)					// add lang/type + .;	EX: "en."; "fr."; "commons."
 			.Add(domain_type).Add(Bry_dot_org)					// add type + .org;		EX: "wikipedia.org"; "wikimedia.org";
-			.Xto_bry_and_clear();
+			.To_bry_and_clear();
 		if (tmp_segs_len > 6 && Bry_.Eq(tmp_segs[3], Xof_url_bldr.Bry_thumb)) tmp_page = tmp_segs[6];	// if "/thumb/", set page from seg[n-1] to seg[6]; EX: using thumb example above, "A.jpg", not "220px-A.jpg"
 		tmp_page = Bry_.Add(Bry_file, tmp_page);				// always add "File:" ns
 	}
@@ -267,7 +267,7 @@ public class Xoa_url_parser {
 			if (i != bgn) tmp_bfr.Add_byte(Byte_ascii.Slash);
 			tmp_bfr.Add(tmp_segs[i]);
 		}
-		return tmp_bfr.Xto_bry_and_clear();
+		return tmp_bfr.To_bry_and_clear();
 	}
 	public String Build_str(Xoa_url url) {									// transform to "canonical" form that fits url box for both XOWA and Mozilla Firefox
 		tmp_bfr.Add(url.Wiki_bry());										// add wiki;		EX: "en.wikipedia.org"
@@ -284,7 +284,7 @@ public class Xoa_url_parser {
 		}
 		if (url.Anch_bry() != null)
 			tmp_bfr.Add_byte(Byte_ascii.Hash).Add(url.Anch_bry());		// add anchor;		EX: "#B"
-		return tmp_bfr.Xto_str_and_clear();
+		return tmp_bfr.To_str_and_clear();
 	}
 	private static byte[] Strip_mobile_segment(byte[] v) {// DATE:2014-05-03
 		int pos = Bry_find_.Find_fwd(v, Byte_ascii.Dot);
@@ -305,8 +305,10 @@ public class Xoa_url_parser {
 	private static final byte[] Qarg__title = Bry_.new_a7("title");
 	private static final byte[]
 	  Bry_upload_wikimedia_org = Bry_.new_a7("upload.wikimedia.org")
-	, Bry_dot_org = Bry_.new_a7(".org")
 	, Bry_file = Bry_.new_a7("File:")	// NOTE: File does not need i18n; is a canonical namespace 
 	, Bry_wiki = Bry_.new_a7("wiki")
 	;
+	public static final byte[]
+	  Bry_dot_org = Bry_.new_a7(".org")
+	;
 }
diff --git a/400_xowa/src/gplx/xowa/urls/Xoa_url_parser__proto_tst.java b/400_xowa/src/gplx/xowa/apps/urls/Xoa_url_parser__proto_tst.java
similarity index 94%
rename from 400_xowa/src/gplx/xowa/urls/Xoa_url_parser__proto_tst.java
rename to 400_xowa/src/gplx/xowa/apps/urls/Xoa_url_parser__proto_tst.java
index 719650520..e907d91b5 100644
--- a/400_xowa/src/gplx/xowa/urls/Xoa_url_parser__proto_tst.java
+++ b/400_xowa/src/gplx/xowa/apps/urls/Xoa_url_parser__proto_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.urls; import gplx.*; import gplx.xowa.*;
+package gplx.xowa.apps.urls; import gplx.*; import gplx.xowa.*; import gplx.xowa.apps.*;
 import org.junit.*;
 public class Xoa_url_parser__proto_tst {
 	private final Xoa_url_parser_fxt tstr = new Xoa_url_parser_fxt();
diff --git a/400_xowa/src/gplx/xowa/urls/Xoa_url_parser__qarg_tst.java b/400_xowa/src/gplx/xowa/apps/urls/Xoa_url_parser__qarg_tst.java
similarity index 95%
rename from 400_xowa/src/gplx/xowa/urls/Xoa_url_parser__qarg_tst.java
rename to 400_xowa/src/gplx/xowa/apps/urls/Xoa_url_parser__qarg_tst.java
index 3e5e54f9d..ea928ef61 100644
--- a/400_xowa/src/gplx/xowa/urls/Xoa_url_parser__qarg_tst.java
+++ b/400_xowa/src/gplx/xowa/apps/urls/Xoa_url_parser__qarg_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.urls; import gplx.*; import gplx.xowa.*;
+package gplx.xowa.apps.urls; import gplx.*; import gplx.xowa.*; import gplx.xowa.apps.*;
 import org.junit.*;
 public class Xoa_url_parser__qarg_tst {
 	private final Xoa_url_parser_fxt tstr = new Xoa_url_parser_fxt();
diff --git a/400_xowa/src/gplx/xowa/urls/Xoa_url_parser__ttl_tst.java b/400_xowa/src/gplx/xowa/apps/urls/Xoa_url_parser__ttl_tst.java
similarity index 95%
rename from 400_xowa/src/gplx/xowa/urls/Xoa_url_parser__ttl_tst.java
rename to 400_xowa/src/gplx/xowa/apps/urls/Xoa_url_parser__ttl_tst.java
index f821ac249..3cc19ebc0 100644
--- a/400_xowa/src/gplx/xowa/urls/Xoa_url_parser__ttl_tst.java
+++ b/400_xowa/src/gplx/xowa/apps/urls/Xoa_url_parser__ttl_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.urls; import gplx.*; import gplx.xowa.*;
+package gplx.xowa.apps.urls; import gplx.*; import gplx.xowa.*; import gplx.xowa.apps.*;
 import org.junit.*;
 public class Xoa_url_parser__ttl_tst {
 	private final Xoa_url_parser_fxt tstr = new Xoa_url_parser_fxt();
diff --git a/400_xowa/src/gplx/xowa/urls/Xoa_url_parser__url_bar_tst.java b/400_xowa/src/gplx/xowa/apps/urls/Xoa_url_parser__url_bar_tst.java
similarity index 96%
rename from 400_xowa/src/gplx/xowa/urls/Xoa_url_parser__url_bar_tst.java
rename to 400_xowa/src/gplx/xowa/apps/urls/Xoa_url_parser__url_bar_tst.java
index 99a77e4cc..07e321ad7 100644
--- a/400_xowa/src/gplx/xowa/urls/Xoa_url_parser__url_bar_tst.java
+++ b/400_xowa/src/gplx/xowa/apps/urls/Xoa_url_parser__url_bar_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.urls; import gplx.*; import gplx.xowa.*;
+package gplx.xowa.apps.urls; import gplx.*; import gplx.xowa.*; import gplx.xowa.apps.*;
 import org.junit.*;
 public class Xoa_url_parser__url_bar_tst {
 	private final Xoa_url_parser_fxt tstr = new Xoa_url_parser_fxt();
diff --git a/400_xowa/src/gplx/xowa/urls/Xoa_url_parser__wiki_tst.java b/400_xowa/src/gplx/xowa/apps/urls/Xoa_url_parser__wiki_tst.java
similarity index 88%
rename from 400_xowa/src/gplx/xowa/urls/Xoa_url_parser__wiki_tst.java
rename to 400_xowa/src/gplx/xowa/apps/urls/Xoa_url_parser__wiki_tst.java
index 604fa0aac..e17b3f610 100644
--- a/400_xowa/src/gplx/xowa/urls/Xoa_url_parser__wiki_tst.java
+++ b/400_xowa/src/gplx/xowa/apps/urls/Xoa_url_parser__wiki_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.urls; import gplx.*; import gplx.xowa.*;
+package gplx.xowa.apps.urls; import gplx.*; import gplx.xowa.*; import gplx.xowa.apps.*;
 import org.junit.*;
 public class Xoa_url_parser__wiki_tst {
 	private final Xoa_url_parser_fxt tstr = new Xoa_url_parser_fxt();
@@ -35,7 +35,7 @@ public class Xoa_url_parser__wiki_tst {
 	}
 	@Test  public void Vnt() {
 		Xowe_wiki wiki = tstr.Wiki();
-		gplx.xowa.parsers.vnts.Xop_vnt_parser_fxt.Vnt_mgr__init(wiki.Lang().Vnt_mgr(), 0, String_.Ary("zh-hans", "zh-hant"));
+		gplx.xowa.langs.vnts.Xol_vnt_regy_fxt.Init__vnt_mgr(wiki.Lang().Vnt_mgr(), 0, String_.Ary("zh-hans", "zh-hant"));
 		tstr.Run_parse("en.wikipedia.org/zh-hans/A").Chk_wiki("en.wikipedia.org").Chk_page("A").Chk_vnt("zh-hans");
 	}
 }
diff --git a/400_xowa/src/gplx/xowa/urls/Xoa_url_parser__xcmd_tst.java b/400_xowa/src/gplx/xowa/apps/urls/Xoa_url_parser__xcmd_tst.java
similarity index 92%
rename from 400_xowa/src/gplx/xowa/urls/Xoa_url_parser__xcmd_tst.java
rename to 400_xowa/src/gplx/xowa/apps/urls/Xoa_url_parser__xcmd_tst.java
index c73bb32e0..6997c2e34 100644
--- a/400_xowa/src/gplx/xowa/urls/Xoa_url_parser__xcmd_tst.java
+++ b/400_xowa/src/gplx/xowa/apps/urls/Xoa_url_parser__xcmd_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.urls; import gplx.*; import gplx.xowa.*;
+package gplx.xowa.apps.urls; import gplx.*; import gplx.xowa.*; import gplx.xowa.apps.*;
 import org.junit.*;
 public class Xoa_url_parser__xcmd_tst {
 	private final Xoa_url_parser_fxt tstr = new Xoa_url_parser_fxt();
diff --git a/400_xowa/src/gplx/xowa/urls/Xoa_url_parser__xwiki_tst.java b/400_xowa/src/gplx/xowa/apps/urls/Xoa_url_parser__xwiki_tst.java
similarity index 95%
rename from 400_xowa/src/gplx/xowa/urls/Xoa_url_parser__xwiki_tst.java
rename to 400_xowa/src/gplx/xowa/apps/urls/Xoa_url_parser__xwiki_tst.java
index 902ca1b23..f58904c33 100644
--- a/400_xowa/src/gplx/xowa/urls/Xoa_url_parser__xwiki_tst.java
+++ b/400_xowa/src/gplx/xowa/apps/urls/Xoa_url_parser__xwiki_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.urls; import gplx.*; import gplx.xowa.*;
-import org.junit.*; import gplx.xowa.nss.*;
+package gplx.xowa.apps.urls; import gplx.*; import gplx.xowa.*; import gplx.xowa.apps.*;
+import org.junit.*; import gplx.xowa.wikis.nss.*;
 public class Xoa_url_parser__xwiki_tst {
 	private final Xoa_url_parser_fxt tstr = new Xoa_url_parser_fxt();
 	@Test  public void Commons() {	// PURPOSE: "C" was being picked up as an xwiki to commons; PAGE:no.b:C/Variabler; DATE:2014-10-14
diff --git a/400_xowa/src/gplx/xowa/urls/Xoa_url_parser_fxt.java b/400_xowa/src/gplx/xowa/apps/urls/Xoa_url_parser_fxt.java
similarity index 94%
rename from 400_xowa/src/gplx/xowa/urls/Xoa_url_parser_fxt.java
rename to 400_xowa/src/gplx/xowa/apps/urls/Xoa_url_parser_fxt.java
index d251c9016..ce6ebe0a1 100644
--- a/400_xowa/src/gplx/xowa/urls/Xoa_url_parser_fxt.java
+++ b/400_xowa/src/gplx/xowa/apps/urls/Xoa_url_parser_fxt.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.urls; import gplx.*; import gplx.xowa.*;
-import gplx.xowa.nss.*;
+package gplx.xowa.apps.urls; import gplx.*; import gplx.xowa.*; import gplx.xowa.apps.*;
+import gplx.xowa.wikis.nss.*;
 public class Xoa_url_parser_fxt {
 	protected final Xoae_app app; protected final Xowe_wiki cur_wiki;
 	protected final Xoa_url_parser parser;
@@ -40,7 +40,7 @@ public class Xoa_url_parser_fxt {
 	public Xoa_url_parser_fxt Prep_add_xwiki_to_user(String alias, String domain)				{return Prep_xwiki(app.Usere().Wiki(), alias, domain, null);}
 	public Xoa_url_parser_fxt Prep_add_xwiki_to_user(String alias, String domain, String fmt)	{return Prep_xwiki(app.Usere().Wiki(), alias, domain, fmt);}
 	public Xoa_url_parser_fxt Prep_xwiki(Xow_wiki wiki, String alias, String domain, String fmt) {
-		wiki.Xwiki_mgr().Add_full(Bry_.new_u8(alias), Bry_.new_u8(domain), Bry_.new_u8_safe(fmt));
+		wiki.Xwiki_mgr().Add_by_atrs(Bry_.new_u8(alias), Bry_.new_u8(domain), Bry_.new_u8_safe(fmt));
 		return this;
 	}
 	public Xow_ns_mgr Prep_get_ns_mgr_from_meta(String wiki) {
diff --git a/400_xowa/src/gplx/xowa/bldrs/Db_mgr_fxt.java b/400_xowa/src/gplx/xowa/bldrs/Db_mgr_fxt.java
index 75cd665c0..6d61980aa 100644
--- a/400_xowa/src/gplx/xowa/bldrs/Db_mgr_fxt.java
+++ b/400_xowa/src/gplx/xowa/bldrs/Db_mgr_fxt.java
@@ -17,8 +17,8 @@ along with this program.  If not, see .
 */
 package gplx.xowa.bldrs; import gplx.*; import gplx.xowa.*;
 import gplx.core.primitives.*; import gplx.core.strings.*;
-import gplx.dbs.*; import gplx.dbs.qrys.*; import gplx.xowa.dbs.*; import gplx.xowa.specials.search.*; import gplx.xowa.ctgs.*;
-import gplx.xowa.nss.*;
+import gplx.dbs.*; import gplx.dbs.qrys.*; import gplx.xowa.wikis.dbs.*; import gplx.xowa.specials.search.*; import gplx.xowa.wikis.ctgs.*;
+import gplx.xowa.wikis.nss.*;
 import gplx.xowa.wikis.data.*; import gplx.xowa.wikis.data.tbls.*; import gplx.xowa.bldrs.infos.*;
 public class Db_mgr_fxt {
 	public Db_mgr_fxt Ctor_fsys()	{bldr_fxt = new Xob_fxt().Ctor(Xoa_test_.Url_root().GenSubDir("root")); return this;} 
@@ -31,7 +31,7 @@ public class Db_mgr_fxt {
 	public Xowd_page_itm doc_wo_date_(int id, String title, String text) {return bldr_fxt.doc_(id, "2012-01-02 03:04", title, text);}
 	public Xowd_page_itm doc_ttl_(int id, String title) {return bldr_fxt.doc_(id, "2012-01-02 03:04", title, "IGNORE");}
 	public Db_mgr_fxt Init_fil(String url, String raw) {return Init_fil(Io_url_.new_fil_(url), raw);}
-	public Db_mgr_fxt Init_fil(Io_url url, String raw) {Io_mgr.I.SaveFilStr(url, raw); return this;}
+	public Db_mgr_fxt Init_fil(Io_url url, String raw) {Io_mgr.Instance.SaveFilStr(url, raw); return this;}
 	public Db_mgr_fxt Exec_run(Xobd_wkr wkr)		{bldr_fxt.Run(wkr); return this;}
 	public Db_mgr_fxt Exec_run(Xob_cmd cmd)			{bldr_fxt.Run_cmds(cmd); return this;}
 	public Db_mgr_fxt Exec_run(Xobd_parser_wkr wkr) {bldr_fxt.Run(wkr); return this;}
@@ -109,7 +109,7 @@ public class Db_mgr_fxt {
 		Tfds.Eq_ary(expd, Xto_int_ary(ctg));
 	}
 	public void Test_file(String url, String expd) {
-		String actl = Io_mgr.I.LoadFilStr(url);
+		String actl = Io_mgr.Instance.LoadFilStr(url);
 		Tfds.Eq_str_lines(expd, actl);
 	}
 	int[] Xto_int_ary(Xoctg_data_ctg ctg) {
@@ -127,11 +127,11 @@ public class Db_mgr_fxt {
 	}
 	public void Init_db_sqlite() {
 		Xowe_wiki wiki = this.Wiki();
-		Db_conn_pool.I.Clear();
-		Db_conn_bldr.I.Reg_default_sqlite();
-		Io_mgr.I.DeleteDir_cmd(wiki.Fsys_mgr().Root_dir()).MissingIgnored_().Exec();
+		Db_conn_pool.Instance.Clear();
+		Db_conn_bldr.Instance.Reg_default_sqlite();
+		Io_mgr.Instance.DeleteDir_cmd(wiki.Fsys_mgr().Root_dir()).MissingIgnored_().Exec();
 		wiki.Db_mgr_create_as_sql().Core_data_mgr().Init_by_make(Xowd_core_db_props.Test, Xob_info_session.Test);
-		Io_mgr.I.SaveFilStr(wiki.Import_cfg().Src_dir().GenSubFil("a.xml"), "");
+		Io_mgr.Instance.SaveFilStr(wiki.Import_cfg().Src_dir().GenSubFil("a.xml"), "");
 	}
 	public void Rls() {
 		this.Wiki().Db_mgr_as_sql().Core_data_mgr().Rls();
diff --git a/400_xowa/src/gplx/xowa/bldrs/Xob_base_fxt.java b/400_xowa/src/gplx/xowa/bldrs/Xob_base_fxt.java
index 61ffd3388..f7247d944 100644
--- a/400_xowa/src/gplx/xowa/bldrs/Xob_base_fxt.java
+++ b/400_xowa/src/gplx/xowa/bldrs/Xob_base_fxt.java
@@ -43,7 +43,7 @@ public class Xob_base_fxt {
 			fxt_ary[i].Init_(bldr, wiki);
 	}
 	public Xob_base_fxt Init_fil(String url, String raw) {return Init_fil(Io_url_.new_fil_(url), raw);}
-	public Xob_base_fxt Init_fil(Io_url url, String raw) {Io_mgr.I.SaveFilStr(url, raw); return this;}
+	public Xob_base_fxt Init_fil(Io_url url, String raw) {Io_mgr.Instance.SaveFilStr(url, raw); return this;}
 	public Xob_base_fxt Exec_cmd(String cmd_key, GfoMsg... msgs) {
 		Xob_cmd cmd = (Xob_cmd)bldr.Cmd_mgr().Add_cmd(wiki, cmd_key);
 		this.bldr_itm = cmd;
@@ -58,7 +58,7 @@ public class Xob_base_fxt {
 	}
 	public Xob_base_fxt Test_fil(String url, String expd) {return Test_fil(Io_url_.new_fil_(url), expd);}
 	public Xob_base_fxt Test_fil(Io_url url, String expd) {
-		Tfds.Eq_str_lines(expd, Io_mgr.I.LoadFilStr(url));
+		Tfds.Eq_str_lines(expd, Io_mgr.Instance.LoadFilStr(url));
 		return this;
 	}
 	public static void Run_cmd(Xob_bldr bldr, Xob_cmd cmd) {
diff --git a/400_xowa/src/gplx/xowa/bldrs/Xob_bldr.java b/400_xowa/src/gplx/xowa/bldrs/Xob_bldr.java
index 4debb4c78..e8c08ef1d 100644
--- a/400_xowa/src/gplx/xowa/bldrs/Xob_bldr.java
+++ b/400_xowa/src/gplx/xowa/bldrs/Xob_bldr.java
@@ -17,7 +17,7 @@ along with this program.  If not, see .
 */
 package gplx.xowa.bldrs; import gplx.*; import gplx.xowa.*;
 import gplx.core.consoles.*;
-import gplx.xowa.apps.*; import gplx.xowa.bldrs.*; import gplx.xowa.bldrs.xmls.*; import gplx.xowa.bldrs.cfgs.*; import gplx.xowa.bldrs.langs.*;
+import gplx.xowa.apps.*; import gplx.xowa.bldrs.*; import gplx.xowa.bldrs.xmls.*; import gplx.xowa.bldrs.cfgs.*; import gplx.xowa.langs.bldrs.*;
 public class Xob_bldr implements GfoInvkAble {
 	private boolean pause_at_end = false; private long prv_prog_time; private Xob_xml_parser dump_parser;
 	public Xob_bldr(Xoae_app app) {
@@ -69,7 +69,7 @@ public class Xob_bldr implements GfoInvkAble {
 			}
 			app.Usr_dlg().Note_many("", "", "bldr done: ~{0}", TimeSpanAdp_.from_(time_bgn).XtoStrUiAbbrv());
 			cmd_mgr.Clear();
-			if (pause_at_end && !Env_.Mode_testing()) {Console_adp__sys.I.Read_line("press enter to continue");}
+			if (pause_at_end && !Env_.Mode_testing()) {Console_adp__sys.Instance.Read_line("press enter to continue");}
 		}
 		catch (Exception e) {
 			app.Bldr__running_(false);
diff --git a/400_xowa/src/gplx/xowa/bldrs/Xob_cmd_mgr.java b/400_xowa/src/gplx/xowa/bldrs/Xob_cmd_mgr.java
index 357b12386..cca23c8cd 100644
--- a/400_xowa/src/gplx/xowa/bldrs/Xob_cmd_mgr.java
+++ b/400_xowa/src/gplx/xowa/bldrs/Xob_cmd_mgr.java
@@ -19,7 +19,7 @@ package gplx.xowa.bldrs; import gplx.*; import gplx.xowa.*;
 import gplx.core.primitives.*;
 import gplx.xowa.wikis.*; import gplx.xowa.xtns.wdatas.imports.*;
 import gplx.xowa.bldrs.cmds.texts.*; import gplx.xowa.bldrs.cmds.texts.sqls.*; import gplx.xowa.bldrs.cmds.texts.tdbs.*; import gplx.xowa.bldrs.cmds.files.*; import gplx.xowa.bldrs.cmds.ctgs.*; import gplx.xowa.bldrs.cmds.utils.*; import gplx.xowa.bldrs.cmds.wikis.*;
-import gplx.xowa.files.origs.*; import gplx.xowa.html.hdumps.bldrs.*;
+import gplx.xowa.files.origs.*; import gplx.xowa.htmls.hdumps.bldrs.*;
 public class Xob_cmd_mgr implements GfoInvkAble {
 	public Xob_cmd_mgr(Xob_bldr bldr) {this.bldr = bldr;} private Xob_bldr bldr;
 	public void Clear() {list.Clear(); dump_rdrs.Clear();}
diff --git a/400_xowa/src/gplx/xowa/bldrs/Xob_db_file.java b/400_xowa/src/gplx/xowa/bldrs/Xob_db_file.java
index c043a7402..9c912e870 100644
--- a/400_xowa/src/gplx/xowa/bldrs/Xob_db_file.java
+++ b/400_xowa/src/gplx/xowa/bldrs/Xob_db_file.java
@@ -34,7 +34,7 @@ public class Xob_db_file {
 	public static Xob_db_file new__redlink(Io_url dir)				{return new_(dir, Name__redlink);}
 	public static Xob_db_file new_(Io_url dir, String name) {
 		Io_url url = dir.GenSubFil(name);
-		Db_conn_bldr_data conn_data = Db_conn_bldr.I.Get_or_new(url);
+		Db_conn_bldr_data conn_data = Db_conn_bldr.Instance.Get_or_new(url);
 		Db_conn conn = conn_data.Conn();
 		Xob_db_file rv = new Xob_db_file(url, conn);
 		if (conn_data.Created())
diff --git a/400_xowa/src/gplx/xowa/bldrs/Xob_fxt.java b/400_xowa/src/gplx/xowa/bldrs/Xob_fxt.java
index b6317440c..03c868f81 100644
--- a/400_xowa/src/gplx/xowa/bldrs/Xob_fxt.java
+++ b/400_xowa/src/gplx/xowa/bldrs/Xob_fxt.java
@@ -17,14 +17,14 @@ along with this program.  If not, see .
 */
 package gplx.xowa.bldrs; import gplx.*; import gplx.xowa.*;
 import gplx.core.tests.*;
-import gplx.ios.*; import gplx.dbs.*; import gplx.xowa.tdbs.*; import gplx.xowa.wikis.data.tbls.*; import gplx.xowa.bldrs.cmds.texts.tdbs.*;
+import gplx.ios.*; import gplx.dbs.*; import gplx.xowa.wikis.tdbs.*; import gplx.xowa.wikis.data.tbls.*; import gplx.xowa.bldrs.cmds.texts.tdbs.*;
 public class Xob_fxt {
 	public Xob_fxt Ctor_mem() {
-		Io_mgr.I.InitEngine_mem();
+		Io_mgr.Instance.InitEngine_mem();
 		return Ctor(Io_url_.mem_dir_("mem/xowa/"));
 	}
 	public Xob_fxt Ctor(Io_url root_dir) {
-		Db_conn_bldr.I.Reg_default_sqlite();
+		Db_conn_bldr.Instance.Reg_default_sqlite();
 		app = Xoa_app_fxt.app_("linux", root_dir);
 		wiki = Xoa_app_fxt.wiki_tst_(app);
 		bldr = Xoa_app_fxt.bldr_(app);
@@ -40,7 +40,7 @@ public class Xob_fxt {
 	public Io_url fil_site_ctg(int idx)				{return wiki.Tdb_fsys_mgr().Url_site_fil(Xotdb_dir_info_.Tid_category, idx);}
 	public Io_url fil_site_id(int idx)				{return wiki.Tdb_fsys_mgr().Url_site_fil(Xotdb_dir_info_.Tid_id, idx);}
 	public Io_url fil_reg(byte tid) 				{return wiki.Tdb_fsys_mgr().Url_site_reg(tid);}
-	public Io_url fil_reg(int ns_id, byte tid) 		{return wiki.Tdb_fsys_mgr().Url_ns_reg(Int_.Xto_str_pad_bgn_zero(ns_id, 3), tid);}
+	public Io_url fil_reg(int ns_id, byte tid) 		{return wiki.Tdb_fsys_mgr().Url_ns_reg(Int_.To_str_pad_bgn_zero(ns_id, 3), tid);}
 	public Xob_fxt Fil_expd(Io_url url, String... expd) {
 		String text = String_.Concat_lines_nl_skip_last(expd);	// skipLast b/c if trailing line wanted, easier to pass in extra argument for ""
 		expd_list.Add(new Io_fil_chkr(url, text));
@@ -91,7 +91,7 @@ public class Xob_fxt {
 		Io_fil[] rv = new Io_fil[len];
 		for (int i = 0; i < len; i++) {
 			Io_url url = ary[i];
-			String data = Io_mgr.I.LoadFilStr(url);
+			String data = Io_mgr.Instance.LoadFilStr(url);
 			rv[i] = new Io_fil(url, data);
 		}
 		return rv;
@@ -150,10 +150,10 @@ public class Xob_fxt {
 		return (Io_fil[])rv.To_ary(Io_fil.class);
 	}
 	private void wiki_fil_add(List_adp list, Io_url root_dir) {
-		Io_url[] ary = Io_mgr.I.QueryDir_args(root_dir).Recur_().ExecAsUrlAry();
+		Io_url[] ary = Io_mgr.Instance.QueryDir_args(root_dir).Recur_().ExecAsUrlAry();
 		for (int i = 0; i < ary.length; i++) {
 			Io_url url = ary[i]; 
-			Io_fil fil = new Io_fil(url, Io_mgr.I.LoadFilStr_args(url).MissingIgnored_().Exec());
+			Io_fil fil = new Io_fil(url, Io_mgr.Instance.LoadFilStr_args(url).MissingIgnored_().Exec());
 			list.Add(fil);
 		}		
 	}
diff --git a/400_xowa/src/gplx/xowa/bldrs/Xob_ns_to_db_mgr.java b/400_xowa/src/gplx/xowa/bldrs/Xob_ns_to_db_mgr.java
index f54fe88d0..b143277f4 100644
--- a/400_xowa/src/gplx/xowa/bldrs/Xob_ns_to_db_mgr.java
+++ b/400_xowa/src/gplx/xowa/bldrs/Xob_ns_to_db_mgr.java
@@ -19,7 +19,7 @@ package gplx.xowa.bldrs; import gplx.*; import gplx.xowa.*;
 import gplx.xowa.wikis.data.*; import gplx.xowa.wikis.data.tbls.*; import gplx.xowa.bldrs.cmds.*;
 public class Xob_ns_to_db_mgr {
 	private final Xob_ns_to_db_wkr wkr; private final Xowd_db_mgr db_mgr; private final long db_max; private boolean one_file_conn_init = true;
-	private final Ordered_hash db_list = Ordered_hash_.new_();
+	private final Ordered_hash db_list = Ordered_hash_.New();
 	public Xob_ns_to_db_mgr(Xob_ns_to_db_wkr wkr, Xowd_db_mgr db_mgr, long db_max) {
 		this.wkr = wkr; this.db_mgr = db_mgr; this.db_max = db_max;
 	}
@@ -57,7 +57,7 @@ public class Xob_ns_to_db_mgr {
 		return rv;
 	}
 	private Xowd_db_file Init_db(Xob_ns_file_itm ns_file_itm) {
-		Xowd_db_file rv = db_mgr.Dbs__make_by_tid(ns_file_itm.Db_file_tid(), Int_.Xto_str(ns_file_itm.Ns_ids(), "|"), ns_file_itm.Nth_db_idx(), ns_file_itm.Make_file_name());
+		Xowd_db_file rv = db_mgr.Dbs__make_by_tid(ns_file_itm.Db_file_tid(), Int_.To_str(ns_file_itm.Ns_ids(), "|"), ns_file_itm.Nth_db_idx(), ns_file_itm.Make_file_name());
 		ns_file_itm.Nth_db_id_(rv.Id());
 		Init_tbl(rv);
 		return rv;
diff --git a/400_xowa/src/gplx/xowa/bldrs/Xobd_rdr.java b/400_xowa/src/gplx/xowa/bldrs/Xobd_rdr.java
index 7cd2528bf..aea96d114 100644
--- a/400_xowa/src/gplx/xowa/bldrs/Xobd_rdr.java
+++ b/400_xowa/src/gplx/xowa/bldrs/Xobd_rdr.java
@@ -18,7 +18,7 @@ along with this program.  If not, see .
 package gplx.xowa.bldrs; import gplx.*; import gplx.xowa.*;
 import gplx.core.consoles.*;
 import gplx.ios.*;
-import gplx.xowa.nss.*;
+import gplx.xowa.wikis.nss.*;
 import gplx.xowa.bldrs.xmls.*; import gplx.xowa.wikis.data.tbls.*; import gplx.xowa.parsers.tmpls.*;
 public class Xobd_rdr implements Xob_cmd {
 	private Xob_bldr bldr; private Xowe_wiki wiki;
@@ -49,7 +49,7 @@ public class Xobd_rdr implements Xob_cmd {
 			while (true) {
 				int cur_pos = parser.Parse_page(page, usr_dlg, fil, fil.Bfr(), prv_pos, ns_mgr); if (cur_pos == Bry_.NotFound) break;
 				if (cur_pos < prv_pos)
-					bldr.Print_prog_msg(fil.Fil_pos(), fil_len, 1, optRdrFillFmt, Int_.Xto_str_pad_bgn_zero((int)(fil.Fil_pos() / Io_mgr.Len_mb), Int_.DigitCount((int)(fil.Fil_len() / Io_mgr.Len_mb))), "", String_.new_u8(page.Ttl_full_db()));
+					bldr.Print_prog_msg(fil.Fil_pos(), fil_len, 1, optRdrFillFmt, Int_.To_str_pad_bgn_zero((int)(fil.Fil_pos() / Io_mgr.Len_mb), Int_.DigitCount((int)(fil.Fil_len() / Io_mgr.Len_mb))), "", String_.new_u8(page.Ttl_full_db()));
 				prv_pos = cur_pos;
 				try {
 					for (int i = 0; i < wkr_ary_len; i++)
@@ -61,14 +61,14 @@ public class Xobd_rdr implements Xob_cmd {
 					if (dividend >= fil_len) dividend = fil_len - 1; // prevent % from going over 100
 					String msg = Decimal_adp_.CalcPctStr(dividend, fil_len, "00.00") + "|" + String_.new_u8(page.Ttl_full_db()) + "|" + Err_.Message_gplx_log(e)  + "|" + Xot_tmpl_wtr.Err_string; Xot_tmpl_wtr.Err_string = "";
 					bldr.Usr_dlg().Log_wkr().Log_to_session(msg);
-					Console_adp__sys.I.Write_str_w_nl(msg);
+					Console_adp__sys.Instance.Write_str_w_nl(msg);
 				}
 			}
 		}
 		catch (Exception e) {
 			String msg = Err_.Message_lang(e);
 			bldr.Usr_dlg().Log_wkr().Log_to_session(msg);
-			Console_adp__sys.I.Write_str_w_nl(msg);
+			Console_adp__sys.Instance.Write_str_w_nl(msg);
 			throw Err_.new_exc(e, "xo", "error while reading dump");
 		}
 		finally {fil.Rls();}
@@ -81,7 +81,7 @@ public class Xobd_rdr implements Xob_cmd {
 		for (int i = 0; i < wkr_ary_len; i++)
 			wkr_ary[i].Wkr_print();
 	}
-	public void Wkr_add(Xobd_wkr wkr) {wkrs.Add(wkr.Wkr_key(), wkr);} private Ordered_hash wkrs = Ordered_hash_.new_();
+	public void Wkr_add(Xobd_wkr wkr) {wkrs.Add(wkr.Wkr_key(), wkr);} private Ordered_hash wkrs = Ordered_hash_.New();
 	public Xobd_wkr Wkr_get(String key) {return (Xobd_wkr)wkrs.Get_by(key);}
 	public Xobd_parser Page_parser_assert() {
 		if (page_parser == null) {
@@ -91,7 +91,7 @@ public class Xobd_rdr implements Xob_cmd {
 		return page_parser;
 	}	private Xobd_parser page_parser;
 	public static Io_url Find_fil_by(Io_url dir, String filter) {
-		Io_url[] fil_ary = Io_mgr.I.QueryDir_args(dir).FilPath_(filter).ExecAsUrlAry();
+		Io_url[] fil_ary = Io_mgr.Instance.QueryDir_args(dir).FilPath_(filter).ExecAsUrlAry();
 		int fil_ary_len = fil_ary.length;
 		return fil_ary_len == 0 ? null : fil_ary[fil_ary_len - 1];	// return last
 	}
diff --git a/400_xowa/src/gplx/xowa/bldrs/Xobdc_merger.java b/400_xowa/src/gplx/xowa/bldrs/Xobdc_merger.java
index 79e9671bf..c250d6a82 100644
--- a/400_xowa/src/gplx/xowa/bldrs/Xobdc_merger.java
+++ b/400_xowa/src/gplx/xowa/bldrs/Xobdc_merger.java
@@ -17,10 +17,10 @@ along with this program.  If not, see .
 */
 package gplx.xowa.bldrs; import gplx.*; import gplx.xowa.*;
 import gplx.ios.*; import gplx.lists.*;
-import gplx.xowa.nss.*;
+import gplx.xowa.wikis.nss.*;
 import gplx.xowa.bldrs.wtrs.*;
 public class Xobdc_merger {
-	public static void Basic(Gfo_usr_dlg usr_dlg, Io_url_gen dump_url_gen, Io_url sort_dir, int memory_max, Io_line_rdr_key_gen key_gen, Io_sort_cmd make_cmd) {Basic(usr_dlg, dump_url_gen, sort_dir, memory_max, Io_sort_split_itm_sorter._, key_gen, make_cmd);}
+	public static void Basic(Gfo_usr_dlg usr_dlg, Io_url_gen dump_url_gen, Io_url sort_dir, int memory_max, Io_line_rdr_key_gen key_gen, Io_sort_cmd make_cmd) {Basic(usr_dlg, dump_url_gen, sort_dir, memory_max, Io_sort_split_itm_sorter.Instance, key_gen, make_cmd);}
 	public static void Basic(Gfo_usr_dlg usr_dlg, Io_url_gen dump_url_gen, Io_url sort_dir, int memory_max, ComparerAble row_comparer, Io_line_rdr_key_gen key_gen, Io_sort_cmd make_cmd) {
 		Io_sort sort = new Io_sort().Memory_max_(memory_max);
 		Io_url_gen sort_url_gen = Io_url_gen_.dir_(sort_dir);
diff --git a/400_xowa/src/gplx/xowa/bldrs/Xobdc_utl.java b/400_xowa/src/gplx/xowa/bldrs/Xobdc_utl.java
index 84161c7a1..027866297 100644
--- a/400_xowa/src/gplx/xowa/bldrs/Xobdc_utl.java
+++ b/400_xowa/src/gplx/xowa/bldrs/Xobdc_utl.java
@@ -17,7 +17,7 @@ along with this program.  If not, see .
 */
 package gplx.xowa.bldrs; import gplx.*; import gplx.xowa.*;
 import gplx.ios.*; import gplx.lists.*;
-import gplx.xowa.tdbs.*;
+import gplx.xowa.wikis.tdbs.*;
 class Io_sort_filCmd_reg implements Io_sort_filCmd { // 123|bgn|end|1
 	public Io_sort_filCmd_reg() {}
 	public void Bfr_add(Io_line_rdr stream) {
@@ -35,7 +35,7 @@ class Io_sort_filCmd_reg implements Io_sort_filCmd { // 123|bgn|end|1
 		itm_count = 0;
 	}
 	public void Flush(Io_url fil) {
-		Io_mgr.I.SaveFilBry(fil, bfr.Bfr(), bfr.Len());
+		Io_mgr.Instance.SaveFilBry(fil, bfr.Bfr(), bfr.Len());
 	}	private Bry_bfr bfr = Bry_bfr.new_(); int fil_idx = 0; int itm_count = 0;
 }
 class Io_url_gen_nest implements gplx.ios.Io_url_gen {
@@ -48,6 +48,6 @@ class Io_url_gen_nest implements gplx.ios.Io_url_gen {
 		}
 		return rv;
 	}
-	public void Del_all() {if (Io_mgr.I.ExistsDir(root_dir)) Io_mgr.I.DeleteDirDeep(root_dir);}
+	public void Del_all() {if (Io_mgr.Instance.ExistsDir(root_dir)) Io_mgr.Instance.DeleteDirDeep(root_dir);}
 	public Io_url_gen_nest(Io_url root_dir, String ext) {this.root_dir = root_dir; this.ext = Bry_.new_u8(ext);} Io_url root_dir; byte[] ext; int fil_idx;
 }
diff --git a/400_xowa/src/gplx/xowa/bldrs/aria2/Aria2_lib_mgr.java b/400_xowa/src/gplx/xowa/bldrs/aria2/Aria2_lib_mgr.java
index 811598bc0..faa4c44f6 100644
--- a/400_xowa/src/gplx/xowa/bldrs/aria2/Aria2_lib_mgr.java
+++ b/400_xowa/src/gplx/xowa/bldrs/aria2/Aria2_lib_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.bldrs.aria2; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*;
-import gplx.xowa.apps.fsys.*; import gplx.xowa.wms.dumps.*;
+import gplx.xowa.apps.fsys.*; import gplx.xowa.bldrs.wms.dumps.*;
 public class Aria2_lib_mgr implements GfoInvkAble {
 	public ProcessAdp Lib() {return lib;} private ProcessAdp lib = new ProcessAdp();
 	public void Init_by_app(Xoae_app app) {
diff --git a/400_xowa/src/gplx/xowa/wikis/xwikis/cfgs/Xoac_wiki_cfg_bldr_cmd.java b/400_xowa/src/gplx/xowa/bldrs/cfgs/Xoac_wiki_cfg_bldr_cmd.java
similarity index 51%
rename from 400_xowa/src/gplx/xowa/wikis/xwikis/cfgs/Xoac_wiki_cfg_bldr_cmd.java
rename to 400_xowa/src/gplx/xowa/bldrs/cfgs/Xoac_wiki_cfg_bldr_cmd.java
index e03a31c0c..fe7f0f5d7 100644
--- a/400_xowa/src/gplx/xowa/wikis/xwikis/cfgs/Xoac_wiki_cfg_bldr_cmd.java
+++ b/400_xowa/src/gplx/xowa/bldrs/cfgs/Xoac_wiki_cfg_bldr_cmd.java
@@ -15,24 +15,16 @@ 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.wikis.xwikis.cfgs; import gplx.*; import gplx.xowa.*; import gplx.xowa.wikis.*; import gplx.xowa.wikis.xwikis.*;
+package gplx.xowa.bldrs.cfgs; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*;
 import gplx.core.strings.*;
 public class Xoac_wiki_cfg_bldr_cmd {
 	public Xoac_wiki_cfg_bldr_cmd(String key, String text) {this.key = key; this.text = text;}
 	public String Key() {return key;} private String key;
 	public String Text() {return text;} private String text;
 	public String Exec(String_bldr sb, String wiki, String src) {
-		String sect_txt_bgn = sb.Add("// ").Add(key).Add(".bgn\n").Xto_str_and_clear();
-		String sect_txt_end = sb.Add("// ").Add(key).Add(".end\n").Xto_str_and_clear();
-		String sect_txt_all = sb.Add(sect_txt_bgn).Add(text + "\n").Add(sect_txt_end).Xto_str_and_clear();	// NOTE: always add \n; convenience for single line cmds
-//			int sect_pos_bgn = String_.FindFwd(src, sect_txt_bgn);
-//			if (sect_pos_bgn == String_.Find_none)	// new cmd; add to end of file
-			return src + sect_txt_all;
-//			int sect_pos_end = String_.FindFwd(src, sect_txt_end);
-//			if (sect_pos_end == String_.Find_none)
-//				throw Err_.new_wo_type("section_fail: " + wiki + " " + key);
-//			try {
-//				return sb.Add(String_.Mid(src, 0, sect_pos_bgn)).Add(sect_txt_all).Add(String_.Mid(src, sect_pos_end + String_.Len(sect_txt_end), String_.Len(text))).Xto_str_and_clear();
-//			} catch (Exception e) {Err_.Noop(e); throw Err_.new_wo_type("section_fail: " + wiki + " " + key);}
+		String sect_txt_bgn = sb.Add("// ").Add(key).Add(".bgn\n").To_str_and_clear();
+		String sect_txt_end = sb.Add("// ").Add(key).Add(".end\n").To_str_and_clear();
+		String sect_txt_all = sb.Add(sect_txt_bgn).Add(text + "\n").Add(sect_txt_end).To_str_and_clear();	// NOTE: always add \n; convenience for single line cmds
+		return src + sect_txt_all;
 	}
 }
diff --git a/400_xowa/src/gplx/xowa/wikis/xwikis/cfgs/Xoac_wiki_cfg_bldr_fil.java b/400_xowa/src/gplx/xowa/bldrs/cfgs/Xoac_wiki_cfg_bldr_fil.java
similarity index 91%
rename from 400_xowa/src/gplx/xowa/wikis/xwikis/cfgs/Xoac_wiki_cfg_bldr_fil.java
rename to 400_xowa/src/gplx/xowa/bldrs/cfgs/Xoac_wiki_cfg_bldr_fil.java
index f43a81570..b749e4335 100644
--- a/400_xowa/src/gplx/xowa/wikis/xwikis/cfgs/Xoac_wiki_cfg_bldr_fil.java
+++ b/400_xowa/src/gplx/xowa/bldrs/cfgs/Xoac_wiki_cfg_bldr_fil.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.wikis.xwikis.cfgs; import gplx.*; import gplx.xowa.*; import gplx.xowa.wikis.*; import gplx.xowa.wikis.xwikis.*;
+package gplx.xowa.bldrs.cfgs; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*;
 public class Xoac_wiki_cfg_bldr_fil implements GfoInvkAble {
 	public Xoac_wiki_cfg_bldr_fil(String wiki) {this.wiki = wiki;}
 	public String Wiki() {return wiki;} private String wiki;
diff --git a/400_xowa/src/gplx/xowa/bldrs/cfgs/Xob_wiki_cfg_bldr.java b/400_xowa/src/gplx/xowa/bldrs/cfgs/Xob_wiki_cfg_bldr.java
index e8e89a9c4..96c2a9f0f 100644
--- a/400_xowa/src/gplx/xowa/bldrs/cfgs/Xob_wiki_cfg_bldr.java
+++ b/400_xowa/src/gplx/xowa/bldrs/cfgs/Xob_wiki_cfg_bldr.java
@@ -17,7 +17,6 @@ along with this program.  If not, see .
 */
 package gplx.xowa.bldrs.cfgs; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*;
 import gplx.core.strings.*;
-import gplx.xowa.wikis.xwikis.cfgs.*;
 public class Xob_wiki_cfg_bldr implements GfoInvkAble {
 	public Xob_wiki_cfg_bldr(Xob_bldr bldr) {this.app = bldr.App();} private Xoae_app app;
 	public void Exec() {
@@ -30,14 +29,14 @@ public class Xob_wiki_cfg_bldr implements GfoInvkAble {
 	private void Exec_fil(Xoac_wiki_cfg_bldr_fil fil) {
 		String wiki_key = fil.Wiki();
 		Io_url cfg_file = app.Fsys_mgr().Cfg_wiki_core_dir().GenSubFil(wiki_key + ".gfs");
-		String cfg_text = Io_mgr.I.LoadFilStr_args(cfg_file).MissingIgnored_().Exec();
+		String cfg_text = Io_mgr.Instance.LoadFilStr_args(cfg_file).MissingIgnored_().Exec();
 		int len = fil.Itms_count();
 		String_bldr sb = String_bldr_.new_();
 		for (int i = 0; i < len; i++) {
 			Xoac_wiki_cfg_bldr_cmd cmd = fil.Itms_get_at(i);
 			cfg_text = cmd.Exec(sb, wiki_key, cfg_text);
 		}
-		Io_mgr.I.SaveFilStr(cfg_file, cfg_text);
+		Io_mgr.Instance.SaveFilStr(cfg_file, cfg_text);
 	}
 	public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) {
 		if		(ctx.Match(k, Invk_get))		 		return Itms_get_or_new(m.ReadStr("v"));
@@ -53,5 +52,5 @@ public class Xob_wiki_cfg_bldr implements GfoInvkAble {
 			hash.Add(wiki, rv);
 		}
 		return rv;
-	}	private Ordered_hash hash = Ordered_hash_.new_();
+	}	private Ordered_hash hash = Ordered_hash_.New();
 }
diff --git a/400_xowa/src/gplx/xowa/bldrs/cfgs/Xob_wiki_cfg_bldr_tst.java b/400_xowa/src/gplx/xowa/bldrs/cfgs/Xob_wiki_cfg_bldr_tst.java
index 5c74a32da..0269d4f0e 100644
--- a/400_xowa/src/gplx/xowa/bldrs/cfgs/Xob_wiki_cfg_bldr_tst.java
+++ b/400_xowa/src/gplx/xowa/bldrs/cfgs/Xob_wiki_cfg_bldr_tst.java
@@ -59,13 +59,13 @@ public class Xob_wiki_cfg_bldr_tst {
 	}
 //		@Test  public void Lang_names_run() {
 //			Io_url dir = Io_url_.new_dir_("/var/www/mediawiki/languages/messages/");
-//			Io_url[] fils = Io_mgr.I.QueryDir_args(dir).ExecAsUrlAry();
+//			Io_url[] fils = Io_mgr.Instance.QueryDir_args(dir).ExecAsUrlAry();
 //			int fils_len = fils.length;
 //			String_bldr sb = String_bldr_.new_();
 //			for (int i = 0; i < fils_len; i++) {
 //				Io_url fil = fils[i];
 //				String lang_code = String_.Lower(String_.Replace(fil.NameOnly(), "Messages", ""));
-//				String txt = Io_mgr.I.LoadFilStr(fil);
+//				String txt = Io_mgr.Instance.LoadFilStr(fil);
 //				String[] lines = String_.Split(txt, '\n');
 //				String line = lines[1];
 //				line = String_.Replace(line, "/** ", "");
@@ -89,11 +89,11 @@ public class Xob_wiki_cfg_bldr_tst {
 //				String[] terms = String_.Split(line, '|');
 //				sb.Add(lang_code).Add("|").Add(String_.Trim(terms[0])).Add("|").Add(String_.Trim(terms[1])).Add("\n");
 //			}
-//			Tfds.Write(sb.Xto_str_and_clear());
+//			Tfds.Write(sb.To_str_and_clear());
 //		}
 	@Test  public void Ns_aliases() {
-		Io_mgr.I.InitEngine_mem();
-		Io_mgr.I.SaveFilStr("mem/en.wikipedia.org/w/api.php?action=query&format=xml&meta=siteinfo&siprop=namespacealiases", String_.Concat_lines_nl
+		Io_mgr.Instance.InitEngine_mem();
+		Io_mgr.Instance.SaveFilStr("mem/en.wikipedia.org/w/api.php?action=query&format=xml&meta=siteinfo&siprop=namespacealiases", String_.Concat_lines_nl
 		(	""
 		,	""
 		,	""
@@ -127,7 +127,7 @@ public class Xob_wiki_cfg_bldr_tst {
 			if (String_.Len_eq_0(wiki)) continue;
 			try {
 			String api = protocol + wiki + "/w/api.php?action=query&format=xml&meta=siteinfo&siprop=namespacealiases";
-			String xml = String_.new_u8(Io_mgr.I.DownloadFil_args("", null).Trg_engine_key_(trg_engine_key).Exec_as_bry(api));
+			String xml = String_.new_u8(Io_mgr.Instance.DownloadFil_args("", null).Trg_engine_key_(trg_engine_key).Exec_as_bry(api));
 			if (xml == null) continue;	// not found
 			gplx.xmls.XmlDoc xdoc = gplx.xmls.XmlDoc_.parse(xml);
 			gplx.xmls.XmlNde xnde = gplx.xmls.Xpath_.SelectFirst(xdoc.Root(), "query/namespacealiases");
@@ -138,13 +138,13 @@ public class Xob_wiki_cfg_bldr_tst {
 				if (!String_.Eq(ns_nde.Name(), "ns")) continue;
 				int id = Int_.parse(ns_nde.Atrs().FetchValOr("id", "-1"));
 				String name = String_.Replace(String_.Replace(ns_nde.Text_inner(), " ", "_"), "'", "''");
-				sb.Add(Int_.Xto_str(id)).Add("|").Add(String_.Trim(name)).Add_char_nl();
+				sb.Add(Int_.To_str(id)).Add("|").Add(String_.Trim(name)).Add_char_nl();
 			}
 			sb.Add("\");');\n");
 			}
 			catch(Exception e) {sb.Add("// fail: " + wiki + " " + Err_.Message_gplx_full(e)).Add_char_nl();}
 		}
-		return sb.Xto_str_and_clear();
+		return sb.To_str_and_clear();
 	}
 }
 class Xob_wiki_cfg_bldr_fxt {
@@ -156,7 +156,7 @@ class Xob_wiki_cfg_bldr_fxt {
 		wiki_cfg_bldr.Clear();
 		hash.Clear();
 		return this;
-	}	private Xoae_app app; Xob_wiki_cfg_bldr wiki_cfg_bldr; Ordered_hash hash = Ordered_hash_.new_();
+	}	private Xoae_app app; Xob_wiki_cfg_bldr wiki_cfg_bldr; Ordered_hash hash = Ordered_hash_.New();
 	public Xob_wiki_cfg_bldr_fxt Init_cmd(String wiki, String key, String text) {
 		wiki_cfg_bldr.Itms_get_or_new(wiki).Itms_add(key, text);
 		return this;
@@ -172,7 +172,7 @@ class Xob_wiki_cfg_bldr_fxt {
 			KeyVal kv = (KeyVal)hash.Get_at(i);
 			String wiki = kv.Key();
 			String expd = (String)kv.Val();
-			String actl = Io_mgr.I.LoadFilStr(app.Fsys_mgr().Cfg_wiki_core_dir().GenSubFil(wiki + ".gfs"));
+			String actl = Io_mgr.Instance.LoadFilStr(app.Fsys_mgr().Cfg_wiki_core_dir().GenSubFil(wiki + ".gfs"));
 			Tfds.Eq_str_lines(expd, actl);
 		}
 	}
diff --git a/400_xowa/src/gplx/xowa/bldrs/cmds/Xob_dump_mgr_base.java b/400_xowa/src/gplx/xowa/bldrs/cmds/Xob_dump_mgr_base.java
index 1f78c00db..0b494666b 100644
--- a/400_xowa/src/gplx/xowa/bldrs/cmds/Xob_dump_mgr_base.java
+++ b/400_xowa/src/gplx/xowa/bldrs/cmds/Xob_dump_mgr_base.java
@@ -18,8 +18,8 @@ along with this program.  If not, see .
 package gplx.xowa.bldrs.cmds; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*;
 import gplx.dbs.*; import gplx.xowa.wikis.caches.*; import gplx.xowa.bldrs.cmds.files.*; import gplx.xowa.files.origs.*;
 import gplx.xowa.bldrs.wkrs.*;
-import gplx.xowa.nss.*;
-import gplx.xowa.wikis.data.*; import gplx.xowa.dbs.*; import gplx.xowa.wikis.data.tbls.*;
+import gplx.xowa.wikis.nss.*;
+import gplx.xowa.wikis.data.*; import gplx.xowa.wikis.dbs.*; import gplx.xowa.wikis.data.tbls.*;
 import gplx.xowa.parsers.*; import gplx.xowa.parsers.tmpls.*;
 public abstract class Xob_dump_mgr_base extends Xob_itm_basic_base implements Xob_cmd, GfoInvkAble {
 	private Xob_dump_src_id page_src;
@@ -261,7 +261,7 @@ class Xob_dump_mgr_base_ {
 class Xob_dump_bmk_mgr {
 	private Bry_bfr save_bfr = Bry_bfr.reset_(1024);
 	public Io_url Cfg_url() {return cfg_url;} public Xob_dump_bmk_mgr Cfg_url_(Io_url v) {cfg_url = v; return this;} private Io_url cfg_url;
-	public void Reset() {Io_mgr.I.DeleteFil(cfg_url);}
+	public void Reset() {Io_mgr.Instance.DeleteFil(cfg_url);}
 	public void Load(Xoae_app app, Xob_dump_mgr_base dump_mgr) {
 		app.Gfs_mgr().Run_url_for(dump_mgr, cfg_url);
 	}
@@ -269,7 +269,7 @@ class Xob_dump_bmk_mgr {
 		Save_itm(save_bfr, Xob_dump_mgr_base.Invk_ns_bgn_, ns_id);
 		Save_itm(save_bfr, Xob_dump_mgr_base.Invk_db_bgn_, db_id);
 		Save_itm(save_bfr, Xob_dump_mgr_base.Invk_pg_bgn_, pg_id);
-		Io_mgr.I.SaveFilBfr(cfg_url, save_bfr);
+		Io_mgr.Instance.SaveFilBfr(cfg_url, save_bfr);
 	}
 	private void Save_itm(Bry_bfr save_bfr, String key, int val) {
 		String fmt = "{0}('{1}');\n";
@@ -301,9 +301,9 @@ class Xob_rate_mgr {
 			.Add_int_variable(count).Add_byte_pipe()
 			.Add_int_variable(dif).Add_byte_nl()
 			;
-		Io_mgr.I.AppendFilByt(log_file, save_bfr.Xto_bry_and_clear());
+		Io_mgr.Instance.AppendFilByt(log_file, save_bfr.To_bry_and_clear());
 	}
-	public String Rate_as_str() {return Int_.Xto_str(Rate());}
+	public String Rate_as_str() {return Int_.To_str(Rate());}
 	public int Rate() {
 		int elapsed = Env_.TickCount_elapsed_in_sec(time_bgn);
 		return Math_.Div_safe_as_int(item_len, elapsed);
diff --git a/400_xowa/src/gplx/xowa/bldrs/cmds/Xob_ns_file_itm.java b/400_xowa/src/gplx/xowa/bldrs/cmds/Xob_ns_file_itm.java
index 7e5eb82a1..8f8f7cf4d 100644
--- a/400_xowa/src/gplx/xowa/bldrs/cmds/Xob_ns_file_itm.java
+++ b/400_xowa/src/gplx/xowa/bldrs/cmds/Xob_ns_file_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.bldrs.cmds; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*;
-import gplx.xowa.nss.*;
+import gplx.xowa.wikis.nss.*;
 import gplx.xowa.wikis.data.*;
 public class Xob_ns_file_itm {
 	public Xob_ns_file_itm(byte db_file_tid, String file_name, int[] ns_ids) {
@@ -32,7 +32,7 @@ public class Xob_ns_file_itm {
 		String rv = String_.Format("-{0}{1}{2}.xowa"				// EX: -text-ns.000-db.001.xowa
 			, Xowd_db_file_.To_key(db_file_tid)						// text
 			, String_.Len_eq_0(file_name) ? "" : "-" + file_name	// if empty, don't add "ns.000" segment; produces en.wikipedia.org-text-001.xowa
-			, nth_db_idx == 1 ? "" : "-db." + Int_.Xto_str_pad_bgn_zero(nth_db_idx, 3)			// "-db.001"
+			, nth_db_idx == 1 ? "" : "-db." + Int_.To_str_pad_bgn_zero(nth_db_idx, 3)			// "-db.001"
 			);
 		++nth_db_idx;
 		return rv;
diff --git a/400_xowa/src/gplx/xowa/bldrs/cmds/Xob_ns_file_itm_parser.java b/400_xowa/src/gplx/xowa/bldrs/cmds/Xob_ns_file_itm_parser.java
index 888c5a3b0..af759251f 100644
--- a/400_xowa/src/gplx/xowa/bldrs/cmds/Xob_ns_file_itm_parser.java
+++ b/400_xowa/src/gplx/xowa/bldrs/cmds/Xob_ns_file_itm_parser.java
@@ -17,7 +17,7 @@ along with this program.  If not, see .
 */
 package gplx.xowa.bldrs.cmds; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*;
 import gplx.langs.dsvs.*;
-import gplx.xowa.nss.*;
+import gplx.xowa.wikis.nss.*;
 public class Xob_ns_file_itm_parser extends Dsv_wkr_base {
 	private byte[] ns_ids_bry; private String name; private final List_adp rslts = List_adp_.new_();
 	private Xow_ns_mgr ns_mgr; private byte db_file_tid; private boolean mode_each = false;
@@ -42,7 +42,7 @@ public class Xob_ns_file_itm_parser extends Dsv_wkr_base {
 			for (int i = 0; i < len; ++i) {
 				Xow_ns ns = ns_mgr.Ords_get_at(i);
 				int ns_id = ns.Id();
-				rslts.Add(new Xob_ns_file_itm(db_file_tid, "ns." + Int_.Xto_str_pad_bgn_zero(ns_id, 3), Int_.Ary(ns_id)));
+				rslts.Add(new Xob_ns_file_itm(db_file_tid, "ns." + Int_.To_str_pad_bgn_zero(ns_id, 3), Int_.Ary(ns_id)));
 			}
 			return;
 		}
@@ -58,7 +58,7 @@ public class Xob_ns_file_itm_parser extends Dsv_wkr_base {
 		if (ns_ids.length == 0) throw Err_.new_wo_type("map.invalid.ns_missing", "src", this.Src());
 		if (String_.Len_eq_0(name)) {	// no name; auto-generate
 			int ns_id_1st = ns_ids[0];	// take 1st ns_id
-			name = "ns." + Int_.Xto_str_pad_bgn_zero(ns_id_1st, 3);	// EX: ns.000
+			name = "ns." + Int_.To_str_pad_bgn_zero(ns_id_1st, 3);	// EX: ns.000
 		}
 		Xob_ns_file_itm ns_itm = new Xob_ns_file_itm(db_file_tid, name, ns_ids);
 		rslts.Add(ns_itm);
diff --git a/400_xowa/src/gplx/xowa/bldrs/cmds/Xob_parse_all_src_sql.java b/400_xowa/src/gplx/xowa/bldrs/cmds/Xob_parse_all_src_sql.java
index 7d2cf3638..3d6252ce0 100644
--- a/400_xowa/src/gplx/xowa/bldrs/cmds/Xob_parse_all_src_sql.java
+++ b/400_xowa/src/gplx/xowa/bldrs/cmds/Xob_parse_all_src_sql.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.bldrs.cmds; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*;
-import gplx.xowa.wikis.data.*; import gplx.xowa.dbs.*; import gplx.dbs.*; import gplx.dbs.qrys.*; import gplx.xowa.wikis.data.tbls.*;
+import gplx.xowa.wikis.data.*; import gplx.xowa.wikis.dbs.*; import gplx.dbs.*; import gplx.dbs.qrys.*; import gplx.xowa.wikis.data.tbls.*;
 class Xob_dump_src_id {
 	private Xodb_mgr_sql db_mgr; private byte redirect;
 	private String page_db_url; private int size_max;
diff --git a/400_xowa/src/gplx/xowa/bldrs/cmds/ctgs/Uca_trie_tst.java b/400_xowa/src/gplx/xowa/bldrs/cmds/ctgs/Uca_trie_tst.java
index 4fe815edc..a1ea69a54 100644
--- a/400_xowa/src/gplx/xowa/bldrs/cmds/ctgs/Uca_trie_tst.java
+++ b/400_xowa/src/gplx/xowa/bldrs/cmds/ctgs/Uca_trie_tst.java
@@ -40,6 +40,6 @@ class Uca_trie_fxt {
 	public void Init_trie_itm(String charAsStr, byte[] uca) {trie.Init_itm(gplx.core.intls.Utf16_.Decode_to_int(Bry_.new_u8(charAsStr), 0), uca);}
 	public void Test_decode(byte[] bry, String expd) {
 		trie.Decode(bfr, bry, 0, bry.length);
-		Tfds.Eq(expd, bfr.Xto_str_and_clear());
+		Tfds.Eq(expd, bfr.To_str_and_clear());
 	}
 }
diff --git a/400_xowa/src/gplx/xowa/bldrs/cmds/ctgs/Xob_category_registry_sql.java b/400_xowa/src/gplx/xowa/bldrs/cmds/ctgs/Xob_category_registry_sql.java
index 542a9b9e8..c62f3fbb2 100644
--- a/400_xowa/src/gplx/xowa/bldrs/cmds/ctgs/Xob_category_registry_sql.java
+++ b/400_xowa/src/gplx/xowa/bldrs/cmds/ctgs/Xob_category_registry_sql.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.bldrs.cmds.ctgs; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*; import gplx.xowa.bldrs.cmds.*;
-import gplx.ios.*; import gplx.dbs.*; import gplx.dbs.qrys.*; import gplx.xowa.wikis.data.tbls.*; import gplx.xowa.dbs.*; import gplx.xowa.bldrs.*;
-import gplx.xowa.nss.*;
+import gplx.ios.*; import gplx.dbs.*; import gplx.dbs.qrys.*; import gplx.xowa.wikis.data.tbls.*; import gplx.xowa.wikis.dbs.*; import gplx.xowa.bldrs.*;
+import gplx.xowa.wikis.nss.*;
 import gplx.xowa.bldrs.wtrs.*;
 public class Xob_category_registry_sql implements Xob_cmd {
 	public Xob_category_registry_sql(Xob_bldr bldr, Xowe_wiki wiki) {this.wiki = wiki;} private Xowe_wiki wiki;
@@ -26,7 +26,7 @@ public class Xob_category_registry_sql implements Xob_cmd {
 		// setup
 		wiki.Html_mgr().Importing_ctgs_(Bool_.Y);
 		Io_url rslt_dir = Xob_category_registry_sql.Tmp_dir(wiki);
-		Io_mgr.I.DeleteDirDeep(rslt_dir);
+		Io_mgr.Instance.DeleteDirDeep(rslt_dir);
 		Xob_tmp_wtr rslt_wtr = Xob_tmp_wtr.new_wo_ns_(Io_url_gen_.dir_(rslt_dir), Io_mgr.Len_mb);
 		// read data
 		Gfo_usr_dlg usr_dlg = wiki.Appe().Usr_dlg();
diff --git a/400_xowa/src/gplx/xowa/bldrs/cmds/ctgs/Xob_category_registry_sql_tst.java b/400_xowa/src/gplx/xowa/bldrs/cmds/ctgs/Xob_category_registry_sql_tst.java
index 39f1208fd..cb6609e0e 100644
--- a/400_xowa/src/gplx/xowa/bldrs/cmds/ctgs/Xob_category_registry_sql_tst.java
+++ b/400_xowa/src/gplx/xowa/bldrs/cmds/ctgs/Xob_category_registry_sql_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.bldrs.cmds.ctgs; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*; import gplx.xowa.bldrs.cmds.*;
-import org.junit.*; import gplx.core.primitives.*; import gplx.xowa.bldrs.*; import gplx.xowa.nss.*;
+import org.junit.*; import gplx.core.primitives.*; import gplx.xowa.bldrs.*; import gplx.xowa.wikis.nss.*;
 public class Xob_category_registry_sql_tst {
 	@Before	public void init() {if (Xoa_test_.Db_skip()) return; fxt.Clear();} private Xob_category_registry_sql_fxt fxt = new Xob_category_registry_sql_fxt();
 	@After public void term() {if (Xoa_test_.Db_skip()) return; fxt.Rls();}
@@ -47,7 +47,7 @@ class Xob_category_registry_sql_fxt {
 	}
 	public void Test_ids(int[] expd) {
 		Io_url rslts_dir = Xob_category_registry_sql.Tmp_dir(wiki);
-		String rslts_txt = Io_mgr.I.LoadFilStr(Io_mgr.I.QueryDir_fils(rslts_dir)[0]);
+		String rslts_txt = Io_mgr.Instance.LoadFilStr(Io_mgr.Instance.QueryDir_fils(rslts_dir)[0]);
 		int[] actl = Parse_rslts_txt(rslts_txt);
 		Tfds.Eq_ary(expd, actl);
 	}
diff --git a/400_xowa/src/gplx/xowa/bldrs/cmds/ctgs/Xob_categorylinks_base.java b/400_xowa/src/gplx/xowa/bldrs/cmds/ctgs/Xob_categorylinks_base.java
index 6defbc985..3f960fffc 100644
--- a/400_xowa/src/gplx/xowa/bldrs/cmds/ctgs/Xob_categorylinks_base.java
+++ b/400_xowa/src/gplx/xowa/bldrs/cmds/ctgs/Xob_categorylinks_base.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.bldrs.cmds.ctgs; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*; import gplx.xowa.bldrs.cmds.*;
-import gplx.core.brys.*; import gplx.ios.*; import gplx.xowa.ctgs.*;
+import gplx.core.brys.*; import gplx.ios.*; import gplx.xowa.wikis.ctgs.*;
 import gplx.xowa.bldrs.wkrs.*; import gplx.xowa.bldrs.sqls.*;
 public abstract class Xob_categorylinks_base extends Xob_sql_dump_base implements Sql_file_parser_cmd {
 	private DateAdp_parser date_parser = DateAdp_parser.new_(); private Sql_file_parser sql_parser; Uca_trie trie; private Bry_bfr uca_bfr = Bry_bfr.reset_(255);		
@@ -56,7 +56,7 @@ public abstract class Xob_categorylinks_base extends Xob_sql_dump_base implement
 					trie.Init();
 				}
 				trie.Decode(uca_bfr, cur_sortkey, 0, cur_sortkey.length);
-				cur_sortkey = uca_bfr.Len() == 0 ? Sortkey_space : uca_bfr.Xto_bry_and_clear();
+				cur_sortkey = uca_bfr.Len() == 0 ? Sortkey_space : uca_bfr.To_bry_and_clear();
 			}
 			fld_wtr.Bfr_(file_bfr);
 			fld_wtr.Write_bry_escape_fld(cur_ctg);
@@ -67,7 +67,7 @@ public abstract class Xob_categorylinks_base extends Xob_sql_dump_base implement
 		}
 	}	int cur_id = -1, cur_date = -1; byte[] cur_ctg = null, cur_sortkey = null; byte cur_tid = Byte_.Max_value_127; boolean cur_collation_is_uca; int[] cur_modified_on = new int[7];
 	@Override public void Cmd_end() {
-		Xobdc_merger.Basic(bldr.Usr_dlg(), dump_url_gen, temp_dir.GenSubDir("sort"), sort_mem_len, Xoctg_link_sql_sorter._, Io_line_rdr_key_gen_.noop, Make_sort_cmd(sql_parser));
+		Xobdc_merger.Basic(bldr.Usr_dlg(), dump_url_gen, temp_dir.GenSubDir("sort"), sort_mem_len, Xoctg_link_sql_sorter.Instance, Io_line_rdr_key_gen_.noop, Make_sort_cmd(sql_parser));
 		wiki.Html_mgr().Importing_ctgs_(Bool_.N);
 	}		
 	private static final byte[] Fld_cl_from = Bry_.new_a7("cl_from"), Fld_cl_to = Bry_.new_a7("cl_to"), Fld_cl_timestamp = Bry_.new_a7("cl_timestamp"), Fld_cl_collation = Bry_.new_a7("cl_collation"), Fld_cl_sortkey = Bry_.new_a7("cl_sortkey"), Fld_cl_type = Bry_.new_a7("cl_type");
@@ -86,5 +86,5 @@ class Xoctg_link_sql_sorter implements gplx.lists.ComparerAble {
 		}
 		return CompareAble_.Same;
 	}
-	public static final Xoctg_link_sql_sorter _ = new Xoctg_link_sql_sorter(); Xoctg_link_sql_sorter() {}
+	public static final Xoctg_link_sql_sorter Instance = new Xoctg_link_sql_sorter(); Xoctg_link_sql_sorter() {}
 }
diff --git a/400_xowa/src/gplx/xowa/bldrs/cmds/ctgs/Xob_categorylinks_sql_make.java b/400_xowa/src/gplx/xowa/bldrs/cmds/ctgs/Xob_categorylinks_sql_make.java
index b91b24f96..d0dff6f38 100644
--- a/400_xowa/src/gplx/xowa/bldrs/cmds/ctgs/Xob_categorylinks_sql_make.java
+++ b/400_xowa/src/gplx/xowa/bldrs/cmds/ctgs/Xob_categorylinks_sql_make.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.bldrs.cmds.ctgs; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*; import gplx.xowa.bldrs.cmds.*;
-import gplx.core.flds.*; import gplx.ios.*; import gplx.dbs.*; import gplx.xowa.dbs.*; import gplx.xowa.ctgs.*; 
+import gplx.core.flds.*; import gplx.ios.*; import gplx.dbs.*; import gplx.xowa.wikis.dbs.*; import gplx.xowa.wikis.ctgs.*; 
 import gplx.xowa.bldrs.sqls.*;
 import gplx.xowa.wikis.data.*; import gplx.xowa.wikis.data.tbls.*;
 public class Xob_categorylinks_sql_make implements Io_make_cmd {
@@ -70,7 +70,7 @@ public class Xob_categorylinks_sql_make implements Io_make_cmd {
 		usr_dlg.Log_many("", "", "import.category.v2: insert done; committing; rows=~{0}", cur_row_count);
 		name_id_rdr.Rls();
 		if (String_.Eq(sql_parser.Src_fil().NameAndExt(), Xob_ctg_v1_sql_make.Url_sql))	// delete temp xowa_categorylinks.sql file created by cat_v1
-			Io_mgr.I.DeleteFil(sql_parser.Src_fil());
+			Io_mgr.Instance.DeleteFil(sql_parser.Src_fil());
 	}
 	private int Save_ctg(byte[] new_ctg_ttl) {
 		if (cur_cat_ttl != Bry_.Empty && cur_cat_id != -1)
@@ -131,7 +131,7 @@ public class Xob_categorylinks_sql_make implements Io_make_cmd {
 	private static Io_line_rdr New_registry_rdr(Xowe_wiki wiki, Gfo_usr_dlg usr_dlg) {
 		Io_url make_dir = Xob_category_registry_sql.Tmp_dir(wiki);
 		usr_dlg.Prog_many("", "", "loading category_registry files: ~{0}", make_dir.Raw());
-		Io_url[] urls = Io_mgr.I.QueryDir_args(make_dir).ExecAsUrlAry();
+		Io_url[] urls = Io_mgr.Instance.QueryDir_args(make_dir).ExecAsUrlAry();
 		return new Io_line_rdr(usr_dlg, urls).Key_gen_(Io_line_rdr_key_gen_.first_pipe);
 	}
 	private static final byte[] Ttl_last = null, Ttl_first = Bry_.Empty;
diff --git a/400_xowa/src/gplx/xowa/bldrs/cmds/ctgs/Xob_categorylinks_sql_tst.java b/400_xowa/src/gplx/xowa/bldrs/cmds/ctgs/Xob_categorylinks_sql_tst.java
index 94c809fa5..8fee0ecb2 100644
--- a/400_xowa/src/gplx/xowa/bldrs/cmds/ctgs/Xob_categorylinks_sql_tst.java
+++ b/400_xowa/src/gplx/xowa/bldrs/cmds/ctgs/Xob_categorylinks_sql_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.bldrs.cmds.ctgs; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*; import gplx.xowa.bldrs.cmds.*;
-import org.junit.*; import gplx.core.primitives.*; import gplx.dbs.*; import gplx.xowa.wikis.data.tbls.*; import gplx.xowa.ctgs.*; import gplx.xowa.bldrs.*; import gplx.xowa.nss.*;
+import org.junit.*; import gplx.core.primitives.*; import gplx.dbs.*; import gplx.xowa.wikis.data.tbls.*; import gplx.xowa.wikis.ctgs.*; import gplx.xowa.bldrs.*; import gplx.xowa.wikis.nss.*;
 public class Xob_categorylinks_sql_tst {
 	@Before public void init() {if (Xoa_test_.Db_skip()) return; fxt.Ctor_fsys();} Db_mgr_fxt fxt = new Db_mgr_fxt();
 	@After public void term() {if (Xoa_test_.Db_skip()) return; fxt.Rls();} 
@@ -128,7 +128,7 @@ class Db_tst_qry {
 		if (!pass) {
 			bfr.Add(Lbl_row_hdr).Add_int_variable(expd_row_idx).Add_byte_nl();
 			bfr.Add_str(qry.Xto_sql()).Add_byte(Byte_ascii.Semic);
-			throw Err_.new_wo_type(bfr.Xto_str_and_clear());
+			throw Err_.new_wo_type(bfr.To_str_and_clear());
 		}
 	}	static final byte[] Lbl_row_hdr = Bry_.new_a7("row: "), Lbl_eq_y = Bry_.new_a7(" == "), Lbl_eq_n = Bry_.new_a7(" != ");
 	public static Db_tst_qry tbl_(String tbl_name, String order_by) {return new_(Db_qry_.select_tbl_(tbl_name).OrderBy_asc_(order_by));}
diff --git a/400_xowa/src/gplx/xowa/bldrs/cmds/ctgs/Xob_ctg_v1_base.java b/400_xowa/src/gplx/xowa/bldrs/cmds/ctgs/Xob_ctg_v1_base.java
index ed7d9ed3a..cc47e4dcc 100644
--- a/400_xowa/src/gplx/xowa/bldrs/cmds/ctgs/Xob_ctg_v1_base.java
+++ b/400_xowa/src/gplx/xowa/bldrs/cmds/ctgs/Xob_ctg_v1_base.java
@@ -16,21 +16,21 @@ You should have received a copy of the GNU Affero General Public License
 along with this program.  If not, see .
 */
 package gplx.xowa.bldrs.cmds.ctgs; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*; import gplx.xowa.bldrs.cmds.*;
-import gplx.core.primitives.*; import gplx.core.btries.*; import gplx.core.flds.*; import gplx.ios.*; import gplx.xowa.tdbs.*;
+import gplx.core.primitives.*; import gplx.core.btries.*; import gplx.core.flds.*; import gplx.ios.*; import gplx.xowa.wikis.tdbs.*;
 import gplx.xowa.bldrs.wkrs.*;
-import gplx.xowa.langs.*;
-import gplx.xowa.nss.*;
+import gplx.xowa.langs.*; import gplx.xowa.langs.bldrs.*;
+import gplx.xowa.wikis.nss.*;
 import gplx.xowa.wikis.data.tbls.*;
 public abstract class Xob_ctg_v1_base extends Xob_itm_dump_base implements Xobd_parser_wkr, GfoInvkAble {
 	protected Xob_ctg_v1_base() {}	// TEST:needed for fxt
 	public Xob_ctg_v1_base Ctor(Xob_bldr bldr, Xowe_wiki wiki) {this.Cmd_ctor(bldr, wiki); return this;}
 	public abstract String Wkr_key();
 	public abstract Io_sort_cmd Make_sort_cmd();
-	public Ordered_hash Wkr_hooks() {return wkr_hooks;} private Ordered_hash wkr_hooks = Ordered_hash_.new_bry_();
+	public Ordered_hash Wkr_hooks() {return wkr_hooks;} private Ordered_hash wkr_hooks = Ordered_hash_.New_bry();
 	public void Wkr_bgn(Xob_bldr bldr) {
 		this.Init_dump(this.Wkr_key(), wiki.Tdb_fsys_mgr().Site_dir().GenSubDir(Xotdb_dir_info_.Name_category));
 		Bry_bfr tmp_bfr = bldr.App().Utl__bfr_mkr().Get_b512();
-		Xol_lang lang = wiki.Lang();
+		Xol_lang_itm lang = wiki.Lang();
 		wkr_hooks_add(tmp_bfr, lang.Ns_names());
 		wkr_hooks_add(tmp_bfr, lang.Ns_aliases());
 		wkr_hooks_add(tmp_bfr, Xow_ns_.Canonical);
@@ -87,14 +87,14 @@ public abstract class Xob_ctg_v1_base extends Xob_itm_dump_base implements Xobd_
 	public static void Process_ctg_row(Gfo_fld_wtr fld_wtr, int dump_fil_len, Io_url_gen dump_url_gen, int page_id, byte[] src, int src_len, int bgn, int end) {
 		int len = end - bgn;
 		Bry_bfr dump_bfr = fld_wtr.Bfr();
-		if (dump_bfr.Len() + row_fixed_len + len > dump_fil_len) Io_mgr.I.AppendFilBfr(dump_url_gen.Nxt_url(), dump_bfr);
+		if (dump_bfr.Len() + row_fixed_len + len > dump_fil_len) Io_mgr.Instance.AppendFilBfr(dump_url_gen.Nxt_url(), dump_bfr);
 		byte[] ttl = Bry_.Mid(src, bgn, end);
 		Bry_.Replace_reuse(ttl, Byte_ascii.Space, Byte_ascii.Underline);
 		fld_wtr.Write_bry_escape_fld(ttl).Write_int_base85_len5_row(page_id);
 	}
 	public void Wkr_end() {
 		this.Term_dump(this.Make_sort_cmd());
-		if (delete_temp) Io_mgr.I.DeleteDirDeep(temp_dir);
+		if (delete_temp) Io_mgr.Instance.DeleteDirDeep(temp_dir);
 	}
 	private Gfo_fld_wtr fld_wtr = Gfo_fld_wtr.xowa_();
 	Btrie_fast_mgr trie = Btrie_fast_mgr.cs().Add_stub(Tid_brack_end, "]]").Add_stub(Tid_pipe, "|").Add_stub(Tid_nl, "\n").Add_stub(Tid_brack_bgn, "[[");
@@ -137,7 +137,7 @@ public abstract class Xob_ctg_v1_base extends Xob_itm_dump_base implements Xobd_
 	}
 	private void wkr_hooks_add(Bry_bfr tmp_bfr, byte[] word) {
 		tmp_bfr.Add_byte(Byte_ascii.Brack_bgn).Add_byte(Byte_ascii.Brack_bgn).Add(word).Add_byte(Byte_ascii.Colon);
-		byte[] key = tmp_bfr.Xto_bry_and_clear();
+		byte[] key = tmp_bfr.To_bry_and_clear();
 		if (!wkr_hooks.Has(key)) wkr_hooks.Add(key, key);
 	}	
 	static final String GRP_KEY = "xowa.bldr.make_ctg";
diff --git a/400_xowa/src/gplx/xowa/bldrs/cmds/ctgs/Xob_ctg_v1_sql.java b/400_xowa/src/gplx/xowa/bldrs/cmds/ctgs/Xob_ctg_v1_sql.java
index 1da8e69d4..acbd3fc18 100644
--- a/400_xowa/src/gplx/xowa/bldrs/cmds/ctgs/Xob_ctg_v1_sql.java
+++ b/400_xowa/src/gplx/xowa/bldrs/cmds/ctgs/Xob_ctg_v1_sql.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.bldrs.cmds.ctgs; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*; import gplx.xowa.bldrs.cmds.*;
-import gplx.core.flds.*; import gplx.ios.*; import gplx.dbs.*; import gplx.xowa.dbs.*; import gplx.xowa.ctgs.*;
+import gplx.core.flds.*; import gplx.ios.*; import gplx.dbs.*; import gplx.xowa.wikis.dbs.*; import gplx.xowa.wikis.ctgs.*;
 import gplx.xowa.bldrs.wtrs.*;
 public class Xob_ctg_v1_sql extends Xob_ctg_v1_base {
 	@Override public String Wkr_key() {return Xob_cmd_keys.Key_text_cat_core_v1;}
@@ -32,7 +32,7 @@ class Xob_ctg_v1_sql_make implements Io_make_cmd {
 	public void Sort_bgn() {
 		usr_dlg = wiki.Appe().Usr_dlg();
 		Io_url sql_url = wiki.Fsys_mgr().Root_dir().GenSubFil(Url_sql);
-		Io_mgr.I.DeleteFil_args(sql_url).MissingFails_off().Exec();
+		Io_mgr.Instance.DeleteFil_args(sql_url).MissingFails_off().Exec();
 		sql_wtr = Xob_tmp_wtr.new_wo_ns_(Io_url_gen_.fil_(sql_url), Io_mgr.Len_mb);
 		sql_wtr.Bfr().Add_str(Xob_categorylinks_sql.Sql_categorylinks).Add(Sql_hdr);
 	}
@@ -73,6 +73,6 @@ class Xob_ctg_v1_sql_make implements Io_make_cmd {
 			}
 		}
 		bfr.Mkr_rls();
-		return dirty ? bfr.Xto_bry_and_clear() : bry;
+		return dirty ? bfr.To_bry_and_clear() : bry;
 	}
 }
diff --git a/400_xowa/src/gplx/xowa/bldrs/cmds/ctgs/Xoctg_hiddencat_parser_base.java b/400_xowa/src/gplx/xowa/bldrs/cmds/ctgs/Xoctg_hiddencat_parser_base.java
index 54c2c54a0..e73de0ff9 100644
--- a/400_xowa/src/gplx/xowa/bldrs/cmds/ctgs/Xoctg_hiddencat_parser_base.java
+++ b/400_xowa/src/gplx/xowa/bldrs/cmds/ctgs/Xoctg_hiddencat_parser_base.java
@@ -35,7 +35,7 @@ public abstract class Xoctg_hiddencat_parser_base extends Xob_sql_dump_base impl
 			case Fld_val:
 				if (!cur_is_hiddencat) {data.Cancel_row_y_(); return;}
 				Exec_hook(file_bfr, cur_id, cur_is_hiddencat);
-				if (++rows % 100000 == 0) usr_dlg.Prog_many("", "", "reading row ~{0}", Int_.Xto_str_fmt(rows, "#,##0"));
+				if (++rows % 100000 == 0) usr_dlg.Prog_many("", "", "reading row ~{0}", Int_.To_str_fmt(rows, "#,##0"));
 				break;
 		}
 	}
diff --git a/400_xowa/src/gplx/xowa/bldrs/cmds/ctgs/Xoctg_hiddencat_parser_sql.java b/400_xowa/src/gplx/xowa/bldrs/cmds/ctgs/Xoctg_hiddencat_parser_sql.java
index c9c0cd8b8..41f27e5b0 100644
--- a/400_xowa/src/gplx/xowa/bldrs/cmds/ctgs/Xoctg_hiddencat_parser_sql.java
+++ b/400_xowa/src/gplx/xowa/bldrs/cmds/ctgs/Xoctg_hiddencat_parser_sql.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.bldrs.cmds.ctgs; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*; import gplx.xowa.bldrs.cmds.*;
-import gplx.dbs.*; import gplx.xowa.dbs.*; import gplx.xowa.wikis.data.tbls.*;
+import gplx.dbs.*; import gplx.xowa.wikis.dbs.*; import gplx.xowa.wikis.data.tbls.*;
 import gplx.xowa.bldrs.sqls.*;
 import gplx.xowa.wikis.data.*;
 public class Xoctg_hiddencat_parser_sql extends Xoctg_hiddencat_parser_base {
@@ -36,13 +36,13 @@ public class Xoctg_hiddencat_parser_sql extends Xoctg_hiddencat_parser_base {
 	@Override public void Cmd_end() {
 		tbl.Update_end();
 		if (!Env_.Mode_testing())	// NOTE: do not delete when testing
-			Io_mgr.I.DeleteDirDeep(wiki.Fsys_mgr().Tmp_dir());	// delete /wiki/wiki_name/tmp
-		Io_url[] sql_files = Io_mgr.I.QueryDir_args(wiki.Fsys_mgr().Root_dir()).FilPath_("*.sql.gz").ExecAsUrlAry();
+			Io_mgr.Instance.DeleteDirDeep(wiki.Fsys_mgr().Tmp_dir());	// delete /wiki/wiki_name/tmp
+		Io_url[] sql_files = Io_mgr.Instance.QueryDir_args(wiki.Fsys_mgr().Root_dir()).FilPath_("*.sql.gz").ExecAsUrlAry();
 		int len = sql_files.length;
 		for (int i = 0; i < len; i++) {
 			Io_url sql_file = sql_files[i];
-			Io_mgr.I.DeleteFil(sql_file);
+			Io_mgr.Instance.DeleteFil(sql_file);
 		}
-		Io_mgr.I.DeleteFil_args(wiki.Fsys_mgr().Root_dir().GenSubFil("xowa_categorylinks.sql")).MissingFails_off().Exec();
+		Io_mgr.Instance.DeleteFil_args(wiki.Fsys_mgr().Root_dir().GenSubFil("xowa_categorylinks.sql")).MissingFails_off().Exec();
 	}
 }
diff --git a/400_xowa/src/gplx/xowa/bldrs/cmds/ctgs/Xoctg_hiddencat_parser_sql_tst.java b/400_xowa/src/gplx/xowa/bldrs/cmds/ctgs/Xoctg_hiddencat_parser_sql_tst.java
index 0bca92c39..0c65350e7 100644
--- a/400_xowa/src/gplx/xowa/bldrs/cmds/ctgs/Xoctg_hiddencat_parser_sql_tst.java
+++ b/400_xowa/src/gplx/xowa/bldrs/cmds/ctgs/Xoctg_hiddencat_parser_sql_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.bldrs.cmds.ctgs; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*; import gplx.xowa.bldrs.cmds.*;
-import org.junit.*; import gplx.dbs.*; import gplx.xowa.dbs.*; import gplx.xowa.wikis.data.tbls.*; import gplx.xowa.bldrs.*;
+import org.junit.*; import gplx.dbs.*; import gplx.xowa.wikis.dbs.*; import gplx.xowa.wikis.data.tbls.*; import gplx.xowa.bldrs.*;
 public class Xoctg_hiddencat_parser_sql_tst {
 	@Before public void init() {if (Xoa_test_.Db_skip()) return; fxt.Ctor_fsys();} Db_mgr_fxt fxt = new Db_mgr_fxt();
 	@After public void term() {if (Xoa_test_.Db_skip()) return; fxt.Rls();} 
@@ -55,7 +55,7 @@ public class Xoctg_hiddencat_parser_sql_tst {
 		for (int i = 0; i < len; i++) {
 			int ctg_id = ctgs[i];
 			Xowd_category_itm ctg_itm = tbl.Select(ctg_id);
-			Tfds.Eq(expd_hidden, ctg_itm.Hidden(), Int_.Xto_str(ctg_id));
+			Tfds.Eq(expd_hidden, ctg_itm.Hidden(), Int_.To_str(ctg_id));
 		}
 	}
 }
diff --git a/400_xowa/src/gplx/xowa/bldrs/cmds/ctgs/Xoctg_hiddencat_parser_txt.java b/400_xowa/src/gplx/xowa/bldrs/cmds/ctgs/Xoctg_hiddencat_parser_txt.java
index a6bb81f91..513fcb00a 100644
--- a/400_xowa/src/gplx/xowa/bldrs/cmds/ctgs/Xoctg_hiddencat_parser_txt.java
+++ b/400_xowa/src/gplx/xowa/bldrs/cmds/ctgs/Xoctg_hiddencat_parser_txt.java
@@ -29,6 +29,6 @@ public class Xoctg_hiddencat_parser_txt extends Xoctg_hiddencat_parser_base {
 		fld_wtr.Write_int_base85_len5_fld(cur_id);
 	}
 	@Override public void Cmd_end() {
-		Xobdc_merger.Basic(bldr.Usr_dlg(), dump_url_gen, temp_dir.GenSubDir("sort"), sort_mem_len, Xoctg_link_sql_sorter._, Io_line_rdr_key_gen_.noop, new Io_sort_fil_basic(bldr.Usr_dlg(), this.Make_url_gen(), make_fil_len));
+		Xobdc_merger.Basic(bldr.Usr_dlg(), dump_url_gen, temp_dir.GenSubDir("sort"), sort_mem_len, Xoctg_link_sql_sorter.Instance, Io_line_rdr_key_gen_.noop, new Io_sort_fil_basic(bldr.Usr_dlg(), this.Make_url_gen(), make_fil_len));
 	}
 }
diff --git a/400_xowa/src/gplx/xowa/bldrs/cmds/ctgs/Xoctg_hiddencat_ttl_wkr.java b/400_xowa/src/gplx/xowa/bldrs/cmds/ctgs/Xoctg_hiddencat_ttl_wkr.java
index b3010bd3d..74ec5636d 100644
--- a/400_xowa/src/gplx/xowa/bldrs/cmds/ctgs/Xoctg_hiddencat_ttl_wkr.java
+++ b/400_xowa/src/gplx/xowa/bldrs/cmds/ctgs/Xoctg_hiddencat_ttl_wkr.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.bldrs.cmds.ctgs; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*; import gplx.xowa.bldrs.cmds.*;
-import gplx.ios.*; import gplx.xowa.tdbs.*;
+import gplx.ios.*; import gplx.xowa.wikis.tdbs.*;
 import gplx.xowa.bldrs.wkrs.*;
 public class Xoctg_hiddencat_ttl_wkr extends Xob_itm_dump_base implements Xob_cmd, GfoInvkAble {
 	public Xoctg_hiddencat_ttl_wkr(Xob_bldr bldr, Xowe_wiki wiki) {this.Cmd_ctor(bldr, wiki); this.make_fil_len = Io_mgr.Len_mb;} private Xob_sql_join_wkr_ctg_hidden join_wkr;
@@ -33,8 +33,8 @@ public class Xoctg_hiddencat_ttl_wkr extends Xob_itm_dump_base implements Xob_cm
 	public void Cmd_end() {
 		join_wkr.Flush();
 		Io_url_gen make_url_gen = Io_url_gen_.dir_(temp_dir.GenSubDir("make"));
-		Xobdc_merger.Basic(bldr.Usr_dlg(), join_wkr.Dump_url_gen(), temp_dir.GenSubDir("sort"), sort_mem_len, Io_sort_split_itm_sorter._, Io_line_rdr_key_gen_.first_pipe, new Io_sort_fil_basic(bldr.Usr_dlg(), make_url_gen, make_fil_len));
-		if (delete_temp) Io_mgr.I.DeleteDirDeep(src_sql_dir);
+		Xobdc_merger.Basic(bldr.Usr_dlg(), join_wkr.Dump_url_gen(), temp_dir.GenSubDir("sort"), sort_mem_len, Io_sort_split_itm_sorter.Instance, Io_line_rdr_key_gen_.first_pipe, new Io_sort_fil_basic(bldr.Usr_dlg(), make_url_gen, make_fil_len));
+		if (delete_temp) Io_mgr.Instance.DeleteDirDeep(src_sql_dir);
 	}
 	public void Cmd_term() {}
 }
@@ -46,13 +46,13 @@ class Xob_sql_join_wkr_ctg_hidden implements Xob_sql_join_wkr {
 	}	private Xoae_app app = null; Xowe_wiki wiki = null; Io_url src_sql_dir;
 	public Io_url_gen Dump_url_gen() {return dump_url_gen;} Io_url_gen dump_url_gen;
 	public Io_line_rdr New_main_rdr() {
-		Io_url[] urls = Io_mgr.I.QueryDir_fils(src_sql_dir);
+		Io_url[] urls = Io_mgr.Instance.QueryDir_fils(src_sql_dir);
 		return new Io_line_rdr(app.Usr_dlg(), urls).Key_gen_(Io_line_rdr_key_gen_.first_pipe);
 	} 
 	public Io_line_rdr New_join_rdr() {
 		Io_url make_dir = wiki.Tdb_fsys_mgr().Url_site_dir(Xotdb_dir_info_.Tid_id);
 		app.Usr_dlg().Prog_many("", "", "getting id files: ~{0}", make_dir.Raw());
-		Io_url[] urls = Io_mgr.I.QueryDir_args(make_dir).Recur_().FilPath_("*.xdat").ExecAsUrlAry();
+		Io_url[] urls = Io_mgr.Instance.QueryDir_args(make_dir).Recur_().FilPath_("*.xdat").ExecAsUrlAry();
 		return new Io_line_rdr(app.Usr_dlg(), urls).Key_gen_(Io_line_rdr_key_gen_.first_pipe).File_skip_line0_(true);
 	} 
 	public void Process_match(Io_line_rdr main, Io_line_rdr join, byte[] key_bry) {
@@ -64,6 +64,6 @@ class Xob_sql_join_wkr_ctg_hidden implements Xob_sql_join_wkr {
 		file_bfr.Add(key_bry).Add_byte_nl();
 	}	private Bry_bfr file_bfr = Bry_bfr.new_();
 	public void Flush() {
-		Io_mgr.I.SaveFilBfr(dump_url_gen.Nxt_url(), file_bfr);
+		Io_mgr.Instance.SaveFilBfr(dump_url_gen.Nxt_url(), file_bfr);
 	}
 }
diff --git a/400_xowa/src/gplx/xowa/bldrs/cmds/ctgs/Xoctg_link_idx_wkr.java b/400_xowa/src/gplx/xowa/bldrs/cmds/ctgs/Xoctg_link_idx_wkr.java
index c078f0040..256cbd9e9 100644
--- a/400_xowa/src/gplx/xowa/bldrs/cmds/ctgs/Xoctg_link_idx_wkr.java
+++ b/400_xowa/src/gplx/xowa/bldrs/cmds/ctgs/Xoctg_link_idx_wkr.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.bldrs.cmds.ctgs; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*; import gplx.xowa.bldrs.cmds.*;
-import gplx.core.flds.*; import gplx.ios.*; import gplx.xowa.ctgs.*; import gplx.xowa.tdbs.*;
+import gplx.core.flds.*; import gplx.ios.*; import gplx.xowa.wikis.ctgs.*; import gplx.xowa.wikis.tdbs.*;
 import gplx.xowa.bldrs.wkrs.*; import gplx.xowa.bldrs.cmds.texts.tdbs.*; 
 public class Xoctg_link_idx_wkr extends Xob_idx_base {	// NOTE: similar functionality to Xob_make_cmd_site, but more complicated due to p,f,s; not inheriting
 	Io_url src_link_dir; int make_fil_max = Int_.Min_value;
@@ -28,7 +28,7 @@ public class Xoctg_link_idx_wkr extends Xob_idx_base {	// NOTE: similar function
 		if (make_fil_max == Int_.Min_value) make_fil_max = Io_mgr.Len_mb;
 		make_link_mgr = new Xoctg_make_link_mgr(usr_dlg, make_fil_max, wiki.Tdb_fsys_mgr()); 
 		make_main_mgr = new Xoctg_make_main_mgr(usr_dlg, make_fil_max, wiki.Tdb_fsys_mgr());
-		Io_mgr.I.DeleteDirDeep_ary(make_link_mgr.Make_dir(), make_main_mgr.Make_dir());
+		Io_mgr.Instance.DeleteDirDeep_ary(make_link_mgr.Make_dir(), make_main_mgr.Make_dir());
 	}	Gfo_fld_rdr fld_rdr; Xoctg_make_link_mgr make_link_mgr;
 	@Override public void Cmd_run() {
 		Xoctg_make_link_grp cur_grp = null;
@@ -56,7 +56,7 @@ public class Xoctg_link_idx_wkr extends Xob_idx_base {	// NOTE: similar function
 		make_main_mgr.Flush();
 	}	private Xoctg_idx_data_link link_data = new Xoctg_idx_data_link();
 	@Override public void Cmd_end() {
-		if (delete_temp) Io_mgr.I.DeleteDirDeep_ary(src_link_dir, make_main_mgr.Src_dir());
+		if (delete_temp) Io_mgr.Instance.DeleteDirDeep_ary(src_link_dir, make_main_mgr.Src_dir());
 	}	boolean delete_temp = true;
 	private void Write_grp(byte[] cur_name, Xoctg_make_link_mgr make_link_mgr) {
 		make_main_mgr.Grps_write(cur_name, make_link_mgr.Subc_grp().Count(), make_link_mgr.File_grp().Count(), make_link_mgr.Page_grp().Count());
@@ -162,7 +162,7 @@ class Xoctg_make_main_mgr {
 		make_dir = fsys_mgr.Url_site_dir(Xotdb_dir_info_.Tid_category2_main);
 		make_cmd = new Xob_make_cmd_site(usr_dlg, make_dir, make_fil_max);
 		src_dir = fsys_mgr.Tmp_dir().GenSubDir_nest(Xob_cmd_keys.Key_tdb_cat_hidden_ttl, "make");
-		hidden_rdr = new Io_line_rdr(usr_dlg, Io_mgr.I.QueryDir_fils(src_dir));
+		hidden_rdr = new Io_line_rdr(usr_dlg, Io_mgr.Instance.QueryDir_fils(src_dir));
 	}	Gfo_fld_wtr make_fld_wtr; Bry_bfr make_fil_bfr; int make_fil_max; Xob_make_cmd_site make_cmd; Io_line_rdr hidden_rdr;
 	public Io_url Src_dir() {return src_dir;} Io_url src_dir;
 	public Io_url Make_dir() {return make_dir;} Io_url make_dir;
diff --git a/400_xowa/src/gplx/xowa/bldrs/cmds/ctgs/Xoctg_link_idx_wkr_tst.java b/400_xowa/src/gplx/xowa/bldrs/cmds/ctgs/Xoctg_link_idx_wkr_tst.java
index 91cccba34..d492d2a8c 100644
--- a/400_xowa/src/gplx/xowa/bldrs/cmds/ctgs/Xoctg_link_idx_wkr_tst.java
+++ b/400_xowa/src/gplx/xowa/bldrs/cmds/ctgs/Xoctg_link_idx_wkr_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.bldrs.cmds.ctgs; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*; import gplx.xowa.bldrs.cmds.*;
-import org.junit.*; import gplx.xowa.ctgs.*; import gplx.xowa.bldrs.*;
+import org.junit.*; import gplx.xowa.wikis.ctgs.*; import gplx.xowa.bldrs.*;
 public class Xoctg_link_idx_wkr_tst {		
 	@Before public void init() {fxt.Clear();} private Xob_base_fxt fxt = new Xob_base_fxt();
 	@Test   public void Basic() {
diff --git a/400_xowa/src/gplx/xowa/bldrs/cmds/files/Xob_bin_db_itm.java b/400_xowa/src/gplx/xowa/bldrs/cmds/files/Xob_bin_db_itm.java
index f6573c95b..5ebbb81dd 100644
--- a/400_xowa/src/gplx/xowa/bldrs/cmds/files/Xob_bin_db_itm.java
+++ b/400_xowa/src/gplx/xowa/bldrs/cmds/files/Xob_bin_db_itm.java
@@ -28,11 +28,11 @@ class Xob_bin_db_itm {
 		this.id = id; this.pt_id = pt_id; this.db_url = db_url;
 	}
 	public static String Gen_name_v1(int pt_id) {
-		return String_.Format("fsdb.bin.{0}.sqlite3", Int_.Xto_str_pad_bgn_zero(pt_id, 4));
+		return String_.Format("fsdb.bin.{0}.sqlite3", Int_.To_str_pad_bgn_zero(pt_id, 4));
 	}
 	public static String Gen_name_v2(String domain_str, int ns_id, int pt_id) {
-		String ns_id_str = Int_.Xto_str_pad_bgn_zero(ns_id, 3);
-		String pt_id_str = Int_.Xto_str_pad_bgn_zero(pt_id, 3);
+		String ns_id_str = Int_.To_str_pad_bgn_zero(ns_id, 3);
+		String pt_id_str = Int_.To_str_pad_bgn_zero(pt_id, 3);
 		return String_.Format("{0}-file-ns.{1}-db.{2}.xowa", domain_str, ns_id_str, pt_id_str);
 	}
 	public static Xob_bin_db_itm new_v1(Fsm_bin_fil fil) {
diff --git a/400_xowa/src/gplx/xowa/bldrs/cmds/files/Xob_bin_db_mgr.java b/400_xowa/src/gplx/xowa/bldrs/cmds/files/Xob_bin_db_mgr.java
index a96ce0762..984c2f869 100644
--- a/400_xowa/src/gplx/xowa/bldrs/cmds/files/Xob_bin_db_mgr.java
+++ b/400_xowa/src/gplx/xowa/bldrs/cmds/files/Xob_bin_db_mgr.java
@@ -20,7 +20,7 @@ import gplx.core.primitives.*; import gplx.ios.*;
 import gplx.fsdb.meta.*;
 class Xob_bin_db_mgr {
 	private final int[] ns_ids; private final int ns_ids_len;
-	private final Ordered_hash nth_hash = Ordered_hash_.new_(); private final Int_obj_ref tier_key = Int_obj_ref.neg1_();
+	private final Ordered_hash nth_hash = Ordered_hash_.New(); private final Int_obj_ref tier_key = Int_obj_ref.neg1_();
 	public Xob_bin_db_mgr(int[] ns_ids) {
 		this.ns_ids = ns_ids; this.ns_ids_len = ns_ids.length;
 	}
@@ -48,7 +48,7 @@ class Xob_bin_db_mgr {
 		for (int i = 0; i < len; ++i) {	// iterated tiers to calculate max_size
 			Xob_bin_db_itm nth = (Xob_bin_db_itm)nth_hash.Get_at(i);
 			if (nth.Id() == -1) continue;	// ignore default nth
-			IoItmFil nth_itm = Io_mgr.I.QueryFil(nth.Db_url());
+			IoItmFil nth_itm = Io_mgr.Instance.QueryFil(nth.Db_url());
 			nth.Db_len_(nth_itm.Size());
 		}
 	}
diff --git a/400_xowa/src/gplx/xowa/bldrs/cmds/files/Xob_diff_regy_exec_cmd.java b/400_xowa/src/gplx/xowa/bldrs/cmds/files/Xob_diff_regy_exec_cmd.java
index 01f9ed40b..6e7053086 100644
--- a/400_xowa/src/gplx/xowa/bldrs/cmds/files/Xob_diff_regy_exec_cmd.java
+++ b/400_xowa/src/gplx/xowa/bldrs/cmds/files/Xob_diff_regy_exec_cmd.java
@@ -31,7 +31,7 @@ public class Xob_diff_regy_exec_cmd extends Xob_itm_basic_base implements Xob_cm
 		if (sql_dir == null)
 			sql_dir = wiki.Parser_mgr().Ctx().App().Fsys_mgr().File_dir().GenSubDir_nest(wiki.Domain_str(), "tmp_sql");
 		Xob_diff_regy_sql_runner runner = new Xob_diff_regy_sql_runner();
-		Io_url[] urls = Io_mgr.I.QueryDir_fils(sql_dir);
+		Io_url[] urls = Io_mgr.Instance.QueryDir_fils(sql_dir);
 		int urls_len = urls.length;
 		for (int i = 0; i < urls_len; ++i)
 			runner.Exec(app, urls[i]);
@@ -63,7 +63,7 @@ class Xob_diff_regy_sql_runner {
 		Xowe_wiki wiki = app.Wiki_mgr().Get_by_key_or_null(Bry_.new_u8(wiki_domain));
 		app.Usr_dlg().Prog_many("", "", "running sql: url=~{0}", url.NameAndExt());
 		Db_conn conn = Get_conn(wiki, fsdb_db_id, fsdb_db_tid);
-		conn.Exec_sql(Io_mgr.I.LoadFilStr(url));
+		conn.Exec_sql(Io_mgr.Instance.LoadFilStr(url));
 		if (fsdb_db_tid == Fsdb_db_tid_.Tid_bin)
 			conn.Exec_sql("VACUUM;");
 	}
@@ -78,7 +78,7 @@ class Xob_diff_regy_sql_runner {
 			throw Err_.new_unhandled(fsdb_db_tid);
 	}
 	public static String Build_url(String wiki_domain, int fsdb_db_id, String fsdb_db_type) {
-		return String_.Format("{0}-{1}-{2}.sql", wiki_domain, Int_.Xto_str_pad_bgn_zero(fsdb_db_id, 3), fsdb_db_type);
+		return String_.Format("{0}-{1}-{2}.sql", wiki_domain, Int_.To_str_pad_bgn_zero(fsdb_db_id, 3), fsdb_db_type);
 	}
 }
 class Fsdb_db_tid_ {
diff --git a/400_xowa/src/gplx/xowa/bldrs/cmds/files/Xob_diff_regy_make_cmd.java b/400_xowa/src/gplx/xowa/bldrs/cmds/files/Xob_diff_regy_make_cmd.java
index 6cb269a1e..73a3e0d76 100644
--- a/400_xowa/src/gplx/xowa/bldrs/cmds/files/Xob_diff_regy_make_cmd.java
+++ b/400_xowa/src/gplx/xowa/bldrs/cmds/files/Xob_diff_regy_make_cmd.java
@@ -68,26 +68,26 @@ public class Xob_diff_regy_make_cmd extends Xob_itm_basic_base implements Xob_cm
 	private void Make_delete_sql_file(Bry_bfr atr_bfr, Bry_bfr bin_bfr, Io_url sql_tmp_dir, int cur_db_id, int cur_count) {
 		Make_delete_sql_file(atr_bfr, sql_tmp_dir, cur_db_id, cur_count, Fsdb_db_tid_.Tid_atr);
 		Make_delete_sql_file(bin_bfr, sql_tmp_dir, cur_db_id, cur_count, Fsdb_db_tid_.Tid_bin);
-		app.Usr_dlg().Note_many("", "", "file.diff:sql generated: db_id=~{0} count=~{1}", Int_.Xto_str_pad_bgn_space(cur_db_id, 3), Int_.Xto_str_pad_bgn_space(cur_count, 7));
+		app.Usr_dlg().Note_many("", "", "file.diff:sql generated: db_id=~{0} count=~{1}", Int_.To_str_pad_bgn_space(cur_db_id, 3), Int_.To_str_pad_bgn_space(cur_count, 7));
 	}
 	private void Make_delete_sql_file(Bry_bfr bfr, Io_url sql_dir, int db_id, int cur_count, byte db_tid) {
 		if (db_id != -1 && cur_count > 0) { // do not write 1st bfr
 			bfr.Add_str_a7("COMMIT;\n");
-			String sql_url_name = String_.Format("{0}-{1}-{2}.sql", wiki.Domain_str(), Int_.Xto_str_pad_bgn_zero(db_id, 3), Fsdb_db_tid_.Xto_key(db_tid));
+			String sql_url_name = String_.Format("{0}-{1}-{2}.sql", wiki.Domain_str(), Int_.To_str_pad_bgn_zero(db_id, 3), Fsdb_db_tid_.Xto_key(db_tid));
 			Io_url sql_url = sql_dir.GenSubFil(sql_url_name);
-			Io_mgr.I.SaveFilBfr(sql_url, bfr);
+			Io_mgr.Instance.SaveFilBfr(sql_url, bfr);
 		}
 		bfr.Clear();	// clear bfr if cur_count == 0
 		bfr.Add_str_a7("BEGIN TRANSACTION;\n");
 	}
 	private void Make_delete_sql_item(Bry_bfr atr_bfr, Bry_bfr bin_bfr, byte diff_is_orig, int diff_db_id, int diff_fil_id, int diff_thm_id) {
 		if (diff_is_orig == Byte_.Zero) {
-			atr_bfr.Add_str_a7("DELETE FROM fsdb_xtn_thm WHERE thm_id = " + Int_.Xto_str(diff_thm_id) + ";\n");
-			bin_bfr.Add_str_a7("DELETE FROM fsdb_bin WHERE bin_owner_id = " + Int_.Xto_str(diff_thm_id) + ";\n");
+			atr_bfr.Add_str_a7("DELETE FROM fsdb_xtn_thm WHERE thm_id = " + Int_.To_str(diff_thm_id) + ";\n");
+			bin_bfr.Add_str_a7("DELETE FROM fsdb_bin WHERE bin_owner_id = " + Int_.To_str(diff_thm_id) + ";\n");
 		}
 		else {
-			atr_bfr.Add_str_a7("UPDATE fsdb_fil SET fil_bin_db_id = -1 WHERE fil_id = " + Int_.Xto_str(diff_fil_id) + ";\n");
-			bin_bfr.Add_str_a7("DELETE FROM fsdb_bin WHERE bin_owner_id = " + Int_.Xto_str(diff_fil_id) + ";\n");
+			atr_bfr.Add_str_a7("UPDATE fsdb_fil SET fil_bin_db_id = -1 WHERE fil_id = " + Int_.To_str(diff_fil_id) + ";\n");
+			bin_bfr.Add_str_a7("DELETE FROM fsdb_bin WHERE bin_owner_id = " + Int_.To_str(diff_fil_id) + ";\n");
 		}
 	}
 }
diff --git a/400_xowa/src/gplx/xowa/bldrs/cmds/files/Xob_fsdb_make_cmd.java b/400_xowa/src/gplx/xowa/bldrs/cmds/files/Xob_fsdb_make_cmd.java
index 01b5a89d6..6be19cb1c 100644
--- a/400_xowa/src/gplx/xowa/bldrs/cmds/files/Xob_fsdb_make_cmd.java
+++ b/400_xowa/src/gplx/xowa/bldrs/cmds/files/Xob_fsdb_make_cmd.java
@@ -18,7 +18,7 @@ along with this program.  If not, see .
 package gplx.xowa.bldrs.cmds.files; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*; import gplx.xowa.bldrs.cmds.*;
 import gplx.dbs.*; import gplx.dbs.cfgs.*; import gplx.dbs.engines.sqlite.*;
 import gplx.xowa.bldrs.wkrs.*;
-import gplx.xowa.wikis.domains.*; import gplx.xowa.wikis.data.*; import gplx.xowa.dbs.*; import gplx.fsdb.*; import gplx.ios.*; import gplx.xowa.wikis.data.tbls.*;
+import gplx.xowa.wikis.domains.*; import gplx.xowa.wikis.data.*; import gplx.xowa.wikis.dbs.*; import gplx.fsdb.*; import gplx.ios.*; import gplx.xowa.wikis.data.tbls.*;
 import gplx.xowa.files.*; import gplx.xowa.files.repos.*; import gplx.xowa.files.bins.*; import gplx.xowa.files.fsdb.*;	
 import gplx.fsdb.data.*; import gplx.fsdb.meta.*;
 public class Xob_fsdb_make_cmd extends Xob_itm_basic_base implements Xob_cmd {
@@ -66,7 +66,7 @@ public class Xob_fsdb_make_cmd extends Xob_itm_basic_base implements Xob_cmd {
 		// trg_mnt_itm
 		this.trg_bin_db_max = app.Api_root().Bldr().Wiki().Import().File_db_max();
 		Fsdb_db_mgr trg_db_mgr = Fsdb_db_mgr_.new_detect(wiki, wiki.Fsys_mgr().Root_dir(), wiki.Fsys_mgr().File_dir());
-		if (trg_db_mgr == null) trg_db_mgr = Fsdb_db_mgr__v2_bldr.I.Get_or_make(wiki, Bool_.Y);
+		if (trg_db_mgr == null) trg_db_mgr = Fsdb_db_mgr__v2_bldr.Instance.Get_or_make(wiki, Bool_.Y);
 		Fsm_mnt_mgr trg_mnt_mgr = new Fsm_mnt_mgr(); trg_mnt_mgr.Ctor_by_load(trg_db_mgr);
 		trg_mnt_mgr.Mnts__get_insert_idx_(Fsm_mnt_mgr.Mnt_idx_main);		// NOTE: do not delete; mnt_mgr default to Mnt_idx_user; DATE:2014-04-25
 		this.trg_mnt_itm = trg_mnt_mgr.Mnts__get_insert();
@@ -128,7 +128,7 @@ public class Xob_fsdb_make_cmd extends Xob_itm_basic_base implements Xob_cmd {
 		if (!resume_enabled) // clear cfg entries if resume disabled; note that disabled by default; DATE:2014-10-24
 			bldr_cfg_tbl.Delete_grp(Cfg_fsdb_make);
 		Db_cfg_hash bmk_hash = bldr_cfg_tbl.Select_as_hash(Cfg_fsdb_make);
-		String tier_id_str = bmk_hash.Get(Cfg_tier_id_bmk).To_str_or(null);
+		String tier_id_str = bmk_hash.Get_by(Cfg_tier_id_bmk).To_str_or(null);
 		if (tier_id_str == null) {	// bmks not found; new db;
 			bldr_conn.Txn_bgn("bldr__fsdb_make__bldr_conn");
 			bldr_cfg_tbl.Insert_int(Cfg_fsdb_make, Cfg_tier_id_bmk	, tier_id_bmk);
@@ -145,11 +145,11 @@ public class Xob_fsdb_make_cmd extends Xob_itm_basic_base implements Xob_cmd {
 				usr_dlg.Note_many("", "", "restoring from bmk: tier_id=~{0}", tier_id_bmk);
 			}
 			if (page_id_bmk == -1) {
-				page_id_bmk = bmk_hash.Get(Cfg_page_id_bmk).To_int();
+				page_id_bmk = bmk_hash.Get_by(Cfg_page_id_bmk).To_int();
 				usr_dlg.Note_many("", "", "restoring from bmk: page_id=~{0}", page_id_bmk);
 			}
 			if (lnki_id_bmk == -1) {
-				lnki_id_bmk = bmk_hash.Get(Cfg_lnki_id_bmk).To_int();
+				lnki_id_bmk = bmk_hash.Get_by(Cfg_lnki_id_bmk).To_int();
 				usr_dlg.Note_many("", "", "restoring from bmk: lnki_id=~{0}", lnki_id_bmk);
 			}
 		}
@@ -287,7 +287,7 @@ public class Xob_fsdb_make_cmd extends Xob_itm_basic_base implements Xob_cmd {
 		}
 		if (exec_done) {
 			bldr_cfg_tbl.Delete_grp(Cfg_fsdb_make);	// delete bmks for future reruns; DATE:2014-08-20
-			Io_mgr.I.DeleteFil_args(wiki.Fsys_mgr().Root_dir().GenSubFil("xowa.file.make.cfg.gfs")).MissingFails_off().Exec();
+			Io_mgr.Instance.DeleteFil_args(wiki.Fsys_mgr().Root_dir().GenSubFil("xowa.file.make.cfg.gfs")).MissingFails_off().Exec();
 		}
 		bldr_conn.Rls_conn();
 	}
diff --git a/400_xowa/src/gplx/xowa/bldrs/cmds/files/Xob_fsdb_reduce_cmd.java b/400_xowa/src/gplx/xowa/bldrs/cmds/files/Xob_fsdb_reduce_cmd.java
index 5cbc0aabb..dd40f59ab 100644
--- a/400_xowa/src/gplx/xowa/bldrs/cmds/files/Xob_fsdb_reduce_cmd.java
+++ b/400_xowa/src/gplx/xowa/bldrs/cmds/files/Xob_fsdb_reduce_cmd.java
@@ -50,12 +50,12 @@ class Fsdb_reduce_wkr {
 		this.quality = quality;
 	}
 	public byte[] Reduce(byte[] orig_bry) {
-		Io_mgr.I.SaveFilBry(src_url, orig_bry);
+		Io_mgr.Instance.SaveFilBry(src_url, orig_bry);
 		convert_process.Run(src_url, trg_url, dpi, quality); // -strip -quality 50% -density 72 -resample 72
 		if (!convert_process.Exit_code_pass()) {
 			// throw err with convert_process.Rslt_out();
 		}
-		byte[] rv = Io_mgr.I.LoadFilBry(trg_url);
+		byte[] rv = Io_mgr.Instance.LoadFilBry(trg_url);
 		// fail if 0; fail if greater than;
 		// warn if not between 50% - 70% of size
 		return rv;
diff --git a/400_xowa/src/gplx/xowa/bldrs/cmds/files/Xob_lnki_regy_cmd.java b/400_xowa/src/gplx/xowa/bldrs/cmds/files/Xob_lnki_regy_cmd.java
index 8d8c8ba81..c04375684 100644
--- a/400_xowa/src/gplx/xowa/bldrs/cmds/files/Xob_lnki_regy_cmd.java
+++ b/400_xowa/src/gplx/xowa/bldrs/cmds/files/Xob_lnki_regy_cmd.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.bldrs.cmds.files; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*; import gplx.xowa.bldrs.cmds.*;
-import gplx.dbs.*; import gplx.xowa.dbs.*;
+import gplx.dbs.*; import gplx.xowa.wikis.dbs.*;
 import gplx.xowa.bldrs.wkrs.*;
 public class Xob_lnki_regy_cmd extends Xob_itm_basic_base implements Xob_cmd {
 	public Xob_lnki_regy_cmd(Xob_bldr bldr, Xowe_wiki wiki) {this.Cmd_ctor(bldr, wiki);}
diff --git a/400_xowa/src/gplx/xowa/bldrs/cmds/files/Xob_lnki_temp_wkr.java b/400_xowa/src/gplx/xowa/bldrs/cmds/files/Xob_lnki_temp_wkr.java
index 2425d59fe..6b13c9ecb 100644
--- a/400_xowa/src/gplx/xowa/bldrs/cmds/files/Xob_lnki_temp_wkr.java
+++ b/400_xowa/src/gplx/xowa/bldrs/cmds/files/Xob_lnki_temp_wkr.java
@@ -16,18 +16,20 @@ You should have received a copy of the GNU Affero General Public License
 along with this program.  If not, see .
 */
 package gplx.xowa.bldrs.cmds.files; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*; import gplx.xowa.bldrs.cmds.*;
-import gplx.dbs.*; import gplx.dbs.cfgs.*; import gplx.xowa.wikis.data.tbls.*; import gplx.xowa.pages.*;
+import gplx.dbs.*; import gplx.dbs.cfgs.*; import gplx.xowa.wikis.data.tbls.*; import gplx.xowa.wikis.pages.*;
 import gplx.xowa.files.*;
-import gplx.xowa.nss.*;
+import gplx.xowa.wikis.nss.*;
 import gplx.xowa.wikis.*; import gplx.xowa.wikis.domains.*;
 import gplx.xowa.parsers.*; import gplx.xowa.parsers.logs.*; import gplx.xowa.parsers.lnkis.*; import gplx.xowa.parsers.lnkis.redlinks.*; import gplx.xowa.parsers.xndes.*;
-import gplx.xowa.html.hdumps.bldrs.*; import gplx.xowa.xtns.scribunto.*; import gplx.xowa.xtns.wdatas.*;
+import gplx.xowa.htmls.hdumps.bldrs.*; import gplx.xowa.xtns.scribunto.*; import gplx.xowa.xtns.wdatas.*;
 import gplx.fsdb.meta.*; import gplx.xowa.files.fsdb.*; import gplx.fsdb.*;
+import gplx.xowa.langs.vnts.*; import gplx.xowa.parsers.vnts.*;
 public class Xob_lnki_temp_wkr extends Xob_dump_mgr_base implements Xopg_redlink_logger {
 	private Xob_lnki_temp_tbl tbl; private boolean wdata_enabled = true, xtn_ref_enabled = true, gen_html, gen_hdump;
 	private Xop_log_invoke_wkr invoke_wkr; private Xop_log_property_wkr property_wkr;		
 	private boolean ns_file_is_case_match_all = true; private Xowe_wiki commons_wiki;
-	private Xob_hdump_bldr hdump_bldr; private Xob_link_dump_cmd link_dump_cmd; private boolean hzip_enabled = true;
+	private Xob_hdump_bldr hdump_bldr; private Xob_link_dump_cmd link_dump_cmd; private boolean hzip_enabled = false;
+	private Vnt_convert_lang converter_lang;
 	public Xob_lnki_temp_wkr(Xob_bldr bldr, Xowe_wiki wiki) {this.Cmd_ctor(bldr, wiki);}
 	@Override public String Cmd_key() {return Xob_cmd_keys.Key_file_lnki_temp;}
 	@Override public byte Init_redirect()	{return Bool_.N_byte;}	// lnki_temp does not look at redirect pages
@@ -44,11 +46,16 @@ public class Xob_lnki_temp_wkr extends Xob_dump_mgr_base implements Xopg_redlink
 		Db_conn conn = make_db_file.Conn();
 		this.tbl = new Xob_lnki_temp_tbl(conn);
 		tbl.Create_tbl();
+		Xol_vnt_mgr vnt_mgr = wiki.Lang().Vnt_mgr();
+		if (vnt_mgr.Enabled()) {
+			this.converter_lang = vnt_mgr.Convert_lang();
+			converter_lang.Log__init(conn);
+		}
 		return conn;
 	}
 	@Override protected void Cmd_bgn_end() {
 		ns_file_is_case_match_all = Ns_file_is_case_match_all(wiki);							// NOTE: must call after wiki.init
-		wiki.Html_mgr().Page_wtr_mgr().Wkr(Xopg_view_mode.Tid_read).Ctgs_enabled_(false);		// disable categories else progress messages written (also for PERF)
+		wiki.Html_mgr().Page_wtr_mgr().Wkr(Xopg_page_.Tid_read).Ctgs_enabled_(false);			// disable categories else progress messages written (also for PERF)
 		if (wiki.File__bin_mgr() != null)
 			wiki.File__bin_mgr().Wkrs__del(gplx.xowa.files.bins.Xof_bin_wkr_.Key_http_wmf);	// remove wmf wkr, else will try to download images during parsing
 		commons_wiki = app.Wiki_mgr().Get_by_key_or_make(Xow_domain_itm_.Bry__commons);
@@ -65,10 +72,10 @@ public class Xob_lnki_temp_wkr extends Xob_dump_mgr_base implements Xopg_redlink
 		gplx.xowa.parsers.xndes.Xop_xnde_wkr.Timeline_log_wkr = log_mgr.Make_wkr();
 		gplx.xowa.xtns.scores.Score_xnde.Log_wkr = log_mgr.Make_wkr();
 		gplx.xowa.xtns.hieros.Hiero_xnde.Log_wkr = log_mgr.Make_wkr();
-		gplx.xowa.xtns.math.Math_nde.Log_wkr = log_mgr.Make_wkr();
+		gplx.xowa.xtns.math.Math_nde.Log_wkr = log_mgr.Make_wkr().Save_src_str_(Bool_.Y);	// enabled; DATE:2015-10-10
 		Xof_fsdb_mgr__sql trg_fsdb_mgr = new Xof_fsdb_mgr__sql();
 		wiki.File__fsdb_mode().Tid_v2_bld_y_();
-		Fsdb_db_mgr__v2 fsdb_core = Fsdb_db_mgr__v2_bldr.I.Get_or_make(wiki, Bool_.Y);
+		Fsdb_db_mgr__v2 fsdb_core = Fsdb_db_mgr__v2_bldr.Instance.Get_or_make(wiki, Bool_.Y);
 		trg_fsdb_mgr.Init_by_wiki(wiki);
 		Fsm_mnt_mgr trg_mnt_mgr = trg_fsdb_mgr.Mnt_mgr();
 		wiki.File_mgr().Init_file_mgr_by_load(wiki);										// must happen after fsdb.make
@@ -78,7 +85,7 @@ public class Xob_lnki_temp_wkr extends Xob_dump_mgr_base implements Xopg_redlink
 		trg_mnt_mgr.Mnts__get_insert_idx_(Fsm_mnt_mgr.Mnt_idx_main);
 		Fsm_mnt_mgr.Patch(trg_mnt_mgr.Mnts__get_main().Cfg_mgr().Tbl()); // NOTE: see fsdb_make; DATE:2014-04-26
 		if (gen_hdump) {
-			gplx.xowa.apis.xowa.bldrs.imports.Xoapi_import import_cfg = wiki.Appe().Api_root().Bldr().Wiki().Import();
+			gplx.xowa.apps.apis.xowa.bldrs.imports.Xoapi_import import_cfg = wiki.Appe().Api_root().Bldr().Wiki().Import();
 			hdump_bldr = new Xob_hdump_bldr(wiki.Ns_mgr(), wiki.Db_mgr_as_sql(), tbl.Conn(), import_cfg.Html_db_max(), hzip_enabled);
 			link_dump_cmd = new Xob_link_dump_cmd();
 			link_dump_cmd.Init_by_wiki(wiki);
@@ -103,7 +110,7 @@ public class Xob_lnki_temp_wkr extends Xob_dump_mgr_base implements Xopg_redlink
 			if (gen_html) {
 				page.Root_(root);
 				if (!page.Redirected())
-					wiki.Html_mgr().Page_wtr_mgr().Gen(ctx.Cur_page(), Xopg_view_mode.Tid_read);
+					wiki.Html_mgr().Page_wtr_mgr().Gen(ctx.Cur_page(), Xopg_page_.Tid_read);
 			}
 			if (gen_hdump) {
 				page.Root_(root);
@@ -122,12 +129,14 @@ public class Xob_lnki_temp_wkr extends Xob_dump_mgr_base implements Xopg_redlink
 	}
 	@Override public void Exec_commit_hook() {
 		tbl.Conn().Txn_sav();
+//			if (converter_lang != null) converter_lang.Log__save();
 		if (gen_hdump) {
 			hdump_bldr.Commit();
 			link_dump_cmd.Wkr_commit();
 		}
 	}
 	@Override public void Exec_end_hook() {
+//			if (converter_lang != null) converter_lang.Log__rls();
 		if (gen_hdump) {
 			hdump_bldr.Bld_term();
 			link_dump_cmd.Wkr_end();
@@ -193,7 +202,7 @@ class Xob_lnki_temp_wkr_ {
 		for (int i = 0; i < aliases_len; i++) {
 			String alias = aliases[i];
 			int id = i < ids_len ? rv[i] : -1;
-			wiki.Appe().Usr_dlg().Note_many("", "", "ns: ~{0} <- ~{1}", Int_.Xto_str_fmt(id, "0000"), alias);
+			wiki.Appe().Usr_dlg().Note_many("", "", "ns: ~{0} <- ~{1}", Int_.To_str_fmt(id, "0000"), alias);
 		}
 		if (aliases_len != ids_len) throw Err_.new_wo_type("mismatch in aliases and ids", "aliases", aliases_len, "ids", ids_len);
 		return rv;
diff --git a/400_xowa/src/gplx/xowa/bldrs/cmds/files/Xob_orig_regy_tbl.java b/400_xowa/src/gplx/xowa/bldrs/cmds/files/Xob_orig_regy_tbl.java
index ca078a4a1..38a451050 100644
--- a/400_xowa/src/gplx/xowa/bldrs/cmds/files/Xob_orig_regy_tbl.java
+++ b/400_xowa/src/gplx/xowa/bldrs/cmds/files/Xob_orig_regy_tbl.java
@@ -17,7 +17,7 @@ along with this program.  If not, see .
 */
 package gplx.xowa.bldrs.cmds.files; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*; import gplx.xowa.bldrs.cmds.*;
 import gplx.dbs.*; import gplx.xowa.files.repos.*;
-import gplx.xowa.nss.*;
+import gplx.xowa.wikis.nss.*;
 import gplx.xowa.wikis.domains.*;
 import gplx.dbs.engines.sqlite.*;
 class Xob_orig_regy_tbl {
diff --git a/400_xowa/src/gplx/xowa/bldrs/cmds/files/Xob_orig_regy_update_bmk_mgr.java b/400_xowa/src/gplx/xowa/bldrs/cmds/files/Xob_orig_regy_update_bmk_mgr.java
index 0f7ce565a..f15e625e7 100644
--- a/400_xowa/src/gplx/xowa/bldrs/cmds/files/Xob_orig_regy_update_bmk_mgr.java
+++ b/400_xowa/src/gplx/xowa/bldrs/cmds/files/Xob_orig_regy_update_bmk_mgr.java
@@ -74,7 +74,7 @@ public class Xob_orig_regy_update_bmk_mgr implements GfoInvkAble {
 			repo_dirty = false;
 		}
 		if (ns_enable && ns_dirty) {
-			Save(Cfg_ns_prv, Int_.Xto_str(ns_prv));
+			Save(Cfg_ns_prv, Int_.To_str(ns_prv));
 			ns_dirty = false;
 		}
 		if (ttl_enable && ttl_dirty) {
diff --git a/400_xowa/src/gplx/xowa/bldrs/cmds/files/Xob_orig_regy_update_cmd.java b/400_xowa/src/gplx/xowa/bldrs/cmds/files/Xob_orig_regy_update_cmd.java
index 42834f1f0..bec0af55e 100644
--- a/400_xowa/src/gplx/xowa/bldrs/cmds/files/Xob_orig_regy_update_cmd.java
+++ b/400_xowa/src/gplx/xowa/bldrs/cmds/files/Xob_orig_regy_update_cmd.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.bldrs.cmds.files; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*; import gplx.xowa.bldrs.cmds.*;
-import gplx.dbs.*; import gplx.dbs.qrys.*; import gplx.xowa.dbs.*; import gplx.xowa.files.*; import gplx.xowa.wikis.data.tbls.*; import gplx.xowa.files.fsdb.*; import gplx.xowa.files.origs.*;
+import gplx.dbs.*; import gplx.dbs.qrys.*; import gplx.xowa.wikis.dbs.*; import gplx.xowa.files.*; import gplx.xowa.wikis.data.tbls.*; import gplx.xowa.files.fsdb.*; import gplx.xowa.files.origs.*;
 import gplx.xowa.bldrs.wkrs.*;
 public class Xob_orig_regy_update_cmd extends Xob_itm_basic_base implements Xob_cmd {	// downloads latest orig data
 	public Xob_orig_regy_update_cmd(Xob_bldr bldr, Xowe_wiki wiki) {this.Cmd_ctor(bldr, wiki);}
diff --git a/400_xowa/src/gplx/xowa/bldrs/cmds/files/Xob_page_regy_tbl.java b/400_xowa/src/gplx/xowa/bldrs/cmds/files/Xob_page_regy_tbl.java
index 450f0e18b..fad40aa30 100644
--- a/400_xowa/src/gplx/xowa/bldrs/cmds/files/Xob_page_regy_tbl.java
+++ b/400_xowa/src/gplx/xowa/bldrs/cmds/files/Xob_page_regy_tbl.java
@@ -34,7 +34,7 @@ class Xob_page_regy_tbl {
 		Sqlite_engine_.Db_detach(cur, "page_db");
 	}
 	private static void Create_data__insert_redirect(Gfo_usr_dlg usr_dlg, Db_conn cur, byte repo_tid, Io_url join) {
-		if (!Io_mgr.I.ExistsFil(join)) return;	// redirect_db will not exist when commons.wikimedia.org is set up on new machine
+		if (!Io_mgr.Instance.ExistsFil(join)) return;	// redirect_db will not exist when commons.wikimedia.org is set up on new machine
 		usr_dlg.Note_many("", "", "inserting redirect: ~{0}", join.OwnerDir().NameOnly());
 		Sqlite_engine_.Db_attach(cur, "redirect_db", join.Raw());
 		cur.Exec_sql(String_.Format(Sql_create_redirect, repo_tid));
diff --git a/400_xowa/src/gplx/xowa/bldrs/cmds/files/Xob_xfer_temp_cmd_orig.java b/400_xowa/src/gplx/xowa/bldrs/cmds/files/Xob_xfer_temp_cmd_orig.java
index 3932d8c55..bdbcedf2e 100644
--- a/400_xowa/src/gplx/xowa/bldrs/cmds/files/Xob_xfer_temp_cmd_orig.java
+++ b/400_xowa/src/gplx/xowa/bldrs/cmds/files/Xob_xfer_temp_cmd_orig.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.bldrs.cmds.files; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*; import gplx.xowa.bldrs.cmds.*;
-import gplx.dbs.*; import gplx.xowa.dbs.*; import gplx.xowa.files.*; import gplx.xowa.files.exts.*;	
+import gplx.dbs.*; import gplx.xowa.wikis.dbs.*; import gplx.xowa.files.*; import gplx.xowa.files.exts.*;	
 import gplx.xowa.bldrs.wkrs.*;
 import gplx.xowa.parsers.lnkis.*;
 public class Xob_xfer_temp_cmd_orig extends Xob_itm_basic_base implements Xob_cmd {
diff --git a/400_xowa/src/gplx/xowa/bldrs/cmds/files/Xob_xfer_temp_tbl.java b/400_xowa/src/gplx/xowa/bldrs/cmds/files/Xob_xfer_temp_tbl.java
index af930980c..44f5aaf74 100644
--- a/400_xowa/src/gplx/xowa/bldrs/cmds/files/Xob_xfer_temp_tbl.java
+++ b/400_xowa/src/gplx/xowa/bldrs/cmds/files/Xob_xfer_temp_tbl.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.bldrs.cmds.files; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*; import gplx.xowa.bldrs.cmds.*;
-import gplx.dbs.*; import gplx.dbs.engines.sqlite.*; import gplx.xowa.dbs.*; import gplx.xowa.files.*;
+import gplx.dbs.*; import gplx.dbs.engines.sqlite.*; import gplx.xowa.wikis.dbs.*; import gplx.xowa.files.*;
 class Xob_xfer_temp_tbl {
 	public static void Create_table(Db_conn p)		{Sqlite_engine_.Tbl_create_and_delete(p, Tbl_name, Tbl_sql);}
 	public static Db_stmt Insert_stmt(Db_conn p) {return Db_stmt_.new_insert_(p, Tbl_name, Fld_lnki_id, Fld_lnki_tier_id, Fld_lnki_page_id, Fld_orig_repo, Fld_orig_page_id, Fld_lnki_ttl, Fld_orig_redirect_src, Fld_lnki_ext, Fld_lnki_type, Fld_orig_media_type, Fld_file_is_orig, Fld_orig_w, Fld_orig_h, Fld_file_w, Fld_file_h, Fld_html_w, Fld_html_h, Fld_lnki_time, Fld_lnki_page, Fld_lnki_count);}
diff --git a/400_xowa/src/gplx/xowa/bldrs/cmds/files/Xob_xfer_update_cmd.java b/400_xowa/src/gplx/xowa/bldrs/cmds/files/Xob_xfer_update_cmd.java
index 0bf6ab6a3..ee3f93d4b 100644
--- a/400_xowa/src/gplx/xowa/bldrs/cmds/files/Xob_xfer_update_cmd.java
+++ b/400_xowa/src/gplx/xowa/bldrs/cmds/files/Xob_xfer_update_cmd.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.bldrs.cmds.files; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*; import gplx.xowa.bldrs.cmds.*;
-import gplx.dbs.*; import gplx.dbs.engines.sqlite.*; import gplx.xowa.dbs.*; import gplx.xowa.files.*; import gplx.xowa.bldrs.cmds.files.*;
+import gplx.dbs.*; import gplx.dbs.engines.sqlite.*; import gplx.xowa.wikis.dbs.*; import gplx.xowa.files.*; import gplx.xowa.bldrs.cmds.files.*;
 import gplx.xowa.bldrs.wkrs.*;
 public class Xob_xfer_update_cmd extends Xob_itm_basic_base implements Xob_cmd {
 	private Io_url prv_url;
@@ -42,8 +42,8 @@ public class Xob_xfer_update_cmd extends Xob_itm_basic_base implements Xob_cmd {
 //			// rotate db
 //			DateAdp wiki_date = wiki.Db_mgr().Dump_date_query();
 //			Io_url archive_url = prv_url.GenNewNameOnly("oimg_lnki_" + wiki_date.XtoStr_fmt("yyyyMMdd"));
-//			Io_mgr.I.CopyFil(cur_file.Url(), archive_url, true);
-//			Io_mgr.I.CopyFil(cur_file.Url(), prv_url, true);
+//			Io_mgr.Instance.CopyFil(cur_file.Url(), archive_url, true);
+//			Io_mgr.Instance.CopyFil(cur_file.Url(), prv_url, true);
 	}
 	public void Cmd_init(Xob_bldr bldr) {}
 	public void Cmd_bgn(Xob_bldr bldr) {}
diff --git a/400_xowa/src/gplx/xowa/bldrs/cmds/files/Xobu_poll_mgr.java b/400_xowa/src/gplx/xowa/bldrs/cmds/files/Xobu_poll_mgr.java
index 8b559802c..1eda1027a 100644
--- a/400_xowa/src/gplx/xowa/bldrs/cmds/files/Xobu_poll_mgr.java
+++ b/400_xowa/src/gplx/xowa/bldrs/cmds/files/Xobu_poll_mgr.java
@@ -22,9 +22,9 @@ public class Xobu_poll_mgr implements GfoInvkAble {
 	private Io_url poll_file;
 	public void Poll() {
 		if (poll_file == null) poll_file = app.Fsys_mgr().Root_dir().GenSubFil("bldr_poll.gfs");
-		if (!Io_mgr.I.ExistsFil(poll_file)) return; // file doesn't exist
-		String poll_text = Io_mgr.I.LoadFilStr(poll_file);
-		Io_mgr.I.DeleteFil(poll_file);
+		if (!Io_mgr.Instance.ExistsFil(poll_file)) return; // file doesn't exist
+		String poll_text = Io_mgr.Instance.LoadFilStr(poll_file);
+		Io_mgr.Instance.DeleteFil(poll_file);
 		app.Usr_dlg().Note_many("", "", "poll file found: ~{0}", poll_file.Raw());
 		app.Gfs_mgr().Run_str(poll_text);
 	}
diff --git a/400_xowa/src/gplx/xowa/bldrs/cmds/texts/Xob_init_base.java b/400_xowa/src/gplx/xowa/bldrs/cmds/texts/Xob_init_base.java
index 315cdc674..55ad31f66 100644
--- a/400_xowa/src/gplx/xowa/bldrs/cmds/texts/Xob_init_base.java
+++ b/400_xowa/src/gplx/xowa/bldrs/cmds/texts/Xob_init_base.java
@@ -28,7 +28,7 @@ public abstract class Xob_init_base implements Xob_cmd, GfoInvkAble {
 	public abstract void Cmd_run_end(Xowe_wiki wiki);
 	public void Cmd_init(Xob_bldr bldr) {		// add other cmds; EX: wikidata
 		bldr.Import_marker().Bgn(wiki);
-		if (wbase_enabled == Bool_.__byte) wbase_enabled = wiki.Domain_tid() == Xow_domain_type_.Int__wikidata ? Bool_.Y_byte : Bool_.N_byte;	// if wbase_enabled not explicitly set, set it to y if wiki is "www.wikidata.org"
+		if (wbase_enabled == Bool_.__byte) wbase_enabled = wiki.Domain_tid() == Xow_domain_tid_.Int__wikidata ? Bool_.Y_byte : Bool_.N_byte;	// if wbase_enabled not explicitly set, set it to y if wiki is "www.wikidata.org"
 		if (wbase_enabled == Bool_.Y_byte)		// if wbase_enabled, auto-add wdata_wkrs bldr
 			this.Cmd_ini_wdata(bldr, wiki);
 	}
@@ -45,7 +45,7 @@ public abstract class Xob_init_base implements Xob_cmd, GfoInvkAble {
 		if (wiki.Appe().Setup_mgr().Dump_mgr().Css_wiki_update()) {
 			Io_url url = wiki.Appe().Fsys_mgr().Wiki_css_dir(wiki.Domain_str()).GenSubFil(Xoa_css_extractor.Css_wiki_name);
 			usr_dlg.Log_many("", "", "deleting css: ~{0}", url.Raw());
-			Io_mgr.I.DeleteFil_args(url).MissingFails_off().Exec();
+			Io_mgr.Instance.DeleteFil_args(url).MissingFails_off().Exec();
 		}
 	}
 	public void Cmd_term() {}
diff --git a/400_xowa/src/gplx/xowa/bldrs/cmds/texts/Xob_search_base.java b/400_xowa/src/gplx/xowa/bldrs/cmds/texts/Xob_search_base.java
index 21b412efb..d2843a229 100644
--- a/400_xowa/src/gplx/xowa/bldrs/cmds/texts/Xob_search_base.java
+++ b/400_xowa/src/gplx/xowa/bldrs/cmds/texts/Xob_search_base.java
@@ -20,10 +20,10 @@ import gplx.core.primitives.*;
 import gplx.xowa.bldrs.wkrs.*; import gplx.xowa.bldrs.wtrs.*;
 import gplx.ios.*;
 import gplx.xowa.langs.*;
-import gplx.xowa.nss.*;
-import gplx.xowa.wikis.data.*; import gplx.xowa.dbs.*; import gplx.xowa.tdbs.*; import gplx.xowa.wikis.data.tbls.*;
+import gplx.xowa.wikis.nss.*;
+import gplx.xowa.wikis.data.*; import gplx.xowa.wikis.dbs.*; import gplx.xowa.wikis.tdbs.*; import gplx.xowa.wikis.data.tbls.*;
 public abstract class Xob_search_base extends Xob_itm_dump_base implements Xobd_wkr, GfoInvkAble {
-	private final Ordered_hash list = Ordered_hash_.new_(); private Xol_lang lang;
+	private final Ordered_hash list = Ordered_hash_.New(); private Xol_lang_itm lang;
 	public abstract String Wkr_key();
 	public abstract Io_make_cmd Make_cmd_site();
 	public void Wkr_ini(Xob_bldr bldr) {}
@@ -61,11 +61,11 @@ public abstract class Xob_search_base extends Xob_itm_dump_base implements Xobd_
 		dump_bfr.ClearAndReset();
 		Xobdc_merger.Ns(bldr.Usr_dlg(), tmp_wtr_mgr.Regy(), Xotdb_dir_info_.Name_search_ttl, temp_dir, make_dir, sort_mem_len, Io_line_rdr_key_gen_.first_pipe, this.Make_cmd_site());
 		tmp_wtr_mgr.Rls_all();
-		if (delete_temp) Io_mgr.I.DeleteDirDeep(temp_dir);
+		if (delete_temp) Io_mgr.Instance.DeleteDirDeep(temp_dir);
 	}
 	public void Wkr_print() {}
 	// private static final int row_fixed_len = 5 + 1 + 1 + 1;	// 5=rowId; 1=|; 1=NmsOrd; 1=|		
-	public static byte[][] Split_ttl_into_words(Xol_lang lang, Ordered_hash list, Bry_bfr bfr, byte[] ttl) {
+	public static byte[][] Split_ttl_into_words(Xol_lang_itm lang, Ordered_hash list, Bry_bfr bfr, byte[] ttl) {
 		if (lang != null)	// null lang passed in by searcher
 			ttl = lang.Case_mgr().Case_build_lower(ttl);
 		int ttl_len = ttl.length; Bry_obj_ref word_ref = Bry_obj_ref.new_(Bry_.Empty);
@@ -73,7 +73,7 @@ public abstract class Xob_search_base extends Xob_itm_dump_base implements Xobd_
 		while (true) {
 			if (word_done || i == ttl_len) {
 				if (bfr.Len() > 0) {
-					byte[] word = bfr.Xto_bry_and_clear();
+					byte[] word = bfr.To_bry_and_clear();
 					word_ref.Val_(word);
 					if (!list.Has(word_ref)) list.Add(word_ref, word);	// don't add same word twice; EX: Title of "Can Can" should only have "Can" in index
 				}
diff --git a/400_xowa/src/gplx/xowa/bldrs/cmds/texts/Xob_term_base.java b/400_xowa/src/gplx/xowa/bldrs/cmds/texts/Xob_term_base.java
index 37c95b0e5..d02f06e6b 100644
--- a/400_xowa/src/gplx/xowa/bldrs/cmds/texts/Xob_term_base.java
+++ b/400_xowa/src/gplx/xowa/bldrs/cmds/texts/Xob_term_base.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.bldrs.cmds.texts; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*; import gplx.xowa.bldrs.cmds.*;
-import gplx.xowa.bldrs.xmls.*; import gplx.xowa.xtns.wdatas.*; import gplx.xowa.wikis.data.tbls.*; import gplx.xowa.dbs.*;	
+import gplx.xowa.bldrs.xmls.*; import gplx.xowa.xtns.wdatas.*; import gplx.xowa.wikis.data.tbls.*; import gplx.xowa.wikis.dbs.*;	
 public abstract class Xob_term_base implements Xob_cmd, GfoInvkAble {
 	public Xob_term_base Ctor(Xob_bldr bldr, Xowe_wiki wiki) {this.wiki = wiki; return this;} private Xowe_wiki wiki;
 	public abstract String Cmd_key();
diff --git a/400_xowa/src/gplx/xowa/bldrs/cmds/texts/sqls/Xob_css_cmd.java b/400_xowa/src/gplx/xowa/bldrs/cmds/texts/sqls/Xob_css_cmd.java
index b34cda2e3..b1b1d9ebb 100644
--- a/400_xowa/src/gplx/xowa/bldrs/cmds/texts/sqls/Xob_css_cmd.java
+++ b/400_xowa/src/gplx/xowa/bldrs/cmds/texts/sqls/Xob_css_cmd.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.bldrs.cmds.texts.sqls; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*; import gplx.xowa.bldrs.cmds.*; import gplx.xowa.bldrs.cmds.texts.*;
-import gplx.xowa.bldrs.*; import gplx.xowa.wikis.*; import gplx.xowa.wikis.data.*; import gplx.xowa.html.css.*;
+import gplx.xowa.bldrs.*; import gplx.xowa.wikis.*; import gplx.xowa.wikis.data.*; import gplx.xowa.htmls.css.*;
 public class Xob_css_cmd implements Xob_cmd {
 	private final Xob_bldr bldr; private final Xowe_wiki wiki; private final Gfo_usr_dlg usr_dlg;
 	private Io_url css_dir; private String css_key;
@@ -35,7 +35,7 @@ public class Xob_css_cmd implements Xob_cmd {
 		core_db.Conn().Txn_bgn("bldr__css");
 		core_db.Tbl__css_core().Create_tbl();
 		core_db.Tbl__css_file().Create_tbl();
-		gplx.xowa.html.css.Xowd_css_core_mgr.Set(core_db.Tbl__css_core(), core_db.Tbl__css_file(), css_dir, css_key);
+		gplx.xowa.htmls.css.Xowd_css_core_mgr.Set(core_db.Tbl__css_core(), core_db.Tbl__css_file(), css_dir, css_key);
 		core_db.Tbl__cfg().Upsert_yn(Xow_cfg_consts.Grp__wiki_schema, Xowd_db_file_schema_props.Key__tbl_css_core, Bool_.Y);
 		core_db.Conn().Txn_end();
 		usr_dlg.Plog_many("", "", Cmd_key() + ":end;");
diff --git a/400_xowa/src/gplx/xowa/bldrs/cmds/texts/sqls/Xob_init_cmd.java b/400_xowa/src/gplx/xowa/bldrs/cmds/texts/sqls/Xob_init_cmd.java
index 18165cb7d..42e866df5 100644
--- a/400_xowa/src/gplx/xowa/bldrs/cmds/texts/sqls/Xob_init_cmd.java
+++ b/400_xowa/src/gplx/xowa/bldrs/cmds/texts/sqls/Xob_init_cmd.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.bldrs.cmds.texts.sqls; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*; import gplx.xowa.bldrs.cmds.*; import gplx.xowa.bldrs.cmds.texts.*;
-import gplx.xowa.bldrs.*; import gplx.xowa.apis.xowa.bldrs.imports.*;
+import gplx.xowa.bldrs.*; import gplx.xowa.apps.apis.xowa.bldrs.imports.*;
 import gplx.xowa.xtns.wdatas.imports.*;
 public class Xob_init_cmd extends Xob_init_base {
 	public Xob_init_cmd(Xob_bldr bldr, Xowe_wiki wiki) {this.Ctor(bldr, wiki);}
diff --git a/400_xowa/src/gplx/xowa/bldrs/cmds/texts/sqls/Xob_page_cmd.java b/400_xowa/src/gplx/xowa/bldrs/cmds/texts/sqls/Xob_page_cmd.java
index 878ba008c..a041e7459 100644
--- a/400_xowa/src/gplx/xowa/bldrs/cmds/texts/sqls/Xob_page_cmd.java
+++ b/400_xowa/src/gplx/xowa/bldrs/cmds/texts/sqls/Xob_page_cmd.java
@@ -18,9 +18,9 @@ along with this program.  If not, see .
 package gplx.xowa.bldrs.cmds.texts.sqls; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*; import gplx.xowa.bldrs.cmds.*; import gplx.xowa.bldrs.cmds.texts.*;
 import gplx.dbs.*; import gplx.ios.*; import gplx.xowa.bldrs.cmds.*; import gplx.xowa.bldrs.cmds.wikis.*;
 import gplx.xowa.bldrs.wkrs.*;
-import gplx.xowa.nss.*;
-import gplx.xowa.wikis.data.*; import gplx.xowa.wikis.data.tbls.*; import gplx.xowa.dbs.*; 
-import gplx.xowa.wikis.*; import gplx.xowa.bldrs.filters.dansguardians.*; import gplx.xowa.apis.xowa.bldrs.imports.*;
+import gplx.xowa.wikis.nss.*;
+import gplx.xowa.wikis.data.*; import gplx.xowa.wikis.data.tbls.*; import gplx.xowa.wikis.dbs.*; 
+import gplx.xowa.wikis.*; import gplx.xowa.bldrs.filters.dansguardians.*; import gplx.xowa.apps.apis.xowa.bldrs.imports.*;
 import gplx.xowa.parsers.utils.*;
 public class Xob_page_cmd extends Xob_itm_basic_base implements Xobd_wkr, GfoInvkAble {
 	private Xowd_db_mgr db_mgr; private Db_idx_mode idx_mode = Db_idx_mode.Itm_end; private Xowd_page_tbl page_core_tbl; private Io_stream_zip_mgr text_zip_mgr; private byte text_zip_tid;
diff --git a/400_xowa/src/gplx/xowa/bldrs/cmds/texts/sqls/Xob_page_cmd_tst.java b/400_xowa/src/gplx/xowa/bldrs/cmds/texts/sqls/Xob_page_cmd_tst.java
index aae111925..4e0cc877e 100644
--- a/400_xowa/src/gplx/xowa/bldrs/cmds/texts/sqls/Xob_page_cmd_tst.java
+++ b/400_xowa/src/gplx/xowa/bldrs/cmds/texts/sqls/Xob_page_cmd_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.bldrs.cmds.texts.sqls; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*; import gplx.xowa.bldrs.cmds.*; import gplx.xowa.bldrs.cmds.texts.*;
-import org.junit.*; import gplx.dbs.*; import gplx.xowa.specials.search.*; import gplx.xowa.bldrs.*; import gplx.xowa.bldrs.cmds.ctgs.*; import gplx.xowa.nss.*;
+import org.junit.*; import gplx.dbs.*; import gplx.xowa.specials.search.*; import gplx.xowa.bldrs.*; import gplx.xowa.bldrs.cmds.ctgs.*; import gplx.xowa.wikis.nss.*;
 public class Xob_page_cmd_tst {
 	@Before public void init() {if (Xoa_test_.Db_skip()) return; fxt.Ctor_fsys();} Db_mgr_fxt fxt = new Db_mgr_fxt();
 	@After public void term() {if (Xoa_test_.Db_skip()) return; fxt.Rls();} 
diff --git a/400_xowa/src/gplx/xowa/bldrs/cmds/texts/sqls/Xob_pagelinks_parser_cmd.java b/400_xowa/src/gplx/xowa/bldrs/cmds/texts/sqls/Xob_pagelinks_parser_cmd.java
index 1ea2cf732..151074139 100644
--- a/400_xowa/src/gplx/xowa/bldrs/cmds/texts/sqls/Xob_pagelinks_parser_cmd.java
+++ b/400_xowa/src/gplx/xowa/bldrs/cmds/texts/sqls/Xob_pagelinks_parser_cmd.java
@@ -57,7 +57,7 @@ public class Xob_pagelinks_parser_cmd extends Xob_sql_dump_base implements Sql_f
 			case Fld__pl_title:
 				byte[] tmp_trg_ttl = Bry_.Mid(src, fld_bgn, fld_end);
 				temp_tbl.Insert(tmp_src_id, tmp_trg_ns, tmp_trg_ttl);
-				if (++rows % 100000 == 0) usr_dlg.Prog_many("", "", "reading row ~{0}", Int_.Xto_str_fmt(rows, "#,##0"));
+				if (++rows % 100000 == 0) usr_dlg.Prog_many("", "", "reading row ~{0}", Int_.To_str_fmt(rows, "#,##0"));
 				break;
 		}
 	}
diff --git a/400_xowa/src/gplx/xowa/bldrs/cmds/texts/sqls/Xob_pagelinks_parser_tst.java b/400_xowa/src/gplx/xowa/bldrs/cmds/texts/sqls/Xob_pagelinks_parser_tst.java
index fbf0be4fa..a458d6849 100644
--- a/400_xowa/src/gplx/xowa/bldrs/cmds/texts/sqls/Xob_pagelinks_parser_tst.java
+++ b/400_xowa/src/gplx/xowa/bldrs/cmds/texts/sqls/Xob_pagelinks_parser_tst.java
@@ -17,10 +17,10 @@ along with this program.  If not, see .
 */
 package gplx.xowa.bldrs.cmds.texts.sqls; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*; import gplx.xowa.bldrs.cmds.*; import gplx.xowa.bldrs.cmds.texts.*;
 import org.junit.*;
-//	public class Xob_pagelinks_parser_tst {
+public class Xob_pagelinks_parser_tst {
 //		@Before public void init() {if (Xoa_test_.Db_skip()) return; fxt.Ctor_fsys();} Db_mgr_fxt fxt = new Db_mgr_fxt();
 //		@After public void term() {if (Xoa_test_.Db_skip()) return; fxt.Rls();} 
-//		@Test   public void Basic() {
+	@Test   public void Basic() {
 //			if (Xoa_test_.Db_skip()) return; 
 //			fxt.Init_db_sqlite();
 //			fxt.Wiki().Db_mgr_as_sql().Core_data_mgr().Db__cat_core().Tbl__cat_core().Create_tbl();
@@ -37,7 +37,7 @@ import org.junit.*;
 //			;
 //			Tst_ctg_hidden(Bool_.Y, 1, 3);
 //			Tst_ctg_hidden(Bool_.N, 2);
-//		}
+	}
 //		private void Init_ctgs(params int[] ctgs) {
 //			int len = ctgs.length;
 //			Xowd_cat_core_tbl tbl = fxt.Wiki().Db_mgr_as_sql().Core_data_mgr().Db__cat_core().Tbl__cat_core().Create_tbl();
@@ -55,7 +55,7 @@ import org.junit.*;
 //			for (int i = 0; i < len; i++) {
 //				int ctg_id = ctgs[i];
 //				Xowd_category_itm ctg_itm = tbl.Select(ctg_id);
-//				Tfds.Eq(expd_hidden, ctg_itm.Hidden(), Int_.Xto_str(ctg_id));
+//				Tfds.Eq(expd_hidden, ctg_itm.Hidden(), Int_.To_str(ctg_id));
 //			}
 //		}
-//	}
+}
diff --git a/400_xowa/src/gplx/xowa/bldrs/cmds/texts/sqls/Xob_search_sql_cmd.java b/400_xowa/src/gplx/xowa/bldrs/cmds/texts/sqls/Xob_search_sql_cmd.java
index bfba571d4..e3f8c331e 100644
--- a/400_xowa/src/gplx/xowa/bldrs/cmds/texts/sqls/Xob_search_sql_cmd.java
+++ b/400_xowa/src/gplx/xowa/bldrs/cmds/texts/sqls/Xob_search_sql_cmd.java
@@ -18,7 +18,7 @@ along with this program.  If not, see .
 package gplx.xowa.bldrs.cmds.texts.sqls; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*; import gplx.xowa.bldrs.cmds.*; import gplx.xowa.bldrs.cmds.texts.*;
 import gplx.xowa.langs.*;
 import gplx.xowa.bldrs.wkrs.*;
-import gplx.xowa.wikis.data.*; import gplx.dbs.*; import gplx.dbs.engines.sqlite.*; import gplx.xowa.dbs.*; import gplx.xowa.wikis.data.tbls.*; import gplx.xowa.bldrs.*;
+import gplx.xowa.wikis.data.*; import gplx.dbs.*; import gplx.dbs.engines.sqlite.*; import gplx.xowa.wikis.dbs.*; import gplx.xowa.wikis.data.tbls.*; import gplx.xowa.bldrs.*;
 public class Xob_search_sql_cmd extends Xob_itm_basic_base implements Xob_cmd {	// search version 2; upgrade
 	private int commit_interval = 100000, progress_interval = 10000;
 	public Xob_search_sql_cmd(Xob_bldr bldr, Xowe_wiki wiki) {this.Cmd_ctor(bldr, wiki);}
@@ -40,9 +40,9 @@ public class Xob_search_sql_cmd extends Xob_itm_basic_base implements Xob_cmd {
 		Xowd_page_tbl page_tbl = db_mgr.Tbl__page();
 		Db_rdr page_rdr = page_tbl.Select_all();
 		try {
-			Xol_lang lang = wiki.Lang();
+			Xol_lang_itm lang = wiki.Lang();
 			Bry_bfr bfr = Bry_bfr.reset_(1024);
-			Ordered_hash hash = Ordered_hash_.new_();
+			Ordered_hash hash = Ordered_hash_.New();
 			int page_count = 0;
 			String fld_page_id = page_tbl.Fld_page_id(), fld_page_ttl = page_tbl.Fld_page_title();
 			while (page_rdr.Move_next()) {
diff --git a/400_xowa/src/gplx/xowa/bldrs/cmds/texts/sqls/Xob_search_sql_wkr.java b/400_xowa/src/gplx/xowa/bldrs/cmds/texts/sqls/Xob_search_sql_wkr.java
index 8f64349d4..70415cabd 100644
--- a/400_xowa/src/gplx/xowa/bldrs/cmds/texts/sqls/Xob_search_sql_wkr.java
+++ b/400_xowa/src/gplx/xowa/bldrs/cmds/texts/sqls/Xob_search_sql_wkr.java
@@ -19,7 +19,7 @@ package gplx.xowa.bldrs.cmds.texts.sqls; import gplx.*; import gplx.xowa.*; impo
 import gplx.ios.*;
 import gplx.xowa.bldrs.wkrs.*;
 import gplx.xowa.langs.*;
-import gplx.xowa.wikis.data.*; import gplx.dbs.*; import gplx.dbs.engines.sqlite.*; import gplx.xowa.dbs.*; import gplx.xowa.wikis.data.tbls.*;
+import gplx.xowa.wikis.data.*; import gplx.dbs.*; import gplx.dbs.engines.sqlite.*; import gplx.xowa.wikis.dbs.*; import gplx.xowa.wikis.data.tbls.*;
 public class Xob_search_sql_wkr extends Xob_search_base implements Io_make_cmd {			// search version 2
 	private Xowd_db_mgr db_mgr; private Xowd_search_link_tbl search_page_tbl; private Xowd_search_word_tbl search_word_tbl;
 	private int search_id = 0; private byte[] prv_word = Bry_.Empty; private int page_count;
@@ -58,7 +58,7 @@ public class Xob_search_sql_wkr extends Xob_search_base implements Io_make_cmd {
 }
 class Xob_search_wkr extends Xob_itm_basic_base implements Xobd_wkr {
 	private Xowd_db_file search_db; private Xowd_search_temp_tbl search_temp_tbl;
-	private Xol_lang lang; private final Bry_bfr tmp_bfr = Bry_bfr.new_(255); private final Ordered_hash list = Ordered_hash_.new_bry_();
+	private Xol_lang_itm lang; private final Bry_bfr tmp_bfr = Bry_bfr.new_(255); private final Ordered_hash list = Ordered_hash_.New_bry();
 	public String Wkr_key() {return Xob_cmd_keys.Key_text_search_wkr;}
 	public void Wkr_ini(Xob_bldr bldr) {}
 	public void Wkr_bgn(Xob_bldr bldr) {
diff --git a/400_xowa/src/gplx/xowa/bldrs/cmds/texts/sqls/Xob_term_cmd.java b/400_xowa/src/gplx/xowa/bldrs/cmds/texts/sqls/Xob_term_cmd.java
index 0bad28b0b..92bcb8224 100644
--- a/400_xowa/src/gplx/xowa/bldrs/cmds/texts/sqls/Xob_term_cmd.java
+++ b/400_xowa/src/gplx/xowa/bldrs/cmds/texts/sqls/Xob_term_cmd.java
@@ -16,18 +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.bldrs.cmds.texts.sqls; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*; import gplx.xowa.bldrs.cmds.*; import gplx.xowa.bldrs.cmds.texts.*;
-import gplx.dbs.cfgs.*; import gplx.xowa.dbs.*; import gplx.xowa.wikis.*;
+import gplx.dbs.cfgs.*; import gplx.xowa.wikis.dbs.*; import gplx.xowa.wikis.*;
 public class Xob_term_cmd extends Xob_term_base {
 	public Xob_term_cmd(Xob_bldr bldr, Xowe_wiki wiki) {this.Ctor(bldr, wiki); this.wiki = wiki;} private Xowe_wiki wiki;
 	@Override public String Cmd_key() {return KEY;} public static final String KEY = "text.term";
 	@Override public void Cmd_end_hook() {
-		Io_mgr.I.DeleteDirDeep(wiki.Fsys_mgr().Tmp_dir());
+		Io_mgr.Instance.DeleteDirDeep(wiki.Fsys_mgr().Tmp_dir());
 		Db_cfg_tbl cfg_tbl = wiki.Data__core_mgr().Tbl__cfg();
 		cfg_tbl.Insert_bry(Xow_cfg_consts.Grp__wiki_init, Xow_cfg_consts.Key__init__bldr_version, wiki.Props().Bldr_version());
 		cfg_tbl.Insert_bry(Xow_cfg_consts.Grp__wiki_init, Xow_cfg_consts.Key__init__main_page, wiki.Props().Main_page());
 		cfg_tbl.Insert_bry(Xow_cfg_consts.Grp__wiki_init, "props.siteinfo_misc", wiki.Props().Siteinfo_misc());
 		cfg_tbl.Insert_bry(Xow_cfg_consts.Grp__wiki_init, "props.siteinfo_mainpage", wiki.Props().Siteinfo_mainpage());
-		gplx.fsdb.Fsdb_db_mgr__v2_bldr.I.Get_or_make(wiki, false);// always build file.user db; DATE:2015-05-12
+		gplx.fsdb.Fsdb_db_mgr__v2_bldr.Instance.Get_or_make(wiki, false);// always build file.user db; DATE:2015-05-12
 		wiki.Data__core_mgr().Rls();
 	}
 }
diff --git a/400_xowa/src/gplx/xowa/bldrs/cmds/texts/tdbs/Io_sort_cmd_ns.java b/400_xowa/src/gplx/xowa/bldrs/cmds/texts/tdbs/Io_sort_cmd_ns.java
index af5d7a99c..f7cbdf563 100644
--- a/400_xowa/src/gplx/xowa/bldrs/cmds/texts/tdbs/Io_sort_cmd_ns.java
+++ b/400_xowa/src/gplx/xowa/bldrs/cmds/texts/tdbs/Io_sort_cmd_ns.java
@@ -17,7 +17,7 @@ along with this program.  If not, see .
 */
 package gplx.xowa.bldrs.cmds.texts.tdbs; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*; import gplx.xowa.bldrs.cmds.*; import gplx.xowa.bldrs.cmds.texts.*;
 import gplx.ios.*;
-import gplx.xowa.tdbs.*; import gplx.xowa.tdbs.xdats.*;
+import gplx.xowa.wikis.tdbs.*; import gplx.xowa.wikis.tdbs.xdats.*;
 public class Io_sort_cmd_ns implements Io_make_cmd {
 	Xob_xdat_file_wtr fil_wtr; Bry_bfr reg_bfr = Bry_bfr.new_(), key_bfr_0 = Bry_bfr.new_(512), key_bfr_n = Bry_bfr.new_(512);
 	int fil_count = 0, itm_count = 0;
@@ -43,7 +43,7 @@ public class Io_sort_cmd_ns implements Io_make_cmd {
 	}
 	public void Sort_end() {
 		Flush();
-		Io_mgr.I.AppendFilBfr(reg_url, reg_bfr);
+		Io_mgr.Instance.AppendFilBfr(reg_url, reg_bfr);
 		//fil_wtr.Rls(); reg_bfr.Rls(); key_bfr_0.Rls(); key_bfr_n.Rls();
 	}
 	private void Flush() {
diff --git a/400_xowa/src/gplx/xowa/bldrs/cmds/texts/tdbs/Xob_calc_stats_cmd.java b/400_xowa/src/gplx/xowa/bldrs/cmds/texts/tdbs/Xob_calc_stats_cmd.java
index 9c6c35230..a9d9947d7 100644
--- a/400_xowa/src/gplx/xowa/bldrs/cmds/texts/tdbs/Xob_calc_stats_cmd.java
+++ b/400_xowa/src/gplx/xowa/bldrs/cmds/texts/tdbs/Xob_calc_stats_cmd.java
@@ -17,9 +17,9 @@ along with this program.  If not, see .
 */
 package gplx.xowa.bldrs.cmds.texts.tdbs; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*; import gplx.xowa.bldrs.cmds.*; import gplx.xowa.bldrs.cmds.texts.*;
 import gplx.xowa.bldrs.wkrs.*;
-import gplx.xowa.nss.*;
+import gplx.xowa.wikis.nss.*;
 import gplx.xowa.wikis.metas.*; import gplx.xowa.wikis.data.tbls.*;
-import gplx.xowa.tdbs.*; import gplx.xowa.tdbs.hives.*; import gplx.xowa.tdbs.xdats.*;
+import gplx.xowa.wikis.tdbs.*; import gplx.xowa.wikis.tdbs.hives.*; import gplx.xowa.wikis.tdbs.xdats.*;
 public class Xob_calc_stats_cmd extends Xob_itm_basic_base implements Xob_cmd {
 	public Xob_calc_stats_cmd(Xob_bldr bldr, Xowe_wiki wiki) {this.Cmd_ctor(bldr, wiki);}
 	public String Cmd_key() {return Xob_cmd_keys.Key_tdb_calc_stats;}
@@ -48,11 +48,11 @@ public class Xob_calc_stats_cmd extends Xob_itm_basic_base implements Xob_cmd {
 			Xow_ns ns = wiki.Ns_mgr().Ords_ary()[i];
 			if (ns.Id() < 0) continue;
 			bfr.Add_byte_nl();
-			Gen_call(Bool_.N, bfr, Xow_wiki_stats.Invk_number_of_articles_in_ns_, ns.Num_str(), Int_.Xto_str_pad_bgn_zero(ns.Count(), 10));
+			Gen_call(Bool_.N, bfr, Xow_wiki_stats.Invk_number_of_articles_in_ns_, ns.Num_str(), Int_.To_str_pad_bgn_zero(ns.Count(), 10));
 		}
 		bfr.Add_byte_nl().Add_byte(Byte_ascii.Semic).Add_byte_nl();
 		Io_url wiki_gfs = Wiki_gfs_url(wiki);
-		Io_mgr.I.SaveFilBfr(wiki_gfs, bfr);
+		Io_mgr.Instance.SaveFilBfr(wiki_gfs, bfr);
 	}
 	private void Gen_call(boolean first, Bry_bfr bfr, String key, Object... vals) {
 		if (!first) bfr.Add_byte(Byte_ascii.Dot);
@@ -83,7 +83,7 @@ public class Xob_calc_stats_cmd extends Xob_itm_basic_base implements Xob_cmd {
 		return Calc_count_articles_dir(ns, hive_dir);
 	}
 	int Calc_count_articles_dir(Xow_ns ns, Io_url dir) {
-		Io_url[] subs = Io_mgr.I.QueryDir_args(dir).DirInclude_().ExecAsUrlAry();
+		Io_url[] subs = Io_mgr.Instance.QueryDir_args(dir).DirInclude_().ExecAsUrlAry();
 		int count = 0;
 		int subs_len = subs.length;
 		bldr.Usr_dlg().Prog_one(GRP_KEY, "count", "calculating: ~{0}", dir.Raw());
@@ -99,7 +99,7 @@ public class Xob_calc_stats_cmd extends Xob_itm_basic_base implements Xob_cmd {
 	int Calc_count_articles_fil(Xow_ns ns, Io_url fil) {
 		if (String_.Eq(fil.NameAndExt(), Xotdb_dir_info_.Name_reg_fil)) return 0;
 		int rv = 0;
-		byte[] bry = Io_mgr.I.LoadFilBry(fil);
+		byte[] bry = Io_mgr.Instance.LoadFilBry(fil);
 		Xob_xdat_file xdat_file = new Xob_xdat_file().Parse(bry, bry.length, fil);
 		Xowd_page_itm page = Xowd_page_itm.new_tmp();
 		int count = xdat_file.Count();
diff --git a/400_xowa/src/gplx/xowa/bldrs/cmds/texts/tdbs/Xob_init_base_tst.java b/400_xowa/src/gplx/xowa/bldrs/cmds/texts/tdbs/Xob_init_base_tst.java
index 52ac7d8e6..2a9993444 100644
--- a/400_xowa/src/gplx/xowa/bldrs/cmds/texts/tdbs/Xob_init_base_tst.java
+++ b/400_xowa/src/gplx/xowa/bldrs/cmds/texts/tdbs/Xob_init_base_tst.java
@@ -16,14 +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.bldrs.cmds.texts.tdbs; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*; import gplx.xowa.bldrs.cmds.*; import gplx.xowa.bldrs.cmds.texts.*;
-import org.junit.*; import gplx.xowa.html.portal.*; import gplx.xowa.wikis.xwikis.*;
+import org.junit.*; import gplx.xowa.htmls.portal.*; import gplx.xowa.wikis.xwikis.*;
 public class Xob_init_base_tst {
 	@Before public void init() {fxt.Clear();} private Xob_init_base_fxt fxt = new Xob_init_base_fxt();
 	@Test  public void Dirty_wiki_itms() {
 		Xoae_app app = fxt.App(); Xowe_wiki wiki = fxt.Wiki();
 		Xoa_available_wikis_mgr wikis_list = fxt.App().Gui_mgr().Html_mgr().Portal_mgr().Wikis();
 		Tfds.Eq("", wikis_list.Itms_as_html());			// assert
-		Xow_xwiki_itm xwiki_itm = app.Usere().Wiki().Xwiki_mgr().Add_full("en.wikipedia.org", "en.wikipedia.org");
+		Xow_xwiki_itm xwiki_itm = app.Usere().Wiki().Xwiki_mgr().Add_by_atrs("en.wikipedia.org", "en.wikipedia.org");
 		xwiki_itm.Offline_(Bool_.Y);	// simulate add via Available_from_fsys; DATE:2014-09-21
 		Tfds.Eq("", wikis_list.Itms_as_html());			// still empty
 		new Xob_init_tdb(app.Bldr(), wiki).Cmd_end();	// mock "init" task
@@ -36,7 +36,7 @@ class Xob_init_base_fxt {
 			app = Xoa_app_fxt.app_();
 			wiki = Xoa_app_fxt.wiki_tst_(app);
 		}
-		Io_mgr.I.InitEngine_mem();
+		Io_mgr.Instance.InitEngine_mem();
 	}
 	public Xoae_app App() {return app;} private Xoae_app app;
 	public Xowe_wiki Wiki() {return wiki;} private Xowe_wiki wiki;
diff --git a/400_xowa/src/gplx/xowa/bldrs/cmds/texts/tdbs/Xob_make_cmd_site.java b/400_xowa/src/gplx/xowa/bldrs/cmds/texts/tdbs/Xob_make_cmd_site.java
index 8269c4edf..13a724d43 100644
--- a/400_xowa/src/gplx/xowa/bldrs/cmds/texts/tdbs/Xob_make_cmd_site.java
+++ b/400_xowa/src/gplx/xowa/bldrs/cmds/texts/tdbs/Xob_make_cmd_site.java
@@ -17,7 +17,7 @@ along with this program.  If not, see .
 */
 package gplx.xowa.bldrs.cmds.texts.tdbs; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*; import gplx.xowa.bldrs.cmds.*; import gplx.xowa.bldrs.cmds.texts.*;
 import gplx.ios.*;
-import gplx.xowa.tdbs.*; import gplx.xowa.tdbs.xdats.*;
+import gplx.xowa.wikis.tdbs.*; import gplx.xowa.wikis.tdbs.xdats.*;
 public class Xob_make_cmd_site implements Io_make_cmd {
 	Xob_xdat_file_wtr fil_wtr; Bry_bfr cur_bfr = Bry_bfr.new_(), reg_bfr = Bry_bfr.new_(), reg_key_0 = Bry_bfr.new_(512), reg_key_n = Bry_bfr.new_(512);
 	int make_fil_max = 65 * Io_mgr.Len_kb, fil_count = 0, itm_count = 0, itm_key_end = 0; Io_url reg_url;
@@ -84,7 +84,7 @@ public class Xob_make_cmd_site implements Io_make_cmd {
 		fil_wtr.Bfr().Add_bfr_and_clear(cur_bfr);
 		fil_wtr.Add_idx(line_dlm);
 		Flush();
-		Io_mgr.I.AppendFilBfr(reg_url, reg_bfr);
+		Io_mgr.Instance.AppendFilBfr(reg_url, reg_bfr);
 		//fil_wtr.Rls(); cur_bfr.Rls(); fil_wtr.Rls(); reg_bfr.Rls(); reg_key_0.Rls(); reg_key_n.Rls();
 	}
 //		private void Flush_large(byte[] bry, int itm_bgn, int itm_end, int itm_len) {
@@ -93,7 +93,7 @@ public class Xob_make_cmd_site implements Io_make_cmd {
 //			fil_wtr.Add_idx_direct(itm_len, Byte_.Zero);
 //			IoStream stream = IoStream_.Null;
 //			try {
-//				stream = Io_mgr.I.OpenStreamWrite(fil_wtr.Fil_url());
+//				stream = Io_mgr.Instance.OpenStreamWrite(fil_wtr.Fil_url());
 //				fil_wtr.FlushIdx(stream);
 //				stream.Write_and_flush(bry, itm_bgn, itm_end);
 //				fil_wtr.Clear();
diff --git a/400_xowa/src/gplx/xowa/bldrs/cmds/texts/tdbs/Xob_make_id_wkr.java b/400_xowa/src/gplx/xowa/bldrs/cmds/texts/tdbs/Xob_make_id_wkr.java
index 14c6cf8e8..3716dd580 100644
--- a/400_xowa/src/gplx/xowa/bldrs/cmds/texts/tdbs/Xob_make_id_wkr.java
+++ b/400_xowa/src/gplx/xowa/bldrs/cmds/texts/tdbs/Xob_make_id_wkr.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.bldrs.cmds.texts.tdbs; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*; import gplx.xowa.bldrs.cmds.*; import gplx.xowa.bldrs.cmds.texts.*;
-import gplx.ios.*; import gplx.xowa.tdbs.*; import gplx.xowa.wikis.data.tbls.*;
+import gplx.ios.*; import gplx.xowa.wikis.tdbs.*; import gplx.xowa.wikis.data.tbls.*;
 import gplx.xowa.bldrs.wkrs.*;
 public class Xob_make_id_wkr extends Xob_itm_dump_base implements Xobd_wkr, GfoInvkAble {
 	public Xob_make_id_wkr(Xob_bldr bldr, Xowe_wiki wiki) {this.Cmd_ctor(bldr, wiki);}
@@ -27,12 +27,12 @@ public class Xob_make_id_wkr extends Xob_itm_dump_base implements Xobd_wkr, GfoI
 	}
 	public void Wkr_run(Xowd_page_itm page) {
 		byte[] ttl = page.Ttl_page_db();
-		if (dump_bfr.Len() + row_fixed_len + ttl.length > dump_fil_len) Io_mgr.I.AppendFilBfr(dump_url_gen.Nxt_url(), dump_bfr);
+		if (dump_bfr.Len() + row_fixed_len + ttl.length > dump_fil_len) Io_mgr.Instance.AppendFilBfr(dump_url_gen.Nxt_url(), dump_bfr);
 		Xotdb_page_itm_.Txt_id_save(dump_bfr, page);
 	}
 	public void Wkr_end() {
 		this.Term_dump(new Xob_make_cmd_site(bldr.Usr_dlg(), make_dir, make_fil_len));
-		if (delete_temp) Io_mgr.I.DeleteDirDeep(temp_dir);
+		if (delete_temp) Io_mgr.Instance.DeleteDirDeep(temp_dir);
 	}
 	public void Wkr_print() {}
 	static final int row_fixed_len = 25 + 1 + 7;	// 25=5 base_85 flds; 1=Redirect; 7=dlm
diff --git a/400_xowa/src/gplx/xowa/bldrs/cmds/texts/tdbs/Xob_page_txt.java b/400_xowa/src/gplx/xowa/bldrs/cmds/texts/tdbs/Xob_page_txt.java
index e6b2824ae..9a12be299 100644
--- a/400_xowa/src/gplx/xowa/bldrs/cmds/texts/tdbs/Xob_page_txt.java
+++ b/400_xowa/src/gplx/xowa/bldrs/cmds/texts/tdbs/Xob_page_txt.java
@@ -18,9 +18,9 @@ along with this program.  If not, see .
 package gplx.xowa.bldrs.cmds.texts.tdbs; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*; import gplx.xowa.bldrs.cmds.*; import gplx.xowa.bldrs.cmds.texts.*;
 import gplx.ios.*; import gplx.xowa.wikis.data.tbls.*;
 import gplx.xowa.bldrs.wkrs.*; import gplx.xowa.bldrs.wtrs.*;
-import gplx.xowa.nss.*;
+import gplx.xowa.wikis.nss.*;
 import gplx.xowa.parsers.utils.*;
-import gplx.xowa.tdbs.*; import gplx.xowa.tdbs.xdats.*; import gplx.xowa.tdbs.stats.*;
+import gplx.xowa.wikis.tdbs.*; import gplx.xowa.wikis.tdbs.xdats.*; import gplx.xowa.wikis.tdbs.stats.*;
 public class Xob_page_txt extends Xob_itm_dump_base implements Xobd_wkr, GfoInvkAble {
 	public Xob_page_txt(Xob_bldr bldr, Xowe_wiki wiki) {this.Cmd_ctor(bldr, wiki);}
 	public String Wkr_key() {return Xob_cmd_keys.Key_tdb_make_page;}
@@ -29,7 +29,7 @@ public class Xob_page_txt extends Xob_itm_dump_base implements Xobd_wkr, GfoInvk
 		redirect_mgr = wiki.Redirect_mgr(); page_storage_type = wiki.Appe().Setup_mgr().Dump_mgr().Data_storage_format();
 		fsys_mgr = wiki.Tdb_fsys_mgr();			
 		make_dir = fsys_mgr.Ns_dir();
-		if (Io_mgr.I.QueryDir_args(make_dir).DirOnly_().ExecAsUrlAry().length > 0) throw bldr.Usr_dlg().Fail_many("xowa.bldr.itm", "dir_empty", "dir_must_be_empty: ~{0}", make_dir.Raw());
+		if (Io_mgr.Instance.QueryDir_args(make_dir).DirOnly_().ExecAsUrlAry().length > 0) throw bldr.Usr_dlg().Fail_many("xowa.bldr.itm", "dir_empty", "dir_must_be_empty: ~{0}", make_dir.Raw());
 		this.Init_dump(Xob_cmd_keys.Key_tdb_make_page, make_dir);
 		this.data_rpt_typ = stat_mgr.GetOrNew(Xotdb_dir_info_.Tid_page);
 		ttl_wtr_mgr = new Xob_tmp_wtr_mgr(new Xob_tmp_wtr_wkr__ttl(temp_dir, dump_fil_len));			
@@ -60,7 +60,7 @@ public class Xob_page_txt extends Xob_itm_dump_base implements Xobd_wkr, GfoInvk
 		ttl_wtr_mgr.Flush_all(bldr.Usr_dlg());
 		Xobdc_merger.Ns(bldr.Usr_dlg(), ttl_wtr_mgr.Regy(), Xotdb_dir_info_.Name_title, temp_dir, make_dir, sort_mem_len, Io_line_rdr_key_gen_.last_pipe, new Io_sort_cmd_ns(bldr.Usr_dlg()));
 		ttl_wtr_mgr.Rls_all();
-		if (delete_temp) Io_mgr.I.DeleteDirDeep(temp_dir);
+		if (delete_temp) Io_mgr.Instance.DeleteDirDeep(temp_dir);
 	}
 	public void Wkr_print() {bldr.Usr_dlg().Note_many(GRP_KEY, "print", "~{0}", stat_mgr.Print(wiki.Ns_mgr()));}
 	Xob_xdat_file_wtr Page_wtr_get(Xow_ns ns) {
diff --git a/400_xowa/src/gplx/xowa/bldrs/cmds/texts/tdbs/Xob_parse_dump_templates_cmd.java b/400_xowa/src/gplx/xowa/bldrs/cmds/texts/tdbs/Xob_parse_dump_templates_cmd.java
index 805b120c5..9c4842113 100644
--- a/400_xowa/src/gplx/xowa/bldrs/cmds/texts/tdbs/Xob_parse_dump_templates_cmd.java
+++ b/400_xowa/src/gplx/xowa/bldrs/cmds/texts/tdbs/Xob_parse_dump_templates_cmd.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.bldrs.cmds.texts.tdbs; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*; import gplx.xowa.bldrs.cmds.*; import gplx.xowa.bldrs.cmds.texts.*;
-import gplx.ios.*; import gplx.xowa.wikis.data.tbls.*; import gplx.xowa.tdbs.*; import gplx.xowa.nss.*;
+import gplx.ios.*; import gplx.xowa.wikis.data.tbls.*; import gplx.xowa.wikis.tdbs.*; import gplx.xowa.wikis.nss.*;
 import gplx.xowa.bldrs.wkrs.*;
 public class Xob_parse_dump_templates_cmd extends Xob_itm_dump_base implements Xobd_wkr, GfoInvkAble {
 	public Xob_parse_dump_templates_cmd(Xob_bldr bldr, Xowe_wiki wiki) {this.Cmd_ctor(bldr, wiki);}
diff --git a/400_xowa/src/gplx/xowa/bldrs/cmds/texts/tdbs/Xob_search_base_tst.java b/400_xowa/src/gplx/xowa/bldrs/cmds/texts/tdbs/Xob_search_base_tst.java
index 851f2a2eb..33b8be18c 100644
--- a/400_xowa/src/gplx/xowa/bldrs/cmds/texts/tdbs/Xob_search_base_tst.java
+++ b/400_xowa/src/gplx/xowa/bldrs/cmds/texts/tdbs/Xob_search_base_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.bldrs.cmds.texts.tdbs; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*; import gplx.xowa.bldrs.cmds.*; import gplx.xowa.bldrs.cmds.texts.*;
-import org.junit.*; import gplx.xowa.tdbs.*; import gplx.xowa.bldrs.*; import gplx.xowa.nss.*;
+import org.junit.*; import gplx.xowa.wikis.tdbs.*; import gplx.xowa.bldrs.*; import gplx.xowa.wikis.nss.*;
 public class Xob_search_base_tst {
 	@Test  public void Split() {
 		tst_Split("a", "a");
@@ -46,7 +46,7 @@ public class Xob_search_base_tst {
 		;
 	}	private Xob_fxt fxt = new Xob_fxt().Ctor_mem();
 	private void tst_Split(String raw, String... expd) {
-		Ordered_hash list = Ordered_hash_.new_(); Bry_bfr bfr = Bry_bfr.new_();
+		Ordered_hash list = Ordered_hash_.New(); Bry_bfr bfr = Bry_bfr.new_();
 		byte[][] actl_bry = Xob_search_base.Split_ttl_into_words(fxt.App().Lang_mgr().Lang_en(), list, bfr, Bry_.new_u8(raw));
 		String[] actl = new String[actl_bry.length];
 		for (int i = 0; i < actl_bry.length; i++)
diff --git a/400_xowa/src/gplx/xowa/bldrs/cmds/texts/tdbs/Xob_term_txt.java b/400_xowa/src/gplx/xowa/bldrs/cmds/texts/tdbs/Xob_term_txt.java
index 7f9409d86..a601981c7 100644
--- a/400_xowa/src/gplx/xowa/bldrs/cmds/texts/tdbs/Xob_term_txt.java
+++ b/400_xowa/src/gplx/xowa/bldrs/cmds/texts/tdbs/Xob_term_txt.java
@@ -21,6 +21,6 @@ public class Xob_term_txt extends Xob_term_base {
 	public Xob_term_txt(Xob_bldr bldr, Xowe_wiki wiki) {this.Ctor(bldr, wiki); this.wiki = wiki;} private Xowe_wiki wiki;
 	@Override public String Cmd_key() {return Xob_cmd_keys.Key_tdb_core_term;}
 	@Override public void Cmd_end_hook() {
-		Io_mgr.I.SaveFilBry(wiki.Tdb_fsys_mgr().Cfg_wiki_core_fil(), wiki.Cfg_wiki_core().Build_gfs());
+		Io_mgr.Instance.SaveFilBry(wiki.Tdb_fsys_mgr().Cfg_wiki_core_fil(), wiki.Cfg_wiki_core().Build_gfs());
 	}
 }
diff --git a/400_xowa/src/gplx/xowa/bldrs/cmds/texts/tdbs/Xob_tst.java b/400_xowa/src/gplx/xowa/bldrs/cmds/texts/tdbs/Xob_tst.java
index 21dad108f..113c2e589 100644
--- a/400_xowa/src/gplx/xowa/bldrs/cmds/texts/tdbs/Xob_tst.java
+++ b/400_xowa/src/gplx/xowa/bldrs/cmds/texts/tdbs/Xob_tst.java
@@ -17,8 +17,8 @@ along with this program.  If not, see .
 */
 package gplx.xowa.bldrs.cmds.texts.tdbs; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*; import gplx.xowa.bldrs.cmds.*; import gplx.xowa.bldrs.cmds.texts.*;
 import org.junit.*;
-import gplx.ios.*; import gplx.xowa.tdbs.*; import gplx.xowa.wikis.data.tbls.*;
-import gplx.xowa.nss.*;
+import gplx.ios.*; import gplx.xowa.wikis.tdbs.*; import gplx.xowa.wikis.data.tbls.*;
+import gplx.xowa.wikis.nss.*;
 public class Xob_tst {		
 	@Before public void init() {fxt = new Xob_fxt().Ctor_mem();} private Xob_fxt fxt;
 	// @After public void term() {fxt.Wiki().Ctx().Sys_load_tmpls_(true);} // commented during wiki.Ctx() removal; DATE:2014-04-22
@@ -172,7 +172,7 @@ public class Xob_tst {
 	private void tst_Parse(String raw, String... expd) {
 		Xoae_app app = Xoa_app_fxt.app_();	// NOTE: resets mem file system, so must happen first
 		Io_url url = Io_url_.mem_fil_("mem/raw_page.csv");
-		Io_mgr.I.SaveFilStr(url, raw);
+		Io_mgr.Instance.SaveFilStr(url, raw);
 		Xotdb_page_raw_parser parser = new Xotdb_page_raw_parser();
 		Xowe_wiki wiki = Xoa_app_fxt.wiki_tst_(app);
 		parser.Load(Gfo_usr_dlg_.Test(), wiki, new Xow_ns(Xow_ns_.Id_template, Xow_ns_case_.Id_1st, Bry_.new_a7("Template"), false), new Io_url[] {url}, 1 * Io_mgr.Len_kb);
diff --git a/400_xowa/src/gplx/xowa/bldrs/cmds/utils/Xob_cleanup_cmd.java b/400_xowa/src/gplx/xowa/bldrs/cmds/utils/Xob_cleanup_cmd.java
index ddc153d22..b0c3a8f72 100644
--- a/400_xowa/src/gplx/xowa/bldrs/cmds/utils/Xob_cleanup_cmd.java
+++ b/400_xowa/src/gplx/xowa/bldrs/cmds/utils/Xob_cleanup_cmd.java
@@ -32,11 +32,11 @@ public class Xob_cleanup_cmd extends Xob_itm_basic_base implements Xob_cmd {
 		Io_url wiki_root_dir = wiki.Fsys_mgr().Root_dir();
 		if (bz2_fil != null) {
 			if		(String_.Eq(bz2_cmd, "delete"))
-				Io_mgr.I.DeleteFil(bz2_fil);
+				Io_mgr.Instance.DeleteFil(bz2_fil);
 			else if (String_.Eq(bz2_cmd, "move"))
-				Io_mgr.I.MoveFil(bz2_fil, bz2_fil.OwnerDir().OwnerDir().GenSubFil_nest("done", bz2_fil.NameAndExt()));
+				Io_mgr.Instance.MoveFil(bz2_fil, bz2_fil.OwnerDir().OwnerDir().GenSubFil_nest("done", bz2_fil.NameAndExt()));
 		}
-		if (delete_xml)						Io_mgr.I.DeleteFil(Xobd_rdr.Find_fil_by(wiki_root_dir, "*.xml"));
+		if (delete_xml)						Io_mgr.Instance.DeleteFil(Xobd_rdr.Find_fil_by(wiki_root_dir, "*.xml"));
 		if (delete_tdb) {
 			usr_dlg.Note_many("", "", "bldr.wiki:deleting tdb wiki");
 			Delete_tdb(wiki_root_dir);
@@ -44,13 +44,13 @@ public class Xob_cleanup_cmd extends Xob_itm_basic_base implements Xob_cmd {
 		if (delete_sqlite3)
 			Delete_wiki_sql(wiki);			
 		if (delete_all) {
-			Io_mgr.I.DeleteDir_cmd(wiki_root_dir).Exec();	// do not delete subdirs; needed to support "/prv" for fsdb; DATE:2015-04-01
-			Io_mgr.I.DeleteDirDeep(app.Usere().Fsys_mgr().Wiki_root_dir().GenSubDir(wiki.Domain_str())); // delete css dir; DATE:2015-07-06
+			Io_mgr.Instance.DeleteDir_cmd(wiki_root_dir).Exec();	// do not delete subdirs; needed to support "/prv" for fsdb; DATE:2015-04-01
+			Io_mgr.Instance.DeleteDirDeep(app.Usere().Fsys_mgr().Wiki_root_dir().GenSubDir(wiki.Domain_str())); // delete css dir; DATE:2015-07-06
 		}
 		if (delete_by_match_ary != null)
 			Delete_by_match(wiki_root_dir, delete_by_match_ary);
 		if (delete_tmp)
-			Io_mgr.I.DeleteDirDeep(wiki_root_dir.GenSubDir("tmp"));
+			Io_mgr.Instance.DeleteDirDeep(wiki_root_dir.GenSubDir("tmp"));
 	}
 	public void Cmd_init(Xob_bldr bldr) {}
 	public void Cmd_bgn(Xob_bldr bldr) {}
@@ -86,7 +86,7 @@ public class Xob_cleanup_cmd extends Xob_itm_basic_base implements Xob_cmd {
 	}
 	private static void Delete_by_match(Io_url dir, Criteria_ioMatch[] match_ary) {
 		int match_len = match_ary.length;
-		Io_url[] subs = Io_mgr.I.QueryDir_fils(dir);
+		Io_url[] subs = Io_mgr.Instance.QueryDir_fils(dir);
 		int subs_len = subs.length;
 		for (int i = 0; i < subs_len; i++) {
 			Io_url sub = subs[i];
@@ -94,25 +94,25 @@ public class Xob_cleanup_cmd extends Xob_itm_basic_base implements Xob_cmd {
 				Criteria_ioMatch match = match_ary[j];
 				if (match.Matches(sub)) {
 					if (sub.Type_fil())
-						Io_mgr.I.DeleteFil(sub);
+						Io_mgr.Instance.DeleteFil(sub);
 				}
 			}
 		}
 	}
 	private static void Delete_tdb(Io_url wiki_root_dir) {
-		Io_url[] dirs = Io_mgr.I.QueryDir_args(wiki_root_dir).DirOnly_().DirInclude_().ExecAsUrlAry();
+		Io_url[] dirs = Io_mgr.Instance.QueryDir_args(wiki_root_dir).DirOnly_().DirInclude_().ExecAsUrlAry();
 		int dirs_len = dirs.length;
 		for (int i = 0; i < dirs_len; i++) {
 			Io_url dir = dirs[i];
-			if (gplx.xowa.tdbs.Xotdb_dir_info_.Dir_name_is_tdb(dir.NameOnly()))
-				Io_mgr.I.DeleteDirDeep(dir);
+			if (gplx.xowa.wikis.tdbs.Xotdb_dir_info_.Dir_name_is_tdb(dir.NameOnly()))
+				Io_mgr.Instance.DeleteDirDeep(dir);
 		}
 	}
 	public static void Delete_wiki_sql(Xowe_wiki wiki) {
 		Gfo_usr_dlg usr_dlg = wiki.Appe().Usr_dlg(); Io_url wiki_root_dir = wiki.Fsys_mgr().Root_dir();
-		if (wiki.Db_mgr().Tid() == gplx.xowa.dbs.Xodb_mgr_sql.Tid_sql)		// NOTE: must check; if empty dir (or text db) than db_mgr will be txt
+		if (wiki.Db_mgr().Tid() == gplx.xowa.wikis.dbs.Xodb_mgr_sql.Tid_sql)		// NOTE: must check; if empty dir (or text db) than db_mgr will be txt
 			wiki.Db_mgr_as_sql().Core_data_mgr().Rls();						// NOTE: if sqlite files, must rls;
-		Io_url[] files = Io_mgr.I.QueryDir_fils(wiki_root_dir);
+		Io_url[] files = Io_mgr.Instance.QueryDir_fils(wiki_root_dir);
 		int files_len = files.length;
 		int deleted = 0;
 		String file_prefix = wiki.Domain_str() + "-file";					// NOTE: skip anything with "-file"; EX: "en.wikipedia.org-file.xowa"
@@ -125,7 +125,7 @@ public class Xob_cleanup_cmd extends Xob_itm_basic_base implements Xob_cmd {
 			if (	String_.Has_at_bgn(url.NameAndExt(), file_prefix)
 				||	String_.Has_at_bgn(url.NameAndExt(), html_prefix)
 				) continue;	// skip
-			Io_mgr.I.DeleteFil(url);
+			Io_mgr.Instance.DeleteFil(url);
 			deleted++;
 		}
 		usr_dlg.Note_many("", "delete_wiki", "deleting sqlite3 files: ~{0} ~{1}", deleted, wiki_root_dir.Raw());
diff --git a/400_xowa/src/gplx/xowa/bldrs/cmds/utils/Xob_core_batch_utl.java b/400_xowa/src/gplx/xowa/bldrs/cmds/utils/Xob_core_batch_utl.java
index 713171668..9643116bd 100644
--- a/400_xowa/src/gplx/xowa/bldrs/cmds/utils/Xob_core_batch_utl.java
+++ b/400_xowa/src/gplx/xowa/bldrs/cmds/utils/Xob_core_batch_utl.java
@@ -17,13 +17,13 @@ along with this program.  If not, see .
 */
 package gplx.xowa.bldrs.cmds.utils; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*; import gplx.xowa.bldrs.cmds.*;
 import gplx.xowa.wikis.domains.*;
-import gplx.xowa.wms.dumps.*;
+import gplx.xowa.bldrs.wms.dumps.*;
 public class Xob_core_batch_utl implements GfoInvkAble {
 	private final Xob_bldr bldr;
 	private final Bry_fmtr fmtr = Bry_fmtr.keys_("bz2_fil", "wiki_key");
 	public Xob_core_batch_utl(Xob_bldr bldr, byte[] raw) {this.bldr = bldr; fmtr.Fmt_(raw);}
 	private void Run() {
-		Io_url[] bz2_fils = Io_mgr.I.QueryDir_fils(bldr.App().Fsys_mgr().Wiki_dir().GenSubDir_nest(Dir_dump, "todo"));
+		Io_url[] bz2_fils = Io_mgr.Instance.QueryDir_fils(bldr.App().Fsys_mgr().Wiki_dir().GenSubDir_nest(Dir_dump, "todo"));
 		Bry_bfr bfr = Bry_bfr.reset_(Io_mgr.Len_kb);
 		int bz2_fils_len = bz2_fils.length;
 		for (int i = 0; i < bz2_fils_len; i++) {
@@ -32,7 +32,7 @@ public class Xob_core_batch_utl implements GfoInvkAble {
 			String domain_str = dump_file.Domain_itm().Domain_str();
 			fmtr.Bld_bfr_many(bfr, bz2_fil_url.Raw(), domain_str);
 			bldr.Usr_dlg().Note_many("", "", "starting script for ~{0}", domain_str);
-			bldr.App().Gfs_mgr().Run_str(bfr.Xto_str_and_clear());
+			bldr.App().Gfs_mgr().Run_str(bfr.To_str_and_clear());
 		}
 	}
 	public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) {
diff --git a/400_xowa/src/gplx/xowa/bldrs/cmds/utils/Xob_decompress_bz2_cmd.java b/400_xowa/src/gplx/xowa/bldrs/cmds/utils/Xob_decompress_bz2_cmd.java
index 59e6b3f4d..8ed27c2db 100644
--- a/400_xowa/src/gplx/xowa/bldrs/cmds/utils/Xob_decompress_bz2_cmd.java
+++ b/400_xowa/src/gplx/xowa/bldrs/cmds/utils/Xob_decompress_bz2_cmd.java
@@ -24,7 +24,7 @@ public class Xob_decompress_bz2_cmd extends Xob_itm_basic_base implements Xob_cm
 	public void Cmd_init(Xob_bldr bldr) {}
 	public void Cmd_bgn(Xob_bldr bldr) {}
 	public void Cmd_run() {
-		if (Io_mgr.I.ExistsFil(trg)) return; // file already exists; don't decompress again
+		if (Io_mgr.Instance.ExistsFil(trg)) return; // file already exists; don't decompress again
 		usr_dlg.Note_many(GRP_KEY, "bgn", "decompressing ~{0}", src.Raw(), trg.Raw());
 		Decompress(bldr.App(), src.Raw(), trg);
 	}
@@ -41,12 +41,12 @@ public class Xob_decompress_bz2_cmd extends Xob_itm_basic_base implements Xob_cm
 	}	Io_url src, trg;
 	static final String GRP_KEY = "xowa.bldr.cmd.decompress_bz2";
 	public static boolean Decompress(Xoae_app app, String src_fil, Io_url trg_fil) {
-		Io_mgr.I.CreateDirIfAbsent(trg_fil.OwnerDir());	// 7zip will fail if dir does not exist
+		Io_mgr.Instance.CreateDirIfAbsent(trg_fil.OwnerDir());	// 7zip will fail if dir does not exist
 		ProcessAdp decompress = app.Prog_mgr().App_decompress_bz2();
 		decompress.Prog_dlg_(app.Usr_dlg()).Run_mode_(ProcessAdp.Run_mode_async);
 		decompress.Run(src_fil, trg_fil, trg_fil.OwnerDir().Xto_api());
 		while (decompress.Exit_code() == ProcessAdp.Exit_init) {
-			String size = gplx.ios.Io_size_.To_str(Io_mgr.I.QueryFil(trg_fil).Size());
+			String size = gplx.ios.Io_size_.To_str(Io_mgr.Instance.QueryFil(trg_fil).Size());
 			app.Usr_dlg().Prog_many(GRP_KEY, "decompress", "decompressing: ~{0}", size);
 			Thread_adp_.Sleep(1000);
 		}
diff --git a/400_xowa/src/gplx/xowa/bldrs/cmds/utils/Xob_deploy_copy_cmd.java b/400_xowa/src/gplx/xowa/bldrs/cmds/utils/Xob_deploy_copy_cmd.java
index 1eb2d3a20..7ef2c23d1 100644
--- a/400_xowa/src/gplx/xowa/bldrs/cmds/utils/Xob_deploy_copy_cmd.java
+++ b/400_xowa/src/gplx/xowa/bldrs/cmds/utils/Xob_deploy_copy_cmd.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.bldrs.cmds.utils; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*; import gplx.xowa.bldrs.cmds.*;
-import gplx.xowa.bldrs.wkrs.*; import gplx.xowa.tdbs.*;
+import gplx.xowa.bldrs.wkrs.*; import gplx.xowa.wikis.tdbs.*;
 public class Xob_deploy_copy_cmd extends Xob_itm_basic_base implements Xob_cmd, GfoInvkAble {
 	public Xob_deploy_copy_cmd(Xob_bldr bldr, Xowe_wiki wiki) {this.Cmd_ctor(bldr, wiki);}
 	public String Cmd_key() {return Xob_cmd_keys.Key_deploy_copy;}
@@ -35,14 +35,14 @@ public class Xob_deploy_copy_cmd extends Xob_itm_basic_base implements Xob_cmd,
 	}
 	public void Cmd_term() {}
 	private void Copy_dir_ns(Io_url root, String name) {
-		Io_url[] ns_dirs = Io_mgr.I.QueryDir_args(root).DirOnly_().ExecAsUrlAry();
+		Io_url[] ns_dirs = Io_mgr.Instance.QueryDir_args(root).DirOnly_().ExecAsUrlAry();
 		for (int i = 0; i < ns_dirs.length; i++) {
 			Io_url ns_dir = ns_dirs[i];
 			Io_url src_sub_dir = ns_dir.GenSubDir(name);
 			String dir_name = name;
 			if (zip) {
 				Io_url src_zip_dir = ns_dir.GenSubDir(name + Xob_deploy_zip_cmd.Dir_zip_suffix);
-				if (Io_mgr.I.ExistsDir(src_zip_dir)) {
+				if (Io_mgr.Instance.ExistsDir(src_zip_dir)) {
 					src_sub_dir = src_zip_dir;
 					dir_name = name + Xob_deploy_zip_cmd.Dir_zip_suffix;
 				}
@@ -57,7 +57,7 @@ public class Xob_deploy_copy_cmd extends Xob_itm_basic_base implements Xob_cmd,
 	}
 	private void Copy_dir(Io_url src, Io_url trg) {
 		bldr.Usr_dlg().Prog_many(GRP_KEY, "copy", "copying to ~{1}", src.Xto_api(), trg.Xto_api());
-		Io_mgr.I.CopyDirDeep(src, trg);
+		Io_mgr.Instance.CopyDirDeep(src, trg);
 	}
 	boolean zip; Io_url trg_root_dir;
 	@Override public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) {
diff --git a/400_xowa/src/gplx/xowa/bldrs/cmds/utils/Xob_deploy_zip_cmd.java b/400_xowa/src/gplx/xowa/bldrs/cmds/utils/Xob_deploy_zip_cmd.java
index 12c21771f..a4c616a6c 100644
--- a/400_xowa/src/gplx/xowa/bldrs/cmds/utils/Xob_deploy_zip_cmd.java
+++ b/400_xowa/src/gplx/xowa/bldrs/cmds/utils/Xob_deploy_zip_cmd.java
@@ -18,8 +18,8 @@ along with this program.  If not, see .
 package gplx.xowa.bldrs.cmds.utils; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*; import gplx.xowa.bldrs.cmds.*;
 import gplx.ios.*;
 import gplx.xowa.bldrs.wkrs.*; import gplx.xowa.bldrs.sqls.*;
-import gplx.xowa.nss.*;
-import gplx.xowa.tdbs.*;
+import gplx.xowa.wikis.nss.*;
+import gplx.xowa.wikis.tdbs.*;
 public class Xob_deploy_zip_cmd extends Xob_itm_basic_base implements Xob_cmd {
 	public Xob_deploy_zip_cmd(Xob_bldr bldr, Xowe_wiki wiki) {this.Cmd_ctor(bldr, wiki);}
 	public String Cmd_key() {return Xob_cmd_keys.Key_deploy_zip;}
@@ -33,7 +33,7 @@ public class Xob_deploy_zip_cmd extends Xob_itm_basic_base implements Xob_cmd {
 		try {wiki.Init_assert();}
 		catch (Exception exc) {Log("failed to init wiki: ~{0}", Err_.Message_gplx_full(exc));}
 		Log("probing ns_dirs: ~{0}", wiki.Tdb_fsys_mgr().Ns_dir().Raw());
-		Io_url[] ns_dirs = Io_mgr.I.QueryDir_args(wiki.Tdb_fsys_mgr().Ns_dir()).DirOnly_().ExecAsUrlAry();
+		Io_url[] ns_dirs = Io_mgr.Instance.QueryDir_args(wiki.Tdb_fsys_mgr().Ns_dir()).DirOnly_().ExecAsUrlAry();
 		for (Io_url ns_dir : ns_dirs) {
 			Log("zipping dir: ~{0}", ns_dir.Raw());
 			String ns_num = ns_dir.NameOnly();
@@ -43,19 +43,19 @@ public class Xob_deploy_zip_cmd extends Xob_itm_basic_base implements Xob_cmd {
 	}
 	private void Zip_ns(Xob_bldr bldr, Io_url root_dir, String type_name, String ns_name) {
 		bldr.Usr_dlg().Prog_one(GRP_KEY, "scan", "scanning dir ~{0}", type_name);
-		Io_url[] fils = Io_mgr.I.QueryDir_args(root_dir.GenSubDir(type_name)).Recur_().ExecAsUrlAry();
+		Io_url[] fils = Io_mgr.Instance.QueryDir_args(root_dir.GenSubDir(type_name)).Recur_().ExecAsUrlAry();
 		int fils_len = fils.length;
-		String fils_len_str = Int_.Xto_str_pad_bgn_zero(fils_len, 6);
+		String fils_len_str = Int_.To_str_pad_bgn_zero(fils_len, 6);
 		for (int i = 0; i < fils_len; i++) {
 			Io_url fil = fils[i];
-			bldr.Print_prog_msg(i, fils.length, -1, "zipping ~{0} ~{1} ~{2} of ~{3}", type_name, ns_name, Int_.Xto_str_pad_bgn_zero(i, 6), fils_len_str);
+			bldr.Print_prog_msg(i, fils.length, -1, "zipping ~{0} ~{1} ~{2} of ~{3}", type_name, ns_name, Int_.To_str_pad_bgn_zero(i, 6), fils_len_str);
 			Io_url trg_fil = Gen_trg(root_dir, fil, type_name);
 			if (String_.Eq(fil.NameAndExt(), Xotdb_dir_info_.Name_reg_fil))	// do not zip reg.csv
-				Io_mgr.I.CopyFil(fil, trg_fil, true);
+				Io_mgr.Instance.CopyFil(fil, trg_fil, true);
 			else
 				zip_mgr.Zip_fil(fil, trg_fil.GenNewExt(Xotdb_dir_info_.Ext_zip));
 		}
-		if (delete_dirs_page) Io_mgr.I.DeleteDirDeep(root_dir.GenSubDir(type_name));
+		if (delete_dirs_page) Io_mgr.Instance.DeleteDirDeep(root_dir.GenSubDir(type_name));
 	}
 	public boolean Delete_dirs_page() {return delete_dirs_page;} public Xob_deploy_zip_cmd Delete_dirs_page_(boolean v) {delete_dirs_page = v; return this;} private boolean delete_dirs_page = true;
 	Io_url Gen_trg(Io_url root_dir, Io_url fil, String type_name) {
@@ -72,7 +72,7 @@ public class Xob_deploy_zip_cmd extends Xob_itm_basic_base implements Xob_cmd {
 	private void Log(String fmt, Object... args) {
 		bldr.App().Usr_dlg().Log_many(GRP_KEY, "deploy.zip.msg", fmt, args);
 	}
-	Io_zip_mgr zip_mgr = Io_zip_mgr_base._;
+	Io_zip_mgr zip_mgr = Io_zip_mgr_base.Instance;
 	public static final String Dir_zip_suffix = "_zip";
 	static final String GRP_KEY = "xowa.bldr.zip";
 }
diff --git a/400_xowa/src/gplx/xowa/bldrs/cmds/utils/Xob_download_wkr.java b/400_xowa/src/gplx/xowa/bldrs/cmds/utils/Xob_download_wkr.java
index 466a664a2..54ee03885 100644
--- a/400_xowa/src/gplx/xowa/bldrs/cmds/utils/Xob_download_wkr.java
+++ b/400_xowa/src/gplx/xowa/bldrs/cmds/utils/Xob_download_wkr.java
@@ -18,7 +18,7 @@ along with this program.  If not, see .
 package gplx.xowa.bldrs.cmds.utils; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*; import gplx.xowa.bldrs.cmds.*;
 import gplx.dbs.*; import gplx.ios.*;
 import gplx.xowa.bldrs.wkrs.*;
-import gplx.xowa.wms.dumps.*;
+import gplx.xowa.bldrs.wms.dumps.*;
 public class Xob_download_wkr extends Xob_itm_basic_base implements Xob_cmd {
 	private String dump_date = "latest";
 	private String dump_type = null;
diff --git a/400_xowa/src/gplx/xowa/bldrs/cmds/utils/Xob_exec_sql_cmd.java b/400_xowa/src/gplx/xowa/bldrs/cmds/utils/Xob_exec_sql_cmd.java
index b9159b325..5bbb91791 100644
--- a/400_xowa/src/gplx/xowa/bldrs/cmds/utils/Xob_exec_sql_cmd.java
+++ b/400_xowa/src/gplx/xowa/bldrs/cmds/utils/Xob_exec_sql_cmd.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.bldrs.cmds.utils; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*; import gplx.xowa.bldrs.cmds.*;
-import gplx.xowa.wikis.data.*; import gplx.xowa.dbs.*;
+import gplx.xowa.wikis.data.*; import gplx.xowa.wikis.dbs.*;
 public class Xob_exec_sql_cmd implements Xob_cmd {
 	private Xowe_wiki wiki; private int file_idx = -1; private String sql;
 	public Xob_exec_sql_cmd(Xob_bldr bldr, Xowe_wiki wiki) {this.wiki = wiki;}
diff --git a/400_xowa/src/gplx/xowa/bldrs/cmds/utils/Xob_site_meta_cmd.java b/400_xowa/src/gplx/xowa/bldrs/cmds/utils/Xob_site_meta_cmd.java
index a115a9cde..70322296e 100644
--- a/400_xowa/src/gplx/xowa/bldrs/cmds/utils/Xob_site_meta_cmd.java
+++ b/400_xowa/src/gplx/xowa/bldrs/cmds/utils/Xob_site_meta_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.bldrs.cmds.utils; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*; import gplx.xowa.bldrs.cmds.*;
+import gplx.core.net.*;
 import gplx.dbs.*; import gplx.xowa.bldrs.*;
-import gplx.xowa.wms.*; import gplx.xowa.wms.sites.*;
-import gplx.xowa.wikis.domains.*;
+import gplx.xowa.bldrs.wms.*; import gplx.xowa.bldrs.wms.sites.*;
+import gplx.xowa.wikis.domains.*; import gplx.xowa.apps.site_cfgs.*;
 public class Xob_site_meta_cmd implements Xob_cmd {
 	private final Xob_bldr bldr;
 	private String[] wikis; private Io_url db_url; private DateAdp cutoff_time;
@@ -29,7 +30,52 @@ public class Xob_site_meta_cmd implements Xob_cmd {
 		if (wikis == null)			wikis = Xow_domain_regy.All;
 		if (db_url == null)			db_url = app.Fsys_mgr().Cfg_site_meta_fil();
 		if (cutoff_time == null)	cutoff_time = DateAdp_.Now().Add_day(-1);
-		new Site_api_mgr().Load_all(app.Usr_dlg(), app.Utl__inet_conn(), db_url, wikis, cutoff_time);
+		Load_all(app, db_url, wikis, cutoff_time);
+	}
+	private void Load_all(Xoa_app app, Io_url db_url, String[] reqd_ary, DateAdp cutoff) {
+		Site_json_parser site_parser = new Site_json_parser(app.Utl__json_parser());
+		Gfo_usr_dlg usr_dlg = app.Usr_dlg();
+		Gfo_inet_conn inet_conn = app.Utl__inet_conn();
+		Ordered_hash reqd_hash = Ordered_hash_.New();
+		int reqd_len = reqd_ary.length;
+		for (int i = 0; i < reqd_len; ++i)
+			reqd_hash.Add_as_key_and_val(reqd_ary[i]);
+
+		Site_core_db json_db = new Site_core_db(db_url);			
+		Site_core_itm[] actl_ary = json_db.Tbl__core().Select_all_downloaded(cutoff);
+		int actl_len = actl_ary.length;
+		for (int i = 0; i < actl_len; ++i) {	// remove items that have been completed after cutoff date
+			Site_core_itm actl_itm = actl_ary[i];
+			reqd_hash.Del(String_.new_u8(actl_itm.Site_domain()));
+		}
+		
+		reqd_len = reqd_hash.Count();
+		for (int i = 0; i < reqd_len; ++i) {
+			String domain_str = (String)reqd_hash.Get_at(i);
+			DateAdp json_date = DateAdp_.Now();
+			byte[] json_text = null;
+			for (int j = 0; j < 5; ++j) {
+				json_text = gplx.xowa.bldrs.wms.Xowm_api_mgr.Call_by_qarg(usr_dlg, inet_conn, domain_str, Xoa_site_cfg_loader__inet.Qarg__all);
+				if (json_text == null)
+					gplx.core.threads.Thread_adp_.Sleep(1000);
+				else
+					break;
+			}
+			byte[] domain_bry = Bry_.new_u8(domain_str);
+			byte[] site_abrv = Xow_abrv_xo_.To_bry(domain_bry);
+			json_db.Tbl__core().Insert(site_abrv, domain_bry, Bool_.N, json_date, json_text);
+		}
+
+		reqd_len = reqd_ary.length;
+		for (int i = 0; i < reqd_len; ++i) {
+			String domain_str = reqd_ary[i];
+			byte[] site_abrv = Xow_abrv_xo_.To_bry(Bry_.new_u8(domain_str));
+			Site_core_itm core_itm = json_db.Tbl__core().Select_itm(site_abrv);
+			if (core_itm.Json_completed()) continue;
+			Site_meta_itm meta_itm = new Site_meta_itm();
+			site_parser.Parse_root(meta_itm, String_.new_u8(core_itm.Site_domain()), core_itm.Json_text());
+			json_db.Save(meta_itm, site_abrv);
+		}
 	}
 	public void Cmd_init(Xob_bldr bldr) {}
 	public void Cmd_bgn(Xob_bldr bldr) {}
diff --git a/400_xowa/src/gplx/xowa/bldrs/cmds/utils/Xob_unzip_wkr.java b/400_xowa/src/gplx/xowa/bldrs/cmds/utils/Xob_unzip_wkr.java
index f1b14a9e6..5c27a1380 100644
--- a/400_xowa/src/gplx/xowa/bldrs/cmds/utils/Xob_unzip_wkr.java
+++ b/400_xowa/src/gplx/xowa/bldrs/cmds/utils/Xob_unzip_wkr.java
@@ -34,7 +34,7 @@ public class Xob_unzip_wkr {
 		else if	(String_.Eq(src_ext, gplx.ios.Io_stream_.Ext_gz))		process = decompress_gz;
 		else															throw Err_.new_unhandled(src_ext);
 		Io_url trg_owner_dir = trg.OwnerDir();
-		Io_mgr.I.CreateDirIfAbsent(trg_owner_dir);
+		Io_mgr.Instance.CreateDirIfAbsent(trg_owner_dir);
 		process.Run_mode_(process_run_mode);
 		process.Run(src, trg, trg_owner_dir.Xto_api());
 	}
diff --git a/400_xowa/src/gplx/xowa/bldrs/cmds/utils/Xob_xml_dumper_cmd.java b/400_xowa/src/gplx/xowa/bldrs/cmds/utils/Xob_xml_dumper_cmd.java
index 4b7a9fe0c..29e954a90 100644
--- a/400_xowa/src/gplx/xowa/bldrs/cmds/utils/Xob_xml_dumper_cmd.java
+++ b/400_xowa/src/gplx/xowa/bldrs/cmds/utils/Xob_xml_dumper_cmd.java
@@ -17,7 +17,7 @@ along with this program.  If not, see .
 */
 package gplx.xowa.bldrs.cmds.utils; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*; import gplx.xowa.bldrs.cmds.*;
 import gplx.xowa.bldrs.xmls.*;
-import gplx.xowa.dbs.*; import gplx.xowa.wikis.data.tbls.*;
+import gplx.xowa.wikis.dbs.*; import gplx.xowa.wikis.data.tbls.*;
 public class Xob_xml_dumper_cmd implements Xob_cmd {
 	private final Xowe_wiki wiki; private final Gfo_usr_dlg usr_dlg;
 	private final Xob_xml_dumper xml_dumper = new Xob_xml_dumper(); private int commit_interval = 1000;
@@ -26,7 +26,7 @@ public class Xob_xml_dumper_cmd implements Xob_cmd {
 	public String Cmd_key() {return Xob_cmd_keys.Key_util_xml_dump;}
 	public void Cmd_init(Xob_bldr bldr) {
 		dump_url = wiki.Fsys_mgr().Root_dir().GenSubFil(wiki.Domain_str() + "-dump.xml");
-		Io_mgr.I.DeleteFil(dump_url);
+		Io_mgr.Instance.DeleteFil(dump_url);
 	}
 	public void Cmd_run() {
 		usr_dlg.Plog_many("", "", Cmd_key() + ":bgn;");
@@ -52,7 +52,7 @@ public class Xob_xml_dumper_cmd implements Xob_cmd {
 		usr_dlg.Plog_many("", "", Cmd_key() + ":end;");
 	}
 	private void Commit() {
-		Io_mgr.I.AppendFilStr(dump_url, xml_dumper.Bld_str());
+		Io_mgr.Instance.AppendFilStr(dump_url, xml_dumper.Bld_str());
 	}
 	public void Cmd_bgn(Xob_bldr bldr) {}
 	public void Cmd_end() {}
diff --git a/400_xowa/src/gplx/xowa/bldrs/cmds/wikis/Xob_page_dump_cmd_drop.java b/400_xowa/src/gplx/xowa/bldrs/cmds/wikis/Xob_page_dump_cmd_drop.java
index 4e6311b59..5737e8a3b 100644
--- a/400_xowa/src/gplx/xowa/bldrs/cmds/wikis/Xob_page_dump_cmd_drop.java
+++ b/400_xowa/src/gplx/xowa/bldrs/cmds/wikis/Xob_page_dump_cmd_drop.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.bldrs.cmds.wikis; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*; import gplx.xowa.bldrs.cmds.*;
-import gplx.xowa.wikis.data.*; import gplx.dbs.*; import gplx.dbs.engines.sqlite.*; import gplx.xowa.dbs.*;
+import gplx.xowa.wikis.data.*; import gplx.dbs.*; import gplx.dbs.engines.sqlite.*; import gplx.xowa.wikis.dbs.*;
 import gplx.xowa.bldrs.wkrs.*;
 public class Xob_page_dump_cmd_drop extends Xob_itm_basic_base implements Xob_cmd {
 	public Xob_page_dump_cmd_drop(Xob_bldr bldr, Xowe_wiki wiki) {this.Cmd_ctor(bldr, wiki);}
diff --git a/400_xowa/src/gplx/xowa/bldrs/cmds/wikis/Xob_page_dump_cmd_make.java b/400_xowa/src/gplx/xowa/bldrs/cmds/wikis/Xob_page_dump_cmd_make.java
index 59eb19330..d584f13d1 100644
--- a/400_xowa/src/gplx/xowa/bldrs/cmds/wikis/Xob_page_dump_cmd_make.java
+++ b/400_xowa/src/gplx/xowa/bldrs/cmds/wikis/Xob_page_dump_cmd_make.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.bldrs.cmds.wikis; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*; import gplx.xowa.bldrs.cmds.*;
-import gplx.xowa.wikis.data.*; import gplx.dbs.*; import gplx.dbs.engines.sqlite.*; import gplx.xowa.dbs.*;
+import gplx.xowa.wikis.data.*; import gplx.dbs.*; import gplx.dbs.engines.sqlite.*; import gplx.xowa.wikis.dbs.*;
 import gplx.xowa.bldrs.wkrs.*;
 public class Xob_page_dump_cmd_make extends Xob_itm_basic_base implements Xob_cmd {
 	public Xob_page_dump_cmd_make(Xob_bldr bldr, Xowe_wiki wiki) {this.Cmd_ctor(bldr, wiki);}
diff --git a/400_xowa/src/gplx/xowa/bldrs/cmds/wikis/Xob_redirect_cmd.java b/400_xowa/src/gplx/xowa/bldrs/cmds/wikis/Xob_redirect_cmd.java
index b992a83e5..214317936 100644
--- a/400_xowa/src/gplx/xowa/bldrs/cmds/wikis/Xob_redirect_cmd.java
+++ b/400_xowa/src/gplx/xowa/bldrs/cmds/wikis/Xob_redirect_cmd.java
@@ -16,9 +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.bldrs.cmds.wikis; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*; import gplx.xowa.bldrs.cmds.*;
-import gplx.dbs.*; import gplx.dbs.cfgs.*; import gplx.xowa.dbs.*; import gplx.xowa.wikis.data.tbls.*;
+import gplx.dbs.*; import gplx.dbs.cfgs.*; import gplx.xowa.wikis.dbs.*; import gplx.xowa.wikis.data.tbls.*;
 import gplx.langs.htmls.encoders.*;
-import gplx.xowa.nss.*;
+import gplx.xowa.wikis.nss.*;
 import gplx.xowa.parsers.utils.*;
 public class Xob_redirect_cmd extends Xob_dump_mgr_base {		
 	private Db_conn conn; private Xob_redirect_tbl redirect_tbl;
diff --git a/400_xowa/src/gplx/xowa/bldrs/css/Xoa_css_extractor.java b/400_xowa/src/gplx/xowa/bldrs/css/Xoa_css_extractor.java
index baeb50a7b..44c9c4bcf 100644
--- a/400_xowa/src/gplx/xowa/bldrs/css/Xoa_css_extractor.java
+++ b/400_xowa/src/gplx/xowa/bldrs/css/Xoa_css_extractor.java
@@ -16,14 +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.bldrs.css; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*;
-import gplx.ios.*; import gplx.xowa.html.*;
+import gplx.ios.*; import gplx.xowa.htmls.*;
 import gplx.langs.htmls.encoders.*;
-import gplx.xowa.nss.*;
+import gplx.xowa.wikis.nss.*;
 import gplx.xowa.wikis.*; import gplx.xowa.wikis.domains.*; import gplx.xowa.wikis.data.*;
 import gplx.xowa.files.downloads.*;
 import gplx.core.net.*;
 public class Xoa_css_extractor {	
-	public IoEngine_xrg_downloadFil Download_xrg() {return download_xrg;} private IoEngine_xrg_downloadFil download_xrg = Io_mgr.I.DownloadFil_args("", Io_url_.Empty);	
+	public IoEngine_xrg_downloadFil Download_xrg() {return download_xrg;} private IoEngine_xrg_downloadFil download_xrg = Io_mgr.Instance.DownloadFil_args("", Io_url_.Empty);	
 	public Xoa_css_extractor Wiki_domain_(byte[] v) {wiki_domain = v; return this;} private byte[] wiki_domain; 
 	public Xoa_css_extractor Usr_dlg_(Gfo_usr_dlg v) {usr_dlg = v; return this;} private Gfo_usr_dlg usr_dlg;
 	public Xoa_css_extractor Failover_dir_(Io_url v) {failover_dir = v; return this;} private Io_url failover_dir;
@@ -50,9 +50,9 @@ public class Xoa_css_extractor {
 			this.wiki_html_dir = wiki.App().Fsys_mgr().Wiki_css_dir(wiki.Domain_str());	// EX: /xowa/user/anonymous/wiki/en.wikipedia.org
 			Io_url css_comm_fil = wiki_html_dir.GenSubFil(Css_common_name);
 			Io_url css_wiki_fil = wiki_html_dir.GenSubFil(Css_wiki_name);
-			wiki.Html__page_wtr_mgr().Init_css_urls(css_comm_fil, css_wiki_fil);
-			if (wiki.Domain_tid() == Xow_domain_type_.Int__home || Env_.Mode_testing()) return;		// NOTE: do not download if home_wiki; also needed for TEST
-			if (Io_mgr.I.ExistsFil(css_wiki_fil)) return;											// css file exists; nothing to generate
+			wiki.Html__wtr_mgr().Init_css_urls(css_comm_fil, css_wiki_fil);
+			if (wiki.Domain_tid() == Xow_domain_tid_.Int__home || Env_.Mode_testing()) return;		// NOTE: do not download if home_wiki; also needed for TEST
+			if (Io_mgr.Instance.ExistsFil(css_wiki_fil)) return;											// css file exists; nothing to generate
 			if (wiki.Html__css_installing()) return;
 			wiki.Html__css_installing_(true);
 			wiki.App().Usr_dlg().Log_many("", "", "generating css for '~{0}'", wiki.Domain_str());
@@ -95,7 +95,7 @@ public class Xoa_css_extractor {
 			return false;
 		}
 		Xowd_db_file core_db = core_db_mgr.Db__core();
-		return gplx.xowa.html.css.Xowd_css_core_mgr.Get(core_db.Tbl__css_core(), core_db.Tbl__css_file(), wiki_html_dir, css_key);
+		return gplx.xowa.htmls.css.Xowd_css_core_mgr.Get(core_db.Tbl__css_core(), core_db.Tbl__css_file(), wiki_html_dir, css_key);
 	}
 	public void Css_common_setup() {
 		if (opt_download_css_common)
@@ -105,7 +105,7 @@ public class Xoa_css_extractor {
 	}
 	private void Css_common_failover() {
 		Io_url trg_fil = wiki_html_dir.GenSubFil(Css_common_name);
-		Io_mgr.I.CopyFil(Css_common_failover_url(), trg_fil, true);
+		Io_mgr.Instance.CopyFil(Css_common_failover_url(), trg_fil, true);
 		css_img_downloader.Chk(wiki_domain, trg_fil);
 	}
 	private void Css_common_download() {
@@ -113,19 +113,19 @@ public class Xoa_css_extractor {
 		Io_url trg_fil = wiki_html_dir.GenSubFil(Css_common_name);
 		css_stylesheet_common_missing = !Css_scrape_setup();
 		if (css_stylesheet_common_missing)
-			Io_mgr.I.CopyFil(Css_common_failover_url(), trg_fil, true);
+			Io_mgr.Instance.CopyFil(Css_common_failover_url(), trg_fil, true);
 		else 
 			css_img_downloader.Chk(wiki_domain, trg_fil);
 	}
 	private Io_url Css_common_failover_url() {
 		Io_url css_commons_url = failover_dir.GenSubDir("xowa_common_override").GenSubFil_ary("xowa_common_", String_.new_u8(wiki_code), ".css");
-		if (Io_mgr.I.ExistsFil(css_commons_url)) return css_commons_url;	// specific css exists for wiki; use it; EX: xowa_common_wiki_mediawikiwiki.css
+		if (Io_mgr.Instance.ExistsFil(css_commons_url)) return css_commons_url;	// specific css exists for wiki; use it; EX: xowa_common_wiki_mediawikiwiki.css
 		return failover_dir.GenSubFil(lang_is_ltr ? Css_common_name_ltr : Css_common_name_rtl);
 	}
 	public void Css_wiki_setup() {
 		boolean css_stylesheet_wiki_missing = true;
 		Io_url trg_fil = wiki_html_dir.GenSubFil(Css_wiki_name);
-		if (Io_mgr.I.ExistsFil(trg_fil)) return;	// don't download if already there
+		if (Io_mgr.Instance.ExistsFil(trg_fil)) return;	// don't download if already there
 		css_stylesheet_wiki_missing = !Css_wiki_generate(trg_fil);
 		if (css_stylesheet_wiki_missing)
 			Failover(trg_fil);
@@ -136,9 +136,9 @@ public class Xoa_css_extractor {
 		Bry_bfr bfr = Bry_bfr.new_();
 		Css_wiki_generate_section(bfr, Ttl_common_css);
 		Css_wiki_generate_section(bfr, Ttl_vector_css);
-		byte[] bry = bfr.Xto_bry_and_clear();
+		byte[] bry = bfr.To_bry_and_clear();
 		bry = Bry_.Replace(bry, gplx.xowa.bldrs.xmls.Xob_xml_parser_.Bry_tab_ent, gplx.xowa.bldrs.xmls.Xob_xml_parser_.Bry_tab);
-		Io_mgr.I.SaveFilBry(trg_fil, bry);
+		Io_mgr.Instance.SaveFilBry(trg_fil, bry);
 		return true;
 	}	private static final byte[] Ttl_common_css = Bry_.new_a7("Common.css"), Ttl_vector_css = Bry_.new_a7("Vector.css");
 	private boolean Css_wiki_generate_section(Bry_bfr bfr, byte[] ttl) {
@@ -152,7 +152,7 @@ public class Xoa_css_extractor {
 	public void Logo_setup() {
 		boolean logo_missing = true;
 		Io_url logo_url = wiki_html_dir.GenSubFil("logo.png");
-		if (Io_mgr.I.ExistsFil(logo_url)) return;	// don't download if already there
+		if (Io_mgr.Instance.ExistsFil(logo_url)) return;	// don't download if already there
 		logo_missing = !Logo_download(logo_url);
 		if (logo_missing)
 			Failover(logo_url);
@@ -172,7 +172,7 @@ public class Xoa_css_extractor {
 	}
 	private boolean Logo_copy_from_css(Io_url trg_fil) {
 		Io_url commons_file = wiki_html_dir.GenSubFil(Css_common_name);
-		byte[] commons_src = Io_mgr.I.LoadFilBry(commons_file);
+		byte[] commons_src = Io_mgr.Instance.LoadFilBry(commons_file);
 		int bgn_pos = Bry_find_.Find_fwd(commons_src, Bry_mw_wiki_logo);				if (bgn_pos == Bry_find_.Not_found) return false;
 		bgn_pos += Bry_mw_wiki_logo.length;
 		int end_pos = Bry_find_.Find_fwd(commons_src, Byte_ascii.Quote, bgn_pos + 1);	if (end_pos == Bry_find_.Not_found) return false;
@@ -181,7 +181,7 @@ public class Xoa_css_extractor {
 		if (wiki_html_dir.Info().DirSpr_byte() == Byte_ascii.Backslash)
 			src_bry = Bry_.Replace(src_bry, Byte_ascii.Slash, Byte_ascii.Backslash);
 		Io_url src_fil = wiki_html_dir.GenSubFil(String_.new_u8(src_bry));
-		Io_mgr.I.CopyFil(src_fil, trg_fil, true);
+		Io_mgr.Instance.CopyFil(src_fil, trg_fil, true);
 		return true;
 	}	private static final byte[] Bry_mw_wiki_logo = Bry_.new_a7(".mw-wiki-logo{background-image:url(\"");
 	private String Logo_find_src() {
@@ -211,18 +211,18 @@ public class Xoa_css_extractor {
 	}	
 	private void Failover(Io_url trg_fil) {
 		usr_dlg.Note_many("", "", "copying failover file: trg_fil=~{0};", trg_fil.Raw());
-		Io_mgr.I.CopyFil(failover_dir.GenSubFil(trg_fil.NameAndExt()), trg_fil, true);		
+		Io_mgr.Instance.CopyFil(failover_dir.GenSubFil(trg_fil.NameAndExt()), trg_fil, true);		
 	}
 	public boolean Css_scrape_setup() {
 		Io_url trg_fil = wiki_html_dir.GenSubFil(Css_common_name);
-		// if (Io_mgr.I.ExistsFil(trg_fil)) return;	// don't download if already there; DELETED: else main_page is not scraped for all stylesheet links; simple.d: fails; DATE:2014-02-11
+		// if (Io_mgr.Instance.ExistsFil(trg_fil)) return;	// don't download if already there; DELETED: else main_page is not scraped for all stylesheet links; simple.d: fails; DATE:2014-02-11
 		byte[] css_url = Css_scrape();
 		if (css_url == null) {
 			Css_common_failover();
 			return false;
 		}
 		else {
-			Io_mgr.I.SaveFilBry(trg_fil, css_url);
+			Io_mgr.Instance.SaveFilBry(trg_fil, css_url);
 			css_img_downloader.Chk(wiki_domain, trg_fil);
 			return true;
 		}
@@ -267,14 +267,14 @@ public class Xoa_css_extractor {
 			tmp_bfr.Add(Xoa_css_img_downloader.Bry_comment_bgn).Add_str(css_url).Add(Xoa_css_img_downloader.Bry_comment_end).Add_byte_nl();
 			tmp_bfr.Add(css_bry).Add_byte_nl().Add_byte_nl();
 		}
-		return tmp_bfr.Xto_bry_and_clear();
+		return tmp_bfr.To_bry_and_clear();
 	}
 	private static byte[] Url_root_fix(byte[] domain, byte[] url) {// DATE:2015-09-20
 		if (url.length < 3) return url;	// need at least 2 chars
 		if (	url[0] == Byte_ascii.Slash	// starts with "/"	EX: "/w/api.php"
 			&&	url[1] != Byte_ascii.Slash	// but not "//";	EX: "//en.wikipedia.org"
 			)
-			return Bry_.Add(gplx.xowa.html.hrefs.Xoh_href_.Bry__https, domain, url);
+			return Bry_.Add(gplx.xowa.htmls.hrefs.Xoh_href_.Bry__https, domain, url);
 		else
 			return url;
 	}
diff --git a/400_xowa/src/gplx/xowa/bldrs/css/Xoa_css_extractor_basic_tst.java b/400_xowa/src/gplx/xowa/bldrs/css/Xoa_css_extractor_basic_tst.java
index c7ae5f8a3..234a808c7 100644
--- a/400_xowa/src/gplx/xowa/bldrs/css/Xoa_css_extractor_basic_tst.java
+++ b/400_xowa/src/gplx/xowa/bldrs/css/Xoa_css_extractor_basic_tst.java
@@ -78,7 +78,7 @@ public class Xoa_css_extractor_basic_tst {
 }
 class Xoa_css_extractor_fxt {
 	public void Clear() {
-		Io_mgr.I.InitEngine_mem();
+		Io_mgr.Instance.InitEngine_mem();
 		Gfo_usr_dlg usr_dlg = Gfo_usr_dlg_.Test();
 		css_installer = new Xoa_css_extractor();
 		css_installer.Download_xrg().Trg_engine_key_(IoEngine_.MemKey);
@@ -101,8 +101,8 @@ class Xoa_css_extractor_fxt {
 		page_fetcher.Add(ns_id, Bry_.new_a7(ttl), Bry_.new_a7(text));
 	}
 	public void Init_fil_empty(String url) 			{Init_fil(url, "");}
-	public void Init_fil(String url, String text) 	{Io_mgr.I.SaveFilStr(url, text);}
-	public void Test_fil(String url, String expd) 	{Tfds.Eq_str_lines(expd, Io_mgr.I.LoadFilStr(Io_url_.new_any_(url)));}
+	public void Init_fil(String url, String text) 	{Io_mgr.Instance.SaveFilStr(url, text);}
+	public void Test_fil(String url, String expd) 	{Tfds.Eq_str_lines(expd, Io_mgr.Instance.LoadFilStr(Io_url_.new_any_(url)));}
 	public void Exec_logo_setup() {
 		css_installer.Mainpage_download();
 		css_installer.Logo_setup();
diff --git a/400_xowa/src/gplx/xowa/bldrs/css/Xoa_css_extractor_wiki_tst.java b/400_xowa/src/gplx/xowa/bldrs/css/Xoa_css_extractor_wiki_tst.java
index e3261281d..bd6e61e88 100644
--- a/400_xowa/src/gplx/xowa/bldrs/css/Xoa_css_extractor_wiki_tst.java
+++ b/400_xowa/src/gplx/xowa/bldrs/css/Xoa_css_extractor_wiki_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.bldrs.css; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*;
-import org.junit.*; import gplx.ios.*; import gplx.xowa.nss.*;
+import org.junit.*; import gplx.ios.*; import gplx.xowa.wikis.nss.*;
 public class Xoa_css_extractor_wiki_tst {
 	@Before public void init() {fxt.Clear();} private Xoa_css_extractor_fxt fxt = new Xoa_css_extractor_fxt();
 	@Test   public void Css_wiki_generate() {
diff --git a/400_xowa/src/gplx/xowa/bldrs/css/Xoa_css_img_downloader.java b/400_xowa/src/gplx/xowa/bldrs/css/Xoa_css_img_downloader.java
index b167682ba..2e0d987e9 100644
--- a/400_xowa/src/gplx/xowa/bldrs/css/Xoa_css_img_downloader.java
+++ b/400_xowa/src/gplx/xowa/bldrs/css/Xoa_css_img_downloader.java
@@ -27,12 +27,12 @@ public class Xoa_css_img_downloader {
 	public void Chk(byte[] wiki_domain, Io_url css_fil) {
 		this.wiki_domain = wiki_domain;
 		List_adp img_list = List_adp_.new_();
-		byte[] old_bry = Io_mgr.I.LoadFilBry(css_fil);
+		byte[] old_bry = Io_mgr.Instance.LoadFilBry(css_fil);
 		byte[] rel_url_prefix = Bry_.Add(Bry_fwd_slashes, wiki_domain);
 		byte[] new_bry = Convert_to_local_urls(rel_url_prefix, old_bry, img_list);
 		Io_url img_dir = css_fil.OwnerDir();
 		Download_fils(img_dir, img_list.To_str_ary());
-		Io_mgr.I.SaveFilBry(css_fil, new_bry);
+		Io_mgr.Instance.SaveFilBry(css_fil, new_bry);
 	}
 	public byte[] Convert_to_local_urls(byte[] rel_url_prefix, byte[] src, List_adp list) {
 		try {
@@ -96,7 +96,7 @@ public class Xoa_css_img_downloader {
 				if (!quoted) bfr.Add_byte(Byte_ascii.Quote);
 				prv_pos = end_pos;
 			}
-			return bfr.Xto_bry_and_clear();
+			return bfr.To_bry_and_clear();
 		}
 		catch (Exception e) {
 			usr_dlg.Warn_many("", "", "failed to convert local_urls: ~{0} ~{1}", String_.new_u8(rel_url_prefix), Err_.Message_gplx_full(e));
@@ -157,9 +157,9 @@ public class Xoa_css_img_downloader {
 		for (int i = 0; i < ary_len; i++) {
 			String src = ary[i];
 			Io_url trg = css_dir.GenSubFil_nest(Op_sys.Cur().Fsys_http_frag_to_url_str(Replace_invalid_chars_str(src)));
-			if (Io_mgr.I.ExistsFil(trg)) continue;
+			if (Io_mgr.Instance.ExistsFil(trg)) continue;
 			download_wkr.Download(true, "https://" + src, trg, "download: " + src); // ILN
-			if (Io_mgr.I.QueryFil(trg).Size() == 0) {	// warn if 0 byte files downloaded; DATE:2015-07-06
+			if (Io_mgr.Instance.QueryFil(trg).Size() == 0) {	// warn if 0 byte files downloaded; DATE:2015-07-06
 				Xoa_app_.Usr_dlg().Warn_many("", "", "css.download; 0 byte file downloaded; file=~{0}", trg.Raw());
 			}
 		}
diff --git a/400_xowa/src/gplx/xowa/bldrs/css/Xoa_css_img_downloader_tst.java b/400_xowa/src/gplx/xowa/bldrs/css/Xoa_css_img_downloader_tst.java
index 0d8e7b987..a1242b6f5 100644
--- a/400_xowa/src/gplx/xowa/bldrs/css/Xoa_css_img_downloader_tst.java
+++ b/400_xowa/src/gplx/xowa/bldrs/css/Xoa_css_img_downloader_tst.java
@@ -82,8 +82,8 @@ public class Xoa_css_img_downloader_tst {
 	@Test  public void Clean_exc_site_only() 		{fxt.Test_clean_img_url("//site"								, null);}
 	@Test  public void Clean_exc_site_only_2() 		{fxt.Test_clean_img_url("//site/"								, null);}
 	@Test  public void Import_url() {
-		Io_mgr.I.InitEngine_mem();
-		Io_mgr.I.SaveFilStr("mem/www/b.css", "imported_css");
+		Io_mgr.Instance.InitEngine_mem();
+		Io_mgr.Instance.SaveFilStr("mem/www/b.css", "imported_css");
 		fxt.Test_css_convert
 		(	"x @import url(\"mem/www/b.css\") screen; z"
 		, 	String_.Concat_lines_nl
@@ -101,8 +101,8 @@ public class Xoa_css_img_downloader_tst {
 		fxt.Test_import_url("https://a.org"			, "https://a.org");	// unless starts with https EX:: handle @import(https://...); PAGE:tr.n:Main_Page; DATE:2014-06-04
 	}
 	@Test  public void Import_url_relative() {	// PURPOSE: if directory, add domain; "/a/b.css" -> "//domain/a/b.css"; DATE:2014-02-03
-		Io_mgr.I.InitEngine_mem();
-		Io_mgr.I.SaveFilStr("mem/en.wikipedia.org/www/b.css", "imported_css");
+		Io_mgr.Instance.InitEngine_mem();
+		Io_mgr.Instance.SaveFilStr("mem/en.wikipedia.org/www/b.css", "imported_css");
 		fxt.Test_css_convert
 		(	"x @import url(\"/www/b.css\") screen; z"	// starts with "/"
 		, 	String_.Concat_lines_nl
@@ -116,8 +116,8 @@ public class Xoa_css_img_downloader_tst {
 	}
 	@Test  public void Import_url_relative_skip() {	// PURPOSE: if rel path, skip; "//site/a/b.css"; DATE:2014-02-03
 		fxt.Downloader().Stylesheet_prefix_(Bry_.new_a7("mem"));	// stylesheet prefix prefix defaults to ""; set to "mem", else test will try to retrieve "//url" which will fail
-		Io_mgr.I.InitEngine_mem();
-		Io_mgr.I.SaveFilStr("mem//en.wikipedia.org/a/b.css", "imported_css");
+		Io_mgr.Instance.InitEngine_mem();
+		Io_mgr.Instance.SaveFilStr("mem//en.wikipedia.org/a/b.css", "imported_css");
 		fxt.Test_css_convert
 		(	"x @import url(\"//en.wikipedia.org/a/b.css\") screen; z"	// starts with "//"
 		, 	String_.Concat_lines_nl
@@ -130,8 +130,8 @@ public class Xoa_css_img_downloader_tst {
 		);
 	}
 	@Test  public void Import_url_space() {		// PURPOSE: some css has spaces; replace with underlines else fails when downloaded; EX: https://it.wikivoyage.org/w/index.php?title=MediaWiki:Container e Infobox.css&action=raw&ctype=text/css; DATE:2015-03-08
-		Io_mgr.I.InitEngine_mem();
-		Io_mgr.I.SaveFilStr("mem/www/b_c.css", "imported_css");
+		Io_mgr.Instance.InitEngine_mem();
+		Io_mgr.Instance.SaveFilStr("mem/www/b_c.css", "imported_css");
 		fxt.Test_css_convert
 		(	"x @import url(\"mem/www/b c.css\") screen; z"
 		, 	String_.Concat_lines_nl
@@ -145,8 +145,8 @@ public class Xoa_css_img_downloader_tst {
 	}
 	@Test  public void Wikisource_freedimg() {	// PURPOSE: check that "wikimedia" is replaced for FreedImg hack; PAGE:en.s:Page:Notes_on_Osteology_of_Baptanodon._With_a_Description_of_a_New_Species.pdf/3 DATE:2014-09-06
 		fxt.Downloader().Stylesheet_prefix_(Bry_.new_a7("mem"));	// stylesheet prefix prefix defaults to ""; set to "mem", else test will try to retrieve "//url" which will fail
-		Io_mgr.I.InitEngine_mem();
-		Io_mgr.I.SaveFilStr("mem//en.wikisource.org/w/index.php?title=MediaWiki:Dynimg.css", ".freedImg img[src*=\"wikipedia\"], .freedImg img[src*=\"wikisource\"], .freedImg img[src*=\"score\"], .freedImg img[src*=\"math\"] {");
+		Io_mgr.Instance.InitEngine_mem();
+		Io_mgr.Instance.SaveFilStr("mem//en.wikisource.org/w/index.php?title=MediaWiki:Dynimg.css", ".freedImg img[src*=\"wikipedia\"], .freedImg img[src*=\"wikisource\"], .freedImg img[src*=\"score\"], .freedImg img[src*=\"math\"] {");
 		fxt.Test_css_convert
 		(	"x @import url(\"//en.wikisource.org/w/index.php?title=MediaWiki:Dynimg.css\") screen; z"	// starts with "//"
 		, 	String_.Concat_lines_nl
diff --git a/400_xowa/src/gplx/xowa/bldrs/css/Xob_css_parser__url_tst.java b/400_xowa/src/gplx/xowa/bldrs/css/Xob_css_parser__url_tst.java
index 267e223a0..2195b00ea 100644
--- a/400_xowa/src/gplx/xowa/bldrs/css/Xob_css_parser__url_tst.java
+++ b/400_xowa/src/gplx/xowa/bldrs/css/Xob_css_parser__url_tst.java
@@ -39,7 +39,7 @@ class Xob_css_parser__url_fxt {
 		this.src_bry = Bry_.new_u8(src_str);
 		this.Exec_parse_hook();
 		cur_frag.Write(bfr, src_bry);
-		String actl_str = bfr.Xto_str_and_clear();
+		String actl_str = bfr.To_str_and_clear();
 		Tfds.Eq(expd_tid, cur_frag.Tid(), "wrong tid; expd={0}, actl={1}", expd_tid, cur_frag.Tid());
 		Tfds.Eq(expd_str, actl_str);
 	}
diff --git a/400_xowa/src/gplx/xowa/bldrs/css/Xob_mirror_mgr.java b/400_xowa/src/gplx/xowa/bldrs/css/Xob_mirror_mgr.java
index ba1a7e234..b26a7a032 100644
--- a/400_xowa/src/gplx/xowa/bldrs/css/Xob_mirror_mgr.java
+++ b/400_xowa/src/gplx/xowa/bldrs/css/Xob_mirror_mgr.java
@@ -31,8 +31,8 @@ public class Xob_mirror_mgr {
 		byte[] trg_url = Xob_css_tkn__url.To_fsys(src_url);
 		code_hash.Add_if_dupe_use_1st(src_url, new Xobc_download_itm(Xobc_download_itm.Tid_css, String_.new_u8(src_url), trg_url));
 	}
-	public Ordered_hash Code_hash() {return code_hash;} private final Ordered_hash code_hash = Ordered_hash_.new_();
-	public Ordered_hash File_hash() {return file_hash;} private final Ordered_hash file_hash = Ordered_hash_.new_();
+	public Ordered_hash Code_hash() {return code_hash;} private final Ordered_hash code_hash = Ordered_hash_.New();
+	public Ordered_hash File_hash() {return file_hash;} private final Ordered_hash file_hash = Ordered_hash_.New();
 	public void Exec() {
 		usr_dlg.Plog_many("", "", "html_mirror:download.root_page; url=~{0}", page_url);
 		IoEngine_xrg_downloadFil download_xrg = download_wkr.Download_xrg();
@@ -44,7 +44,7 @@ public class Xob_mirror_mgr {
 			for (int i = 0; i < code_ary_len; ++i) {
 				Xobc_download_itm code = code_ary[i];
 				byte[] code_src = download_xrg.Exec_as_bry(code.Http_str());
-				Io_mgr.I.SaveFilBry(fsys_root.Gen_sub_path_for_os(String_.new_u8(code.Fsys_url())), code_src);
+				Io_mgr.Instance.SaveFilBry(fsys_root.Gen_sub_path_for_os(String_.new_u8(code.Fsys_url())), code_src);
 				css_parser.Parse(code_src);
 			}
 		}
diff --git a/400_xowa/src/gplx/xowa/bldrs/css/Xob_mirror_mgr_tst.java b/400_xowa/src/gplx/xowa/bldrs/css/Xob_mirror_mgr_tst.java
index 740f837c1..f9137456c 100644
--- a/400_xowa/src/gplx/xowa/bldrs/css/Xob_mirror_mgr_tst.java
+++ b/400_xowa/src/gplx/xowa/bldrs/css/Xob_mirror_mgr_tst.java
@@ -42,7 +42,7 @@ class Xob_mirror_mgr_fxt {
 }
 class Io_fsys_fxt {
 	public void Clear() {
-		Io_mgr.I.InitEngine_mem();
+		Io_mgr.Instance.InitEngine_mem();
 	}
 	public void Init_fil(String url_str) {
 		Io_url url = Io_url_.new_fil_(url_str);
@@ -50,7 +50,7 @@ class Io_fsys_fxt {
 	}
 	public void Init_fil(String url_str, String text) {Init_fil(Io_url_.new_fil_(url_str), text);}
 	public void Init_fil(Io_url url, String text) {
-		Io_mgr.I.SaveFilStr(url, text);
+		Io_mgr.Instance.SaveFilStr(url, text);
 	}
 	public void Test_fil(String url_str) {
 		Io_url url = Io_url_.new_fil_(url_str);
@@ -58,6 +58,6 @@ class Io_fsys_fxt {
 	}
 	public void Test_fil(String url, String expd) {Test_fil(Io_url_.new_fil_(url), expd);}
 	public void Test_fil(Io_url url, String expd) {
-		Tfds.Eq_str_lines(expd, Io_mgr.I.LoadFilStr(url));
+		Tfds.Eq_str_lines(expd, Io_mgr.Instance.LoadFilStr(url));
 	}
 }
diff --git a/400_xowa/src/gplx/xowa/bldrs/filters/core/Xob_ttl_filter_mgr.java b/400_xowa/src/gplx/xowa/bldrs/filters/core/Xob_ttl_filter_mgr.java
index f5ae45a61..be7805980 100644
--- a/400_xowa/src/gplx/xowa/bldrs/filters/core/Xob_ttl_filter_mgr.java
+++ b/400_xowa/src/gplx/xowa/bldrs/filters/core/Xob_ttl_filter_mgr.java
@@ -29,7 +29,7 @@ public class Xob_ttl_filter_mgr {
 	public boolean Match_include(byte[] src) {return include_is_empty ? false : include_hash.Has(src);}
 	public boolean Match_exclude(byte[] src) {return exclude_is_empty ? false : exclude_hash.Has(src);}
 	public void Load(boolean exclude, Io_url url) {
-		byte[] src = Io_mgr.I.LoadFilBry_loose(url);
+		byte[] src = Io_mgr.Instance.LoadFilBry_loose(url);
 		if (Bry_.Len_gt_0(src)) Load(exclude, src);
 	}
 	public void Load(boolean exclude, byte[] src) {
diff --git a/400_xowa/src/gplx/xowa/bldrs/filters/dansguardians/Dg_file.java b/400_xowa/src/gplx/xowa/bldrs/filters/dansguardians/Dg_file.java
index 13884fa4f..2c22b41cc 100644
--- a/400_xowa/src/gplx/xowa/bldrs/filters/dansguardians/Dg_file.java
+++ b/400_xowa/src/gplx/xowa/bldrs/filters/dansguardians/Dg_file.java
@@ -71,7 +71,7 @@ class Dg_word {
 			bfr.Add(itm.Raw());
 		}
 		bfr.Add_byte_apos();
-		return bfr.Xto_str_and_clear();
+		return bfr.To_str_and_clear();
 	}
 	public static Dg_word[] Ary_new_by_str_ary(String[] ary) {
 		int ary_len = ary.length;
diff --git a/400_xowa/src/gplx/xowa/bldrs/filters/dansguardians/Dg_log_mgr.java b/400_xowa/src/gplx/xowa/bldrs/filters/dansguardians/Dg_log_mgr.java
index 1a09d1d0c..790338f1c 100644
--- a/400_xowa/src/gplx/xowa/bldrs/filters/dansguardians/Dg_log_mgr.java
+++ b/400_xowa/src/gplx/xowa/bldrs/filters/dansguardians/Dg_log_mgr.java
@@ -25,7 +25,7 @@ class Dg_log_mgr {
 	private final Dg_page_rule_tbl	tbl_page_rule = new Dg_page_rule_tbl();
 	private final Bry_bfr tmp_bfr = Bry_bfr.reset_(16);
 	public void Init(Io_url db_url) {
-		Db_conn_bldr_data conn_data = Db_conn_bldr.I.Get_or_new(db_url);
+		Db_conn_bldr_data conn_data = Db_conn_bldr.Instance.Get_or_new(db_url);
 		conn = conn_data.Conn(); boolean created = conn_data.Created();
 		tbl_file.Conn_(conn, created);
 		tbl_rule.Conn_(conn, created);
diff --git a/400_xowa/src/gplx/xowa/bldrs/filters/dansguardians/Dg_match_mgr.java b/400_xowa/src/gplx/xowa/bldrs/filters/dansguardians/Dg_match_mgr.java
index 922c7b3b2..8e7cda4af 100644
--- a/400_xowa/src/gplx/xowa/bldrs/filters/dansguardians/Dg_match_mgr.java
+++ b/400_xowa/src/gplx/xowa/bldrs/filters/dansguardians/Dg_match_mgr.java
@@ -22,8 +22,8 @@ import gplx.xowa.bldrs.filters.core.*;
 public class Dg_match_mgr {
 	private int score_init, score_fail; private boolean log_enabled, case_match;
 	private final Btrie_slim_mgr btrie = Btrie_slim_mgr.cs();
-	private final Ordered_hash rules = Ordered_hash_.new_bry_();
-	private final Ordered_hash rule_group_hash = Ordered_hash_.new_bry_(), rule_tally_hash = Ordered_hash_.new_bry_();
+	private final Ordered_hash rules = Ordered_hash_.New_bry();
+	private final Ordered_hash rule_group_hash = Ordered_hash_.New_bry(), rule_tally_hash = Ordered_hash_.New_bry();
 	private final Dg_parser parser = new Dg_parser();
 	private final Xob_ttl_filter_mgr ttl_filter_mgr = new Xob_ttl_filter_mgr();
 	private final Dg_log_mgr log_mgr = new Dg_log_mgr();
@@ -33,7 +33,7 @@ public class Dg_match_mgr {
 		ttl_filter_mgr.Load(Bool_.N, root_dir.GenSubFil("xowa.title.include.txt"));
 		ttl_filter_mgr.Load(Bool_.Y, root_dir.GenSubFil("xowa.title.exclude.txt"));
 		Io_url dg_root_url = root_dir.GenSubDir("dansguardian");
-		Dg_file[] files = parser.Parse_dir(dg_root_url); Gfo_usr_dlg_.I.Plog_many("", "", "import.dg.rules: url=~{0} files=~{1}", dg_root_url, files.length);
+		Dg_file[] files = parser.Parse_dir(dg_root_url); Gfo_usr_dlg_.Instance.Plog_many("", "", "import.dg.rules: url=~{0} files=~{1}", dg_root_url, files.length);
 		Init_by_files(files);
 		if (log_enabled) log_mgr.Commit();
 	}
@@ -77,7 +77,7 @@ public class Dg_match_mgr {
 		}
 		return rv;
 	}
-	public boolean Match(int log_tid, int page_id, int page_ns, byte[] page_ttl, byte[] page_ttl_db, Xol_lang lang, byte[] src) {
+	public boolean Match(int log_tid, int page_id, int page_ns, byte[] page_ttl, byte[] page_ttl_db, Xol_lang_itm lang, byte[] src) {
 		int src_len = src.length;
 		int clude_type = 0;
 		if		(ttl_filter_mgr.Match_include(page_ttl_db)) clude_type = -1;
diff --git a/400_xowa/src/gplx/xowa/bldrs/filters/dansguardians/Dg_match_mgr_tst.java b/400_xowa/src/gplx/xowa/bldrs/filters/dansguardians/Dg_match_mgr_tst.java
index e262d8e7d..d4210a63f 100644
--- a/400_xowa/src/gplx/xowa/bldrs/filters/dansguardians/Dg_match_mgr_tst.java
+++ b/400_xowa/src/gplx/xowa/bldrs/filters/dansguardians/Dg_match_mgr_tst.java
@@ -29,7 +29,7 @@ class Dg_match_mgr_fxt {
 	private Dg_match_mgr match_mgr;
 	private final List_adp rule_list = List_adp_.new_();
 	public void Clear() {
-		Db_conn_bldr.I.Reg_default_mem();
+		Db_conn_bldr.Instance.Reg_default_mem();
 		Io_url root_dir = Io_url_.mem_dir_("mem/dg/");
 		match_mgr = new Dg_match_mgr(root_dir.GenSubDir("words"), 1, 0, Bool_.Y, Bool_.Y, root_dir.GenSubDir("log"));
 		rule_list.Clear();
diff --git a/400_xowa/src/gplx/xowa/bldrs/filters/dansguardians/Dg_parser.java b/400_xowa/src/gplx/xowa/bldrs/filters/dansguardians/Dg_parser.java
index 5a3e194fe..5258e30fc 100644
--- a/400_xowa/src/gplx/xowa/bldrs/filters/dansguardians/Dg_parser.java
+++ b/400_xowa/src/gplx/xowa/bldrs/filters/dansguardians/Dg_parser.java
@@ -17,17 +17,17 @@ along with this program.  If not, see .
 */
 package gplx.xowa.bldrs.filters.dansguardians; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*; import gplx.xowa.bldrs.filters.*;
 class Dg_parser {
-	private Gfo_usr_dlg usr_dlg = Gfo_usr_dlg_.I; private final Bry_bfr key_bldr = Bry_bfr.reset_(32);
+	private Gfo_usr_dlg usr_dlg = Gfo_usr_dlg_.Instance; private final Bry_bfr key_bldr = Bry_bfr.reset_(32);
 	private final List_adp files = List_adp_.new_(), lines = List_adp_.new_(), words = List_adp_.new_();
 	private int next_id = 0;
 	public Dg_file[] Parse_dir(Io_url dir) {
-		Io_url[] fil_urls = Io_mgr.I.QueryDir_args(dir).Recur_(true).ExecAsUrlAry();
-		this.usr_dlg = Gfo_usr_dlg_.I;
+		Io_url[] fil_urls = Io_mgr.Instance.QueryDir_args(dir).Recur_(true).ExecAsUrlAry();
+		this.usr_dlg = Gfo_usr_dlg_.Instance;
 		files.Clear();
 		int len = fil_urls.length;
 		for (int i = 0; i < len; ++i) {
 			Io_url fil_url = fil_urls[i];
-			byte[] fil_src = Io_mgr.I.LoadFilBry_loose(fil_url);
+			byte[] fil_src = Io_mgr.Instance.LoadFilBry_loose(fil_url);
 			Dg_file file = Parse_fil(i, fil_url.GenRelUrl_orEmpty(dir), fil_src);
 			if (file != null) files.Add(file);
 		}
@@ -77,7 +77,7 @@ class Dg_parser {
 				break;
 			}
 		}
-		byte[] key = key_bldr.Add_int_variable(file_id).Add_byte_dot().Add_int_variable(line_idx).Xto_bry_and_clear();
+		byte[] key = key_bldr.Add_int_variable(file_id).Add_byte_dot().Add_int_variable(line_idx).To_bry_and_clear();
 		return new Dg_rule(file_id, ++next_id, line_idx, Dg_rule.Tid_rule, key, score, Ary_new_by_ary((byte[][])words.To_ary_and_clear(byte[].class)));
 	}
 	private static Dg_word[] Ary_new_by_ary(byte[][] ary) {
diff --git a/400_xowa/src/gplx/xowa/bldrs/filters/dansguardians/Dg_parser_tst.java b/400_xowa/src/gplx/xowa/bldrs/filters/dansguardians/Dg_parser_tst.java
index dcdad7a65..623d1bebb 100644
--- a/400_xowa/src/gplx/xowa/bldrs/filters/dansguardians/Dg_parser_tst.java
+++ b/400_xowa/src/gplx/xowa/bldrs/filters/dansguardians/Dg_parser_tst.java
@@ -52,6 +52,6 @@ class Dg_parser_fxt {
 		bfr	.Add_str("score=").Add_int_variable(line.Score()).Add_byte_nl()
 			.Add_str("words=").Add_str(String_.Concat_with_str(";", Dg_word.Ary_concat(line.Words(), tmp_bfr, Byte_ascii.Tick))).Add_byte_nl()
 			;
-		return bfr.Xto_str_and_clear();
+		return bfr.To_str_and_clear();
 	}
 }
diff --git a/400_xowa/src/gplx/xowa/bldrs/infos/Xob_info_file.java b/400_xowa/src/gplx/xowa/bldrs/infos/Xob_info_file.java
index 0a2c9e225..2150fbac9 100644
--- a/400_xowa/src/gplx/xowa/bldrs/infos/Xob_info_file.java
+++ b/400_xowa/src/gplx/xowa/bldrs/infos/Xob_info_file.java
@@ -45,14 +45,14 @@ public class Xob_info_file {
 	public static Xob_info_file Load(Db_cfg_tbl tbl) {
 		Db_cfg_hash hash = tbl.Select_as_hash(Cfg_grp);
 		return new Xob_info_file
-		( hash.Get(Cfg_key__id				).To_int_or(-1)
-		, hash.Get(Cfg_key__type			).To_str_or("unknown")
-		, hash.Get(Cfg_key__ns_ids			).To_str_or("")
-		, hash.Get(Cfg_key__part_id			).To_int_or(-1)
-		, hash.Get(Cfg_key__guid			).To_guid_or(Guid_adp_.Empty)
-		, hash.Get(Cfg_key__schema_version	).To_int_or(2)
-		, hash.Get(Cfg_key__core_file_name	).To_str_or("")
-		, hash.Get(Cfg_key__orig_file_name	).To_str_or("")
+		( hash.Get_by(Cfg_key__id				).To_int_or(-1)
+		, hash.Get_by(Cfg_key__type				).To_str_or("unknown")
+		, hash.Get_by(Cfg_key__ns_ids			).To_str_or("")
+		, hash.Get_by(Cfg_key__part_id			).To_int_or(-1)
+		, hash.Get_by(Cfg_key__guid				).To_guid_or(Guid_adp_.Empty)
+		, hash.Get_by(Cfg_key__schema_version	).To_int_or(2)
+		, hash.Get_by(Cfg_key__core_file_name	).To_str_or("")
+		, hash.Get_by(Cfg_key__orig_file_name	).To_str_or("")
 		);
 	}
 	private static final String Cfg_grp = gplx.xowa.wikis.Xow_cfg_consts.Grp__bldr_db
diff --git a/400_xowa/src/gplx/xowa/bldrs/infos/Xob_info_session.java b/400_xowa/src/gplx/xowa/bldrs/infos/Xob_info_session.java
index f5ddda0e0..4c837749b 100644
--- a/400_xowa/src/gplx/xowa/bldrs/infos/Xob_info_session.java
+++ b/400_xowa/src/gplx/xowa/bldrs/infos/Xob_info_session.java
@@ -40,12 +40,12 @@ public class Xob_info_session {
 	public static Xob_info_session Load(Db_cfg_tbl tbl) {
 		Db_cfg_hash hash = tbl.Select_as_hash(Cfg_grp);
 		return new Xob_info_session
-		( hash.Get(Cfg_key__user).To_str_or("")
-		, hash.Get(Cfg_key__version).To_str_or("")
-		, hash.Get(Cfg_key__wiki_domain).To_str_or("")
-		, hash.Get(Cfg_key__dump_name).To_str_or("")
-		, hash.Get(Cfg_key__time).To_date_or(DateAdp_.MinValue)
-		, hash.Get(Cfg_key__guid).To_guid_or(Guid_adp_.Empty)
+		( hash.Get_by(Cfg_key__user).To_str_or("")
+		, hash.Get_by(Cfg_key__version).To_str_or("")
+		, hash.Get_by(Cfg_key__wiki_domain).To_str_or("")
+		, hash.Get_by(Cfg_key__dump_name).To_str_or("")
+		, hash.Get_by(Cfg_key__time).To_date_or(DateAdp_.MinValue)
+		, hash.Get_by(Cfg_key__guid).To_guid_or(Guid_adp_.Empty)
 		);
 	}
 	public static final String Cfg_grp = gplx.xowa.wikis.Xow_cfg_consts.Grp__bldr_session
diff --git a/400_xowa/src/gplx/xowa/bldrs/installs/Xoi_cmd_base.java b/400_xowa/src/gplx/xowa/bldrs/installs/Xoi_cmd_base.java
index 4f5cbbd49..a07677d37 100644
--- a/400_xowa/src/gplx/xowa/bldrs/installs/Xoi_cmd_base.java
+++ b/400_xowa/src/gplx/xowa/bldrs/installs/Xoi_cmd_base.java
@@ -18,7 +18,7 @@ along with this program.  If not, see .
 package gplx.xowa.bldrs.installs; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*;
 import gplx.core.threads.*; import gplx.xowa.bldrs.*;
 import gplx.xowa.wikis.domains.*;
-import gplx.xowa.wms.dumps.*;
+import gplx.xowa.bldrs.wms.dumps.*;
 abstract class Xoi_cmd_base implements Gfo_thread_cmd {
 	public void Ctor(Xoi_setup_mgr install_mgr, String wiki_key) {
 		this.install_mgr = install_mgr; this.wiki_key = wiki_key;
@@ -82,7 +82,7 @@ class Xoi_cmd_category2_build extends Xoi_cmd_base {
 	public Xoi_cmd_category2_build(Xoi_setup_mgr install_mgr, String wiki_key) {this.Ctor(install_mgr, wiki_key); this.app = install_mgr.App(); this.wiki_key = wiki_key;} private Xoae_app app; private String wiki_key;
 	@Override public void Cmd_ctor() {
 		Xowe_wiki wiki = app.Wiki_mgr().Get_by_key_or_make(Bry_.new_u8(wiki_key));
-		wiki.Import_cfg().Category_version_(gplx.xowa.ctgs.Xoa_ctg_mgr.Version_2);
+		wiki.Import_cfg().Category_version_(gplx.xowa.wikis.ctgs.Xoa_ctg_mgr.Version_2);
 	}
 	@Override public String Async_key() {return KEY;} public static final String KEY = "wiki.category2.build";
 	@Override public void Process_async_init(Xoae_app app, Xowe_wiki wiki, Xob_bldr bldr) {
diff --git a/400_xowa/src/gplx/xowa/bldrs/installs/Xoi_cmd_wiki_download.java b/400_xowa/src/gplx/xowa/bldrs/installs/Xoi_cmd_wiki_download.java
index a3bdc015b..0ac1fce02 100644
--- a/400_xowa/src/gplx/xowa/bldrs/installs/Xoi_cmd_wiki_download.java
+++ b/400_xowa/src/gplx/xowa/bldrs/installs/Xoi_cmd_wiki_download.java
@@ -18,7 +18,7 @@ along with this program.  If not, see .
 package gplx.xowa.bldrs.installs; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*;
 import gplx.gfui.*;
 import gplx.core.threads.*; import gplx.xowa.bldrs.*; import gplx.xowa.bldrs.cmds.utils.*;
-import gplx.xowa.wms.dumps.*;
+import gplx.xowa.bldrs.wms.dumps.*;
 class Xoi_cmd_wiki_download extends Gfo_thread_cmd_download implements Gfo_thread_cmd {	private Xoi_setup_mgr install_mgr; private String wiki_key, dump_date, dump_type;
 	public Xoi_cmd_wiki_download Ctor_download_(Xoi_setup_mgr install_mgr, String wiki_key, String dump_date, String dump_type) {
 		this.install_mgr = install_mgr;
@@ -44,7 +44,7 @@ class Xoi_cmd_wiki_download extends Gfo_thread_cmd_download implements Gfo_threa
 		}
 		Xowe_wiki wiki = app.Wiki_mgr().Get_by_key_or_make(dump_file.Domain_itm().Domain_bry());
 		Io_url root_dir = wiki.Fsys_mgr().Root_dir();
-		Io_url[] trg_fil_ary = Io_mgr.I.QueryDir_args(root_dir).FilPath_("*." + dump_type + Download_file_ext() + "*").ExecAsUrlAry();
+		Io_url[] trg_fil_ary = Io_mgr.Instance.QueryDir_args(root_dir).FilPath_("*." + dump_type + Download_file_ext() + "*").ExecAsUrlAry();
 		Io_url trg = trg_fil_ary.length == 0 ? root_dir.GenSubFil(dump_file.File_name()) : trg_fil_ary[0];
 		this.Ctor(app.Usr_dlg(), app.Gui_mgr().Kit());
 		this.Init("download", dump_file.File_url(), trg);
diff --git a/400_xowa/src/gplx/xowa/bldrs/installs/Xoi_cmd_wiki_import.java b/400_xowa/src/gplx/xowa/bldrs/installs/Xoi_cmd_wiki_import.java
index 73ea69971..7bdb129da 100644
--- a/400_xowa/src/gplx/xowa/bldrs/installs/Xoi_cmd_wiki_import.java
+++ b/400_xowa/src/gplx/xowa/bldrs/installs/Xoi_cmd_wiki_import.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.bldrs.installs; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*;
-import gplx.core.threads.*; import gplx.xowa.bldrs.*; import gplx.xowa.gui.views.*; import gplx.xowa.bldrs.cmds.utils.*;
-import gplx.xowa.html.hrefs.*;
+import gplx.core.threads.*; import gplx.xowa.bldrs.*; import gplx.xowa.guis.views.*; import gplx.xowa.bldrs.cmds.utils.*;
+import gplx.xowa.htmls.hrefs.*;
 class Xoi_cmd_wiki_import implements Gfo_thread_cmd {
 	public Xoi_cmd_wiki_import(Xoi_setup_mgr install_mgr, String wiki_key, String wiki_date, String dump_type) {this.install_mgr = install_mgr; this.Owner_(install_mgr); this.wiki_key = wiki_key; this.wiki_date = wiki_date; this.dump_type = dump_type;} private Xoi_setup_mgr install_mgr; String wiki_key, wiki_date, dump_type;
 	public static final String KEY = "wiki.import";
@@ -49,7 +49,7 @@ class Xoi_cmd_wiki_import implements Gfo_thread_cmd {
 		bldr.Cmd_mgr().Add_cmd(wiki, Xob_cmd_keys.Key_tdb_make_page);
 		bldr.Cmd_mgr().Add_cmd(wiki, Xob_cmd_keys.Key_tdb_make_id);
 		bldr.Cmd_mgr().Add_cmd(wiki, Xob_cmd_keys.Key_tdb_make_search_title);
-		if (wiki.Import_cfg().Category_version() == gplx.xowa.ctgs.Xoa_ctg_mgr.Version_1)
+		if (wiki.Import_cfg().Category_version() == gplx.xowa.wikis.ctgs.Xoa_ctg_mgr.Version_1)
 			bldr.Cmd_mgr().Add_cmd(wiki, Xob_cmd_keys.Key_tdb_make_category);
 		bldr.Cmd_mgr().Add_cmd(wiki, Xob_cmd_keys.Key_tdb_calc_stats);
 		bldr.Cmd_mgr().Add_cmd(wiki, Xob_cmd_keys.Key_tdb_core_term);
@@ -59,7 +59,7 @@ class Xoi_cmd_wiki_import implements Gfo_thread_cmd {
 		bldr.Cmd_mgr().Add_cmd(wiki, Xob_cmd_keys.Key_text_init);
 		bldr.Cmd_mgr().Add_cmd(wiki, Xob_cmd_keys.Key_text_page);
 		bldr.Cmd_mgr().Add_cmd(wiki, Xob_cmd_keys.Key_text_css);	
-		if (wiki.Import_cfg().Category_version() == gplx.xowa.ctgs.Xoa_ctg_mgr.Version_1) {
+		if (wiki.Import_cfg().Category_version() == gplx.xowa.wikis.ctgs.Xoa_ctg_mgr.Version_1) {
 			bldr.Cmd_mgr().Add_cmd(wiki, Xob_cmd_keys.Key_text_cat_core_v1);
 			bldr.Cmd_mgr().Add_cmd(wiki, Xob_cmd_keys.Key_text_cat_core);
 			bldr.Cmd_mgr().Add_cmd(wiki, Xob_cmd_keys.Key_text_cat_link);
@@ -89,12 +89,12 @@ class Xoi_cmd_wiki_import implements Gfo_thread_cmd {
 		wiki.Init_assert();
 		if		(String_.Eq(src_url.Ext(), ".xml")) {
 			if (app.Setup_mgr().Dump_mgr().Delete_xml_file())
-				Io_mgr.I.DeleteFil(src_url);
+				Io_mgr.Instance.DeleteFil(src_url);
 		}
 		else if (String_.Eq(src_url.Ext(), ".bz2")) {
 			Io_url trg_fil = app.Fsys_mgr().Wiki_dir().GenSubFil_nest("#dump", "done", src_url.NameAndExt());
 			if (import_move_bz2_to_done)
-				Io_mgr.I.MoveFil_args(src_url, trg_fil, true).Exec();
+				Io_mgr.Instance.MoveFil_args(src_url, trg_fil, true).Exec();
 		}
 		running = false;
 		wiki.Import_cfg().Src_fil_xml_(null).Src_fil_bz2_(null);	// reset file else error when going from Import/Script to Import/List
diff --git a/400_xowa/src/gplx/xowa/bldrs/installs/Xoi_cmd_wiki_tst.java b/400_xowa/src/gplx/xowa/bldrs/installs/Xoi_cmd_wiki_tst.java
index 5b43f1bbf..3123ffb76 100644
--- a/400_xowa/src/gplx/xowa/bldrs/installs/Xoi_cmd_wiki_tst.java
+++ b/400_xowa/src/gplx/xowa/bldrs/installs/Xoi_cmd_wiki_tst.java
@@ -18,9 +18,9 @@ along with this program.  If not, see .
 package gplx.xowa.bldrs.installs; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*;
 import org.junit.*;
 import gplx.core.consoles.*;
-import gplx.brys.*; import gplx.core.threads.*; import gplx.xowa.setup.maints.*; import gplx.xowa.xtns.wdatas.imports.*;
+import gplx.brys.*; import gplx.core.threads.*; import gplx.xowa.bldrs.setups.maints.*; import gplx.xowa.xtns.wdatas.imports.*;
 import gplx.xowa.wikis.domains.*;
-import gplx.xowa.wms.*; import gplx.xowa.wms.dumps.*;
+import gplx.xowa.bldrs.wms.*; import gplx.xowa.bldrs.wms.dumps.*;
 public class Xoi_cmd_wiki_tst {
 	@Test  public void Run() {	// MAINT
 //			Bld_import_list(Xow_domain_regy.All);
@@ -33,7 +33,7 @@ public class Xoi_cmd_wiki_tst {
 		Bry_fmtr_arg_time time_fmtr = new Bry_fmtr_arg_time();
 		for (int i = 0; i < ary_len; i++)
 			Bld_import_list_itm2(bfr, parser, time_fmtr, ary, i);
-		Io_mgr.I.SaveFilStr("C:\\temp.txt", bfr.Xto_str());
+		Io_mgr.Instance.SaveFilStr("C:\\temp.txt", bfr.To_str());
 	}
 	private void Bld_import_list_itm2(Bry_bfr bfr, Wmf_latest_parser parser, Bry_fmtr_arg_time time_fmtr, String[] ary, int i) {
 		String domain_str = ary[i];
@@ -44,7 +44,7 @@ public class Xoi_cmd_wiki_tst {
 		String url = "https://dumps.wikimedia.org/" + wmf_key + "/latest";
 		byte[] latest_html = null;
 		for (int j = 0; j < 5; ++j) {
-			latest_html = Io_mgr.I.DownloadFil_args("", Io_url_.Empty).Exec_as_bry(url);
+			latest_html = Io_mgr.Instance.DownloadFil_args("", Io_url_.Empty).Exec_as_bry(url);
 			if (latest_html != null) break;
 			Tfds.Write("fail|" + url);
 			if (j == 4) return;
@@ -57,11 +57,11 @@ public class Xoi_cmd_wiki_tst {
 		Wmf_latest_itm latest_itm = parser.Get_by(pages_articles_key);
 		bfr.Add(domain_bry).Add_byte_pipe();
 		bfr.Add_str(dump_file.File_url()).Add_byte_pipe();
-		bfr.Add(Xow_domain_type_.Get_type_as_bry(domain_itm.Domain_type_id())).Add_byte_pipe();
+		bfr.Add(Xow_domain_tid_.Get_type_as_bry(domain_itm.Domain_type_id())).Add_byte_pipe();
 		long src_size = latest_itm.Size();
 		bfr.Add_long_variable(src_size).Add_byte_pipe();
 		bfr.Add_str(gplx.ios.Io_size_.To_str(src_size)).Add_byte_pipe();
-		time_fmtr.Seconds_(Math_.Div_safe_as_long(src_size, 1000000)).XferAry(bfr, 0);
+		time_fmtr.Seconds_(Math_.Div_safe_as_long(src_size, 1000000)).Fmt__do(bfr);
 		bfr.Add_byte_pipe();
 		bfr.Add_str(latest_itm.Date().XtoStr_fmt_yyyy_MM_dd_HH_mm());
 		bfr.Add_byte_pipe();
@@ -87,9 +87,9 @@ public class Xoi_cmd_wiki_tst {
 			Tfds.WriteText(String_.Format("passed: {0}\n", itm));
 		bfr.Add_str(itm).Add_byte_pipe();
 		bfr.Add_str(dump_file.File_url()).Add_byte_pipe();
-		bfr.Add(Xow_domain_type_.Get_type_as_bry(dump_file.Wiki_type().Wiki_tid())).Add_byte_pipe();
-//			Xol_lang_itm lang_itm = Xol_lang_itm_.Get_by_key(wiki_type.Lang_key());
-//			if (lang_itm == null) lang_itm = Xol_lang_itm_.Get_by_key(Xol_lang_.Key_en);	// commons, species, meta, etc will have no lang
+		bfr.Add(Xow_domain_tid_.Get_type_as_bry(dump_file.Wiki_type().Wiki_tid())).Add_byte_pipe();
+//			Xol_lang_stub lang_itm = Xol_lang_stub_.Get_by_key(wiki_type.Lang_key());
+//			if (lang_itm == null) lang_itm = Xol_lang_stub_.Get_by_key(Xol_lang_itm_.Key_en);	// commons, species, meta, etc will have no lang
 //			bfr.Add(lang_itm.Local_name()).Add_byte_pipe();
 //			bfr.Add(lang_itm.Canonical_name()).Add_byte_pipe();
 		long src_size = dump_file.File_len();
@@ -120,10 +120,10 @@ public class Xoi_cmd_wiki_tst {
 				api.Build_cfg(bfr, wiki);
 			}
 			catch (Exception e) {
-				Console_adp__sys.I.Write_str_w_nl(Err_.Message_gplx_full(e));
+				Console_adp__sys.Instance.Write_str_w_nl(Err_.Message_gplx_full(e));
 			}
 		}
 		bfr.Add_str_a7("app.bldr.wiki_cfg_bldr.run;").Add_byte_nl();
-		Io_mgr.I.SaveFilStr("C:\\xowa_build_cfg.gfs", bfr.Xto_str());
+		Io_mgr.Instance.SaveFilStr("C:\\xowa_build_cfg.gfs", bfr.To_str());
 	}
 }
diff --git a/400_xowa/src/gplx/xowa/bldrs/installs/Xoi_cmd_wiki_unzip.java b/400_xowa/src/gplx/xowa/bldrs/installs/Xoi_cmd_wiki_unzip.java
index f4f68bc96..b002e7947 100644
--- a/400_xowa/src/gplx/xowa/bldrs/installs/Xoi_cmd_wiki_unzip.java
+++ b/400_xowa/src/gplx/xowa/bldrs/installs/Xoi_cmd_wiki_unzip.java
@@ -25,7 +25,7 @@ class Xoi_cmd_wiki_unzip extends Gfo_thread_cmd_unzip implements Gfo_thread_cmd
 		Xoae_app app = install_mgr.App(); Gfui_kit kit = app.Gui_mgr().Kit();
 		Xowe_wiki wiki = app.Wiki_mgr().Get_by_key_or_make(Bry_.new_u8(wiki_key));
 		Io_url wiki_dir = wiki.Import_cfg().Src_dir();
-		Io_url[] urls = Io_mgr.I.QueryDir_args(wiki_dir).Recur_(false).FilPath_("*.xml.bz2").ExecAsUrlAry();
+		Io_url[] urls = Io_mgr.Instance.QueryDir_args(wiki_dir).Recur_(false).FilPath_("*.xml.bz2").ExecAsUrlAry();
 		if (urls.length == 0) {
 			kit.Ask_ok(GRP_KEY, "dump.unzip_latest.file_missing", "Could not find a dump file for ~{0} in ~{1}", wiki_key, wiki_dir.Raw());
 			return Gfo_thread_cmd_.Init_cancel_step;
@@ -35,10 +35,10 @@ class Xoi_cmd_wiki_unzip extends Gfo_thread_cmd_unzip implements Gfo_thread_cmd
 		super.Init(app.Usr_dlg(), app.Gui_mgr().Kit(), app.Prog_mgr().App_decompress_bz2(), app.Prog_mgr().App_decompress_zip(), app.Prog_mgr().App_decompress_gz(), src, trg);
 		this.Term_cmd_for_src_(Term_cmd_for_src_move);
 		this.Term_cmd_for_src_url_(app.Fsys_mgr().Wiki_dir().GenSubFil_nest("#dump", "done", src.NameAndExt()));
-		if (Io_mgr.I.ExistsFil(trg)) {
+		if (Io_mgr.Instance.ExistsFil(trg)) {
 			int rslt = kit.Ask_yes_no_cancel(GRP_KEY, "target_exists", "Target file already exists: '~{0}'.\nDo you want to delete it?", trg.Raw());
 			switch (rslt) {
-				case Gfui_dlg_msg_.Btn_yes:		Io_mgr.I.DeleteFil(trg); break;
+				case Gfui_dlg_msg_.Btn_yes:		Io_mgr.Instance.DeleteFil(trg); break;
 				case Gfui_dlg_msg_.Btn_no:		return Gfo_thread_cmd_.Init_cancel_step;
 				case Gfui_dlg_msg_.Btn_cancel:	return Gfo_thread_cmd_.Init_cancel_all;
 				default:						throw Err_.new_unhandled(rslt);
diff --git a/400_xowa/src/gplx/xowa/bldrs/installs/Xoi_dump_mgr.java b/400_xowa/src/gplx/xowa/bldrs/installs/Xoi_dump_mgr.java
index 4db011a87..69607d25c 100644
--- a/400_xowa/src/gplx/xowa/bldrs/installs/Xoi_dump_mgr.java
+++ b/400_xowa/src/gplx/xowa/bldrs/installs/Xoi_dump_mgr.java
@@ -17,7 +17,7 @@ along with this program.  If not, see .
 */
 package gplx.xowa.bldrs.installs; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*;
 import gplx.ios.*;
-import gplx.xowa.wms.dumps.*;
+import gplx.xowa.bldrs.wms.dumps.*;
 public class Xoi_dump_mgr implements GfoInvkAble {
 	public String[] Server_urls() {return server_urls;} private String[] server_urls = String_.Ary(Xowm_dump_file_.Server_wmf_https, Xowm_dump_file_.Server_your_org, Xowm_dump_file_.Server_c3sl, Xowm_dump_file_.Server_masaryk);
 	public String[] Custom_cmds() {return custom_cmds;} private String[] custom_cmds = String_.Ary(Xoi_cmd_wiki_download.Key_wiki_download, Xoi_cmd_wiki_import.KEY);
@@ -52,16 +52,16 @@ public class Xoi_dump_mgr implements GfoInvkAble {
 		else if	(ctx.Match(k, Invk_wiki_storage_type))					return Wiki_storage_type_str(wiki_storage_type);
 		else if	(ctx.Match(k, Invk_wiki_storage_type_))					wiki_storage_type = Wiki_storage_type_parse(m.ReadStr("v"));
 		else if	(ctx.Match(k, Invk_wiki_storage_type_list))				return Options_storage_type_list;
-		else if	(ctx.Match(k, Invk_css_wiki_update))					return Yn.Xto_str(css_wiki_update);
+		else if	(ctx.Match(k, Invk_css_wiki_update))					return Yn.To_str(css_wiki_update);
 		else if	(ctx.Match(k, Invk_css_wiki_update_))					css_wiki_update = m.ReadYn("v");
-		else if	(ctx.Match(k, Invk_css_commons_download))				return Yn.Xto_str(css_commons_download);
+		else if	(ctx.Match(k, Invk_css_commons_download))				return Yn.To_str(css_commons_download);
 		else if	(ctx.Match(k, Invk_css_commons_download_))				css_commons_download = m.ReadYn("v");
-		else if	(ctx.Match(k, Invk_delete_xml_file))					return Yn.Xto_str(delete_xml_file);
+		else if	(ctx.Match(k, Invk_delete_xml_file))					return Yn.To_str(delete_xml_file);
 		else if	(ctx.Match(k, Invk_delete_xml_file_))					delete_xml_file = m.ReadYn("v");
 		else if	(ctx.Match(k, Invk_search_version))						return Options_search_version_str(search_version);
 		else if	(ctx.Match(k, Invk_search_version_))					search_version = Options_search_version_parse(m.ReadStr("v"));
 		else if	(ctx.Match(k, Invk_search_version_list))				return Options_search_version_list;
-		else if	(ctx.Match(k, Invk_import_bz2_by_stdout))				return Yn.Xto_str(import_bz2_by_stdout);
+		else if	(ctx.Match(k, Invk_import_bz2_by_stdout))				return Yn.To_str(import_bz2_by_stdout);
 		else if	(ctx.Match(k, Invk_import_bz2_by_stdout_))				import_bz2_by_stdout = m.ReadYn("v");
 		else	return GfoInvkAble_.Rv_unhandled;
 		return this;
diff --git a/400_xowa/src/gplx/xowa/bldrs/installs/Xoi_setup_mgr.java b/400_xowa/src/gplx/xowa/bldrs/installs/Xoi_setup_mgr.java
index 16449c6dc..9afd2a5d2 100644
--- a/400_xowa/src/gplx/xowa/bldrs/installs/Xoi_setup_mgr.java
+++ b/400_xowa/src/gplx/xowa/bldrs/installs/Xoi_setup_mgr.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.bldrs.installs; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*;
-import gplx.gfui.*; import gplx.xowa.setup.addons.*;
-import gplx.xowa.setup.maints.*;
+import gplx.gfui.*; import gplx.xowa.bldrs.setups.addons.*;
+import gplx.xowa.bldrs.setups.maints.*;
 public class Xoi_setup_mgr implements GfoInvkAble {
 	public Xoi_setup_mgr(Xoae_app app) {
 		this.app = app;
diff --git a/400_xowa/src/gplx/xowa/bldrs/installs/Xow_cfg_wiki_core.java b/400_xowa/src/gplx/xowa/bldrs/installs/Xow_cfg_wiki_core.java
index e33e76cc7..59a6bd9f1 100644
--- a/400_xowa/src/gplx/xowa/bldrs/installs/Xow_cfg_wiki_core.java
+++ b/400_xowa/src/gplx/xowa/bldrs/installs/Xow_cfg_wiki_core.java
@@ -16,16 +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.bldrs.installs; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*;
-import gplx.xowa.apps.gfss.*;
-import gplx.xowa.langs.*;
-import gplx.xowa.nss.*;
+import gplx.xowa.apps.gfs.*;
+import gplx.xowa.langs.*; import gplx.xowa.langs.parsers.*;
+import gplx.xowa.wikis.nss.*;
 import gplx.xowa.wikis.metas.*;
 public class Xow_cfg_wiki_core {
 	public Xow_cfg_wiki_core(Xowe_wiki wiki) {this.wiki = wiki;} private Xowe_wiki wiki;
 	public void Save() {
 	}
 	public byte[] Build_gfs() {
-		Gfs_bldr wtr = new Gfs_bldr();
+		Xoa_gfs_bldr wtr = new Xoa_gfs_bldr();
 		Xow_wiki_props props = wiki.Props();
 		wtr.Add_proc_init_many(Xowe_wiki.Invk_props).Add_nl();
 		wtr.Add_proc_cont_one(Xow_wiki_props.Invk_bldr_version_).Add_parens_str(props.Bldr_version()).Add_nl();
@@ -37,7 +37,7 @@ public class Xow_cfg_wiki_core {
 		wtr.Add_proc_cont_one(Xow_ns_mgr.Invk_clear).Add_nl();
 		wtr.Add_proc_cont_one(Xow_ns_mgr.Invk_load).Add_paren_bgn().Add_nl();
 		wtr.Add_quote_xtn_bgn();
-		Xol_csv_parser csv_parser = Xol_csv_parser._;
+		Xol_csv_parser csv_parser = Xol_csv_parser.Instance;
 		int nms_len = wiki.Ns_mgr().Count();
 		for (int i = 0; i < nms_len; i++) {
 			Xow_ns ns = wiki.Ns_mgr().Ords_get_at(i);
@@ -55,7 +55,7 @@ public class Xow_cfg_wiki_core {
 	public static void Load_ns_(Xow_ns_mgr ns_mgr, byte[] src) {// 10|1|Template
 		int len = src.length; int pos = 0, fld_bgn = 0, fld_idx = 0, row_bgn = 0;
 		int cur_id = Int_.Min_value; byte cur_case_match = Byte_.Max_value_127; byte[] cur_name = Bry_.Empty;
-		Xol_csv_parser csv_parser = Xol_csv_parser._;
+		Xol_csv_parser csv_parser = Xol_csv_parser.Instance;
 		while (true) {
 			boolean last = pos == len;
 			byte b = last ? Byte_ascii.Nl : src[pos];
diff --git a/400_xowa/src/gplx/xowa/bldrs/installs/Xow_cfg_wiki_core_tst.java b/400_xowa/src/gplx/xowa/bldrs/installs/Xow_cfg_wiki_core_tst.java
index b22ab49a9..f0045c6d5 100644
--- a/400_xowa/src/gplx/xowa/bldrs/installs/Xow_cfg_wiki_core_tst.java
+++ b/400_xowa/src/gplx/xowa/bldrs/installs/Xow_cfg_wiki_core_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.bldrs.installs; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*;
-import org.junit.*; import gplx.xowa.nss.*;
+import org.junit.*; import gplx.xowa.wikis.nss.*;
 public class Xow_cfg_wiki_core_tst {
 	Xow_cfg_wiki_core_fxt fxt = new Xow_cfg_wiki_core_fxt();
 	@Before public void init() {fxt.Clear();}
@@ -104,8 +104,8 @@ class Xow_cfg_wiki_core_fxt {
 		for (int i = 0; i < expd_len; i++) {
 			Xow_ns expd = expd_ary[i];
 			Xow_ns actl = wiki.Ns_mgr().Ids_get_or_null(expd.Id());
-			Tfds.Eq(expd.Case_match(), actl.Case_match(), Int_.Xto_str(expd.Id()));
-			Tfds.Eq(expd.Name_str(), actl.Name_str(), Int_.Xto_str(expd.Id()));
+			Tfds.Eq(expd.Case_match(), actl.Case_match(), Int_.To_str(expd.Id()));
+			Tfds.Eq(expd.Name_str(), actl.Name_str(), Int_.To_str(expd.Id()));
 		}
 	}
 }
diff --git a/400_xowa/src/gplx/xowa/bldrs/servers/Xob_core_server.java b/400_xowa/src/gplx/xowa/bldrs/servers/Xob_core_server.java
index 900accbe8..f35059025 100644
--- a/400_xowa/src/gplx/xowa/bldrs/servers/Xob_core_server.java
+++ b/400_xowa/src/gplx/xowa/bldrs/servers/Xob_core_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.bldrs.servers; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*;
-import gplx.xowa.setup.maints.*;
+import gplx.xowa.bldrs.setups.maints.*;
 import gplx.xowa.bldrs.servers.jobs.*;
 public class Xob_core_server {
 	private Xob_wmf_mgr wmf_mgr;
diff --git a/400_xowa/src/gplx/xowa/bldrs/servers/Xob_wmf_mgr.java b/400_xowa/src/gplx/xowa/bldrs/servers/Xob_wmf_mgr.java
index 39013c3e4..d2fc80bb8 100644
--- a/400_xowa/src/gplx/xowa/bldrs/servers/Xob_wmf_mgr.java
+++ b/400_xowa/src/gplx/xowa/bldrs/servers/Xob_wmf_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.bldrs.servers; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*;
-import gplx.xowa.setup.maints.*;
+import gplx.xowa.bldrs.setups.maints.*;
 public class Xob_wmf_mgr {
 	private Xoa_maint_mgr maint_mgr;
 	public Xob_wmf_mgr(Xoae_app app) {
diff --git a/400_xowa/src/gplx/xowa/bldrs/servers/jobs/Xob_job_mgr.java b/400_xowa/src/gplx/xowa/bldrs/servers/jobs/Xob_job_mgr.java
index e95398d65..1d3659736 100644
--- a/400_xowa/src/gplx/xowa/bldrs/servers/jobs/Xob_job_mgr.java
+++ b/400_xowa/src/gplx/xowa/bldrs/servers/jobs/Xob_job_mgr.java
@@ -17,7 +17,7 @@ along with this program.  If not, see .
 */
 package gplx.xowa.bldrs.servers.jobs; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*; import gplx.xowa.bldrs.servers.*;
 public class Xob_job_mgr {
-	private Ordered_hash jobs = Ordered_hash_.new_();
+	private Ordered_hash jobs = Ordered_hash_.New();
 	public int Count() {return jobs.Count();}
 	public Xob_job_itm Get_at(int i) {return (Xob_job_itm)jobs.Get_at(i);}
 	public Xob_job_itm Get(String k) {return (Xob_job_itm)jobs.Get_by(k);}
diff --git a/400_xowa/src/gplx/xowa/setup/addons/Xoi_addon_mgr.java b/400_xowa/src/gplx/xowa/bldrs/setups/addons/Xoi_addon_mgr.java
similarity index 89%
rename from 400_xowa/src/gplx/xowa/setup/addons/Xoi_addon_mgr.java
rename to 400_xowa/src/gplx/xowa/bldrs/setups/addons/Xoi_addon_mgr.java
index c22e79c6b..009c14f0a 100644
--- a/400_xowa/src/gplx/xowa/setup/addons/Xoi_addon_mgr.java
+++ b/400_xowa/src/gplx/xowa/bldrs/setups/addons/Xoi_addon_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.setup.addons; import gplx.*; import gplx.xowa.*; import gplx.xowa.setup.*;
+package gplx.xowa.bldrs.setups.addons; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*; import gplx.xowa.bldrs.setups.*;
 public class Xoi_addon_mgr implements GfoInvkAble {
 	public Xoi_firefox_installer Firefox() {return firefox;} private Xoi_firefox_installer firefox = new Xoi_firefox_installer();
 	public void Init_by_app(Xoae_app app) {
diff --git a/400_xowa/src/gplx/xowa/setup/addons/Xoi_firefox_installer.java b/400_xowa/src/gplx/xowa/bldrs/setups/addons/Xoi_firefox_installer.java
similarity index 85%
rename from 400_xowa/src/gplx/xowa/setup/addons/Xoi_firefox_installer.java
rename to 400_xowa/src/gplx/xowa/bldrs/setups/addons/Xoi_firefox_installer.java
index 2dfb1eb48..4377bd288 100644
--- a/400_xowa/src/gplx/xowa/setup/addons/Xoi_firefox_installer.java
+++ b/400_xowa/src/gplx/xowa/bldrs/setups/addons/Xoi_firefox_installer.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.setup.addons; import gplx.*; import gplx.xowa.*; import gplx.xowa.setup.*;
+package gplx.xowa.bldrs.setups.addons; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*; import gplx.xowa.bldrs.setups.*;
 import gplx.ios.*;
 import gplx.xowa.apps.fsys.*;
 public class Xoi_firefox_installer implements GfoInvkAble {
@@ -34,16 +34,16 @@ public class Xoi_firefox_installer implements GfoInvkAble {
 		program.Run(trg_xpi.Raw());
 	}
 	public void Generate() {
-		Io_mgr.I.CopyFil(src_xpi, trg_xpi, true);
-		Io_zip_mgr_base._.Unzip_to_dir(trg_xpi, trg_xpi_package);
+		Io_mgr.Instance.CopyFil(src_xpi, trg_xpi, true);
+		Io_zip_mgr_base.Instance.Unzip_to_dir(trg_xpi, trg_xpi_package);
 		Pref_gen();
-		Io_zip_mgr_base._.Zip_dir(trg_xpi_package, trg_xpi);
+		Io_zip_mgr_base.Instance.Zip_dir(trg_xpi_package, trg_xpi);
 	}
 	private void Pref_gen() {
 		Io_url prefs_fil = trg_xpi_package.GenSubFil_nest("defaults", "preferences", "prefs.js");
-		String prefs_str = Io_mgr.I.LoadFilStr(prefs_fil);
+		String prefs_str = Io_mgr.Instance.LoadFilStr(prefs_fil);
 		prefs_str = Pref_update(prefs_str, "extensions.xowa_viewer.xowa_app", Env_.AppUrl().Raw());
-		Io_mgr.I.SaveFilStr(prefs_fil, prefs_str);
+		Io_mgr.Instance.SaveFilStr(prefs_fil, prefs_str);
 	}
 	public static String Pref_update(String src, String key, String val) {		
 		String find = String_.Format("pref(\"{0}\"", key); // EX: 'pref("key"'
diff --git a/400_xowa/src/gplx/xowa/setup/addons/Xoi_firefox_installer_tst.java b/400_xowa/src/gplx/xowa/bldrs/setups/addons/Xoi_firefox_installer_tst.java
similarity index 90%
rename from 400_xowa/src/gplx/xowa/setup/addons/Xoi_firefox_installer_tst.java
rename to 400_xowa/src/gplx/xowa/bldrs/setups/addons/Xoi_firefox_installer_tst.java
index e504922af..fcc47957d 100644
--- a/400_xowa/src/gplx/xowa/setup/addons/Xoi_firefox_installer_tst.java
+++ b/400_xowa/src/gplx/xowa/bldrs/setups/addons/Xoi_firefox_installer_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.setup.addons; import gplx.*; import gplx.xowa.*; import gplx.xowa.setup.*;
+package gplx.xowa.bldrs.setups.addons; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*; import gplx.xowa.bldrs.setups.*;
 import org.junit.*;
 import gplx.ios.*;
 public class Xoi_firefox_installer_tst {
diff --git a/400_xowa/src/gplx/xowa/setup/maints/Wmf_dump_itm.java b/400_xowa/src/gplx/xowa/bldrs/setups/maints/Wmf_dump_itm.java
similarity index 93%
rename from 400_xowa/src/gplx/xowa/setup/maints/Wmf_dump_itm.java
rename to 400_xowa/src/gplx/xowa/bldrs/setups/maints/Wmf_dump_itm.java
index c2d890709..2d9bde967 100644
--- a/400_xowa/src/gplx/xowa/setup/maints/Wmf_dump_itm.java
+++ b/400_xowa/src/gplx/xowa/bldrs/setups/maints/Wmf_dump_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.setup.maints; import gplx.*; import gplx.xowa.*; import gplx.xowa.setup.*;
+package gplx.xowa.bldrs.setups.maints; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*; import gplx.xowa.bldrs.setups.*;
 public class Wmf_dump_itm implements gplx.CompareAble {
 	public byte[] Wiki_abrv() {return wiki_abrv;} public void Wiki_abrv_(byte[] v) {this.wiki_abrv = v;} private byte[] wiki_abrv;				// EX: enwiki
 	public DateAdp Dump_date() {return dump_date;} public void Dump_date_(DateAdp v) {this.dump_date = v;} private DateAdp dump_date;			// EX: 20140304
diff --git a/400_xowa/src/gplx/xowa/setup/maints/Wmf_dump_list_parser.java b/400_xowa/src/gplx/xowa/bldrs/setups/maints/Wmf_dump_list_parser.java
similarity index 94%
rename from 400_xowa/src/gplx/xowa/setup/maints/Wmf_dump_list_parser.java
rename to 400_xowa/src/gplx/xowa/bldrs/setups/maints/Wmf_dump_list_parser.java
index ee46a7d33..1088fa94f 100644
--- a/400_xowa/src/gplx/xowa/setup/maints/Wmf_dump_list_parser.java
+++ b/400_xowa/src/gplx/xowa/bldrs/setups/maints/Wmf_dump_list_parser.java
@@ -15,10 +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.setup.maints; import gplx.*; import gplx.xowa.*; import gplx.xowa.setup.*;
+package gplx.xowa.bldrs.setups.maints; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*; import gplx.xowa.bldrs.setups.*;
 public class Wmf_dump_list_parser {
 	public Wmf_dump_itm[] Parse(byte[] src) {
-		Ordered_hash itms = Ordered_hash_.new_bry_();
+		Ordered_hash itms = Ordered_hash_.New_bry();
 		int pos = 0;
 		while (true) {
 			int a_pos = Bry_find_.Find_fwd(src, Find_anchor, pos); if (a_pos == Bry_.NotFound) break;	// no more anchors found
diff --git a/400_xowa/src/gplx/xowa/setup/maints/Wmf_dump_list_parser_tst.java b/400_xowa/src/gplx/xowa/bldrs/setups/maints/Wmf_dump_list_parser_tst.java
similarity index 88%
rename from 400_xowa/src/gplx/xowa/setup/maints/Wmf_dump_list_parser_tst.java
rename to 400_xowa/src/gplx/xowa/bldrs/setups/maints/Wmf_dump_list_parser_tst.java
index 3b3f8eb1a..f40b1260c 100644
--- a/400_xowa/src/gplx/xowa/setup/maints/Wmf_dump_list_parser_tst.java
+++ b/400_xowa/src/gplx/xowa/bldrs/setups/maints/Wmf_dump_list_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.setup.maints; import gplx.*; import gplx.xowa.*; import gplx.xowa.setup.*;
+package gplx.xowa.bldrs.setups.maints; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*; import gplx.xowa.bldrs.setups.*;
 import org.junit.*;
 import gplx.xowa.wikis.*; import gplx.xowa.wikis.domains.*;
 public class Wmf_dump_list_parser_tst {
@@ -49,7 +49,7 @@ public class Wmf_dump_list_parser_tst {
 //			, "usability.wikipedia.org", "vote.wikipedia.org"
 //			, "bd.wikimedia.org", "dk.wikimedia.org", "mx.wikimedia.org", "nyc.wikimedia.org", "nz.wikimedia.org", "pa-us.wikimedia.org", "rs.wikimedia.org", "ua.wikimedia.org"
 //			);
-//			Wmf_dump_itm[] itms = new Wmf_dump_list_parser().Parse(Io_mgr.I.LoadFilBry("C:\\xowa\\bin\\any\\xowa\\xtns\\xowa\\maintenance\\backup-index.html"));
+//			Wmf_dump_itm[] itms = new Wmf_dump_list_parser().Parse(Io_mgr.Instance.LoadFilBry("C:\\xowa\\bin\\any\\xowa\\xtns\\xowa\\maintenance\\backup-index.html"));
 //			Array_.Sort(itms);
 //			Bry_bfr sql_bfr = Bry_bfr.new_();
 //			Bry_bfr bld_bfr = Bry_bfr.new_();
@@ -64,7 +64,7 @@ public class Wmf_dump_list_parser_tst {
 //				if (Bry_find_.Find_fwd(domain_bry, Bry_.new_a7("wikimania")) != Bry_.NotFound) continue;
 //				if (excluded_domains.Has(domain_bry)) continue;
 //				Xow_domain_itm domain_itm = Xow_domain_itm_.parse(domain_bry);
-//				byte[] tid_name = Xto_display_name(Xow_domain_type_.Get_type_as_bry(domain_itm.Domain_type_id()));
+//				byte[] tid_name = Xto_display_name(Xow_domain_tid_.Get_type_as_bry(domain_itm.Domain_type_id()));
 //				sql_bfr
 //					.Add_byte(Byte_ascii.Paren_bgn)
 //					.Add_int_variable(counter++)
@@ -93,13 +93,13 @@ public class Wmf_dump_list_parser_tst {
 //					;
 //			}
 //			Io_url temp = Io_url_.new_fil_("C:\\import_update.txt");
-//			Io_mgr.I.SaveFilBfr(temp, sql_bfr);
-////			Io_mgr.I.AppendFilBfr(temp, bld_bfr);
+//			Io_mgr.Instance.SaveFilBfr(temp, sql_bfr);
+////			Io_mgr.Instance.AppendFilBfr(temp, bld_bfr);
 //		}
 //		private static byte[] Xto_display_name(byte[] v) {
-//			if		(Bry_.Eq(v, Xow_domain_type_.Bry__wmforg))				return Bry_.new_a7("Wikimedia Foundation");
-//			else if	(Bry_.Eq(v, Xow_domain_type_.Bry__species))				return Bry_.new_a7("Wikispecies");
-//			else if	(Bry_.Eq(v, Xow_domain_type_.Bry__mediawiki))			return Bry_.new_a7("MediaWiki");
+//			if		(Bry_.Eq(v, Xow_domain_tid_.Bry__wmforg))				return Bry_.new_a7("Wikimedia Foundation");
+//			else if	(Bry_.Eq(v, Xow_domain_tid_.Bry__species))				return Bry_.new_a7("Wikispecies");
+//			else if	(Bry_.Eq(v, Xow_domain_tid_.Bry__mediawiki))			return Bry_.new_a7("MediaWiki");
 //			else															return Bry_.Add(Byte_ascii.Case_upper(v[0]), Bry_.Mid(v, 1, v.length));
 //		}
 }
diff --git a/400_xowa/src/gplx/xowa/setup/maints/Wmf_latest_itm.java b/400_xowa/src/gplx/xowa/bldrs/setups/maints/Wmf_latest_itm.java
similarity index 88%
rename from 400_xowa/src/gplx/xowa/setup/maints/Wmf_latest_itm.java
rename to 400_xowa/src/gplx/xowa/bldrs/setups/maints/Wmf_latest_itm.java
index 4393ae9ca..ca57f0f85 100644
--- a/400_xowa/src/gplx/xowa/setup/maints/Wmf_latest_itm.java
+++ b/400_xowa/src/gplx/xowa/bldrs/setups/maints/Wmf_latest_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.setup.maints; import gplx.*; import gplx.xowa.*; import gplx.xowa.setup.*;
+package gplx.xowa.bldrs.setups.maints; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*; import gplx.xowa.bldrs.setups.*;
 public class Wmf_latest_itm {
 	public Wmf_latest_itm(byte[] name, DateAdp date, long size) {
 		this.name = name; this.date = date; this.size = size;
diff --git a/400_xowa/src/gplx/xowa/setup/maints/Wmf_latest_parser.java b/400_xowa/src/gplx/xowa/bldrs/setups/maints/Wmf_latest_parser.java
similarity index 88%
rename from 400_xowa/src/gplx/xowa/setup/maints/Wmf_latest_parser.java
rename to 400_xowa/src/gplx/xowa/bldrs/setups/maints/Wmf_latest_parser.java
index 05ceb3cdd..f88266c58 100644
--- a/400_xowa/src/gplx/xowa/setup/maints/Wmf_latest_parser.java
+++ b/400_xowa/src/gplx/xowa/bldrs/setups/maints/Wmf_latest_parser.java
@@ -15,10 +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.setup.maints; import gplx.*; import gplx.xowa.*; import gplx.xowa.setup.*;
+package gplx.xowa.bldrs.setups.maints; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*; import gplx.xowa.bldrs.setups.*;
 import gplx.core.btries.*; import gplx.ios.*;
 public class Wmf_latest_parser {
-	private Ordered_hash hash = Ordered_hash_.new_bry_();
+	private Ordered_hash hash = Ordered_hash_.New_bry();
 	public int Count() {return hash.Count();}
 	public Wmf_latest_itm Get_at(int i)		{return (Wmf_latest_itm)hash.Get_at(i);}
 	public Wmf_latest_itm Get_by(byte[] k)	{return (Wmf_latest_itm)hash.Get_by(k);}
@@ -43,12 +43,12 @@ public class Wmf_latest_parser {
 			int name_bgn = Bry_find_.Move_fwd(src, name_bgn_bry, size_end, src_len); if (name_bgn == Bry_find_.Not_found) break;
 			int name_end = Bry_find_.Find_fwd(src, Byte_ascii.Quote, name_bgn, src_len);
 			byte[] name = Bry_.Mid(src, name_bgn, name_end);
-			int date_bgn = Bry_find_.Move_fwd(src, date_bgn_bry, name_end, src_len); if (date_bgn == Bry_find_.Not_found) {Gfo_usr_dlg_.I.Warn_many("", "", "date_bgn not found"); break;}
-			date_bgn = Bry_find_.Find_fwd_while_space_or_tab(src, date_bgn, src_len); if (date_bgn == Bry_find_.Not_found) {Gfo_usr_dlg_.I.Warn_many("", "", "date_bgn not found"); break;}
+			int date_bgn = Bry_find_.Move_fwd(src, date_bgn_bry, name_end, src_len); if (date_bgn == Bry_find_.Not_found) {Gfo_usr_dlg_.Instance.Warn_many("", "", "date_bgn not found"); break;}
+			date_bgn = Bry_find_.Find_fwd_while_space_or_tab(src, date_bgn, src_len); if (date_bgn == Bry_find_.Not_found) {Gfo_usr_dlg_.Instance.Warn_many("", "", "date_bgn not found"); break;}
 			int date_end = Bry_find_.Find_fwd(src, date_end_bry, date_bgn, src_len);
 			byte[] date_bry = Bry_.Mid(src, date_bgn, date_end);
 			DateAdp date = DateAdp_.parse_fmt(String_.new_a7(Replace_or(tmp_bfr, date_trie, date_bry, 3, date_or)), "dd-MM-yyyy HH:mm");
-			int size_bgn = Bry_find_.Find_fwd_while_space_or_tab(src, date_end, src_len); if (size_bgn == Bry_find_.Not_found) {Gfo_usr_dlg_.I.Warn_many("", "", "size_bgn not found"); break;}
+			int size_bgn = Bry_find_.Find_fwd_while_space_or_tab(src, date_end, src_len); if (size_bgn == Bry_find_.Not_found) {Gfo_usr_dlg_.Instance.Warn_many("", "", "size_bgn not found"); break;}
 			size_end = Bry_find_.Find_fwd(src, Byte_ascii.Cr, size_bgn, src_len);
 			byte[] size_bry = Bry_.Mid(src, size_bgn, size_end);
 			long size = Long_.parse_or(String_.new_u8(size_bry), -1);
@@ -62,6 +62,6 @@ public class Wmf_latest_parser {
 		tmp_bfr.Add_mid(src, 0, pos);
 		tmp_bfr.Add((byte[])o);
 		tmp_bfr.Add_mid(src, trie.Match_pos(), src_len);
-		return tmp_bfr.Xto_bry_and_clear();
+		return tmp_bfr.To_bry_and_clear();
 	}
 }
diff --git a/400_xowa/src/gplx/xowa/setup/maints/Wmf_latest_parser_tst.java b/400_xowa/src/gplx/xowa/bldrs/setups/maints/Wmf_latest_parser_tst.java
similarity index 90%
rename from 400_xowa/src/gplx/xowa/setup/maints/Wmf_latest_parser_tst.java
rename to 400_xowa/src/gplx/xowa/bldrs/setups/maints/Wmf_latest_parser_tst.java
index aa909b145..2acaf4b8e 100644
--- a/400_xowa/src/gplx/xowa/setup/maints/Wmf_latest_parser_tst.java
+++ b/400_xowa/src/gplx/xowa/bldrs/setups/maints/Wmf_latest_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.setup.maints; import gplx.*; import gplx.xowa.*; import gplx.xowa.setup.*;
+package gplx.xowa.bldrs.setups.maints; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*; import gplx.xowa.bldrs.setups.*;
 import org.junit.*; import gplx.ios.*;
 public class Wmf_latest_parser_tst {
 	@Before public void init() {fxt.Clear();} private Wmf_latest_parser_fxt fxt = new Wmf_latest_parser_fxt();
@@ -27,7 +27,7 @@ public class Wmf_latest_parser_tst {
 	}
 //		@Test   public void Smoke() {
 //			Wmf_latest_parser parser = new Wmf_latest_parser();
-//			parser.Parse(Io_mgr.I.LoadFilBry("C:\\wmf_latest.html"));
+//			parser.Parse(Io_mgr.Instance.LoadFilBry("C:\\wmf_latest.html"));
 //			Tfds.Write(String_.Concat_lines_nl(Wmf_latest_parser_fxt.Xto_str_ary(parser.To_ary())));
 //		}
 }
diff --git a/400_xowa/src/gplx/xowa/setup/maints/Xoa_maint_mgr.java b/400_xowa/src/gplx/xowa/bldrs/setups/maints/Xoa_maint_mgr.java
similarity index 92%
rename from 400_xowa/src/gplx/xowa/setup/maints/Xoa_maint_mgr.java
rename to 400_xowa/src/gplx/xowa/bldrs/setups/maints/Xoa_maint_mgr.java
index 70a26de99..af6159c87 100644
--- a/400_xowa/src/gplx/xowa/setup/maints/Xoa_maint_mgr.java
+++ b/400_xowa/src/gplx/xowa/bldrs/setups/maints/Xoa_maint_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.setup.maints; import gplx.*; import gplx.xowa.*; import gplx.xowa.setup.*;
+package gplx.xowa.bldrs.setups.maints; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*; import gplx.xowa.bldrs.setups.*;
 import gplx.ios.*;
 import gplx.xowa.wikis.domains.*;
 import gplx.xowa.files.downloads.*;
@@ -52,7 +52,7 @@ public class Xoa_maint_mgr implements GfoInvkAble {
 	public boolean Wmf_status_parse() {
 		Wmf_dump_list_parser parser = new Wmf_dump_list_parser();
 		Hash_adp_bry itms_hash = Hash_adp_bry.cs();		
-		Wmf_dump_itm[] itms = parser.Parse(Io_mgr.I.LoadFilBry(wmf_dump_status_url));
+		Wmf_dump_itm[] itms = parser.Parse(Io_mgr.Instance.LoadFilBry(wmf_dump_status_url));
 		int len = itms.length;
 		Xoa_app_.Usr_dlg().Log_many("", "", "maint.html count; count=~{0}", len);
 		for (int i = 0; i < len; i++) {
diff --git a/400_xowa/src/gplx/xowa/setup/maints/Xoa_maint_wikis_mgr.java b/400_xowa/src/gplx/xowa/bldrs/setups/maints/Xoa_maint_wikis_mgr.java
similarity index 89%
rename from 400_xowa/src/gplx/xowa/setup/maints/Xoa_maint_wikis_mgr.java
rename to 400_xowa/src/gplx/xowa/bldrs/setups/maints/Xoa_maint_wikis_mgr.java
index 427f92aba..c7dea00ab 100644
--- a/400_xowa/src/gplx/xowa/setup/maints/Xoa_maint_wikis_mgr.java
+++ b/400_xowa/src/gplx/xowa/bldrs/setups/maints/Xoa_maint_wikis_mgr.java
@@ -15,10 +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.setup.maints; import gplx.*; import gplx.xowa.*; import gplx.xowa.setup.*;
+package gplx.xowa.bldrs.setups.maints; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*; import gplx.xowa.bldrs.setups.*;
 public class Xoa_maint_wikis_mgr implements GfoInvkAble {
 	public Xoa_maint_wikis_mgr(Xoae_app app) {this.app = app;} private Xoae_app app;
-	private Ordered_hash hash = Ordered_hash_.new_bry_();
+	private Ordered_hash hash = Ordered_hash_.New_bry();
 	public int Len() {return hash.Count();}
 	public Xowe_wiki Get_at(int i) {
 		if (init) Init();
diff --git a/400_xowa/src/gplx/xowa/setup/maints/Xow_maint_mgr.java b/400_xowa/src/gplx/xowa/bldrs/setups/maints/Xow_maint_mgr.java
similarity index 90%
rename from 400_xowa/src/gplx/xowa/setup/maints/Xow_maint_mgr.java
rename to 400_xowa/src/gplx/xowa/bldrs/setups/maints/Xow_maint_mgr.java
index 3106919ae..350501bf4 100644
--- a/400_xowa/src/gplx/xowa/setup/maints/Xow_maint_mgr.java
+++ b/400_xowa/src/gplx/xowa/bldrs/setups/maints/Xow_maint_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.setup.maints; import gplx.*; import gplx.xowa.*; import gplx.xowa.setup.*;
+package gplx.xowa.bldrs.setups.maints; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*; import gplx.xowa.bldrs.setups.*;
 public class Xow_maint_mgr implements GfoInvkAble {
 	public Xow_maint_mgr(Xowe_wiki wiki) {
 		this.wiki = wiki;
@@ -39,13 +39,13 @@ public class Xow_maint_mgr implements GfoInvkAble {
 	public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) {
 		if		(ctx.Match(k, Invk_wmf_dump_date)) 			return DateAdp_.Xto_str_fmt_or(Wmf_dump_date(), "yyyy-MM-dd", "");
 		else if	(ctx.Match(k, Invk_wmf_dump_date_)) 		Wmf_dump_date_(m.ReadDate("v"));
-		else if	(ctx.Match(k, Invk_wmf_dump_done)) 			return Yn.Xto_str(wmf_dump_done);
+		else if	(ctx.Match(k, Invk_wmf_dump_done)) 			return Yn.To_str(wmf_dump_done);
 		else if	(ctx.Match(k, Invk_wmf_dump_done_)) 		wmf_dump_done = m.ReadYn("v");
 		else if	(ctx.Match(k, Invk_wmf_dump_status)) 		return String_.new_u8(wmf_dump_status);
 		else if	(ctx.Match(k, Invk_wmf_dump_status_)) 		wmf_dump_status = m.ReadBry("v");
 		else if	(ctx.Match(k, Invk_wiki_dump_date)) 		return DateAdp_.Xto_str_fmt_or(Wiki_dump_date(), "yyyy-MM-dd", "");
 		else if	(ctx.Match(k, Invk_wiki_dump_date_)) 		wiki_dump_date = m.ReadDate("v");
-		else if	(ctx.Match(k, Invk_wiki_update_needed)) 	return Yn.Xto_str(Wiki_update_needed());
+		else if	(ctx.Match(k, Invk_wiki_update_needed)) 	return Yn.To_str(Wiki_update_needed());
 		else if	(ctx.Match(k, Invk_wiki_dump_date_)) 		wiki_dump_date = m.ReadDate("v");
 		else	return GfoInvkAble_.Rv_unhandled;
 		return this;
diff --git a/400_xowa/src/gplx/xowa/utls/upgrades/Upgrader_v00_02_01.java b/400_xowa/src/gplx/xowa/bldrs/setups/upgrades/Upgrader_v00_02_01.java
similarity index 72%
rename from 400_xowa/src/gplx/xowa/utls/upgrades/Upgrader_v00_02_01.java
rename to 400_xowa/src/gplx/xowa/bldrs/setups/upgrades/Upgrader_v00_02_01.java
index 42bb9d56d..b622363ff 100644
--- a/400_xowa/src/gplx/xowa/utls/upgrades/Upgrader_v00_02_01.java
+++ b/400_xowa/src/gplx/xowa/bldrs/setups/upgrades/Upgrader_v00_02_01.java
@@ -15,39 +15,39 @@ 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.utls.upgrades; import gplx.*; import gplx.xowa.*; import gplx.xowa.utls.*;
+package gplx.xowa.bldrs.setups.upgrades; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*; import gplx.xowa.bldrs.setups.*;
 import gplx.xowa.bldrs.*;
 class Upgrader_v00_02_01 {
 	public void Run(Xowe_wiki wiki) {
 		Io_url cfg_dir = wiki.Fsys_mgr().Root_dir().GenSubDir("cfg");
-		if (!Io_mgr.I.ExistsDir(cfg_dir)) return;	// brand-new wiki; nothing to migrate
+		if (!Io_mgr.Instance.ExistsDir(cfg_dir)) return;	// brand-new wiki; nothing to migrate
 		Gfo_usr_dlg usr_dlg = wiki.Appe().Usr_dlg();
 		usr_dlg.Note_many(GRP_KEY, "run.bgn", "migrate.bgn for ~{0}", wiki.Domain_str());
 		Io_url siteinfo_url = cfg_dir.GenSubFil_nest("siteInfo.xml");
 		usr_dlg.Note_many(GRP_KEY, "siteinfo.bgn", "siteinfo.bgn for ~{0}", siteinfo_url.Raw());
-		String siteinfo_str = Io_mgr.I.LoadFilStr_args(siteinfo_url).MissingIgnored_(true).Exec(); if (String_.Len_eq_0(siteinfo_str)) throw Err_.new_wo_type("could not find siteinfo.xml", "url", siteinfo_url.Raw());
+		String siteinfo_str = Io_mgr.Instance.LoadFilStr_args(siteinfo_url).MissingIgnored_(true).Exec(); if (String_.Len_eq_0(siteinfo_str)) throw Err_.new_wo_type("could not find siteinfo.xml", "url", siteinfo_url.Raw());
 		usr_dlg.Note_many(GRP_KEY, "siteinfo.parse", "parsing siteinfo");
 		gplx.xowa.bldrs.xmls.Xob_siteinfo_parser.Siteinfo_parse(wiki, usr_dlg, siteinfo_str);	// NOTE: this also resets the namespaces on the wiki; not necessary, but is benign
 		usr_dlg.Note_many(GRP_KEY, "siteinfo.save", "saving siteinfo");
 		byte[] wiki_core_bry = wiki.Cfg_wiki_core().Build_gfs();
-		Io_mgr.I.SaveFilBry(wiki.Tdb_fsys_mgr().Cfg_wiki_core_fil(), wiki_core_bry);
+		Io_mgr.Instance.SaveFilBry(wiki.Tdb_fsys_mgr().Cfg_wiki_core_fil(), wiki_core_bry);
 		usr_dlg.Note_many(GRP_KEY, "siteinfo.end", "siteinfo.end for ~{0}", wiki.Domain_str());
 
 		Io_url old_wikistats_url = wiki.Fsys_mgr().Root_dir().GenSubFil_nest("cfg", "wiki.gfs");
 		Io_url new_wikistats_url = wiki.Tdb_fsys_mgr().Cfg_wiki_stats_fil();
-		if		(Io_mgr.I.ExistsFil(new_wikistats_url))		// noop; should not happen, but perhaps results from merging directories; 
+		if		(Io_mgr.Instance.ExistsFil(new_wikistats_url))		// noop; should not happen, but perhaps results from merging directories; 
 			usr_dlg.Note_many(GRP_KEY, "wiki_stats.new_exists", "new wiki stats already exists for ~{0}", new_wikistats_url.Raw());
-		else if (!Io_mgr.I.ExistsFil(old_wikistats_url))	// noop; should not happen;
+		else if (!Io_mgr.Instance.ExistsFil(old_wikistats_url))	// noop; should not happen;
 			usr_dlg.Note_many(GRP_KEY, "wiki_stats.old_missing", "old wiki stats missing ~{0}", old_wikistats_url.Raw());
 		else {												// rename "wiki.gfs" to "wiki_stats.gfs"
 			usr_dlg.Note_many(GRP_KEY, "wiki_stats.rename.bgn", "copying: src=~{0} trg=~{1}", old_wikistats_url.Raw(), new_wikistats_url.Raw());
-			Io_mgr.I.CopyFil(old_wikistats_url, new_wikistats_url, false);
+			Io_mgr.Instance.CopyFil(old_wikistats_url, new_wikistats_url, false);
 		}
-		byte[] old_wikistats_bry = Io_mgr.I.LoadFilBry(new_wikistats_url);
+		byte[] old_wikistats_bry = Io_mgr.Instance.LoadFilBry(new_wikistats_url);
 		byte[] new_wikistats_bry = Bry_.Replace_between(old_wikistats_bry, Bry_.new_a7("props.main_page_('"), Bry_.new_a7("');\n"), Bry_.Empty);
 		if (!Bry_.Eq(old_wikistats_bry, new_wikistats_bry)) {
 			usr_dlg.Note_many(GRP_KEY, "wiki_stats.remove_mainpage", "removing mainpages");
-			Io_mgr.I.SaveFilBry(new_wikistats_url, new_wikistats_bry);
+			Io_mgr.Instance.SaveFilBry(new_wikistats_url, new_wikistats_bry);
 		}
 		usr_dlg.Note_many(GRP_KEY, "run.end", "migrate.end for ~{0}", wiki.Domain_str());
 		usr_dlg.Note_many("", "", "");
diff --git a/400_xowa/src/gplx/xowa/utls/upgrades/Upgrader_v00_02_01_tst.java b/400_xowa/src/gplx/xowa/bldrs/setups/upgrades/Upgrader_v00_02_01_tst.java
similarity index 86%
rename from 400_xowa/src/gplx/xowa/utls/upgrades/Upgrader_v00_02_01_tst.java
rename to 400_xowa/src/gplx/xowa/bldrs/setups/upgrades/Upgrader_v00_02_01_tst.java
index af091b8a7..d027b0d88 100644
--- a/400_xowa/src/gplx/xowa/utls/upgrades/Upgrader_v00_02_01_tst.java
+++ b/400_xowa/src/gplx/xowa/bldrs/setups/upgrades/Upgrader_v00_02_01_tst.java
@@ -15,19 +15,19 @@ 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.utls.upgrades; import gplx.*; import gplx.xowa.*; import gplx.xowa.utls.*;
+package gplx.xowa.bldrs.setups.upgrades; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*; import gplx.xowa.bldrs.setups.*;
 import org.junit.*; import gplx.xowa.bldrs.installs.*;
 public class Upgrader_v00_02_01_tst {
 	@Test  public void Run() {
 		Xoae_app app = Xoa_app_fxt.app_();
 		Xowe_wiki wiki = Xoa_app_fxt.wiki_tst_(app);
 		Io_url cfg_dir = wiki.Fsys_mgr().Root_dir().GenSubDir("cfg");
-		Io_mgr.I.SaveFilStr(cfg_dir.GenSubFil("siteInfo.xml"), Str_siteinfo_xml);
-		Io_mgr.I.SaveFilStr(cfg_dir.GenSubFil("wiki.gfs"), Str_wikistats_gfs);
+		Io_mgr.Instance.SaveFilStr(cfg_dir.GenSubFil("siteInfo.xml"), Str_siteinfo_xml);
+		Io_mgr.Instance.SaveFilStr(cfg_dir.GenSubFil("wiki.gfs"), Str_wikistats_gfs);
 		Upgrader_v00_02_01 mgr = new Upgrader_v00_02_01();
 		mgr.Run(wiki);
-		Tfds.Eq_str_lines(Xow_cfg_wiki_core_tst.Const_wiki_core_cfg, Io_mgr.I.LoadFilStr(wiki.Tdb_fsys_mgr().Cfg_wiki_core_fil()));
-		Tfds.Eq_str_lines("/* assume content ... */", Io_mgr.I.LoadFilStr(wiki.Tdb_fsys_mgr().Cfg_wiki_stats_fil()));
+		Tfds.Eq_str_lines(Xow_cfg_wiki_core_tst.Const_wiki_core_cfg, Io_mgr.Instance.LoadFilStr(wiki.Tdb_fsys_mgr().Cfg_wiki_core_fil()));
+		Tfds.Eq_str_lines("/* assume content ... */", Io_mgr.Instance.LoadFilStr(wiki.Tdb_fsys_mgr().Cfg_wiki_stats_fil()));
 	}
 	public static String Str_siteinfo_xml = String_.Concat_lines_nl
 	(	""
diff --git a/400_xowa/src/gplx/xowa/utls/upgrades/Xoa_upgrade_mgr.java b/400_xowa/src/gplx/xowa/bldrs/setups/upgrades/Xoa_upgrade_mgr.java
similarity index 75%
rename from 400_xowa/src/gplx/xowa/utls/upgrades/Xoa_upgrade_mgr.java
rename to 400_xowa/src/gplx/xowa/bldrs/setups/upgrades/Xoa_upgrade_mgr.java
index 358985035..7739013f6 100644
--- a/400_xowa/src/gplx/xowa/utls/upgrades/Xoa_upgrade_mgr.java
+++ b/400_xowa/src/gplx/xowa/bldrs/setups/upgrades/Xoa_upgrade_mgr.java
@@ -15,14 +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.utls.upgrades; import gplx.*; import gplx.xowa.*; import gplx.xowa.utls.*;
+package gplx.xowa.bldrs.setups.upgrades; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*; import gplx.xowa.bldrs.setups.*;
 import gplx.xowa.wikis.domains.*;
 public class Xoa_upgrade_mgr {
 	public static void Check(Xoae_app app) {
 		Upgrade_history(app);
 	}
 	public static void Check(Xowe_wiki wiki) {
-		if (wiki.Domain_tid() == Xow_domain_type_.Int__home) return;	// home wiki never needs to be migrated
+		if (wiki.Domain_tid() == Xow_domain_tid_.Int__home) return;	// home wiki never needs to be migrated
 		try {
 			if (Bry_.Eq(wiki.Props().Bldr_version(), Bry_.Empty)) {	// version is ""; wiki must be created prior to v0.2.1; create wiki_core.gfs
 				Upgrader_v00_02_01 mgr = new Upgrader_v00_02_01();
@@ -33,13 +33,13 @@ public class Xoa_upgrade_mgr {
 	private static void Upgrade_history(Xoae_app app) {
 		Io_url old_history_dir = app.Usere().Fsys_mgr().App_data_dir();
 		Io_url new_history_dir = app.Usere().Fsys_mgr().App_data_dir().GenSubDir("history");
-		if (Io_mgr.I.ExistsDir(new_history_dir)) return;	// new_history_dir exists;
+		if (Io_mgr.Instance.ExistsDir(new_history_dir)) return;	// new_history_dir exists;
 		app.Usr_dlg().Log_many("", "", "moving history files");
-		Io_url[] old_history_fils = Io_mgr.I.QueryDir_args(old_history_dir).Recur_(false).ExecAsUrlAry();
+		Io_url[] old_history_fils = Io_mgr.Instance.QueryDir_args(old_history_dir).Recur_(false).ExecAsUrlAry();
 		int len = old_history_fils.length;
 		for (int i = 0; i < len; i++) {
 			Io_url old_history_fil = old_history_fils[i];
-			Io_mgr.I.CopyFil(old_history_fil, new_history_dir.GenSubFil(old_history_fil.NameAndExt()), false);
+			Io_mgr.Instance.CopyFil(old_history_fil, new_history_dir.GenSubFil(old_history_fil.NameAndExt()), false);
 		}
 		app.Usr_dlg().Log_many("", "", "moved history files: ~{0}", len);
 	}
diff --git a/400_xowa/src/gplx/xowa/utls/upgrades/Xoa_upgrade_mgr_tst.java b/400_xowa/src/gplx/xowa/bldrs/setups/upgrades/Xoa_upgrade_mgr_tst.java
similarity index 60%
rename from 400_xowa/src/gplx/xowa/utls/upgrades/Xoa_upgrade_mgr_tst.java
rename to 400_xowa/src/gplx/xowa/bldrs/setups/upgrades/Xoa_upgrade_mgr_tst.java
index c973d37cd..651fc0a1b 100644
--- a/400_xowa/src/gplx/xowa/utls/upgrades/Xoa_upgrade_mgr_tst.java
+++ b/400_xowa/src/gplx/xowa/bldrs/setups/upgrades/Xoa_upgrade_mgr_tst.java
@@ -15,19 +15,19 @@ 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.utls.upgrades; import gplx.*; import gplx.xowa.*; import gplx.xowa.utls.*;
+package gplx.xowa.bldrs.setups.upgrades; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*; import gplx.xowa.bldrs.setups.*;
 import org.junit.*;
 public class Xoa_upgrade_mgr_tst {
 	@Test  public void Run() {
 		Xoae_app app = Xoa_app_fxt.app_();
 		Io_url old_history_dir = app.Usere().Fsys_mgr().App_data_dir();
 		Io_url new_history_dir = app.Usere().Fsys_mgr().App_data_dir().GenSubDir("history");
-		Io_mgr.I.SaveFilStr(old_history_dir.GenSubFil("page_history.csv"), "test");
+		Io_mgr.Instance.SaveFilStr(old_history_dir.GenSubFil("page_history.csv"), "test");
 		Xoa_upgrade_mgr.Check(app);
-		Tfds.Eq("test", Io_mgr.I.LoadFilStr(old_history_dir.GenSubFil("page_history.csv")));	// old file still exists
-		Tfds.Eq("test", Io_mgr.I.LoadFilStr(new_history_dir.GenSubFil("page_history.csv")));	// new file exists
-		Io_mgr.I.SaveFilStr(new_history_dir.GenSubFil("page_history.csv"), "test1");			// dirty file
+		Tfds.Eq("test", Io_mgr.Instance.LoadFilStr(old_history_dir.GenSubFil("page_history.csv")));	// old file still exists
+		Tfds.Eq("test", Io_mgr.Instance.LoadFilStr(new_history_dir.GenSubFil("page_history.csv")));	// new file exists
+		Io_mgr.Instance.SaveFilStr(new_history_dir.GenSubFil("page_history.csv"), "test1");			// dirty file
 		Xoa_upgrade_mgr.Check(app);																// rerun
-		Tfds.Eq("test1", Io_mgr.I.LoadFilStr(new_history_dir.GenSubFil("page_history.csv")));	// dirty file remains (not replaced by old file)
+		Tfds.Eq("test1", Io_mgr.Instance.LoadFilStr(new_history_dir.GenSubFil("page_history.csv")));	// dirty file remains (not replaced by old file)
 	}
 }
diff --git a/400_xowa/src/gplx/xowa/bldrs/sqls/Sql_file_parser.java b/400_xowa/src/gplx/xowa/bldrs/sqls/Sql_file_parser.java
index 201d194b0..e206620c1 100644
--- a/400_xowa/src/gplx/xowa/bldrs/sqls/Sql_file_parser.java
+++ b/400_xowa/src/gplx/xowa/bldrs/sqls/Sql_file_parser.java
@@ -132,7 +132,7 @@ public class Sql_file_parser {
 					default:								throw Err_.new_unhandled(mode);
 				}
 			}
-			Io_mgr.I.AppendFilByt(trg_fil_gen.Nxt_url(), fil_bfr.Xto_bry_and_clear());
+			Io_mgr.Instance.AppendFilByt(trg_fil_gen.Nxt_url(), fil_bfr.To_bry_and_clear());
 		}
 		finally {rdr.Rls();}
 	}
@@ -141,7 +141,7 @@ public class Sql_file_parser {
 		if (fil_bfr.Len() > trg_len) {
 			Io_url trg_fil = trg_fil_gen.Nxt_url();				
 			usr_dlg.Prog_one(GRP_KEY, "make", "making ~{0}", trg_fil.NameAndExt());
-			Io_mgr.I.AppendFilByt(trg_fil, fil_bfr.Xto_bry_and_clear());
+			Io_mgr.Instance.AppendFilByt(trg_fil, fil_bfr.To_bry_and_clear());
 		}
 	}
 	private void Commit_fld(int fld_idx, Bry_bfr val_bfr, Bry_bfr fil_bfr, Sql_file_parser_data data) {
diff --git a/400_xowa/src/gplx/xowa/bldrs/sqls/Sql_file_parser_cmd.java b/400_xowa/src/gplx/xowa/bldrs/sqls/Sql_file_parser_cmd.java
index 5c9f3b3bb..63e0334e2 100644
--- a/400_xowa/src/gplx/xowa/bldrs/sqls/Sql_file_parser_cmd.java
+++ b/400_xowa/src/gplx/xowa/bldrs/sqls/Sql_file_parser_cmd.java
@@ -28,7 +28,7 @@ class Sql_file_parser_cmd_max_len implements Sql_file_parser_cmd {
 			String itm = (String)log.Get_at(i);
 			sb.Add(String_.Len(itm) + "|" + itm + "\n");
 		}
-		Io_mgr.I.SaveFilStr(url, sb.To_str());
+		Io_mgr.Instance.SaveFilStr(url, sb.To_str());
 	}
 	public int Max_len() {return max_len;} private int max_len; 
 	public void Exec(byte[] src, byte[] fld_key, int fld_idx, int fld_bgn, int fld_end, Bry_bfr file_bfr, Sql_file_parser_data data) {
diff --git a/400_xowa/src/gplx/xowa/bldrs/sqls/Sql_file_parser_tst.java b/400_xowa/src/gplx/xowa/bldrs/sqls/Sql_file_parser_tst.java
index d3c0969e4..8d8a5c217 100644
--- a/400_xowa/src/gplx/xowa/bldrs/sqls/Sql_file_parser_tst.java
+++ b/400_xowa/src/gplx/xowa/bldrs/sqls/Sql_file_parser_tst.java
@@ -58,16 +58,16 @@ public class Sql_file_parser_tst {
 }
 class Sql_file_parser_fxt {
 	Sql_file_parser parser = new Sql_file_parser().Src_len_(Io_mgr.Len_kb).Trg_len_(Io_mgr.Len_kb);
-	public Sql_file_parser_fxt Clear() {Io_mgr.I.InitEngine_mem(); return this;}
+	public Sql_file_parser_fxt Clear() {Io_mgr.Instance.InitEngine_mem(); return this;}
 	public Sql_file_parser_fxt Init_flds_req_idx_(int flds_all_len, int... idxs) {parser.Flds_req_idx_(flds_all_len, idxs); return this;}
 	public Sql_file_parser_fxt Init_cmd_(Sql_file_parser_cmd cmd) {parser.Fld_cmd_(cmd); return this;}
 	public void Test_parse(String raw_str, String expd) {
 		Io_url src_fil = Io_url_.new_fil_("mem/test.sql");
-		Io_mgr.I.SaveFilBry(src_fil, Bry_.new_u8(raw_str));
+		Io_mgr.Instance.SaveFilBry(src_fil, Bry_.new_u8(raw_str));
 		Io_url trg_fil = Io_url_.new_fil_("mem/test.csv");
 		parser.Src_fil_(src_fil).Trg_fil_gen_(Io_url_gen_.fil_(trg_fil));
 		parser.Parse(Gfo_usr_dlg_.Test());
-		byte[] actl = Io_mgr.I.LoadFilBry(trg_fil);
+		byte[] actl = Io_mgr.Instance.LoadFilBry(trg_fil);
 		Tfds.Eq(expd, String_.new_u8(actl));
 	}	
 }
diff --git a/400_xowa/src/gplx/xowa/bldrs/sqls/Sql_fld_mgr.java b/400_xowa/src/gplx/xowa/bldrs/sqls/Sql_fld_mgr.java
index 86e6b8369..3a6453c68 100644
--- a/400_xowa/src/gplx/xowa/bldrs/sqls/Sql_fld_mgr.java
+++ b/400_xowa/src/gplx/xowa/bldrs/sqls/Sql_fld_mgr.java
@@ -22,7 +22,7 @@ class Sql_fld_mgr {
 	public Sql_fld_itm Get_by_key(String fld) {return Get_by_key(Bry_.new_u8(fld));}
 	public Sql_fld_itm Get_by_key(byte[] fld) {
 		return (Sql_fld_itm)hash.Get_by(fld);
-	}	private Ordered_hash hash = Ordered_hash_.new_bry_();
+	}	private Ordered_hash hash = Ordered_hash_.New_bry();
 	public Sql_fld_mgr Parse(byte[] raw) {
 		hash.Clear();
 		int bgn = Bry_find_.Find_fwd(raw, Tkn_create_table); if (bgn == Bry_.NotFound) throw Err_.new_wo_type("could not find 'CREATE TABLE'");
diff --git a/400_xowa/src/gplx/xowa/bldrs/syncs/Xob_sync_itm.java b/400_xowa/src/gplx/xowa/bldrs/syncs/Xob_sync_itm.java
index e414a0122..161f2151f 100644
--- a/400_xowa/src/gplx/xowa/bldrs/syncs/Xob_sync_itm.java
+++ b/400_xowa/src/gplx/xowa/bldrs/syncs/Xob_sync_itm.java
@@ -18,7 +18,7 @@ along with this program.  If not, see .
 package gplx.xowa.bldrs.syncs; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*;
 import gplx.ios.*;
 class Xob_sync_grp {
-	private final Ordered_hash itms = Ordered_hash_.new_();
+	private final Ordered_hash itms = Ordered_hash_.New();
 	public Xob_sync_grp Ctor_itm(DateAdp dump_time, DateAdp upload_time) {
 		this.dump_time = dump_time; this.upload_time = upload_time;
 		return this;
@@ -29,7 +29,7 @@ class Xob_sync_grp {
 	public void Itms__add(Xob_sync_pkg file) {itms.Add(file.Path(), file);}
 	public Xob_sync_pkg Itms__get_at(int i) {return (Xob_sync_pkg)itms.Get_at(i);}
 }
-class Xob_sync_pkg extends Xob_sync_fil {	private final Ordered_hash itms = Ordered_hash_.new_();
+class Xob_sync_pkg extends Xob_sync_fil {	private final Ordered_hash itms = Ordered_hash_.New();
 	public Xob_sync_pkg Ctor_itm(String url, byte zip_tid) {
 		this.url = url; this.zip_tid = zip_tid;
 		return this;
diff --git a/400_xowa/src/gplx/xowa/bldrs/wiki_cfgs/Xob_subpage_parser.java b/400_xowa/src/gplx/xowa/bldrs/wiki_cfgs/Xob_subpage_parser.java
index 120f7709a..f54935dcd 100644
--- a/400_xowa/src/gplx/xowa/bldrs/wiki_cfgs/Xob_subpage_parser.java
+++ b/400_xowa/src/gplx/xowa/bldrs/wiki_cfgs/Xob_subpage_parser.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.bldrs.wiki_cfgs; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*;
-import gplx.langs.phps.*; import gplx.xowa.bldrs.langs.*;
+import gplx.langs.phps.*; import gplx.xowa.langs.bldrs.*;
 class Xob_subpage_parser {
 	public Xob_subpage_wiki[] Parse(byte[] src) {
 		src = Bry_.Add(Bry_.new_a7("$a = array("), src, Bry_.new_a7(");"));
diff --git a/400_xowa/src/gplx/xowa/bldrs/wiki_cfgs/Xoi_wiki_props_api_tst.java b/400_xowa/src/gplx/xowa/bldrs/wiki_cfgs/Xoi_wiki_props_api_tst.java
index 677a1a450..2c0a0eda1 100644
--- a/400_xowa/src/gplx/xowa/bldrs/wiki_cfgs/Xoi_wiki_props_api_tst.java
+++ b/400_xowa/src/gplx/xowa/bldrs/wiki_cfgs/Xoi_wiki_props_api_tst.java
@@ -75,7 +75,7 @@ class Xoi_wiki_props_fxt {
 	}
 	public void Test_build(Xoi_wiki_props_wiki wiki, String expd) {
 		api.Build_cfg(bfr, wiki);
-		Tfds.Eq_str_lines(expd, bfr.Xto_str_and_clear());
+		Tfds.Eq_str_lines(expd, bfr.To_str_and_clear());
 	}
 	private String Xto_str(Xoi_wiki_props_wiki v) {
 		int len = v.Alias_ary().length;
@@ -91,7 +91,7 @@ class Xoi_wiki_props_fxt {
 			bfr.Add_int_variable(ns.Id()).Add_byte_pipe().Add_int_bool(ns.Subpages_enabled()).Add_byte_nl();
 		}
 		bfr.Add_byte_nl();
-		return bfr.Xto_str_and_clear();
+		return bfr.To_str_and_clear();
 	}
 }
 class Xob_subpage_tst_fxt {
@@ -103,7 +103,7 @@ class Xob_subpage_tst_fxt {
 		mgr.Clear();
 		hash.Clear();
 		return this;
-	}	private Xoae_app app; Xob_wiki_cfg_bldr mgr; Ordered_hash hash = Ordered_hash_.new_();
+	}	private Xoae_app app; Xob_wiki_cfg_bldr mgr; Ordered_hash hash = Ordered_hash_.New();
 	private Xob_subpage_parser parser = new Xob_subpage_parser();
 	public Xob_subpage_tst_fxt Init_cmd(String wiki, String key, String text) {
 //		mgr.Itms_get_or_new(wiki).Itms_add(key, text);
@@ -120,7 +120,7 @@ class Xob_subpage_tst_fxt {
 	}		
 	public String X_str_wikis(Xob_subpage_wiki[] ary) {
 		X_str_wikis(sb, ary);
-		return sb.Xto_str_and_clear();
+		return sb.To_str_and_clear();
 		
 	}
 	private void X_str_wikis(String_bldr sb, Xob_subpage_wiki[] ary) {
diff --git a/400_xowa/src/gplx/xowa/bldrs/wkrs/Xob_idx_base.java b/400_xowa/src/gplx/xowa/bldrs/wkrs/Xob_idx_base.java
index 03f77a4c5..b1f746a08 100644
--- a/400_xowa/src/gplx/xowa/bldrs/wkrs/Xob_idx_base.java
+++ b/400_xowa/src/gplx/xowa/bldrs/wkrs/Xob_idx_base.java
@@ -25,7 +25,7 @@ public abstract class Xob_idx_base extends Xob_itm_basic_base implements Xob_cmd
 	public void Cmd_init(Xob_bldr bldr) {}
 	public void Cmd_bgn(Xob_bldr bldr) {
 		temp_dir = wiki.Fsys_mgr().Tmp_dir().GenSubDir(this.Cmd_key());
-		Io_mgr.I.DeleteDirDeep(temp_dir);
+		Io_mgr.Instance.DeleteDirDeep(temp_dir);
 		Cmd_bgn_hook();
 	}
 	public abstract void Cmd_bgn_hook(); 
@@ -33,7 +33,7 @@ public abstract class Xob_idx_base extends Xob_itm_basic_base implements Xob_cmd
 	@gplx.Virtual public void Cmd_end() {}
 	public void Cmd_term() {}	
 	public Io_line_rdr rdr_(Io_url dir) {
-		Io_url[] fils = Io_mgr.I.QueryDir_fils(dir);
+		Io_url[] fils = Io_mgr.Instance.QueryDir_fils(dir);
 		return new Io_line_rdr(bldr.Usr_dlg(), fils).Key_gen_(Io_line_rdr_key_gen_.first_pipe);
 	}
 }
\ No newline at end of file
diff --git a/400_xowa/src/gplx/xowa/bldrs/wkrs/Xob_itm_dump_base.java b/400_xowa/src/gplx/xowa/bldrs/wkrs/Xob_itm_dump_base.java
index 1722a020f..9fd35184e 100644
--- a/400_xowa/src/gplx/xowa/bldrs/wkrs/Xob_itm_dump_base.java
+++ b/400_xowa/src/gplx/xowa/bldrs/wkrs/Xob_itm_dump_base.java
@@ -35,14 +35,14 @@ public abstract class Xob_itm_dump_base extends Xob_itm_basic_base {
 		temp_dir = wiki.Fsys_mgr().Tmp_dir().GenSubDir(tmp_dir_key);
 		if (make_dir_val == null)	make_dir = temp_dir.GenSubDir("make");
 		else						make_dir = make_dir_val;
-		Io_mgr.I.DeleteDirDeep_ary(temp_dir, make_dir);
+		Io_mgr.Instance.DeleteDirDeep_ary(temp_dir, make_dir);
 		dump_url_gen = Io_url_gen_.dir_(temp_dir.GenSubDir("dump"));
 	}
 	@gplx.Virtual public void Term_dump(Io_sort_cmd make_cmd) {
-		Io_mgr.I.AppendFilBfr(dump_url_gen.Nxt_url(), dump_bfr); dump_bfr.Rls();
+		Io_mgr.Instance.AppendFilBfr(dump_url_gen.Nxt_url(), dump_bfr); dump_bfr.Rls();
 		Xobdc_merger.Basic(bldr.Usr_dlg(), dump_url_gen, temp_dir.GenSubDir("sort"), sort_mem_len, Io_line_rdr_key_gen_.first_pipe, make_cmd);
 	}
-	protected void Flush_dump() {Io_mgr.I.AppendFilBfr(dump_url_gen.Nxt_url(), dump_bfr);}
+	protected void Flush_dump() {Io_mgr.Instance.AppendFilBfr(dump_url_gen.Nxt_url(), dump_bfr);}
 	@Override public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) {
 		if		(ctx.Match(k, Invk_sort_mem_len_))		sort_mem_len = gplx.ios.Io_size_.Load_int_(m);
 		else if	(ctx.Match(k, Invk_dump_fil_len_)) 		dump_fil_len = gplx.ios.Io_size_.Load_int_(m);
diff --git a/400_xowa/src/gplx/xowa/bldrs/wkrs/Xob_sql_dump_base.java b/400_xowa/src/gplx/xowa/bldrs/wkrs/Xob_sql_dump_base.java
index 71eb4027d..3d44d56ef 100644
--- a/400_xowa/src/gplx/xowa/bldrs/wkrs/Xob_sql_dump_base.java
+++ b/400_xowa/src/gplx/xowa/bldrs/wkrs/Xob_sql_dump_base.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.bldrs.wkrs; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*;
-import gplx.core.flds.*; import gplx.ios.*; import gplx.xowa.tdbs.*;
-import gplx.xowa.bldrs.sqls.*; import gplx.xowa.tdbs.bldrs.*;
+import gplx.core.flds.*; import gplx.ios.*; import gplx.xowa.wikis.tdbs.*;
+import gplx.xowa.bldrs.sqls.*; import gplx.xowa.wikis.tdbs.bldrs.*;
 public abstract class Xob_sql_dump_base extends Xob_itm_dump_base implements Xob_cmd, GfoInvkAble {
 	private final Sql_file_parser parser = new Sql_file_parser(); private boolean fail = false;
 	public abstract String Cmd_key();
@@ -48,7 +48,7 @@ public abstract class Xob_sql_dump_base extends Xob_itm_dump_base implements Xob
 	}
 	@gplx.Virtual public void Cmd_end() {
 		if (fail) return;
-		Xobdc_merger.Basic(bldr.Usr_dlg(), dump_url_gen, temp_dir.GenSubDir("sort"), sort_mem_len, Io_line_rdr_key_gen_all._, new Io_sort_fil_basic(bldr.Usr_dlg(), make_url_gen, make_fil_len));
+		Xobdc_merger.Basic(bldr.Usr_dlg(), dump_url_gen, temp_dir.GenSubDir("sort"), sort_mem_len, Io_line_rdr_key_gen_all.Instance, new Io_sort_fil_basic(bldr.Usr_dlg(), make_url_gen, make_fil_len));
 	}
 	public void Cmd_term() {}
 	@Override public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) {
diff --git a/400_xowa/src/gplx/xowa/wms/Xoa_wmf_mgr.java b/400_xowa/src/gplx/xowa/bldrs/wms/Xoa_wmf_mgr.java
similarity index 86%
rename from 400_xowa/src/gplx/xowa/wms/Xoa_wmf_mgr.java
rename to 400_xowa/src/gplx/xowa/bldrs/wms/Xoa_wmf_mgr.java
index 5034076b2..76daa5a12 100644
--- a/400_xowa/src/gplx/xowa/wms/Xoa_wmf_mgr.java
+++ b/400_xowa/src/gplx/xowa/bldrs/wms/Xoa_wmf_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.wms; import gplx.*; import gplx.xowa.*;
-import gplx.xowa.wms.apis.*; import gplx.xowa.wikis.*;	
+package gplx.xowa.bldrs.wms; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*;
+import gplx.xowa.bldrs.wms.apis.*; import gplx.xowa.wikis.*;	
 public class Xoa_wmf_mgr implements GfoInvkAble {
 	private final Xoae_wiki_mgr wiki_mgr;
 	public Xoa_wmf_mgr(Gfo_usr_dlg usr_dlg, Xoae_wiki_mgr wiki_mgr) {
@@ -32,7 +32,7 @@ public class Xoa_wmf_mgr implements GfoInvkAble {
 		}		
 	}
 	public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) {
-		if		(ctx.Match(k, Invk_enabled))			return Yn.Xto_str(enabled);
+		if		(ctx.Match(k, Invk_enabled))			return Yn.To_str(enabled);
 		else if	(ctx.Match(k, Invk_enabled_))			Enabled_(m.ReadYn("v"));
 		else											return GfoInvkAble_.Rv_unhandled;
 		return this;
diff --git a/400_xowa/src/gplx/xowa/wms/Xowm_api_mgr.java b/400_xowa/src/gplx/xowa/bldrs/wms/Xowm_api_mgr.java
similarity index 66%
rename from 400_xowa/src/gplx/xowa/wms/Xowm_api_mgr.java
rename to 400_xowa/src/gplx/xowa/bldrs/wms/Xowm_api_mgr.java
index e8ae78b61..a485ec1ec 100644
--- a/400_xowa/src/gplx/xowa/wms/Xowm_api_mgr.java
+++ b/400_xowa/src/gplx/xowa/bldrs/wms/Xowm_api_mgr.java
@@ -15,12 +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.wms; import gplx.*; import gplx.xowa.*;
+package gplx.xowa.bldrs.wms; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*;
 import gplx.core.net.*;
 public class Xowm_api_mgr {
-	public static byte[] Call_api(Gfo_usr_dlg usr_dlg, Gfo_inet_conn inet_conn, String domain_str, String api_args) {
-		String url = Bld_api_url(domain_str, api_args);
-		usr_dlg.Prog_many("", "", "wm.api:calling; wiki~{0} api=~{1}", domain_str, url);
+	public static byte[] Call_by_qarg(Gfo_usr_dlg usr_dlg, Gfo_inet_conn inet_conn, String domain_str, String api_args) {return Call_by_url(usr_dlg, inet_conn, domain_str, Bld_api_url(domain_str, api_args));}
+	public static byte[] Call_by_url (Gfo_usr_dlg usr_dlg, Gfo_inet_conn inet_conn, String domain_str, String url) {
+		if (!gplx.ios.IoEngine_system.Web_access_enabled) return null;
+		usr_dlg.Prog_many("", "", "wm.api:calling; wiki=~{0} api=~{1}", domain_str, url);
 		byte[] rslt = inet_conn.Download_as_bytes_or_null(url); if (rslt == null) usr_dlg.Warn_many("", "", "wm.api:wmf api returned nothing; api=~{0}", url);
 		return rslt;
 	}
diff --git a/400_xowa/src/gplx/xowa/wms/Xowmf_mgr.java b/400_xowa/src/gplx/xowa/bldrs/wms/Xowmf_mgr.java
similarity index 87%
rename from 400_xowa/src/gplx/xowa/wms/Xowmf_mgr.java
rename to 400_xowa/src/gplx/xowa/bldrs/wms/Xowmf_mgr.java
index 15b884026..318fb09c6 100644
--- a/400_xowa/src/gplx/xowa/wms/Xowmf_mgr.java
+++ b/400_xowa/src/gplx/xowa/bldrs/wms/Xowmf_mgr.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.wms; import gplx.*; import gplx.xowa.*;
+package gplx.xowa.bldrs.wms; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*;
 import gplx.core.net.*;
-import gplx.xowa.wms.apis.*; import gplx.xowa.files.downloads.*;
+import gplx.xowa.bldrs.wms.apis.*; import gplx.xowa.files.downloads.*;
 public class Xowmf_mgr {
 	public Xowmf_mgr() {
 		download_wkr.Download_xrg().User_agent_(Xoa_app_.User_agent);
diff --git a/400_xowa/src/gplx/xowa/wms/apis/Xoapi_orig_base.java b/400_xowa/src/gplx/xowa/bldrs/wms/apis/Xoapi_orig_base.java
similarity index 90%
rename from 400_xowa/src/gplx/xowa/wms/apis/Xoapi_orig_base.java
rename to 400_xowa/src/gplx/xowa/bldrs/wms/apis/Xoapi_orig_base.java
index f263a1c82..1235c51b7 100644
--- a/400_xowa/src/gplx/xowa/wms/apis/Xoapi_orig_base.java
+++ b/400_xowa/src/gplx/xowa/bldrs/wms/apis/Xoapi_orig_base.java
@@ -15,12 +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.wms.apis; import gplx.*; import gplx.xowa.*; import gplx.xowa.wms.*;
+package gplx.xowa.bldrs.wms.apis; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*; import gplx.xowa.bldrs.wms.*;
 import gplx.ios.*; import gplx.xowa.files.repos.*; import gplx.xowa.files.downloads.*;
 public abstract class Xoapi_orig_base {
 	public boolean Api_query_size(Xoapi_orig_rslts rv, Xof_download_wkr download_wkr, Xow_repo_mgr repo_mgr, byte[] ttl, int width, int height) {
 		if (!gplx.ios.IoEngine_system.Web_access_enabled) return false;	// don't check api if download disabled else "download_failed" messages in log (particularly during pkg_make) DATE:2015-02-12
-		Gfo_usr_dlg usr_dlg = Gfo_usr_dlg_.I;
+		Gfo_usr_dlg usr_dlg = Gfo_usr_dlg_.Instance;
 		Xof_repo_pair[] repos = repo_mgr.Repos_ary();
 		int len = repos.length;
 		for (int i = 0; i < len; i++) {
diff --git a/400_xowa/src/gplx/xowa/wms/apis/Xoapi_orig_base_tst.java b/400_xowa/src/gplx/xowa/bldrs/wms/apis/Xoapi_orig_base_tst.java
similarity index 95%
rename from 400_xowa/src/gplx/xowa/wms/apis/Xoapi_orig_base_tst.java
rename to 400_xowa/src/gplx/xowa/bldrs/wms/apis/Xoapi_orig_base_tst.java
index e6fb6018a..c1b9540d2 100644
--- a/400_xowa/src/gplx/xowa/wms/apis/Xoapi_orig_base_tst.java
+++ b/400_xowa/src/gplx/xowa/bldrs/wms/apis/Xoapi_orig_base_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.wms.apis; import gplx.*; import gplx.xowa.*; import gplx.xowa.wms.*;
+package gplx.xowa.bldrs.wms.apis; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*; import gplx.xowa.bldrs.wms.*;
 import org.junit.*;
 public class Xoapi_orig_base_tst {
 	Xoapi_orig_base_fxt fxt = new Xoapi_orig_base_fxt();
diff --git a/400_xowa/src/gplx/xowa/wms/apis/Xoapi_orig_mok.java b/400_xowa/src/gplx/xowa/bldrs/wms/apis/Xoapi_orig_mok.java
similarity index 88%
rename from 400_xowa/src/gplx/xowa/wms/apis/Xoapi_orig_mok.java
rename to 400_xowa/src/gplx/xowa/bldrs/wms/apis/Xoapi_orig_mok.java
index 15dad49de..c719b1120 100644
--- a/400_xowa/src/gplx/xowa/wms/apis/Xoapi_orig_mok.java
+++ b/400_xowa/src/gplx/xowa/bldrs/wms/apis/Xoapi_orig_mok.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.wms.apis; import gplx.*; import gplx.xowa.*; import gplx.xowa.wms.*;
+package gplx.xowa.bldrs.wms.apis; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*; import gplx.xowa.bldrs.wms.*;
 import gplx.xowa.files.downloads.*;
 public class Xoapi_orig_mok extends Xoapi_orig_base {
 	private String wiki_str = "", ttl_str = "", redirect_str = ""; private int orig_w, orig_h; private boolean fail = false;
@@ -32,5 +32,5 @@ public class Xoapi_orig_mok extends Xoapi_orig_base {
 		rv.Init_all(repo_wiki_key, orig_page, orig_w, orig_h);
 		return true;
 	}
-	public static final Xoapi_orig_mok _ = new Xoapi_orig_mok(); Xoapi_orig_mok() {}
+	public static final Xoapi_orig_mok Instance = new Xoapi_orig_mok(); Xoapi_orig_mok() {}
 }
\ No newline at end of file
diff --git a/400_xowa/src/gplx/xowa/wms/apis/Xoapi_orig_rslts.java b/400_xowa/src/gplx/xowa/bldrs/wms/apis/Xoapi_orig_rslts.java
similarity index 89%
rename from 400_xowa/src/gplx/xowa/wms/apis/Xoapi_orig_rslts.java
rename to 400_xowa/src/gplx/xowa/bldrs/wms/apis/Xoapi_orig_rslts.java
index bf45a89d8..40b88ce29 100644
--- a/400_xowa/src/gplx/xowa/wms/apis/Xoapi_orig_rslts.java
+++ b/400_xowa/src/gplx/xowa/bldrs/wms/apis/Xoapi_orig_rslts.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.wms.apis; import gplx.*; import gplx.xowa.*; import gplx.xowa.wms.*;
+package gplx.xowa.bldrs.wms.apis; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*; import gplx.xowa.bldrs.wms.*;
 public class Xoapi_orig_rslts {
 	public byte[] Orig_wiki() {return orig_wiki;} private byte[] orig_wiki;
 	public byte[] Orig_page() {return orig_page;} private byte[] orig_page;
diff --git a/400_xowa/src/gplx/xowa/wms/apis/Xoapi_orig_wmf.java b/400_xowa/src/gplx/xowa/bldrs/wms/apis/Xoapi_orig_wmf.java
similarity index 92%
rename from 400_xowa/src/gplx/xowa/wms/apis/Xoapi_orig_wmf.java
rename to 400_xowa/src/gplx/xowa/bldrs/wms/apis/Xoapi_orig_wmf.java
index 9f5d0ad33..f972a6934 100644
--- a/400_xowa/src/gplx/xowa/wms/apis/Xoapi_orig_wmf.java
+++ b/400_xowa/src/gplx/xowa/bldrs/wms/apis/Xoapi_orig_wmf.java
@@ -15,10 +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.wms.apis; import gplx.*; import gplx.xowa.*; import gplx.xowa.wms.*;
+package gplx.xowa.bldrs.wms.apis; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*; import gplx.xowa.bldrs.wms.*;
 import gplx.core.primitives.*; import gplx.core.net.*; import gplx.langs.htmls.encoders.*;
 import gplx.xowa.files.downloads.*;
-import gplx.xowa.html.hrefs.*;
+import gplx.xowa.htmls.hrefs.*;
 public class Xoapi_orig_wmf extends Xoapi_orig_base {
 	@Override public boolean Api_query_size_exec(Xoapi_orig_rslts rv, Xof_download_wkr download_wkr, byte[] ttl, int width, int height, Gfo_usr_dlg usr_dlg, byte[] repo_wiki_key) {
 		if (Env_.Mode_testing()) return false; // TEST: disable during tests else scrib_lib_title will try to call WMF API; DATE:2015-03-20			
@@ -45,8 +45,7 @@ public class Xoapi_orig_wmf extends Xoapi_orig_base {
 
 			if (Parse_xml_val(tmp_rng, usr_dlg, xml, xml_len, pos, Bry_xml_descriptionurl)) {
 				byte[] file_url = Bry_.Mid(xml, tmp_rng.Val_0(), tmp_rng.Val_1());
-				url_parser.Parse(url, file_url, 0, file_url.length);
-				orig_wiki = url.Segs__get_at_1st();
+				orig_wiki = gplx.xowa.wikis.xwikis.Xow_xwiki_mgr.Get_domain_from_url(url_parser, url, file_url);
 				byte[] page = Xoa_ttl.Replace_spaces(url.Segs__get_at_nth());
 				int colon_pos = Bry_find_.Find_fwd(page, Byte_ascii.Colon, 0, page.length);
 				if (colon_pos != Bry_.NotFound)
@@ -78,7 +77,7 @@ public class Xoapi_orig_wmf extends Xoapi_orig_base {
 				tmp_bfr.Add(Bry_width).Add_int_variable(width);		// "&iiurlwidth=800"
 			if (height > 0 && width > 0)							// NOTE: height cannot be used alone; width must also exist; "iiurlheight cannot be used without iiurlwidth"
 				tmp_bfr.Add(Bry_height).Add_int_variable(height);	// "&iiurlheight=600"
-			return tmp_bfr.Xto_str_and_clear();
+			return tmp_bfr.To_str_and_clear();
 		}
 	}
 	private static Url_encoder tmp_encoder = Url_encoder.new_http_url_().Itms_raw_diff(Byte_ascii.Space, Byte_ascii.Underline);
diff --git a/400_xowa/src/gplx/xowa/wms/apis/Xowmf_api_mgr.java b/400_xowa/src/gplx/xowa/bldrs/wms/apis/Xowmf_api_mgr.java
similarity index 87%
rename from 400_xowa/src/gplx/xowa/wms/apis/Xowmf_api_mgr.java
rename to 400_xowa/src/gplx/xowa/bldrs/wms/apis/Xowmf_api_mgr.java
index f25e16979..7f983e1a9 100644
--- a/400_xowa/src/gplx/xowa/wms/apis/Xowmf_api_mgr.java
+++ b/400_xowa/src/gplx/xowa/bldrs/wms/apis/Xowmf_api_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.wms.apis; import gplx.*; import gplx.xowa.*; import gplx.xowa.wms.*;
+package gplx.xowa.bldrs.wms.apis; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*; import gplx.xowa.bldrs.wms.*;
 public class Xowmf_api_mgr {
 	public Xoapi_orig_base	Api_orig() {return api_orig;} public void Api_orig_(Xoapi_orig_base v) {api_orig = v;} private Xoapi_orig_base api_orig = new Xoapi_orig_wmf();
 }
diff --git a/400_xowa/src/gplx/xowa/wms/dump_pages/Xowmf_wiki_dump_dirs_parser.java b/400_xowa/src/gplx/xowa/bldrs/wms/dump_pages/Xowmf_wiki_dump_dirs_parser.java
similarity index 92%
rename from 400_xowa/src/gplx/xowa/wms/dump_pages/Xowmf_wiki_dump_dirs_parser.java
rename to 400_xowa/src/gplx/xowa/bldrs/wms/dump_pages/Xowmf_wiki_dump_dirs_parser.java
index 2199d853b..18e886afb 100644
--- a/400_xowa/src/gplx/xowa/wms/dump_pages/Xowmf_wiki_dump_dirs_parser.java
+++ b/400_xowa/src/gplx/xowa/bldrs/wms/dump_pages/Xowmf_wiki_dump_dirs_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.wms.dump_pages; import gplx.*; import gplx.xowa.*; import gplx.xowa.wms.*;
+package gplx.xowa.bldrs.wms.dump_pages; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*; import gplx.xowa.bldrs.wms.*;
 public class Xowmf_wiki_dump_dirs_parser {
 	public static String[] Parse(byte[] wiki, byte[] src) {
 		List_adp rv = List_adp_.new_();
diff --git a/400_xowa/src/gplx/xowa/wms/dump_pages/Xowmf_wiki_dump_dirs_parser_tst.java b/400_xowa/src/gplx/xowa/bldrs/wms/dump_pages/Xowmf_wiki_dump_dirs_parser_tst.java
similarity index 94%
rename from 400_xowa/src/gplx/xowa/wms/dump_pages/Xowmf_wiki_dump_dirs_parser_tst.java
rename to 400_xowa/src/gplx/xowa/bldrs/wms/dump_pages/Xowmf_wiki_dump_dirs_parser_tst.java
index 82f7a71a7..c996da25a 100644
--- a/400_xowa/src/gplx/xowa/wms/dump_pages/Xowmf_wiki_dump_dirs_parser_tst.java
+++ b/400_xowa/src/gplx/xowa/bldrs/wms/dump_pages/Xowmf_wiki_dump_dirs_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.wms.dump_pages; import gplx.*; import gplx.xowa.*; import gplx.xowa.wms.*;
+package gplx.xowa.bldrs.wms.dump_pages; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*; import gplx.xowa.bldrs.wms.*;
 import org.junit.*;
 import gplx.xowa.wikis.domains.*;
 public class Xowmf_wiki_dump_dirs_parser_tst {
diff --git a/400_xowa/src/gplx/xowa/wms/dumps/Xowm_dump_file.java b/400_xowa/src/gplx/xowa/bldrs/wms/dumps/Xowm_dump_file.java
similarity index 93%
rename from 400_xowa/src/gplx/xowa/wms/dumps/Xowm_dump_file.java
rename to 400_xowa/src/gplx/xowa/bldrs/wms/dumps/Xowm_dump_file.java
index ae3b1df5b..598dc4fea 100644
--- a/400_xowa/src/gplx/xowa/wms/dumps/Xowm_dump_file.java
+++ b/400_xowa/src/gplx/xowa/bldrs/wms/dumps/Xowm_dump_file.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.wms.dumps; import gplx.*; import gplx.xowa.*; import gplx.xowa.wms.*;
+package gplx.xowa.bldrs.wms.dumps; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*; import gplx.xowa.bldrs.wms.*;
 import gplx.ios.*;
 import gplx.xowa.wikis.domains.*;
 public class Xowm_dump_file {
@@ -41,7 +41,7 @@ public class Xowm_dump_file {
 		this.file_url = dump_dir_url + file_name;
 	}
 	public boolean Connect() {
-		IoEngine_xrg_downloadFil args = Io_mgr.I.DownloadFil_args("", Io_url_.Empty);
+		IoEngine_xrg_downloadFil args = Io_mgr.Instance.DownloadFil_args("", Io_url_.Empty);
 		boolean rv = Connect_exec(args, file_url);
 		// WMF changed dumping approach to partial dumps; this sometimes causes /latest/ to be missing page_articles; try to get earlier dump; DATE:2015-07-09
 		if (	!rv	// not found
@@ -53,7 +53,7 @@ public class Xowm_dump_file {
 			String new_dump_root = Xowm_dump_file_.Server_wmf_https + String_.new_u8(abrv_wm_bry) + "/";	// EX: http://dumps.wikimedia.org/enwiki/
 			byte[] wiki_dump_dirs_src = args.Exec_as_bry(new_dump_root);
 			if (wiki_dump_dirs_src == null) {Xoa_app_.Usr_dlg().Warn_many("", "", "could not connect to dump server; url=~{0}", new_dump_root); return false;}
-			String[] dates = gplx.xowa.wms.dump_pages.Xowmf_wiki_dump_dirs_parser.Parse(domain_itm.Domain_bry(), wiki_dump_dirs_src);
+			String[] dates = gplx.xowa.bldrs.wms.dump_pages.Xowmf_wiki_dump_dirs_parser.Parse(domain_itm.Domain_bry(), wiki_dump_dirs_src);
 			int dates_len = dates.length;
 			for (int i = dates_len - 1; i > -1; --i) {
 				String new_dump_date = dates[i];
diff --git a/400_xowa/src/gplx/xowa/wms/dumps/Xowm_dump_file_.java b/400_xowa/src/gplx/xowa/bldrs/wms/dumps/Xowm_dump_file_.java
similarity index 95%
rename from 400_xowa/src/gplx/xowa/wms/dumps/Xowm_dump_file_.java
rename to 400_xowa/src/gplx/xowa/bldrs/wms/dumps/Xowm_dump_file_.java
index 672c25a67..9600c3cfb 100644
--- a/400_xowa/src/gplx/xowa/wms/dumps/Xowm_dump_file_.java
+++ b/400_xowa/src/gplx/xowa/bldrs/wms/dumps/Xowm_dump_file_.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.wms.dumps; import gplx.*; import gplx.xowa.*; import gplx.xowa.wms.*;
+package gplx.xowa.bldrs.wms.dumps; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*; import gplx.xowa.bldrs.wms.*;
 import gplx.xowa.wikis.domains.*; import gplx.xowa.bldrs.installs.*;
 public class Xowm_dump_file_ {
 	public static Xowm_dump_file parse(byte[] src) {
diff --git a/400_xowa/src/gplx/xowa/wms/dumps/Xowm_dump_file_tst.java b/400_xowa/src/gplx/xowa/bldrs/wms/dumps/Xowm_dump_file_tst.java
similarity index 93%
rename from 400_xowa/src/gplx/xowa/wms/dumps/Xowm_dump_file_tst.java
rename to 400_xowa/src/gplx/xowa/bldrs/wms/dumps/Xowm_dump_file_tst.java
index d2c82ec90..463361fcd 100644
--- a/400_xowa/src/gplx/xowa/wms/dumps/Xowm_dump_file_tst.java
+++ b/400_xowa/src/gplx/xowa/bldrs/wms/dumps/Xowm_dump_file_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.wms.dumps; import gplx.*; import gplx.xowa.*; import gplx.xowa.wms.*;
+package gplx.xowa.bldrs.wms.dumps; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*; import gplx.xowa.bldrs.wms.*;
 import org.junit.*;
 public class Xowm_dump_file_tst {
 	private final Xowm_dump_file_fxt fxt = new Xowm_dump_file_fxt();
diff --git a/400_xowa/src/gplx/xowa/wms/dumps/Xowm_dump_type_.java b/400_xowa/src/gplx/xowa/bldrs/wms/dumps/Xowm_dump_type_.java
similarity index 93%
rename from 400_xowa/src/gplx/xowa/wms/dumps/Xowm_dump_type_.java
rename to 400_xowa/src/gplx/xowa/bldrs/wms/dumps/Xowm_dump_type_.java
index 42cb00e00..3719204c3 100644
--- a/400_xowa/src/gplx/xowa/wms/dumps/Xowm_dump_type_.java
+++ b/400_xowa/src/gplx/xowa/bldrs/wms/dumps/Xowm_dump_type_.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.wms.dumps; import gplx.*; import gplx.xowa.*; import gplx.xowa.wms.*;
+package gplx.xowa.bldrs.wms.dumps; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*; import gplx.xowa.bldrs.wms.*;
 import gplx.core.btries.*; import gplx.core.primitives.*;
 public class Xowm_dump_type_ {
 	public static int parse_by_file(byte[] src) {return parse_by_file(src, 0, src.length);}
diff --git a/400_xowa/src/gplx/xowa/wms/dumps/Xowm_dump_type__tst.java b/400_xowa/src/gplx/xowa/bldrs/wms/dumps/Xowm_dump_type__tst.java
similarity index 90%
rename from 400_xowa/src/gplx/xowa/wms/dumps/Xowm_dump_type__tst.java
rename to 400_xowa/src/gplx/xowa/bldrs/wms/dumps/Xowm_dump_type__tst.java
index 29b15aa2c..28236f7b5 100644
--- a/400_xowa/src/gplx/xowa/wms/dumps/Xowm_dump_type__tst.java
+++ b/400_xowa/src/gplx/xowa/bldrs/wms/dumps/Xowm_dump_type__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.wms.dumps; import gplx.*; import gplx.xowa.*; import gplx.xowa.wms.*;
+package gplx.xowa.bldrs.wms.dumps; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*; import gplx.xowa.bldrs.wms.*;
 import org.junit.*; import gplx.core.primitives.*; import gplx.xowa.wikis.*;
 public class Xowm_dump_type__tst {
 	private final Xowm_dump_type__fxt fxt = new Xowm_dump_type__fxt();
diff --git a/400_xowa/src/gplx/xowa/wms/revs/Wmapi_itm__page.java b/400_xowa/src/gplx/xowa/bldrs/wms/revs/Wmapi_itm__page.java
similarity index 95%
rename from 400_xowa/src/gplx/xowa/wms/revs/Wmapi_itm__page.java
rename to 400_xowa/src/gplx/xowa/bldrs/wms/revs/Wmapi_itm__page.java
index 83294695f..392efe378 100644
--- a/400_xowa/src/gplx/xowa/wms/revs/Wmapi_itm__page.java
+++ b/400_xowa/src/gplx/xowa/bldrs/wms/revs/Wmapi_itm__page.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.wms.revs; import gplx.*; import gplx.xowa.*; import gplx.xowa.wms.*;
+package gplx.xowa.bldrs.wms.revs; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*; import gplx.xowa.bldrs.wms.*;
 class Wmapi_itm__pge {
 	public int		Page_id() {return page_id;} private int page_id;
 	public int		Page_ns() {return page_ns;} private int page_ns;
diff --git a/400_xowa/src/gplx/xowa/wms/revs/Wmapi_itm_json_wtr.java b/400_xowa/src/gplx/xowa/bldrs/wms/revs/Wmapi_itm_json_wtr.java
similarity index 92%
rename from 400_xowa/src/gplx/xowa/wms/revs/Wmapi_itm_json_wtr.java
rename to 400_xowa/src/gplx/xowa/bldrs/wms/revs/Wmapi_itm_json_wtr.java
index a1b57676f..614c93acd 100644
--- a/400_xowa/src/gplx/xowa/wms/revs/Wmapi_itm_json_wtr.java
+++ b/400_xowa/src/gplx/xowa/bldrs/wms/revs/Wmapi_itm_json_wtr.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.wms.revs; import gplx.*; import gplx.xowa.*; import gplx.xowa.wms.*;
+package gplx.xowa.bldrs.wms.revs; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*; import gplx.xowa.bldrs.wms.*;
 import gplx.langs.jsons.*;
 class Wmapi_itm_json_wtr {
 	public Json_wtr Wtr() {return wtr;} private final Json_wtr wtr = new Json_wtr();
@@ -35,7 +35,7 @@ class Wmapi_itm_json_wtr {
 		wtr.Doc_nde_end();
 	}
 	private void Write_page(Wmapi_itm__pge itm) {
-		wtr.Nde_bgn(Int_.Xto_str(itm.Page_id()));
+		wtr.Nde_bgn(Int_.To_str(itm.Page_id()));
 		wtr.Kv_int("pageid", itm.Page_id());
 		wtr.Kv_int("ns", itm.Page_ns());
 		wtr.Kv_bry("title", itm.Page_ttl());
diff --git a/400_xowa/src/gplx/xowa/wms/revs/Xowm_json_parser__page.java b/400_xowa/src/gplx/xowa/bldrs/wms/revs/Xowm_json_parser__page.java
similarity index 93%
rename from 400_xowa/src/gplx/xowa/wms/revs/Xowm_json_parser__page.java
rename to 400_xowa/src/gplx/xowa/bldrs/wms/revs/Xowm_json_parser__page.java
index 2a74942cc..66bf6a3bd 100644
--- a/400_xowa/src/gplx/xowa/wms/revs/Xowm_json_parser__page.java
+++ b/400_xowa/src/gplx/xowa/bldrs/wms/revs/Xowm_json_parser__page.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.wms.revs; import gplx.*; import gplx.xowa.*; import gplx.xowa.wms.*;
+package gplx.xowa.bldrs.wms.revs; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*; import gplx.xowa.bldrs.wms.*;
 import gplx.langs.jsons.*;
 class Xowm_json_parser__page extends Json_parser__list_nde__base {
 	private Wmapi_itm__pge pge;
diff --git a/400_xowa/src/gplx/xowa/wms/revs/Xowm_rev_sync.java b/400_xowa/src/gplx/xowa/bldrs/wms/revs/Xowm_rev_sync.java
similarity index 91%
rename from 400_xowa/src/gplx/xowa/wms/revs/Xowm_rev_sync.java
rename to 400_xowa/src/gplx/xowa/bldrs/wms/revs/Xowm_rev_sync.java
index e704b1c29..2277e4573 100644
--- a/400_xowa/src/gplx/xowa/wms/revs/Xowm_rev_sync.java
+++ b/400_xowa/src/gplx/xowa/bldrs/wms/revs/Xowm_rev_sync.java
@@ -15,10 +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.wms.revs; import gplx.*; import gplx.xowa.*; import gplx.xowa.wms.*;
-import gplx.xowa.wms.*;
+package gplx.xowa.bldrs.wms.revs; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*; import gplx.xowa.bldrs.wms.*;
+import gplx.xowa.bldrs.wms.*;
 class Xowm_rev_sync {
-	private final Ordered_hash cur_hash = Ordered_hash_.new_bry_(), new_hash = Ordered_hash_.new_bry_();
+	private final Ordered_hash cur_hash = Ordered_hash_.New_bry(), new_hash = Ordered_hash_.New_bry();
 	private final List_adp del_list = List_adp_.new_();
 	public int Batch_size() {return batch_size;} public void Batch_size_(int v) {batch_size = v;} private int batch_size = 50;
 	public Xowm_rev_wkr__meta Wkr__cur_meta() {return wkr__cur_meta;} private Xowm_rev_wkr__meta wkr__cur_meta;
diff --git a/400_xowa/src/gplx/xowa/wms/revs/Xowm_rev_wkr__meta__wm.java b/400_xowa/src/gplx/xowa/bldrs/wms/revs/Xowm_rev_wkr__meta__wm.java
similarity index 90%
rename from 400_xowa/src/gplx/xowa/wms/revs/Xowm_rev_wkr__meta__wm.java
rename to 400_xowa/src/gplx/xowa/bldrs/wms/revs/Xowm_rev_wkr__meta__wm.java
index 868071ef3..cbf7e6d7d 100644
--- a/400_xowa/src/gplx/xowa/wms/revs/Xowm_rev_wkr__meta__wm.java
+++ b/400_xowa/src/gplx/xowa/bldrs/wms/revs/Xowm_rev_wkr__meta__wm.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.wms.revs; import gplx.*; import gplx.xowa.*; import gplx.xowa.wms.*;
+package gplx.xowa.bldrs.wms.revs; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*; import gplx.xowa.bldrs.wms.*;
 import gplx.langs.jsons.*; import gplx.core.net.*;
 class Xowm_rev_wkr__meta__wm implements Xowm_rev_wkr__meta {
 	private final Json_parser json_parser = new Json_parser();
@@ -32,12 +32,12 @@ class Xowm_rev_wkr__meta__wm implements Xowm_rev_wkr__meta {
 			if (i != bgn) tmp_bfr.Add_byte(Byte_ascii.Pipe);
 			tmp_bfr.Add(itm.Page_ttl());
 		}
-		byte[] json = inet_conn.Download_as_bytes_or_null(Xowm_api_mgr.Bld_api_url(domain_str, "action=query&prop=revisions&rvprop=size|ids|timestamp|user|comment&format=json&rawcontinue=titles=" + tmp_bfr.Xto_str_and_clear()));
+		byte[] json = inet_conn.Download_as_bytes_or_null(Xowm_api_mgr.Bld_api_url(domain_str, "action=query&prop=revisions&rvprop=size|ids|timestamp|user|comment&format=json&rawcontinue=titles=" + tmp_bfr.To_str_and_clear()));
 		Parse_doc(hash, json);
 	}
 	private void Parse_doc(Ordered_hash hash, byte[] json) {
 		Json_doc jdoc = json_parser.Parse(json);
-		Json_nde pages_nde = Json_nde.cast(jdoc.Get_grp(Jpath__query_pages));
+		Json_nde pages_nde = Json_nde.cast(jdoc.Get_grp_many(Jpath__query_pages));
 		int len = pages_nde.Len();
 		for (int i = 0; i < len; ++i) {
 			Parse_page(hash, pages_nde.Get_at_as_kv(i).Val_as_nde());
diff --git a/400_xowa/src/gplx/xowa/wms/revs/Xowm_rev_wkr__meta__wm_tst.java b/400_xowa/src/gplx/xowa/bldrs/wms/revs/Xowm_rev_wkr__meta__wm_tst.java
similarity index 88%
rename from 400_xowa/src/gplx/xowa/wms/revs/Xowm_rev_wkr__meta__wm_tst.java
rename to 400_xowa/src/gplx/xowa/bldrs/wms/revs/Xowm_rev_wkr__meta__wm_tst.java
index 4d306ed28..12b459bd8 100644
--- a/400_xowa/src/gplx/xowa/wms/revs/Xowm_rev_wkr__meta__wm_tst.java
+++ b/400_xowa/src/gplx/xowa/bldrs/wms/revs/Xowm_rev_wkr__meta__wm_tst.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.wms.revs; import gplx.*; import gplx.xowa.*; import gplx.xowa.wms.*;
-import org.junit.*; import gplx.langs.jsons.*; import gplx.core.net.*; import gplx.xowa.nss.*;
+package gplx.xowa.bldrs.wms.revs; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*; import gplx.xowa.bldrs.wms.*;
+import org.junit.*; import gplx.langs.jsons.*; import gplx.core.net.*; import gplx.xowa.wikis.nss.*;
 import gplx.xowa.wikis.domains.*;
 public class Xowm_rev_wkr__meta__wm_tst {
 	private final Xowm_rev_wkr__meta__wm_fxt fxt = new Xowm_rev_wkr__meta__wm_fxt();
-	@Before public void init() {Gfo_usr_dlg_.I = Gfo_usr_dlg_.Test_console();}
-	@After public void term() {Gfo_usr_dlg_.I = Gfo_usr_dlg_.Noop;}
+	@Before public void init() {Gfo_usr_dlg_.Instance = Gfo_usr_dlg_.Test_console();}
+	@After public void term() {Gfo_usr_dlg_.Instance = Gfo_usr_dlg_.Noop;}
 	@Test  public void Basic() {
 		Wmapi_itm__pge[] expd = fxt.Make_pge_ary
 		( fxt.Make_pge(Xow_ns_.Id_main, "A", 1, 11, 100, "2015-01-01T01:01:01Z", "user1", "note1")
@@ -39,7 +39,7 @@ public class Xowm_rev_wkr__meta__wm_tst {
 }
 class Xowm_rev_wkr__meta__wm_fxt {
 	private final String domain_str = Xow_domain_itm_.Str__enwiki;
-	private final Ordered_hash rev_hash = Ordered_hash_.new_bry_();
+	private final Ordered_hash rev_hash = Ordered_hash_.New_bry();
 	private final Xowm_rev_wkr__meta__wm meta_wkr = new Xowm_rev_wkr__meta__wm();
 	private final Wmapi_itm_json_wtr json_wtr = new Wmapi_itm_json_wtr();
 	public Xowm_rev_wkr__meta__wm_fxt() {
diff --git a/400_xowa/src/gplx/xowa/wms/revs/Xwom_rev_wkr__meta.java b/400_xowa/src/gplx/xowa/bldrs/wms/revs/Xwom_rev_wkr__meta.java
similarity index 88%
rename from 400_xowa/src/gplx/xowa/wms/revs/Xwom_rev_wkr__meta.java
rename to 400_xowa/src/gplx/xowa/bldrs/wms/revs/Xwom_rev_wkr__meta.java
index ae7241840..f25e43550 100644
--- a/400_xowa/src/gplx/xowa/wms/revs/Xwom_rev_wkr__meta.java
+++ b/400_xowa/src/gplx/xowa/bldrs/wms/revs/Xwom_rev_wkr__meta.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.wms.revs; import gplx.*; import gplx.xowa.*; import gplx.xowa.wms.*;
+package gplx.xowa.bldrs.wms.revs; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*; import gplx.xowa.bldrs.wms.*;
 interface Xowm_rev_wkr__meta {
 	void Fetch_meta(String domain_bry, Ordered_hash hash, int bgn, int end);
 }
diff --git a/400_xowa/src/gplx/xowa/wms/sites/Site_core_db.java b/400_xowa/src/gplx/xowa/bldrs/wms/sites/Site_core_db.java
similarity index 79%
rename from 400_xowa/src/gplx/xowa/wms/sites/Site_core_db.java
rename to 400_xowa/src/gplx/xowa/bldrs/wms/sites/Site_core_db.java
index 65f176ecf..92e1b3f74 100644
--- a/400_xowa/src/gplx/xowa/wms/sites/Site_core_db.java
+++ b/400_xowa/src/gplx/xowa/bldrs/wms/sites/Site_core_db.java
@@ -15,10 +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.wms.sites; import gplx.*; import gplx.xowa.*; import gplx.xowa.wms.*;
+package gplx.xowa.bldrs.wms.sites; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*; import gplx.xowa.bldrs.wms.*;
 import gplx.dbs.*;
-import gplx.xowa.nss.*;
-import gplx.xowa.wikis.domains.*; import gplx.xowa.wikis.xwikis.*;
+import gplx.xowa.wikis.nss.*;
+import gplx.xowa.wikis.domains.*; import gplx.xowa.wikis.xwikis.*; import gplx.xowa.wikis.xwikis.bldrs.*;
 public class Site_core_db {
 	private Db_conn conn;
 	private final Site_core_tbl tbl__core;
@@ -40,7 +40,7 @@ public class Site_core_db {
 	private final Site_language_tbl tbl__language;
 	private final Db_tbl[] tbl_ary;
 	public Site_core_db(Io_url db_url) {
-		Db_conn_bldr_data conn_data = Db_conn_bldr.I.Get_or_new(db_url);
+		Db_conn_bldr_data conn_data = Db_conn_bldr.Instance.Get_or_new(db_url);
 		this.conn = conn_data.Conn(); boolean created = conn_data.Created();
 		this.tbl__core = new Site_core_tbl(conn);
 		this.tbl__general = new Site_kv_tbl(conn, "site_general");
@@ -109,49 +109,21 @@ public class Site_core_db {
 	}
 	public Xow_ns_mgr Load_namespace(byte[] domain_bry) {
 		Xow_ns_mgr rv = new Xow_ns_mgr(gplx.xowa.langs.cases.Xol_case_mgr_.U8());
-		Ordered_hash hash = Ordered_hash_.new_();
+		Ordered_hash hash = Ordered_hash_.New();
 		tbl__namespace.Select(Xow_abrv_xo_.To_bry(domain_bry), hash);
 		Ns_mgr__load(rv, hash);
 		return rv;
 	}
 	public void Load_interwikimap(Xow_domain_itm domain_itm, gplx.xowa.wikis.xwikis.Xow_xwiki_mgr xwiki_mgr) {
-		Ordered_hash hash = Ordered_hash_.new_();
+		Ordered_hash hash = Ordered_hash_.New();
 		tbl__interwikimap.Select(domain_itm.Abrv_xo(), hash);
 		int len = hash.Count();
 		for (int i = 0; i < len; ++i)  {
 			Site_interwikimap_itm itm = (Site_interwikimap_itm)hash.Get_at(i);
-			Xow_xwiki_itm xwiki_itm = Xow_xwiki_itm_bldr.I.Bld(domain_itm, itm.Prefix(), itm.Url(), null);
+			Xow_xwiki_itm xwiki_itm = Xow_xwiki_itm_bldr.Instance.Bld_mw(domain_itm, itm.Prefix(), itm.Url(), null);
 			xwiki_mgr.Add_itm(xwiki_itm);
 		}
 	}
-	public void Load_extensiontag(Xow_domain_itm domain_itm, gplx.xowa.parsers.xndes.Xop_xnde_tag_regy xnde_tag_regy) {
-		try {
-//				Ordered_hash tag_hash = Ordered_hash_.new_();
-//				tbl__extensiontag.Select(domain_itm.Abrv_xo(), tag_hash);
-//				Hash_adp_bry key_hash = To_key_hash(tag_hash);
-//				xnde_tag_regy.Init_by_meta(key_hash);
-			xnde_tag_regy.Init_by_meta(null);
-		}
-		catch (Exception e) {
-			Xoa_app_.Usr_dlg().Warn_many("", "", "failed to load extensiontag; wiki=~{0} err=~{1}", domain_itm.Domain_str(), Err_.Message_gplx_full(e));
-		}
-	}
-//		private static Hash_adp_bry To_key_hash(Ordered_hash tag_hash) {
-//			Hash_adp_bry rv = Hash_adp_bry.ci_a7();	// ASCII: assume all xtn tags do not have non-ASCII chars
-//			int len = tag_hash.Count(); if (len == 0) return null;
-//			for (int i = 0; i < len; ++i) {
-//				byte[] tag = (byte[])tag_hash.Get_at(i);
-//				int idx_last = tag.length - 1;
-//				if (	tag.length < 3
-//					||	tag[0]			!= Byte_ascii.Angle_bgn
-//					||	tag[idx_last]	!= Byte_ascii.Angle_end
-//					)
-//					throw Err_.new_("site_meta", "invalid extensiontag", "tag", tag);
-//				byte[] key = Bry_.Mid(tag, 1, idx_last);
-//				rv.Add(key, key);
-//			}
-//			return rv;
-//		}
 	private static void Ns_mgr__load(Xow_ns_mgr rv, Ordered_hash hash) {
 		rv.Clear();
 		int len = hash.Count();
diff --git a/400_xowa/src/gplx/xowa/wms/sites/Site_core_itm.java b/400_xowa/src/gplx/xowa/bldrs/wms/sites/Site_core_itm.java
similarity index 91%
rename from 400_xowa/src/gplx/xowa/wms/sites/Site_core_itm.java
rename to 400_xowa/src/gplx/xowa/bldrs/wms/sites/Site_core_itm.java
index 93a4045c6..112f2d0c7 100644
--- a/400_xowa/src/gplx/xowa/wms/sites/Site_core_itm.java
+++ b/400_xowa/src/gplx/xowa/bldrs/wms/sites/Site_core_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.wms.sites; import gplx.*; import gplx.xowa.*; import gplx.xowa.wms.*;
+package gplx.xowa.bldrs.wms.sites; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*; import gplx.xowa.bldrs.wms.*;
 public class Site_core_itm {
 	public Site_core_itm(byte[] site_abrv, byte[] site_domain, boolean json_completed, DateAdp json_date, byte[] json_text) {
 		this.site_abrv = site_abrv;
diff --git a/400_xowa/src/gplx/xowa/wms/sites/Site_core_tbl.java b/400_xowa/src/gplx/xowa/bldrs/wms/sites/Site_core_tbl.java
similarity index 95%
rename from 400_xowa/src/gplx/xowa/wms/sites/Site_core_tbl.java
rename to 400_xowa/src/gplx/xowa/bldrs/wms/sites/Site_core_tbl.java
index 3cb53d1c4..8c5b347f5 100644
--- a/400_xowa/src/gplx/xowa/wms/sites/Site_core_tbl.java
+++ b/400_xowa/src/gplx/xowa/bldrs/wms/sites/Site_core_tbl.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.wms.sites; import gplx.*; import gplx.xowa.*; import gplx.xowa.wms.*;
+package gplx.xowa.bldrs.wms.sites; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*; import gplx.xowa.bldrs.wms.*;
 import gplx.dbs.*;
 public class Site_core_tbl implements Db_tbl {
 	private static final String tbl_name = "site_core"; private final Db_meta_fld_list flds = new Db_meta_fld_list();
diff --git a/400_xowa/src/gplx/xowa/wms/sites/Site_extension_itm.java b/400_xowa/src/gplx/xowa/bldrs/wms/sites/Site_extension_itm.java
similarity index 95%
rename from 400_xowa/src/gplx/xowa/wms/sites/Site_extension_itm.java
rename to 400_xowa/src/gplx/xowa/bldrs/wms/sites/Site_extension_itm.java
index 1cbdb6754..5959d90c1 100644
--- a/400_xowa/src/gplx/xowa/wms/sites/Site_extension_itm.java
+++ b/400_xowa/src/gplx/xowa/bldrs/wms/sites/Site_extension_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.wms.sites; import gplx.*; import gplx.xowa.*; import gplx.xowa.wms.*;
+package gplx.xowa.bldrs.wms.sites; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*; import gplx.xowa.bldrs.wms.*;
 class Site_extension_itm implements To_str_able {
 	public Site_extension_itm(byte[] type, byte[] name, byte[] namemsg, byte[] description, byte[] descriptionmsg, byte[] author, byte[] url, byte[] version
 		, byte[] vcs_system, byte[] vcs_version, byte[] vcs_url, byte[] vcs_date, byte[] license_name, byte[] license, byte[] credits) {
diff --git a/400_xowa/src/gplx/xowa/wms/sites/Site_extension_tbl.java b/400_xowa/src/gplx/xowa/bldrs/wms/sites/Site_extension_tbl.java
similarity index 96%
rename from 400_xowa/src/gplx/xowa/wms/sites/Site_extension_tbl.java
rename to 400_xowa/src/gplx/xowa/bldrs/wms/sites/Site_extension_tbl.java
index 98efe7eb4..ccfc0c217 100644
--- a/400_xowa/src/gplx/xowa/wms/sites/Site_extension_tbl.java
+++ b/400_xowa/src/gplx/xowa/bldrs/wms/sites/Site_extension_tbl.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.wms.sites; import gplx.*; import gplx.xowa.*; import gplx.xowa.wms.*;
+package gplx.xowa.bldrs.wms.sites; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*; import gplx.xowa.bldrs.wms.*;
 import gplx.dbs.*;
 class Site_extension_tbl implements Db_tbl {
 	private static final String tbl_name = "site_extension"; private final Db_meta_fld_list flds = new Db_meta_fld_list();
diff --git a/400_xowa/src/gplx/xowa/wms/sites/Site_general_itm.java b/400_xowa/src/gplx/xowa/bldrs/wms/sites/Site_general_itm.java
similarity index 96%
rename from 400_xowa/src/gplx/xowa/wms/sites/Site_general_itm.java
rename to 400_xowa/src/gplx/xowa/bldrs/wms/sites/Site_general_itm.java
index 5fb44fae2..083237637 100644
--- a/400_xowa/src/gplx/xowa/wms/sites/Site_general_itm.java
+++ b/400_xowa/src/gplx/xowa/bldrs/wms/sites/Site_general_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.wms.sites; import gplx.*; import gplx.xowa.*; import gplx.xowa.wms.*;
+package gplx.xowa.bldrs.wms.sites; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*; import gplx.xowa.bldrs.wms.*;
 class Site_general_itm implements To_str_able {
 	public Site_general_itm Ctor(byte[] main_page, byte[] base_url, byte[] site_name, byte[] logo, byte[] generator
 	, byte[] php_version, byte[] php_sapi, byte[] hhvm_version, byte[] db_type, byte[] db_version
diff --git a/400_xowa/src/gplx/xowa/wms/sites/Site_interwikimap_itm.java b/400_xowa/src/gplx/xowa/bldrs/wms/sites/Site_interwikimap_itm.java
similarity index 91%
rename from 400_xowa/src/gplx/xowa/wms/sites/Site_interwikimap_itm.java
rename to 400_xowa/src/gplx/xowa/bldrs/wms/sites/Site_interwikimap_itm.java
index 22c9c26de..9ce1c03e4 100644
--- a/400_xowa/src/gplx/xowa/wms/sites/Site_interwikimap_itm.java
+++ b/400_xowa/src/gplx/xowa/bldrs/wms/sites/Site_interwikimap_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.wms.sites; import gplx.*; import gplx.xowa.*; import gplx.xowa.wms.*;
+package gplx.xowa.bldrs.wms.sites; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*; import gplx.xowa.bldrs.wms.*;
 class Site_interwikimap_itm implements To_str_able {
 	public Site_interwikimap_itm(byte[] prefix, boolean local, byte[] language, boolean localinterwiki, byte[] url, boolean protorel) {
 		this.prefix = prefix;
diff --git a/400_xowa/src/gplx/xowa/wms/sites/Site_interwikimap_tbl.java b/400_xowa/src/gplx/xowa/bldrs/wms/sites/Site_interwikimap_tbl.java
similarity index 95%
rename from 400_xowa/src/gplx/xowa/wms/sites/Site_interwikimap_tbl.java
rename to 400_xowa/src/gplx/xowa/bldrs/wms/sites/Site_interwikimap_tbl.java
index 4cc6fbc39..f74f95dd5 100644
--- a/400_xowa/src/gplx/xowa/wms/sites/Site_interwikimap_tbl.java
+++ b/400_xowa/src/gplx/xowa/bldrs/wms/sites/Site_interwikimap_tbl.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.wms.sites; import gplx.*; import gplx.xowa.*; import gplx.xowa.wms.*;
+package gplx.xowa.bldrs.wms.sites; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*; import gplx.xowa.bldrs.wms.*;
 import gplx.dbs.*;
 class Site_interwikimap_tbl implements Db_tbl {
 	private static final String tbl_name = "site_interwikimap"; private final Db_meta_fld_list flds = new Db_meta_fld_list();
diff --git a/400_xowa/src/gplx/xowa/wms/sites/Site_json_fetcher.java b/400_xowa/src/gplx/xowa/bldrs/wms/sites/Site_json_fetcher.java
similarity index 90%
rename from 400_xowa/src/gplx/xowa/wms/sites/Site_json_fetcher.java
rename to 400_xowa/src/gplx/xowa/bldrs/wms/sites/Site_json_fetcher.java
index 2ce61cb69..2fcf8b699 100644
--- a/400_xowa/src/gplx/xowa/wms/sites/Site_json_fetcher.java
+++ b/400_xowa/src/gplx/xowa/bldrs/wms/sites/Site_json_fetcher.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.wms.sites; import gplx.*; import gplx.xowa.*; import gplx.xowa.wms.*;
+package gplx.xowa.bldrs.wms.sites; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*; import gplx.xowa.bldrs.wms.*;
 import gplx.core.net.*; import gplx.dbs.cfgs.*;
 import gplx.langs.jsons.*;	
 class Site_json_fetcher {
@@ -54,11 +54,11 @@ class Site_json_fetcher {
 		}
 		return rv;
 	}
-	private byte[] Get_json_from_fs(Io_url url) {return url == null ? null : Io_mgr.I.LoadFilBryOrNull(url);}
+	private byte[] Get_json_from_fs(Io_url url) {return url == null ? null : Io_mgr.Instance.LoadFilBryOrNull(url);}
 	private byte[] Get_json_from_db(Db_cfg_tbl cfg_tbl) {return cfg_tbl.Select_bry(Cfg_grp__xowa_bldr_api, Cfg_key__xowa_bldr_api__data);}
 	private byte[] Get_json_from_wm(Gfo_usr_dlg usr_dlg, Gfo_inet_conn inet_conn, String domain_str, Db_cfg_tbl cfg_tbl) {
 		String api_str = "action=query&format=json&meta=siteinfo&siprop=general|namespaces|statistics|interwikimap|namespacealiases|specialpagealiases|libraries|extensions|skins|magicwords|functionhooks|showhooks|extensiontags|protocols|defaultoptions|languages";
-		byte[] rv = Xowm_api_mgr.Call_api(usr_dlg, inet_conn, domain_str, api_str);
+		byte[] rv = Xowm_api_mgr.Call_by_qarg(usr_dlg, inet_conn, domain_str, api_str);
 		if (rv != null) cfg_tbl.Assert_bry(Cfg_grp__xowa_bldr_api, Cfg_key__xowa_bldr_api__data, rv);
 		return rv;
 	}
diff --git a/400_xowa/src/gplx/xowa/wms/sites/Site_json_parser.java b/400_xowa/src/gplx/xowa/bldrs/wms/sites/Site_json_parser.java
similarity index 62%
rename from 400_xowa/src/gplx/xowa/wms/sites/Site_json_parser.java
rename to 400_xowa/src/gplx/xowa/bldrs/wms/sites/Site_json_parser.java
index bb3b3df00..2da6f21d4 100644
--- a/400_xowa/src/gplx/xowa/wms/sites/Site_json_parser.java
+++ b/400_xowa/src/gplx/xowa/bldrs/wms/sites/Site_json_parser.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.wms.sites; import gplx.*; import gplx.xowa.*; import gplx.xowa.wms.*;
+package gplx.xowa.bldrs.wms.sites; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*; import gplx.xowa.bldrs.wms.*;
 import gplx.core.primitives.*; import gplx.langs.jsons.*;
-class Site_json_parser {
+public class Site_json_parser {
 	private final Json_parser json_parser;
 	private final Json_parser__list_nde__base parser__basic = new Json_parser__list_nde__base();
 	private final Site_meta_parser__general parser__general = new Site_meta_parser__general();
@@ -35,31 +35,34 @@ class Site_json_parser {
 	public Site_json_parser(Json_parser json_parser) {this.json_parser = json_parser;}
 	public void Parse_root(Site_meta_itm rv, String context, byte[] src) {
 		Json_doc jdoc = json_parser.Parse(src);
-		Parse_root(rv, context, jdoc.Root_nde().Get_at_as_kv(1).Val_as_nde());
+		Parse_root(rv, context, jdoc.Root_nde().Get_at_as_kv(0).Val_as_nde());
 	}
 	public void Parse_root(Site_meta_itm rv, String context, Json_nde root) {
 		int len = root.Len();			
 		for (int i = 0; i < len; ++i) {
 			Json_kv sub = root.Get_at_as_kv(i);
-			byte[] sub_key = sub.Key_as_bry();
-			switch (nde_hash.Get_as_int(sub_key)) {
-				case Tid_general			: parser__general.Parse(context, rv.General_list(), sub.Val_as_nde()); break;
-				case Tid_namespace			: parser__namespace.Parse(context, rv.Namespace_list(), sub.Val_as_nde()); break;
-				case Tid_statistic			: parser__statistic.Parse(context, rv.Statistic_itm(), sub.Val_as_nde()); break;
-				case Tid_interwikimap		: parser__interwiki.Parse(context, rv.Interwikimap_list(), sub.Val_as_ary()); break;
-				case Tid_namespacealias		: parser__namespacealias.Parse(context, rv.Namespacealias_list(), sub.Val_as_ary()); break;
-				case Tid_specialpagealias	: parser__specialpagealias.Parse(context, rv.Specialpagealias_list(), sub.Val_as_ary()); break;
-				case Tid_library			: parser__library.Parse(context, rv.Library_list(), sub.Val_as_ary()); break;
-				case Tid_extension			: parser__extension.Parse(context, rv.Extension_list(), sub.Val_as_ary()); break;
-				case Tid_skin				: parser__skin.Parse(context, rv.Skin_list(), sub.Val_as_ary()); break;
-				case Tid_magicword			: parser__magicword.Parse(context, rv.Magicword_list(), sub.Val_as_ary()); break;
-				case Tid_functionhook		: parser__basic.Parse_to_list_as_bry(context, sub.Val_as_ary(), rv.Functionhook_list()); break;
-				case Tid_showhook			: parser__showhook.Parse(context, rv.Showhook_list(), sub.Val_as_ary()); break;
-				case Tid_extensiontag		: parser__basic.Parse_to_list_as_bry(context, sub.Val_as_ary(), rv.Extensiontag_list()); break;
-				case Tid_protocol			: parser__basic.Parse_to_list_as_bry(context, sub.Val_as_ary(), rv.Protocol_list()); break;
-				case Tid_defaultoption		: parser__basic.Parse_to_list_as_kv(context, sub.Val_as_nde(), rv.Defaultoption_list()); break;
-				case Tid_language			: parser__language.Parse(context, rv.Language_list(), sub.Val_as_ary()); break;
-			}
+			Parse_node(rv, context, sub);
+		}
+	}
+	private void Parse_node(Site_meta_itm rv, String context, Json_kv sub) {
+		byte[] sub_key = sub.Key_as_bry();
+		switch (nde_hash.Get_as_int(sub_key)) {
+			case Tid_general			: parser__general.Parse(context, rv.General_list(), sub.Val_as_nde()); break;
+			case Tid_namespace			: parser__namespace.Parse(context, rv.Namespace_list(), sub.Val_as_nde()); break;
+			case Tid_statistic			: parser__statistic.Parse(context, rv.Statistic_itm(), sub.Val_as_nde()); break;
+			case Tid_interwikimap		: parser__interwiki.Parse(context, rv.Interwikimap_list(), sub.Val_as_ary()); break;
+			case Tid_namespacealias		: parser__namespacealias.Parse(context, rv.Namespacealias_list(), sub.Val_as_ary()); break;
+			case Tid_specialpagealias	: parser__specialpagealias.Parse(context, rv.Specialpagealias_list(), sub.Val_as_ary()); break;
+			case Tid_library			: parser__library.Parse(context, rv.Library_list(), sub.Val_as_ary()); break;
+			case Tid_extension			: parser__extension.Parse(context, rv.Extension_list(), sub.Val_as_ary()); break;
+			case Tid_skin				: parser__skin.Parse(context, rv.Skin_list(), sub.Val_as_ary()); break;
+			case Tid_magicword			: parser__magicword.Parse(context, rv.Magicword_list(), sub.Val_as_ary()); break;
+			case Tid_functionhook		: parser__basic.Parse_to_list_as_bry(context, sub.Val_as_ary(), rv.Functionhook_list()); break;
+			case Tid_showhook			: parser__showhook.Parse(context, rv.Showhook_list(), sub.Val_as_ary()); break;
+			case Tid_extensiontag		: parser__basic.Parse_to_list_as_bry(context, sub.Val_as_ary(), rv.Extensiontag_list()); break;
+			case Tid_protocol			: parser__basic.Parse_to_list_as_bry(context, sub.Val_as_ary(), rv.Protocol_list()); break;
+			case Tid_defaultoption		: parser__basic.Parse_to_list_as_kv(context, sub.Val_as_nde(), rv.Defaultoption_list()); break;
+			case Tid_language			: parser__language.Parse(context, rv.Language_list(), sub.Val_as_ary()); break;
 		}
 	}
 	private static final int
diff --git a/400_xowa/src/gplx/xowa/wms/sites/Site_json_parser_tst.java b/400_xowa/src/gplx/xowa/bldrs/wms/sites/Site_json_parser_tst.java
similarity index 95%
rename from 400_xowa/src/gplx/xowa/wms/sites/Site_json_parser_tst.java
rename to 400_xowa/src/gplx/xowa/bldrs/wms/sites/Site_json_parser_tst.java
index 7a942f6b6..d592bb165 100644
--- a/400_xowa/src/gplx/xowa/wms/sites/Site_json_parser_tst.java
+++ b/400_xowa/src/gplx/xowa/bldrs/wms/sites/Site_json_parser_tst.java
@@ -15,12 +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.wms.sites; import gplx.*; import gplx.xowa.*; import gplx.xowa.wms.*;
-import org.junit.*; import gplx.langs.jsons.*; import gplx.xowa.nss.*;
+package gplx.xowa.bldrs.wms.sites; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*; import gplx.xowa.bldrs.wms.*;
+import org.junit.*; import gplx.langs.jsons.*; import gplx.xowa.wikis.nss.*;
 public class Site_json_parser_tst {
 	private final Site_json_parser_fxt fxt = new Site_json_parser_fxt();
-	@Before public void init() {Gfo_usr_dlg_.I = Gfo_usr_dlg_.Test_console();}
-	@After public void term() {Gfo_usr_dlg_.I = Gfo_usr_dlg_.Noop;}
+	@Before public void init() {Gfo_usr_dlg_.Instance = Gfo_usr_dlg_.Test_console();}
+	@After public void term() {Gfo_usr_dlg_.Instance = Gfo_usr_dlg_.Noop;}
 	@Test  public void General() {
 		fxt.Exec_parse(String_.Concat_lines_nl_skip_last
 		( "{ 'general':"
@@ -366,11 +366,11 @@ public class Site_json_parser_tst {
 	}
 //		@Test   public void Smoke() {
 //			Io_url json_url = Tfds.RscDir.GenSubFil_nest("400_xowa", "site_meta__en.wikipedia.org.json");
-//			byte[] src = Io_mgr.I.LoadFilBry(json_url);
+//			byte[] src = Io_mgr.Instance.LoadFilBry(json_url);
 //			Site_json_parser parser = new Site_json_parser();
 //			Site_meta_itm meta_itm = new Site_meta_itm();
 //			parser.Parse_root(meta_itm, "en.wikipedia.org", src);
-//			gplx.dbs.Db_conn_bldr.I.Reg_default_sqlite();
+//			gplx.dbs.Db_conn_bldr.Instance.Reg_default_sqlite();
 //			Site_core_db core_db = new Site_core_db(Tfds.RscDir.GenSubFil_nest("400_xowa", "site_meta.sqlite3"));
 //			core_db.Save(meta_itm, Bry_.new_a7("en.w"));
 //		}
diff --git a/400_xowa/src/gplx/xowa/wms/sites/Site_kv_itm.java b/400_xowa/src/gplx/xowa/bldrs/wms/sites/Site_kv_itm.java
similarity index 87%
rename from 400_xowa/src/gplx/xowa/wms/sites/Site_kv_itm.java
rename to 400_xowa/src/gplx/xowa/bldrs/wms/sites/Site_kv_itm.java
index e80abdd20..fadbe7902 100644
--- a/400_xowa/src/gplx/xowa/wms/sites/Site_kv_itm.java
+++ b/400_xowa/src/gplx/xowa/bldrs/wms/sites/Site_kv_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.wms.sites; import gplx.*; import gplx.xowa.*; import gplx.xowa.wms.*;
+package gplx.xowa.bldrs.wms.sites; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*; import gplx.xowa.bldrs.wms.*;
 class Site_kv_itm {
 	public Site_kv_itm(byte[] key, byte[] val) {this.key = key; this.val = val;}
 	public byte[] Key() {return key;} private final byte[] key;
diff --git a/400_xowa/src/gplx/xowa/wms/sites/Site_kv_tbl.java b/400_xowa/src/gplx/xowa/bldrs/wms/sites/Site_kv_tbl.java
similarity index 94%
rename from 400_xowa/src/gplx/xowa/wms/sites/Site_kv_tbl.java
rename to 400_xowa/src/gplx/xowa/bldrs/wms/sites/Site_kv_tbl.java
index 8c08217f5..e9851f6e2 100644
--- a/400_xowa/src/gplx/xowa/wms/sites/Site_kv_tbl.java
+++ b/400_xowa/src/gplx/xowa/bldrs/wms/sites/Site_kv_tbl.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.wms.sites; import gplx.*; import gplx.xowa.*; import gplx.xowa.wms.*;
+package gplx.xowa.bldrs.wms.sites; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*; import gplx.xowa.bldrs.wms.*;
 import gplx.dbs.*;
 class Site_kv_tbl implements Db_tbl {
 	private String tbl_name; private final Db_meta_fld_list flds = new Db_meta_fld_list();
diff --git a/400_xowa/src/gplx/xowa/wms/sites/Site_language_itm.java b/400_xowa/src/gplx/xowa/bldrs/wms/sites/Site_language_itm.java
similarity index 88%
rename from 400_xowa/src/gplx/xowa/wms/sites/Site_language_itm.java
rename to 400_xowa/src/gplx/xowa/bldrs/wms/sites/Site_language_itm.java
index 89b21d0f3..b220c6c60 100644
--- a/400_xowa/src/gplx/xowa/wms/sites/Site_language_itm.java
+++ b/400_xowa/src/gplx/xowa/bldrs/wms/sites/Site_language_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.wms.sites; import gplx.*; import gplx.xowa.*; import gplx.xowa.wms.*;
+package gplx.xowa.bldrs.wms.sites; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*; import gplx.xowa.bldrs.wms.*;
 class Site_language_itm implements To_str_able {
 	public Site_language_itm(byte[] code, byte[] name) {this.code = code; this.name = name;}
 	public byte[] Code() {return code;} private final byte[] code;
diff --git a/400_xowa/src/gplx/xowa/wms/sites/Site_language_tbl.java b/400_xowa/src/gplx/xowa/bldrs/wms/sites/Site_language_tbl.java
similarity index 94%
rename from 400_xowa/src/gplx/xowa/wms/sites/Site_language_tbl.java
rename to 400_xowa/src/gplx/xowa/bldrs/wms/sites/Site_language_tbl.java
index 9b64c7cd8..d7cd75ed0 100644
--- a/400_xowa/src/gplx/xowa/wms/sites/Site_language_tbl.java
+++ b/400_xowa/src/gplx/xowa/bldrs/wms/sites/Site_language_tbl.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.wms.sites; import gplx.*; import gplx.xowa.*; import gplx.xowa.wms.*;
+package gplx.xowa.bldrs.wms.sites; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*; import gplx.xowa.bldrs.wms.*;
 import gplx.dbs.*;
 class Site_language_tbl implements Db_tbl {
 	private static final String tbl_name = "site_language"; private final Db_meta_fld_list flds = new Db_meta_fld_list();
diff --git a/400_xowa/src/gplx/xowa/wms/sites/Site_library_itm.java b/400_xowa/src/gplx/xowa/bldrs/wms/sites/Site_library_itm.java
similarity index 89%
rename from 400_xowa/src/gplx/xowa/wms/sites/Site_library_itm.java
rename to 400_xowa/src/gplx/xowa/bldrs/wms/sites/Site_library_itm.java
index 1ae777792..c2188d0ed 100644
--- a/400_xowa/src/gplx/xowa/wms/sites/Site_library_itm.java
+++ b/400_xowa/src/gplx/xowa/bldrs/wms/sites/Site_library_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.wms.sites; import gplx.*; import gplx.xowa.*; import gplx.xowa.wms.*;
+package gplx.xowa.bldrs.wms.sites; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*; import gplx.xowa.bldrs.wms.*;
 class Site_library_itm implements To_str_able {
 	public Site_library_itm(byte[] name, byte[] version) {this.name = name; this.version = version;}
 	public byte[] Name() {return name;} private final byte[] name;
diff --git a/400_xowa/src/gplx/xowa/wms/sites/Site_library_tbl.java b/400_xowa/src/gplx/xowa/bldrs/wms/sites/Site_library_tbl.java
similarity index 94%
rename from 400_xowa/src/gplx/xowa/wms/sites/Site_library_tbl.java
rename to 400_xowa/src/gplx/xowa/bldrs/wms/sites/Site_library_tbl.java
index 906dba9d6..3f85e513a 100644
--- a/400_xowa/src/gplx/xowa/wms/sites/Site_library_tbl.java
+++ b/400_xowa/src/gplx/xowa/bldrs/wms/sites/Site_library_tbl.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.wms.sites; import gplx.*; import gplx.xowa.*; import gplx.xowa.wms.*;
+package gplx.xowa.bldrs.wms.sites; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*; import gplx.xowa.bldrs.wms.*;
 import gplx.dbs.*;
 class Site_library_tbl implements Db_tbl {
 	private static final String tbl_name = "site_library"; private final Db_meta_fld_list flds = new Db_meta_fld_list();
diff --git a/400_xowa/src/gplx/xowa/wms/sites/Site_magicword_itm.java b/400_xowa/src/gplx/xowa/bldrs/wms/sites/Site_magicword_itm.java
similarity index 90%
rename from 400_xowa/src/gplx/xowa/wms/sites/Site_magicword_itm.java
rename to 400_xowa/src/gplx/xowa/bldrs/wms/sites/Site_magicword_itm.java
index d6f49360a..5e451a573 100644
--- a/400_xowa/src/gplx/xowa/wms/sites/Site_magicword_itm.java
+++ b/400_xowa/src/gplx/xowa/bldrs/wms/sites/Site_magicword_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.wms.sites; import gplx.*; import gplx.xowa.*; import gplx.xowa.wms.*;
+package gplx.xowa.bldrs.wms.sites; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*; import gplx.xowa.bldrs.wms.*;
 class Site_magicword_itm implements To_str_able {
 	public Site_magicword_itm(byte[] name, boolean case_match, byte[][] aliases) {
 		this.name = name; this.case_match = case_match; this.aliases = aliases;
diff --git a/400_xowa/src/gplx/xowa/wms/sites/Site_magicword_tbl.java b/400_xowa/src/gplx/xowa/bldrs/wms/sites/Site_magicword_tbl.java
similarity index 94%
rename from 400_xowa/src/gplx/xowa/wms/sites/Site_magicword_tbl.java
rename to 400_xowa/src/gplx/xowa/bldrs/wms/sites/Site_magicword_tbl.java
index 4644c4c7d..4bef17443 100644
--- a/400_xowa/src/gplx/xowa/wms/sites/Site_magicword_tbl.java
+++ b/400_xowa/src/gplx/xowa/bldrs/wms/sites/Site_magicword_tbl.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.wms.sites; import gplx.*; import gplx.xowa.*; import gplx.xowa.wms.*;
+package gplx.xowa.bldrs.wms.sites; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*; import gplx.xowa.bldrs.wms.*;
 import gplx.dbs.*;
 class Site_magicword_tbl implements Db_tbl {
 	private static final String tbl_name = "site_magicword"; private final Db_meta_fld_list flds = new Db_meta_fld_list();
diff --git a/400_xowa/src/gplx/xowa/wms/sites/Site_meta_itm.java b/400_xowa/src/gplx/xowa/bldrs/wms/sites/Site_meta_itm.java
similarity index 62%
rename from 400_xowa/src/gplx/xowa/wms/sites/Site_meta_itm.java
rename to 400_xowa/src/gplx/xowa/bldrs/wms/sites/Site_meta_itm.java
index 56d06177e..3c4f21308 100644
--- a/400_xowa/src/gplx/xowa/wms/sites/Site_meta_itm.java
+++ b/400_xowa/src/gplx/xowa/bldrs/wms/sites/Site_meta_itm.java
@@ -15,22 +15,41 @@ 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.wms.sites; import gplx.*; import gplx.xowa.*; import gplx.xowa.wms.*;
+package gplx.xowa.bldrs.wms.sites; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*; import gplx.xowa.bldrs.wms.*;
 public class Site_meta_itm {
-	public Ordered_hash			General_list() {return general_list;} private final Ordered_hash general_list = Ordered_hash_.new_bry_();
-	public Ordered_hash			Namespace_list() {return namespace_list;} private final Ordered_hash namespace_list = Ordered_hash_.new_();
+	public Ordered_hash			General_list() {return general_list;} private final Ordered_hash general_list = Ordered_hash_.New_bry();
+	public Ordered_hash			Namespace_list() {return namespace_list;} private final Ordered_hash namespace_list = Ordered_hash_.New();
 	public Site_statistic_itm	Statistic_itm() {return statistic_itm;} private final Site_statistic_itm statistic_itm = new Site_statistic_itm();
-	public Ordered_hash			Interwikimap_list() {return interwikimap_list;} private final Ordered_hash interwikimap_list = Ordered_hash_.new_bry_();
+	public Ordered_hash			Interwikimap_list() {return interwikimap_list;} private final Ordered_hash interwikimap_list = Ordered_hash_.New_bry();
 	public List_adp				Namespacealias_list() {return namespacealias_list;} private final List_adp namespacealias_list = List_adp_.new_();
-	public Ordered_hash			Specialpagealias_list() {return specialpagealias_list;} private final Ordered_hash specialpagealias_list = Ordered_hash_.new_bry_();
-	public Ordered_hash			Library_list() {return library_list;} private final Ordered_hash library_list = Ordered_hash_.new_bry_();
-	public Ordered_hash			Extension_list() {return extension_list;} private final Ordered_hash extension_list = Ordered_hash_.new_bry_();
-	public Ordered_hash			Skin_list() {return skin_list;} private final Ordered_hash skin_list = Ordered_hash_.new_bry_();
-	public Ordered_hash			Magicword_list() {return magicword_list;} private final Ordered_hash magicword_list = Ordered_hash_.new_bry_();
-	public Ordered_hash			Functionhook_list() {return functionhook_list;} private final Ordered_hash functionhook_list = Ordered_hash_.new_bry_();
-	public Ordered_hash			Showhook_list() {return showhook_list;} private final Ordered_hash showhook_list = Ordered_hash_.new_bry_();
-	public Ordered_hash			Extensiontag_list() {return extensiontag_list;} private final Ordered_hash extensiontag_list = Ordered_hash_.new_bry_();
-	public Ordered_hash			Protocol_list() {return protocol_list;} private final Ordered_hash protocol_list = Ordered_hash_.new_bry_();
-	public Ordered_hash			Defaultoption_list() {return defaultoption_list;} private final Ordered_hash defaultoption_list = Ordered_hash_.new_();
-	public Ordered_hash			Language_list() {return language_list;} private final Ordered_hash language_list = Ordered_hash_.new_bry_();
+	public Ordered_hash			Specialpagealias_list() {return specialpagealias_list;} private final Ordered_hash specialpagealias_list = Ordered_hash_.New_bry();
+	public Ordered_hash			Library_list() {return library_list;} private final Ordered_hash library_list = Ordered_hash_.New_bry();
+	public Ordered_hash			Extension_list() {return extension_list;} private final Ordered_hash extension_list = Ordered_hash_.New_bry();
+	public Ordered_hash			Skin_list() {return skin_list;} private final Ordered_hash skin_list = Ordered_hash_.New_bry();
+	public Ordered_hash			Magicword_list() {return magicword_list;} private final Ordered_hash magicword_list = Ordered_hash_.New_bry();
+	public Ordered_hash			Functionhook_list() {return functionhook_list;} private final Ordered_hash functionhook_list = Ordered_hash_.New_bry();
+	public Ordered_hash			Showhook_list() {return showhook_list;} private final Ordered_hash showhook_list = Ordered_hash_.New_bry();
+	public Ordered_hash			Extensiontag_list() {return extensiontag_list;} private final Ordered_hash extensiontag_list = Ordered_hash_.New_bry();
+	public Ordered_hash			Protocol_list() {return protocol_list;} private final Ordered_hash protocol_list = Ordered_hash_.New_bry();
+	public Ordered_hash			Defaultoption_list() {return defaultoption_list;} private final Ordered_hash defaultoption_list = Ordered_hash_.New();
+	public Ordered_hash			Language_list() {return language_list;} private final Ordered_hash language_list = Ordered_hash_.New_bry();
+	public Site_meta_itm Clear() {
+		general_list.Clear();
+		namespace_list.Clear();
+		statistic_itm.Ctor(0, 0, 0, 0, 0, 0, 0, 0, 0);
+		interwikimap_list.Clear();
+		namespacealias_list.Clear();
+		specialpagealias_list.Clear();
+		library_list.Clear();
+		extension_list.Clear();
+		skin_list.Clear();
+		magicword_list.Clear();
+		functionhook_list.Clear();
+		showhook_list.Clear();
+		extensiontag_list.Clear();
+		protocol_list.Clear();
+		defaultoption_list.Clear();
+		language_list.Clear();
+		return this;
+	}
 }
diff --git a/400_xowa/src/gplx/xowa/wms/sites/Site_meta_parser__general.java b/400_xowa/src/gplx/xowa/bldrs/wms/sites/Site_meta_parser__general.java
similarity index 94%
rename from 400_xowa/src/gplx/xowa/wms/sites/Site_meta_parser__general.java
rename to 400_xowa/src/gplx/xowa/bldrs/wms/sites/Site_meta_parser__general.java
index 76392dbdf..dab8149b5 100644
--- a/400_xowa/src/gplx/xowa/wms/sites/Site_meta_parser__general.java
+++ b/400_xowa/src/gplx/xowa/bldrs/wms/sites/Site_meta_parser__general.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.wms.sites; import gplx.*; import gplx.xowa.*; import gplx.xowa.wms.*;
+package gplx.xowa.bldrs.wms.sites; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*; import gplx.xowa.bldrs.wms.*;
 import gplx.core.primitives.*; import gplx.langs.jsons.*;
 class Site_meta_parser__general extends Json_parser__list_nde__base {
 	private final Site_meta_parser__general__kv parser__image = new Site_meta_parser__general__kv("imagelimits", "width", "height");
@@ -54,10 +54,11 @@ class Site_meta_parser__general__lone extends Json_parser__list_nde__base {
 		this.Ctor(key);
 	}
 	public byte[] Parse(String context, Bry_bfr bfr, Json_ary ary) {
+		if (ary.Len() == 0) return Bry_.Empty;	// no fallbacks
 		this.bfr = bfr;
 		this.Parse_grp(context + "." + context_name, ary);
-		bfr.Del_by_1();
-		return bfr.Xto_bry_and_clear();
+		bfr.Del_by_1();	// delete trailing dlm at end of fallbacks
+		return bfr.To_bry_and_clear();
 	}
 	@Override protected void Parse_hook_nde(Json_nde sub, Json_kv[] atrs) {
 		bfr.Add(Kv__bry(atrs, 0)).Add_byte_pipe();
@@ -73,7 +74,7 @@ class Site_meta_parser__general__kv extends Json_parser__list_nde__base {
 		this.bfr = bfr;
 		this.Parse_grp(context + "." + context_name, ary);
 		bfr.Del_by_1();
-		return bfr.Xto_bry_and_clear();
+		return bfr.To_bry_and_clear();
 	}
 	@Override protected void Parse_hook_nde(Json_nde sub, Json_kv[] atrs) {
 		bfr.Add(Kv__bry(atrs, 0)).Add_byte_eq().Add(Kv__bry(atrs, 1)).Add_byte_pipe();
@@ -96,7 +97,7 @@ class Site_meta_parser__namespace extends Json_parser__list_nde__base {
 class Site_meta_parser__statistic extends Json_parser__list_nde__base {
 	private Site_statistic_itm itm;
 	public Site_meta_parser__statistic() {
-		this.Ctor("pages", "articles", "edits", "images", "users", "activeusers", "admins", "jobs", "queued-massmessages");
+		this.Ctor("pages", "articles", "edits", "images", "users", "activeusers", "admins", "jobs", "dispatch", "queued-massmessages");
 	}
 	public void Parse(String context, Site_statistic_itm itm, Json_nde nde) {
 		this.itm = itm;
@@ -112,7 +113,7 @@ class Site_meta_parser__statistic extends Json_parser__list_nde__base {
 		, Kv__long(atrs, 5)
 		, Kv__long(atrs, 6)
 		, Kv__long(atrs, 7)
-		, Kv__long_or_0(atrs, 8)
+		, Kv__long_or_0(atrs, 9)
 		);
 	}
 }
diff --git a/400_xowa/src/gplx/xowa/wms/sites/Site_namespace_itm.java b/400_xowa/src/gplx/xowa/bldrs/wms/sites/Site_namespace_itm.java
similarity index 92%
rename from 400_xowa/src/gplx/xowa/wms/sites/Site_namespace_itm.java
rename to 400_xowa/src/gplx/xowa/bldrs/wms/sites/Site_namespace_itm.java
index f1c665991..c08c9a455 100644
--- a/400_xowa/src/gplx/xowa/wms/sites/Site_namespace_itm.java
+++ b/400_xowa/src/gplx/xowa/bldrs/wms/sites/Site_namespace_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.wms.sites; import gplx.*; import gplx.xowa.*; import gplx.xowa.wms.*;
+package gplx.xowa.bldrs.wms.sites; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*; import gplx.xowa.bldrs.wms.*;
 class Site_namespace_itm implements To_str_able {
 	public Site_namespace_itm(int id, byte[] case_tid, byte[] canonical, byte[] localized, boolean subpages, boolean content, byte[] defaultcontentmodel) {
 		this.id = id; this.case_tid = case_tid; this.canonical = canonical; this.localized = localized;
diff --git a/400_xowa/src/gplx/xowa/wms/sites/Site_namespace_tbl.java b/400_xowa/src/gplx/xowa/bldrs/wms/sites/Site_namespace_tbl.java
similarity index 95%
rename from 400_xowa/src/gplx/xowa/wms/sites/Site_namespace_tbl.java
rename to 400_xowa/src/gplx/xowa/bldrs/wms/sites/Site_namespace_tbl.java
index 06cb7ab41..5e938922c 100644
--- a/400_xowa/src/gplx/xowa/wms/sites/Site_namespace_tbl.java
+++ b/400_xowa/src/gplx/xowa/bldrs/wms/sites/Site_namespace_tbl.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.wms.sites; import gplx.*; import gplx.xowa.*; import gplx.xowa.wms.*;
+package gplx.xowa.bldrs.wms.sites; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*; import gplx.xowa.bldrs.wms.*;
 import gplx.dbs.*;
 public class Site_namespace_tbl implements Db_tbl {
 	private static final String tbl_name = "site_namespace"; private final Db_meta_fld_list flds = new Db_meta_fld_list();
diff --git a/400_xowa/src/gplx/xowa/wms/sites/Site_namespacealias_itm.java b/400_xowa/src/gplx/xowa/bldrs/wms/sites/Site_namespacealias_itm.java
similarity index 84%
rename from 400_xowa/src/gplx/xowa/wms/sites/Site_namespacealias_itm.java
rename to 400_xowa/src/gplx/xowa/bldrs/wms/sites/Site_namespacealias_itm.java
index 2887d7f8d..90d94265e 100644
--- a/400_xowa/src/gplx/xowa/wms/sites/Site_namespacealias_itm.java
+++ b/400_xowa/src/gplx/xowa/bldrs/wms/sites/Site_namespacealias_itm.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.wms.sites; import gplx.*; import gplx.xowa.*; import gplx.xowa.wms.*;
+package gplx.xowa.bldrs.wms.sites; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*; import gplx.xowa.bldrs.wms.*;
 class Site_namespacealias_itm implements To_str_able {
 	public Site_namespacealias_itm(int id, byte[] alias) {
 		this.id = id; this.alias = alias;
-		this.key = Bry_.Add_w_dlm(Byte_ascii.Pipe, Int_.Xto_bry(id), alias);
+		this.key = Bry_.Add_w_dlm(Byte_ascii.Pipe, Int_.To_bry(id), alias);
 	}
 	public byte[] Key() {return key;} private final byte[] key;
 	public int Id() {return id;} private final int id;
diff --git a/400_xowa/src/gplx/xowa/wms/sites/Site_namespacealias_tbl.java b/400_xowa/src/gplx/xowa/bldrs/wms/sites/Site_namespacealias_tbl.java
similarity index 94%
rename from 400_xowa/src/gplx/xowa/wms/sites/Site_namespacealias_tbl.java
rename to 400_xowa/src/gplx/xowa/bldrs/wms/sites/Site_namespacealias_tbl.java
index 88ad61f39..769941998 100644
--- a/400_xowa/src/gplx/xowa/wms/sites/Site_namespacealias_tbl.java
+++ b/400_xowa/src/gplx/xowa/bldrs/wms/sites/Site_namespacealias_tbl.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.wms.sites; import gplx.*; import gplx.xowa.*; import gplx.xowa.wms.*;
+package gplx.xowa.bldrs.wms.sites; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*; import gplx.xowa.bldrs.wms.*;
 import gplx.dbs.*;
 class Site_namespacealias_tbl implements Db_tbl {
 	private static final String tbl_name = "site_namespacealias"; private final Db_meta_fld_list flds = new Db_meta_fld_list();
diff --git a/400_xowa/src/gplx/xowa/wms/sites/Site_showhook_itm.java b/400_xowa/src/gplx/xowa/bldrs/wms/sites/Site_showhook_itm.java
similarity index 90%
rename from 400_xowa/src/gplx/xowa/wms/sites/Site_showhook_itm.java
rename to 400_xowa/src/gplx/xowa/bldrs/wms/sites/Site_showhook_itm.java
index 4a8178c9d..a6968914f 100644
--- a/400_xowa/src/gplx/xowa/wms/sites/Site_showhook_itm.java
+++ b/400_xowa/src/gplx/xowa/bldrs/wms/sites/Site_showhook_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.wms.sites; import gplx.*; import gplx.xowa.*; import gplx.xowa.wms.*;
+package gplx.xowa.bldrs.wms.sites; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*; import gplx.xowa.bldrs.wms.*;
 class Site_showhook_itm implements To_str_able {
 	public Site_showhook_itm(byte[] name, byte[] scribunto, byte[][] subscribers) {
 		this.name = name; this.scribunto = scribunto; this.subscribers = subscribers;
diff --git a/400_xowa/src/gplx/xowa/wms/sites/Site_showhook_tbl.java b/400_xowa/src/gplx/xowa/bldrs/wms/sites/Site_showhook_tbl.java
similarity index 94%
rename from 400_xowa/src/gplx/xowa/wms/sites/Site_showhook_tbl.java
rename to 400_xowa/src/gplx/xowa/bldrs/wms/sites/Site_showhook_tbl.java
index 24ada893a..af94c9eb8 100644
--- a/400_xowa/src/gplx/xowa/wms/sites/Site_showhook_tbl.java
+++ b/400_xowa/src/gplx/xowa/bldrs/wms/sites/Site_showhook_tbl.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.wms.sites; import gplx.*; import gplx.xowa.*; import gplx.xowa.wms.*;
+package gplx.xowa.bldrs.wms.sites; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*; import gplx.xowa.bldrs.wms.*;
 import gplx.dbs.*;
 class Site_showhook_tbl implements Db_tbl {
 	private static final String tbl_name = "site_showhook"; private final Db_meta_fld_list flds = new Db_meta_fld_list();
diff --git a/400_xowa/src/gplx/xowa/wms/sites/Site_skin_itm.java b/400_xowa/src/gplx/xowa/bldrs/wms/sites/Site_skin_itm.java
similarity index 90%
rename from 400_xowa/src/gplx/xowa/wms/sites/Site_skin_itm.java
rename to 400_xowa/src/gplx/xowa/bldrs/wms/sites/Site_skin_itm.java
index ce7bd84e0..bf449d7b0 100644
--- a/400_xowa/src/gplx/xowa/wms/sites/Site_skin_itm.java
+++ b/400_xowa/src/gplx/xowa/bldrs/wms/sites/Site_skin_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.wms.sites; import gplx.*; import gplx.xowa.*; import gplx.xowa.wms.*;
+package gplx.xowa.bldrs.wms.sites; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*; import gplx.xowa.bldrs.wms.*;
 class Site_skin_itm implements To_str_able {
 	public Site_skin_itm(byte[] code, boolean dflt, byte[] name, boolean unusable) {
 		this.code = code; this.dflt = dflt; this.name = name; this.unusable = unusable;
diff --git a/400_xowa/src/gplx/xowa/wms/sites/Site_skin_tbl.java b/400_xowa/src/gplx/xowa/bldrs/wms/sites/Site_skin_tbl.java
similarity index 94%
rename from 400_xowa/src/gplx/xowa/wms/sites/Site_skin_tbl.java
rename to 400_xowa/src/gplx/xowa/bldrs/wms/sites/Site_skin_tbl.java
index f364aa1b7..fb40e87ef 100644
--- a/400_xowa/src/gplx/xowa/wms/sites/Site_skin_tbl.java
+++ b/400_xowa/src/gplx/xowa/bldrs/wms/sites/Site_skin_tbl.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.wms.sites; import gplx.*; import gplx.xowa.*; import gplx.xowa.wms.*;
+package gplx.xowa.bldrs.wms.sites; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*; import gplx.xowa.bldrs.wms.*;
 import gplx.dbs.*;
 class Site_skin_tbl implements Db_tbl {
 	private static final String tbl_name = "site_skin"; private final Db_meta_fld_list flds = new Db_meta_fld_list();
diff --git a/400_xowa/src/gplx/xowa/wms/sites/Site_specialpagealias_itm.java b/400_xowa/src/gplx/xowa/bldrs/wms/sites/Site_specialpagealias_itm.java
similarity index 89%
rename from 400_xowa/src/gplx/xowa/wms/sites/Site_specialpagealias_itm.java
rename to 400_xowa/src/gplx/xowa/bldrs/wms/sites/Site_specialpagealias_itm.java
index 6467e1906..c1b19a48a 100644
--- a/400_xowa/src/gplx/xowa/wms/sites/Site_specialpagealias_itm.java
+++ b/400_xowa/src/gplx/xowa/bldrs/wms/sites/Site_specialpagealias_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.wms.sites; import gplx.*; import gplx.xowa.*; import gplx.xowa.wms.*;
+package gplx.xowa.bldrs.wms.sites; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*; import gplx.xowa.bldrs.wms.*;
 class Site_specialpagealias_itm implements To_str_able {
 	public Site_specialpagealias_itm(byte[] realname, byte[][] aliases) {this.realname = realname; this.aliases = aliases;}
 	public byte[] Realname() {return realname;} private final byte[] realname;
diff --git a/400_xowa/src/gplx/xowa/wms/sites/Site_specialpagealias_tbl.java b/400_xowa/src/gplx/xowa/bldrs/wms/sites/Site_specialpagealias_tbl.java
similarity index 94%
rename from 400_xowa/src/gplx/xowa/wms/sites/Site_specialpagealias_tbl.java
rename to 400_xowa/src/gplx/xowa/bldrs/wms/sites/Site_specialpagealias_tbl.java
index 2384420a6..3186ecec2 100644
--- a/400_xowa/src/gplx/xowa/wms/sites/Site_specialpagealias_tbl.java
+++ b/400_xowa/src/gplx/xowa/bldrs/wms/sites/Site_specialpagealias_tbl.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.wms.sites; import gplx.*; import gplx.xowa.*; import gplx.xowa.wms.*;
+package gplx.xowa.bldrs.wms.sites; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*; import gplx.xowa.bldrs.wms.*;
 import gplx.dbs.*;
 class Site_specialpagealias_tbl implements Db_tbl {
 	private static final String tbl_name = "site_specialpagealias"; private final Db_meta_fld_list flds = new Db_meta_fld_list();
diff --git a/400_xowa/src/gplx/xowa/wms/sites/Site_statistic_itm.java b/400_xowa/src/gplx/xowa/bldrs/wms/sites/Site_statistic_itm.java
similarity index 92%
rename from 400_xowa/src/gplx/xowa/wms/sites/Site_statistic_itm.java
rename to 400_xowa/src/gplx/xowa/bldrs/wms/sites/Site_statistic_itm.java
index 5ba3b4d51..2fb6413f0 100644
--- a/400_xowa/src/gplx/xowa/wms/sites/Site_statistic_itm.java
+++ b/400_xowa/src/gplx/xowa/bldrs/wms/sites/Site_statistic_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.wms.sites; import gplx.*; import gplx.xowa.*; import gplx.xowa.wms.*;
+package gplx.xowa.bldrs.wms.sites; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*; import gplx.xowa.bldrs.wms.*;
 public class Site_statistic_itm implements To_str_able {
 	public Site_statistic_itm Ctor(long pages, long articles, long edits, long images, long users, long activeusers, long admins, long jobs, long queued_massmessages) {
 		this.pages = pages;
diff --git a/400_xowa/src/gplx/xowa/wms/sites/Site_statistic_tbl.java b/400_xowa/src/gplx/xowa/bldrs/wms/sites/Site_statistic_tbl.java
similarity index 95%
rename from 400_xowa/src/gplx/xowa/wms/sites/Site_statistic_tbl.java
rename to 400_xowa/src/gplx/xowa/bldrs/wms/sites/Site_statistic_tbl.java
index caa45aa01..5a97200aa 100644
--- a/400_xowa/src/gplx/xowa/wms/sites/Site_statistic_tbl.java
+++ b/400_xowa/src/gplx/xowa/bldrs/wms/sites/Site_statistic_tbl.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.wms.sites; import gplx.*; import gplx.xowa.*; import gplx.xowa.wms.*;
+package gplx.xowa.bldrs.wms.sites; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*; import gplx.xowa.bldrs.wms.*;
 import gplx.dbs.*;
 class Site_statistic_tbl implements Db_tbl {
 	private static final String tbl_name = "site_statistic"; private final Db_meta_fld_list flds = new Db_meta_fld_list();
diff --git a/400_xowa/src/gplx/xowa/wms/sites/Site_val_tbl.java b/400_xowa/src/gplx/xowa/bldrs/wms/sites/Site_val_tbl.java
similarity index 93%
rename from 400_xowa/src/gplx/xowa/wms/sites/Site_val_tbl.java
rename to 400_xowa/src/gplx/xowa/bldrs/wms/sites/Site_val_tbl.java
index 3a58c3457..8d7b17122 100644
--- a/400_xowa/src/gplx/xowa/wms/sites/Site_val_tbl.java
+++ b/400_xowa/src/gplx/xowa/bldrs/wms/sites/Site_val_tbl.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.wms.sites; import gplx.*; import gplx.xowa.*; import gplx.xowa.wms.*;
+package gplx.xowa.bldrs.wms.sites; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*; import gplx.xowa.bldrs.wms.*;
 import gplx.dbs.*;
 class Site_val_tbl implements Db_tbl {
 	private String tbl_name; private final Db_meta_fld_list flds = new Db_meta_fld_list();
diff --git a/400_xowa/src/gplx/xowa/bldrs/wtrs/Xob_tmp_wtr.java b/400_xowa/src/gplx/xowa/bldrs/wtrs/Xob_tmp_wtr.java
index 6206f1ffd..301f5826c 100644
--- a/400_xowa/src/gplx/xowa/bldrs/wtrs/Xob_tmp_wtr.java
+++ b/400_xowa/src/gplx/xowa/bldrs/wtrs/Xob_tmp_wtr.java
@@ -17,7 +17,7 @@ along with this program.  If not, see .
 */
 package gplx.xowa.bldrs.wtrs; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*;
 import gplx.ios.*;
-import gplx.xowa.nss.*;
+import gplx.xowa.wikis.nss.*;
 public class Xob_tmp_wtr {
 	Xob_tmp_wtr(Xow_ns ns_itm, Io_url_gen url_gen, int fil_max) {
 		this.ns_itm = ns_itm;
@@ -35,7 +35,7 @@ public class Xob_tmp_wtr {
 		Io_url url = url_gen.Nxt_url();
 		if (bfr.Len() > fil_max)	// NOTE: data can exceed proscribed len; EX: wikt:Category for Italian nouns is 1 MB+
 			usr_dlg.Log_many("xowa.tmp_wtr", "flush", "--fil exceeds len: ~{0} ~{1} ~{2}", bfr.Len(), fil_max, url.Xto_api());
-		Io_mgr.I.AppendFilBfr(url, bfr);
+		Io_mgr.Instance.AppendFilBfr(url, bfr);
 	}
 	public void Rls() {bfr.Rls();}
 	public static Xob_tmp_wtr new_(Xow_ns ns_itm, Io_url_gen url_gen, int fil_max)	{return new Xob_tmp_wtr(ns_itm, url_gen, fil_max);}
diff --git a/400_xowa/src/gplx/xowa/bldrs/wtrs/Xob_tmp_wtr_mgr.java b/400_xowa/src/gplx/xowa/bldrs/wtrs/Xob_tmp_wtr_mgr.java
index 44da6ab28..5de93b497 100644
--- a/400_xowa/src/gplx/xowa/bldrs/wtrs/Xob_tmp_wtr_mgr.java
+++ b/400_xowa/src/gplx/xowa/bldrs/wtrs/Xob_tmp_wtr_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.bldrs.wtrs; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*;
-import gplx.xowa.nss.*;
+import gplx.xowa.wikis.nss.*;
 public class Xob_tmp_wtr_mgr {
 	public Xob_tmp_wtr[] Regy() {return regy;} private Xob_tmp_wtr[] regy = new Xob_tmp_wtr[Ns_ordinal_max];
 	public Xob_tmp_wtr_mgr(Xob_tmp_wtr_wkr wkr) {this.wkr = wkr;} private Xob_tmp_wtr_wkr wkr;
diff --git a/400_xowa/src/gplx/xowa/bldrs/wtrs/Xob_tmp_wtr_wkr.java b/400_xowa/src/gplx/xowa/bldrs/wtrs/Xob_tmp_wtr_wkr.java
index 2e80936d1..0097bd5be 100644
--- a/400_xowa/src/gplx/xowa/bldrs/wtrs/Xob_tmp_wtr_wkr.java
+++ b/400_xowa/src/gplx/xowa/bldrs/wtrs/Xob_tmp_wtr_wkr.java
@@ -17,7 +17,7 @@ along with this program.  If not, see .
 */
 package gplx.xowa.bldrs.wtrs; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*;
 import gplx.ios.*;
-import gplx.xowa.nss.*;
+import gplx.xowa.wikis.nss.*;
 public interface Xob_tmp_wtr_wkr {
 	Xob_tmp_wtr Tmp_wtr_new(Xow_ns ns);
 }
diff --git a/400_xowa/src/gplx/xowa/bldrs/wtrs/Xob_tmp_wtr_wkr__ttl.java b/400_xowa/src/gplx/xowa/bldrs/wtrs/Xob_tmp_wtr_wkr__ttl.java
index 2d16c2050..750526409 100644
--- a/400_xowa/src/gplx/xowa/bldrs/wtrs/Xob_tmp_wtr_wkr__ttl.java
+++ b/400_xowa/src/gplx/xowa/bldrs/wtrs/Xob_tmp_wtr_wkr__ttl.java
@@ -17,7 +17,7 @@ along with this program.  If not, see .
 */
 package gplx.xowa.bldrs.wtrs; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*;
 import gplx.ios.*;
-import gplx.xowa.nss.*;
+import gplx.xowa.wikis.nss.*;
 public class Xob_tmp_wtr_wkr__ttl implements Xob_tmp_wtr_wkr {
 	public Xob_tmp_wtr_wkr__ttl(Io_url temp_dir, int dump_fil_len) {this.temp_dir = temp_dir; this.dump_fil_len = dump_fil_len;} Io_url temp_dir; int dump_fil_len;
 	public Xob_tmp_wtr Tmp_wtr_new(Xow_ns ns) {
diff --git a/400_xowa/src/gplx/xowa/bldrs/xmls/Xob_import_cfg.java b/400_xowa/src/gplx/xowa/bldrs/xmls/Xob_import_cfg.java
index 641372cd2..dbc03259f 100644
--- a/400_xowa/src/gplx/xowa/bldrs/xmls/Xob_import_cfg.java
+++ b/400_xowa/src/gplx/xowa/bldrs/xmls/Xob_import_cfg.java
@@ -17,7 +17,7 @@ along with this program.  If not, see .
 */
 package gplx.xowa.bldrs.xmls; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*;
 import gplx.ios.*;
-import gplx.xowa.ctgs.*; import gplx.xowa.tdbs.*;
+import gplx.xowa.wikis.ctgs.*; import gplx.xowa.wikis.tdbs.*;
 public class Xob_import_cfg {
 	public Xob_import_cfg(Xowe_wiki wiki) {this.wiki = wiki;} private Xowe_wiki wiki; private boolean src_fil_is_bz2 = true;
 	public byte Category_version() {return category_version;} public Xob_import_cfg Category_version_(byte v) {category_version = v; return this;} private byte category_version = Xoa_ctg_mgr.Version_1;
@@ -40,7 +40,7 @@ public class Xob_import_cfg {
 		}
 		if (src_fil_is_bz2) {
 			Chk_file_ext(wiki.Appe(), src_fil_bz2, ".bz2", "xml");				
-			src_fil = src_fil_bz2; src_rdr_len = Io_mgr.I.QueryFil(src_fil_bz2).Size();
+			src_fil = src_fil_bz2; src_rdr_len = Io_mgr.Instance.QueryFil(src_fil_bz2).Size();
 			Xoae_app app = wiki.Appe();
 			if (app.Setup_mgr().Dump_mgr().Import_bz2_by_stdout()) {
 				ProcessAdp process = app.Prog_mgr().App_decompress_bz2_by_stdout();
@@ -51,7 +51,7 @@ public class Xob_import_cfg {
 		}
 		else {
 			Chk_file_ext(wiki.Appe(), src_fil_xml, ".xml", "bz2");
-			src_fil = src_fil_xml; src_rdr_len = Io_mgr.I.QueryFil(src_fil_xml).Size();
+			src_fil = src_fil_xml; src_rdr_len = Io_mgr.Instance.QueryFil(src_fil_xml).Size();
 			return Io_stream_rdr_.file_(src_fil_xml);
 		}
 	}
diff --git a/400_xowa/src/gplx/xowa/bldrs/xmls/Xob_import_marker.java b/400_xowa/src/gplx/xowa/bldrs/xmls/Xob_import_marker.java
index 0e818c336..62288e124 100644
--- a/400_xowa/src/gplx/xowa/bldrs/xmls/Xob_import_marker.java
+++ b/400_xowa/src/gplx/xowa/bldrs/xmls/Xob_import_marker.java
@@ -21,17 +21,17 @@ public class Xob_import_marker {
 	private final Hash_adp_bry in_progress_hash = Hash_adp_bry.cs();
 	public void Bgn(Xowe_wiki wiki) {
 		in_progress_hash.Add_as_key_and_val(wiki.Domain_bry());
-		Io_mgr.I.SaveFilStr(url_(wiki), "XOWA has created this file to indicate that an import is in progress. This file will be deleted once the import is completed.");
+		Io_mgr.Instance.SaveFilStr(url_(wiki), "XOWA has created this file to indicate that an import is in progress. This file will be deleted once the import is completed.");
 	}
 	public void End(Xowe_wiki wiki) {
 		in_progress_hash.Del(wiki.Domain_bry());
-		Io_mgr.I.DeleteFil_args(url_(wiki)).MissingFails_off().Exec();
+		Io_mgr.Instance.DeleteFil_args(url_(wiki)).MissingFails_off().Exec();
 	}
 	public boolean Chk(Xowe_wiki wiki) {
-		if (!wiki.App().App_type().Uid_is_gui()) return true;		// NOTE: ignore during Server / Console modes; DATE:2015-04-01
+		if (!wiki.App().Mode().Tid_is_gui()) return true;			// NOTE: ignore during Server / Console modes; DATE:2015-04-01
 		if (in_progress_hash.Has(wiki.Domain_bry())) return true;	// NOTE: ignore if currently building; different bldr commands call wiki.Init_assert() which may lead to fals checks;
 		Io_url url = url_(wiki);
-		if (!Io_mgr.I.ExistsFil(url)) return true;
+		if (!Io_mgr.Instance.ExistsFil(url)) return true;
 		Xoae_app app = wiki.Appe();
 		app.Usr_dlg().Log_many("", "", "import.marker: marker found: url=~{0}", url.Raw());
 		byte[] incompete_msg_bry = app.Usere().Msg_mgr().Val_by_key_args(Bry_.new_a7("api-xowa.import.core.incomplete"), wiki.Domain_str());
diff --git a/400_xowa/src/gplx/xowa/bldrs/xmls/Xob_siteinfo_parser.java b/400_xowa/src/gplx/xowa/bldrs/xmls/Xob_siteinfo_parser.java
index 058f6dd73..556f3ee2e 100644
--- a/400_xowa/src/gplx/xowa/bldrs/xmls/Xob_siteinfo_parser.java
+++ b/400_xowa/src/gplx/xowa/bldrs/xmls/Xob_siteinfo_parser.java
@@ -17,7 +17,7 @@ along with this program.  If not, see .
 */
 package gplx.xowa.bldrs.xmls; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*;
 import gplx.ios.*; import gplx.xmls.*; // NOTE: gplx.xmls does not support Android; DATE:2013-01-17
-import gplx.xowa.nss.*;
+import gplx.xowa.wikis.nss.*;
 public class Xob_siteinfo_parser {
 	public static byte[] Siteinfo_extract(gplx.ios.Io_stream_rdr src_rdr) {
 		Io_buffer_rdr rdr = Io_buffer_rdr.Null;
@@ -50,13 +50,13 @@ public class Xob_siteinfo_parser {
 				Siteinfo_parse_ns(wiki, usr_dlg, sub_nde);
 			}
 			else if (	String_.Eq(sub_nde.Name(), "#text")) {}	// NOTE: JAVA has node names for "#text"
-			// else throw Err_mgr._.fmt_(GRP_KEY, "siteinfo.root.unknown_sub", "unknown sub for root nde: ~{0}", sub_nde.Name());	// NOTE: do not fail if MW introduces something odd in future (or if JAVA starts picking up other elements)
+			// else throw Err_mgr.Instance.fmt_(GRP_KEY, "siteinfo.root.unknown_sub", "unknown sub for root nde: ~{0}", sub_nde.Name());	// NOTE: do not fail if MW introduces something odd in future (or if JAVA starts picking up other elements)
 		}
-		wiki.Props().Siteinfo_misc_(siteinfo_misc_bfr.Xto_bry_and_clear());
+		wiki.Props().Siteinfo_misc_(siteinfo_misc_bfr.To_bry_and_clear());
 		wiki.Props().Bldr_version_(Bry_.new_a7(Xoa_app_.Version));
 	}
 	private static byte[] Siteinfo_parse_mainpage(byte[] url) {			
-		byte[] wiki_bry = Xoa_consts.Url_wiki_intermediary;
+		byte[] wiki_bry = gplx.xowa.htmls.hrefs.Xoh_href_.Bry__wiki;
 		int bgn_pos	= Bry_find_.Find_fwd(url, wiki_bry, 0);
 		if (bgn_pos == Bry_.NotFound) {							// "/wiki/" not found; EX: http://mywiki/My_main_page
 			bgn_pos	= Bry_find_.Find_bwd(url, Byte_ascii.Slash);		// ASSUME last segment is page
diff --git a/400_xowa/src/gplx/xowa/bldrs/xmls/Xob_xml_dumper.java b/400_xowa/src/gplx/xowa/bldrs/xmls/Xob_xml_dumper.java
index e9e4d48e9..7043a4835 100644
--- a/400_xowa/src/gplx/xowa/bldrs/xmls/Xob_xml_dumper.java
+++ b/400_xowa/src/gplx/xowa/bldrs/xmls/Xob_xml_dumper.java
@@ -17,7 +17,7 @@ along with this program.  If not, see .
 */
 package gplx.xowa.bldrs.xmls; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*;
 import gplx.langs.xmls.*;
-import gplx.xowa.nss.*;
+import gplx.xowa.wikis.nss.*;
 import gplx.xowa.wikis.domains.*; import gplx.xowa.wikis.data.tbls.*;
 public class Xob_xml_dumper {
 	private final Gfo_xml_wtr wtr = new Gfo_xml_wtr();
@@ -38,7 +38,7 @@ public class Xob_xml_dumper {
 	}
 	private void Write_siteinfo(Xow_domain_itm domain, String wiki_abrv, String main_page, String ns_case, String app_version) {
 		wtr.Nde_lhs("siteinfo");
-		wtr.Nde_txt_bry("sitename"				, Xow_domain_type_.Get_type_as_bry(domain.Domain_type_id()));
+		wtr.Nde_txt_bry("sitename"				, Xow_domain_tid_.Get_type_as_bry(domain.Domain_type_id()));
 		wtr.Nde_txt_str("dbname"				, wiki_abrv);
 		wtr.Nde_txt_str("base"				, main_page);
 		wtr.Nde_txt_str("generator"				, app_version);
diff --git a/400_xowa/src/gplx/xowa/bldrs/xmls/Xob_xml_dumper_tst.java b/400_xowa/src/gplx/xowa/bldrs/xmls/Xob_xml_dumper_tst.java
index 44dca6dfa..a104f79bf 100644
--- a/400_xowa/src/gplx/xowa/bldrs/xmls/Xob_xml_dumper_tst.java
+++ b/400_xowa/src/gplx/xowa/bldrs/xmls/Xob_xml_dumper_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.bldrs.xmls; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*;
-import org.junit.*; import gplx.xowa.wikis.data.tbls.*; import gplx.xowa.nss.*;
+import org.junit.*; import gplx.xowa.wikis.data.tbls.*; import gplx.xowa.wikis.nss.*;
 public class Xob_xml_dumper_tst {
 	private final Xob_xml_dumper_fxt fxt = new Xob_xml_dumper_fxt();
 	@Before public void init() {fxt.Clear();}
diff --git a/400_xowa/src/gplx/xowa/bldrs/xmls/Xob_xml_page_bldr.java b/400_xowa/src/gplx/xowa/bldrs/xmls/Xob_xml_page_bldr.java
index 4aeb44a79..4867caf12 100644
--- a/400_xowa/src/gplx/xowa/bldrs/xmls/Xob_xml_page_bldr.java
+++ b/400_xowa/src/gplx/xowa/bldrs/xmls/Xob_xml_page_bldr.java
@@ -18,16 +18,16 @@ along with this program.  If not, see .
 package gplx.xowa.bldrs.xmls; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*;
 import gplx.ios.*; import gplx.xowa.wikis.data.tbls.*;
 public class Xob_xml_page_bldr {
-	public byte[] Xto_bry() {return bfr.Xto_bry_and_clear();}
+	public byte[] Xto_bry() {return bfr.To_bry_and_clear();}
 	public Io_buffer_rdr XtoByteStreamRdr() {return XtoByteStreamRdr(Io_mgr.Len_kb);}
 	public Io_buffer_rdr XtoByteStreamRdr(int bfr_len) {
 		Io_url url = Io_url_.mem_fil_("mem/byteStreamRdr.txt");
-		Io_mgr.I.SaveFilBry(url, bfr.Xto_bry_and_clear());
+		Io_mgr.Instance.SaveFilBry(url, bfr.To_bry_and_clear());
 		return Io_buffer_rdr.new_(gplx.ios.Io_stream_rdr_.file_(url), bfr_len);
 	}
 	public Bry_bfr Bfr() {return bfr;} Bry_bfr bfr = Bry_bfr.new_();
 	public Xob_xml_page_bldr Upd(String find, String repl) {
-		String all = bfr.Xto_str_and_clear();
+		String all = bfr.To_str_and_clear();
 		all = String_.Replace(all, find, repl);
 		bfr.Add_str(all);
 		return this;
diff --git a/400_xowa/src/gplx/xowa/bldrs/xmls/Xob_xml_parser.java b/400_xowa/src/gplx/xowa/bldrs/xmls/Xob_xml_parser.java
index 3eec46ca4..b795da463 100644
--- a/400_xowa/src/gplx/xowa/bldrs/xmls/Xob_xml_parser.java
+++ b/400_xowa/src/gplx/xowa/bldrs/xmls/Xob_xml_parser.java
@@ -17,7 +17,7 @@ along with this program.  If not, see .
 */
 package gplx.xowa.bldrs.xmls; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*;
 import gplx.core.btries.*; import gplx.ios.*; import gplx.xowa.wikis.data.tbls.*;
-import gplx.xowa.nss.*;
+import gplx.xowa.wikis.nss.*;
 public class Xob_xml_parser {
 	Btrie_fast_mgr trie = Xob_xml_parser_.trie_(); Bry_bfr data_bfr = Bry_bfr.new_(); DateAdp_parser date_parser = DateAdp_parser.new_();
 	public Xob_xml_parser Tag_len_max_(int v) {tag_len_max = v; return this;} private int tag_len_max = 255; // max size of any (a) xml tag, (b) int or (c) date; everything else goes into a data_bfr
@@ -75,13 +75,13 @@ public class Xob_xml_parser {
 					case Xob_xml_parser_.Id_title_end:
 						if (title_needed) {
 							data_bfr_add = false;
-							byte[] ttl = data_bfr.Xto_bry_and_clear();
+							byte[] ttl = data_bfr.To_bry_and_clear();
 							Bry_.Replace_reuse(ttl, Byte_ascii.Space, Byte_ascii.Underline);
 							rv.Ttl_(ttl, ns_mgr);
 							title_needed = false;
 						}
 						break;
-					case Xob_xml_parser_.Id_text_end:		data_bfr_add = false; rv.Text_(data_bfr.Xto_bry_and_clear()); break;
+					case Xob_xml_parser_.Id_text_end:		data_bfr_add = false; rv.Text_(data_bfr.To_bry_and_clear()); break;
 					case Xob_xml_parser_.Id_amp: case Xob_xml_parser_.Id_quot: case Xob_xml_parser_.Id_lt: case Xob_xml_parser_.Id_gt:
 					case Xob_xml_parser_.Id_cr_nl: case Xob_xml_parser_.Id_cr:
 						if (data_bfr_add) data_bfr.Add_byte(itm.Subst_byte());
diff --git a/400_xowa/src/gplx/xowa/bldrs/xmls/Xob_xml_parser_tst.java b/400_xowa/src/gplx/xowa/bldrs/xmls/Xob_xml_parser_tst.java
index bd3ed71c1..975eafff9 100644
--- a/400_xowa/src/gplx/xowa/bldrs/xmls/Xob_xml_parser_tst.java
+++ b/400_xowa/src/gplx/xowa/bldrs/xmls/Xob_xml_parser_tst.java
@@ -16,10 +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.bldrs.xmls; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*;
-import org.junit.*; import gplx.ios.*; import gplx.xowa.nss.*; import gplx.xowa.wikis.data.tbls.*;
+import org.junit.*; import gplx.ios.*; import gplx.xowa.wikis.nss.*; import gplx.xowa.wikis.data.tbls.*;
 public class Xob_xml_parser_tst {
 	@Before public void init() {
-		Io_mgr.I.InitEngine_mem();
+		Io_mgr.Instance.InitEngine_mem();
 		Xoae_app app = Xoa_app_fxt.app_();
 		bldr = new Xob_bldr(app);
 	}	private Xow_ns_mgr ns_mgr = Xow_ns_mgr_.default_(gplx.xowa.langs.cases.Xol_case_mgr_.A7());
diff --git a/400_xowa/src/gplx/xowa/cfgs/Xoa_cfg_grp.java b/400_xowa/src/gplx/xowa/cfgs/Xoa_cfg_grp.java
deleted file mode 100644
index fe6a006b5..000000000
--- a/400_xowa/src/gplx/xowa/cfgs/Xoa_cfg_grp.java
+++ /dev/null
@@ -1,80 +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.cfgs; import gplx.*; import gplx.xowa.*;
-import gplx.xowa.wikis.domains.*;
-public class Xoa_cfg_grp {		
-	public Xoa_cfg_grp(Xoa_cfg_mgr mgr, Xoa_cfg_grp_tid tid, byte[] key_bry) {
-		this.mgr = mgr; this.tid = tid; this.key_bry = key_bry; this.key_str = String_.new_u8(key_bry);
-	} 	Xoa_cfg_mgr mgr; Ordered_hash hash = Ordered_hash_.new_bry_();
-	public Xoa_cfg_grp_tid Tid() {return tid;} private Xoa_cfg_grp_tid tid;
-	public byte[] Key_bry() {return key_bry;} private byte[] key_bry;
-	public String Key_str() {return key_str;} private String key_str;
-	public Xoa_cfg_itm Get_itm_or_null(byte[] itm_key) {
-		return (Xoa_cfg_itm)hash.Get_by(itm_key);
-	}
-	public Xoa_cfg_itm Get_itm_or_make(byte[] itm_key) {
-		Xoa_cfg_itm rv = (Xoa_cfg_itm)hash.Get_by(itm_key);
-		if (rv == null) {
-			rv = new Xoa_cfg_itm(this, itm_key);
-			hash.Add(itm_key, rv);
-		}
-		return rv;
-	}
-	public Xoa_cfg_itm Get_itm_by_wiki(byte[] domain, int wiki_tid) {
-		Xoa_cfg_itm rv = (Xoa_cfg_itm)hash.Get_by(domain);
-		if (rv == null) { 		// match by domain failed; try type
-			rv = (Xoa_cfg_itm)hash.Get_by(Xow_domain_type_.Get_type_as_bry(wiki_tid));
-			if (rv == null)		// match by type failed; try all
-				rv = (Xoa_cfg_itm)hash.Get_by(Xoa_cfg_grp_tid.Key_all_bry);	
-				if (rv == null)		// match by type failed; try app
-					rv = (Xoa_cfg_itm)hash.Get_by(Xoa_cfg_grp_tid.Key_app_bry);	
-		}
-		return rv;
-	}
-	public void Db_customized_n_() {
-		int len = hash.Count();
-		for (int i = 0; i < len; i++) {
-			Xoa_cfg_itm itm = (Xoa_cfg_itm)hash.Get_at(i);
-			itm.Db_customized_(false).Db_dirty_(false);
-		}
-	}
-	public void Db_loaded_y_() {
-		int len = hash.Count();
-		for (int i = 0; i < len; i++) {
-			Xoa_cfg_itm itm = (Xoa_cfg_itm)hash.Get_at(i);
-			itm.Db_customized_(true).Db_dirty_(false);
-		}
-	}
-	public void Db_save(Xoa_cfg_db db) {
-		int len = hash.Count();
-		for (int i = 0; i < len; i++) {
-			Xoa_cfg_itm itm = (Xoa_cfg_itm)hash.Get_at(i);
-			if (!itm.Db_customized() && !itm.Db_dirty()) continue; // system default and unchanged; no need to save
-			db.Cfg_save_run(mgr, this, itm);
-		}	
-	}
-	public void Clear() {
-		int len = hash.Count();
-		for (int i = 0; i < len; i++) {
-			Xoa_cfg_itm itm = (Xoa_cfg_itm)hash.Get_at(i);
-			itm.Clear();
-		}
-		hash.Clear();
-	}
-	public boolean Notify(Xoa_cfg_itm itm) {return mgr.Notify(this, itm);}
-}
diff --git a/400_xowa/src/gplx/xowa/dbs/Xodb_load_mgr.java b/400_xowa/src/gplx/xowa/dbs/Xodb_load_mgr.java
deleted file mode 100644
index 9b65e1c3c..000000000
--- a/400_xowa/src/gplx/xowa/dbs/Xodb_load_mgr.java
+++ /dev/null
@@ -1,42 +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.dbs; import gplx.*; import gplx.xowa.*;
-import gplx.core.primitives.*;
-import gplx.xowa.nss.*;
-import gplx.xowa.bldrs.cmds.ctgs.*; import gplx.xowa.ctgs.*; import gplx.xowa.specials.search.*; import gplx.xowa.wikis.data.tbls.*;
-public interface Xodb_load_mgr {
-	void Load_init				(Xowe_wiki wiki);
-	void Load_page				(Xowd_page_itm rv, Xow_ns ns, boolean timestamp_enabled);
-	boolean Load_by_id				(Xowd_page_itm rv, int id);
-	void Load_by_ids			(Cancelable cancelable, List_adp rv, int bgn, int end);
-	boolean Load_by_ttl			(Xowd_page_itm rv, Xow_ns ns, byte[] ttl);
-	void Load_by_ttls			(Cancelable cancelable, Ordered_hash rv, boolean fill_idx_fields_only, int bgn, int end);
-	int Load_ctg_count			(byte[] ttl);
-	boolean Load_ctg_v1			(Xoctg_view_ctg rv, byte[] ttl);
-	boolean Load_ctg_v2			(Xoctg_data_ctg rv, byte[] ttl);
-	void Load_ctg_v2a			(Xoctg_view_ctg rv, Xoctg_url url_ctg, byte[] ttl_bry, int limit);
-	Xowd_page_itm[] Load_ctg_list	(byte[][] ctg_ttls);
-	void Load_search			(Cancelable cancelable, List_adp rv, byte[] search, int results_max);		
-	void Load_ttls_for_all_pages (Cancelable cancelable, List_adp rslt_list, Xowd_page_itm rslt_nxt, Xowd_page_itm rslt_prv, Int_obj_ref rslt_count, Xow_ns ns, byte[] key, int max_results, int min_page_len, int browse_len, boolean include_redirects, boolean fetch_prv_item);
-	void Load_ttls_for_search_suggest(Cancelable cancelable, List_adp rslt_list, Xow_ns ns, byte[] key, int max_results, int min_page_len, int browse_len, boolean include_redirects, boolean fetch_prv_item);
-	byte[] Find_random_ttl		(Xow_ns ns);
-	void Clear();	// TEST:helper function
-	byte[] Load_qid				(byte[] wiki_alias, byte[] ns_num, byte[] ttl);
-	int Load_pid				(byte[] lang_key, byte[] pid_name);
-	Xodb_page_rdr Get_page_rdr(Xowe_wiki wiki);
-}
diff --git a/400_xowa/src/gplx/xowa/files/Xoa_repo_mgr.java b/400_xowa/src/gplx/xowa/files/Xoa_repo_mgr.java
index 155aeb21f..6227b03d9 100644
--- a/400_xowa/src/gplx/xowa/files/Xoa_repo_mgr.java
+++ b/400_xowa/src/gplx/xowa/files/Xoa_repo_mgr.java
@@ -47,7 +47,7 @@ public class Xoa_repo_mgr implements GfoInvkAble {
 		}
 		return null;
 	}
-	public Xof_repo_itm Add(Xof_repo_itm itm) {hash.Add(itm.Key(), itm); return itm;} private Ordered_hash hash = Ordered_hash_.new_bry_();
+	public Xof_repo_itm Add(Xof_repo_itm itm) {hash.Add(itm.Key(), itm); return itm;} private Ordered_hash hash = Ordered_hash_.New_bry();
 	public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) {
 		if		(ctx.Match(k, Invk_set))			return Set(m.ReadStr("key"), m.ReadStr("url"), m.ReadStr("wiki"));
 		else	return GfoInvkAble_.Rv_unhandled;
diff --git a/400_xowa/src/gplx/xowa/files/Xof_file_fxt.java b/400_xowa/src/gplx/xowa/files/Xof_file_fxt.java
index 62250a7fd..54b89286e 100644
--- a/400_xowa/src/gplx/xowa/files/Xof_file_fxt.java
+++ b/400_xowa/src/gplx/xowa/files/Xof_file_fxt.java
@@ -22,8 +22,8 @@ public class Xof_file_fxt {
 	private final Xowe_wiki wiki;
 	Xof_file_fxt(Xowe_wiki wiki) {
 		this.wiki = wiki;
-		Io_mgr.I.InitEngine_mem();
-		Db_conn_bldr.I.Reg_default_mem();
+		Io_mgr.Instance.InitEngine_mem();
+		Db_conn_bldr.Instance.Reg_default_mem();
 		wiki.File_mgr().Version_2_y_();
 	}
 	public static Xof_file_fxt new_(Xowe_wiki wiki) {return new Xof_file_fxt(wiki);}
@@ -37,7 +37,7 @@ public class Xof_file_fxt {
 		return this;
 	}
 	public Xof_file_fxt Init_orig() {
-		Db_conn conn = Db_conn_bldr.I.Get_or_new(Io_url_.mem_fil_("mem/xowa/wiki/" + wiki.Domain_str() + "/orig.xowa")).Conn();
+		Db_conn conn = Db_conn_bldr.Instance.Get_or_new(Io_url_.mem_fil_("mem/xowa/wiki/" + wiki.Domain_str() + "/orig.xowa")).Conn();
 		Xof_orig_tbl orig_tbl = new Xof_orig_tbl(conn, Bool_.Y);
 		orig_tbl.Create_tbl();
 		wiki.File_mgr().Orig_mgr().Init_by_wiki(wiki, Xof_fsdb_mode.new_v2_gui(), new Xof_orig_tbl[] {orig_tbl}, Xof_url_bldr.new_v2());
diff --git a/400_xowa/src/gplx/xowa/files/Xof_file_mgr.java b/400_xowa/src/gplx/xowa/files/Xof_file_mgr.java
index 2f48f9a58..6b0d9e024 100644
--- a/400_xowa/src/gplx/xowa/files/Xof_file_mgr.java
+++ b/400_xowa/src/gplx/xowa/files/Xof_file_mgr.java
@@ -18,7 +18,7 @@ along with this program.  If not, see .
 package gplx.xowa.files; import gplx.*; import gplx.xowa.*;
 import gplx.dbs.*;
 import gplx.xowa.files.commons.*; import gplx.xowa.files.exts.*; import gplx.xowa.files.caches.*; import gplx.xowa.files.imgs.*;
-import gplx.xowa.wms.*;
+import gplx.xowa.bldrs.wms.*;
 import gplx.xowa.xtns.math.*;
 public class Xof_file_mgr implements GfoInvkAble {
 	public Xoa_repo_mgr			Repo_mgr() {return repo_mgr;} private Xoa_repo_mgr repo_mgr;
diff --git a/400_xowa/src/gplx/xowa/files/Xof_file_wkr.java b/400_xowa/src/gplx/xowa/files/Xof_file_wkr.java
index d36ae47ef..d4a77ba02 100644
--- a/400_xowa/src/gplx/xowa/files/Xof_file_wkr.java
+++ b/400_xowa/src/gplx/xowa/files/Xof_file_wkr.java
@@ -19,7 +19,7 @@ package gplx.xowa.files; import gplx.*; import gplx.xowa.*;
 import gplx.core.threads.*; import gplx.ios.*;
 import gplx.fsdb.*; import gplx.fsdb.meta.*; import gplx.fsdb.data.*; import gplx.xowa.files.fsdb.*;
 import gplx.xowa.files.repos.*; import gplx.xowa.files.origs.*; import gplx.xowa.files.bins.*; import gplx.xowa.files.caches.*; import gplx.xowa.files.gui.*;
-import gplx.xowa.html.hdumps.core.*;
+import gplx.xowa.htmls.hdumps.core.*;
 public class Xof_file_wkr implements Gfo_thread_wkr {
 	private final Xof_orig_mgr orig_mgr; private final Xof_bin_mgr bin_mgr; private final Fsm_mnt_mgr mnt_mgr; private final Xou_cache_mgr cache_mgr;
 	private final Gfo_usr_dlg usr_dlg; private final Xow_repo_mgr repo_mgr; private final Xog_js_wkr js_wkr;
@@ -27,7 +27,7 @@ public class Xof_file_wkr implements Gfo_thread_wkr {
 	private final Xoa_page hpg; private final List_adp imgs;
 	public Xof_file_wkr(Xof_orig_mgr orig_mgr, Xof_bin_mgr bin_mgr, Fsm_mnt_mgr mnt_mgr, Xou_cache_mgr cache_mgr, Xow_repo_mgr repo_mgr, Xog_js_wkr js_wkr, Xoa_page hpg, List_adp imgs) {
 		this.orig_mgr = orig_mgr; this.bin_mgr = bin_mgr; this.mnt_mgr = mnt_mgr; this.cache_mgr = cache_mgr;
-		this.usr_dlg = Gfo_usr_dlg_.I; this.repo_mgr = repo_mgr; this.js_wkr = js_wkr;			
+		this.usr_dlg = Gfo_usr_dlg_.Instance; this.repo_mgr = repo_mgr; this.js_wkr = js_wkr;			
 		this.hpg = hpg; this.imgs = imgs;
 	}
 	public String Name() {return "xowa.load_imgs";}
@@ -58,7 +58,7 @@ public class Xof_file_wkr implements Gfo_thread_wkr {
 			if (repo == null) return false;
 			fsdb.Init_at_html(fsdb.Lnki_exec_tid(), img_size, repo, url_bldr);
 			if (fsdb.Orig_ext().Is_not_viewable(fsdb.Lnki_exec_tid())) return false;	// file not viewable; exit; EX: exec_tid = page and fsdb is audio
-			IoItmFil file = Io_mgr.I.QueryFil(fsdb.Html_view_url());
+			IoItmFil file = Io_mgr.Instance.QueryFil(fsdb.Html_view_url());
 			if (!file.Exists()) {
 				if (bin_mgr.Find_to_url_as_bool(fsdb.Lnki_exec_tid(), fsdb)) {
 					if (fsdb.Fsdb_insert()) Save_bin(fsdb, mnt_mgr, fsdb.Html_view_url());
@@ -117,7 +117,7 @@ public class Xof_file_wkr implements Gfo_thread_wkr {
 		fsdb.Init_at_html(fsdb.Lnki_exec_tid(), img_size, repo_itm, url_bldr);
 	}
 	public static void Save_bin(Xof_fsdb_itm itm, Fsm_mnt_mgr mnt_mgr, Io_url html_url) {
-		long rdr_len = Io_mgr.I.QueryFil(html_url).Size();
+		long rdr_len = Io_mgr.Instance.QueryFil(html_url).Size();
 		Io_stream_rdr rdr = gplx.ios.Io_stream_rdr_.file_(html_url);
 		try {
 			rdr.Open();
diff --git a/400_xowa/src/gplx/xowa/files/Xof_lnki_time.java b/400_xowa/src/gplx/xowa/files/Xof_lnki_time.java
index 15f93c329..a2e70e3ab 100644
--- a/400_xowa/src/gplx/xowa/files/Xof_lnki_time.java
+++ b/400_xowa/src/gplx/xowa/files/Xof_lnki_time.java
@@ -25,7 +25,7 @@ public class Xof_lnki_time {
 	public static double	Db_load_int(DataRdr rdr, String fld)	{return rdr.ReadInt(fld);}
 	public static double	Db_load_int(Db_rdr rdr, String fld)		{return rdr.Read_int(fld);}
 	public static int		X_int(double v) {return (int)v;}
-	public static String	X_str(double v) {return Double_.Xto_str(v);}
+	public static String	X_str(double v) {return Double_.To_str(v);}
 	public static final double		Null = -1;
 	public static boolean		Null_y(double v) {return v == Null;}
 	public static boolean		Null_n(double v) {return v != Null;}
diff --git a/400_xowa/src/gplx/xowa/files/Xof_redlink_wkr.java b/400_xowa/src/gplx/xowa/files/Xof_redlink_wkr.java
index f69bd5a04..32e5803fb 100644
--- a/400_xowa/src/gplx/xowa/files/Xof_redlink_wkr.java
+++ b/400_xowa/src/gplx/xowa/files/Xof_redlink_wkr.java
@@ -29,7 +29,7 @@ class Xof_redlink_wkr implements Gfo_thread_wkr {
 		int len = uids.length;
 		for (int i = 0; i < len; ++i) {
 			int uid = uids[i];
-			js_wkr.Html_atr_set(Int_.Xto_str(uid), "", "");
+			js_wkr.Html_atr_set(Int_.To_str(uid), "", "");
 		}
 	}
 }
diff --git a/400_xowa/src/gplx/xowa/files/Xof_url_bldr.java b/400_xowa/src/gplx/xowa/files/Xof_url_bldr.java
index c4a8760de..e2ece7c9d 100644
--- a/400_xowa/src/gplx/xowa/files/Xof_url_bldr.java
+++ b/400_xowa/src/gplx/xowa/files/Xof_url_bldr.java
@@ -62,9 +62,9 @@ public class Xof_url_bldr {
 		this.file_is_thumb = file_mode == Xof_repo_itm_.Mode_thumb; this.file_w = file_w; this.time = time; this.page = page;			
 		return this;
 	}
-	public byte[] Xto_bry() {Bld(); byte[] rv = bfr.Xto_bry_and_clear(); Clear(); return rv;}
-	public String Xto_str() {Bld(); String rv = bfr.Xto_str(); Clear(); return rv;}
-	public Io_url Xto_url() {Bld(); Io_url rv = Io_url_.new_fil_(bfr.Xto_str()); Clear(); return rv;}
+	public byte[] Xto_bry() {Bld(); byte[] rv = bfr.To_bry_and_clear(); Clear(); return rv;}
+	public String Xto_str() {Bld(); String rv = bfr.To_str(); Clear(); return rv;}
+	public Io_url Xto_url() {Bld(); Io_url rv = Io_url_.new_fil_(bfr.To_str()); Clear(); return rv;}
 	public Io_url To_url_trg(Xof_repo_itm repo_itm, Xof_fsdb_itm itm, boolean orig) {
 		byte mode = orig ? Xof_repo_itm_.Mode_orig : Xof_repo_itm_.Mode_thumb;
 		return this.Init_for_trg_file(mode, repo_itm, itm.Orig_ttl(), itm.Orig_ttl_md5(), itm.Orig_ext(), itm.Html_w(), itm.Lnki_time(), itm.Lnki_page()).Xto_url();
diff --git a/400_xowa/src/gplx/xowa/files/Xof_xfer_itm.java b/400_xowa/src/gplx/xowa/files/Xof_xfer_itm.java
index 10b318daa..b38c3724a 100644
--- a/400_xowa/src/gplx/xowa/files/Xof_xfer_itm.java
+++ b/400_xowa/src/gplx/xowa/files/Xof_xfer_itm.java
@@ -18,7 +18,7 @@ along with this program.  If not, see .
 package gplx.xowa.files; import gplx.*; import gplx.xowa.*;
 import gplx.core.primitives.*;
 import gplx.xowa.files.gui.*; import gplx.xowa.files.repos.*;
-import gplx.xowa.tdbs.metas.*;
+import gplx.xowa.wikis.tdbs.metas.*;
 import gplx.xowa.parsers.utils.*;
 public class Xof_xfer_itm implements Xof_file_itm {
 	public Xof_xfer_itm() {
diff --git a/400_xowa/src/gplx/xowa/files/Xofv_file_mgr_tst.java b/400_xowa/src/gplx/xowa/files/Xofv_file_mgr_tst.java
index 38f52ffd3..fc64f088a 100644
--- a/400_xowa/src/gplx/xowa/files/Xofv_file_mgr_tst.java
+++ b/400_xowa/src/gplx/xowa/files/Xofv_file_mgr_tst.java
@@ -21,7 +21,7 @@ import gplx.xowa.files.fsdb.*; import gplx.xowa.files.caches.*; import gplx.xowa
 import gplx.xowa.apps.*; import gplx.xowa.wikis.*; import gplx.xowa.files.origs.*;
 public class Xofv_file_mgr_tst {
 //		@Before public void init() {fxt.Clear();} private final Xofv_file_mgr_fxt fxt = new Xofv_file_mgr_fxt();
-	@After  public void term() {Gfo_usr_dlg_.I = Gfo_usr_dlg_.Noop;}
+	@After  public void term() {Gfo_usr_dlg_.Instance = Gfo_usr_dlg_.Noop;}
 	@Test  public void Stub() {}
 //		@Test   public void Thumb() {
 //			fxt	.Init_orig_add(fxt.Mkr_orig().Init_comm("A.png", 440, 400))
@@ -104,10 +104,10 @@ public class Xofv_file_mgr_tst {
 //		}
 //		public Xofv_file_mgr_fxt Init_xfer_add(Xof_xfer_mkr mkr)	{file_mgr.Reg(mkr.Make()); return this;}
 //		public Xofv_file_mgr_fxt Init_cache_add(Xou_cache_itm_mkr mkr)	{mkr.Make(file_mgr.Cache_mgr()); return this;}
-//		public Xofv_file_mgr_fxt Init_fsys_add(String s) {Io_mgr.I.SaveFilStr(s, ""); return this;}
+//		public Xofv_file_mgr_fxt Init_fsys_add(String s) {Io_mgr.Instance.SaveFilStr(s, ""); return this;}
 //		public Xofv_file_mgr_fxt Exec_process_lnki() {file_mgr.Process_lnki(); return this;}
 //		public Xofv_file_mgr_fxt Test_fsys_get(String path) {
-//			Tfds.Eq_true(Io_mgr.I.ExistsFil(Io_url_.mem_fil_(path)), "fsys: " + path);
+//			Tfds.Eq_true(Io_mgr.Instance.ExistsFil(Io_url_.mem_fil_(path)), "fsys: " + path);
 //			return this;
 //		}
 //	}
diff --git a/400_xowa/src/gplx/xowa/files/Xog_redlink_thread.java b/400_xowa/src/gplx/xowa/files/Xog_redlink_thread.java
index db306d7f8..abf4dbf80 100644
--- a/400_xowa/src/gplx/xowa/files/Xog_redlink_thread.java
+++ b/400_xowa/src/gplx/xowa/files/Xog_redlink_thread.java
@@ -25,7 +25,7 @@ public class Xog_redlink_thread implements Gfo_thread_wkr {
 	public void Exec() {
 		int len = redlink_ary.length;
 		for (int i = 0; i < len; ++i) {
-			js_wkr.Html_redlink(gplx.xowa.parsers.lnkis.redlinks.Xopg_redlink_lnki_list.Lnki_id_prefix + Int_.Xto_str(redlink_ary[i]));
+			js_wkr.Html_redlink(gplx.xowa.parsers.lnkis.redlinks.Xopg_redlink_lnki_list.Lnki_id_prefix + Int_.To_str(redlink_ary[i]));
 		}
 	}
 }
diff --git a/400_xowa/src/gplx/xowa/files/Xow_file_mgr.java b/400_xowa/src/gplx/xowa/files/Xow_file_mgr.java
index b0c50c3c7..b6aed33b9 100644
--- a/400_xowa/src/gplx/xowa/files/Xow_file_mgr.java
+++ b/400_xowa/src/gplx/xowa/files/Xow_file_mgr.java
@@ -19,7 +19,7 @@ package gplx.xowa.files; import gplx.*; import gplx.xowa.*;
 import gplx.dbs.*; import gplx.dbs.cfgs.*; 
 import gplx.xowa.files.repos.*; import gplx.xowa.files.origs.*;
 import gplx.fsdb.*; import gplx.fsdb.meta.*; import gplx.xowa.files.fsdb.*;
-import gplx.xowa.tdbs.metas.*;
+import gplx.xowa.wikis.tdbs.metas.*;
 public class Xow_file_mgr implements GfoInvkAble {
 	private Xof_wkr_mgr wkr_mgr;
 	public Xow_file_mgr(Xowe_wiki wiki) {
@@ -40,7 +40,7 @@ public class Xow_file_mgr implements GfoInvkAble {
 	public byte Version() {
 		if (version == Bool_.__byte) {
 			Io_url file_dir = wiki.Fsys_mgr().File_dir();
-			if (!Io_mgr.I.ExistsFil(file_dir.GenSubFil(Fsdb_db_mgr__v1.Mnt_name))) {
+			if (!Io_mgr.Instance.ExistsFil(file_dir.GenSubFil(Fsdb_db_mgr__v1.Mnt_name))) {
 				version = Version_1;
 				fsdb_mode = Xof_fsdb_mode.new_v0();
 			}
@@ -121,7 +121,7 @@ public class Xow_file_mgr implements GfoInvkAble {
 		if (	db_core == null			// "-file-core.xowa" not found
 			&&	!wiki.Data__core_mgr().Props().Layout_file().Tid_is_all()	// DATE:2015-08-10
 			)
-			db_core = Fsdb_db_mgr__v2_bldr.I.Get_or_make(wiki, false);	// make it
+			db_core = Fsdb_db_mgr__v2_bldr.Instance.Get_or_make(wiki, false);	// make it
 		this.version = Version_2;
 		this.fsdb_mode = Xof_fsdb_mode.new_v2_gui();
 		orig_mgr.Init_by_wiki(wiki, fsdb_mode, db_core.File__orig_tbl_ary(), Xof_url_bldr.new_v2());
diff --git a/400_xowa/src/gplx/xowa/files/bins/Bin_fetcher.java b/400_xowa/src/gplx/xowa/files/bins/Bin_fetcher.java
index 0413caf50..a5c282283 100644
--- a/400_xowa/src/gplx/xowa/files/bins/Bin_fetcher.java
+++ b/400_xowa/src/gplx/xowa/files/bins/Bin_fetcher.java
@@ -24,12 +24,12 @@ interface Bin_fetcher {
 class Bin_fetcher_fsys implements Bin_fetcher {
 	public void Init_src_url(Io_url src) {this.src = src;} private Io_url src;
 	public boolean Save_as_url(Io_url trg) {
-		try {Io_mgr.I.CopyFil(src, trg, true); return true;}
+		try {Io_mgr.Instance.CopyFil(src, trg, true); return true;}
 		catch (Exception exc) {Err_.Noop(exc); return false;}
 	}
 	public boolean Save_as_bry(Bry_obj_ref bry_ref) {
 		try {
-			byte[] bry = Io_mgr.I.LoadFilBry(src);
+			byte[] bry = Io_mgr.Instance.LoadFilBry(src);
 			bry_ref.Val_(bry);
 			return true;
 		}
diff --git a/400_xowa/src/gplx/xowa/files/bins/Io_download_mgr__memory.java b/400_xowa/src/gplx/xowa/files/bins/Io_download_mgr__memory.java
index 52f8c9852..f7d582449 100644
--- a/400_xowa/src/gplx/xowa/files/bins/Io_download_mgr__memory.java
+++ b/400_xowa/src/gplx/xowa/files/bins/Io_download_mgr__memory.java
@@ -18,7 +18,7 @@ along with this program.  If not, see .
 package gplx.xowa.files.bins; import gplx.*; import gplx.xowa.*; import gplx.xowa.files.*;
 import gplx.ios.*;
 public class Io_download_mgr__memory implements Io_download_mgr {
-	private final Ordered_hash hash = Ordered_hash_.new_();
+	private final Ordered_hash hash = Ordered_hash_.New();
 	public void	Clear() {hash.Clear();}
 	public void Upload_data(String url, byte[] data) {hash.Add(url, data);}
 	public Io_stream_rdr Download_as_rdr(String url) {
diff --git a/400_xowa/src/gplx/xowa/files/bins/Xof_bin_mgr.java b/400_xowa/src/gplx/xowa/files/bins/Xof_bin_mgr.java
index e69bc3d2d..8515a0921 100644
--- a/400_xowa/src/gplx/xowa/files/bins/Xof_bin_mgr.java
+++ b/400_xowa/src/gplx/xowa/files/bins/Xof_bin_mgr.java
@@ -19,7 +19,7 @@ package gplx.xowa.files.bins; import gplx.*; import gplx.xowa.*; import gplx.xow
 import gplx.core.primitives.*; import gplx.ios.*;
 import gplx.fsdb.meta.*;
 import gplx.xowa.files.repos.*; import gplx.xowa.files.fsdb.*; import gplx.xowa.files.cnvs.*; import gplx.xowa.files.caches.*;
-import gplx.xowa.wms.*;
+import gplx.xowa.bldrs.wms.*;
 public class Xof_bin_mgr {		
 	private final Fsm_mnt_mgr mnt_mgr;
 	private final Gfo_usr_dlg usr_dlg; private final Xow_repo_mgr repo_mgr; private final Xof_url_bldr url_bldr = Xof_url_bldr.new_v2();
@@ -29,7 +29,7 @@ public class Xof_bin_mgr {
 	private final Io_stream_rdr_wrapper rdr_wrapper = new Io_stream_rdr_wrapper();
 	public Xof_bin_mgr(Fsm_mnt_mgr mnt_mgr, Xow_repo_mgr repo_mgr, Xof_img_wkr_resize_img resize_wkr, Io_download_fmt download_fmt) {
 		this.mnt_mgr = mnt_mgr; this.repo_mgr = repo_mgr; this.download_fmt = download_fmt;
-		this.usr_dlg = Gfo_usr_dlg_.I;
+		this.usr_dlg = Gfo_usr_dlg_.Instance;
 		this.Resizer_(resize_wkr);
 	}
 	public void Resizer_(Xof_img_wkr_resize_img v) {resizer = v;} private Xof_img_wkr_resize_img resizer;
@@ -173,7 +173,7 @@ public class Xof_bin_mgr {
 	private boolean Set_found(boolean save_to_fsys, Xof_fsdb_itm fsdb, Io_url fsys_url, Io_stream_rdr_wrapper rdr_wrapper) {
 		long fsdb_len = -1;
 		if (save_to_fsys)
-			fsdb_len = Io_mgr.I.QueryFil(fsys_url).Size();
+			fsdb_len = Io_mgr.Instance.QueryFil(fsys_url).Size();
 		else
 			fsdb_len = rdr_wrapper.Rdr().Len();
 		fsdb.File_size_(fsdb_len);
diff --git a/400_xowa/src/gplx/xowa/files/bins/Xof_bin_skip_mgr.java b/400_xowa/src/gplx/xowa/files/bins/Xof_bin_skip_mgr.java
index 2bb924ac2..ebef19ccf 100644
--- a/400_xowa/src/gplx/xowa/files/bins/Xof_bin_skip_mgr.java
+++ b/400_xowa/src/gplx/xowa/files/bins/Xof_bin_skip_mgr.java
@@ -37,8 +37,8 @@ public class Xof_bin_skip_mgr {
 	}
 	private Xof_bin_skip_wkr New_wkr(Fsm_cfg_mgr cfg_mgr, String key) {
 		Xof_bin_skip_wkr rv = null;
-		if		(String_.Eq(key, Xof_bin_skip_wkr_.Key__page_gt_1))		rv = Xof_bin_skip_wkr__page_gt_1.I;
-		else if	(String_.Eq(key, Xof_bin_skip_wkr_.Key__small_size))	rv = Xof_bin_skip_wkr__small_size.I;
+		if		(String_.Eq(key, Xof_bin_skip_wkr_.Key__page_gt_1))		rv = Xof_bin_skip_wkr__page_gt_1.Instance;
+		else if	(String_.Eq(key, Xof_bin_skip_wkr_.Key__small_size))	rv = Xof_bin_skip_wkr__small_size.Instance;
 		else															throw Err_.new_unhandled(key);
 		if (!rv.Skip_init(cfg_mgr)) return null;
 		return rv;
@@ -69,7 +69,7 @@ class Xof_bin_skip_wkr__page_gt_1 implements Xof_bin_skip_wkr {	// prior to v2.4
 	public void Skip_term(Fsm_cfg_mgr cfg_mgr) {
 		cfg_mgr.Patch__save(Fsm_cfg_mgr.Key_patch__page_gt_1);
 	}
-        public static final Xof_bin_skip_wkr__page_gt_1 I = new Xof_bin_skip_wkr__page_gt_1(); Xof_bin_skip_wkr__page_gt_1() {}
+        public static final Xof_bin_skip_wkr__page_gt_1 Instance = new Xof_bin_skip_wkr__page_gt_1(); Xof_bin_skip_wkr__page_gt_1() {}
 }
 class Xof_bin_skip_wkr__small_size implements Xof_bin_skip_wkr {// downloads can randomly be broken; assume that anything with a small size is broken and redownload again; DATE:2015-04-21
 	public String Key() {return Xof_bin_skip_wkr_.Key__small_size;}
@@ -85,5 +85,5 @@ class Xof_bin_skip_wkr__small_size implements Xof_bin_skip_wkr {// downloads can
 		return rv;
 	}
 	public void Skip_term(Fsm_cfg_mgr cfg_mgr) {}
-        public static final Xof_bin_skip_wkr__small_size I = new Xof_bin_skip_wkr__small_size(); Xof_bin_skip_wkr__small_size() {}
+        public static final Xof_bin_skip_wkr__small_size Instance = new Xof_bin_skip_wkr__small_size(); Xof_bin_skip_wkr__small_size() {}
 }
diff --git a/400_xowa/src/gplx/xowa/files/bins/Xof_bin_wkr__fsys_base.java b/400_xowa/src/gplx/xowa/files/bins/Xof_bin_wkr__fsys_base.java
index bca433c4b..707ba198c 100644
--- a/400_xowa/src/gplx/xowa/files/bins/Xof_bin_wkr__fsys_base.java
+++ b/400_xowa/src/gplx/xowa/files/bins/Xof_bin_wkr__fsys_base.java
@@ -33,7 +33,7 @@ public abstract class Xof_bin_wkr__fsys_base implements Xof_bin_wkr, GfoInvkAble
 	private boolean Get_to_fsys(byte[] orig_repo, byte[] orig_ttl, byte[] orig_md5, Xof_ext orig_ext, boolean lnki_is_thumb, int file_w, double lnki_time, int lnki_page, Io_url file_url) {
 		Io_url src_url = this.Get_src_url(Xof_repo_itm_.Mode_by_bool(lnki_is_thumb), String_.new_u8(orig_repo), orig_ttl, orig_md5, orig_ext, file_w, lnki_time, lnki_page);
 		if (src_url == Io_url_.Empty) return false;
-		byte[] bin = Io_mgr.I.LoadFilBry(src_url);
+		byte[] bin = Io_mgr.Instance.LoadFilBry(src_url);
 		return bin != Io_mgr.LoadFilBry_fail;
 	}
 	protected abstract Io_url Get_src_url(byte mode, String wiki, byte[] ttl_wo_ns, byte[] md5, Xof_ext ext, int w, double time, int page);
diff --git a/400_xowa/src/gplx/xowa/files/caches/Xof_cache_mgr.java b/400_xowa/src/gplx/xowa/files/caches/Xof_cache_mgr.java
index f71f4e852..6ffe89cbc 100644
--- a/400_xowa/src/gplx/xowa/files/caches/Xof_cache_mgr.java
+++ b/400_xowa/src/gplx/xowa/files/caches/Xof_cache_mgr.java
@@ -60,7 +60,7 @@ public class Xof_cache_mgr implements GfoInvkAble {
 		if (Env_.Mode_testing()) return;				// NOTE: needed else test breaks in sqlite mode; DATE:2015-02-21
 		Xofc_fil_itm cache_fil_itm = this.Reg(itm, 0);	// get item
 		if (cache_fil_itm.Size() == 0) {				// item does not exist; size will be 0, since 0 passed above
-			long fil_size = Io_mgr.I.QueryFil(itm.Html_view_url()).Size();
+			long fil_size = Io_mgr.Instance.QueryFil(itm.Html_view_url()).Size();
 			cache_fil_itm.Size_(fil_size);
 		}
 	}
diff --git a/400_xowa/src/gplx/xowa/files/caches/Xofc_dir_mgr.java b/400_xowa/src/gplx/xowa/files/caches/Xofc_dir_mgr.java
index ff8cef3d8..95d65fd86 100644
--- a/400_xowa/src/gplx/xowa/files/caches/Xofc_dir_mgr.java
+++ b/400_xowa/src/gplx/xowa/files/caches/Xofc_dir_mgr.java
@@ -19,7 +19,7 @@ package gplx.xowa.files.caches; import gplx.*; import gplx.xowa.*; import gplx.x
 import gplx.dbs.*;
 class Xofc_dir_mgr {
 	private final Xofc_dir_tbl tbl = new Xofc_dir_tbl();
-	private final Ordered_hash hash_by_names = Ordered_hash_.new_bry_(); private final Hash_adp hash_by_ids = Hash_adp_.new_();
+	private final Ordered_hash hash_by_names = Ordered_hash_.New_bry(); private final Hash_adp hash_by_ids = Hash_adp_.new_();
 	private Xof_cache_mgr cache_mgr;
 	public Xofc_dir_mgr(Xof_cache_mgr v) {this.cache_mgr = v;}
 	public void Conn_(Db_conn v, boolean created, boolean schema_is_1) {tbl.Conn_(v, created, schema_is_1);}
@@ -81,12 +81,12 @@ class Xofc_dir_mgr {
 	private void Db_recalc_next_id(Xofc_dir_itm itm, String err) {
 		if (String_.Has(err, "PRIMARY KEY must be unique")) { // primary key exception in strange situations (multiple xowas at same time)
 			int next_id = tbl.Select_max_uid() + 1;				
-			Gfo_usr_dlg_.I.Warn_many("", "", "uid out of sync; incrementing; uid=~{0} name=~{1} err=~{2}", itm.Id(), String_.new_u8(itm.Name()), err);
+			Gfo_usr_dlg_.Instance.Warn_many("", "", "uid out of sync; incrementing; uid=~{0} name=~{1} err=~{2}", itm.Id(), String_.new_u8(itm.Name()), err);
 			itm.Id_(next_id);
 			cache_mgr.Next_id_(next_id + 1);
 			err = tbl.Db_save(itm);
 			if (err == null) return;
 		}
-		Gfo_usr_dlg_.I.Warn_many("", "", "failed to save uid; uid=~{0} name=~{1} err=~{2}", itm.Id(), String_.new_u8(itm.Name()), err);
+		Gfo_usr_dlg_.Instance.Warn_many("", "", "failed to save uid; uid=~{0} name=~{1} err=~{2}", itm.Id(), String_.new_u8(itm.Name()), err);
 	}
 }
diff --git a/400_xowa/src/gplx/xowa/files/caches/Xofc_fil_itm.java b/400_xowa/src/gplx/xowa/files/caches/Xofc_fil_itm.java
index 74effa947..4895238ac 100644
--- a/400_xowa/src/gplx/xowa/files/caches/Xofc_fil_itm.java
+++ b/400_xowa/src/gplx/xowa/files/caches/Xofc_fil_itm.java
@@ -56,7 +56,7 @@ public class Xofc_fil_itm implements CompareAble {
 			.Add_int_variable(h).Add_byte_pipe()
 			.Add_int_variable(Xof_lnki_time.X_int(time))
 			;
-		return bfr.Xto_bry_and_clear();
+		return bfr.To_bry_and_clear();
 	}
 	public static byte[] Gen_hash_key_v2(Bry_bfr bfr, int dir_id, byte[] name, boolean is_orig, int w, double time, int page) {
 		bfr	.Add_int_variable(dir_id).Add_byte_pipe()
@@ -66,7 +66,7 @@ public class Xofc_fil_itm implements CompareAble {
 			.Add_double(Xof_lnki_time.Db_save_double(time)).Add_byte_pipe()
 			.Add_int_variable(page)
 			;
-		return bfr.Xto_bry_and_clear();
+		return bfr.To_bry_and_clear();
 	}
 	public int compareTo(Object obj) {Xofc_fil_itm comp = (Xofc_fil_itm)obj; return -Long_.Compare(cache_time, comp.cache_time);}	// - for DESC sort
 	public static final Xofc_fil_itm Null = null;
diff --git a/400_xowa/src/gplx/xowa/files/caches/Xofc_fil_mgr.java b/400_xowa/src/gplx/xowa/files/caches/Xofc_fil_mgr.java
index 0e604ebf9..0f10a664e 100644
--- a/400_xowa/src/gplx/xowa/files/caches/Xofc_fil_mgr.java
+++ b/400_xowa/src/gplx/xowa/files/caches/Xofc_fil_mgr.java
@@ -20,7 +20,7 @@ import gplx.core.primitives.*;
 import gplx.dbs.*; import gplx.fsdb.*; import gplx.xowa.wikis.*; import gplx.xowa.files.repos.*;
 class Xofc_fil_mgr {
 	private Xof_cache_mgr cache_mgr;		
-	private final Xofc_fil_tbl tbl = new Xofc_fil_tbl(); private final Ordered_hash hash = Ordered_hash_.new_bry_(); private final Bry_bfr key_bldr = Bry_bfr.reset_(255);
+	private final Xofc_fil_tbl tbl = new Xofc_fil_tbl(); private final Ordered_hash hash = Ordered_hash_.New_bry(); private final Bry_bfr key_bldr = Bry_bfr.reset_(255);
 	public Xofc_fil_mgr(Xof_cache_mgr v) {this.cache_mgr = v;}
 	public void Conn_(Db_conn v, boolean created, boolean schema_is_1) {tbl.Conn_(v, created, schema_is_1);}
 	public void Save_all() {
@@ -130,20 +130,20 @@ class Xofc_fil_mgr {
 			, Xof_lnki_time.Convert_to_xowa_thumbtime	(itm_ext_id, itm.Time())
 			, Xof_lnki_time.Convert_to_xowa_page		(itm_ext_id, itm.Time())
 			).Xto_url();
-		Io_mgr.I.DeleteFil_args(fil_url).MissingFails_off().Exec();
+		Io_mgr.Instance.DeleteFil_args(fil_url).MissingFails_off().Exec();
 		itm.Cmd_mode_delete_();
 	}
 	public void Cleanup() {tbl.Rls();}
 	private void Db_recalc_next_id(Xofc_fil_itm fil_itm, String err_msg) {
 		if (String_.Has(err_msg, "PRIMARY KEY must be unique")) { // primary key exception in strange situations (multiple xowas at same time)
 			int next_id = tbl.Select_max_uid() + 1;				
-			Gfo_usr_dlg_.I.Warn_many("", "", "uid out of sync; incrementing; uid=~{0} name=~{1} err=~{2}", fil_itm.Uid(), String_.new_u8(fil_itm.Name()), err_msg);
+			Gfo_usr_dlg_.Instance.Warn_many("", "", "uid out of sync; incrementing; uid=~{0} name=~{1} err=~{2}", fil_itm.Uid(), String_.new_u8(fil_itm.Name()), err_msg);
 			fil_itm.Uid_(next_id);
 			cache_mgr.Next_id_(next_id + 1);
 			err_msg = tbl.Db_save(fil_itm);
 			if (err_msg == null)
 				return;
 		}
-		Gfo_usr_dlg_.I.Warn_many("", "", "failed to save uid; uid=~{0} name=~{1} err=~{2}", fil_itm.Uid(), String_.new_u8(fil_itm.Name()), err_msg);
+		Gfo_usr_dlg_.Instance.Warn_many("", "", "failed to save uid; uid=~{0} name=~{1} err=~{2}", fil_itm.Uid(), String_.new_u8(fil_itm.Name()), err_msg);
 	}
 }
diff --git a/400_xowa/src/gplx/xowa/files/caches/Xofc_fil_tbl.java b/400_xowa/src/gplx/xowa/files/caches/Xofc_fil_tbl.java
index df4e74de6..fb4dd0418 100644
--- a/400_xowa/src/gplx/xowa/files/caches/Xofc_fil_tbl.java
+++ b/400_xowa/src/gplx/xowa/files/caches/Xofc_fil_tbl.java
@@ -128,7 +128,7 @@ class Xofc_fil_tbl implements RlsAble {
 				Xofc_fil_itm fil_itm = new_itm(rdr);
 				byte[] key = fil_itm.Gen_hash_key_v1(fil_key_bldr);
 				if (hash.Has(key))		// NOTE: need to check for uniqueness else dupe file will cause select to fail; shouldn't happen, but somehow did; DATE:2013-12-28
-					Gfo_usr_dlg_.I.Warn_many("", "", "cache had duplicate itm: key=~{0}", String_.new_u8(key));
+					Gfo_usr_dlg_.Instance.Warn_many("", "", "cache had duplicate itm: key=~{0}", String_.new_u8(key));
 				else
 					hash.Add(key, fil_itm);
 			}
diff --git a/400_xowa/src/gplx/xowa/files/caches/Xou_cache_itm.java b/400_xowa/src/gplx/xowa/files/caches/Xou_cache_itm.java
index 364186e58..6f9678672 100644
--- a/400_xowa/src/gplx/xowa/files/caches/Xou_cache_itm.java
+++ b/400_xowa/src/gplx/xowa/files/caches/Xou_cache_itm.java
@@ -76,7 +76,7 @@ public class Xou_cache_itm {
 			.Add_int_variable(w).Add_byte_pipe().Add_int_variable(h).Add_byte_pipe().Add_double(time).Add_byte_pipe().Add_int_variable(page)
 			.Add_int_variable(user_thumb_w)
 			;
-		return key_bfr.Xto_bry_and_clear();
+		return key_bfr.To_bry_and_clear();
 	}
 }
 class Xof_cache_mgr_sorter implements gplx.lists.ComparerAble {
@@ -85,5 +85,5 @@ class Xof_cache_mgr_sorter implements gplx.lists.ComparerAble {
 		Xou_cache_itm rhs = (Xou_cache_itm)rhsObj;
 		return -Long_.Compare(lhs.View_date(), rhs.View_date());	// - for DESC sort
 	}
-	public static final Xof_cache_mgr_sorter I = new Xof_cache_mgr_sorter(); Xof_cache_mgr_sorter() {}
+	public static final Xof_cache_mgr_sorter Instance = new Xof_cache_mgr_sorter(); Xof_cache_mgr_sorter() {}
 }
diff --git a/400_xowa/src/gplx/xowa/files/caches/Xou_cache_mgr.java b/400_xowa/src/gplx/xowa/files/caches/Xou_cache_mgr.java
index fcabf138d..919a640de 100644
--- a/400_xowa/src/gplx/xowa/files/caches/Xou_cache_mgr.java
+++ b/400_xowa/src/gplx/xowa/files/caches/Xou_cache_mgr.java
@@ -21,7 +21,7 @@ import gplx.xowa.files.fsdb.*; import gplx.xowa.files.repos.*;
 import gplx.xowa.wikis.*; import gplx.xowa.wikis.domains.*; import gplx.xowa.users.data.*;
 public class Xou_cache_mgr {
 	private final Xoa_wiki_mgr wiki_mgr; private final Xou_cache_tbl cache_tbl; private final Db_cfg_tbl cfg_tbl; private final Bry_bfr key_bfr = Bry_bfr.reset_(512);
-	private final Ordered_hash hash = Ordered_hash_.new_bry_(); private final Xof_url_bldr url_bldr = Xof_url_bldr.new_v2(); private final Object thread_lock = new Object();
+	private final Ordered_hash hash = Ordered_hash_.New_bry(); private final Xof_url_bldr url_bldr = Xof_url_bldr.new_v2(); private final Object thread_lock = new Object();
 	private final Io_url cache_dir; private boolean db_load_needed = true;
 	public Xou_cache_mgr(Xoa_wiki_mgr wiki_mgr, Io_url cache_dir, Xou_db_file db_file) {
 		this.wiki_mgr = wiki_mgr; this.cache_dir = cache_dir;
@@ -116,7 +116,7 @@ public class Xou_cache_mgr {
 		synchronized (thread_lock) {
 			try {
 				this.Db_save(); cache_tbl.Select_all(key_bfr, hash);			// save and load
-				Ordered_hash grp_hash = Ordered_hash_.new_();				// aggregate by file path; needed when same commons file used by two wikis
+				Ordered_hash grp_hash = Ordered_hash_.New();				// aggregate by file path; needed when same commons file used by two wikis
 				int len = hash.Count();
 				for (int i = 0; i < len; ++i) {
 					Xou_cache_itm itm = (Xou_cache_itm)hash.Get_at(i);
@@ -129,7 +129,7 @@ public class Xou_cache_mgr {
 					}
 					grp.Add(itm);
 				}
-				grp_hash.Sort_by(Xou_cache_grp_sorter.I);				// sorts by cache_time desc
+				grp_hash.Sort_by(Xou_cache_grp_sorter.Instance);				// sorts by cache_time desc
 				len = grp_hash.Count();
 				long fsys_size_calc = 0, fsys_size_temp = 0;
 				List_adp deleted = List_adp_.new_();
@@ -152,7 +152,7 @@ public class Xou_cache_mgr {
 					fsys_size_cur -= grp.File_size();
 				}
 				conn.Txn_end();
-				Io_mgr.I.Delete_dir_empty(cache_dir);
+				Io_mgr.Instance.Delete_dir_empty(cache_dir);
 			}
 			catch (Exception e) {Xoa_app_.Usr_dlg().Warn_many("", "", "failed to compress cache: err=~{0}", Err_.Message_gplx_full(e)); return;}
 		}
@@ -194,9 +194,9 @@ class Xou_cache_grp {
 			cache_hash.Del(itm.Lnki_key());
 			itm.Db_state_(Db_cmd_mode.Tid_delete);
 			cache_tbl.Db_save(itm);
-			gplx.ios.IoItmFil fil = Io_mgr.I.QueryFil(itm.File_url());
+			gplx.ios.IoItmFil fil = Io_mgr.Instance.QueryFil(itm.File_url());
 			if (fil.Exists()) {
-				Io_mgr.I.DeleteFil(itm.File_url());
+				Io_mgr.Instance.DeleteFil(itm.File_url());
 				deleted = true;
 			}
 			else {
@@ -213,5 +213,5 @@ class Xou_cache_grp_sorter implements gplx.lists.ComparerAble {
 		Xou_cache_grp rhs = (Xou_cache_grp)rhsObj;
 		return -Long_.Compare(lhs.View_date(), rhs.View_date());	// - for DESC sort
 	}
-	public static final Xou_cache_grp_sorter I = new Xou_cache_grp_sorter(); Xou_cache_grp_sorter() {}
+	public static final Xou_cache_grp_sorter Instance = new Xou_cache_grp_sorter(); Xou_cache_grp_sorter() {}
 }
diff --git a/400_xowa/src/gplx/xowa/files/caches/Xou_cache_mgr_tst.java b/400_xowa/src/gplx/xowa/files/caches/Xou_cache_mgr_tst.java
index ee49ce3f5..da17f6ef6 100644
--- a/400_xowa/src/gplx/xowa/files/caches/Xou_cache_mgr_tst.java
+++ b/400_xowa/src/gplx/xowa/files/caches/Xou_cache_mgr_tst.java
@@ -61,8 +61,8 @@ class Xou_cache_mgr_fxt {
 	private Xou_cache_mgr mgr;
 	public void Clear() {
 		Tfds.Now_set(DateAdp_.new_(1970, 1, 1, 0, 0, 0, 0));
-		Io_mgr.I.InitEngine_mem();
-		Db_conn_bldr.I.Reg_default_mem();
+		Io_mgr.Instance.InitEngine_mem();
+		Db_conn_bldr.Instance.Reg_default_mem();
 		Xoae_app app = Xoa_app_fxt.app_();			
 		app.User().User_db_mgr().Init_by_app(Bool_.N, app.Fsys_mgr().Root_dir().GenSubFil_nest("user", "xowa.user.anonymous.sqlite3"));
 		Xoa_app_fxt.repo_(app, Xoa_app_fxt.wiki_(app, "en.wikipedia.org"));
diff --git a/400_xowa/src/gplx/xowa/files/caches/Xou_cache_tbl_tst.java b/400_xowa/src/gplx/xowa/files/caches/Xou_cache_tbl_tst.java
index d39d144c0..3ffb7ee76 100644
--- a/400_xowa/src/gplx/xowa/files/caches/Xou_cache_tbl_tst.java
+++ b/400_xowa/src/gplx/xowa/files/caches/Xou_cache_tbl_tst.java
@@ -26,9 +26,9 @@ class Xou_cache_tbl_fxt {
 	private final Bry_bfr lnki_key_bfr = Bry_bfr.new_(255);
 	private Xou_cache_tbl tbl;
 	public void Clear() {
-		Io_mgr.I.InitEngine_mem();
-		Db_conn_bldr.I.Reg_default_mem();
-		Db_conn_bldr_data conn_data = Db_conn_bldr.I.Get_or_new(Io_url_.mem_fil_("mem/test.xowa"));
+		Io_mgr.Instance.InitEngine_mem();
+		Db_conn_bldr.Instance.Reg_default_mem();
+		Db_conn_bldr_data conn_data = Db_conn_bldr.Instance.Get_or_new(Io_url_.mem_fil_("mem/test.xowa"));
 		this.tbl = new Xou_cache_tbl(conn_data.Conn());
 		tbl.Create_tbl();
 	}
diff --git a/400_xowa/src/gplx/xowa/files/caches/Xou_file_itm_finder.java b/400_xowa/src/gplx/xowa/files/caches/Xou_file_itm_finder.java
index 87c174b60..cfe5a4f5c 100644
--- a/400_xowa/src/gplx/xowa/files/caches/Xou_file_itm_finder.java
+++ b/400_xowa/src/gplx/xowa/files/caches/Xou_file_itm_finder.java
@@ -48,7 +48,7 @@ public class Xou_file_itm_finder {
 //				img_size.Html_size_calc(exec_tid, xfer.Lnki_w(), xfer.Lnki_h(), (byte)xfer.Lnki_type(), Xof_patch_upright_tid_.Tid_all, xfer.Lnki_upright(), cache_itm.Orig_ext_id(), cache_itm.Orig_w(), cache_itm.Orig_h(), Xof_img_size.Thumb_width_img);
 //				xfer.Init_at_gallery_end(img_size.Html_w(), img_size.Html_h(), url_bldr.To_url_trg(repo, cache_itm, Bool_.N), url_bldr.To_url_trg(repo, cache_itm, Bool_.Y));
 			xfer.Init_at_html(exec_tid, img_size, repo, url_bldr);
-			if (Io_mgr.I.ExistsFil(xfer.Html_view_url())) {
+			if (Io_mgr.Instance.ExistsFil(xfer.Html_view_url())) {
 				cache_itm.Update_view_stats();
 				return true;
 			}
diff --git a/400_xowa/src/gplx/xowa/files/cnvs/Xof_img_wkr_resize_img_imageMagick.java b/400_xowa/src/gplx/xowa/files/cnvs/Xof_img_wkr_resize_img_imageMagick.java
index 2d7eece1c..870aafffb 100644
--- a/400_xowa/src/gplx/xowa/files/cnvs/Xof_img_wkr_resize_img_imageMagick.java
+++ b/400_xowa/src/gplx/xowa/files/cnvs/Xof_img_wkr_resize_img_imageMagick.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.files.cnvs; import gplx.*; import gplx.xowa.*; import gplx.xowa.files.*;
-import gplx.core.primitives.*; import gplx.xowa.wms.*;
+import gplx.core.primitives.*; import gplx.xowa.bldrs.wms.*;
 public class Xof_img_wkr_resize_img_imageMagick implements Xof_img_wkr_resize_img {
 	private final Xowmf_mgr wmf_mgr; private final ProcessAdp cmd_convert, cmd_convert_svg_to_png;
 	private boolean init_needed = true;
@@ -24,8 +24,8 @@ public class Xof_img_wkr_resize_img_imageMagick implements Xof_img_wkr_resize_im
 		this.wmf_mgr = wmf_mgr; this.cmd_convert = cmd_convert; this.cmd_convert_svg_to_png = cmd_convert_svg_to_png;
 	}
 	public boolean Resize_exec(Io_url src, Io_url trg, int trg_w, int trg_h, int ext_id, String_obj_ref rslt_val) {
-		if (!Io_mgr.I.ExistsFil(src)) return false;
-		Io_mgr.I.CreateDirIfAbsent(trg.OwnerDir());
+		if (!Io_mgr.Instance.ExistsFil(src)) return false;
+		Io_mgr.Instance.CreateDirIfAbsent(trg.OwnerDir());
 		if (init_needed) {
 			init_needed = false;
 			Gfo_usr_dlg usr_dlg = Xoa_app_.Usr_dlg();
diff --git a/400_xowa/src/gplx/xowa/files/cnvs/Xof_img_wkr_resize_img_mok.java b/400_xowa/src/gplx/xowa/files/cnvs/Xof_img_wkr_resize_img_mok.java
index 0a323ccd8..6f6ca1d43 100644
--- a/400_xowa/src/gplx/xowa/files/cnvs/Xof_img_wkr_resize_img_mok.java
+++ b/400_xowa/src/gplx/xowa/files/cnvs/Xof_img_wkr_resize_img_mok.java
@@ -23,8 +23,8 @@ public class Xof_img_wkr_resize_img_mok implements Xof_img_wkr_resize_img {
 		int src_w = src_size.Width(), src_h = src_size.Height();
 		if (trg_w < 1) throw Err_.new_wo_type("trg_w must be > 0", "trg_w", trg_w);
 		if (trg_h < 1) trg_h = Xof_xfer_itm_.Scale_h(src_w, src_h, trg_w);
-		Io_mgr.I.SaveFilStr(trg, SizeAdp_.new_(trg_w, trg_h).To_str());
+		Io_mgr.Instance.SaveFilStr(trg, SizeAdp_.new_(trg_w, trg_h).To_str());
 		return true;
 	}
-	public static final Xof_img_wkr_resize_img_mok _ = new Xof_img_wkr_resize_img_mok(); Xof_img_wkr_resize_img_mok() {}
+	public static final Xof_img_wkr_resize_img_mok Instance = new Xof_img_wkr_resize_img_mok(); Xof_img_wkr_resize_img_mok() {}
 }
diff --git a/400_xowa/src/gplx/xowa/files/downloads/Xof_download_wkr_io.java b/400_xowa/src/gplx/xowa/files/downloads/Xof_download_wkr_io.java
index 571847b8e..72d81c6d6 100644
--- a/400_xowa/src/gplx/xowa/files/downloads/Xof_download_wkr_io.java
+++ b/400_xowa/src/gplx/xowa/files/downloads/Xof_download_wkr_io.java
@@ -18,7 +18,7 @@ along with this program.  If not, see .
 package gplx.xowa.files.downloads; import gplx.*; import gplx.xowa.*; import gplx.xowa.files.*;
 import gplx.ios.*;
 public class Xof_download_wkr_io implements Xof_download_wkr {
-	IoEngine_xrg_downloadFil xrg = Io_mgr.I.DownloadFil_args("", Io_url_.Empty);
+	IoEngine_xrg_downloadFil xrg = Io_mgr.Instance.DownloadFil_args("", Io_url_.Empty);
 	public IoEngine_xrg_downloadFil Download_xrg() {return xrg;}
 	public String Download_err() {return download_err;} private String download_err = "";
 	public byte Download(boolean src_is_web, String src_str, Io_url trg_url, String prog_fmt_hdr) {
@@ -31,8 +31,8 @@ public class Xof_download_wkr_io implements Xof_download_wkr {
 		}
 		else {
 			Io_url src_url = Io_url_.new_fil_(src_str);
-			if (!Io_mgr.I.ExistsFil(src_url)) return IoEngine_xrg_downloadFil.Rslt_fail_file_not_found;
-			try {Io_mgr.I.CopyFil(src_url, trg_url, true);}
+			if (!Io_mgr.Instance.ExistsFil(src_url)) return IoEngine_xrg_downloadFil.Rslt_fail_file_not_found;
+			try {Io_mgr.Instance.CopyFil(src_url, trg_url, true);}
 			catch (Exception exc) {Err_.Noop(exc); return IoEngine_xrg_downloadFil.Rslt_fail_unknown;}
 			return IoEngine_xrg_downloadFil.Rslt_pass;
 		}
diff --git a/400_xowa/src/gplx/xowa/files/downloads/Xof_download_wkr_test.java b/400_xowa/src/gplx/xowa/files/downloads/Xof_download_wkr_test.java
index 949f1a353..44370560a 100644
--- a/400_xowa/src/gplx/xowa/files/downloads/Xof_download_wkr_test.java
+++ b/400_xowa/src/gplx/xowa/files/downloads/Xof_download_wkr_test.java
@@ -20,10 +20,10 @@ import gplx.ios.*;
 public class Xof_download_wkr_test implements Xof_download_wkr {
 	public IoEngine_xrg_downloadFil Download_xrg() {return IoEngine_xrg_downloadFil.new_("", Io_url_.Empty).Trg_engine_key_(IoEngine_.MemKey);}
 	public byte Download(boolean src_is_web, String src_str, Io_url trg_url, String prog_fmt_hdr) {
-		Io_mgr.I.CreateDirIfAbsent(trg_url.OwnerDir());
+		Io_mgr.Instance.CreateDirIfAbsent(trg_url.OwnerDir());
 		Io_url src_url = Io_url_.new_fil_(src_str);
-		if (!Io_mgr.I.ExistsFil(src_url)) return IoEngine_xrg_downloadFil.Rslt_fail_file_not_found;
-		try {Io_mgr.I.CopyFil(src_url, trg_url, true);}
+		if (!Io_mgr.Instance.ExistsFil(src_url)) return IoEngine_xrg_downloadFil.Rslt_fail_file_not_found;
+		try {Io_mgr.Instance.CopyFil(src_url, trg_url, true);}
 		catch (Exception exc) {Err_.Noop(exc); return IoEngine_xrg_downloadFil.Rslt_fail_unknown;}
 		return IoEngine_xrg_downloadFil.Rslt_pass;
 	}
diff --git a/400_xowa/src/gplx/xowa/files/fsdb/Xof_fsdb_mgr__sql.java b/400_xowa/src/gplx/xowa/files/fsdb/Xof_fsdb_mgr__sql.java
index 1dddbbc5f..2cd5afe16 100644
--- a/400_xowa/src/gplx/xowa/files/fsdb/Xof_fsdb_mgr__sql.java
+++ b/400_xowa/src/gplx/xowa/files/fsdb/Xof_fsdb_mgr__sql.java
@@ -46,7 +46,7 @@ public class Xof_fsdb_mgr__sql implements Xof_fsdb_mgr, GfoInvkAble {
 	public void Fsdb_search_by_list(List_adp itms, Xow_wiki cur_wiki, Xoa_page page, Xog_js_wkr js_wkr) {
 		if (!fsdb_enabled) return;
 		int len = itms.Count();
-		Gfo_usr_dlg usr_dlg = Gfo_usr_dlg_.I;
+		Gfo_usr_dlg usr_dlg = Gfo_usr_dlg_.Instance;
 		Xow_wiki wiki = page.Commons_mgr().Source_wiki_or(cur_wiki);
 		Xou_cache_mgr cache_mgr = wiki.App().User().User_db_mgr().Cache_mgr();
 		for (int i = 0; i < len; i++) {
diff --git a/400_xowa/src/gplx/xowa/files/fsdb/fs_roots/Fs_root_dir.java b/400_xowa/src/gplx/xowa/files/fsdb/fs_roots/Fs_root_dir.java
index cef7b068e..3d5431714 100644
--- a/400_xowa/src/gplx/xowa/files/fsdb/fs_roots/Fs_root_dir.java
+++ b/400_xowa/src/gplx/xowa/files/fsdb/fs_roots/Fs_root_dir.java
@@ -61,7 +61,7 @@ class Fs_root_dir {
 	}
 	private Orig_fil_mgr Init_fs_fil_mgr() {	// NOTE: need to read entire dir, b/c ttl may be "A.png", but won't know which subdir
 		Orig_fil_mgr rv = new Orig_fil_mgr();
-		Io_url[] fils = Io_mgr.I.QueryDir_args(url).Recur_(recurse).ExecAsUrlAry();
+		Io_url[] fils = Io_mgr.Instance.QueryDir_args(url).Recur_(recurse).ExecAsUrlAry();
 		int fils_len = fils.length;
 		for (int i = 0; i < fils_len; i++) {
 			Io_url fil = fils[i];
@@ -80,9 +80,9 @@ class Fs_root_dir {
 	private Db_conn Init_db_fil_mgr() {
 		Io_url db_url = url.GenSubFil("^orig_regy.sqlite3");
 		boolean created = false; boolean schema_is_1 = Bool_.Y;
-		Db_conn conn = Db_conn_bldr.I.Get(db_url);
+		Db_conn conn = Db_conn_bldr.Instance.Get(db_url);
 		if (conn == null) {
-			conn = Db_conn_bldr.I.New(db_url);
+			conn = Db_conn_bldr.Instance.New(db_url);
 			created = true;
 		}
 		cfg_tbl = new Db_cfg_tbl(conn, schema_is_1 ? "fsdb_cfg" : "xowa_cfg");
diff --git a/400_xowa/src/gplx/xowa/files/fsdb/fs_roots/Fs_root_dir_tst.java b/400_xowa/src/gplx/xowa/files/fsdb/fs_roots/Fs_root_dir_tst.java
index d15022b27..08eddf57d 100644
--- a/400_xowa/src/gplx/xowa/files/fsdb/fs_roots/Fs_root_dir_tst.java
+++ b/400_xowa/src/gplx/xowa/files/fsdb/fs_roots/Fs_root_dir_tst.java
@@ -41,8 +41,8 @@ class Fs_root_dir_fxt {
 	private Orig_fil_tbl orig_fil_tbl;
 	private Io_url url;
 	public void Reset() {
-		Db_conn_bldr.I.Reg_default_mem();
-		Io_mgr.I.InitEngine_mem();
+		Db_conn_bldr.Instance.Reg_default_mem();
+		Io_mgr.Instance.InitEngine_mem();
 		url = Io_url_.mem_dir_("mem/dir/");
 		root_dir = new Fs_root_dir();
 		orig_fil_tbl = new Orig_fil_tbl();
@@ -61,7 +61,7 @@ class Fs_root_dir_fxt {
 	}
 	public static void Save_img(String url, int w, int h) {
 		gplx.gfui.SizeAdp img_size = gplx.gfui.SizeAdp_.new_(w, h);
-		Io_mgr.I.SaveFilStr(url, img_size.To_str());
+		Io_mgr.Instance.SaveFilStr(url, img_size.To_str());
 	}
 	public void Test_xto_fil_bry(String url_str, String expd) {
 		Io_url url = Io_url_.new_fil_(url_str);
diff --git a/400_xowa/src/gplx/xowa/files/fsdb/fs_roots/Fs_root_wkr_fsdb.java b/400_xowa/src/gplx/xowa/files/fsdb/fs_roots/Fs_root_wkr_fsdb.java
index faec5bc78..261a24e8f 100644
--- a/400_xowa/src/gplx/xowa/files/fsdb/fs_roots/Fs_root_wkr_fsdb.java
+++ b/400_xowa/src/gplx/xowa/files/fsdb/fs_roots/Fs_root_wkr_fsdb.java
@@ -41,9 +41,9 @@ public class Fs_root_wkr_fsdb {
 			int upright_patch = wiki.File_mgr().Patch_upright();
 			img_size.Html_size_calc(fsdb_itm.Lnki_exec_tid(), fsdb_itm.Lnki_w(), fsdb_itm.Lnki_h(), fsdb_itm.Lnki_type(), upright_patch, fsdb_itm.Lnki_upright(), fsdb_itm.Orig_ext().Id(), orig_itm.Fil_w(), orig_itm.Fil_h(), Xof_img_size.Thumb_width_img);
 			int html_w = img_size.Html_w(), html_h = img_size.Html_h();
-			String thumb_name = Int_.Xto_str(html_w) + orig_url.Ext();
+			String thumb_name = Int_.To_str(html_w) + orig_url.Ext();
 			Io_url thumb_url = thumb_dir.GenSubFil_ary(thumb_rel + orig_url.Info().DirSpr(), thumb_name);
-			if (!Io_mgr.I.ExistsFil(thumb_url)) {
+			if (!Io_mgr.Instance.ExistsFil(thumb_url)) {
 				if (!wiki.Appe().File_mgr().Img_mgr().Wkr_resize_img().Resize_exec(orig_url, thumb_url, html_w, html_h, fsdb_itm.Orig_ext().Id(), tmp_resize_result))
 					return false;
 			}
diff --git a/400_xowa/src/gplx/xowa/files/fsdb/fs_roots/Orig_fil_mgr.java b/400_xowa/src/gplx/xowa/files/fsdb/fs_roots/Orig_fil_mgr.java
index 9c014b9e0..ced982efa 100644
--- a/400_xowa/src/gplx/xowa/files/fsdb/fs_roots/Orig_fil_mgr.java
+++ b/400_xowa/src/gplx/xowa/files/fsdb/fs_roots/Orig_fil_mgr.java
@@ -17,7 +17,7 @@ along with this program.  If not, see .
 */
 package gplx.xowa.files.fsdb.fs_roots; import gplx.*; import gplx.xowa.*; import gplx.xowa.files.*; import gplx.xowa.files.fsdb.*;
 class Orig_fil_mgr {
-	private Ordered_hash hash = Ordered_hash_.new_bry_();
+	private Ordered_hash hash = Ordered_hash_.New_bry();
 	public boolean Has(byte[] lnki_ttl) {return hash.Has(lnki_ttl);}
 	public Orig_fil_itm Get_by_ttl(byte[] lnki_ttl) {return (Orig_fil_itm)hash.Get_by(lnki_ttl);}
 	public void Add(Orig_fil_itm fil) {hash.Add(fil.Fil_name(), fil);}
diff --git a/400_xowa/src/gplx/xowa/files/fsdb/tsts/Xof_file_fxt.java b/400_xowa/src/gplx/xowa/files/fsdb/tsts/Xof_file_fxt.java
index d07f08869..42472f622 100644
--- a/400_xowa/src/gplx/xowa/files/fsdb/tsts/Xof_file_fxt.java
+++ b/400_xowa/src/gplx/xowa/files/fsdb/tsts/Xof_file_fxt.java
@@ -19,14 +19,14 @@ package gplx.xowa.files.fsdb.tsts; import gplx.*; import gplx.xowa.*; import gpl
 import gplx.fsdb.*; import gplx.fsdb.meta.*; import gplx.dbs.*; import gplx.xowa.files.origs.*; import gplx.xowa.files.bins.*; import gplx.xowa.files.cnvs.*; import gplx.xowa.files.exts.*; import gplx.xowa.files.gui.*;
 import gplx.fsdb.data.*;
 import gplx.xowa.wikis.domains.*; import gplx.xowa.files.repos.*; import gplx.xowa.wikis.data.*;
-import gplx.xowa.nss.*;
+import gplx.xowa.wikis.nss.*;
 import gplx.xowa.parsers.lnkis.*;
 class Xof_file_fxt {		
 	private Xoae_app app; private Xof_fsdb_mgr__sql fsdb_mgr; private Xowe_wiki wiki; private Xof_orig_mgr orig_mgr;
 	private final Fsd_thm_itm tmp_thm = Fsd_thm_itm.new_(); private final Fsd_img_itm tmp_img = new Fsd_img_itm();
 	public void Rls() {}
 	public void Reset() {
-		Io_mgr.I.InitEngine_mem();	// NOTE: files are downloaded to mem_engine, regardless of Db being mem or sqlite; always reset
+		Io_mgr.Instance.InitEngine_mem();	// NOTE: files are downloaded to mem_engine, regardless of Db being mem or sqlite; always reset
 		Io_url root_url = Xoa_test_.Url_root();
 		Xoa_test_.Db_init(root_url);
 		app = Xoa_app_fxt.app_(Op_sys.Cur().Os_name(), root_url);
@@ -37,13 +37,13 @@ class Xof_file_fxt {
 		Xof_repo_fxt.Repos_init(app.File_mgr(), true, wiki);
 		Xowe_wiki_.Create(wiki, 1, "dump.xml");
 		Xowd_db_file text_db = wiki.Data__core_mgr().Dbs__make_by_tid(Xowd_db_file_.Tid_text); text_db.Tbl__text().Create_tbl();
-		Fsdb_db_mgr__v2 fsdb_core = Fsdb_db_mgr__v2_bldr.I.Get_or_make(wiki, Bool_.Y);
+		Fsdb_db_mgr__v2 fsdb_core = Fsdb_db_mgr__v2_bldr.Instance.Get_or_make(wiki, Bool_.Y);
 		fsdb_mgr.Mnt_mgr().Ctor_by_load(fsdb_core);
 		fsdb_mgr.Mnt_mgr().Mnts__get_main().Bin_mgr().Dbs__make("temp.xowa");
 		wiki.File_mgr().Init_file_mgr_by_load(wiki);
 		fsdb_mgr.Bin_mgr().Wkrs__del(Xof_bin_wkr_.Key_http_wmf);	// never use http_wmf wkr for these tests
 		Xof_bin_wkr__fsdb_sql bin_wkr_fsdb = (Xof_bin_wkr__fsdb_sql)fsdb_mgr.Bin_mgr().Wkrs__get_or_null(Xof_bin_wkr_.Key_fsdb_wiki);
-		fsdb_mgr.Bin_mgr().Resizer_(Xof_img_wkr_resize_img_mok._);
+		fsdb_mgr.Bin_mgr().Resizer_(Xof_img_wkr_resize_img_mok.Instance);
 		bin_wkr_fsdb.Resize_allowed_(true);
 	}
 	public void Init__orig_w_fsdb__commons_orig(String ttl, int w, int h) {
@@ -67,7 +67,7 @@ class Xof_file_fxt {
 		Xof_fsdb_itm itm = new Xof_fsdb_itm();
 		itm.Init_at_lnki(arg.Exec_tid(), wiki.Domain_itm().Abrv_xo(), ttl_bry, arg.Lnki_type(), arg.Lnki_upright(), arg.Lnki_w(), arg.Lnki_h(), arg.Lnki_time(), Xof_lnki_page.Null, Xof_patch_upright_tid_.Tid_all);
 		List_adp itms_list = List_adp_.new_(); itms_list.Add(itm);
-		orig_mgr.Find_by_list(Ordered_hash_.new_bry_(), itms_list, Xof_exec_tid.Tid_wiki_page);
+		orig_mgr.Find_by_list(Ordered_hash_.New_bry(), itms_list, Xof_exec_tid.Tid_wiki_page);
 		Xoa_ttl ttl = Xoa_ttl.parse(wiki, Xow_ns_.Id_main, ttl_bry);
 		Xoae_page page = Xoae_page.new_(wiki, ttl);
 		fsdb_mgr.Fsdb_search_by_list(itms_list, wiki, page, Xog_js_wkr_.Noop);
@@ -77,8 +77,8 @@ class Xof_file_fxt {
 	}
 	public void Test_fsys_exists_y(String url)			{Test_fsys_exists(url, Bool_.Y);}
 	public void Test_fsys_exists_n(String url)			{Test_fsys_exists(url, Bool_.N);}
-	public void Test_fsys_exists(String url, boolean expd) {Tfds.Eq(expd, Io_mgr.I.ExistsFil(Io_url_.new_any_(url)));}
-	public void Test_fsys(String url, String expd_bin)	{Tfds.Eq(expd_bin, Io_mgr.I.LoadFilStr(url));}
+	public void Test_fsys_exists(String url, boolean expd) {Tfds.Eq(expd, Io_mgr.Instance.ExistsFil(Io_url_.new_any_(url)));}
+	public void Test_fsys(String url, String expd_bin)	{Tfds.Eq(expd_bin, Io_mgr.Instance.LoadFilStr(url));}
 }
 class Xof_repo_fxt {
 	public static void Repos_init(Xof_file_mgr file_mgr, boolean src_repo_is_wmf, Xowe_wiki wiki) {
diff --git a/400_xowa/src/gplx/xowa/files/gui/Js_img_mgr.java b/400_xowa/src/gplx/xowa/files/gui/Js_img_mgr.java
index c05f3ab79..fe45da3bb 100644
--- a/400_xowa/src/gplx/xowa/files/gui/Js_img_mgr.java
+++ b/400_xowa/src/gplx/xowa/files/gui/Js_img_mgr.java
@@ -17,7 +17,7 @@ along with this program.  If not, see .
 */
 package gplx.xowa.files.gui; import gplx.*; import gplx.xowa.*; import gplx.xowa.files.*;
 import gplx.xowa.xtns.gallery.*;
-import gplx.xowa.files.fsdb.*; import gplx.xowa.gui.views.*;
+import gplx.xowa.files.fsdb.*; import gplx.xowa.guis.views.*;
 import gplx.xowa.parsers.lnkis.*;
 public class Js_img_mgr {
 	public static void Update_img(Xoa_page page, Xog_js_wkr js_wkr, Xof_file_itm itm) {
@@ -27,7 +27,7 @@ public class Js_img_mgr {
 		html_itm.Html_redlink(html_id);
 	}
 	private static void Update_img(Xoa_page page, Xog_js_wkr js_wkr, Js_img_wkr img_wkr, int uid, byte lnki_type, byte elem_tid, int html_w, int html_h, Io_url html_view_url, int orig_w, int orig_h, Io_url html_orig_url, byte[] lnki_ttl, int gallery_mgr_h) {
-		if (!page.Wiki().App().App_type().Uid_supports_js()) return;	// do not update html widget unless app is gui; null ref on http server; DATE:2014-09-17
+		if (!page.Wiki().App().Mode().Tid_supports_js()) return;	// do not update html widget unless app is gui; null ref on http server; DATE:2014-09-17
 		switch (elem_tid) {
 			case Xof_html_elem.Tid_gallery_v2:
 				img_wkr.Html_update(page, js_wkr, uid, html_w, html_h, html_view_url, orig_w, orig_h, html_orig_url, lnki_ttl);
@@ -36,7 +36,7 @@ public class Js_img_mgr {
 		String html_id = To_doc_uid(uid);
 		js_wkr.Html_img_update(html_id, html_view_url.To_http_file_str(), html_w, html_h);
 		if (Xop_lnki_type.Id_is_thumbable(lnki_type)) {	// thumb needs to set cls and width
-			js_wkr.Html_atr_set(html_id, "class", gplx.xowa.html.lnkis.Xoh_lnki_consts.Str_img_cls_thumbimage);
+			js_wkr.Html_atr_set(html_id, "class", gplx.xowa.htmls.lnkis.Xoh_lnki_consts.Str_img_cls_thumbimage);
 			js_wkr.Html_atr_set("xowa_file_div_" + uid, "style", "width:" + html_w + "px;");
 		}
 		switch (elem_tid) {
@@ -53,5 +53,5 @@ public class Js_img_mgr {
 				break;
 		}
 	}
-	public static String To_doc_uid(int html_uid) {return "xowa_file_img_" + Int_.Xto_str(html_uid);}
+	public static String To_doc_uid(int html_uid) {return "xowa_file_img_" + Int_.To_str(html_uid);}
 }
diff --git a/400_xowa/src/gplx/xowa/files/gui/Js_img_wkr.java b/400_xowa/src/gplx/xowa/files/gui/Js_img_wkr.java
index 502578aec..74839083c 100644
--- a/400_xowa/src/gplx/xowa/files/gui/Js_img_wkr.java
+++ b/400_xowa/src/gplx/xowa/files/gui/Js_img_wkr.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.files.gui; import gplx.*; import gplx.xowa.*; import gplx.xowa.files.*;
-import gplx.xowa.gui.views.*;
+import gplx.xowa.guis.views.*;
 public interface Js_img_wkr {
 	void Html_update(Xoa_page page, Xog_js_wkr js_wkr, int html_uid, int html_w, int html_h, Io_url html_view_url, int orig_w, int orig_h, Io_url html_orig_url, byte[] lnki_ttl);
 }
diff --git a/400_xowa/src/gplx/xowa/files/imgs/Xof_img_mgr.java b/400_xowa/src/gplx/xowa/files/imgs/Xof_img_mgr.java
index 2ae82b8fd..fc4cdbcca 100644
--- a/400_xowa/src/gplx/xowa/files/imgs/Xof_img_mgr.java
+++ b/400_xowa/src/gplx/xowa/files/imgs/Xof_img_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.files.imgs; import gplx.*; import gplx.xowa.*; import gplx.xowa.files.*;
-import gplx.xowa.apps.progs.*; import gplx.xowa.wms.*; import gplx.xowa.files.cnvs.*;	
+import gplx.xowa.apps.progs.*; import gplx.xowa.bldrs.wms.*; import gplx.xowa.files.cnvs.*;	
 public class Xof_img_mgr {
 	public Xof_img_wkr_resize_img				Wkr_resize_img() {return wkr_resize_img;} public void Wkr_resize_img_(Xof_img_wkr_resize_img v) {wkr_resize_img = v;} private Xof_img_wkr_resize_img wkr_resize_img;
 	public Xof_img_wkr_query_img_size			Wkr_query_img_size() {return wkr_query_img_size;} public void Wkr_query_img_size_(Xof_img_wkr_query_img_size v) {wkr_query_img_size = v;} private Xof_img_wkr_query_img_size wkr_query_img_size;
diff --git a/400_xowa/src/gplx/xowa/files/imgs/Xof_img_wkr_convert_djvu_to_tiff_.java b/400_xowa/src/gplx/xowa/files/imgs/Xof_img_wkr_convert_djvu_to_tiff_.java
index 0c8b837b7..37ebc6965 100644
--- a/400_xowa/src/gplx/xowa/files/imgs/Xof_img_wkr_convert_djvu_to_tiff_.java
+++ b/400_xowa/src/gplx/xowa/files/imgs/Xof_img_wkr_convert_djvu_to_tiff_.java
@@ -30,7 +30,7 @@ class Xof_img_wkr_convert_djvu_to_tiff_app implements Xof_img_wkr_convert_djvu_t
 class Xof_img_wkr_convert_djvu_to_tiff_mok implements Xof_img_wkr_convert_djvu_to_tiff {
 	public Xof_img_wkr_convert_djvu_to_tiff_mok(int w, int h) {this.w = w; this.h = h;} private int w, h;
 	public boolean Exec(Io_url src, Io_url trg) {
-		Io_mgr.I.SaveFilStr(trg, gplx.gfui.SizeAdp_.new_(w, h).To_str());
+		Io_mgr.Instance.SaveFilStr(trg, gplx.gfui.SizeAdp_.new_(w, h).To_str());
 		return true;
 	}
 }
diff --git a/400_xowa/src/gplx/xowa/files/imgs/Xof_img_wkr_query_img_size.java b/400_xowa/src/gplx/xowa/files/imgs/Xof_img_wkr_query_img_size.java
index f27b09025..f01d14493 100644
--- a/400_xowa/src/gplx/xowa/files/imgs/Xof_img_wkr_query_img_size.java
+++ b/400_xowa/src/gplx/xowa/files/imgs/Xof_img_wkr_query_img_size.java
@@ -17,7 +17,7 @@ along with this program.  If not, see .
 */
 package gplx.xowa.files.imgs; import gplx.*; import gplx.xowa.*; import gplx.xowa.files.*;
 import gplx.gfui.*;
-import gplx.xowa.wms.*;
+import gplx.xowa.bldrs.wms.*;
 public interface Xof_img_wkr_query_img_size {
 	SizeAdp Exec(Io_url url);
 }
diff --git a/400_xowa/src/gplx/xowa/files/origs/Xof_orig_itm.java b/400_xowa/src/gplx/xowa/files/origs/Xof_orig_itm.java
index aea269868..9032fb875 100644
--- a/400_xowa/src/gplx/xowa/files/origs/Xof_orig_itm.java
+++ b/400_xowa/src/gplx/xowa/files/origs/Xof_orig_itm.java
@@ -51,6 +51,6 @@ public class Xof_orig_itm {
 		bfr.Add_str_a7("w").Add_byte_eq().Add_int_variable(itm.w).Add_byte_semic();
 		bfr.Add_str_a7("h").Add_byte_eq().Add_int_variable(itm.h).Add_byte_semic();
 		bfr.Add_str_a7("redirect").Add_byte_eq().Add(itm.redirect).Add_byte_semic();
-		return bfr.Xto_str_and_clear();
+		return bfr.To_str_and_clear();
 	}
 }
diff --git a/400_xowa/src/gplx/xowa/files/origs/Xof_orig_mgr.java b/400_xowa/src/gplx/xowa/files/origs/Xof_orig_mgr.java
index 19541dbc9..c534b31fd 100644
--- a/400_xowa/src/gplx/xowa/files/origs/Xof_orig_mgr.java
+++ b/400_xowa/src/gplx/xowa/files/origs/Xof_orig_mgr.java
@@ -17,7 +17,7 @@ along with this program.  If not, see .
 */
 package gplx.xowa.files.origs; import gplx.*; import gplx.xowa.*; import gplx.xowa.files.*;
 import gplx.core.primitives.*; import gplx.dbs.*;
-import gplx.xowa.files.repos.*; import gplx.xowa.files.fsdb.*; import gplx.xowa.wms.apis.*; import gplx.xowa.files.downloads.*;
+import gplx.xowa.files.repos.*; import gplx.xowa.files.fsdb.*; import gplx.xowa.bldrs.wms.apis.*; import gplx.xowa.files.downloads.*;
 public class Xof_orig_mgr {
 	private Xof_orig_wkr[] wkrs; private int wkrs_len;
 	private Xof_url_bldr url_bldr; private Xow_repo_mgr repo_mgr; private final Xof_img_size img_size = new Xof_img_size();
@@ -33,7 +33,7 @@ public class Xof_orig_mgr {
 //			}
 		if (!fsdb_mode.Tid_v2_bld()) {	// add if gui, but not if bld
 			Io_url wiki_meta_dir = wiki.App().Fsys_mgr().File_dir().GenSubDir_nest("#meta", wiki.Domain_str());
-			if (Io_mgr.I.ExistsDir(wiki_meta_dir)) {
+			if (Io_mgr.Instance.ExistsDir(wiki_meta_dir)) {
 				Xof_orig_wkr__xo_meta xo_meta = new Xof_orig_wkr__xo_meta(wiki_meta_dir);
 				this.Wkrs__add_many(xo_meta);
 			}
@@ -63,7 +63,7 @@ public class Xof_orig_mgr {
 				Xof_orig_itm orig = (Xof_orig_itm)rv.Get_by(fsdb.Lnki_ttl()); if (orig == Xof_orig_itm.Null) continue;
 				if (orig.Insert_new()) this.Insert(orig.Repo(), fsdb.Lnki_ttl(), orig.Ext_id(), orig.W(), orig.H(), orig.Redirect());	// NOTE: orig_page must be same as find_arg not orig.Page() else will not be found for next call; DATE:2015-04-14
 				Xof_file_wkr.Eval_orig(orig, fsdb, url_bldr, repo_mgr, img_size);
-				if (!Io_mgr.I.ExistsFil(fsdb.Html_view_url()))
+				if (!Io_mgr.Instance.ExistsFil(fsdb.Html_view_url()))
 					fsdb.File_exists_n_();
 			} catch (Exception e) {
 				Xoa_app_.Usr_dlg().Warn_many("", "", "orig: exc=~{0}", Err_.Message_gplx_full(e));
diff --git a/400_xowa/src/gplx/xowa/files/origs/Xof_orig_tbl_tst.java b/400_xowa/src/gplx/xowa/files/origs/Xof_orig_tbl_tst.java
index 081e7906a..0184c79ce 100644
--- a/400_xowa/src/gplx/xowa/files/origs/Xof_orig_tbl_tst.java
+++ b/400_xowa/src/gplx/xowa/files/origs/Xof_orig_tbl_tst.java
@@ -33,8 +33,8 @@ class Xof_orig_tbl_fxt {
 	private Xof_orig_tbl tbl;
 	public void Clear() {
 		Io_url test_url = Io_url_.mem_fil_("mem/file/en.wikipedia.org/file/orig_regy");
-		Db_conn_bldr.I.Reg_default_mem();
-		Db_conn conn = Db_conn_bldr.I.New(test_url);
+		Db_conn_bldr.Instance.Reg_default_mem();
+		Db_conn conn = Db_conn_bldr.Instance.New(test_url);
 		tbl = new Xof_orig_tbl(conn, Bool_.Y);
 		tbl.Create_tbl();
 	}
@@ -45,7 +45,7 @@ class Xof_orig_tbl_fxt {
 		return rv;
 	}
 	public void Test_select_in(String[] itms, Xof_orig_itm... expd) {
-		Ordered_hash rv = Ordered_hash_.new_();
+		Ordered_hash rv = Ordered_hash_.New();
 		List_adp list = List_adp_.new_();
 		int itms_len = itms.length;
 		for (int i = 0; i < itms_len; ++i) {
@@ -71,6 +71,6 @@ class Xof_orig_tbl_fxt {
 				;
 			bfr.Add_byte_nl();
 		}
-		return bfr.Xto_str_and_clear();
+		return bfr.To_str_and_clear();
 	}
 }
diff --git a/400_xowa/src/gplx/xowa/files/origs/Xof_orig_wkr_.java b/400_xowa/src/gplx/xowa/files/origs/Xof_orig_wkr_.java
index ea0cf0997..ef9abfb9d 100644
--- a/400_xowa/src/gplx/xowa/files/origs/Xof_orig_wkr_.java
+++ b/400_xowa/src/gplx/xowa/files/origs/Xof_orig_wkr_.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.files.origs; import gplx.*; import gplx.xowa.*; import gplx.xowa.files.*;
-import gplx.xowa.wms.apis.*; import gplx.xowa.files.fsdb.*;
+import gplx.xowa.bldrs.wms.apis.*; import gplx.xowa.files.fsdb.*;
 public class Xof_orig_wkr_ {
 	public static final Xof_orig_wkr[] Ary_empty = new Xof_orig_wkr[0];
 	public static void Find_by_list(Xof_orig_wkr wkr, Ordered_hash rv, List_adp itms) {
diff --git a/400_xowa/src/gplx/xowa/files/origs/Xof_orig_wkr__wmf_api.java b/400_xowa/src/gplx/xowa/files/origs/Xof_orig_wkr__wmf_api.java
index 55601f45b..b5129cc4d 100644
--- a/400_xowa/src/gplx/xowa/files/origs/Xof_orig_wkr__wmf_api.java
+++ b/400_xowa/src/gplx/xowa/files/origs/Xof_orig_wkr__wmf_api.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.files.origs; import gplx.*; import gplx.xowa.*; import gplx.xowa.files.*;
-import gplx.xowa.files.repos.*; import gplx.xowa.files.fsdb.*; import gplx.xowa.wms.apis.*; import gplx.xowa.files.downloads.*;
+import gplx.xowa.files.repos.*; import gplx.xowa.files.fsdb.*; import gplx.xowa.bldrs.wms.apis.*; import gplx.xowa.files.downloads.*;
 public class Xof_orig_wkr__wmf_api implements Xof_orig_wkr {
 	private final Xoapi_orig_base orig_api; private final Xof_download_wkr download_wkr; private final Xow_repo_mgr repo_mgr; private final byte[] wiki_domain;
 	private final Xoapi_orig_rslts api_rv = new Xoapi_orig_rslts();		
diff --git a/400_xowa/src/gplx/xowa/files/origs/Xof_orig_wkr__xo_meta.java b/400_xowa/src/gplx/xowa/files/origs/Xof_orig_wkr__xo_meta.java
index 42580489b..d7a7e5936 100644
--- a/400_xowa/src/gplx/xowa/files/origs/Xof_orig_wkr__xo_meta.java
+++ b/400_xowa/src/gplx/xowa/files/origs/Xof_orig_wkr__xo_meta.java
@@ -18,7 +18,7 @@ along with this program.  If not, see .
 package gplx.xowa.files.origs; import gplx.*; import gplx.xowa.*; import gplx.xowa.files.*;
 import gplx.core.flds.*;
 import gplx.dbs.*; import gplx.xowa.files.fsdb.*;
-import gplx.xowa.tdbs.metas.*;
+import gplx.xowa.wikis.tdbs.metas.*;
 public class Xof_orig_wkr__xo_meta implements Xof_orig_wkr {
 	private final Io_url wiki_meta_dir; private final byte dir_spr_byte;  private final Bry_bfr url_bfr = Bry_bfr.new_(255);
 	private final Gfo_fld_rdr meta_rdr = Gfo_fld_rdr.xowa_(); private final Xof_meta_thumb_parser parser = new Xof_meta_thumb_parser();
@@ -32,8 +32,8 @@ public class Xof_orig_wkr__xo_meta implements Xof_orig_wkr {
 			.Add_byte(md5[1]).Add_byte(dir_spr_byte)		// 6/
 			.Add_mid(md5, 0, 3).Add_str_a7(".csv")			// 061.csv
 			;
-		Io_url meta_url = Io_url_.new_fil_(url_bfr.Xto_str_and_clear());
-		byte[] meta_src = Io_mgr.I.LoadFilBry(meta_url); if (meta_src.length == 0) return Xof_orig_itm.Null;
+		Io_url meta_url = Io_url_.new_fil_(url_bfr.To_str_and_clear());
+		byte[] meta_src = Io_mgr.Instance.LoadFilBry(meta_url); if (meta_src.length == 0) return Xof_orig_itm.Null;
 		meta_rdr.Ini(meta_src, 0);
 		Xof_meta_fil meta_fil = new Xof_meta_fil(null, md5);	// NOTE: need to register file before loading it; defect wherein 2 files with same hash prefix would skip one b/c Loaded file was not registered; EX.WS: en.wikiquote.org/The Hitchhiker's Guide to the Galaxy; NMMP_dolphin_with_locator.jpeg, da6f95736ed249f371f30bf5f1205fbd; Hoags_object.jpg, daed4a54e48e4266bd2f2763b7c4018c
 		meta_fil.Load(meta_rdr, parser);
diff --git a/400_xowa/src/gplx/xowa/files/origs/Xof_wiki_finder.java b/400_xowa/src/gplx/xowa/files/origs/Xof_wiki_finder.java
index 12245763a..6c56d1a6f 100644
--- a/400_xowa/src/gplx/xowa/files/origs/Xof_wiki_finder.java
+++ b/400_xowa/src/gplx/xowa/files/origs/Xof_wiki_finder.java
@@ -17,7 +17,7 @@ along with this program.  If not, see .
 */
 package gplx.xowa.files.origs; import gplx.*; import gplx.xowa.*; import gplx.xowa.files.*;
 import gplx.xowa.wikis.data.tbls.*;
-import gplx.xowa.nss.*;
+import gplx.xowa.wikis.nss.*;
 class Xof_wiki_finder {	// UNUSED
 	private Xowe_wiki wiki_0, wiki_1;
 	private Xowd_page_itm db_page = new Xowd_page_itm(); 
diff --git a/400_xowa/src/gplx/xowa/files/repos/Xof_repo_itm.java b/400_xowa/src/gplx/xowa/files/repos/Xof_repo_itm.java
index 74f720670..fbd57c811 100644
--- a/400_xowa/src/gplx/xowa/files/repos/Xof_repo_itm.java
+++ b/400_xowa/src/gplx/xowa/files/repos/Xof_repo_itm.java
@@ -58,7 +58,7 @@ public class Xof_repo_itm implements GfoInvkAble {
 			this.wmf_api = true;
 		}
 		else {
-			Io_url root_url = App_cmd_arg.Val_as_url_rel_url_or(root_str, app_fsys.File_dir(), Io_url_.new_dir_(root_str), true);
+			Io_url root_url = Gfo_cmd_arg_itm_.Val_as_url__rel_url_or(root_str, Bool_.Y, app_fsys.File_dir(), Io_url_.new_dir_(root_str));
 			this.root_bry = root_url.RawBry();
 			this.dir_spr = root_url.Info().DirSpr_byte();
 			this.root_http = root_url.To_http_file_bry();
diff --git a/400_xowa/src/gplx/xowa/files/repos/Xof_repo_itm_.java b/400_xowa/src/gplx/xowa/files/repos/Xof_repo_itm_.java
index e50628be6..abe28a8f6 100644
--- a/400_xowa/src/gplx/xowa/files/repos/Xof_repo_itm_.java
+++ b/400_xowa/src/gplx/xowa/files/repos/Xof_repo_itm_.java
@@ -38,7 +38,7 @@ public class Xof_repo_itm_ {
 			if (Op_sys_.Wnt_invalid_char(b)) b = Byte_ascii.Underline;
 			bfr.Add_byte(b);
 		}
-		return bfr.Xto_bry_and_clear();
+		return bfr.To_bry_and_clear();
 	}
 	public static byte[] Ttl_shorten_ttl(Bry_bfr bfr, byte[] ttl, int ttl_max, byte[] md5, byte[] ext_bry) {
 		byte[] rv = ttl;
@@ -49,7 +49,7 @@ public class Xof_repo_itm_ {
 			bfr.Add(md5);												// add md5;					EX: "abcdefghijklmnopqrstuvwxyz0123456"
 			bfr.Add_byte(Byte_ascii.Dot);								// add dot;					EX: "."
 			bfr.Add(ext_bry);											// add ext;					EX: ".png"
-			rv = bfr.Xto_bry_and_clear();
+			rv = bfr.To_bry_and_clear();
 		}
 		return rv;
 	}
diff --git a/400_xowa/src/gplx/xowa/files/repos/Xofw_wiki_wkr_base.java b/400_xowa/src/gplx/xowa/files/repos/Xofw_wiki_wkr_base.java
index 4e0775437..de9d0010d 100644
--- a/400_xowa/src/gplx/xowa/files/repos/Xofw_wiki_wkr_base.java
+++ b/400_xowa/src/gplx/xowa/files/repos/Xofw_wiki_wkr_base.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.files.repos; import gplx.*; import gplx.xowa.*; import gplx.xowa.files.*;
-import gplx.xowa.nss.*;
+import gplx.xowa.wikis.nss.*;
 import gplx.xowa.wikis.*; import gplx.xowa.files.*; import gplx.xowa.files.repos.*; import gplx.xowa.wikis.data.tbls.*;
 import gplx.xowa.parsers.utils.*;
 public class Xofw_wiki_wkr_base implements Xofw_wiki_finder {
diff --git a/400_xowa/src/gplx/xowa/files/repos/Xofw_wiki_wkr_mock.java b/400_xowa/src/gplx/xowa/files/repos/Xofw_wiki_wkr_mock.java
index 89929c607..c43f344fd 100644
--- a/400_xowa/src/gplx/xowa/files/repos/Xofw_wiki_wkr_mock.java
+++ b/400_xowa/src/gplx/xowa/files/repos/Xofw_wiki_wkr_mock.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.files.repos; import gplx.*; import gplx.xowa.*; import gplx.xowa.files.*;
-import gplx.xowa.files.*; import gplx.xowa.tdbs.metas.*;
+import gplx.xowa.files.*; import gplx.xowa.wikis.tdbs.metas.*;
 public class Xofw_wiki_wkr_mock implements Xofw_wiki_finder {
 	int repo_idx; byte[] repo_wiki_key;
 	public Xofw_wiki_wkr_mock Clear_en_wiki() {return Clear(1, Bry_en_wiki);}
diff --git a/400_xowa/src/gplx/xowa/files/repos/Xow_repo_mgr_.java b/400_xowa/src/gplx/xowa/files/repos/Xow_repo_mgr_.java
index 05598029b..cdedcf2c9 100644
--- a/400_xowa/src/gplx/xowa/files/repos/Xow_repo_mgr_.java
+++ b/400_xowa/src/gplx/xowa/files/repos/Xow_repo_mgr_.java
@@ -33,7 +33,7 @@ public class Xow_repo_mgr_ {
 		if (pair_mgr.Repos_len() == 0) {	// no pairs defined; add at least 1
 			Xof_repo_itm repo_src = repo_mgr.Get_by(File_repo_xowa_null);
 			if (repo_src == null) {
-				repo_itm = new Xof_repo_itm(File_repo_xowa_null, app_fsys_mgr, ext_rule_mgr, Xow_domain_type_.Bry__home);
+				repo_itm = new Xof_repo_itm(File_repo_xowa_null, app_fsys_mgr, ext_rule_mgr, Xow_domain_tid_.Bry__home);
 				repo_mgr.Add(repo_itm);
 			}
 			pair_mgr.Add_repo(File_repo_xowa_null, domain_bry);
diff --git a/400_xowa/src/gplx/xowa/files/repos/Xowe_repo_mgr.java b/400_xowa/src/gplx/xowa/files/repos/Xowe_repo_mgr.java
index d87f4a089..468cd9d63 100644
--- a/400_xowa/src/gplx/xowa/files/repos/Xowe_repo_mgr.java
+++ b/400_xowa/src/gplx/xowa/files/repos/Xowe_repo_mgr.java
@@ -19,7 +19,7 @@ package gplx.xowa.files.repos; import gplx.*; import gplx.xowa.*; import gplx.xo
 import gplx.xowa.files.xfers.*;
 import gplx.xowa.wikis.domains.*;
 import gplx.xowa.parsers.utils.*;
-import gplx.xowa.tdbs.metas.*;
+import gplx.xowa.wikis.tdbs.metas.*;
 public class Xowe_repo_mgr implements Xow_repo_mgr, GfoInvkAble {
 	private Xowe_wiki wiki; private final List_adp repos = List_adp_.new_();
 	public Xowe_repo_mgr(Xowe_wiki wiki) {
@@ -195,7 +195,7 @@ public class Xowe_repo_mgr implements Xow_repo_mgr, GfoInvkAble {
 		Xoa_repo_mgr repo_mgr = wiki.Appe().File_mgr().Repo_mgr();
 		Xof_repo_itm src_repo = repo_mgr.Get_by(src_repo_key), trg_repo = repo_mgr.Get_by(trg_repo_key);
 		byte[] src_wiki_key = src_repo.Wiki_domain(), trg_wiki_key = trg_repo.Wiki_domain();
-		if (!Bry_.Eq(src_wiki_key, trg_wiki_key) && !Bry_.Eq(src_wiki_key, Xow_domain_type_.Bry__home)) throw Err_.new_wo_type("wiki keys do not match", "src", String_.new_u8(src_wiki_key), "trg", String_.new_u8(trg_wiki_key));
+		if (!Bry_.Eq(src_wiki_key, trg_wiki_key) && !Bry_.Eq(src_wiki_key, Xow_domain_tid_.Bry__home)) throw Err_.new_wo_type("wiki keys do not match", "src", String_.new_u8(src_wiki_key), "trg", String_.new_u8(trg_wiki_key));
 		Xof_repo_pair pair = new Xof_repo_pair((byte)repos.Count(), src_wiki_key, src_repo, trg_repo);
 		repos.Add(pair);
 		return pair;
diff --git a/400_xowa/src/gplx/xowa/files/xfers/Xof_xfer_mgr.java b/400_xowa/src/gplx/xowa/files/xfers/Xof_xfer_mgr.java
index dcfc6e88e..2c982bade 100644
--- a/400_xowa/src/gplx/xowa/files/xfers/Xof_xfer_mgr.java
+++ b/400_xowa/src/gplx/xowa/files/xfers/Xof_xfer_mgr.java
@@ -18,8 +18,8 @@ along with this program.  If not, see .
 package gplx.xowa.files.xfers; import gplx.*; import gplx.xowa.*; import gplx.xowa.files.*;
 import gplx.core.primitives.*; import gplx.gfui.*;
 import gplx.xowa.files.*; import gplx.xowa.files.repos.*; import gplx.xowa.files.exts.*; import gplx.xowa.files.downloads.*;
-import gplx.xowa.wms.*; import gplx.xowa.wms.apis.*; 
-import gplx.xowa.tdbs.metas.*;
+import gplx.xowa.bldrs.wms.*; import gplx.xowa.bldrs.wms.apis.*; 
+import gplx.xowa.wikis.tdbs.metas.*;
 public class Xof_xfer_mgr {
 	public Xof_xfer_mgr(Xof_file_mgr file_mgr, Xowmf_mgr wmf_mgr) {this.file_mgr = file_mgr; this.wmf_mgr = wmf_mgr;} private final Xof_file_mgr file_mgr; private final Xowmf_mgr wmf_mgr;
 	public Xof_xfer_rslt Rslt() {return rslt;} private Xof_xfer_rslt rslt = new Xof_xfer_rslt();
@@ -95,7 +95,7 @@ public class Xof_xfer_mgr {
 			lnki_w = calc_size.Val_0(); lnki_h = calc_size.Val_1();
 			trg_url = this.Trg_url(trg_repo, Xof_repo_itm_.Mode_thumb, lnki_w);
 			if (!Img_convert(src_url, trg_url)) return false;	// convert failed; exit
-			if (orig_ext.Id_is_djvu()) Io_mgr.I.DeleteFil(src_url);	// convert passed; if djvu, delete intermediary .tiff file;
+			if (orig_ext.Id_is_djvu()) Io_mgr.Instance.DeleteFil(src_url);	// convert passed; if djvu, delete intermediary .tiff file;
 		}
 		return true;
 	}	Int_2_ref calc_size = new Int_2_ref();
@@ -173,7 +173,7 @@ public class Xof_xfer_mgr {
 							return true;
 						else {								// width fails; cleanup invalid thumb
 							trg_url = rslt.Trg();			// NOTE: update url b/c size may have changed; PAGE:en.w:commons/Image:Tempesta.djvu which is 800px, but resized to 799px
-							Io_mgr.I.DeleteFil(trg_url);	// delete file
+							Io_mgr.Instance.DeleteFil(trg_url);	// delete file
 							meta_itm.Thumbs_del(lnki_w);	// delete thumb
 							lnki_w = calc_size.Val_0(); lnki_h = calc_size.Val_1();
 						}
@@ -215,7 +215,7 @@ public class Xof_xfer_mgr {
 							return true;
 						else {								// width fails; cleanup invalid thumb; EX:w:[[File:Upper and Middle Manhattan.jpg|x120px]]
 							trg_url = rslt.Trg();			// NOTE: update url b/c size may have changed; PAGE:en.w:commons/Image:Tempesta.djvu which is 800px, but resized to 799px
-							Io_mgr.I.DeleteFil(trg_url);	// delete file
+							Io_mgr.Instance.DeleteFil(trg_url);	// delete file
 							meta_itm.Thumbs_del(lnki_w);	// delete thumb
 							lnki_w = calc_size.Val_0(); lnki_h = calc_size.Val_1();
 						}
@@ -249,7 +249,7 @@ public class Xof_xfer_mgr {
 					rslt.Clear();						
 				}
 				else													// something failed; delete file
-					Io_mgr.I.DeleteFil(trg_url);
+					Io_mgr.Instance.DeleteFil(trg_url);
 			}
 			if (!thumb_pass)	// NOTE: thumb failed; mark itm as oga
 				meta_itm.Update_thumb_oga_();
@@ -291,7 +291,7 @@ public class Xof_xfer_mgr {
 	}	String_obj_ref img_convert_rslt = String_obj_ref.null_();
 	private boolean Img_convert(Io_url src_url, Io_url trg_url) {
 		rslt.Atrs_src_trg_(src_url.Xto_api(), trg_url);	// NOTE: must be set at start; Img_rename_by_size may overwrite trg
-		if (Io_mgr.I.ExistsFil(trg_url)) return true; // NOTE: already converted; occurs when same image used twice on same page (EX: flags)
+		if (Io_mgr.Instance.ExistsFil(trg_url)) return true; // NOTE: already converted; occurs when same image used twice on same page (EX: flags)
 		if (!file_mgr.Img_mgr().Wkr_resize_img().Resize_exec(src_url, trg_url, lnki_w, lnki_h, orig_ext.Id(), img_convert_rslt)) {
 			return rslt.Fail("convert failed|" + src_url.Raw() + "|" + img_convert_rslt.Val());
 		}
@@ -313,7 +313,7 @@ public class Xof_xfer_mgr {
 			String new_name = Xof_lnki_time.Null_y(lnki_thumbtime) ? file_w + "px" : file_w + "px" + Xof_meta_thumb_parser.Dlm_seek_str + Xof_lnki_time.X_str(lnki_thumbtime);
 			Io_url new_trg = trg_url.GenNewNameOnly(new_name);
 			if (trg_url.Eq(new_trg)) return true;	// HACK: io will delete file if moving unto itself; (i.e.: mv A.png A.png is same as del A.png); problem is that this proc is being called too many times
-			try {Io_mgr.I.MoveFil_args(trg_url, new_trg, true).Exec();}
+			try {Io_mgr.Instance.MoveFil_args(trg_url, new_trg, true).Exec();}
 			catch (Exception exc) {Err_.Noop(exc); return rslt.Fail("move failed");}
 			rslt.Trg_(new_trg);
 		}
@@ -322,7 +322,7 @@ public class Xof_xfer_mgr {
 	private boolean Cmd_download(String src_str, Io_url trg_url, boolean cur_is_orig) {
 		boolean exists = false;
 		if (check_file_exists_before_xfer) {
-			gplx.ios.IoItmFil fil_itm = Io_mgr.I.QueryFil(trg_url);
+			gplx.ios.IoItmFil fil_itm = Io_mgr.Instance.QueryFil(trg_url);
 			exists = fil_itm.Exists() && fil_itm.Size() > 0;
 		}
 		boolean pass = false;
diff --git a/400_xowa/src/gplx/xowa/files/xfers/Xof_xfer_queue.java b/400_xowa/src/gplx/xowa/files/xfers/Xof_xfer_queue.java
index 5f7ef8162..73e2fb7b3 100644
--- a/400_xowa/src/gplx/xowa/files/xfers/Xof_xfer_queue.java
+++ b/400_xowa/src/gplx/xowa/files/xfers/Xof_xfer_queue.java
@@ -19,9 +19,9 @@ package gplx.xowa.files.xfers; import gplx.*; import gplx.xowa.*; import gplx.xo
 import gplx.core.primitives.*;
 import gplx.xowa.files.*; import gplx.xowa.files.fsdb.*; import gplx.xowa.files.bins.*; import gplx.xowa.files.origs.*;
 import gplx.xowa.files.gui.*;
-import gplx.xowa.tdbs.metas.*;
+import gplx.xowa.wikis.tdbs.metas.*;
 public class Xof_xfer_queue {
-	private final List_adp xfer_list = List_adp_.new_(); private final Ordered_hash dirty_meta_mgrs = Ordered_hash_.new_bry_();
+	private final List_adp xfer_list = List_adp_.new_(); private final Ordered_hash dirty_meta_mgrs = Ordered_hash_.New_bry();
 	public Int_obj_ref Html_uid() {return html_uid;} private Int_obj_ref html_uid = Int_obj_ref.neg1_();
 	public int Count() {return xfer_list.Count();}
 	public void Clear() {
@@ -66,7 +66,7 @@ public class Xof_xfer_queue {
 	}
 	private void Exec_v2(Xowe_wiki wiki, Xoae_page page) {
 		wiki.File_mgr().Init_file_mgr_by_load(wiki);
-		Xog_js_wkr js_wkr = wiki.App().App_type().Uid_supports_js() ? page.Tab_data().Tab().Html_itm() : Xog_js_wkr_.Noop;
+		Xog_js_wkr js_wkr = wiki.App().Mode().Tid_supports_js() ? page.Tab_data().Tab().Html_itm() : Xog_js_wkr_.Noop;
 		wiki.File_mgr().Fsdb_mgr().Fsdb_search_by_list(Xfer_itms_to_fsdb_itms(wiki, page, xfer_list, wiki.File_mgr().Patch_upright()), wiki, page, js_wkr);
 	}
 	private List_adp Xfer_itms_to_fsdb_itms(Xowe_wiki cur_wiki, Xoae_page page, List_adp xfer_list, int upright_patch) {
diff --git a/400_xowa/src/gplx/xowa/files/xfers/Xof_xfer_queue_base_fxt.java b/400_xowa/src/gplx/xowa/files/xfers/Xof_xfer_queue_base_fxt.java
index 5fcfc5f35..4eeea8ea1 100644
--- a/400_xowa/src/gplx/xowa/files/xfers/Xof_xfer_queue_base_fxt.java
+++ b/400_xowa/src/gplx/xowa/files/xfers/Xof_xfer_queue_base_fxt.java
@@ -18,13 +18,13 @@ along with this program.  If not, see .
 package gplx.xowa.files.xfers; import gplx.*; import gplx.xowa.*; import gplx.xowa.files.*;
 import gplx.ios.*;
 import gplx.xowa.wikis.domains.*; import gplx.xowa.files.cnvs.*; import gplx.xowa.files.repos.*;
-import gplx.xowa.wms.apis.*; import gplx.xowa.files.exts.*; import gplx.xowa.files.imgs.*;
+import gplx.xowa.bldrs.wms.apis.*; import gplx.xowa.files.exts.*; import gplx.xowa.files.imgs.*;
 public class Xof_xfer_queue_base_fxt {
-	public Xoapi_orig_mok Api_size() {return api_size;} private Xoapi_orig_mok api_size = Xoapi_orig_mok._;
+	public Xoapi_orig_mok Api_size() {return api_size;} private Xoapi_orig_mok api_size = Xoapi_orig_mok.Instance;
 	public Xof_repo_itm Src_commons_repo() {return src_commons_repo;} private Xof_repo_itm src_commons_repo;
 	public Xof_repo_itm Src_en_wiki_repo() {return src_en_wiki_repo;} private Xof_repo_itm src_en_wiki_repo;
 	@gplx.Virtual public void Clear(boolean src_repo_is_wmf) {
-		Io_mgr.I.InitEngine_mem();
+		Io_mgr.Instance.InitEngine_mem();
 		if (app == null) {
 			app = Xoa_app_fxt.app_();
 			en_wiki = Xoa_app_fxt.wiki_(app, Xow_domain_itm_.Str__enwiki);
@@ -33,7 +33,7 @@ public class Xof_xfer_queue_base_fxt {
 			app.Wiki_mgr().Add(en_wiki);
 			
 			Xof_file_mgr file_mgr = app.File_mgr();
-			file_mgr.Img_mgr().Wkr_resize_img_(Xof_img_wkr_resize_img_mok._);
+			file_mgr.Img_mgr().Wkr_resize_img_(Xof_img_wkr_resize_img_mok.Instance);
 			file_mgr.Img_mgr().Wkr_query_img_size_(new Xof_img_wkr_query_img_size_test());
 			app.Wmf_mgr().Api_mgr().Api_orig_(api_size);
 
@@ -91,23 +91,23 @@ public class Xof_xfer_queue_base_fxt {
 		if (src_fils != null) {
 			for (int i = 0; i < src_fils.length; i++) {
 				Io_fil src_fil = src_fils[i];
-				Io_mgr.I.SaveFilStr(src_fil.Url(), src_fil.Data());
+				Io_mgr.Instance.SaveFilStr(src_fil.Url(), src_fil.Data());
 			}
 		}
 	}
 	public void tst_trg_fils() {
 		for (int i = 0; i < trg_fils.length; i++) {
 			Io_fil trg_fil = trg_fils[i];
-			String data = Io_mgr.I.LoadFilStr(trg_fil.Url());
+			String data = Io_mgr.Instance.LoadFilStr(trg_fil.Url());
 			Tfds.Eq_str_lines(trg_fil.Data(), data, trg_fil.Url().Raw());
 		}		
 	}
-	public void	 save_(Io_fil v)						{Io_mgr.I.SaveFilStr(v.Url(), v.Data());}
+	public void	 save_(Io_fil v)						{Io_mgr.Instance.SaveFilStr(v.Url(), v.Data());}
 	public Io_fil reg_(String url, String... v)	{return new Io_fil(Io_url_.mem_fil_(url), String_.Concat_lines_nl(v));}
 	public Io_fil img_(String url_str, int w, int h)	{return file_(url_str, file_img(w, h));}
 	public Io_fil svg_(String url_str, int w, int h)	{return file_(url_str, file_svg(w, h));}
 	public Io_fil ogg_(String url_str)					{return file_(url_str, "");}
-	public void fil_absent(String url)					{Tfds.Eq_false(Io_mgr.I.ExistsFil(Io_url_.mem_fil_(url)), "fil should not exist: {0}", url);}
+	public void fil_absent(String url)					{Tfds.Eq_false(Io_mgr.Instance.ExistsFil(Io_url_.mem_fil_(url)), "fil should not exist: {0}", url);}
 	Io_fil file_(String url_str, String data)			{return new Io_fil(Io_url_.mem_fil_(url_str), data);}
 	String file_img(int w, int h) {return String_.Format("{0},{1}", w, h);}
 	String file_svg(int w, int h) {return String_.Format("", w, h);}
diff --git a/400_xowa/src/gplx/xowa/files/xfers/Xof_xfer_queue_html_cases_tst.java b/400_xowa/src/gplx/xowa/files/xfers/Xof_xfer_queue_html_cases_tst.java
index 27ea8af86..138b77265 100644
--- a/400_xowa/src/gplx/xowa/files/xfers/Xof_xfer_queue_html_cases_tst.java
+++ b/400_xowa/src/gplx/xowa/files/xfers/Xof_xfer_queue_html_cases_tst.java
@@ -232,7 +232,7 @@ public class Xof_xfer_queue_html_cases_tst {
 	}
 	@Test  public void Ogv_width_seek_again_should_dirty() { // PURPOSE: outlier case wherein (a) downloading thumb then (b) downloading thumb seek; (b) does not dirty file since (a) exists; PAGE:en.w:Wikipedia
 		fxt.Src_en_wiki_repo().Ext_rules().Get_or_new(Xof_ext_.Bry_ogv).View_max_(0);
-		Io_mgr.I.SaveFilStr("mem/xowa/file/#meta/en.wikipedia.org/d/d0.csv", "A.ogv|0||2?0,0|1?300,40\n");	// simulate (a)
+		Io_mgr.Instance.SaveFilStr("mem/xowa/file/#meta/en.wikipedia.org/d/d0.csv", "A.ogv|0||2?0,0|1?300,40\n");	// simulate (a)
 		fxt	.Lnki_("A.ogv", true, -1, -1, -1, 5)															
 		.Src(	fxt.img_("mem/src/commons.wikimedia.org/thumb/d/d0/A.ogv/-1px-seek%3D5-A.ogv.jpg", 300, 40)	
 				)
diff --git a/400_xowa/src/gplx/xowa/files/xfers/Xof_xfer_queue_html_fxt.java b/400_xowa/src/gplx/xowa/files/xfers/Xof_xfer_queue_html_fxt.java
index dc12e78b9..849751147 100644
--- a/400_xowa/src/gplx/xowa/files/xfers/Xof_xfer_queue_html_fxt.java
+++ b/400_xowa/src/gplx/xowa/files/xfers/Xof_xfer_queue_html_fxt.java
@@ -22,7 +22,7 @@ import gplx.xowa.parsers.*; import gplx.xowa.parsers.lnkis.*;
 public class Xof_xfer_queue_html_fxt extends Xof_xfer_queue_base_fxt {
 	private final Xof_xfer_queue queue = new Xof_xfer_queue();
 	@Override public void Clear(boolean src_repo_is_wmf) {
-		Db_conn_bldr.I.Reg_default_mem();
+		Db_conn_bldr.Instance.Reg_default_mem();
 		super.Clear(src_repo_is_wmf);
 		this.Api_size().Clear();
 	}
diff --git a/400_xowa/src/gplx/xowa/gui/Xoa_gui_mgr.java b/400_xowa/src/gplx/xowa/guis/Xoa_gui_mgr.java
similarity index 93%
rename from 400_xowa/src/gplx/xowa/gui/Xoa_gui_mgr.java
rename to 400_xowa/src/gplx/xowa/guis/Xoa_gui_mgr.java
index 446f9eb0e..9325f531b 100644
--- a/400_xowa/src/gplx/xowa/gui/Xoa_gui_mgr.java
+++ b/400_xowa/src/gplx/xowa/guis/Xoa_gui_mgr.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.gui; import gplx.*; import gplx.xowa.*;
-import gplx.gfui.*; import gplx.xowa.specials.search.*; import gplx.xowa.gui.menus.*; import gplx.xowa.gui.cmds.*; import gplx.xowa.cfgs.gui.*; import gplx.xowa.users.*;
+package gplx.xowa.guis; import gplx.*; import gplx.xowa.*;
+import gplx.gfui.*; import gplx.xowa.specials.search.*; import gplx.xowa.guis.menus.*; import gplx.xowa.guis.cmds.*; import gplx.xowa.apps.cfgs.gui.*; import gplx.xowa.users.*;
 import gplx.xowa.langs.*;
-import gplx.xowa.gui.bnds.*; import gplx.xowa.gui.views.*; import gplx.xowa.gui.urls.url_macros.*;
-import gplx.xowa.gui.views.boots.*;
+import gplx.xowa.guis.bnds.*; import gplx.xowa.guis.views.*; import gplx.xowa.guis.urls.url_macros.*;
+import gplx.xowa.guis.views.boots.*;
 public class Xoa_gui_mgr implements GfoEvObj, GfoInvkAble {
 	public Xoa_gui_mgr(Xoae_app app) {
 		this.ev_mgr = GfoEvMgr.new_(this);
@@ -73,7 +73,7 @@ public class Xoa_gui_mgr implements GfoEvObj, GfoInvkAble {
 		GfoEvMgr_.SubSame_many(app.Usere(), this, Xoue_user.Evt_lang_changed);
 		app.Sys_cfg().Lang_(app.Sys_cfg().Lang());	// NOTE: force refresh of lang. must occur after after gui_mgr init, else menu lbls will break
 	}
-	public void Lang_changed(Xol_lang lang) {
+	public void Lang_changed(Xol_lang_itm lang) {
 		menu_mgr.Lang_changed(lang);
 		browser_win.Lang_changed(lang);
 	}
@@ -93,7 +93,7 @@ public class Xoa_gui_mgr implements GfoEvObj, GfoInvkAble {
 		else if	(ctx.Match(k, Invk_menus))							return menu_mgr;
 		else if	(ctx.Match(k, Invk_cmds))							return cmd_mgr;
 		else if	(ctx.Match(k, Invk_url_macros))						return url_macro_mgr;
-		else if	(ctx.Match(k, Xoue_user.Evt_lang_changed))			Lang_changed((Xol_lang)m.ReadObj("v", ParseAble_.Null));
+		else if	(ctx.Match(k, Xoue_user.Evt_lang_changed))			Lang_changed((Xol_lang_itm)m.ReadObj("v", ParseAble_.Null));
 		else throw Err_.new_unhandled(k);
 		return this;
 	}
diff --git a/400_xowa/src/gplx/xowa/gui/Xog_html_mgr.java b/400_xowa/src/gplx/xowa/guis/Xog_html_mgr.java
similarity index 91%
rename from 400_xowa/src/gplx/xowa/gui/Xog_html_mgr.java
rename to 400_xowa/src/gplx/xowa/guis/Xog_html_mgr.java
index 44b5126b7..bd42d63bd 100644
--- a/400_xowa/src/gplx/xowa/gui/Xog_html_mgr.java
+++ b/400_xowa/src/gplx/xowa/guis/Xog_html_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.gui; import gplx.*; import gplx.xowa.*;
-import gplx.xowa.html.portal.*;
+package gplx.xowa.guis; import gplx.*; import gplx.xowa.*;
+import gplx.xowa.htmls.portal.*;
 public class Xog_html_mgr implements GfoInvkAble {
 	public Xog_html_mgr(Xoae_app app) {this.app = app; portal_mgr = new Xoa_portal_mgr(app);} private Xoae_app app;
 	public Xoa_portal_mgr Portal_mgr() {return portal_mgr;} private Xoa_portal_mgr portal_mgr;
@@ -28,7 +28,7 @@ public class Xog_html_mgr implements GfoInvkAble {
 	public String Auto_focus_id() {return auto_focus_id;} private String auto_focus_id = "";
 	public byte[] Css_xtn() {return css_xtn;} public void Css_xtn_(byte[] v) {css_xtn = v;} private byte[] css_xtn = Bry_.Empty;
 	public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) {
-		if		(ctx.Match(k, Invk_javascript_enabled))			return Yn.Xto_str(javascript_enabled);
+		if		(ctx.Match(k, Invk_javascript_enabled))			return Yn.To_str(javascript_enabled);
 		else if	(ctx.Match(k, Invk_javascript_enabled_))		Javascript_enabled_(m.ReadYn("v"));
 		else if	(ctx.Match(k, Invk_auto_focus_id_))				auto_focus_id = m.ReadStr("v");
 		else if	(ctx.Match(k, Invk_css_xtn))					return css_xtn;
diff --git a/400_xowa/src/gplx/xowa/gui/Xog_page.java b/400_xowa/src/gplx/xowa/guis/Xog_page.java
similarity index 90%
rename from 400_xowa/src/gplx/xowa/gui/Xog_page.java
rename to 400_xowa/src/gplx/xowa/guis/Xog_page.java
index 3ebcd4ce1..17d063f5c 100644
--- a/400_xowa/src/gplx/xowa/gui/Xog_page.java
+++ b/400_xowa/src/gplx/xowa/guis/Xog_page.java
@@ -15,10 +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.gui; import gplx.*; import gplx.xowa.*;
-import gplx.xowa.html.hdumps.core.*; import gplx.xowa.html.hdumps.pages.*;
+package gplx.xowa.guis; import gplx.*; import gplx.xowa.*;
+import gplx.xowa.htmls.hdumps.core.*; import gplx.xowa.htmls.hdumps.pages.*;
 import gplx.xowa.files.*;
-import gplx.xowa.pages.*; import gplx.xowa.pages.skins.*;	import gplx.xowa.html.heads.*;
+import gplx.xowa.wikis.pages.*; import gplx.xowa.wikis.pages.skins.*;	import gplx.xowa.htmls.heads.*;
 public class Xog_page implements Xoa_page {
 	public Xow_wiki			Wiki() {return wiki;} private Xow_wiki wiki;
 	public Xoa_url			Url() {return page_url;} private Xoa_url page_url;
@@ -37,9 +37,9 @@ public class Xog_page implements Xoa_page {
 	public byte[]			Display_ttl() {return display_ttl;} public void Display_ttl_(byte[] v) {this.display_ttl = v;} private byte[] display_ttl;
 	public byte[]			Content_sub() {return content_sub;} public void Content_sub_(byte[] v) {this.content_sub = v;} private byte[] content_sub;
 	public byte[]			Sidebar_div() {return sidebar_div;} public void Sidebar_div_(byte[] v) {this.sidebar_div = v;} private byte[] sidebar_div;
-	public Ordered_hash		Redlink_uids() {return redlink_uids;} private final Ordered_hash redlink_uids = Ordered_hash_.new_();
+	public Ordered_hash		Redlink_uids() {return redlink_uids;} private final Ordered_hash redlink_uids = Ordered_hash_.New();
 	public Xohd_data_itm__base[] Img_itms() {return img_itms;} public void Img_itms_(Xohd_data_itm__base[] v) {this.img_itms = v;} private Xohd_data_itm__base[] img_itms;
-	public Ordered_hash		Gallery_itms() {return gallery_itms;} private Ordered_hash gallery_itms = Ordered_hash_.new_();
+	public Ordered_hash		Gallery_itms() {return gallery_itms;} private Ordered_hash gallery_itms = Ordered_hash_.New();
 	public Xog_page Init(Xow_wiki wiki, int page_id, Xoa_url page_url, Xoa_ttl page_ttl) {
 		this.wiki = wiki;
 		this.page_id = page_id; this.page_url = page_url; this.page_ttl = page_ttl;
@@ -73,6 +73,6 @@ public class Xog_page implements Xoa_page {
 				itm.Write(tmp_bfr, page);
 			}
 		}
-		return sidebar_exists ? tmp_bfr.Xto_bry_and_clear() : null;
+		return sidebar_exists ? tmp_bfr.To_bry_and_clear() : null;
 	}
 }
diff --git a/400_xowa/src/gplx/xowa/gui/Xog_resizer.java b/400_xowa/src/gplx/xowa/guis/Xog_resizer.java
similarity index 97%
rename from 400_xowa/src/gplx/xowa/gui/Xog_resizer.java
rename to 400_xowa/src/gplx/xowa/guis/Xog_resizer.java
index 5afa375c4..b19db1538 100644
--- a/400_xowa/src/gplx/xowa/gui/Xog_resizer.java
+++ b/400_xowa/src/gplx/xowa/guis/Xog_resizer.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.gui; import gplx.*; import gplx.xowa.*;
-import gplx.gfui.*; import gplx.xowa.users.*; import gplx.xowa.gui.views.*;
+package gplx.xowa.guis; import gplx.*; import gplx.xowa.*;
+import gplx.gfui.*; import gplx.xowa.users.*; import gplx.xowa.guis.views.*;
 public class Xog_resizer {
 	public void Exec_win_resize(Xoae_app app, int main_w, int main_h) {
 		Xog_layout layout = app.Gui_mgr().Layout();
diff --git a/400_xowa/src/gplx/xowa/gui/Xogv_page_load_wkr.java b/400_xowa/src/gplx/xowa/guis/Xogv_page_load_wkr.java
similarity index 95%
rename from 400_xowa/src/gplx/xowa/gui/Xogv_page_load_wkr.java
rename to 400_xowa/src/gplx/xowa/guis/Xogv_page_load_wkr.java
index 9d3c68417..5f5997056 100644
--- a/400_xowa/src/gplx/xowa/gui/Xogv_page_load_wkr.java
+++ b/400_xowa/src/gplx/xowa/guis/Xogv_page_load_wkr.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.gui; import gplx.*; import gplx.xowa.*;
+package gplx.xowa.guis; import gplx.*; import gplx.xowa.*;
 import gplx.core.threads.*; import gplx.core.net.*;
-import gplx.xowa.gui.history.*;
+import gplx.xowa.guis.history.*;
 import gplx.xowa.apps.*; import gplx.xowa.wikis.*;
 class Xogv_page_load_wkr implements Gfo_thread_wkr, GfoInvkAble {
 	private final Xoav_wiki_mgr wiki_mgr; private final Gfo_url_parser url_parser;
diff --git a/400_xowa/src/gplx/xowa/gui/Xogv_tab_base.java b/400_xowa/src/gplx/xowa/guis/Xogv_tab_base.java
similarity index 95%
rename from 400_xowa/src/gplx/xowa/gui/Xogv_tab_base.java
rename to 400_xowa/src/gplx/xowa/guis/Xogv_tab_base.java
index 8821e64e9..4b68eba36 100644
--- a/400_xowa/src/gplx/xowa/gui/Xogv_tab_base.java
+++ b/400_xowa/src/gplx/xowa/guis/Xogv_tab_base.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.gui; import gplx.*; import gplx.xowa.*;
+package gplx.xowa.guis; import gplx.*; import gplx.xowa.*;
 import gplx.core.net.*;
-import gplx.xowa.html.hdumps.core.*; import gplx.xowa.gui.history.*;
+import gplx.xowa.htmls.hdumps.core.*; import gplx.xowa.guis.history.*;
 import gplx.xowa.apps.*; import gplx.xowa.wikis.*; import gplx.xowa.apps.urls.*;
 import gplx.core.threads.*;
 public abstract class Xogv_tab_base {
diff --git a/400_xowa/src/gplx/xowa/gui/bnds/Xog_bnd_box.java b/400_xowa/src/gplx/xowa/guis/bnds/Xog_bnd_box.java
similarity index 89%
rename from 400_xowa/src/gplx/xowa/gui/bnds/Xog_bnd_box.java
rename to 400_xowa/src/gplx/xowa/guis/bnds/Xog_bnd_box.java
index ec49d17f9..2ffc05ac2 100644
--- a/400_xowa/src/gplx/xowa/gui/bnds/Xog_bnd_box.java
+++ b/400_xowa/src/gplx/xowa/guis/bnds/Xog_bnd_box.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.gui.bnds; import gplx.*; import gplx.xowa.*; import gplx.xowa.gui.*;
+package gplx.xowa.guis.bnds; import gplx.*; import gplx.xowa.*; import gplx.xowa.guis.*;
 public class Xog_bnd_box {
-	private Ordered_hash bnds = Ordered_hash_.new_();
+	private Ordered_hash bnds = Ordered_hash_.New();
 	public Xog_bnd_box(int tid, String key) {this.tid = tid; this.key = key;}
 	public int Tid() {return tid;} private int tid;
 	public String Key() {return key;} private String key;
diff --git a/400_xowa/src/gplx/xowa/gui/bnds/Xog_bnd_box_.java b/400_xowa/src/gplx/xowa/guis/bnds/Xog_bnd_box_.java
similarity index 95%
rename from 400_xowa/src/gplx/xowa/gui/bnds/Xog_bnd_box_.java
rename to 400_xowa/src/gplx/xowa/guis/bnds/Xog_bnd_box_.java
index a3eba058a..43f94ee11 100644
--- a/400_xowa/src/gplx/xowa/gui/bnds/Xog_bnd_box_.java
+++ b/400_xowa/src/gplx/xowa/guis/bnds/Xog_bnd_box_.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.gui.bnds; import gplx.*; import gplx.xowa.*; import gplx.xowa.gui.*;
-import gplx.gfui.*; import gplx.xowa.gui.views.*; import gplx.xowa.gui.cmds.*;
+package gplx.xowa.guis.bnds; import gplx.*; import gplx.xowa.*; import gplx.xowa.guis.*;
+import gplx.gfui.*; import gplx.xowa.guis.views.*; import gplx.xowa.guis.cmds.*;
 public class Xog_bnd_box_ {
 	public static final String Key_browser = "browser", Key_browser_url = "browser.url", Key_browser_search = "browser.search", Key_browser_html = "browser.html", Key_browser_find = "browser.find", Key_browser_prog = "browser.prog", Key_browser_info = "browser.info";
 	public static final String Gui_browser = "Window", Gui_browser_url = "Url bar", Gui_browser_search = "Search box", Gui_browser_html = "HTML browser", Gui_browser_find = "Find box", Gui_browser_prog = "Status bar", Gui_browser_info = "System Messages box";
diff --git a/400_xowa/src/gplx/xowa/gui/bnds/Xog_bnd_itm.java b/400_xowa/src/gplx/xowa/guis/bnds/Xog_bnd_itm.java
similarity index 93%
rename from 400_xowa/src/gplx/xowa/gui/bnds/Xog_bnd_itm.java
rename to 400_xowa/src/gplx/xowa/guis/bnds/Xog_bnd_itm.java
index d79bc8b60..06ec08e81 100644
--- a/400_xowa/src/gplx/xowa/gui/bnds/Xog_bnd_itm.java
+++ b/400_xowa/src/gplx/xowa/guis/bnds/Xog_bnd_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.gui.bnds; import gplx.*; import gplx.xowa.*; import gplx.xowa.gui.*;
+package gplx.xowa.guis.bnds; import gplx.*; import gplx.xowa.*; import gplx.xowa.guis.*;
 import gplx.gfui.*;
 public class Xog_bnd_itm {
 	public Xog_bnd_itm(String key, boolean sys, String cmd, int box, IptArg ipt) {
diff --git a/400_xowa/src/gplx/xowa/gui/bnds/Xog_bnd_itm_srl_tst.java b/400_xowa/src/gplx/xowa/guis/bnds/Xog_bnd_itm_srl_tst.java
similarity index 90%
rename from 400_xowa/src/gplx/xowa/gui/bnds/Xog_bnd_itm_srl_tst.java
rename to 400_xowa/src/gplx/xowa/guis/bnds/Xog_bnd_itm_srl_tst.java
index 3ad3a15dc..16a9f9746 100644
--- a/400_xowa/src/gplx/xowa/gui/bnds/Xog_bnd_itm_srl_tst.java
+++ b/400_xowa/src/gplx/xowa/guis/bnds/Xog_bnd_itm_srl_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.gui.bnds; import gplx.*; import gplx.xowa.*; import gplx.xowa.gui.*;
-import org.junit.*; import gplx.gfui.*; import gplx.xowa.cfgs2.*;
+package gplx.xowa.guis.bnds; import gplx.*; import gplx.xowa.*; import gplx.xowa.guis.*;
+import org.junit.*; import gplx.gfui.*; import gplx.xowa.apps.cfgs.old.*;
 public class Xog_bnd_itm_srl_tst {
 	@Before public void init() {fxt.Reset();} private Xog_bnd_itm_srl_fxt fxt = new Xog_bnd_itm_srl_fxt();
 	@Test  public void Src_get() {
diff --git a/400_xowa/src/gplx/xowa/gui/bnds/Xog_bnd_mgr.java b/400_xowa/src/gplx/xowa/guis/bnds/Xog_bnd_mgr.java
similarity index 96%
rename from 400_xowa/src/gplx/xowa/gui/bnds/Xog_bnd_mgr.java
rename to 400_xowa/src/gplx/xowa/guis/bnds/Xog_bnd_mgr.java
index 8a8c83104..0feef9866 100644
--- a/400_xowa/src/gplx/xowa/gui/bnds/Xog_bnd_mgr.java
+++ b/400_xowa/src/gplx/xowa/guis/bnds/Xog_bnd_mgr.java
@@ -15,14 +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.gui.bnds; import gplx.*; import gplx.xowa.*; import gplx.xowa.gui.*;
-import gplx.gfui.*; import gplx.xowa.gui.views.*;
-import gplx.xowa.gui.cmds.*; import gplx.xowa.gui.menus.dom.*;
+package gplx.xowa.guis.bnds; import gplx.*; import gplx.xowa.*; import gplx.xowa.guis.*;
+import gplx.gfui.*; import gplx.xowa.guis.views.*;
+import gplx.xowa.guis.cmds.*; import gplx.xowa.guis.menus.dom.*;
 public class Xog_bnd_mgr {
 	private Xog_win_itm win; private Xog_cmd_mgr_invk invk_mgr;
 	private Xog_bnd_box[] boxs = Xog_bnd_box_.Ary();
 	private List_adp startup_itms = List_adp_.new_();
-	private Ordered_hash regy = Ordered_hash_.new_();
+	private Ordered_hash regy = Ordered_hash_.New();
 	public Xog_bnd_mgr(Xog_win_itm win) {this.win = win; invk_mgr = win.Gui_mgr().Cmd_mgr().Invk_mgr();}
 	public Gfui_bnd_parser Bnd_parser() {if (bnd_parser == null) bnd_parser = Gfui_bnd_parser.new_en_(); return bnd_parser;} private Gfui_bnd_parser bnd_parser;
 	public int Len() {return regy.Count();}
@@ -209,7 +209,7 @@ public class Xog_bnd_mgr {
 	}
 	private void Init_itm(String cmd, int idx, int box, String ipt) {Init_itm(cmd, idx, box, IptArg_.parse_or_none_(ipt));}
 	private void Init_itm(String cmd, int idx, int box, IptArg ipt) {
-		String key = cmd + "-" + Int_.Xto_str(idx + List_adp_.Base1);		// EX: xowa.widgets.url.focus-1 xowa.widgets.url.focus-2
+		String key = cmd + "-" + Int_.To_str(idx + List_adp_.Base1);		// EX: xowa.widgets.url.focus-1 xowa.widgets.url.focus-2
 		Xog_bnd_itm itm = new Xog_bnd_itm(key, Bool_.Y, cmd, box, ipt);
 		boxs[box].Add(itm);
 		regy.Add(itm.Key(), itm);
diff --git a/400_xowa/src/gplx/xowa/gui/bnds/Xog_bnd_mgr_srl.java b/400_xowa/src/gplx/xowa/guis/bnds/Xog_bnd_mgr_srl.java
similarity index 92%
rename from 400_xowa/src/gplx/xowa/gui/bnds/Xog_bnd_mgr_srl.java
rename to 400_xowa/src/gplx/xowa/guis/bnds/Xog_bnd_mgr_srl.java
index 0114faabb..b7de8834e 100644
--- a/400_xowa/src/gplx/xowa/gui/bnds/Xog_bnd_mgr_srl.java
+++ b/400_xowa/src/gplx/xowa/guis/bnds/Xog_bnd_mgr_srl.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.gui.bnds; import gplx.*; import gplx.xowa.*; import gplx.xowa.gui.*;
-import gplx.core.primitives.*; import gplx.langs.dsvs.*; import gplx.gfui.*; import gplx.xowa.cfgs2.*;
+package gplx.xowa.guis.bnds; import gplx.*; import gplx.xowa.*; import gplx.xowa.guis.*;
+import gplx.core.primitives.*; import gplx.langs.dsvs.*; import gplx.gfui.*; import gplx.xowa.apps.cfgs.old.*;
 public class Xog_bnd_mgr_srl extends Dsv_wkr_base {
 	private Xoae_app app;
 	private Xog_bnd_mgr bnd_mgr;
@@ -40,7 +40,7 @@ public class Xog_bnd_mgr_srl extends Dsv_wkr_base {
 		}
 	}		
 	private void Init() {
-		uids = Ordered_hash_.new_();
+		uids = Ordered_hash_.New();
 		int len = bnd_mgr.Len();
 		for (int i = 0; i < len; i++) {
 			Xog_bnd_itm bnd = (Xog_bnd_itm)bnd_mgr.Get_at(i);
diff --git a/400_xowa/src/gplx/xowa/gui/bnds/Xog_bnd_win.java b/400_xowa/src/gplx/xowa/guis/bnds/Xog_bnd_win.java
similarity index 95%
rename from 400_xowa/src/gplx/xowa/gui/bnds/Xog_bnd_win.java
rename to 400_xowa/src/gplx/xowa/guis/bnds/Xog_bnd_win.java
index fa3616806..c75e56082 100644
--- a/400_xowa/src/gplx/xowa/gui/bnds/Xog_bnd_win.java
+++ b/400_xowa/src/gplx/xowa/guis/bnds/Xog_bnd_win.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.gui.bnds; import gplx.*; import gplx.xowa.*; import gplx.xowa.gui.*;
+package gplx.xowa.guis.bnds; import gplx.*; import gplx.xowa.*; import gplx.xowa.guis.*;
 import gplx.gfui.*;
 public class Xog_bnd_win implements GfoInvkAble {
 	private GfuiWin win;
@@ -54,7 +54,7 @@ public class Xog_bnd_win implements GfoInvkAble {
 		IptEventData event_data = (IptEventData)m.Args_getAt(0).Val();
 		int keycode = event_data.Key().Val();
 		binding_txt.Text_(bnd_parser.Xto_norm(IptKey_.To_str(keycode)));
-		keycode_txt.Text_(Int_.Xto_str(keycode));
+		keycode_txt.Text_(Int_.To_str(keycode));
 		event_data.Handled_on();
 	}
 	private void When_key_up(GfoMsg m) {
diff --git a/400_xowa/src/gplx/xowa/gui/cmds/Xog_cmd_ctg.java b/400_xowa/src/gplx/xowa/guis/cmds/Xog_cmd_ctg.java
similarity index 95%
rename from 400_xowa/src/gplx/xowa/gui/cmds/Xog_cmd_ctg.java
rename to 400_xowa/src/gplx/xowa/guis/cmds/Xog_cmd_ctg.java
index 4191ff115..73bdba68e 100644
--- a/400_xowa/src/gplx/xowa/gui/cmds/Xog_cmd_ctg.java
+++ b/400_xowa/src/gplx/xowa/guis/cmds/Xog_cmd_ctg.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.gui.cmds; import gplx.*; import gplx.xowa.*; import gplx.xowa.gui.*;
+package gplx.xowa.guis.cmds; import gplx.*; import gplx.xowa.*; import gplx.xowa.guis.*;
 public class Xog_cmd_ctg {
 	public Xog_cmd_ctg(int tid, String key_str) {this.tid = tid; this.key_str = key_str; this.key_bry = Bry_.new_u8(key_str);}
 	public int Tid() {return tid;} private int tid;
diff --git a/400_xowa/src/gplx/xowa/gui/cmds/Xog_cmd_itm.java b/400_xowa/src/gplx/xowa/guis/cmds/Xog_cmd_itm.java
similarity index 94%
rename from 400_xowa/src/gplx/xowa/gui/cmds/Xog_cmd_itm.java
rename to 400_xowa/src/gplx/xowa/guis/cmds/Xog_cmd_itm.java
index 9c75361e6..72bac9717 100644
--- a/400_xowa/src/gplx/xowa/gui/cmds/Xog_cmd_itm.java
+++ b/400_xowa/src/gplx/xowa/guis/cmds/Xog_cmd_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.gui.cmds; import gplx.*; import gplx.xowa.*; import gplx.xowa.gui.*;
+package gplx.xowa.guis.cmds; import gplx.*; import gplx.xowa.*; import gplx.xowa.guis.*;
 public class Xog_cmd_itm {
 	public Xog_cmd_itm(String key, Xog_cmd_ctg ctg, String cmd) {
 		this.key = key; this.ctg = ctg; this.cmd = cmd;
diff --git a/400_xowa/src/gplx/xowa/gui/cmds/Xog_cmd_itm_.java b/400_xowa/src/gplx/xowa/guis/cmds/Xog_cmd_itm_.java
similarity index 97%
rename from 400_xowa/src/gplx/xowa/gui/cmds/Xog_cmd_itm_.java
rename to 400_xowa/src/gplx/xowa/guis/cmds/Xog_cmd_itm_.java
index 1a69c7eea..45d95d92d 100644
--- a/400_xowa/src/gplx/xowa/gui/cmds/Xog_cmd_itm_.java
+++ b/400_xowa/src/gplx/xowa/guis/cmds/Xog_cmd_itm_.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.gui.cmds; import gplx.*; import gplx.xowa.*; import gplx.xowa.gui.*;
+package gplx.xowa.guis.cmds; import gplx.*; import gplx.xowa.*; import gplx.xowa.guis.*;
 public class Xog_cmd_itm_ {
-	private static final Ordered_hash regy = Ordered_hash_.new_();	// NOTE: must be defined at top
+	private static final Ordered_hash regy = Ordered_hash_.New();	// NOTE: must be defined at top
 	public static final String 
 	  Key_app_exit												= new_dflt_(Xog_ctg_itm_.Tid_app			, "xowa.app.exit")
 
diff --git a/400_xowa/src/gplx/xowa/gui/cmds/Xog_cmd_mgr.java b/400_xowa/src/gplx/xowa/guis/cmds/Xog_cmd_mgr.java
similarity index 90%
rename from 400_xowa/src/gplx/xowa/gui/cmds/Xog_cmd_mgr.java
rename to 400_xowa/src/gplx/xowa/guis/cmds/Xog_cmd_mgr.java
index 42f2ce1d7..a04817844 100644
--- a/400_xowa/src/gplx/xowa/gui/cmds/Xog_cmd_mgr.java
+++ b/400_xowa/src/gplx/xowa/guis/cmds/Xog_cmd_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.gui.cmds; import gplx.*; import gplx.xowa.*; import gplx.xowa.gui.*;
-import gplx.xowa.apis.xowa.*;
+package gplx.xowa.guis.cmds; import gplx.*; import gplx.xowa.*; import gplx.xowa.guis.*;
+import gplx.xowa.apps.apis.xowa.*;
 import gplx.xowa.langs.*; import gplx.xowa.langs.msgs.*;
 public class Xog_cmd_mgr {
 	public void Init_by_kit(Xoae_app app) {
@@ -28,7 +28,7 @@ public class Xog_cmd_mgr {
 	private void Load_ctg_msgs(Xoae_app app) {
 		Xog_cmd_ctg[] ary = Xog_ctg_itm_.Ary;
 		int len = ary.length;
-		Xol_lang lang = app.Usere().Lang();
+		Xol_lang_itm lang = app.Usere().Lang();
 		for (int i = 0; i < len; i++) {
 			Xog_cmd_ctg itm = ary[i];
 			itm.Name_(Xol_msg_mgr_.Get_msg_val_gui_or_null(app.Lang_mgr(), lang, Xog_cmd_itm_.Msg_pre_ctg, itm.Key_bry(), Xog_cmd_itm_.Msg_suf_name));
@@ -36,7 +36,7 @@ public class Xog_cmd_mgr {
 	}
 	private void Load_cmd_msgs(Xoae_app app) {
 		int len = this.Len();
-		Xol_lang lang = app.Usere().Lang();
+		Xol_lang_itm lang = app.Usere().Lang();
 		for (int i = 0; i < len; i++) {
 			Xog_cmd_itm itm = this.Get_at(i);
 			itm.Name_(Xol_msg_mgr_.Get_msg_val_gui_or_null(app.Lang_mgr(), lang, Xog_cmd_itm_.Msg_pre_api, itm.Key_bry(), Xog_cmd_itm_.Msg_suf_name));
diff --git a/400_xowa/src/gplx/xowa/gui/cmds/Xog_cmd_mgr_invk.java b/400_xowa/src/gplx/xowa/guis/cmds/Xog_cmd_mgr_invk.java
similarity index 92%
rename from 400_xowa/src/gplx/xowa/gui/cmds/Xog_cmd_mgr_invk.java
rename to 400_xowa/src/gplx/xowa/guis/cmds/Xog_cmd_mgr_invk.java
index fb21f0e49..6b27d2d7b 100644
--- a/400_xowa/src/gplx/xowa/gui/cmds/Xog_cmd_mgr_invk.java
+++ b/400_xowa/src/gplx/xowa/guis/cmds/Xog_cmd_mgr_invk.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.gui.cmds; import gplx.*; import gplx.xowa.*; import gplx.xowa.gui.*;
+package gplx.xowa.guis.cmds; import gplx.*; import gplx.xowa.*; import gplx.xowa.guis.*;
 public class Xog_cmd_mgr_invk implements GfoInvkAble {
 	private Xoae_app app; private Xog_cmd_mgr cmd_mgr;
 	public void Ctor(Xoae_app app, Xog_cmd_mgr cmd_mgr) {this.app = app; this.cmd_mgr = cmd_mgr;}
diff --git a/400_xowa/src/gplx/xowa/gui/history/Xog_history_itm.java b/400_xowa/src/gplx/xowa/guis/history/Xog_history_itm.java
similarity index 95%
rename from 400_xowa/src/gplx/xowa/gui/history/Xog_history_itm.java
rename to 400_xowa/src/gplx/xowa/guis/history/Xog_history_itm.java
index d9115796d..b5c2581ee 100644
--- a/400_xowa/src/gplx/xowa/gui/history/Xog_history_itm.java
+++ b/400_xowa/src/gplx/xowa/guis/history/Xog_history_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.gui.history; import gplx.*; import gplx.xowa.*; import gplx.xowa.gui.*;
+package gplx.xowa.guis.history; import gplx.*; import gplx.xowa.*; import gplx.xowa.guis.*;
 public class Xog_history_itm {
 	private final boolean redirect_force;
 	public Xog_history_itm(byte[] wiki, byte[] page, byte[] anch, byte[] qarg, boolean redirect_force, String bmk_pos) {
diff --git a/400_xowa/src/gplx/xowa/gui/history/Xog_history_mgr.java b/400_xowa/src/gplx/xowa/guis/history/Xog_history_mgr.java
similarity index 93%
rename from 400_xowa/src/gplx/xowa/gui/history/Xog_history_mgr.java
rename to 400_xowa/src/gplx/xowa/guis/history/Xog_history_mgr.java
index e30896800..9fa1ca0a5 100644
--- a/400_xowa/src/gplx/xowa/gui/history/Xog_history_mgr.java
+++ b/400_xowa/src/gplx/xowa/guis/history/Xog_history_mgr.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.gui.history; import gplx.*; import gplx.xowa.*; import gplx.xowa.gui.*;
+package gplx.xowa.guis.history; import gplx.*; import gplx.xowa.*; import gplx.xowa.guis.*;
 public class Xog_history_mgr {
-	private final Ordered_hash hash = Ordered_hash_.new_bry_(); private final Xog_history_stack stack = new Xog_history_stack();
+	private final Ordered_hash hash = Ordered_hash_.New_bry(); private final Xog_history_stack stack = new Xog_history_stack();
 	public int Count() {return hash.Count();}
 	public Xoae_page Cur_page(Xowe_wiki wiki) {return Get_or_fetch(wiki, stack.Cur_itm());}
 	public Xoae_page Go_bwd(Xowe_wiki wiki) {return Go_by_dir(wiki, Bool_.N);}
diff --git a/400_xowa/src/gplx/xowa/gui/history/Xog_history_stack.java b/400_xowa/src/gplx/xowa/guis/history/Xog_history_stack.java
similarity index 94%
rename from 400_xowa/src/gplx/xowa/gui/history/Xog_history_stack.java
rename to 400_xowa/src/gplx/xowa/guis/history/Xog_history_stack.java
index 71b01a416..7102c8cfe 100644
--- a/400_xowa/src/gplx/xowa/gui/history/Xog_history_stack.java
+++ b/400_xowa/src/gplx/xowa/guis/history/Xog_history_stack.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.gui.history; import gplx.*; import gplx.xowa.*; import gplx.xowa.gui.*;
+package gplx.xowa.guis.history; import gplx.*; import gplx.xowa.*; import gplx.xowa.guis.*;
 public class Xog_history_stack {
 	private final List_adp list = List_adp_.new_();
 	public int Len() {return list.Count();}
diff --git a/400_xowa/src/gplx/xowa/gui/history/Xog_history_stack_tst.java b/400_xowa/src/gplx/xowa/guis/history/Xog_history_stack_tst.java
similarity index 96%
rename from 400_xowa/src/gplx/xowa/gui/history/Xog_history_stack_tst.java
rename to 400_xowa/src/gplx/xowa/guis/history/Xog_history_stack_tst.java
index 65763a011..24f37dd1f 100644
--- a/400_xowa/src/gplx/xowa/gui/history/Xog_history_stack_tst.java
+++ b/400_xowa/src/gplx/xowa/guis/history/Xog_history_stack_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.gui.history; import gplx.*; import gplx.xowa.*; import gplx.xowa.gui.*;
+package gplx.xowa.guis.history; import gplx.*; import gplx.xowa.*; import gplx.xowa.guis.*;
 import org.junit.*;
 public class Xog_history_stack_tst {		
 	@Before public void init() {fxt.Clear();} private Xog_history_stack_fxt fxt = new Xog_history_stack_fxt();
diff --git a/400_xowa/src/gplx/xowa/langs/Xol_font_info.java b/400_xowa/src/gplx/xowa/guis/langs/Xol_font_info.java
similarity index 95%
rename from 400_xowa/src/gplx/xowa/langs/Xol_font_info.java
rename to 400_xowa/src/gplx/xowa/guis/langs/Xol_font_info.java
index bf9d88b13..94d9eae8b 100644
--- a/400_xowa/src/gplx/xowa/langs/Xol_font_info.java
+++ b/400_xowa/src/gplx/xowa/guis/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.langs; import gplx.*; import gplx.xowa.*;
+package gplx.xowa.guis.langs; import gplx.*; import gplx.xowa.*; import gplx.xowa.guis.*;
 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/gui/menus/Xog_menu_mgr.java b/400_xowa/src/gplx/xowa/guis/menus/Xog_menu_mgr.java
similarity index 85%
rename from 400_xowa/src/gplx/xowa/gui/menus/Xog_menu_mgr.java
rename to 400_xowa/src/gplx/xowa/guis/menus/Xog_menu_mgr.java
index 17fa9e213..98ebde452 100644
--- a/400_xowa/src/gplx/xowa/gui/menus/Xog_menu_mgr.java
+++ b/400_xowa/src/gplx/xowa/guis/menus/Xog_menu_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.gui.menus; import gplx.*; import gplx.xowa.*; import gplx.xowa.gui.*;
-import gplx.xowa.gui.menus.dom.*;
+package gplx.xowa.guis.menus; import gplx.*; import gplx.xowa.*; import gplx.xowa.guis.*;
+import gplx.xowa.guis.menus.dom.*;
 import gplx.xowa.langs.*;
 public class Xog_menu_mgr implements GfoInvkAble {
 	private Xoae_app app;
@@ -36,7 +36,7 @@ public class Xog_menu_mgr implements GfoInvkAble {
 	}
 	public void Init_by_kit() {
 		try {
-			if (!app.App_type().Uid_is_gui()) return;	// NOTE: do not try to initialize menu if http_server; will fail in headless mode when it tries to load SWT images; DATE:2015-03-27
+			if (!app.Mode().Tid_is_gui()) return;	// NOTE: do not try to initialize menu if http_server; will fail in headless mode when it tries to load SWT images; DATE:2015-03-27
 			popup_mnu_mgr.Init_by_kit();
 			window_mnu_mgr.Init_by_kit();
 			Lang_changed(app.Usere().Lang());
@@ -45,7 +45,7 @@ public class Xog_menu_mgr implements GfoInvkAble {
 			app.Usr_dlg().Warn_many("", "", "error while loading menus; err=~{0}", Err_.Message_gplx_full(e));
 		}
 	}
-	public void Lang_changed(Xol_lang lang) {
+	public void Lang_changed(Xol_lang_itm lang) {
 		window_mnu_mgr.Lang_changed(lang);
 		popup_mnu_mgr.Lang_changed(lang);
 	}
diff --git a/400_xowa/src/gplx/xowa/gui/menus/Xog_menu_mnu_src.java b/400_xowa/src/gplx/xowa/guis/menus/Xog_menu_mnu_src.java
similarity index 93%
rename from 400_xowa/src/gplx/xowa/gui/menus/Xog_menu_mnu_src.java
rename to 400_xowa/src/gplx/xowa/guis/menus/Xog_menu_mnu_src.java
index 7a012b1d0..51b41ea7a 100644
--- a/400_xowa/src/gplx/xowa/gui/menus/Xog_menu_mnu_src.java
+++ b/400_xowa/src/gplx/xowa/guis/menus/Xog_menu_mnu_src.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.gui.menus; import gplx.*; import gplx.xowa.*; import gplx.xowa.gui.*;
-import gplx.xowa.gui.cmds.*;
+package gplx.xowa.guis.menus; import gplx.*; import gplx.xowa.*; import gplx.xowa.guis.*;
+import gplx.xowa.guis.cmds.*;
 class Xog_menu_mgr_src {
 	public static final String Browser_win 
-	= Xog_menu_bldr._
+	= Xog_menu_bldr.Instance
 	. Add_grp_bgn(Xog_cmd_itm_.Key_gui_menus_group_file)
 	.	Add_btn(Xog_cmd_itm_.Key_gui_browser_tabs_new_dflt__at_dflt__focus_y)
 	.	Add_btn(Xog_cmd_itm_.Key_gui_browser_tabs_close_cur)
@@ -88,7 +88,7 @@ class Xog_menu_mgr_src {
 	. Add_grp_end()
 	. Gen_str();
 	public static final String Html_page 
-	= Xog_menu_bldr._
+	= Xog_menu_bldr.Instance
 	. Add_btn(Xog_cmd_itm_.Key_nav_go_bwd)
 	. Add_btn(Xog_cmd_itm_.Key_nav_go_fwd)
 	. Add_spr()
@@ -159,7 +159,7 @@ class Xog_menu_mgr_src {
 	. Gen_str();
 
 	public static final String Html_link
-	= Xog_menu_bldr._
+	= Xog_menu_bldr.Instance
 	. Add_btn(Xog_cmd_itm_.Key_gui_browser_tabs_new_link__at_dflt__focus_n)
 	. Add_btn(Xog_cmd_itm_.Key_gui_browser_tabs_new_link__at_dflt__focus_y)
 	. Add_spr()
@@ -167,14 +167,14 @@ class Xog_menu_mgr_src {
 	. Add_btn(Xog_cmd_itm_.Key_gui_browser_find_show_by_paste)
 	. Gen_str();
 	public static final String Html_file
-	= Xog_menu_bldr._
+	= Xog_menu_bldr.Instance
 	. Add_btn(Xog_cmd_itm_.Key_gui_browser_tabs_new_link__at_dflt__focus_n)
 	. Add_btn(Xog_cmd_itm_.Key_gui_browser_tabs_new_link__at_dflt__focus_y)
 	. Add_spr()
 	. Add_btn(Xog_cmd_itm_.Key_gui_page_selection_save_file_as)
 	. Gen_str();
 	public static final String Tabs_btns
-	= Xog_menu_bldr._
+	= Xog_menu_bldr.Instance
 	. Add_btn(Xog_cmd_itm_.Key_gui_browser_tabs_new_dflt__at_dflt__focus_y)
 	. Add_btn(Xog_cmd_itm_.Key_gui_browser_tabs_new_dupe__at_dflt__focus_y)
 	. Add_btn(Xog_cmd_itm_.Key_gui_browser_tabs_close_cur)
@@ -192,7 +192,7 @@ class Xog_menu_mgr_src {
 	. Add_btn(Xog_cmd_itm_.Key_gui_browser_tabs_close_undo)
 	. Gen_str();		
 	public static final String Prog 
-	= Xog_menu_bldr._
+	= Xog_menu_bldr.Instance
 	. Add_btn(Xog_cmd_itm_.Key_gui_browser_prog_log_show)
 	. Gen_str();
 	public static final String Info = String_.Concat_lines_nl
@@ -202,7 +202,7 @@ class Xog_menu_mgr_src {
 class Xog_menu_bldr {
 	private int indent = 0;
 	private Bry_bfr bfr = Bry_bfr.reset_(0);
-	public String Gen_str() {return bfr.Xto_str_and_clear();}
+	public String Gen_str() {return bfr.To_str_and_clear();}
 	private Xog_menu_bldr Indent_add() {indent += 2; return this;}
 	private Xog_menu_bldr Indent_del() {indent -= 2; return this;}
 	private void Indent() {
@@ -243,5 +243,5 @@ class Xog_menu_bldr {
 	, Const_itm_grp_bgn_rhs	= Bry_.new_a7("') {\n")
 	, Const_itm_grp_end		= Bry_.new_a7("}\n")
 	;
-	public static final Xog_menu_bldr _ = new Xog_menu_bldr(); Xog_menu_bldr() {}
+	public static final Xog_menu_bldr Instance = new Xog_menu_bldr(); Xog_menu_bldr() {}
 }
diff --git a/400_xowa/src/gplx/xowa/gui/menus/Xog_popup_mnu_mgr.java b/400_xowa/src/gplx/xowa/guis/menus/Xog_popup_mnu_mgr.java
similarity index 91%
rename from 400_xowa/src/gplx/xowa/gui/menus/Xog_popup_mnu_mgr.java
rename to 400_xowa/src/gplx/xowa/guis/menus/Xog_popup_mnu_mgr.java
index e76f01a04..c3a495098 100644
--- a/400_xowa/src/gplx/xowa/gui/menus/Xog_popup_mnu_mgr.java
+++ b/400_xowa/src/gplx/xowa/guis/menus/Xog_popup_mnu_mgr.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.gui.menus; import gplx.*; import gplx.xowa.*; import gplx.xowa.gui.*;
-import gplx.xowa.gui.menus.dom.*;
+package gplx.xowa.guis.menus; import gplx.*; import gplx.xowa.*; import gplx.xowa.guis.*;
+import gplx.xowa.guis.menus.dom.*;
 import gplx.xowa.langs.*;
 public class Xog_popup_mnu_mgr implements GfoInvkAble {
-	private Ordered_hash hash = Ordered_hash_.new_();
+	private Ordered_hash hash = Ordered_hash_.New();
 	private Xoa_gui_mgr gui_mgr;
 	private Xog_mnu_grp[] mnus = new Xog_mnu_grp[6];
 	public Xog_popup_mnu_mgr(Xoa_gui_mgr gui_mgr, Xog_menu_mgr menu_mgr) {
@@ -41,7 +41,7 @@ public class Xog_popup_mnu_mgr implements GfoInvkAble {
 		for (int i = 0; i < mnus.length; i++)
 			mnus[i].Source_exec(gui_mgr.App().Gfs_mgr());	// NOTE: build menu now; NOTE: do not set default here, or else will override user setting
 	}
-	public void Lang_changed(Xol_lang lang) {
+	public void Lang_changed(Xol_lang_itm lang) {
 		for (int i = 0; i < mnus.length; i++)
 			Xog_mnu_base.Update_grp_by_lang(gui_mgr.Menu_mgr().Menu_bldr(), lang, mnus[i]);
 	}
diff --git a/400_xowa/src/gplx/xowa/gui/menus/Xog_window_mnu_mgr.java b/400_xowa/src/gplx/xowa/guis/menus/Xog_window_mnu_mgr.java
similarity index 88%
rename from 400_xowa/src/gplx/xowa/gui/menus/Xog_window_mnu_mgr.java
rename to 400_xowa/src/gplx/xowa/guis/menus/Xog_window_mnu_mgr.java
index 68c73389f..3d37b7b35 100644
--- a/400_xowa/src/gplx/xowa/gui/menus/Xog_window_mnu_mgr.java
+++ b/400_xowa/src/gplx/xowa/guis/menus/Xog_window_mnu_mgr.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.gui.menus; import gplx.*; import gplx.xowa.*; import gplx.xowa.gui.*;
-import gplx.xowa.gui.menus.dom.*;
+package gplx.xowa.guis.menus; import gplx.*; import gplx.xowa.*; import gplx.xowa.guis.*;
+import gplx.xowa.guis.menus.dom.*;
 import gplx.xowa.langs.*;
 public class Xog_window_mnu_mgr implements GfoInvkAble {
-	private Ordered_hash hash = Ordered_hash_.new_();
+	private Ordered_hash hash = Ordered_hash_.New();
 	public Xog_mnu_grp Browser() {return browser;} private Xog_mnu_grp browser;
 	public Xog_window_mnu_mgr(Xoa_gui_mgr gui_mgr, Xog_menu_mgr menu_mgr) {
 		this.gui_mgr = gui_mgr;
@@ -36,7 +36,7 @@ public class Xog_window_mnu_mgr implements GfoInvkAble {
 		}
 		return rv;
 	}
-	public void Lang_changed(Xol_lang lang) {
+	public void Lang_changed(Xol_lang_itm lang) {
 		Xog_mnu_base.Update_grp_by_lang(gui_mgr.Menu_mgr().Menu_bldr(), lang, browser);
 	}
 	public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) {
diff --git a/400_xowa/src/gplx/xowa/gui/menus/dom/Xog_mnu_base.java b/400_xowa/src/gplx/xowa/guis/menus/dom/Xog_mnu_base.java
similarity index 94%
rename from 400_xowa/src/gplx/xowa/gui/menus/dom/Xog_mnu_base.java
rename to 400_xowa/src/gplx/xowa/guis/menus/dom/Xog_mnu_base.java
index 45caf4de7..945bc2ce7 100644
--- a/400_xowa/src/gplx/xowa/gui/menus/dom/Xog_mnu_base.java
+++ b/400_xowa/src/gplx/xowa/guis/menus/dom/Xog_mnu_base.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.gui.menus.dom; import gplx.*; import gplx.xowa.*; import gplx.xowa.gui.*; import gplx.xowa.gui.menus.*;
-import gplx.gfui.*; import gplx.xowa.langs.*; import gplx.xowa.gui.cmds.*;
+package gplx.xowa.guis.menus.dom; import gplx.*; import gplx.xowa.*; import gplx.xowa.guis.*; import gplx.xowa.guis.menus.*;
+import gplx.gfui.*; import gplx.xowa.langs.*; import gplx.xowa.guis.cmds.*;
 public abstract class Xog_mnu_base implements GfoInvkAble {
 	private List_adp list = List_adp_.new_();
 	public Xog_mnu_base() {evt_mgr = new Xog_mnu_evt_mgr(this);}
@@ -69,7 +69,7 @@ public abstract class Xog_mnu_base implements GfoInvkAble {
 		return itm;
 	}
 	public Xog_mnu_itm Add_spr() {
-		String key = "xowa.spr" + Int_.Xto_str(list.Count());
+		String key = "xowa.spr" + Int_.To_str(list.Count());
 		Xog_mnu_itm rv = new Xog_mnu_itm(gui_mgr, key).Tid_(Xog_mnu_itm.Tid_spr);
 		list.Add(rv);
 		return rv;
@@ -97,7 +97,7 @@ public abstract class Xog_mnu_base implements GfoInvkAble {
 	, Invk_add_chk_default = "add_chk_default", Invk_add_chk = "add_chk"
 	, Invk_add_rdo_default = "add_rdo_default", Invk_add_rdo = "add_rdo"
 	;
-	public static void Update_grp_by_lang(Xog_mnu_bldr bldr, Xol_lang lang, Xog_mnu_base grp) {
+	public static void Update_grp_by_lang(Xog_mnu_bldr bldr, Xol_lang_itm lang, Xog_mnu_base grp) {
 		int len = grp.Len();
 		for (int i = 0; i < len; i++) {
 			Xog_mnu_itm itm = grp.Get_at(i);
diff --git a/400_xowa/src/gplx/xowa/gui/menus/dom/Xog_mnu_bldr.java b/400_xowa/src/gplx/xowa/guis/menus/dom/Xog_mnu_bldr.java
similarity index 82%
rename from 400_xowa/src/gplx/xowa/gui/menus/dom/Xog_mnu_bldr.java
rename to 400_xowa/src/gplx/xowa/guis/menus/dom/Xog_mnu_bldr.java
index 59ca7a59d..5b778c24a 100644
--- a/400_xowa/src/gplx/xowa/gui/menus/dom/Xog_mnu_bldr.java
+++ b/400_xowa/src/gplx/xowa/guis/menus/dom/Xog_mnu_bldr.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.gui.menus.dom; import gplx.*; import gplx.xowa.*; import gplx.xowa.gui.*; import gplx.xowa.gui.menus.*;
-import gplx.gfui.*; import gplx.xowa.gui.cmds.*;
+package gplx.xowa.guis.menus.dom; import gplx.*; import gplx.xowa.*; import gplx.xowa.guis.*; import gplx.xowa.guis.menus.*;
+import gplx.gfui.*; import gplx.xowa.guis.cmds.*; import gplx.xowa.apps.gfs.*;
 public class Xog_mnu_bldr {
 	private Xoae_app app; private Gfui_kit kit; private Io_url img_dir;
 	public void Init_by_kit(Xoae_app app, Gfui_kit kit, Io_url img_dir) {
@@ -51,18 +51,18 @@ public class Xog_mnu_bldr {
 	}
 	public ImageAdp Get_img(String[] img_nest) {
 		Io_url img_url = img_nest.length == 0 ? Io_url_.Empty : img_dir.GenSubFil_nest(img_nest);
-		return Io_mgr.I.ExistsFil(img_url) ? kit.New_img_load(img_url) : ImageAdp_null._;	// NOTE: must check if file exists else swt exception; NOTE: must use ImageAdp_null._, not ImageAdp_.Null, else error in non-X11 environments
+		return Io_mgr.Instance.ExistsFil(img_url) ? kit.New_img_load(img_url) : ImageAdp_null.Instance;	// NOTE: must check if file exists else swt exception; NOTE: must use ImageAdp_null.Instance, not ImageAdp_.Null, else error in non-X11 environments
 	}
 	private Gfui_mnu_itm Add_btn(Gfui_mnu_grp owner_gui, Xog_mnu_itm sub, String sub_text, String sub_shortcut) {
 		String cmd_text = "app.api.exec('" + sub.Key() + "');";
-		GfoMsg msg = app.Gfs_mgr().Parse_root_msg(cmd_text);
+		GfoMsg msg = Xoa_gfs_mgr_.Parse_to_msg(cmd_text);
 		ImageAdp img = Get_img(sub.Img_nest());
 		return owner_gui.Itms_add_btn_msg(sub.Gui_text(), img, app, app.Gfs_mgr(), msg);
 	}
 	private Gfui_mnu_itm Add_chk(Gfui_mnu_grp owner_gui, Xog_mnu_itm sub, String sub_text, String sub_shortcut) {
 		ImageAdp img = Get_img(sub.Img_nest());
-		GfoMsg msg_n = app.Gfs_mgr().Parse_root_msg("app.api.exec('" + sub.Key() + "n_');");
-		GfoMsg msg_y = app.Gfs_mgr().Parse_root_msg("app.api.exec('" + sub.Key() + "y_');");
+		GfoMsg msg_n = Xoa_gfs_mgr_.Parse_to_msg("app.api.exec('" + sub.Key() + "n_');");
+		GfoMsg msg_y = Xoa_gfs_mgr_.Parse_to_msg("app.api.exec('" + sub.Key() + "y_');");
 		Gfui_mnu_itm mnu_itm = owner_gui.Itms_add_chk_msg(sub.Gui_text(), img, app, app.Gfs_mgr(), msg_n, msg_y);
 		sub.Evt_mgr().Sub(mnu_itm);
 		Xog_cmd_itm cmd = app.Gui_mgr().Cmd_mgr().Get_or_null(sub.Key());
@@ -78,7 +78,7 @@ public class Xog_mnu_bldr {
 //		}
 	private Gfui_mnu_itm Add_rdo(Gfui_mnu_grp owner_gui, Xog_mnu_itm sub, String sub_text, String sub_shortcut) {
 		ImageAdp img = Get_img(sub.Img_nest());
-		GfoMsg msg = app.Gfs_mgr().Parse_root_msg("app.api.exec('" + sub.Key() + "');");
+		GfoMsg msg = Xoa_gfs_mgr_.Parse_to_msg("app.api.exec('" + sub.Key() + "');");
 		return owner_gui.Itms_add_rdo_msg(sub.Gui_text(), img, app, app.Gfs_mgr(), msg);
 	}
 }
diff --git a/400_xowa/src/gplx/xowa/gui/menus/dom/Xog_mnu_evt_mgr.java b/400_xowa/src/gplx/xowa/guis/menus/dom/Xog_mnu_evt_mgr.java
similarity index 84%
rename from 400_xowa/src/gplx/xowa/gui/menus/dom/Xog_mnu_evt_mgr.java
rename to 400_xowa/src/gplx/xowa/guis/menus/dom/Xog_mnu_evt_mgr.java
index 2f3aa725f..d60c0f669 100644
--- a/400_xowa/src/gplx/xowa/gui/menus/dom/Xog_mnu_evt_mgr.java
+++ b/400_xowa/src/gplx/xowa/guis/menus/dom/Xog_mnu_evt_mgr.java
@@ -15,10 +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.gui.menus.dom; import gplx.*; import gplx.xowa.*; import gplx.xowa.gui.*; import gplx.xowa.gui.menus.*;
-import gplx.gfui.*; import gplx.xowa.gui.cmds.*;
+package gplx.xowa.guis.menus.dom; import gplx.*; import gplx.xowa.*; import gplx.xowa.guis.*; import gplx.xowa.guis.menus.*;
+import gplx.gfui.*; import gplx.xowa.guis.cmds.*;
 public class Xog_mnu_evt_mgr implements GfoEvObj {
-	private Ordered_hash itms = Ordered_hash_.new_();
+	private Ordered_hash itms = Ordered_hash_.New();
 	public Xog_mnu_evt_mgr(Xog_mnu_base owner) {this.ev_mgr = GfoEvMgr.new_(this);}
 	public GfoEvMgr EvMgr() {return ev_mgr;} private GfoEvMgr ev_mgr;
 	public void Sub(Gfui_mnu_itm mnu_itm) {
diff --git a/400_xowa/src/gplx/xowa/gui/menus/dom/Xog_mnu_grp.java b/400_xowa/src/gplx/xowa/guis/menus/dom/Xog_mnu_grp.java
similarity index 93%
rename from 400_xowa/src/gplx/xowa/gui/menus/dom/Xog_mnu_grp.java
rename to 400_xowa/src/gplx/xowa/guis/menus/dom/Xog_mnu_grp.java
index 55e28e809..e343c7384 100644
--- a/400_xowa/src/gplx/xowa/gui/menus/dom/Xog_mnu_grp.java
+++ b/400_xowa/src/gplx/xowa/guis/menus/dom/Xog_mnu_grp.java
@@ -15,10 +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.gui.menus.dom; import gplx.*; import gplx.xowa.*; import gplx.xowa.gui.*; import gplx.xowa.gui.menus.*;
+package gplx.xowa.guis.menus.dom; import gplx.*; import gplx.xowa.*; import gplx.xowa.guis.*; import gplx.xowa.guis.menus.*;
 import gplx.gfui.*;
-import gplx.xowa.apps.*; import gplx.xowa.apps.gfss.*;
-import gplx.xowa.gui.views.*;
+import gplx.xowa.apps.*; import gplx.xowa.apps.gfs.*;
+import gplx.xowa.guis.views.*;
 public class Xog_mnu_grp extends Xog_mnu_base {
 	public Xog_mnu_grp(Xoa_gui_mgr gui_mgr, boolean mnu_is_popup, String key) {
 		this.app = gui_mgr.App(); this.mnu_is_popup = mnu_is_popup; this.key = key;
@@ -101,7 +101,7 @@ public class Xog_mnu_grp extends Xog_mnu_base {
 	}
 	@Override public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) {
 		if		(ctx.Match(k, Invk_build))					this.Build();
-		else if	(ctx.Match(k, Invk_enabled))				return Yn.Xto_str(enabled);
+		else if	(ctx.Match(k, Invk_enabled))				return Yn.To_str(enabled);
 		else if	(ctx.Match(k, Invk_enabled_))				this.Enabled_(m.ReadYn("v"));
 		else if	(ctx.Match(k, Invk_source))					return source;
 		else if	(ctx.Match(k, Invk_source_))				this.Source_(app.Gfs_mgr(), m.ReadStr("v"));
diff --git a/400_xowa/src/gplx/xowa/gui/menus/dom/Xog_mnu_itm.java b/400_xowa/src/gplx/xowa/guis/menus/dom/Xog_mnu_itm.java
similarity index 94%
rename from 400_xowa/src/gplx/xowa/gui/menus/dom/Xog_mnu_itm.java
rename to 400_xowa/src/gplx/xowa/guis/menus/dom/Xog_mnu_itm.java
index 13f8c1826..acbc3af60 100644
--- a/400_xowa/src/gplx/xowa/gui/menus/dom/Xog_mnu_itm.java
+++ b/400_xowa/src/gplx/xowa/guis/menus/dom/Xog_mnu_itm.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.gui.menus.dom; import gplx.*; import gplx.xowa.*; import gplx.xowa.gui.*; import gplx.xowa.gui.menus.*;
-import gplx.gfui.*; import gplx.xowa.langs.*; import gplx.xowa.gui.cmds.*; import gplx.xowa.langs.msgs.*;
+package gplx.xowa.guis.menus.dom; import gplx.*; import gplx.xowa.*; import gplx.xowa.guis.*; import gplx.xowa.guis.menus.*;
+import gplx.gfui.*; import gplx.xowa.langs.*; import gplx.xowa.guis.cmds.*; import gplx.xowa.langs.msgs.*;
 public class Xog_mnu_itm extends Xog_mnu_base {
 	private Xoa_gui_mgr gui_mgr;
 	public Xog_mnu_itm(Xoa_gui_mgr gui_mgr, String key) {
@@ -44,7 +44,7 @@ public class Xog_mnu_itm extends Xog_mnu_base {
 		this.tid = comp.tid; this.name = comp.name; this.shortcut = comp.shortcut; this.img_nest = comp.img_nest; this.gui_text = comp.gui_text;
 		return this;
 	}
-	public void Init_by_lang(Xol_lang lang) {
+	public void Init_by_lang(Xol_lang_itm lang) {
 		this.name			= Xol_msg_mgr_.Get_msg_val_gui_or(lang.Lang_mgr(), lang, Xog_cmd_itm_.Msg_pre_api, key_bry, Xog_cmd_itm_.Msg_suf_name, name);	// NOTE: custom cmds must use Get_val_or, not Get_val_or_null; DATE:2014-05-30
 		this.shortcut		= Xol_msg_mgr_.Get_msg_val_gui_or(lang.Lang_mgr(), lang, Xog_cmd_itm_.Msg_pre_api, key_bry, Xog_cmd_itm_.Msg_suf_letter, shortcut);
 		this.img_nest		= Img_nest_of(Xol_msg_mgr_.Get_msg_val_gui_or(lang.Lang_mgr(), lang, Xog_cmd_itm_.Msg_pre_api, key_bry, Xog_cmd_itm_.Msg_suf_image, ""));
diff --git a/400_xowa/src/gplx/xowa/gui/menus/dom/Xog_mnu_regy.java b/400_xowa/src/gplx/xowa/guis/menus/dom/Xog_mnu_regy.java
similarity index 96%
rename from 400_xowa/src/gplx/xowa/gui/menus/dom/Xog_mnu_regy.java
rename to 400_xowa/src/gplx/xowa/guis/menus/dom/Xog_mnu_regy.java
index 0620a808b..07ca9873a 100644
--- a/400_xowa/src/gplx/xowa/gui/menus/dom/Xog_mnu_regy.java
+++ b/400_xowa/src/gplx/xowa/guis/menus/dom/Xog_mnu_regy.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.gui.menus.dom; import gplx.*; import gplx.xowa.*; import gplx.xowa.gui.*; import gplx.xowa.gui.menus.*;
-import gplx.xowa.gui.cmds.*;
+package gplx.xowa.guis.menus.dom; import gplx.*; import gplx.xowa.*; import gplx.xowa.guis.*; import gplx.xowa.guis.menus.*;
+import gplx.xowa.guis.cmds.*;
 public class Xog_mnu_regy {
 	private Ordered_hash hash;
 	private Xoa_gui_mgr gui_mgr;
@@ -24,7 +24,7 @@ public class Xog_mnu_regy {
 		this.gui_mgr = gui_mgr;
 	}
 	public void Init_by_app(Xoae_app app) {
-		hash = Ordered_hash_.new_();
+		hash = Ordered_hash_.New();
 		Xog_cmd_mgr cmd_mgr = app.Gui_mgr().Cmd_mgr();
 		int len = cmd_mgr.Len();
 		for (int i = 0; i < len; i++) {
diff --git a/400_xowa/src/gplx/xowa/gui/urls/Xof_orig_file_downloader.java b/400_xowa/src/gplx/xowa/guis/urls/Xof_orig_file_downloader.java
similarity index 95%
rename from 400_xowa/src/gplx/xowa/gui/urls/Xof_orig_file_downloader.java
rename to 400_xowa/src/gplx/xowa/guis/urls/Xof_orig_file_downloader.java
index 7485c26da..7e9abd48a 100644
--- a/400_xowa/src/gplx/xowa/gui/urls/Xof_orig_file_downloader.java
+++ b/400_xowa/src/gplx/xowa/guis/urls/Xof_orig_file_downloader.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.gui.urls; import gplx.*; import gplx.xowa.*; import gplx.xowa.gui.*;
+package gplx.xowa.guis.urls; import gplx.*; import gplx.xowa.*; import gplx.xowa.guis.*;
 import gplx.xowa.files.*; import gplx.xowa.files.repos.*; import gplx.xowa.files.origs.*;
 import gplx.xowa.parsers.lnkis.*;
 public class Xof_orig_file_downloader {
diff --git a/400_xowa/src/gplx/xowa/gui/urls/Xog_url_wkr.java b/400_xowa/src/gplx/xowa/guis/urls/Xog_url_wkr.java
similarity index 55%
rename from 400_xowa/src/gplx/xowa/gui/urls/Xog_url_wkr.java
rename to 400_xowa/src/gplx/xowa/guis/urls/Xog_url_wkr.java
index c78b5834e..c5a000052 100644
--- a/400_xowa/src/gplx/xowa/gui/urls/Xog_url_wkr.java
+++ b/400_xowa/src/gplx/xowa/guis/urls/Xog_url_wkr.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.gui.urls; import gplx.*; import gplx.xowa.*; import gplx.xowa.gui.*;
+package gplx.xowa.guis.urls; import gplx.*; import gplx.xowa.*; import gplx.xowa.guis.*;
 import gplx.core.net.*;
 import gplx.xowa.files.*; import gplx.xowa.files.repos.*; import gplx.xowa.files.origs.*;
-import gplx.xowa.html.hrefs.*; import gplx.xowa.html.doms.*;
-import gplx.xowa.gui.views.*;
+import gplx.xowa.htmls.hrefs.*; import gplx.xowa.htmls.doms.*;
+import gplx.xowa.guis.views.*;
 public class Xog_url_wkr {
 	private final Xoa_url tmp_url = Xoa_url.blank();
 	private Xoae_app app; private Xog_win_itm win; private Xowe_wiki wiki; private Xoae_page page;
@@ -50,18 +50,6 @@ public class Xog_url_wkr {
 		catch (Exception e) {app.Gui_mgr().Kit().Ask_ok("", "", Err_.Message_gplx_full(e));}
 		return Rslt_handled;
 	}
-//		private Xoa_url Exec_url_xcmd(Xog_win_itm win) {		// EX: /xcmd/
-//			byte[] xowa_href_bry = tmp_url.Page();
-//			int xowa_href_bry_len = xowa_href_bry.length;
-//			int slash_pos = Bry_find_.Find_fwd(xowa_href_bry, Byte_ascii.Slash); if (slash_pos == Bry_.NotFound) slash_pos = xowa_href_bry_len;
-//			byte[] xowa_cmd_bry = Bry_.Mid(xowa_href_bry, 0, slash_pos);
-//			String xowa_cmd_str = String_.new_u8(xowa_cmd_bry);
-//			GfoMsg m = GfoMsg_.new_cast_(xowa_cmd_str);
-//			if (String_.Eq(xowa_cmd_str, Xog_win_itm.Invk_eval))
-//				m.Add("cmd", String_.new_u8(xowa_href_bry, slash_pos + 1, xowa_href_bry_len));
-//			win.Invk(GfsCtx.new_(), 0, xowa_cmd_str, m);
-//			return Rslt_handled;
-//		}
 	private Xoa_url Exec_url_http(Xoae_app app) {		// EX: http://a.org
 		app.Prog_mgr().Exec_view_web(tmp_url.Raw());
 		return Rslt_handled;
@@ -75,16 +63,17 @@ public class Xog_url_wkr {
 		Io_url href_url = Io_url_.http_any_(String_.new_u8(Xoa_app_.Utl__encoder_mgr().Http_url().Decode(href_bry)), Op_sys.Cur().Tid_is_wnt());
 		gplx.gfui.Gfui_html html_box = win.Active_html_box();
 		String xowa_ttl = wiki.Gui_mgr().Cfg_browser().Content_editable()
-			? html_box.Html_js_eval_proc_as_str(Xog_js_procs.Selection__get_active_for_editable_mode, gplx.xowa.html.Xoh_consts.Atr_xowa_title_str, null)
+			? html_box.Html_js_eval_proc_as_str(Xog_js_procs.Selection__get_active_for_editable_mode, gplx.xowa.htmls.Xoh_consts.Atr_xowa_title_str, null)
 			: Xoh_dom_.Title_by_href(href_bry, Bry_.new_u8(html_box.Html_js_eval_proc_as_str(Xog_js_procs.Doc__root_html_get)));
+		if (xowa_ttl == null) {app.Gui_mgr().Kit().Ask_ok("", "", "could not find find anchor with href in html: href=~{0}", href_bry); return Rslt_handled;}
 		byte[] lnki_ttl = Xoa_app_.Utl__encoder_mgr().Http_url().Decode(Xoa_ttl.Replace_spaces(Bry_.new_u8(xowa_ttl)));
 		Xof_fsdb_itm fsdb = Xof_orig_file_downloader.Make_fsdb(wiki, lnki_ttl, img_size, url_bldr);
-		if (!Io_mgr.I.ExistsFil(href_url)) {
+		if (!Io_mgr.Instance.ExistsFil(href_url)) {
 //				if (!Xof_orig_file_downloader.Get_to_url(fsdb, href_url, wiki, lnki_ttl, url_bldr))
 			if (!Xof_file_wkr.Show_img(fsdb, Xoa_app_.Usr_dlg(), wiki.File__bin_mgr(), wiki.File__mnt_mgr(), wiki.App().User().User_db_mgr().Cache_mgr(), wiki.File__repo_mgr(), gplx.xowa.files.gui.Xog_js_wkr_.Noop, img_size, url_bldr, page))
 				return Rslt_handled;
 		}
-		gplx.ios.IoItmFil fil = Io_mgr.I.QueryFil(href_url);
+		gplx.ios.IoItmFil fil = Io_mgr.Instance.QueryFil(href_url);
 		if (fil.Exists()) {
 			ProcessAdp media_player = app.Prog_mgr().App_by_ext(href_url.Ext());
 			media_player.Run(href_url);
@@ -109,60 +98,6 @@ public class Xog_url_wkr {
 		}
 		return rv;
 	}
-//		private Xoa_url Exec_url_page(Xoae_app app, Xowe_wiki wiki, Xoae_page page, Xog_win_itm win, byte[] href_bry) {	// EX: "Page"; "/wiki/Page"; // rewritten; DATE:2014-01-19
-//			Xoa_url rv = wiki.Utl__url_parser().Parse(href_bry);// needed for query_args
-//			byte[] anchor_bry = href.Anchor();
-//			byte[] page_bry = rv.Page_bry();
-//			byte[][] segs_ary = rv.Mids_ary();
-//			int segs_ary_len = segs_ary.length;
-//			boolean use_main_page = false;
-//			if (	segs_ary_len > 0						// handle "Special:Search/Earth" which creates segs[1] {"Special:Search"} and page="Earth"
-//				||	href.Tid() == Xoh_href_.Tid_site) {		// NOTE: if site, must always (a) zap Segs_ary and (b) force correct page; see tests; DATE:2014-01-21
-//				int segs_bgn = 0;
-//				boolean segs_iterate = true;
-//				if (href.Tid() == Xoh_href_.Tid_site) {		// site, handle multiple segs; EX: "home/wiki/", "home/wiki/Help:Contents"; DATE:2014-01-21
-//					if (segs_ary_len < 2) {					// only 0 or 1 seg; usually occurs for logo and other xwiki links to Main_Page; EX: "/site/en.wikipedia.org/wiki/"; "/site/en.wikipedia.org/"
-//						page_bry = wiki.Init_assert().Props().Main_page();	// use Main_page; DATE:2014-02-16
-//						use_main_page = true;
-//						segs_iterate = false;
-//					}
-//					else 
-//						segs_bgn = 2;						// start from seg_2; seg_0="/en.wikipedia.org/" and seg_1="/wiki/"; note that > 2 segs possible; EX: "/site/en.wikipedia.org/wiki/A/B/C
-//				}
-//				if (segs_iterate) {
-//					Bry_bfr tmp_bfr = wiki.Utl__bfr_mkr().Get_b128();
-//					for (int i = segs_bgn; i < segs_ary_len; i++) {
-//						tmp_bfr.Add(segs_ary[i]);
-//						tmp_bfr.Add_byte(Byte_ascii.Slash);
-//					}
-//					tmp_bfr.Add(page_bry);
-//					page_bry = tmp_bfr.To_bry_and_rls();
-//				}
-//				rv.Mids_ary_(Bry_.Ary_empty);
-//			}
-//			Gfo_qarg_itm[] qargs = rv.Qargs_ary();
-//			int qargs_len = qargs.length;
-//			if (qargs_len > 0) {	// remove anchors from qargs; EX: "to=B#mw_pages"
-//				for (int i = 0; i < qargs_len; i++) {
-//					Gfo_qarg_itm arg = qargs[i];
-//					int anch_pos = Bry_find_.Find_bwd(arg.Val_bry(), Byte_ascii.Hash);	// NOTE: must .FindBwd to handle Category args like de.wikipedia.org/wiki/Kategorie:Begriffskl%C3%A4rung?pagefrom=#::12%20PANZERDIVISION#mw-pages; DATE:2013-06-18
-//					if (anch_pos != Bry_.NotFound)
-//						arg.Val_bry_(Bry_.Mid(arg.Val_bry(), 0, anch_pos));
-//				}				
-//			}
-//			if (!Bry_.Eq(page.Wiki().Domain_bry(), href.Wiki())) {// xwiki; EX: "file:///site/en.wiktionary.org/wiki/a"; EX: (1) goto w:Anything; (2) click on "anything" in wikt; "anything" will be parsed by en.wiki's rules, not en.wikt; DATE:2013-01-30
-//				wiki = app.Wiki_mgr().Get_by_key_or_make(href.Wiki()).Init_assert();	// get xwiki and set to wiki
-//				if (use_main_page)
-//					page_bry = wiki.Props().Main_page();								// get Main_page for new wiki; DATE:2014-02-23
-//				Xoa_ttl tmp_ttl = Xoa_ttl.parse(wiki, page_bry);						// reparse ttl according to xwiki's case_match rules; NOTE: do not use rv.Page_bry() or else will lose sub_pages (A/B/C); DATE:2014-02-21
-//				if (tmp_ttl != null)
-//					page_bry = tmp_ttl.Full_db();
-//			}
-//			rv.Wiki_bry_(wiki.Domain_bry());	// needed b/c url_parser.Parse(href) will result in wiki of "wiki" for "/wiki/Page"
-//			rv.Page_bry_(page_bry);
-//			rv.Anch_bry_(anchor_bry);
-//			return rv;
-//		}
 	public static Xoa_url Rslt_handled = null;
 	public static Xoa_url Exec_url(Xog_win_itm win, String href_str) {
 		Xog_url_wkr url_wkr = new Xog_url_wkr();
diff --git a/400_xowa/src/gplx/xowa/gui/urls/url_macros/Xog_url_macro_grp.java b/400_xowa/src/gplx/xowa/guis/urls/url_macros/Xog_url_macro_grp.java
similarity index 91%
rename from 400_xowa/src/gplx/xowa/gui/urls/url_macros/Xog_url_macro_grp.java
rename to 400_xowa/src/gplx/xowa/guis/urls/url_macros/Xog_url_macro_grp.java
index 58c97e407..b16e1cae2 100644
--- a/400_xowa/src/gplx/xowa/gui/urls/url_macros/Xog_url_macro_grp.java
+++ b/400_xowa/src/gplx/xowa/guis/urls/url_macros/Xog_url_macro_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.gui.urls.url_macros; import gplx.*; import gplx.xowa.*; import gplx.xowa.gui.*; import gplx.xowa.gui.urls.*;
+package gplx.xowa.guis.urls.url_macros; import gplx.*; import gplx.xowa.*; import gplx.xowa.guis.*; import gplx.xowa.guis.urls.*;
 import gplx.core.btries.*;
 public class Xog_url_macro_grp implements GfoInvkAble {
 	public Btrie_slim_mgr Trie() {return trie;} private Btrie_slim_mgr trie = Btrie_slim_mgr.cs();
@@ -39,6 +39,6 @@ class Xog_url_macro_itm {
 	public byte[] Fmtr_exec(Bry_bfr bfr, Object... args) {
 		if (fmtr == null) fmtr = new Bry_fmtr().Fmt_(fmt).Compile();
 		fmtr.Bld_bfr_many(bfr, args);
-		return bfr.Xto_bry_and_clear();
+		return bfr.To_bry_and_clear();
 	}
 }
diff --git a/400_xowa/src/gplx/xowa/gui/urls/url_macros/Xog_url_macro_mgr.java b/400_xowa/src/gplx/xowa/guis/urls/url_macros/Xog_url_macro_mgr.java
similarity index 95%
rename from 400_xowa/src/gplx/xowa/gui/urls/url_macros/Xog_url_macro_mgr.java
rename to 400_xowa/src/gplx/xowa/guis/urls/url_macros/Xog_url_macro_mgr.java
index 05bd8578f..b657942c1 100644
--- a/400_xowa/src/gplx/xowa/gui/urls/url_macros/Xog_url_macro_mgr.java
+++ b/400_xowa/src/gplx/xowa/guis/urls/url_macros/Xog_url_macro_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.gui.urls.url_macros; import gplx.*; import gplx.xowa.*; import gplx.xowa.gui.*; import gplx.xowa.gui.urls.*;
+package gplx.xowa.guis.urls.url_macros; import gplx.*; import gplx.xowa.*; import gplx.xowa.guis.*; import gplx.xowa.guis.urls.*;
 public class Xog_url_macro_mgr {
 	private Bry_bfr bfr = Bry_bfr.reset_(255);
 	public Xog_url_macro_mgr() {
diff --git a/400_xowa/src/gplx/xowa/gui/urls/url_macros/Xog_url_macro_mgr_tst.java b/400_xowa/src/gplx/xowa/guis/urls/url_macros/Xog_url_macro_mgr_tst.java
similarity index 93%
rename from 400_xowa/src/gplx/xowa/gui/urls/url_macros/Xog_url_macro_mgr_tst.java
rename to 400_xowa/src/gplx/xowa/guis/urls/url_macros/Xog_url_macro_mgr_tst.java
index 55aff250c..5157119b4 100644
--- a/400_xowa/src/gplx/xowa/gui/urls/url_macros/Xog_url_macro_mgr_tst.java
+++ b/400_xowa/src/gplx/xowa/guis/urls/url_macros/Xog_url_macro_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.gui.urls.url_macros; import gplx.*; import gplx.xowa.*; import gplx.xowa.gui.*; import gplx.xowa.gui.urls.*;
+package gplx.xowa.guis.urls.url_macros; import gplx.*; import gplx.xowa.*; import gplx.xowa.guis.*; import gplx.xowa.guis.urls.*;
 import org.junit.*;
 public class Xog_url_macro_mgr_tst {
 	@Before public void init() {fxt.Clear();} private Xog_url_macro_mgr_fxt fxt = new Xog_url_macro_mgr_fxt();
diff --git a/400_xowa/src/gplx/xowa/gui/views/Gfo_usr_dlg__gui__opt.java b/400_xowa/src/gplx/xowa/guis/views/Gfo_usr_dlg__gui__opt.java
similarity index 89%
rename from 400_xowa/src/gplx/xowa/gui/views/Gfo_usr_dlg__gui__opt.java
rename to 400_xowa/src/gplx/xowa/guis/views/Gfo_usr_dlg__gui__opt.java
index e11da4acc..2a0f99e0c 100644
--- a/400_xowa/src/gplx/xowa/gui/views/Gfo_usr_dlg__gui__opt.java
+++ b/400_xowa/src/gplx/xowa/guis/views/Gfo_usr_dlg__gui__opt.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.gui.views; import gplx.*; import gplx.xowa.*; import gplx.xowa.gui.*;
+package gplx.xowa.guis.views; import gplx.*; import gplx.xowa.*; import gplx.xowa.guis.*;
 public interface Gfo_usr_dlg__gui__opt {
 	boolean Warn_enabled();
 	boolean Note_enabled();
diff --git a/400_xowa/src/gplx/xowa/gui/views/Gfo_usr_dlg__gui__swt.java b/400_xowa/src/gplx/xowa/guis/views/Gfo_usr_dlg__gui__swt.java
similarity index 95%
rename from 400_xowa/src/gplx/xowa/gui/views/Gfo_usr_dlg__gui__swt.java
rename to 400_xowa/src/gplx/xowa/guis/views/Gfo_usr_dlg__gui__swt.java
index 6cc343243..12c3eaf26 100644
--- a/400_xowa/src/gplx/xowa/gui/views/Gfo_usr_dlg__gui__swt.java
+++ b/400_xowa/src/gplx/xowa/guis/views/Gfo_usr_dlg__gui__swt.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.gui.views; import gplx.*; import gplx.xowa.*; import gplx.xowa.gui.*;
+package gplx.xowa.guis.views; import gplx.*; import gplx.xowa.*; import gplx.xowa.guis.*;
 import gplx.core.strings.*; import gplx.gfui.*;
 public class Gfo_usr_dlg__gui__swt implements Gfo_usr_dlg__gui, GfoInvkAble {
 	private final GfuiInvkCmd cmd_sync; private final GfuiTextBox prog_box, info_box; private final Gfo_usr_dlg__gui__opt opt;
diff --git a/400_xowa/src/gplx/xowa/gui/views/Gfo_usr_dlg_fmt.java b/400_xowa/src/gplx/xowa/guis/views/Gfo_usr_dlg_fmt.java
similarity index 86%
rename from 400_xowa/src/gplx/xowa/gui/views/Gfo_usr_dlg_fmt.java
rename to 400_xowa/src/gplx/xowa/guis/views/Gfo_usr_dlg_fmt.java
index e19cc5bfe..7adc9176e 100644
--- a/400_xowa/src/gplx/xowa/gui/views/Gfo_usr_dlg_fmt.java
+++ b/400_xowa/src/gplx/xowa/guis/views/Gfo_usr_dlg_fmt.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.gui.views; import gplx.*; import gplx.xowa.*; import gplx.xowa.gui.*;
+package gplx.xowa.guis.views; import gplx.*; import gplx.xowa.*; import gplx.xowa.guis.*;
 public class Gfo_usr_dlg_fmt {
 	public boolean Write_prog_cur(int cur, Gfo_usr_dlg usr_dlg) {
 		if (cur < prog_prv + prog_interval) return usr_dlg.Canceled();
 		prog_prv = cur;
 		String pct = Decimal_adp_.CalcPctStr(cur + List_adp_.Base1, end, "00.00");
-		usr_dlg.Prog_many(grp_key, msg_key, fmt, Int_.Xto_str_pad_bgn_zero(cur + List_adp_.Base1, endLen), end, pct);
+		usr_dlg.Prog_many(grp_key, msg_key, fmt, Int_.To_str_pad_bgn_zero(cur + List_adp_.Base1, endLen), end, pct);
 		return usr_dlg.Canceled();
 	}	String fmt; int end, endLen;
 	public static Gfo_usr_dlg_fmt fmt_(String grp_key, String msg_key, String fmt, int end, float pct) {
diff --git a/400_xowa/src/gplx/xowa/gui/views/Load_page_wkr.java b/400_xowa/src/gplx/xowa/guis/views/Load_page_wkr.java
similarity index 90%
rename from 400_xowa/src/gplx/xowa/gui/views/Load_page_wkr.java
rename to 400_xowa/src/gplx/xowa/guis/views/Load_page_wkr.java
index 0842d7498..e322e6fe3 100644
--- a/400_xowa/src/gplx/xowa/gui/views/Load_page_wkr.java
+++ b/400_xowa/src/gplx/xowa/guis/views/Load_page_wkr.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.gui.views; import gplx.*; import gplx.xowa.*; import gplx.xowa.gui.*;
+package gplx.xowa.guis.views; import gplx.*; import gplx.xowa.*; import gplx.xowa.guis.*;
 import gplx.core.threads.*;
 public class Load_page_wkr implements Gfo_thread_wkr {
 	private static final Object thread_lock = new Object(); private static boolean running = false;
@@ -33,7 +33,7 @@ public class Load_page_wkr implements Gfo_thread_wkr {
 		try {
 			Running_(true);
 			int wait_count = 0;
-			while (gplx.xowa.html.modules.popups.Xow_popup_mgr.Running() && ++wait_count < 100)
+			while (gplx.xowa.htmls.modules.popups.Xow_popup_mgr.Running() && ++wait_count < 100)
 				Thread_adp_.Sleep(10);
 			Xoae_app app = wiki.Appe();
 			app.Usr_dlg().Log_many("", "", "page.load: url=~{0}", url.To_str());
@@ -44,7 +44,7 @@ public class Load_page_wkr implements Gfo_thread_wkr {
 			this.page = wiki.Data_mgr().Load_page_by_ttl(url, ttl, wiki.Lang(), tab, false);
 			this.hdump_enabled = wiki.Html__hdump_enabled();
 			wait_count = 0;
-			while (gplx.xowa.html.modules.popups.Xow_popup_mgr.Running() && ++wait_count < 100)
+			while (gplx.xowa.htmls.modules.popups.Xow_popup_mgr.Running() && ++wait_count < 100)
 				Thread_adp_.Sleep(10);
 			if (hdump_enabled && page.Revision_data().Html_db_id() != -1) {
 				// wiki.Parser_mgr().Parse(page, false);
diff --git a/400_xowa/src/gplx/xowa/gui/views/Rect_ref.java b/400_xowa/src/gplx/xowa/guis/views/Rect_ref.java
similarity index 94%
rename from 400_xowa/src/gplx/xowa/gui/views/Rect_ref.java
rename to 400_xowa/src/gplx/xowa/guis/views/Rect_ref.java
index d765698f1..38e392edc 100644
--- a/400_xowa/src/gplx/xowa/gui/views/Rect_ref.java
+++ b/400_xowa/src/gplx/xowa/guis/views/Rect_ref.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.gui.views; import gplx.*; import gplx.xowa.*; import gplx.xowa.gui.*;
+package gplx.xowa.guis.views; import gplx.*; import gplx.xowa.*; import gplx.xowa.guis.*;
 public class Rect_ref {
 	public Rect_ref(int x, int y, int w, int h) {this.x = x; this.y = y; this.w = w; this.h = h;}
 	public int X() {return x;} public Rect_ref X_(int v) {x = v; return this;} private int x;
diff --git a/400_xowa/src/gplx/xowa/gui/views/Xog_html_itm.java b/400_xowa/src/gplx/xowa/guis/views/Xog_html_itm.java
similarity index 93%
rename from 400_xowa/src/gplx/xowa/gui/views/Xog_html_itm.java
rename to 400_xowa/src/gplx/xowa/guis/views/Xog_html_itm.java
index b943f4ed6..37939fbc6 100644
--- a/400_xowa/src/gplx/xowa/gui/views/Xog_html_itm.java
+++ b/400_xowa/src/gplx/xowa/guis/views/Xog_html_itm.java
@@ -15,10 +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.gui.views; import gplx.*; import gplx.xowa.*; import gplx.xowa.gui.*;
+package gplx.xowa.guis.views; import gplx.*; import gplx.xowa.*; import gplx.xowa.guis.*;
 import gplx.core.primitives.*; import gplx.core.btries.*;
-import gplx.gfui.*; import gplx.xowa.gui.menus.*; import gplx.xowa.gui.menus.dom.*; import gplx.xowa.files.gui.*;
-import gplx.langs.htmls.*; import gplx.xowa.html.hrefs.*; import gplx.xowa.html.js.*; import gplx.xowa.html.heads.*; import gplx.xowa.pages.*;
+import gplx.gfui.*; import gplx.xowa.guis.menus.*; import gplx.xowa.guis.menus.dom.*; import gplx.xowa.files.gui.*;
+import gplx.langs.htmls.*; import gplx.xowa.htmls.hrefs.*; import gplx.xowa.htmls.js.*; import gplx.xowa.htmls.heads.*; import gplx.xowa.wikis.pages.*;
 public class Xog_html_itm implements Xog_js_wkr, GfoInvkAble, GfoEvObj {
 	private Xoae_app app; private final Object thread_lock = new Object();
 	private final String_obj_ref scroll_top = String_obj_ref.null_(), node_path = String_obj_ref.null_();
@@ -62,7 +62,7 @@ public class Xog_html_itm implements Xog_js_wkr, GfoInvkAble, GfoEvObj {
 		byte view_mode = owner_tab.View_mode();			
 		byte[] html_src = page.Wikie().Html_mgr().Page_wtr_mgr().Gen(page, view_mode);	// NOTE: must use wiki of page, not of owner tab; DATE:2015-03-05
 		Html_src_(page, html_src);
-		if (view_mode == Xopg_view_mode.Tid_read){						// used only for Xosrh test; DATE:2014-01-29
+		if (view_mode == Xopg_page_.Tid_read){						// used only for Xosrh test; DATE:2014-01-29
 			html_box.Html_js_eval_proc_as_str(Xog_js_procs.Win__focus_body);	// NOTE: only focus if read so up / down will scroll box; edit / html should focus edit-box; DATE:2014-06-05
 			page.Root().Data_htm_(html_src);
 		}
@@ -112,7 +112,7 @@ public class Xog_html_itm implements Xog_js_wkr, GfoInvkAble, GfoEvObj {
 			GfoInvkAble_.InvkCmd_msg(cmd_sync, Invk_html_elem_atr_set, m);
 		}
 	}
-	public void Html_redlink(String html_uid) {Html_doc_atr_append_or_set(html_uid, "class", gplx.xowa.html.lnkis.Xoh_redlink_utl.New_str);}
+	public void Html_redlink(String html_uid) {Html_doc_atr_append_or_set(html_uid, "class", gplx.xowa.htmls.lnkis.Xoh_redlink_utl.New_str);}
 	private void Html_doc_atr_append_or_set(String elem_id, String atr_key, String atr_val) {
 		GfoMsg m = GfoMsg_.new_cast_(Invk_html_doc_atr_append_or_set).Add("elem_id", elem_id).Add("atr_key", atr_key).Add("atr_val", atr_val);
 		GfoInvkAble_.InvkCmd_msg(cmd_sync, Invk_html_doc_atr_append_or_set, m);
@@ -161,7 +161,7 @@ public class Xog_html_itm implements Xog_js_wkr, GfoInvkAble, GfoEvObj {
 			else
 				html_box.Html_js_eval_proc_as_str(Xog_js_procs.Doc__elem_focus, auto_focus_id);
 		}
-		else if (String_.Eq(html_doc_pos, gplx.xowa.gui.history.Xog_history_itm.Html_doc_pos_toc))	// NOTE: special case to handle TOC clicks; DATE:2013-07-17
+		else if (String_.Eq(html_doc_pos, gplx.xowa.guis.history.Xog_history_itm.Html_doc_pos_toc))	// NOTE: special case to handle TOC clicks; DATE:2013-07-17
 			Scroll_page_by_id("toc");
 		else {
 			Html_window_vpos_parse(html_doc_pos, scroll_top, node_path);
diff --git a/400_xowa/src/gplx/xowa/gui/views/Xog_js_procs.java b/400_xowa/src/gplx/xowa/guis/views/Xog_js_procs.java
similarity index 95%
rename from 400_xowa/src/gplx/xowa/gui/views/Xog_js_procs.java
rename to 400_xowa/src/gplx/xowa/guis/views/Xog_js_procs.java
index 0c3db1111..0d4d6cacc 100644
--- a/400_xowa/src/gplx/xowa/gui/views/Xog_js_procs.java
+++ b/400_xowa/src/gplx/xowa/guis/views/Xog_js_procs.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.gui.views; import gplx.*; import gplx.xowa.*; import gplx.xowa.gui.*;
+package gplx.xowa.guis.views; import gplx.*; import gplx.xowa.*; import gplx.xowa.guis.*;
 public class Xog_js_procs {
 	public static final String
 	  Win__focus_body							= "xowa.js.win.focus_body"
diff --git a/400_xowa/src/gplx/xowa/gui/views/Xog_launcher_tabs.java b/400_xowa/src/gplx/xowa/guis/views/Xog_launcher_tabs.java
similarity index 84%
rename from 400_xowa/src/gplx/xowa/gui/views/Xog_launcher_tabs.java
rename to 400_xowa/src/gplx/xowa/guis/views/Xog_launcher_tabs.java
index c27848b0d..095933480 100644
--- a/400_xowa/src/gplx/xowa/gui/views/Xog_launcher_tabs.java
+++ b/400_xowa/src/gplx/xowa/guis/views/Xog_launcher_tabs.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.gui.views; import gplx.*; import gplx.xowa.*; import gplx.xowa.gui.*;
-import gplx.xowa.urls.*;
+package gplx.xowa.guis.views; import gplx.*; import gplx.xowa.*; import gplx.xowa.guis.*;
+import gplx.xowa.apps.urls.*;
 class Xog_launcher_tabs {
 	public void Launch(Xog_win_itm win) {
 		Xoae_app app = win.App(); Gfo_log_bfr log_bfr = app.Log_bfr();
@@ -66,26 +66,26 @@ class Xog_launcher_tabs {
 		Xog_tab_itm tab = win.Tab_mgr().Tabs_new_init(launch_wiki, Xoae_page.new_(launch_wiki, launch_ttl)); // WORKAROUND: set the tab to an empty page, else null ref later; DATE:2014-07-23
 		tab.Show_url_bgn(launch_url);
 	}
-	public static final Xog_launcher_tabs _ = new Xog_launcher_tabs(); Xog_launcher_tabs() {}
+	public static final Xog_launcher_tabs Instance = new Xog_launcher_tabs(); Xog_launcher_tabs() {}
 }
 class Io_fil_marker {
 	private Io_url url;
-	private Gfo_usr_dlg usr_dlg = Gfo_usr_dlg_.I;
+	private Gfo_usr_dlg usr_dlg = Gfo_usr_dlg_.Instance;
 	public Io_fil_marker Usr_dlg_(Gfo_usr_dlg v) {this.usr_dlg = v; return this;}
 	public Io_fil_marker Url_(Io_url url) {this.url = url; return this;}
 	public boolean Bgn() {
 		boolean rv = false;
 		synchronized (this) {
 			try {
-				rv = !Io_mgr.I.ExistsFil(url);			// exists = fail; !exists = pass;
+				rv = !Io_mgr.Instance.ExistsFil(url);			// exists = fail; !exists = pass;
 				if (rv)									// pass: file does not exist;
-					Io_mgr.I.SaveFilStr(url, "");		// create
+					Io_mgr.Instance.SaveFilStr(url, "");		// create
 				else									// file exists from previous run
-					Io_mgr.I.DeleteFil(url);			// delete
+					Io_mgr.Instance.DeleteFil(url);			// delete
 			}
 			catch (Exception exc) {				// something unexpected happened
 				usr_dlg.Warn_many("", "", "marker.bgn failed: url=~{0} err=~{1}", url.Raw(), Err_.Message_gplx_full(exc));
-				Io_mgr.I.DeleteFil(url);				// try to delete it again
+				Io_mgr.Instance.DeleteFil(url);				// try to delete it again
 			}
 		}
 		return rv;
@@ -93,11 +93,11 @@ class Io_fil_marker {
 	public void End() {
 		synchronized (this) {
 			try {
-				Io_mgr.I.DeleteFil(url);				// delete
+				Io_mgr.Instance.DeleteFil(url);				// delete
 			}
 			catch (Exception exc) {
 				usr_dlg.Warn_many("", "", "marker.end failed: url=~{0} err=~{1}", url.Raw(), Err_.Message_gplx_full(exc));
-				Io_mgr.I.DeleteFil(url);				// try to delete it again
+				Io_mgr.Instance.DeleteFil(url);				// try to delete it again
 			}
 		}
 	}
diff --git a/400_xowa/src/gplx/xowa/gui/views/Xog_layout.java b/400_xowa/src/gplx/xowa/guis/views/Xog_layout.java
similarity index 96%
rename from 400_xowa/src/gplx/xowa/gui/views/Xog_layout.java
rename to 400_xowa/src/gplx/xowa/guis/views/Xog_layout.java
index ade9e71a9..7ccf204dd 100644
--- a/400_xowa/src/gplx/xowa/gui/views/Xog_layout.java
+++ b/400_xowa/src/gplx/xowa/guis/views/Xog_layout.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.gui.views; import gplx.*; import gplx.xowa.*; import gplx.xowa.gui.*;
-import gplx.gfui.*; import gplx.xowa.gui.views.*;
+package gplx.xowa.guis.views; import gplx.*; import gplx.xowa.*; import gplx.xowa.guis.*;
+import gplx.gfui.*; import gplx.xowa.guis.views.*;
 public class Xog_layout implements GfoInvkAble {
 	public Xog_layout() {
 		go_bwd_btn.Owner_(this);
diff --git a/400_xowa/src/gplx/xowa/gui/views/Xog_layout_box.java b/400_xowa/src/gplx/xowa/guis/views/Xog_layout_box.java
similarity index 97%
rename from 400_xowa/src/gplx/xowa/gui/views/Xog_layout_box.java
rename to 400_xowa/src/gplx/xowa/guis/views/Xog_layout_box.java
index 7055ebf2a..7ea56c450 100644
--- a/400_xowa/src/gplx/xowa/gui/views/Xog_layout_box.java
+++ b/400_xowa/src/gplx/xowa/guis/views/Xog_layout_box.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.gui.views; import gplx.*; import gplx.xowa.*; import gplx.xowa.gui.*;
+package gplx.xowa.guis.views; import gplx.*; import gplx.xowa.*; import gplx.xowa.guis.*;
 import gplx.gfui.*;
 public class Xog_layout_box implements GfoInvkAble {
 	public GfoInvkAble Owner() {return owner;} public Xog_layout_box Owner_(GfoInvkAble v) {owner = v; return this;} GfoInvkAble owner;
diff --git a/400_xowa/src/gplx/xowa/gui/views/Xog_tab_close_lnr.java b/400_xowa/src/gplx/xowa/guis/views/Xog_tab_close_lnr.java
similarity index 89%
rename from 400_xowa/src/gplx/xowa/gui/views/Xog_tab_close_lnr.java
rename to 400_xowa/src/gplx/xowa/guis/views/Xog_tab_close_lnr.java
index 1fe8d228d..9d376fd3a 100644
--- a/400_xowa/src/gplx/xowa/gui/views/Xog_tab_close_lnr.java
+++ b/400_xowa/src/gplx/xowa/guis/views/Xog_tab_close_lnr.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.gui.views; import gplx.*; import gplx.xowa.*; import gplx.xowa.gui.*;
+package gplx.xowa.guis.views; import gplx.*; import gplx.xowa.*; import gplx.xowa.guis.*;
 public interface Xog_tab_close_lnr {
 	boolean When_close(Xog_tab_itm tab, Xoa_url url);
 }
diff --git a/400_xowa/src/gplx/xowa/gui/views/Xog_tab_close_mgr.java b/400_xowa/src/gplx/xowa/guis/views/Xog_tab_close_mgr.java
similarity index 92%
rename from 400_xowa/src/gplx/xowa/gui/views/Xog_tab_close_mgr.java
rename to 400_xowa/src/gplx/xowa/guis/views/Xog_tab_close_mgr.java
index 0f83be3d9..c3526ab8d 100644
--- a/400_xowa/src/gplx/xowa/gui/views/Xog_tab_close_mgr.java
+++ b/400_xowa/src/gplx/xowa/guis/views/Xog_tab_close_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.gui.views; import gplx.*; import gplx.xowa.*; import gplx.xowa.gui.*;
+package gplx.xowa.guis.views; import gplx.*; import gplx.xowa.*; import gplx.xowa.guis.*;
 public class Xog_tab_close_mgr {
 	private List_adp list = List_adp_.new_();
 	public void Clear() {list.Clear();}
diff --git a/400_xowa/src/gplx/xowa/gui/views/Xog_tab_itm.java b/400_xowa/src/gplx/xowa/guis/views/Xog_tab_itm.java
similarity index 93%
rename from 400_xowa/src/gplx/xowa/gui/views/Xog_tab_itm.java
rename to 400_xowa/src/gplx/xowa/guis/views/Xog_tab_itm.java
index 627f4edb4..90bbb0e33 100644
--- a/400_xowa/src/gplx/xowa/gui/views/Xog_tab_itm.java
+++ b/400_xowa/src/gplx/xowa/guis/views/Xog_tab_itm.java
@@ -15,12 +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.gui.views; import gplx.*; import gplx.xowa.*; import gplx.xowa.gui.*;
-import gplx.core.threads.*; import gplx.gfui.*; import gplx.xowa.gui.history.*; import gplx.xowa.gui.bnds.*;
+package gplx.xowa.guis.views; import gplx.*; import gplx.xowa.*; import gplx.xowa.guis.*;
+import gplx.core.threads.*; import gplx.gfui.*; import gplx.xowa.guis.history.*; import gplx.xowa.guis.bnds.*;
 import gplx.xowa.files.*; import gplx.xowa.files.fsdb.*;
 import gplx.xowa.langs.vnts.*;
-import gplx.xowa.parsers.*; import gplx.xowa.parsers.lnkis.redlinks.*; import gplx.xowa.cfgs2.*;
-import gplx.xowa.pages.*; import gplx.xowa.pages.skins.*;
+import gplx.xowa.parsers.*; import gplx.xowa.parsers.lnkis.redlinks.*; import gplx.xowa.apps.cfgs.old.*;
+import gplx.xowa.wikis.pages.*; import gplx.xowa.wikis.pages.skins.*;
 public class Xog_tab_itm implements GfoInvkAble {
 	private Xog_win_itm win; private Xocfg_tab_mgr cfg_tab_mgr;
 	public Xog_tab_itm(Xog_tab_mgr tab_mgr, Gfui_tab_itm_data tab_data, Xowe_wiki wiki, Xoae_page page) {
@@ -34,11 +34,11 @@ public class Xog_tab_itm implements GfoInvkAble {
 	public void Make_html_box(int uid, Gfui_tab_itm tab_box, Xog_win_itm win, GfuiElem owner) {
 		this.tab_box = tab_box;
 		Xoae_app app = win.App(); Xoa_gui_mgr gui_mgr = win.Gui_mgr(); Gfui_kit kit = win.Kit();
-		Gfui_html html_box	= kit.New_html("html_box" + Int_.Xto_str(uid), owner);
+		Gfui_html html_box	= kit.New_html("html_box" + Int_.To_str(uid), owner);
 		html_box.Html_js_enabled_(gui_mgr.Html_mgr().Javascript_enabled());
 		html_box.Html_invk_src_(win);
 		html_itm.Html_box_(html_box);
-		if (app.App_type().Uid_is_gui()) {	// NOTE: only run for gui; will cause firefox_addon to fail; DATE:2014-05-03
+		if (app.Mode().Tid_is_gui()) {	// NOTE: only run for gui; will cause firefox_addon to fail; DATE:2014-05-03
 			html_box.Html_doc_html_load_by_mem("");	// NOTE: must set source, else control will be empty, and key events will not be raised; DATE:2014-04-30
 			IptBnd_.ipt_to_(IptCfg_.Null, html_box, this, "popup", IptEventType_.MouseDown, IptMouseBtn_.Right);
 			IptBnd_.cmd_to_(IptCfg_.Null, html_box, win, Xog_win_itm.Invk_exit, IptKey_.add_(IptKey_.Alt, IptKey_.F4));	// WORKAROUND:SWT: xulrunner_v24 no longer sends Alt+F4 to SwtShell; must manually subscribe it to quit; DATE:2015-07-31
@@ -86,8 +86,8 @@ public class Xog_tab_itm implements GfoInvkAble {
 		tab_box.Tab_tip_text_(page.Url().To_str());
 	}
 	public void Tab_name_() {
-		byte[] tab_name = page.Html_data().Custom_name();
-		if (tab_name == null) tab_name = page.Ttl().Full_txt();
+		byte[] tab_name = page.Html_data().Custom_tab_name();		// Custom_tab_name set by Special:Default_tab or variants; DATE:2015-10-05
+		if (tab_name == null) tab_name = page.Ttl().Full_txt();		// no custom_tab_name; use ttl's text
 		Tab_name_(String_.new_u8(tab_name));
 	}
 	public void Tab_name_(String tab_name) {
@@ -97,7 +97,7 @@ public class Xog_tab_itm implements GfoInvkAble {
 		tab_box.Tab_name_(tab_name);
 	}
 	public Xog_history_mgr		History_mgr() {return history_mgr;} private Xog_history_mgr history_mgr = new Xog_history_mgr();
-	public byte					View_mode() {return view_mode;} public Xog_tab_itm View_mode_(byte v) {view_mode = v; return this;} private byte view_mode = Xopg_view_mode.Tid_read;
+	public byte					View_mode() {return view_mode;} public Xog_tab_itm View_mode_(byte v) {view_mode = v; return this;} private byte view_mode = Xopg_page_.Tid_read;
 	public void Pin_toggle() {}
 	public void Show_url_bgn(Xoa_url url) {
 		this.tab_is_loading = true;
@@ -126,7 +126,7 @@ public class Xog_tab_itm implements GfoInvkAble {
 	}
 	private void Cur_vnt_(Xowe_wiki wiki, byte[] vnt) {
 		Xoae_app app = wiki.Appe();
-		gplx.xowa.apis.xowa.wikis.langs.Xoap_lang_variants vnt_mgr = app.Api_root().Wikis().Get(wiki.Domain_bry()).Lang().Variants();
+		gplx.xowa.apps.apis.xowa.wikis.langs.Xoap_lang_variants vnt_mgr = app.Api_root().Wikis().Get(wiki.Domain_bry()).Lang().Variants();
 		if (Bry_.Eq(vnt, vnt_mgr.Current())) return;
 		vnt_mgr.Current_(vnt);
 		app.Cfg_mgr().Set_by_app(String_.Format("xowa.api.wikis.get('{0}').lang.variants.current", wiki.Domain_str()), String_.new_u8(vnt));
@@ -142,7 +142,7 @@ public class Xog_tab_itm implements GfoInvkAble {
 			if (page.Missing()) {
 				if (wiki.Db_mgr().Save_mgr().Create_enabled()) {
 					page = Xoae_page.create_(wiki, ttl);
-					view_mode = Xopg_view_mode.Tid_edit;
+					view_mode = Xopg_page_.Tid_edit;
 					history_mgr.Add(page);	// NOTE: must put new_page on stack so that pressing back will pop new_page, not previous page
 					Xog_tab_itm_read_mgr.Show_page(this, page, false);
 				}
diff --git a/400_xowa/src/gplx/xowa/gui/views/Xog_tab_itm_.java b/400_xowa/src/gplx/xowa/guis/views/Xog_tab_itm_.java
similarity index 92%
rename from 400_xowa/src/gplx/xowa/gui/views/Xog_tab_itm_.java
rename to 400_xowa/src/gplx/xowa/guis/views/Xog_tab_itm_.java
index 7b4187812..238c32124 100644
--- a/400_xowa/src/gplx/xowa/gui/views/Xog_tab_itm_.java
+++ b/400_xowa/src/gplx/xowa/guis/views/Xog_tab_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.gui.views; import gplx.*; import gplx.xowa.*; import gplx.xowa.gui.*;
+package gplx.xowa.guis.views; import gplx.*; import gplx.xowa.*; import gplx.xowa.guis.*;
 public class Xog_tab_itm_ {
 	public static String Tab_name_min(String name, int min) {
 		int name_len = String_.Len(name);
diff --git a/400_xowa/src/gplx/xowa/gui/views/Xog_tab_itm_edit_mgr.java b/400_xowa/src/gplx/xowa/guis/views/Xog_tab_itm_edit_mgr.java
similarity index 87%
rename from 400_xowa/src/gplx/xowa/gui/views/Xog_tab_itm_edit_mgr.java
rename to 400_xowa/src/gplx/xowa/guis/views/Xog_tab_itm_edit_mgr.java
index 16a02d568..24a7338f1 100644
--- a/400_xowa/src/gplx/xowa/gui/views/Xog_tab_itm_edit_mgr.java
+++ b/400_xowa/src/gplx/xowa/guis/views/Xog_tab_itm_edit_mgr.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.gui.views; import gplx.*; import gplx.xowa.*; import gplx.xowa.gui.*;
-import gplx.gfui.*; import gplx.xowa.html.*; import gplx.xowa.pages.*;
-import gplx.xowa.nss.*;
+package gplx.xowa.guis.views; import gplx.*; import gplx.xowa.*; import gplx.xowa.guis.*;
+import gplx.gfui.*; import gplx.xowa.htmls.*; import gplx.xowa.wikis.pages.*;
+import gplx.xowa.wikis.nss.*;
 import gplx.xowa.parsers.*; import gplx.xowa.parsers.tmpls.*;
 public class Xog_tab_itm_edit_mgr {
 	public static void Save(Xog_tab_itm tab, boolean quick_save) {
-		if (tab.View_mode() != Xopg_view_mode.Tid_edit) return;	// exit if not edit; handles ctrl+s being pressed in read/html modes
+		if (tab.View_mode() != Xopg_page_.Tid_edit) return;	// exit if not edit; handles ctrl+s being pressed in read/html modes
 		Xoae_page page = tab.Page(); Xowe_wiki wiki = tab.Wiki(); Xog_win_itm win_itm = tab.Tab_mgr().Win();
 		byte[] new_text = Get_new_text(tab);
 		if (page.Edit_mode() == Xoa_page_.Edit_mode_create) {
@@ -41,13 +41,13 @@ public class Xog_tab_itm_edit_mgr {
 			Xoae_page stack_page = tab.History_mgr().Cur_page(wiki);		// NOTE: must be to CurPage() else changes will be lost when going Bwd,Fwd
 			stack_page.Data_raw_(page.Data_raw());							// NOTE: overwrite with "saved" changes
 			stack_page.Wikie().Parser_mgr().Parse(page, true);		// NOTE: must reparse page if (a) Edit -> Read; or (b) "Options" save
-			win_itm.Page__mode_(Xopg_view_mode.Tid_read);
+			win_itm.Page__mode_(Xopg_page_.Tid_read);
 			win_itm.Page__async__bgn(tab);
 		}
 //			wiki.Db_mgr().Hdump_mgr().Save(page);
 	}
 	public static void Preview(Xog_tab_itm tab) {
-		if (tab.View_mode() != Xopg_view_mode.Tid_edit) return;	// exit if not edit; handles preview somehow being called?
+		if (tab.View_mode() != Xopg_page_.Tid_edit) return;	// exit if not edit; handles preview somehow being called?
 		Xoae_page page = tab.Page(); Xowe_wiki wiki = tab.Wiki(); Xog_win_itm win_itm = tab.Tab_mgr().Win();
 		Xog_html_itm html_itm = tab.Html_itm();
 
@@ -59,19 +59,18 @@ public class Xog_tab_itm_edit_mgr {
 		tab.Page_(new_page); new_page.Tab_data().Tab_(tab);			// replace old page with new_page; DATE:2014-10-09
 
 		Bry_bfr tmp_bfr = wiki.Utl__bfr_mkr().Get_m001();
-		Xoh_page_wtr_wkr wkr = wiki.Html_mgr().Page_wtr_mgr().Wkr(Xopg_view_mode.Tid_read);
-		wkr.Page_(new_page);
-		wkr.XferAry(tmp_bfr, 0);
+		Xoh_page_wtr_wkr wkr = wiki.Html_mgr().Page_wtr_mgr().Wkr(Xopg_page_.Tid_read);
+		wkr.Write_body(tmp_bfr, Xoh_wtr_ctx.Basic, new_page);
 		byte[] new_html = tmp_bfr.To_bry_and_rls();
 		new_page.Html_data().Edit_preview_(new_html);
 
 		Invalidate(wiki);
-		win_itm.Page__mode_(Xopg_view_mode.Tid_edit);
+		win_itm.Page__mode_(Xopg_page_.Tid_edit);
 		html_itm.Scroll_page_by_id_gui(Xog_html_itm.Elem_id__first_heading);// NOTE: was originally directly; changed to call on thread; DATE:2014-05-03
 		win_itm.Page__async__bgn(tab);	// NOTE: needed to show images during preview; DATE:2014-06-21
 	}
 	public static void Rename(Xog_tab_itm tab) {
-		if (tab.View_mode() != Xopg_view_mode.Tid_edit) return;	// exit if not edit; handles ctrl+r being pressed
+		if (tab.View_mode() != Xopg_page_.Tid_edit) return;	// exit if not edit; handles ctrl+r being pressed
 		Xoae_page page = tab.Page(); Xowe_wiki wiki = tab.Wiki(); Xog_win_itm win_itm = tab.Tab_mgr().Win();
 		if (Bry_.Eq(page.Ttl().Page_db(), wiki.Props().Main_page())) {
 			win_itm.Usr_dlg().Warn_many("", "", "The Main Page cannot be renamed");
@@ -89,7 +88,7 @@ public class Xog_tab_itm_edit_mgr {
 		}
 		wiki.Db_mgr().Save_mgr().Data_rename(page, new_ns_id, new_text);
 		page.Ttl_(Xoa_ttl.parse(wiki, Bry_.Add(page.Ttl().Ns().Name_db_w_colon(), new_text)));
-		win_itm.Page__mode_(Xopg_view_mode.Tid_read);
+		win_itm.Page__mode_(Xopg_page_.Tid_read);
 		win_itm.Usr_dlg().Prog_one("", "", "renamed page to {0}", String_.new_u8(page.Ttl().Full_txt_raw()));
 	}
 	public static void Focus(Xog_win_itm win, String elem_focus_id) {
@@ -101,7 +100,7 @@ public class Xog_tab_itm_edit_mgr {
 		Xog_tab_itm tab = win.Tab_mgr().Active_tab(); Xoae_page page = tab.Page();
 		Xowe_wiki wiki = tab.Wiki(); Xop_ctx ctx = wiki.Parser_mgr().Ctx();
 		ctx.Defn_trace().Clear(); // TODO: move_me
-		ctx.Defn_trace_(Xot_defn_trace_dbg._);
+		ctx.Defn_trace_(Xot_defn_trace_dbg.Instance);
 		Xoa_ttl ttl = page.Ttl();
 		Xoae_page new_page = Xoae_page.new_(wiki, ttl);
 		byte[] data = tab.Html_itm().Get_elem_value_for_edit_box_as_bry();
diff --git a/400_xowa/src/gplx/xowa/gui/views/Xog_tab_itm_read_mgr.java b/400_xowa/src/gplx/xowa/guis/views/Xog_tab_itm_read_mgr.java
similarity index 84%
rename from 400_xowa/src/gplx/xowa/gui/views/Xog_tab_itm_read_mgr.java
rename to 400_xowa/src/gplx/xowa/guis/views/Xog_tab_itm_read_mgr.java
index 3b5b72b49..31fd124f7 100644
--- a/400_xowa/src/gplx/xowa/gui/views/Xog_tab_itm_read_mgr.java
+++ b/400_xowa/src/gplx/xowa/guis/views/Xog_tab_itm_read_mgr.java
@@ -15,16 +15,16 @@ 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.gui.views; import gplx.*; import gplx.xowa.*; import gplx.xowa.gui.*;
-import gplx.gfui.*; import gplx.core.threads.*;
-import gplx.xowa.parsers.lnkis.redlinks.*; import gplx.xowa.gui.history.*; import gplx.xowa.pages.*;
-import gplx.xowa.langs.*;
+package gplx.xowa.guis.views; import gplx.*; import gplx.xowa.*; import gplx.xowa.guis.*;
+import gplx.core.threads.*;
+import gplx.gfui.*; import gplx.xowa.guis.langs.*; import gplx.xowa.guis.history.*;
+import gplx.xowa.parsers.lnkis.redlinks.*; import gplx.xowa.wikis.pages.*;
 public class Xog_tab_itm_read_mgr {
 	public static void Async(Xog_tab_itm tab) {tab.Async();}
 	public static void Show_page(Xog_tab_itm tab, Xoae_page new_page, boolean reset_to_read) {Show_page(tab, new_page, reset_to_read, false, false, Xog_history_stack.Nav_fwd);}
 	public static void Show_page(Xog_tab_itm tab, Xoae_page new_page, boolean reset_to_read, boolean new_page_is_same, boolean show_is_err, byte history_nav_type) {
-		if (reset_to_read) tab.View_mode_(Xopg_view_mode.Tid_read);
-		if (new_page.Url().Qargs_mgr().Match(Xoa_url_.Qarg__action, Xoa_url_.Qarg__action__edit)) tab.View_mode_(Xopg_view_mode.Tid_edit);
+		if (reset_to_read) tab.View_mode_(Xopg_page_.Tid_read);
+		if (new_page.Url().Qargs_mgr().Match(Xoa_url_.Qarg__action, Xoa_url_.Qarg__action__edit)) tab.View_mode_(Xopg_page_.Tid_edit);
 		Xoae_page cur_page = tab.Page(); Xog_html_itm html_itm = tab.Html_itm(); Gfui_html html_box = html_itm.Html_box();
 		Xog_win_itm win = tab.Tab_mgr().Win();
 		if (cur_page != null && !new_page_is_same) {	// if new_page_is_same, don't update DocPos; will "lose" current position
@@ -37,7 +37,7 @@ public class Xog_tab_itm_read_mgr {
 		catch (Exception e) {
 			if (String_.Eq(Err_.Message_lang(e), "class org.eclipse.swt.SWTException Widget is disposed")) return; // ignore errors caused by user closing tab early; DATE:2014-07-26
 			if (show_is_err) {	// trying to show error page, but failed; don't show again, else recursion until out of memory; TODO:always load error page; no reason it should fail; WHEN:html_skin; DATE:2014-06-08
-				Gfo_usr_dlg_.I.Warn_many("", "", "fatal error trying to load error page; page=~{0} err=~{1}" + new_page.Url().To_str(), Err_.Message_gplx_full(e));
+				Gfo_usr_dlg_.Instance.Warn_many("", "", "fatal error trying to load error page; page=~{0} err=~{1}" + new_page.Url().To_str(), Err_.Message_gplx_full(e));
 				return;
 			}
 			else
@@ -53,7 +53,7 @@ public class Xog_tab_itm_read_mgr {
 		tab.Tab_mgr().Tab_mgr().Focus();
 		html_box.Focus();
 		win.Usr_dlg().Prog_none("", "", "");	// blank out status bar
-		if (tab.View_mode() == Xopg_view_mode.Tid_read)
+		if (tab.View_mode() == Xopg_page_.Tid_read)
 			html_itm.Scroll_page_by_bmk_gui();
 		else
 			GfoInvkAble_.InvkCmd_val(tab.Html_itm().Cmd_async(), Xog_html_itm.Invk_html_elem_focus, Xog_html_itm.Elem_id__xowa_edit_data_box);	// NOTE: must be async, else won't work; DATE:2014-06-05
@@ -74,12 +74,12 @@ public class Xog_tab_itm_read_mgr {
 		win.Usr_dlg().Warn_many("", "", err_msg);
 		win.App().Log_wtr().Queue_enabled_(false);
 		Xoae_page fail_page = wiki.Data_mgr().Get_page(ttl, false);
-		tab.View_mode_(Xopg_view_mode.Tid_edit);
+		tab.View_mode_(Xopg_page_.Tid_edit);
 		Update_selected_tab(win, url, ttl);
 		Show_page(tab, fail_page, false, false, true, Xog_history_stack.Nav_fwd);
 		win.Win_box().Text_(err_msg);
 	}
 	public static void Launch(Xog_win_itm win) {
-		Xog_launcher_tabs._.Launch(win);
+		Xog_launcher_tabs.Instance.Launch(win);
 	}
 }
diff --git a/400_xowa/src/gplx/xowa/gui/views/Xog_tab_mgr.java b/400_xowa/src/gplx/xowa/guis/views/Xog_tab_mgr.java
similarity index 94%
rename from 400_xowa/src/gplx/xowa/gui/views/Xog_tab_mgr.java
rename to 400_xowa/src/gplx/xowa/guis/views/Xog_tab_mgr.java
index 6a4459664..8313df86a 100644
--- a/400_xowa/src/gplx/xowa/gui/views/Xog_tab_mgr.java
+++ b/400_xowa/src/gplx/xowa/guis/views/Xog_tab_mgr.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.gui.views; import gplx.*; import gplx.xowa.*; import gplx.xowa.gui.*;
-import gplx.gfui.*; import gplx.xowa.cfgs2.*; import gplx.xowa.apis.xowa.gui.browsers.*; import gplx.xowa.specials.*;
-import gplx.xowa.urls.*;
+package gplx.xowa.guis.views; import gplx.*; import gplx.xowa.*; import gplx.xowa.guis.*;
+import gplx.gfui.*; import gplx.xowa.apps.cfgs.old.*; import gplx.xowa.apps.apis.xowa.gui.browsers.*; import gplx.xowa.specials.*;
+import gplx.xowa.apps.urls.*;
 public class Xog_tab_mgr implements GfoEvObj {
-	private Ordered_hash tab_regy = Ordered_hash_.new_(); private int tab_uid = 0;
+	private Ordered_hash tab_regy = Ordered_hash_.New(); private int tab_uid = 0;
 	public Xog_tab_mgr(Xog_win_itm win) {
 		this.win = win;
 		ev_mgr = GfoEvMgr.new_(this);
@@ -85,7 +85,7 @@ public class Xog_tab_mgr implements GfoEvObj {
 		return rv;
 	}
 	private Xog_tab_itm Tabs_new(boolean focus, boolean active_tab_is_null, Xowe_wiki wiki, Xoae_page page) {
-		String tab_key = "tab_" + Int_.Xto_str(tab_uid++); int tab_idx = tab_regy.Count();
+		String tab_key = "tab_" + Int_.To_str(tab_uid++); int tab_idx = tab_regy.Count();
 		Gfui_tab_itm_data tab_data = new Gfui_tab_itm_data(tab_key, tab_idx);
 		Xog_tab_itm rv = new Xog_tab_itm(this, tab_data, wiki, page);
 		Gfui_tab_itm tab_box = tab_mgr.Tabs_add(tab_data);
@@ -225,7 +225,7 @@ public class Xog_tab_mgr implements GfoEvObj {
 			tab_mgr.Tabs_select_by_idx(new_tab.Tab_idx());
 	}
 	private void Tabs_hide_if_one_chk() {
-		gplx.xowa.cfgs2.Xocfg_tab_btn_mgr btn_mgr = win.App().Cfg_regy().App().Gui_mgr().Tab_mgr().Btn_mgr();
+		gplx.xowa.apps.cfgs.old.Xocfg_tab_btn_mgr btn_mgr = win.App().Cfg_regy().App().Gui_mgr().Tab_mgr().Btn_mgr();
 		if (!btn_mgr.Hide_if_one()) return;
 		if (tab_regy.Count() > 1) {
 			if (tab_mgr.Btns_height() != btn_mgr.Height())
diff --git a/400_xowa/src/gplx/xowa/gui/views/Xog_win_itm.java b/400_xowa/src/gplx/xowa/guis/views/Xog_win_itm.java
similarity index 92%
rename from 400_xowa/src/gplx/xowa/gui/views/Xog_win_itm.java
rename to 400_xowa/src/gplx/xowa/guis/views/Xog_win_itm.java
index fba40be81..6fe8ad11f 100644
--- a/400_xowa/src/gplx/xowa/gui/views/Xog_win_itm.java
+++ b/400_xowa/src/gplx/xowa/guis/views/Xog_win_itm.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.gui.views; import gplx.*; import gplx.xowa.*; import gplx.xowa.gui.*;
-import gplx.core.threads.*; import gplx.gfui.*; import gplx.xowa.gui.*; import gplx.xowa.gui.history.*; import gplx.xowa.xtns.math.*; import gplx.xowa.files.*;
-import gplx.xowa.langs.*;
-import gplx.xowa.gui.urls.*; import gplx.xowa.gui.views.*; import gplx.xowa.pages.*;
-import gplx.xowa.html.hrefs.*;
-import gplx.xowa.parsers.lnkis.redlinks.*; import gplx.xowa.specials.*;
-import gplx.xowa.urls.*;
+package gplx.xowa.guis.views; import gplx.*; import gplx.xowa.*; import gplx.xowa.guis.*;
+import gplx.core.threads.*;
+import gplx.gfui.*; import gplx.xowa.guis.*; import gplx.xowa.guis.history.*; import gplx.xowa.guis.langs.*; import gplx.xowa.guis.urls.*; import gplx.xowa.guis.views.*; 
+import gplx.xowa.langs.*; import gplx.xowa.langs.msgs.*;
+import gplx.xowa.wikis.pages.*; import gplx.xowa.apps.urls.*; import gplx.xowa.files.*;
+import gplx.xowa.htmls.hrefs.*;
+import gplx.xowa.parsers.lnkis.redlinks.*; import gplx.xowa.specials.*; import gplx.xowa.xtns.math.*; 	
 public class Xog_win_itm implements GfoInvkAble, GfoEvObj {
 	private GfoInvkAble sync_cmd;
 	public Xog_win_itm(Xoae_app app, Xoa_gui_mgr gui_mgr) {
@@ -66,17 +66,17 @@ public class Xog_win_itm implements GfoInvkAble, GfoEvObj {
 		else if (ctx.Match(k, Gfui_html.Evt_win_resized))					Refresh_win_size();
 		else if (ctx.Match(k, Invk_page_refresh))							Page__refresh();
 		else if	(ctx.Match(k, Invk_page_async_exec))						Xog_tab_itm_read_mgr.Async((Xog_tab_itm)m.ReadObj("v"));
-		else if	(ctx.Match(k, Invk_page_view_read))							Page__mode_(Xopg_view_mode.Tid_read);
-		else if	(ctx.Match(k, Invk_page_view_edit))							Page__mode_(Xopg_view_mode.Tid_edit);
-		else if	(ctx.Match(k, Invk_page_view_html))							Page__mode_(Xopg_view_mode.Tid_html);
+		else if	(ctx.Match(k, Invk_page_view_read))							Page__mode_(Xopg_page_.Tid_read);
+		else if	(ctx.Match(k, Invk_page_view_edit))							Page__mode_(Xopg_page_.Tid_edit);
+		else if	(ctx.Match(k, Invk_page_view_html))							Page__mode_(Xopg_page_.Tid_html);
 		else if (ctx.Match(k, Invk_page_edit_save))							Xog_tab_itm_edit_mgr.Save(tab_mgr.Active_tab(), Bool_.N);
 		else if (ctx.Match(k, Invk_page_edit_save_draft))					Xog_tab_itm_edit_mgr.Save(tab_mgr.Active_tab(), Bool_.Y);
 		else if (ctx.Match(k, Invk_page_edit_preview))						Xog_tab_itm_edit_mgr.Preview(tab_mgr.Active_tab());
 		else if (ctx.Match(k, Invk_page_edit_rename))						Xog_tab_itm_edit_mgr.Rename(tab_mgr.Active_tab());
 		else if	(ctx.Match(k, Invk_page_edit_focus_box)) 					Xog_tab_itm_edit_mgr.Focus(this, Xog_html_itm.Elem_id__xowa_edit_data_box);
 		else if	(ctx.Match(k, Invk_page_edit_focus_first)) 					Xog_tab_itm_edit_mgr.Focus(this, Xog_html_itm.Elem_id__first_heading);
-		else if	(ctx.Match(k, Invk_page_dbg_html))							Xog_tab_itm_edit_mgr.Debug(this, Xopg_view_mode.Tid_html);
-		else if	(ctx.Match(k, Invk_page_dbg_wiki))							Xog_tab_itm_edit_mgr.Debug(this, Xopg_view_mode.Tid_edit);
+		else if	(ctx.Match(k, Invk_page_dbg_html))							Xog_tab_itm_edit_mgr.Debug(this, Xopg_page_.Tid_html);
+		else if	(ctx.Match(k, Invk_page_dbg_wiki))							Xog_tab_itm_edit_mgr.Debug(this, Xopg_page_.Tid_edit);
 		else if	(ctx.Match(k, Invk_page_goto))								Page__navigate_by_url_bar(m.ReadStr("v"));
 		else if	(ctx.Match(k, Invk_page_goto_recent))						Page__navigate_by_url_bar(app.Usere().History_mgr().Get_at_last());
 		else if	(ctx.Match(k, Invk_history_bwd))							{Page__navigate_by_history(Bool_.N);}
@@ -152,7 +152,7 @@ public class Xog_win_itm implements GfoInvkAble, GfoEvObj {
 	}
 	public void Page__mode_(byte new_mode_tid) {
 		Xog_tab_itm tab = tab_mgr.Active_tab(); Xoae_page page = tab.Page(); Xowe_wiki wiki = tab.Wiki();
-		if (	new_mode_tid == Xopg_view_mode.Tid_read	// used to be && cur_view_tid == Edit; removed clause else redlinks wouldn't show when going form html to read (or clicking read multiple times) DATE: 2013-11-26;
+		if (	new_mode_tid == Xopg_page_.Tid_read	// used to be && cur_view_tid == Edit; removed clause else redlinks wouldn't show when going form html to read (or clicking read multiple times) DATE: 2013-11-26;
 			&& !page.Missing()							// if new page, don't try to reload
 			) {
 			// NOTE: if moving from "Edit" to "Read", reload page (else Preview changes will still show); NOTE: do not call Exec_page_reload / Exec_page_refresh, which will fire redlinks code
@@ -185,7 +185,7 @@ public class Xog_win_itm implements GfoInvkAble, GfoEvObj {
 		Xoae_page cur_page = tab.Page(); Xowe_wiki cur_wiki = tab.Wiki();
 		Xoae_page new_page = tab.History_mgr().Go_by_dir(cur_wiki, fwd);
 		if (new_page.Missing()) return;
-		if (Xows_special_meta_.Itm__search.Match_ttl(new_page.Ttl()))		// if Special:Search, reload page; needed for async loading; DATE:2015-04-19
+		if (new_page.Ttl().Ns().Id_special())		// if Special, reload page; needed for Special:Search (DATE:2015-04-19; async loading) and Special:XowaBookmarks DATE:2015-10-05
 			new_page = new_page.Wikie().Data_mgr().Load_page_by_ttl(new_page.Url(), new_page.Ttl());	// NOTE: must reparse page if (a) Edit -> Read; or (b) "Options" save
 		byte history_nav_type = fwd ? Xog_history_stack.Nav_fwd : Xog_history_stack.Nav_bwd;
 		boolean new_page_is_same = Bry_.Eq(cur_page.Ttl().Full_txt(), new_page.Ttl().Full_txt());
@@ -233,7 +233,7 @@ public class Xog_win_itm implements GfoInvkAble, GfoEvObj {
 	private void Page__async__restart() {
 		tab_mgr.Active_tab().Show_url_bgn(page__async__restart_url);
 	}	private Xoa_url page__async__restart_url;
-	public void Lang_changed(Xol_lang lang) {
+	public void Lang_changed(Xol_lang_itm lang) {
 		Xoae_app app = gui_mgr.App();
 		Xog_win_itm_.Update_tiptext(app, go_bwd_btn			, Xol_msg_itm_.Id_xowa_window_go_bwd_btn_tooltip);
 		Xog_win_itm_.Update_tiptext(app, go_fwd_btn			, Xol_msg_itm_.Id_xowa_window_go_fwd_btn_tooltip);
@@ -257,7 +257,7 @@ public class Xog_win_itm implements GfoInvkAble, GfoEvObj {
 			Xoa_ttl ttl = Xoa_ttl.parse(wiki, url.Page_bry());
 			Xoae_page new_page = wiki.Data_mgr().Load_page_by_ttl(url, ttl);
 			if (new_page.Missing()) {return Bry_.Empty;}
-			gplx.xowa.servers.Gxw_html_server.Assert_tab(app, new_page);		// HACK: assert at least 1 tab for Firefox addon; DATE:2015-01-23
+			gplx.xowa.apps.servers.Gxw_html_server.Assert_tab(app, new_page);		// HACK: assert at least 1 tab for Firefox addon; DATE:2015-01-23
 			Xog_tab_itm tab = tab_mgr.Active_tab();
 			tab.Page_(new_page);
 			tab.History_mgr().Add(new_page);			
@@ -295,7 +295,7 @@ public class Xog_win_itm implements GfoInvkAble, GfoEvObj {
 		GfoEvMgr_.Sub(app.Gui_mgr().Win_cfg().Font(), Xol_font_info.Font_changed, this, Invk_window_font_changed);			
 
 		if (	!Env_.Mode_testing()
-			&&	app.App_type().Uid_is_gui())	// only run for gui; do not run for tcp/http server; DATE:2014-05-03
+			&&	app.Mode().Tid_is_gui())	// only run for gui; do not run for tcp/http server; DATE:2014-05-03
 			app.Usr_dlg().Gui_wkr_(new Gfo_usr_dlg__gui__swt(kit, prog_box, info_box, info_box, app.Api_root().Gui().Browser().Info()));
 	}
 }
diff --git a/400_xowa/src/gplx/xowa/gui/views/Xog_win_itm_.java b/400_xowa/src/gplx/xowa/guis/views/Xog_win_itm_.java
similarity index 90%
rename from 400_xowa/src/gplx/xowa/gui/views/Xog_win_itm_.java
rename to 400_xowa/src/gplx/xowa/guis/views/Xog_win_itm_.java
index aa79fb220..f8beef786 100644
--- a/400_xowa/src/gplx/xowa/gui/views/Xog_win_itm_.java
+++ b/400_xowa/src/gplx/xowa/guis/views/Xog_win_itm_.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.gui.views; import gplx.*; import gplx.xowa.*; import gplx.xowa.gui.*;
-import gplx.gfui.*; import gplx.xowa.gui.bnds.*; import gplx.xowa.gui.cmds.*;
-import gplx.xowa.langs.*;
+package gplx.xowa.guis.views; import gplx.*; import gplx.xowa.*; import gplx.xowa.guis.*;
+import gplx.gfui.*; import gplx.xowa.guis.bnds.*; import gplx.xowa.guis.cmds.*;
+import gplx.xowa.guis.langs.*;
 public class Xog_win_itm_ {
 	public static void Show_win(Xog_win_itm win) {
 		Xoae_app app = win.App(); GfuiWin win_box = win.Win_box();			
diff --git a/400_xowa/src/gplx/xowa/gui/views/Xog_win_itm__prog_href_mgr.java b/400_xowa/src/gplx/xowa/guis/views/Xog_win_itm__prog_href_mgr.java
similarity index 91%
rename from 400_xowa/src/gplx/xowa/gui/views/Xog_win_itm__prog_href_mgr.java
rename to 400_xowa/src/gplx/xowa/guis/views/Xog_win_itm__prog_href_mgr.java
index 948c0370a..b8ea4f0fa 100644
--- a/400_xowa/src/gplx/xowa/gui/views/Xog_win_itm__prog_href_mgr.java
+++ b/400_xowa/src/gplx/xowa/guis/views/Xog_win_itm__prog_href_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.gui.views; import gplx.*; import gplx.xowa.*; import gplx.xowa.gui.*;
-import gplx.gfui.*; import gplx.xowa.html.hrefs.*;
+package gplx.xowa.guis.views; import gplx.*; import gplx.xowa.*; import gplx.xowa.guis.*;
+import gplx.gfui.*; import gplx.xowa.htmls.hrefs.*;
 public class Xog_win_itm__prog_href_mgr {
 	public static void Print(Xog_win_itm win) {	// PURPOSE: print href in prog box when in content editable mode
 		String href = win.Active_html_box().Html_js_eval_proc_as_str(Xog_js_procs.Selection__get_active_for_editable_mode, Gfui_html.Atr_href, "");// get selected href from html_box
diff --git a/400_xowa/src/gplx/xowa/guis/views/boots/Xog_error_data.java b/400_xowa/src/gplx/xowa/guis/views/boots/Xog_error_data.java
new file mode 100644
index 000000000..141a06f9b
--- /dev/null
+++ b/400_xowa/src/gplx/xowa/guis/views/boots/Xog_error_data.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.guis.views.boots; import gplx.*; import gplx.xowa.*; import gplx.xowa.guis.*; import gplx.xowa.guis.views.*;
+public class Xog_error_data {
+	public Xog_error_data(String full_msg, String err_details, String err_msg) {
+		this.full_msg = full_msg;
+		this.err_details = err_details;
+		this.err_msg = err_msg;
+	}
+	public String Full_msg() {return full_msg;} private final String full_msg;
+	public String Err_details() {return err_details;} private final String err_details;
+	public String Err_msg() {return err_msg;} private final String err_msg;
+	public static Xog_error_data new_(String err_msg, String err_trace) {
+		String err_details = String_.Concat_lines_nl_skip_last
+		( "OS: "		+ Op_sys.Cur().Os_name()
+		, "Java: "		+ Env_.Env_prop__java_version() + " (" + Op_sys.Cur().Bitness_str() + " bit)"
+		, "Java path: " + Env_.Env_prop("java.home")
+		, "XOWA: "		+ Xoa_app_.Version
+		, "XOWA path: " + Env_.AppUrl().Raw()
+		, ""
+		, "Error: "		+ err_msg
+		, "Stack: "		+ err_trace
+		);
+		String advice = Make_advice(err_msg);
+		String full_msg = String_.Concat_lines_nl_skip_last
+		( "Sorry! XOWA failed to run!"
+		, ""
+		, advice
+		, ""
+		, "You can also open an issue or send an email with the data below."
+		, ""
+		, "Thanks!"
+		, ""
+		, "----"
+		, err_details
+		);
+		return new Xog_error_data(full_msg, err_details, err_msg);
+	}
+	private static String Make_advice(String err_msg) {
+		String check_troubleshooting_section = "check the TROUBLESHOOTING section in the readme.txt for known issues.";
+		if (String_.Has(err_msg, "Cannot load 64-bit SWT libraries on 32-bit JVM"))
+			return String_.Concat_lines_nl_skip_last
+			( "Your Java installation looks like it's 32-bit. Please use the 32-bit package of XOWA."
+			, ""
+			, "For example, if you downloaded xowa_app_windows_64_v2.10.1.1.zip (64-bit), download xowa_app_windows_v2.10.1.1.zip (32-bit)"
+			, ""
+			, "You may also want to " + check_troubleshooting_section
+			);
+		else
+			return "Please " + check_troubleshooting_section;
+	}
+}
diff --git a/400_xowa/src/gplx/xowa/gui/views/boots/Xog_error_win.java b/400_xowa/src/gplx/xowa/guis/views/boots/Xog_error_win.java
similarity index 87%
rename from 400_xowa/src/gplx/xowa/gui/views/boots/Xog_error_win.java
rename to 400_xowa/src/gplx/xowa/guis/views/boots/Xog_error_win.java
index 6266af19d..1b5a771c4 100644
--- a/400_xowa/src/gplx/xowa/gui/views/boots/Xog_error_win.java
+++ b/400_xowa/src/gplx/xowa/guis/views/boots/Xog_error_win.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.gui.views.boots; import gplx.*; import gplx.xowa.*; import gplx.xowa.gui.*; import gplx.xowa.gui.views.*;
+package gplx.xowa.guis.views.boots; import gplx.*; import gplx.xowa.*; import gplx.xowa.guis.*; import gplx.xowa.guis.views.*;
 import gplx.langs.htmls.encoders.*;
 import java.awt.*;
 import java.awt.event.*;
@@ -82,20 +82,26 @@ public class Xog_error_win extends JFrame implements GfoInvkAble {
 				String body = url_encoder.Encode_str(error_data.Err_details());
 				Desktop.getDesktop().mail(new URI("mailto:gnosygnu+xowa_error_boot@gmail.com?subject=" + subject + "&body=" + body));
 			} catch (URISyntaxException | IOException ex) {
-				//It looks like there's a problem
 			}			
 		}
 		else if	(ctx.Match(k, Invk_open_site)) {
 			try {
 				Desktop.getDesktop().browse(new URI("https://github.com/gnosygnu/xowa/issues"));
 			} catch (URISyntaxException | IOException ex) {
-				//It looks like there's a problem
 			}			
 		}
 		else	return GfoInvkAble_.Rv_unhandled;
 		return this;
 	}	private static final String Invk_send_mail = "send_mail", Invk_open_site = "open_site";
+		public static void Run(String err_msg, String err_trace) {
+		Xog_error_data error_data = Xog_error_data.new_(err_msg, err_trace);
+		Gfo_usr_dlg_.Instance.Log_many("", "", error_data.Err_details());
+		if (Op_sys.Cur().Tid_is_osx())
+			gplx.core.consoles.Console_adp__sys.Instance.Write_str(error_data.Err_msg());
+		else
+			new Xog_error_win(error_data);
 	}
+}
 class Swing_mouse_adapter extends MouseAdapter {
 	private final GfoInvkAbleCmd cmd;
 	public Swing_mouse_adapter(GfoInvkAbleCmd cmd) {this.cmd = cmd;}
diff --git a/400_xowa/src/gplx/xowa/gui/views/boots/Xog_splash_win.java b/400_xowa/src/gplx/xowa/guis/views/boots/Xog_splash_win.java
similarity index 91%
rename from 400_xowa/src/gplx/xowa/gui/views/boots/Xog_splash_win.java
rename to 400_xowa/src/gplx/xowa/guis/views/boots/Xog_splash_win.java
index 0786f0347..4d6f56919 100644
--- a/400_xowa/src/gplx/xowa/gui/views/boots/Xog_splash_win.java
+++ b/400_xowa/src/gplx/xowa/guis/views/boots/Xog_splash_win.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.gui.views.boots; import gplx.*; import gplx.xowa.*; import gplx.xowa.gui.*; import gplx.xowa.gui.views.*;
+package gplx.xowa.guis.views.boots; import gplx.*; import gplx.xowa.*; import gplx.xowa.guis.*; import gplx.xowa.guis.views.*;
 import java.awt.*;
 import java.awt.event.*;
 public class Xog_splash_win implements RlsAble {
diff --git a/400_xowa/src/gplx/xowa/html/Xoh_page_wtr_wkr.java b/400_xowa/src/gplx/xowa/html/Xoh_page_wtr_wkr.java
deleted file mode 100644
index e3073a304..000000000
--- a/400_xowa/src/gplx/xowa/html/Xoh_page_wtr_wkr.java
+++ /dev/null
@@ -1,179 +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.html; import gplx.*; import gplx.xowa.*;
-import gplx.langs.htmls.*;
-import gplx.xowa.apps.gfss.*;
-import gplx.xowa.langs.*;
-import gplx.xowa.nss.*;
-import gplx.xowa.html.portal.*; import gplx.xowa.pages.skins.*; import gplx.xowa.pages.*;
-import gplx.xowa.wikis.*; import gplx.xowa.wikis.domains.*; import gplx.xowa.gui.*; import gplx.xowa.xtns.wdatas.*; import gplx.xowa.langs.vnts.*;
-import gplx.xowa.parsers.*; 
-public class Xoh_page_wtr_wkr implements Bry_fmtr_arg {
-	private Xop_ctx ctx; private Xoae_page page; private Bry_bfr tmp_bfr = Bry_bfr.reset_(255); 
-	private byte[] root_dir_bry;
-	public Xoh_page_wtr_wkr(byte page_mode) {this.page_mode = page_mode;} private byte page_mode;
-	public Wdata_xwiki_link_wtr Wdata_lang_wtr() {return wtr_page_lang;} private Wdata_xwiki_link_wtr wtr_page_lang = new Wdata_xwiki_link_wtr();
-	public Xoh_page_wtr_wkr Page_(Xoae_page v) {this.page = v; return this;} 
-	public Xoh_page_wtr_wkr Mgr_(Xohe_page_wtr_mgr v) {this.mgr = v; return this;} private Xohe_page_wtr_mgr mgr;
-	public boolean Ctgs_enabled() {return ctgs_enabled;} public Xoh_page_wtr_wkr Ctgs_enabled_(boolean v) {ctgs_enabled = v; return this;} private boolean ctgs_enabled = true;
-	public byte[] Write(Xohe_page_wtr_mgr mgr, Xoae_page page, Xop_ctx ctx, Bry_bfr html_bfr) {
-		this.mgr = mgr; this.page = page; this.ctx = ctx; 
-		Xowe_wiki wiki = page.Wikie(); Xoae_app app = wiki.Appe();
-		ctx.Cur_page_(page); // HACK: must update page for toc_mgr; WHEN: Xoae_page rewrite
-		Bry_fmtr fmtr = null;
-		if (mgr.Html_capable()) {
-			wtr_page_lang.Page_(page);
-			byte view_mode = page_mode;
-			switch (page_mode) {
-				case Xopg_view_mode.Tid_edit:	fmtr = mgr.Page_edit_fmtr(); break;
-				case Xopg_view_mode.Tid_html:	fmtr = mgr.Page_read_fmtr(); view_mode = Xopg_view_mode.Tid_read; break; // set view_mode to read, so that "read" is highlighted in HTML
-				case Xopg_view_mode.Tid_read:	fmtr = mgr.Page_read_fmtr(); 
-					ctx.Cur_page().Redlink_lnki_list().Clear();	// not sure if this is the best place to put it, but redlinks (a) must only fire once; (b) must fire before html generation; (c) cannot fire during edit (preview will handle separately)
-					break;
-			}
-			Write_page(html_bfr, app, wiki, mgr, page, view_mode, fmtr, this);
-			if (page_mode == Xopg_view_mode.Tid_html)	// if html, write page again, but wrap it in html skin this time
-				Write_page(html_bfr, app, wiki, mgr, page, page_mode, mgr.Page_html_fmtr(), Html_utl.Escape_html_as_str(html_bfr.Xto_str_and_clear()));
-			wtr_page_lang.Page_(null);
-		}
-		else
-			XferAry(html_bfr, 0);
-		this.page = null;
-		return html_bfr.Xto_bry_and_clear();
-	}
-	private void Write_page(Bry_bfr html_bfr, Xoae_app app, Xowe_wiki wiki, Xohe_page_wtr_mgr mgr, Xoae_page page, byte view_tid, Bry_fmtr fmtr, Object page_data) {
-		byte[] custom_html = page.Html_data().Custom_html();
-		if (custom_html != null) {
-			html_bfr.Add(custom_html);
-			return;
-		}
-		if (root_dir_bry == null) this.root_dir_bry = app.Fsys_mgr().Root_dir().To_http_file_bry();
-		DateAdp page_modified_on_dte = page.Revision_data().Modified_on();
-		Xoa_ttl page_ttl = page.Ttl(); int page_ns_id = page_ttl.Ns().Id();
-		byte page_tid = Xow_page_tid.Identify(wiki.Domain_tid(), page_ns_id, page_ttl.Page_db());
-		byte[] page_modified_on_msg = wiki.Msg_mgr().Val_by_id_args(Xol_msg_itm_.Id_portal_lastmodified, page_modified_on_dte.XtoStr_fmt_yyyy_MM_dd(), page_modified_on_dte.XtoStr_fmt_HHmm());
-		byte[] page_body_class = Xoh_page_body_cls.Calc(tmp_bfr, page_ttl, page_tid);
-		byte[] html_content_editable = wiki.Gui_mgr().Cfg_browser().Content_editable() ? Content_editable_bry : Bry_.Empty;
-		byte[] page_content_sub = Xoh_page_wtr_wkr_.Bld_page_content_sub(app, wiki, page, tmp_bfr);
-		byte[] js_edit_toolbar_bry = view_tid == Xopg_view_mode.Tid_edit ? wiki.Fragment_mgr().Html_js_edit_toolbar() : Bry_.Empty;
-		Xow_portal_mgr portal_mgr = wiki.Html_mgr().Portal_mgr().Init_assert();
-		byte[] page_name = Xoh_page_wtr_wkr_.Bld_page_name(tmp_bfr, page_ttl, null);					// NOTE: page_name does not show display_title (). always pass in null
-		byte[] page_display = Xoh_page_wtr_wkr_.Bld_page_name(tmp_bfr, page_ttl, page.Html_data().Display_ttl());
-		Xol_vnt_mgr vnt_mgr = wiki.Lang().Vnt_mgr();
-		if (vnt_mgr.Enabled()) { 	// VNT
-			page_name = vnt_mgr.Convert_mgr().Convert_text(page_name);
-			page_display = vnt_mgr.Convert_mgr().Convert_text(page_display);
-		}
-		fmtr.Bld_bfr_many(html_bfr
-		, root_dir_bry, Xoa_app_.Version, Xoa_app_.Build_date, app.Tcp_server().Running_str()
-		, page.Revision_data().Id()
-		, page_name, page_display
-		, page_modified_on_msg
-		, mgr.Css_common_bry(), mgr.Css_wiki_bry(), page.Html_data().Head_mgr().Init(app, wiki, page).Init_dflts()
-		, page.Lang().Dir_ltr_bry(), page.Html_data().Indicators(), page_content_sub, wiki.Html_mgr().Portal_mgr().Div_jump_to(), page_body_class, html_content_editable
-		, page_data, wtr_page_lang			
-		, portal_mgr.Div_personal_bry(), portal_mgr.Div_ns_bry(app.Utl__bfr_mkr(), page_ttl, wiki.Ns_mgr()), portal_mgr.Div_view_bry(app.Utl__bfr_mkr(), view_tid, page.Html_data().Xtn_search_text())
-		, portal_mgr.Div_logo_bry(), portal_mgr.Div_home_bry(), new Xopg_xtn_skin_fmtr_arg(page, Xopg_xtn_skin_itm_tid.Tid_sidebar), portal_mgr.Div_wikis_bry(app.Utl__bfr_mkr()), portal_mgr.Sidebar_mgr().Html_bry()
-		, mgr.Edit_rename_div_bry(page_ttl), page.Html_data().Edit_preview_w_dbg(), js_edit_toolbar_bry			
-		);
-		Xoh_page_wtr_wkr_.Bld_head_end(html_bfr, page);
-		Xoh_page_wtr_wkr_.Bld_html_end(html_bfr, page);
-	}
-	public void XferAry(Bry_bfr bfr, int idx) {Write_body(bfr, Xoh_wtr_ctx.Basic, page);}
-	public void Write_body(Bry_bfr bfr, Xoh_wtr_ctx hctx, Xoae_page page) {
-		Xowe_wiki wiki = page.Wikie(); Xoae_app app = wiki.Appe();
-		Xoa_ttl page_ttl = page.Ttl(); int page_ns_id = page_ttl.Ns().Id();
-		byte page_tid = Xow_page_tid.Identify(wiki.Domain_tid(), page_ns_id, page_ttl.Page_db());	// NOTE: can't cache page_tid b/c Write_body is called directly; DATE:2014-10-02
-		byte[] data_raw = page.Data_raw();
-		boolean page_tid_uses_pre = false;
-		int bfr_page_bgn = bfr.Len();
-		if (page_mode == Xopg_view_mode.Tid_edit)
-			Write_body_edit(bfr, data_raw, page_ns_id, page_tid);
-		else {
-			switch (page_tid) {
-				case Xow_page_tid.Tid_js:
-				case Xow_page_tid.Tid_css:
-				case Xow_page_tid.Tid_lua:		Write_body_pre			(bfr, app, wiki, data_raw, tmp_bfr); page_tid_uses_pre = true; break;
-				case Xow_page_tid.Tid_wikitext: Write_body_wikitext		(bfr, app, wiki, data_raw, hctx, page, page_tid, page_ns_id); break;
-				case Xow_page_tid.Tid_json:		app.Wiki_mgr().Wdata_mgr().Write_json_as_html(bfr, page_ttl.Page_db(), data_raw); break;
-			}
-		}
-		if (	wiki.Domain_tid() != Xow_domain_type_.Int__home	// allow home wiki to use javascript
-			&&  !page_tid_uses_pre) {							// if .js, .css or .lua, skip test; may have js fragments, but entire text is escaped and put in pre; don't show spurious warning; DATE:2013-11-21
-			app.Html_mgr().Js_cleaner().Clean_bfr(wiki, page_ttl, bfr, bfr_page_bgn);
-		}
-	}
-	private void Write_body_wikitext(Bry_bfr bfr, Xoae_app app, Xowe_wiki wiki, byte[] data_raw, Xoh_wtr_ctx hctx, Xoae_page page, byte page_tid, int ns_id) {
-		byte[] hdump_data = page.Hdump_data().Body();
-		if (Bry_.Len_gt_0(hdump_data)) {
-			bfr.Add(hdump_data);
-			return;
-		}
-		if	(ns_id == Xow_ns_.Id_mediawiki) {	// if MediaWiki and wikitext, must be a message; convert args back to php; DATE:2014-06-13
-			bfr.Add(Xoa_gfs_php_mgr.Xto_php(tmp_bfr, Bool_.N, data_raw));
-			return;
-		}
-		if (ns_id == Xow_ns_.Id_file)			// if [[File]], add boilerplate header
-			app.Ns_file_page_mgr().Bld_html(wiki, ctx, page, bfr, page.Ttl(), wiki.Cfg_file_page(), page.File_queue());
-		gplx.xowa.html.tidy.Xoh_tidy_mgr tidy_mgr = app.Html_mgr().Tidy_mgr();
-		boolean tidy_enabled = tidy_mgr.Enabled();
-		Bry_bfr hdom_bfr = tidy_enabled ? app.Utl__bfr_mkr().Get_m001() : bfr;	// if tidy, then write to tidy_bfr; note that bfr already has  and  written to it, so this can't be passed to tidy; DATE:2014-06-11
-		wiki.Html_mgr().Html_wtr().Write_all(hdom_bfr, page.Wikie().Parser_mgr().Ctx(), hctx, page.Root().Data_mid(), page.Root());
-		if (tidy_enabled) {
-			tidy_mgr.Run_tidy_html(page, hdom_bfr);
-			bfr.Add_bfr_and_clear(hdom_bfr);
-			hdom_bfr.Mkr_rls();
-		}
-		if (ns_id == Xow_ns_.Id_category)		// if Category, render rest of html (Subcategories; Pages; Files); note that a category may have other html which requires wikitext processing
-			wiki.Html_mgr().Ns_ctg().Bld_html(wiki, page, bfr);
-		int ctgs_len = page.Category_list().length;	// add Categories
-
-		if (	ctgs_enabled
-			&&	ctgs_len > 0
-			&&	!wiki.Html_mgr().Importing_ctgs()	// do not show categories if importing categories, page will wait for category import to be done; DATE:2014-10-15
-			) {
-			app.Usr_dlg().Prog_many("", "", "loading categories: count=~{0}", ctgs_len);
-			if (app.Ctg_mgr().Pagecats_grouping_enabled())
-				app.Ctg_mgr().Pagectgs_wtr().Write(bfr, wiki, page);
-			else
-				wiki.Html_mgr().Ctg_mgr().Bld(bfr, page, ctgs_len);
-		}
-		Xol_vnt_mgr vnt_mgr = wiki.Lang().Vnt_mgr();
-		if (vnt_mgr.Enabled()) 	// VNT
-			bfr.Add(vnt_mgr.Convert_mgr().Convert_text(bfr.Xto_bry_and_clear()));
-	}
-	private void Write_body_pre(Bry_bfr bfr, Xoae_app app, Xowe_wiki wiki, byte[] data_raw, Bry_bfr tmp_bfr) {
-		Xoh_html_wtr_escaper.Escape(app.Parser_amp_mgr(), tmp_bfr, data_raw, 0, data_raw.length, false, false);
-		app.Html_mgr().Page_mgr().Content_code_fmtr().Bld_bfr_many(bfr, tmp_bfr);
-		tmp_bfr.Clear();
-	}
-	private void Write_body_edit(Bry_bfr bfr, byte[] data_raw, int ns_id, byte page_tid) {
-		if	(	ns_id == Xow_ns_.Id_mediawiki			// if MediaWiki and wikitext, must be a message; convert args back to php; DATE:2014-06-13
-			&&	page_tid == Xow_page_tid.Tid_wikitext
-			)
-			data_raw = Xoa_gfs_php_mgr.Xto_php(tmp_bfr, Bool_.N, data_raw);
-		int data_raw_len = data_raw.length;
-		if (mgr.Html_capable())
-			Xoh_html_wtr_escaper.Escape(page.Wikie().Appe().Parser_amp_mgr(), bfr, data_raw, 0, data_raw_len, false, false);	// NOTE: must escape; assume that browser will automatically escape (<) (which Mozilla does)
-		else
-			bfr.Add(data_raw);
-		if (data_raw_len > 0)		// do not add nl if empty String
-			bfr.Add_byte_nl();	// per MW:EditPage.php: "Ensure there's a newline at the end, otherwise adding lines is awkward."
-	}
-	private static final byte[] Content_editable_bry = Bry_.new_a7(" contenteditable=\"true\"");
-}
diff --git a/400_xowa/src/gplx/xowa/html/Xoh_cfg_file.java b/400_xowa/src/gplx/xowa/htmls/Xoh_cfg_file.java
similarity index 95%
rename from 400_xowa/src/gplx/xowa/html/Xoh_cfg_file.java
rename to 400_xowa/src/gplx/xowa/htmls/Xoh_cfg_file.java
index 6b8105181..43a871ea2 100644
--- a/400_xowa/src/gplx/xowa/html/Xoh_cfg_file.java
+++ b/400_xowa/src/gplx/xowa/htmls/Xoh_cfg_file.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.html; import gplx.*; import gplx.xowa.*;
+package gplx.xowa.htmls; import gplx.*; import gplx.xowa.*;
 import gplx.langs.htmls.encoders.*;
 public class Xoh_cfg_file {
 	public Xoh_cfg_file(Url_encoder url_encoder, Io_url xowa_dir) {
diff --git a/400_xowa/src/gplx/xowa/html/Xoh_cmd_itm.java b/400_xowa/src/gplx/xowa/htmls/Xoh_cmd_itm.java
similarity index 93%
rename from 400_xowa/src/gplx/xowa/html/Xoh_cmd_itm.java
rename to 400_xowa/src/gplx/xowa/htmls/Xoh_cmd_itm.java
index d5375295e..696733ddd 100644
--- a/400_xowa/src/gplx/xowa/html/Xoh_cmd_itm.java
+++ b/400_xowa/src/gplx/xowa/htmls/Xoh_cmd_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.html; import gplx.*; import gplx.xowa.*;
+package gplx.xowa.htmls; import gplx.*; import gplx.xowa.*;
 public interface Xoh_cmd_itm {
 	String Hcmd_id();
 	void Hcmd_exec(Xoae_app app, Gfo_usr_dlg usr_dlg, Xoae_page page);
diff --git a/400_xowa/src/gplx/xowa/html/Xoh_cmd_mgr.java b/400_xowa/src/gplx/xowa/htmls/Xoh_cmd_mgr.java
similarity index 95%
rename from 400_xowa/src/gplx/xowa/html/Xoh_cmd_mgr.java
rename to 400_xowa/src/gplx/xowa/htmls/Xoh_cmd_mgr.java
index 3cbfbff83..0a3132948 100644
--- a/400_xowa/src/gplx/xowa/html/Xoh_cmd_mgr.java
+++ b/400_xowa/src/gplx/xowa/htmls/Xoh_cmd_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.html; import gplx.*; import gplx.xowa.*;
+package gplx.xowa.htmls; import gplx.*; import gplx.xowa.*;
 public class Xoh_cmd_mgr {
 	public int Count() {return cmds.Count();}
 	public void Clear() {cmds.Clear();}
diff --git a/400_xowa/src/gplx/xowa/html/Xoh_consts.java b/400_xowa/src/gplx/xowa/htmls/Xoh_consts.java
similarity index 92%
rename from 400_xowa/src/gplx/xowa/html/Xoh_consts.java
rename to 400_xowa/src/gplx/xowa/htmls/Xoh_consts.java
index 3f86e3c07..04a5fffa2 100644
--- a/400_xowa/src/gplx/xowa/html/Xoh_consts.java
+++ b/400_xowa/src/gplx/xowa/htmls/Xoh_consts.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.html; import gplx.*; import gplx.xowa.*;
+package gplx.xowa.htmls; import gplx.*; import gplx.xowa.*;
 public class Xoh_consts {
 	public static final String
 	  Atr_xowa_title_str		= "xowa_title"
@@ -42,7 +42,6 @@ public class Xoh_consts {
 
 	, Pre_bgn					= Bry_.new_a7("
"), Pre_end = Bry_.new_a7("
") , Pre_bgn_open = Bry_.new_a7("") , Code_bgn_closed = Bry_.new_a7("") diff --git a/400_xowa/src/gplx/xowa/html/Xoh_html_mgr.java b/400_xowa/src/gplx/xowa/htmls/Xoh_html_mgr.java similarity index 91% rename from 400_xowa/src/gplx/xowa/html/Xoh_html_mgr.java rename to 400_xowa/src/gplx/xowa/htmls/Xoh_html_mgr.java index e77d7125f..28544bae3 100644 --- a/400_xowa/src/gplx/xowa/html/Xoh_html_mgr.java +++ b/400_xowa/src/gplx/xowa/htmls/Xoh_html_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.html; import gplx.*; import gplx.xowa.*; -import gplx.xowa.html.tidy.*; import gplx.xowa.html.utils.*; import gplx.xowa.html.skins.*; +package gplx.xowa.htmls; import gplx.*; import gplx.xowa.*; +import gplx.xowa.htmls.tidy.*; import gplx.xowa.htmls.utils.*; import gplx.xowa.htmls.skins.*; import gplx.xowa.parsers.xndes.*; public class Xoh_html_mgr implements GfoInvkAble { public Xoh_html_mgr(Xoae_app app) { diff --git a/400_xowa/src/gplx/xowa/html/Xoh_html_wtr.java b/400_xowa/src/gplx/xowa/htmls/Xoh_html_wtr.java similarity index 90% rename from 400_xowa/src/gplx/xowa/html/Xoh_html_wtr.java rename to 400_xowa/src/gplx/xowa/htmls/Xoh_html_wtr.java index ca2b59e08..48125391f 100644 --- a/400_xowa/src/gplx/xowa/html/Xoh_html_wtr.java +++ b/400_xowa/src/gplx/xowa/htmls/Xoh_html_wtr.java @@ -15,12 +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.html; import gplx.*; import gplx.xowa.*; +package gplx.xowa.htmls; import gplx.*; import gplx.xowa.*; import gplx.core.primitives.*; import gplx.core.net.*; import gplx.core.btries.*; -import gplx.langs.htmls.*; import gplx.xowa.langs.*; +import gplx.langs.htmls.*; import gplx.xowa.langs.*; import gplx.xowa.langs.kwds.*; import gplx.xowa.wikis.domains.*; -import gplx.xowa.parsers.*; 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.html.lnkis.*; import gplx.xowa.parsers.tblws.*; import gplx.xowa.parsers.paras.*; import gplx.xowa.parsers.xndes.*; import gplx.xowa.parsers.lnkis.*; import gplx.xowa.parsers.miscs.*; import gplx.xowa.parsers.vnts.*; -import gplx.xowa.xtns.*; import gplx.xowa.xtns.dynamicPageList.*; import gplx.xowa.xtns.math.*; import gplx.xowa.xtns.cite.*; import gplx.xowa.html.hzips.*; +import gplx.xowa.parsers.*; 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.htmls.lnkis.*; import gplx.xowa.parsers.tblws.*; import gplx.xowa.parsers.paras.*; import gplx.xowa.parsers.xndes.*; import gplx.xowa.parsers.lnkis.*; import gplx.xowa.parsers.miscs.*; import gplx.xowa.parsers.vnts.*; import gplx.xowa.parsers.htmls.*; +import gplx.xowa.xtns.*; import gplx.xowa.xtns.dynamicPageList.*; import gplx.xowa.xtns.math.*; import gplx.xowa.xtns.cite.*; import gplx.xowa.htmls.hzips.*; public class Xoh_html_wtr { private Xowe_wiki wiki; private Xoae_app app; private Xoae_page page; private Xop_xatr_whitelist_mgr whitelist_mgr; public Xoh_html_wtr(Xowe_wiki wiki, Xow_html_mgr html_mgr) { @@ -91,8 +91,6 @@ public class Xoh_html_wtr { case Xop_tkn_itm_.Tid_pre: Pre(ctx, hctx, bfr, src, (Xop_pre_tkn)tkn); break; case Xop_tkn_itm_.Tid_newLine: NewLine(ctx, hctx, bfr, src, (Xop_nl_tkn)tkn); break; case Xop_tkn_itm_.Tid_bry: Bry(ctx, hctx, bfr, src, (Xop_bry_tkn)tkn); break; - case Xop_tkn_itm_.Tid_vnt: Vnt(ctx, hctx, bfr, src, (Xop_vnt_tkn)tkn); break; -// case Xop_tkn_itm_.Tid_tab: bfr.Add_byte_repeat(Byte_ascii.Tab, tkn.Src_end() - tkn.Src_bgn()); break; default: Xoh_html_wtr_escaper.Escape(app.Parser_amp_mgr(), bfr, src, tkn.Src_bgn(), tkn.Src_end(), true, false); // NOTE: always escape text including (a) lnki_alt text; and (b) any other text, especially failed xndes; DATE:2013-06-18 break; @@ -296,9 +294,6 @@ public class Xoh_html_wtr { @gplx.Virtual public void Bry(Xop_ctx ctx, Xoh_wtr_ctx hctx, Bry_bfr bfr, byte[] src, Xop_bry_tkn bry) { bfr.Add(bry.Val()); } - @gplx.Virtual public void Vnt(Xop_ctx ctx, Xoh_wtr_ctx hctx, Bry_bfr bfr, byte[] src, Xop_vnt_tkn vnt) { - Xop_vnt_html_wtr.Write(bfr, this, ctx, hctx, page, src, vnt); // NOTE: using wiki, b/c getting nullPointer with ctx during mass parse - } @gplx.Virtual public void Under(Xop_ctx ctx, Xoh_wtr_ctx hctx, Bry_bfr bfr, byte[] src, Xop_under_tkn under) { if (hctx.Mode_is_alt()) return; switch (under.Under_tid()) { @@ -380,16 +375,6 @@ public class Xoh_html_wtr { bfr.Add_str_a7("
"); break; } - case Xop_xnde_tag_.Tid_source: { // convert to
;
-				byte[] name = Xop_xnde_tag_.Tag_pre.Name_bry();
-				bfr.Add_byte(Tag__bgn).Add(name);
-				if (xnde.Atrs_bgn() > Xop_tblw_wkr.Atrs_ignore_check) Xnde_atrs(tag_id, hctx, src, xnde.Atrs_bgn(), xnde.Atrs_end(), xnde.Atrs_ary(), bfr);
-				bfr.Add_byte(Tag__end);
-				int tag_close_bgn = Bry_find_.Find_bwd_while(src, xnde.Tag_close_bgn(), -1, Byte_ascii.Space) + 1;	// trim space from end; PAGE:en.w:Comment_(computer_programming) DATE:2014-06-23
-				Xoh_html_wtr_escaper.Escape(app.Parser_amp_mgr(), bfr, src, xnde.Tag_open_end(), tag_close_bgn, false, false);	//  is a .Xtn(); render literally everything between > and <; DATE:2014-03-11
-				bfr.Add(Tag__end_bgn).Add(name).Add_byte(Tag__end);
-				break;
-			}
 			case Xop_xnde_tag_.Tid_gallery:
 			case Xop_xnde_tag_.Tid_poem:
 			case Xop_xnde_tag_.Tid_hiero:
@@ -406,6 +391,7 @@ public class Xoh_html_wtr {
 			case Xop_xnde_tag_.Tid_dynamicPageList:
 			case Xop_xnde_tag_.Tid_languages:
 			case Xop_xnde_tag_.Tid_templateData:
+			case Xop_xnde_tag_.Tid_source:	// DATE:2015-09-29
 			case Xop_xnde_tag_.Tid_syntaxHighlight:
 			case Xop_xnde_tag_.Tid_listing_buy:
 			case Xop_xnde_tag_.Tid_listing_do:
@@ -430,7 +416,7 @@ public class Xoh_html_wtr {
 			default:	// unknown tag
 				if (tag.Restricted()) {	// a; img; script; etc..
 					if (	!page.Html_data().Html_restricted()							// page is not marked restricted (only [[Special:]])
-						||	page.Wiki().Domain_tid() == Xow_domain_type_.Int__home) {		// page is in home wiki
+						||	page.Wiki().Domain_tid() == Xow_domain_tid_.Int__home) {		// page is in home wiki
 						bfr.Add_mid(src, xnde.Src_bgn(), xnde.Src_end());
 						return;
 					}
@@ -493,21 +479,21 @@ public class Xoh_html_wtr {
 		if (ws_bfr.Len() > 0) bfr.Add_bfr_and_clear(ws_bfr);				// dump any leftover ws to bfr; handles "c " -> "c "
 		ws_bfr.Mkr_rls();
 	}		
-	public void Xnde_atrs(int tag_id, Xoh_wtr_ctx hctx, byte[] src, int bgn, int end, Xop_xatr_itm[] ary, Bry_bfr bfr) {
+	public void Xnde_atrs(int tag_id, Xoh_wtr_ctx hctx, byte[] src, int bgn, int end, Mwh_atr_itm[] ary, Bry_bfr bfr) {
 		if (ary == null) return;	// NOTE: some nodes will have null xatrs b/c of whitelist; EX: 
a
; style is not on whitelist so not xatr generated, but xatr_bgn will != -1 int ary_len = ary.length; for (int i = 0; i < ary_len; i++) { - Xop_xatr_itm atr = ary[i]; + Mwh_atr_itm atr = ary[i]; if (atr.Invalid()) continue; if (!whitelist_mgr.Chk(tag_id, src, atr)) continue; Xnde_atr_write(bfr, app, hctx, src, atr); } } - public static void Xnde_atr_write(Bry_bfr bfr, Xoae_app app, Xoh_wtr_ctx hctx, byte[] src, Xop_xatr_itm atr) { + public static void Xnde_atr_write(Bry_bfr bfr, Xoae_app app, Xoh_wtr_ctx hctx, byte[] src, Mwh_atr_itm atr) { byte[] atr_key = atr.Key_bry(); if ( hctx.Mode_is_display_title() - && Xoh_display_ttl_wtr._.Is_style_restricted(bfr, hctx, src, atr, atr_key)) + && Xoh_display_ttl_wtr.Instance.Is_style_restricted(bfr, hctx, src, atr, atr_key)) return; bfr.Add_byte(Byte_ascii.Space); // add space before every attribute @@ -515,11 +501,11 @@ public class Xoh_html_wtr { bfr.Add(atr_key); bfr.Add_byte(Byte_ascii.Eq); } - byte quote_byte = atr.Quote_byte(); if (quote_byte == Byte_ascii.Null) quote_byte = Byte_ascii.Quote; + byte quote_byte = atr.Qte_byte(); if (quote_byte == Byte_ascii.Null) quote_byte = Byte_ascii.Quote; bfr.Add_byte(quote_byte); - if (atr.Key_tid() == Xop_xatr_itm.Key_tid_id) { // ids should not have spaces; DATE:2013-04-01 + if (atr.Key_tid() == Mwh_atr_itm_.Key_tid__id) { // ids should not have spaces; DATE:2013-04-01 if (atr.Val_bry() == null) - Xnde_atr_write_id(bfr, app, src, atr.Val_bgn(), atr.Val_end()); + Xnde_atr_write_id(bfr, app, atr.Src(), atr.Val_bgn(), atr.Val_end()); else { byte[] atr_val = atr.Val_bry(); Xnde_atr_write_id(bfr, app, atr_val, 0, atr_val.length); @@ -580,9 +566,6 @@ public class Xoh_html_wtr { else { bfr.Add_byte_if_not_last(Byte_ascii.Nl); if (indent_level > 0) bfr.Add_byte_repeat(Byte_ascii.Space, indent_level * 2); -// boolean para_mode = tblw_bgn && tbl_para && depth == 1; // DELETE: old code; adding

to handle strange mozilla key down behavior on linux; DATE:2013-03-30 -// if (para_mode) {bfr.Add(Xoh_consts.P_bgn);} - bfr.Add(bgn); int atrs_bgn = tkn.Atrs_bgn(); if (atrs_bgn != -1) Xnde_atrs(tkn.Tblw_tid(), hctx, src, atrs_bgn, tkn.Atrs_end(), tkn.Atrs_ary(), bfr); //bfr.Add_byte(Byte_ascii.Space).Add_mid(src, atrs_bgn, tkn.Atrs_end()); @@ -601,9 +584,7 @@ public class Xoh_html_wtr { bfr.Add_byte_if_not_last(Byte_ascii.Nl); if (indent_level > 0) bfr.Add_byte_repeat(Byte_ascii.Space, indent_level * 2); bfr.Add(end); -// if (para_mode) {bfr.Add(Xoh_consts.P_end);} // DELETE: old code; adding

to handle strange mozilla key down behavior on linux; DATE:2013-03-30 bfr.Add_byte_if_not_last(Byte_ascii.Nl); -// bfr.Add_byte_nl(); } } public static final byte[] Tag__end_quote = Bry_.new_a7("\">"), Tag__end_bgn = Bry_.new_a7(", not diff --git a/400_xowa/src/gplx/xowa/html/Xoh_html_wtr_cfg.java b/400_xowa/src/gplx/xowa/htmls/Xoh_html_wtr_cfg.java similarity index 95% rename from 400_xowa/src/gplx/xowa/html/Xoh_html_wtr_cfg.java rename to 400_xowa/src/gplx/xowa/htmls/Xoh_html_wtr_cfg.java index 602d9f150..954b87a02 100644 --- a/400_xowa/src/gplx/xowa/html/Xoh_html_wtr_cfg.java +++ b/400_xowa/src/gplx/xowa/htmls/Xoh_html_wtr_cfg.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.html; import gplx.*; import gplx.xowa.*; +package gplx.xowa.htmls; import gplx.*; import gplx.xowa.*; public class Xoh_html_wtr_cfg { public boolean Toc__show() {return toc__show;} public Xoh_html_wtr_cfg Toc__show_(boolean v) {toc__show = v; return this;} private boolean toc__show; public boolean Lnki__id() {return lnki__id;} public Xoh_html_wtr_cfg Lnki__id_y_() {lnki__id = Bool_.Y; return this;} private boolean lnki__id; diff --git a/400_xowa/src/gplx/xowa/html/Xoh_html_wtr_escaper.java b/400_xowa/src/gplx/xowa/htmls/Xoh_html_wtr_escaper.java similarity index 95% rename from 400_xowa/src/gplx/xowa/html/Xoh_html_wtr_escaper.java rename to 400_xowa/src/gplx/xowa/htmls/Xoh_html_wtr_escaper.java index 493cf3c1e..6150bc375 100644 --- a/400_xowa/src/gplx/xowa/html/Xoh_html_wtr_escaper.java +++ b/400_xowa/src/gplx/xowa/htmls/Xoh_html_wtr_escaper.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.html; import gplx.*; import gplx.xowa.*; +package gplx.xowa.htmls; import gplx.*; import gplx.xowa.*; import gplx.core.btries.*; import gplx.langs.htmls.*; import gplx.xowa.parsers.amps.*; import gplx.xowa.parsers.xndes.*; public class Xoh_html_wtr_escaper { public static byte[] Escape(Xop_amp_mgr amp_mgr, Bry_bfr tmp_bfr, byte[] src) { Escape(amp_mgr, tmp_bfr, src, 0, src.length, true, false); - return tmp_bfr.Xto_bry_and_clear(); + return tmp_bfr.To_bry_and_clear(); } public static void Escape(Xop_amp_mgr amp_mgr, Bry_bfr bfr, byte[] src, int bgn, int end, boolean interpret_amp, boolean nowiki_skip) { Btrie_slim_mgr amp_trie = amp_mgr.Amp_trie(); diff --git a/400_xowa/src/gplx/xowa/html/Xoh_html_wtr_tst.java b/400_xowa/src/gplx/xowa/htmls/Xoh_html_wtr_tst.java similarity index 96% rename from 400_xowa/src/gplx/xowa/html/Xoh_html_wtr_tst.java rename to 400_xowa/src/gplx/xowa/htmls/Xoh_html_wtr_tst.java index 7e4f9d70f..f997d6b75 100644 --- a/400_xowa/src/gplx/xowa/html/Xoh_html_wtr_tst.java +++ b/400_xowa/src/gplx/xowa/htmls/Xoh_html_wtr_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.html; import gplx.*; import gplx.xowa.*; +package gplx.xowa.htmls; import gplx.*; import gplx.xowa.*; import org.junit.*; public class Xoh_html_wtr_tst { private Xop_fxt fxt = new Xop_fxt(); diff --git a/400_xowa/src/gplx/xowa/html/Xoh_imgs_mgr.java b/400_xowa/src/gplx/xowa/htmls/Xoh_imgs_mgr.java similarity index 87% rename from 400_xowa/src/gplx/xowa/html/Xoh_imgs_mgr.java rename to 400_xowa/src/gplx/xowa/htmls/Xoh_imgs_mgr.java index 007c25800..f09a2ebe7 100644 --- a/400_xowa/src/gplx/xowa/html/Xoh_imgs_mgr.java +++ b/400_xowa/src/gplx/xowa/htmls/Xoh_imgs_mgr.java @@ -15,18 +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.html; import gplx.*; import gplx.xowa.*; +package gplx.xowa.htmls; import gplx.*; import gplx.xowa.*; import gplx.core.primitives.*; import gplx.xowa.wikis.domains.*; public class Xoh_imgs_mgr implements GfoInvkAble { - public Xoh_imgs_mgr(Xow_html_mgr html_mgr) {wiki_is_default = html_mgr.Wiki().Domain_tid() == Xow_domain_type_.Int__home;} private boolean wiki_is_default; + public Xoh_imgs_mgr(Xow_html_mgr html_mgr) {wiki_is_default = html_mgr.Wiki().Domain_tid() == Xow_domain_tid_.Int__home;} private boolean wiki_is_default; public Bool_obj_ref Alt_in_caption() {return alt_in_caption;} Bool_obj_ref alt_in_caption = Bool_obj_ref.y_(); public Bool_obj_ref Alt_defaults_to_caption() {return alt_defaults_to_caption;} Bool_obj_ref alt_defaults_to_caption = Bool_obj_ref.y_(); public void Copy_cfg(Xoh_imgs_mgr copy) {this.alt_in_caption = copy.alt_in_caption;} public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { - if (ctx.Match(k, Invk_alt_in_caption)) return Yn.Xto_str(alt_in_caption.Val()); + if (ctx.Match(k, Invk_alt_in_caption)) return Yn.To_str(alt_in_caption.Val()); else if (ctx.Match(k, Invk_alt_in_caption_)) alt_in_caption = Modify(wiki_is_default, alt_in_caption, m.ReadYn("v")); - else if (ctx.Match(k, Invk_alt_defaults_to_caption)) return Yn.Xto_str(alt_defaults_to_caption.Val()); + else if (ctx.Match(k, Invk_alt_defaults_to_caption)) return Yn.To_str(alt_defaults_to_caption.Val()); else if (ctx.Match(k, Invk_alt_defaults_to_caption_)) alt_defaults_to_caption = Modify(wiki_is_default, alt_defaults_to_caption, m.ReadYn("v")); else return GfoInvkAble_.Rv_unhandled; return this; diff --git a/400_xowa/src/gplx/xowa/html/Xoh_page_mgr.java b/400_xowa/src/gplx/xowa/htmls/Xoh_page_mgr.java similarity index 87% rename from 400_xowa/src/gplx/xowa/html/Xoh_page_mgr.java rename to 400_xowa/src/gplx/xowa/htmls/Xoh_page_mgr.java index e77f40655..42a7629e6 100644 --- a/400_xowa/src/gplx/xowa/html/Xoh_page_mgr.java +++ b/400_xowa/src/gplx/xowa/htmls/Xoh_page_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.html; import gplx.*; import gplx.xowa.*; -import gplx.xowa.html.portal.*; +package gplx.xowa.htmls; import gplx.*; import gplx.xowa.*; +import gplx.xowa.htmls.portal.*; public class Xoh_page_mgr implements GfoInvkAble { public Xoh_subpages_bldr Subpages_bldr() {return subpages_bldr;} private final Xoh_subpages_bldr subpages_bldr = new Xoh_subpages_bldr(); public boolean Font_enabled() {return font_enabled;} private boolean font_enabled = false; @@ -27,8 +27,8 @@ public class Xoh_page_mgr implements GfoInvkAble { font_size = v; this.Font_css_bry_update(); } - public Bry_fmtr Font_css_fmtr() {return font_css_fmtr;} private Bry_fmtr font_css_fmtr = Bry_fmtr.new_("body {font-family: ~{font_name}; font-size: ~{font_size}px;}", "font_name", "font_size"); - public Bry_fmtr Content_code_fmtr() {return content_code_fmtr;} private Bry_fmtr content_code_fmtr = Bry_fmtr.new_("

~{page_text}
", "page_text"); + public Bry_fmtr Font_css_fmtr() {return font_css_fmtr;} private final Bry_fmtr font_css_fmtr = Bry_fmtr.new_("body {font-family: ~{font_name}; font-size: ~{font_size}px;}", "font_name", "font_size"); + public Bry_fmtr Content_code_fmtr() {return content_code_fmtr;} private final Bry_fmtr content_code_fmtr = Bry_fmtr.new_("
~{page_text}
", "page_text"); private void Font_css_fmtr_(byte[] bry) { font_css_fmtr.Fmt_(bry); Font_css_bry_update(); @@ -44,7 +44,7 @@ public class Xoh_page_mgr implements GfoInvkAble { else if (ctx.Match(k, Invk_font_size_)) {font_size = m.ReadFloat("v"); this.Font_css_bry_update();} else if (ctx.Match(k, Invk_font_css_fmt)) return String_.new_u8(font_css_fmtr.Fmt()); else if (ctx.Match(k, Invk_font_css_fmt_)) Font_css_fmtr_(m.ReadBry("v")); - else if (ctx.Match(k, Invk_font_enabled)) return Yn.Xto_str(font_enabled); + else if (ctx.Match(k, Invk_font_enabled)) return Yn.To_str(font_enabled); else if (ctx.Match(k, Invk_font_enabled_)) font_enabled = m.ReadYn("v"); else if (ctx.Match(k, Invk_content_code_fmt)) return String_.new_u8(content_code_fmtr.Fmt()); else if (ctx.Match(k, Invk_content_code_fmt_)) content_code_fmtr.Fmt_(m.ReadBry("v")); diff --git a/400_xowa/src/gplx/xowa/html/Xohe_page_wtr_mgr.java b/400_xowa/src/gplx/xowa/htmls/Xoh_page_wtr_mgr.java similarity index 72% rename from 400_xowa/src/gplx/xowa/html/Xohe_page_wtr_mgr.java rename to 400_xowa/src/gplx/xowa/htmls/Xoh_page_wtr_mgr.java index ba493ee8e..67391d869 100644 --- a/400_xowa/src/gplx/xowa/html/Xohe_page_wtr_mgr.java +++ b/400_xowa/src/gplx/xowa/htmls/Xoh_page_wtr_mgr.java @@ -15,41 +15,28 @@ 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.html; import gplx.*; import gplx.xowa.*; -import gplx.xowa.gui.*; import gplx.xowa.pages.*; -public class Xohe_page_wtr_mgr extends Xoh_page_wtr_mgr_base implements GfoInvkAble { - private Xoh_page_wtr_wkr edit_wtr, html_wtr, read_wtr; +package gplx.xowa.htmls; import gplx.*; import gplx.xowa.*; +import gplx.xowa.wikis.pages.*; +public class Xoh_page_wtr_mgr implements GfoInvkAble { private final Bry_bfr tmp_bfr = Bry_bfr.reset_(255); - public Xohe_page_wtr_mgr(boolean html_capable) { -// page_edit_fmtr.Fmt_(String_.Concat_lines_nl_skip_last -// ( "" -// , "" -// , " " -// , " " -// , "" -// , "" -// , " " -// , "" -// , "" -// )); + private Xoh_page_wtr_wkr edit_wtr, html_wtr, read_wtr; + public Xoh_page_wtr_mgr(boolean html_capable) { this.html_capable = html_capable; - read_wtr = new Xoh_page_wtr_wkr(Xopg_view_mode.Tid_read); - edit_wtr = new Xoh_page_wtr_wkr(Xopg_view_mode.Tid_edit); - html_wtr = new Xoh_page_wtr_wkr(Xopg_view_mode.Tid_html); + this.read_wtr = new Xoh_page_wtr_wkr(this, Xopg_page_.Tid_read); + this.edit_wtr = new Xoh_page_wtr_wkr(this, Xopg_page_.Tid_edit); + this.html_wtr = new Xoh_page_wtr_wkr(this, Xopg_page_.Tid_html); } - public boolean Html_capable() {return html_capable;} public Xohe_page_wtr_mgr Html_capable_(boolean v) {html_capable = v; return this;} private boolean html_capable; + public boolean Html_capable() {return html_capable;} public Xoh_page_wtr_mgr Html_capable_(boolean v) {html_capable = v; return this;} private boolean html_capable; + public byte[] Css_common_bry() {return css_common_bry;} private byte[] css_common_bry; + public byte[] Css_wiki_bry() {return css_wiki_bry;} private byte[] css_wiki_bry; public Bry_fmtr Page_read_fmtr() {return page_read_fmtr;} private Bry_fmtr page_read_fmtr = Bry_fmtr.new_("", Fmtr_keys); public Bry_fmtr Page_edit_fmtr() {return page_edit_fmtr;} private Bry_fmtr page_edit_fmtr = Bry_fmtr.new_("", Fmtr_keys); public Bry_fmtr Page_html_fmtr() {return page_html_fmtr;} private Bry_fmtr page_html_fmtr = Bry_fmtr.new_("", Fmtr_keys); public byte[] Edit_rename_div_bry(Xoa_ttl ttl) {return div_edit_rename_fmtr.Bld_bry_many(tmp_bfr, ttl.Full_db());} + public void Init_css_urls(Io_url css_common_url, Io_url css_wiki_url) { + this.css_common_bry = css_common_url.To_http_file_bry(); + this.css_wiki_bry = css_wiki_url.To_http_file_bry(); + } public void Init_(boolean v) {init = v;} private boolean init = true; public byte[] Gen(Xoae_page page, byte output_tid) { Xoh_page_wtr_wkr wtr = Wkr(output_tid); @@ -61,15 +48,15 @@ public class Xohe_page_wtr_mgr extends Xoh_page_wtr_mgr_base implements GfoInvkA page_html_fmtr.Eval_mgr_(wiki.Eval_mgr()); } Bry_bfr tmp_bfr = Xoa_app_.Utl__bfr_mkr().Get_m001(); - byte[] bry = wtr.Write(this, page, wiki.Parser_mgr().Ctx(), tmp_bfr); + byte[] bry = wtr.Write_page(page, wiki.Parser_mgr().Ctx(), tmp_bfr); tmp_bfr.Mkr_rls(); return bry; } public Xoh_page_wtr_wkr Wkr(byte output_tid) { switch (output_tid) { - case Xopg_view_mode.Tid_edit: return edit_wtr; - case Xopg_view_mode.Tid_html: return html_wtr; - case Xopg_view_mode.Tid_read: return read_wtr; + case Xopg_page_.Tid_edit: return edit_wtr; + case Xopg_page_.Tid_html: return html_wtr; + case Xopg_page_.Tid_read: return read_wtr; default: throw Err_.new_unhandled(output_tid); } } diff --git a/400_xowa/src/gplx/xowa/html/Xoh_page_wtr_mgr_tst.java b/400_xowa/src/gplx/xowa/htmls/Xoh_page_wtr_mgr_tst.java similarity index 79% rename from 400_xowa/src/gplx/xowa/html/Xoh_page_wtr_mgr_tst.java rename to 400_xowa/src/gplx/xowa/htmls/Xoh_page_wtr_mgr_tst.java index e26ccd6a7..5076c6585 100644 --- a/400_xowa/src/gplx/xowa/html/Xoh_page_wtr_mgr_tst.java +++ b/400_xowa/src/gplx/xowa/htmls/Xoh_page_wtr_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.html; import gplx.*; import gplx.xowa.*; +package gplx.xowa.htmls; import gplx.*; import gplx.xowa.*; import org.junit.*; -import gplx.xowa.gui.*; import gplx.xowa.html.*; import gplx.xowa.html.portal.*; import gplx.xowa.pages.*; +import gplx.xowa.guis.*; import gplx.xowa.htmls.*; import gplx.xowa.htmls.portal.*; import gplx.xowa.wikis.pages.*; public class Xoh_page_wtr_mgr_tst { @Before public void init() {} @Test public void Logo_has_correct_main_page() { // PURPOSE: Logo href should be "/site/en.wikipedia.org/wiki/", not "/wiki/Main_Page" @@ -26,8 +26,8 @@ public class Xoh_page_wtr_mgr_tst { Xow_portal_mgr portal_mgr = wiki.Html_mgr().Portal_mgr(); GfoInvkAble_.InvkCmd_val(portal_mgr, Xow_portal_mgr.Invk_div_logo_, Bry_.new_a7("~{portal_nav_main_href}")); portal_mgr.Init_assert(); - Xohe_page_wtr_mgr page_wtr_mgr = new Xohe_page_wtr_mgr(true); - page_wtr_mgr.Gen(wiki.Parser_mgr().Ctx().Cur_page(), Xopg_view_mode.Tid_read); + Xoh_page_wtr_mgr page_wtr_mgr = new Xoh_page_wtr_mgr(true); + page_wtr_mgr.Gen(wiki.Parser_mgr().Ctx().Cur_page(), Xopg_page_.Tid_read); Tfds.Eq(String_.new_a7(portal_mgr.Div_logo_bry()), "/site/en.wikipedia.org/wiki/"); } } diff --git a/400_xowa/src/gplx/xowa/htmls/Xoh_page_wtr_wkr.java b/400_xowa/src/gplx/xowa/htmls/Xoh_page_wtr_wkr.java new file mode 100644 index 000000000..a6d3d23dd --- /dev/null +++ b/400_xowa/src/gplx/xowa/htmls/Xoh_page_wtr_wkr.java @@ -0,0 +1,196 @@ +/* +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.htmls; import gplx.*; import gplx.xowa.*; +import gplx.xowa.langs.*; import gplx.xowa.langs.msgs.*; import gplx.langs.htmls.*; import gplx.xowa.langs.vnts.*; +import gplx.xowa.wikis.pages.*; import gplx.xowa.wikis.pages.skins.*; +import gplx.xowa.wikis.nss.*; import gplx.xowa.wikis.*; import gplx.xowa.wikis.domains.*; import gplx.xowa.parsers.*; import gplx.xowa.xtns.wdatas.*; +import gplx.xowa.apps.gfs.*; import gplx.xowa.htmls.portal.*; +public class Xoh_page_wtr_wkr implements Bry_fmtr_arg { + private final Bry_bfr tmp_bfr = Bry_bfr.reset_(255); private final Object thread_lock_1 = new Object(), thread_lock_2 = new Object(); + private final Xoh_page_wtr_mgr mgr; private final byte page_mode; + private final Wdata_xwiki_link_wtr wdata_lang_wtr = new Wdata_xwiki_link_wtr(); // In other languages + private Xoae_app app; private Xowe_wiki wiki; private Xop_ctx ctx; private Xoae_page page; private byte[] root_dir_bry; + public Xoh_page_wtr_wkr(Xoh_page_wtr_mgr mgr, byte page_mode) {this.mgr = mgr; this.page_mode = page_mode;} + public Xoh_page_wtr_wkr Ctgs_enabled_(boolean v) {ctgs_enabled = v; return this;} private boolean ctgs_enabled = true; + public byte[] Write_page(Xoae_page page, Xop_ctx ctx, Bry_bfr bfr) { + synchronized (thread_lock_1) { + this.page = page; this.ctx = ctx; this.wiki = page.Wikie(); this.app = wiki.Appe(); + ctx.Cur_page_(page); // HACK: must update page for toc_mgr; WHEN: Xoae_page rewrite + Bry_fmtr fmtr = null; + if (mgr.Html_capable()) { + wdata_lang_wtr.Page_(page); + byte view_mode = page_mode; + switch (page_mode) { + case Xopg_page_.Tid_edit: fmtr = mgr.Page_edit_fmtr(); break; + case Xopg_page_.Tid_html: fmtr = mgr.Page_read_fmtr(); view_mode = Xopg_page_.Tid_read; break; // set view_mode to read, so that "read" is highlighted in HTML + case Xopg_page_.Tid_read: fmtr = mgr.Page_read_fmtr(); + ctx.Cur_page().Redlink_lnki_list().Clear(); // not sure if this is the best place to put it, but redlinks (a) must only fire once; (b) must fire before html generation; (c) cannot fire during edit (preview will handle separately) + break; + } + Bry_bfr page_bfr = Xoa_app_.Utl__bfr_mkr().Get_m001(); // NOTE: get separate page bfr to output page; do not reuse tmp_bfr b/c it will be used inside Fmt_do + Fmt__do(page_bfr); + Write_page_by_tid(view_mode, bfr, fmtr, page_bfr.To_bry_and_rls()); + if (page_mode == Xopg_page_.Tid_html) // if html, write page again, but wrap it in html skin this time + Write_page_by_tid(page_mode, bfr, mgr.Page_html_fmtr(), Html_utl.Escape_html_as_bry(bfr.To_bry_and_clear())); + wdata_lang_wtr.Page_(null); + } + else + Fmt__do(bfr); + this.page = null; + return bfr.To_bry_and_clear(); + } + } + private void Write_page_by_tid(byte html_gen_tid, Bry_bfr bfr, Bry_fmtr fmtr, byte[] page_data) { + // if custom_html, use it and exit; needed for Default_tab + byte[] custom_html = page.Html_data().Custom_html(); + if (custom_html != null) {bfr.Add(custom_html); return;} + + // temp variables + if (root_dir_bry == null) this.root_dir_bry = app.Fsys_mgr().Root_dir().To_http_file_bry(); + Xoa_ttl page_ttl = page.Ttl(); int page_ns_id = page_ttl.Ns().Id(); + byte page_tid = Xow_page_tid.Identify(wiki.Domain_tid(), page_ns_id, page_ttl.Page_db()); + DateAdp modified_on = page.Revision_data().Modified_on(); + byte[] modified_on_msg = wiki.Msg_mgr().Val_by_id_args(Xol_msg_itm_.Id_portal_lastmodified, modified_on.XtoStr_fmt_yyyy_MM_dd(), modified_on.XtoStr_fmt_HHmm()); + byte[] page_body_class = Xoh_page_body_cls.Calc(tmp_bfr, page_ttl, page_tid); + byte[] html_content_editable = wiki.Gui_mgr().Cfg_browser().Content_editable() ? Content_editable_bry : Bry_.Empty; + byte[] page_content_sub = Xoh_page_wtr_wkr_.Bld_page_content_sub(app, wiki, page, tmp_bfr); + byte[] js_edit_toolbar_bry = html_gen_tid == Xopg_page_.Tid_edit ? wiki.Fragment_mgr().Html_js_edit_toolbar() : Bry_.Empty; + Xol_vnt_mgr vnt_mgr = wiki.Lang().Vnt_mgr(); + if (vnt_mgr.Enabled()) { + byte[] converted_title = vnt_mgr.Convert_lang().Converted_title(); // prefer converted title + if (converted_title == null) // converted title does not exist; use regular page title and convert it + converted_title = vnt_mgr.Convert_lang().Auto_convert(vnt_mgr.Cur_itm(), page_ttl.Page_txt()); + page_ttl = Xoa_ttl.parse(wiki, page_ttl.Ns().Id(), converted_title); + } + byte[] page_name = Xoh_page_wtr_wkr_.Bld_page_name(tmp_bfr, page_ttl, null); // NOTE: page_name does not show display_title (). always pass in null + byte[] page_display = Xoh_page_wtr_wkr_.Bld_page_name(tmp_bfr, page_ttl, page.Html_data().Display_ttl()); + page.Html_data().Custom_tab_name_(page_name); // set tab_name to page_name; note that if null, gui code will ignore and use Ttl.Page_txt; PAGE: zh.w:釣魚臺列嶼主權問題 DATE:2015-10-05 + Xow_portal_mgr portal_mgr = wiki.Html_mgr().Portal_mgr().Init_assert(); + fmtr.Bld_bfr_many(bfr + , root_dir_bry, Xoa_app_.Version, Xoa_app_.Build_date, app.Tcp_server().Running_str() + , page.Revision_data().Id() + , page_name, page_display + , modified_on_msg + , mgr.Css_common_bry(), mgr.Css_wiki_bry(), page.Html_data().Head_mgr().Init(app, wiki, page).Init_dflts() + , page.Lang().Dir_ltr_bry(), page.Html_data().Indicators(), page_content_sub, wiki.Html_mgr().Portal_mgr().Div_jump_to(), page_body_class, html_content_editable + , page_data, wdata_lang_wtr + , portal_mgr.Div_personal_bry(), portal_mgr.Div_ns_bry(app.Utl__bfr_mkr(), page_ttl, wiki.Ns_mgr()), portal_mgr.Div_view_bry(app.Utl__bfr_mkr(), html_gen_tid, page.Html_data().Xtn_search_text()) + , portal_mgr.Div_logo_bry(), portal_mgr.Div_home_bry(), new Xopg_xtn_skin_fmtr_arg(page, Xopg_xtn_skin_itm_tid.Tid_sidebar), portal_mgr.Div_wikis_bry(app.Utl__bfr_mkr()), portal_mgr.Sidebar_mgr().Html_bry() + , mgr.Edit_rename_div_bry(page_ttl), page.Html_data().Edit_preview_w_dbg(), js_edit_toolbar_bry + ); + Xoh_page_wtr_wkr_.Bld_head_end(bfr, page); // add after + Xoh_page_wtr_wkr_.Bld_html_end(bfr, page); // add after + } + public void Fmt__do(Bry_bfr bfr) {Write_body(bfr, Xoh_wtr_ctx.Basic, page);} + public void Write_body(Bry_bfr bfr, Xoh_wtr_ctx hctx, Xoae_page page) { + synchronized (thread_lock_2) { + this.page = page; this.wiki = page.Wikie(); this.app = wiki.Appe(); + Xoa_ttl page_ttl = page.Ttl(); int page_ns_id = page_ttl.Ns().Id(); + byte page_tid = Xow_page_tid.Identify(wiki.Domain_tid(), page_ns_id, page_ttl.Page_db()); // NOTE: can't cache page_tid b/c Write_body is called directly; DATE:2014-10-02 + byte[] data_raw = page.Data_raw(); + int bfr_page_bgn = bfr.Len(); + boolean page_tid_uses_pre = false; + if (page_mode == Xopg_page_.Tid_edit) + Write_body_edit(bfr, data_raw, page_ns_id, page_tid); + else { + switch (page_tid) { + case Xow_page_tid.Tid_js: + case Xow_page_tid.Tid_css: + case Xow_page_tid.Tid_lua: Write_body_pre (bfr, app, wiki, data_raw, tmp_bfr); page_tid_uses_pre = true; break; + case Xow_page_tid.Tid_json: app.Wiki_mgr().Wdata_mgr().Write_json_as_html(bfr, page_ttl.Page_db(), data_raw); break; + case Xow_page_tid.Tid_wikitext: Write_body_wikitext (bfr, app, wiki, data_raw, hctx, page, page_tid, page_ns_id); break; + } + } + if ( wiki.Domain_tid() != Xow_domain_tid_.Int__home // allow home wiki to use javascript + && !page_tid_uses_pre) { // if .js, .css or .lua, skip test; may have js fragments, but entire text is escaped and put in pre; don't show spurious warning; DATE:2013-11-21 + app.Html_mgr().Js_cleaner().Clean_bfr(wiki, page_ttl, bfr, bfr_page_bgn); + } + } + } + private void Write_body_wikitext(Bry_bfr bfr, Xoae_app app, Xowe_wiki wiki, byte[] data_raw, Xoh_wtr_ctx hctx, Xoae_page page, byte page_tid, int ns_id) { + // dump and exit if pre-generated html from html dumps + byte[] hdump_data = page.Hdump_data().Body(); + if (Bry_.Len_gt_0(hdump_data)) { + bfr.Add(hdump_data); + return; + } + + // dump and exit if MediaWiki message; + if (ns_id == Xow_ns_.Id_mediawiki) { // if MediaWiki and wikitext, must be a message; convert args back to php; DATE:2014-06-13 + bfr.Add(Xoa_gfs_php_mgr.Xto_php(tmp_bfr, Bool_.N, data_raw)); + return; + } + + // if [[File]], add boilerplate header; note that html is XOWA-generated so does not need to be tidied + if (ns_id == Xow_ns_.Id_file) app.Ns_file_page_mgr().Bld_html(wiki, ctx, page, bfr, page.Ttl(), wiki.Cfg_file_page(), page.File_queue()); + + // get separate bfr; note that bfr already has and written to it, so this can't be passed to tidy; DATE:2014-06-11 + Bry_bfr tidy_bfr = app.Utl__bfr_mkr().Get_m001(); + + // write wikitext + if (page.Root() != null) // NOTE: will be null if blank; occurs for one test: Logo_has_correct_main_page; DATE:2015-09-29 + wiki.Html_mgr().Html_wtr().Write_all(tidy_bfr, page.Wikie().Parser_mgr().Ctx(), hctx, page.Root().Data_mid(), page.Root()); + + // if [[Category]], render rest of html (Subcategories; Pages; Files); note that a category may have other html which requires wikitext processing + if (ns_id == Xow_ns_.Id_category) wiki.Html_mgr().Ns_ctg().Bld_html(wiki, page, tidy_bfr); + + // tidy html + gplx.xowa.htmls.tidy.Xoh_tidy_mgr tidy_mgr = app.Html_mgr().Tidy_mgr(); + if (tidy_mgr.Enabled()) tidy_mgr.Run_tidy_html(page, tidy_bfr); + + // add back to main bfr + bfr.Add_bfr_and_clear(tidy_bfr); + tidy_bfr.Mkr_rls(); + + // handle Categories at bottom of page; note that html is XOWA-generated so does not need to be tidied + int ctgs_len = page.Category_list().length; + if ( ctgs_enabled + && ctgs_len > 0 + && !wiki.Html_mgr().Importing_ctgs() // do not show categories if importing categories, page will wait for category import to be done; DATE:2014-10-15 + ) { + app.Usr_dlg().Prog_many("", "", "loading categories: count=~{0}", ctgs_len); + if (app.Ctg_mgr().Pagecats_grouping_enabled()) + app.Ctg_mgr().Pagectgs_wtr().Write(bfr, wiki, page); + else + wiki.Html_mgr().Ctg_mgr().Bld(bfr, page, ctgs_len); + } + + // translate if variants are enabled + Xol_vnt_mgr vnt_mgr = wiki.Lang().Vnt_mgr(); + if (vnt_mgr.Enabled()) bfr.Add(vnt_mgr.Convert_lang().Parse_page(vnt_mgr.Cur_itm(), page.Revision_data().Id(), bfr.To_bry_and_clear())); + } + private void Write_body_pre(Bry_bfr bfr, Xoae_app app, Xowe_wiki wiki, byte[] data_raw, Bry_bfr tmp_bfr) { + Xoh_html_wtr_escaper.Escape(app.Parser_amp_mgr(), tmp_bfr, data_raw, 0, data_raw.length, false, false); + app.Html_mgr().Page_mgr().Content_code_fmtr().Bld_bfr_many(bfr, tmp_bfr); + tmp_bfr.Clear(); + } + private void Write_body_edit(Bry_bfr bfr, byte[] data_raw, int ns_id, byte page_tid) { + if ( ns_id == Xow_ns_.Id_mediawiki // if MediaWiki and wikitext, must be a message; convert args back to php; DATE:2014-06-13 + && page_tid == Xow_page_tid.Tid_wikitext + ) + data_raw = Xoa_gfs_php_mgr.Xto_php(tmp_bfr, Bool_.N, data_raw); + int data_raw_len = data_raw.length; + if (mgr.Html_capable()) + Xoh_html_wtr_escaper.Escape(page.Wikie().Appe().Parser_amp_mgr(), bfr, data_raw, 0, data_raw_len, false, false); // NOTE: must escape; assume that browser will automatically escape (<) (which Mozilla does) + else + bfr.Add(data_raw); + if (data_raw_len > 0) // do not add nl if empty String + bfr.Add_byte_nl(); // per MW:EditPage.php: "Ensure there's a newline at the end, otherwise adding lines is awkward." + } + private static final byte[] Content_editable_bry = Bry_.new_a7(" contenteditable=\"true\""); +} diff --git a/400_xowa/src/gplx/xowa/html/Xoh_page_wtr_wkr_.java b/400_xowa/src/gplx/xowa/htmls/Xoh_page_wtr_wkr_.java similarity index 88% rename from 400_xowa/src/gplx/xowa/html/Xoh_page_wtr_wkr_.java rename to 400_xowa/src/gplx/xowa/htmls/Xoh_page_wtr_wkr_.java index 81d5e7dfe..9256fc00b 100644 --- a/400_xowa/src/gplx/xowa/html/Xoh_page_wtr_wkr_.java +++ b/400_xowa/src/gplx/xowa/htmls/Xoh_page_wtr_wkr_.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.html; import gplx.*; import gplx.xowa.*; +package gplx.xowa.htmls; import gplx.*; import gplx.xowa.*; import gplx.langs.htmls.*; import gplx.xowa.xtns.relatedSites.*; -import gplx.xowa.nss.*; +import gplx.xowa.wikis.nss.*; import gplx.xowa.parsers.utils.*; public class Xoh_page_wtr_wkr_ { public static byte[] Bld_page_content_sub(Xoae_app app, Xowe_wiki wiki, Xoae_page page, Bry_bfr tmp_bfr) { @@ -30,7 +30,7 @@ public class Xoh_page_wtr_wkr_ { if (display_ttl != null) return display_ttl; // display_ttl explicitly set; use it if (ttl.Ns().Id() == Xow_ns_.Id_special) { // special: omit query args, else excessively long titles: EX:"Special:Search/earth?fulltext=y&xowa page index=1" tmp_bfr.Add(ttl.Ns().Name_txt_w_colon()).Add(ttl.Page_txt_wo_qargs()); - return tmp_bfr.Xto_bry_and_clear(); + return tmp_bfr.To_bry_and_clear(); } else return ttl.Full_txt(); // NOTE: include ns with ttl as per defect d88a87b3 @@ -40,7 +40,7 @@ public class Xoh_page_wtr_wkr_ { if (head_end == null) return; int insert_pos = Bry_find_.Find_fwd(html_bfr.Bfr(), Html_tag_.Head_rhs); if (insert_pos == Bry_find_.Not_found) { - Gfo_usr_dlg_.I.Warn_many("", "", "could not find "); + Gfo_usr_dlg_.Instance.Warn_many("", "", "could not find "); return; } html_bfr.Insert_at(insert_pos, head_end); @@ -50,7 +50,7 @@ public class Xoh_page_wtr_wkr_ { if (html_end == null) return; int insert_pos = Bry_find_.Find_bwd(html_bfr.Bfr(), Html_tag_.Html_rhs, html_bfr.Len()); if (insert_pos == Bry_find_.Not_found) { - Gfo_usr_dlg_.I.Warn_many("", "", "could not find "); + Gfo_usr_dlg_.Instance.Warn_many("", "", "could not find "); return; } html_bfr.Insert_at(insert_pos, html_end); diff --git a/400_xowa/src/gplx/xowa/html/Xoh_page_wtr_wkr_tst.java b/400_xowa/src/gplx/xowa/htmls/Xoh_page_wtr_wkr_tst.java similarity index 81% rename from 400_xowa/src/gplx/xowa/html/Xoh_page_wtr_wkr_tst.java rename to 400_xowa/src/gplx/xowa/htmls/Xoh_page_wtr_wkr_tst.java index 8ddd25412..07deed2d4 100644 --- a/400_xowa/src/gplx/xowa/html/Xoh_page_wtr_wkr_tst.java +++ b/400_xowa/src/gplx/xowa/htmls/Xoh_page_wtr_wkr_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.html; import gplx.*; import gplx.xowa.*; +package gplx.xowa.htmls; import gplx.*; import gplx.xowa.*; import org.junit.*; -import gplx.xowa.gui.*; import gplx.xowa.pages.*; -public class Xoh_page_wtr_wkr_tst { - @Before public void init() {fxt.Clear();} private Xoh_page_wtr_wkr_fxt fxt = new Xoh_page_wtr_wkr_fxt(); +import gplx.xowa.guis.*; import gplx.xowa.wikis.pages.*; +public class Xoh_page_wtr_wkr_tst { + @Before public void init() {fxt.Clear();} private Xoh_page_wtr_fxt fxt = new Xoh_page_wtr_fxt(); @Test public void Page_name() { fxt.Test_page_name_by_ttl("Earth", "Earth"); fxt.Test_page_name_by_ttl("File:A.png", "File:A.png"); @@ -39,7 +39,7 @@ public class Xoh_page_wtr_wkr_tst { fxt.Test_read("MediaWiki:Gadget.js", """, "
&quot;
"); } } -class Xoh_page_wtr_wkr_fxt { +class Xoh_page_wtr_fxt { public void Clear() { if (app == null) { app = Xoa_app_fxt.app_(); @@ -57,19 +57,19 @@ class Xoh_page_wtr_wkr_fxt { wiki.Html_mgr().Page_wtr_mgr().Html_capable_(true); Xoae_page page = wiki.Parser_mgr().Ctx().Cur_page(); page.Data_raw_(Bry_.new_u8(raw)); - Xohe_page_wtr_mgr mgr = wiki.Html_mgr().Page_wtr_mgr(); - Xoh_page_wtr_wkr wkr = mgr.Wkr(Xopg_view_mode.Tid_edit).Page_(page).Mgr_(mgr); - wkr.XferAry(tmp_bfr, 0); - Tfds.Eq(expd, tmp_bfr.Xto_str_and_clear()); + Xoh_page_wtr_mgr mgr = wiki.Html_mgr().Page_wtr_mgr(); + Xoh_page_wtr_wkr wkr = mgr.Wkr(Xopg_page_.Tid_edit); + wkr.Write_body(tmp_bfr, Xoh_wtr_ctx.Basic, page); + Tfds.Eq(expd, tmp_bfr.To_str_and_clear()); } public void Test_read(String page_name, String page_text, String expd) { wiki.Html_mgr().Page_wtr_mgr().Html_capable_(true); Xoae_page page = wiki.Parser_mgr().Ctx().Cur_page(); page.Ttl_(Xoa_ttl.parse(wiki, Bry_.new_a7(page_name))); page.Data_raw_(Bry_.new_u8(page_text)); - Xohe_page_wtr_mgr mgr = wiki.Html_mgr().Page_wtr_mgr(); - Xoh_page_wtr_wkr wkr = mgr.Wkr(Xopg_view_mode.Tid_read).Page_(page).Mgr_(mgr); - wkr.XferAry(tmp_bfr, 0); - Tfds.Eq(expd, tmp_bfr.Xto_str_and_clear()); + Xoh_page_wtr_mgr mgr = wiki.Html_mgr().Page_wtr_mgr(); + Xoh_page_wtr_wkr wkr = mgr.Wkr(Xopg_page_.Tid_read); + wkr.Write_body(tmp_bfr, Xoh_wtr_ctx.Basic, page); + Tfds.Eq(expd, tmp_bfr.To_str_and_clear()); } } diff --git a/400_xowa/src/gplx/xowa/html/Xoh_wtr_ctx.java b/400_xowa/src/gplx/xowa/htmls/Xoh_wtr_ctx.java similarity index 94% rename from 400_xowa/src/gplx/xowa/html/Xoh_wtr_ctx.java rename to 400_xowa/src/gplx/xowa/htmls/Xoh_wtr_ctx.java index b11eb0c46..dbebf02f6 100644 --- a/400_xowa/src/gplx/xowa/html/Xoh_wtr_ctx.java +++ b/400_xowa/src/gplx/xowa/htmls/Xoh_wtr_ctx.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.html; import gplx.*; import gplx.xowa.*; +package gplx.xowa.htmls; import gplx.*; import gplx.xowa.*; public class Xoh_wtr_ctx { Xoh_wtr_ctx(byte mode) {this.mode = mode;} private byte mode; public boolean Mode_is_alt() {return mode == Mode_alt;} diff --git a/400_xowa/src/gplx/xowa/html/Xohp_ctg_grp_mgr.java b/400_xowa/src/gplx/xowa/htmls/Xohp_ctg_grp_mgr.java similarity index 87% rename from 400_xowa/src/gplx/xowa/html/Xohp_ctg_grp_mgr.java rename to 400_xowa/src/gplx/xowa/htmls/Xohp_ctg_grp_mgr.java index e541d0747..fb6c84e97 100644 --- a/400_xowa/src/gplx/xowa/html/Xohp_ctg_grp_mgr.java +++ b/400_xowa/src/gplx/xowa/htmls/Xohp_ctg_grp_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.html; import gplx.*; import gplx.xowa.*; -import gplx.xowa.langs.*; +package gplx.xowa.htmls; import gplx.*; import gplx.xowa.*; +import gplx.xowa.langs.*; import gplx.xowa.langs.msgs.*; public class Xohp_ctg_grp_mgr { final Bry_fmtr grp_fmtr = Bry_fmtr.new_(String_.Concat_lines_nl_skip_last ( "
" @@ -44,7 +44,7 @@ public class Xohp_ctg_grp_mgr { } class Xoh_ctg_itm_fmtr implements Bry_fmtr_arg { public void Set(Xoae_page page, Bry_fmtr itm_fmtr) {this.page = page; this.itm_fmtr = itm_fmtr;} private Xoae_page page; Bry_fmtr itm_fmtr; - public void XferAry(Bry_bfr bfr, int idx) { + public void Fmt__do(Bry_bfr bfr) { int ctgs_len = page.Category_list().length; Bry_bfr tmp_bfr = Xoa_app_.Utl__bfr_mkr().Get_b128(); Bry_bfr tmp_href = Xoa_app_.Utl__bfr_mkr().Get_b128(); @@ -54,8 +54,8 @@ class Xoh_ctg_itm_fmtr implements Bry_fmtr_arg { for (int i = 0; i < ctgs_len; i++) { byte[] page_name = page.Category_list()[i]; tmp_bfr.Add(ctg_prefix).Add(page_name); - page.Wikie().Appe().Html__href_wtr().Build_to_bfr(tmp_href, app, wiki.Domain_bry(), wiki.Ttl_parse(tmp_bfr.Xto_bry_and_clear())); - itm_fmtr.Bld_bfr(bfr, tmp_href.Xto_bry_and_clear(), page_name, page_name); + page.Wikie().Appe().Html__href_wtr().Build_to_bfr(tmp_href, app, wiki.Domain_bry(), wiki.Ttl_parse(tmp_bfr.To_bry_and_clear())); + itm_fmtr.Bld_bfr(bfr, tmp_href.To_bry_and_clear(), page_name, page_name); } tmp_bfr.Mkr_rls(); tmp_href.Mkr_rls(); diff --git a/400_xowa/src/gplx/xowa/html/Xohp_ctg_grp_mgr_tst.java b/400_xowa/src/gplx/xowa/htmls/Xohp_ctg_grp_mgr_tst.java similarity index 92% rename from 400_xowa/src/gplx/xowa/html/Xohp_ctg_grp_mgr_tst.java rename to 400_xowa/src/gplx/xowa/htmls/Xohp_ctg_grp_mgr_tst.java index c8ec47fc4..22b4bf137 100644 --- a/400_xowa/src/gplx/xowa/html/Xohp_ctg_grp_mgr_tst.java +++ b/400_xowa/src/gplx/xowa/htmls/Xohp_ctg_grp_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.html; import gplx.*; import gplx.xowa.*; +package gplx.xowa.htmls; import gplx.*; import gplx.xowa.*; import org.junit.*; public class Xohp_ctg_grp_mgr_tst { Xoh_ctg_mgr_fxt fxt = new Xoh_ctg_mgr_fxt(); @@ -51,6 +51,6 @@ class Xoh_ctg_mgr_fxt { 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()); + Tfds.Eq_str_lines(expd, tmp_bfr.To_str_and_clear()); } } diff --git a/400_xowa/src/gplx/xowa/html/Xow_html_mgr.java b/400_xowa/src/gplx/xowa/htmls/Xow_html_mgr.java similarity index 87% rename from 400_xowa/src/gplx/xowa/html/Xow_html_mgr.java rename to 400_xowa/src/gplx/xowa/htmls/Xow_html_mgr.java index d79b68f4c..70a3cc06b 100644 --- a/400_xowa/src/gplx/xowa/html/Xow_html_mgr.java +++ b/400_xowa/src/gplx/xowa/htmls/Xow_html_mgr.java @@ -15,16 +15,16 @@ 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.html; import gplx.*; import gplx.xowa.*; +package gplx.xowa.htmls; 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.*; +import gplx.xowa.wikis.ctgs.*; import gplx.xowa.xtns.gallery.*; +import gplx.xowa.htmls.portal.*; import gplx.xowa.htmls.tocs.*; import gplx.xowa.wikis.modules.*; import gplx.xowa.htmls.hzips.*; public class Xow_html_mgr implements GfoInvkAble { public Xow_html_mgr(Xowe_wiki wiki) { this.wiki = wiki; html_wtr = new Xoh_html_wtr(wiki, this); Xoae_app app = wiki.Appe(); - page_wtr_mgr = new Xohe_page_wtr_mgr(app.Gui_mgr().Kit().Tid() != gplx.gfui.Gfui_kit_.Swing_tid); // reverse logic to handle swt,drd but not mem + page_wtr_mgr = new Xoh_page_wtr_mgr(app.Gui_mgr().Kit().Tid() != gplx.gfui.Gfui_kit_.Swing_tid); // reverse logic to handle swt,drd but not mem Io_url file_dir = app.Fsys_mgr().Bin_xowa_file_dir().GenSubDir_nest("mediawiki.file"); img_media_play_btn = Xoa_app_.Utl__encoder_mgr().Fsys().Encode_http(file_dir.GenSubFil("play.png")); img_media_info_btn = Xoa_app_.Utl__encoder_mgr().Fsys().Encode_http(file_dir.GenSubFil("info.png")); @@ -39,12 +39,12 @@ public class Xow_html_mgr implements GfoInvkAble { html_wtr.Init_by_wiki(wiki); module_mgr.Init_by_wiki(wiki); } - public void Init_by_lang(Xol_lang lang) { + public void Init_by_lang(Xol_lang_itm lang) { portal_mgr.Init_by_lang(lang); } public Xowe_wiki Wiki() {return wiki;} private Xowe_wiki wiki; public Xoh_html_wtr Html_wtr() {return html_wtr;} private Xoh_html_wtr html_wtr; - public Xohe_page_wtr_mgr Page_wtr_mgr() {return page_wtr_mgr;} private Xohe_page_wtr_mgr page_wtr_mgr; + public Xoh_page_wtr_mgr Page_wtr_mgr() {return page_wtr_mgr;} private Xoh_page_wtr_mgr page_wtr_mgr; public Xow_portal_mgr Portal_mgr() {return portal_mgr;} private Xow_portal_mgr portal_mgr; public Xow_toc_mgr Toc_mgr() {return toc_mgr;} private Xow_toc_mgr toc_mgr = new Xow_toc_mgr(); public Xow_module_mgr Head_mgr() {return module_mgr;} private Xow_module_mgr module_mgr; diff --git a/400_xowa/src/gplx/xowa/html/bridges/Bridge_cmd_itm.java b/400_xowa/src/gplx/xowa/htmls/bridges/Bridge_cmd_itm.java similarity index 89% rename from 400_xowa/src/gplx/xowa/html/bridges/Bridge_cmd_itm.java rename to 400_xowa/src/gplx/xowa/htmls/bridges/Bridge_cmd_itm.java index 76a6bbb3b..6e58c5fc2 100644 --- a/400_xowa/src/gplx/xowa/html/bridges/Bridge_cmd_itm.java +++ b/400_xowa/src/gplx/xowa/htmls/bridges/Bridge_cmd_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.html.bridges; import gplx.*; import gplx.xowa.*; import gplx.xowa.html.*; +package gplx.xowa.htmls.bridges; import gplx.*; import gplx.xowa.*; import gplx.xowa.htmls.*; import gplx.langs.jsons.*; public interface Bridge_cmd_itm { byte[] Key(); diff --git a/400_xowa/src/gplx/xowa/html/bridges/Bridge_cmd_mgr.java b/400_xowa/src/gplx/xowa/htmls/bridges/Bridge_cmd_mgr.java similarity index 94% rename from 400_xowa/src/gplx/xowa/html/bridges/Bridge_cmd_mgr.java rename to 400_xowa/src/gplx/xowa/htmls/bridges/Bridge_cmd_mgr.java index faffb4d41..939277f75 100644 --- a/400_xowa/src/gplx/xowa/html/bridges/Bridge_cmd_mgr.java +++ b/400_xowa/src/gplx/xowa/htmls/bridges/Bridge_cmd_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.html.bridges; import gplx.*; import gplx.xowa.*; import gplx.xowa.html.*; +package gplx.xowa.htmls.bridges; import gplx.*; import gplx.xowa.*; import gplx.xowa.htmls.*; import gplx.langs.jsons.*; public class Bridge_cmd_mgr { private final Json_parser parser; diff --git a/400_xowa/src/gplx/xowa/html/bridges/Bridge_msg_bldr.java b/400_xowa/src/gplx/xowa/htmls/bridges/Bridge_msg_bldr.java similarity index 96% rename from 400_xowa/src/gplx/xowa/html/bridges/Bridge_msg_bldr.java rename to 400_xowa/src/gplx/xowa/htmls/bridges/Bridge_msg_bldr.java index 4d9f24a28..dd90387cf 100644 --- a/400_xowa/src/gplx/xowa/html/bridges/Bridge_msg_bldr.java +++ b/400_xowa/src/gplx/xowa/htmls/bridges/Bridge_msg_bldr.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.html.bridges; import gplx.*; import gplx.xowa.*; import gplx.xowa.html.*; +package gplx.xowa.htmls.bridges; import gplx.*; import gplx.xowa.*; import gplx.xowa.htmls.*; import gplx.langs.jsons.*; public class Bridge_msg_bldr { private final Json_wtr wtr = new Json_wtr(); diff --git a/400_xowa/src/gplx/xowa/html/bridges/Bridge_msg_bldr_tst.java b/400_xowa/src/gplx/xowa/htmls/bridges/Bridge_msg_bldr_tst.java similarity index 92% rename from 400_xowa/src/gplx/xowa/html/bridges/Bridge_msg_bldr_tst.java rename to 400_xowa/src/gplx/xowa/htmls/bridges/Bridge_msg_bldr_tst.java index 3c54cb16c..792f5ee9d 100644 --- a/400_xowa/src/gplx/xowa/html/bridges/Bridge_msg_bldr_tst.java +++ b/400_xowa/src/gplx/xowa/htmls/bridges/Bridge_msg_bldr_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.html.bridges; import gplx.*; import gplx.xowa.*; import gplx.xowa.html.*; +package gplx.xowa.htmls.bridges; import gplx.*; import gplx.xowa.*; import gplx.xowa.htmls.*; import org.junit.*; public class Bridge_msg_bldr_tst { @Before public void init() {fxt.Clear();} private Bridge_msg_bldr_fxt fxt = new Bridge_msg_bldr_fxt(); diff --git a/400_xowa/src/gplx/xowa/html/bridges/Gfo_tree_itm.java b/400_xowa/src/gplx/xowa/htmls/bridges/Gfo_tree_itm.java similarity index 91% rename from 400_xowa/src/gplx/xowa/html/bridges/Gfo_tree_itm.java rename to 400_xowa/src/gplx/xowa/htmls/bridges/Gfo_tree_itm.java index e26f41001..9fd07939e 100644 --- a/400_xowa/src/gplx/xowa/html/bridges/Gfo_tree_itm.java +++ b/400_xowa/src/gplx/xowa/htmls/bridges/Gfo_tree_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.html.bridges; import gplx.*; import gplx.xowa.*; import gplx.xowa.html.*; +package gplx.xowa.htmls.bridges; import gplx.*; import gplx.xowa.*; import gplx.xowa.htmls.*; interface Gfo_tree_itm { int Tid(); } @@ -32,7 +32,7 @@ class Gfo_tree_data implements Gfo_tree_itm { public int Val_tid() {return val_tid;} private final int val_tid; } class Gfo_tree_list implements Gfo_tree_itm { - private final Ordered_hash list = Ordered_hash_.new_(); + private final Ordered_hash list = Ordered_hash_.New(); public Gfo_tree_list(String key) {this.key = key;} public int Tid() {return Gfo_tree_itm_.Tid_list;} public String Key() {return key;} private final String key; diff --git a/400_xowa/src/gplx/xowa/html/bridges/Xoh_bridge_mgr.java b/400_xowa/src/gplx/xowa/htmls/bridges/Xoh_bridge_mgr.java similarity index 87% rename from 400_xowa/src/gplx/xowa/html/bridges/Xoh_bridge_mgr.java rename to 400_xowa/src/gplx/xowa/htmls/bridges/Xoh_bridge_mgr.java index 3a0f850c2..b7fddbb49 100644 --- a/400_xowa/src/gplx/xowa/html/bridges/Xoh_bridge_mgr.java +++ b/400_xowa/src/gplx/xowa/htmls/bridges/Xoh_bridge_mgr.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.html.bridges; import gplx.*; import gplx.xowa.*; import gplx.xowa.html.*; +package gplx.xowa.htmls.bridges; import gplx.*; import gplx.xowa.*; import gplx.xowa.htmls.*; import gplx.langs.jsons.*; -import gplx.xowa.html.bridges.dbuis.tbls.*; +import gplx.xowa.htmls.bridges.dbuis.tbls.*; public class Xoh_bridge_mgr { public Xoh_bridge_mgr(Json_parser parser) {this.cmd_mgr = new Bridge_cmd_mgr(parser);} public Bridge_cmd_mgr Cmd_mgr() {return cmd_mgr;} private final Bridge_cmd_mgr cmd_mgr; diff --git a/400_xowa/src/gplx/xowa/html/bridges/dbuis/Dbui_cmd_mgr.java b/400_xowa/src/gplx/xowa/htmls/bridges/dbuis/Dbui_cmd_mgr.java similarity index 91% rename from 400_xowa/src/gplx/xowa/html/bridges/dbuis/Dbui_cmd_mgr.java rename to 400_xowa/src/gplx/xowa/htmls/bridges/dbuis/Dbui_cmd_mgr.java index 62548f157..2c86ac54c 100644 --- a/400_xowa/src/gplx/xowa/html/bridges/dbuis/Dbui_cmd_mgr.java +++ b/400_xowa/src/gplx/xowa/htmls/bridges/dbuis/Dbui_cmd_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.html.bridges.dbuis; import gplx.*; import gplx.xowa.*; import gplx.xowa.html.*; import gplx.xowa.html.bridges.*; -import gplx.langs.jsons.*; import gplx.xowa.html.bridges.dbuis.tbls.*; +package gplx.xowa.htmls.bridges.dbuis; import gplx.*; import gplx.xowa.*; import gplx.xowa.htmls.*; import gplx.xowa.htmls.bridges.*; +import gplx.langs.jsons.*; import gplx.xowa.htmls.bridges.dbuis.tbls.*; public class Dbui_cmd_mgr { private final Hash_adp_bry hash = Hash_adp_bry.cs(); private boolean init; @@ -54,7 +54,7 @@ public class Dbui_cmd_mgr { } return rv; } - public static final Dbui_cmd_mgr I = new Dbui_cmd_mgr(); Dbui_cmd_mgr() {} + public static final Dbui_cmd_mgr Instance = new Dbui_cmd_mgr(); Dbui_cmd_mgr() {} private static final byte[] Arg_tbl_key = Bry_.new_a7("tbl_key"), Arg_row_pkey = Bry_.new_a7("row_pkey"), Arg_row_id = Bry_.new_a7("row_id") , Arg_vals = Bry_.new_a7("vals"), Arg_key = Bry_.new_a7("key"), Arg_val = Bry_.new_a7("val") diff --git a/400_xowa/src/gplx/xowa/html/bridges/dbuis/fmtrs/Dbui_cells_fmtr.java b/400_xowa/src/gplx/xowa/htmls/bridges/dbuis/fmtrs/Dbui_cells_fmtr.java similarity index 86% rename from 400_xowa/src/gplx/xowa/html/bridges/dbuis/fmtrs/Dbui_cells_fmtr.java rename to 400_xowa/src/gplx/xowa/htmls/bridges/dbuis/fmtrs/Dbui_cells_fmtr.java index f1c81135f..cfd173f7b 100644 --- a/400_xowa/src/gplx/xowa/html/bridges/dbuis/fmtrs/Dbui_cells_fmtr.java +++ b/400_xowa/src/gplx/xowa/htmls/bridges/dbuis/fmtrs/Dbui_cells_fmtr.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.html.bridges.dbuis.fmtrs; import gplx.*; import gplx.xowa.*; import gplx.xowa.html.*; import gplx.xowa.html.bridges.*; import gplx.xowa.html.bridges.dbuis.*; -import gplx.xowa.html.bridges.dbuis.tbls.*; +package gplx.xowa.htmls.bridges.dbuis.fmtrs; import gplx.*; import gplx.xowa.*; import gplx.xowa.htmls.*; import gplx.xowa.htmls.bridges.*; import gplx.xowa.htmls.bridges.dbuis.*; +import gplx.xowa.htmls.bridges.dbuis.tbls.*; public class Dbui_cells_fmtr implements Bry_fmtr_arg { private final Dbui_cell_fmtr cell_fmtr = new Dbui_cell_fmtr(); private final Dbui_btn_fmtr btn_fmtr = new Dbui_btn_fmtr(); @@ -29,7 +29,7 @@ public class Dbui_cells_fmtr implements Bry_fmtr_arg { this.row_key = row_key; this.row_itm = row_itm; return this; } - public void XferAry(Bry_bfr bfr, int idx) { + public void Fmt__do(Bry_bfr bfr) { fmtr.Bld_bfr_many(bfr, cell_fmtr.Init(row_key, row_itm), btn_fmtr.Init(row_key, btns)); } private static final Bry_fmtr fmtr = Bry_fmtr.new_(String_.Concat_lines_nl_skip_last @@ -44,7 +44,7 @@ class Dbui_cell_fmtr implements Bry_fmtr_arg { private Dbui_val_fmtr val_fmtr; public void Ctor(Dbui_val_fmtr val_fmtr) {this.val_fmtr = val_fmtr;} public Dbui_cell_fmtr Init(byte[] row_key, Dbui_row_itm row_itm) {this.row_key = row_key; this.row_itm = row_itm; return this;} - public void XferAry(Bry_bfr bfr, int idx) { + public void Fmt__do(Bry_bfr bfr) { Dbui_col_itm[] cols = row_itm.Tbl().Cols(); Dbui_val_itm[] vals = row_itm.Vals(); int len = vals.length; for (int i = 0; i < len; ++i) { @@ -62,9 +62,9 @@ class Dbui_btn_fmtr implements Bry_fmtr_arg { public Dbui_btn_fmtr Init(byte[] row_key, Dbui_btn_itm[] btns) { this.row_key = row_key; this.btns = btns; return this; } - public void XferAry(Bry_bfr bfr, int idx) { + public void Fmt__do(Bry_bfr bfr) { int len = btns.length; - Io_url img_dir = gplx.xowa.html.heads.Xoh_head_itm__dbui.Img_dir(); + Io_url img_dir = gplx.xowa.htmls.heads.Xoh_head_itm__dbui.Img_dir(); for (int i = 0; i < len; ++i) { Dbui_btn_itm btn = btns[i]; fmtr.Bld_bfr_many(bfr, row_key, btn.Cmd(), img_dir.GenSubFil(btn.Img()).To_http_file_bry(), btn.Text()); diff --git a/400_xowa/src/gplx/xowa/html/bridges/dbuis/fmtrs/Dbui_tbl_fmtr.java b/400_xowa/src/gplx/xowa/htmls/bridges/dbuis/fmtrs/Dbui_tbl_fmtr.java similarity index 88% rename from 400_xowa/src/gplx/xowa/html/bridges/dbuis/fmtrs/Dbui_tbl_fmtr.java rename to 400_xowa/src/gplx/xowa/htmls/bridges/dbuis/fmtrs/Dbui_tbl_fmtr.java index f414ee734..05b7aa181 100644 --- a/400_xowa/src/gplx/xowa/html/bridges/dbuis/fmtrs/Dbui_tbl_fmtr.java +++ b/400_xowa/src/gplx/xowa/htmls/bridges/dbuis/fmtrs/Dbui_tbl_fmtr.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.html.bridges.dbuis.fmtrs; import gplx.*; import gplx.xowa.*; import gplx.xowa.html.*; import gplx.xowa.html.bridges.*; import gplx.xowa.html.bridges.dbuis.*; -import gplx.xowa.html.bridges.dbuis.tbls.*; +package gplx.xowa.htmls.bridges.dbuis.fmtrs; import gplx.*; import gplx.xowa.*; import gplx.xowa.htmls.*; import gplx.xowa.htmls.bridges.*; import gplx.xowa.htmls.bridges.dbuis.*; +import gplx.xowa.htmls.bridges.dbuis.tbls.*; public class Dbui_tbl_fmtr { private final Dbui_head_cell_fmtr head_cell_fmtr = new Dbui_head_cell_fmtr(); private final Dbui_row_fmtr row_fmtr = new Dbui_row_fmtr(); @@ -35,7 +35,7 @@ public class Dbui_tbl_fmtr { class Dbui_head_cell_fmtr implements Bry_fmtr_arg { private Dbui_tbl_itm tbl; public Dbui_head_cell_fmtr Init(Dbui_tbl_itm tbl) {this.tbl = tbl; return this;} - public void XferAry(Bry_bfr bfr, int idx) { + public void Fmt__do(Bry_bfr bfr) { Dbui_col_itm[] cols = tbl.Cols(); int len = cols.length; for (int i = 0; i < len; ++i) { Dbui_col_itm col = cols[i]; @@ -54,14 +54,14 @@ class Dbui_row_fmtr implements Bry_fmtr_arg { private final Bry_bfr row_key_bfr = Bry_bfr.new_(255); private Dbui_tbl_itm tbl; private Dbui_row_itm[] rows; public Dbui_row_fmtr Init(Dbui_tbl_itm tbl, Dbui_row_itm[] rows) {this.tbl = tbl; this.rows = rows; return this;} - public void XferAry(Bry_bfr bfr, int idx) { + public void Fmt__do(Bry_bfr bfr) { byte[] tbl_key = tbl.Key(); int len = rows.length; cells_fmtr.Ctor(val_fmtr, tbl.View_btns()); for (int i = 0; i < len; ++i) { Dbui_row_itm row = rows[i]; row_key_bfr.Add(tbl_key).Add_byte(Byte_ascii.Underline).Add_int_variable(i); - byte[] row_key = row_key_bfr.Xto_bry_and_clear(); + byte[] row_key = row_key_bfr.To_bry_and_clear(); fmtr.Bld_bfr_many(bfr, row_key, row.Pkey(), cells_fmtr.Init(row_key, row)); } } diff --git a/400_xowa/src/gplx/xowa/html/bridges/dbuis/fmtrs/Dbui_tbl_fmtr_tst.java b/400_xowa/src/gplx/xowa/htmls/bridges/dbuis/fmtrs/Dbui_tbl_fmtr_tst.java similarity index 81% rename from 400_xowa/src/gplx/xowa/html/bridges/dbuis/fmtrs/Dbui_tbl_fmtr_tst.java rename to 400_xowa/src/gplx/xowa/htmls/bridges/dbuis/fmtrs/Dbui_tbl_fmtr_tst.java index 10a4e9999..d497e0215 100644 --- a/400_xowa/src/gplx/xowa/html/bridges/dbuis/fmtrs/Dbui_tbl_fmtr_tst.java +++ b/400_xowa/src/gplx/xowa/htmls/bridges/dbuis/fmtrs/Dbui_tbl_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.html.bridges.dbuis.fmtrs; import gplx.*; import gplx.xowa.*; import gplx.xowa.html.*; import gplx.xowa.html.bridges.*; import gplx.xowa.html.bridges.dbuis.*; -import gplx.xowa.html.bridges.dbuis.tbls.*; +package gplx.xowa.htmls.bridges.dbuis.fmtrs; import gplx.*; import gplx.xowa.*; import gplx.xowa.htmls.*; import gplx.xowa.htmls.bridges.*; import gplx.xowa.htmls.bridges.dbuis.*; +import gplx.xowa.htmls.bridges.dbuis.tbls.*; import org.junit.*; public class Dbui_tbl_fmtr_tst { @Before public void init() {fxt.Clear();} private final Dbui_tbl_fmtr_fxt fxt = new Dbui_tbl_fmtr_fxt(); @@ -36,6 +36,6 @@ class Dbui_tbl_fmtr_fxt { } public void Test_write(Dbui_tbl_itm tbl, String expd) { tbl_fmtr.Write(bfr, tbl, null, null, null); - Tfds.Eq_str_lines(expd, bfr.Xto_str_and_clear()); + Tfds.Eq_str_lines(expd, bfr.To_str_and_clear()); } } diff --git a/400_xowa/src/gplx/xowa/html/bridges/dbuis/fmtrs/Dbui_val_fmtr.java b/400_xowa/src/gplx/xowa/htmls/bridges/dbuis/fmtrs/Dbui_val_fmtr.java similarity index 87% rename from 400_xowa/src/gplx/xowa/html/bridges/dbuis/fmtrs/Dbui_val_fmtr.java rename to 400_xowa/src/gplx/xowa/htmls/bridges/dbuis/fmtrs/Dbui_val_fmtr.java index 471578001..70dc9d4a7 100644 --- a/400_xowa/src/gplx/xowa/html/bridges/dbuis/fmtrs/Dbui_val_fmtr.java +++ b/400_xowa/src/gplx/xowa/htmls/bridges/dbuis/fmtrs/Dbui_val_fmtr.java @@ -15,22 +15,22 @@ 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.html.bridges.dbuis.fmtrs; import gplx.*; import gplx.xowa.*; import gplx.xowa.html.*; import gplx.xowa.html.bridges.*; import gplx.xowa.html.bridges.dbuis.*; -import gplx.xowa.html.bridges.dbuis.tbls.*; +package gplx.xowa.htmls.bridges.dbuis.fmtrs; import gplx.*; import gplx.xowa.*; import gplx.xowa.htmls.*; import gplx.xowa.htmls.bridges.*; import gplx.xowa.htmls.bridges.dbuis.*; +import gplx.xowa.htmls.bridges.dbuis.tbls.*; public interface Dbui_val_fmtr { Dbui_val_fmtr Init(Dbui_col_itm col, byte[] row_id, Dbui_val_itm val); } class Dbui_val_fmtr__view implements Bry_fmtr_arg, Dbui_val_fmtr { private Dbui_val_itm val; public Dbui_val_fmtr Init(Dbui_col_itm col, byte[] row_id, Dbui_val_itm val) {this.val = val; return this;} - public void XferAry(Bry_bfr bfr, int idx) { + public void Fmt__do(Bry_bfr bfr) { bfr.Add(val.Html()); } } class Dbui_val_fmtr__edit implements Bry_fmtr_arg, Dbui_val_fmtr { private Dbui_col_itm col; private byte[] row_id; private Dbui_val_itm val; public Dbui_val_fmtr Init(Dbui_col_itm col, byte[] row_id, Dbui_val_itm val) {this.col = col; this.row_id = row_id; this.val = val; return this;} - public void XferAry(Bry_bfr bfr, int idx) { + public void Fmt__do(Bry_bfr bfr) { switch (col.Type()) { case Dbui_col_itm.Type_id_str: input_fmtr_str.Bld_bfr_many(bfr, col.Key(), col.Width(), val.Data(), row_id); break; case Dbui_col_itm.Type_id_text: textarea_fmtr_str.Bld_bfr_many(bfr, col.Key(), col.Width(), val.Data(), row_id); break; diff --git a/400_xowa/src/gplx/xowa/html/bridges/dbuis/fmtrs/Dbui_val_fmtr_.java b/400_xowa/src/gplx/xowa/htmls/bridges/dbuis/fmtrs/Dbui_val_fmtr_.java similarity index 82% rename from 400_xowa/src/gplx/xowa/html/bridges/dbuis/fmtrs/Dbui_val_fmtr_.java rename to 400_xowa/src/gplx/xowa/htmls/bridges/dbuis/fmtrs/Dbui_val_fmtr_.java index 64ddb1456..ad1eba6ca 100644 --- a/400_xowa/src/gplx/xowa/html/bridges/dbuis/fmtrs/Dbui_val_fmtr_.java +++ b/400_xowa/src/gplx/xowa/htmls/bridges/dbuis/fmtrs/Dbui_val_fmtr_.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.html.bridges.dbuis.fmtrs; import gplx.*; import gplx.xowa.*; import gplx.xowa.html.*; import gplx.xowa.html.bridges.*; import gplx.xowa.html.bridges.dbuis.*; +package gplx.xowa.htmls.bridges.dbuis.fmtrs; import gplx.*; import gplx.xowa.*; import gplx.xowa.htmls.*; import gplx.xowa.htmls.bridges.*; import gplx.xowa.htmls.bridges.dbuis.*; public class Dbui_val_fmtr_ { public static Dbui_val_fmtr new_view() {return new Dbui_val_fmtr__view();} public static Dbui_val_fmtr new_edit() {return new Dbui_val_fmtr__edit();} diff --git a/400_xowa/src/gplx/xowa/html/bridges/dbuis/tbls/Dbui_btn_itm.java b/400_xowa/src/gplx/xowa/htmls/bridges/dbuis/tbls/Dbui_btn_itm.java similarity index 85% rename from 400_xowa/src/gplx/xowa/html/bridges/dbuis/tbls/Dbui_btn_itm.java rename to 400_xowa/src/gplx/xowa/htmls/bridges/dbuis/tbls/Dbui_btn_itm.java index c9ead143c..ec6530f9a 100644 --- a/400_xowa/src/gplx/xowa/html/bridges/dbuis/tbls/Dbui_btn_itm.java +++ b/400_xowa/src/gplx/xowa/htmls/bridges/dbuis/tbls/Dbui_btn_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.html.bridges.dbuis.tbls; import gplx.*; import gplx.xowa.*; import gplx.xowa.html.*; import gplx.xowa.html.bridges.*; import gplx.xowa.html.bridges.dbuis.*; +package gplx.xowa.htmls.bridges.dbuis.tbls; import gplx.*; import gplx.xowa.*; import gplx.xowa.htmls.*; import gplx.xowa.htmls.bridges.*; import gplx.xowa.htmls.bridges.dbuis.*; public class Dbui_btn_itm { public Dbui_btn_itm(String cmd, String img, String text) {this.cmd = cmd; this.img = img; this.text = text;} public String Key() {return text;} diff --git a/400_xowa/src/gplx/xowa/html/bridges/dbuis/tbls/Dbui_col_itm.java b/400_xowa/src/gplx/xowa/htmls/bridges/dbuis/tbls/Dbui_col_itm.java similarity index 86% rename from 400_xowa/src/gplx/xowa/html/bridges/dbuis/tbls/Dbui_col_itm.java rename to 400_xowa/src/gplx/xowa/htmls/bridges/dbuis/tbls/Dbui_col_itm.java index 38b859a9f..2c4e6e38c 100644 --- a/400_xowa/src/gplx/xowa/html/bridges/dbuis/tbls/Dbui_col_itm.java +++ b/400_xowa/src/gplx/xowa/htmls/bridges/dbuis/tbls/Dbui_col_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.html.bridges.dbuis.tbls; import gplx.*; import gplx.xowa.*; import gplx.xowa.html.*; import gplx.xowa.html.bridges.*; import gplx.xowa.html.bridges.dbuis.*; +package gplx.xowa.htmls.bridges.dbuis.tbls; import gplx.*; import gplx.xowa.*; import gplx.xowa.htmls.*; import gplx.xowa.htmls.bridges.*; import gplx.xowa.htmls.bridges.dbuis.*; public class Dbui_col_itm { public Dbui_col_itm(int type, int width, String key, String display) {this.type = type; this.width = width; this.key = key; this.display = display;} public int Type() {return type;} private final int type; diff --git a/400_xowa/src/gplx/xowa/html/bridges/dbuis/tbls/Dbui_row_itm.java b/400_xowa/src/gplx/xowa/htmls/bridges/dbuis/tbls/Dbui_row_itm.java similarity index 85% rename from 400_xowa/src/gplx/xowa/html/bridges/dbuis/tbls/Dbui_row_itm.java rename to 400_xowa/src/gplx/xowa/htmls/bridges/dbuis/tbls/Dbui_row_itm.java index dd8d7800b..d9c911120 100644 --- a/400_xowa/src/gplx/xowa/html/bridges/dbuis/tbls/Dbui_row_itm.java +++ b/400_xowa/src/gplx/xowa/htmls/bridges/dbuis/tbls/Dbui_row_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.html.bridges.dbuis.tbls; import gplx.*; import gplx.xowa.*; import gplx.xowa.html.*; import gplx.xowa.html.bridges.*; import gplx.xowa.html.bridges.dbuis.*; +package gplx.xowa.htmls.bridges.dbuis.tbls; import gplx.*; import gplx.xowa.*; import gplx.xowa.htmls.*; import gplx.xowa.htmls.bridges.*; import gplx.xowa.htmls.bridges.dbuis.*; public class Dbui_row_itm { public Dbui_row_itm(Dbui_tbl_itm tbl, byte[] pkey, Dbui_val_itm[] vals) { this.tbl = tbl; this.pkey = pkey; this.vals = vals; diff --git a/400_xowa/src/gplx/xowa/html/bridges/dbuis/tbls/Dbui_tbl_itm.java b/400_xowa/src/gplx/xowa/htmls/bridges/dbuis/tbls/Dbui_tbl_itm.java similarity index 84% rename from 400_xowa/src/gplx/xowa/html/bridges/dbuis/tbls/Dbui_tbl_itm.java rename to 400_xowa/src/gplx/xowa/htmls/bridges/dbuis/tbls/Dbui_tbl_itm.java index b57290cb6..cf1debfae 100644 --- a/400_xowa/src/gplx/xowa/html/bridges/dbuis/tbls/Dbui_tbl_itm.java +++ b/400_xowa/src/gplx/xowa/htmls/bridges/dbuis/tbls/Dbui_tbl_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.html.bridges.dbuis.tbls; import gplx.*; import gplx.xowa.*; import gplx.xowa.html.*; import gplx.xowa.html.bridges.*; import gplx.xowa.html.bridges.dbuis.*; +package gplx.xowa.htmls.bridges.dbuis.tbls; import gplx.*; import gplx.xowa.*; import gplx.xowa.htmls.*; import gplx.xowa.htmls.bridges.*; import gplx.xowa.htmls.bridges.dbuis.*; public interface Dbui_tbl_itm { byte[] Key(); Dbui_col_itm[] Cols(); diff --git a/400_xowa/src/gplx/xowa/html/bridges/dbuis/tbls/Dbui_tbl_itm_.java b/400_xowa/src/gplx/xowa/htmls/bridges/dbuis/tbls/Dbui_tbl_itm_.java similarity index 83% rename from 400_xowa/src/gplx/xowa/html/bridges/dbuis/tbls/Dbui_tbl_itm_.java rename to 400_xowa/src/gplx/xowa/htmls/bridges/dbuis/tbls/Dbui_tbl_itm_.java index a3dffd448..97ba83474 100644 --- a/400_xowa/src/gplx/xowa/html/bridges/dbuis/tbls/Dbui_tbl_itm_.java +++ b/400_xowa/src/gplx/xowa/htmls/bridges/dbuis/tbls/Dbui_tbl_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.html.bridges.dbuis.tbls; import gplx.*; import gplx.xowa.*; import gplx.xowa.html.*; import gplx.xowa.html.bridges.*; import gplx.xowa.html.bridges.dbuis.*; +package gplx.xowa.htmls.bridges.dbuis.tbls; import gplx.*; import gplx.xowa.*; import gplx.xowa.htmls.*; import gplx.xowa.htmls.bridges.*; import gplx.xowa.htmls.bridges.dbuis.*; public class Dbui_tbl_itm_ { public static int Calc_width(Dbui_tbl_itm tbl) { int rv = 40; // 40 for button col diff --git a/400_xowa/src/gplx/xowa/html/bridges/dbuis/tbls/Dbui_val_hash.java b/400_xowa/src/gplx/xowa/htmls/bridges/dbuis/tbls/Dbui_val_hash.java similarity index 81% rename from 400_xowa/src/gplx/xowa/html/bridges/dbuis/tbls/Dbui_val_hash.java rename to 400_xowa/src/gplx/xowa/htmls/bridges/dbuis/tbls/Dbui_val_hash.java index e33799952..43feada46 100644 --- a/400_xowa/src/gplx/xowa/html/bridges/dbuis/tbls/Dbui_val_hash.java +++ b/400_xowa/src/gplx/xowa/htmls/bridges/dbuis/tbls/Dbui_val_hash.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.html.bridges.dbuis.tbls; import gplx.*; import gplx.xowa.*; import gplx.xowa.html.*; import gplx.xowa.html.bridges.*; import gplx.xowa.html.bridges.dbuis.*; +package gplx.xowa.htmls.bridges.dbuis.tbls; import gplx.*; import gplx.xowa.*; import gplx.xowa.htmls.*; import gplx.xowa.htmls.bridges.*; import gplx.xowa.htmls.bridges.dbuis.*; public class Dbui_val_hash { - private final Ordered_hash hash = Ordered_hash_.new_bry_(); + private final Ordered_hash hash = Ordered_hash_.New_bry(); public void Add(byte[] key, Dbui_val_itm itm) {hash.Add(key, itm);} public byte[] Get_val_as_bry(String key) {return Get_val_as_bry(Bry_.new_u8(key));} public byte[] Get_val_as_bry(byte[] key) { diff --git a/400_xowa/src/gplx/xowa/html/bridges/dbuis/tbls/Dbui_val_itm.java b/400_xowa/src/gplx/xowa/htmls/bridges/dbuis/tbls/Dbui_val_itm.java similarity index 84% rename from 400_xowa/src/gplx/xowa/html/bridges/dbuis/tbls/Dbui_val_itm.java rename to 400_xowa/src/gplx/xowa/htmls/bridges/dbuis/tbls/Dbui_val_itm.java index 2ac4d5ecc..02384fb68 100644 --- a/400_xowa/src/gplx/xowa/html/bridges/dbuis/tbls/Dbui_val_itm.java +++ b/400_xowa/src/gplx/xowa/htmls/bridges/dbuis/tbls/Dbui_val_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.html.bridges.dbuis.tbls; import gplx.*; import gplx.xowa.*; import gplx.xowa.html.*; import gplx.xowa.html.bridges.*; import gplx.xowa.html.bridges.dbuis.*; +package gplx.xowa.htmls.bridges.dbuis.tbls; import gplx.*; import gplx.xowa.*; import gplx.xowa.htmls.*; import gplx.xowa.htmls.bridges.*; import gplx.xowa.htmls.bridges.dbuis.*; public class Dbui_val_itm { public Dbui_val_itm(byte[] data, byte[] html) {this.data = data; this.html = html;} public byte[] Data() {return data;} private byte[] data; diff --git a/400_xowa/src/gplx/xowa/html/css/Xob_css_status.java b/400_xowa/src/gplx/xowa/htmls/css/Xob_css_status.java similarity index 89% rename from 400_xowa/src/gplx/xowa/html/css/Xob_css_status.java rename to 400_xowa/src/gplx/xowa/htmls/css/Xob_css_status.java index ead053cb1..caf68f132 100644 --- a/400_xowa/src/gplx/xowa/html/css/Xob_css_status.java +++ b/400_xowa/src/gplx/xowa/htmls/css/Xob_css_status.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.html.css; import gplx.*; import gplx.xowa.*; import gplx.xowa.html.*; +package gplx.xowa.htmls.css; import gplx.*; import gplx.xowa.*; import gplx.xowa.htmls.*; import gplx.xowa.wikis.*; import gplx.xowa.wikis.data.*; import gplx.xowa.bldrs.css.*; public class Xob_css_status { @@ -43,7 +43,7 @@ public class Xob_css_status { private static void Chk_fs(Xob_css_status rv, Xow_wiki wiki) { Io_url css_dir = wiki.App().Fsys_mgr().Wiki_css_dir(wiki.Domain_str()); // EX: /xowa/user/anonymous/wiki/en.wikipedia.org/html/ Io_url css_fil_wiki = css_dir.GenSubFil(Xoa_css_extractor.Css_wiki_name); // EX: /xowa/user/anonymous/wiki/en.wikipedia.org/html/xowa_wiki.css - boolean exists = Io_mgr.I.ExistsFil(css_fil_wiki); + boolean exists = Io_mgr.Instance.ExistsFil(css_fil_wiki); rv.Fs_exists_(exists, css_dir); } private static void Chk_db(Xob_css_status rv, Xow_wiki wiki, Io_url css_dir) { @@ -69,10 +69,10 @@ public class Xob_css_status { } } public static void Timestamp_save(Io_url css_dir, DateAdp time) { - Io_mgr.I.SaveFilStr(css_dir.GenSubFil(Timestamp_filename), time.XtoStr_fmt_yyyyMMdd_HHmmss()); + Io_mgr.Instance.SaveFilStr(css_dir.GenSubFil(Timestamp_filename), time.XtoStr_fmt_yyyyMMdd_HHmmss()); } public static DateAdp Timestamp_load(Io_url css_dir) { - String rv = Io_mgr.I.LoadFilStr(css_dir.GenSubFil(Timestamp_filename)); + String rv = Io_mgr.Instance.LoadFilStr(css_dir.GenSubFil(Timestamp_filename)); return rv == null ? DateAdp_.MinValue : DateAdp_.parse_iso8561_or(rv, DateAdp_.MinValue); } private static final String Timestamp_filename = "xowa.css.timestamp.txt"; diff --git a/400_xowa/src/gplx/xowa/html/css/Xow_css_mgr.java b/400_xowa/src/gplx/xowa/htmls/css/Xow_css_mgr.java similarity index 94% rename from 400_xowa/src/gplx/xowa/html/css/Xow_css_mgr.java rename to 400_xowa/src/gplx/xowa/htmls/css/Xow_css_mgr.java index f9983d5ed..96f643486 100644 --- a/400_xowa/src/gplx/xowa/html/css/Xow_css_mgr.java +++ b/400_xowa/src/gplx/xowa/htmls/css/Xow_css_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.html.css; import gplx.*; import gplx.xowa.*; import gplx.xowa.html.*; +package gplx.xowa.htmls.css; import gplx.*; import gplx.xowa.*; import gplx.xowa.htmls.*; import gplx.xowa.wikis.*; import gplx.xowa.wikis.data.*; import gplx.xowa.wikis.data.tbls.*; public class Xow_css_mgr { private final Xow_wiki wiki; diff --git a/400_xowa/src/gplx/xowa/html/css/Xowd_css_core_mgr.java b/400_xowa/src/gplx/xowa/htmls/css/Xowd_css_core_mgr.java similarity index 84% rename from 400_xowa/src/gplx/xowa/html/css/Xowd_css_core_mgr.java rename to 400_xowa/src/gplx/xowa/htmls/css/Xowd_css_core_mgr.java index bb4237d12..d0e2c6e71 100644 --- a/400_xowa/src/gplx/xowa/html/css/Xowd_css_core_mgr.java +++ b/400_xowa/src/gplx/xowa/htmls/css/Xowd_css_core_mgr.java @@ -15,14 +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.html.css; import gplx.*; import gplx.xowa.*; import gplx.xowa.html.*; +package gplx.xowa.htmls.css; import gplx.*; import gplx.xowa.*; import gplx.xowa.htmls.*; import gplx.dbs.*; import gplx.xowa.wikis.*; import gplx.xowa.wikis.data.*; import gplx.xowa.wikis.data.tbls.*; import gplx.xowa.bldrs.css.*; public class Xowd_css_core_mgr { public static void Set(Xowd_css_core_tbl core_tbl, Xowd_css_file_tbl file_tbl, Io_url css_dir, String key) { Db_conn conn = core_tbl.Conn(); - Io_url[] file_list = Io_mgr.I.QueryDir_args(css_dir).Recur_().ExecAsUrlAry(); + Io_url[] file_list = Io_mgr.Instance.QueryDir_args(css_dir).Recur_().ExecAsUrlAry(); try { conn.Txn_bgn("schema__css_core__set"); int css_id = core_tbl.Select_id_by_key(key); @@ -35,7 +35,7 @@ public class Xowd_css_core_mgr { } for (Io_url file : file_list) { String path = Op_sys.Fsys_path_to_lnx(file.GenRelUrl_orEmpty(css_dir)); - byte[] data = Io_mgr.I.LoadFilBry(file); + byte[] data = Io_mgr.Instance.LoadFilBry(file); file_tbl.Insert(css_id, path, data); } conn.Txn_end(); @@ -45,14 +45,14 @@ public class Xowd_css_core_mgr { public static boolean Get(Xowd_css_core_tbl core_tbl, Xowd_css_file_tbl file_tbl, Io_url css_dir, String key) { int css_id = core_tbl.Select_id_by_key(key); if (css_id == Xowd_css_core_tbl.Id_null) return false; // unknown key; return false (not found) Xowd_css_file_itm[] file_list = file_tbl.Select_by_owner(css_id); - // Io_mgr.I.DeleteDirDeep(css_dir); // NOTE: do not delete existing files; just overwrite; + // Io_mgr.Instance.DeleteDirDeep(css_dir); // NOTE: do not delete existing files; just overwrite; int len = file_list.length; if (len == 0) return false; // no css files in db for (int i = 0; i < len; ++i) { Xowd_css_file_itm file = file_list[i]; Io_url file_url = Io_url_.new_fil_(css_dir.Gen_sub_path_for_os(file.Path())); if (file.Data() == null) continue; // NOTE: sqlite will return 0 length fields as NULL; if no data, just ignore, else error below - Io_mgr.I.SaveFilBry(file_url, file.Data()); + Io_mgr.Instance.SaveFilBry(file_url, file.Data()); } return true; } diff --git a/400_xowa/src/gplx/xowa/html/css/Xowd_css_core_mgr_tst.java b/400_xowa/src/gplx/xowa/htmls/css/Xowd_css_core_mgr_tst.java similarity index 86% rename from 400_xowa/src/gplx/xowa/html/css/Xowd_css_core_mgr_tst.java rename to 400_xowa/src/gplx/xowa/htmls/css/Xowd_css_core_mgr_tst.java index d77f066eb..e5026dd80 100644 --- a/400_xowa/src/gplx/xowa/html/css/Xowd_css_core_mgr_tst.java +++ b/400_xowa/src/gplx/xowa/htmls/css/Xowd_css_core_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.html.css; import gplx.*; import gplx.xowa.*; import gplx.xowa.html.*; +package gplx.xowa.htmls.css; import gplx.*; import gplx.xowa.*; import gplx.xowa.htmls.*; import org.junit.*; import gplx.ios.*; import gplx.dbs.*; import gplx.xowa.wikis.data.tbls.*; public class Xowd_css_core_mgr_tst { @Before public void init() {fxt.Clear();} private Xowd_css_core_mgr_fxt fxt = new Xowd_css_core_mgr_fxt(); @@ -53,7 +53,7 @@ public class Xowd_css_core_mgr_tst { ( fxt.Make_file_itm(1, "a1.css", "a1_data") , fxt.Make_file_itm(1, "b/b1.png", "b/b1_data") ); - Io_mgr.I.DeleteDirDeep(src_dir); + Io_mgr.Instance.DeleteDirDeep(src_dir); fxt.Init_fs(src_dir, file_ary); fxt.Exec_set(src_dir, "desktop"); fxt.Test_skin_tbl(skin_ary); @@ -65,9 +65,9 @@ class Xowd_css_core_mgr_fxt { private Xowd_css_core_tbl core_tbl; private Xowd_css_file_tbl file_tbl; public void Clear() { Tfds.Now_enabled_y_(); - Io_mgr.I.InitEngine_mem(); - Db_conn_bldr.I.Reg_default_mem(); - Db_conn conn = Db_conn_bldr.I.New(Io_url_.mem_fil_("mem/db/css.sqlite3")); + Io_mgr.Instance.InitEngine_mem(); + Db_conn_bldr.Instance.Reg_default_mem(); + Db_conn conn = Db_conn_bldr.Instance.New(Io_url_.mem_fil_("mem/db/css.sqlite3")); this.core_tbl = new Xowd_css_core_tbl(conn); this.file_tbl = new Xowd_css_file_tbl(conn); core_tbl.Create_tbl(); @@ -79,7 +79,7 @@ class Xowd_css_core_mgr_fxt { public Xowd_css_core_itm[] Make_skin_ary(Xowd_css_core_itm... ary) {return ary;} public void Init_fs(Io_url css_dir, Xowd_css_file_itm[] file_ary) { for (Xowd_css_file_itm itm : file_ary) - Io_mgr.I.SaveFilBry(css_dir.GenSubFil(itm.Path()), itm.Data()); + Io_mgr.Instance.SaveFilBry(css_dir.GenSubFil(itm.Path()), itm.Data()); } public void Exec_set(Io_url css_dir, String key) {Xowd_css_core_mgr.Set(core_tbl, file_tbl, css_dir, key);} public void Exec_get(Io_url css_dir, String key) {Xowd_css_core_mgr.Get(core_tbl, file_tbl, css_dir, key);} @@ -92,12 +92,12 @@ class Xowd_css_core_mgr_fxt { Tfds.Eq_str_lines(To_str(expd), To_str(actl)); } public void Test_fs(Io_url css_dir, Xowd_css_file_itm[] expd) { - Io_url[] actl = Io_mgr.I.QueryDir_args(css_dir).Recur_().ExecAsUrlAry(); + Io_url[] actl = Io_mgr.Instance.QueryDir_args(css_dir).Recur_().ExecAsUrlAry(); int len = expd.length; Tfds.Eq(len, actl.length); for (int i = 0; i < len; ++i) { Xowd_css_file_itm expd_itm = expd[i]; - Tfds.Eq_bry(expd_itm.Data(), Io_mgr.I.LoadFilBry(actl[i])); + Tfds.Eq_bry(expd_itm.Data(), Io_mgr.Instance.LoadFilBry(actl[i])); } } private String To_str(Xowd_css_file_itm[] ary) { @@ -106,7 +106,7 @@ class Xowd_css_core_mgr_fxt { Xowd_css_file_itm itm = ary[i]; bfr.Add_int_variable(itm.Css_id()).Add_byte_pipe().Add_str_u8(itm.Path()).Add_byte_pipe().Add(itm.Data()).Add_byte_nl(); } - return bfr.Xto_str_and_clear(); + return bfr.To_str_and_clear(); } private String To_str(Xowd_css_core_itm[] ary) { Bry_bfr bfr = Bry_bfr.new_(); @@ -115,6 +115,6 @@ class Xowd_css_core_mgr_fxt { Xowd_css_core_itm itm = ary[i]; bfr.Add_int_variable(itm.Id()).Add_byte_pipe().Add_str_u8(itm.Key()).Add_byte_pipe().Add_str_u8(itm.Updated_on().XtoStr_fmt_yyyyMMdd_HHmmss()).Add_byte_nl(); } - return bfr.Xto_str_and_clear(); + return bfr.To_str_and_clear(); } } diff --git a/400_xowa/src/gplx/xowa/html/doms/Xoh_dom_.java b/400_xowa/src/gplx/xowa/htmls/doms/Xoh_dom_.java similarity index 94% rename from 400_xowa/src/gplx/xowa/html/doms/Xoh_dom_.java rename to 400_xowa/src/gplx/xowa/htmls/doms/Xoh_dom_.java index 20ff5cd75..8b7ab64c3 100644 --- a/400_xowa/src/gplx/xowa/html/doms/Xoh_dom_.java +++ b/400_xowa/src/gplx/xowa/htmls/doms/Xoh_dom_.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.html.doms; import gplx.*; import gplx.xowa.*; import gplx.xowa.html.*; +package gplx.xowa.htmls.doms; import gplx.*; import gplx.xowa.*; import gplx.xowa.htmls.*; import gplx.langs.htmls.*; public class Xoh_dom_ { private static final byte[] Lt_bry = Bry_.new_a7("<"), Space_bry = Bry_.new_a7(" "); @@ -65,7 +65,7 @@ public class Xoh_dom_ { return true; } public static String Title_by_href(byte[] href, byte[] html_src) { - byte[] xowa_title = Xoh_dom_.Query_val_by_where(dom_find, html_src, Html_tag_.A_name_bry, Html_atr_.Href_bry, href, gplx.xowa.html.Xoh_consts.Atr_xowa_title_bry, 0); + byte[] xowa_title = Xoh_dom_.Query_val_by_where(dom_find, html_src, Html_tag_.A_name_bry, Html_atr_.Href_bry, href, gplx.xowa.htmls.Xoh_consts.Atr_xowa_title_bry, 0); return String_.new_u8(xowa_title); } private static final Xoh_find dom_find = new Xoh_find(); } diff --git a/400_xowa/src/gplx/xowa/html/doms/Xoh_dom_tst.java b/400_xowa/src/gplx/xowa/htmls/doms/Xoh_dom_tst.java similarity index 95% rename from 400_xowa/src/gplx/xowa/html/doms/Xoh_dom_tst.java rename to 400_xowa/src/gplx/xowa/htmls/doms/Xoh_dom_tst.java index 586fa20e1..9d8e4c255 100644 --- a/400_xowa/src/gplx/xowa/html/doms/Xoh_dom_tst.java +++ b/400_xowa/src/gplx/xowa/htmls/doms/Xoh_dom_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.html.doms; import gplx.*; import gplx.xowa.*; import gplx.xowa.html.*; +package gplx.xowa.htmls.doms; import gplx.*; import gplx.xowa.*; import gplx.xowa.htmls.*; import org.junit.*; public class Xoh_dom_tst { @Test public void Find_atr() { diff --git a/400_xowa/src/gplx/xowa/html/doms/Xoh_find.java b/400_xowa/src/gplx/xowa/htmls/doms/Xoh_find.java similarity index 94% rename from 400_xowa/src/gplx/xowa/html/doms/Xoh_find.java rename to 400_xowa/src/gplx/xowa/htmls/doms/Xoh_find.java index c61f68335..422da8f11 100644 --- a/400_xowa/src/gplx/xowa/html/doms/Xoh_find.java +++ b/400_xowa/src/gplx/xowa/htmls/doms/Xoh_find.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.html.doms; import gplx.*; import gplx.xowa.*; import gplx.xowa.html.*; +package gplx.xowa.htmls.doms; import gplx.*; import gplx.xowa.*; import gplx.xowa.htmls.*; public class Xoh_find { public int Tag_bgn() {return tag_bgn;} public Xoh_find Tag_bgn_(int v) {tag_bgn = v; return this;} private int tag_bgn; public int Tag_end() {return tag_end;} public Xoh_find Tag_end_(int v) {tag_end = v; return this;} private int tag_end; diff --git a/400_xowa/src/gplx/xowa/html/hdumps/Xohd_hdump_rdr.java b/400_xowa/src/gplx/xowa/htmls/hdumps/Xohd_hdump_rdr.java similarity index 88% rename from 400_xowa/src/gplx/xowa/html/hdumps/Xohd_hdump_rdr.java rename to 400_xowa/src/gplx/xowa/htmls/hdumps/Xohd_hdump_rdr.java index a8f907824..7c07c4861 100644 --- a/400_xowa/src/gplx/xowa/html/hdumps/Xohd_hdump_rdr.java +++ b/400_xowa/src/gplx/xowa/htmls/hdumps/Xohd_hdump_rdr.java @@ -15,10 +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.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.xowa.gui.*; +package gplx.xowa.htmls.hdumps; import gplx.*; import gplx.xowa.*; import gplx.xowa.htmls.*; +import gplx.xowa.htmls.heads.*; import gplx.xowa.htmls.hdumps.data.*; import gplx.xowa.htmls.hzips.*; import gplx.xowa.htmls.hdumps.abrvs.*; import gplx.xowa.htmls.hdumps.pages.*; +import gplx.xowa.wikis.pages.*; import gplx.xowa.wikis.pages.skins.*; +import gplx.xowa.wikis.data.*; import gplx.xowa.wikis.data.tbls.*; import gplx.xowa.guis.*; import gplx.xowa.parsers.*; public class Xohd_hdump_rdr { private final Bry_bfr_mkr bfr_mkr; private final Xow_hzip_mgr hzip_mgr; @@ -41,7 +41,7 @@ public class Xohd_hdump_rdr { html_data.Content_sub_(hpg.Content_sub()); html_data.Xtn_skin_mgr().Add(new Xopg_xtn_skin_itm_stub(hpg.Sidebar_div())); Load_module_mgr(html_data.Head_mgr(), hpg); - for (gplx.xowa.html.hdumps.core.Xohd_data_itm__base itm : hpg.Img_itms()) + for (gplx.xowa.htmls.hdumps.core.Xohd_data_itm__base itm : hpg.Img_itms()) page.Hdump_data().Imgs_add(itm); } public void Get_by_ttl(Xog_page rv, Xoa_ttl ttl) { diff --git a/400_xowa/src/gplx/xowa/html/hdumps/Xohd_hdump_wtr.java b/400_xowa/src/gplx/xowa/htmls/hdumps/Xohd_hdump_wtr.java similarity index 76% rename from 400_xowa/src/gplx/xowa/html/hdumps/Xohd_hdump_wtr.java rename to 400_xowa/src/gplx/xowa/htmls/hdumps/Xohd_hdump_wtr.java index a46aad366..5adaa5cc9 100644 --- a/400_xowa/src/gplx/xowa/html/hdumps/Xohd_hdump_wtr.java +++ b/400_xowa/src/gplx/xowa/htmls/hdumps/Xohd_hdump_wtr.java @@ -15,12 +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.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.xowa.gui.*; +package gplx.xowa.htmls.hdumps; import gplx.*; import gplx.xowa.*; import gplx.xowa.htmls.*; +import gplx.xowa.htmls.hdumps.data.*; import gplx.xowa.htmls.hzips.*; import gplx.xowa.htmls.hdumps.abrvs.*; import gplx.xowa.htmls.hdumps.pages.*; +import gplx.xowa.wikis.pages.*; import gplx.xowa.wikis.pages.skins.*; import gplx.xowa.wikis.dbs.*; +import gplx.xowa.wikis.data.*; import gplx.xowa.wikis.data.tbls.*; import gplx.xowa.guis.*; public class Xohd_hdump_wtr { - private final Bry_bfr_mkr bfr_mkr; private final Xohe_page_wtr_mgr page_wtr_mgr; + private final Bry_bfr_mkr bfr_mkr; private final Xoh_page_wtr_mgr page_wtr_mgr; private final Xohd_page_html_mgr__save save_mgr; private Xowd_db_mgr core_data_mgr; public Xohd_hdump_wtr(Xoa_app app, Xowe_wiki wiki) { this.bfr_mkr = app.Utl__bfr_mkr(); this.page_wtr_mgr = wiki.Html_mgr().Page_wtr_mgr(); @@ -56,8 +56,8 @@ public class Xohd_hdump_wtr { } public void Generate_hdump(Bry_bfr tmp_bfr, Xoae_page page) { page.File_queue().Clear(); // need to reset uid to 0, else xowa_file_# will resume from last - page_wtr_mgr.Wkr(Xopg_view_mode.Tid_read).Write_body(tmp_bfr, Xoh_wtr_ctx.Hdump, page); - if (!Env_.Mode_testing()) page.Wikie().Html_mgr().Hzip_mgr().Write(tmp_bfr, new Xodump_stats_itm(), page.Url().To_bry_full_wo_qargs(), tmp_bfr.Xto_bry_and_clear()); // hzip data; - page.Hdump_data().Body_(tmp_bfr.Xto_bry_and_clear()); // write to body bry + page_wtr_mgr.Wkr(Xopg_page_.Tid_read).Write_body(tmp_bfr, Xoh_wtr_ctx.Hdump, page); + if (!Env_.Mode_testing()) page.Wikie().Html_mgr().Hzip_mgr().Write(tmp_bfr, new Xodump_stats_itm(), page.Url().To_bry_full_wo_qargs(), tmp_bfr.To_bry_and_clear()); // hzip data; + page.Hdump_data().Body_(tmp_bfr.To_bry_and_clear()); // write to body bry } } diff --git a/400_xowa/src/gplx/xowa/html/hdumps/Xohd_hdump_wtr_tst.java b/400_xowa/src/gplx/xowa/htmls/hdumps/Xohd_hdump_wtr_tst.java similarity index 93% rename from 400_xowa/src/gplx/xowa/html/hdumps/Xohd_hdump_wtr_tst.java rename to 400_xowa/src/gplx/xowa/htmls/hdumps/Xohd_hdump_wtr_tst.java index d54099c18..b52481ca3 100644 --- a/400_xowa/src/gplx/xowa/html/hdumps/Xohd_hdump_wtr_tst.java +++ b/400_xowa/src/gplx/xowa/htmls/hdumps/Xohd_hdump_wtr_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.html.hdumps; import gplx.*; import gplx.xowa.*; import gplx.xowa.html.*; +package gplx.xowa.htmls.hdumps; import gplx.*; import gplx.xowa.*; import gplx.xowa.htmls.*; import org.junit.*; import gplx.xowa.files.*; -import gplx.xowa.html.hdumps.core.*; import gplx.xowa.html.hdumps.data.*; import gplx.xowa.html.hdumps.pages.*; import gplx.xowa.xtns.hieros.*; import gplx.xowa.xtns.gallery.*; +import gplx.xowa.htmls.hdumps.core.*; import gplx.xowa.htmls.hdumps.data.*; import gplx.xowa.htmls.hdumps.pages.*; import gplx.xowa.xtns.hieros.*; import gplx.xowa.xtns.gallery.*; import gplx.xowa.parsers.*; public class Xohd_hdump_wtr_tst { @Before public void init() {fxt.Clear();} private Xohd_hdump_wtr_fxt fxt = new Xohd_hdump_wtr_fxt(); diff --git a/400_xowa/src/gplx/xowa/html/hdumps/abrvs/Xohd_abrv_.java b/400_xowa/src/gplx/xowa/htmls/hdumps/abrvs/Xohd_abrv_.java similarity index 94% rename from 400_xowa/src/gplx/xowa/html/hdumps/abrvs/Xohd_abrv_.java rename to 400_xowa/src/gplx/xowa/htmls/hdumps/abrvs/Xohd_abrv_.java index a9f9d28aa..610363174 100644 --- a/400_xowa/src/gplx/xowa/html/hdumps/abrvs/Xohd_abrv_.java +++ b/400_xowa/src/gplx/xowa/htmls/hdumps/abrvs/Xohd_abrv_.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.html.hdumps.abrvs; import gplx.*; import gplx.xowa.*; import gplx.xowa.html.*; import gplx.xowa.html.hdumps.*; +package gplx.xowa.htmls.hdumps.abrvs; import gplx.*; import gplx.xowa.*; import gplx.xowa.htmls.*; import gplx.xowa.htmls.hdumps.*; import gplx.core.btries.*; public class Xohd_abrv_ { public static final byte diff --git a/400_xowa/src/gplx/xowa/html/hdumps/abrvs/Xohd_abrv_mgr.java b/400_xowa/src/gplx/xowa/htmls/hdumps/abrvs/Xohd_abrv_mgr.java similarity index 93% rename from 400_xowa/src/gplx/xowa/html/hdumps/abrvs/Xohd_abrv_mgr.java rename to 400_xowa/src/gplx/xowa/htmls/hdumps/abrvs/Xohd_abrv_mgr.java index 06106e9bb..2fea47cfd 100644 --- a/400_xowa/src/gplx/xowa/html/hdumps/abrvs/Xohd_abrv_mgr.java +++ b/400_xowa/src/gplx/xowa/htmls/hdumps/abrvs/Xohd_abrv_mgr.java @@ -15,14 +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.html.hdumps.abrvs; import gplx.*; import gplx.xowa.*; import gplx.xowa.html.*; import gplx.xowa.html.hdumps.*; +package gplx.xowa.htmls.hdumps.abrvs; import gplx.*; import gplx.xowa.*; import gplx.xowa.htmls.*; import gplx.xowa.htmls.hdumps.*; 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.langs.htmls.*; import gplx.xowa.htmls.*; import gplx.xowa.htmls.hdumps.core.*; import gplx.xowa.htmls.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.xowa.gui.*; +import gplx.xowa.guis.*; 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 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_.Instance; 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; private byte[] root_dir, file_dir, file_dir_comm, file_dir_wiki, hiero_img_dir; private byte[] wiki_domain; @@ -37,8 +37,8 @@ public class Xohd_abrv_mgr { this.wiki_domain = wiki_domain; } private void Init() { - file_dir_comm = tmp_bfr.Add(file_dir).Add(Xow_domain_itm_.Bry__commons).Add_byte_slash().Xto_bry_and_clear(); - file_dir_wiki = tmp_bfr.Add(file_dir).Add(wiki_domain).Add_byte_slash().Xto_bry_and_clear(); + file_dir_comm = tmp_bfr.Add(file_dir).Add(Xow_domain_itm_.Bry__commons).Add_byte_slash().To_bry_and_clear(); + file_dir_wiki = tmp_bfr.Add(file_dir).Add(wiki_domain).Add_byte_slash().To_bry_and_clear(); } public byte[] Parse(Bry_bfr rv, Xog_page hpg) { this.Init(); @@ -64,7 +64,7 @@ public class Xohd_abrv_mgr { } } if (rng_bgn != -1) rv.Add_mid(src, rng_bgn, len); - return rv.Xto_bry_and_clear(); + return rv.To_bry_and_clear(); } private int Write_data(Bry_bfr bfr, Xoh_file_html_fmtr__base fmtr, Xog_page hpg, byte[] src, Xohd_data_itm__base[] imgs, int imgs_len, int uid_bgn, Hdump_html_fmtr_itm itm) { bry_rdr.Pos_(uid_bgn); diff --git a/400_xowa/src/gplx/xowa/html/hdumps/abrvs/Xohd_abrv_mgr_tst.java b/400_xowa/src/gplx/xowa/htmls/hdumps/abrvs/Xohd_abrv_mgr_tst.java similarity index 92% rename from 400_xowa/src/gplx/xowa/html/hdumps/abrvs/Xohd_abrv_mgr_tst.java rename to 400_xowa/src/gplx/xowa/htmls/hdumps/abrvs/Xohd_abrv_mgr_tst.java index 715fc6eff..6fea29227 100644 --- a/400_xowa/src/gplx/xowa/html/hdumps/abrvs/Xohd_abrv_mgr_tst.java +++ b/400_xowa/src/gplx/xowa/htmls/hdumps/abrvs/Xohd_abrv_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.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.xowa.gui.*; +package gplx.xowa.htmls.hdumps.abrvs; import gplx.*; import gplx.xowa.*; import gplx.xowa.htmls.*; import gplx.xowa.htmls.hdumps.*; +import org.junit.*; import gplx.core.primitives.*; import gplx.xowa.htmls.hdumps.core.*; import gplx.xowa.htmls.hdumps.data.*; import gplx.xowa.files.*; import gplx.xowa.parsers.lnkis.*; +import gplx.xowa.guis.*; public class Xohd_abrv_mgr_tst { @Before public void init() { fxt.Clear(); @@ -110,7 +110,7 @@ class Xohd_abrv_mgr_fxt { public void Clear() { Xoae_app app = Xoa_app_fxt.app_(); wiki = Xoa_app_fxt.wiki_tst_(app); - abrv_mgr = new Xohd_abrv_mgr(Gfo_usr_dlg_.I, app.Fsys_mgr(), app.Utl__encoder_mgr().Fsys(), wiki.Domain_bry()); + abrv_mgr = new Xohd_abrv_mgr(Gfo_usr_dlg_.Instance, app.Fsys_mgr(), app.Utl__encoder_mgr().Fsys(), wiki.Domain_bry()); } public void Clear_imgs() {img_list.Clear();} public Xohd_abrv_mgr_fxt Init_body(String body) {hpg.Page_body_(Bry_.new_u8(body)); return this;} diff --git a/400_xowa/src/gplx/xowa/html/hdumps/bldrs/Xob_hdump_bldr.java b/400_xowa/src/gplx/xowa/htmls/hdumps/bldrs/Xob_hdump_bldr.java similarity index 82% rename from 400_xowa/src/gplx/xowa/html/hdumps/bldrs/Xob_hdump_bldr.java rename to 400_xowa/src/gplx/xowa/htmls/hdumps/bldrs/Xob_hdump_bldr.java index dd129208c..4e9754e7f 100644 --- a/400_xowa/src/gplx/xowa/html/hdumps/bldrs/Xob_hdump_bldr.java +++ b/400_xowa/src/gplx/xowa/htmls/hdumps/bldrs/Xob_hdump_bldr.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.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.nss.*; -import gplx.xowa.pages.*; import gplx.xowa.gui.*; import gplx.xowa.bldrs.*; import gplx.xowa.bldrs.cmds.*; +package gplx.xowa.htmls.hdumps.bldrs; import gplx.*; import gplx.xowa.*; import gplx.xowa.htmls.*; import gplx.xowa.htmls.hdumps.*; +import gplx.dbs.*; import gplx.xowa.wikis.data.*; import gplx.dbs.engines.sqlite.*; import gplx.xowa.wikis.dbs.*; import gplx.xowa.wikis.data.tbls.*; +import gplx.xowa.htmls.hdumps.data.*; import gplx.xowa.htmls.hzips.*; +import gplx.xowa.wikis.nss.*; +import gplx.xowa.wikis.pages.*; import gplx.xowa.guis.*; 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; @@ -30,7 +30,7 @@ public class Xob_hdump_bldr { this.wiki_db_mgr = db_mgr.Core_data_mgr(); this.ns_to_db_mgr = new Xob_ns_to_db_mgr(new Xob_ns_to_db_wkr__html(wiki_db_mgr.Db__core()), wiki_db_mgr, hdump_db_max); this.stats_tbl = new Xodump_stats_tbl(make_conn); - Xob_ns_file_itm.Init_ns_bldr_data(Xowd_db_file_.Tid_html_data, ns_mgr, gplx.xowa.apis.xowa.bldrs.imports.Xoapi_import.Ns_file_map__each); + Xob_ns_file_itm.Init_ns_bldr_data(Xowd_db_file_.Tid_html_data, ns_mgr, gplx.xowa.apps.apis.xowa.bldrs.imports.Xoapi_import.Ns_file_map__each); this.hzip_enabled = hzip_enabled; } public void Bld_term() { @@ -56,9 +56,9 @@ public class Xob_hdump_bldr { Xowe_wiki wiki = page.Wikie(); Xow_hzip_mgr hzip_mgr = wiki.Html_mgr().Hzip_mgr(); page.File_queue().Clear(); // need to reset uid to 0, else xowa_file_# will resume from last - wiki.Html_mgr().Page_wtr_mgr().Wkr(Xopg_view_mode.Tid_read).Write_body(tmp_bfr, Xoh_wtr_ctx.Hdump, page); // write to html again, except in hdump mode - if (hzip_enabled) hzip_mgr.Write(tmp_bfr, stats_itm, page.Url().To_bry_full_wo_qargs(), tmp_bfr.Xto_bry_and_clear()); // hzip data - page.Hdump_data().Body_(tmp_bfr.Xto_bry_and_clear()); // write to body bry + wiki.Html_mgr().Page_wtr_mgr().Wkr(Xopg_page_.Tid_read).Write_body(tmp_bfr, Xoh_wtr_ctx.Hdump, page); // write to html again, except in hdump mode + if (hzip_enabled) hzip_mgr.Write(tmp_bfr, stats_itm, page.Url().To_bry_full_wo_qargs(), tmp_bfr.To_bry_and_clear()); // hzip data + page.Hdump_data().Body_(tmp_bfr.To_bry_and_clear()); // write to body bry } } class Xob_ns_to_db_wkr__html implements Xob_ns_to_db_wkr { diff --git a/400_xowa/src/gplx/xowa/html/hdumps/bldrs/Xob_hdump_img_cmd.java b/400_xowa/src/gplx/xowa/htmls/hdumps/bldrs/Xob_hdump_img_cmd.java similarity index 90% rename from 400_xowa/src/gplx/xowa/html/hdumps/bldrs/Xob_hdump_img_cmd.java rename to 400_xowa/src/gplx/xowa/htmls/hdumps/bldrs/Xob_hdump_img_cmd.java index 140a64cae..d3f755ee6 100644 --- a/400_xowa/src/gplx/xowa/html/hdumps/bldrs/Xob_hdump_img_cmd.java +++ b/400_xowa/src/gplx/xowa/htmls/hdumps/bldrs/Xob_hdump_img_cmd.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.html.hdumps.bldrs; import gplx.*; import gplx.xowa.*; import gplx.xowa.html.*; import gplx.xowa.html.hdumps.*; +package gplx.xowa.htmls.hdumps.bldrs; import gplx.*; import gplx.xowa.*; import gplx.xowa.htmls.*; import gplx.xowa.htmls.hdumps.*; 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.bldrs.*; import gplx.xowa.bldrs.wkrs.*; import gplx.xowa.htmls.hdumps.core.*; import gplx.xowa.files.*; -import gplx.xowa.gui.*; +import gplx.xowa.guis.*; 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);} @@ -38,7 +38,7 @@ class Xob_hdump_img_cmd extends Xob_itm_basic_base implements Xob_cmd { while (rdr.Move_next()) { int lnki_page_id = rdr.Read_int("lnki_page_id"); if (lnki_page_id != cur_page_id) { - Save(cur_page_id, bfr.Xto_bry_and_clear()); + Save(cur_page_id, bfr.To_bry_and_clear()); cur_page_id = lnki_page_id; } // int html_uid = rdr.Read_int(1); @@ -52,7 +52,7 @@ class Xob_hdump_img_cmd extends Xob_itm_basic_base implements Xob_cmd { // int file_page = rdr.Read_int(9); // Xohd_data_itm__base.Data_write_static(bfr, 0, lnki_ttl, Byte_.Zero, 0, 0, Xof_img_size.Upright_null, html_uid, html_w, html_h, file_repo_id, file_ext_id, file_is_orig, html_w, file_time, file_page); } - Save(cur_page_id, bfr.Xto_bry_and_clear());; + Save(cur_page_id, bfr.To_bry_and_clear());; } private void Save(int page_id, byte[] data) { if (page_id == -1 || data.length == 0) return; @@ -92,7 +92,7 @@ class Page_async_cmd__img implements Page_async_cmd { missing.Clear(); for (int i = 0; i < len; ++i) { Xohd_data_itm__base itm = ary[i]; - boolean exists = Io_mgr.I.ExistsFil(itm.Html_view_url()); + boolean exists = Io_mgr.Instance.ExistsFil(itm.Html_view_url()); if (!exists) missing.Add(itm); } } diff --git a/400_xowa/src/gplx/xowa/html/hdumps/bldrs/Xob_link_dump_cmd.java b/400_xowa/src/gplx/xowa/htmls/hdumps/bldrs/Xob_link_dump_cmd.java similarity index 92% rename from 400_xowa/src/gplx/xowa/html/hdumps/bldrs/Xob_link_dump_cmd.java rename to 400_xowa/src/gplx/xowa/htmls/hdumps/bldrs/Xob_link_dump_cmd.java index fb0571814..4431c7fb8 100644 --- a/400_xowa/src/gplx/xowa/html/hdumps/bldrs/Xob_link_dump_cmd.java +++ b/400_xowa/src/gplx/xowa/htmls/hdumps/bldrs/Xob_link_dump_cmd.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.html.hdumps.bldrs; import gplx.*; import gplx.xowa.*; import gplx.xowa.html.*; import gplx.xowa.html.hdumps.*; +package gplx.xowa.htmls.hdumps.bldrs; import gplx.*; import gplx.xowa.*; import gplx.xowa.htmls.*; import gplx.xowa.htmls.hdumps.*; import gplx.core.brys.*; import gplx.dbs.*; public class Xob_link_dump_cmd { private Xob_link_dump_tbl tbl; private int src_page_id; private Io_url page_db_url; diff --git a/400_xowa/src/gplx/xowa/html/hdumps/bldrs/Xob_link_dump_tbl.java b/400_xowa/src/gplx/xowa/htmls/hdumps/bldrs/Xob_link_dump_tbl.java similarity index 90% rename from 400_xowa/src/gplx/xowa/html/hdumps/bldrs/Xob_link_dump_tbl.java rename to 400_xowa/src/gplx/xowa/htmls/hdumps/bldrs/Xob_link_dump_tbl.java index e48991c7c..305dd89af 100644 --- a/400_xowa/src/gplx/xowa/html/hdumps/bldrs/Xob_link_dump_tbl.java +++ b/400_xowa/src/gplx/xowa/htmls/hdumps/bldrs/Xob_link_dump_tbl.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.html.hdumps.bldrs; import gplx.*; import gplx.xowa.*; import gplx.xowa.html.*; import gplx.xowa.html.hdumps.*; +package gplx.xowa.htmls.hdumps.bldrs; import gplx.*; import gplx.xowa.*; import gplx.xowa.htmls.*; import gplx.xowa.htmls.hdumps.*; import gplx.dbs.*; class Xob_link_dump_tbl implements RlsAble { public static final String Tbl_name = "link_dump"; private static final Db_meta_fld_list flds = Db_meta_fld_list.new_(); @@ -61,7 +61,7 @@ class Xob_link_dump_tbl implements RlsAble { .Crt_int(Fld_trg_page_id, -1).Exec_select__rls_auto(); } public static Xob_link_dump_tbl Get_or_new(Xow_wiki wiki) { - Db_conn_bldr_data conn_data = Db_conn_bldr.I.Get_or_new(wiki.Fsys_mgr().Root_dir().GenSubFil("xowa.temp.redlink.sqlite3")); + Db_conn_bldr_data conn_data = Db_conn_bldr.Instance.Get_or_new(wiki.Fsys_mgr().Root_dir().GenSubFil("xowa.temp.redlink.sqlite3")); Xob_link_dump_tbl rv = new Xob_link_dump_tbl(conn_data.Conn()); if (conn_data.Created()) rv.Create_tbl(); return rv; diff --git a/400_xowa/src/gplx/xowa/html/hdumps/bldrs/Xob_redlink_mkr_cmd.java b/400_xowa/src/gplx/xowa/htmls/hdumps/bldrs/Xob_redlink_mkr_cmd.java similarity index 91% rename from 400_xowa/src/gplx/xowa/html/hdumps/bldrs/Xob_redlink_mkr_cmd.java rename to 400_xowa/src/gplx/xowa/htmls/hdumps/bldrs/Xob_redlink_mkr_cmd.java index 67328791d..58b6f853c 100644 --- a/400_xowa/src/gplx/xowa/html/hdumps/bldrs/Xob_redlink_mkr_cmd.java +++ b/400_xowa/src/gplx/xowa/htmls/hdumps/bldrs/Xob_redlink_mkr_cmd.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.html.hdumps.bldrs; import gplx.*; import gplx.xowa.*; import gplx.xowa.html.*; import gplx.xowa.html.hdumps.*; +package gplx.xowa.htmls.hdumps.bldrs; import gplx.*; import gplx.xowa.*; import gplx.xowa.htmls.*; import gplx.xowa.htmls.hdumps.*; import gplx.dbs.*; -import gplx.xowa.bldrs.*; import gplx.xowa.bldrs.wkrs.*; import gplx.xowa.html.hdumps.data.*; +import gplx.xowa.bldrs.*; import gplx.xowa.bldrs.wkrs.*; import gplx.xowa.htmls.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; @@ -48,7 +48,7 @@ public class Xob_redlink_mkr_cmd extends Xob_itm_basic_base implements Xob_cmd { int page_id = rdr.Read_int(page_tbl.Fld_page_id()); if (cur_page_id != page_id) { if (cur_page_id != -1) Commit(html_dump_tbl, cur_page_id, bfr); - bfr.Add_int_variable(gplx.xowa.html.hdumps.core.Xohd_data_tid.Tid_redlink).Add_byte_pipe(); + bfr.Add_int_variable(gplx.xowa.htmls.hdumps.core.Xohd_data_tid.Tid_redlink).Add_byte_pipe(); cur_page_id = page_id; } // add html_uid to cur_page's bfr @@ -62,7 +62,7 @@ public class Xob_redlink_mkr_cmd extends Xob_itm_basic_base implements Xob_cmd { attach_rdr.Detach(); } private void Commit(Xowd_html_tbl html_dump_tbl, int cur_page_id, Bry_bfr bfr) { - html_dump_tbl.Insert(cur_page_id, Xowd_html_row.Tid_redlink, bfr.Xto_bry_and_clear()); + html_dump_tbl.Insert(cur_page_id, Xowd_html_row.Tid_redlink, bfr.To_bry_and_clear()); ++commit_count; if ((commit_count % commit_interval ) == 0) html_dump_tbl.Conn().Txn_sav(); diff --git a/400_xowa/src/gplx/xowa/html/hdumps/core/Xohd_data_itm.java b/400_xowa/src/gplx/xowa/htmls/hdumps/core/Xohd_data_itm.java similarity index 85% rename from 400_xowa/src/gplx/xowa/html/hdumps/core/Xohd_data_itm.java rename to 400_xowa/src/gplx/xowa/htmls/hdumps/core/Xohd_data_itm.java index 46a925892..63f7195d2 100644 --- a/400_xowa/src/gplx/xowa/html/hdumps/core/Xohd_data_itm.java +++ b/400_xowa/src/gplx/xowa/htmls/hdumps/core/Xohd_data_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.html.hdumps.core; import gplx.*; import gplx.xowa.*; import gplx.xowa.html.*; import gplx.xowa.html.hdumps.*; +package gplx.xowa.htmls.hdumps.core; import gplx.*; import gplx.xowa.*; import gplx.xowa.htmls.*; import gplx.xowa.htmls.hdumps.*; public interface Xohd_data_itm { int Data_tid(); void Data_write(Bry_bfr bfr); diff --git a/400_xowa/src/gplx/xowa/html/hdumps/core/Xohd_data_itm__base.java b/400_xowa/src/gplx/xowa/htmls/hdumps/core/Xohd_data_itm__base.java similarity index 88% rename from 400_xowa/src/gplx/xowa/html/hdumps/core/Xohd_data_itm__base.java rename to 400_xowa/src/gplx/xowa/htmls/hdumps/core/Xohd_data_itm__base.java index 27dc18b05..864b477fb 100644 --- a/400_xowa/src/gplx/xowa/html/hdumps/core/Xohd_data_itm__base.java +++ b/400_xowa/src/gplx/xowa/htmls/hdumps/core/Xohd_data_itm__base.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.html.hdumps.core; import gplx.*; import gplx.xowa.*; import gplx.xowa.html.*; import gplx.xowa.html.hdumps.*; -import gplx.core.brys.*; import gplx.xowa.html.hdumps.data.*; import gplx.xowa.files.repos.*; +package gplx.xowa.htmls.hdumps.core; import gplx.*; import gplx.xowa.*; import gplx.xowa.htmls.*; import gplx.xowa.htmls.hdumps.*; +import gplx.core.brys.*; import gplx.xowa.htmls.hdumps.data.*; import gplx.xowa.files.repos.*; public abstract class Xohd_data_itm__base implements Xohd_data_itm { public abstract int Img_tid(); public int Data_tid() {return Xohd_data_tid.Tid_img;} @@ -69,8 +69,8 @@ public abstract class Xohd_data_itm__base implements Xohd_data_itm { bfr.Add_byte_nl(); } public String Data_print() { - return String_.Concat_with_str("|", Int_.Xto_str(this.Img_tid()), String_.new_u8(lnki_ttl), Int_.Xto_str(html_uid), Int_.Xto_str(html_w), Int_.Xto_str(html_h) - , Int_.Xto_str(orig_repo_id), Int_.Xto_str(orig_ext), Yn.Xto_str(file_is_orig), Int_.Xto_str(file_w), Double_.Xto_str(lnki_time), Int_.Xto_str(lnki_page) + return String_.Concat_with_str("|", Int_.To_str(this.Img_tid()), String_.new_u8(lnki_ttl), Int_.To_str(html_uid), Int_.To_str(html_w), Int_.To_str(html_h) + , Int_.To_str(orig_repo_id), Int_.To_str(orig_ext), Yn.To_str(file_is_orig), Int_.To_str(file_w), Double_.To_str(lnki_time), Int_.To_str(lnki_page) ); } @gplx.Virtual public void Data_parse(Bry_rdr rdr) { diff --git a/400_xowa/src/gplx/xowa/html/hdumps/core/Xohd_data_itm__gallery_itm.java b/400_xowa/src/gplx/xowa/htmls/hdumps/core/Xohd_data_itm__gallery_itm.java similarity index 91% rename from 400_xowa/src/gplx/xowa/html/hdumps/core/Xohd_data_itm__gallery_itm.java rename to 400_xowa/src/gplx/xowa/htmls/hdumps/core/Xohd_data_itm__gallery_itm.java index 35387a1f2..032da2b4e 100644 --- a/400_xowa/src/gplx/xowa/html/hdumps/core/Xohd_data_itm__gallery_itm.java +++ b/400_xowa/src/gplx/xowa/htmls/hdumps/core/Xohd_data_itm__gallery_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.html.hdumps.core; import gplx.*; import gplx.xowa.*; import gplx.xowa.html.*; import gplx.xowa.html.hdumps.*; +package gplx.xowa.htmls.hdumps.core; import gplx.*; import gplx.xowa.*; import gplx.xowa.htmls.*; import gplx.xowa.htmls.hdumps.*; import gplx.core.brys.*; import gplx.xowa.files.*; public class Xohd_data_itm__gallery_itm extends Xohd_data_itm__base { @Override public int Img_tid() {return Xohd_data_itm__base.Tid_gallery;} diff --git a/400_xowa/src/gplx/xowa/html/hdumps/core/Xohd_data_itm__gallery_mgr.java b/400_xowa/src/gplx/xowa/htmls/hdumps/core/Xohd_data_itm__gallery_mgr.java similarity index 86% rename from 400_xowa/src/gplx/xowa/html/hdumps/core/Xohd_data_itm__gallery_mgr.java rename to 400_xowa/src/gplx/xowa/htmls/hdumps/core/Xohd_data_itm__gallery_mgr.java index 70bc3331b..155dd9148 100644 --- a/400_xowa/src/gplx/xowa/html/hdumps/core/Xohd_data_itm__gallery_mgr.java +++ b/400_xowa/src/gplx/xowa/htmls/hdumps/core/Xohd_data_itm__gallery_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.html.hdumps.core; import gplx.*; import gplx.xowa.*; import gplx.xowa.html.*; import gplx.xowa.html.hdumps.*; +package gplx.xowa.htmls.hdumps.core; import gplx.*; import gplx.xowa.*; import gplx.xowa.htmls.*; import gplx.xowa.htmls.hdumps.*; public class Xohd_data_itm__gallery_mgr implements Xohd_data_itm { public Xohd_data_itm__gallery_mgr(int uid, int box_max) { this.uid = uid; @@ -29,7 +29,7 @@ public class Xohd_data_itm__gallery_mgr implements Xohd_data_itm { ; bfr.Add_byte_nl(); } - public String Data_print() {return Int_.Xto_str(box_max);} + public String Data_print() {return Int_.To_str(box_max);} public int Uid() {return uid;} private int uid; public int Box_max() {return box_max;} private int box_max; } diff --git a/400_xowa/src/gplx/xowa/html/hdumps/core/Xohd_data_itm__img.java b/400_xowa/src/gplx/xowa/htmls/hdumps/core/Xohd_data_itm__img.java similarity index 87% rename from 400_xowa/src/gplx/xowa/html/hdumps/core/Xohd_data_itm__img.java rename to 400_xowa/src/gplx/xowa/htmls/hdumps/core/Xohd_data_itm__img.java index d6c9d4e19..44e0c5fe8 100644 --- a/400_xowa/src/gplx/xowa/html/hdumps/core/Xohd_data_itm__img.java +++ b/400_xowa/src/gplx/xowa/htmls/hdumps/core/Xohd_data_itm__img.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.html.hdumps.core; import gplx.*; import gplx.xowa.*; import gplx.xowa.html.*; import gplx.xowa.html.hdumps.*; +package gplx.xowa.htmls.hdumps.core; import gplx.*; import gplx.xowa.*; import gplx.xowa.htmls.*; import gplx.xowa.htmls.hdumps.*; import gplx.xowa.files.*; public class Xohd_data_itm__img extends Xohd_data_itm__base { @Override public int Img_tid() {return Xohd_data_itm__base.Tid_basic;} diff --git a/400_xowa/src/gplx/xowa/html/hdumps/core/Xohd_data_tid.java b/400_xowa/src/gplx/xowa/htmls/hdumps/core/Xohd_data_tid.java similarity index 86% rename from 400_xowa/src/gplx/xowa/html/hdumps/core/Xohd_data_tid.java rename to 400_xowa/src/gplx/xowa/htmls/hdumps/core/Xohd_data_tid.java index 9a5282275..598f31cb5 100644 --- a/400_xowa/src/gplx/xowa/html/hdumps/core/Xohd_data_tid.java +++ b/400_xowa/src/gplx/xowa/htmls/hdumps/core/Xohd_data_tid.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.html.hdumps.core; import gplx.*; import gplx.xowa.*; import gplx.xowa.html.*; import gplx.xowa.html.hdumps.*; +package gplx.xowa.htmls.hdumps.core; import gplx.*; import gplx.xowa.*; import gplx.xowa.htmls.*; import gplx.xowa.htmls.hdumps.*; public class Xohd_data_tid { // SERIALIZED public static final int Tid_img = 1 diff --git a/400_xowa/src/gplx/xowa/html/hdumps/data/Xohd_page_html_mgr__load.java b/400_xowa/src/gplx/xowa/htmls/hdumps/data/Xohd_page_html_mgr__load.java similarity index 86% rename from 400_xowa/src/gplx/xowa/html/hdumps/data/Xohd_page_html_mgr__load.java rename to 400_xowa/src/gplx/xowa/htmls/hdumps/data/Xohd_page_html_mgr__load.java index 570f3cf52..b716d2a30 100644 --- a/400_xowa/src/gplx/xowa/html/hdumps/data/Xohd_page_html_mgr__load.java +++ b/400_xowa/src/gplx/xowa/htmls/hdumps/data/Xohd_page_html_mgr__load.java @@ -15,12 +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.html.hdumps.data; import gplx.*; import gplx.xowa.*; import gplx.xowa.html.*; import gplx.xowa.html.hdumps.*; +package gplx.xowa.htmls.hdumps.data; import gplx.*; import gplx.xowa.*; import gplx.xowa.htmls.*; import gplx.xowa.htmls.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.xowa.gui.*; +import gplx.xowa.wikis.dbs.*; import gplx.xowa.wikis.pages.*; import gplx.xowa.htmls.hdumps.core.*; import gplx.xowa.htmls.hdumps.data.*; import gplx.xowa.htmls.hdumps.pages.*; import gplx.xowa.wikis.pages.skins.*; import gplx.xowa.htmls.hdumps.data.srl.*; +import gplx.xowa.wikis.data.*; import gplx.xowa.wikis.data.tbls.*; import gplx.xowa.guis.*; public class Xohd_page_html_mgr__load { - private final Xohd_page_srl_mgr srl_mgr = Xohd_page_srl_mgr.I; + private final Xohd_page_srl_mgr srl_mgr = Xohd_page_srl_mgr.Instance; private final Bry_rdr rdr = new Bry_rdr(); private final List_adp rows = List_adp_.new_(), imgs = List_adp_.new_(); public void Load_page(Xow_wiki wiki, Xog_page hpg, Xowd_html_tbl tbl, int page_id, Xoa_ttl page_ttl) { Xoa_app_.Usr_dlg().Plog_many("", "", "hdump.load.text: ttl=~{0}", page_ttl.Full_db_as_str()); diff --git a/400_xowa/src/gplx/xowa/html/hdumps/data/Xohd_page_html_mgr__save.java b/400_xowa/src/gplx/xowa/htmls/hdumps/data/Xohd_page_html_mgr__save.java similarity index 81% rename from 400_xowa/src/gplx/xowa/html/hdumps/data/Xohd_page_html_mgr__save.java rename to 400_xowa/src/gplx/xowa/htmls/hdumps/data/Xohd_page_html_mgr__save.java index 3f7f0e868..8522b9c25 100644 --- a/400_xowa/src/gplx/xowa/html/hdumps/data/Xohd_page_html_mgr__save.java +++ b/400_xowa/src/gplx/xowa/htmls/hdumps/data/Xohd_page_html_mgr__save.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.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.xowa.gui.*; import gplx.xowa.html.hdumps.pages.*; import gplx.xowa.parsers.lnkis.redlinks.*; +package gplx.xowa.htmls.hdumps.data; import gplx.*; import gplx.xowa.*; import gplx.xowa.htmls.*; import gplx.xowa.htmls.hdumps.*; +import gplx.xowa.wikis.data.*; import gplx.xowa.wikis.data.tbls.*; import gplx.xowa.htmls.hdumps.core.*; import gplx.xowa.htmls.hdumps.data.srl.*; +import gplx.xowa.guis.*; import gplx.xowa.htmls.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; + private Xohd_page_srl_mgr srl_mgr = Xohd_page_srl_mgr.Instance; public void Update(Bry_bfr tmp_bfr, Xowd_html_tbl tbl, Xoae_page page) { Xog_page hpg = new Xog_page(); hpg.Ctor_from_page(tmp_bfr, page); @@ -39,7 +39,7 @@ public class Xohd_page_html_mgr__save { int len = redlink_mgr.Len(); if (len == 0) return null; for (int i = 0; i < len; ++i) bfr.Add_int_variable(redlink_mgr.Get_at(i)).Add_byte_pipe(); - return bfr.Xto_bry_and_clear(); + return bfr.To_bry_and_clear(); } public static byte[] Write_imgs(Bry_bfr bfr, List_adp imgs) { int len = imgs.Count(); if (len == 0) return null; // no images; exit early, else will write blank String @@ -47,6 +47,6 @@ public class Xohd_page_html_mgr__save { Xohd_data_itm itm = (Xohd_data_itm)imgs.Get_at(i); itm.Data_write(bfr); } - return bfr.Xto_bry_and_clear(); + return bfr.To_bry_and_clear(); } } diff --git a/400_xowa/src/gplx/xowa/html/hdumps/data/srl/Xohd_page_srl_itm.java b/400_xowa/src/gplx/xowa/htmls/hdumps/data/srl/Xohd_page_srl_itm.java similarity index 88% rename from 400_xowa/src/gplx/xowa/html/hdumps/data/srl/Xohd_page_srl_itm.java rename to 400_xowa/src/gplx/xowa/htmls/hdumps/data/srl/Xohd_page_srl_itm.java index b53418bbd..a52c8378c 100644 --- a/400_xowa/src/gplx/xowa/html/hdumps/data/srl/Xohd_page_srl_itm.java +++ b/400_xowa/src/gplx/xowa/htmls/hdumps/data/srl/Xohd_page_srl_itm.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.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.xowa.gui.*; +package gplx.xowa.htmls.hdumps.data.srl; import gplx.*; import gplx.xowa.*; import gplx.xowa.htmls.*; import gplx.xowa.htmls.hdumps.*; import gplx.xowa.htmls.hdumps.data.*; +import gplx.core.primitives.*; import gplx.xowa.htmls.hzips.*; import gplx.xowa.guis.*; 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_.java b/400_xowa/src/gplx/xowa/htmls/hdumps/data/srl/Xohd_page_srl_itm_.java similarity index 86% rename from 400_xowa/src/gplx/xowa/html/hdumps/data/srl/Xohd_page_srl_itm_.java rename to 400_xowa/src/gplx/xowa/htmls/hdumps/data/srl/Xohd_page_srl_itm_.java index 0f3458f62..18a9e94a1 100644 --- a/400_xowa/src/gplx/xowa/html/hdumps/data/srl/Xohd_page_srl_itm_.java +++ b/400_xowa/src/gplx/xowa/htmls/hdumps/data/srl/Xohd_page_srl_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.html.hdumps.data.srl; import gplx.*; import gplx.xowa.*; import gplx.xowa.html.*; import gplx.xowa.html.hdumps.*; import gplx.xowa.html.hdumps.data.*; +package gplx.xowa.htmls.hdumps.data.srl; import gplx.*; import gplx.xowa.*; import gplx.xowa.htmls.*; import gplx.xowa.htmls.hdumps.*; import gplx.xowa.htmls.hdumps.data.*; public class Xohd_page_srl_itm_ { public static final byte // SERIALIZED Tid_body = 0 diff --git a/400_xowa/src/gplx/xowa/html/hdumps/data/srl/Xohd_page_srl_itm_tst.java b/400_xowa/src/gplx/xowa/htmls/hdumps/data/srl/Xohd_page_srl_itm_tst.java similarity index 88% rename from 400_xowa/src/gplx/xowa/html/hdumps/data/srl/Xohd_page_srl_itm_tst.java rename to 400_xowa/src/gplx/xowa/htmls/hdumps/data/srl/Xohd_page_srl_itm_tst.java index 9bfdf274c..779a491d1 100644 --- a/400_xowa/src/gplx/xowa/html/hdumps/data/srl/Xohd_page_srl_itm_tst.java +++ b/400_xowa/src/gplx/xowa/htmls/hdumps/data/srl/Xohd_page_srl_itm_tst.java @@ -15,10 +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.html.hdumps.data.srl; import gplx.*; import gplx.xowa.*; import gplx.xowa.html.*; import gplx.xowa.html.hdumps.*; import gplx.xowa.html.hdumps.data.*; +package gplx.xowa.htmls.hdumps.data.srl; import gplx.*; import gplx.xowa.*; import gplx.xowa.htmls.*; import gplx.xowa.htmls.hdumps.*; import gplx.xowa.htmls.hdumps.data.*; import org.junit.*; -import gplx.xowa.html.hdumps.core.*; import gplx.xowa.html.hzips.*; import gplx.xowa.html.hdumps.pages.*; -import gplx.xowa.gui.*; +import gplx.xowa.htmls.hdumps.core.*; import gplx.xowa.htmls.hzips.*; import gplx.xowa.htmls.hdumps.pages.*; +import gplx.xowa.guis.*; 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() { @@ -51,11 +51,11 @@ class Xohd_page_srl_itm_fxt { } public void Test_page(Xog_page_bldr hpg_bldr, Xohd_page_srl_itm_mok... expd_itms) { Xog_page hpg = hpg_bldr.Bld(); - byte[] actl = Xohd_page_srl_mgr.I.Save(hpg, bfr); + byte[] actl = Xohd_page_srl_mgr.Instance.Save(hpg, bfr); Tfds.Eq_ary(Xohd_page_srl_itm_mok.Xto_bry(bfr, expd_itms), actl); Xog_page actl_hpg = new Xog_page(); - Xohd_page_srl_mgr.I.Load(actl_hpg, actl); - Tfds.Eq_ary(actl, Xohd_page_srl_mgr.I.Save(hpg, bfr)); + Xohd_page_srl_mgr.Instance.Load(actl_hpg, actl); + Tfds.Eq_ary(actl, Xohd_page_srl_mgr.Instance.Save(hpg, bfr)); } } class Xog_page_bldr { @@ -94,6 +94,6 @@ class Xohd_page_srl_itm_mok { Xow_hzip_int_.Save_bin_int_abrv(bfr, itm.Len()); bfr.Add(itm.Data()); } - return bfr.Xto_bry_and_clear(); + return bfr.To_bry_and_clear(); } } diff --git a/400_xowa/src/gplx/xowa/html/hdumps/data/srl/Xohd_page_srl_itms.java b/400_xowa/src/gplx/xowa/htmls/hdumps/data/srl/Xohd_page_srl_itms.java similarity index 89% rename from 400_xowa/src/gplx/xowa/html/hdumps/data/srl/Xohd_page_srl_itms.java rename to 400_xowa/src/gplx/xowa/htmls/hdumps/data/srl/Xohd_page_srl_itms.java index 2114a63a6..909c3ff92 100644 --- a/400_xowa/src/gplx/xowa/html/hdumps/data/srl/Xohd_page_srl_itms.java +++ b/400_xowa/src/gplx/xowa/htmls/hdumps/data/srl/Xohd_page_srl_itms.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.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.xowa.gui.*; +package gplx.xowa.htmls.hdumps.data.srl; import gplx.*; import gplx.xowa.*; import gplx.xowa.htmls.*; import gplx.xowa.htmls.hdumps.*; import gplx.xowa.htmls.hdumps.data.*; +import gplx.core.primitives.*; import gplx.xowa.htmls.hdumps.core.*; import gplx.xowa.htmls.hzips.*; import gplx.xowa.htmls.hdumps.pages.*; +import gplx.xowa.guis.*; 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/htmls/hdumps/data/srl/Xohd_page_srl_mgr.java similarity index 79% rename from 400_xowa/src/gplx/xowa/html/hdumps/data/srl/Xohd_page_srl_mgr.java rename to 400_xowa/src/gplx/xowa/htmls/hdumps/data/srl/Xohd_page_srl_mgr.java index d38237eb5..9526452a8 100644 --- a/400_xowa/src/gplx/xowa/html/hdumps/data/srl/Xohd_page_srl_mgr.java +++ b/400_xowa/src/gplx/xowa/htmls/hdumps/data/srl/Xohd_page_srl_mgr.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.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.gui.*; +package gplx.xowa.htmls.hdumps.data.srl; import gplx.*; import gplx.xowa.*; import gplx.xowa.htmls.*; import gplx.xowa.htmls.hdumps.*; import gplx.xowa.htmls.hdumps.data.*; +import gplx.core.primitives.*; import gplx.xowa.htmls.hdumps.core.*; +import gplx.xowa.guis.*; 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_(); @@ -28,7 +28,7 @@ public class Xohd_page_srl_mgr { public byte[] Save(Xog_page hpg, Bry_bfr bfr) { for (Xohd_page_srl_itm itm : itm_ary) itm.Save(hpg, bfr); - return bfr.Xto_bry_and_clear(); + return bfr.To_bry_and_clear(); } public void Load(Xog_page hpg, byte[] bry) { if (bry == null) return; @@ -40,5 +40,5 @@ public class Xohd_page_srl_mgr { pos += itm.Load(hpg, bry, bry_len, pos + 1, count_ref) + 1; // +1 to skip tid } } - public static final Xohd_page_srl_mgr I = new Xohd_page_srl_mgr(Xohd_page_srl_itm_.Itms); + public static final Xohd_page_srl_mgr Instance = new Xohd_page_srl_mgr(Xohd_page_srl_itm_.Itms); } diff --git a/400_xowa/src/gplx/xowa/html/hdumps/pages/Xopg_hdump_data.java b/400_xowa/src/gplx/xowa/htmls/hdumps/pages/Xopg_hdump_data.java similarity index 88% rename from 400_xowa/src/gplx/xowa/html/hdumps/pages/Xopg_hdump_data.java rename to 400_xowa/src/gplx/xowa/htmls/hdumps/pages/Xopg_hdump_data.java index 3546bdc63..9d99b8066 100644 --- a/400_xowa/src/gplx/xowa/html/hdumps/pages/Xopg_hdump_data.java +++ b/400_xowa/src/gplx/xowa/htmls/hdumps/pages/Xopg_hdump_data.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.html.hdumps.pages; import gplx.*; import gplx.xowa.*; import gplx.xowa.html.*; import gplx.xowa.html.hdumps.*; -import gplx.xowa.html.hdumps.core.*; import gplx.xowa.files.*; +package gplx.xowa.htmls.hdumps.pages; import gplx.*; import gplx.xowa.*; import gplx.xowa.htmls.*; import gplx.xowa.htmls.hdumps.*; +import gplx.xowa.htmls.hdumps.core.*; import gplx.xowa.files.*; import gplx.xowa.parsers.lnkis.redlinks.*; public class Xopg_hdump_data { public byte[] Body() {return body;} public void Body_(byte[] v) {body = v;} private byte[] body; diff --git a/400_xowa/src/gplx/xowa/html/hdumps/pages/Xopg_module_mgr.java b/400_xowa/src/gplx/xowa/htmls/hdumps/pages/Xopg_module_mgr.java similarity index 91% rename from 400_xowa/src/gplx/xowa/html/hdumps/pages/Xopg_module_mgr.java rename to 400_xowa/src/gplx/xowa/htmls/hdumps/pages/Xopg_module_mgr.java index 57bfc4b7b..a1fd60da5 100644 --- a/400_xowa/src/gplx/xowa/html/hdumps/pages/Xopg_module_mgr.java +++ b/400_xowa/src/gplx/xowa/htmls/hdumps/pages/Xopg_module_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.html.hdumps.pages; import gplx.*; import gplx.xowa.*; import gplx.xowa.html.*; import gplx.xowa.html.hdumps.*; +package gplx.xowa.htmls.hdumps.pages; import gplx.*; import gplx.xowa.*; import gplx.xowa.htmls.*; import gplx.xowa.htmls.hdumps.*; public class Xopg_module_mgr { public boolean Math_exists() {return math_exists;} public void Math_exists_(boolean v) {math_exists = v;} private boolean math_exists; public boolean Imap_exists() {return imap_exists;} public void Imap_exists_(boolean v) {imap_exists = v;} private boolean imap_exists; diff --git a/400_xowa/src/gplx/xowa/html/heads/Xoh_head_itm_.java b/400_xowa/src/gplx/xowa/htmls/heads/Xoh_head_itm_.java similarity index 93% rename from 400_xowa/src/gplx/xowa/html/heads/Xoh_head_itm_.java rename to 400_xowa/src/gplx/xowa/htmls/heads/Xoh_head_itm_.java index b69a4baf2..744c867d0 100644 --- a/400_xowa/src/gplx/xowa/html/heads/Xoh_head_itm_.java +++ b/400_xowa/src/gplx/xowa/htmls/heads/Xoh_head_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.html.heads; import gplx.*; import gplx.xowa.*; import gplx.xowa.html.*; +package gplx.xowa.htmls.heads; import gplx.*; import gplx.xowa.*; import gplx.xowa.htmls.*; public class Xoh_head_itm_ { public static final byte[] // SRL: navframe, toc, title_rewrite are in wiki.cfg Key__collapsible = Bry_.new_a7("collapsible") diff --git a/400_xowa/src/gplx/xowa/html/heads/Xoh_head_itm__base.java b/400_xowa/src/gplx/xowa/htmls/heads/Xoh_head_itm__base.java similarity index 94% rename from 400_xowa/src/gplx/xowa/html/heads/Xoh_head_itm__base.java rename to 400_xowa/src/gplx/xowa/htmls/heads/Xoh_head_itm__base.java index e01b13400..e1fd6486d 100644 --- a/400_xowa/src/gplx/xowa/html/heads/Xoh_head_itm__base.java +++ b/400_xowa/src/gplx/xowa/htmls/heads/Xoh_head_itm__base.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.html.heads; import gplx.*; import gplx.xowa.*; import gplx.xowa.html.*; +package gplx.xowa.htmls.heads; import gplx.*; import gplx.xowa.*; import gplx.xowa.htmls.*; public abstract class Xoh_head_itm__base { public abstract byte[] Key(); public abstract int Flags(); diff --git a/400_xowa/src/gplx/xowa/html/heads/Xoh_head_itm__collapsible.java b/400_xowa/src/gplx/xowa/htmls/heads/Xoh_head_itm__collapsible.java similarity index 93% rename from 400_xowa/src/gplx/xowa/html/heads/Xoh_head_itm__collapsible.java rename to 400_xowa/src/gplx/xowa/htmls/heads/Xoh_head_itm__collapsible.java index c79e6c2cb..202680486 100644 --- a/400_xowa/src/gplx/xowa/html/heads/Xoh_head_itm__collapsible.java +++ b/400_xowa/src/gplx/xowa/htmls/heads/Xoh_head_itm__collapsible.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.html.heads; import gplx.*; import gplx.xowa.*; import gplx.xowa.html.*; +package gplx.xowa.htmls.heads; import gplx.*; import gplx.xowa.*; import gplx.xowa.htmls.*; public class Xoh_head_itm__collapsible extends Xoh_head_itm__base { @Override public byte[] Key() {return Xoh_head_itm_.Key__collapsible;} @Override public int Flags() {return Flag__js_head_global;} diff --git a/400_xowa/src/gplx/xowa/html/heads/Xoh_head_itm__css.java b/400_xowa/src/gplx/xowa/htmls/heads/Xoh_head_itm__css.java similarity index 90% rename from 400_xowa/src/gplx/xowa/html/heads/Xoh_head_itm__css.java rename to 400_xowa/src/gplx/xowa/htmls/heads/Xoh_head_itm__css.java index 354e66d83..3f0c569f7 100644 --- a/400_xowa/src/gplx/xowa/html/heads/Xoh_head_itm__css.java +++ b/400_xowa/src/gplx/xowa/htmls/heads/Xoh_head_itm__css.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.html.heads; import gplx.*; import gplx.xowa.*; import gplx.xowa.html.*; -import gplx.xowa.gui.*; +package gplx.xowa.htmls.heads; import gplx.*; import gplx.xowa.*; import gplx.xowa.htmls.*; +import gplx.xowa.guis.*; public class Xoh_head_itm__css extends Xoh_head_itm__base { @Override public byte[] Key() {return Xoh_head_itm_.Key__css;} @Override public int Flags() {return Flag__css_text;} diff --git a/400_xowa/src/gplx/xowa/html/heads/Xoh_head_itm__dbui.java b/400_xowa/src/gplx/xowa/htmls/heads/Xoh_head_itm__dbui.java similarity index 95% rename from 400_xowa/src/gplx/xowa/html/heads/Xoh_head_itm__dbui.java rename to 400_xowa/src/gplx/xowa/htmls/heads/Xoh_head_itm__dbui.java index 663f6a0f5..74496932d 100644 --- a/400_xowa/src/gplx/xowa/html/heads/Xoh_head_itm__dbui.java +++ b/400_xowa/src/gplx/xowa/htmls/heads/Xoh_head_itm__dbui.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.html.heads; import gplx.*; import gplx.xowa.*; import gplx.xowa.html.*; -import gplx.xowa.gui.*; +package gplx.xowa.htmls.heads; import gplx.*; import gplx.xowa.*; import gplx.xowa.htmls.*; +import gplx.xowa.guis.*; public class Xoh_head_itm__dbui extends Xoh_head_itm__base { @Override public byte[] Key() {return Xoh_head_itm_.Key__dbui;} @Override public int Flags() {return Flag__css_text | Flag__css_include | Flag__js_tail_script | Flag__js_window_onload;} diff --git a/400_xowa/src/gplx/xowa/html/heads/Xoh_head_itm__gallery.java b/400_xowa/src/gplx/xowa/htmls/heads/Xoh_head_itm__gallery.java similarity index 90% rename from 400_xowa/src/gplx/xowa/html/heads/Xoh_head_itm__gallery.java rename to 400_xowa/src/gplx/xowa/htmls/heads/Xoh_head_itm__gallery.java index e2c2e080e..cd2c336d2 100644 --- a/400_xowa/src/gplx/xowa/html/heads/Xoh_head_itm__gallery.java +++ b/400_xowa/src/gplx/xowa/htmls/heads/Xoh_head_itm__gallery.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.html.heads; import gplx.*; import gplx.xowa.*; import gplx.xowa.html.*; -import gplx.xowa.gui.*; +package gplx.xowa.htmls.heads; import gplx.*; import gplx.xowa.*; import gplx.xowa.htmls.*; +import gplx.xowa.guis.*; public class Xoh_head_itm__gallery extends Xoh_head_itm__base { @Override public byte[] Key() {return Xoh_head_itm_.Key__gallery;} @Override public int Flags() {return Flag__js_head_global;} diff --git a/400_xowa/src/gplx/xowa/html/heads/Xoh_head_itm__globals.java b/400_xowa/src/gplx/xowa/htmls/heads/Xoh_head_itm__globals.java similarity index 91% rename from 400_xowa/src/gplx/xowa/html/heads/Xoh_head_itm__globals.java rename to 400_xowa/src/gplx/xowa/htmls/heads/Xoh_head_itm__globals.java index 2b387c704..dceb87950 100644 --- a/400_xowa/src/gplx/xowa/html/heads/Xoh_head_itm__globals.java +++ b/400_xowa/src/gplx/xowa/htmls/heads/Xoh_head_itm__globals.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.html.heads; import gplx.*; import gplx.xowa.*; import gplx.xowa.html.*; +package gplx.xowa.htmls.heads; import gplx.*; import gplx.xowa.*; import gplx.xowa.htmls.*; 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(); @@ -41,18 +41,18 @@ public class Xoh_head_itm__globals extends Xoh_head_itm__base { wtr.Write_js_var(Var_xowa_mode_is_server , Bool_.N, app.Tcp_server().Running() ? Bool_.True_bry : Bool_.False_bry); } @Override public void Write_js_tail_script(Xoae_app app, Xowe_wiki wiki, Xoae_page page, Xoh_head_wtr wtr) { - wtr.Write_js_xowa_var(Key__app_mode, Bool_.Y, app.App_type().Name()); + wtr.Write_js_xowa_var(Key__app_mode, Bool_.Y, app.Mode().Name()); wtr.Write_js_alias_var (Page__alias, Page__key); wtr.Write_js_alias_kv (Page__alias, Key__wiki , page.Wiki().Domain_bry()); wtr.Write_js_alias_kv (Page__alias, Key__ttl , page.Ttl().Page_db()); } private static final byte[] Key__app_mode = Bry_.new_a7("xowa.app.mode"), Page__alias = Bry_.new_a7("x_p"), Page__key = Bry_.new_a7("xowa.page"), Key__wiki = Bry_.new_a7("wiki"), Key__ttl = Bry_.new_a7("ttl"); @Override public void Write_js_head_global(Xoae_app app, Xowe_wiki wiki, Xoae_page page, Xoh_head_wtr wtr) { - wtr.Write_js_global_ini_atr_val(Key_mode_is_gui , app.App_type().Uid_is_gui()); - wtr.Write_js_global_ini_atr_val(Key_mode_is_http , app.App_type().Uid_is_http()); + wtr.Write_js_global_ini_atr_val(Key_mode_is_gui , app.Mode().Tid_is_gui()); + wtr.Write_js_global_ini_atr_val(Key_mode_is_http , app.Mode().Tid_is_http()); wtr.Write_js_global_ini_atr_val(Key_http_port , app.Http_server().Port()); wtr.Write_js_global_ini_atr_msg(wiki, Key_sort_ascending); wtr.Write_js_global_ini_atr_msg(wiki, Key_sort_descending); - Xol_lang lang = wiki.Lang(); Xow_msg_mgr msg_mgr = wiki.Msg_mgr(); + Xol_lang_itm lang = wiki.Lang(); Xow_msg_mgr msg_mgr = wiki.Msg_mgr(); Bry_bfr tmp_bfr = app.Utl__bfr_mkr().Get_b512(); tmp_wtr.Init(tmp_bfr); byte[] months_long = Html_js_table_months(tmp_wtr, msg_mgr, Xol_msg_itm_.Id_dte_month_name_january, Xol_msg_itm_.Id_dte_month_name_december); @@ -85,7 +85,7 @@ public class Xoh_head_itm__globals extends Xoh_head_itm__base { for (int i = january_id; i <= december_id; i++) tmp_wtr.Write_js_ary_itm(msg_mgr.Val_by_id(i)); tmp_wtr.Write_js_ary_end(); - return tmp_wtr.Bfr().Xto_bry_and_clear(); + return tmp_wtr.Bfr().To_bry_and_clear(); } private static byte[] Html_js_table_num_format_separators(Xoh_head_wtr tmp_wtr, Xol_transform_mgr separator_mgr) { byte[] dec_spr = separator_mgr.Get_val_or_self(Xol_num_mgr.Separators_key__dec); @@ -94,7 +94,7 @@ public class Xoh_head_itm__globals extends Xoh_head_itm__base { tmp_wtr.Write_js_ary_itm(Bry_.Add(dec_spr, Byte_ascii.Tab_bry, Byte_ascii.Dot_bry)); tmp_wtr.Write_js_ary_itm(Bry_.Add(grp_spr, Byte_ascii.Tab_bry, Byte_ascii.Comma_bry)); tmp_wtr.Write_js_ary_end(); - return tmp_wtr.Bfr().Xto_bry_and_clear(); + return tmp_wtr.Bfr().To_bry_and_clear(); } private static final byte[] Date_format_default = Bry_.new_a7("dmy") diff --git a/400_xowa/src/gplx/xowa/html/heads/Xoh_head_itm__graph.java b/400_xowa/src/gplx/xowa/htmls/heads/Xoh_head_itm__graph.java similarity index 93% rename from 400_xowa/src/gplx/xowa/html/heads/Xoh_head_itm__graph.java rename to 400_xowa/src/gplx/xowa/htmls/heads/Xoh_head_itm__graph.java index cb07f3dea..d48c09525 100644 --- a/400_xowa/src/gplx/xowa/html/heads/Xoh_head_itm__graph.java +++ b/400_xowa/src/gplx/xowa/htmls/heads/Xoh_head_itm__graph.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.html.heads; import gplx.*; import gplx.xowa.*; import gplx.xowa.html.*; -import gplx.xowa.gui.*; +package gplx.xowa.htmls.heads; import gplx.*; import gplx.xowa.*; import gplx.xowa.htmls.*; +import gplx.xowa.guis.*; public class Xoh_head_itm__graph extends Xoh_head_itm__base { @Override public byte[] Key() {return Xoh_head_itm_.Key__graph;} @Override public int Flags() {return Flag__js_include | Flag__js_window_onload;} diff --git a/400_xowa/src/gplx/xowa/html/heads/Xoh_head_itm__hiero.java b/400_xowa/src/gplx/xowa/htmls/heads/Xoh_head_itm__hiero.java similarity index 90% rename from 400_xowa/src/gplx/xowa/html/heads/Xoh_head_itm__hiero.java rename to 400_xowa/src/gplx/xowa/htmls/heads/Xoh_head_itm__hiero.java index 550df664d..ba0e7cf8d 100644 --- a/400_xowa/src/gplx/xowa/html/heads/Xoh_head_itm__hiero.java +++ b/400_xowa/src/gplx/xowa/htmls/heads/Xoh_head_itm__hiero.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.html.heads; import gplx.*; import gplx.xowa.*; import gplx.xowa.html.*; -import gplx.xowa.gui.*; +package gplx.xowa.htmls.heads; import gplx.*; import gplx.xowa.*; import gplx.xowa.htmls.*; +import gplx.xowa.guis.*; public class Xoh_head_itm__hiero extends Xoh_head_itm__base { @Override public byte[] Key() {return Xoh_head_itm_.Key__hiero;} @Override public int Flags() {return Flag__css_include;} diff --git a/400_xowa/src/gplx/xowa/html/heads/Xoh_head_itm__mathjax.java b/400_xowa/src/gplx/xowa/htmls/heads/Xoh_head_itm__mathjax.java similarity index 90% rename from 400_xowa/src/gplx/xowa/html/heads/Xoh_head_itm__mathjax.java rename to 400_xowa/src/gplx/xowa/htmls/heads/Xoh_head_itm__mathjax.java index aa1cb9ee3..961561acb 100644 --- a/400_xowa/src/gplx/xowa/html/heads/Xoh_head_itm__mathjax.java +++ b/400_xowa/src/gplx/xowa/htmls/heads/Xoh_head_itm__mathjax.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.html.heads; import gplx.*; import gplx.xowa.*; import gplx.xowa.html.*; -import gplx.xowa.gui.*; +package gplx.xowa.htmls.heads; import gplx.*; import gplx.xowa.*; import gplx.xowa.htmls.*; +import gplx.xowa.guis.*; public class Xoh_head_itm__mathjax extends Xoh_head_itm__base { @Override public byte[] Key() {return Xoh_head_itm_.Key__mathjax;} @Override public int Flags() {return Flag__js_include;} diff --git a/400_xowa/src/gplx/xowa/html/heads/Xoh_head_itm__navframe.java b/400_xowa/src/gplx/xowa/htmls/heads/Xoh_head_itm__navframe.java similarity index 93% rename from 400_xowa/src/gplx/xowa/html/heads/Xoh_head_itm__navframe.java rename to 400_xowa/src/gplx/xowa/htmls/heads/Xoh_head_itm__navframe.java index 6c7e0361b..ebca19fcf 100644 --- a/400_xowa/src/gplx/xowa/html/heads/Xoh_head_itm__navframe.java +++ b/400_xowa/src/gplx/xowa/htmls/heads/Xoh_head_itm__navframe.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.html.heads; import gplx.*; import gplx.xowa.*; import gplx.xowa.html.*; +package gplx.xowa.htmls.heads; import gplx.*; import gplx.xowa.*; import gplx.xowa.htmls.*; public class Xoh_head_itm__navframe extends Xoh_head_itm__base { @Override public byte[] Key() {return Xoh_head_itm_.Key__navframe;} @Override public int Flags() {return Flag__js_head_global;} diff --git a/400_xowa/src/gplx/xowa/html/heads/Xoh_head_itm__popups.java b/400_xowa/src/gplx/xowa/htmls/heads/Xoh_head_itm__popups.java similarity index 94% rename from 400_xowa/src/gplx/xowa/html/heads/Xoh_head_itm__popups.java rename to 400_xowa/src/gplx/xowa/htmls/heads/Xoh_head_itm__popups.java index fbc830f1d..99a84b275 100644 --- a/400_xowa/src/gplx/xowa/html/heads/Xoh_head_itm__popups.java +++ b/400_xowa/src/gplx/xowa/htmls/heads/Xoh_head_itm__popups.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.html.heads; import gplx.*; import gplx.xowa.*; import gplx.xowa.html.*; -import gplx.xowa.gui.*; -import gplx.xowa.apis.xowa.html.modules.*; +package gplx.xowa.htmls.heads; import gplx.*; import gplx.xowa.*; import gplx.xowa.htmls.*; +import gplx.xowa.guis.*; +import gplx.xowa.apps.apis.xowa.html.modules.*; public class Xoh_head_itm__popups extends Xoh_head_itm__base { @Override public byte[] Key() {return Xoh_head_itm_.Key__popups;} @Override public int Flags() {return Flag__css_include | Flag__js_head_global | Flag__js_tail_script;} diff --git a/400_xowa/src/gplx/xowa/html/heads/Xoh_head_itm__search_suggest.java b/400_xowa/src/gplx/xowa/htmls/heads/Xoh_head_itm__search_suggest.java similarity index 92% rename from 400_xowa/src/gplx/xowa/html/heads/Xoh_head_itm__search_suggest.java rename to 400_xowa/src/gplx/xowa/htmls/heads/Xoh_head_itm__search_suggest.java index 52adc347e..767076b1c 100644 --- a/400_xowa/src/gplx/xowa/html/heads/Xoh_head_itm__search_suggest.java +++ b/400_xowa/src/gplx/xowa/htmls/heads/Xoh_head_itm__search_suggest.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.html.heads; import gplx.*; import gplx.xowa.*; import gplx.xowa.html.*; -import gplx.xowa.gui.*; +package gplx.xowa.htmls.heads; import gplx.*; import gplx.xowa.*; import gplx.xowa.htmls.*; +import gplx.xowa.guis.*; public class Xoh_head_itm__search_suggest extends Xoh_head_itm__base { @Override public byte[] Key() {return Xoh_head_itm_.Key__search_suggest;} @Override public int Flags() {return Flag__css_include | Flag__js_include;} diff --git a/400_xowa/src/gplx/xowa/html/heads/Xoh_head_itm__server.java b/400_xowa/src/gplx/xowa/htmls/heads/Xoh_head_itm__server.java similarity index 92% rename from 400_xowa/src/gplx/xowa/html/heads/Xoh_head_itm__server.java rename to 400_xowa/src/gplx/xowa/htmls/heads/Xoh_head_itm__server.java index 177ffd681..4473b02a1 100644 --- a/400_xowa/src/gplx/xowa/html/heads/Xoh_head_itm__server.java +++ b/400_xowa/src/gplx/xowa/htmls/heads/Xoh_head_itm__server.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.html.heads; import gplx.*; import gplx.xowa.*; import gplx.xowa.html.*; +package gplx.xowa.htmls.heads; import gplx.*; import gplx.xowa.*; import gplx.xowa.htmls.*; import gplx.langs.jsons.*; -import gplx.xowa.servers.http.*; +import gplx.xowa.apps.servers.http.*; public class Xoh_head_itm__server extends Xoh_head_itm__base { @Override public byte[] Key() {return Xoh_head_itm_.Key__server;} @Override public int Flags() {return Flag__js_tail_script;} diff --git a/400_xowa/src/gplx/xowa/html/heads/Xoh_head_itm__timeline.java b/400_xowa/src/gplx/xowa/htmls/heads/Xoh_head_itm__timeline.java similarity index 92% rename from 400_xowa/src/gplx/xowa/html/heads/Xoh_head_itm__timeline.java rename to 400_xowa/src/gplx/xowa/htmls/heads/Xoh_head_itm__timeline.java index c24023ed0..aeaf687a4 100644 --- a/400_xowa/src/gplx/xowa/html/heads/Xoh_head_itm__timeline.java +++ b/400_xowa/src/gplx/xowa/htmls/heads/Xoh_head_itm__timeline.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.html.heads; import gplx.*; import gplx.xowa.*; import gplx.xowa.html.*; +package gplx.xowa.htmls.heads; import gplx.*; import gplx.xowa.*; import gplx.xowa.htmls.*; public class Xoh_head_itm__timeline extends Xoh_head_itm__base { @Override public byte[] Key() {return Xoh_head_itm_.Key__timeline;} @Override public int Flags() {return Flag__css_include;} diff --git a/400_xowa/src/gplx/xowa/html/heads/Xoh_head_itm__title_rewrite.java b/400_xowa/src/gplx/xowa/htmls/heads/Xoh_head_itm__title_rewrite.java similarity index 87% rename from 400_xowa/src/gplx/xowa/html/heads/Xoh_head_itm__title_rewrite.java rename to 400_xowa/src/gplx/xowa/htmls/heads/Xoh_head_itm__title_rewrite.java index 18653fd3d..39a4b6128 100644 --- a/400_xowa/src/gplx/xowa/html/heads/Xoh_head_itm__title_rewrite.java +++ b/400_xowa/src/gplx/xowa/htmls/heads/Xoh_head_itm__title_rewrite.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.html.heads; import gplx.*; import gplx.xowa.*; import gplx.xowa.html.*; -import gplx.xowa.gui.*; -import gplx.xowa.apis.xowa.html.modules.*; +package gplx.xowa.htmls.heads; import gplx.*; import gplx.xowa.*; import gplx.xowa.htmls.*; +import gplx.xowa.guis.*; +import gplx.xowa.apps.apis.xowa.html.modules.*; public class Xoh_head_itm__title_rewrite extends Xoh_head_itm__base { @Override public byte[] Key() {return Xoh_head_itm_.Key__title_rewrite;} @Override public int Flags() {return Flag__js_tail_script;} diff --git a/400_xowa/src/gplx/xowa/html/heads/Xoh_head_itm__toc.java b/400_xowa/src/gplx/xowa/htmls/heads/Xoh_head_itm__toc.java similarity index 93% rename from 400_xowa/src/gplx/xowa/html/heads/Xoh_head_itm__toc.java rename to 400_xowa/src/gplx/xowa/htmls/heads/Xoh_head_itm__toc.java index 3d46d8be4..d5444b804 100644 --- a/400_xowa/src/gplx/xowa/html/heads/Xoh_head_itm__toc.java +++ b/400_xowa/src/gplx/xowa/htmls/heads/Xoh_head_itm__toc.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.html.heads; import gplx.*; import gplx.xowa.*; import gplx.xowa.html.*; -import gplx.xowa.gui.*; +package gplx.xowa.htmls.heads; import gplx.*; import gplx.xowa.*; import gplx.xowa.htmls.*; +import gplx.xowa.guis.*; public class Xoh_head_itm__toc extends Xoh_head_itm__base { @Override public byte[] Key() {return Xoh_head_itm_.Key__toc;} @Override public int Flags() {return Flag__js_head_global | Flag__js_tail_script;} diff --git a/400_xowa/src/gplx/xowa/html/heads/Xoh_head_itm__top_icon.java b/400_xowa/src/gplx/xowa/htmls/heads/Xoh_head_itm__top_icon.java similarity index 89% rename from 400_xowa/src/gplx/xowa/html/heads/Xoh_head_itm__top_icon.java rename to 400_xowa/src/gplx/xowa/htmls/heads/Xoh_head_itm__top_icon.java index 9a60d586d..45b56f438 100644 --- a/400_xowa/src/gplx/xowa/html/heads/Xoh_head_itm__top_icon.java +++ b/400_xowa/src/gplx/xowa/htmls/heads/Xoh_head_itm__top_icon.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.html.heads; import gplx.*; import gplx.xowa.*; import gplx.xowa.html.*; -import gplx.xowa.gui.*; -import gplx.xowa.apis.xowa.html.modules.*; +package gplx.xowa.htmls.heads; import gplx.*; import gplx.xowa.*; import gplx.xowa.htmls.*; +import gplx.xowa.guis.*; +import gplx.xowa.apps.apis.xowa.html.modules.*; public class Xoh_head_itm__top_icon extends Xoh_head_itm__base { @Override public byte[] Key() {return Xoh_head_itm_.Key__top_icon;} @Override public int Flags() {return Flag__css_include | Flag__js_tail_script;} diff --git a/400_xowa/src/gplx/xowa/html/heads/Xoh_head_mgr.java b/400_xowa/src/gplx/xowa/htmls/heads/Xoh_head_mgr.java similarity index 96% rename from 400_xowa/src/gplx/xowa/html/heads/Xoh_head_mgr.java rename to 400_xowa/src/gplx/xowa/htmls/heads/Xoh_head_mgr.java index afabe8d48..7c5f5c27c 100644 --- a/400_xowa/src/gplx/xowa/html/heads/Xoh_head_mgr.java +++ b/400_xowa/src/gplx/xowa/htmls/heads/Xoh_head_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.html.heads; import gplx.*; import gplx.xowa.*; import gplx.xowa.html.*; +package gplx.xowa.htmls.heads; import gplx.*; import gplx.xowa.*; import gplx.xowa.htmls.*; public class Xoh_head_mgr implements Bry_fmtr_arg { private Xoae_app app; private Xowe_wiki wiki; private Xoae_page page; private Xoh_head_itm__base[] itms; private int itms_len; @@ -71,7 +71,7 @@ public class Xoh_head_mgr implements Bry_fmtr_arg { for (int i = 0; i < itms_len; ++i) itms[i].Clear(); } - public void XferAry(Bry_bfr bfr, int idx) {Write(bfr, app, wiki, page);} + public void Fmt__do(Bry_bfr bfr) {Write(bfr, app, wiki, page);} public void Write(Bry_bfr bfr, Xoae_app app, Xowe_wiki wiki, Xoae_page page) { Set_wkrs(); wtr.Init(bfr); diff --git a/400_xowa/src/gplx/xowa/html/heads/Xoh_head_mgr_tst.java b/400_xowa/src/gplx/xowa/htmls/heads/Xoh_head_mgr_tst.java similarity index 92% rename from 400_xowa/src/gplx/xowa/html/heads/Xoh_head_mgr_tst.java rename to 400_xowa/src/gplx/xowa/htmls/heads/Xoh_head_mgr_tst.java index bd8ad86b7..ed0ab18af 100644 --- a/400_xowa/src/gplx/xowa/html/heads/Xoh_head_mgr_tst.java +++ b/400_xowa/src/gplx/xowa/htmls/heads/Xoh_head_mgr_tst.java @@ -15,10 +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.html.heads; import gplx.*; import gplx.xowa.*; import gplx.xowa.html.*; +package gplx.xowa.htmls.heads; import gplx.*; import gplx.xowa.*; import gplx.xowa.htmls.*; import org.junit.*; -import gplx.xowa.gui.*; -import gplx.xowa.langs.*; +import gplx.xowa.guis.*; +import gplx.xowa.langs.*; import gplx.xowa.langs.msgs.*; 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() { @@ -82,7 +82,7 @@ public class Xoh_head_mgr_tst { fxt.Init_msg(Xol_msg_itm_.Id_dte_month_name_january, "January" ); // set it back } @Test public void Globals_la() { // PURPOSE: la.gfs only specifies "," not "."; make sure both "." and "," show up, or else null ref error during import; DATE:2014-05-13 - Xol_lang la_lang = fxt.Wiki().Lang(); + Xol_lang_itm la_lang = fxt.Wiki().Lang(); gplx.xowa.langs.numbers.Xol_transform_mgr separators_mgr = la_lang.Num_mgr().Separators_mgr(); separators_mgr.Clear(); separators_mgr.Set(gplx.xowa.langs.numbers.Xol_num_mgr.Separators_key__grp, Bry_.new_a7(" ")); @@ -125,7 +125,7 @@ class Xoh_head_mgr_fxt { private Bry_bfr bfr = Bry_bfr.reset_(255); public Xowe_wiki Wiki() {return wiki;} private Xowe_wiki wiki; public Xoh_head_mgr Mgr() {return mgr;} - public Xol_lang Make_lang(String key) {return wiki.Appe().Lang_mgr().Get_by_key_or_new(Bry_.new_a7(key));} + public Xol_lang_itm Make_lang(String key) {return wiki.Appe().Lang_mgr().Get_by_or_new(Bry_.new_a7(key));} public void Clear() { fxt.Reset(); mgr = fxt.Page().Html_data().Head_mgr(); @@ -140,6 +140,6 @@ class Xoh_head_mgr_fxt { } public void Test_write(String expd) { mgr.Write(bfr, fxt.App(), wiki, fxt.Page()); - Tfds.Eq_str_lines(expd, bfr.Xto_str_and_clear()); + Tfds.Eq_str_lines(expd, bfr.To_str_and_clear()); } } diff --git a/400_xowa/src/gplx/xowa/html/heads/Xoh_head_wtr.java b/400_xowa/src/gplx/xowa/htmls/heads/Xoh_head_wtr.java similarity index 96% rename from 400_xowa/src/gplx/xowa/html/heads/Xoh_head_wtr.java rename to 400_xowa/src/gplx/xowa/htmls/heads/Xoh_head_wtr.java index 672fdea9f..c25840d00 100644 --- a/400_xowa/src/gplx/xowa/html/heads/Xoh_head_wtr.java +++ b/400_xowa/src/gplx/xowa/htmls/heads/Xoh_head_wtr.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.html.heads; import gplx.*; import gplx.xowa.*; import gplx.xowa.html.*; +package gplx.xowa.htmls.heads; import gplx.*; import gplx.xowa.*; import gplx.xowa.htmls.*; import gplx.langs.htmls.*; public class Xoh_head_wtr { private int indent; private int reset_bgn, reset_end; diff --git a/400_xowa/src/gplx/xowa/html/heads/Xoh_head_wtr_tst.java b/400_xowa/src/gplx/xowa/htmls/heads/Xoh_head_wtr_tst.java similarity index 88% rename from 400_xowa/src/gplx/xowa/html/heads/Xoh_head_wtr_tst.java rename to 400_xowa/src/gplx/xowa/htmls/heads/Xoh_head_wtr_tst.java index a086ad8b7..65923888b 100644 --- a/400_xowa/src/gplx/xowa/html/heads/Xoh_head_wtr_tst.java +++ b/400_xowa/src/gplx/xowa/htmls/heads/Xoh_head_wtr_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.html.heads; import gplx.*; import gplx.xowa.*; import gplx.xowa.html.*; +package gplx.xowa.htmls.heads; import gplx.*; import gplx.xowa.*; import gplx.xowa.htmls.*; import org.junit.*; -import gplx.xowa.gui.*; +import gplx.xowa.guis.*; public class Xoh_head_wtr_tst { @Before public void init() {fxt.Clear();} private Xoh_head_wtr_fxt fxt = new Xoh_head_wtr_fxt(); @Test public void Globals_none() { @@ -51,13 +51,13 @@ class Xoh_head_wtr_fxt { } public void Exec_Write_js_global_ini_atr_val(String key, String val) {wtr.Write_js_global_ini_atr_val(Bry_.new_u8(key), Bry_.new_u8(val));} public void Test(String expd) { - Tfds.Eq_str_lines(expd, bfr.Xto_str_and_clear()); + Tfds.Eq_str_lines(expd, bfr.To_str_and_clear()); } // public void Init_msg(byte[] key, String val) { // wiki.Msg_mgr().Get_or_make(key).Atrs_set(Bry_.new_a7(val), false, false); // } // public void Test_write(String expd) { // mgr.Write(bfr, fxt.App(), wiki, fxt.Page()); -// Tfds.Eq_str_lines(expd, bfr.Xto_str_and_clear()); +// Tfds.Eq_str_lines(expd, bfr.To_str_and_clear()); // } } diff --git a/400_xowa/src/gplx/xowa/html/heads/Xow_fragment_mgr.java b/400_xowa/src/gplx/xowa/htmls/heads/Xow_fragment_mgr.java similarity index 94% rename from 400_xowa/src/gplx/xowa/html/heads/Xow_fragment_mgr.java rename to 400_xowa/src/gplx/xowa/htmls/heads/Xow_fragment_mgr.java index 04ae20764..2a18fe1f0 100644 --- a/400_xowa/src/gplx/xowa/html/heads/Xow_fragment_mgr.java +++ b/400_xowa/src/gplx/xowa/htmls/heads/Xow_fragment_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.html.heads; import gplx.*; import gplx.xowa.*; import gplx.xowa.html.*; +package gplx.xowa.htmls.heads; import gplx.*; import gplx.xowa.*; import gplx.xowa.htmls.*; 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; @@ -43,7 +43,7 @@ public class Xow_fragment_mgr implements GfoInvkAble { return this; } public static final String Invk_html_js_edit_toolbar_fmt_ = "html_js_edit_toolbar_fmt_", Invk_html_js_edit_toolbar = "html_js_edit_toolbar"; - public void Evt_lang_changed(Xol_lang lang) { + public void Evt_lang_changed(Xol_lang_itm lang) { Bry_bfr bfr = Xoa_app_.Utl__bfr_mkr().Get_b512(); Xow_msg_mgr msg_mgr = wiki.Appe().Usere().Msg_mgr(); html_js_edit_toolbar = html_js_edit_toolbar_fmtr.Bld_bry_many(bfr diff --git a/400_xowa/src/gplx/xowa/html/heads/Xow_fragment_mgr_tst.java b/400_xowa/src/gplx/xowa/htmls/heads/Xow_fragment_mgr_tst.java similarity index 87% rename from 400_xowa/src/gplx/xowa/html/heads/Xow_fragment_mgr_tst.java rename to 400_xowa/src/gplx/xowa/htmls/heads/Xow_fragment_mgr_tst.java index eaa68febc..5712ce8ee 100644 --- a/400_xowa/src/gplx/xowa/html/heads/Xow_fragment_mgr_tst.java +++ b/400_xowa/src/gplx/xowa/htmls/heads/Xow_fragment_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.html.heads; import gplx.*; import gplx.xowa.*; import gplx.xowa.html.*; +package gplx.xowa.htmls.heads; import gplx.*; import gplx.xowa.*; import gplx.xowa.htmls.*; import org.junit.*; import gplx.xowa.langs.*; import gplx.xowa.langs.numbers.*; public class Xow_fragment_mgr_tst { @@ -47,9 +47,9 @@ class Xow_fragment_mgr_fxt { wiki = Xoa_app_fxt.wiki_tst_(app); } } private Xowe_wiki wiki; - public Xol_lang Make_lang(String key) {return wiki.Appe().Lang_mgr().Get_by_key_or_new(Bry_.new_a7(key));} + public Xol_lang_itm Make_lang(String key) {return wiki.Appe().Lang_mgr().Get_by_or_new(Bry_.new_a7(key));} public void Test_fragment(String key, String expd) {Test_fragment(wiki.Lang(), key, expd);} - public void Test_fragment(Xol_lang lang, String key, String expd) { + public void Test_fragment(Xol_lang_itm lang, String key, String expd) { wiki.Fragment_mgr().Evt_lang_changed(lang); byte[] actl = (byte[])GfoInvkAble_.InvkCmd(wiki.Fragment_mgr(), key); Tfds.Eq_str_lines(expd, String_.new_u8(actl)); diff --git a/400_xowa/src/gplx/xowa/html/hrefs/Xoh_href_.java b/400_xowa/src/gplx/xowa/htmls/hrefs/Xoh_href_.java similarity index 92% rename from 400_xowa/src/gplx/xowa/html/hrefs/Xoh_href_.java rename to 400_xowa/src/gplx/xowa/htmls/hrefs/Xoh_href_.java index 4a4c35f82..268c9baf2 100644 --- a/400_xowa/src/gplx/xowa/html/hrefs/Xoh_href_.java +++ b/400_xowa/src/gplx/xowa/htmls/hrefs/Xoh_href_.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.html.hrefs; import gplx.*; import gplx.xowa.*; import gplx.xowa.html.*; +package gplx.xowa.htmls.hrefs; import gplx.*; import gplx.xowa.*; import gplx.xowa.htmls.*; public class Xoh_href_ { public static final String Str__file = "file://" diff --git a/400_xowa/src/gplx/xowa/html/hrefs/Xoh_href_gui_utl.java b/400_xowa/src/gplx/xowa/htmls/hrefs/Xoh_href_gui_utl.java similarity index 96% rename from 400_xowa/src/gplx/xowa/html/hrefs/Xoh_href_gui_utl.java rename to 400_xowa/src/gplx/xowa/htmls/hrefs/Xoh_href_gui_utl.java index 4d15a84b7..dfd9f445b 100644 --- a/400_xowa/src/gplx/xowa/html/hrefs/Xoh_href_gui_utl.java +++ b/400_xowa/src/gplx/xowa/htmls/hrefs/Xoh_href_gui_utl.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.html.hrefs; import gplx.*; import gplx.xowa.*; import gplx.xowa.html.*; +package gplx.xowa.htmls.hrefs; import gplx.*; import gplx.xowa.*; import gplx.xowa.htmls.*; import gplx.core.btries.*; import gplx.core.primitives.*; public class Xoh_href_gui_utl { public static String Html_extract_text(String site, String page, String text_str) { diff --git a/400_xowa/src/gplx/xowa/html/hrefs/Xoh_href_gui_utl_tst.java b/400_xowa/src/gplx/xowa/htmls/hrefs/Xoh_href_gui_utl_tst.java similarity index 93% rename from 400_xowa/src/gplx/xowa/html/hrefs/Xoh_href_gui_utl_tst.java rename to 400_xowa/src/gplx/xowa/htmls/hrefs/Xoh_href_gui_utl_tst.java index 74ad8ed43..1359411fd 100644 --- a/400_xowa/src/gplx/xowa/html/hrefs/Xoh_href_gui_utl_tst.java +++ b/400_xowa/src/gplx/xowa/htmls/hrefs/Xoh_href_gui_utl_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.html.hrefs; import gplx.*; import gplx.xowa.*; import gplx.xowa.html.*; +package gplx.xowa.htmls.hrefs; import gplx.*; import gplx.xowa.*; import gplx.xowa.htmls.*; import org.junit.*; -import gplx.core.primitives.*; import gplx.xowa.html.hrefs.*; import gplx.xowa.gui.views.*; +import gplx.core.primitives.*; import gplx.xowa.htmls.hrefs.*; import gplx.xowa.guis.views.*; public class Xoh_href_gui_utl_tst { @Before public void init() {fxt.Clear();} private Xoh_href_gui_utl_fxt fxt = new Xoh_href_gui_utl_fxt(); @Test public void Extract_href__text() { diff --git a/400_xowa/src/gplx/xowa/html/hrefs/Xoh_href_parser.java b/400_xowa/src/gplx/xowa/htmls/hrefs/Xoh_href_parser.java similarity index 94% rename from 400_xowa/src/gplx/xowa/html/hrefs/Xoh_href_parser.java rename to 400_xowa/src/gplx/xowa/htmls/hrefs/Xoh_href_parser.java index 8731792d0..07e2f77dd 100644 --- a/400_xowa/src/gplx/xowa/html/hrefs/Xoh_href_parser.java +++ b/400_xowa/src/gplx/xowa/htmls/hrefs/Xoh_href_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.html.hrefs; import gplx.*; import gplx.xowa.*; import gplx.xowa.html.*; +package gplx.xowa.htmls.hrefs; import gplx.*; import gplx.xowa.*; import gplx.xowa.htmls.*; import gplx.core.primitives.*; import gplx.core.btries.*; import gplx.core.net.*; import gplx.xowa.langs.vnts.*; public class Xoh_href_parser { diff --git a/400_xowa/src/gplx/xowa/html/hrefs/Xoh_href_parser_tst.java b/400_xowa/src/gplx/xowa/htmls/hrefs/Xoh_href_parser_tst.java similarity index 95% rename from 400_xowa/src/gplx/xowa/html/hrefs/Xoh_href_parser_tst.java rename to 400_xowa/src/gplx/xowa/htmls/hrefs/Xoh_href_parser_tst.java index dd0638537..249515e31 100644 --- a/400_xowa/src/gplx/xowa/html/hrefs/Xoh_href_parser_tst.java +++ b/400_xowa/src/gplx/xowa/htmls/hrefs/Xoh_href_parser_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.html.hrefs; import gplx.*; import gplx.xowa.*; import gplx.xowa.html.*; -import org.junit.*; import gplx.xowa.urls.*; import gplx.xowa.nss.*; +package gplx.xowa.htmls.hrefs; import gplx.*; import gplx.xowa.*; import gplx.xowa.htmls.*; +import org.junit.*; import gplx.xowa.apps.urls.*; import gplx.xowa.wikis.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/htmls/hrefs/Xoh_href_wtr.java similarity index 92% rename from 400_xowa/src/gplx/xowa/html/hrefs/Xoh_href_wtr.java rename to 400_xowa/src/gplx/xowa/htmls/hrefs/Xoh_href_wtr.java index dbaeb6588..3aebbc5cb 100644 --- a/400_xowa/src/gplx/xowa/html/hrefs/Xoh_href_wtr.java +++ b/400_xowa/src/gplx/xowa/htmls/hrefs/Xoh_href_wtr.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.html.hrefs; import gplx.*; import gplx.xowa.*; import gplx.xowa.html.*; +package gplx.xowa.htmls.hrefs; import gplx.*; import gplx.xowa.*; import gplx.xowa.htmls.*; import gplx.langs.htmls.encoders.*; import gplx.xowa.wikis.xwikis.*; public class Xoh_href_wtr { @@ -24,7 +24,7 @@ public class Xoh_href_wtr { public byte[] Build_to_bry(Xow_wiki wiki, Xoa_ttl ttl) { synchronized (tmp_bfr) { Build_to_bfr(tmp_bfr, wiki.App(), wiki.Domain_bry(), ttl, Bool_.N); - return tmp_bfr.Xto_bry_and_clear(); + return tmp_bfr.To_bry_and_clear(); } } public void Build_to_bfr(Bry_bfr bfr, Xoa_app app, byte[] domain_bry, Xoa_ttl ttl) {Build_to_bfr(bfr, app, domain_bry, ttl, Bool_.N);} @@ -58,7 +58,7 @@ public class Xoh_href_wtr { bfr.Add(Xoh_href_.Bry__wiki); // add "/wiki/"; EX: /wiki/ } else { // url_fmtr exists; DATE:2015-04-22 - url_fmtr.Bld_bfr(bfr, encoder_bfr.Xto_bry_and_clear()); // use it and pass encoder_bfr for page_name; + url_fmtr.Bld_bfr(bfr, encoder_bfr.To_bry_and_clear()); // use it and pass encoder_bfr for page_name; return; } } diff --git a/400_xowa/src/gplx/xowa/html/hrefs/Xoh_href_wtr_tst.java b/400_xowa/src/gplx/xowa/htmls/hrefs/Xoh_href_wtr_tst.java similarity index 81% rename from 400_xowa/src/gplx/xowa/html/hrefs/Xoh_href_wtr_tst.java rename to 400_xowa/src/gplx/xowa/htmls/hrefs/Xoh_href_wtr_tst.java index b56df3e4b..cc1232b85 100644 --- a/400_xowa/src/gplx/xowa/html/hrefs/Xoh_href_wtr_tst.java +++ b/400_xowa/src/gplx/xowa/htmls/hrefs/Xoh_href_wtr_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.html.hrefs; import gplx.*; import gplx.xowa.*; import gplx.xowa.html.*; +package gplx.xowa.htmls.hrefs; import gplx.*; import gplx.xowa.*; import gplx.xowa.htmls.*; import org.junit.*; -import gplx.core.net.*; import gplx.xowa.nss.*; +import gplx.core.net.*; import gplx.xowa.wikis.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");} @@ -30,7 +30,7 @@ public class Xoh_href_wtr_tst { @Test public void Xwiki_2() {fxt.Test_build("wikt:Special:Search/a" , "/site/en.wiktionary.org/wiki/Special:Search/a");} @Test public void Category() {fxt.Test_build("Category:abc" , "/wiki/Category:Abc");} @Test public void Xwiki_wikimedia_mail() { // PURPOSE: DATE:2015-04-22 - fxt.Prep_xwiki_by_many("mail|https://lists.wikimedia.org/mailman/listinfo/$1|Wikitech Mailing List"); + fxt.Prep_xwiki_by_many("0|mail|https://lists.wikimedia.org/mailman/listinfo/~{0}|Wikitech Mailing List"); fxt.Test_build("mail:A" , "https://lists.wikimedia.org/mailman/listinfo/A"); } } @@ -41,8 +41,8 @@ class Xoh_href_wtr_fxt { public Xoh_href_wtr_fxt() { this.app = Xoa_app_fxt.app_(); this.wiki = Xoa_app_fxt.wiki_tst_(app); - wiki.Xwiki_mgr().Add_bulk(Bry_.new_a7("wikt|en.wiktionary.org")); - app.Usere().Wiki().Xwiki_mgr().Add_bulk(Bry_.new_a7("en.wiktionary.org|en.wiktionary.org")); + wiki.Xwiki_mgr().Add_by_csv(Bry_.new_a7("1|wikt|en.wiktionary.org")); + app.Usere().Wiki().Xwiki_mgr().Add_by_csv(Bry_.new_a7("1|en.wiktionary.org|en.wiktionary.org")); } public Xoae_app App() {return app;} private final Xoae_app app; public Xoh_href_wtr_fxt Prep_wiki_cs(String domain) { @@ -50,10 +50,10 @@ class Xoh_href_wtr_fxt { wiki.Ns_mgr().Ns_main().Case_match_(Xow_ns_case_.Id_all); return this; } - public Xoh_href_wtr_fxt Prep_xwiki_by_many(String raw) {wiki.Xwiki_mgr().Add_many(Bry_.new_u8(raw)); return this;} // need to add to wiki's xwiki_mgr for ttl_parse + public Xoh_href_wtr_fxt Prep_xwiki_by_many(String raw) {wiki.Xwiki_mgr().Add_by_csv(Bry_.new_u8(raw)); return this;} // need to add to wiki's xwiki_mgr for ttl_parse public void Test_build(String raw, String expd) { Xoa_ttl ttl = Xoa_ttl.parse(wiki, Bry_.new_u8(raw)); href_wtr.Build_to_bfr(tmp_bfr, app, wiki.Domain_bry(), ttl); - Tfds.Eq(expd, tmp_bfr.Xto_str_and_clear()); + Tfds.Eq(expd, tmp_bfr.To_str_and_clear()); } } diff --git a/400_xowa/src/gplx/xowa/html/hzips/Hzip_bfr_mgr.java b/400_xowa/src/gplx/xowa/htmls/hzips/Hzip_bfr_mgr.java similarity index 92% rename from 400_xowa/src/gplx/xowa/html/hzips/Hzip_bfr_mgr.java rename to 400_xowa/src/gplx/xowa/htmls/hzips/Hzip_bfr_mgr.java index bb1bb6ad2..3a57b0455 100644 --- a/400_xowa/src/gplx/xowa/html/hzips/Hzip_bfr_mgr.java +++ b/400_xowa/src/gplx/xowa/htmls/hzips/Hzip_bfr_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.html.hzips; import gplx.*; import gplx.xowa.*; import gplx.xowa.html.*; +package gplx.xowa.htmls.hzips; import gplx.*; import gplx.xowa.*; import gplx.xowa.htmls.*; class Hzip_bfr_mgr { private Gfo_usr_dlg usr_dlg; private Bry_bfr_mkr bfr_mkr; private List_adp stack = List_adp_.new_(); @@ -41,7 +41,7 @@ abstract class Hzip_bfr_itm__base { class Hzip_bfr_itm__anchor extends Hzip_bfr_itm__base { // @Override public int Tid() {return Tid_file;} public static final int Tid_file = 1; @Override public void Pop_exec(Bry_bfr cur, byte[] src, int src_len, int pos) { - byte[] caption_bry = cur.Xto_bry(); // Calc_title(cur.Xto_bry()) + byte[] caption_bry = cur.To_bry(); // Calc_title(cur.Xto_bry()) bfr.Add(caption_bry).Add_str("'>"); bfr.Add_bfr_and_clear(cur); bfr.Add_str_a7(""); diff --git a/400_xowa/src/gplx/xowa/html/hzips/Xodump_stats_itm.java b/400_xowa/src/gplx/xowa/htmls/hzips/Xodump_stats_itm.java similarity index 95% rename from 400_xowa/src/gplx/xowa/html/hzips/Xodump_stats_itm.java rename to 400_xowa/src/gplx/xowa/htmls/hzips/Xodump_stats_itm.java index 4a58f4d99..9138fda11 100644 --- a/400_xowa/src/gplx/xowa/html/hzips/Xodump_stats_itm.java +++ b/400_xowa/src/gplx/xowa/htmls/hzips/Xodump_stats_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.html.hzips; import gplx.*; import gplx.xowa.*; import gplx.xowa.html.*; +package gplx.xowa.htmls.hzips; import gplx.*; import gplx.xowa.*; import gplx.xowa.htmls.*; public class Xodump_stats_itm { public void Clear() { a_rhs = lnki_text_n = lnki_text_y = lnke_txt = lnke_brk_text_n = lnke_brk_text_y = 0; diff --git a/400_xowa/src/gplx/xowa/html/hzips/Xodump_stats_tbl.java b/400_xowa/src/gplx/xowa/htmls/hzips/Xodump_stats_tbl.java similarity index 93% rename from 400_xowa/src/gplx/xowa/html/hzips/Xodump_stats_tbl.java rename to 400_xowa/src/gplx/xowa/htmls/hzips/Xodump_stats_tbl.java index 06e0f1029..db4fc1d6f 100644 --- a/400_xowa/src/gplx/xowa/html/hzips/Xodump_stats_tbl.java +++ b/400_xowa/src/gplx/xowa/htmls/hzips/Xodump_stats_tbl.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.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.xowa.gui.*; +package gplx.xowa.htmls.hzips; import gplx.*; import gplx.xowa.*; import gplx.xowa.htmls.*; +import gplx.dbs.*; import gplx.dbs.engines.sqlite.*; import gplx.xowa.htmls.hdumps.core.*; import gplx.xowa.htmls.hzips.*; import gplx.xowa.htmls.hdumps.pages.*; +import gplx.xowa.guis.*; 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/htmls/hzips/Xow_hzip_dict.java similarity index 93% rename from 400_xowa/src/gplx/xowa/html/hzips/Xow_hzip_dict.java rename to 400_xowa/src/gplx/xowa/htmls/hzips/Xow_hzip_dict.java index 3d6dd477e..b4ab2c30d 100644 --- a/400_xowa/src/gplx/xowa/html/hzips/Xow_hzip_dict.java +++ b/400_xowa/src/gplx/xowa/htmls/hzips/Xow_hzip_dict.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.html.hzips; import gplx.*; import gplx.xowa.*; import gplx.xowa.html.*; +package gplx.xowa.htmls.hzips; import gplx.*; import gplx.xowa.*; import gplx.xowa.htmls.*; class Xow_hzip_dict {// SERIALIZED public static final byte Escape = Byte_.By_int(255); public static final byte[] Escape_bry = Bry_.new_ints(255); diff --git a/400_xowa/src/gplx/xowa/html/hzips/Xow_hzip_int_.java b/400_xowa/src/gplx/xowa/htmls/hzips/Xow_hzip_int_.java similarity index 92% rename from 400_xowa/src/gplx/xowa/html/hzips/Xow_hzip_int_.java rename to 400_xowa/src/gplx/xowa/htmls/hzips/Xow_hzip_int_.java index 7b75681a6..d6447caa8 100644 --- a/400_xowa/src/gplx/xowa/html/hzips/Xow_hzip_int_.java +++ b/400_xowa/src/gplx/xowa/htmls/hzips/Xow_hzip_int_.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.html.hzips; import gplx.*; import gplx.xowa.*; import gplx.xowa.html.*; +package gplx.xowa.htmls.hzips; import gplx.*; import gplx.xowa.*; import gplx.xowa.htmls.*; import gplx.core.primitives.*; public class Xow_hzip_int_ { private static final int Base_255_int = 255; @@ -23,7 +23,7 @@ public class Xow_hzip_int_ { public static byte[] Save_bin_int_abrv(int val_int) { Bry_bfr bfr = Bry_bfr.reset_(10); Save_bin_int_abrv(bfr, val_int); - return bfr.Xto_bry_and_clear(); + return bfr.To_bry_and_clear(); } public static void Save_bin_int_abrv(Bry_bfr bfr, int val_int) { // save int in binary little endian form; range from -2,080,766,977 to 2,147,483,648; 255^4 or 4,228,250,625 if (val_int == 0) {bfr.Add_byte(Byte_ascii.Null); return;} diff --git a/400_xowa/src/gplx/xowa/html/hzips/Xow_hzip_int__tst.java b/400_xowa/src/gplx/xowa/htmls/hzips/Xow_hzip_int__tst.java similarity index 92% rename from 400_xowa/src/gplx/xowa/html/hzips/Xow_hzip_int__tst.java rename to 400_xowa/src/gplx/xowa/htmls/hzips/Xow_hzip_int__tst.java index 31d1bf14e..8bcdaab03 100644 --- a/400_xowa/src/gplx/xowa/html/hzips/Xow_hzip_int__tst.java +++ b/400_xowa/src/gplx/xowa/htmls/hzips/Xow_hzip_int__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.html.hzips; import gplx.*; import gplx.xowa.*; import gplx.xowa.html.*; +package gplx.xowa.htmls.hzips; import gplx.*; import gplx.xowa.*; import gplx.xowa.htmls.*; import org.junit.*; import gplx.core.primitives.*; public class Xow_hzip_int__tst { @Before public void init() {fxt.Clear();} private Xow_hzip_int__fxt fxt = new Xow_hzip_int__fxt(); @@ -43,7 +43,7 @@ class Xow_hzip_int__fxt { public void Clear() {bfr.Clear();} public void Test_srl(int val, int... bytes) { Xow_hzip_int_.Save_bin_int_abrv(bfr, val); - byte[] save = bfr.Xto_bry_and_clear(); + byte[] save = bfr.To_bry_and_clear(); 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"); diff --git a/400_xowa/src/gplx/xowa/html/hzips/Xow_hzip_itm__anchor.java b/400_xowa/src/gplx/xowa/htmls/hzips/Xow_hzip_itm__anchor.java similarity index 97% rename from 400_xowa/src/gplx/xowa/html/hzips/Xow_hzip_itm__anchor.java rename to 400_xowa/src/gplx/xowa/htmls/hzips/Xow_hzip_itm__anchor.java index 17afcf7e9..10f3fcbdb 100644 --- a/400_xowa/src/gplx/xowa/html/hzips/Xow_hzip_itm__anchor.java +++ b/400_xowa/src/gplx/xowa/htmls/hzips/Xow_hzip_itm__anchor.java @@ -15,10 +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.html.hzips; import gplx.*; import gplx.xowa.*; import gplx.xowa.html.*; +package gplx.xowa.htmls.hzips; import gplx.*; import gplx.xowa.*; import gplx.xowa.htmls.*; import gplx.core.primitives.*; import gplx.core.brys.*; import gplx.core.btries.*; import gplx.langs.htmls.*; import gplx.xowa.wikis.ttls.*; -import gplx.xowa.nss.*; +import gplx.xowa.wikis.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_(); diff --git a/400_xowa/src/gplx/xowa/html/hzips/Xow_hzip_itm__anchor_tst.java b/400_xowa/src/gplx/xowa/htmls/hzips/Xow_hzip_itm__anchor_tst.java similarity index 97% rename from 400_xowa/src/gplx/xowa/html/hzips/Xow_hzip_itm__anchor_tst.java rename to 400_xowa/src/gplx/xowa/htmls/hzips/Xow_hzip_itm__anchor_tst.java index b9fcaa9b6..84a2c5243 100644 --- a/400_xowa/src/gplx/xowa/html/hzips/Xow_hzip_itm__anchor_tst.java +++ b/400_xowa/src/gplx/xowa/htmls/hzips/Xow_hzip_itm__anchor_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.html.hzips; import gplx.*; import gplx.xowa.*; import gplx.xowa.html.*; -import org.junit.*; import gplx.xowa.html.*; +package gplx.xowa.htmls.hzips; import gplx.*; import gplx.xowa.*; import gplx.xowa.htmls.*; +import org.junit.*; import gplx.xowa.htmls.*; 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() { diff --git a/400_xowa/src/gplx/xowa/html/hzips/Xow_hzip_itm__file_tst.java b/400_xowa/src/gplx/xowa/htmls/hzips/Xow_hzip_itm__file_tst.java similarity index 89% rename from 400_xowa/src/gplx/xowa/html/hzips/Xow_hzip_itm__file_tst.java rename to 400_xowa/src/gplx/xowa/htmls/hzips/Xow_hzip_itm__file_tst.java index e0137118f..74bc22d1e 100644 --- a/400_xowa/src/gplx/xowa/html/hzips/Xow_hzip_itm__file_tst.java +++ b/400_xowa/src/gplx/xowa/htmls/hzips/Xow_hzip_itm__file_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.html.hzips; import gplx.*; import gplx.xowa.*; import gplx.xowa.html.*; -import org.junit.*; import gplx.xowa.html.*; +package gplx.xowa.htmls.hzips; import gplx.*; import gplx.xowa.*; import gplx.xowa.htmls.*; +import org.junit.*; import gplx.xowa.htmls.*; 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() { diff --git a/400_xowa/src/gplx/xowa/html/hzips/Xow_hzip_itm__header.java b/400_xowa/src/gplx/xowa/htmls/hzips/Xow_hzip_itm__header.java similarity index 95% rename from 400_xowa/src/gplx/xowa/html/hzips/Xow_hzip_itm__header.java rename to 400_xowa/src/gplx/xowa/htmls/hzips/Xow_hzip_itm__header.java index ae3612b33..f4ceef8f4 100644 --- a/400_xowa/src/gplx/xowa/html/hzips/Xow_hzip_itm__header.java +++ b/400_xowa/src/gplx/xowa/htmls/hzips/Xow_hzip_itm__header.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.html.hzips; import gplx.*; import gplx.xowa.*; import gplx.xowa.html.*; +package gplx.xowa.htmls.hzips; import gplx.*; import gplx.xowa.*; import gplx.xowa.htmls.*; import gplx.langs.htmls.*; import gplx.xowa.wikis.ttls.*; public class Xow_hzip_itm__header { private Xow_hzip_mgr hzip_mgr; diff --git a/400_xowa/src/gplx/xowa/html/hzips/Xow_hzip_itm__header_tst.java b/400_xowa/src/gplx/xowa/htmls/hzips/Xow_hzip_itm__header_tst.java similarity index 93% rename from 400_xowa/src/gplx/xowa/html/hzips/Xow_hzip_itm__header_tst.java rename to 400_xowa/src/gplx/xowa/htmls/hzips/Xow_hzip_itm__header_tst.java index 6205a3968..6630b9df2 100644 --- a/400_xowa/src/gplx/xowa/html/hzips/Xow_hzip_itm__header_tst.java +++ b/400_xowa/src/gplx/xowa/htmls/hzips/Xow_hzip_itm__header_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.html.hzips; import gplx.*; import gplx.xowa.*; import gplx.xowa.html.*; -import org.junit.*; import gplx.xowa.html.*; +package gplx.xowa.htmls.hzips; import gplx.*; import gplx.xowa.*; import gplx.xowa.htmls.*; +import org.junit.*; import gplx.xowa.htmls.*; 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() { diff --git a/400_xowa/src/gplx/xowa/html/hzips/Xow_hzip_itm__href.java b/400_xowa/src/gplx/xowa/htmls/hzips/Xow_hzip_itm__href.java similarity index 95% rename from 400_xowa/src/gplx/xowa/html/hzips/Xow_hzip_itm__href.java rename to 400_xowa/src/gplx/xowa/htmls/hzips/Xow_hzip_itm__href.java index 0e55b936f..bd027c2fc 100644 --- a/400_xowa/src/gplx/xowa/html/hzips/Xow_hzip_itm__href.java +++ b/400_xowa/src/gplx/xowa/htmls/hzips/Xow_hzip_itm__href.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.html.hzips; import gplx.*; import gplx.xowa.*; import gplx.xowa.html.*; +package gplx.xowa.htmls.hzips; import gplx.*; import gplx.xowa.*; import gplx.xowa.htmls.*; import gplx.core.btries.*; 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) { diff --git a/400_xowa/src/gplx/xowa/html/hzips/Xow_hzip_mgr.java b/400_xowa/src/gplx/xowa/htmls/hzips/Xow_hzip_mgr.java similarity index 95% rename from 400_xowa/src/gplx/xowa/html/hzips/Xow_hzip_mgr.java rename to 400_xowa/src/gplx/xowa/htmls/hzips/Xow_hzip_mgr.java index 8286003aa..c12777e52 100644 --- a/400_xowa/src/gplx/xowa/html/hzips/Xow_hzip_mgr.java +++ b/400_xowa/src/gplx/xowa/htmls/hzips/Xow_hzip_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.html.hzips; import gplx.*; import gplx.xowa.*; import gplx.xowa.html.*; +package gplx.xowa.htmls.hzips; import gplx.*; import gplx.xowa.*; import gplx.xowa.htmls.*; import gplx.core.primitives.*; import gplx.core.btries.*; import gplx.xowa.wikis.ttls.*; public class Xow_hzip_mgr { private final Gfo_usr_dlg usr_dlg; @@ -86,7 +86,7 @@ public class Xow_hzip_mgr { } } if (add_bgn != -1) rv.Add_mid(src, add_bgn, src_len); - return rv.Xto_bry_and_clear(); + return rv.To_bry_and_clear(); } public int Warn_by_pos_add_dflt(String err, int bgn, int end) {return Warn_by_pos(err, bgn, end, 32);} public int Warn_by_pos(String err, int bgn, int end) {return Warn_by_pos(err, bgn, end, 0);} diff --git a/400_xowa/src/gplx/xowa/html/hzips/Xow_hzip_mgr_fxt.java b/400_xowa/src/gplx/xowa/htmls/hzips/Xow_hzip_mgr_fxt.java similarity index 83% rename from 400_xowa/src/gplx/xowa/html/hzips/Xow_hzip_mgr_fxt.java rename to 400_xowa/src/gplx/xowa/htmls/hzips/Xow_hzip_mgr_fxt.java index f120dcc96..30f7da939 100644 --- a/400_xowa/src/gplx/xowa/html/hzips/Xow_hzip_mgr_fxt.java +++ b/400_xowa/src/gplx/xowa/htmls/hzips/Xow_hzip_mgr_fxt.java @@ -15,29 +15,29 @@ 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.html.hzips; import gplx.*; import gplx.xowa.*; import gplx.xowa.html.*; +package gplx.xowa.htmls.hzips; import gplx.*; import gplx.xowa.*; import gplx.xowa.htmls.*; import gplx.xowa.parsers.*; class Xow_hzip_mgr_fxt { private Bry_bfr bfr = Bry_bfr.reset_(Io_mgr.Len_mb); private Xow_hzip_mgr hzip_mgr; private Xowe_wiki wiki; - private Xodump_stats_itm stats = new Xodump_stats_itm(); private final Ordered_hash redlink_uids = Ordered_hash_.new_(); + private Xodump_stats_itm stats = new Xodump_stats_itm(); private final Ordered_hash redlink_uids = Ordered_hash_.New(); public void Clear() { if (hzip_mgr == null) { Xoae_app app = Xoa_app_fxt.app_(); wiki = Xoa_app_fxt.wiki_tst_(app); - hzip_mgr = new Xow_hzip_mgr(Gfo_usr_dlg_.I, wiki); + hzip_mgr = new Xow_hzip_mgr(Gfo_usr_dlg_.Instance, wiki); } } public void Init_xwiki(String alias, String domain) { wiki.Appe().Wiki_mgr().Get_by_key_or_make(Bry_.new_u8(domain)); - wiki.Xwiki_mgr().Add_full(alias, domain); - wiki.Appe().Usere().Wiki().Xwiki_mgr().Add_full(domain, domain); + wiki.Xwiki_mgr().Add_by_atrs(alias, domain); + wiki.Appe().Usere().Wiki().Xwiki_mgr().Add_by_atrs(domain, domain); } public byte[] Make_int(int v) {return Xow_hzip_int_.Save_bin_int_abrv(v);} public void Test_save(byte[][] expd_brys, String html) {Test_save(html, expd_brys);} public void Test_save(String html, byte[]... expd_brys) { byte[] expd = Bry_.Add(expd_brys); hzip_mgr.Write(bfr, stats, Bry_.Empty, Bry_.new_u8(html)); - Tfds.Eq_ary(expd, bfr.Xto_bry_and_clear()); + Tfds.Eq_ary(expd, bfr.To_bry_and_clear()); } public void Test_load(byte[][] src_brys, String expd) { byte[] src = Bry_.Add(src_brys); @@ -55,6 +55,6 @@ class Xow_hzip_mgr_fxt { Xoh_html_wtr html_wtr = wiki.Html_mgr().Html_wtr(); html_wtr.Cfg().Toc__show_(Bool_.Y); // needed for hdr to show html_wtr.Write_all(bfr, ctx, hctx, html_bry, root); - Tfds.Eq(expd, bfr.Xto_str_and_clear()); + Tfds.Eq(expd, bfr.To_str_and_clear()); } } diff --git a/400_xowa/src/gplx/xowa/html/hzips/Xow_hzip_xtid.java b/400_xowa/src/gplx/xowa/htmls/hzips/Xow_hzip_xtid.java similarity index 95% rename from 400_xowa/src/gplx/xowa/html/hzips/Xow_hzip_xtid.java rename to 400_xowa/src/gplx/xowa/htmls/hzips/Xow_hzip_xtid.java index e8095d581..4da5ea00f 100644 --- a/400_xowa/src/gplx/xowa/html/hzips/Xow_hzip_xtid.java +++ b/400_xowa/src/gplx/xowa/htmls/hzips/Xow_hzip_xtid.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.html.hzips; import gplx.*; import gplx.xowa.*; import gplx.xowa.html.*; +package gplx.xowa.htmls.hzips; import gplx.*; import gplx.xowa.*; import gplx.xowa.htmls.*; 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) { diff --git a/400_xowa/src/gplx/xowa/html/js/Xoh_js_cbk.java b/400_xowa/src/gplx/xowa/htmls/js/Xoh_js_cbk.java similarity index 92% rename from 400_xowa/src/gplx/xowa/html/js/Xoh_js_cbk.java rename to 400_xowa/src/gplx/xowa/htmls/js/Xoh_js_cbk.java index b8b7fb0d7..aebf7115d 100644 --- a/400_xowa/src/gplx/xowa/html/js/Xoh_js_cbk.java +++ b/400_xowa/src/gplx/xowa/htmls/js/Xoh_js_cbk.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.html.js; import gplx.*; import gplx.xowa.*; import gplx.xowa.html.*; +package gplx.xowa.htmls.js; import gplx.*; import gplx.xowa.*; import gplx.xowa.htmls.*; import gplx.core.threads.*; import gplx.xowa.xtns.pfuncs.ifs.*; import gplx.xowa.wikis.data.tbls.*; import gplx.langs.jsons.*; -import gplx.xowa.html.js.*; -import gplx.xowa.gui.views.*; +import gplx.xowa.htmls.js.*; +import gplx.xowa.guis.views.*; import gplx.xowa.parsers.*; public class Xoh_js_cbk implements GfoInvkAble { private Xoae_app app; @@ -33,7 +33,7 @@ public class Xoh_js_cbk implements GfoInvkAble { int len = m.Args_count(); for (int i = 0; i < len; i++) bfr.Add_str_a7("|").Add_str(m.Args_getAt(i).Val_to_str_or_empty()); - return bfr.Xto_str_and_clear(); + return bfr.To_str_and_clear(); } private String[] Xowa_exec_test_as_array(GfoMsg m) {// return args as array; EX: xowa_exec('proc', 'arg0', 'arg1'); -> proc,arg0,arg1 bfr.Clear(); @@ -55,7 +55,7 @@ public class Xoh_js_cbk implements GfoInvkAble { 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, ctx, data, root); - return bfr.Xto_str_and_clear(); + return bfr.To_str_and_clear(); } finally { ctx.Para().Enabled_(old_para_enabled); @@ -90,7 +90,7 @@ public class Xoh_js_cbk implements GfoInvkAble { Xoa_ttl ttl = Xoa_ttl.parse(wiki, ttl_bry); wiki.Db_mgr().Load_mgr().Load_by_ttl(tmp_page, ttl.Ns(), ttl.Page_db()); } - return String_.Ary(tmp_page.Exists() ? "1" : "0", Int_.Xto_str(tmp_page.Id()), Int_.Xto_str(tmp_page.Ns_id()), String_.new_u8(tmp_page.Ttl_page_db()), Bool_.To_str_lower(tmp_page.Redirected()), tmp_page.Modified_on().XtoStr_fmt("yyyy-MM-dd HH:mm:ss"), Int_.Xto_str(tmp_page.Text_len())); + return String_.Ary(tmp_page.Exists() ? "1" : "0", Int_.To_str(tmp_page.Id()), Int_.To_str(tmp_page.Ns_id()), String_.new_u8(tmp_page.Ttl_page_db()), Bool_.To_str_lower(tmp_page.Redirected()), tmp_page.Modified_on().XtoStr_fmt("yyyy-MM-dd HH:mm:ss"), Int_.To_str(tmp_page.Text_len())); } private static final Xowd_page_itm tmp_page = Xowd_page_itm.new_tmp(); private String[][] Get_titles_meta(GfoMsg m) { Xowe_wiki wiki = html_itm.Owner_tab().Wiki(); diff --git a/400_xowa/src/gplx/xowa/html/js/Xoh_js_cbk_tst.java b/400_xowa/src/gplx/xowa/htmls/js/Xoh_js_cbk_tst.java similarity index 81% rename from 400_xowa/src/gplx/xowa/html/js/Xoh_js_cbk_tst.java rename to 400_xowa/src/gplx/xowa/htmls/js/Xoh_js_cbk_tst.java index 7df239022..833b45afd 100644 --- a/400_xowa/src/gplx/xowa/html/js/Xoh_js_cbk_tst.java +++ b/400_xowa/src/gplx/xowa/htmls/js/Xoh_js_cbk_tst.java @@ -15,15 +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.html.js; import gplx.*; import gplx.xowa.*; import gplx.xowa.html.*; +package gplx.xowa.htmls.js; import gplx.*; import gplx.xowa.*; import gplx.xowa.htmls.*; import org.junit.*; import gplx.xowa.xtns.wdatas.*; -import gplx.xowa.gui.views.*; +import gplx.xowa.guis.views.*; public class Xoh_js_cbk_tst { @Before public void init() {fxt.Clear();} private Xoh_js_cbk_fxt fxt = new Xoh_js_cbk_fxt(); @Test public void Get_title() { fxt.Fxt().Init_page_create("exists"); - fxt.Test_get_title("exists", "1" , "0" , Int_.Xto_str(Int_.Min_value), "Exists", "false", "0001-01-01 00:00:00", "0"); - fxt.Test_get_title("absent", "0", "-1", Int_.Xto_str(Int_.Min_value), null , "false", "0001-01-01 00:00:00", "0"); + fxt.Test_get_title("exists", "1" , "0" , Int_.To_str(Int_.Min_value), "Exists", "false", "0001-01-01 00:00:00", "0"); + fxt.Test_get_title("absent", "0", "-1", Int_.To_str(Int_.Min_value), null , "false", "0001-01-01 00:00:00", "0"); } } class Xoh_js_cbk_fxt { diff --git a/400_xowa/src/gplx/xowa/html/js/Xoh_js_cbk_wdata_labels_tst.java b/400_xowa/src/gplx/xowa/htmls/js/Xoh_js_cbk_wdata_labels_tst.java similarity index 95% rename from 400_xowa/src/gplx/xowa/html/js/Xoh_js_cbk_wdata_labels_tst.java rename to 400_xowa/src/gplx/xowa/htmls/js/Xoh_js_cbk_wdata_labels_tst.java index 11c551812..0ee72fea2 100644 --- a/400_xowa/src/gplx/xowa/html/js/Xoh_js_cbk_wdata_labels_tst.java +++ b/400_xowa/src/gplx/xowa/htmls/js/Xoh_js_cbk_wdata_labels_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.html.js; import gplx.*; import gplx.xowa.*; import gplx.xowa.html.*; +package gplx.xowa.htmls.js; import gplx.*; import gplx.xowa.*; import gplx.xowa.htmls.*; 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(); diff --git a/400_xowa/src/gplx/xowa/html/lnkis/Xoh_arg_img_core.java b/400_xowa/src/gplx/xowa/htmls/lnkis/Xoh_arg_img_core.java similarity index 89% rename from 400_xowa/src/gplx/xowa/html/lnkis/Xoh_arg_img_core.java rename to 400_xowa/src/gplx/xowa/htmls/lnkis/Xoh_arg_img_core.java index 2815f6431..ea85cf88e 100644 --- a/400_xowa/src/gplx/xowa/html/lnkis/Xoh_arg_img_core.java +++ b/400_xowa/src/gplx/xowa/htmls/lnkis/Xoh_arg_img_core.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.html.lnkis; import gplx.*; import gplx.xowa.*; import gplx.xowa.html.*; +package gplx.xowa.htmls.lnkis; import gplx.*; import gplx.xowa.*; import gplx.xowa.htmls.*; public interface Xoh_arg_img_core extends Bry_fmtr_arg { Xoh_arg_img_core Init(int uid, byte[] src, int w, int h); } diff --git a/400_xowa/src/gplx/xowa/html/lnkis/Xoh_arg_img_core__basic.java b/400_xowa/src/gplx/xowa/htmls/lnkis/Xoh_arg_img_core__basic.java similarity index 88% rename from 400_xowa/src/gplx/xowa/html/lnkis/Xoh_arg_img_core__basic.java rename to 400_xowa/src/gplx/xowa/htmls/lnkis/Xoh_arg_img_core__basic.java index 7af044d8a..1959c3ac0 100644 --- a/400_xowa/src/gplx/xowa/html/lnkis/Xoh_arg_img_core__basic.java +++ b/400_xowa/src/gplx/xowa/htmls/lnkis/Xoh_arg_img_core__basic.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.html.lnkis; import gplx.*; import gplx.xowa.*; import gplx.xowa.html.*; +package gplx.xowa.htmls.lnkis; import gplx.*; import gplx.xowa.*; import gplx.xowa.htmls.*; public class Xoh_arg_img_core__basic implements Xoh_arg_img_core { private byte[] src; private int w, h; public Xoh_arg_img_core Init(int uid, byte[] src, int w, int h) {this.src = src; this.w = w; this.h = h; return this;} - public void XferAry(Bry_bfr bfr, int idx) { + public void Fmt__do(Bry_bfr bfr) { fmtr_img_atrs.Bld_bfr_many(bfr, src, w, h); } private Bry_fmtr fmtr_img_atrs = Bry_fmtr.new_(" src=\"~{img_src}\" width=\"~{img_w}\" height=\"~{img_h}\"", "img_src", "img_w", "img_h"); diff --git a/400_xowa/src/gplx/xowa/html/lnkis/Xoh_arg_img_core__hdump.java b/400_xowa/src/gplx/xowa/htmls/lnkis/Xoh_arg_img_core__hdump.java similarity index 82% rename from 400_xowa/src/gplx/xowa/html/lnkis/Xoh_arg_img_core__hdump.java rename to 400_xowa/src/gplx/xowa/htmls/lnkis/Xoh_arg_img_core__hdump.java index e06fe8f3c..0940b3c07 100644 --- a/400_xowa/src/gplx/xowa/html/lnkis/Xoh_arg_img_core__hdump.java +++ b/400_xowa/src/gplx/xowa/htmls/lnkis/Xoh_arg_img_core__hdump.java @@ -15,16 +15,16 @@ 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.html.lnkis; import gplx.*; import gplx.xowa.*; import gplx.xowa.html.*; +package gplx.xowa.htmls.lnkis; import gplx.*; import gplx.xowa.*; import gplx.xowa.htmls.*; public class Xoh_arg_img_core__hdump implements Xoh_arg_img_core { private int uid; public Xoh_arg_img_core Init(int uid, byte[] img_src, int img_w, int img_h) { this.uid = uid; return this; } - public void XferAry(Bry_bfr bfr, int idx) { + public void Fmt__do(Bry_bfr bfr) { bfr.Add_byte_space(); - bfr.Add(gplx.xowa.html.hdumps.abrvs.Xohd_abrv_.Key_img); + bfr.Add(gplx.xowa.htmls.hdumps.abrvs.Xohd_abrv_.Key_img); bfr.Add_int_variable(uid); bfr.Add_byte_apos(); } diff --git a/400_xowa/src/gplx/xowa/html/lnkis/Xoh_file_html_fmtr__base.java b/400_xowa/src/gplx/xowa/htmls/lnkis/Xoh_file_html_fmtr__base.java similarity index 95% rename from 400_xowa/src/gplx/xowa/html/lnkis/Xoh_file_html_fmtr__base.java rename to 400_xowa/src/gplx/xowa/htmls/lnkis/Xoh_file_html_fmtr__base.java index 92e9fa98d..6ab4a66b9 100644 --- a/400_xowa/src/gplx/xowa/html/lnkis/Xoh_file_html_fmtr__base.java +++ b/400_xowa/src/gplx/xowa/htmls/lnkis/Xoh_file_html_fmtr__base.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.html.lnkis; import gplx.*; import gplx.xowa.*; import gplx.xowa.html.*; -import gplx.xowa.files.*; import gplx.xowa.html.hdumps.abrvs.*; +package gplx.xowa.htmls.lnkis; import gplx.*; import gplx.xowa.*; import gplx.xowa.htmls.*; +import gplx.xowa.files.*; import gplx.xowa.htmls.hdumps.abrvs.*; import gplx.xowa.parsers.lnkis.*; public class Xoh_file_html_fmtr__base implements Xoh_file_img_wkr { private final Xoh_arg_img_core arg_img_core; @@ -49,7 +49,7 @@ public class Xoh_file_html_fmtr__base implements Xoh_file_img_wkr { scratch_bfr.Add(Bry_style_bgn); scratch_bfr.Add_int_variable(div2_width); scratch_bfr.Add(Bry_style_end); - fmtr_thumb_core.Bld_bfr_many(tmp_bfr, uid, div1_halign, scratch_bfr.Xto_bry_and_clear(), div2_content); + fmtr_thumb_core.Bld_bfr_many(tmp_bfr, uid, div1_halign, scratch_bfr.To_bry_and_clear(), div2_content); } private static final byte[] Bry_style_bgn = Bry_.new_a7("style=\"width:"), Bry_style_end = Bry_.new_a7("px;\""); protected Bry_fmtr fmtr_thumb_core = Bry_fmtr.new_(String_.Concat_lines_nl_skip_last // REF.MW: Linker.php|makeImageLink2 ( "
" @@ -62,7 +62,7 @@ public class Xoh_file_html_fmtr__base implements Xoh_file_img_wkr { ); public byte[] Html_thumb_part_img(Bry_bfr tmp_bfr, Xoae_page page, Xof_file_itm xfer_itm, Xop_lnki_tkn lnki, int uid, byte[] a_href, byte[] img_src, byte[] img_alt) { Html_thumb_part_img(tmp_bfr, page, xfer_itm, uid, a_href, lnki.Ttl().Page_txt(), xfer_itm.Html_w(), xfer_itm.Html_h(), img_src, img_alt); - return tmp_bfr.Xto_bry_and_clear(); + return tmp_bfr.To_bry_and_clear(); } public void Html_thumb_part_img(Bry_bfr tmp_bfr, Xoae_page page, Xof_file_itm xfer_itm, int uid, byte[] a_href, byte[] a_title, int img_w, int img_h, byte[] img_src, byte[] img_alt) { fmtr_thumb_part_img.Bld_bfr_many(tmp_bfr, uid, a_href, a_title, arg_img_core.Init(uid, img_src, img_w, img_h), img_alt); diff --git a/400_xowa/src/gplx/xowa/html/lnkis/Xoh_file_html_fmtr__hdump.java b/400_xowa/src/gplx/xowa/htmls/lnkis/Xoh_file_html_fmtr__hdump.java similarity index 93% rename from 400_xowa/src/gplx/xowa/html/lnkis/Xoh_file_html_fmtr__hdump.java rename to 400_xowa/src/gplx/xowa/htmls/lnkis/Xoh_file_html_fmtr__hdump.java index 0854b129d..2e8f87a60 100644 --- a/400_xowa/src/gplx/xowa/html/lnkis/Xoh_file_html_fmtr__hdump.java +++ b/400_xowa/src/gplx/xowa/htmls/lnkis/Xoh_file_html_fmtr__hdump.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.html.lnkis; import gplx.*; import gplx.xowa.*; import gplx.xowa.html.*; +package gplx.xowa.htmls.lnkis; import gplx.*; import gplx.xowa.*; import gplx.xowa.htmls.*; import gplx.langs.htmls.*; -import gplx.xowa.files.*; import gplx.xowa.html.hdumps.abrvs.*; +import gplx.xowa.files.*; import gplx.xowa.htmls.hdumps.abrvs.*; public class Xoh_file_html_fmtr__hdump extends Xoh_file_html_fmtr__base { private Bry_bfr tmp_bfr = Bry_bfr.reset_(128); @gplx.Internal @Override protected Xoh_arg_img_core New_arg_img_core() {return new Xoh_arg_img_core__hdump();} @@ -40,7 +40,7 @@ public class Xoh_file_html_fmtr__hdump extends Xoh_file_html_fmtr__base { tmp_bfr.Add(Xohd_abrv_.Key_img_style); tmp_bfr.Add_int_variable(uid); tmp_bfr.Add_byte_apos(); - byte[] div2_width_repl = tmp_bfr.Xto_bry_and_clear(); + byte[] div2_width_repl = tmp_bfr.To_bry_and_clear(); fmtr_thumb_core.Bld_bfr_many(bfr, uid, div1_halign, div2_width_repl, div2_content); } @Override public void Html_thumb_part_magnify(Bry_bfr bfr, int uid, byte[] a_href, byte[] a_title, byte[] img_src) {Write_xnde(bfr, Xohd_abrv_.Key_file_mgnf, uid);} diff --git a/400_xowa/src/gplx/xowa/html/lnkis/Xoh_file_img_wkr.java b/400_xowa/src/gplx/xowa/htmls/lnkis/Xoh_file_img_wkr.java similarity index 91% rename from 400_xowa/src/gplx/xowa/html/lnkis/Xoh_file_img_wkr.java rename to 400_xowa/src/gplx/xowa/htmls/lnkis/Xoh_file_img_wkr.java index 07f9ce77c..22e805ca8 100644 --- a/400_xowa/src/gplx/xowa/html/lnkis/Xoh_file_img_wkr.java +++ b/400_xowa/src/gplx/xowa/htmls/lnkis/Xoh_file_img_wkr.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.html.lnkis; import gplx.*; import gplx.xowa.*; import gplx.xowa.html.*; +package gplx.xowa.htmls.lnkis; import gplx.*; import gplx.xowa.*; import gplx.xowa.htmls.*; import gplx.xowa.files.*; public interface Xoh_file_img_wkr { void Html_full_img(Bry_bfr tmp_bfr, Xoh_wtr_ctx hctx, Xoae_page page, Xof_file_itm xfer_itm, int uid diff --git a/400_xowa/src/gplx/xowa/html/lnkis/Xoh_file_mgr.java b/400_xowa/src/gplx/xowa/htmls/lnkis/Xoh_file_mgr.java similarity index 95% rename from 400_xowa/src/gplx/xowa/html/lnkis/Xoh_file_mgr.java rename to 400_xowa/src/gplx/xowa/htmls/lnkis/Xoh_file_mgr.java index 41f472e8d..7b5f14f1c 100644 --- a/400_xowa/src/gplx/xowa/html/lnkis/Xoh_file_mgr.java +++ b/400_xowa/src/gplx/xowa/htmls/lnkis/Xoh_file_mgr.java @@ -15,12 +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.html.lnkis; import gplx.*; import gplx.xowa.*; import gplx.xowa.html.*; +package gplx.xowa.htmls.lnkis; import gplx.*; import gplx.xowa.*; import gplx.xowa.htmls.*; 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.wikis.nss.*; import gplx.xowa.parsers.*; -import gplx.xowa.tdbs.metas.*; +import gplx.xowa.wikis.tdbs.metas.*; public class Xoh_file_mgr { private final Xowe_wiki wiki; public Xoh_file_mgr(Xowe_wiki wiki, Xow_html_mgr html_mgr, Xoh_html_wtr html_wtr) { diff --git a/400_xowa/src/gplx/xowa/html/lnkis/Xoh_file_wtr__basic.java b/400_xowa/src/gplx/xowa/htmls/lnkis/Xoh_file_wtr__basic.java similarity index 93% rename from 400_xowa/src/gplx/xowa/html/lnkis/Xoh_file_wtr__basic.java rename to 400_xowa/src/gplx/xowa/htmls/lnkis/Xoh_file_wtr__basic.java index b0e016a47..b400d55bc 100644 --- a/400_xowa/src/gplx/xowa/html/lnkis/Xoh_file_wtr__basic.java +++ b/400_xowa/src/gplx/xowa/htmls/lnkis/Xoh_file_wtr__basic.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.html.lnkis; import gplx.*; import gplx.xowa.*; import gplx.xowa.html.*; +package gplx.xowa.htmls.lnkis; import gplx.*; import gplx.xowa.*; import gplx.xowa.htmls.*; 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.langs.*; import gplx.xowa.langs.msgs.*; +import gplx.xowa.wikis.nss.*; +import gplx.xowa.files.*; import gplx.xowa.htmls.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); @@ -124,8 +124,8 @@ public class Xoh_file_wtr__basic { && Bry_.Len_eq_0(alt) // NOTE: if no alt, always use caption; DATE:2013-07-22 && !lnki.Alt_exists() // unless blank alt exists; EX: [[File:A.png|a|alt=]] should have alt of "", not "a" ) { - Arg_caption(ctx, src, Xoh_wtr_ctx.Alt, lnki).XferAry(tmp_bfr, 0); - alt = tmp_bfr.Xto_bry_and_clear(); + Arg_caption(ctx, src, Xoh_wtr_ctx.Alt, lnki).Fmt__do(tmp_bfr); + alt = tmp_bfr.To_bry_and_clear(); } boolean div_align_exists = false; switch (lnki.Align_h()) { @@ -157,7 +157,7 @@ public class Xoh_file_wtr__basic { byte img_cls_tid = xfer_itm.File_exists() ? Xoh_lnki_consts.Tid_img_cls_thumbimage : Xoh_lnki_consts.Tid_img_cls_none; Bry_bfr tmp_bfr = bfr_mkr.Get_k004(); lnki_file_wkr.Html_full_img(tmp_bfr, hctx, page, xfer_itm, uid, lnki_href, Xoh_lnki_consts.Tid_a_cls_image, Xoh_lnki_consts.Tid_a_rel_none, anchor_title, lnki_ttl, xfer_itm.Html_w(), xfer_itm.Html_h(), view_src, lnki_alt_text, img_cls_tid, Xoh_lnki_consts.Bry_none); - byte[] thumb = tmp_bfr.Xto_bry_and_clear(); + byte[] thumb = tmp_bfr.To_bry_and_clear(); html_fmtr.Html_thumb_file_image(tmp_bfr, thumb, Arg_caption_div(ctx, src, lnki, uid, img_orig_src, lnki_href), lnki_alt_html); return tmp_bfr.To_bry_and_rls(); } @@ -165,11 +165,11 @@ public class Xoh_file_wtr__basic { byte[] info_btn = Bry_.Empty; if (lnki.Media_icon()) { html_fmtr.Html_thumb_part_info(scratch_bfr, uid, lnki_href, html_mgr.Img_media_info_btn()); - info_btn = scratch_bfr.Xto_bry_and_clear(); + info_btn = scratch_bfr.To_bry_and_clear(); } int play_btn_width = lnki.W(); if (play_btn_width < 1) play_btn_width = html_mgr.Img_thumb_width(); // if no width set width to default img width html_fmtr.Html_thumb_file_audio(scratch_bfr, Arg_caption_div(ctx, src, lnki, uid, img_orig_src, lnki_href), Arg_alt_html(ctx, src, lnki), Arg_play_btn(uid, play_btn_width, Play_btn_max_width, img_orig_src, lnki.Ttl().Page_txt()), info_btn); - return scratch_bfr.Xto_bry_and_clear(); + return scratch_bfr.To_bry_and_clear(); } private byte[] Arg_content_video(Xop_ctx ctx, byte[] src, Xop_lnki_tkn lnki, Xof_file_itm xfer_itm, int uid, boolean lnki_thumb, byte[] a_href, byte[] view_src, byte[] orig_src, byte[] img_alt) { int thumb_w = xfer_itm.Html_w(); @@ -180,7 +180,7 @@ public class Xoh_file_wtr__basic { alt_html = Arg_alt_html(ctx, src, lnki); } html_fmtr.Html_thumb_file_video(scratch_bfr, Arg_play_btn(uid, play_btn_width, play_btn_width, orig_src, lnki.Ttl().Page_txt()), html_fmtr.Html_thumb_part_img(scratch_bfr, page, xfer_itm, lnki, uid, a_href, view_src, img_alt), caption_html, alt_html); - return scratch_bfr.Xto_bry_and_clear(); + return scratch_bfr.To_bry_and_clear(); } private byte[] Arg_caption_div(Xop_ctx ctx, byte[] src, Xop_lnki_tkn lnki, int uid, byte[] img_orig_src, byte[] lnki_href) { Bry_fmtr_arg caption = Arg_caption(ctx, src, Xoh_wtr_ctx.Basic, lnki); @@ -188,10 +188,10 @@ public class Xoh_file_wtr__basic { if (lnki.Media_icon()) { if (msg_file_enlarge == null) msg_file_enlarge = wiki.Msg_mgr().Val_by_id(Xol_msg_itm_.Id_file_enlarge); html_fmtr.Html_thumb_part_magnify(scratch_bfr, uid, lnki_href, msg_file_enlarge, html_mgr.Img_thumb_magnify()); - magnify_btn = scratch_bfr.Xto_bry_and_clear(); + magnify_btn = scratch_bfr.To_bry_and_clear(); } html_fmtr.Html_thumb_part_caption(scratch_bfr, magnify_btn, caption); - return scratch_bfr.Xto_bry_and_clear(); + return scratch_bfr.To_bry_and_clear(); } private byte[] msg_file_enlarge; private Bry_fmtr_arg Arg_caption(Xop_ctx ctx, byte[] src, Xoh_wtr_ctx hctx_for_caption, Xop_lnki_tkn lnki) { return lnki.Caption_exists() ? caption_fmtr.Set(ctx, hctx_for_caption, src, lnki.Caption_val_tkn(), Xoh_lnki_text_fmtr.Null_fmtr) : Bry_fmtr_arg_.Noop; @@ -200,19 +200,19 @@ public class Xoh_file_wtr__basic { if (!lnki.Alt_exists()) return Bry_.Empty; media_alt_fmtr.Set(ctx, Xoh_wtr_ctx.Alt, src, lnki.Alt_tkn().Val_tkn(), Xoh_lnki_text_fmtr.Null_fmtr); Bry_bfr tmp_bfr = bfr_mkr.Get_k004(); - media_alt_fmtr.XferAry(tmp_bfr, 0); + media_alt_fmtr.Fmt__do(tmp_bfr); return tmp_bfr.To_bry_and_rls(); } private byte[] Arg_alt_html(Xop_ctx ctx, byte[] alt_src, Xop_lnki_tkn lnki) { if (!lnki.Alt_exists()) return Bry_.Empty; media_alt_fmtr.Set(ctx, Xoh_wtr_ctx.Basic, alt_src, lnki.Alt_tkn().Val_tkn(), html_fmtr.Html_thumb_part_alt_fmtr()); Bry_bfr tmp_bfr = bfr_mkr.Get_k004(); - media_alt_fmtr.XferAry(tmp_bfr, 0); + media_alt_fmtr.Fmt__do(tmp_bfr); return tmp_bfr.To_bry_and_rls(); } private byte[] Arg_play_btn(int uid, int width, int max_width, byte[] a_href, byte[] a_xowa_title) { html_fmtr.Html_thumb_part_play(scratch_bfr, uid, width - 2, max_width, a_href, a_xowa_title, html_mgr.Img_media_play_btn()); // NOTE: -2 is fudge factor else play btn will jut out over video thumb; see Earth and ISS video - return scratch_bfr.Xto_bry_and_clear(); + return scratch_bfr.To_bry_and_clear(); } private static byte[] Arg_anchor_title(Bry_bfr tmp_bfr, byte[] src, Xop_lnki_tkn lnki, byte[] lnki_ttl, Xoh_lnki_title_fmtr anchor_title_wkr) { if ( Bitmask_.Has_int(lnki.Lnki_type(), Xop_lnki_type.Id_thumb) @@ -224,9 +224,9 @@ public class Xoh_file_wtr__basic { Xop_tkn_itm anchor_title_tkn = lnki.Caption_tkn(); if (anchor_title_tkn == Xop_tkn_null.Null_tkn) return Bry_.Empty; // no caption; return empty; (do not use lnki); DATE:2013-12-31 tmp_bfr.Add(Atr_title); - anchor_title_wkr.Set(src, anchor_title_tkn).XferAry(tmp_bfr, 0); + anchor_title_wkr.Set(src, anchor_title_tkn).Fmt__do(tmp_bfr); tmp_bfr.Add_byte(Byte_ascii.Quote); - return tmp_bfr.Xto_bry_and_clear(); + return tmp_bfr.To_bry_and_clear(); } public static final int Play_btn_max_width = 1024; private static final byte[] diff --git a/400_xowa/src/gplx/xowa/html/lnkis/Xoh_file_wtr_audio_video_tst.java b/400_xowa/src/gplx/xowa/htmls/lnkis/Xoh_file_wtr_audio_video_tst.java similarity index 97% rename from 400_xowa/src/gplx/xowa/html/lnkis/Xoh_file_wtr_audio_video_tst.java rename to 400_xowa/src/gplx/xowa/htmls/lnkis/Xoh_file_wtr_audio_video_tst.java index aa5c08f47..bfa66f145 100644 --- a/400_xowa/src/gplx/xowa/html/lnkis/Xoh_file_wtr_audio_video_tst.java +++ b/400_xowa/src/gplx/xowa/htmls/lnkis/Xoh_file_wtr_audio_video_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.html.lnkis; import gplx.*; import gplx.xowa.*; import gplx.xowa.html.*; +package gplx.xowa.htmls.lnkis; import gplx.*; import gplx.xowa.*; import gplx.xowa.htmls.*; import org.junit.*; import gplx.xowa.files.*; public class Xoh_file_wtr_audio_video_tst { @Before public void init() {fxt.Reset();} private Xop_fxt fxt = new Xop_fxt(); diff --git a/400_xowa/src/gplx/xowa/html/lnkis/Xoh_file_wtr_basic_tst.java b/400_xowa/src/gplx/xowa/htmls/lnkis/Xoh_file_wtr_basic_tst.java similarity index 97% rename from 400_xowa/src/gplx/xowa/html/lnkis/Xoh_file_wtr_basic_tst.java rename to 400_xowa/src/gplx/xowa/htmls/lnkis/Xoh_file_wtr_basic_tst.java index f5f43ecae..ec7c8eb96 100644 --- a/400_xowa/src/gplx/xowa/html/lnkis/Xoh_file_wtr_basic_tst.java +++ b/400_xowa/src/gplx/xowa/htmls/lnkis/Xoh_file_wtr_basic_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.html.lnkis; import gplx.*; import gplx.xowa.*; import gplx.xowa.html.*; +package gplx.xowa.htmls.lnkis; import gplx.*; import gplx.xowa.*; import gplx.xowa.htmls.*; import org.junit.*; public class Xoh_file_wtr_basic_tst { private Xop_fxt fxt = new Xop_fxt(); diff --git a/400_xowa/src/gplx/xowa/html/lnkis/Xoh_file_wtr_media_tst.java b/400_xowa/src/gplx/xowa/htmls/lnkis/Xoh_file_wtr_media_tst.java similarity index 95% rename from 400_xowa/src/gplx/xowa/html/lnkis/Xoh_file_wtr_media_tst.java rename to 400_xowa/src/gplx/xowa/htmls/lnkis/Xoh_file_wtr_media_tst.java index d04c0597c..4be80813a 100644 --- a/400_xowa/src/gplx/xowa/html/lnkis/Xoh_file_wtr_media_tst.java +++ b/400_xowa/src/gplx/xowa/htmls/lnkis/Xoh_file_wtr_media_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.html.lnkis; import gplx.*; import gplx.xowa.*; import gplx.xowa.html.*; +package gplx.xowa.htmls.lnkis; import gplx.*; import gplx.xowa.*; import gplx.xowa.htmls.*; import org.junit.*; public class Xoh_file_wtr_media_tst { private Xop_fxt fxt = new Xop_fxt(); diff --git a/400_xowa/src/gplx/xowa/html/lnkis/Xoh_lnki_consts.java b/400_xowa/src/gplx/xowa/htmls/lnkis/Xoh_lnki_consts.java similarity index 94% rename from 400_xowa/src/gplx/xowa/html/lnkis/Xoh_lnki_consts.java rename to 400_xowa/src/gplx/xowa/htmls/lnkis/Xoh_lnki_consts.java index 2012023a8..2ff438dfb 100644 --- a/400_xowa/src/gplx/xowa/html/lnkis/Xoh_lnki_consts.java +++ b/400_xowa/src/gplx/xowa/htmls/lnkis/Xoh_lnki_consts.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.html.lnkis; import gplx.*; import gplx.xowa.*; import gplx.xowa.html.*; +package gplx.xowa.htmls.lnkis; import gplx.*; import gplx.xowa.*; import gplx.xowa.htmls.*; public class Xoh_lnki_consts { public static final byte Tid_a_cls_none = 0 , Tid_a_cls_image = 1 diff --git a/400_xowa/src/gplx/xowa/html/lnkis/Xoh_lnki_consts_tst.java b/400_xowa/src/gplx/xowa/htmls/lnkis/Xoh_lnki_consts_tst.java similarity index 93% rename from 400_xowa/src/gplx/xowa/html/lnkis/Xoh_lnki_consts_tst.java rename to 400_xowa/src/gplx/xowa/htmls/lnkis/Xoh_lnki_consts_tst.java index cdc8104de..80ef36f06 100644 --- a/400_xowa/src/gplx/xowa/html/lnkis/Xoh_lnki_consts_tst.java +++ b/400_xowa/src/gplx/xowa/htmls/lnkis/Xoh_lnki_consts_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.html.lnkis; import gplx.*; import gplx.xowa.*; import gplx.xowa.html.*; +package gplx.xowa.htmls.lnkis; import gplx.*; import gplx.xowa.*; import gplx.xowa.htmls.*; import org.junit.*; public class Xoh_lnki_consts_tst { private Xoh_lnki_consts_fxt fxt = new Xoh_lnki_consts_fxt(); diff --git a/400_xowa/src/gplx/xowa/html/lnkis/Xoh_lnki_text_fmtr.java b/400_xowa/src/gplx/xowa/htmls/lnkis/Xoh_lnki_text_fmtr.java similarity index 86% rename from 400_xowa/src/gplx/xowa/html/lnkis/Xoh_lnki_text_fmtr.java rename to 400_xowa/src/gplx/xowa/htmls/lnkis/Xoh_lnki_text_fmtr.java index 2a847e39d..df5019000 100644 --- a/400_xowa/src/gplx/xowa/html/lnkis/Xoh_lnki_text_fmtr.java +++ b/400_xowa/src/gplx/xowa/htmls/lnkis/Xoh_lnki_text_fmtr.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.html.lnkis; import gplx.*; import gplx.xowa.*; import gplx.xowa.html.*; +package gplx.xowa.htmls.lnkis; import gplx.*; import gplx.xowa.*; import gplx.xowa.htmls.*; import gplx.xowa.parsers.*; public class Xoh_lnki_text_fmtr implements Bry_fmtr_arg { // formats alt or caption private final Bry_bfr_mkr bfr_mkr; private final Xoh_html_wtr html_wtr; @@ -25,16 +25,16 @@ public class Xoh_lnki_text_fmtr implements Bry_fmtr_arg { // formats alt or capt this.ctx = ctx; this.hctx = hctx; this.src = src; this.text_tkn = text_tkn; this.fmtr = fmtr; return this; } - public void XferAry(Bry_bfr trg, int idx) { + public void Fmt__do(Bry_bfr bfr) { Bry_bfr tmp_bfr = bfr_mkr.Get_k004(); html_wtr.Write_tkn(tmp_bfr, ctx, hctx, src, null, Xoh_html_wtr.Sub_idx_null, text_tkn); tmp_bfr.Mkr_rls(); if (tmp_bfr.Len() == 0) return; - byte[] bry = tmp_bfr.Xto_bry_and_clear(); + byte[] bry = tmp_bfr.To_bry_and_clear(); if (fmtr == Null_fmtr) - trg.Add(bry); + bfr.Add(bry); else - fmtr.Bld_bfr_many(trg, bry); + fmtr.Bld_bfr_many(bfr, bry); } public static final Bry_fmtr Null_fmtr = null; } diff --git a/400_xowa/src/gplx/xowa/html/lnkis/Xoh_lnki_title_fmtr.java b/400_xowa/src/gplx/xowa/htmls/lnkis/Xoh_lnki_title_fmtr.java similarity index 94% rename from 400_xowa/src/gplx/xowa/html/lnkis/Xoh_lnki_title_fmtr.java rename to 400_xowa/src/gplx/xowa/htmls/lnkis/Xoh_lnki_title_fmtr.java index eb6272d61..d7a0cdc9b 100644 --- a/400_xowa/src/gplx/xowa/html/lnkis/Xoh_lnki_title_fmtr.java +++ b/400_xowa/src/gplx/xowa/htmls/lnkis/Xoh_lnki_title_fmtr.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.html.lnkis; import gplx.*; import gplx.xowa.*; import gplx.xowa.html.*; +package gplx.xowa.htmls.lnkis; import gplx.*; import gplx.xowa.*; import gplx.xowa.htmls.*; import gplx.xowa.parsers.*; import gplx.xowa.parsers.xndes.*; import gplx.xowa.parsers.lnkis.*; import gplx.xowa.parsers.tmpls.*; public class Xoh_lnki_title_fmtr implements Bry_fmtr_arg { public Xoh_lnki_title_fmtr Set(byte[] src, Xop_tkn_itm tkn) {this.src = src; this.tkn = tkn; return this;} - public void XferAry(Bry_bfr bfr, int idx) { + public void Fmt__do(Bry_bfr bfr) { Bld_recurse(bfr, tkn); } public void Bld_recurse(Bry_bfr bfr, Xop_tkn_itm tkn) { diff --git a/400_xowa/src/gplx/xowa/html/lnkis/Xoh_lnki_title_fmtr_tst.java b/400_xowa/src/gplx/xowa/htmls/lnkis/Xoh_lnki_title_fmtr_tst.java similarity index 91% rename from 400_xowa/src/gplx/xowa/html/lnkis/Xoh_lnki_title_fmtr_tst.java rename to 400_xowa/src/gplx/xowa/htmls/lnkis/Xoh_lnki_title_fmtr_tst.java index f56c9444d..4b67248d9 100644 --- a/400_xowa/src/gplx/xowa/html/lnkis/Xoh_lnki_title_fmtr_tst.java +++ b/400_xowa/src/gplx/xowa/htmls/lnkis/Xoh_lnki_title_fmtr_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.html.lnkis; import gplx.*; import gplx.xowa.*; import gplx.xowa.html.*; +package gplx.xowa.htmls.lnkis; import gplx.*; import gplx.xowa.*; import gplx.xowa.htmls.*; import org.junit.*; import gplx.xowa.parsers.*; public class Xoh_lnki_title_fmtr_tst { @Before public void init() {fxt.Clear();} private Xoh_lnki_title_fmtr_fxt fxt = new Xoh_lnki_title_fmtr_fxt(); @@ -37,6 +37,6 @@ class Xoh_lnki_title_fmtr_fxt { Xop_root_tkn root = fxt.Ctx().Tkn_mkr().Root(raw_bry); fxt.Parser().Parse_page_all_clear(root, fxt.Ctx(), fxt.Ctx().Tkn_mkr(), raw_bry); title_wkr.Set(raw_bry, root).Bld_recurse(bfr, root); - Tfds.Eq(expd, bfr.Xto_str_and_clear()); + Tfds.Eq(expd, bfr.To_str_and_clear()); } } diff --git a/400_xowa/src/gplx/xowa/html/lnkis/Xoh_lnki_wtr.java b/400_xowa/src/gplx/xowa/htmls/lnkis/Xoh_lnki_wtr.java similarity index 95% rename from 400_xowa/src/gplx/xowa/html/lnkis/Xoh_lnki_wtr.java rename to 400_xowa/src/gplx/xowa/htmls/lnkis/Xoh_lnki_wtr.java index 740ed8ead..784304254 100644 --- a/400_xowa/src/gplx/xowa/html/lnkis/Xoh_lnki_wtr.java +++ b/400_xowa/src/gplx/xowa/htmls/lnkis/Xoh_lnki_wtr.java @@ -15,10 +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.html.lnkis; import gplx.*; import gplx.xowa.*; import gplx.xowa.html.*; +package gplx.xowa.htmls.lnkis; import gplx.*; import gplx.xowa.*; import gplx.xowa.htmls.*; 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.wikis.nss.*; +import gplx.xowa.wikis.xwikis.*; import gplx.xowa.xtns.wdatas.core.*; import gplx.xowa.htmls.hzips.*; import gplx.xowa.parsers.*; import gplx.xowa.parsers.lnkis.*; import gplx.xowa.parsers.lnkis.redlinks.*; public class Xoh_lnki_wtr { private Xoae_app app; private Xowe_wiki wiki; private Xoae_page page; private Xop_ctx ctx; @@ -54,7 +54,7 @@ public class Xoh_lnki_wtr { && 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]] ) { - Wdata_sitelink_itm slink = new Wdata_sitelink_itm(null, null, null).Page_ttl_(lnki_ttl); + Wdata_sitelink_itm slink = new Wdata_sitelink_itm(xwiki_lang.Abrv_wm(), xwiki_lang.Domain_name(), null).Page_ttl_(lnki_ttl); page.Slink_list().Add(slink); return; } @@ -115,9 +115,9 @@ public class Xoh_lnki_wtr { Html_utl.Escape_html_to_bfr(bfr, lnki_title_bry, 0, lnki_title_bry.length, Bool_.N, Bool_.N, Bool_.N, Bool_.Y, Bool_.N); // escape title; DATE:2014-10-27 } if (hctx.Mode_is_hdump()) { - bfr.Add(gplx.xowa.html.hdumps.abrvs.Xohd_abrv_.Html_redlink_bgn); + bfr.Add(gplx.xowa.htmls.hdumps.abrvs.Xohd_abrv_.Html_redlink_bgn); bfr.Add_int_variable(lnki.Html_uid()); - bfr.Add(gplx.xowa.html.hdumps.abrvs.Xohd_abrv_.Html_redlink_end); + bfr.Add(gplx.xowa.htmls.hdumps.abrvs.Xohd_abrv_.Html_redlink_end); } else { if (cfg.Lnki__visited() diff --git a/400_xowa/src/gplx/xowa/html/lnkis/Xoh_redlink_utl.java b/400_xowa/src/gplx/xowa/htmls/lnkis/Xoh_redlink_utl.java similarity index 89% rename from 400_xowa/src/gplx/xowa/html/lnkis/Xoh_redlink_utl.java rename to 400_xowa/src/gplx/xowa/htmls/lnkis/Xoh_redlink_utl.java index c590acfe4..833395a7d 100644 --- a/400_xowa/src/gplx/xowa/html/lnkis/Xoh_redlink_utl.java +++ b/400_xowa/src/gplx/xowa/htmls/lnkis/Xoh_redlink_utl.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.html.lnkis; import gplx.*; import gplx.xowa.*; import gplx.xowa.html.*; +package gplx.xowa.htmls.lnkis; import gplx.*; import gplx.xowa.*; import gplx.xowa.htmls.*; public class Xoh_redlink_utl { public static final byte[] Cls_bry = Bry_.new_a7("class='new'"); public static final String New_str = "new"; diff --git a/400_xowa/src/gplx/xowa/html/modules/popups/Xopg_popup_mgr.java b/400_xowa/src/gplx/xowa/htmls/modules/popups/Xopg_popup_mgr.java similarity index 83% rename from 400_xowa/src/gplx/xowa/html/modules/popups/Xopg_popup_mgr.java rename to 400_xowa/src/gplx/xowa/htmls/modules/popups/Xopg_popup_mgr.java index 9e4831916..1d44b751c 100644 --- a/400_xowa/src/gplx/xowa/html/modules/popups/Xopg_popup_mgr.java +++ b/400_xowa/src/gplx/xowa/htmls/modules/popups/Xopg_popup_mgr.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.html.modules.popups; import gplx.*; import gplx.xowa.*; import gplx.xowa.html.*; import gplx.xowa.html.modules.*; +package gplx.xowa.htmls.modules.popups; import gplx.*; import gplx.xowa.*; import gplx.xowa.htmls.*; import gplx.xowa.htmls.modules.*; public class Xopg_popup_mgr { - public Ordered_hash Itms() {return itms;} private Ordered_hash itms = Ordered_hash_.new_(); + public Ordered_hash Itms() {return itms;} private Ordered_hash itms = Ordered_hash_.New(); public void Clear() { itms.Clear(); } diff --git a/400_xowa/src/gplx/xowa/html/modules/popups/Xow_popup_anchor_finder.java b/400_xowa/src/gplx/xowa/htmls/modules/popups/Xow_popup_anchor_finder.java similarity index 94% rename from 400_xowa/src/gplx/xowa/html/modules/popups/Xow_popup_anchor_finder.java rename to 400_xowa/src/gplx/xowa/htmls/modules/popups/Xow_popup_anchor_finder.java index 932f6933f..8fa54c43f 100644 --- a/400_xowa/src/gplx/xowa/html/modules/popups/Xow_popup_anchor_finder.java +++ b/400_xowa/src/gplx/xowa/htmls/modules/popups/Xow_popup_anchor_finder.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.html.modules.popups; import gplx.*; import gplx.xowa.*; import gplx.xowa.html.*; import gplx.xowa.html.modules.*; +package gplx.xowa.htmls.modules.popups; import gplx.*; import gplx.xowa.*; import gplx.xowa.htmls.*; import gplx.xowa.htmls.modules.*; import gplx.xowa.parsers.*; class Xow_popup_anchor_finder { private byte[] src, find; diff --git a/400_xowa/src/gplx/xowa/html/modules/popups/Xow_popup_anchor_finder__hdr_tst.java b/400_xowa/src/gplx/xowa/htmls/modules/popups/Xow_popup_anchor_finder__hdr_tst.java similarity index 89% rename from 400_xowa/src/gplx/xowa/html/modules/popups/Xow_popup_anchor_finder__hdr_tst.java rename to 400_xowa/src/gplx/xowa/htmls/modules/popups/Xow_popup_anchor_finder__hdr_tst.java index cc3547e4f..27b24d1d5 100644 --- a/400_xowa/src/gplx/xowa/html/modules/popups/Xow_popup_anchor_finder__hdr_tst.java +++ b/400_xowa/src/gplx/xowa/htmls/modules/popups/Xow_popup_anchor_finder__hdr_tst.java @@ -15,10 +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.html.modules.popups; import gplx.*; import gplx.xowa.*; import gplx.xowa.html.*; import gplx.xowa.html.modules.*; +package gplx.xowa.htmls.modules.popups; import gplx.*; import gplx.xowa.*; import gplx.xowa.htmls.*; import gplx.xowa.htmls.modules.*; import org.junit.*; -import gplx.xowa.apis.xowa.html.modules.*; -import gplx.xowa.gui.views.*; +import gplx.xowa.apps.apis.xowa.html.modules.*; +import gplx.xowa.guis.views.*; public class Xow_popup_anchor_finder__hdr_tst { @Before public void init() {fxt.Clear();} private Xop_popup_hdr_finder_fxt fxt = new Xop_popup_hdr_finder_fxt(); @Test public void Basic() { diff --git a/400_xowa/src/gplx/xowa/html/modules/popups/Xow_popup_anchor_finder__id_tst.java b/400_xowa/src/gplx/xowa/htmls/modules/popups/Xow_popup_anchor_finder__id_tst.java similarity index 85% rename from 400_xowa/src/gplx/xowa/html/modules/popups/Xow_popup_anchor_finder__id_tst.java rename to 400_xowa/src/gplx/xowa/htmls/modules/popups/Xow_popup_anchor_finder__id_tst.java index 67be361b5..cac8513a1 100644 --- a/400_xowa/src/gplx/xowa/html/modules/popups/Xow_popup_anchor_finder__id_tst.java +++ b/400_xowa/src/gplx/xowa/htmls/modules/popups/Xow_popup_anchor_finder__id_tst.java @@ -15,10 +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.html.modules.popups; import gplx.*; import gplx.xowa.*; import gplx.xowa.html.*; import gplx.xowa.html.modules.*; +package gplx.xowa.htmls.modules.popups; import gplx.*; import gplx.xowa.*; import gplx.xowa.htmls.*; import gplx.xowa.htmls.modules.*; import org.junit.*; -import gplx.xowa.apis.xowa.html.modules.*; -import gplx.xowa.gui.views.*; +import gplx.xowa.apps.apis.xowa.html.modules.*; +import gplx.xowa.guis.views.*; public class Xow_popup_anchor_finder__id_tst { @Before public void init() {fxt.Clear();} private Xop_popup_hdr_finder_fxt fxt = new Xop_popup_hdr_finder_fxt(); @Test public void Basic() { diff --git a/400_xowa/src/gplx/xowa/html/modules/popups/Xow_popup_cfg.java b/400_xowa/src/gplx/xowa/htmls/modules/popups/Xow_popup_cfg.java similarity index 92% rename from 400_xowa/src/gplx/xowa/html/modules/popups/Xow_popup_cfg.java rename to 400_xowa/src/gplx/xowa/htmls/modules/popups/Xow_popup_cfg.java index 8e3fceefc..ea1b4b9ed 100644 --- a/400_xowa/src/gplx/xowa/html/modules/popups/Xow_popup_cfg.java +++ b/400_xowa/src/gplx/xowa/htmls/modules/popups/Xow_popup_cfg.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.html.modules.popups; import gplx.*; import gplx.xowa.*; import gplx.xowa.html.*; import gplx.xowa.html.modules.*; -import gplx.xowa.apis.xowa.html.modules.*; +package gplx.xowa.htmls.modules.popups; import gplx.*; import gplx.xowa.*; import gplx.xowa.htmls.*; import gplx.xowa.htmls.modules.*; +import gplx.xowa.apps.apis.xowa.html.modules.*; public class Xow_popup_cfg { public int Show_all_if_less_than() {return show_all_if_less_than;} public void Show_all_if_less_than_(int v) {show_all_if_less_than = v;} private int show_all_if_less_than = Xoapi_popups.Dflt_show_all_if_less_than; public int Tmpl_read_max() {return tmpl_read_max;} public void Tmpl_read_max_(int v) {tmpl_read_max = v;} private int tmpl_read_max = Xoapi_popups.Dflt_scan_max; diff --git a/400_xowa/src/gplx/xowa/html/modules/popups/Xow_popup_html_mkr.java b/400_xowa/src/gplx/xowa/htmls/modules/popups/Xow_popup_html_mkr.java similarity index 87% rename from 400_xowa/src/gplx/xowa/html/modules/popups/Xow_popup_html_mkr.java rename to 400_xowa/src/gplx/xowa/htmls/modules/popups/Xow_popup_html_mkr.java index 94a2333d0..f37148e28 100644 --- a/400_xowa/src/gplx/xowa/html/modules/popups/Xow_popup_html_mkr.java +++ b/400_xowa/src/gplx/xowa/htmls/modules/popups/Xow_popup_html_mkr.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.html.modules.popups; import gplx.*; import gplx.xowa.*; import gplx.xowa.html.*; import gplx.xowa.html.modules.*; -import gplx.xowa.apis.xowa.html.modules.*; +package gplx.xowa.htmls.modules.popups; import gplx.*; import gplx.xowa.*; import gplx.xowa.htmls.*; import gplx.xowa.htmls.modules.*; +import gplx.xowa.apps.apis.xowa.html.modules.*; public class Xow_popup_html_mkr { private Xoae_app app; private Xowe_wiki wiki; public Bry_fmtr Fmtr_popup() {return fmtr_popup;} private Bry_fmtr fmtr_popup = Bry_fmtr.keys_(Xoapi_popups.Dflt_html_fmtr_popup_keys); @@ -32,10 +32,10 @@ public class Xow_popup_html_mkr { public byte[] Bld(Xowe_wiki cur_wiki, Xoae_page page, Xow_popup_itm popup_itm, Bry_bfr wrdx_bfr) { if (output_js_clean) app.Html_mgr().Js_cleaner().Clean_bfr(wiki, page.Ttl(), wrdx_bfr, 0); if (output_tidy) app.Html_mgr().Tidy_mgr().Run_tidy_html(page, wrdx_bfr); - byte[] hdom_bry = wrdx_bfr.Xto_bry_and_clear(); - String page_url = wrdx_bfr.Add(page.Wiki().Domain_bry()).Add(Xoa_consts.Url_wiki_intermediary).Add(Xoa_app_.Utl__encoder_mgr().Href() + byte[] hdom_bry = wrdx_bfr.To_bry_and_clear(); + String page_url = wrdx_bfr.Add(page.Wiki().Domain_bry()).Add(gplx.xowa.htmls.hrefs.Xoh_href_.Bry__wiki).Add(Xoa_app_.Utl__encoder_mgr().Href() .Encode(page.Ttl().Full_db())) // NOTE: was page.Url().Raw(), but that doesn't work for Special:Search; PAGE:en.w:Earth and "Quotations"; DATE:2014-06-29 - .Xto_str_and_clear() + .To_str_and_clear() ; fmtr_popup.Bld_bfr_many ( wrdx_bfr @@ -50,7 +50,7 @@ public class Xow_popup_html_mkr { , Xow_popup_html_bldr_.Bld_fmtr_viewed(fmtr_viewed, app, wiki, wrdx_bfr, page.Ttl()) , app.Fsys_mgr().Root_dir().To_http_file_bry() ); - return wrdx_bfr.Xto_bry_and_clear(); + return wrdx_bfr.To_bry_and_clear(); } } class Xow_popup_html_bldr_ { diff --git a/400_xowa/src/gplx/xowa/html/modules/popups/Xow_popup_itm.java b/400_xowa/src/gplx/xowa/htmls/modules/popups/Xow_popup_itm.java similarity index 93% rename from 400_xowa/src/gplx/xowa/html/modules/popups/Xow_popup_itm.java rename to 400_xowa/src/gplx/xowa/htmls/modules/popups/Xow_popup_itm.java index 0f3960b54..11c19c9a2 100644 --- a/400_xowa/src/gplx/xowa/html/modules/popups/Xow_popup_itm.java +++ b/400_xowa/src/gplx/xowa/htmls/modules/popups/Xow_popup_itm.java @@ -15,10 +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.html.modules.popups; import gplx.*; import gplx.xowa.*; import gplx.xowa.html.*; import gplx.xowa.html.modules.*; +package gplx.xowa.htmls.modules.popups; import gplx.*; import gplx.xowa.*; import gplx.xowa.htmls.*; import gplx.xowa.htmls.modules.*; public class Xow_popup_itm implements Cancelable { public Xow_popup_itm(int id, byte[] page_href, byte[] tooltip, int init_words_needed) { - this.popup_id = gplx.xowa.apps.Xoa_thread_.Key_page_popup + Int_.Xto_str(id); + this.popup_id = gplx.xowa.apps.Xoa_thread_.Key_page_popup + Int_.To_str(id); this.words_needed = init_words_needed; this.page_href = page_href; this.tooltip = tooltip; diff --git a/400_xowa/src/gplx/xowa/html/modules/popups/Xow_popup_mgr.java b/400_xowa/src/gplx/xowa/htmls/modules/popups/Xow_popup_mgr.java similarity index 96% rename from 400_xowa/src/gplx/xowa/html/modules/popups/Xow_popup_mgr.java rename to 400_xowa/src/gplx/xowa/htmls/modules/popups/Xow_popup_mgr.java index de95a1f17..05cf08949 100644 --- a/400_xowa/src/gplx/xowa/html/modules/popups/Xow_popup_mgr.java +++ b/400_xowa/src/gplx/xowa/htmls/modules/popups/Xow_popup_mgr.java @@ -15,14 +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.html.modules.popups; import gplx.*; import gplx.xowa.*; import gplx.xowa.html.*; import gplx.xowa.html.modules.*; +package gplx.xowa.htmls.modules.popups; import gplx.*; import gplx.xowa.*; import gplx.xowa.htmls.*; import gplx.xowa.htmls.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.wikis.nss.*; +import gplx.xowa.guis.views.*; +import gplx.xowa.htmls.hrefs.*; import gplx.xowa.specials.*; import gplx.xowa.specials.search.*; -import gplx.xowa.apis.xowa.html.modules.*; +import gplx.xowa.apps.apis.xowa.html.modules.*; public class Xow_popup_mgr implements GfoInvkAble, GfoEvObj { private Xoae_app app; private Xowe_wiki wiki; private Js_wtr js_wtr = new Js_wtr(); private int show_init_word_count = Xoapi_popups.Dflt_show_init_word_count, show_more_word_count = Xoapi_popups.Dflt_show_more_word_count; @@ -134,7 +134,7 @@ public class Xow_popup_mgr implements GfoInvkAble, GfoEvObj { if (ns_allowed_regy.Count() > 0 && !ns_allowed_regy.Has(ns_allowed_regy_key.Val_(popup_ttl.Ns().Id()))) return Bry_.Empty; itm.Init(popup_wiki.Domain_bry(), popup_ttl); int wait_count = 0; - while (gplx.xowa.gui.views.Load_page_wkr.Running() && ++wait_count < 100) { + while (gplx.xowa.guis.views.Load_page_wkr.Running() && ++wait_count < 100) { Thread_adp_.Sleep(10); } Xoae_page popup_page = popup_wiki.Data_mgr().Get_page(popup_ttl, false); diff --git a/400_xowa/src/gplx/xowa/html/modules/popups/Xow_popup_parser.java b/400_xowa/src/gplx/xowa/htmls/modules/popups/Xow_popup_parser.java similarity index 95% rename from 400_xowa/src/gplx/xowa/html/modules/popups/Xow_popup_parser.java rename to 400_xowa/src/gplx/xowa/htmls/modules/popups/Xow_popup_parser.java index 2fd78bb9f..e331c56c3 100644 --- a/400_xowa/src/gplx/xowa/html/modules/popups/Xow_popup_parser.java +++ b/400_xowa/src/gplx/xowa/htmls/modules/popups/Xow_popup_parser.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.html.modules.popups; import gplx.*; import gplx.xowa.*; import gplx.xowa.html.*; import gplx.xowa.html.modules.*; +package gplx.xowa.htmls.modules.popups; import gplx.*; import gplx.xowa.*; import gplx.xowa.htmls.*; import gplx.xowa.htmls.modules.*; import gplx.core.btries.*; import gplx.xowa.wikis.domains.*; -import gplx.xowa.apis.xowa.html.modules.*; import gplx.xowa.html.modules.popups.keeplists.*; -import gplx.xowa.gui.views.*; +import gplx.xowa.apps.apis.xowa.html.modules.*; import gplx.xowa.htmls.modules.popups.keeplists.*; +import gplx.xowa.guis.views.*; import gplx.xowa.parsers.*; import gplx.xowa.parsers.hdrs.*; import gplx.xowa.parsers.tblws.*; import gplx.xowa.parsers.tmpls.*; public class Xow_popup_parser { private Xoae_app app; private Xowe_wiki wiki; private Xop_parser parser; @@ -121,7 +121,7 @@ public class Xow_popup_parser { private void Parse_wrdx_to_html(Xow_popup_itm popup_itm, Bry_bfr wrdx_bfr) { Adjust_wrdx_end(popup_itm, wrdx_bfr); wrdx_bfr.Add(cfg.Notoc()); // always add notoc at end - byte[] wrdx_bry = wrdx_bfr.Xto_bry_and_clear(); + byte[] wrdx_bry = wrdx_bfr.To_bry_and_clear(); wtxt_root.Clear(); // now start parsing wrdx_bry from wtxt to html Wtxt_ctx_init(false, wrdx_bry); parser.Parse_to_src_end(wtxt_root, wtxt_ctx, tkn_mkr, wrdx_bry, wtxt_trie, Xop_parser_.Doc_bgn_bos, wrdx_bry.length); @@ -204,7 +204,7 @@ public class Xow_popup_parser { int subs_len = tmpl_root.Subs_len(); for (int i = 0; i < subs_len; i++) tmpl_root.Subs_get(i).Tmpl_compile(tmpl_ctx, src, tmpl_props); - return Xot_tmpl_wtr._.Write_all(tmpl_ctx, tmpl_root, src); + return Xot_tmpl_wtr.Instance.Write_all(tmpl_ctx, tmpl_root, src); } } class Xow_popup_parser_ { diff --git a/400_xowa/src/gplx/xowa/html/modules/popups/Xow_popup_parser_data.java b/400_xowa/src/gplx/xowa/htmls/modules/popups/Xow_popup_parser_data.java similarity index 92% rename from 400_xowa/src/gplx/xowa/html/modules/popups/Xow_popup_parser_data.java rename to 400_xowa/src/gplx/xowa/htmls/modules/popups/Xow_popup_parser_data.java index ea57417a7..0240f7e85 100644 --- a/400_xowa/src/gplx/xowa/html/modules/popups/Xow_popup_parser_data.java +++ b/400_xowa/src/gplx/xowa/htmls/modules/popups/Xow_popup_parser_data.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.html.modules.popups; import gplx.*; import gplx.xowa.*; import gplx.xowa.html.*; import gplx.xowa.html.modules.*; -import gplx.xowa.apis.xowa.html.modules.*; +package gplx.xowa.htmls.modules.popups; import gplx.*; import gplx.xowa.*; import gplx.xowa.htmls.*; import gplx.xowa.htmls.modules.*; +import gplx.xowa.apps.apis.xowa.html.modules.*; import gplx.xowa.parsers.*; public class Xow_popup_parser_data { public int Tmpl_max() {return tmpl_max;} private int tmpl_max; diff --git a/400_xowa/src/gplx/xowa/html/modules/popups/Xow_popup_parser_tst.java b/400_xowa/src/gplx/xowa/htmls/modules/popups/Xow_popup_parser_tst.java similarity index 95% rename from 400_xowa/src/gplx/xowa/html/modules/popups/Xow_popup_parser_tst.java rename to 400_xowa/src/gplx/xowa/htmls/modules/popups/Xow_popup_parser_tst.java index e657f5900..ab3c567b7 100644 --- a/400_xowa/src/gplx/xowa/html/modules/popups/Xow_popup_parser_tst.java +++ b/400_xowa/src/gplx/xowa/htmls/modules/popups/Xow_popup_parser_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.html.modules.popups; import gplx.*; import gplx.xowa.*; import gplx.xowa.html.*; import gplx.xowa.html.modules.*; +package gplx.xowa.htmls.modules.popups; import gplx.*; import gplx.xowa.*; import gplx.xowa.htmls.*; import gplx.xowa.htmls.modules.*; import org.junit.*; import gplx.core.primitives.*; -import gplx.xowa.apis.xowa.html.modules.*; -import gplx.xowa.nss.*; -import gplx.xowa.gui.views.*; +import gplx.xowa.apps.apis.xowa.html.modules.*; +import gplx.xowa.wikis.nss.*; +import gplx.xowa.guis.views.*; public class Xow_popup_parser_tst { @Before public void init() {fxt.Clear();} private Xop_popup_parser_fxt fxt = new Xop_popup_parser_fxt(); @Test public void Text_chars_one() { @@ -509,6 +509,6 @@ class Xop_popup_parser_fxt { if (test_bfr == null) test_bfr = Bry_bfr.new_(); test_bfr.Clear().Add_str(raw); Bry_bfr_.Assert_at_end(test_bfr, Byte_ascii.Nl); - Tfds.Eq(expd, test_bfr.Xto_str_and_clear()); + Tfds.Eq(expd, test_bfr.To_str_and_clear()); } private Bry_bfr test_bfr; } diff --git a/400_xowa/src/gplx/xowa/html/modules/popups/Xow_popup_word.java b/400_xowa/src/gplx/xowa/htmls/modules/popups/Xow_popup_word.java similarity index 90% rename from 400_xowa/src/gplx/xowa/html/modules/popups/Xow_popup_word.java rename to 400_xowa/src/gplx/xowa/htmls/modules/popups/Xow_popup_word.java index de6be382e..ab7c336d6 100644 --- a/400_xowa/src/gplx/xowa/html/modules/popups/Xow_popup_word.java +++ b/400_xowa/src/gplx/xowa/htmls/modules/popups/Xow_popup_word.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.html.modules.popups; import gplx.*; import gplx.xowa.*; import gplx.xowa.html.*; import gplx.xowa.html.modules.*; +package gplx.xowa.htmls.modules.popups; import gplx.*; import gplx.xowa.*; import gplx.xowa.htmls.*; import gplx.xowa.htmls.modules.*; import gplx.xowa.parsers.*; public class Xow_popup_word { public Xow_popup_word(int tid, int bfr_bgn, int idx, int bgn, int end, Xop_tkn_itm tkn) {this.tid = tid; this.bfr_bgn = bfr_bgn; this.idx = idx; this.bgn = bgn; this.end = end; this.tkn = tkn;} diff --git a/400_xowa/src/gplx/xowa/html/modules/popups/Xow_popup_wrdx_mkr.java b/400_xowa/src/gplx/xowa/htmls/modules/popups/Xow_popup_wrdx_mkr.java similarity index 93% rename from 400_xowa/src/gplx/xowa/html/modules/popups/Xow_popup_wrdx_mkr.java rename to 400_xowa/src/gplx/xowa/htmls/modules/popups/Xow_popup_wrdx_mkr.java index b6a1c413c..2e0afffe9 100644 --- a/400_xowa/src/gplx/xowa/html/modules/popups/Xow_popup_wrdx_mkr.java +++ b/400_xowa/src/gplx/xowa/htmls/modules/popups/Xow_popup_wrdx_mkr.java @@ -15,10 +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.html.modules.popups; import gplx.*; import gplx.xowa.*; import gplx.xowa.html.*; import gplx.xowa.html.modules.*; +package gplx.xowa.htmls.modules.popups; import gplx.*; import gplx.xowa.*; import gplx.xowa.htmls.*; import gplx.xowa.htmls.modules.*; 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.*; +import gplx.xowa.wikis.nss.*; +import gplx.xowa.parsers.*; import gplx.xowa.parsers.lnkes.*; import gplx.xowa.parsers.xndes.*; import gplx.xowa.parsers.htmls.*; import gplx.xowa.parsers.lnkis.*; public class Xow_popup_wrdx_mkr { private boolean skip_space; private Xop_tkn_itm prv_tkn_seen, prv_tkn_added; @@ -171,12 +171,12 @@ public class Xow_popup_wrdx_mkr { } } private boolean Xnde_id_ignore_list_chk(Xop_xnde_tkn xnde, byte[] src) { - Xop_xatr_itm[] atrs_ary = xnde.Atrs_ary(); + Mwh_atr_itm[] atrs_ary = xnde.Atrs_ary(); int atrs_len = atrs_ary.length; for (int i = 0; i < atrs_len; i++) { - Xop_xatr_itm atr = atrs_ary[i]; + Mwh_atr_itm atr = atrs_ary[i]; if ( Bry_.Eq(atr.Key_bry(), Html_atr_.Id_bry) - && xnde_id_ignore_list.Get_by_bry(atr.Val_as_bry(src)) != null + && xnde_id_ignore_list.Get_by_bry(atr.Val_as_bry()) != null ) { return true; } diff --git a/400_xowa/src/gplx/xowa/html/modules/popups/keeplists/Xop_keeplist_rule.java b/400_xowa/src/gplx/xowa/htmls/modules/popups/keeplists/Xop_keeplist_rule.java similarity index 87% rename from 400_xowa/src/gplx/xowa/html/modules/popups/keeplists/Xop_keeplist_rule.java rename to 400_xowa/src/gplx/xowa/htmls/modules/popups/keeplists/Xop_keeplist_rule.java index 61d399d8a..f51185be1 100644 --- a/400_xowa/src/gplx/xowa/html/modules/popups/keeplists/Xop_keeplist_rule.java +++ b/400_xowa/src/gplx/xowa/htmls/modules/popups/keeplists/Xop_keeplist_rule.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.html.modules.popups.keeplists; import gplx.*; import gplx.xowa.*; import gplx.xowa.html.*; import gplx.xowa.html.modules.*; import gplx.xowa.html.modules.popups.*; +package gplx.xowa.htmls.modules.popups.keeplists; import gplx.*; import gplx.xowa.*; import gplx.xowa.htmls.*; import gplx.xowa.htmls.modules.*; import gplx.xowa.htmls.modules.popups.*; import gplx.langs.regxs.*; public class Xop_keeplist_rule { private Gfo_pattern[] excludes; private int excludes_len; diff --git a/400_xowa/src/gplx/xowa/html/modules/popups/keeplists/Xop_keeplist_wiki.java b/400_xowa/src/gplx/xowa/htmls/modules/popups/keeplists/Xop_keeplist_wiki.java similarity index 89% rename from 400_xowa/src/gplx/xowa/html/modules/popups/keeplists/Xop_keeplist_wiki.java rename to 400_xowa/src/gplx/xowa/htmls/modules/popups/keeplists/Xop_keeplist_wiki.java index 1c94afe1a..02ce3c56f 100644 --- a/400_xowa/src/gplx/xowa/html/modules/popups/keeplists/Xop_keeplist_wiki.java +++ b/400_xowa/src/gplx/xowa/htmls/modules/popups/keeplists/Xop_keeplist_wiki.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.html.modules.popups.keeplists; import gplx.*; import gplx.xowa.*; import gplx.xowa.html.*; import gplx.xowa.html.modules.*; import gplx.xowa.html.modules.popups.*; +package gplx.xowa.htmls.modules.popups.keeplists; import gplx.*; import gplx.xowa.*; import gplx.xowa.htmls.*; import gplx.xowa.htmls.modules.*; import gplx.xowa.htmls.modules.popups.*; import gplx.langs.regxs.*; public class Xop_keeplist_wiki { public Xop_keeplist_wiki(Xowe_wiki wiki) { diff --git a/400_xowa/src/gplx/xowa/html/modules/popups/keeplists/Xop_keeplist_wiki_srl.java b/400_xowa/src/gplx/xowa/htmls/modules/popups/keeplists/Xop_keeplist_wiki_srl.java similarity index 92% rename from 400_xowa/src/gplx/xowa/html/modules/popups/keeplists/Xop_keeplist_wiki_srl.java rename to 400_xowa/src/gplx/xowa/htmls/modules/popups/keeplists/Xop_keeplist_wiki_srl.java index f8d9c73cd..10a0ac9f6 100644 --- a/400_xowa/src/gplx/xowa/html/modules/popups/keeplists/Xop_keeplist_wiki_srl.java +++ b/400_xowa/src/gplx/xowa/htmls/modules/popups/keeplists/Xop_keeplist_wiki_srl.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.html.modules.popups.keeplists; import gplx.*; import gplx.xowa.*; import gplx.xowa.html.*; import gplx.xowa.html.modules.*; import gplx.xowa.html.modules.popups.*; +package gplx.xowa.htmls.modules.popups.keeplists; import gplx.*; import gplx.xowa.*; import gplx.xowa.htmls.*; import gplx.xowa.htmls.modules.*; import gplx.xowa.htmls.modules.popups.*; import gplx.langs.dsvs.*; import gplx.langs.regxs.*; import gplx.xowa.langs.cases.*; diff --git a/400_xowa/src/gplx/xowa/html/modules/popups/keeplists/Xop_keeplist_wiki_tst.java b/400_xowa/src/gplx/xowa/htmls/modules/popups/keeplists/Xop_keeplist_wiki_tst.java similarity index 91% rename from 400_xowa/src/gplx/xowa/html/modules/popups/keeplists/Xop_keeplist_wiki_tst.java rename to 400_xowa/src/gplx/xowa/htmls/modules/popups/keeplists/Xop_keeplist_wiki_tst.java index ce2cfbe60..45ce21788 100644 --- a/400_xowa/src/gplx/xowa/html/modules/popups/keeplists/Xop_keeplist_wiki_tst.java +++ b/400_xowa/src/gplx/xowa/htmls/modules/popups/keeplists/Xop_keeplist_wiki_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.html.modules.popups.keeplists; import gplx.*; import gplx.xowa.*; import gplx.xowa.html.*; import gplx.xowa.html.modules.*; import gplx.xowa.html.modules.popups.*; +package gplx.xowa.htmls.modules.popups.keeplists; import gplx.*; import gplx.xowa.*; import gplx.xowa.htmls.*; import gplx.xowa.htmls.modules.*; import gplx.xowa.htmls.modules.popups.*; import org.junit.*; public class Xop_keeplist_wiki_tst { @Before public void init() {fxt.Clear();} private Xop_keeplist_wiki_fxt fxt = new Xop_keeplist_wiki_fxt(); diff --git a/400_xowa/src/gplx/xowa/html/ns_files/Xoh_file_page__other_resolutions.java b/400_xowa/src/gplx/xowa/htmls/ns_files/Xoh_file_page__other_resolutions.java similarity index 93% rename from 400_xowa/src/gplx/xowa/html/ns_files/Xoh_file_page__other_resolutions.java rename to 400_xowa/src/gplx/xowa/htmls/ns_files/Xoh_file_page__other_resolutions.java index 861d3c328..51c2ee1ff 100644 --- a/400_xowa/src/gplx/xowa/html/ns_files/Xoh_file_page__other_resolutions.java +++ b/400_xowa/src/gplx/xowa/htmls/ns_files/Xoh_file_page__other_resolutions.java @@ -15,14 +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.html.ns_files; import gplx.*; import gplx.xowa.*; import gplx.xowa.html.*; +package gplx.xowa.htmls.ns_files; import gplx.*; import gplx.xowa.*; import gplx.xowa.htmls.*; import gplx.core.primitives.*; import gplx.xowa.files.*; import gplx.xowa.files.repos.*; import gplx.xowa.parsers.lnkis.*; class Xoh_file_page__other_resolutions implements Bry_fmtr_arg { private Xow_repo_mgr repo_mgr; private Xof_file_itm orig_itm; private Xoh_file_page_wtr file_page; private final Xof_img_size img_size = new Xof_img_size(); private final Xof_url_bldr url_bldr = Xof_url_bldr.new_v2(); public Xoh_file_page__other_resolutions Init_by_fmtr(Xow_repo_mgr repo_mgr, Xof_file_itm orig_itm, Xoh_file_page_wtr file_page) {this.repo_mgr = repo_mgr; this.orig_itm = orig_itm; this.file_page = file_page; return this;} - public void XferAry(Bry_bfr bfr, int idx) { + public void Fmt__do(Bry_bfr bfr) { Int_2_ref[] ary = file_page.Size_alts(); Xof_file_itm xfer_itm = new Xof_fsdb_itm(); int len = ary.length; diff --git a/400_xowa/src/gplx/xowa/html/ns_files/Xoh_file_page_wtr.java b/400_xowa/src/gplx/xowa/htmls/ns_files/Xoh_file_page_wtr.java similarity index 94% rename from 400_xowa/src/gplx/xowa/html/ns_files/Xoh_file_page_wtr.java rename to 400_xowa/src/gplx/xowa/htmls/ns_files/Xoh_file_page_wtr.java index 8705c9576..ddb2432e6 100644 --- a/400_xowa/src/gplx/xowa/html/ns_files/Xoh_file_page_wtr.java +++ b/400_xowa/src/gplx/xowa/htmls/ns_files/Xoh_file_page_wtr.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.html.ns_files; import gplx.*; import gplx.xowa.*; import gplx.xowa.html.*; +package gplx.xowa.htmls.ns_files; import gplx.*; import gplx.xowa.*; import gplx.xowa.htmls.*; import gplx.core.primitives.*; public class Xoh_file_page_wtr { public int Main_img_w() {return 800;} @@ -55,7 +55,7 @@ public class Xoh_file_page_wtr { , " \"~{thumb_ttl}\"" , " " , "
Size of this preview: " - , " " + , " " , " ~{thumb_width} × ~{thumb_height} pixels" , " " , " ." diff --git a/400_xowa/src/gplx/xowa/html/ns_files/Xoh_ns_file_page_mgr.java b/400_xowa/src/gplx/xowa/htmls/ns_files/Xoh_ns_file_page_mgr.java similarity index 94% rename from 400_xowa/src/gplx/xowa/html/ns_files/Xoh_ns_file_page_mgr.java rename to 400_xowa/src/gplx/xowa/htmls/ns_files/Xoh_ns_file_page_mgr.java index 38f57a5a8..59bfc40e8 100644 --- a/400_xowa/src/gplx/xowa/html/ns_files/Xoh_ns_file_page_mgr.java +++ b/400_xowa/src/gplx/xowa/htmls/ns_files/Xoh_ns_file_page_mgr.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.html.ns_files; import gplx.*; import gplx.xowa.*; import gplx.xowa.html.*; +package gplx.xowa.htmls.ns_files; import gplx.*; import gplx.xowa.*; import gplx.xowa.htmls.*; import gplx.core.primitives.*; -import gplx.xowa.html.*; import gplx.xowa.html.lnkis.*; +import gplx.xowa.htmls.*; import gplx.xowa.htmls.lnkis.*; import gplx.xowa.files.*; import gplx.xowa.files.repos.*; import gplx.xowa.files.xfers.*; import gplx.xowa.files.origs.*; import gplx.xowa.parsers.*; import gplx.xowa.parsers.lnkis.*; public class Xoh_ns_file_page_mgr implements Bry_fmtr_arg { @@ -40,7 +40,7 @@ public class Xoh_ns_file_page_mgr implements Bry_fmtr_arg { xfer_itm.Init_at_html(Xof_exec_tid.Tid_wiki_file, img_size, repo, url_bldr); this.file_size_bry = Bry_.Empty; if (xfer_itm.File_exists()) { // file exists - long file_size = Io_mgr.I.QueryFil(xfer_itm.Html_orig_url()).Size(); + long file_size = Io_mgr.Instance.QueryFil(xfer_itm.Html_orig_url()).Size(); if (file_size == -1) file_size = 0; // QueryFil returns -1 if file doesn't exist this.file_size_bry = Bry_.new_a7(gplx.ios.Io_size_.To_str(file_size)); } @@ -56,7 +56,7 @@ public class Xoh_ns_file_page_mgr implements Bry_fmtr_arg { this.xfer_itm = xfer_itm; this.file_size_bry = file_size_bry; html_wtr.Html_main().Bld_bfr_many(bfr, this, ""); } - public void XferAry(Bry_bfr bfr, int idx) { + public void Fmt__do(Bry_bfr bfr) { alt_wtr.Init_by_fmtr(repo_mgr, xfer_itm, html_wtr); Xof_ext orig_ext = xfer_itm.Orig_ext(); if (orig_ext.Id_is_thumbable_img()) diff --git a/400_xowa/src/gplx/xowa/html/ns_files/Xoh_ns_file_page_mgr_tst.java b/400_xowa/src/gplx/xowa/htmls/ns_files/Xoh_ns_file_page_mgr_tst.java similarity index 95% rename from 400_xowa/src/gplx/xowa/html/ns_files/Xoh_ns_file_page_mgr_tst.java rename to 400_xowa/src/gplx/xowa/htmls/ns_files/Xoh_ns_file_page_mgr_tst.java index e225770fa..6527117da 100644 --- a/400_xowa/src/gplx/xowa/html/ns_files/Xoh_ns_file_page_mgr_tst.java +++ b/400_xowa/src/gplx/xowa/htmls/ns_files/Xoh_ns_file_page_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.html.ns_files; import gplx.*; import gplx.xowa.*; import gplx.xowa.html.*; +package gplx.xowa.htmls.ns_files; import gplx.*; import gplx.xowa.*; import gplx.xowa.htmls.*; import org.junit.*; import gplx.xowa.files.*; public class Xoh_ns_file_page_mgr_tst { private final Xoh_ns_file_page_mgr_fxt fxt = new Xoh_ns_file_page_mgr_fxt(); @@ -29,7 +29,7 @@ public class Xoh_ns_file_page_mgr_tst { , " \"Test.png\"" , " " , "
Size of this preview: " - , " " + , " " , " 300 × 200 pixels" , " " , " ." @@ -109,7 +109,7 @@ class Xoh_ns_file_page_mgr_fxt { file.Init_at_orig(Byte_.Zero, wiki.Domain_bry(), ttl_bry, Xof_ext_.new_by_ttl_(ttl_bry), 0, 0, Bry_.Empty); file.Init_at_hdoc(0, Xof_html_elem.Tid_img); wkr.Bld_html(wiki, bfr, file, ttl, opt, Bry_.To_a7_bry(html_file_size, 0), play_btn_icon); // TEST: must pass in elem_val b/c test only uses 2nd Bld_html while app uses 1st - Tfds.Eq_str_lines(expd, bfr.Xto_str_and_clear()); + Tfds.Eq_str_lines(expd, bfr.To_str_and_clear()); } static final byte[] play_btn_icon = Bry_.new_a7("file:///mem/xowa/bin/any/xowa/file/mediawiki.file/play.png"); public static final String Hdr = String_.Concat_lines_nl_skip_last ( "
    " diff --git a/400_xowa/src/gplx/xowa/html/portal/Xoa_available_wikis_mgr.java b/400_xowa/src/gplx/xowa/htmls/portal/Xoa_available_wikis_mgr.java similarity index 89% rename from 400_xowa/src/gplx/xowa/html/portal/Xoa_available_wikis_mgr.java rename to 400_xowa/src/gplx/xowa/htmls/portal/Xoa_available_wikis_mgr.java index 94b761092..c3597d307 100644 --- a/400_xowa/src/gplx/xowa/html/portal/Xoa_available_wikis_mgr.java +++ b/400_xowa/src/gplx/xowa/htmls/portal/Xoa_available_wikis_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.html.portal; import gplx.*; import gplx.xowa.*; import gplx.xowa.html.*; +package gplx.xowa.htmls.portal; import gplx.*; import gplx.xowa.*; import gplx.xowa.htmls.*; import gplx.xowa.wikis.domains.*; import gplx.xowa.wikis.xwikis.*; import gplx.xowa.files.xfers.*; public class Xoa_available_wikis_mgr implements GfoInvkAble { @@ -30,11 +30,11 @@ public class Xoa_available_wikis_mgr implements GfoInvkAble { int len = xwiki_mgr.Len(); for (int i = 0; i < len; i++) { Xow_xwiki_itm itm = xwiki_mgr.Get_at(i); - if (itm.Domain_tid() == Xow_domain_type_.Int__home) continue;// don't show home wiki + if (itm.Domain_tid() == Xow_domain_tid_.Int__home) continue;// don't show home wiki if (!itm.Offline()) continue; // only show items marked Offline (added by Available_from_fsys); DATE:2014-09-21 itms_as_html_fmtr.Bld_bfr_many(tmp_bfr, itm.Domain_bry(), itm_cls); } - itms_as_html = tmp_bfr.Xto_str(); + itms_as_html = tmp_bfr.To_str(); } return itms_as_html; } private String itms_as_html; @@ -43,7 +43,7 @@ public class Xoa_available_wikis_mgr implements GfoInvkAble { public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { if (ctx.Match(k, Invk_itms_as_html)) return this.Itms_as_html(); else if (ctx.Match(k, Invk_itms_refresh)) Itms_reset(); - else if (ctx.Match(k, Invk_visible)) return Yn.Xto_str(visible); + else if (ctx.Match(k, Invk_visible)) return Yn.To_str(visible); else if (ctx.Match(k, Invk_visible_)) visible = m.ReadYn("v"); else if (ctx.Match(k, Invk_visible_toggle)) {visible = !visible; app.Gui_mgr().Browser_win().Active_html_box().Html_js_eval_proc_as_str("xowa-portal-wikis-visible-toggle", Bool_.To_str_lower(visible));} else if (ctx.Match(k, Invk_itms_as_html_fmtr_)) itms_as_html_fmtr.Fmt_(m.ReadBry("v")); diff --git a/400_xowa/src/gplx/xowa/html/portal/Xoa_portal_mgr.java b/400_xowa/src/gplx/xowa/htmls/portal/Xoa_portal_mgr.java similarity index 91% rename from 400_xowa/src/gplx/xowa/html/portal/Xoa_portal_mgr.java rename to 400_xowa/src/gplx/xowa/htmls/portal/Xoa_portal_mgr.java index e7621a0b1..e5609bb4b 100644 --- a/400_xowa/src/gplx/xowa/html/portal/Xoa_portal_mgr.java +++ b/400_xowa/src/gplx/xowa/htmls/portal/Xoa_portal_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.html.portal; import gplx.*; import gplx.xowa.*; import gplx.xowa.html.*; +package gplx.xowa.htmls.portal; import gplx.*; import gplx.xowa.*; import gplx.xowa.htmls.*; public class Xoa_portal_mgr implements GfoInvkAble { public Xoa_portal_mgr(Xoae_app app) {wikis = new Xoa_available_wikis_mgr(app);} public Xoa_available_wikis_mgr Wikis() {return wikis;} private Xoa_available_wikis_mgr wikis; diff --git a/400_xowa/src/gplx/xowa/html/portal/Xoh_page_body_cls.java b/400_xowa/src/gplx/xowa/htmls/portal/Xoh_page_body_cls.java similarity index 91% rename from 400_xowa/src/gplx/xowa/html/portal/Xoh_page_body_cls.java rename to 400_xowa/src/gplx/xowa/htmls/portal/Xoh_page_body_cls.java index e51a2bbf3..e2fbece35 100644 --- a/400_xowa/src/gplx/xowa/html/portal/Xoh_page_body_cls.java +++ b/400_xowa/src/gplx/xowa/htmls/portal/Xoh_page_body_cls.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.html.portal; import gplx.*; import gplx.xowa.*; import gplx.xowa.html.*; +package gplx.xowa.htmls.portal; import gplx.*; import gplx.xowa.*; import gplx.xowa.htmls.*; import gplx.xowa.wikis.*; import gplx.xowa.xtns.wdatas.*; -import gplx.xowa.nss.*; +import gplx.xowa.wikis.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 @@ -36,11 +36,11 @@ public class Xoh_page_body_cls { // REF.MW:Skin.php|getPageClasses tmp_bfr.Add_byte_space().Add(Bry_wb_propertypage).Add_byte(Byte_ascii.Dash).Add(ttl.Page_db()); break; default: - Gfo_usr_dlg_.I.Warn_many("", "", "unexpected ns for page_body_cls; ttl=~{0}", String_.new_u8(ttl.Raw())); + Gfo_usr_dlg_.Instance.Warn_many("", "", "unexpected ns for page_body_cls; ttl=~{0}", String_.new_u8(ttl.Raw())); break; } } - return tmp_bfr.Xto_bry_and_clear(); + return tmp_bfr.To_bry_and_clear(); } private static void Add_type(Bry_bfr tmp_bfr, Xoa_ttl ttl) { tmp_bfr.Add_byte_space(); @@ -116,7 +116,7 @@ public class Xoh_page_body_cls { // REF.MW:Skin.php|getPageClasses } } if (bgn != -1) trg_bfr.Add_mid(src, bgn, src_len); - return trg_bfr == null ? src : trg_bfr.Xto_bry_and_clear(); + return trg_bfr == null ? src : trg_bfr.To_bry_and_clear(); } private static final byte[] Bry_id_prefix = Bry_.new_a7("ns-") diff --git a/400_xowa/src/gplx/xowa/html/portal/Xoh_page_body_cls_tst.java b/400_xowa/src/gplx/xowa/htmls/portal/Xoh_page_body_cls_tst.java similarity index 95% rename from 400_xowa/src/gplx/xowa/html/portal/Xoh_page_body_cls_tst.java rename to 400_xowa/src/gplx/xowa/htmls/portal/Xoh_page_body_cls_tst.java index 34ecc66ca..45b4ceaf0 100644 --- a/400_xowa/src/gplx/xowa/html/portal/Xoh_page_body_cls_tst.java +++ b/400_xowa/src/gplx/xowa/htmls/portal/Xoh_page_body_cls_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.html.portal; import gplx.*; import gplx.xowa.*; import gplx.xowa.html.*; +package gplx.xowa.htmls.portal; import gplx.*; import gplx.xowa.*; import gplx.xowa.htmls.*; import org.junit.*; import gplx.xowa.wikis.*; import gplx.xowa.xtns.wdatas.*; public class Xoh_page_body_cls_tst { @Before public void init() {} private Xoh_page_body_cls_fxt fxt = new Xoh_page_body_cls_fxt(); diff --git a/400_xowa/src/gplx/xowa/html/portal/Xoh_rtl_utl.java b/400_xowa/src/gplx/xowa/htmls/portal/Xoh_rtl_utl.java similarity index 93% rename from 400_xowa/src/gplx/xowa/html/portal/Xoh_rtl_utl.java rename to 400_xowa/src/gplx/xowa/htmls/portal/Xoh_rtl_utl.java index d67902324..614d097a9 100644 --- a/400_xowa/src/gplx/xowa/html/portal/Xoh_rtl_utl.java +++ b/400_xowa/src/gplx/xowa/htmls/portal/Xoh_rtl_utl.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.html.portal; import gplx.*; import gplx.xowa.*; import gplx.xowa.html.*; +package gplx.xowa.htmls.portal; import gplx.*; import gplx.xowa.*; import gplx.xowa.htmls.*; public class Xoh_rtl_utl { private static final int[] tmp_ary = new int[32]; // support no more than 16 items private static Bry_bfr bfr = Bry_bfr.reset_(32); @@ -33,7 +33,7 @@ public class Xoh_rtl_utl { pos = ul_end; } bfr.Add_mid(src, pos, src_len); // add rest of String - return bfr.Xto_bry_and_clear(); // exit + return bfr.To_bry_and_clear(); // exit } private static void Reverse_li_src(Bry_bfr bfr, byte[] src, int ul_bgn, int ul_end, int[] tmp_ary) { int pos = ul_bgn; diff --git a/400_xowa/src/gplx/xowa/html/portal/Xoh_rtl_utl_tst.java b/400_xowa/src/gplx/xowa/htmls/portal/Xoh_rtl_utl_tst.java similarity index 92% rename from 400_xowa/src/gplx/xowa/html/portal/Xoh_rtl_utl_tst.java rename to 400_xowa/src/gplx/xowa/htmls/portal/Xoh_rtl_utl_tst.java index 1c65d4ceb..75e129e89 100644 --- a/400_xowa/src/gplx/xowa/html/portal/Xoh_rtl_utl_tst.java +++ b/400_xowa/src/gplx/xowa/htmls/portal/Xoh_rtl_utl_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.html.portal; import gplx.*; import gplx.xowa.*; import gplx.xowa.html.*; +package gplx.xowa.htmls.portal; import gplx.*; import gplx.xowa.*; import gplx.xowa.htmls.*; import org.junit.*; public class Xoh_rtl_utl_tst { @Before public void init() {fxt.Init();} private Xoh_rtl_utl_fxt fxt = new Xoh_rtl_utl_fxt(); diff --git a/400_xowa/src/gplx/xowa/html/portal/Xoh_subpages_bldr.java b/400_xowa/src/gplx/xowa/htmls/portal/Xoh_subpages_bldr.java similarity index 86% rename from 400_xowa/src/gplx/xowa/html/portal/Xoh_subpages_bldr.java rename to 400_xowa/src/gplx/xowa/htmls/portal/Xoh_subpages_bldr.java index 984c1bc84..5c28c1fcc 100644 --- a/400_xowa/src/gplx/xowa/html/portal/Xoh_subpages_bldr.java +++ b/400_xowa/src/gplx/xowa/htmls/portal/Xoh_subpages_bldr.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.html.portal; import gplx.*; import gplx.xowa.*; import gplx.xowa.html.*; -import gplx.xowa.html.hrefs.*; -import gplx.xowa.nss.*; +package gplx.xowa.htmls.portal; import gplx.*; import gplx.xowa.*; import gplx.xowa.htmls.*; +import gplx.xowa.htmls.hrefs.*; +import gplx.xowa.wikis.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; @@ -31,9 +31,9 @@ public class Xoh_subpages_bldr implements Bry_fmtr_arg { byte[] raw = ttl.Raw(); this.segs = Bry_split_.Split(raw, Byte_ascii.Slash); fmtr_grp.Bld_bfr(tmp_bfr, this); - return tmp_bfr.Xto_bry_and_clear(); + return tmp_bfr.To_bry_and_clear(); } - public void XferAry(Bry_bfr bfr, int idx) { + public void Fmt__do(Bry_bfr bfr) { int segs_len = segs.length - 1; // last seg is current page; do not print for (int i = 0; i < segs_len; ++i) { byte[] dlm = null; @@ -45,8 +45,8 @@ public class Xoh_subpages_bldr implements Bry_fmtr_arg { } byte[] seg = segs[i]; ttl_bfr.Add(seg); - byte[] seg_ttl = ttl_bfr.Xto_bry(); - byte[] seg_ttl_enc = Xoa_app_.Utl__encoder_mgr().Href().Encode(ttl_bfr.Xto_bry()); + byte[] seg_ttl = ttl_bfr.To_bry(); + byte[] seg_ttl_enc = Xoa_app_.Utl__encoder_mgr().Href().Encode(ttl_bfr.To_bry()); byte[] href = Bry_.Add(Xoh_href_.Bry__wiki, seg_ttl_enc); // EX: /wiki/Help:A fmtr_itm.Bld_bfr(bfr, dlm, href, seg_ttl, seg); } diff --git a/400_xowa/src/gplx/xowa/html/portal/Xoh_subpages_bldr_tst.java b/400_xowa/src/gplx/xowa/htmls/portal/Xoh_subpages_bldr_tst.java similarity index 91% rename from 400_xowa/src/gplx/xowa/html/portal/Xoh_subpages_bldr_tst.java rename to 400_xowa/src/gplx/xowa/htmls/portal/Xoh_subpages_bldr_tst.java index ab4286007..bb693e303 100644 --- a/400_xowa/src/gplx/xowa/html/portal/Xoh_subpages_bldr_tst.java +++ b/400_xowa/src/gplx/xowa/htmls/portal/Xoh_subpages_bldr_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.html.portal; import gplx.*; import gplx.xowa.*; import gplx.xowa.html.*; -import org.junit.*; import gplx.xowa.nss.*; +package gplx.xowa.htmls.portal; import gplx.*; import gplx.xowa.*; import gplx.xowa.htmls.*; +import org.junit.*; import gplx.xowa.wikis.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/htmls/portal/Xow_portal_mgr.java similarity index 87% rename from 400_xowa/src/gplx/xowa/html/portal/Xow_portal_mgr.java rename to 400_xowa/src/gplx/xowa/htmls/portal/Xow_portal_mgr.java index a2dcc5495..eb64690fe 100644 --- a/400_xowa/src/gplx/xowa/html/portal/Xow_portal_mgr.java +++ b/400_xowa/src/gplx/xowa/htmls/portal/Xow_portal_mgr.java @@ -15,23 +15,23 @@ 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.html.portal; import gplx.*; import gplx.xowa.*; import gplx.xowa.html.*; +package gplx.xowa.htmls.portal; import gplx.*; import gplx.xowa.*; import gplx.xowa.htmls.*; 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.guis.*; import gplx.xowa.htmls.sidebar.*; import gplx.xowa.wikis.pages.*; +import gplx.xowa.wikis.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.*; +import gplx.xowa.htmls.hrefs.*; +import gplx.xowa.apps.apis.xowa.html.*; import gplx.xowa.apps.apis.xowa.html.skins.*; +import gplx.xowa.langs.vnts.*; import gplx.xowa.htmls.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); - this.missing_ns_cls = Bry_.Eq(wiki.Domain_bry(), Xow_domain_type_.Bry__home) ? Missing_ns_cls_hide : null; // if home wiki, set missing_ns to application default; if any other wiki, set to null; will be overriden during init + this.missing_ns_cls = Bry_.Eq(wiki.Domain_bry(), Xow_domain_tid_.Bry__home) ? Missing_ns_cls_hide : null; // if home wiki, set missing_ns to application default; if any other wiki, set to null; will be overriden during init } - public void Init_by_lang(Xol_lang lang) { + public void Init_by_lang(Xol_lang_itm lang) { lang_is_rtl = !lang.Dir_ltr(); } private Xoapi_skin_app_base api_skin; @@ -44,14 +44,14 @@ public class Xow_portal_mgr implements GfoInvkAble { if (missing_ns_cls == null) // if missing_ns_cls not set for wiki, use the home wiki's Missing_ns_cls_(wiki.Appe().Usere().Wiki().Html_mgr().Portal_mgr().Missing_ns_cls()); Xoapi_skins skins = wiki.Appe().Api_root().Html().Skins(); - api_skin = wiki.App().App_type().Uid_is_gui() ? skins.Desktop() : skins.Server(); + api_skin = wiki.App().Mode().Tid_is_gui() ? skins.Desktop() : skins.Server(); Bry_fmtr_eval_mgr eval_mgr = wiki.Eval_mgr(); Bry_bfr tmp_bfr = wiki.Utl__bfr_mkr().Get_b512(); Init_fmtr(tmp_bfr, eval_mgr, div_view_fmtr); Init_fmtr(tmp_bfr, eval_mgr, div_ns_fmtr); byte[] wiki_user_name = wiki.User().Name(); div_personal_bry = Init_fmtr(tmp_bfr, eval_mgr, div_personal_fmtr, Bry_.Add(Xoh_href_.Bry__wiki, wiki.Ns_mgr().Ids_get_or_null(Xow_ns_.Id_user).Name_db_w_colon(), wiki_user_name), wiki_user_name, Ns_cls_by_id(wiki.Ns_mgr(), Xow_ns_.Id_user), Bry_.Add(Xoh_href_.Bry__wiki, wiki.Ns_mgr().Ids_get_or_null(Xow_ns_.Id_user_talk).Name_db_w_colon(), wiki_user_name), Ns_cls_by_id(wiki.Ns_mgr(), Xow_ns_.Id_user_talk)); - byte[] main_page_href_bry = tmp_bfr.Add(Xoh_href_.Bry__site).Add(wiki.Domain_bry()).Add(Xoh_href_.Bry__wiki).Xto_bry_and_clear(); // NOTE: build /site/en.wikipedia.org/wiki/ href; no Main_Page, as that will be inserted by Xoh_href_parser + byte[] main_page_href_bry = tmp_bfr.Add(Xoh_href_.Bry__site).Add(wiki.Domain_bry()).Add(Xoh_href_.Bry__wiki).To_bry_and_clear(); // NOTE: build /site/en.wikipedia.org/wiki/ href; no Main_Page, as that will be inserted by Xoh_href_parser div_logo_bry = Init_fmtr(tmp_bfr, eval_mgr, div_logo_fmtr, main_page_href_bry, Xoa_app_.Utl__encoder_mgr().Fsys().Encode_http(wiki.Appe().Usere().Fsys_mgr().Wiki_root_dir().GenSubFil_nest(wiki.Domain_str(), "html", "logo.png"))); div_home_bry = Init_fmtr(tmp_bfr, eval_mgr, div_home_fmtr); div_wikis_fmtr.Eval_mgr_(eval_mgr); @@ -63,7 +63,7 @@ public class Xow_portal_mgr implements GfoInvkAble { private byte[] Init_fmtr(Bry_bfr tmp_bfr, Bry_fmtr_eval_mgr eval_mgr, Bry_fmtr fmtr, Object... fmt_args) { fmtr.Eval_mgr_(eval_mgr); fmtr.Bld_bfr_many(tmp_bfr, fmt_args); - return tmp_bfr.Xto_bry_and_clear(); + return tmp_bfr.To_bry_and_clear(); } public byte[] Div_personal_bry() {return div_personal_bry;} private byte[] div_personal_bry = Bry_.Empty; public byte[] Div_ns_bry(Bry_bfr_mkr bfr_mkr, Xoa_ttl ttl, Xow_ns_mgr ns_mgr) { @@ -76,7 +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_menu_fmtr.Init(vnt_mgr.Regy(), wiki.Domain_bry(), ttl.Full_db(), vnt_mgr.Cur_key()); + vnt_menu_fmtr.Init(vnt_mgr.Regy(), wiki.Domain_bry(), ttl.Full_db(), vnt_mgr.Cur_itm().Key()); vnt_menu = wiki.Lang().Vnt_mgr().Enabled() ? vnt_menu_fmtr : null; } Bry_bfr tmp_bfr = bfr_mkr.Get_k004(); @@ -95,9 +95,9 @@ public class Xow_portal_mgr implements GfoInvkAble { Bry_bfr tmp_bfr = bfr_mkr.Get_k004(); byte[] read_cls = Bry_.Empty, edit_cls = Bry_.Empty, html_cls = Bry_.Empty; switch (output_tid) { - case Xopg_view_mode.Tid_read: read_cls = Cls_selected_y; break; - case Xopg_view_mode.Tid_edit: edit_cls = Cls_selected_y; break; - case Xopg_view_mode.Tid_html: html_cls = Cls_selected_y; break; + case Xopg_page_.Tid_read: read_cls = Cls_selected_y; break; + case Xopg_page_.Tid_edit: edit_cls = Cls_selected_y; break; + case Xopg_page_.Tid_html: html_cls = Cls_selected_y; break; } div_view_fmtr.Bld_bfr_many(tmp_bfr, read_cls, edit_cls, html_cls, search_text); return tmp_bfr.To_bry_and_rls(); diff --git a/400_xowa/src/gplx/xowa/html/portal/Xow_portal_mgr_tst.java b/400_xowa/src/gplx/xowa/htmls/portal/Xow_portal_mgr_tst.java similarity index 94% rename from 400_xowa/src/gplx/xowa/html/portal/Xow_portal_mgr_tst.java rename to 400_xowa/src/gplx/xowa/htmls/portal/Xow_portal_mgr_tst.java index e17111a83..8d317b7fa 100644 --- a/400_xowa/src/gplx/xowa/html/portal/Xow_portal_mgr_tst.java +++ b/400_xowa/src/gplx/xowa/htmls/portal/Xow_portal_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.html.portal; import gplx.*; import gplx.xowa.*; import gplx.xowa.html.*; +package gplx.xowa.htmls.portal; import gplx.*; import gplx.xowa.*; import gplx.xowa.htmls.*; import org.junit.*; public class Xow_portal_mgr_tst { @Before public void init() {fxt.Init();} private Xowh_portal_mgr_fxt fxt = new Xowh_portal_mgr_fxt(); diff --git a/400_xowa/src/gplx/xowa/html/portal/vnts/Vnt_mnu_grp_fmtr.java b/400_xowa/src/gplx/xowa/htmls/portal/vnts/Vnt_mnu_grp_fmtr.java similarity index 92% rename from 400_xowa/src/gplx/xowa/html/portal/vnts/Vnt_mnu_grp_fmtr.java rename to 400_xowa/src/gplx/xowa/htmls/portal/vnts/Vnt_mnu_grp_fmtr.java index 71e5eb032..2919761f5 100644 --- a/400_xowa/src/gplx/xowa/html/portal/vnts/Vnt_mnu_grp_fmtr.java +++ b/400_xowa/src/gplx/xowa/htmls/portal/vnts/Vnt_mnu_grp_fmtr.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.html.portal.vnts; import gplx.*; import gplx.xowa.*; import gplx.xowa.html.*; import gplx.xowa.html.portal.*; +package gplx.xowa.htmls.portal.vnts; import gplx.*; import gplx.xowa.*; import gplx.xowa.htmls.*; import gplx.xowa.htmls.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(); @@ -24,7 +24,7 @@ public class Vnt_mnu_grp_fmtr implements Bry_fmtr_arg { 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) { + public void Fmt__do(Bry_bfr bfr) { 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); } @@ -43,7 +43,7 @@ public class Vnt_mnu_grp_fmtr implements Bry_fmtr_arg { class Xolg_vnt_itm_fmtr implements Bry_fmtr_arg { 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) { + public void Fmt__do(Bry_bfr bfr) { int len = mgr.Len(); for (int i = 0; i < len; ++i) { Xol_vnt_itm itm = mgr.Get_at(i); if (!itm.Visible()) continue; diff --git a/400_xowa/src/gplx/xowa/html/portal/vnts/Vnt_mnu_grp_fmtr_tst.java b/400_xowa/src/gplx/xowa/htmls/portal/vnts/Vnt_mnu_grp_fmtr_tst.java similarity index 92% rename from 400_xowa/src/gplx/xowa/html/portal/vnts/Vnt_mnu_grp_fmtr_tst.java rename to 400_xowa/src/gplx/xowa/htmls/portal/vnts/Vnt_mnu_grp_fmtr_tst.java index 8e1a45cb9..223769d91 100644 --- a/400_xowa/src/gplx/xowa/html/portal/vnts/Vnt_mnu_grp_fmtr_tst.java +++ b/400_xowa/src/gplx/xowa/htmls/portal/vnts/Vnt_mnu_grp_fmtr_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.html.portal.vnts; import gplx.*; import gplx.xowa.*; import gplx.xowa.html.*; import gplx.xowa.html.portal.*; +package gplx.xowa.htmls.portal.vnts; import gplx.*; import gplx.xowa.*; import gplx.xowa.htmls.*; import gplx.xowa.htmls.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(); @@ -61,7 +61,7 @@ class Vnt_mnu_grp_fmtr_fxt { Vnt_mnu_grp_fmtr vnt_grp_fmtr = new Vnt_mnu_grp_fmtr(); Bry_bfr bfr = Bry_bfr.new_(); 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()); + vnt_grp_fmtr.Fmt__do(bfr); + Tfds.Eq_str_lines(expd, bfr.To_str_and_clear()); } } diff --git a/400_xowa/src/gplx/xowa/html/sidebar/Xowh_sidebar_itm.java b/400_xowa/src/gplx/xowa/htmls/sidebar/Xowh_sidebar_itm.java similarity index 94% rename from 400_xowa/src/gplx/xowa/html/sidebar/Xowh_sidebar_itm.java rename to 400_xowa/src/gplx/xowa/htmls/sidebar/Xowh_sidebar_itm.java index 44e10fe1f..4cef25c7c 100644 --- a/400_xowa/src/gplx/xowa/html/sidebar/Xowh_sidebar_itm.java +++ b/400_xowa/src/gplx/xowa/htmls/sidebar/Xowh_sidebar_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.html.sidebar; import gplx.*; import gplx.xowa.*; import gplx.xowa.html.*; +package gplx.xowa.htmls.sidebar; import gplx.*; import gplx.xowa.*; import gplx.xowa.htmls.*; public class Xowh_sidebar_itm { public Xowh_sidebar_itm(byte tid) {this.tid = tid;} public byte Tid() {return tid;} private byte tid; @@ -38,7 +38,7 @@ public class Xowh_sidebar_itm { class Xowh_sidebar_grp_fmtr_arg implements Bry_fmtr_arg { private Xowe_wiki wiki; private Xowh_sidebar_itm grp; private Bry_fmtr fmtr; public void Grp_(Xowe_wiki wiki, Xowh_sidebar_itm grp, Bry_fmtr fmtr) {this.wiki = wiki; this.grp = grp; this.fmtr = fmtr;} - public void XferAry(Bry_bfr bfr, int idx) { + public void Fmt__do(Bry_bfr bfr) { int len = grp.Itms_len(); boolean popups_enabled = wiki.Appe().Api_root().Html().Modules().Popups().Enabled(); String itm_cls = popups_enabled ? " class='xowa-hover-off'" : ""; diff --git a/400_xowa/src/gplx/xowa/html/sidebar/Xowh_sidebar_mgr.java b/400_xowa/src/gplx/xowa/htmls/sidebar/Xowh_sidebar_mgr.java similarity index 96% rename from 400_xowa/src/gplx/xowa/html/sidebar/Xowh_sidebar_mgr.java rename to 400_xowa/src/gplx/xowa/htmls/sidebar/Xowh_sidebar_mgr.java index 3369f7d5e..f6dde761b 100644 --- a/400_xowa/src/gplx/xowa/html/sidebar/Xowh_sidebar_mgr.java +++ b/400_xowa/src/gplx/xowa/htmls/sidebar/Xowh_sidebar_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.html.sidebar; import gplx.*; import gplx.xowa.*; import gplx.xowa.html.*; +package gplx.xowa.htmls.sidebar; import gplx.*; import gplx.xowa.*; import gplx.xowa.htmls.*; import gplx.core.btries.*; import gplx.langs.htmls.encoders.*; import gplx.xowa.langs.*; import gplx.xowa.langs.msgs.*; import gplx.xowa.parsers.lnkis.*; @@ -30,7 +30,7 @@ public class Xowh_sidebar_mgr implements GfoInvkAble { Xol_msg_itm sidebar_msg = Xol_msg_mgr_.Get_msg_itm(bfr, wiki, wiki.Lang(), CONST_sidebar_ttl); if ( sidebar_msg.Src() == Xol_msg_itm.Src_missing || ( sidebar_msg.Src() == Xol_msg_itm.Src_lang - && wiki.Domain_tid() == gplx.xowa.wikis.domains.Xow_domain_type_.Int__home + && wiki.Domain_tid() == gplx.xowa.wikis.domains.Xow_domain_tid_.Int__home )) { html_bry = Bry_.Empty; bfr.Mkr_rls(); @@ -69,7 +69,7 @@ public class Xowh_sidebar_mgr implements GfoInvkAble { 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" + byte[] id = id_encoder.Encode(bfr.Add(CONST_id_prefix), text_key).To_bry_and_clear(); // build id; "n-encoded_id" Xowh_sidebar_itm cur_itm = new Xowh_sidebar_itm(tid).Id_(id).Text_(text_val); wiki.Msg_mgr().Val_html_accesskey_and_title(id, bfr, cur_itm); if (tid == Xowh_sidebar_itm.Tid_grp) { diff --git a/400_xowa/src/gplx/xowa/html/sidebar/Xowh_sidebar_mgr_tst.java b/400_xowa/src/gplx/xowa/htmls/sidebar/Xowh_sidebar_mgr_tst.java similarity index 94% rename from 400_xowa/src/gplx/xowa/html/sidebar/Xowh_sidebar_mgr_tst.java rename to 400_xowa/src/gplx/xowa/htmls/sidebar/Xowh_sidebar_mgr_tst.java index 3fc0bba36..4f538645f 100644 --- a/400_xowa/src/gplx/xowa/html/sidebar/Xowh_sidebar_mgr_tst.java +++ b/400_xowa/src/gplx/xowa/htmls/sidebar/Xowh_sidebar_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.html.sidebar; import gplx.*; import gplx.xowa.*; import gplx.xowa.html.*; +package gplx.xowa.htmls.sidebar; import gplx.*; import gplx.xowa.*; import gplx.xowa.htmls.*; import org.junit.*; import gplx.core.strings.*; -import gplx.xowa.langs.*; +import gplx.xowa.langs.*; import gplx.xowa.langs.msgs.*; 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() { @@ -224,7 +224,7 @@ class Xowh_sidebar_mgr_fxt { } public void Test_html(String expd) { sidebar_mgr.Bld_html(bfr); - Tfds.Eq_str_lines(expd, bfr.Xto_str_and_clear()); + Tfds.Eq_str_lines(expd, bfr.To_str_and_clear()); } String Xto_str_grps(Xowh_sidebar_mgr mgr) { int len = mgr.Grps_len(); @@ -239,7 +239,7 @@ class Xowh_sidebar_mgr_fxt { String_bldr sb = String_bldr_.new_(); for (int i = 0; i < ary_len; i++) sb.Add(Xto_str(ary[i])); - return sb.Xto_str_and_clear(); + return sb.To_str_and_clear(); } String Xto_str(Xowh_sidebar_itm cur) { String_bldr sb = String_bldr_.new_(); @@ -255,6 +255,6 @@ class Xowh_sidebar_mgr_fxt { int itms_len = cur.Itms_len(); for (int i = 0; i< itms_len; i++) sb.Add(Xto_str(cur.Itms_get_at(i))); - return sb.Xto_str_and_clear(); + return sb.To_str_and_clear(); } } \ No newline at end of file diff --git a/400_xowa/src/gplx/xowa/html/skins/Xoh_skin_itm.java b/400_xowa/src/gplx/xowa/htmls/skins/Xoh_skin_itm.java similarity index 92% rename from 400_xowa/src/gplx/xowa/html/skins/Xoh_skin_itm.java rename to 400_xowa/src/gplx/xowa/htmls/skins/Xoh_skin_itm.java index 547a0a026..3ac0db3c9 100644 --- a/400_xowa/src/gplx/xowa/html/skins/Xoh_skin_itm.java +++ b/400_xowa/src/gplx/xowa/htmls/skins/Xoh_skin_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.html.skins; import gplx.*; import gplx.xowa.*; import gplx.xowa.html.*; +package gplx.xowa.htmls.skins; import gplx.*; import gplx.xowa.*; import gplx.xowa.htmls.*; public class Xoh_skin_itm implements GfoInvkAble { private final Bry_fmtr fmtr = Bry_fmtr.new_(); public Xoh_skin_itm(String key, String fmt) {this.key = key; fmtr.Fmt_(fmt);} diff --git a/400_xowa/src/gplx/xowa/html/skins/Xoh_skin_mgr.java b/400_xowa/src/gplx/xowa/htmls/skins/Xoh_skin_mgr.java similarity index 94% rename from 400_xowa/src/gplx/xowa/html/skins/Xoh_skin_mgr.java rename to 400_xowa/src/gplx/xowa/htmls/skins/Xoh_skin_mgr.java index e501acc5e..5173bd057 100644 --- a/400_xowa/src/gplx/xowa/html/skins/Xoh_skin_mgr.java +++ b/400_xowa/src/gplx/xowa/htmls/skins/Xoh_skin_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.html.skins; import gplx.*; import gplx.xowa.*; import gplx.xowa.html.*; +package gplx.xowa.htmls.skins; import gplx.*; import gplx.xowa.*; import gplx.xowa.htmls.*; public class Xoh_skin_mgr implements GfoInvkAble { private final Xoh_skin_regy regy = new Xoh_skin_regy(); public Xoh_skin_mgr() { diff --git a/400_xowa/src/gplx/xowa/html/skins/Xoh_skin_regy.java b/400_xowa/src/gplx/xowa/htmls/skins/Xoh_skin_regy.java similarity index 87% rename from 400_xowa/src/gplx/xowa/html/skins/Xoh_skin_regy.java rename to 400_xowa/src/gplx/xowa/htmls/skins/Xoh_skin_regy.java index d2aea13d0..0923e4eec 100644 --- a/400_xowa/src/gplx/xowa/html/skins/Xoh_skin_regy.java +++ b/400_xowa/src/gplx/xowa/htmls/skins/Xoh_skin_regy.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.html.skins; import gplx.*; import gplx.xowa.*; import gplx.xowa.html.*; +package gplx.xowa.htmls.skins; import gplx.*; import gplx.xowa.*; import gplx.xowa.htmls.*; class Xoh_skin_regy { - private final Ordered_hash hash = Ordered_hash_.new_(); + private final Ordered_hash hash = Ordered_hash_.New(); public int Len() {return hash.Count();} public Xoh_skin_itm Get_at(int i) {return (Xoh_skin_itm)hash.Get_at(i);} public Xoh_skin_itm Get_by_key(String key) {return (Xoh_skin_itm)hash.Get_by(key);} diff --git a/400_xowa/src/gplx/xowa/html/tidy/Xoh_tidy_mgr.java b/400_xowa/src/gplx/xowa/htmls/tidy/Xoh_tidy_mgr.java similarity index 94% rename from 400_xowa/src/gplx/xowa/html/tidy/Xoh_tidy_mgr.java rename to 400_xowa/src/gplx/xowa/htmls/tidy/Xoh_tidy_mgr.java index 0590e342b..7f905bf6a 100644 --- a/400_xowa/src/gplx/xowa/html/tidy/Xoh_tidy_mgr.java +++ b/400_xowa/src/gplx/xowa/htmls/tidy/Xoh_tidy_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.html.tidy; import gplx.*; import gplx.xowa.*; import gplx.xowa.html.*; +package gplx.xowa.htmls.tidy; import gplx.*; import gplx.xowa.*; import gplx.xowa.htmls.*; import gplx.langs.htmls.*; import gplx.xowa.apps.fsys.*; public class Xoh_tidy_mgr implements GfoInvkAble { @@ -43,7 +43,7 @@ public class Xoh_tidy_mgr implements GfoInvkAble { Tidy_unwrap(bfr); } public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { - if (ctx.Match(k, Invk_enabled)) return Yn.Xto_str(enabled); + if (ctx.Match(k, Invk_enabled)) return Yn.To_str(enabled); else if (ctx.Match(k, Invk_enabled_)) enabled = m.ReadYn("v"); else if (ctx.Match(k, Invk_enabled_toggle)) enabled = !enabled; else if (ctx.Match(k, Invk_engine_type)) return Xoh_tidy_wkr_.Xto_key(wkr.Tid()); diff --git a/400_xowa/src/gplx/xowa/html/tidy/Xoh_tidy_mgr_tst.java b/400_xowa/src/gplx/xowa/htmls/tidy/Xoh_tidy_mgr_tst.java similarity index 91% rename from 400_xowa/src/gplx/xowa/html/tidy/Xoh_tidy_mgr_tst.java rename to 400_xowa/src/gplx/xowa/htmls/tidy/Xoh_tidy_mgr_tst.java index 21486784d..e9fa514bf 100644 --- a/400_xowa/src/gplx/xowa/html/tidy/Xoh_tidy_mgr_tst.java +++ b/400_xowa/src/gplx/xowa/htmls/tidy/Xoh_tidy_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.html.tidy; import gplx.*; import gplx.xowa.*; import gplx.xowa.html.*; +package gplx.xowa.htmls.tidy; import gplx.*; import gplx.xowa.*; import gplx.xowa.htmls.*; import org.junit.*; public class Xoh_tidy_mgr_tst { @Before public void init() {fxt.Clear();} private Xoh_tidy_mgr_fxt fxt = new Xoh_tidy_mgr_fxt(); @@ -79,14 +79,14 @@ class Xoh_tidy_mgr_fxt { public void Test_wrap(String val, String expd) { bfr.Add_str(val); Xoh_tidy_mgr.Tidy_wrap(bfr); - Tfds.Eq(expd, bfr.Xto_str_and_clear()); + Tfds.Eq(expd, bfr.To_str_and_clear()); } public void Test_unwrap(String val, boolean expd_pass, String expd) { bfr.Add_str(val); boolean actl_pass = Xoh_tidy_mgr.Tidy_unwrap(bfr); if (actl_pass != expd_pass) Tfds.Fail("expd={0} actl={1}", expd_pass, actl_pass); else if (expd_pass) { - Tfds.Eq(expd, bfr.Xto_str_and_clear()); + Tfds.Eq(expd, bfr.To_str_and_clear()); } } } diff --git a/400_xowa/src/gplx/xowa/html/tidy/Xoh_tidy_wkr.java b/400_xowa/src/gplx/xowa/htmls/tidy/Xoh_tidy_wkr.java similarity index 89% rename from 400_xowa/src/gplx/xowa/html/tidy/Xoh_tidy_wkr.java rename to 400_xowa/src/gplx/xowa/htmls/tidy/Xoh_tidy_wkr.java index 2f1e22d4b..1d00c0d51 100644 --- a/400_xowa/src/gplx/xowa/html/tidy/Xoh_tidy_wkr.java +++ b/400_xowa/src/gplx/xowa/htmls/tidy/Xoh_tidy_wkr.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.html.tidy; import gplx.*; import gplx.xowa.*; import gplx.xowa.html.*; +package gplx.xowa.htmls.tidy; import gplx.*; import gplx.xowa.*; import gplx.xowa.htmls.*; public interface Xoh_tidy_wkr { byte Tid(); void Exec_tidy(Xoae_page page, Bry_bfr bfr); diff --git a/400_xowa/src/gplx/xowa/html/tidy/Xoh_tidy_wkr_.java b/400_xowa/src/gplx/xowa/htmls/tidy/Xoh_tidy_wkr_.java similarity index 93% rename from 400_xowa/src/gplx/xowa/html/tidy/Xoh_tidy_wkr_.java rename to 400_xowa/src/gplx/xowa/htmls/tidy/Xoh_tidy_wkr_.java index ceab71437..c76c3d1ce 100644 --- a/400_xowa/src/gplx/xowa/html/tidy/Xoh_tidy_wkr_.java +++ b/400_xowa/src/gplx/xowa/htmls/tidy/Xoh_tidy_wkr_.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.html.tidy; import gplx.*; import gplx.xowa.*; import gplx.xowa.html.*; +package gplx.xowa.htmls.tidy; import gplx.*; import gplx.xowa.*; import gplx.xowa.htmls.*; public class Xoh_tidy_wkr_ { public static final byte Tid_null = 0, Tid_tidy = 1, Tid_jtidy = 2; public static final String Key_null = "null", Key_tidy = "tidy", Key_jtidy = "jtidy"; diff --git a/400_xowa/src/gplx/xowa/html/tidy/Xoh_tidy_wkr_jtidy.java b/400_xowa/src/gplx/xowa/htmls/tidy/Xoh_tidy_wkr_jtidy.java similarity index 94% rename from 400_xowa/src/gplx/xowa/html/tidy/Xoh_tidy_wkr_jtidy.java rename to 400_xowa/src/gplx/xowa/htmls/tidy/Xoh_tidy_wkr_jtidy.java index 1bf297a3d..519197a39 100644 --- a/400_xowa/src/gplx/xowa/html/tidy/Xoh_tidy_wkr_jtidy.java +++ b/400_xowa/src/gplx/xowa/htmls/tidy/Xoh_tidy_wkr_jtidy.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.html.tidy; import gplx.*; import gplx.xowa.*; import gplx.xowa.html.*; +package gplx.xowa.htmls.tidy; import gplx.*; import gplx.xowa.*; import gplx.xowa.htmls.*; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; @@ -57,7 +57,7 @@ class Xoh_tidy_wkr_jtidy implements Xoh_tidy_wkr { if (tidy == null) tidy_init(); // lazy create to skip tests // int bfr_len = bfr.Len(); // long bgn = Env_.TickCount(); - byte[] orig = bfr.Xto_bry_and_clear(); + byte[] orig = bfr.To_bry_and_clear(); ByteArrayInputStream rdr = new ByteArrayInputStream(orig); try { tidy.parse(rdr, wtr); diff --git a/400_xowa/src/gplx/xowa/html/tidy/Xoh_tidy_wkr_jtidy_tst.java b/400_xowa/src/gplx/xowa/htmls/tidy/Xoh_tidy_wkr_jtidy_tst.java similarity index 94% rename from 400_xowa/src/gplx/xowa/html/tidy/Xoh_tidy_wkr_jtidy_tst.java rename to 400_xowa/src/gplx/xowa/htmls/tidy/Xoh_tidy_wkr_jtidy_tst.java index 95f1d8078..e1ca7f7dd 100644 --- a/400_xowa/src/gplx/xowa/html/tidy/Xoh_tidy_wkr_jtidy_tst.java +++ b/400_xowa/src/gplx/xowa/htmls/tidy/Xoh_tidy_wkr_jtidy_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.html.tidy; import gplx.*; import gplx.xowa.*; import gplx.xowa.html.*; +package gplx.xowa.htmls.tidy; import gplx.*; import gplx.xowa.*; import gplx.xowa.htmls.*; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import org.w3c.tidy.Tidy; diff --git a/400_xowa/src/gplx/xowa/html/tidy/Xoh_tidy_wkr_tidy.java b/400_xowa/src/gplx/xowa/htmls/tidy/Xoh_tidy_wkr_tidy.java similarity index 89% rename from 400_xowa/src/gplx/xowa/html/tidy/Xoh_tidy_wkr_tidy.java rename to 400_xowa/src/gplx/xowa/htmls/tidy/Xoh_tidy_wkr_tidy.java index dab9d73ad..6cb8797b6 100644 --- a/400_xowa/src/gplx/xowa/html/tidy/Xoh_tidy_wkr_tidy.java +++ b/400_xowa/src/gplx/xowa/htmls/tidy/Xoh_tidy_wkr_tidy.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.html.tidy; import gplx.*; import gplx.xowa.*; import gplx.xowa.html.*; +package gplx.xowa.htmls.tidy; import gplx.*; import gplx.xowa.*; import gplx.xowa.htmls.*; public class Xoh_tidy_wkr_tidy extends ProcessAdp implements Xoh_tidy_wkr { private Xoae_app app; private Io_url tidy_source, tidy_target; public byte Tid() {return Xoh_tidy_wkr_.Tid_tidy;} public void Init_by_app(Xoae_app app) { @@ -29,11 +29,11 @@ public class Xoh_tidy_wkr_tidy extends ProcessAdp implements Xoh_tidy_wkr { pri public void Exec_tidy(Xoae_page page, Bry_bfr bfr) { int bfr_len = bfr.Len(); long bgn = Env_.TickCount(); - Io_mgr.I.SaveFilBfr(tidy_source, bfr); // saves bfr to source; clears bfr + Io_mgr.Instance.SaveFilBfr(tidy_source, bfr); // saves bfr to source; clears bfr this.Run(tidy_source.Raw(), tidy_target.Raw()); // converts source to target - Io_mgr.I.LoadFilBryByBfr(tidy_target, bfr); // loads bfr by target + Io_mgr.Instance.LoadFilBryByBfr(tidy_target, bfr); // loads bfr by target if (bfr.Len_eq_0()) // something went wrong; load from source - Io_mgr.I.LoadFilBryByBfr(tidy_source, bfr); // loads bfr by target + Io_mgr.Instance.LoadFilBryByBfr(tidy_source, bfr); // loads bfr by target app.Usr_dlg().Log_many("", "", "tidy exec; elapsed=~{0} len=~{1}", Env_.TickCount_elapsed_in_frac(bgn), bfr_len); } public static final String Args_fmt = String_.Concat // see https://meta.wikimedia.org/wiki/Data_dumps; missing numeric-entities:yes; enclose-text: yes diff --git a/400_xowa/src/gplx/xowa/html/tocs/Xow_hdr_mgr.java b/400_xowa/src/gplx/xowa/htmls/tocs/Xow_hdr_mgr.java similarity index 92% rename from 400_xowa/src/gplx/xowa/html/tocs/Xow_hdr_mgr.java rename to 400_xowa/src/gplx/xowa/htmls/tocs/Xow_hdr_mgr.java index 858b18508..a98ada73c 100644 --- a/400_xowa/src/gplx/xowa/html/tocs/Xow_hdr_mgr.java +++ b/400_xowa/src/gplx/xowa/htmls/tocs/Xow_hdr_mgr.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.html.tocs; import gplx.*; import gplx.xowa.*; import gplx.xowa.html.*; +package gplx.xowa.htmls.tocs; import gplx.*; import gplx.xowa.*; import gplx.xowa.htmls.*; import gplx.core.primitives.*; import gplx.langs.htmls.encoders.*; -import gplx.xowa.nss.*; +import gplx.xowa.wikis.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; @@ -65,19 +65,19 @@ public class Xow_hdr_mgr { Id_bld_recurse(raw_bfr, src, hdr); Url_encoder encoder = encoder_mgr.Id(); encoder.Encode(enc_bfr, raw_bfr.Bfr(), 0, raw_bfr.Len()); - byte[] hdrs_id = enc_bfr.Xto_bry(); + byte[] hdrs_id = enc_bfr.To_bry(); Object o = hdrs_hash.Get_by(hdrs_ref.Val_(hdrs_id)); if (o != null) { Xop_hdr_tkn hdr_0 = (Xop_hdr_tkn)o; enc_bfr.Add_byte(Byte_ascii.Underline).Add_int_variable(hdr_0.Hdr_html_dupe_idx_next()); - hdrs_id = enc_bfr.Xto_bry_and_clear(); + hdrs_id = enc_bfr.To_bry_and_clear(); } else { hdrs_bfr.Clear(); hdrs_hash.Add(Bry_obj_ref.new_(hdrs_id), hdr); } hdr.Hdr_html_id_(hdrs_id); - hdr.Hdr_toc_text_(gplx.xowa.html.tocs.Xow_toc_mgr.Toc_text(ctx, page, src, hdr)); + hdr.Hdr_toc_text_(gplx.xowa.htmls.tocs.Xow_toc_mgr.Toc_text(ctx, page, src, hdr)); raw_bfr.Mkr_rls(); enc_bfr.Mkr_rls(); } private void Id_bld_recurse(Bry_bfr raw_bfr, byte[] src, Xop_tkn_itm tkn) { diff --git a/400_xowa/src/gplx/xowa/html/tocs/Xow_toc_mgr.java b/400_xowa/src/gplx/xowa/htmls/tocs/Xow_toc_mgr.java similarity index 88% rename from 400_xowa/src/gplx/xowa/html/tocs/Xow_toc_mgr.java rename to 400_xowa/src/gplx/xowa/htmls/tocs/Xow_toc_mgr.java index e3be844c0..31c87be78 100644 --- a/400_xowa/src/gplx/xowa/html/tocs/Xow_toc_mgr.java +++ b/400_xowa/src/gplx/xowa/htmls/tocs/Xow_toc_mgr.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.html.tocs; import gplx.*; import gplx.xowa.*; import gplx.xowa.html.*; -import gplx.xowa.langs.*; -import gplx.xowa.nss.*; +package gplx.xowa.htmls.tocs; import gplx.*; import gplx.xowa.*; import gplx.xowa.htmls.*; +import gplx.xowa.langs.*; import gplx.xowa.langs.msgs.*; +import gplx.xowa.wikis.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 @@ -31,7 +31,7 @@ public class Xow_toc_mgr implements Bry_fmtr_arg { for (int i = 0; i < Toc_levels; i++) path_ary[i].Lvl_idx_(0); } - public void XferAry(Bry_bfr trg, int idx) { + public void Fmt__do(Bry_bfr bfr) { int path_idx = 0, toc_idx = 0, lvl_idx = 1, eq_prv = 0; path_bfr.Clear(); Xow_hdr_mgr hdr_mgr = page.Hdr_mgr(); @@ -46,7 +46,7 @@ public class Xow_toc_mgr implements Bry_fmtr_arg { } if (path_idx >= Toc_levels) return; // HACK:invalid

    a

    sequence causes invalid toc level generation; for now, exit; WHEN:removing dangling
    logic; DATE:2014-06-08 path_ary[path_idx].Lvl_idx_(lvl_idx).Eq_len_((byte)eq_cur); // store cur value in path ary; EX: path_ary[1] = 2 - trg.Add_byte_repeat(Byte_ascii.Space, path_idx * 2).Add(Bry_list_bgn); //
      + bfr.Add_byte_repeat(Byte_ascii.Space, path_idx * 2).Add(Bry_list_bgn); //
        ++path_idx; lvl_idx = 1; eq_prv = eq_cur; @@ -64,40 +64,40 @@ public class Xow_toc_mgr implements Bry_fmtr_arg { } } if (path_new == path_idx) { - trg.Add_byte_repeat(Byte_ascii.Space, path_idx * 2).Add(Bry_item_end); // add "" + bfr.Add_byte_repeat(Byte_ascii.Space, path_idx * 2).Add(Bry_item_end); // add "" ++lvl_idx; } else { for (int j = path_idx; j > path_new + 1; j--) { - trg.Add_byte_repeat(Byte_ascii.Space, path_idx * 2).Add(Bry_item_end); // + bfr.Add_byte_repeat(Byte_ascii.Space, path_idx * 2).Add(Bry_item_end); // --path_idx; if (path_idx == -1) path_idx = 0; - trg.Add_byte_repeat(Byte_ascii.Space, path_idx * 2).Add(Bry_list_end); //
      + bfr.Add_byte_repeat(Byte_ascii.Space, path_idx * 2).Add(Bry_list_end); //
    lvl_idx = path_ary[path_idx].Lvl_idx(); path_bfr.Del_by(Int_.DigitCount(lvl_idx) + 1); // + 1 for dot } ++lvl_idx; - trg.Add_byte_repeat(Byte_ascii.Space, path_idx * 2).Add(Bry_item_end); //
  • + bfr.Add_byte_repeat(Byte_ascii.Space, path_idx * 2).Add(Bry_item_end); //
  • } eq_prv = eq_cur; break; case CompareAble_.Same: // keep slot the same - trg.Add_byte_repeat(Byte_ascii.Space, path_idx * 2).Add(Bry_item_end); // add "
  • " + bfr.Add_byte_repeat(Byte_ascii.Space, path_idx * 2).Add(Bry_item_end); // add "" ++lvl_idx; break; } byte[] text = hdr.Hdr_toc_text(); int lvl_idx_digits = Int_.DigitCount(lvl_idx); path_bfr.Add_int_fixed(lvl_idx, lvl_idx_digits); // add current level - trg.Add_byte_repeat(Byte_ascii.Space, (path_idx - 1) * 2); // indent - bfmtr_line.Bld_bfr_many(trg, path_idx, ++toc_idx, hdr.Hdr_html_id(), path_bfr, text); + bfr.Add_byte_repeat(Byte_ascii.Space, (path_idx - 1) * 2); // indent + bfmtr_line.Bld_bfr_many(bfr, path_idx, ++toc_idx, hdr.Hdr_html_id(), path_bfr, text); path_bfr.Del_by(lvl_idx_digits); } for (int i = path_idx - 1; i > -1; i--) { - trg.Add_byte_repeat(Byte_ascii.Space, (i + 1) * 2); - trg.Add(Bry_item_end); - trg.Add_byte_repeat(Byte_ascii.Space, i * 2); - trg.Add(Bry_list_end); + bfr.Add_byte_repeat(Byte_ascii.Space, (i + 1) * 2); + bfr.Add(Bry_item_end); + bfr.Add_byte_repeat(Byte_ascii.Space, i * 2); + bfr.Add(Bry_list_end); } } public static byte[] Toc_text(Xop_ctx ctx, Xoae_page page, byte[] src, Xop_tkn_itm hdr) { @@ -108,9 +108,9 @@ public class Xow_toc_mgr implements Bry_fmtr_arg { Xoh_html_wtr html_wtr = wiki.Html_mgr().Html_wtr(); html_wtr.Init_by_page(ctx, hctx, src, page); Toc_text_recurse(ctx, bfr, src, html_wtr, hctx, hdr, 0); bfr.Mkr_rls(); - return bfr.Xto_bry_and_clear(); + return bfr.To_bry_and_clear(); } catch (Exception e) { - Gfo_usr_dlg_.I.Warn_many("", "", "failed to write toc: url=~{0} err=~{1}", page.Url().To_str(), Err_.Message_gplx_full(e)); + Gfo_usr_dlg_.Instance.Warn_many("", "", "failed to write toc: url=~{0} err=~{1}", page.Url().To_str(), Err_.Message_gplx_full(e)); return Bry_.Empty; } } diff --git a/400_xowa/src/gplx/xowa/html/tocs/Xow_toc_mgr_tst.java b/400_xowa/src/gplx/xowa/htmls/tocs/Xow_toc_mgr_tst.java similarity index 96% rename from 400_xowa/src/gplx/xowa/html/tocs/Xow_toc_mgr_tst.java rename to 400_xowa/src/gplx/xowa/htmls/tocs/Xow_toc_mgr_tst.java index 95f0ff353..d4934e16d 100644 --- a/400_xowa/src/gplx/xowa/html/tocs/Xow_toc_mgr_tst.java +++ b/400_xowa/src/gplx/xowa/htmls/tocs/Xow_toc_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.html.tocs; import gplx.*; import gplx.xowa.*; import gplx.xowa.html.*; +package gplx.xowa.htmls.tocs; import gplx.*; import gplx.xowa.*; import gplx.xowa.htmls.*; import org.junit.*; import gplx.xowa.parsers.*; public class Xow_toc_mgr_tst { private Xow_toc_mgr_fxt fxt = new Xow_toc_mgr_fxt(); @@ -516,7 +516,7 @@ class Xow_toc_mgr_fxt { Xop_root_tkn root = fxt.Ctx().Tkn_mkr().Root(raw_bry); fxt.Parser().Parse_page_all_clear(root, fxt.Ctx(), fxt.Ctx().Tkn_mkr(), raw_bry); toc_mgr.Html(fxt.Page(), Xoh_wtr_ctx.Basic, raw_bry, tmp); - Tfds.Eq_ary(String_.SplitLines_nl(expd), String_.SplitLines_nl(tmp.Xto_str_and_clear()), raw); + Tfds.Eq_ary(String_.SplitLines_nl(expd), String_.SplitLines_nl(tmp.To_str_and_clear()), raw); } public void Test_html_all(String raw, String expd) { fxt.Wtr_cfg().Toc__show_(Bool_.Y); diff --git a/400_xowa/src/gplx/xowa/html/utils/Xoh_js_cleaner.java b/400_xowa/src/gplx/xowa/htmls/utils/Xoh_js_cleaner.java similarity index 94% rename from 400_xowa/src/gplx/xowa/html/utils/Xoh_js_cleaner.java rename to 400_xowa/src/gplx/xowa/htmls/utils/Xoh_js_cleaner.java index abb656122..e5d7f3dfa 100644 --- a/400_xowa/src/gplx/xowa/html/utils/Xoh_js_cleaner.java +++ b/400_xowa/src/gplx/xowa/htmls/utils/Xoh_js_cleaner.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.html.utils; import gplx.*; import gplx.xowa.*; import gplx.xowa.html.*; +package gplx.xowa.htmls.utils; import gplx.*; import gplx.xowa.*; import gplx.xowa.htmls.*; import gplx.core.btries.*; public class Xoh_js_cleaner { private Xoae_app app; private boolean ctor = true; @@ -67,7 +67,7 @@ public class Xoh_js_cleaner { } } } finally {if (bfr != null) bfr.Mkr_rls();} - return dirty ? bfr.Xto_bry_and_clear() : null; + return dirty ? bfr.To_bry_and_clear() : null; } private int Get_pos_eq(byte[] src, int pos, int end, int frag_len) { if ( pos > 0 // bounds check diff --git a/400_xowa/src/gplx/xowa/html/utils/Xoh_js_cleaner_tst.java b/400_xowa/src/gplx/xowa/htmls/utils/Xoh_js_cleaner_tst.java similarity index 94% rename from 400_xowa/src/gplx/xowa/html/utils/Xoh_js_cleaner_tst.java rename to 400_xowa/src/gplx/xowa/htmls/utils/Xoh_js_cleaner_tst.java index 006429dce..259a7f927 100644 --- a/400_xowa/src/gplx/xowa/html/utils/Xoh_js_cleaner_tst.java +++ b/400_xowa/src/gplx/xowa/htmls/utils/Xoh_js_cleaner_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.html.utils; import gplx.*; import gplx.xowa.*; import gplx.xowa.html.*; +package gplx.xowa.htmls.utils; import gplx.*; import gplx.xowa.*; import gplx.xowa.htmls.*; import org.junit.*; public class Xoh_js_cleaner_tst { @Before public void init() {fxt.Init();} private Xoh_js_cleaner_fxt fxt = new Xoh_js_cleaner_fxt(); diff --git a/400_xowa/src/gplx/xowa/html/wtrs/Xoh_anchor_kv_bldr.java b/400_xowa/src/gplx/xowa/htmls/wtrs/Xoh_anchor_kv_bldr.java similarity index 91% rename from 400_xowa/src/gplx/xowa/html/wtrs/Xoh_anchor_kv_bldr.java rename to 400_xowa/src/gplx/xowa/htmls/wtrs/Xoh_anchor_kv_bldr.java index 87ecd45b9..276c668f6 100644 --- a/400_xowa/src/gplx/xowa/html/wtrs/Xoh_anchor_kv_bldr.java +++ b/400_xowa/src/gplx/xowa/htmls/wtrs/Xoh_anchor_kv_bldr.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.html.wtrs; import gplx.*; import gplx.xowa.*; import gplx.xowa.html.*; +package gplx.xowa.htmls.wtrs; import gplx.*; import gplx.xowa.*; import gplx.xowa.htmls.*; import gplx.langs.htmls.*; public class Xoh_anchor_kv_bldr { private byte[] base_url; private boolean has_qarg; @@ -42,7 +42,7 @@ public class Xoh_anchor_kv_bldr { return this; } public byte[] Bld_to_bry() { - byte[] rv = tmp_bfr.Xto_bry_and_clear(); + byte[] rv = tmp_bfr.To_bry_and_clear(); tmp_bfr.Add(base_url); return rv; } diff --git a/400_xowa/src/gplx/xowa/html/wtrs/Xoh_img_path.java b/400_xowa/src/gplx/xowa/htmls/wtrs/Xoh_img_path.java similarity index 91% rename from 400_xowa/src/gplx/xowa/html/wtrs/Xoh_img_path.java rename to 400_xowa/src/gplx/xowa/htmls/wtrs/Xoh_img_path.java index 25c3effb6..1661b4e26 100644 --- a/400_xowa/src/gplx/xowa/html/wtrs/Xoh_img_path.java +++ b/400_xowa/src/gplx/xowa/htmls/wtrs/Xoh_img_path.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.html.wtrs; import gplx.*; import gplx.xowa.*; import gplx.xowa.html.*; +package gplx.xowa.htmls.wtrs; import gplx.*; import gplx.xowa.*; import gplx.xowa.htmls.*; public class Xoh_img_path { public static final byte[] Img_cancel = Bry_.new_a7("app.general/cancel.png") // 32,32 diff --git a/400_xowa/src/gplx/xowa/html/wtrs/Xoh_lnki_bldr.java b/400_xowa/src/gplx/xowa/htmls/wtrs/Xoh_lnki_bldr.java similarity index 91% rename from 400_xowa/src/gplx/xowa/html/wtrs/Xoh_lnki_bldr.java rename to 400_xowa/src/gplx/xowa/htmls/wtrs/Xoh_lnki_bldr.java index ba1a4c2dc..2e9c94805 100644 --- a/400_xowa/src/gplx/xowa/html/wtrs/Xoh_lnki_bldr.java +++ b/400_xowa/src/gplx/xowa/htmls/wtrs/Xoh_lnki_bldr.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.html.wtrs; import gplx.*; import gplx.xowa.*; import gplx.xowa.html.*; -import gplx.langs.htmls.*; import gplx.xowa.html.hrefs.*; +package gplx.xowa.htmls.wtrs; import gplx.*; import gplx.xowa.*; import gplx.xowa.htmls.*; +import gplx.langs.htmls.*; import gplx.xowa.htmls.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); @@ -36,7 +36,7 @@ public class Xoh_lnki_bldr { public Xoh_lnki_bldr Href_(Xow_wiki wiki, byte[] bry) {return Href_(wiki.Domain_bry(), wiki.Ttl_parse(bry));} public Xoh_lnki_bldr Href_(byte[] domain_bry, Xoa_ttl ttl) { href_wtr.Build_to_bfr(tmp_bfr, app, domain_bry, ttl, Bool_.Y); - this.href = tmp_bfr.Xto_bry_and_clear(); + this.href = tmp_bfr.To_bry_and_clear(); return this; } public Xoh_lnki_bldr Title_(byte[] title) { @@ -57,7 +57,7 @@ public class Xoh_lnki_bldr { } public byte[] Bld_to_bry() { Bld(tmp_bfr); - byte[] rv = tmp_bfr.Xto_bry_and_clear(); + byte[] rv = tmp_bfr.To_bry_and_clear(); this.Clear(); return rv; } diff --git a/400_xowa/src/gplx/xowa/html/wtrs/Xoh_lnki_wtr_utl.java b/400_xowa/src/gplx/xowa/htmls/wtrs/Xoh_lnki_wtr_utl.java similarity index 87% rename from 400_xowa/src/gplx/xowa/html/wtrs/Xoh_lnki_wtr_utl.java rename to 400_xowa/src/gplx/xowa/htmls/wtrs/Xoh_lnki_wtr_utl.java index 1946083f2..e3b3fa776 100644 --- a/400_xowa/src/gplx/xowa/html/wtrs/Xoh_lnki_wtr_utl.java +++ b/400_xowa/src/gplx/xowa/htmls/wtrs/Xoh_lnki_wtr_utl.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.html.wtrs; import gplx.*; import gplx.xowa.*; import gplx.xowa.html.*; -import gplx.langs.htmls.*; import gplx.xowa.html.hrefs.*; +package gplx.xowa.htmls.wtrs; import gplx.*; import gplx.xowa.*; import gplx.xowa.htmls.*; +import gplx.langs.htmls.*; import gplx.xowa.htmls.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) { @@ -26,7 +26,7 @@ public class Xoh_lnki_wtr_utl { public byte[] Bld_href(byte[] page) {return Bld_href(wiki.Domain_bry(), wiki.Ttl_parse(page));} public byte[] Bld_href(byte[] domain_bry, Xoa_ttl ttl) { href_wtr.Build_to_bfr(tmp_bfr, app, domain_bry, ttl, Bool_.Y); - return tmp_bfr.Xto_bry_and_clear(); + return tmp_bfr.To_bry_and_clear(); } public byte[] Bld_title(byte[] text) { 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 ed9448f79..092b23929 100644 --- a/400_xowa/src/gplx/xowa/langs/Xoa_lang_mgr.java +++ b/400_xowa/src/gplx/xowa/langs/Xoa_lang_mgr.java @@ -16,104 +16,34 @@ 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.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(); - public Xoa_lang_mgr(Xoae_app app) { - this.fsys_mgr = app.Fsys_mgr(); this.msg_log = app.Msg_log(); - mw_converter = new Xobc_utl_make_lang(this, fsys_mgr, msg_log); - lang_en = Lang_en_make(this); this.Add(lang_en); +import gplx.xowa.langs.bldrs.*; +public class Xoa_lang_mgr implements GfoInvkAble { + private final Ordered_hash hash = Ordered_hash_.New_bry(); + private final Xobc_utl_make_lang mw_converter; + public Xoa_lang_mgr(Xoa_app app) { + this.mw_converter = new Xobc_utl_make_lang(this, app.Fsys_mgr(), app.Tid_is_edit() ? ((Xoae_app)app).Msg_log() : null); + this.lang_en = Xol_lang_itm_.Lang_en_make(this); this.Add(lang_en); } - public void Clear() {hash.Clear();} - public int Len() {return hash.Count();} - public void Add(Xol_lang itm) {hash.Add(itm.Key_bry(), itm);} - public Xol_lang Get_at(int i) {return (Xol_lang)hash.Get_at(i);} - public Xol_lang Get_by_key(byte[] key) {return (Xol_lang)hash.Get_by(key);} - public Xol_lang Get_by_key_or_load(byte[] key) {return Get_by_key_or_new(key).Init_by_load_assert();} - public Xol_lang Get_by_key_or_new(byte[] key) { - Xol_lang rv = Get_by_key(key); + public Xol_lang_itm Lang_en() {return lang_en;} private final Xol_lang_itm lang_en; + public void Clear() {hash.Clear();} + public int Len() {return hash.Count();} + public void Add(Xol_lang_itm itm) {hash.Add(itm.Key_bry(), itm);} + public Xol_lang_itm Get_at(int i) {return (Xol_lang_itm)hash.Get_at(i);} + public Xol_lang_itm Get_by(byte[] key) {return (Xol_lang_itm)hash.Get_by(key);} + public Xol_lang_itm Get_by_or_load(byte[] key) {return Get_by_or_new(key).Init_by_load_assert();} + public Xol_lang_itm Get_by_or_new(byte[] key) { + Xol_lang_itm rv = Get_by(key); if (rv == null) { - rv = new Xol_lang(this, key); + rv = new Xol_lang_itm(this, key); this.Add(rv); } return rv; } - public Hash_adp_bry Fallback_regy() {return fallback_regy;} - public Xol_lang Lang_en() {return lang_en;} - public Xobc_utl_make_lang Mw_converter() {return mw_converter;} private Xobc_utl_make_lang mw_converter; - public Cfg_nde_root Groups() {return groups;} Cfg_nde_root groups = new Cfg_nde_root().Root_(new Xoac_lang_grp(Bry_.Empty), Xoac_lang_grp.Make_grp, Bry_.Ary_empty); - public byte[] Default_lang() {return default_lang;} private byte[] default_lang = Xol_lang_.Key_en; - private void Load_lang(byte[] bry) {this.Get_by_key_or_new(bry).Init_by_load();} - public void Local_set_bulk(byte[] src) { // NOTE: setting local lang names/grps on app level; may need to move to user level or wiki level (for groups) later - int len = src.length; - int pos = 0, fld_bgn = 0, fld_idx = 0; - byte[] code = Bry_.Empty, name = Bry_.Empty; - Xol_csv_parser csv_parser = Xol_csv_parser._; - while (true) { - boolean last = pos == len; - byte b = last ? Byte_ascii.Nl : src[pos]; - switch (b) { - case Byte_ascii.Pipe: - switch (fld_idx) { - case 0: code = csv_parser.Load(src, fld_bgn, pos); break; - case 1: name = csv_parser.Load(src, fld_bgn, pos); break; - default: throw Err_.new_unhandled(fld_idx); - } - fld_bgn = pos + 1; - ++fld_idx; - break; - case Byte_ascii.Nl: - byte[] grp = csv_parser.Load(src, fld_bgn, pos); - Xol_lang_itm itm = Xol_lang_itm_.Get_by_key(code); - itm.Localized_name_(name, grp); - fld_bgn = pos + 1; - fld_idx = 0; - break; - } - if (last) break; - ++pos; - } - } - public void Bld_xowa() { - Xol_mw_lang_parser lang_parser = new Xol_mw_lang_parser(msg_log); - lang_parser.Bld_all(this, fsys_mgr); - } - public Ordered_hash Xto_hash(byte[] raw) { - 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; - for (int i = 0; i < len; i++) { - byte[] key = keys[i]; - Cfg_nde_obj lang_grp = lang_root.Grps_get(key); - if (lang_grp == null) { - Xol_lang_itm itm = Xol_lang_itm_.Get_by_key(key); - if (itm == null) throw Err_.new_wo_type("unknown lang group or key", "key", String_.new_u8(key)); - langs.Add(key, Xoac_lang_grp.Regy_get_or_new(key)); - } - else - Cfg_nde_obj_.Fill_recurse(langs, lang_grp); - } - return langs; - } public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { - if (ctx.Match(k, Invk_get)) return Get_by_key_or_new(m.ReadBry("key")); - else if (ctx.Match(k, Invk_groups)) return groups; - else if (ctx.Match(k, Invk_local_set_bulk)) Local_set_bulk(m.ReadBry("v")); - else if (ctx.Match(k, Invk_load_lang)) Load_lang(m.ReadBry("v")); - else if (ctx.Match(k, Invk_mediawiki_converter))return mw_converter; + if (ctx.Match(k, Invk_get)) return Get_by_or_new(m.ReadBry("key")); + else if (ctx.Match(k, Invk_mediawiki_converter)) return mw_converter; else return GfoInvkAble_.Rv_unhandled; - return this; - } - private static final String Invk_get = "get", Invk_local_set_bulk = "local_set_bulk", Invk_load_lang = "load_lang", Invk_groups = "groups", Invk_mediawiki_converter = "mediawiki_converter"; + } private static final String Invk_get = "get", Invk_mediawiki_converter = "mediawiki_converter"; public static final byte[] Fallback_false = Bry_.new_a7("false"); - public static Xol_lang Lang_en_make(Xoa_lang_mgr lang_mgr) { - Xol_lang rv = new Xol_lang(lang_mgr, Xol_lang_.Key_en); - Xol_lang_.Lang_init(rv); - rv.Evt_lang_changed(); - return rv; - } } diff --git a/400_xowa/src/gplx/xowa/langs/Xol_lang.java b/400_xowa/src/gplx/xowa/langs/Xol_lang.java deleted file mode 100644 index d91989e42..000000000 --- a/400_xowa/src/gplx/xowa/langs/Xol_lang.java +++ /dev/null @@ -1,165 +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; 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.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); - this.msg_mgr = new Xol_msg_mgr(this, true); - this.specials_mgr = new Xol_specials_mgr(this); - 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.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 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 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; - else if (ctx.Match(k, Invk_keywords)) return kwd_mgr; - 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 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(); - else if (ctx.Match(k, Invk_gui_font_)) gui_font.Name_(m.ReadStr("name")).Size_(m.ReadFloatOr("size", 8)); - else if (ctx.Match(k, Invk_fallback_load)) Exec_fallback_load(m.ReadBry("v")); - else if (ctx.Match(k, Invk_numbers)) return num_mgr; - else if (ctx.Match(k, Invk_link_trail)) return lnki_trail_mgr; - else if (ctx.Match(k, Invk_x_axis_end)) return String_.new_u8(X_axis_end()); - else if (ctx.Match(k, Invk_this)) return this; - else if (ctx.Match(k, Xoae_app.Invk_app)) return Xoa_app_.Gfs_mgr().Root_invk(); - else return GfoInvkAble_.Rv_unhandled; - return this; - } - public static final String Invk_ns_names = "ns_names", Invk_ns_aliases = "ns_aliases" - , Invk_keywords = "keywords", Invk_messages = "messages", Invk_specials = "specials", Invk_casings = "casings", Invk_converts = "converts", Invk_variants = "variants" - , Invk_numbers = "numbers" - , Invk_dir_rtl_ = "dir_rtl_", Invk_gui_font_ = "gui_font_" - , Invk_fallback_load = "fallback_load", Invk_this = "this", Invk_dir_str = "dir_str", Invk_link_trail = "link_trail" - , Invk_x_axis_end = "x_axis_end" - ; - public Xol_lang Init_by_load_assert() {if (!loaded) Init_by_load(); return this;} - public boolean Init_by_load() { - if (this.loaded) return false; - lang_mgr.Fallback_regy().Clear(); - this.loaded = true; - boolean lang_is_en = lang_id == Xol_lang_itm_.Id_en; - if (!lang_is_en) Xol_lang_.Lang_init(this); - msg_mgr.Itm_by_key_or_new(Bry_.new_a7("Lang")).Atrs_set(key_bry, false, false); // set "Lang" keyword; EX: for "fr", "{{int:Lang}}" -> "fr" - Load_lang(key_bry); - ns_aliases.Ary_add_(Xow_ns_.Canonical); // NOTE: always add English canonical as aliases to all languages - this.Evt_lang_changed(); - return true; - } - private void Exec_fallback_load(byte[] fallback_lang) { - Fallback_bry_(fallback_lang); - if (lang_mgr.Fallback_regy().Has(fallback_lang)) return; // fallback_lang loaded; avoid recursive loop; EX: zh with fallback of zh-hans which has fallback of zh - if (Bry_.Eq(fallback_lang, Xoa_lang_mgr.Fallback_false)) return; // fallback_lang is "none" exit - lang_mgr.Fallback_regy().Add(fallback_lang, fallback_lang); - Load_lang(fallback_lang); - lang_mgr.Fallback_regy().Del(fallback_lang); - } - 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_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") - , X_axis_end_right = Bry_.new_a7("right"), X_axis_end_left = Bry_.new_a7("left") - ; - public static final int Tid_lower = 1, Tid_upper = 2; - private static byte[][] Fallbacy_bry_ary__bld(byte[] v) { - 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++) { - byte[] itm = rv[i]; - if (Bry_.Eq(itm, Xol_lang_.Key_en)) { - en_needed = false; - break; - } - } - if (en_needed) { - int new_len = rv_len + 1; - byte[][] new_ary = new byte[new_len][]; - for (int i = 0; i < rv_len; i++) - new_ary[i] = rv[i]; - new_ary[rv_len] = Xol_lang_.Key_en; - rv = new_ary; - } - return rv; - } - private static final byte[][] Fallback_bry_ary__en = new byte[][] {Xol_lang_.Key_en}; -} diff --git a/400_xowa/src/gplx/xowa/langs/Xol_lang_.java b/400_xowa/src/gplx/xowa/langs/Xol_lang_.java deleted file mode 100644 index 69d320019..000000000 --- a/400_xowa/src/gplx/xowa/langs/Xol_lang_.java +++ /dev/null @@ -1,260 +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; 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");} - public static final byte Char_tid_ltr_l = 0, Char_tid_ltr_u = 1, Char_tid_num = 2, Char_tid_ws = 3, Char_tid_sym = 4, Char_tid_misc = 5; - public static byte Char_tid(byte b) { - switch (b) { - case Byte_ascii.Ltr_A: case Byte_ascii.Ltr_B: case Byte_ascii.Ltr_C: case Byte_ascii.Ltr_D: case Byte_ascii.Ltr_E: - case Byte_ascii.Ltr_F: case Byte_ascii.Ltr_G: case Byte_ascii.Ltr_H: case Byte_ascii.Ltr_I: case Byte_ascii.Ltr_J: - case Byte_ascii.Ltr_K: case Byte_ascii.Ltr_L: case Byte_ascii.Ltr_M: case Byte_ascii.Ltr_N: case Byte_ascii.Ltr_O: - case Byte_ascii.Ltr_P: case Byte_ascii.Ltr_Q: case Byte_ascii.Ltr_R: case Byte_ascii.Ltr_S: case Byte_ascii.Ltr_T: - case Byte_ascii.Ltr_U: case Byte_ascii.Ltr_V: case Byte_ascii.Ltr_W: case Byte_ascii.Ltr_X: case Byte_ascii.Ltr_Y: case Byte_ascii.Ltr_Z: - return Char_tid_ltr_u; - case Byte_ascii.Ltr_a: case Byte_ascii.Ltr_b: case Byte_ascii.Ltr_c: case Byte_ascii.Ltr_d: case Byte_ascii.Ltr_e: - case Byte_ascii.Ltr_f: case Byte_ascii.Ltr_g: case Byte_ascii.Ltr_h: case Byte_ascii.Ltr_i: case Byte_ascii.Ltr_j: - case Byte_ascii.Ltr_k: case Byte_ascii.Ltr_l: case Byte_ascii.Ltr_m: case Byte_ascii.Ltr_n: case Byte_ascii.Ltr_o: - case Byte_ascii.Ltr_p: case Byte_ascii.Ltr_q: case Byte_ascii.Ltr_r: case Byte_ascii.Ltr_s: case Byte_ascii.Ltr_t: - case Byte_ascii.Ltr_u: case Byte_ascii.Ltr_v: case Byte_ascii.Ltr_w: case Byte_ascii.Ltr_x: case Byte_ascii.Ltr_y: case Byte_ascii.Ltr_z: - return Char_tid_ltr_l; - 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: - return Char_tid_num; - case Byte_ascii.Space: case Byte_ascii.Nl: case Byte_ascii.Tab: case Byte_ascii.Cr: - return Char_tid_ws; - default: - return Char_tid_misc; - } - } - public static final byte[] Key_en = Bry_.new_a7("en"); - public static void Lang_init(Xol_lang lang) { - lang.Num_mgr().Separators_mgr().Set(Xol_num_mgr.Separators_key__grp, Xol_num_mgr.Separators_key__grp); - lang.Num_mgr().Separators_mgr().Set(Xol_num_mgr.Separators_key__dec, Xol_num_mgr.Separators_key__dec); - lang.Lnki_trail_mgr().Add_range(Byte_ascii.Ltr_a, Byte_ascii.Ltr_z);// REF.MW:MessagesEn.php|$linkTrail = '/^([a-z]+)(.*)$/sD'; -Xol_kwd_mgr kwd_mgr = lang.Kwd_mgr(); -kwd_mgr.New(Bool_.N, Xol_kwd_grp_.Id_redirect, "#REDIRECT"); -kwd_mgr.New(Bool_.N, Xol_kwd_grp_.Id_notoc, "__NOTOC__"); -kwd_mgr.New(Bool_.N, Xol_kwd_grp_.Id_nogallery, "__NOGALLERY__"); -kwd_mgr.New(Bool_.N, Xol_kwd_grp_.Id_forcetoc, "__FORCETOC__"); -kwd_mgr.New(Bool_.N, Xol_kwd_grp_.Id_toc, "__TOC__"); -kwd_mgr.New(Bool_.N, Xol_kwd_grp_.Id_noeditsection, "__NOEDITSECTION__"); -kwd_mgr.New(Bool_.N, Xol_kwd_grp_.Id_noheader, "__NOHEADER__"); -kwd_mgr.New(Bool_.Y, Xol_kwd_grp_.Id_utc_month_int_len2, "CURRENTMONTH", "CURRENTMONTH2"); -kwd_mgr.New(Bool_.Y, Xol_kwd_grp_.Id_utc_month_int, "CURRENTMONTH1"); -kwd_mgr.New(Bool_.Y, Xol_kwd_grp_.Id_utc_month_name, "CURRENTMONTHNAME"); -kwd_mgr.New(Bool_.Y, Xol_kwd_grp_.Id_utc_month_gen, "CURRENTMONTHNAMEGEN"); -kwd_mgr.New(Bool_.Y, Xol_kwd_grp_.Id_utc_month_abrv, "CURRENTMONTHABBREV"); -kwd_mgr.New(Bool_.Y, Xol_kwd_grp_.Id_utc_day_int, "CURRENTDAY"); -kwd_mgr.New(Bool_.Y, Xol_kwd_grp_.Id_utc_day_int_len2, "CURRENTDAY2"); -kwd_mgr.New(Bool_.Y, Xol_kwd_grp_.Id_utc_day_name, "CURRENTDAYNAME"); -kwd_mgr.New(Bool_.Y, Xol_kwd_grp_.Id_utc_year, "CURRENTYEAR"); -kwd_mgr.New(Bool_.Y, Xol_kwd_grp_.Id_utc_time, "CURRENTTIME"); -kwd_mgr.New(Bool_.Y, Xol_kwd_grp_.Id_utc_hour, "CURRENTHOUR"); -kwd_mgr.New(Bool_.Y, Xol_kwd_grp_.Id_lcl_month_int_len2, "LOCALMONTH", "LOCALMONTH2"); -kwd_mgr.New(Bool_.Y, Xol_kwd_grp_.Id_lcl_month_int, "LOCALMONTH1"); -kwd_mgr.New(Bool_.Y, Xol_kwd_grp_.Id_lcl_month_name, "LOCALMONTHNAME"); -kwd_mgr.New(Bool_.Y, Xol_kwd_grp_.Id_lcl_month_gen, "LOCALMONTHNAMEGEN"); -kwd_mgr.New(Bool_.Y, Xol_kwd_grp_.Id_lcl_month_abrv, "LOCALMONTHABBREV"); -kwd_mgr.New(Bool_.Y, Xol_kwd_grp_.Id_lcl_day_int, "LOCALDAY"); -kwd_mgr.New(Bool_.Y, Xol_kwd_grp_.Id_lcl_day_int_len2, "LOCALDAY2"); -kwd_mgr.New(Bool_.Y, Xol_kwd_grp_.Id_lcl_day_name, "LOCALDAYNAME"); -kwd_mgr.New(Bool_.Y, Xol_kwd_grp_.Id_lcl_year, "LOCALYEAR"); -kwd_mgr.New(Bool_.Y, Xol_kwd_grp_.Id_lcl_time, "LOCALTIME"); -kwd_mgr.New(Bool_.Y, Xol_kwd_grp_.Id_lcl_hour, "LOCALHOUR"); -kwd_mgr.New(Bool_.Y, Xol_kwd_grp_.Id_num_pages, "NUMBEROFPAGES"); -kwd_mgr.New(Bool_.Y, Xol_kwd_grp_.Id_num_articles, "NUMBEROFARTICLES"); -kwd_mgr.New(Bool_.Y, Xol_kwd_grp_.Id_num_files, "NUMBEROFFILES"); -kwd_mgr.New(Bool_.Y, Xol_kwd_grp_.Id_num_users, "NUMBEROFUSERS"); -kwd_mgr.New(Bool_.Y, Xol_kwd_grp_.Id_num_users_active, "NUMBEROFACTIVEUSERS"); -kwd_mgr.New(Bool_.Y, Xol_kwd_grp_.Id_num_edits, "NUMBEROFEDITS"); -kwd_mgr.New(Bool_.Y, Xol_kwd_grp_.Id_num_views, "NUMBEROFVIEWS"); -kwd_mgr.New(Bool_.Y, Xol_kwd_grp_.Id_ttl_page_txt, "PAGENAME"); -kwd_mgr.New(Bool_.Y, Xol_kwd_grp_.Id_ttl_page_url, "PAGENAMEE"); -kwd_mgr.New(Bool_.Y, Xol_kwd_grp_.Id_ns_txt, "NAME"+"SPACE"); -kwd_mgr.New(Bool_.Y, Xol_kwd_grp_.Id_ns_url, "NAME"+"SPACEE"); -kwd_mgr.New(Bool_.Y, Xol_kwd_grp_.Id_ns_talk_txt, "TALKSPACE"); -kwd_mgr.New(Bool_.Y, Xol_kwd_grp_.Id_ns_talk_url, "TALKSPACEE"); -kwd_mgr.New(Bool_.Y, Xol_kwd_grp_.Id_ns_subj_txt, "SUBJECTSPACE", "ARTICLESPACE"); -kwd_mgr.New(Bool_.Y, Xol_kwd_grp_.Id_ns_subj_url, "SUBJECTSPACEE", "ARTICLESPACEE"); -kwd_mgr.New(Bool_.Y, Xol_kwd_grp_.Id_ttl_full_txt, "FULLPAGENAME"); -kwd_mgr.New(Bool_.Y, Xol_kwd_grp_.Id_ttl_full_url, "FULLPAGENAMEE"); -kwd_mgr.New(Bool_.Y, Xol_kwd_grp_.Id_ttl_leaf_txt, "SUBPAGENAME"); -kwd_mgr.New(Bool_.Y, Xol_kwd_grp_.Id_ttl_leaf_url, "SUBPAGENAMEE"); -kwd_mgr.New(Bool_.Y, Xol_kwd_grp_.Id_ttl_base_txt, "BASEPAGENAME"); -kwd_mgr.New(Bool_.Y, Xol_kwd_grp_.Id_ttl_base_url, "BASEPAGENAMEE"); -kwd_mgr.New(Bool_.Y, Xol_kwd_grp_.Id_ttl_talk_txt, "TALKPAGENAME"); -kwd_mgr.New(Bool_.Y, Xol_kwd_grp_.Id_ttl_talk_url, "TALKPAGENAMEE"); -kwd_mgr.New(Bool_.Y, Xol_kwd_grp_.Id_ttl_subj_txt, "SUBJECTPAGENAME", "ARTICLEPAGENAME"); -kwd_mgr.New(Bool_.Y, Xol_kwd_grp_.Id_ttl_subj_url, "SUBJECTPAGENAMEE", "ARTICLEPAGENAMEE"); -kwd_mgr.New(Bool_.N, Xol_kwd_grp_.Id_msg, "msg"); -kwd_mgr.New(Bool_.N, Xol_kwd_grp_.Id_subst, "subst:"); -kwd_mgr.New(Bool_.N, Xol_kwd_grp_.Id_safesubst, "safesubst:"); -kwd_mgr.New(Bool_.N, Xol_kwd_grp_.Id_msgnw, "msgnw"); -kwd_mgr.New(Bool_.Y, Xol_kwd_grp_.Id_img_thumbnail, "thumbnail", "thumb"); -kwd_mgr.New(Bool_.Y, Xol_kwd_grp_.Id_img_manualthumb, "thumbnail", "thumb"); -kwd_mgr.New(Bool_.Y, Xol_kwd_grp_.Id_img_framed, "framed", "enframed", "frame"); -kwd_mgr.New(Bool_.Y, Xol_kwd_grp_.Id_img_frameless, "frameless"); -kwd_mgr.New(Bool_.Y, Xol_kwd_grp_.Id_img_upright, "upright"); -kwd_mgr.New(Bool_.Y, Xol_kwd_grp_.Id_img_upright_factor, "upright_factor"); -kwd_mgr.New(Bool_.Y, Xol_kwd_grp_.Id_img_border, "border"); -kwd_mgr.New(Bool_.Y, Xol_kwd_grp_.Id_img_align, "align"); -kwd_mgr.New(Bool_.Y, Xol_kwd_grp_.Id_img_valign, "valign"); -kwd_mgr.New(Bool_.Y, Xol_kwd_grp_.Id_img_alt, "alt"); -kwd_mgr.New(Bool_.Y, Xol_kwd_grp_.Id_img_class, "class"); -kwd_mgr.New(Bool_.Y, Xol_kwd_grp_.Id_img_caption, "caption"); -kwd_mgr.New(Bool_.Y, Xol_kwd_grp_.Id_img_link_url, "link-url"); -kwd_mgr.New(Bool_.Y, Xol_kwd_grp_.Id_img_link_title, "link-title"); -kwd_mgr.New(Bool_.Y, Xol_kwd_grp_.Id_img_link_target, "link-target"); -kwd_mgr.New(Bool_.Y, Xol_kwd_grp_.Id_img_link_none, "no-link"); -kwd_mgr.New(Bool_.Y, Xol_kwd_grp_.Id_img_width, "px"); -kwd_mgr.New(Bool_.Y, Xol_kwd_grp_.Id_img_page, "page"); -kwd_mgr.New(Bool_.Y, Xol_kwd_grp_.Id_img_none, "none"); -kwd_mgr.New(Bool_.Y, Xol_kwd_grp_.Id_img_right, "right"); -kwd_mgr.New(Bool_.Y, Xol_kwd_grp_.Id_img_center, "center", "centre"); -kwd_mgr.New(Bool_.Y, Xol_kwd_grp_.Id_img_left, "left"); -kwd_mgr.New(Bool_.Y, Xol_kwd_grp_.Id_img_baseline, "baseline"); -kwd_mgr.New(Bool_.Y, Xol_kwd_grp_.Id_img_sub, "sub"); -kwd_mgr.New(Bool_.Y, Xol_kwd_grp_.Id_img_super, "super", "sup"); -kwd_mgr.New(Bool_.Y, Xol_kwd_grp_.Id_img_top, "top"); -kwd_mgr.New(Bool_.Y, Xol_kwd_grp_.Id_img_text_top, "text-top"); -kwd_mgr.New(Bool_.Y, Xol_kwd_grp_.Id_img_middle, "middle"); -kwd_mgr.New(Bool_.Y, Xol_kwd_grp_.Id_img_bottom, "bottom"); -kwd_mgr.New(Bool_.Y, Xol_kwd_grp_.Id_img_text_bottom, "text-bottom"); -kwd_mgr.New(Bool_.Y, Xol_kwd_grp_.Id_img_link, "link"); -kwd_mgr.New(Bool_.N, Xol_kwd_grp_.Id_i18n_int, "int"); -kwd_mgr.New(Bool_.Y, Xol_kwd_grp_.Id_site_sitename, "SITENAME"); -kwd_mgr.New(Bool_.N, Xol_kwd_grp_.Id_url_ns, "ns"); -kwd_mgr.New(Bool_.N, Xol_kwd_grp_.Id_url_nse, "nse"); -kwd_mgr.New(Bool_.N, Xol_kwd_grp_.Id_url_localurl, "localurl"); -kwd_mgr.New(Bool_.N, Xol_kwd_grp_.Id_url_localurle, "localurle"); -kwd_mgr.New(Bool_.Y, Xol_kwd_grp_.Id_site_articlepath, "ARTICLEPATH"); -kwd_mgr.New(Bool_.Y, Xol_kwd_grp_.Id_site_server, "SERVER"); -kwd_mgr.New(Bool_.Y, Xol_kwd_grp_.Id_site_servername, "SERVERNAME"); -kwd_mgr.New(Bool_.Y, Xol_kwd_grp_.Id_site_scriptpath, "SCRIPTPATH"); -kwd_mgr.New(Bool_.Y, Xol_kwd_grp_.Id_site_stylepath, "STYLEPATH"); -kwd_mgr.New(Bool_.N, Xol_kwd_grp_.Id_i18n_grammar, "grammar"); -kwd_mgr.New(Bool_.N, Xol_kwd_grp_.Id_i18n_gender, "gender"); -kwd_mgr.New(Bool_.N, Xol_kwd_grp_.Id_notitleconvert, "__NOTITLECONVERT__", "__NOTC__"); -kwd_mgr.New(Bool_.N, Xol_kwd_grp_.Id_nocontentconvert, "__NOCONTENTCONVERT__", "__NOCC__"); -kwd_mgr.New(Bool_.Y, Xol_kwd_grp_.Id_utc_week, "CURRENTWEEK"); -kwd_mgr.New(Bool_.Y, Xol_kwd_grp_.Id_utc_dow, "CURRENTDOW"); -kwd_mgr.New(Bool_.Y, Xol_kwd_grp_.Id_lcl_week, "LOCALWEEK"); -kwd_mgr.New(Bool_.Y, Xol_kwd_grp_.Id_lcl_dow, "LOCALDOW"); -kwd_mgr.New(Bool_.Y, Xol_kwd_grp_.Id_rev_id, "REVISIONID"); -kwd_mgr.New(Bool_.Y, Xol_kwd_grp_.Id_rev_day_int, "REVISIONDAY"); -kwd_mgr.New(Bool_.Y, Xol_kwd_grp_.Id_rev_day_int_len2, "REVISIONDAY2"); -kwd_mgr.New(Bool_.Y, Xol_kwd_grp_.Id_rev_month_int_len2, "REVISIONMONTH"); -kwd_mgr.New(Bool_.Y, Xol_kwd_grp_.Id_rev_month_int, "REVISIONMONTH1"); -kwd_mgr.New(Bool_.Y, Xol_kwd_grp_.Id_rev_year, "REVISIONYEAR"); -kwd_mgr.New(Bool_.Y, Xol_kwd_grp_.Id_rev_timestamp, "REVISIONTIMESTAMP"); -kwd_mgr.New(Bool_.Y, Xol_kwd_grp_.Id_rev_user, "REVISIONUSER"); -kwd_mgr.New(Bool_.N, Xol_kwd_grp_.Id_i18n_plural, "plural"); -kwd_mgr.New(Bool_.N, Xol_kwd_grp_.Id_url_fullurl, "fullurl"); -kwd_mgr.New(Bool_.N, Xol_kwd_grp_.Id_url_fullurle, "fullurle"); -kwd_mgr.New(Bool_.N, Xol_kwd_grp_.Id_str_lcfirst, "lcfirst"); -kwd_mgr.New(Bool_.N, Xol_kwd_grp_.Id_str_ucfirst, "ucfirst"); -kwd_mgr.New(Bool_.N, Xol_kwd_grp_.Id_str_lc, "lc"); -kwd_mgr.New(Bool_.N, Xol_kwd_grp_.Id_str_uc, "uc"); -kwd_mgr.New(Bool_.N, Xol_kwd_grp_.Id_raw, "raw"); -kwd_mgr.New(Bool_.Y, Xol_kwd_grp_.Id_page_displaytitle, "DISPLAYTITLE"); -kwd_mgr.New(Bool_.Y, Xol_kwd_grp_.Id_str_rawsuffix, "R"); -kwd_mgr.New(Bool_.Y, Xol_kwd_grp_.Id_newsectionlink, "__NEWSECTIONLINK__"); -kwd_mgr.New(Bool_.Y, Xol_kwd_grp_.Id_nonewsectionlink, "__NONEWSECTIONLINK__"); -kwd_mgr.New(Bool_.Y, Xol_kwd_grp_.Id_site_currentversion, "CURRENTVERSION"); -kwd_mgr.New(Bool_.N, Xol_kwd_grp_.Id_url_urlencode, "urlencode"); -kwd_mgr.New(Bool_.N, Xol_kwd_grp_.Id_url_anchorencode, "anchorencode"); -kwd_mgr.New(Bool_.Y, Xol_kwd_grp_.Id_utc_timestamp, "CURRENTTIMESTAMP"); -kwd_mgr.New(Bool_.Y, Xol_kwd_grp_.Id_lcl_timestamp, "LOCALTIMESTAMP"); -kwd_mgr.New(Bool_.Y, Xol_kwd_grp_.Id_site_directionmark, "DIRECTIONMARK", "DIRMARK"); -kwd_mgr.New(Bool_.N, Xol_kwd_grp_.Id_i18n_language, "#language"); -kwd_mgr.New(Bool_.Y, Xol_kwd_grp_.Id_site_contentlanguage, "CONTENTLANGUAGE", "CONTENTLANG"); -kwd_mgr.New(Bool_.Y, Xol_kwd_grp_.Id_site_pagesinnamespace, "PAGESINNAMESPACE", "PAGESINNS"); -kwd_mgr.New(Bool_.Y, Xol_kwd_grp_.Id_num_admins, "NUMBEROFADMINS"); -kwd_mgr.New(Bool_.N, Xol_kwd_grp_.Id_str_formatnum, "formatnum"); -kwd_mgr.New(Bool_.N, Xol_kwd_grp_.Id_str_padleft, "padleft"); -kwd_mgr.New(Bool_.N, Xol_kwd_grp_.Id_str_padright, "padright"); -kwd_mgr.New(Bool_.N, Xol_kwd_grp_.Id_misc_special, "#special"); -kwd_mgr.New(Bool_.Y, Xol_kwd_grp_.Id_page_defaultsort, "DEFAULTSORT", "DEFAULTSORTKEY", "DEFAULTCATEGORYSORT"); -kwd_mgr.New(Bool_.N, Xol_kwd_grp_.Id_url_filepath, "filepath"); -kwd_mgr.New(Bool_.N, Xol_kwd_grp_.Id_misc_tag, "#tag"); -kwd_mgr.New(Bool_.Y, Xol_kwd_grp_.Id_hiddencat, "__HIDDENCAT__"); -kwd_mgr.New(Bool_.Y, Xol_kwd_grp_.Id_site_pagesincategory, "PAGESINCATEGORY", "PAGESINCAT"); -kwd_mgr.New(Bool_.Y, Xol_kwd_grp_.Id_rev_pagesize, "PAGESIZE"); -kwd_mgr.New(Bool_.Y, Xol_kwd_grp_.Id_index, "__INDEX__"); -kwd_mgr.New(Bool_.Y, Xol_kwd_grp_.Id_noindex, "__NOINDEX__"); -kwd_mgr.New(Bool_.Y, Xol_kwd_grp_.Id_site_numberingroup, "NUMBERINGROUP", "NUMINGROUP"); -kwd_mgr.New(Bool_.Y, Xol_kwd_grp_.Id_staticredirect, "__STATICREDIRECT__"); -kwd_mgr.New(Bool_.Y, Xol_kwd_grp_.Id_rev_protectionlevel, "PROTECTIONLEVEL"); -kwd_mgr.New(Bool_.N, Xol_kwd_grp_.Id_str_formatdate, "#formatdate", "#dateformat"); -kwd_mgr.New(Bool_.N, Xol_kwd_grp_.Id_url_path, "path"); -kwd_mgr.New(Bool_.N, Xol_kwd_grp_.Id_url_wiki, "wiki"); -kwd_mgr.New(Bool_.N, Xol_kwd_grp_.Id_url_query, "query"); -kwd_mgr.New(Bool_.N, Xol_kwd_grp_.Id_xtn_expr, "#expr"); -kwd_mgr.New(Bool_.N, Xol_kwd_grp_.Id_xtn_if, "#if"); -kwd_mgr.New(Bool_.N, Xol_kwd_grp_.Id_xtn_ifeq, "#ifeq"); -kwd_mgr.New(Bool_.N, Xol_kwd_grp_.Id_xtn_ifexpr, "#ifexpr"); -kwd_mgr.New(Bool_.N, Xol_kwd_grp_.Id_xtn_iferror, "#iferror"); -kwd_mgr.New(Bool_.N, Xol_kwd_grp_.Id_xtn_switch, "#switch"); -kwd_mgr.New(Bool_.N, Xol_kwd_grp_.Id_xtn_default, "#default"); -kwd_mgr.New(Bool_.N, Xol_kwd_grp_.Id_xtn_ifexist, "#ifexist"); -kwd_mgr.New(Bool_.N, Xol_kwd_grp_.Id_xtn_time, "#time"); -kwd_mgr.New(Bool_.N, Xol_kwd_grp_.Id_xtn_timel, "#timel"); -kwd_mgr.New(Bool_.N, Xol_kwd_grp_.Id_xtn_rel2abs, "#rel2abs"); -kwd_mgr.New(Bool_.N, Xol_kwd_grp_.Id_xtn_titleparts, "#titleparts"); -kwd_mgr.New(Bool_.N, Xol_kwd_grp_.Id_xowa_dbg, "#xowa_dbg"); -kwd_mgr.New(Bool_.Y, Xol_kwd_grp_.Id_ogg_noplayer, "noplayer"); -kwd_mgr.New(Bool_.Y, Xol_kwd_grp_.Id_ogg_noicon, "noicon"); -kwd_mgr.New(Bool_.Y, Xol_kwd_grp_.Id_ogg_thumbtime, "thumbtime"); -kwd_mgr.New(Bool_.N, Xol_kwd_grp_.Id_xtn_geodata_coordinates, "#coordinates"); -kwd_mgr.New(Bool_.N, Xol_kwd_grp_.Id_url_canonicalurl, "canonicalurl"); -kwd_mgr.New(Bool_.N, Xol_kwd_grp_.Id_url_canonicalurle, "canonicalurle"); -kwd_mgr.New(Bool_.N, Xol_kwd_grp_.Id_lst, "#lst", "#section"); -kwd_mgr.New(Bool_.N, Xol_kwd_grp_.Id_lstx, "#lstx", "#section-x"); -kwd_mgr.New(Bool_.N, Xol_kwd_grp_.Id_invoke, "#invoke"); -kwd_mgr.New(Bool_.N, Xol_kwd_grp_.Id_property, "#property"); -kwd_mgr.New(Bool_.N, Xol_kwd_grp_.Id_noexternallanglinks, "noexternallanglinks"); -kwd_mgr.New(Bool_.N, Xol_kwd_grp_.Id_ns_num, "namespacenumber"); -kwd_mgr.New(Bool_.N, Xol_kwd_grp_.Id_page_id, "pageid"); -kwd_mgr.New(Bool_.N, Xol_kwd_grp_.Id_disambig, "__DISAMBIG__"); -kwd_mgr.New(Bool_.N, Xol_kwd_grp_.Id_nocommafysuffix, "NOSEP"); -kwd_mgr.New(Bool_.N, Xol_kwd_grp_.Id_xowa, "#xowa"); -kwd_mgr.New(Bool_.N, Xol_kwd_grp_.Id_mapSources_deg2dd, "#deg2dd"); -kwd_mgr.New(Bool_.N, Xol_kwd_grp_.Id_mapSources_dd2dms, "#dd2dms"); -kwd_mgr.New(Bool_.N, Xol_kwd_grp_.Id_mapSources_geoLink, "#geolink"); -kwd_mgr.New(Bool_.N, Xol_kwd_grp_.Id_geoCrumbs_isin, "#isin"); -kwd_mgr.New(Bool_.N, Xol_kwd_grp_.Id_relatedArticles, "#related"); -kwd_mgr.New(Bool_.N, Xol_kwd_grp_.Id_insider, "#insider"); -kwd_mgr.New(Bool_.N, Xol_kwd_grp_.Id_massMessage_target, "#target"); -kwd_mgr.New(Bool_.N, Xol_kwd_grp_.Id_cascadingSources, "CASCADINGSOURCES"); -kwd_mgr.New(Bool_.N, Xol_kwd_grp_.Id_pendingChangeLevel, "PENDINGCHANGELEVEL"); -kwd_mgr.New(Bool_.N, Xol_kwd_grp_.Id_pagesUsingPendingChanges, "PAGESUSINGPENDINGCHANGES"); -kwd_mgr.New(Bool_.Y, Xol_kwd_grp_.Id_bang, "!"); -kwd_mgr.New(Bool_.N, Xol_kwd_grp_.Id_wbreponame, "wbreponame"); -kwd_mgr.New(Bool_.Y, Xol_kwd_grp_.Id_strx_len, "#len"); -kwd_mgr.New(Bool_.Y, Xol_kwd_grp_.Id_strx_pos, "#pos"); -kwd_mgr.New(Bool_.Y, Xol_kwd_grp_.Id_strx_rpos, "#rpos"); -kwd_mgr.New(Bool_.Y, Xol_kwd_grp_.Id_strx_sub, "#sub"); -kwd_mgr.New(Bool_.Y, Xol_kwd_grp_.Id_strx_count, "#count"); -kwd_mgr.New(Bool_.Y, Xol_kwd_grp_.Id_strx_replace, "#replace"); -kwd_mgr.New(Bool_.Y, Xol_kwd_grp_.Id_strx_explode, "#explode"); -kwd_mgr.New(Bool_.Y, Xol_kwd_grp_.Id_strx_urldecode, "#urldecode"); - } -} diff --git a/400_xowa/src/gplx/xowa/langs/Xol_lang_itm.java b/400_xowa/src/gplx/xowa/langs/Xol_lang_itm.java index 96657f444..2b6eeba44 100644 --- a/400_xowa/src/gplx/xowa/langs/Xol_lang_itm.java +++ b/400_xowa/src/gplx/xowa/langs/Xol_lang_itm.java @@ -16,13 +16,153 @@ 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.*; -public class Xol_lang_itm { - public Xol_lang_itm(int id, byte[] key, byte[] canonical_name) {this.id = id; this.key = key; this.canonical_name = canonical_name; this.localized_name = canonical_name;} - public int Id() {return id;} private final int id; // EX: 1 - public byte[] Key() {return key;} private final byte[] key; // EX: de - public byte[] Canonical_name() {return canonical_name;} private final byte[] canonical_name; // EX: Deutsch - public byte[] Localized_name() {return localized_name;} private byte[] localized_name; // EX: German if usr.lang == English - public void Localized_name_(byte[] v, byte[] localized_grp) {// NOTE: localized_grp preserved for historical reasons; should be removed; WHEN: refactor Xol_lang_itm_parser - if (Bry_.Len_gt_0(v)) this.localized_name = v; +import gplx.xowa.langs.cases.*; import gplx.xowa.langs.msgs.*; import gplx.xowa.langs.kwds.*; 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.langs.lnki_trails.*; import gplx.xowa.langs.funcs.*; import gplx.xowa.langs.specials.*; import gplx.xowa.langs.bldrs.*; +import gplx.xowa.apps.gfs.*; import gplx.xowa.apps.fsys.*; import gplx.core.intls.*; import gplx.xowa.wikis.nss.*; import gplx.xowa.xtns.lst.*; import gplx.xowa.wikis.caches.*; import gplx.xowa.parsers.lnkis.*; +import gplx.xowa.guis.langs.*; +public class Xol_lang_itm implements GfoInvkAble { + private boolean loaded = false; + public Xol_lang_itm(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_stub lang_itm = Xol_lang_stub_.Get_by_key_or_null(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.func_regy = new Xol_func_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); + this.msg_mgr = new Xol_msg_mgr(this, true); + this.specials_mgr = new Xol_specials_mgr(this); + 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.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_stub_.Id_en) fallback_bry_ary = Fallback_bry_ary__en; // NOTE: do not set fallback_ary for en to en, else recursive loop } + 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_itm 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_itm 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 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_regy Func_regy() {return func_regy;} private final Xol_func_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; + else if (ctx.Match(k, Invk_keywords)) return kwd_mgr; + 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 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(); + else if (ctx.Match(k, Invk_gui_font_)) gui_font.Name_(m.ReadStr("name")).Size_(m.ReadFloatOr("size", 8)); + else if (ctx.Match(k, Invk_fallback_load)) Exec_fallback_load(m.ReadBry("v")); + else if (ctx.Match(k, Invk_numbers)) return num_mgr; + else if (ctx.Match(k, Invk_link_trail)) return lnki_trail_mgr; + else if (ctx.Match(k, Invk_x_axis_end)) return String_.new_u8(X_axis_end()); + else if (ctx.Match(k, Invk_this)) return this; + else if (ctx.Match(k, Xoae_app.Invk_app)) return Xoa_app_.Gfs_mgr().Root_invk(); + else return GfoInvkAble_.Rv_unhandled; + return this; + } + public static final String Invk_ns_names = "ns_names", Invk_ns_aliases = "ns_aliases" + , Invk_keywords = "keywords", Invk_messages = "messages", Invk_specials = "specials", Invk_casings = "casings", Invk_converts = "converts", Invk_variants = "variants" + , Invk_numbers = "numbers" + , Invk_dir_rtl_ = "dir_rtl_", Invk_gui_font_ = "gui_font_" + , Invk_fallback_load = "fallback_load", Invk_this = "this", Invk_dir_str = "dir_str", Invk_link_trail = "link_trail" + , Invk_x_axis_end = "x_axis_end" + ; + + private static final Hash_adp_bry fallback_dupes_regy = Hash_adp_bry.cs(); // to prevent cyclical loops during loading + public Xol_lang_itm Init_by_load_assert() {if (!loaded) Init_by_load(); return this;} + public boolean Init_by_load() { + if (this.loaded) return false; + fallback_dupes_regy.Clear(); + this.loaded = true; + boolean lang_is_en = lang_id == Xol_lang_stub_.Id_en; + if (!lang_is_en) Xol_lang_itm_.Lang_init(this); + msg_mgr.Itm_by_key_or_new(Bry_.new_a7("Lang")).Atrs_set(key_bry, false, false); // set "Lang" keyword; EX: for "fr", "{{int:Lang}}" -> "fr" + Load_lang(key_bry); + ns_aliases.Ary_add_(Xow_ns_.Canonical); // NOTE: always add English canonical as aliases to all languages + this.Evt_lang_changed(); + return true; + } + private void Exec_fallback_load(byte[] fallback_lang) { + Fallback_bry_(fallback_lang); + if (fallback_dupes_regy.Has(fallback_lang)) return; // fallback_lang loaded; avoid recursive loop; EX: zh with fallback of zh-hans which has fallback of zh + if (Bry_.Eq(fallback_lang, Xoa_lang_mgr.Fallback_false)) return; // fallback_lang is "none" exit + fallback_dupes_regy.Add(fallback_lang, fallback_lang); + Load_lang(fallback_lang); + fallback_dupes_regy.Del(fallback_lang); + } + 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_itm_.xo_lang_fil_(app_fsys_mgr, String_.new_a7(v))); + 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") + , X_axis_end_right = Bry_.new_a7("right"), X_axis_end_left = Bry_.new_a7("left") + ; + public static final int Tid_lower = 1, Tid_upper = 2; + private static byte[][] Fallbacy_bry_ary__bld(byte[] v) { + 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++) { + byte[] itm = rv[i]; + if (Bry_.Eq(itm, Xol_lang_itm_.Key_en)) { + en_needed = false; + break; + } + } + if (en_needed) { + int new_len = rv_len + 1; + byte[][] new_ary = new byte[new_len][]; + for (int i = 0; i < rv_len; i++) + new_ary[i] = rv[i]; + new_ary[rv_len] = Xol_lang_itm_.Key_en; + rv = new_ary; + } + return rv; + } + private static final byte[][] Fallback_bry_ary__en = new byte[][] {Xol_lang_itm_.Key_en}; } diff --git a/400_xowa/src/gplx/xowa/langs/Xol_lang_itm_.java b/400_xowa/src/gplx/xowa/langs/Xol_lang_itm_.java index 38c9eaf7e..582e69dd0 100644 --- a/400_xowa/src/gplx/xowa/langs/Xol_lang_itm_.java +++ b/400_xowa/src/gplx/xowa/langs/Xol_lang_itm_.java @@ -16,933 +16,255 @@ 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.lists.*; +import gplx.core.intls.*; import gplx.xowa.xtns.cite.*; import gplx.xowa.xtns.gallery.*; +import gplx.xowa.langs.bldrs.*; import gplx.xowa.langs.numbers.*; import gplx.xowa.langs.kwds.*; +import gplx.xowa.apps.fsys.*; public class Xol_lang_itm_ { - public static final byte[] Key__unknown = Bry_.Empty; - public static final ComparerAble Comparer_key = new Xol_lang_itm_comparer(); - public static final int - Id__intl = -2 -, Id__unknown = -1 -, Id_en = 0 -, Id_aa = 1 -, Id_ab = 2 -, Id_ace = 3 -, Id_ady_cyrl = 4 -, Id_aeb = 5 -, Id_af = 6 -, Id_ak = 7 -, Id_akz = 8 -, Id_aln = 9 -, Id_als = 10 -, Id_am = 11 -, Id_an = 12 -, Id_ang = 13 -, Id_anp = 14 -, Id_ar = 15 -, Id_arc = 16 -, Id_arn = 17 -, Id_aro = 18 -, Id_arq = 19 -, Id_ary = 20 -, Id_arz = 21 -, Id_as = 22 -, Id_ase = 23 -, Id_ast = 24 -, Id_av = 25 -, Id_avk = 26 -, Id_awa = 27 -, Id_ay = 28 -, Id_az = 29 -, Id_azb = 30 -, Id_ba = 31 -, Id_ban = 32 -, Id_bar = 33 -, Id_bat_smg = 34 -, Id_bbc = 35 -, Id_bbc_latn = 36 -, Id_bcc = 37 -, Id_bcl = 38 -, Id_be = 39 -, Id_be_tarask = 40 -, Id_be_x_old = 41 -, Id_bew = 42 -, Id_bg = 43 -, Id_bgn = 44 -, Id_bh = 45 -, Id_bho = 46 -, Id_bi = 47 -, Id_bjn = 48 -, Id_bm = 49 -, Id_bn = 50 -, Id_bo = 51 -, Id_bpy = 52 -, Id_bqi = 53 -, Id_br = 54 -, Id_brh = 55 -, Id_bs = 56 -, Id_bto = 57 -, Id_bug = 58 -, Id_bxr = 59 -, Id_ca = 60 -, Id_cbk_zam = 61 -, Id_cdo = 62 -, Id_ce = 63 -, Id_ceb = 64 -, Id_ch = 65 -, Id_chm = 66 -, Id_cho = 67 -, Id_chr = 68 -, Id_chy = 69 -, Id_ckb = 70 -, Id_co = 71 -, Id_cps = 72 -, Id_cr = 73 -, Id_crh = 74 -, Id_crh_cyrl = 75 -, Id_crh_latn = 76 -, Id_cs = 77 -, Id_csb = 78 -, Id_cu = 79 -, Id_cv = 80 -, Id_cy = 81 -, Id_da = 82 -, Id_de = 83 -, Id_de_at = 84 -, Id_de_ch = 85 -, Id_de_formal = 86 -, Id_diq = 87 -, Id_dsb = 88 -, Id_dtp = 89 -, Id_dv = 90 -, Id_dz = 91 -, Id_ee = 92 -, Id_egl = 93 -, Id_el = 94 -, Id_eml = 95 -, Id_en_ca = 96 -, Id_en_gb = 97 -, Id_en_rtl = 98 -, Id_enrtl = 99 -, Id_eo = 100 -, Id_es = 101 -, Id_es_formal = 102 -, Id_esu = 103 -, Id_et = 104 -, Id_eu = 105 -, Id_ext = 106 -, Id_fa = 107 -, Id_ff = 108 -, Id_fi = 109 -, Id_fit = 110 -, Id_fiu_vro = 111 -, Id_fj = 112 -, Id_fo = 113 -, Id_fr = 114 -, Id_frc = 115 -, Id_frp = 116 -, Id_frr = 117 -, Id_fur = 118 -, Id_fy = 119 -, Id_ga = 120 -, Id_gag = 121 -, Id_gan = 122 -, Id_gan_hans = 123 -, Id_gan_hant = 124 -, Id_gd = 125 -, Id_gl = 126 -, Id_glk = 127 -, Id_gn = 128 -, Id_gom = 129 -, Id_gom_deva = 130 -, Id_gom_latn = 131 -, Id_got = 132 -, Id_grc = 133 -, Id_gsw = 134 -, Id_gu = 135 -, Id_guc = 136 -, Id_gv = 137 -, Id_ha = 138 -, Id_hak = 139 -, Id_haw = 140 -, Id_he = 141 -, Id_hi = 142 -, Id_hif = 143 -, Id_hif_latn = 144 -, Id_hil = 145 -, Id_ho = 146 -, Id_hr = 147 -, Id_hrx = 148 -, Id_hsb = 149 -, Id_hsn = 150 -, Id_ht = 151 -, Id_hu = 152 -, Id_hu_formal = 153 -, Id_hy = 154 -, Id_hz = 155 -, Id_ia = 156 -, Id_id = 157 -, Id_ie = 158 -, Id_ig = 159 -, Id_ii = 160 -, Id_ik = 161 -, Id_ike_cans = 162 -, Id_ike_latn = 163 -, Id_ilo = 164 -, Id_inh = 165 -, Id_io = 166 -, Id_is = 167 -, Id_it = 168 -, Id_iu = 169 -, Id_izh = 170 -, Id_ja = 171 -, Id_jam = 172 -, Id_jbo = 173 -, Id_jut = 174 -, Id_jv = 175 -, Id_ka = 176 -, Id_kaa = 177 -, Id_kab = 178 -, Id_kbd = 179 -, Id_kbd_cyrl = 180 -, Id_kg = 181 -, Id_khw = 182 -, Id_ki = 183 -, Id_kiu = 184 -, Id_kj = 185 -, Id_kk = 186 -, Id_kk_arab = 187 -, Id_kk_cn = 188 -, Id_kk_cyrl = 189 -, Id_kk_kz = 190 -, Id_kk_latn = 191 -, Id_kk_tr = 192 -, Id_kl = 193 -, Id_km = 194 -, Id_kn = 195 -, Id_ko = 196 -, Id_ko_kp = 197 -, Id_koi = 198 -, Id_kr = 199 -, Id_krc = 200 -, Id_kri = 201 -, Id_krj = 202 -, Id_krl = 203 -, Id_ks = 204 -, Id_ks_arab = 205 -, Id_ks_deva = 206 -, Id_ksh = 207 -, Id_ku = 208 -, Id_ku_arab = 209 -, Id_ku_latn = 210 -, Id_kv = 211 -, Id_kw = 212 -, Id_ky = 213 -, Id_la = 214 -, Id_lad = 215 -, Id_lb = 216 -, Id_lbe = 217 -, Id_lez = 218 -, Id_lfn = 219 -, Id_lg = 220 -, Id_li = 221 -, Id_lij = 222 -, Id_liv = 223 -, Id_lmo = 224 -, Id_ln = 225 -, Id_lo = 226 -, Id_loz = 227 -, Id_lrc = 228 -, Id_lt = 229 -, Id_ltg = 230 -, Id_lus = 231 -, Id_luz = 232 -, Id_lv = 233 -, Id_lzh = 234 -, Id_lzz = 235 -, Id_mai = 236 -, Id_map_bms = 237 -, Id_mdf = 238 -, Id_mg = 239 -, Id_mh = 240 -, Id_mhr = 241 -, Id_mi = 242 -, Id_mic = 243 -, Id_min = 244 -, Id_mk = 245 -, Id_ml = 246 -, Id_mn = 247 -, Id_mnc = 248 -, Id_mo = 249 -, Id_mr = 250 -, Id_mrj = 251 -, Id_ms = 252 -, Id_mt = 253 -, Id_mui = 254 -, Id_mus = 255 -, Id_mwl = 256 -, Id_mwv = 257 -, Id_my = 258 -, Id_myv = 259 -, Id_mzn = 260 -, Id_na = 261 -, Id_nah = 262 -, Id_nan = 263 -, Id_nap = 264 -, Id_nb = 265 -, Id_nds = 266 -, Id_nds_nl = 267 -, Id_ne = 268 -, Id_new = 269 -, Id_ng = 270 -, Id_niu = 271 -, Id_nl = 272 -, Id_nl_informal = 273 -, Id_nn = 274 -, Id_no = 275 -, Id_nov = 276 -, Id_nrm = 277 -, Id_nso = 278 -, Id_nv = 279 -, Id_ny = 280 -, Id_oc = 281 -, Id_om = 282 -, Id_or = 283 -, Id_os = 284 -, Id_pa = 285 -, Id_pag = 286 -, Id_pam = 287 -, Id_pap = 288 -, Id_pbb = 289 -, Id_pcd = 290 -, Id_pdc = 291 -, Id_pdt = 292 -, Id_pfl = 293 -, Id_pi = 294 -, Id_pih = 295 -, Id_pl = 296 -, Id_pms = 297 -, Id_pnb = 298 -, Id_pnt = 299 -, Id_ppl = 300 -, Id_prg = 301 -, Id_ps = 302 -, Id_pt = 303 -, Id_pt_br = 304 -, Id_qqq = 305 -, Id_qu = 306 -, Id_qug = 307 -, Id_rap = 308 -, Id_rgn = 309 -, Id_rif = 310 -, Id_rm = 311 -, Id_rmf = 312 -, Id_rmy = 313 -, Id_rn = 314 -, Id_ro = 315 -, Id_roa_rup = 316 -, Id_roa_tara = 317 -, Id_ru = 318 -, Id_rue = 319 -, Id_rup = 320 -, Id_ruq = 321 -, Id_ruq_cyrl = 322 -, Id_ruq_latn = 323 -, Id_rw = 324 -, Id_ryu = 325 -, Id_sa = 326 -, Id_sah = 327 -, Id_sat = 328 -, Id_saz = 329 -, Id_sc = 330 -, Id_scn = 331 -, Id_sco = 332 -, Id_sd = 333 -, Id_sdc = 334 -, Id_sdh = 335 -, Id_se = 336 -, Id_sei = 337 -, Id_ses = 338 -, Id_sg = 339 -, Id_sgs = 340 -, Id_sh = 341 -, Id_shi = 342 -, Id_shn = 343 -, Id_si = 344 -, Id_simple = 345 -, Id_sk = 346 -, Id_sl = 347 -, Id_sli = 348 -, Id_sly = 349 -, Id_sm = 350 -, Id_sma = 351 -, Id_sn = 352 -, Id_so = 353 -, Id_sq = 354 -, Id_sr = 355 -, Id_sr_ec = 356 -, Id_sr_el = 357 -, Id_srn = 358 -, Id_ss = 359 -, Id_st = 360 -, Id_stq = 361 -, Id_su = 362 -, Id_sv = 363 -, Id_sw = 364 -, Id_sxu = 365 -, Id_szl = 366 -, Id_ta = 367 -, Id_tcy = 368 -, Id_te = 369 -, Id_test = 370 -, Id_tet = 371 -, Id_tg = 372 -, Id_tg_cyrl = 373 -, Id_tg_latn = 374 -, Id_th = 375 -, Id_ti = 376 -, Id_tk = 377 -, Id_tl = 378 -, Id_tly = 379 -, Id_tn = 380 -, Id_to = 381 -, Id_tokipona = 382 -, Id_tp = 383 -, Id_tpi = 384 -, Id_tr = 385 -, Id_tru = 386 -, Id_ts = 387 -, Id_tt = 388 -, Id_tt_cyrl = 389 -, Id_tt_latn = 390 -, Id_ttt = 391 -, Id_tum = 392 -, Id_tw = 393 -, Id_ty = 394 -, Id_tyv = 395 -, Id_tzm = 396 -, Id_udm = 397 -, Id_ug = 398 -, Id_ug_arab = 399 -, Id_ug_latn = 400 -, Id_uk = 401 -, Id_ur = 402 -, Id_uz = 403 -, Id_ve = 404 -, Id_vec = 405 -, Id_vep = 406 -, Id_vi = 407 -, Id_vls = 408 -, Id_vmf = 409 -, Id_vo = 410 -, Id_vot = 411 -, Id_vro = 412 -, Id_wa = 413 -, Id_war = 414 -, Id_wo = 415 -, Id_wuu = 416 -, Id_xal = 417 -, Id_xh = 418 -, Id_xmf = 419 -, Id_yi = 420 -, Id_yo = 421 -, Id_yue = 422 -, Id_za = 423 -, Id_zea = 424 -, Id_zh = 425 -, Id_zh_classical = 426 -, Id_zh_cn = 427 -, Id_zh_hans = 428 -, Id_zh_hant = 429 -, Id_zh_hk = 430 -, Id_zh_min_nan = 431 -, Id_zh_mo = 432 -, Id_zh_my = 433 -, Id_zh_sg = 434 -, Id_zh_tw = 435 -, Id_zh_yue = 436 -, Id_zu = 437 - ; - public static final int Id__max = 438; - public static Hash_adp_bry Regy() { - if (regy == null) { -// NOTE: any parenthetical String below will have an "unseen" character of "\xE2\x80\xAA" at the begining and "\xE2\x80\xAC" at the end. They are responsible for parentheses-orientation in RTL langs. -regy = Hash_adp_bry.ci_a7(); // ASCII:lang_code; NOTE: must be ci; EX: {{#languages:FR}} -Regy_add(regy, Id_en, "en", "English"); -Regy_add(regy, Id_aa, "aa", "Qafár af"); -Regy_add(regy, Id_ab, "ab", "Аҧсуа"); -Regy_add(regy, Id_ace, "ace", "Acèh"); -Regy_add(regy, Id_ady_cyrl, "ady-cyrl", "West Circassian (Cyrillic)"); -Regy_add(regy, Id_aeb, "aeb", "زَوُن"); -Regy_add(regy, Id_af, "af", "Afrikaans"); -Regy_add(regy, Id_ak, "ak", "Akan"); -Regy_add(regy, Id_akz, "akz", "Alibamu"); -Regy_add(regy, Id_aln, "aln", "Gegë"); -Regy_add(regy, Id_als, "als", "Alemannisch"); -Regy_add(regy, Id_am, "am", "አማርኛ"); -Regy_add(regy, Id_an, "an", "Aragonés"); -Regy_add(regy, Id_ang, "ang", "Ænglisc"); -Regy_add(regy, Id_anp, "anp", "अङ्गिका"); -Regy_add(regy, Id_ar, "ar", "العربية"); -Regy_add(regy, Id_arc, "arc", "ܐܪܡܝܐ"); -Regy_add(regy, Id_arn, "arn", "Mapudungun"); -Regy_add(regy, Id_aro, "aro", "Araona"); -Regy_add(regy, Id_arq, "arq", "Algerian Arabic"); -Regy_add(regy, Id_ary, "ary", "Maġribi"); -Regy_add(regy, Id_arz, "arz", "مصرى"); -Regy_add(regy, Id_as, "as", "অসমীয়া"); -Regy_add(regy, Id_ase, "ase", "American Sign Language"); -Regy_add(regy, Id_ast, "ast", "Asturianu"); -Regy_add(regy, Id_av, "av", "Авар"); -Regy_add(regy, Id_avk, "avk", "Kotava"); -Regy_add(regy, Id_awa, "awa", "Awadhi"); -Regy_add(regy, Id_ay, "ay", "Aymar aru"); -Regy_add(regy, Id_az, "az", "Azərbaycanca"); -Regy_add(regy, Id_azb, "azb", "South Azerbaijani"); -Regy_add(regy, Id_ba, "ba", "Башҡортса"); -Regy_add(regy, Id_ban, "ban", "ᬩᬲᬩᬮᬶ"); -Regy_add(regy, Id_bar, "bar", "Boarisch"); -Regy_add(regy, Id_bat_smg, "bat-smg", "Žemaitėška"); -Regy_add(regy, Id_bbc, "bbc", "Batak Toba"); -Regy_add(regy, Id_bbc_latn, "bbc-latn", "Batak Toba (Latin)"); -Regy_add(regy, Id_bcc, "bcc", "بلوچی مکرانی"); -Regy_add(regy, Id_bcl, "bcl", "Bikol Central"); -Regy_add(regy, Id_be, "be", "Беларуская"); -Regy_add(regy, Id_be_tarask, "be-tarask", "‪Беларуская (тарашкевіца)‬"); -Regy_add(regy, Id_be_x_old, "be-x-old", "‪Беларуская (тарашкевіца)‬"); -Regy_add(regy, Id_bew, "bew", "Betawi"); -Regy_add(regy, Id_bg, "bg", "Български"); -Regy_add(regy, Id_bgn, "bgn", "Balochi"); -Regy_add(regy, Id_bh, "bh", "भोजपुरी"); -Regy_add(regy, Id_bho, "bho", "भोजपुरी"); -Regy_add(regy, Id_bi, "bi", "Bislama"); -Regy_add(regy, Id_bjn, "bjn", "Bahasa Banjar"); -Regy_add(regy, Id_bm, "bm", "Bamanankan"); -Regy_add(regy, Id_bn, "bn", "বাংলা"); -Regy_add(regy, Id_bo, "bo", "བོད་ཡིག"); -Regy_add(regy, Id_bpy, "bpy", "ইমার ঠার/বিষ্ণুপ্রিয়া মণিপুরী"); -Regy_add(regy, Id_bqi, "bqi", "بختياري"); -Regy_add(regy, Id_br, "br", "Brezhoneg"); -Regy_add(regy, Id_brh, "brh", "Bráhuí"); -Regy_add(regy, Id_bs, "bs", "Bosanski"); -Regy_add(regy, Id_bto, "bto", "Rinconada Bikol"); -Regy_add(regy, Id_bug, "bug", "ᨅᨔ ᨕᨘᨁᨗ"); -Regy_add(regy, Id_bxr, "bxr", "Буряад"); -Regy_add(regy, Id_ca, "ca", "Català"); -Regy_add(regy, Id_cbk_zam, "cbk-zam", "Chavacano de Zamboanga"); -Regy_add(regy, Id_cdo, "cdo", "Mìng-dĕ̤ng-ngṳ̄"); -Regy_add(regy, Id_ce, "ce", "Нохчийн"); -Regy_add(regy, Id_ceb, "ceb", "Cebuano"); -Regy_add(regy, Id_ch, "ch", "Chamoru"); -Regy_add(regy, Id_chm, "chm", "Mari"); -Regy_add(regy, Id_cho, "cho", "Choctaw"); -Regy_add(regy, Id_chr, "chr", "ᏣᎳᎩ"); -Regy_add(regy, Id_chy, "chy", "Tsetsêhestâhese"); -Regy_add(regy, Id_ckb, "ckb", "کوردی"); -Regy_add(regy, Id_co, "co", "Corsu"); -Regy_add(regy, Id_cps, "cps", "Capiceño"); -Regy_add(regy, Id_cr, "cr", "Nēhiyawēwin / ᓀᐦᐃᔭᐍᐏᐣ"); -Regy_add(regy, Id_crh, "crh", "Qırımtatarca"); -Regy_add(regy, Id_crh_cyrl, "crh-cyrl", "‪Къырымтатарджа (Кирилл)‬"); -Regy_add(regy, Id_crh_latn, "crh-latn", "‪Qırımtatarca (Latin)‬"); -Regy_add(regy, Id_cs, "cs", "Česky"); -Regy_add(regy, Id_csb, "csb", "Kaszëbsczi"); -Regy_add(regy, Id_cu, "cu", "Словѣ́ньскъ / ⰔⰎⰑⰂⰡⰐⰠⰔⰍⰟ"); -Regy_add(regy, Id_cv, "cv", "Чӑвашла"); -Regy_add(regy, Id_cy, "cy", "Cymraeg"); -Regy_add(regy, Id_da, "da", "Dansk"); -Regy_add(regy, Id_de, "de", "Deutsch"); -Regy_add(regy, Id_de_at, "de-at", "Österreichisches Deutsch"); -Regy_add(regy, Id_de_ch, "de-ch", "Schweizer Hochdeutsch"); -Regy_add(regy, Id_de_formal, "de-formal", "‪Deutsch (Sie-Form)‬"); -Regy_add(regy, Id_diq, "diq", "Zazaki"); -Regy_add(regy, Id_dsb, "dsb", "Dolnoserbski"); -Regy_add(regy, Id_dtp, "dtp", "Dusun Bundu-liwan"); -Regy_add(regy, Id_dv, "dv", "ދިވެހިބަސް"); -Regy_add(regy, Id_dz, "dz", "ཇོང་ཁ"); -Regy_add(regy, Id_ee, "ee", "Eʋegbe"); -Regy_add(regy, Id_egl, "egl", "Emiliàn"); -Regy_add(regy, Id_el, "el", "Ελληνικά"); -Regy_add(regy, Id_eml, "eml", "Emiliàn e rumagnòl"); -Regy_add(regy, Id_en_ca, "en-ca", "Canadian English"); -Regy_add(regy, Id_en_gb, "en-gb", "British English"); -Regy_add(regy, Id_en_rtl, "en-rtl", "English rtl"); -Regy_add(regy, Id_enrtl, "enrtl", "English (right to left)"); -Regy_add(regy, Id_eo, "eo", "Esperanto"); -Regy_add(regy, Id_es, "es", "Español"); -Regy_add(regy, Id_es_formal, "es-formal", "Spanish (formal)"); -Regy_add(regy, Id_esu, "esu", "Yuk'ip"); -Regy_add(regy, Id_et, "et", "Eesti"); -Regy_add(regy, Id_eu, "eu", "Euskara"); -Regy_add(regy, Id_ext, "ext", "Estremeñu"); -Regy_add(regy, Id_fa, "fa", "فارسی"); -Regy_add(regy, Id_ff, "ff", "Fulfulde"); -Regy_add(regy, Id_fi, "fi", "Suomi"); -Regy_add(regy, Id_fit, "fit", "meänkieli"); -Regy_add(regy, Id_fiu_vro, "fiu-vro", "Võro"); -Regy_add(regy, Id_fj, "fj", "Na Vosa Vakaviti"); -Regy_add(regy, Id_fo, "fo", "Føroyskt"); -Regy_add(regy, Id_fr, "fr", "Français"); -Regy_add(regy, Id_frc, "frc", "Français cadien"); -Regy_add(regy, Id_frp, "frp", "Arpetan"); -Regy_add(regy, Id_frr, "frr", "Nordfriisk"); -Regy_add(regy, Id_fur, "fur", "Furlan"); -Regy_add(regy, Id_fy, "fy", "Frysk"); -Regy_add(regy, Id_ga, "ga", "Gaeilge"); -Regy_add(regy, Id_gag, "gag", "Gagauz"); -Regy_add(regy, Id_gan, "gan", "贛語"); -Regy_add(regy, Id_gan_hans, "gan-hans", "‪赣语(简体)‬"); -Regy_add(regy, Id_gan_hant, "gan-hant", "‪贛語(繁體)‬"); -Regy_add(regy, Id_gd, "gd", "Gàidhlig"); -Regy_add(regy, Id_gl, "gl", "Galego"); -Regy_add(regy, Id_glk, "glk", "گیلکی"); -Regy_add(regy, Id_gn, "gn", "Avañe'ẽ"); -Regy_add(regy, Id_gom, "gom", "कोंकणी"); -Regy_add(regy, Id_gom_deva, "gom-deva", "Konkani"); -Regy_add(regy, Id_gom_latn, "gom-latn", "कोंकणी (Latin)"); -Regy_add(regy, Id_got, "got", "𐌲𐌿𐍄𐌹𐍃𐌺"); -Regy_add(regy, Id_grc, "grc", "Ἀρχαία ἑλληνικὴ"); -Regy_add(regy, Id_gsw, "gsw", "Alemannisch"); -Regy_add(regy, Id_gu, "gu", "ગુજરાતી"); -Regy_add(regy, Id_guc, "guc", "Wayuu"); -Regy_add(regy, Id_gv, "gv", "Gaelg"); -Regy_add(regy, Id_ha, "ha", "هَوُسَ"); -Regy_add(regy, Id_hak, "hak", "Hak-kâ-fa"); -Regy_add(regy, Id_haw, "haw", "Hawai`i"); -Regy_add(regy, Id_he, "he", "עברית"); -Regy_add(regy, Id_hi, "hi", "हिन्दी"); -Regy_add(regy, Id_hif, "hif", "Fiji Hindi"); -Regy_add(regy, Id_hif_latn, "hif-latn", "Fiji Hindi"); -Regy_add(regy, Id_hil, "hil", "Ilonggo"); -Regy_add(regy, Id_ho, "ho", "Hiri Motu"); -Regy_add(regy, Id_hr, "hr", "Hrvatski"); -Regy_add(regy, Id_hrx, "hrx", "Hunsriker"); -Regy_add(regy, Id_hsb, "hsb", "Hornjoserbsce"); -Regy_add(regy, Id_hsn, "hsn", "Xiang"); -Regy_add(regy, Id_ht, "ht", "Kreyòl ayisyen"); -Regy_add(regy, Id_hu, "hu", "Magyar"); -Regy_add(regy, Id_hu_formal, "hu-formal", "Magyar (formal)"); -Regy_add(regy, Id_hy, "hy", "Հայերեն"); -Regy_add(regy, Id_hz, "hz", "Otsiherero"); -Regy_add(regy, Id_ia, "ia", "Interlingua"); -Regy_add(regy, Id_id, "id", "Bahasa Indonesia"); -Regy_add(regy, Id_ie, "ie", "Interlingue"); -Regy_add(regy, Id_ig, "ig", "Igbo"); -Regy_add(regy, Id_ii, "ii", "ꆇꉙ"); -Regy_add(regy, Id_ik, "ik", "Iñupiak"); -Regy_add(regy, Id_ike_cans, "ike-cans", "ᐃᓄᒃᑎᑐᑦ"); -Regy_add(regy, Id_ike_latn, "ike-latn", "inuktitut"); -Regy_add(regy, Id_ilo, "ilo", "Ilokano"); -Regy_add(regy, Id_inh, "inh", "ГІалгІай Ğalğaj"); -Regy_add(regy, Id_io, "io", "Ido"); -Regy_add(regy, Id_is, "is", "Íslenska"); -Regy_add(regy, Id_it, "it", "Italiano"); -Regy_add(regy, Id_iu, "iu", "ᐃᓄᒃᑎᑐᑦ/inuktitut"); -Regy_add(regy, Id_izh, "izh", "Ingrian"); -Regy_add(regy, Id_ja, "ja", "日本語"); -Regy_add(regy, Id_jam, "jam", "Patois"); -Regy_add(regy, Id_jbo, "jbo", "Lojban"); -Regy_add(regy, Id_jut, "jut", "Jysk"); -Regy_add(regy, Id_jv, "jv", "Basa Jawa"); -Regy_add(regy, Id_ka, "ka", "ქართული"); -Regy_add(regy, Id_kaa, "kaa", "Qaraqalpaqsha"); -Regy_add(regy, Id_kab, "kab", "Taqbaylit"); -Regy_add(regy, Id_kbd, "kbd", "Къэбэрдеибзэ / Qabardjajəbza"); -Regy_add(regy, Id_kbd_cyrl, "kbd-cyrl", "къэбэрдеибзэ"); -Regy_add(regy, Id_kg, "kg", "Kongo"); -Regy_add(regy, Id_khw, "khw", "کھوار"); -Regy_add(regy, Id_ki, "ki", "Gĩkũyũ"); -Regy_add(regy, Id_kiu, "kiu", "Kırmancki"); -Regy_add(regy, Id_kj, "kj", "Kwanyama"); -Regy_add(regy, Id_kk, "kk", "Қазақша"); -Regy_add(regy, Id_kk_arab, "kk-arab", "‫قازاقشا (تٴوتە)‬"); -Regy_add(regy, Id_kk_cn, "kk-cn", "‫قازاقشا (جۇنگو)‬"); -Regy_add(regy, Id_kk_cyrl, "kk-cyrl", "‪Қазақша (кирил)‬"); -Regy_add(regy, Id_kk_kz, "kk-kz", "‪Қазақша (Қазақстан)‬"); -Regy_add(regy, Id_kk_latn, "kk-latn", "‪Qazaqşa (latın)‬"); -Regy_add(regy, Id_kk_tr, "kk-tr", "‪Qazaqşa (Türkïya)‬"); -Regy_add(regy, Id_kl, "kl", "Kalaallisut"); -Regy_add(regy, Id_km, "km", "ភាសាខ្មែរ"); -Regy_add(regy, Id_kn, "kn", "ಕನ್ನಡ"); -Regy_add(regy, Id_ko, "ko", "한국어"); -Regy_add(regy, Id_ko_kp, "ko-kp", "한국어 (조선)"); -Regy_add(regy, Id_koi, "koi", "Перем Коми"); -Regy_add(regy, Id_kr, "kr", "Kanuri"); -Regy_add(regy, Id_krc, "krc", "Къарачай-Малкъар"); -Regy_add(regy, Id_kri, "kri", "Krio"); -Regy_add(regy, Id_krj, "krj", "Kinaray-a"); -Regy_add(regy, Id_krl, "krl", "Karelian"); -Regy_add(regy, Id_ks, "ks", "कश्मीरी - (كشميري)"); -Regy_add(regy, Id_ks_arab, "ks-arab", "کٲشُر"); -Regy_add(regy, Id_ks_deva, "ks-deva", "कॉशुर"); -Regy_add(regy, Id_ksh, "ksh", "Ripoarisch"); -Regy_add(regy, Id_ku, "ku", "Kurdî"); -Regy_add(regy, Id_ku_arab, "ku-arab", "‫كوردي (عەرەبی)‬"); -Regy_add(regy, Id_ku_latn, "ku-latn", "‪Kurdî (latînî)‬"); -Regy_add(regy, Id_kv, "kv", "Коми"); -Regy_add(regy, Id_kw, "kw", "Kernowek"); -Regy_add(regy, Id_ky, "ky", "Кыргызча"); -Regy_add(regy, Id_la, "la", "Latina"); -Regy_add(regy, Id_lad, "lad", "Ladino"); -Regy_add(regy, Id_lb, "lb", "Lëtzebuergesch"); -Regy_add(regy, Id_lbe, "lbe", "Лакку"); -Regy_add(regy, Id_lez, "lez", "Лезги"); -Regy_add(regy, Id_lfn, "lfn", "Lingua Franca Nova"); -Regy_add(regy, Id_lg, "lg", "Luganda"); -Regy_add(regy, Id_li, "li", "Limburgs"); -Regy_add(regy, Id_lij, "lij", "Líguru"); -Regy_add(regy, Id_liv, "liv", "Līvõ kēļ"); -Regy_add(regy, Id_lmo, "lmo", "Lumbaart"); -Regy_add(regy, Id_ln, "ln", "Lingála"); -Regy_add(regy, Id_lo, "lo", "ລາວ"); -Regy_add(regy, Id_loz, "loz", "Silozi"); -Regy_add(regy, Id_lrc, "lrc", "لوری"); -Regy_add(regy, Id_lt, "lt", "Lietuvių"); -Regy_add(regy, Id_ltg, "ltg", "Latgaļu"); -Regy_add(regy, Id_lus, "lus", "Mizo ţawng"); -Regy_add(regy, Id_luz, "luz", "Luri"); -Regy_add(regy, Id_lv, "lv", "Latviešu"); -Regy_add(regy, Id_lzh, "lzh", "文言"); -Regy_add(regy, Id_lzz, "lzz", "Lazuri"); -Regy_add(regy, Id_mai, "mai", "मैथिली"); -Regy_add(regy, Id_map_bms, "map-bms", "Basa Banyumasan"); -Regy_add(regy, Id_mdf, "mdf", "Мокшень"); -Regy_add(regy, Id_mg, "mg", "Malagasy"); -Regy_add(regy, Id_mh, "mh", "Ebon"); -Regy_add(regy, Id_mhr, "mhr", "Олык Марий"); -Regy_add(regy, Id_mi, "mi", "Māori"); -Regy_add(regy, Id_mic, "mic", "Mi'kmaq"); -Regy_add(regy, Id_min, "min", "Baso Minangkabau"); -Regy_add(regy, Id_mk, "mk", "Македонски"); -Regy_add(regy, Id_ml, "ml", "മലയാളം"); -Regy_add(regy, Id_mn, "mn", "Монгол"); -Regy_add(regy, Id_mnc, "mnc", "Manchu"); -Regy_add(regy, Id_mo, "mo", "Молдовеняскэ"); -Regy_add(regy, Id_mr, "mr", "मराठी"); -Regy_add(regy, Id_mrj, "mrj", "Кырык мары"); -Regy_add(regy, Id_ms, "ms", "Bahasa Melayu"); -Regy_add(regy, Id_mt, "mt", "Malti"); -Regy_add(regy, Id_mui, "mui", "Musi"); -Regy_add(regy, Id_mus, "mus", "Mvskoke"); -Regy_add(regy, Id_mwl, "mwl", "Mirandés"); -Regy_add(regy, Id_mwv, "mwv", "Behase Mentawei"); -Regy_add(regy, Id_my, "my", "Burmese"); -Regy_add(regy, Id_myv, "myv", "Эрзянь"); -Regy_add(regy, Id_mzn, "mzn", "مازِرونی"); -Regy_add(regy, Id_na, "na", "Dorerin Naoero"); -Regy_add(regy, Id_nah, "nah", "Nāhuatl"); -Regy_add(regy, Id_nan, "nan", "Bân-lâm-gú"); -Regy_add(regy, Id_nap, "nap", "Nnapulitano"); -Regy_add(regy, Id_nb, "nb", "‪Norsk (bokmål)‬"); -Regy_add(regy, Id_nds, "nds", "Plattdüütsch"); -Regy_add(regy, Id_nds_nl, "nds-nl", "Nedersaksisch"); -Regy_add(regy, Id_ne, "ne", "नेपाली"); -Regy_add(regy, Id_new, "new", "नेपाल भाषा"); -Regy_add(regy, Id_ng, "ng", "Oshiwambo"); -Regy_add(regy, Id_niu, "niu", "Niuē"); -Regy_add(regy, Id_nl, "nl", "Nederlands"); -Regy_add(regy, Id_nl_informal, "nl-informal", "‪Nederlands (informeel)‬"); -Regy_add(regy, Id_nn, "nn", "‪Norsk (nynorsk)‬"); -Regy_add(regy, Id_no, "no", "‪Norsk (bokmål)‬"); -Regy_add(regy, Id_nov, "nov", "Novial"); -Regy_add(regy, Id_nrm, "nrm", "Nouormand"); -Regy_add(regy, Id_nso, "nso", "Sesotho sa Leboa"); -Regy_add(regy, Id_nv, "nv", "Diné bizaad"); -Regy_add(regy, Id_ny, "ny", "Chi-Chewa"); -Regy_add(regy, Id_oc, "oc", "Occitan"); -Regy_add(regy, Id_om, "om", "Oromoo"); -Regy_add(regy, Id_or, "or", "ଓଡ଼ିଆ"); -Regy_add(regy, Id_os, "os", "Иронау"); -Regy_add(regy, Id_pa, "pa", "ਪੰਜਾਬੀ"); -Regy_add(regy, Id_pag, "pag", "Pangasinan"); -Regy_add(regy, Id_pam, "pam", "Kapampangan"); -Regy_add(regy, Id_pap, "pap", "Papiamentu"); -Regy_add(regy, Id_pbb, "pbb", "Páez"); -Regy_add(regy, Id_pcd, "pcd", "Picard"); -Regy_add(regy, Id_pdc, "pdc", "Deitsch"); -Regy_add(regy, Id_pdt, "pdt", "Plautdietsch"); -Regy_add(regy, Id_pfl, "pfl", "Pälzisch"); -Regy_add(regy, Id_pi, "pi", "पािऴ"); -Regy_add(regy, Id_pih, "pih", "Norfuk / Pitkern"); -Regy_add(regy, Id_pl, "pl", "Polski"); -Regy_add(regy, Id_pms, "pms", "Piemontèis"); -Regy_add(regy, Id_pnb, "pnb", "پنجابی"); -Regy_add(regy, Id_pnt, "pnt", "Ποντιακά"); -Regy_add(regy, Id_ppl, "ppl", "Pipil"); -Regy_add(regy, Id_prg, "prg", "Prūsiskan"); -Regy_add(regy, Id_ps, "ps", "پښتو"); -Regy_add(regy, Id_pt, "pt", "Português"); -Regy_add(regy, Id_pt_br, "pt-br", "Português do Brasil"); -Regy_add(regy, Id_qqq, "qqq", "MediaWiki sample"); -Regy_add(regy, Id_qu, "qu", "Runa Simi"); -Regy_add(regy, Id_qug, "qug", "Runa shimi"); -Regy_add(regy, Id_rap, "rap", "Rapa Nui"); -Regy_add(regy, Id_rgn, "rgn", "Rumagnôl"); -Regy_add(regy, Id_rif, "rif", "Tarifit"); -Regy_add(regy, Id_rm, "rm", "Rumantsch"); -Regy_add(regy, Id_rmf, "rmf", "Finnish Kalo"); -Regy_add(regy, Id_rmy, "rmy", "Romani"); -Regy_add(regy, Id_rn, "rn", "Kirundi"); -Regy_add(regy, Id_ro, "ro", "Română"); -Regy_add(regy, Id_roa_rup, "roa-rup", "Armãneashce"); -Regy_add(regy, Id_roa_tara, "roa-tara", "Tarandíne"); -Regy_add(regy, Id_ru, "ru", "Русский"); -Regy_add(regy, Id_rue, "rue", "Русиньскый"); -Regy_add(regy, Id_rup, "rup", "Armãneașce"); -Regy_add(regy, Id_ruq, "ruq", "Vlăheşte"); -Regy_add(regy, Id_ruq_cyrl, "ruq-cyrl", "Влахесте"); -Regy_add(regy, Id_ruq_latn, "ruq-latn", "Vlăheşte"); -Regy_add(regy, Id_rw, "rw", "Kinyarwanda"); -Regy_add(regy, Id_ryu, "ryu", "Okinawan"); -Regy_add(regy, Id_sa, "sa", "संस्कृत"); -Regy_add(regy, Id_sah, "sah", "Саха тыла"); -Regy_add(regy, Id_sat, "sat", "Santali"); -Regy_add(regy, Id_saz, "saz", "Saurashtra"); -Regy_add(regy, Id_sc, "sc", "Sardu"); -Regy_add(regy, Id_scn, "scn", "Sicilianu"); -Regy_add(regy, Id_sco, "sco", "Scots"); -Regy_add(regy, Id_sd, "sd", "سنڌي"); -Regy_add(regy, Id_sdc, "sdc", "Sassaresu"); -Regy_add(regy, Id_sdh, "sdh", "Southern Kurdish"); -Regy_add(regy, Id_se, "se", "Sámegiella"); -Regy_add(regy, Id_sei, "sei", "Cmique Itom"); -Regy_add(regy, Id_ses, "ses", "Songhay"); -Regy_add(regy, Id_sg, "sg", "Sängö"); -Regy_add(regy, Id_sgs, "sgs", "Žemaitėška"); -Regy_add(regy, Id_sh, "sh", "Srpskohrvatski / Српскохрватски"); -Regy_add(regy, Id_shi, "shi", "Tašlḥiyt"); -Regy_add(regy, Id_shn, "shn", "Shan"); -Regy_add(regy, Id_si, "si", "Sinhalese"); -Regy_add(regy, Id_simple, "simple", "Simple English"); -Regy_add(regy, Id_sk, "sk", "Slovenčina"); -Regy_add(regy, Id_sl, "sl", "Slovenščina"); -Regy_add(regy, Id_sli, "sli", "Schläsch"); -Regy_add(regy, Id_sly, "sly", "Selayar"); -Regy_add(regy, Id_sm, "sm", "Gagana Samoa"); -Regy_add(regy, Id_sma, "sma", "Åarjelsaemien"); -Regy_add(regy, Id_sn, "sn", "chiShona"); -Regy_add(regy, Id_so, "so", "Soomaaliga"); -Regy_add(regy, Id_sq, "sq", "Shqip"); -Regy_add(regy, Id_sr, "sr", "Српски / Srpski"); -Regy_add(regy, Id_sr_ec, "sr-ec", "‪Српски (ћирилица)‬"); -Regy_add(regy, Id_sr_el, "sr-el", "‪Srpski (latinica)‬"); -Regy_add(regy, Id_srn, "srn", "Sranantongo"); -Regy_add(regy, Id_ss, "ss", "SiSwati"); -Regy_add(regy, Id_st, "st", "Sesotho"); -Regy_add(regy, Id_stq, "stq", "Seeltersk"); -Regy_add(regy, Id_su, "su", "Basa Sunda"); -Regy_add(regy, Id_sv, "sv", "Svenska"); -Regy_add(regy, Id_sw, "sw", "Kiswahili"); -Regy_add(regy, Id_sxu, "sxu", "Saxon, Upper"); -Regy_add(regy, Id_szl, "szl", "Ślůnski"); -Regy_add(regy, Id_ta, "ta", "தமிழ்"); -Regy_add(regy, Id_tcy, "tcy", "ತುಳು"); -Regy_add(regy, Id_te, "te", "తెలుగు"); -Regy_add(regy, Id_test, "test", "MediaWiki test"); -Regy_add(regy, Id_tet, "tet", "Tetun"); -Regy_add(regy, Id_tg, "tg", "Тоҷикӣ"); -Regy_add(regy, Id_tg_cyrl, "tg-cyrl", "Тоҷикӣ"); -Regy_add(regy, Id_tg_latn, "tg-latn", "tojikī"); -Regy_add(regy, Id_th, "th", "ไทย"); -Regy_add(regy, Id_ti, "ti", "ትግርኛ"); -Regy_add(regy, Id_tk, "tk", "Türkmençe"); -Regy_add(regy, Id_tl, "tl", "Tagalog"); -Regy_add(regy, Id_tly, "tly", "толышә зывон"); -Regy_add(regy, Id_tn, "tn", "Setswana"); -Regy_add(regy, Id_to, "to", "lea faka-Tonga"); -Regy_add(regy, Id_tokipona, "tokipona", "Toki Pona"); -Regy_add(regy, Id_tp, "tp", "Toki Pona (deprecated:tokipona)"); -Regy_add(regy, Id_tpi, "tpi", "Tok Pisin"); -Regy_add(regy, Id_tr, "tr", "Türkçe"); -Regy_add(regy, Id_tru, "tru", "Ṫuroyo"); -Regy_add(regy, Id_ts, "ts", "Xitsonga"); -Regy_add(regy, Id_tt, "tt", "Татарча/Tatarça"); -Regy_add(regy, Id_tt_cyrl, "tt-cyrl", "Татарча"); -Regy_add(regy, Id_tt_latn, "tt-latn", "Tatarça"); -Regy_add(regy, Id_ttt, "ttt", "Tat, Muslim"); -Regy_add(regy, Id_tum, "tum", "chiTumbuka"); -Regy_add(regy, Id_tw, "tw", "Twi"); -Regy_add(regy, Id_ty, "ty", "Reo Mā`ohi"); -Regy_add(regy, Id_tyv, "tyv", "Тыва дыл"); -Regy_add(regy, Id_tzm, "tzm", "ⵜⴰⵎⴰⵣⵉⵖⵜ"); -Regy_add(regy, Id_udm, "udm", "Удмурт"); -Regy_add(regy, Id_ug, "ug", "ئۇيغۇرچە / Uyghurche‎"); -Regy_add(regy, Id_ug_arab, "ug-arab", "ئۇيغۇرچە"); -Regy_add(regy, Id_ug_latn, "ug-latn", "Uyghurche‎"); -Regy_add(regy, Id_uk, "uk", "Українська"); -Regy_add(regy, Id_ur, "ur", "اردو"); -Regy_add(regy, Id_uz, "uz", "O'zbek"); -Regy_add(regy, Id_ve, "ve", "Tshivenda"); -Regy_add(regy, Id_vec, "vec", "Vèneto"); -Regy_add(regy, Id_vep, "vep", "Vepsan kel'"); -Regy_add(regy, Id_vi, "vi", "Tiếng Việt"); -Regy_add(regy, Id_vls, "vls", "West-Vlams"); -Regy_add(regy, Id_vmf, "vmf", "Mainfränkisch"); -Regy_add(regy, Id_vo, "vo", "Volapük"); -Regy_add(regy, Id_vot, "vot", "Vaďďa"); -Regy_add(regy, Id_vro, "vro", "Võro"); -Regy_add(regy, Id_wa, "wa", "Walon"); -Regy_add(regy, Id_war, "war", "Winaray"); -Regy_add(regy, Id_wo, "wo", "Wolof"); -Regy_add(regy, Id_wuu, "wuu", "吴语"); -Regy_add(regy, Id_xal, "xal", "Хальмг"); -Regy_add(regy, Id_xh, "xh", "isiXhosa"); -Regy_add(regy, Id_xmf, "xmf", "მარგალური"); -Regy_add(regy, Id_yi, "yi", "ייִדיש"); -Regy_add(regy, Id_yo, "yo", "Yorùbá"); -Regy_add(regy, Id_yue, "yue", "粵語"); -Regy_add(regy, Id_za, "za", "Vahcuengh"); -Regy_add(regy, Id_zea, "zea", "Zeêuws"); -Regy_add(regy, Id_zh, "zh", "中文"); -Regy_add(regy, Id_zh_classical, "zh-classical", "文言"); -Regy_add(regy, Id_zh_cn, "zh-cn", "‪中文(中国大陆)‬"); -Regy_add(regy, Id_zh_hans, "zh-hans", "‪中文(简体)‬"); -Regy_add(regy, Id_zh_hant, "zh-hant", "‪中文(繁體)‬"); -Regy_add(regy, Id_zh_hk, "zh-hk", "‪中文(香港)‬"); -Regy_add(regy, Id_zh_min_nan, "zh-min-nan", "Bân-lâm-gú"); -Regy_add(regy, Id_zh_mo, "zh-mo", "‪中文(澳門)‬"); -Regy_add(regy, Id_zh_my, "zh-my", "‪中文(马来西亚)‬"); -Regy_add(regy, Id_zh_sg, "zh-sg", "‪中文(新加坡)‬"); -Regy_add(regy, Id_zh_tw, "zh-tw", "‪中文(台灣)‬"); -Regy_add(regy, Id_zh_yue, "zh-yue", "粵語"); -Regy_add(regy, Id_zu, "zu", "isiZulu"); + 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");} + public static final byte Char_tid_ltr_l = 0, Char_tid_ltr_u = 1, Char_tid_num = 2, Char_tid_ws = 3, Char_tid_sym = 4, Char_tid_misc = 5; + public static byte Char_tid(byte b) { + switch (b) { + case Byte_ascii.Ltr_A: case Byte_ascii.Ltr_B: case Byte_ascii.Ltr_C: case Byte_ascii.Ltr_D: case Byte_ascii.Ltr_E: + case Byte_ascii.Ltr_F: case Byte_ascii.Ltr_G: case Byte_ascii.Ltr_H: case Byte_ascii.Ltr_I: case Byte_ascii.Ltr_J: + case Byte_ascii.Ltr_K: case Byte_ascii.Ltr_L: case Byte_ascii.Ltr_M: case Byte_ascii.Ltr_N: case Byte_ascii.Ltr_O: + case Byte_ascii.Ltr_P: case Byte_ascii.Ltr_Q: case Byte_ascii.Ltr_R: case Byte_ascii.Ltr_S: case Byte_ascii.Ltr_T: + case Byte_ascii.Ltr_U: case Byte_ascii.Ltr_V: case Byte_ascii.Ltr_W: case Byte_ascii.Ltr_X: case Byte_ascii.Ltr_Y: case Byte_ascii.Ltr_Z: + return Char_tid_ltr_u; + case Byte_ascii.Ltr_a: case Byte_ascii.Ltr_b: case Byte_ascii.Ltr_c: case Byte_ascii.Ltr_d: case Byte_ascii.Ltr_e: + case Byte_ascii.Ltr_f: case Byte_ascii.Ltr_g: case Byte_ascii.Ltr_h: case Byte_ascii.Ltr_i: case Byte_ascii.Ltr_j: + case Byte_ascii.Ltr_k: case Byte_ascii.Ltr_l: case Byte_ascii.Ltr_m: case Byte_ascii.Ltr_n: case Byte_ascii.Ltr_o: + case Byte_ascii.Ltr_p: case Byte_ascii.Ltr_q: case Byte_ascii.Ltr_r: case Byte_ascii.Ltr_s: case Byte_ascii.Ltr_t: + case Byte_ascii.Ltr_u: case Byte_ascii.Ltr_v: case Byte_ascii.Ltr_w: case Byte_ascii.Ltr_x: case Byte_ascii.Ltr_y: case Byte_ascii.Ltr_z: + return Char_tid_ltr_l; + 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: + return Char_tid_num; + case Byte_ascii.Space: case Byte_ascii.Nl: case Byte_ascii.Tab: case Byte_ascii.Cr: + return Char_tid_ws; + default: + return Char_tid_misc; } - return regy; } - private static Hash_adp_bry regy; private static final Xol_lang_itm[] langs = new Xol_lang_itm[Id__max]; - private static void Regy_add(Hash_adp_bry regy, int id, String code_str, String canonical) { - byte[] code = Bry_.new_a7(code_str); // ASCII:lang_code should always be ASCII - Xol_lang_itm itm = new Xol_lang_itm(id, code, Bry_.new_u8(canonical)); - langs[id] = itm; - regy.Add(code, itm); + public static final byte[] Key_en = Bry_.new_a7("en"); + public static Xol_lang_itm Lang_en_make(Xoa_lang_mgr lang_mgr) { + Xol_lang_itm rv = new Xol_lang_itm(lang_mgr, Xol_lang_itm_.Key_en); + Xol_lang_itm_.Lang_init(rv); + rv.Evt_lang_changed(); + return rv; } - public static Xol_lang_itm Get_by_key_or_en(byte[] key) { - if (regy == null) Regy(); - Xol_lang_itm lang_itm = (Xol_lang_itm)regy.Get_by_bry(key); - if (lang_itm == null) lang_itm = (Xol_lang_itm)regy.Get_by_bry(Xol_lang_.Key_en); - return lang_itm; - } - public static Xol_lang_itm Get_by_key(byte[] key) {return Get_by_key(key, 0, key.length);} - public static Xol_lang_itm Get_by_key(byte[] key, int bgn, int end) { - if (regy == null) Regy(); - return (Xol_lang_itm)regy.Get_by_mid(key, bgn, end); - } - public static Xol_lang_itm Get_by_key_or_intl(byte[] key) {return Get_by_key_or_intl(key, 0, key.length);} - public static Xol_lang_itm Get_by_key_or_intl(byte[] key, int bgn, int end) { - Xol_lang_itm rv = Get_by_key_or_null(key, bgn, end); - return rv == null ? Intl : rv; - } - public static Xol_lang_itm Get_by_key_or_null(byte[] key, int bgn, int end) { - if (regy == null) Regy(); - return (Xol_lang_itm)regy.Get_by_mid(key, bgn, end); - } - public static Xol_lang_itm Get_by_id(int id) {if (regy == null) Regy(); return langs[id];} - public static boolean Exists(byte[] key) {return Get_by_key(key) != null;} // Language.php!isSupportedLanguage - public static final Xol_lang_itm Intl = new Xol_lang_itm(Xol_lang_itm_.Id__intl, Bry_.Empty, Bry_.Empty); // intended for international wikis like commons, wikidata, etc.. -} -class Xol_lang_itm_comparer implements ComparerAble { - public int compare(Object lhsObj, Object rhsObj) { - Xol_lang_itm lhs = (Xol_lang_itm)lhsObj; - Xol_lang_itm rhs = (Xol_lang_itm)rhsObj; - return Bry_.Compare(lhs.Key(), rhs.Key()); + public static void Lang_init(Xol_lang_itm lang) { + lang.Num_mgr().Separators_mgr().Set(Xol_num_mgr.Separators_key__grp, Xol_num_mgr.Separators_key__grp); + lang.Num_mgr().Separators_mgr().Set(Xol_num_mgr.Separators_key__dec, Xol_num_mgr.Separators_key__dec); + lang.Lnki_trail_mgr().Add_range(Byte_ascii.Ltr_a, Byte_ascii.Ltr_z);// REF.MW:MessagesEn.php|$linkTrail = '/^([a-z]+)(.*)$/sD'; +Xol_kwd_mgr kwd_mgr = lang.Kwd_mgr(); +kwd_mgr.New(Bool_.N, Xol_kwd_grp_.Id_redirect, "#REDIRECT"); +kwd_mgr.New(Bool_.N, Xol_kwd_grp_.Id_notoc, "__NOTOC__"); +kwd_mgr.New(Bool_.N, Xol_kwd_grp_.Id_nogallery, "__NOGALLERY__"); +kwd_mgr.New(Bool_.N, Xol_kwd_grp_.Id_forcetoc, "__FORCETOC__"); +kwd_mgr.New(Bool_.N, Xol_kwd_grp_.Id_toc, "__TOC__"); +kwd_mgr.New(Bool_.N, Xol_kwd_grp_.Id_noeditsection, "__NOEDITSECTION__"); +kwd_mgr.New(Bool_.N, Xol_kwd_grp_.Id_noheader, "__NOHEADER__"); +kwd_mgr.New(Bool_.Y, Xol_kwd_grp_.Id_utc_month_int_len2, "CURRENTMONTH", "CURRENTMONTH2"); +kwd_mgr.New(Bool_.Y, Xol_kwd_grp_.Id_utc_month_int, "CURRENTMONTH1"); +kwd_mgr.New(Bool_.Y, Xol_kwd_grp_.Id_utc_month_name, "CURRENTMONTHNAME"); +kwd_mgr.New(Bool_.Y, Xol_kwd_grp_.Id_utc_month_gen, "CURRENTMONTHNAMEGEN"); +kwd_mgr.New(Bool_.Y, Xol_kwd_grp_.Id_utc_month_abrv, "CURRENTMONTHABBREV"); +kwd_mgr.New(Bool_.Y, Xol_kwd_grp_.Id_utc_day_int, "CURRENTDAY"); +kwd_mgr.New(Bool_.Y, Xol_kwd_grp_.Id_utc_day_int_len2, "CURRENTDAY2"); +kwd_mgr.New(Bool_.Y, Xol_kwd_grp_.Id_utc_day_name, "CURRENTDAYNAME"); +kwd_mgr.New(Bool_.Y, Xol_kwd_grp_.Id_utc_year, "CURRENTYEAR"); +kwd_mgr.New(Bool_.Y, Xol_kwd_grp_.Id_utc_time, "CURRENTTIME"); +kwd_mgr.New(Bool_.Y, Xol_kwd_grp_.Id_utc_hour, "CURRENTHOUR"); +kwd_mgr.New(Bool_.Y, Xol_kwd_grp_.Id_lcl_month_int_len2, "LOCALMONTH", "LOCALMONTH2"); +kwd_mgr.New(Bool_.Y, Xol_kwd_grp_.Id_lcl_month_int, "LOCALMONTH1"); +kwd_mgr.New(Bool_.Y, Xol_kwd_grp_.Id_lcl_month_name, "LOCALMONTHNAME"); +kwd_mgr.New(Bool_.Y, Xol_kwd_grp_.Id_lcl_month_gen, "LOCALMONTHNAMEGEN"); +kwd_mgr.New(Bool_.Y, Xol_kwd_grp_.Id_lcl_month_abrv, "LOCALMONTHABBREV"); +kwd_mgr.New(Bool_.Y, Xol_kwd_grp_.Id_lcl_day_int, "LOCALDAY"); +kwd_mgr.New(Bool_.Y, Xol_kwd_grp_.Id_lcl_day_int_len2, "LOCALDAY2"); +kwd_mgr.New(Bool_.Y, Xol_kwd_grp_.Id_lcl_day_name, "LOCALDAYNAME"); +kwd_mgr.New(Bool_.Y, Xol_kwd_grp_.Id_lcl_year, "LOCALYEAR"); +kwd_mgr.New(Bool_.Y, Xol_kwd_grp_.Id_lcl_time, "LOCALTIME"); +kwd_mgr.New(Bool_.Y, Xol_kwd_grp_.Id_lcl_hour, "LOCALHOUR"); +kwd_mgr.New(Bool_.Y, Xol_kwd_grp_.Id_num_pages, "NUMBEROFPAGES"); +kwd_mgr.New(Bool_.Y, Xol_kwd_grp_.Id_num_articles, "NUMBEROFARTICLES"); +kwd_mgr.New(Bool_.Y, Xol_kwd_grp_.Id_num_files, "NUMBEROFFILES"); +kwd_mgr.New(Bool_.Y, Xol_kwd_grp_.Id_num_users, "NUMBEROFUSERS"); +kwd_mgr.New(Bool_.Y, Xol_kwd_grp_.Id_num_users_active, "NUMBEROFACTIVEUSERS"); +kwd_mgr.New(Bool_.Y, Xol_kwd_grp_.Id_num_edits, "NUMBEROFEDITS"); +kwd_mgr.New(Bool_.Y, Xol_kwd_grp_.Id_num_views, "NUMBEROFVIEWS"); +kwd_mgr.New(Bool_.Y, Xol_kwd_grp_.Id_ttl_page_txt, "PAGENAME"); +kwd_mgr.New(Bool_.Y, Xol_kwd_grp_.Id_ttl_page_url, "PAGENAMEE"); +kwd_mgr.New(Bool_.Y, Xol_kwd_grp_.Id_ns_txt, "NAME"+"SPACE"); +kwd_mgr.New(Bool_.Y, Xol_kwd_grp_.Id_ns_url, "NAME"+"SPACEE"); +kwd_mgr.New(Bool_.Y, Xol_kwd_grp_.Id_ns_talk_txt, "TALKSPACE"); +kwd_mgr.New(Bool_.Y, Xol_kwd_grp_.Id_ns_talk_url, "TALKSPACEE"); +kwd_mgr.New(Bool_.Y, Xol_kwd_grp_.Id_ns_subj_txt, "SUBJECTSPACE", "ARTICLESPACE"); +kwd_mgr.New(Bool_.Y, Xol_kwd_grp_.Id_ns_subj_url, "SUBJECTSPACEE", "ARTICLESPACEE"); +kwd_mgr.New(Bool_.Y, Xol_kwd_grp_.Id_ttl_full_txt, "FULLPAGENAME"); +kwd_mgr.New(Bool_.Y, Xol_kwd_grp_.Id_ttl_full_url, "FULLPAGENAMEE"); +kwd_mgr.New(Bool_.Y, Xol_kwd_grp_.Id_ttl_leaf_txt, "SUBPAGENAME"); +kwd_mgr.New(Bool_.Y, Xol_kwd_grp_.Id_ttl_leaf_url, "SUBPAGENAMEE"); +kwd_mgr.New(Bool_.Y, Xol_kwd_grp_.Id_ttl_base_txt, "BASEPAGENAME"); +kwd_mgr.New(Bool_.Y, Xol_kwd_grp_.Id_ttl_base_url, "BASEPAGENAMEE"); +kwd_mgr.New(Bool_.Y, Xol_kwd_grp_.Id_ttl_talk_txt, "TALKPAGENAME"); +kwd_mgr.New(Bool_.Y, Xol_kwd_grp_.Id_ttl_talk_url, "TALKPAGENAMEE"); +kwd_mgr.New(Bool_.Y, Xol_kwd_grp_.Id_ttl_subj_txt, "SUBJECTPAGENAME", "ARTICLEPAGENAME"); +kwd_mgr.New(Bool_.Y, Xol_kwd_grp_.Id_ttl_subj_url, "SUBJECTPAGENAMEE", "ARTICLEPAGENAMEE"); +kwd_mgr.New(Bool_.N, Xol_kwd_grp_.Id_msg, "msg"); +kwd_mgr.New(Bool_.N, Xol_kwd_grp_.Id_subst, "subst:"); +kwd_mgr.New(Bool_.N, Xol_kwd_grp_.Id_safesubst, "safesubst:"); +kwd_mgr.New(Bool_.N, Xol_kwd_grp_.Id_msgnw, "msgnw"); +kwd_mgr.New(Bool_.Y, Xol_kwd_grp_.Id_img_thumbnail, "thumbnail", "thumb"); +kwd_mgr.New(Bool_.Y, Xol_kwd_grp_.Id_img_manualthumb, "thumbnail", "thumb"); +kwd_mgr.New(Bool_.Y, Xol_kwd_grp_.Id_img_framed, "framed", "enframed", "frame"); +kwd_mgr.New(Bool_.Y, Xol_kwd_grp_.Id_img_frameless, "frameless"); +kwd_mgr.New(Bool_.Y, Xol_kwd_grp_.Id_img_upright, "upright"); +kwd_mgr.New(Bool_.Y, Xol_kwd_grp_.Id_img_upright_factor, "upright_factor"); +kwd_mgr.New(Bool_.Y, Xol_kwd_grp_.Id_img_border, "border"); +kwd_mgr.New(Bool_.Y, Xol_kwd_grp_.Id_img_align, "align"); +kwd_mgr.New(Bool_.Y, Xol_kwd_grp_.Id_img_valign, "valign"); +kwd_mgr.New(Bool_.Y, Xol_kwd_grp_.Id_img_alt, "alt"); +kwd_mgr.New(Bool_.Y, Xol_kwd_grp_.Id_img_class, "class"); +kwd_mgr.New(Bool_.Y, Xol_kwd_grp_.Id_img_caption, "caption"); +kwd_mgr.New(Bool_.Y, Xol_kwd_grp_.Id_img_link_url, "link-url"); +kwd_mgr.New(Bool_.Y, Xol_kwd_grp_.Id_img_link_title, "link-title"); +kwd_mgr.New(Bool_.Y, Xol_kwd_grp_.Id_img_link_target, "link-target"); +kwd_mgr.New(Bool_.Y, Xol_kwd_grp_.Id_img_link_none, "no-link"); +kwd_mgr.New(Bool_.Y, Xol_kwd_grp_.Id_img_width, "px"); +kwd_mgr.New(Bool_.Y, Xol_kwd_grp_.Id_img_page, "page"); +kwd_mgr.New(Bool_.Y, Xol_kwd_grp_.Id_img_none, "none"); +kwd_mgr.New(Bool_.Y, Xol_kwd_grp_.Id_img_right, "right"); +kwd_mgr.New(Bool_.Y, Xol_kwd_grp_.Id_img_center, "center", "centre"); +kwd_mgr.New(Bool_.Y, Xol_kwd_grp_.Id_img_left, "left"); +kwd_mgr.New(Bool_.Y, Xol_kwd_grp_.Id_img_baseline, "baseline"); +kwd_mgr.New(Bool_.Y, Xol_kwd_grp_.Id_img_sub, "sub"); +kwd_mgr.New(Bool_.Y, Xol_kwd_grp_.Id_img_super, "super", "sup"); +kwd_mgr.New(Bool_.Y, Xol_kwd_grp_.Id_img_top, "top"); +kwd_mgr.New(Bool_.Y, Xol_kwd_grp_.Id_img_text_top, "text-top"); +kwd_mgr.New(Bool_.Y, Xol_kwd_grp_.Id_img_middle, "middle"); +kwd_mgr.New(Bool_.Y, Xol_kwd_grp_.Id_img_bottom, "bottom"); +kwd_mgr.New(Bool_.Y, Xol_kwd_grp_.Id_img_text_bottom, "text-bottom"); +kwd_mgr.New(Bool_.Y, Xol_kwd_grp_.Id_img_link, "link"); +kwd_mgr.New(Bool_.N, Xol_kwd_grp_.Id_i18n_int, "int"); +kwd_mgr.New(Bool_.Y, Xol_kwd_grp_.Id_site_sitename, "SITENAME"); +kwd_mgr.New(Bool_.N, Xol_kwd_grp_.Id_url_ns, "ns"); +kwd_mgr.New(Bool_.N, Xol_kwd_grp_.Id_url_nse, "nse"); +kwd_mgr.New(Bool_.N, Xol_kwd_grp_.Id_url_localurl, "localurl"); +kwd_mgr.New(Bool_.N, Xol_kwd_grp_.Id_url_localurle, "localurle"); +kwd_mgr.New(Bool_.Y, Xol_kwd_grp_.Id_site_articlepath, "ARTICLEPATH"); +kwd_mgr.New(Bool_.Y, Xol_kwd_grp_.Id_site_server, "SERVER"); +kwd_mgr.New(Bool_.Y, Xol_kwd_grp_.Id_site_servername, "SERVERNAME"); +kwd_mgr.New(Bool_.Y, Xol_kwd_grp_.Id_site_scriptpath, "SCRIPTPATH"); +kwd_mgr.New(Bool_.Y, Xol_kwd_grp_.Id_site_stylepath, "STYLEPATH"); +kwd_mgr.New(Bool_.N, Xol_kwd_grp_.Id_i18n_grammar, "grammar"); +kwd_mgr.New(Bool_.N, Xol_kwd_grp_.Id_i18n_gender, "gender"); +kwd_mgr.New(Bool_.N, Xol_kwd_grp_.Id_notitleconvert, "__NOTITLECONVERT__", "__NOTC__"); +kwd_mgr.New(Bool_.N, Xol_kwd_grp_.Id_nocontentconvert, "__NOCONTENTCONVERT__", "__NOCC__"); +kwd_mgr.New(Bool_.Y, Xol_kwd_grp_.Id_utc_week, "CURRENTWEEK"); +kwd_mgr.New(Bool_.Y, Xol_kwd_grp_.Id_utc_dow, "CURRENTDOW"); +kwd_mgr.New(Bool_.Y, Xol_kwd_grp_.Id_lcl_week, "LOCALWEEK"); +kwd_mgr.New(Bool_.Y, Xol_kwd_grp_.Id_lcl_dow, "LOCALDOW"); +kwd_mgr.New(Bool_.Y, Xol_kwd_grp_.Id_rev_id, "REVISIONID"); +kwd_mgr.New(Bool_.Y, Xol_kwd_grp_.Id_rev_day_int, "REVISIONDAY"); +kwd_mgr.New(Bool_.Y, Xol_kwd_grp_.Id_rev_day_int_len2, "REVISIONDAY2"); +kwd_mgr.New(Bool_.Y, Xol_kwd_grp_.Id_rev_month_int_len2, "REVISIONMONTH"); +kwd_mgr.New(Bool_.Y, Xol_kwd_grp_.Id_rev_month_int, "REVISIONMONTH1"); +kwd_mgr.New(Bool_.Y, Xol_kwd_grp_.Id_rev_year, "REVISIONYEAR"); +kwd_mgr.New(Bool_.Y, Xol_kwd_grp_.Id_rev_timestamp, "REVISIONTIMESTAMP"); +kwd_mgr.New(Bool_.Y, Xol_kwd_grp_.Id_rev_user, "REVISIONUSER"); +kwd_mgr.New(Bool_.N, Xol_kwd_grp_.Id_i18n_plural, "plural"); +kwd_mgr.New(Bool_.N, Xol_kwd_grp_.Id_url_fullurl, "fullurl"); +kwd_mgr.New(Bool_.N, Xol_kwd_grp_.Id_url_fullurle, "fullurle"); +kwd_mgr.New(Bool_.N, Xol_kwd_grp_.Id_str_lcfirst, "lcfirst"); +kwd_mgr.New(Bool_.N, Xol_kwd_grp_.Id_str_ucfirst, "ucfirst"); +kwd_mgr.New(Bool_.N, Xol_kwd_grp_.Id_str_lc, "lc"); +kwd_mgr.New(Bool_.N, Xol_kwd_grp_.Id_str_uc, "uc"); +kwd_mgr.New(Bool_.N, Xol_kwd_grp_.Id_raw, "raw"); +kwd_mgr.New(Bool_.Y, Xol_kwd_grp_.Id_page_displaytitle, "DISPLAYTITLE"); +kwd_mgr.New(Bool_.Y, Xol_kwd_grp_.Id_str_rawsuffix, "R"); +kwd_mgr.New(Bool_.Y, Xol_kwd_grp_.Id_newsectionlink, "__NEWSECTIONLINK__"); +kwd_mgr.New(Bool_.Y, Xol_kwd_grp_.Id_nonewsectionlink, "__NONEWSECTIONLINK__"); +kwd_mgr.New(Bool_.Y, Xol_kwd_grp_.Id_site_currentversion, "CURRENTVERSION"); +kwd_mgr.New(Bool_.N, Xol_kwd_grp_.Id_url_urlencode, "urlencode"); +kwd_mgr.New(Bool_.N, Xol_kwd_grp_.Id_url_anchorencode, "anchorencode"); +kwd_mgr.New(Bool_.Y, Xol_kwd_grp_.Id_utc_timestamp, "CURRENTTIMESTAMP"); +kwd_mgr.New(Bool_.Y, Xol_kwd_grp_.Id_lcl_timestamp, "LOCALTIMESTAMP"); +kwd_mgr.New(Bool_.Y, Xol_kwd_grp_.Id_site_directionmark, "DIRECTIONMARK", "DIRMARK"); +kwd_mgr.New(Bool_.N, Xol_kwd_grp_.Id_i18n_language, "#language"); +kwd_mgr.New(Bool_.Y, Xol_kwd_grp_.Id_site_contentlanguage, "CONTENTLANGUAGE", "CONTENTLANG"); +kwd_mgr.New(Bool_.Y, Xol_kwd_grp_.Id_site_pagesinnamespace, "PAGESINNAMESPACE", "PAGESINNS"); +kwd_mgr.New(Bool_.Y, Xol_kwd_grp_.Id_num_admins, "NUMBEROFADMINS"); +kwd_mgr.New(Bool_.N, Xol_kwd_grp_.Id_str_formatnum, "formatnum"); +kwd_mgr.New(Bool_.N, Xol_kwd_grp_.Id_str_padleft, "padleft"); +kwd_mgr.New(Bool_.N, Xol_kwd_grp_.Id_str_padright, "padright"); +kwd_mgr.New(Bool_.N, Xol_kwd_grp_.Id_misc_special, "#special"); +kwd_mgr.New(Bool_.Y, Xol_kwd_grp_.Id_page_defaultsort, "DEFAULTSORT", "DEFAULTSORTKEY", "DEFAULTCATEGORYSORT"); +kwd_mgr.New(Bool_.N, Xol_kwd_grp_.Id_url_filepath, "filepath"); +kwd_mgr.New(Bool_.N, Xol_kwd_grp_.Id_misc_tag, "#tag"); +kwd_mgr.New(Bool_.Y, Xol_kwd_grp_.Id_hiddencat, "__HIDDENCAT__"); +kwd_mgr.New(Bool_.Y, Xol_kwd_grp_.Id_site_pagesincategory, "PAGESINCATEGORY", "PAGESINCAT"); +kwd_mgr.New(Bool_.Y, Xol_kwd_grp_.Id_rev_pagesize, "PAGESIZE"); +kwd_mgr.New(Bool_.Y, Xol_kwd_grp_.Id_index, "__INDEX__"); +kwd_mgr.New(Bool_.Y, Xol_kwd_grp_.Id_noindex, "__NOINDEX__"); +kwd_mgr.New(Bool_.Y, Xol_kwd_grp_.Id_site_numberingroup, "NUMBERINGROUP", "NUMINGROUP"); +kwd_mgr.New(Bool_.Y, Xol_kwd_grp_.Id_staticredirect, "__STATICREDIRECT__"); +kwd_mgr.New(Bool_.Y, Xol_kwd_grp_.Id_rev_protectionlevel, "PROTECTIONLEVEL"); +kwd_mgr.New(Bool_.N, Xol_kwd_grp_.Id_str_formatdate, "#formatdate", "#dateformat"); +kwd_mgr.New(Bool_.N, Xol_kwd_grp_.Id_url_path, "path"); +kwd_mgr.New(Bool_.N, Xol_kwd_grp_.Id_url_wiki, "wiki"); +kwd_mgr.New(Bool_.N, Xol_kwd_grp_.Id_url_query, "query"); +kwd_mgr.New(Bool_.N, Xol_kwd_grp_.Id_xtn_expr, "#expr"); +kwd_mgr.New(Bool_.N, Xol_kwd_grp_.Id_xtn_if, "#if"); +kwd_mgr.New(Bool_.N, Xol_kwd_grp_.Id_xtn_ifeq, "#ifeq"); +kwd_mgr.New(Bool_.N, Xol_kwd_grp_.Id_xtn_ifexpr, "#ifexpr"); +kwd_mgr.New(Bool_.N, Xol_kwd_grp_.Id_xtn_iferror, "#iferror"); +kwd_mgr.New(Bool_.N, Xol_kwd_grp_.Id_xtn_switch, "#switch"); +kwd_mgr.New(Bool_.N, Xol_kwd_grp_.Id_xtn_default, "#default"); +kwd_mgr.New(Bool_.N, Xol_kwd_grp_.Id_xtn_ifexist, "#ifexist"); +kwd_mgr.New(Bool_.N, Xol_kwd_grp_.Id_xtn_time, "#time"); +kwd_mgr.New(Bool_.N, Xol_kwd_grp_.Id_xtn_timel, "#timel"); +kwd_mgr.New(Bool_.N, Xol_kwd_grp_.Id_xtn_rel2abs, "#rel2abs"); +kwd_mgr.New(Bool_.N, Xol_kwd_grp_.Id_xtn_titleparts, "#titleparts"); +kwd_mgr.New(Bool_.N, Xol_kwd_grp_.Id_xowa_dbg, "#xowa_dbg"); +kwd_mgr.New(Bool_.Y, Xol_kwd_grp_.Id_ogg_noplayer, "noplayer"); +kwd_mgr.New(Bool_.Y, Xol_kwd_grp_.Id_ogg_noicon, "noicon"); +kwd_mgr.New(Bool_.Y, Xol_kwd_grp_.Id_ogg_thumbtime, "thumbtime"); +kwd_mgr.New(Bool_.N, Xol_kwd_grp_.Id_xtn_geodata_coordinates, "#coordinates"); +kwd_mgr.New(Bool_.N, Xol_kwd_grp_.Id_url_canonicalurl, "canonicalurl"); +kwd_mgr.New(Bool_.N, Xol_kwd_grp_.Id_url_canonicalurle, "canonicalurle"); +kwd_mgr.New(Bool_.N, Xol_kwd_grp_.Id_lst, "#lst", "#section"); +kwd_mgr.New(Bool_.N, Xol_kwd_grp_.Id_lstx, "#lstx", "#section-x"); +kwd_mgr.New(Bool_.N, Xol_kwd_grp_.Id_invoke, "#invoke"); +kwd_mgr.New(Bool_.N, Xol_kwd_grp_.Id_property, "#property"); +kwd_mgr.New(Bool_.N, Xol_kwd_grp_.Id_noexternallanglinks, "noexternallanglinks"); +kwd_mgr.New(Bool_.N, Xol_kwd_grp_.Id_ns_num, "namespacenumber"); +kwd_mgr.New(Bool_.N, Xol_kwd_grp_.Id_page_id, "pageid"); +kwd_mgr.New(Bool_.N, Xol_kwd_grp_.Id_disambig, "__DISAMBIG__"); +kwd_mgr.New(Bool_.N, Xol_kwd_grp_.Id_nocommafysuffix, "NOSEP"); +kwd_mgr.New(Bool_.N, Xol_kwd_grp_.Id_xowa, "#xowa"); +kwd_mgr.New(Bool_.N, Xol_kwd_grp_.Id_mapSources_deg2dd, "#deg2dd"); +kwd_mgr.New(Bool_.N, Xol_kwd_grp_.Id_mapSources_dd2dms, "#dd2dms"); +kwd_mgr.New(Bool_.N, Xol_kwd_grp_.Id_mapSources_geoLink, "#geolink"); +kwd_mgr.New(Bool_.N, Xol_kwd_grp_.Id_geoCrumbs_isin, "#isin"); +kwd_mgr.New(Bool_.N, Xol_kwd_grp_.Id_relatedArticles, "#related"); +kwd_mgr.New(Bool_.N, Xol_kwd_grp_.Id_insider, "#insider"); +kwd_mgr.New(Bool_.N, Xol_kwd_grp_.Id_massMessage_target, "#target"); +kwd_mgr.New(Bool_.N, Xol_kwd_grp_.Id_cascadingSources, "CASCADINGSOURCES"); +kwd_mgr.New(Bool_.N, Xol_kwd_grp_.Id_pendingChangeLevel, "PENDINGCHANGELEVEL"); +kwd_mgr.New(Bool_.N, Xol_kwd_grp_.Id_pagesUsingPendingChanges, "PAGESUSINGPENDINGCHANGES"); +kwd_mgr.New(Bool_.Y, Xol_kwd_grp_.Id_bang, "!"); +kwd_mgr.New(Bool_.N, Xol_kwd_grp_.Id_wbreponame, "wbreponame"); +kwd_mgr.New(Bool_.Y, Xol_kwd_grp_.Id_strx_len, "#len"); +kwd_mgr.New(Bool_.Y, Xol_kwd_grp_.Id_strx_pos, "#pos"); +kwd_mgr.New(Bool_.Y, Xol_kwd_grp_.Id_strx_rpos, "#rpos"); +kwd_mgr.New(Bool_.Y, Xol_kwd_grp_.Id_strx_sub, "#sub"); +kwd_mgr.New(Bool_.Y, Xol_kwd_grp_.Id_strx_count, "#count"); +kwd_mgr.New(Bool_.Y, Xol_kwd_grp_.Id_strx_replace, "#replace"); +kwd_mgr.New(Bool_.Y, Xol_kwd_grp_.Id_strx_explode, "#explode"); +kwd_mgr.New(Bool_.Y, Xol_kwd_grp_.Id_strx_urldecode, "#urldecode"); +kwd_mgr.New(Bool_.N, Xol_kwd_grp_.Id_pagesincategory_pages, "pagesincategory_pages", "pages"); +kwd_mgr.New(Bool_.N, Xol_kwd_grp_.Id_pagesincategory_subcats, "pagesincategory_subcats", "subcats"); +kwd_mgr.New(Bool_.N, Xol_kwd_grp_.Id_pagesincategory_files, "pagesincategory_files", "files"); } } diff --git a/400_xowa/src/gplx/xowa/html/Xoh_page_wtr_mgr_base.java b/400_xowa/src/gplx/xowa/langs/Xol_lang_stub.java similarity index 59% rename from 400_xowa/src/gplx/xowa/html/Xoh_page_wtr_mgr_base.java rename to 400_xowa/src/gplx/xowa/langs/Xol_lang_stub.java index 06d13477d..8f1a1e063 100644 --- a/400_xowa/src/gplx/xowa/html/Xoh_page_wtr_mgr_base.java +++ b/400_xowa/src/gplx/xowa/langs/Xol_lang_stub.java @@ -15,12 +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.html; import gplx.*; import gplx.xowa.*; -public abstract class Xoh_page_wtr_mgr_base { - public byte[] Css_common_bry() {return css_common_bry;} private byte[] css_common_bry; - public byte[] Css_wiki_bry() {return css_wiki_bry;} private byte[] css_wiki_bry; - public void Init_css_urls(Io_url css_common_url, Io_url css_wiki_url) { - this.css_common_bry = css_common_url.To_http_file_bry(); - this.css_wiki_bry = css_wiki_url.To_http_file_bry(); - } +package gplx.xowa.langs; import gplx.*; import gplx.xowa.*; +public class Xol_lang_stub { + public Xol_lang_stub(int id, byte[] key, byte[] canonical_name) {this.id = id; this.key = key; this.canonical_name = canonical_name;} + public int Id() {return id;} private final int id; // EX: 1 + public byte[] Key() {return key;} private final byte[] key; // EX: de + public byte[] Canonical_name() {return canonical_name;} private final byte[] canonical_name; // EX: Deutsch } diff --git a/400_xowa/src/gplx/xowa/langs/Xol_lang_stub_.java b/400_xowa/src/gplx/xowa/langs/Xol_lang_stub_.java new file mode 100644 index 000000000..02641332f --- /dev/null +++ b/400_xowa/src/gplx/xowa/langs/Xol_lang_stub_.java @@ -0,0 +1,942 @@ +/* +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; import gplx.*; import gplx.xowa.*; +import gplx.lists.*; +public class Xol_lang_stub_ { // lists all known stub_ary supported by MW + public static final byte[] Key__unknown = Bry_.Empty; + public static final ComparerAble Comparer_key = new Xol_sub_itm_comparer(); + public static final int + Id__intl = -2 +, Id__unknown = -1 +, Id_en = 0 +, Id_aa = 1 +, Id_ab = 2 +, Id_ace = 3 +, Id_ady_cyrl = 4 +, Id_aeb = 5 +, Id_af = 6 +, Id_ak = 7 +, Id_akz = 8 +, Id_aln = 9 +, Id_als = 10 +, Id_am = 11 +, Id_an = 12 +, Id_ang = 13 +, Id_anp = 14 +, Id_ar = 15 +, Id_arc = 16 +, Id_arn = 17 +, Id_aro = 18 +, Id_arq = 19 +, Id_ary = 20 +, Id_arz = 21 +, Id_as = 22 +, Id_ase = 23 +, Id_ast = 24 +, Id_av = 25 +, Id_avk = 26 +, Id_awa = 27 +, Id_ay = 28 +, Id_az = 29 +, Id_azb = 30 +, Id_ba = 31 +, Id_ban = 32 +, Id_bar = 33 +, Id_bat_smg = 34 +, Id_bbc = 35 +, Id_bbc_latn = 36 +, Id_bcc = 37 +, Id_bcl = 38 +, Id_be = 39 +, Id_be_tarask = 40 +, Id_be_x_old = 41 +, Id_bew = 42 +, Id_bg = 43 +, Id_bgn = 44 +, Id_bh = 45 +, Id_bho = 46 +, Id_bi = 47 +, Id_bjn = 48 +, Id_bm = 49 +, Id_bn = 50 +, Id_bo = 51 +, Id_bpy = 52 +, Id_bqi = 53 +, Id_br = 54 +, Id_brh = 55 +, Id_bs = 56 +, Id_bto = 57 +, Id_bug = 58 +, Id_bxr = 59 +, Id_ca = 60 +, Id_cbk_zam = 61 +, Id_cdo = 62 +, Id_ce = 63 +, Id_ceb = 64 +, Id_ch = 65 +, Id_chm = 66 +, Id_cho = 67 +, Id_chr = 68 +, Id_chy = 69 +, Id_ckb = 70 +, Id_co = 71 +, Id_cps = 72 +, Id_cr = 73 +, Id_crh = 74 +, Id_crh_cyrl = 75 +, Id_crh_latn = 76 +, Id_cs = 77 +, Id_csb = 78 +, Id_cu = 79 +, Id_cv = 80 +, Id_cy = 81 +, Id_da = 82 +, Id_de = 83 +, Id_de_at = 84 +, Id_de_ch = 85 +, Id_de_formal = 86 +, Id_diq = 87 +, Id_dsb = 88 +, Id_dtp = 89 +, Id_dv = 90 +, Id_dz = 91 +, Id_ee = 92 +, Id_egl = 93 +, Id_el = 94 +, Id_eml = 95 +, Id_en_ca = 96 +, Id_en_gb = 97 +, Id_en_rtl = 98 +, Id_enrtl = 99 +, Id_eo = 100 +, Id_es = 101 +, Id_es_formal = 102 +, Id_esu = 103 +, Id_et = 104 +, Id_eu = 105 +, Id_ext = 106 +, Id_fa = 107 +, Id_ff = 108 +, Id_fi = 109 +, Id_fit = 110 +, Id_fiu_vro = 111 +, Id_fj = 112 +, Id_fo = 113 +, Id_fr = 114 +, Id_frc = 115 +, Id_frp = 116 +, Id_frr = 117 +, Id_fur = 118 +, Id_fy = 119 +, Id_ga = 120 +, Id_gag = 121 +, Id_gan = 122 +, Id_gan_hans = 123 +, Id_gan_hant = 124 +, Id_gd = 125 +, Id_gl = 126 +, Id_glk = 127 +, Id_gn = 128 +, Id_gom = 129 +, Id_gom_deva = 130 +, Id_gom_latn = 131 +, Id_got = 132 +, Id_grc = 133 +, Id_gsw = 134 +, Id_gu = 135 +, Id_guc = 136 +, Id_gv = 137 +, Id_ha = 138 +, Id_hak = 139 +, Id_haw = 140 +, Id_he = 141 +, Id_hi = 142 +, Id_hif = 143 +, Id_hif_latn = 144 +, Id_hil = 145 +, Id_ho = 146 +, Id_hr = 147 +, Id_hrx = 148 +, Id_hsb = 149 +, Id_hsn = 150 +, Id_ht = 151 +, Id_hu = 152 +, Id_hu_formal = 153 +, Id_hy = 154 +, Id_hz = 155 +, Id_ia = 156 +, Id_id = 157 +, Id_ie = 158 +, Id_ig = 159 +, Id_ii = 160 +, Id_ik = 161 +, Id_ike_cans = 162 +, Id_ike_latn = 163 +, Id_ilo = 164 +, Id_inh = 165 +, Id_io = 166 +, Id_is = 167 +, Id_it = 168 +, Id_iu = 169 +, Id_izh = 170 +, Id_ja = 171 +, Id_jam = 172 +, Id_jbo = 173 +, Id_jut = 174 +, Id_jv = 175 +, Id_ka = 176 +, Id_kaa = 177 +, Id_kab = 178 +, Id_kbd = 179 +, Id_kbd_cyrl = 180 +, Id_kg = 181 +, Id_khw = 182 +, Id_ki = 183 +, Id_kiu = 184 +, Id_kj = 185 +, Id_kk = 186 +, Id_kk_arab = 187 +, Id_kk_cn = 188 +, Id_kk_cyrl = 189 +, Id_kk_kz = 190 +, Id_kk_latn = 191 +, Id_kk_tr = 192 +, Id_kl = 193 +, Id_km = 194 +, Id_kn = 195 +, Id_ko = 196 +, Id_ko_kp = 197 +, Id_koi = 198 +, Id_kr = 199 +, Id_krc = 200 +, Id_kri = 201 +, Id_krj = 202 +, Id_krl = 203 +, Id_ks = 204 +, Id_ks_arab = 205 +, Id_ks_deva = 206 +, Id_ksh = 207 +, Id_ku = 208 +, Id_ku_arab = 209 +, Id_ku_latn = 210 +, Id_kv = 211 +, Id_kw = 212 +, Id_ky = 213 +, Id_la = 214 +, Id_lad = 215 +, Id_lb = 216 +, Id_lbe = 217 +, Id_lez = 218 +, Id_lfn = 219 +, Id_lg = 220 +, Id_li = 221 +, Id_lij = 222 +, Id_liv = 223 +, Id_lmo = 224 +, Id_ln = 225 +, Id_lo = 226 +, Id_loz = 227 +, Id_lrc = 228 +, Id_lt = 229 +, Id_ltg = 230 +, Id_lus = 231 +, Id_luz = 232 +, Id_lv = 233 +, Id_lzh = 234 +, Id_lzz = 235 +, Id_mai = 236 +, Id_map_bms = 237 +, Id_mdf = 238 +, Id_mg = 239 +, Id_mh = 240 +, Id_mhr = 241 +, Id_mi = 242 +, Id_mic = 243 +, Id_min = 244 +, Id_mk = 245 +, Id_ml = 246 +, Id_mn = 247 +, Id_mnc = 248 +, Id_mo = 249 +, Id_mr = 250 +, Id_mrj = 251 +, Id_ms = 252 +, Id_mt = 253 +, Id_mui = 254 +, Id_mus = 255 +, Id_mwl = 256 +, Id_mwv = 257 +, Id_my = 258 +, Id_myv = 259 +, Id_mzn = 260 +, Id_na = 261 +, Id_nah = 262 +, Id_nan = 263 +, Id_nap = 264 +, Id_nb = 265 +, Id_nds = 266 +, Id_nds_nl = 267 +, Id_ne = 268 +, Id_new = 269 +, Id_ng = 270 +, Id_niu = 271 +, Id_nl = 272 +, Id_nl_informal = 273 +, Id_nn = 274 +, Id_no = 275 +, Id_nov = 276 +, Id_nrm = 277 +, Id_nso = 278 +, Id_nv = 279 +, Id_ny = 280 +, Id_oc = 281 +, Id_om = 282 +, Id_or = 283 +, Id_os = 284 +, Id_pa = 285 +, Id_pag = 286 +, Id_pam = 287 +, Id_pap = 288 +, Id_pbb = 289 +, Id_pcd = 290 +, Id_pdc = 291 +, Id_pdt = 292 +, Id_pfl = 293 +, Id_pi = 294 +, Id_pih = 295 +, Id_pl = 296 +, Id_pms = 297 +, Id_pnb = 298 +, Id_pnt = 299 +, Id_ppl = 300 +, Id_prg = 301 +, Id_ps = 302 +, Id_pt = 303 +, Id_pt_br = 304 +, Id_qqq = 305 +, Id_qu = 306 +, Id_qug = 307 +, Id_rap = 308 +, Id_rgn = 309 +, Id_rif = 310 +, Id_rm = 311 +, Id_rmf = 312 +, Id_rmy = 313 +, Id_rn = 314 +, Id_ro = 315 +, Id_roa_rup = 316 +, Id_roa_tara = 317 +, Id_ru = 318 +, Id_rue = 319 +, Id_rup = 320 +, Id_ruq = 321 +, Id_ruq_cyrl = 322 +, Id_ruq_latn = 323 +, Id_rw = 324 +, Id_ryu = 325 +, Id_sa = 326 +, Id_sah = 327 +, Id_sat = 328 +, Id_saz = 329 +, Id_sc = 330 +, Id_scn = 331 +, Id_sco = 332 +, Id_sd = 333 +, Id_sdc = 334 +, Id_sdh = 335 +, Id_se = 336 +, Id_sei = 337 +, Id_ses = 338 +, Id_sg = 339 +, Id_sgs = 340 +, Id_sh = 341 +, Id_shi = 342 +, Id_shn = 343 +, Id_si = 344 +, Id_simple = 345 +, Id_sk = 346 +, Id_sl = 347 +, Id_sli = 348 +, Id_sly = 349 +, Id_sm = 350 +, Id_sma = 351 +, Id_sn = 352 +, Id_so = 353 +, Id_sq = 354 +, Id_sr = 355 +, Id_sr_ec = 356 +, Id_sr_el = 357 +, Id_srn = 358 +, Id_ss = 359 +, Id_st = 360 +, Id_stq = 361 +, Id_su = 362 +, Id_sv = 363 +, Id_sw = 364 +, Id_sxu = 365 +, Id_szl = 366 +, Id_ta = 367 +, Id_tcy = 368 +, Id_te = 369 +, Id_test = 370 +, Id_tet = 371 +, Id_tg = 372 +, Id_tg_cyrl = 373 +, Id_tg_latn = 374 +, Id_th = 375 +, Id_ti = 376 +, Id_tk = 377 +, Id_tl = 378 +, Id_tly = 379 +, Id_tn = 380 +, Id_to = 381 +, Id_tokipona = 382 +, Id_tp = 383 +, Id_tpi = 384 +, Id_tr = 385 +, Id_tru = 386 +, Id_ts = 387 +, Id_tt = 388 +, Id_tt_cyrl = 389 +, Id_tt_latn = 390 +, Id_ttt = 391 +, Id_tum = 392 +, Id_tw = 393 +, Id_ty = 394 +, Id_tyv = 395 +, Id_tzm = 396 +, Id_udm = 397 +, Id_ug = 398 +, Id_ug_arab = 399 +, Id_ug_latn = 400 +, Id_uk = 401 +, Id_ur = 402 +, Id_uz = 403 +, Id_ve = 404 +, Id_vec = 405 +, Id_vep = 406 +, Id_vi = 407 +, Id_vls = 408 +, Id_vmf = 409 +, Id_vo = 410 +, Id_vot = 411 +, Id_vro = 412 +, Id_wa = 413 +, Id_war = 414 +, Id_wo = 415 +, Id_wuu = 416 +, Id_xal = 417 +, Id_xh = 418 +, Id_xmf = 419 +, Id_yi = 420 +, Id_yo = 421 +, Id_yue = 422 +, Id_za = 423 +, Id_zea = 424 +, Id_zh = 425 +, Id_zh_classical = 426 +, Id_zh_cn = 427 +, Id_zh_hans = 428 +, Id_zh_hant = 429 +, Id_zh_hk = 430 +, Id_zh_min_nan = 431 +, Id_zh_mo = 432 +, Id_zh_my = 433 +, Id_zh_sg = 434 +, Id_zh_tw = 435 +, Id_zh_yue = 436 +, Id_zu = 437 + ; + public static final int Id__max = 438; + public static Hash_adp_bry Regy() { + if (stub_hash == null) { // NOTE: any parenthetical String below will have an "unseen" character of "\xE2\x80\xAA" at the begining and "\xE2\x80\xAC" at the end. They are responsible for parentheses-orientation in RTL stub_ary. +stub_hash = Hash_adp_bry.ci_a7(); // ASCII:lang_code; NOTE: must be ci; EX: {{#languages:FR}} +Regy_add(stub_hash, Id_en, "en", "English"); +Regy_add(stub_hash, Id_aa, "aa", "Qafár af"); +Regy_add(stub_hash, Id_ab, "ab", "Аҧсуа"); +Regy_add(stub_hash, Id_ace, "ace", "Acèh"); +Regy_add(stub_hash, Id_ady_cyrl, "ady-cyrl", "West Circassian (Cyrillic)"); +Regy_add(stub_hash, Id_aeb, "aeb", "زَوُن"); +Regy_add(stub_hash, Id_af, "af", "Afrikaans"); +Regy_add(stub_hash, Id_ak, "ak", "Akan"); +Regy_add(stub_hash, Id_akz, "akz", "Alibamu"); +Regy_add(stub_hash, Id_aln, "aln", "Gegë"); +Regy_add(stub_hash, Id_als, "als", "Alemannisch"); +Regy_add(stub_hash, Id_am, "am", "አማርኛ"); +Regy_add(stub_hash, Id_an, "an", "Aragonés"); +Regy_add(stub_hash, Id_ang, "ang", "Ænglisc"); +Regy_add(stub_hash, Id_anp, "anp", "अङ्गिका"); +Regy_add(stub_hash, Id_ar, "ar", "العربية"); +Regy_add(stub_hash, Id_arc, "arc", "ܐܪܡܝܐ"); +Regy_add(stub_hash, Id_arn, "arn", "Mapudungun"); +Regy_add(stub_hash, Id_aro, "aro", "Araona"); +Regy_add(stub_hash, Id_arq, "arq", "Algerian Arabic"); +Regy_add(stub_hash, Id_ary, "ary", "Maġribi"); +Regy_add(stub_hash, Id_arz, "arz", "مصرى"); +Regy_add(stub_hash, Id_as, "as", "অসমীয়া"); +Regy_add(stub_hash, Id_ase, "ase", "American Sign Language"); +Regy_add(stub_hash, Id_ast, "ast", "Asturianu"); +Regy_add(stub_hash, Id_av, "av", "Авар"); +Regy_add(stub_hash, Id_avk, "avk", "Kotava"); +Regy_add(stub_hash, Id_awa, "awa", "Awadhi"); +Regy_add(stub_hash, Id_ay, "ay", "Aymar aru"); +Regy_add(stub_hash, Id_az, "az", "Azərbaycanca"); +Regy_add(stub_hash, Id_azb, "azb", "South Azerbaijani"); +Regy_add(stub_hash, Id_ba, "ba", "Башҡортса"); +Regy_add(stub_hash, Id_ban, "ban", "ᬩᬲᬩᬮᬶ"); +Regy_add(stub_hash, Id_bar, "bar", "Boarisch"); +Regy_add(stub_hash, Id_bat_smg, "bat-smg", "Žemaitėška"); +Regy_add(stub_hash, Id_bbc, "bbc", "Batak Toba"); +Regy_add(stub_hash, Id_bbc_latn, "bbc-latn", "Batak Toba (Latin)"); +Regy_add(stub_hash, Id_bcc, "bcc", "بلوچی مکرانی"); +Regy_add(stub_hash, Id_bcl, "bcl", "Bikol Central"); +Regy_add(stub_hash, Id_be, "be", "Беларуская"); +Regy_add(stub_hash, Id_be_tarask, "be-tarask", "‪Беларуская (тарашкевіца)‬"); +Regy_add(stub_hash, Id_be_x_old, "be-x-old", "‪Беларуская (тарашкевіца)‬"); +Regy_add(stub_hash, Id_bew, "bew", "Betawi"); +Regy_add(stub_hash, Id_bg, "bg", "Български"); +Regy_add(stub_hash, Id_bgn, "bgn", "Balochi"); +Regy_add(stub_hash, Id_bh, "bh", "भोजपुरी"); +Regy_add(stub_hash, Id_bho, "bho", "भोजपुरी"); +Regy_add(stub_hash, Id_bi, "bi", "Bislama"); +Regy_add(stub_hash, Id_bjn, "bjn", "Bahasa Banjar"); +Regy_add(stub_hash, Id_bm, "bm", "Bamanankan"); +Regy_add(stub_hash, Id_bn, "bn", "বাংলা"); +Regy_add(stub_hash, Id_bo, "bo", "བོད་ཡིག"); +Regy_add(stub_hash, Id_bpy, "bpy", "ইমার ঠার/বিষ্ণুপ্রিয়া মণিপুরী"); +Regy_add(stub_hash, Id_bqi, "bqi", "بختياري"); +Regy_add(stub_hash, Id_br, "br", "Brezhoneg"); +Regy_add(stub_hash, Id_brh, "brh", "Bráhuí"); +Regy_add(stub_hash, Id_bs, "bs", "Bosanski"); +Regy_add(stub_hash, Id_bto, "bto", "Rinconada Bikol"); +Regy_add(stub_hash, Id_bug, "bug", "ᨅᨔ ᨕᨘᨁᨗ"); +Regy_add(stub_hash, Id_bxr, "bxr", "Буряад"); +Regy_add(stub_hash, Id_ca, "ca", "Català"); +Regy_add(stub_hash, Id_cbk_zam, "cbk-zam", "Chavacano de Zamboanga"); +Regy_add(stub_hash, Id_cdo, "cdo", "Mìng-dĕ̤ng-ngṳ̄"); +Regy_add(stub_hash, Id_ce, "ce", "Нохчийн"); +Regy_add(stub_hash, Id_ceb, "ceb", "Cebuano"); +Regy_add(stub_hash, Id_ch, "ch", "Chamoru"); +Regy_add(stub_hash, Id_chm, "chm", "Mari"); +Regy_add(stub_hash, Id_cho, "cho", "Choctaw"); +Regy_add(stub_hash, Id_chr, "chr", "ᏣᎳᎩ"); +Regy_add(stub_hash, Id_chy, "chy", "Tsetsêhestâhese"); +Regy_add(stub_hash, Id_ckb, "ckb", "کوردی"); +Regy_add(stub_hash, Id_co, "co", "Corsu"); +Regy_add(stub_hash, Id_cps, "cps", "Capiceño"); +Regy_add(stub_hash, Id_cr, "cr", "Nēhiyawēwin / ᓀᐦᐃᔭᐍᐏᐣ"); +Regy_add(stub_hash, Id_crh, "crh", "Qırımtatarca"); +Regy_add(stub_hash, Id_crh_cyrl, "crh-cyrl", "‪Къырымтатарджа (Кирилл)‬"); +Regy_add(stub_hash, Id_crh_latn, "crh-latn", "‪Qırımtatarca (Latin)‬"); +Regy_add(stub_hash, Id_cs, "cs", "Česky"); +Regy_add(stub_hash, Id_csb, "csb", "Kaszëbsczi"); +Regy_add(stub_hash, Id_cu, "cu", "Словѣ́ньскъ / ⰔⰎⰑⰂⰡⰐⰠⰔⰍⰟ"); +Regy_add(stub_hash, Id_cv, "cv", "Чӑвашла"); +Regy_add(stub_hash, Id_cy, "cy", "Cymraeg"); +Regy_add(stub_hash, Id_da, "da", "Dansk"); +Regy_add(stub_hash, Id_de, "de", "Deutsch"); +Regy_add(stub_hash, Id_de_at, "de-at", "Österreichisches Deutsch"); +Regy_add(stub_hash, Id_de_ch, "de-ch", "Schweizer Hochdeutsch"); +Regy_add(stub_hash, Id_de_formal, "de-formal", "‪Deutsch (Sie-Form)‬"); +Regy_add(stub_hash, Id_diq, "diq", "Zazaki"); +Regy_add(stub_hash, Id_dsb, "dsb", "Dolnoserbski"); +Regy_add(stub_hash, Id_dtp, "dtp", "Dusun Bundu-liwan"); +Regy_add(stub_hash, Id_dv, "dv", "ދިވެހިބަސް"); +Regy_add(stub_hash, Id_dz, "dz", "ཇོང་ཁ"); +Regy_add(stub_hash, Id_ee, "ee", "Eʋegbe"); +Regy_add(stub_hash, Id_egl, "egl", "Emiliàn"); +Regy_add(stub_hash, Id_el, "el", "Ελληνικά"); +Regy_add(stub_hash, Id_eml, "eml", "Emiliàn e rumagnòl"); +Regy_add(stub_hash, Id_en_ca, "en-ca", "Canadian English"); +Regy_add(stub_hash, Id_en_gb, "en-gb", "British English"); +Regy_add(stub_hash, Id_en_rtl, "en-rtl", "English rtl"); +Regy_add(stub_hash, Id_enrtl, "enrtl", "English (right to left)"); +Regy_add(stub_hash, Id_eo, "eo", "Esperanto"); +Regy_add(stub_hash, Id_es, "es", "Español"); +Regy_add(stub_hash, Id_es_formal, "es-formal", "Spanish (formal)"); +Regy_add(stub_hash, Id_esu, "esu", "Yuk'ip"); +Regy_add(stub_hash, Id_et, "et", "Eesti"); +Regy_add(stub_hash, Id_eu, "eu", "Euskara"); +Regy_add(stub_hash, Id_ext, "ext", "Estremeñu"); +Regy_add(stub_hash, Id_fa, "fa", "فارسی"); +Regy_add(stub_hash, Id_ff, "ff", "Fulfulde"); +Regy_add(stub_hash, Id_fi, "fi", "Suomi"); +Regy_add(stub_hash, Id_fit, "fit", "meänkieli"); +Regy_add(stub_hash, Id_fiu_vro, "fiu-vro", "Võro"); +Regy_add(stub_hash, Id_fj, "fj", "Na Vosa Vakaviti"); +Regy_add(stub_hash, Id_fo, "fo", "Føroyskt"); +Regy_add(stub_hash, Id_fr, "fr", "Français"); +Regy_add(stub_hash, Id_frc, "frc", "Français cadien"); +Regy_add(stub_hash, Id_frp, "frp", "Arpetan"); +Regy_add(stub_hash, Id_frr, "frr", "Nordfriisk"); +Regy_add(stub_hash, Id_fur, "fur", "Furlan"); +Regy_add(stub_hash, Id_fy, "fy", "Frysk"); +Regy_add(stub_hash, Id_ga, "ga", "Gaeilge"); +Regy_add(stub_hash, Id_gag, "gag", "Gagauz"); +Regy_add(stub_hash, Id_gan, "gan", "贛語"); +Regy_add(stub_hash, Id_gan_hans, "gan-hans", "‪赣语(简体)‬"); +Regy_add(stub_hash, Id_gan_hant, "gan-hant", "‪贛語(繁體)‬"); +Regy_add(stub_hash, Id_gd, "gd", "Gàidhlig"); +Regy_add(stub_hash, Id_gl, "gl", "Galego"); +Regy_add(stub_hash, Id_glk, "glk", "گیلکی"); +Regy_add(stub_hash, Id_gn, "gn", "Avañe'ẽ"); +Regy_add(stub_hash, Id_gom, "gom", "कोंकणी"); +Regy_add(stub_hash, Id_gom_deva, "gom-deva", "Konkani"); +Regy_add(stub_hash, Id_gom_latn, "gom-latn", "कोंकणी (Latin)"); +Regy_add(stub_hash, Id_got, "got", "𐌲𐌿𐍄𐌹𐍃𐌺"); +Regy_add(stub_hash, Id_grc, "grc", "Ἀρχαία ἑλληνικὴ"); +Regy_add(stub_hash, Id_gsw, "gsw", "Alemannisch"); +Regy_add(stub_hash, Id_gu, "gu", "ગુજરાતી"); +Regy_add(stub_hash, Id_guc, "guc", "Wayuu"); +Regy_add(stub_hash, Id_gv, "gv", "Gaelg"); +Regy_add(stub_hash, Id_ha, "ha", "هَوُسَ"); +Regy_add(stub_hash, Id_hak, "hak", "Hak-kâ-fa"); +Regy_add(stub_hash, Id_haw, "haw", "Hawai`i"); +Regy_add(stub_hash, Id_he, "he", "עברית"); +Regy_add(stub_hash, Id_hi, "hi", "हिन्दी"); +Regy_add(stub_hash, Id_hif, "hif", "Fiji Hindi"); +Regy_add(stub_hash, Id_hif_latn, "hif-latn", "Fiji Hindi"); +Regy_add(stub_hash, Id_hil, "hil", "Ilonggo"); +Regy_add(stub_hash, Id_ho, "ho", "Hiri Motu"); +Regy_add(stub_hash, Id_hr, "hr", "Hrvatski"); +Regy_add(stub_hash, Id_hrx, "hrx", "Hunsriker"); +Regy_add(stub_hash, Id_hsb, "hsb", "Hornjoserbsce"); +Regy_add(stub_hash, Id_hsn, "hsn", "Xiang"); +Regy_add(stub_hash, Id_ht, "ht", "Kreyòl ayisyen"); +Regy_add(stub_hash, Id_hu, "hu", "Magyar"); +Regy_add(stub_hash, Id_hu_formal, "hu-formal", "Magyar (formal)"); +Regy_add(stub_hash, Id_hy, "hy", "Հայերեն"); +Regy_add(stub_hash, Id_hz, "hz", "Otsiherero"); +Regy_add(stub_hash, Id_ia, "ia", "Interlingua"); +Regy_add(stub_hash, Id_id, "id", "Bahasa Indonesia"); +Regy_add(stub_hash, Id_ie, "ie", "Interlingue"); +Regy_add(stub_hash, Id_ig, "ig", "Igbo"); +Regy_add(stub_hash, Id_ii, "ii", "ꆇꉙ"); +Regy_add(stub_hash, Id_ik, "ik", "Iñupiak"); +Regy_add(stub_hash, Id_ike_cans, "ike-cans", "ᐃᓄᒃᑎᑐᑦ"); +Regy_add(stub_hash, Id_ike_latn, "ike-latn", "inuktitut"); +Regy_add(stub_hash, Id_ilo, "ilo", "Ilokano"); +Regy_add(stub_hash, Id_inh, "inh", "ГІалгІай Ğalğaj"); +Regy_add(stub_hash, Id_io, "io", "Ido"); +Regy_add(stub_hash, Id_is, "is", "Íslenska"); +Regy_add(stub_hash, Id_it, "it", "Italiano"); +Regy_add(stub_hash, Id_iu, "iu", "ᐃᓄᒃᑎᑐᑦ/inuktitut"); +Regy_add(stub_hash, Id_izh, "izh", "Ingrian"); +Regy_add(stub_hash, Id_ja, "ja", "日本語"); +Regy_add(stub_hash, Id_jam, "jam", "Patois"); +Regy_add(stub_hash, Id_jbo, "jbo", "Lojban"); +Regy_add(stub_hash, Id_jut, "jut", "Jysk"); +Regy_add(stub_hash, Id_jv, "jv", "Basa Jawa"); +Regy_add(stub_hash, Id_ka, "ka", "ქართული"); +Regy_add(stub_hash, Id_kaa, "kaa", "Qaraqalpaqsha"); +Regy_add(stub_hash, Id_kab, "kab", "Taqbaylit"); +Regy_add(stub_hash, Id_kbd, "kbd", "Къэбэрдеибзэ / Qabardjajəbza"); +Regy_add(stub_hash, Id_kbd_cyrl, "kbd-cyrl", "къэбэрдеибзэ"); +Regy_add(stub_hash, Id_kg, "kg", "Kongo"); +Regy_add(stub_hash, Id_khw, "khw", "کھوار"); +Regy_add(stub_hash, Id_ki, "ki", "Gĩkũyũ"); +Regy_add(stub_hash, Id_kiu, "kiu", "Kırmancki"); +Regy_add(stub_hash, Id_kj, "kj", "Kwanyama"); +Regy_add(stub_hash, Id_kk, "kk", "Қазақша"); +Regy_add(stub_hash, Id_kk_arab, "kk-arab", "‫قازاقشا (تٴوتە)‬"); +Regy_add(stub_hash, Id_kk_cn, "kk-cn", "‫قازاقشا (جۇنگو)‬"); +Regy_add(stub_hash, Id_kk_cyrl, "kk-cyrl", "‪Қазақша (кирил)‬"); +Regy_add(stub_hash, Id_kk_kz, "kk-kz", "‪Қазақша (Қазақстан)‬"); +Regy_add(stub_hash, Id_kk_latn, "kk-latn", "‪Qazaqşa (latın)‬"); +Regy_add(stub_hash, Id_kk_tr, "kk-tr", "‪Qazaqşa (Türkïya)‬"); +Regy_add(stub_hash, Id_kl, "kl", "Kalaallisut"); +Regy_add(stub_hash, Id_km, "km", "ភាសាខ្មែរ"); +Regy_add(stub_hash, Id_kn, "kn", "ಕನ್ನಡ"); +Regy_add(stub_hash, Id_ko, "ko", "한국어"); +Regy_add(stub_hash, Id_ko_kp, "ko-kp", "한국어 (조선)"); +Regy_add(stub_hash, Id_koi, "koi", "Перем Коми"); +Regy_add(stub_hash, Id_kr, "kr", "Kanuri"); +Regy_add(stub_hash, Id_krc, "krc", "Къарачай-Малкъар"); +Regy_add(stub_hash, Id_kri, "kri", "Krio"); +Regy_add(stub_hash, Id_krj, "krj", "Kinaray-a"); +Regy_add(stub_hash, Id_krl, "krl", "Karelian"); +Regy_add(stub_hash, Id_ks, "ks", "कश्मीरी - (كشميري)"); +Regy_add(stub_hash, Id_ks_arab, "ks-arab", "کٲشُر"); +Regy_add(stub_hash, Id_ks_deva, "ks-deva", "कॉशुर"); +Regy_add(stub_hash, Id_ksh, "ksh", "Ripoarisch"); +Regy_add(stub_hash, Id_ku, "ku", "Kurdî"); +Regy_add(stub_hash, Id_ku_arab, "ku-arab", "‫كوردي (عەرەبی)‬"); +Regy_add(stub_hash, Id_ku_latn, "ku-latn", "‪Kurdî (latînî)‬"); +Regy_add(stub_hash, Id_kv, "kv", "Коми"); +Regy_add(stub_hash, Id_kw, "kw", "Kernowek"); +Regy_add(stub_hash, Id_ky, "ky", "Кыргызча"); +Regy_add(stub_hash, Id_la, "la", "Latina"); +Regy_add(stub_hash, Id_lad, "lad", "Ladino"); +Regy_add(stub_hash, Id_lb, "lb", "Lëtzebuergesch"); +Regy_add(stub_hash, Id_lbe, "lbe", "Лакку"); +Regy_add(stub_hash, Id_lez, "lez", "Лезги"); +Regy_add(stub_hash, Id_lfn, "lfn", "Lingua Franca Nova"); +Regy_add(stub_hash, Id_lg, "lg", "Luganda"); +Regy_add(stub_hash, Id_li, "li", "Limburgs"); +Regy_add(stub_hash, Id_lij, "lij", "Líguru"); +Regy_add(stub_hash, Id_liv, "liv", "Līvõ kēļ"); +Regy_add(stub_hash, Id_lmo, "lmo", "Lumbaart"); +Regy_add(stub_hash, Id_ln, "ln", "Lingála"); +Regy_add(stub_hash, Id_lo, "lo", "ລາວ"); +Regy_add(stub_hash, Id_loz, "loz", "Silozi"); +Regy_add(stub_hash, Id_lrc, "lrc", "لوری"); +Regy_add(stub_hash, Id_lt, "lt", "Lietuvių"); +Regy_add(stub_hash, Id_ltg, "ltg", "Latgaļu"); +Regy_add(stub_hash, Id_lus, "lus", "Mizo ţawng"); +Regy_add(stub_hash, Id_luz, "luz", "Luri"); +Regy_add(stub_hash, Id_lv, "lv", "Latviešu"); +Regy_add(stub_hash, Id_lzh, "lzh", "文言"); +Regy_add(stub_hash, Id_lzz, "lzz", "Lazuri"); +Regy_add(stub_hash, Id_mai, "mai", "मैथिली"); +Regy_add(stub_hash, Id_map_bms, "map-bms", "Basa Banyumasan"); +Regy_add(stub_hash, Id_mdf, "mdf", "Мокшень"); +Regy_add(stub_hash, Id_mg, "mg", "Malagasy"); +Regy_add(stub_hash, Id_mh, "mh", "Ebon"); +Regy_add(stub_hash, Id_mhr, "mhr", "Олык Марий"); +Regy_add(stub_hash, Id_mi, "mi", "Māori"); +Regy_add(stub_hash, Id_mic, "mic", "Mi'kmaq"); +Regy_add(stub_hash, Id_min, "min", "Baso Minangkabau"); +Regy_add(stub_hash, Id_mk, "mk", "Македонски"); +Regy_add(stub_hash, Id_ml, "ml", "മലയാളം"); +Regy_add(stub_hash, Id_mn, "mn", "Монгол"); +Regy_add(stub_hash, Id_mnc, "mnc", "Manchu"); +Regy_add(stub_hash, Id_mo, "mo", "Молдовеняскэ"); +Regy_add(stub_hash, Id_mr, "mr", "मराठी"); +Regy_add(stub_hash, Id_mrj, "mrj", "Кырык мары"); +Regy_add(stub_hash, Id_ms, "ms", "Bahasa Melayu"); +Regy_add(stub_hash, Id_mt, "mt", "Malti"); +Regy_add(stub_hash, Id_mui, "mui", "Musi"); +Regy_add(stub_hash, Id_mus, "mus", "Mvskoke"); +Regy_add(stub_hash, Id_mwl, "mwl", "Mirandés"); +Regy_add(stub_hash, Id_mwv, "mwv", "Behase Mentawei"); +Regy_add(stub_hash, Id_my, "my", "Burmese"); +Regy_add(stub_hash, Id_myv, "myv", "Эрзянь"); +Regy_add(stub_hash, Id_mzn, "mzn", "مازِرونی"); +Regy_add(stub_hash, Id_na, "na", "Dorerin Naoero"); +Regy_add(stub_hash, Id_nah, "nah", "Nāhuatl"); +Regy_add(stub_hash, Id_nan, "nan", "Bân-lâm-gú"); +Regy_add(stub_hash, Id_nap, "nap", "Nnapulitano"); +Regy_add(stub_hash, Id_nb, "nb", "‪Norsk (bokmål)‬"); +Regy_add(stub_hash, Id_nds, "nds", "Plattdüütsch"); +Regy_add(stub_hash, Id_nds_nl, "nds-nl", "Nedersaksisch"); +Regy_add(stub_hash, Id_ne, "ne", "नेपाली"); +Regy_add(stub_hash, Id_new, "new", "नेपाल भाषा"); +Regy_add(stub_hash, Id_ng, "ng", "Oshiwambo"); +Regy_add(stub_hash, Id_niu, "niu", "Niuē"); +Regy_add(stub_hash, Id_nl, "nl", "Nederlands"); +Regy_add(stub_hash, Id_nl_informal, "nl-informal", "‪Nederlands (informeel)‬"); +Regy_add(stub_hash, Id_nn, "nn", "‪Norsk (nynorsk)‬"); +Regy_add(stub_hash, Id_no, "no", "‪Norsk (bokmål)‬"); +Regy_add(stub_hash, Id_nov, "nov", "Novial"); +Regy_add(stub_hash, Id_nrm, "nrm", "Nouormand"); +Regy_add(stub_hash, Id_nso, "nso", "Sesotho sa Leboa"); +Regy_add(stub_hash, Id_nv, "nv", "Diné bizaad"); +Regy_add(stub_hash, Id_ny, "ny", "Chi-Chewa"); +Regy_add(stub_hash, Id_oc, "oc", "Occitan"); +Regy_add(stub_hash, Id_om, "om", "Oromoo"); +Regy_add(stub_hash, Id_or, "or", "ଓଡ଼ିଆ"); +Regy_add(stub_hash, Id_os, "os", "Иронау"); +Regy_add(stub_hash, Id_pa, "pa", "ਪੰਜਾਬੀ"); +Regy_add(stub_hash, Id_pag, "pag", "Pangasinan"); +Regy_add(stub_hash, Id_pam, "pam", "Kapampangan"); +Regy_add(stub_hash, Id_pap, "pap", "Papiamentu"); +Regy_add(stub_hash, Id_pbb, "pbb", "Páez"); +Regy_add(stub_hash, Id_pcd, "pcd", "Picard"); +Regy_add(stub_hash, Id_pdc, "pdc", "Deitsch"); +Regy_add(stub_hash, Id_pdt, "pdt", "Plautdietsch"); +Regy_add(stub_hash, Id_pfl, "pfl", "Pälzisch"); +Regy_add(stub_hash, Id_pi, "pi", "पािऴ"); +Regy_add(stub_hash, Id_pih, "pih", "Norfuk / Pitkern"); +Regy_add(stub_hash, Id_pl, "pl", "Polski"); +Regy_add(stub_hash, Id_pms, "pms", "Piemontèis"); +Regy_add(stub_hash, Id_pnb, "pnb", "پنجابی"); +Regy_add(stub_hash, Id_pnt, "pnt", "Ποντιακά"); +Regy_add(stub_hash, Id_ppl, "ppl", "Pipil"); +Regy_add(stub_hash, Id_prg, "prg", "Prūsiskan"); +Regy_add(stub_hash, Id_ps, "ps", "پښتو"); +Regy_add(stub_hash, Id_pt, "pt", "Português"); +Regy_add(stub_hash, Id_pt_br, "pt-br", "Português do Brasil"); +Regy_add(stub_hash, Id_qqq, "qqq", "MediaWiki sample"); +Regy_add(stub_hash, Id_qu, "qu", "Runa Simi"); +Regy_add(stub_hash, Id_qug, "qug", "Runa shimi"); +Regy_add(stub_hash, Id_rap, "rap", "Rapa Nui"); +Regy_add(stub_hash, Id_rgn, "rgn", "Rumagnôl"); +Regy_add(stub_hash, Id_rif, "rif", "Tarifit"); +Regy_add(stub_hash, Id_rm, "rm", "Rumantsch"); +Regy_add(stub_hash, Id_rmf, "rmf", "Finnish Kalo"); +Regy_add(stub_hash, Id_rmy, "rmy", "Romani"); +Regy_add(stub_hash, Id_rn, "rn", "Kirundi"); +Regy_add(stub_hash, Id_ro, "ro", "Română"); +Regy_add(stub_hash, Id_roa_rup, "roa-rup", "Armãneashce"); +Regy_add(stub_hash, Id_roa_tara, "roa-tara", "Tarandíne"); +Regy_add(stub_hash, Id_ru, "ru", "Русский"); +Regy_add(stub_hash, Id_rue, "rue", "Русиньскый"); +Regy_add(stub_hash, Id_rup, "rup", "Armãneașce"); +Regy_add(stub_hash, Id_ruq, "ruq", "Vlăheşte"); +Regy_add(stub_hash, Id_ruq_cyrl, "ruq-cyrl", "Влахесте"); +Regy_add(stub_hash, Id_ruq_latn, "ruq-latn", "Vlăheşte"); +Regy_add(stub_hash, Id_rw, "rw", "Kinyarwanda"); +Regy_add(stub_hash, Id_ryu, "ryu", "Okinawan"); +Regy_add(stub_hash, Id_sa, "sa", "संस्कृत"); +Regy_add(stub_hash, Id_sah, "sah", "Саха тыла"); +Regy_add(stub_hash, Id_sat, "sat", "Santali"); +Regy_add(stub_hash, Id_saz, "saz", "Saurashtra"); +Regy_add(stub_hash, Id_sc, "sc", "Sardu"); +Regy_add(stub_hash, Id_scn, "scn", "Sicilianu"); +Regy_add(stub_hash, Id_sco, "sco", "Scots"); +Regy_add(stub_hash, Id_sd, "sd", "سنڌي"); +Regy_add(stub_hash, Id_sdc, "sdc", "Sassaresu"); +Regy_add(stub_hash, Id_sdh, "sdh", "Southern Kurdish"); +Regy_add(stub_hash, Id_se, "se", "Sámegiella"); +Regy_add(stub_hash, Id_sei, "sei", "Cmique Itom"); +Regy_add(stub_hash, Id_ses, "ses", "Songhay"); +Regy_add(stub_hash, Id_sg, "sg", "Sängö"); +Regy_add(stub_hash, Id_sgs, "sgs", "Žemaitėška"); +Regy_add(stub_hash, Id_sh, "sh", "Srpskohrvatski / Српскохрватски"); +Regy_add(stub_hash, Id_shi, "shi", "Tašlḥiyt"); +Regy_add(stub_hash, Id_shn, "shn", "Shan"); +Regy_add(stub_hash, Id_si, "si", "Sinhalese"); +Regy_add(stub_hash, Id_simple, "simple", "Simple English"); +Regy_add(stub_hash, Id_sk, "sk", "Slovenčina"); +Regy_add(stub_hash, Id_sl, "sl", "Slovenščina"); +Regy_add(stub_hash, Id_sli, "sli", "Schläsch"); +Regy_add(stub_hash, Id_sly, "sly", "Selayar"); +Regy_add(stub_hash, Id_sm, "sm", "Gagana Samoa"); +Regy_add(stub_hash, Id_sma, "sma", "Åarjelsaemien"); +Regy_add(stub_hash, Id_sn, "sn", "chiShona"); +Regy_add(stub_hash, Id_so, "so", "Soomaaliga"); +Regy_add(stub_hash, Id_sq, "sq", "Shqip"); +Regy_add(stub_hash, Id_sr, "sr", "Српски / Srpski"); +Regy_add(stub_hash, Id_sr_ec, "sr-ec", "‪Српски (ћирилица)‬"); +Regy_add(stub_hash, Id_sr_el, "sr-el", "‪Srpski (latinica)‬"); +Regy_add(stub_hash, Id_srn, "srn", "Sranantongo"); +Regy_add(stub_hash, Id_ss, "ss", "SiSwati"); +Regy_add(stub_hash, Id_st, "st", "Sesotho"); +Regy_add(stub_hash, Id_stq, "stq", "Seeltersk"); +Regy_add(stub_hash, Id_su, "su", "Basa Sunda"); +Regy_add(stub_hash, Id_sv, "sv", "Svenska"); +Regy_add(stub_hash, Id_sw, "sw", "Kiswahili"); +Regy_add(stub_hash, Id_sxu, "sxu", "Saxon, Upper"); +Regy_add(stub_hash, Id_szl, "szl", "Ślůnski"); +Regy_add(stub_hash, Id_ta, "ta", "தமிழ்"); +Regy_add(stub_hash, Id_tcy, "tcy", "ತುಳು"); +Regy_add(stub_hash, Id_te, "te", "తెలుగు"); +Regy_add(stub_hash, Id_test, "test", "MediaWiki test"); +Regy_add(stub_hash, Id_tet, "tet", "Tetun"); +Regy_add(stub_hash, Id_tg, "tg", "Тоҷикӣ"); +Regy_add(stub_hash, Id_tg_cyrl, "tg-cyrl", "Тоҷикӣ"); +Regy_add(stub_hash, Id_tg_latn, "tg-latn", "tojikī"); +Regy_add(stub_hash, Id_th, "th", "ไทย"); +Regy_add(stub_hash, Id_ti, "ti", "ትግርኛ"); +Regy_add(stub_hash, Id_tk, "tk", "Türkmençe"); +Regy_add(stub_hash, Id_tl, "tl", "Tagalog"); +Regy_add(stub_hash, Id_tly, "tly", "толышә зывон"); +Regy_add(stub_hash, Id_tn, "tn", "Setswana"); +Regy_add(stub_hash, Id_to, "to", "lea faka-Tonga"); +Regy_add(stub_hash, Id_tokipona, "tokipona", "Toki Pona"); +Regy_add(stub_hash, Id_tp, "tp", "Toki Pona (deprecated:tokipona)"); +Regy_add(stub_hash, Id_tpi, "tpi", "Tok Pisin"); +Regy_add(stub_hash, Id_tr, "tr", "Türkçe"); +Regy_add(stub_hash, Id_tru, "tru", "Ṫuroyo"); +Regy_add(stub_hash, Id_ts, "ts", "Xitsonga"); +Regy_add(stub_hash, Id_tt, "tt", "Татарча/Tatarça"); +Regy_add(stub_hash, Id_tt_cyrl, "tt-cyrl", "Татарча"); +Regy_add(stub_hash, Id_tt_latn, "tt-latn", "Tatarça"); +Regy_add(stub_hash, Id_ttt, "ttt", "Tat, Muslim"); +Regy_add(stub_hash, Id_tum, "tum", "chiTumbuka"); +Regy_add(stub_hash, Id_tw, "tw", "Twi"); +Regy_add(stub_hash, Id_ty, "ty", "Reo Mā`ohi"); +Regy_add(stub_hash, Id_tyv, "tyv", "Тыва дыл"); +Regy_add(stub_hash, Id_tzm, "tzm", "ⵜⴰⵎⴰⵣⵉⵖⵜ"); +Regy_add(stub_hash, Id_udm, "udm", "Удмурт"); +Regy_add(stub_hash, Id_ug, "ug", "ئۇيغۇرچە / Uyghurche‎"); +Regy_add(stub_hash, Id_ug_arab, "ug-arab", "ئۇيغۇرچە"); +Regy_add(stub_hash, Id_ug_latn, "ug-latn", "Uyghurche‎"); +Regy_add(stub_hash, Id_uk, "uk", "Українська"); +Regy_add(stub_hash, Id_ur, "ur", "اردو"); +Regy_add(stub_hash, Id_uz, "uz", "O'zbek"); +Regy_add(stub_hash, Id_ve, "ve", "Tshivenda"); +Regy_add(stub_hash, Id_vec, "vec", "Vèneto"); +Regy_add(stub_hash, Id_vep, "vep", "Vepsan kel'"); +Regy_add(stub_hash, Id_vi, "vi", "Tiếng Việt"); +Regy_add(stub_hash, Id_vls, "vls", "West-Vlams"); +Regy_add(stub_hash, Id_vmf, "vmf", "Mainfränkisch"); +Regy_add(stub_hash, Id_vo, "vo", "Volapük"); +Regy_add(stub_hash, Id_vot, "vot", "Vaďďa"); +Regy_add(stub_hash, Id_vro, "vro", "Võro"); +Regy_add(stub_hash, Id_wa, "wa", "Walon"); +Regy_add(stub_hash, Id_war, "war", "Winaray"); +Regy_add(stub_hash, Id_wo, "wo", "Wolof"); +Regy_add(stub_hash, Id_wuu, "wuu", "吴语"); +Regy_add(stub_hash, Id_xal, "xal", "Хальмг"); +Regy_add(stub_hash, Id_xh, "xh", "isiXhosa"); +Regy_add(stub_hash, Id_xmf, "xmf", "მარგალური"); +Regy_add(stub_hash, Id_yi, "yi", "ייִדיש"); +Regy_add(stub_hash, Id_yo, "yo", "Yorùbá"); +Regy_add(stub_hash, Id_yue, "yue", "粵語"); +Regy_add(stub_hash, Id_za, "za", "Vahcuengh"); +Regy_add(stub_hash, Id_zea, "zea", "Zeêuws"); +Regy_add(stub_hash, Id_zh, "zh", "中文"); +Regy_add(stub_hash, Id_zh_classical, "zh-classical", "文言"); +Regy_add(stub_hash, Id_zh_cn, "zh-cn", "‪中文(中国大陆)‬"); +Regy_add(stub_hash, Id_zh_hans, "zh-hans", "‪中文(简体)‬"); +Regy_add(stub_hash, Id_zh_hant, "zh-hant", "‪中文(繁體)‬"); +Regy_add(stub_hash, Id_zh_hk, "zh-hk", "‪中文(香港)‬"); +Regy_add(stub_hash, Id_zh_min_nan, "zh-min-nan", "Bân-lâm-gú"); +Regy_add(stub_hash, Id_zh_mo, "zh-mo", "‪中文(澳門)‬"); +Regy_add(stub_hash, Id_zh_my, "zh-my", "‪中文(马来西亚)‬"); +Regy_add(stub_hash, Id_zh_sg, "zh-sg", "‪中文(新加坡)‬"); +Regy_add(stub_hash, Id_zh_tw, "zh-tw", "‪中文(台灣)‬"); +Regy_add(stub_hash, Id_zh_yue, "zh-yue", "粵語"); +Regy_add(stub_hash, Id_zu, "zu", "isiZulu"); + } + return stub_hash; + } + private static Hash_adp_bry stub_hash; private static final Xol_lang_stub[] stub_ary = new Xol_lang_stub[Id__max]; + public static Xol_lang_stub[] Ary() {return stub_ary;} + private static void Regy_add(Hash_adp_bry stub_hash, int uid, String code_str, String canonical) { + byte[] code = Bry_.new_a7(code_str);// ASCII:lang_code should always be ASCII + Xol_lang_stub itm = new Xol_lang_stub(uid, code, Bry_.new_u8(canonical)); + stub_ary[uid] = itm; + stub_hash.Add(code, itm); + } + public static boolean Exists(byte[] key) {return Get_by_key_or_null(key) != null;} // Language.php!isSupportedLanguage + public static Xol_lang_stub Get_by_id(int id) {if (stub_hash == null) Regy(); return stub_ary[id];} + public static Xol_lang_stub Get_by_key_or_null(byte[] key) {return Get_by_key_or_null(key, 0, key.length);} + public static Xol_lang_stub Get_by_key_or_null(byte[] key, int bgn, int end) { + if (stub_hash == null) Regy(); + return (Xol_lang_stub)stub_hash.Get_by_mid(key, bgn, end); + } + public static Xol_lang_stub Get_by_key_or_en(byte[] key) { + Xol_lang_stub rv = Get_by_key_or_null(key); + return (rv == null) ? (Xol_lang_stub)stub_hash.Get_by_bry(Xol_lang_itm_.Key_en) : rv; + } + public static Xol_lang_stub Get_by_key_or_intl(byte[] key) {return Get_by_key_or_intl(key, 0, key.length);} + public static Xol_lang_stub Get_by_key_or_intl(byte[] key, int bgn, int end) { + Xol_lang_stub rv = Get_by_key_or_null(key, bgn, end); + return rv == null ? Intl : rv; + } + public static final Xol_lang_stub Intl = new Xol_lang_stub(Xol_lang_stub_.Id__intl, Bry_.Empty, Bry_.Empty); // intended for international wikis like commons, wikidata, etc.. +} +class Xol_sub_itm_comparer implements ComparerAble { + public int compare(Object lhsObj, Object rhsObj) { + Xol_lang_stub lhs = (Xol_lang_stub)lhsObj; + Xol_lang_stub rhs = (Xol_lang_stub)rhsObj; + return Bry_.Compare(lhs.Key(), rhs.Key()); + } +} diff --git a/400_xowa/src/gplx/xowa/bldrs/langs/Json_itm_wkr__base.java b/400_xowa/src/gplx/xowa/langs/bldrs/Json_itm_wkr__base.java similarity index 88% rename from 400_xowa/src/gplx/xowa/bldrs/langs/Json_itm_wkr__base.java rename to 400_xowa/src/gplx/xowa/langs/bldrs/Json_itm_wkr__base.java index d854754b0..5e6466715 100644 --- a/400_xowa/src/gplx/xowa/bldrs/langs/Json_itm_wkr__base.java +++ b/400_xowa/src/gplx/xowa/langs/bldrs/Json_itm_wkr__base.java @@ -15,10 +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.bldrs.langs; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*; -import gplx.core.primitives.*; import gplx.langs.jsons.*; import gplx.langs.phps.*; import gplx.langs.gfss.*; -import gplx.xowa.apps.gfss.*; -import gplx.xowa.langs.*; +package gplx.xowa.langs.bldrs; import gplx.*; import gplx.xowa.*; import gplx.xowa.langs.*; +import gplx.core.primitives.*; import gplx.langs.jsons.*; import gplx.langs.phps.*; import gplx.langs.gfs.*; +import gplx.xowa.apps.gfs.*; +import gplx.xowa.langs.*; import gplx.xowa.langs.msgs.*; import gplx.xowa.langs.parsers.*; interface Json_itm_wkr { void Read_kv_sub(byte[] key, byte[] val); } @@ -52,8 +52,8 @@ abstract class Json_itm_wkr__base implements Json_itm_wkr { private static final byte[] Name_metadata = Bry_.new_a7("@metadata"); } class Json_itm_wkr__gfs extends Json_itm_wkr__base { - private Gfs_bldr gfs_bldr = new Gfs_bldr(); - private Xol_csv_parser csv_parser = Xol_csv_parser._; + private Xoa_gfs_bldr gfs_bldr = new Xoa_gfs_bldr(); + private Xol_csv_parser csv_parser = Xol_csv_parser.Instance; private Bry_bfr bfr; public byte[] Xto_bry() {return gfs_bldr.Xto_bry();} @Override public void Exec_bgn() { diff --git a/400_xowa/src/gplx/xowa/bldrs/langs/Xob_i18n_parser.java b/400_xowa/src/gplx/xowa/langs/bldrs/Xob_i18n_parser.java similarity index 76% rename from 400_xowa/src/gplx/xowa/bldrs/langs/Xob_i18n_parser.java rename to 400_xowa/src/gplx/xowa/langs/bldrs/Xob_i18n_parser.java index 8bd89c20c..dd439b525 100644 --- a/400_xowa/src/gplx/xowa/bldrs/langs/Xob_i18n_parser.java +++ b/400_xowa/src/gplx/xowa/langs/bldrs/Xob_i18n_parser.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.bldrs.langs; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*; +package gplx.xowa.langs.bldrs; import gplx.*; import gplx.xowa.*; import gplx.xowa.langs.*; import gplx.xowa.langs.*; public class Xob_i18n_parser { - public static void Load_msgs(boolean dirty, Xol_lang lang, Io_url i18n_fil) { - String i18n_str = Io_mgr.I.LoadFilStr_args(i18n_fil).MissingIgnored_().Exec(); if (String_.Len_eq_0(i18n_str)) return; + public static void Load_msgs(boolean dirty, Xol_lang_itm lang, Io_url i18n_fil) { + String i18n_str = Io_mgr.Instance.LoadFilStr_args(i18n_fil).MissingIgnored_().Exec(); if (String_.Len_eq_0(i18n_str)) return; Json_itm_wkr__msgs wkr = new Json_itm_wkr__msgs(); wkr.Ctor(dirty, lang.Msg_mgr()); wkr.Exec(Bry_.new_u8(i18n_str)); diff --git a/400_xowa/src/gplx/xowa/bldrs/langs/Xob_i18n_parser_tst.java b/400_xowa/src/gplx/xowa/langs/bldrs/Xob_i18n_parser_tst.java similarity index 90% rename from 400_xowa/src/gplx/xowa/bldrs/langs/Xob_i18n_parser_tst.java rename to 400_xowa/src/gplx/xowa/langs/bldrs/Xob_i18n_parser_tst.java index d71b40592..1e4550849 100644 --- a/400_xowa/src/gplx/xowa/bldrs/langs/Xob_i18n_parser_tst.java +++ b/400_xowa/src/gplx/xowa/langs/bldrs/Xob_i18n_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.bldrs.langs; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*; +package gplx.xowa.langs.bldrs; import gplx.*; import gplx.xowa.*; import gplx.xowa.langs.*; import org.junit.*; import gplx.core.intls.*; public class Xob_i18n_parser_tst { @@ -55,7 +55,7 @@ class Xob_i18n_parser_fxt { Xoae_app app = Xoa_app_fxt.app_(); Xowe_wiki wiki = Xoa_app_fxt.wiki_tst_(app); Io_url dir_url = Io_url_.new_dir_(dir_str); - Io_url[] fil_urls = Io_mgr.I.QueryDir_fils(dir_url); + Io_url[] fil_urls = Io_mgr.Instance.QueryDir_fils(dir_url); int len = fil_urls.length; for (int i = 0; i < len; ++i) { Xob_i18n_parser.Load_msgs(false, wiki.Lang(), fil_urls[i]); diff --git a/400_xowa/src/gplx/xowa/bldrs/langs/Xobc_utl_make_lang.java b/400_xowa/src/gplx/xowa/langs/bldrs/Xobc_utl_make_lang.java similarity index 79% rename from 400_xowa/src/gplx/xowa/bldrs/langs/Xobc_utl_make_lang.java rename to 400_xowa/src/gplx/xowa/langs/bldrs/Xobc_utl_make_lang.java index 3c49a8c08..ac49cefae 100644 --- a/400_xowa/src/gplx/xowa/bldrs/langs/Xobc_utl_make_lang.java +++ b/400_xowa/src/gplx/xowa/langs/bldrs/Xobc_utl_make_lang.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.bldrs.langs; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*; +package gplx.xowa.langs.bldrs; import gplx.*; import gplx.xowa.*; import gplx.xowa.langs.*; import gplx.xowa.apps.fsys.*; -import gplx.xowa.langs.*; import gplx.xowa.langs.cfgs.*; +import gplx.xowa.langs.*; public class Xobc_utl_make_lang implements GfoInvkAble { private final Xoa_lang_mgr lang_mgr; private final Xoa_fsys_mgr fsys_mgr; Xol_mw_lang_parser lang_parser; public Xobc_utl_make_lang(Xoa_lang_mgr lang_mgr, Xoa_fsys_mgr fsys_mgr, Gfo_msg_log msg_log) { @@ -26,23 +26,17 @@ public class Xobc_utl_make_lang implements GfoInvkAble { lang_parser = new Xol_mw_lang_parser(msg_log); } public Xobc_utl_make_lang_kwds Kwd_mgr() {return kwd_mgr;} private Xobc_utl_make_lang_kwds kwd_mgr; - public Ordered_hash Manual_text_bgn_hash() {return manual_text_bgn_hash;} private final Ordered_hash manual_text_bgn_hash = Ordered_hash_.new_bry_(); - public Ordered_hash Manual_text_end_hash() {return manual_text_end_hash;} private final Ordered_hash manual_text_end_hash = Ordered_hash_.new_bry_(); + public Ordered_hash Manual_text_bgn_hash() {return manual_text_bgn_hash;} private final Ordered_hash manual_text_bgn_hash = Ordered_hash_.New_bry(); + public Ordered_hash Manual_text_end_hash() {return manual_text_end_hash;} private final Ordered_hash manual_text_end_hash = Ordered_hash_.New_bry(); public void Bld_all() { Io_url lang_root = fsys_mgr.Cfg_lang_core_dir().OwnerDir(); // OwnerDir to get "/lang/" in "/cfg/lang/core/" lang_parser.Parse_mediawiki(lang_mgr, lang_root.GenSubDir("mediawiki"), kwd_mgr); kwd_mgr.Add_words(); lang_parser.Save_langs(lang_mgr, lang_root.GenSubDir(Xol_mw_lang_parser.Dir_name_core), manual_text_bgn_hash, manual_text_end_hash); - Gfo_usr_dlg_.I.Prog_many("", "", "done"); + Gfo_usr_dlg_.Instance.Prog_many("", "", "done"); } - public void Parse_manual_text(byte[] langs_bry, byte[] text, Ordered_hash manual_text) { - Ordered_hash langs = lang_mgr.Xto_hash(langs_bry); - int langs_len = langs.Count(); - for (int i = 0; i < langs_len; i++) { - Xoac_lang_itm itm = (Xoac_lang_itm)langs.Get_at(i); - byte[] key_bry = itm.Key_bry(); - manual_text.Add(key_bry, new byte[][] {key_bry, text}); - } + public void Parse_manual_text(byte[] key, byte[] text, Ordered_hash manual_text) { + manual_text.Add(key, new byte[][] {key, text}); } public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { if (ctx.Match(k, Invk_kwds)) return kwd_mgr; diff --git a/400_xowa/src/gplx/xowa/bldrs/langs/Xobc_utl_make_lang_kwds.java b/400_xowa/src/gplx/xowa/langs/bldrs/Xobc_utl_make_lang_kwds.java similarity index 76% rename from 400_xowa/src/gplx/xowa/bldrs/langs/Xobc_utl_make_lang_kwds.java rename to 400_xowa/src/gplx/xowa/langs/bldrs/Xobc_utl_make_lang_kwds.java index f7f1142f0..7f55bb177 100644 --- a/400_xowa/src/gplx/xowa/bldrs/langs/Xobc_utl_make_lang_kwds.java +++ b/400_xowa/src/gplx/xowa/langs/bldrs/Xobc_utl_make_lang_kwds.java @@ -15,19 +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.bldrs.langs; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*; -import gplx.xowa.langs.*; import gplx.xowa.langs.cfgs.*; +package gplx.xowa.langs.bldrs; import gplx.*; import gplx.xowa.*; import gplx.xowa.langs.*; +import gplx.xowa.langs.*; import gplx.xowa.langs.kwds.*; import gplx.xowa.langs.parsers.*; public class Xobc_utl_make_lang_kwds implements GfoInvkAble, Xol_lang_transform { private final Xoa_lang_mgr lang_mgr; public Xobc_utl_make_lang_kwds(Xoa_lang_mgr lang_mgr) {this.lang_mgr = lang_mgr;} public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { - if (ctx.Match(k, Invk_set)) Set(m.ReadBry("langs"), m.ReadBry("text")); - else if (ctx.Match(k, Invk_keep_trailing_colon)) Parse_keep_trailing_colon(m.ReadBry("langs"), m.ReadBry("text")); + if (ctx.Match(k, Invk_keep_trailing_colon)) Parse_keep_trailing_colon(m.ReadBry("langs"), m.ReadBry("text")); else if (ctx.Match(k, Invk_prepend_hash)) Parse_prepend_hash(m.ReadBry("langs"), m.ReadBry("text")); else if (ctx.Match(k, Invk_add_words)) Parse_add_words(m.ReadBry("langs"), m.ReadBry("text")); else return GfoInvkAble_.Rv_unhandled; return this; - } private static final String Invk_set = "set", Invk_keep_trailing_colon = "keep_trailing_colon", Invk_prepend_hash = "prepend_hash", Invk_add_words = "add_words"; + } private static final String Invk_keep_trailing_colon = "keep_trailing_colon", Invk_prepend_hash = "prepend_hash", Invk_add_words = "add_words"; public byte[] Kwd_transform(byte[] lang_key, byte[] kwd_key, byte[] kwd_word) { byte[] rv = kwd_word; @@ -44,11 +43,11 @@ public class Xobc_utl_make_lang_kwds implements GfoInvkAble, Xol_lang_transform } public void Add_words() { Ordered_hash hash = add_words_hash; - Ordered_hash tmp = Ordered_hash_.new_bry_(); + Ordered_hash tmp = Ordered_hash_.New_bry(); int hash_len = hash.Count(); for (int i = 0; i < hash_len; i++) { Xobcl_kwd_lang cfg_lang = (Xobcl_kwd_lang)hash.Get_at(i); - Xol_lang lang = lang_mgr.Get_by_key(cfg_lang.Key_bry()); if (lang == null) continue; + Xol_lang_itm lang = lang_mgr.Get_by(cfg_lang.Key_bry()); if (lang == null) continue; int cfg_grp_len = cfg_lang.Grps().length; for (int j = 0; j < cfg_grp_len; j++) { Xobcl_kwd_row cfg_grp = cfg_lang.Grps()[j]; @@ -81,39 +80,29 @@ public class Xobc_utl_make_lang_kwds implements GfoInvkAble, Xol_lang_transform Xobcl_kwd_row cfg_grp = cfg_lang.Grps_get_by_key(kwd_key); if (cfg_grp == null) return false; return cfg_grp.Itms().length == 0 || cfg_grp.Itms_has(kwd_word); } - public void Set(byte[] langs_bry, byte[] kwds) { - Ordered_hash langs = lang_mgr.Xto_hash(langs_bry); - int langs_len = langs.Count(); - Xol_kwd_mgr kwd_mgr = new Xol_kwd_mgr(lang_mgr.Lang_en()); - for (int i = 0; i < langs_len; i++) { -// Xol_lang_itm lang = (Xol_lang_itm)langs.Get_at(i); - Xol_lang_srl.Load_keywords(kwd_mgr, kwds); - } - } - public void Parse_add_words(byte[] langs_bry, byte[] kwds) {Parse(langs_bry, kwds, add_words_hash);} private Ordered_hash add_words_hash = Ordered_hash_.new_bry_(); - public void Parse_prepend_hash(byte[] langs_bry, byte[] kwds) {Parse(langs_bry, kwds, prepend_hash);} private Ordered_hash prepend_hash = Ordered_hash_.new_bry_(); - public void Parse_keep_trailing_colon(byte[] langs_bry, byte[] kwds) {Parse(langs_bry, kwds, trailing_colons);} private Ordered_hash trailing_colons = Ordered_hash_.new_bry_(); + public void Parse_add_words(byte[] langs_bry, byte[] kwds) {Parse(langs_bry, kwds, add_words_hash);} private Ordered_hash add_words_hash = Ordered_hash_.New_bry(); + public void Parse_prepend_hash(byte[] langs_bry, byte[] kwds) {Parse(langs_bry, kwds, prepend_hash);} private Ordered_hash prepend_hash = Ordered_hash_.New_bry(); + public void Parse_keep_trailing_colon(byte[] langs_bry, byte[] kwds) {Parse(langs_bry, kwds, trailing_colons);} private Ordered_hash trailing_colons = Ordered_hash_.New_bry(); private void Parse(byte[] langs_bry, byte[] kwds, Ordered_hash hash) { Xobcl_kwd_row[] itms = Parse(kwds); - Ordered_hash langs = lang_mgr.Xto_hash(langs_bry); - int langs_len = langs.Count(); - for (int i = 0; i < langs_len; i++) { - Xoac_lang_itm itm = (Xoac_lang_itm)langs.Get_at(i); - byte[] key_bry = itm.Key_bry(); - - Xobcl_kwd_lang grp = (Xobcl_kwd_lang)hash.Get_by(key_bry); + Xol_lang_stub[] stub_ary = Xol_lang_stub_.Ary(); // NOTE: was "lang_mgr.To_hash(langs_bry);" which was effectively "wiki_types" -> all langs; DATE:2015-10-07 + int len = stub_ary.length; + for (int i = 0; i < len; ++i) { + Xol_lang_stub stub_itm = stub_ary[i]; + byte[] key = stub_itm.Key(); + Xobcl_kwd_lang grp = (Xobcl_kwd_lang)hash.Get_by(key); if (grp == null) { - grp = new Xobcl_kwd_lang(key_bry, itms); - hash.Add(key_bry, grp); + grp = new Xobcl_kwd_lang(key, itms); + hash.Add(key, grp); } else grp.Merge(itms); } } - public static Xobcl_kwd_row[] Parse(byte[] src) { + @gplx.Internal protected static Xobcl_kwd_row[] Parse(byte[] src) { int src_len = src.length, pos = 0, fld_bgn = 0; byte[] cur_key = Bry_.Empty; - Xol_csv_parser csv_parser = Xol_csv_parser._; + Xol_csv_parser csv_parser = Xol_csv_parser.Instance; List_adp rv = List_adp_.new_(); int fld_idx = 0; while (true) { boolean last = pos == src_len; // NOTE: logic occurs b/c of \n}~-> dlm which gobbles up last \n @@ -154,7 +143,7 @@ class Xobcl_kwd_lang { grps_hash.Add_if_dupe_use_nth(grp.Key(), grp); // NOTE: Add_if_dupe_use_nth instead of Add b/c kwds may be expanded; EX: lst is added to all langs but de requires #lst~#section~Abschnitt~; DATE:2013-06-02 } } - public Xobcl_kwd_row Grps_get_by_key(byte[] key) {return (Xobcl_kwd_row)grps_hash.Get_by(key);} private Ordered_hash grps_hash = Ordered_hash_.new_bry_(); + public Xobcl_kwd_row Grps_get_by_key(byte[] key) {return (Xobcl_kwd_row)grps_hash.Get_by(key);} private Ordered_hash grps_hash = Ordered_hash_.New_bry(); public byte[] Key_bry() {return key_bry;} private byte[] key_bry; public Xobcl_kwd_row[] Grps() {return grps;} private Xobcl_kwd_row[] grps; } diff --git a/400_xowa/src/gplx/xowa/bldrs/langs/Xobc_utl_make_lang_tst.java b/400_xowa/src/gplx/xowa/langs/bldrs/Xobc_utl_make_lang_tst.java similarity index 91% rename from 400_xowa/src/gplx/xowa/bldrs/langs/Xobc_utl_make_lang_tst.java rename to 400_xowa/src/gplx/xowa/langs/bldrs/Xobc_utl_make_lang_tst.java index eead727e7..9dca4748f 100644 --- a/400_xowa/src/gplx/xowa/bldrs/langs/Xobc_utl_make_lang_tst.java +++ b/400_xowa/src/gplx/xowa/langs/bldrs/Xobc_utl_make_lang_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.bldrs.langs; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*; +package gplx.xowa.langs.bldrs; import gplx.*; import gplx.xowa.*; import gplx.xowa.langs.*; import org.junit.*; import gplx.core.strings.*; import gplx.xowa.langs.*; public class Xobc_utl_make_lang_tst { @@ -153,11 +153,11 @@ class Xobc_utl_make_lang_fxt { public void Parse_rows(String raw, Xobcl_kwd_row... expd) {Tfds.Eq_str_lines(Xto_str(expd), Xto_str(Xobc_utl_make_lang_kwds.Parse(Bry_.new_a7(raw))));} public void Ini_file_mw_core(String lang, String raw) { Io_url fil = app.Fsys_mgr().Cfg_lang_core_dir().OwnerDir().GenSubFil_nest("mediawiki", "core_php", "Messages" + String_.UpperFirst(lang) + ".php"); - Io_mgr.I.SaveFilStr(fil, raw); + Io_mgr.Instance.SaveFilStr(fil, raw); } public void Tst_file_xo(String lang, String expd) { - Io_url fil = Xol_lang_.xo_lang_fil_(app.Fsys_mgr(), lang); - Tfds.Eq_str_lines(expd, Io_mgr.I.LoadFilStr(fil)); + Io_url fil = Xol_lang_itm_.xo_lang_fil_(app.Fsys_mgr(), lang); + Tfds.Eq_str_lines(expd, Io_mgr.Instance.LoadFilStr(fil)); } private String Xto_str(Xobcl_kwd_row[] expd) { int len = expd.length; @@ -175,6 +175,6 @@ class Xobc_utl_make_lang_fxt { } sb.Add_char_nl(); } - return sb.Xto_str_and_clear(); + return sb.To_str_and_clear(); } } diff --git a/400_xowa/src/gplx/xowa/langs/Xobcl_kwd_row.java b/400_xowa/src/gplx/xowa/langs/bldrs/Xobcl_kwd_row.java similarity index 86% rename from 400_xowa/src/gplx/xowa/langs/Xobcl_kwd_row.java rename to 400_xowa/src/gplx/xowa/langs/bldrs/Xobcl_kwd_row.java index ee8bc6836..04c30e2f4 100644 --- a/400_xowa/src/gplx/xowa/langs/Xobcl_kwd_row.java +++ b/400_xowa/src/gplx/xowa/langs/bldrs/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.langs; import gplx.*; import gplx.xowa.*; +package gplx.xowa.langs.bldrs; import gplx.*; import gplx.xowa.*; import gplx.xowa.langs.*; public class Xobcl_kwd_row { public Xobcl_kwd_row(byte[] key, byte[][] itms) { this.key = key; this.itms = itms; @@ -24,5 +24,5 @@ public class Xobcl_kwd_row { } public byte[] Key() {return key;} private byte[] key; public byte[][] Itms() {return itms;} private byte[][] itms; - public boolean Itms_has(byte[] key) {return itms_hash.Has(key);} private Ordered_hash itms_hash = Ordered_hash_.new_bry_(); + public boolean Itms_has(byte[] key) {return itms_hash.Has(key);} private Ordered_hash itms_hash = Ordered_hash_.New_bry(); } diff --git a/400_xowa/src/gplx/xowa/bldrs/langs/Xol_lang_transform.java b/400_xowa/src/gplx/xowa/langs/bldrs/Xol_lang_transform.java similarity index 82% rename from 400_xowa/src/gplx/xowa/bldrs/langs/Xol_lang_transform.java rename to 400_xowa/src/gplx/xowa/langs/bldrs/Xol_lang_transform.java index 7cd21b180..821a9d3cd 100644 --- a/400_xowa/src/gplx/xowa/bldrs/langs/Xol_lang_transform.java +++ b/400_xowa/src/gplx/xowa/langs/bldrs/Xol_lang_transform.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.bldrs.langs; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*; +package gplx.xowa.langs.bldrs; import gplx.*; import gplx.xowa.*; import gplx.xowa.langs.*; public interface Xol_lang_transform { byte[] Kwd_transform(byte[] lang_key, byte[] kwd_key, byte[] kwd_word); } class Xol_lang_transform_null implements Xol_lang_transform { public byte[] Kwd_transform(byte[] lang_key, byte[] kwd_key, byte[] kwd_word) {return kwd_word;} - public static final Xol_lang_transform_null _ = new Xol_lang_transform_null(); Xol_lang_transform_null() {} + public static final Xol_lang_transform_null Instance = new Xol_lang_transform_null(); Xol_lang_transform_null() {} } diff --git a/400_xowa/src/gplx/xowa/bldrs/langs/Xol_mw_lang_parser.java b/400_xowa/src/gplx/xowa/langs/bldrs/Xol_mw_lang_parser.java similarity index 83% rename from 400_xowa/src/gplx/xowa/bldrs/langs/Xol_mw_lang_parser.java rename to 400_xowa/src/gplx/xowa/langs/bldrs/Xol_mw_lang_parser.java index 14c1d93be..06a5003ce 100644 --- a/400_xowa/src/gplx/xowa/bldrs/langs/Xol_mw_lang_parser.java +++ b/400_xowa/src/gplx/xowa/langs/bldrs/Xol_mw_lang_parser.java @@ -15,25 +15,26 @@ 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.bldrs.langs; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*; +package gplx.xowa.langs.bldrs; import gplx.*; import gplx.xowa.*; import gplx.xowa.langs.*; import gplx.core.primitives.*; import gplx.core.btries.*; import gplx.core.consoles.*; import gplx.core.intls.*; import gplx.langs.phps.*; -import gplx.xowa.apps.gfss.*; -import gplx.xowa.apps.fsys.*; import gplx.xowa.langs.*; import gplx.xowa.langs.numbers.*; -import gplx.xowa.nss.*; +import gplx.xowa.apps.gfs.*; +import gplx.xowa.apps.fsys.*; +import gplx.xowa.langs.*; import gplx.xowa.langs.msgs.*; import gplx.xowa.langs.kwds.*; import gplx.xowa.langs.numbers.*; import gplx.xowa.langs.parsers.*; import gplx.xowa.langs.specials.*; +import gplx.xowa.wikis.nss.*; public class Xol_mw_lang_parser { private Php_parser parser = new Php_parser(); private Php_evaluator evaluator; public Xol_mw_lang_parser(Gfo_msg_log msg_log) {evaluator = new Php_evaluator(msg_log);} - public void Bld_all(Xoa_lang_mgr lang_mgr, Xoa_fsys_mgr fsys_mgr) {Bld_all(lang_mgr, fsys_mgr, Xol_lang_transform_null._);} + public void Bld_all(Xoa_lang_mgr lang_mgr, Xoa_fsys_mgr fsys_mgr) {Bld_all(lang_mgr, fsys_mgr, Xol_lang_transform_null.Instance);} public void Bld_all(Xoa_lang_mgr lang_mgr, Xoa_fsys_mgr fsys_mgr, Xol_lang_transform lang_transform) { Io_url lang_root = fsys_mgr.Cfg_lang_core_dir().OwnerDir(); Parse_mediawiki(lang_mgr, lang_root.GenSubDir("mediawiki"), lang_transform); - Save_langs(lang_mgr, lang_root.GenSubDir(Xol_mw_lang_parser.Dir_name_core), Ordered_hash_.new_bry_(), Ordered_hash_.new_bry_()); + Save_langs(lang_mgr, lang_root.GenSubDir(Xol_mw_lang_parser.Dir_name_core), Ordered_hash_.New_bry(), Ordered_hash_.New_bry()); } public void Save_langs(Xoa_lang_mgr lang_mgr, Io_url xowa_root, Ordered_hash manual_text_bgn, Ordered_hash manual_text_end) { int len = lang_mgr.Len(); - Gfs_bldr bldr = new Gfs_bldr(); + Xoa_gfs_bldr bldr = new Xoa_gfs_bldr(); for (int i = 0; i < len; i++) { - Xol_lang lang = lang_mgr.Get_at(i); + Xol_lang_itm lang = lang_mgr.Get_at(i); String lang_key = lang.Key_str(); Io_url lang_url = xowa_root.GenSubFil(lang_key + ".gfs"); Save_langs_by_manual_text(bldr, manual_text_bgn, lang_key); @@ -41,21 +42,21 @@ public class Xol_mw_lang_parser { Xol_lang_srl.Save_num_mgr(bldr, lang.Num_mgr()); bldr.Add_proc_init_many("this").Add_nl(); if (lang.Fallback_bry() != null) // NOTE: fallback will often be null; EX: en - bldr.Add_proc_cont_one(Xol_lang.Invk_fallback_load).Add_parens_str(lang.Fallback_bry()).Add_nl(); + bldr.Add_proc_cont_one(Xol_lang_itm.Invk_fallback_load).Add_parens_str(lang.Fallback_bry()).Add_nl(); if (!lang.Dir_ltr()) // NOTE: only save dir_ltr if false; EX: en - bldr.Add_proc_cont_one(Xol_lang.Invk_dir_rtl_).Add_parens_str(Yn.Xto_str(!lang.Dir_ltr())).Add_nl(); - Xol_lang_srl.Save_ns_grps(bldr, lang.Ns_names(), Xol_lang.Invk_ns_names); - Xol_lang_srl.Save_ns_grps(bldr, lang.Ns_aliases(), Xol_lang.Invk_ns_aliases); + bldr.Add_proc_cont_one(Xol_lang_itm.Invk_dir_rtl_).Add_parens_str(Yn.To_str(!lang.Dir_ltr())).Add_nl(); + Xol_lang_srl.Save_ns_grps(bldr, lang.Ns_names(), Xol_lang_itm.Invk_ns_names); + Xol_lang_srl.Save_ns_grps(bldr, lang.Ns_aliases(), Xol_lang_itm.Invk_ns_aliases); Xol_lang_srl.Save_specials(bldr, lang.Specials_mgr()); Xol_lang_srl.Save_keywords(bldr, lang.Kwd_mgr()); Xol_lang_srl.Save_messages(bldr, lang.Msg_mgr(), true); bldr.Add_term_nl(); Save_langs_by_manual_text(bldr, manual_text_end, lang_key); - Io_mgr.I.SaveFilBfr(lang_url, bldr.Bfr()); + Io_mgr.Instance.SaveFilBfr(lang_url, bldr.Bfr()); } } - private void Save_langs_by_manual_text(Gfs_bldr bldr, Ordered_hash manual_text_hash, String lang_key) { + private void Save_langs_by_manual_text(Xoa_gfs_bldr bldr, Ordered_hash manual_text_hash, String lang_key) { byte[][] itm = (byte[][])manual_text_hash.Get_by(Bry_.new_u8(lang_key)); if (itm != null) bldr.Bfr().Add(itm[1]); } @@ -68,49 +69,49 @@ public class Xol_mw_lang_parser { } private void Parse_file_core_php(Xoa_lang_mgr lang_mgr, Io_url mediawiki_root, Bry_bfr bfr, Xol_lang_transform lang_transform) { Io_url dir = mediawiki_root.GenSubDir("core_php"); - Io_url[] urls = Io_mgr.I.QueryDir_fils(dir); + Io_url[] urls = Io_mgr.Instance.QueryDir_fils(dir); int len = urls.length; for (int i = 0; i < len; i++) { Io_url url = urls[i]; try { String lang_key = String_.Replace(String_.Lower(String_.Mid(url.NameOnly(), 8)), "_", "-"); // 8=Messages.length; lower b/c format is MessagesEn.php (need "en") // if (String_.In(lang_key, "qqq", "enrtl", "bbc", "bbc-latn")) continue; - String text = Io_mgr.I.LoadFilStr(url); - Xol_lang lang = lang_mgr.Get_by_key_or_new(Bry_.new_u8(lang_key)); + String text = Io_mgr.Instance.LoadFilStr(url); + Xol_lang_itm lang = lang_mgr.Get_by_or_new(Bry_.new_u8(lang_key)); this.Parse_core(text, lang, bfr, lang_transform); - } catch (Exception exc) {Err_.Noop(exc); Console_adp__sys.I.Write_str_w_nl("failed to parse " + url.NameOnly() + Err_.Message_gplx_full(exc));} + } catch (Exception exc) {Err_.Noop(exc); Console_adp__sys.Instance.Write_str_w_nl("failed to parse " + url.NameOnly() + Err_.Message_gplx_full(exc));} } } private void Parse_file_xtns_php(Xoa_lang_mgr lang_mgr, Io_url mediawiki_root, Bry_bfr bfr, Xol_lang_transform lang_transform) { Io_url dir = mediawiki_root.GenSubDir("xtns_php"); - Io_url[] urls = Io_mgr.I.QueryDir_fils(dir); + Io_url[] urls = Io_mgr.Instance.QueryDir_fils(dir); int len = urls.length; for (int i = 0; i < len; i++) { Io_url url = urls[i]; try { - String text = Io_mgr.I.LoadFilStr(url); + String text = Io_mgr.Instance.LoadFilStr(url); boolean prepend_hash = String_.Eq("ParserFunctions.i18n.magic", url.NameOnly()); this.Parse_xtn(text, url, lang_mgr, bfr, prepend_hash, lang_transform); - } catch (Exception exc) {Err_.Noop(exc); Console_adp__sys.I.Write_str_w_nl("failed to parse " + url.NameOnly() + Err_.Message_gplx_full(exc));} + } catch (Exception exc) {Err_.Noop(exc); Console_adp__sys.Instance.Write_str_w_nl("failed to parse " + url.NameOnly() + Err_.Message_gplx_full(exc));} } } private void Parse_file_json(Xoa_lang_mgr lang_mgr, Bry_bfr bfr, Xol_lang_transform lang_transform, Io_url root_dir) { - Io_url[] dirs = Io_mgr.I.QueryDir_args(root_dir).DirOnly_().ExecAsUrlAry(); + Io_url[] dirs = Io_mgr.Instance.QueryDir_args(root_dir).DirOnly_().ExecAsUrlAry(); int dirs_len = dirs.length; for (int i = 0; i < dirs_len; i++) { Io_url dir = dirs[i]; - Io_url[] fils = Io_mgr.I.QueryDir_args(dir).ExecAsUrlAry(); + Io_url[] fils = Io_mgr.Instance.QueryDir_args(dir).ExecAsUrlAry(); int fils_len = fils.length; for (int j = 0; j < fils_len; ++j) { Io_url fil = fils[j]; try { - Xol_lang lang = lang_mgr.Get_by_key_or_new(Bry_.new_u8(fil.NameOnly())); + Xol_lang_itm lang = lang_mgr.Get_by_or_new(Bry_.new_u8(fil.NameOnly())); Xob_i18n_parser.Load_msgs(true, lang, fil); - } catch (Exception exc) {Err_.Noop(exc); Console_adp__sys.I.Write_str_w_nl(String_.Format("failed to parse json file; url={0} err={1}\n", fil.Raw(), Err_.Message_gplx_full(exc)));} + } catch (Exception exc) {Err_.Noop(exc); Console_adp__sys.Instance.Write_str_w_nl(String_.Format("failed to parse json file; url={0} err={1}\n", fil.Raw(), Err_.Message_gplx_full(exc)));} } } } - public void Parse_core(String text, Xol_lang lang, Bry_bfr bfr, Xol_lang_transform lang_transform) { + public void Parse_core(String text, Xol_lang_itm lang, Bry_bfr bfr, Xol_lang_transform lang_transform) { evaluator.Clear(); parser.Parse_tkns(text, evaluator); Php_line[] lines = (Php_line[])evaluator.List().To_ary(Php_line.class); @@ -184,7 +185,7 @@ public class Xol_mw_lang_parser { byte[] lang_key = subs[0].Val_obj_bry(); try { if (String_.In(String_.new_u8(lang_key), Lang_skip)) continue; - Xol_lang lang = lang_mgr.Get_by_key_or_new(lang_key); + Xol_lang_itm lang = lang_mgr.Get_by_or_new(lang_key); Byte_obj_val stub = (Byte_obj_val)o; switch (stub.Val()) { case Tid_messages: @@ -200,7 +201,7 @@ public class Xol_mw_lang_parser { Parse_magicwords(line, lang.Key_bry(), lang.Kwd_mgr(), prepend_hash, lang_transform); break; } - } catch (Exception exc) {Err_.Noop(exc); Console_adp__sys.I.Write_str_w_nl("failed to parse " + url.NameOnly() + Err_.Message_gplx_full(exc));} + } catch (Exception exc) {Err_.Noop(exc); Console_adp__sys.Instance.Write_str_w_nl("failed to parse " + url.NameOnly() + Err_.Message_gplx_full(exc));} } } } @@ -225,12 +226,12 @@ public class Xol_mw_lang_parser { byte[] kv_val = brys[i + val_dif]; Bry_.Replace_all_direct(kv_val, Byte_ascii.Underline, Byte_ascii.Space); // NOTE: siteInfo.xml names have " " not "_" (EX: "User talk"). for now, follow that convention int ns_id = Id_by_mw_name(kv_key); -// if (ns_id == Xow_ns_.Id_null) throw Err_mgr._.fmt_auto_(GRP_KEY, "namespace_names", String_.new_u8(kv_key)); +// if (ns_id == Xow_ns_.Id_null) throw Err_mgr.Instance.fmt_auto_(GRP_KEY, "namespace_names", String_.new_u8(kv_key)); rv[i / 2] = new Xow_ns(ns_id, Xow_ns_case_.Id_1st, kv_val, false); // note that Xow_ns is being used as glorified id-name struct; case_match and alias values do not matter } return rv; } - private void Parse_messages(List_adp rv, Xol_lang lang, Bry_bfr bfr) { + private void Parse_messages(List_adp rv, Xol_lang_itm lang, Bry_bfr bfr) { byte[][] brys = (byte[][])rv.To_ary(byte[].class); int brys_len = brys.length; Xol_msg_mgr mgr = lang.Msg_mgr(); @@ -269,7 +270,7 @@ public class Xol_mw_lang_parser { // if (prepend_hash && word[0] != Byte_ascii.Hash) word = Bry_.Add(Byte_ascii.Hash, word); words[j - kv_ary_bgn] = lang_transform.Kwd_transform(lang_key, kv_key, word); } - int keyword_id = Xol_kwd_grp_.Id_by_bry(kv_key); if (keyword_id == -1) continue; //throw Err_mgr._.fmt_(Err_scope_keywords, "invalid_key", "key does not have id", String_.new_u8(kv_key)); + int keyword_id = Xol_kwd_grp_.Id_by_bry(kv_key); if (keyword_id == -1) continue; //throw Err_mgr.Instance.fmt_(Err_scope_keywords, "invalid_key", "key does not have id", String_.new_u8(kv_key)); Xol_kwd_grp grp = mgr.Get_or_new(keyword_id); grp.Srl_load(case_match, words); } @@ -306,8 +307,8 @@ public class Xol_mw_lang_parser { Php_itm_kv kv = (Php_itm_kv)ary.Subs_get(i); byte[] key_bry = Php_itm_.Parse_bry(kv.Key()), val_bry = Php_itm_.Parse_bry(kv.Val()); val_bry = php_quote_parser.Parse_as_bry(tmp_list, val_bry, tmp_result, tmp_bfr); - Xol_csv_parser._.Load(tmp_bfr, val_bry); - val_bry = tmp_bfr.Xto_bry_and_clear(); + Xol_csv_parser.Instance.Load(tmp_bfr, val_bry); + val_bry = tmp_bfr.To_bry_and_clear(); if ( Bry_.Eq(key_bry, Bry_separatorTransformTable_dot) || Bry_.Eq(key_bry, Bry_separatorTransformTable_comma) ) diff --git a/400_xowa/src/gplx/xowa/bldrs/langs/Xol_mw_lang_parser_tst.java b/400_xowa/src/gplx/xowa/langs/bldrs/Xol_mw_lang_parser_tst.java similarity index 92% rename from 400_xowa/src/gplx/xowa/bldrs/langs/Xol_mw_lang_parser_tst.java rename to 400_xowa/src/gplx/xowa/langs/bldrs/Xol_mw_lang_parser_tst.java index 2a7d98b01..b0f3fa996 100644 --- a/400_xowa/src/gplx/xowa/bldrs/langs/Xol_mw_lang_parser_tst.java +++ b/400_xowa/src/gplx/xowa/langs/bldrs/Xol_mw_lang_parser_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.bldrs.langs; import gplx.*; import gplx.xowa.*; import gplx.xowa.bldrs.*; +package gplx.xowa.langs.bldrs; import gplx.*; import gplx.xowa.*; import gplx.xowa.langs.*; import org.junit.*; import gplx.core.intls.*; import gplx.xowa.parsers.lnkis.*; -import gplx.xowa.nss.*; -import gplx.xowa.langs.*; +import gplx.xowa.wikis.nss.*; +import gplx.xowa.langs.*; import gplx.xowa.langs.kwds.*; import gplx.xowa.langs.msgs.*; import gplx.xowa.langs.specials.*; public class Xol_mw_lang_parser_tst { @Before public void init() {fxt.Clear();} private Xol_mw_lang_parser_fxt fxt = new Xol_mw_lang_parser_fxt(); @Test public void Core_keywords() { @@ -245,24 +245,24 @@ class Xol_mw_lang_parser_fxt { app = Xoa_app_fxt.app_(); } app.Lang_mgr().Clear();// NOTE: always clear the lang - lang = app.Lang_mgr().Get_by_key_or_new(Bry_.new_a7("fr")); + lang = app.Lang_mgr().Get_by_or_new(Bry_.new_a7("fr")); wiki = Xoa_app_fxt.wiki_(app, "en.wikipedia.org", lang); fxt = new Xop_fxt(app, wiki); lang.Kwd_mgr().Clear(); lang.Msg_mgr().Clear(); // NOTE: clear kwds and msgs else they will be printed to file; this line must go last b/c various xtns will fill in kwds dynamically } - public Xol_lang Lang() {return lang;} private Xol_lang lang; + public Xol_lang_itm Lang() {return lang;} private Xol_lang_itm lang; public void Num_fmt_tst(String raw, String expd) {Tfds.Eq(expd, String_.new_u8(lang.Num_mgr().Format_num(Bry_.new_u8(raw))));} public void Run_bld_all() {parser.Bld_all(app.Lang_mgr(), app.Fsys_mgr());} public void Save_file(String path, String... lines) { - Io_mgr.I.SaveFilStr(Io_url_.mem_fil_(path), String_.Concat_lines_nl(lines)); + Io_mgr.Instance.SaveFilStr(Io_url_.mem_fil_(path), String_.Concat_lines_nl(lines)); } public void Tst_file(String path, String expd) { Io_url url = Io_url_.mem_fil_(path); - String actl = Io_mgr.I.LoadFilStr(url); + String actl = Io_mgr.Instance.LoadFilStr(url); Tfds.Eq_str_lines(expd, actl); } - public Xol_mw_lang_parser_fxt Parse_core(String raw) {parser.Parse_core(raw, lang, tmp_bfr, Xol_lang_transform_null._); return this;} - public Xol_mw_lang_parser_fxt Parse_xtn (String raw) {parser.Parse_xtn(raw, Io_url_.Empty, app.Lang_mgr(), tmp_bfr, false, Xol_lang_transform_null._); lang.Evt_lang_changed(); return this;} + public Xol_mw_lang_parser_fxt Parse_core(String raw) {parser.Parse_core(raw, lang, tmp_bfr, Xol_lang_transform_null.Instance); return this;} + public Xol_mw_lang_parser_fxt Parse_xtn (String raw) {parser.Parse_xtn(raw, Io_url_.Empty, app.Lang_mgr(), tmp_bfr, false, Xol_lang_transform_null.Instance); lang.Evt_lang_changed(); return this;} public Xol_mw_lang_parser_fxt Tst_keyword(int id, boolean case_sensitive, String... words) { Xol_kwd_grp lst = lang.Kwd_mgr().Get_at(id); if (lst == null) throw Err_.new_wo_type("list should not be null"); Tfds.Eq(case_sensitive, lst.Case_match()); diff --git a/400_xowa/src/gplx/xowa/langs/Xol_ns_grp.java b/400_xowa/src/gplx/xowa/langs/bldrs/Xol_ns_grp.java similarity index 87% rename from 400_xowa/src/gplx/xowa/langs/Xol_ns_grp.java rename to 400_xowa/src/gplx/xowa/langs/bldrs/Xol_ns_grp.java index 7565cac90..129ab0f0d 100644 --- a/400_xowa/src/gplx/xowa/langs/Xol_ns_grp.java +++ b/400_xowa/src/gplx/xowa/langs/bldrs/Xol_ns_grp.java @@ -15,10 +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; import gplx.*; import gplx.xowa.*; -import gplx.xowa.nss.*; +package gplx.xowa.langs.bldrs; import gplx.*; import gplx.xowa.*; import gplx.xowa.langs.*; +import gplx.xowa.wikis.nss.*; +import gplx.xowa.langs.parsers.*; public class Xol_ns_grp implements GfoInvkAble { - public Xol_ns_grp(Xol_lang lang) {this.lang = lang;} private Xol_lang lang; + public Xol_ns_grp(Xol_lang_itm lang) {this.lang = lang;} private Xol_lang_itm lang; public int Len() {return ary.length;} public Xow_ns Get_at(int i) {return ary[i];} private Xow_ns[] ary = Ary_empty; public void Ary_set_(Xow_ns[] v) {this.ary = v;} 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 79762f25d..549b3f0a9 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 @@ -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.langs.cases; import gplx.*; import gplx.xowa.*; import gplx.xowa.langs.*; +import gplx.xowa.langs.parsers.*; public class Xol_case_itm_ { public static final byte Tid_both = 0, Tid_upper = 1, Tid_lower = 2; public static Xol_case_itm new_(int tid, String src_str, String trg_str) {return new_((byte)tid, Bry_.new_u8(src_str), Bry_.new_u8(trg_str));} @@ -30,7 +31,7 @@ public class Xol_case_itm_ { int src_len = src.length, src_pos = 0, fld_bgn = 0, fld_idx = 0; byte cur_cmd = Byte_.Zero; byte[] cur_lhs = null; - Xol_csv_parser csv_parser = Xol_csv_parser._; + Xol_csv_parser csv_parser = Xol_csv_parser.Instance; while (true) { boolean last = src_pos == src_len; byte b = last ? Byte_ascii.Nl : src[src_pos]; @@ -73,7 +74,7 @@ public class Xol_case_itm_ { return (Xol_case_itm[])list.To_ary(Xol_case_itm.class); } public static Xol_case_itm[] parse_mw_(byte[] raw) { - Ordered_hash hash = Ordered_hash_.new_bry_(); + Ordered_hash hash = Ordered_hash_.New_bry(); int pos = 0; pos = parse_mw_grp(hash, raw, Bool_.Y, pos); pos = parse_mw_grp(hash, raw, Bool_.N, pos); 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 634a695cb..5e068f659 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 @@ -89,7 +89,7 @@ public class Xol_case_mgr implements GfoInvkAble, Gfo_case_mgr { itm.Case_build_upper(tmp_bfr); int pos = upper_trie.Match_pos(); tmp_bfr.Add_mid(src, pos, src_len); - return tmp_bfr.Xto_bry_and_clear(); + return tmp_bfr.To_bry_and_clear(); } public byte[] Case_build_upper(byte[] src) {return Case_build_upper(src, 0, src.length);} public byte[] Case_build_upper(byte[] src, int bgn, int end) {return Case_build(Bool_.Y, src, bgn, end);} @@ -116,7 +116,7 @@ public class Xol_case_mgr implements GfoInvkAble, Gfo_case_mgr { } pos += b_len; } - return tmp_bfr.Xto_bry_and_clear(); + return tmp_bfr.To_bry_and_clear(); } public byte[] Case_build_1st_upper(Bry_bfr bfr, byte[] src, int bgn, int end) {return Case_build_1st(bfr, Bool_.Y, src, bgn, end);} 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);} @@ -125,7 +125,7 @@ public class Xol_case_mgr implements GfoInvkAble, Gfo_case_mgr { 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(); + return bfr.To_bry_and_clear(); } public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { if (ctx.Match(k, Invk_add_bulk)) Add_bulk(m.ReadBry("v")); diff --git a/400_xowa/src/gplx/xowa/langs/cases/Xol_case_mgr_tst.java b/400_xowa/src/gplx/xowa/langs/cases/Xol_case_mgr_tst.java index bac6a6228..c41636c8d 100644 --- a/400_xowa/src/gplx/xowa/langs/cases/Xol_case_mgr_tst.java +++ b/400_xowa/src/gplx/xowa/langs/cases/Xol_case_mgr_tst.java @@ -55,7 +55,7 @@ public class Xol_case_mgr_tst { // bfr.Add_bry_comma(itm.Src_ary()).Add_byte_pipe(); // bfr.Add_bry_comma(itm.Trg_ary()).Add_byte_nl(); // } -// Io_mgr.I.SaveFilStr("C:\\test1.txt", bfr.Xto_str_and_clear()); +// Io_mgr.Instance.SaveFilStr("C:\\test1.txt", bfr.To_str_and_clear()); // } } class Xol_case_mgr_fxt { @@ -102,7 +102,7 @@ class Xol_case_mgr_fxt { Xol_case_itm itm = ary[i]; sb.Add(Byte_.To_str(itm.Tid())).Add_char_pipe().Add(String_.new_u8(itm.Src_ary())).Add_char_pipe().Add(String_.new_u8(itm.Trg_ary())).Add_char_nl(); } - return sb.Xto_str_and_clear(); + return sb.To_str_and_clear(); } public String raw_(Xol_case_itm_bry[] itms) { int itms_len = itms.length; @@ -127,7 +127,7 @@ class Xol_case_mgr_fxt { sb.Add("s:14:\"wikiLowerChars\";a:1038:{"); raw_ary(sb, lowers); sb.Add("}}"); - return sb.Xto_str_and_clear(); + return sb.To_str_and_clear(); } private void raw_ary(String_bldr sb, String[] ary) { int ary_len = ary.length; diff --git a/400_xowa/src/gplx/xowa/langs/cfgs/Cfg_nde_obj.java b/400_xowa/src/gplx/xowa/langs/cfgs/Cfg_nde_obj.java deleted file mode 100644 index 9057198b3..000000000 --- a/400_xowa/src/gplx/xowa/langs/cfgs/Cfg_nde_obj.java +++ /dev/null @@ -1,29 +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.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); - Cfg_nde_obj Nde_subs_make(byte[] itm_type, byte[] itm_key, byte[][] itm_atrs); - void Nde_subs_add(byte[] itm_key, Cfg_nde_obj itm_obj); - Cfg_nde_obj Nde_subs_get(byte[] key); - int Nde_subs_len(); - Cfg_nde_obj Nde_subs_get_at(int i); - void Nde_subs_del(byte[] key); - byte[] Nde_key(); -} diff --git a/400_xowa/src/gplx/xowa/langs/cfgs/Cfg_nde_root.java b/400_xowa/src/gplx/xowa/langs/cfgs/Cfg_nde_root.java deleted file mode 100644 index 30de19f46..000000000 --- a/400_xowa/src/gplx/xowa/langs/cfgs/Cfg_nde_root.java +++ /dev/null @@ -1,137 +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.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_(); - public Cfg_nde_obj Root_get(byte[] key) {return (Cfg_nde_obj)root.Nde_subs_get(key);} - public Cfg_nde_obj Grps_get(byte[] key) {return (Cfg_nde_obj)grps.Get_by(key);} - public Cfg_nde_root Root_(Cfg_nde_obj obj, byte[] typ, byte[][] atrs) {root = obj; grp_type = typ; grp_atrs = atrs; return this;} Cfg_nde_obj root; byte[] grp_type; byte[][] grp_atrs; - public void Root_subs_del(byte[] grp_key, byte[] itm_key) { - Cfg_nde_obj grp = (Cfg_nde_obj)grps.Get_by(grp_key); if (grp == null) return; - grp.Nde_subs_del(itm_key); - } - public void Root_subs_add(byte[] grp_key, byte[] itm_typ, byte[] itm_key, byte[][] itm_atrs) { - Cfg_nde_obj grp = (Cfg_nde_obj)grps.Get_by(grp_key); - if (grp == null) { - if (Bry_.Len_eq_0(grp_key)) - grp = root; - else { - grp = (Cfg_nde_obj)root.Nde_subs_make(grp_type, grp_key, grp_atrs); - root.Nde_subs_add(grp_key, grp); - grps.Add(grp_key, grp); - } - } - Cfg_nde_obj itm = grp.Nde_subs_get(itm_key); - if (itm == null) { - itm = (Cfg_nde_obj)grp.Nde_subs_make(itm_typ, itm_key, itm_atrs); - grp.Nde_subs_add(itm_key, itm); - if (itm.Nde_typ_is_grp()) // created itm is grp; add to root's main registry of grps - grps.Add(itm_key, itm); - } - else - if (itm_atrs.length > 0) itm.Nde_atrs_set(itm_atrs); - } - public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { - if (ctx.Match(k, Invk_set_bulk)) Set_bulk(m.ReadBry("v")); - else return GfoInvkAble_.Rv_unhandled; - return this; - } private static final String Invk_set_bulk = "set_bulk"; - public void Set_bulk(byte[] src) { - int src_len = src.length, src_pos = 0, fld_bgn = 0, fld_idx = 0; - Xol_csv_parser csv_parser = Xol_csv_parser._; - boolean fail = false; - byte cur_cmd = Byte_.Zero; - byte[] cur_grp_key = null, cur_itm_typ = null, cur_itm_key = null; - List_adp cmds = List_adp_.new_(); - while (true) { - boolean last = src_pos == src_len; - byte b = last ? Byte_ascii.Nl : src[src_pos]; - switch (b) { - case Byte_ascii.Pipe: - switch (fld_idx) { - case 0: - fail = true; - if (src_pos - fld_bgn == 1) { - byte cmd_byte = src[src_pos - 1]; - cur_cmd = Byte_.Zero; - switch (cmd_byte) { - case Byte_ascii.Plus: cur_cmd = Cfg_nde_cmd.Cmd_add; fail = false; break; - case Byte_ascii.Dash: cur_cmd = Cfg_nde_cmd.Cmd_del; fail = false; break; - } - } - if (fail) throw Err_.new_wo_type("cmd is invalid", "cmd", String_.new_u8(src, fld_bgn, src_pos)); - break; - case 1: cur_grp_key = csv_parser.Load(src, fld_bgn, src_pos); break; - case 2: cur_itm_typ = csv_parser.Load(src, fld_bgn, src_pos); break; - case 3: cur_itm_key = csv_parser.Load(src, fld_bgn, src_pos); break; - } - ++fld_idx; - fld_bgn = src_pos + 1; - break; - case Byte_ascii.Nl: - if (!(fld_idx == 0 && fld_bgn == src_pos)) { - Cfg_nde_cmd cmd = null; - switch (cur_cmd) { - case Cfg_nde_cmd.Cmd_add: - 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_.Split(cur_itm_atrs_raw, Byte_ascii.Tilde); - } - else if (fld_idx == 3) { - cur_itm_key = csv_parser.Load(src, fld_bgn, src_pos); - } - cmd = new Cfg_nde_cmd(cur_cmd, cur_grp_key, cur_itm_typ, cur_itm_key, cur_itm_atrs); - break; - case Cfg_nde_cmd.Cmd_del: - cur_itm_key = csv_parser.Load(src, fld_bgn, src_pos); - cmd = new Cfg_nde_cmd(cur_cmd, cur_grp_key, Bry_.Empty, cur_itm_key, Bry_.Ary_empty); - break; - } - cmds.Add(cmd); - } - cur_cmd = Byte_.Zero; - cur_grp_key = cur_itm_typ = cur_itm_key = null; - fld_idx = 0; - fld_bgn = src_pos + 1; - break; - } - if (last) break; - ++src_pos; - } - int len = cmds.Count(); - for (int i = 0; i < len; i++) { - Cfg_nde_cmd cmd = (Cfg_nde_cmd)cmds.Get_at(i); - switch (cmd.Cmd()) { - case Cfg_nde_cmd.Cmd_add: Root_subs_add(cmd.Grp_key(), cmd.Itm_typ(), cmd.Itm_key(), cmd.Itm_atrs()); break; - case Cfg_nde_cmd.Cmd_del: Root_subs_del(cmd.Grp_key(), cmd.Itm_key()); break; - } - } - } - static final String GRP_KEY = "gplx.cfg.root"; -} -class Cfg_nde_cmd { - public Cfg_nde_cmd(byte cmd, byte[] grp_key, byte[] itm_typ, byte[] itm_key, byte[][] itm_atrs) {this.cmd = cmd; this.grp_key = grp_key; this.itm_typ = itm_typ; this.itm_key = itm_key; this.itm_atrs = itm_atrs;} - public byte Cmd() {return cmd;} private byte cmd; - public byte[] Grp_key() {return grp_key;} private byte[] grp_key; - public byte[] Itm_typ() {return itm_typ;} private byte[] itm_typ; - public byte[] Itm_key() {return itm_key;} private byte[] itm_key; - public byte[][] Itm_atrs() {return itm_atrs;} private byte[][] itm_atrs; - public static final byte Cmd_add = 1, Cmd_del = 2; -} diff --git a/400_xowa/src/gplx/xowa/langs/cfgs/Xoac_lang_grp.java b/400_xowa/src/gplx/xowa/langs/cfgs/Xoac_lang_grp.java deleted file mode 100644 index b5c51d894..000000000 --- a/400_xowa/src/gplx/xowa/langs/cfgs/Xoac_lang_grp.java +++ /dev/null @@ -1,75 +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.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;} - public byte[] Key_bry() {return key_bry;} private byte[] key_bry; - public byte[] Name_bry() {return name_bry;} public Xoac_lang_grp Name_bry_(byte[] v) {name_bry = v; return this;} private byte[] name_bry; - public int Sort_idx() {return sort_idx;} private int sort_idx; - public byte[] Nde_key() {return key_bry;} - public boolean Nde_typ_is_grp() {return true;} - public Cfg_nde_obj Nde_subs_make(byte[] itm_type, byte[] itm_key, byte[][] itm_atrs) { - Cfg_nde_obj rv = null; - if (Bry_.Eq(itm_type, Make_grp)) rv = new Xoac_lang_grp(itm_key); - else if (Bry_.Eq(itm_type, Make_itm)) rv = new Xoac_lang_itm(itm_key); - else throw Err_.new_unhandled(itm_type); - rv.Nde_atrs_set(itm_atrs); - return rv; - } - public int Nde_subs_len() {return itms.Count();} - public Cfg_nde_obj Nde_subs_get_at(int i) {return (Cfg_nde_obj)itms.Get_at(i);} - public Cfg_nde_obj Nde_subs_get(byte[] key) {return (Cfg_nde_obj)itms.Get_by(key);} - public void Nde_subs_add(byte[] itm_key, Cfg_nde_obj itm_obj) { - if (!itm_obj.Nde_typ_is_grp()) { - Xoac_lang_itm itm = (Xoac_lang_itm)itm_obj; - if (!regy.Has(itm.Key_bry())) regy.Add(itm.Key_bry(), itm); - itm.Grp_(this); - } - itms.Add(itm_key, itm_obj); - } - public void Nde_subs_del(byte[] key) { - Cfg_nde_obj cur_obj = (Cfg_nde_obj)Nde_subs_get(key); - if (!cur_obj.Nde_typ_is_grp()) { - Xoac_lang_itm cur_itm = (Xoac_lang_itm)cur_obj; - Xoac_lang_itm reg_itm = (Xoac_lang_itm)regy.Get_by(key); - if (cur_itm.Uid() == reg_itm.Uid()) regy.Del(cur_itm.Key_bry()); - } - itms.Del(key); - } - public void Nde_atrs_set(byte[][] ary) { - int ary_len = ary.length; - if (ary_len > 0) name_bry = ary[0]; - if (ary_len > 1) sort_idx = Bry_.To_int_or(ary[1], -1); - } - public static final byte[] Make_grp = Bry_.new_a7("grp"), Make_itm = Bry_.new_a7("itm"); - public int Itms_len() {return itms.Count();} - public Cfg_nde_obj Itms_get_at(int i) {return (Cfg_nde_obj)itms.Get_at(i);} - Ordered_hash itms = Ordered_hash_.new_bry_(); - - private static Ordered_hash regy = Ordered_hash_.new_bry_(); - public static Xoac_lang_itm Regy_get_or_null(byte[] key) {return (Xoac_lang_itm)regy.Get_by(key);} - public static Xoac_lang_itm Regy_get_or_new (byte[] key) { - Xoac_lang_itm rv = Regy_get_or_null(key); - if (rv == null) { - rv = new Xoac_lang_itm(key); - regy.Add(key, rv); - } - return rv; - } -} diff --git a/400_xowa/src/gplx/xowa/langs/cfgs/Xoac_lang_grp_tst.java b/400_xowa/src/gplx/xowa/langs/cfgs/Xoac_lang_grp_tst.java deleted file mode 100644 index b31aa0247..000000000 --- a/400_xowa/src/gplx/xowa/langs/cfgs/Xoac_lang_grp_tst.java +++ /dev/null @@ -1,145 +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.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();} - @Test public void Add_itm_new() { - fxt.Define_bulk(String_.Concat_lines_nl - ( "+|euro|itm|fr|French" - , "+|euro|itm|de|German" - ) - , fxt.grp_("euro").Itms_ - ( fxt.itm_("fr").Local_name_("French") - , fxt.itm_("de").Local_name_("German") - )); - } - @Test public void Add_itm_nl() { - fxt.Define_bulk(String_.Concat_lines_nl - ( "" - , "+|euro|itm|fr|French" - , "" - ) - , fxt.grp_("euro").Itms_ - ( fxt.itm_("fr").Local_name_("French") - )); - } - @Test public void Add_grp() { - fxt.Define_bulk(String_.Concat_lines_nl - ( "+||grp|euro|European~1" - , "+|euro|itm|fr|French" - ) - , fxt.grp_("euro").Name_("European").Sort_idx_(1).Itms_ - ( fxt.itm_("fr").Local_name_("French") - )); - } - @Test public void Set_grp() { - fxt.Define_bulk(String_.Concat_lines_nl - ( "+|euro|itm|fr|French" - , "+||grp|euro|European" - ) - , fxt.grp_("euro").Name_("European").Itms_ - ( fxt.itm_("fr").Local_name_("French") - )); - } - @Test public void Del() { - fxt.Define_bulk(String_.Concat_lines_nl - ( "+|euro|itm|fr|French" - , "+|euro|itm|de|German" - , "-|euro|fr" - ) - , fxt.grp_("euro").Itms_ - ( fxt.itm_("de").Local_name_("German") - )); - } - @Test public void Add_grp_nest() { - fxt.Define_bulk(String_.Concat_lines_nl - ( "+||grp|wiki" - , "+|wiki|grp|euro|European" - , "+|euro|itm|de|German" - ) - , fxt.grp_("wiki").Itms_ - ( fxt.grp_("euro").Itms_ - ( fxt.itm_("de").Local_name_("German") - ))); - } -} -class Xoac_lang_grp_fxt { - Xoa_lang_mgr lang_mgr; Tst_mgr tst_mgr = new Tst_mgr(); - public void Clear() { - Xoae_app app = Xoa_app_fxt.app_(); - lang_mgr = app.Lang_mgr(); - } - public Xoac_lang_itm_chkr itm_(String key) {return new Xoac_lang_itm_chkr(key);} - public Xoac_lang_grp_chkr grp_(String key) {return new Xoac_lang_grp_chkr(key);} - public Xoac_lang_grp_fxt Define_bulk(String raw, Xoac_lang_grp_chkr... expd) { - lang_mgr.Groups().Set_bulk(Bry_.new_u8(raw)); - tst_mgr.Tst_ary("", expd, To_ary(lang_mgr.Groups())); - return this; - } - Xoac_lang_grp[] To_ary(Cfg_nde_root root) { - int len = root.Root_len(); - Xoac_lang_grp[] rv = new Xoac_lang_grp[len]; - for (int i = 0; i < len; i++) { - rv[i] = (Xoac_lang_grp)root.Root_get_at(i); // ASSUME: root only has grps (no itms) - } - return rv; - } -} -abstract class Xoac_lang_chkr_base implements Tst_chkr { - public abstract Class TypeOf(); - public abstract int Chk(Tst_mgr mgr, String path, Object actl); -} -class Xoac_lang_itm_chkr extends Xoac_lang_chkr_base { - public Xoac_lang_itm_chkr(String key) {this.key = key;} - public String Key() {return key;} private String key; - public Xoac_lang_itm_chkr Local_name_(String v) {local_name = v; return this;} private String local_name; - @Override public Class TypeOf() {return Xoac_lang_itm.class;} - @Override public int Chk(Tst_mgr mgr, String path, Object actl_obj) { - Xoac_lang_itm actl = (Xoac_lang_itm)actl_obj; - int rv = 0; - rv += mgr.Tst_val(key == null, path, "key", key, String_.new_u8(actl.Key_bry())); - rv += mgr.Tst_val(local_name == null, path, "local_name", local_name, String_.new_u8(actl.Local_name_bry())); - return rv; - } -} -class Xoac_lang_grp_chkr extends Xoac_lang_chkr_base { - public Xoac_lang_grp_chkr(String key) {this.key = key;} - public String Key() {return key;} private String key; - public Xoac_lang_grp_chkr Name_(String v) {name = v; return this;} private String name; - public Xoac_lang_grp_chkr Sort_idx_(int v) {sort_idx = v; return this;} private int sort_idx = -1; - public Xoac_lang_grp_chkr Itms_(Xoac_lang_chkr_base... v) {this.itms = v; return this;} private Xoac_lang_chkr_base[] itms; - @Override public Class TypeOf() {return Xoac_lang_grp.class;} - @Override public int Chk(Tst_mgr mgr, String path, Object actl_obj) { - Xoac_lang_grp actl = (Xoac_lang_grp)actl_obj; - int rv = 0; - rv += mgr.Tst_val(key == null, path, "key", key, String_.new_u8(actl.Key_bry())); - rv += mgr.Tst_val(name == null, path, "name", name, String_.new_u8(actl.Name_bry())); - rv += mgr.Tst_val(sort_idx == -1, path, "sort_idx", sort_idx, actl.Sort_idx()); - rv += mgr.Tst_sub_ary(itms, To_ary(actl), path, rv); - return rv; - } - Xoac_lang_obj[] To_ary(Xoac_lang_grp grp) { - int len = grp.Itms_len(); - Xoac_lang_obj[] rv = new Xoac_lang_obj[len]; - for (int i = 0; i < len; i++) - rv[i] = (Xoac_lang_obj)grp.Itms_get_at(i); // ASSUME: grp only has itms (no grps) - return rv; - } -} diff --git a/400_xowa/src/gplx/xowa/langs/cfgs/Xoac_lang_itm.java b/400_xowa/src/gplx/xowa/langs/cfgs/Xoac_lang_itm.java deleted file mode 100644 index b2baa9600..000000000 --- a/400_xowa/src/gplx/xowa/langs/cfgs/Xoac_lang_itm.java +++ /dev/null @@ -1,37 +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.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; - public int Uid() {return uid;} private int uid; - public byte[] Key_bry() {return key_bry;} private byte[] key_bry; - public byte[] Local_name_bry() {return local_name_bry;} public Xoac_lang_itm Local_name_bry_(byte[] v) {local_name_bry = v; return this;} private byte[] local_name_bry; - public byte[] Nde_key() {return key_bry;} - public boolean Nde_typ_is_grp() {return false;} - public Cfg_nde_obj Nde_subs_make(byte[] itm_type, byte[] itm_key, byte[][] itm_atrs) {throw Err_.new_wo_type("langs cannot have itms", "type", itm_type, "key", itm_key);} - public Cfg_nde_obj Nde_subs_get(byte[] key) {throw Err_.new_wo_type("langs cannot have itms", "key", key);} - public int Nde_subs_len() {return 0;} - public Cfg_nde_obj Nde_subs_get_at(int i) {throw Err_.new_wo_type("langs cannot have itms", "idx", i);} - public void Nde_subs_add(byte[] itm_key, Cfg_nde_obj itm_obj) {throw Err_.new_wo_type("langs cannot have itms", "key", String_.new_u8(itm_key));} - public void Nde_subs_del(byte[] key) {throw Err_.new_wo_type("langs cannot delete itms", "key", String_.new_u8(key));} - public void Nde_atrs_set(byte[][] ary) { - if (ary.length != 1) throw Err_.new_wo_type("expecting name only", "name", String_.AryXtoStr(String_.Ary(ary))); - local_name_bry = ary[0]; - } -} diff --git a/400_xowa/src/gplx/xowa/langs/durations/Xol_duration_itm_.java b/400_xowa/src/gplx/xowa/langs/durations/Xol_duration_itm_.java index 4b445fde0..61a6f4662 100644 --- a/400_xowa/src/gplx/xowa/langs/durations/Xol_duration_itm_.java +++ b/400_xowa/src/gplx/xowa/langs/durations/Xol_duration_itm_.java @@ -76,5 +76,5 @@ class Xol_duration_itm_sorter implements gplx.lists.ComparerAble { Xol_duration_itm rhs = (Xol_duration_itm)rhsObj; return -Long_.Compare(lhs.Seconds(), rhs.Seconds()); // - to sort from largest to smallest } - public static final Xol_duration_itm_sorter _ = new Xol_duration_itm_sorter(); Xol_duration_itm_sorter() {} + public static final Xol_duration_itm_sorter Instance = new Xol_duration_itm_sorter(); Xol_duration_itm_sorter() {} } 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 01f0ebbe0..720e934b5 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 @@ -17,13 +17,14 @@ along with this program. If not, see . */ package gplx.xowa.langs.durations; import gplx.*; import gplx.xowa.*; import gplx.xowa.langs.*; import gplx.xowa.parsers.*; +import gplx.xowa.langs.msgs.*; public class Xol_duration_mgr { private Xol_msg_itm[] interval_msgs = null; - public Xol_duration_mgr(Xol_lang lang) {this.lang = lang;} private Xol_lang lang; + public Xol_duration_mgr(Xol_lang_itm lang) {this.lang = lang;} private Xol_lang_itm lang; private Bry_bfr tmp_bfr = Bry_bfr.reset_(255); public Xol_interval_itm[] Get_duration_intervals(long seconds, Xol_duration_itm[] intervals) { if (intervals == null) intervals = Xol_duration_itm_.Ary_default; - Array_.Sort(intervals, Xol_duration_itm_sorter._); + Array_.Sort(intervals, Xol_duration_itm_sorter.Instance); int intervals_len = intervals.length; long val = seconds; List_adp rv = List_adp_.new_(); @@ -85,7 +86,7 @@ public class Xol_duration_mgr { tmp_bfr.Add(segs_ary[i]); } tmp_bfr.Add(Msg_and).Add(Msg_word_separator).Add(segs_ary[last_idx]); - return tmp_bfr.Xto_bry_and_clear(); + return tmp_bfr.To_bry_and_clear(); } } } diff --git a/400_xowa/src/gplx/xowa/langs/Xol_func_name_itm.java b/400_xowa/src/gplx/xowa/langs/funcs/Xol_func_itm.java similarity index 91% rename from 400_xowa/src/gplx/xowa/langs/Xol_func_name_itm.java rename to 400_xowa/src/gplx/xowa/langs/funcs/Xol_func_itm.java index 14bb7d6b9..1419e5cb4 100644 --- a/400_xowa/src/gplx/xowa/langs/Xol_func_name_itm.java +++ b/400_xowa/src/gplx/xowa/langs/funcs/Xol_func_itm.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; import gplx.*; import gplx.xowa.*; +package gplx.xowa.langs.funcs; import gplx.*; import gplx.xowa.*; import gplx.xowa.langs.*; import gplx.xowa.parsers.tmpls.*; -public class Xol_func_name_itm { +public class Xol_func_itm { public byte Tid() {return tid;} private byte tid = Xot_defn_.Tid_null; public Xot_defn Func() {return func;} private Xot_defn func = Xot_defn_.Null; public void Func_set(Xot_defn v, int colon_pos) { diff --git a/400_xowa/src/gplx/xowa/langs/Xol_func_name_regy.java b/400_xowa/src/gplx/xowa/langs/funcs/Xol_func_regy.java similarity index 88% rename from 400_xowa/src/gplx/xowa/langs/Xol_func_name_regy.java rename to 400_xowa/src/gplx/xowa/langs/funcs/Xol_func_regy.java index ccc534026..a167d3b09 100644 --- a/400_xowa/src/gplx/xowa/langs/Xol_func_name_regy.java +++ b/400_xowa/src/gplx/xowa/langs/funcs/Xol_func_regy.java @@ -15,15 +15,16 @@ 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; import gplx.*; import gplx.xowa.*; +package gplx.xowa.langs.funcs; import gplx.*; import gplx.xowa.*; import gplx.xowa.langs.*; 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; - private final Xol_func_name_itm finder = new Xol_func_name_itm(); +import gplx.xowa.langs.kwds.*; +public class Xol_func_regy { + private final Xoa_lang_mgr lang_mgr; private final Xol_lang_itm lang; + private final Xol_func_itm finder = new Xol_func_itm(); private final Btrie_slim_mgr cs_trie = Btrie_slim_mgr.cs(), ci_trie = Btrie_slim_mgr.ci_u8(); - public Xol_func_name_regy(Xoa_lang_mgr lang_mgr, Xol_lang lang) {this.lang_mgr = lang_mgr; this.lang = lang;} - public void Evt_lang_changed(Xol_lang lang) { + public Xol_func_regy(Xoa_lang_mgr lang_mgr, Xol_lang_itm lang) {this.lang_mgr = lang_mgr; this.lang = lang;} + public void Evt_lang_changed(Xol_lang_itm lang) { Xol_kwd_mgr kwd_mgr = lang.Kwd_mgr(); ci_trie.Clear(); cs_trie.Clear(); int[] kwd_ary = Pf_func_.Ary_get(!lang.Kwd_mgr__strx()); @@ -57,7 +58,7 @@ public class Xol_func_name_regy { ci_trie.Add_obj(lower_ary, func); } } - public Xol_func_name_itm Find_defn(byte[] src, int txt_bgn, int txt_end) { + public Xol_func_itm Find_defn(byte[] src, int txt_bgn, int txt_end) { finder.Clear(); for (int i = 0; i < 2; i++) { if (txt_bgn == txt_end) return finder; // NOTE: true when tmpl_name is either not loaded, or doesn't exist diff --git a/400_xowa/src/gplx/xowa/langs/genders/Xol_gender_.java b/400_xowa/src/gplx/xowa/langs/genders/Xol_gender_.java index af8d23437..793976670 100644 --- a/400_xowa/src/gplx/xowa/langs/genders/Xol_gender_.java +++ b/400_xowa/src/gplx/xowa/langs/genders/Xol_gender_.java @@ -18,7 +18,7 @@ along with this program. If not, see . package gplx.xowa.langs.genders; import gplx.*; import gplx.xowa.*; import gplx.xowa.langs.*; import gplx.core.primitives.*; import gplx.core.btries.*; public class Xol_gender_ { - public static Xol_gender new_by_lang_id(int lang_id) {return Xol_gender__basic.I;} + public static Xol_gender new_by_lang_id(int lang_id) {return Xol_gender__basic.Instance;} public static final int Tid_male = 0, Tid_female = 1, Tid_unknown = 2; } class Xol_gender__basic implements Xol_gender { @@ -30,5 +30,5 @@ class Xol_gender__basic implements Xol_gender { default: throw Err_.new_unimplemented(); } } - public static final Xol_gender__basic I = new Xol_gender__basic(); Xol_gender__basic() {} + public static final Xol_gender__basic Instance = new Xol_gender__basic(); Xol_gender__basic() {} } diff --git a/400_xowa/src/gplx/xowa/langs/grammars/Xol_grammar.java b/400_xowa/src/gplx/xowa/langs/grammars/Xol_grammar.java index 5078e7ba2..2cd53bf46 100644 --- a/400_xowa/src/gplx/xowa/langs/grammars/Xol_grammar.java +++ b/400_xowa/src/gplx/xowa/langs/grammars/Xol_grammar.java @@ -17,5 +17,5 @@ along with this program. If not, see . */ package gplx.xowa.langs.grammars; import gplx.*; import gplx.xowa.*; import gplx.xowa.langs.*; public interface Xol_grammar { - boolean Grammar_eval(Bry_bfr bfr, Xol_lang lang, byte[] word, byte[] type); + boolean Grammar_eval(Bry_bfr bfr, Xol_lang_itm lang, byte[] word, byte[] type); } diff --git a/400_xowa/src/gplx/xowa/langs/grammars/Xol_grammar_.java b/400_xowa/src/gplx/xowa/langs/grammars/Xol_grammar_.java index af6e8bf36..e1f266e6e 100644 --- a/400_xowa/src/gplx/xowa/langs/grammars/Xol_grammar_.java +++ b/400_xowa/src/gplx/xowa/langs/grammars/Xol_grammar_.java @@ -38,18 +38,18 @@ public class Xol_grammar_ { } public static Xol_grammar new_by_lang_id(int lang_id) { switch (lang_id) { - case Xol_lang_itm_.Id_fi: return new Xol_grammar_fi(); - case Xol_lang_itm_.Id_ru: return new Xol_grammar_ru(); - case Xol_lang_itm_.Id_pl: return Xol_grammar__noop._; - default: return Xol_grammar__unimplemented._; + case Xol_lang_stub_.Id_fi: return new Xol_grammar_fi(); + case Xol_lang_stub_.Id_ru: return new Xol_grammar_ru(); + case Xol_lang_stub_.Id_pl: return Xol_grammar__noop.Instance; + default: return Xol_grammar__unimplemented.Instance; } } } class Xol_grammar__unimplemented implements Xol_grammar { - public boolean Grammar_eval(Bry_bfr bfr, Xol_lang lang, byte[] word, byte[] type) {return false;} - public static final Xol_grammar__unimplemented _ = new Xol_grammar__unimplemented(); Xol_grammar__unimplemented() {} + public boolean Grammar_eval(Bry_bfr bfr, Xol_lang_itm lang, byte[] word, byte[] type) {return false;} + public static final Xol_grammar__unimplemented Instance = new Xol_grammar__unimplemented(); Xol_grammar__unimplemented() {} } class Xol_grammar__noop implements Xol_grammar { - public boolean Grammar_eval(Bry_bfr bfr, Xol_lang lang, byte[] word, byte[] type) {bfr.Add(word); return true;} - public static final Xol_grammar__noop _ = new Xol_grammar__noop(); Xol_grammar__noop() {} + public boolean Grammar_eval(Bry_bfr bfr, Xol_lang_itm lang, byte[] word, byte[] type) {bfr.Add(word); return true;} + public static final Xol_grammar__noop Instance = new Xol_grammar__noop(); Xol_grammar__noop() {} } diff --git a/400_xowa/src/gplx/xowa/langs/grammars/Xol_grammar_fi.java b/400_xowa/src/gplx/xowa/langs/grammars/Xol_grammar_fi.java index e76dd0e29..b2d226549 100644 --- a/400_xowa/src/gplx/xowa/langs/grammars/Xol_grammar_fi.java +++ b/400_xowa/src/gplx/xowa/langs/grammars/Xol_grammar_fi.java @@ -17,7 +17,7 @@ along with this program. If not, see . */ package gplx.xowa.langs.grammars; import gplx.*; import gplx.xowa.*; import gplx.xowa.langs.*; import gplx.core.primitives.*; import gplx.core.btries.*; -import gplx.xowa.urls.*; +import gplx.xowa.apps.urls.*; public class Xol_grammar_fi implements Xol_grammar { public boolean Vowel_harmony(byte[] word, int word_len) { // $aou = preg_match( '/[aou][^äöy]*$/i', $word ); @@ -35,7 +35,7 @@ public class Xol_grammar_fi implements Xol_grammar { } return aou_found; } - public boolean Grammar_eval(Bry_bfr bfr, Xol_lang lang, byte[] word, byte[] type) { + public boolean Grammar_eval(Bry_bfr bfr, Xol_lang_itm lang, byte[] word, byte[] type) { if (Bry_.Len_eq_0(word)) return true; // empty_string returns "" byte tid = Xol_grammar_.Tid_of_type(type); if (tid == Xol_grammar_.Tid_unknown) {bfr.Add(word); return true;} // unknown type returns word diff --git a/400_xowa/src/gplx/xowa/langs/grammars/Xol_grammar_ru.java b/400_xowa/src/gplx/xowa/langs/grammars/Xol_grammar_ru.java index 115e3c862..3800868b3 100644 --- a/400_xowa/src/gplx/xowa/langs/grammars/Xol_grammar_ru.java +++ b/400_xowa/src/gplx/xowa/langs/grammars/Xol_grammar_ru.java @@ -38,7 +38,7 @@ public class Xol_grammar_ru implements Xol_grammar { Xol_grammar_ru_genitive_itm itm = new Xol_grammar_ru_genitive_itm(tid, find_bry, repl_bry); trie.Add(find_bry, itm); } - public boolean Grammar_eval(Bry_bfr bfr, Xol_lang lang, byte[] word, byte[] type) { + public boolean Grammar_eval(Bry_bfr bfr, Xol_lang_itm lang, byte[] word, byte[] type) { if (Bry_.Len_eq_0(word)) return true; // empty_string returns "" byte tid = Xol_grammar_.Tid_of_type(type); switch (tid) { diff --git a/400_xowa/src/gplx/xowa/langs/Xol_kwd_grp.java b/400_xowa/src/gplx/xowa/langs/kwds/Xol_kwd_grp.java similarity index 92% rename from 400_xowa/src/gplx/xowa/langs/Xol_kwd_grp.java rename to 400_xowa/src/gplx/xowa/langs/kwds/Xol_kwd_grp.java index 27bf2bdbd..df447404b 100644 --- a/400_xowa/src/gplx/xowa/langs/Xol_kwd_grp.java +++ b/400_xowa/src/gplx/xowa/langs/kwds/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.langs; import gplx.*; import gplx.xowa.*; +package gplx.xowa.langs.kwds; import gplx.*; import gplx.xowa.*; import gplx.xowa.langs.*; 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/gplx/xowa/langs/Xol_kwd_grp_.java b/400_xowa/src/gplx/xowa/langs/kwds/Xol_kwd_grp_.java similarity index 95% rename from 400_xowa/src/gplx/xowa/langs/Xol_kwd_grp_.java rename to 400_xowa/src/gplx/xowa/langs/kwds/Xol_kwd_grp_.java index adf282aba..ae6d69ffb 100644 --- a/400_xowa/src/gplx/xowa/langs/Xol_kwd_grp_.java +++ b/400_xowa/src/gplx/xowa/langs/kwds/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.langs; import gplx.*; import gplx.xowa.*; +package gplx.xowa.langs.kwds; import gplx.*; import gplx.xowa.*; import gplx.xowa.langs.*; import gplx.core.primitives.*; public class Xol_kwd_grp_ { public static final int @@ -225,8 +225,11 @@ public static final int , Id_strx_replace = 203 , Id_strx_explode = 204 , Id_strx_urldecode = 205 +, Id_pagesincategory_pages = 206 +, Id_pagesincategory_subcats = 207 +, Id_pagesincategory_files = 208 ; -public static final int Id__max = 206; +public static final int Id__max = 209; private static byte[] ary_itm_(int id) { switch (id) { @@ -436,6 +439,9 @@ case Xol_kwd_grp_.Id_strx_count: return Bry_.new_a7("count"); case Xol_kwd_grp_.Id_strx_replace: return Bry_.new_a7("replace"); case Xol_kwd_grp_.Id_strx_explode: return Bry_.new_a7("explode"); case Xol_kwd_grp_.Id_strx_urldecode: return Bry_.new_a7("urldecode"); +case Xol_kwd_grp_.Id_pagesincategory_pages: return Bry_.new_u8("pagesincategory_pages"); +case Xol_kwd_grp_.Id_pagesincategory_subcats: return Bry_.new_u8("pagesincategory_subcats"); +case Xol_kwd_grp_.Id_pagesincategory_files: return Bry_.new_u8("pagesincategory_files"); default: throw Err_.new_unhandled(id); } } diff --git a/400_xowa/src/gplx/xowa/langs/Xol_kwd_itm.java b/400_xowa/src/gplx/xowa/langs/kwds/Xol_kwd_itm.java similarity index 91% rename from 400_xowa/src/gplx/xowa/langs/Xol_kwd_itm.java rename to 400_xowa/src/gplx/xowa/langs/kwds/Xol_kwd_itm.java index a40ef87ee..051c67f3d 100644 --- a/400_xowa/src/gplx/xowa/langs/Xol_kwd_itm.java +++ b/400_xowa/src/gplx/xowa/langs/kwds/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.langs; import gplx.*; import gplx.xowa.*; +package gplx.xowa.langs.kwds; import gplx.*; import gplx.xowa.*; import gplx.xowa.langs.*; 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/gplx/xowa/langs/Xol_kwd_mgr.java b/400_xowa/src/gplx/xowa/langs/kwds/Xol_kwd_mgr.java similarity index 91% rename from 400_xowa/src/gplx/xowa/langs/Xol_kwd_mgr.java rename to 400_xowa/src/gplx/xowa/langs/kwds/Xol_kwd_mgr.java index f9778f450..14df17206 100644 --- a/400_xowa/src/gplx/xowa/langs/Xol_kwd_mgr.java +++ b/400_xowa/src/gplx/xowa/langs/kwds/Xol_kwd_mgr.java @@ -15,10 +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; import gplx.*; import gplx.xowa.*; +package gplx.xowa.langs.kwds; import gplx.*; import gplx.xowa.*; import gplx.xowa.langs.*; import gplx.core.btries.*; +import gplx.xowa.langs.parsers.*; 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]; + private final Xol_lang_itm lang; private final Xol_kwd_grp[] grps = new Xol_kwd_grp[Xol_kwd_grp_.Id__max]; + private Btrie_slim_mgr kwd_default_trie; private byte[] kwd_default_key; private boolean kwd_default_init_needed = true; + public Xol_kwd_mgr(Xol_lang_itm lang) {this.lang = lang;} public int Len() {return grps.length;} public void Clear() { int len = grps.length; @@ -51,7 +54,6 @@ public class Xol_kwd_mgr implements GfoInvkAble { : kwd_default_trie.Match_bgn(match, 0, match_len) != null ; } - private Btrie_slim_mgr kwd_default_trie; private byte[] kwd_default_key; private boolean kwd_default_init_needed = true; public Xol_kwd_grp Get_at(int id) {return grps[id];} public Xol_kwd_grp Get_or_new(int id) { Xol_kwd_grp rv = grps[id]; diff --git a/400_xowa/src/gplx/xowa/langs/Xol_kwd_parse_data.java b/400_xowa/src/gplx/xowa/langs/kwds/Xol_kwd_parse_data.java similarity index 92% rename from 400_xowa/src/gplx/xowa/langs/Xol_kwd_parse_data.java rename to 400_xowa/src/gplx/xowa/langs/kwds/Xol_kwd_parse_data.java index c98222141..30610cdb0 100644 --- a/400_xowa/src/gplx/xowa/langs/Xol_kwd_parse_data.java +++ b/400_xowa/src/gplx/xowa/langs/kwds/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.langs; import gplx.*; import gplx.xowa.*; +package gplx.xowa.langs.kwds; import gplx.*; import gplx.xowa.*; import gplx.xowa.langs.*; import gplx.core.primitives.*; public class Xol_kwd_parse_data { public static byte[] Strip(Bry_bfr tmp, byte[] raw, Byte_obj_ref rslt) { @@ -74,7 +74,7 @@ public class Xol_kwd_parse_data { break; } } - return dirty ? tmp.Xto_bry_and_clear() : raw; + return dirty ? tmp.To_bry_and_clear() : raw; } public static final byte Strip_none = 0, Strip_bgn = 1, Strip_end = 2; } diff --git a/400_xowa/src/gplx/xowa/langs/Xol_kwd_parse_data_tst.java b/400_xowa/src/gplx/xowa/langs/kwds/Xol_kwd_parse_data_tst.java similarity index 93% rename from 400_xowa/src/gplx/xowa/langs/Xol_kwd_parse_data_tst.java rename to 400_xowa/src/gplx/xowa/langs/kwds/Xol_kwd_parse_data_tst.java index cf76af2c8..a28e6ec44 100644 --- a/400_xowa/src/gplx/xowa/langs/Xol_kwd_parse_data_tst.java +++ b/400_xowa/src/gplx/xowa/langs/kwds/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.langs; import gplx.*; import gplx.xowa.*; +package gplx.xowa.langs.kwds; import gplx.*; import gplx.xowa.*; import gplx.xowa.langs.*; 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/gplx/xowa/langs/Xol_lnki_trail_mgr.java b/400_xowa/src/gplx/xowa/langs/lnki_trails/Xol_lnki_trail_mgr.java similarity index 92% rename from 400_xowa/src/gplx/xowa/langs/Xol_lnki_trail_mgr.java rename to 400_xowa/src/gplx/xowa/langs/lnki_trails/Xol_lnki_trail_mgr.java index 6cf1379d4..48baf145c 100644 --- a/400_xowa/src/gplx/xowa/langs/Xol_lnki_trail_mgr.java +++ b/400_xowa/src/gplx/xowa/langs/lnki_trails/Xol_lnki_trail_mgr.java @@ -15,10 +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.langs; import gplx.*; import gplx.xowa.*; +package gplx.xowa.langs.lnki_trails; import gplx.*; import gplx.xowa.*; import gplx.xowa.langs.*; import gplx.core.btries.*; public class Xol_lnki_trail_mgr implements GfoInvkAble { - public Xol_lnki_trail_mgr(Xol_lang lang) {} + public Xol_lnki_trail_mgr(Xol_lang_itm lang) {} public void Clear() {trie.Clear();} public int Count() {return trie.Count();} public Btrie_slim_mgr Trie() {return trie;} Btrie_slim_mgr trie = Btrie_slim_mgr.cs(); diff --git a/400_xowa/src/gplx/xowa/langs/Xol_lnki_trail_mgr_tst.java b/400_xowa/src/gplx/xowa/langs/lnki_trails/Xol_lnki_trail_mgr_tst.java similarity index 86% rename from 400_xowa/src/gplx/xowa/langs/Xol_lnki_trail_mgr_tst.java rename to 400_xowa/src/gplx/xowa/langs/lnki_trails/Xol_lnki_trail_mgr_tst.java index 4da3eafdc..fbec84b8c 100644 --- a/400_xowa/src/gplx/xowa/langs/Xol_lnki_trail_mgr_tst.java +++ b/400_xowa/src/gplx/xowa/langs/lnki_trails/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.langs; import gplx.*; import gplx.xowa.*; +package gplx.xowa.langs.lnki_trails; import gplx.*; import gplx.xowa.*; import gplx.xowa.langs.*; 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(); @@ -24,10 +24,10 @@ public class Xol_lnki_trail_mgr_tst { } } class Xol_lnki_trail_mgr_fxt { - Xol_lang lang; Xol_lnki_trail_mgr lnki_trail_mgr; + Xol_lang_itm lang; Xol_lnki_trail_mgr lnki_trail_mgr; public void Clear() { Xoae_app app = Xoa_app_fxt.app_(); - lang = new Xol_lang(app.Lang_mgr(), Bry_.new_a7("fr")); + lang = new Xol_lang_itm(app.Lang_mgr(), Bry_.new_a7("fr")); lnki_trail_mgr = lang.Lnki_trail_mgr(); } public void Test_add_bulk(String raw, String... expd_ary) { diff --git a/400_xowa/src/gplx/xowa/langs/Xol_msg_itm.java b/400_xowa/src/gplx/xowa/langs/msgs/Xol_msg_itm.java similarity index 75% rename from 400_xowa/src/gplx/xowa/langs/Xol_msg_itm.java rename to 400_xowa/src/gplx/xowa/langs/msgs/Xol_msg_itm.java index 77b57583a..2fca28385 100644 --- a/400_xowa/src/gplx/xowa/langs/Xol_msg_itm.java +++ b/400_xowa/src/gplx/xowa/langs/msgs/Xol_msg_itm.java @@ -15,34 +15,34 @@ 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; import gplx.*; import gplx.xowa.*; +package gplx.xowa.langs.msgs; import gplx.*; import gplx.xowa.*; import gplx.xowa.langs.*; 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; - public boolean Src_is_missing() {return src == Src_missing;} - public byte Src() {return src;} public Xol_msg_itm Src_(byte v) {src = v; return this;} private byte src; - public byte[] Key() {return key;} private byte[] key; + public int Id() {return id;} private final int id; + public byte[] Key() {return key;} private final byte[] key; public byte[] Val() {return val;} private byte[] val; + public int Src() {return src;} public Xol_msg_itm Src_(int v) {src = v; return this;} private int src; + public boolean Src_is_missing() {return src == Src_missing;} public boolean Has_fmt_arg() {return has_fmt_arg;} private boolean has_fmt_arg; public boolean Has_tmpl_txt() {return has_tmpl_txt;} private boolean has_tmpl_txt; + public boolean Dirty() {return dirty;} public Xol_msg_itm Dirty_(boolean v) {dirty = v; return this;} private boolean dirty; // BLDR: public void Atrs_set(byte[] val, boolean has_fmt_arg, boolean has_tmpl_txt) { this.val = val; this.has_fmt_arg = has_fmt_arg; this.has_tmpl_txt = has_tmpl_txt; } - public boolean Dirty() {return dirty;} public Xol_msg_itm Dirty_(boolean v) {dirty = v; return this;} private boolean dirty; public byte[] Fmt(Bry_bfr bfr, Object... args) { synchronized (tmp_fmtr) { tmp_fmtr.Fmt_(val); tmp_fmtr.Bld_bfr_many(bfr, args); - return bfr.Xto_bry_and_clear(); + return bfr.To_bry_and_clear(); } } public byte[] Fmt_tmp(Bry_bfr bfr, byte[] tmp_val, Object... args) { synchronized (tmp_fmtr) { tmp_fmtr.Fmt_(tmp_val); tmp_fmtr.Bld_bfr_many(bfr, args); - return bfr.Xto_bry_and_clear(); + return bfr.To_bry_and_clear(); } } - public static final byte Src_null = 0, Src_lang = 1, Src_wiki = 2, Src_missing = 3; + public static final int Src_null = 0, Src_lang = 1, Src_wiki = 2, Src_missing = 3; private static Bry_fmtr tmp_fmtr = Bry_fmtr.tmp_(); } diff --git a/400_xowa/src/gplx/xowa/langs/Xol_msg_itm_.java b/400_xowa/src/gplx/xowa/langs/msgs/Xol_msg_itm_.java similarity index 98% rename from 400_xowa/src/gplx/xowa/langs/Xol_msg_itm_.java rename to 400_xowa/src/gplx/xowa/langs/msgs/Xol_msg_itm_.java index 1cbe52a19..70f5ade7c 100644 --- a/400_xowa/src/gplx/xowa/langs/Xol_msg_itm_.java +++ b/400_xowa/src/gplx/xowa/langs/msgs/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.langs; import gplx.*; import gplx.xowa.*; +package gplx.xowa.langs.msgs; import gplx.*; import gplx.xowa.*; import gplx.xowa.langs.*; import gplx.core.btries.*; import gplx.xowa.parsers.tmpls.*; public class Xol_msg_itm_ { public static final int @@ -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.gfss.Xoa_gfs_php_mgr.Xto_gfs(bfr, val); + val = gplx.xowa.apps.gfs.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/gplx/xowa/langs/Xol_msg_itm_tst.java b/400_xowa/src/gplx/xowa/langs/msgs/Xol_msg_itm_tst.java similarity index 93% rename from 400_xowa/src/gplx/xowa/langs/Xol_msg_itm_tst.java rename to 400_xowa/src/gplx/xowa/langs/msgs/Xol_msg_itm_tst.java index e8a875324..07315ad4e 100644 --- a/400_xowa/src/gplx/xowa/langs/Xol_msg_itm_tst.java +++ b/400_xowa/src/gplx/xowa/langs/msgs/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.langs; import gplx.*; import gplx.xowa.*; +package gplx.xowa.langs.msgs; import gplx.*; import gplx.xowa.*; import gplx.xowa.langs.*; 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/gplx/xowa/langs/Xol_msg_mgr.java b/400_xowa/src/gplx/xowa/langs/msgs/Xol_msg_mgr.java similarity index 95% rename from 400_xowa/src/gplx/xowa/langs/Xol_msg_mgr.java rename to 400_xowa/src/gplx/xowa/langs/msgs/Xol_msg_mgr.java index 679f17fe7..e4bcfc46f 100644 --- a/400_xowa/src/gplx/xowa/langs/Xol_msg_mgr.java +++ b/400_xowa/src/gplx/xowa/langs/msgs/Xol_msg_mgr.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.langs; import gplx.*; import gplx.xowa.*; +package gplx.xowa.langs.msgs; import gplx.*; import gplx.xowa.*; import gplx.xowa.langs.*; +import gplx.xowa.langs.parsers.*; 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) { 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 4999365a1..589ae29f0 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 @@ -17,29 +17,29 @@ along with this program. If not, see . */ package gplx.xowa.langs.msgs; import gplx.*; import gplx.xowa.*; import gplx.xowa.langs.*; import gplx.langs.phps.*; import gplx.xowa.parsers.*; -import gplx.xowa.apps.gfss.*; +import gplx.xowa.apps.gfs.*; public class Xol_msg_mgr_ { -// public static String Get_msg_val_gui_or_null(Xol_lang lang, byte[] pre, byte[] key, byte[] suf) { +// public static String Get_msg_val_gui_or_null(Xol_lang_itm lang, byte[] pre, byte[] key, byte[] suf) { // String rv = Get_msg_val_gui_or_null(lang, pre, key, suf); // return rv == null ? "<" + String_.new_u8(Bry_.Add(pre, key, suf)) + ">" : rv; // } - public static String Get_msg_val_gui_or_empty(Xoa_lang_mgr lang_mgr, Xol_lang lang, byte[] pre, byte[] key, byte[] suf) { // get from lang, else get from en; does not use get_msg_val to skip db lookups; should only be used for gui; DATE:2014-05-28 + public static String Get_msg_val_gui_or_empty(Xoa_lang_mgr lang_mgr, Xol_lang_itm lang, byte[] pre, byte[] key, byte[] suf) { // get from lang, else get from en; does not use get_msg_val to skip db lookups; should only be used for gui; DATE:2014-05-28 String rv = Get_msg_val_gui_or_null(lang_mgr, lang, pre, key, suf); return rv == null ? "" : rv; } - public static String Get_msg_val_gui_or(Xoa_lang_mgr lang_mgr, Xol_lang lang, byte[] pre, byte[] key, byte[] suf, String or) { + public static String Get_msg_val_gui_or(Xoa_lang_mgr lang_mgr, Xol_lang_itm lang, byte[] pre, byte[] key, byte[] suf, String or) { String rv = Get_msg_val_gui_or_null(lang_mgr, lang, pre, key, suf); return rv == null ? or : rv; } - public static String Get_msg_val_gui_or_null(Xoa_lang_mgr lang_mgr, Xol_lang lang, byte[] pre, byte[] key, byte[] suf) { // get from lang, else get from en; does not use get_msg_val to skip db lookups; should only be used for gui; DATE:2014-05-28 + public static String Get_msg_val_gui_or_null(Xoa_lang_mgr lang_mgr, Xol_lang_itm lang, byte[] pre, byte[] key, byte[] suf) { // get from lang, else get from en; does not use get_msg_val to skip db lookups; should only be used for gui; DATE:2014-05-28 byte[] msg_key = Bry_.Add(pre, key, suf); Xol_msg_itm msg_itm = lang.Msg_mgr().Itm_by_key_or_null(msg_key); if (msg_itm == null) msg_itm = lang_mgr.Lang_en().Msg_mgr().Itm_by_key_or_null(msg_key); return msg_itm == null ? null : String_.new_u8(msg_itm.Val()); } - public static byte[] Get_msg_val(Xowe_wiki wiki, Xol_lang lang, byte[] msg_key, byte[][] fmt_args) { - Bry_bfr tmp_bfr = wiki.Utl__bfr_mkr().Get_b512(); + public static byte[] Get_msg_val(Xowe_wiki wiki, Xol_lang_itm lang, byte[] msg_key, byte[][] fmt_args) { + Bry_bfr tmp_bfr = Xoa_app_.Utl__bfr_mkr().Get_b512(); Xol_msg_itm msg_itm = Get_msg_itm(tmp_bfr, wiki, lang, msg_key); byte[] rv = Get_msg_val(tmp_bfr, wiki, msg_itm, fmt_args); tmp_bfr.Mkr_rls(); @@ -54,7 +54,7 @@ public class Xol_msg_mgr_ { Bry_fmtr tmp_fmtr = Bry_fmtr.tmp_().Missing_bgn_(Missing_bry).Missing_end_(Bry_.Empty).Missing_adj_(1); tmp_fmtr.Fmt_(msg_val); tmp_fmtr.Bld_bfr(tmp_bfr, fmt_args); - msg_val = tmp_bfr.Xto_bry_and_clear(); + msg_val = tmp_bfr.To_bry_and_clear(); } if (has_tmpl) { Xop_ctx sub_ctx = Xop_ctx.new_sub_(wiki); Xop_tkn_mkr tkn_mkr = sub_ctx.Tkn_mkr(); @@ -63,16 +63,16 @@ public class Xol_msg_mgr_ { } return msg_val; } - public static Xol_msg_itm Get_msg_itm(Bry_bfr tmp_bfr, Xowe_wiki wiki, Xol_lang lang, byte[] msg_key) { + public static Xol_msg_itm Get_msg_itm(Bry_bfr tmp_bfr, Xowe_wiki wiki, Xol_lang_itm lang, byte[] msg_key) { byte[] msg_key_sub_root = msg_key; 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" - Object o = Xol_lang_itm_.Regy().Get_by_mid(msg_key, slash_pos + 1, msg_key_len); + Object o = Xol_lang_stub_.Regy().Get_by_mid(msg_key, slash_pos + 1, msg_key_len); if (o != null) { // text is known lang_code; - Xol_lang_itm lang_itm = (Xol_lang_itm)o; - lang = wiki.Appe().Lang_mgr().Get_by_key_or_new(lang_itm.Key()); // set lang + Xol_lang_stub lang_itm = (Xol_lang_stub)o; + lang = wiki.App().Lang_mgr().Get_by_or_new(lang_itm.Key()); // set lang } msg_key_sub_root = Bry_.Mid(msg_key, 0, slash_pos); // set msg to "a" (discarding "/b") } @@ -85,7 +85,7 @@ public class Xol_msg_mgr_ { if (msg_page.Missing()) { // [[MediaWiki:key/fallback]] still not found; search "lang.gfs"; Xol_msg_itm msg_in_lang = Get_msg_itm_from_gfs(wiki, lang, msg_key_sub_root); if (msg_in_lang == null) { - msg_val = tmp_bfr.Add_byte(Byte_ascii.Lt).Add(msg_key).Add_byte(Byte_ascii.Gt).Xto_bry_and_clear(); // set val to + msg_val = tmp_bfr.Add_byte(Byte_ascii.Lt).Add(msg_key).Add_byte(Byte_ascii.Gt).To_bry_and_clear(); // set val to msg_in_wiki.Src_(Xol_msg_itm.Src_missing); } else { @@ -100,31 +100,31 @@ public class Xol_msg_mgr_ { Xol_msg_itm_.update_val_(msg_in_wiki, msg_val); return msg_in_wiki; } - private static Xoae_page Get_msg_itm_from_db(Xowe_wiki wiki, Xol_lang lang, byte[] msg_key, byte[] msg_key_sub_root) { + private static Xoae_page Get_msg_itm_from_db(Xowe_wiki wiki, Xol_lang_itm lang, byte[] msg_key, byte[] msg_key_sub_root) { byte[] ns_bry = wiki.Ns_mgr().Ns_mediawiki().Name_db_w_colon(); - Xoa_ttl ttl = Xoa_ttl.parse(wiki, Bry_.Add(ns_bry, msg_key)); // ttl="MediaWiki:msg_key"; note that there may be "/lang"; EX:pl.d:Wikislownik:Bar/Archiwum_6 and newarticletext/pl + Xoa_ttl ttl = wiki.Ttl_parse(Bry_.Add(ns_bry, msg_key)); // ttl="MediaWiki:msg_key"; note that there may be "/lang"; EX:pl.d:Wikislownik:Bar/Archiwum_6 and newarticletext/pl Xoae_page rv = ttl == null ? Xoae_page.Empty : wiki.Data_mgr().Get_page_from_msg(ttl); if (rv.Missing()) { // [[MediaWiki:key]] not found; search for [[MediaWiki:key/fallback]] byte[][] fallback_ary = lang.Fallback_bry_ary(); int fallback_ary_len = fallback_ary.length; for (int i = 0; i < fallback_ary_len; i++) { byte[] fallback = fallback_ary[i]; - ttl = Xoa_ttl.parse(wiki, Bry_.Add(ns_bry, msg_key_sub_root, Slash_bry, fallback)); // ttl="MediaWiki:msg_key/fallback" + ttl = wiki.Ttl_parse(Bry_.Add(ns_bry, msg_key_sub_root, Slash_bry, fallback)); // ttl="MediaWiki:msg_key/fallback" rv = ttl == null ? Xoae_page.Empty : wiki.Data_mgr().Get_page_from_msg(ttl); if (!rv.Missing()) break; } } return rv; } - private static Xol_msg_itm Get_msg_itm_from_gfs(Xowe_wiki wiki, Xol_lang lang, byte[] msg_key_sub_root) { + private static Xol_msg_itm Get_msg_itm_from_gfs(Xowe_wiki wiki, Xol_lang_itm lang, byte[] msg_key_sub_root) { Xol_msg_itm rv = lang.Msg_mgr().Itm_by_key_or_null(msg_key_sub_root); // NOTE: should always be msg_key_sub_root; EX: "msg/lang" will never be in lang.gfs if (rv == null) { // msg not found; check fallbacks; note that this is different from MW b/c when MW constructs a lang, it automatically adds all fallback msgs to the current lang byte[][] fallback_ary = lang.Fallback_bry_ary(); int fallback_ary_len = fallback_ary.length; - Xoa_lang_mgr lang_mgr = wiki.Appe().Lang_mgr(); + Xoa_lang_mgr lang_mgr = wiki.App().Lang_mgr(); for (int i = 0; i < fallback_ary_len; i++) { byte[] fallback = fallback_ary[i]; - Xol_lang fallback_lang = lang_mgr.Get_by_key(fallback); + Xol_lang_itm fallback_lang = lang_mgr.Get_by(fallback); if (fallback_lang == null) continue; // NOTE: en has fallback of "false"; ignore bad fallbacks; rv = fallback_lang.Msg_mgr().Itm_by_key_or_null(msg_key_sub_root); if (rv != null) break; diff --git a/400_xowa/src/gplx/xowa/langs/Xol_msg_mgr_tst.java b/400_xowa/src/gplx/xowa/langs/msgs/Xol_msg_mgr_tst.java similarity index 95% rename from 400_xowa/src/gplx/xowa/langs/Xol_msg_mgr_tst.java rename to 400_xowa/src/gplx/xowa/langs/msgs/Xol_msg_mgr_tst.java index d78a47b59..65fea6791 100644 --- a/400_xowa/src/gplx/xowa/langs/Xol_msg_mgr_tst.java +++ b/400_xowa/src/gplx/xowa/langs/msgs/Xol_msg_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.langs; import gplx.*; import gplx.xowa.*; +package gplx.xowa.langs.msgs; import gplx.*; import gplx.xowa.*; import gplx.xowa.langs.*; import org.junit.*; import gplx.xowa.langs.msgs.*; public class Xol_msg_mgr_tst { Xol_msg_mgr_fxt fxt = new Xol_msg_mgr_fxt(); diff --git a/400_xowa/src/gplx/xowa/langs/msgs/Xow_msg_mgr.java b/400_xowa/src/gplx/xowa/langs/msgs/Xow_msg_mgr.java index 682b3dc86..3a81a37ec 100644 --- a/400_xowa/src/gplx/xowa/langs/msgs/Xow_msg_mgr.java +++ b/400_xowa/src/gplx/xowa/langs/msgs/Xow_msg_mgr.java @@ -16,16 +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.langs.msgs; import gplx.*; import gplx.xowa.*; import gplx.xowa.langs.*; -import gplx.xowa.html.sidebar.*; +import gplx.xowa.htmls.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) { + private final Xowe_wiki wiki; private Xol_lang_itm lang; private final Xol_msg_mgr msg_mgr; + public Xow_msg_mgr(Xowe_wiki wiki, Xol_lang_itm lang) { this.wiki = wiki; this.lang = lang; this.msg_mgr = new Xol_msg_mgr(wiki, false); } public void Clear() {msg_mgr.Clear();} - public void Lang_(Xol_lang v) { + public void Lang_(Xol_lang_itm v) { this.lang = v; this.Clear(); } @@ -97,7 +97,7 @@ public class Xow_msg_mgr implements GfoInvkAble { if (accesskey_found) bfr.Add_byte(Byte_ascii.Space).Add_byte(Byte_ascii.Brack_bgn).Add(accesskey_val).Add_byte(Byte_ascii.Brack_end); bfr.Add_byte(Byte_ascii.Quote); - byte[] rv = bfr.Xto_bry_and_clear(); + byte[] rv = bfr.To_bry_and_clear(); if (itm == null) return rv; else { diff --git a/400_xowa/src/gplx/xowa/langs/numbers/Xol_num_fmtr_base.java b/400_xowa/src/gplx/xowa/langs/numbers/Xol_num_fmtr_base.java index 201a223d4..b69e350a5 100644 --- a/400_xowa/src/gplx/xowa/langs/numbers/Xol_num_fmtr_base.java +++ b/400_xowa/src/gplx/xowa/langs/numbers/Xol_num_fmtr_base.java @@ -52,9 +52,9 @@ public class Xol_num_fmtr_base implements GfoInvkAble { i = dlm_match_pos - 1; // NOTE: handle multi-byte delims } } - return tmp.Xto_bry_and_clear(); + return tmp.To_bry_and_clear(); } - public byte[] Fmt(int val) {return Fmt(Bry_.new_a7(Int_.Xto_str(val)));} + public byte[] Fmt(int val) {return Fmt(Bry_.new_a7(Int_.To_str(val)));} public byte[] Fmt(byte[] src) { // SEE: DOC_1:Fmt int src_len = src.length; int num_bgn = -1, dec_pos = -1; @@ -95,7 +95,7 @@ public class Xol_num_fmtr_base implements GfoInvkAble { Gfo_num_fmt_wkr wkr = Get_or_new(src_len - num_bgn); wkr.Fmt(src, num_bgn, src_len, tmp); } - return tmp.Xto_bry_and_clear(); + return tmp.To_bry_and_clear(); } private Gfo_num_fmt_wkr Get_or_new(int src_len) { Gfo_num_fmt_wkr rv = null; 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 f47195301..cb3e39917 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 @@ -62,7 +62,7 @@ public class Xol_num_grp_fmtr { break; } } - return dirty ? bfr.Xto_bry_and_clear() : src; + return dirty ? bfr.To_bry_and_clear() : src; } private void Fmt_grp(Bry_bfr bfr, byte[] src, int bgn, int end, int len, int grp_len) { int seg_0 = bgn + (len % grp_len); // 5 digit number will have seg_0 of 2; 12345 -> 12,345 diff --git a/400_xowa/src/gplx/xowa/langs/numbers/Xol_num_mgr.java b/400_xowa/src/gplx/xowa/langs/numbers/Xol_num_mgr.java index 1e6c25c06..da2c6c66e 100644 --- a/400_xowa/src/gplx/xowa/langs/numbers/Xol_num_mgr.java +++ b/400_xowa/src/gplx/xowa/langs/numbers/Xol_num_mgr.java @@ -31,8 +31,8 @@ public class Xol_num_mgr implements GfoInvkAble { return num; } public byte[] Format_num_no_separators(byte[] num) {return Format_num(num, true);} - public byte[] Format_num_by_long(long val) {return Format_num(Bry_.new_a7(Long_.Xto_str(val)));} - public byte[] Format_num(int val) {return Format_num(Bry_.new_a7(Int_.Xto_str(val)));} + public byte[] Format_num_by_long(long val) {return Format_num(Bry_.new_a7(Long_.To_str(val)));} + public byte[] Format_num(int val) {return Format_num(Bry_.new_a7(Int_.To_str(val)));} public byte[] Format_num(byte[] num) {return Format_num(num, false);} public byte[] Format_num(byte[] num, boolean skip_commafy) { if (!skip_commafy) { diff --git a/400_xowa/src/gplx/xowa/langs/numbers/Xol_num_mgr_.java b/400_xowa/src/gplx/xowa/langs/numbers/Xol_num_mgr_.java index 9191d9b71..a77106df0 100644 --- a/400_xowa/src/gplx/xowa/langs/numbers/Xol_num_mgr_.java +++ b/400_xowa/src/gplx/xowa/langs/numbers/Xol_num_mgr_.java @@ -19,21 +19,21 @@ package gplx.xowa.langs.numbers; import gplx.*; import gplx.xowa.*; import gplx. public class Xol_num_mgr_ { public static Xol_num_mgr new_by_lang_id(int lang_id) { switch (lang_id) { - case Xol_lang_itm_.Id_be_tarask: - case Xol_lang_itm_.Id_bg: - case Xol_lang_itm_.Id_ru: - case Xol_lang_itm_.Id_pl: - case Xol_lang_itm_.Id_uk: - case Xol_lang_itm_.Id_es: - case Xol_lang_itm_.Id_et: - case Xol_lang_itm_.Id_hy: - case Xol_lang_itm_.Id_kaa: - case Xol_lang_itm_.Id_kk_cyrl: - case Xol_lang_itm_.Id_ksh: - // case Xol_lang_itm_.Id_ku_ku: + case Xol_lang_stub_.Id_be_tarask: + case Xol_lang_stub_.Id_bg: + case Xol_lang_stub_.Id_ru: + case Xol_lang_stub_.Id_pl: + case Xol_lang_stub_.Id_uk: + case Xol_lang_stub_.Id_es: + case Xol_lang_stub_.Id_et: + case Xol_lang_stub_.Id_hy: + case Xol_lang_stub_.Id_kaa: + case Xol_lang_stub_.Id_kk_cyrl: + case Xol_lang_stub_.Id_ksh: + // case Xol_lang_stub_.Id_ku_ku: return new Xol_num_mgr__commafy_5(); - case Xol_lang_itm_.Id_km: - case Xol_lang_itm_.Id_my: return new Xol_num_mgr__noop(); + case Xol_lang_stub_.Id_km: + case Xol_lang_stub_.Id_my: return new Xol_num_mgr__noop(); default: return new Xol_num_mgr(); } } diff --git a/400_xowa/src/gplx/xowa/langs/numbers/Xol_transform_mgr.java b/400_xowa/src/gplx/xowa/langs/numbers/Xol_transform_mgr.java index eceb8d90e..dc0b7e7bd 100644 --- a/400_xowa/src/gplx/xowa/langs/numbers/Xol_transform_mgr.java +++ b/400_xowa/src/gplx/xowa/langs/numbers/Xol_transform_mgr.java @@ -20,7 +20,7 @@ import gplx.core.btries.*; public class Xol_transform_mgr implements GfoInvkAble { private Btrie_fast_mgr trie_k_to_v = Btrie_fast_mgr.cs(); private Btrie_fast_mgr trie_v_to_k = Btrie_fast_mgr.cs(); - private Ordered_hash hash = Ordered_hash_.new_bry_(); + private Ordered_hash hash = Ordered_hash_.New_bry(); private boolean empty = true; public void Clear() {hash.Clear(); trie_k_to_v.Clear(); trie_v_to_k.Clear(); empty = true;} public int Len() {return hash.Count();} diff --git a/400_xowa/src/gplx/xowa/langs/Xol_csv_parser.java b/400_xowa/src/gplx/xowa/langs/parsers/Xol_csv_parser.java similarity index 84% rename from 400_xowa/src/gplx/xowa/langs/Xol_csv_parser.java rename to 400_xowa/src/gplx/xowa/langs/parsers/Xol_csv_parser.java index 79ab8279a..98a65c130 100644 --- a/400_xowa/src/gplx/xowa/langs/Xol_csv_parser.java +++ b/400_xowa/src/gplx/xowa/langs/parsers/Xol_csv_parser.java @@ -15,15 +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; import gplx.*; import gplx.xowa.*; +package gplx.xowa.langs.parsers; import gplx.*; import gplx.xowa.*; import gplx.xowa.langs.*; public class Xol_csv_parser { public void Save(Bry_bfr bfr, byte[] src) { int len = src.length; for (int i = 0; i < len; i++) { byte b = src[i]; switch (b) { - case Byte_ascii.Cr: bfr.Add_byte(Byte_ascii.Backslash); bfr.Add_byte(Byte_ascii.Ltr_r); break; - case Byte_ascii.Nl: bfr.Add_byte(Byte_ascii.Backslash); bfr.Add_byte(Byte_ascii.Ltr_n); break; + case Byte_ascii.Cr: bfr.Add_byte(Byte_ascii.Backslash); bfr.Add_byte(Byte_ascii.Ltr_r); break; + case Byte_ascii.Nl: bfr.Add_byte(Byte_ascii.Backslash); bfr.Add_byte(Byte_ascii.Ltr_n); break; case Byte_ascii.Tab: bfr.Add_byte(Byte_ascii.Backslash); bfr.Add_byte(Byte_ascii.Ltr_t); break; case Byte_ascii.Backslash: bfr.Add_byte(Byte_ascii.Backslash); bfr.Add_byte(Byte_ascii.Backslash); break; case Byte_ascii.Pipe: bfr.Add(Bry_pipe); break; @@ -31,7 +31,7 @@ public class Xol_csv_parser { } } } - public byte[] Load(byte[] src, int bgn, int end) {Load(tmp_bfr, src, bgn, end); return tmp_bfr.Xto_bry_and_clear();} + public byte[] Load(byte[] src, int bgn, int end) {Load(tmp_bfr, src, bgn, end); return tmp_bfr.To_bry_and_clear();} public void Load(Bry_bfr bfr, byte[] src) {Load(bfr, src, 0, src.length);} public void Load(Bry_bfr bfr, byte[] src, int bgn, int end) { for (int i = bgn; i < end; i++) { @@ -56,7 +56,7 @@ public class Xol_csv_parser { byte[] utf_bytes = new byte[utf_len]; int utf_idx = 0; int utf_pos = i + 2; for (int j = 0; j < utf_len; j++) { - int utf_int = Int_.Xto_int_hex(src, utf_pos, utf_pos + 4); + int utf_int = Int_.To_int_hex(src, utf_pos, utf_pos + 4); if (utf_int == -1) throw Err_.new_wo_type("invalid value for \\u", "val", String_.new_u8(src, bgn, end)); utf_bytes[utf_idx++] = (byte)utf_int; utf_pos += 6; @@ -78,5 +78,5 @@ public class Xol_csv_parser { } private static final byte[] Bry_pipe = Bry_.new_a7("\\u007C"); private static final Bry_bfr tmp_bfr = Bry_bfr.reset_(255); - public static final Xol_csv_parser _ = new Xol_csv_parser(); Xol_csv_parser() {} + public static final Xol_csv_parser Instance = new Xol_csv_parser(); Xol_csv_parser() {} } diff --git a/400_xowa/src/gplx/xowa/langs/Xol_csv_parser_tst.java b/400_xowa/src/gplx/xowa/langs/parsers/Xol_csv_parser_tst.java similarity index 84% rename from 400_xowa/src/gplx/xowa/langs/Xol_csv_parser_tst.java rename to 400_xowa/src/gplx/xowa/langs/parsers/Xol_csv_parser_tst.java index ac27719c4..f89454164 100644 --- a/400_xowa/src/gplx/xowa/langs/Xol_csv_parser_tst.java +++ b/400_xowa/src/gplx/xowa/langs/parsers/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.langs; import gplx.*; import gplx.xowa.*; +package gplx.xowa.langs.parsers; import gplx.*; import gplx.xowa.*; import gplx.xowa.langs.*; import org.junit.*; public class Xol_csv_parser_tst { Xol_csv_parser_fxt fxt = new Xol_csv_parser_fxt(); @@ -27,15 +27,15 @@ public class Xol_csv_parser_tst { @Test public void Utf() {fxt.Tst_load(" ", "\\u00c2\\u00a0");} // NOTE: 1st String is nbsp; } class Xol_csv_parser_fxt { - Xol_csv_parser parser = Xol_csv_parser._; Bry_bfr tmp_bfr = Bry_bfr.reset_(255); + Xol_csv_parser parser = Xol_csv_parser.Instance; Bry_bfr tmp_bfr = Bry_bfr.reset_(255); public void Clear() {} public void Tst_save(String raw, String expd) { parser.Save(tmp_bfr, Bry_.new_u8(raw)); - Tfds.Eq(expd, tmp_bfr.Xto_str_and_clear()); + Tfds.Eq(expd, tmp_bfr.To_str_and_clear()); } public void Tst_load(String expd, String raw_str) { byte[] raw = Bry_.new_u8(raw_str); parser.Load(tmp_bfr, raw, 0, raw.length); - Tfds.Eq(expd, tmp_bfr.Xto_str_and_clear()); + Tfds.Eq(expd, tmp_bfr.To_str_and_clear()); } } diff --git a/400_xowa/src/gplx/xowa/langs/Xol_lang_srl.java b/400_xowa/src/gplx/xowa/langs/parsers/Xol_lang_srl.java similarity index 86% rename from 400_xowa/src/gplx/xowa/langs/Xol_lang_srl.java rename to 400_xowa/src/gplx/xowa/langs/parsers/Xol_lang_srl.java index 3d2ab282d..3c544ce3f 100644 --- a/400_xowa/src/gplx/xowa/langs/Xol_lang_srl.java +++ b/400_xowa/src/gplx/xowa/langs/parsers/Xol_lang_srl.java @@ -15,15 +15,16 @@ 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; import gplx.*; import gplx.xowa.*; +package gplx.xowa.langs.parsers; import gplx.*; import gplx.xowa.*; import gplx.xowa.langs.*; import gplx.core.intls.*; -import gplx.xowa.apps.gfss.*; import gplx.xowa.langs.numbers.*; -import gplx.xowa.nss.*; +import gplx.xowa.apps.gfs.*; +import gplx.xowa.langs.numbers.*; import gplx.xowa.langs.msgs.*; import gplx.xowa.langs.kwds.*; import gplx.xowa.langs.bldrs.*; import gplx.xowa.langs.specials.*; +import gplx.xowa.wikis.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; int cur_id = -1; - List_adp rv = List_adp_.new_(); Xol_csv_parser csv_parser = Xol_csv_parser._; + List_adp rv = List_adp_.new_(); Xol_csv_parser csv_parser = Xol_csv_parser.Instance; while (true) { boolean last = pos == src_len; // NOTE: logic occurs b/c of \n}~-> dlm which gobbles up last \n byte b = last ? Byte_ascii.Nl : src[pos]; @@ -52,7 +53,7 @@ public class Xol_lang_srl { int src_len = src.length, pos = 0, fld_bgn = 0, fld_idx = 0; boolean cur_cs = false; byte[] cur_key = Bry_.Empty; List_adp cur_words = List_adp_.new_(); - Xol_csv_parser csv_parser = Xol_csv_parser._; + Xol_csv_parser csv_parser = Xol_csv_parser.Instance; while (true) { boolean last = pos == src_len; // NOTE: logic occurs b/c of \n}~-> dlm which gobbles up last \n byte b = last ? Byte_ascii.Nl : src[pos]; @@ -100,7 +101,7 @@ public class Xol_lang_srl { public static void Load_messages(Xol_msg_mgr msg_mgr, byte[] src) { int src_len = src.length, pos = 0, fld_bgn = 0; byte[] cur_key = Bry_.Empty; - Xol_csv_parser csv_parser = Xol_csv_parser._; + Xol_csv_parser csv_parser = Xol_csv_parser.Instance; while (true) { boolean last = pos == src_len; // NOTE: logic occurs b/c of \n}~-> dlm which gobbles up last \n byte b = last ? Byte_ascii.Nl : src[pos]; @@ -126,7 +127,7 @@ public class Xol_lang_srl { public static void Load_specials(Xol_specials_mgr special_mgr, byte[] src) { int src_len = src.length, pos = 0, fld_bgn = 0; byte[] cur_key = Bry_.Empty; - Xol_csv_parser csv_parser = Xol_csv_parser._; + Xol_csv_parser csv_parser = Xol_csv_parser.Instance; while (true) { boolean last = pos == src_len; // NOTE: logic occurs b/c of \n}~-> dlm which gobbles up last \n byte b = last ? Byte_ascii.Nl : src[pos]; @@ -148,12 +149,12 @@ public class Xol_lang_srl { ++pos; } } - public static void Save_num_mgr(Gfs_bldr bldr, Xol_num_mgr num_mgr) { + public static void Save_num_mgr(Xoa_gfs_bldr bldr, Xol_num_mgr num_mgr) { Xol_transform_mgr separators_mgr = num_mgr.Separators_mgr(); int separators_len = separators_mgr.Len(); Xol_transform_mgr digits_mgr = num_mgr.Digits_mgr(); int digits_len = digits_mgr.Len(); byte[] digit_grouping_pattern = num_mgr.Num_grp_fmtr().Digit_grouping_pattern(); if (separators_len > 0 || digits_len > 0 || digit_grouping_pattern != null) { - bldr.Add_proc_init_one(Xol_lang.Invk_numbers).Add_curly_bgn_nl(); // numbers { + bldr.Add_proc_init_one(Xol_lang_itm.Invk_numbers).Add_curly_bgn_nl(); // numbers { if (digit_grouping_pattern != null) { bldr.Add_indent(1).Add_eq_str(Xol_num_mgr.Invk_digit_grouping_pattern, digit_grouping_pattern); } @@ -180,8 +181,8 @@ public class Xol_lang_srl { bldr.Add_curly_end_nl(); // } } } - public static void Save_ns_grps(Gfs_bldr bldr, Xol_ns_grp ns_grp, String proc_invk) { - int ns_grp_len = ns_grp.Len(); Xol_csv_parser csv_parser = Xol_csv_parser._; + public static void Save_ns_grps(Xoa_gfs_bldr bldr, Xol_ns_grp ns_grp, String proc_invk) { + int ns_grp_len = ns_grp.Len(); Xol_csv_parser csv_parser = Xol_csv_parser.Instance; if (ns_grp_len == 0) return; Bry_bfr bfr = bldr.Bfr(); bldr.Add_proc_cont_one(proc_invk).Add_nl(); @@ -196,11 +197,11 @@ public class Xol_lang_srl { bldr.Add_quote_xtn_end(); // ']:>\n bldr.Add_paren_end().Add_proc_cont_one(Invk_lang).Add_nl(); // ).lang\n } - public static void Save_specials(Gfs_bldr bldr, Xol_specials_mgr specials_mgr) { - int specials_len = specials_mgr.Count(); Xol_csv_parser csv_parser = Xol_csv_parser._; + public static void Save_specials(Xoa_gfs_bldr bldr, Xol_specials_mgr specials_mgr) { + int specials_len = specials_mgr.Count(); Xol_csv_parser csv_parser = Xol_csv_parser.Instance; if (specials_len == 0) return; Bry_bfr bfr = bldr.Bfr(); - bldr.Add_proc_cont_one(Xol_lang.Invk_specials).Add_nl(); + bldr.Add_proc_cont_one(Xol_lang_itm.Invk_specials).Add_nl(); bldr.Add_indent().Add_proc_cont_one(Xol_specials_mgr.Invk_clear).Add_nl(); bldr.Add_indent().Add_proc_cont_one(Invk_load_text).Add_paren_bgn().Add_nl(); // .load_text(\n bldr.Add_quote_xtn_bgn(); // <~{\n' @@ -217,8 +218,8 @@ public class Xol_lang_srl { bldr.Add_quote_xtn_end(); // ']:>\n bldr.Add_paren_end().Add_proc_cont_one(Invk_lang).Add_nl(); // ).lang\n } - public static void Save_keywords(Gfs_bldr bldr, Xol_kwd_mgr kwd_mgr) { - int len = kwd_mgr.Len(); Xol_csv_parser csv_parser = Xol_csv_parser._; + public static void Save_keywords(Xoa_gfs_bldr bldr, Xol_kwd_mgr kwd_mgr) { + int len = kwd_mgr.Len(); Xol_csv_parser csv_parser = Xol_csv_parser.Instance; int count = 0; for (int i = 0; i < len; i++) { Xol_kwd_grp grp = kwd_mgr.Get_at(i); if (grp == null) continue; // some items may not be loaded/set by lang @@ -226,7 +227,7 @@ public class Xol_lang_srl { } if (count == 0) return; Bry_bfr bfr = bldr.Bfr(); - bldr.Add_proc_cont_one(Xol_lang.Invk_keywords).Add_nl(); // .keywords\n + bldr.Add_proc_cont_one(Xol_lang_itm.Invk_keywords).Add_nl(); // .keywords\n bldr.Add_indent().Add_proc_cont_one(Invk_load_text).Add_paren_bgn().Add_nl(); // .load_text(\n bldr.Add_quote_xtn_bgn(); // <~{\n' for (int i = 0; i < len; i++) { @@ -245,8 +246,8 @@ public class Xol_lang_srl { bldr.Add_quote_xtn_end(); // ']:>\n bldr.Add_paren_end().Add_proc_cont_one(Invk_lang).Add_nl(); // ).lang\n } - public static void Save_messages(Gfs_bldr bldr, Xol_msg_mgr msg_mgr, boolean dirty) { - int len = msg_mgr.Itms_max(); Xol_csv_parser csv_parser = Xol_csv_parser._; + public static void Save_messages(Xoa_gfs_bldr bldr, Xol_msg_mgr msg_mgr, boolean dirty) { + int len = msg_mgr.Itms_max(); Xol_csv_parser csv_parser = Xol_csv_parser.Instance; int count = 0; for (int i = 0; i < len; i++) { Xol_msg_itm itm = msg_mgr.Itm_by_id_or_null(i); if (itm == null) continue; // some items may not be loaded/set by lang @@ -255,7 +256,7 @@ public class Xol_lang_srl { } if (count == 0) return; Bry_bfr bfr = bldr.Bfr(); - bldr.Add_proc_cont_one(Xol_lang.Invk_messages).Add_nl(); // .keywords\n + bldr.Add_proc_cont_one(Xol_lang_itm.Invk_messages).Add_nl(); // .keywords\n bldr.Add_indent().Add_proc_cont_one(Invk_load_text).Add_paren_bgn().Add_nl(); // .load_text(\n bldr.Add_quote_xtn_bgn(); // <~{\n' for (int i = 0; i < len; i++) { diff --git a/400_xowa/src/gplx/xowa/langs/Xol_lang_srl_tst.java b/400_xowa/src/gplx/xowa/langs/parsers/Xol_lang_srl_tst.java similarity index 83% rename from 400_xowa/src/gplx/xowa/langs/Xol_lang_srl_tst.java rename to 400_xowa/src/gplx/xowa/langs/parsers/Xol_lang_srl_tst.java index b59856188..3592b230a 100644 --- a/400_xowa/src/gplx/xowa/langs/Xol_lang_srl_tst.java +++ b/400_xowa/src/gplx/xowa/langs/parsers/Xol_lang_srl_tst.java @@ -15,11 +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; import gplx.*; import gplx.xowa.*; +package gplx.xowa.langs.parsers; import gplx.*; import gplx.xowa.*; import gplx.xowa.langs.*; import org.junit.*; import gplx.core.strings.*; import gplx.core.intls.*; -import gplx.xowa.apps.gfss.*; import gplx.xowa.langs.numbers.*; -import gplx.xowa.nss.*; +import gplx.xowa.apps.gfs.*; +import gplx.xowa.langs.numbers.*; import gplx.xowa.langs.msgs.*; import gplx.xowa.langs.kwds.*; import gplx.xowa.langs.bldrs.*; import gplx.xowa.langs.specials.*; +import gplx.xowa.wikis.nss.*; public class Xol_lang_srl_tst { private Xol_lang_srl_fxt fxt = new Xol_lang_srl_fxt(); @Before public void init() {fxt.Clear();} @@ -36,7 +37,7 @@ public class Xol_lang_srl_tst { fxt.Invk(raw); Xol_ns_grp grp = fxt.Lang().Ns_names(); fxt.Tst_ns_grp(grp, fxt.ns_(6, "Filex"), fxt.ns_(10, "Templatex")); - fxt.Run_save_ns_grp(grp, Xol_lang.Invk_ns_names, raw); + fxt.Run_save_ns_grp(grp, Xol_lang_itm.Invk_ns_names, raw); } @Test public void Ns_aliases() { String raw = String_.Concat_lines_nl @@ -51,7 +52,7 @@ public class Xol_lang_srl_tst { fxt.Invk(raw); Xol_ns_grp grp = fxt.Lang().Ns_aliases(); fxt.Tst_ns_grp(grp, fxt.ns_(6, "Filex"), fxt.ns_(10, "Templatex")); - fxt.Run_save_ns_grp(grp, Xol_lang.Invk_ns_aliases, raw); + fxt.Run_save_ns_grp(grp, Xol_lang_itm.Invk_ns_aliases, raw); } @Test public void Kwds() { String raw = String_.Concat_lines_nl // NOTE: notoc must go before toc because ID order @@ -66,7 +67,7 @@ public class Xol_lang_srl_tst { fxt.Invk(raw); Xol_kwd_mgr kwd_mgr = fxt.Lang().Kwd_mgr(); fxt.Tst_keywords(kwd_mgr, fxt.kwd_("notoc", true, "no_table_of_contents", "toc_n"), fxt.kwd_("toc", false, "table_of_contents", "toc_y")); - fxt.Run_save_kwd_mgr(kwd_mgr, Xol_lang.Invk_keywords, raw); + fxt.Run_save_kwd_mgr(kwd_mgr, Xol_lang_itm.Invk_keywords, raw); } @Test public void Specials() { String raw = String_.Concat_lines_nl // NOTE: notoc must go before toc because ID order @@ -82,7 +83,7 @@ public class Xol_lang_srl_tst { fxt.Invk(raw); Xol_specials_mgr specials_mgr = fxt.Lang().Specials_mgr(); fxt.Tst_specials(specials_mgr, fxt.special_("Randompage", "PageAuHasard", "Page_au_hasard"), fxt.special_("Search", "Recherche", "Rechercher")); - fxt.Run_save_specials_mgr(specials_mgr, Xol_lang.Invk_specials, raw); + fxt.Run_save_specials_mgr(specials_mgr, Xol_lang_itm.Invk_specials, raw); } @Test public void Kwds_blank_line() { // PURPOSE.fix: extra blank line negates entire entry String raw = String_.Concat_lines_nl @@ -111,10 +112,10 @@ public class Xol_lang_srl_tst { fxt.Invk(raw); Xol_msg_mgr msg_mgr = fxt.Lang().Msg_mgr(); fxt.Tst_messages(msg_mgr, fxt.msg_("sunday", "dimanche"), fxt.msg_("monday", "lundi")); - fxt.Run_save_msg_mgr(msg_mgr, Xol_lang.Invk_messages, raw); + fxt.Run_save_msg_mgr(msg_mgr, Xol_lang_itm.Invk_messages, raw); } @Test public void Fallback() { - Io_mgr.I.SaveFilStr(Xol_lang_.xo_lang_fil_(fxt.App().Fsys_mgr(), "zh-hans"), String_.Concat_lines_nl + Io_mgr.Instance.SaveFilStr(Xol_lang_itm_.xo_lang_fil_(fxt.App().Fsys_mgr(), "zh-hans"), String_.Concat_lines_nl ( "this" , ".keywords" , " .load_text(" @@ -164,9 +165,9 @@ public class Xol_lang_srl_tst { fxt.Tst_messages(fxt.Lang().Msg_mgr(), fxt.msg_("sunday", "sunday1"), fxt.msg_("monday", "monday1")); } @Test public void Fallback_circular() { // PURPOSE: pt and pt-br cite each other as fallback in Messages*.php; DATE:2013-02-18 - Io_mgr.I.SaveFilStr(Xol_lang_.xo_lang_fil_(fxt.App().Fsys_mgr(), "pt") , "fallback_load('pt-br');"); - Io_mgr.I.SaveFilStr(Xol_lang_.xo_lang_fil_(fxt.App().Fsys_mgr(), "pt-br") , "fallback_load('pt');"); - Xol_lang lang = new Xol_lang(fxt.App().Lang_mgr(), Bry_.new_a7("pt")); + Io_mgr.Instance.SaveFilStr(Xol_lang_itm_.xo_lang_fil_(fxt.App().Fsys_mgr(), "pt") , "fallback_load('pt-br');"); + Io_mgr.Instance.SaveFilStr(Xol_lang_itm_.xo_lang_fil_(fxt.App().Fsys_mgr(), "pt-br") , "fallback_load('pt');"); + Xol_lang_itm lang = new Xol_lang_itm(fxt.App().Lang_mgr(), Bry_.new_a7("pt")); lang.Init_by_load(); } @Test public void Num_fmt() { @@ -202,11 +203,11 @@ public class Xol_lang_srl_tst { class Xol_lang_srl_fxt { public void Clear() { app = Xoa_app_fxt.app_(); - lang = new Xol_lang(app.Lang_mgr(), Bry_.new_a7("fr")); + lang = new Xol_lang_itm(app.Lang_mgr(), Bry_.new_a7("fr")); Xoa_gfs_mgr.Msg_parser_init(); // required by fallback_load - } GfsCtx ctx = GfsCtx.new_(); Gfs_bldr bldr = new Gfs_bldr(); //Bry_bfr tmp_bfr = Bry_bfr.reset_(255); + } GfsCtx ctx = GfsCtx.new_(); Xoa_gfs_bldr bldr = new Xoa_gfs_bldr(); //Bry_bfr tmp_bfr = Bry_bfr.reset_(255); public Xoae_app App() {return app;} private Xoae_app app; - public Xol_lang Lang() {return lang;} private Xol_lang lang; + public Xol_lang_itm Lang() {return lang;} private Xol_lang_itm lang; public Xow_ns ns_(int id, String s) {return new Xow_ns(id, Xow_ns_case_.Id_1st, Bry_.new_u8(s), false);} public Xol_specials_itm special_(String key, String... words) {return new Xol_specials_itm(Bry_.new_u8(key), Bry_.Ary(words));} public Xol_kwd_grp kwd_(String key, boolean case_match, String... words) { @@ -238,23 +239,23 @@ class Xol_lang_srl_fxt { } public void Run_save_ns_grp(Xol_ns_grp grp, String invk, String raw) { Xol_lang_srl.Save_ns_grps(bldr, grp, invk); - Tfds.Eq_str_lines("." + raw, bldr.Bfr().Xto_str_and_clear()); + Tfds.Eq_str_lines("." + raw, bldr.Bfr().To_str_and_clear()); } public void Run_save_kwd_mgr(Xol_kwd_mgr kwd_mgr, String invk, String raw) { Xol_lang_srl.Save_keywords(bldr, kwd_mgr); - Tfds.Eq_str_lines("." + raw, bldr.Bfr().Xto_str_and_clear()); + Tfds.Eq_str_lines("." + raw, bldr.Bfr().To_str_and_clear()); } public void Run_save_msg_mgr(Xol_msg_mgr msg_mgr, String invk, String raw) { Xol_lang_srl.Save_messages(bldr, msg_mgr, true); - Tfds.Eq_str_lines("." + raw, bldr.Bfr().Xto_str_and_clear()); + Tfds.Eq_str_lines("." + raw, bldr.Bfr().To_str_and_clear()); } public void Run_save_num_mgr(Xol_num_mgr num_mgr, String raw) { Xol_lang_srl.Save_num_mgr(bldr, num_mgr); - Tfds.Eq_str_lines(raw, bldr.Bfr().Xto_str_and_clear()); + Tfds.Eq_str_lines(raw, bldr.Bfr().To_str_and_clear()); } public void Run_save_specials_mgr(Xol_specials_mgr specials_mgr, String invk, String raw) { Xol_lang_srl.Save_specials(bldr, specials_mgr); - Tfds.Eq_str_lines("." + raw, bldr.Bfr().Xto_str_and_clear()); + Tfds.Eq_str_lines("." + raw, bldr.Bfr().To_str_and_clear()); } public void Tst_num_fmt(String raw, String expd) {Tfds.Eq(expd, String_.new_u8(lang.Num_mgr().Format_num(Bry_.new_u8(raw))));} public void Tst_keywords(Xol_kwd_mgr kwd_mgr, Xol_kwd_grp... ary) { @@ -277,7 +278,7 @@ class Xol_lang_srl_fxt { sb.Add(itm.Aliases()[j]).Add_char_nl(); } } - return sb.Xto_str_and_clear(); + return sb.To_str_and_clear(); } private Xol_specials_itm[] To_ary(Xol_specials_mgr specials_mgr) { int len = specials_mgr.Count(); @@ -292,7 +293,7 @@ class Xol_lang_srl_fxt { Xow_ns ns = ary[i]; sb.Add(ns.Id()).Add("|").Add(ns.Name_str()).Add_char_nl(); } - return sb.Xto_str_and_clear(); + return sb.To_str_and_clear(); } Xow_ns[] To_ary(Xol_ns_grp ary) { int len = ary.Len(); @@ -323,7 +324,7 @@ class Xol_lang_srl_fxt { } sb.Add_char_nl(); } - return sb.Xto_str_and_clear(); + return sb.To_str_and_clear(); } Xol_msg_itm[] To_ary(Xol_msg_mgr msg_mgr) { int len = msg_mgr.Itms_max(); @@ -341,7 +342,7 @@ class Xol_lang_srl_fxt { Xol_msg_itm itm = ary[i]; sb.Add(itm.Key()).Add("|").Add(itm.Val()).Add_char_nl(); } - return sb.Xto_str_and_clear(); + return sb.To_str_and_clear(); } private static String_bldr sb = String_bldr_.new_(); } diff --git a/400_xowa/src/gplx/xowa/langs/plurals/Xol_plural.java b/400_xowa/src/gplx/xowa/langs/plurals/Xol_plural.java index b8bd20322..d4c21d3ba 100644 --- a/400_xowa/src/gplx/xowa/langs/plurals/Xol_plural.java +++ b/400_xowa/src/gplx/xowa/langs/plurals/Xol_plural.java @@ -17,5 +17,5 @@ along with this program. If not, see . */ package gplx.xowa.langs.plurals; import gplx.*; import gplx.xowa.*; import gplx.xowa.langs.*; public interface Xol_plural { - byte[] Plural_eval(Xol_lang lang, int count, byte[][] words); + byte[] Plural_eval(Xol_lang_itm lang, int count, byte[][] words); } diff --git a/400_xowa/src/gplx/xowa/langs/plurals/Xol_plural_.java b/400_xowa/src/gplx/xowa/langs/plurals/Xol_plural_.java index 209b8b6bb..a2af7a3ed 100644 --- a/400_xowa/src/gplx/xowa/langs/plurals/Xol_plural_.java +++ b/400_xowa/src/gplx/xowa/langs/plurals/Xol_plural_.java @@ -19,8 +19,8 @@ package gplx.xowa.langs.plurals; import gplx.*; import gplx.xowa.*; import gplx. public class Xol_plural_ { public static Xol_plural new_by_lang_id(int lang_id) { switch (lang_id) { - case Xol_lang_itm_.Id_ru: return Xol_plural_ru._; - default: return Xol_plural__default._; + case Xol_lang_stub_.Id_ru: return Xol_plural_ru.Instance; + default: return Xol_plural__default.Instance; } } public static byte[][] Fill_ary(byte[][] words, int words_len, int reqd_len) {// convert words to an ary of at least reqd_len where new entries are filled with last item; EX: {"a", "b"}, 3 -> {"a", "b", "b"} @@ -32,7 +32,7 @@ public class Xol_plural_ { } } class Xol_plural__default implements Xol_plural { - public byte[] Plural_eval(Xol_lang lang, int count, byte[][] forms) { + public byte[] Plural_eval(Xol_lang_itm lang, int count, byte[][] forms) { int forms_len = forms.length; switch (forms_len) { case 0: return Bry_.Empty; // forms is empty; do nothing @@ -40,5 +40,5 @@ class Xol_plural__default implements Xol_plural { default: return count == 1 ? forms[0] : forms[1]; // TODO: incorporate plurals.xml logic } } - public static final Xol_plural__default _ = new Xol_plural__default(); Xol_plural__default() {} + public static final Xol_plural__default Instance = new Xol_plural__default(); Xol_plural__default() {} } diff --git a/400_xowa/src/gplx/xowa/langs/plurals/Xol_plural_ru.java b/400_xowa/src/gplx/xowa/langs/plurals/Xol_plural_ru.java index 734d4bcf7..df6cf52a2 100644 --- a/400_xowa/src/gplx/xowa/langs/plurals/Xol_plural_ru.java +++ b/400_xowa/src/gplx/xowa/langs/plurals/Xol_plural_ru.java @@ -17,7 +17,7 @@ along with this program. If not, see . */ package gplx.xowa.langs.plurals; import gplx.*; import gplx.xowa.*; import gplx.xowa.langs.*; public class Xol_plural_ru implements Xol_plural { - public byte[] Plural_eval(Xol_lang lang, int count, byte[][] forms) { + public byte[] Plural_eval(Xol_lang_itm lang, int count, byte[][] forms) { int forms_len = forms.length; switch (forms_len) { case 0: return null; // forms is empty; do nothing @@ -36,5 +36,5 @@ public class Xol_plural_ru implements Xol_plural { } } } - public static final Xol_plural_ru _ = new Xol_plural_ru(); Xol_plural_ru() {} + public static final Xol_plural_ru Instance = new Xol_plural_ru(); Xol_plural_ru() {} } diff --git a/400_xowa/src/gplx/xowa/langs/plurals/Xol_plural_ru_tst.java b/400_xowa/src/gplx/xowa/langs/plurals/Xol_plural_ru_tst.java index 3dce17754..c76ffaeab 100644 --- a/400_xowa/src/gplx/xowa/langs/plurals/Xol_plural_ru_tst.java +++ b/400_xowa/src/gplx/xowa/langs/plurals/Xol_plural_ru_tst.java @@ -29,7 +29,7 @@ public class Xol_plural_ru_tst { Tst(5, String_.Ary("a"), "a"); // 1 form; count % 10 != (1, 2, 3, 4); but only 1 element, so take 1st } private void Tst(int count, String[] forms, String expd) { - byte[] actl = Xol_plural_ru._.Plural_eval(null, count, Bry_.Ary(forms)); + byte[] actl = Xol_plural_ru.Instance.Plural_eval(null, count, Bry_.Ary(forms)); Tfds.Eq_bry(Bry_.new_a7(expd), actl); } } diff --git a/400_xowa/src/gplx/xowa/langs/Xol_specials_itm.java b/400_xowa/src/gplx/xowa/langs/specials/Xol_specials_itm.java similarity index 90% rename from 400_xowa/src/gplx/xowa/langs/Xol_specials_itm.java rename to 400_xowa/src/gplx/xowa/langs/specials/Xol_specials_itm.java index 4ab8ae8fc..2767a5381 100644 --- a/400_xowa/src/gplx/xowa/langs/Xol_specials_itm.java +++ b/400_xowa/src/gplx/xowa/langs/specials/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.langs; import gplx.*; import gplx.xowa.*; +package gplx.xowa.langs.specials; import gplx.*; import gplx.xowa.*; import gplx.xowa.langs.*; 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/gplx/xowa/langs/Xol_specials_mgr.java b/400_xowa/src/gplx/xowa/langs/specials/Xol_specials_mgr.java similarity index 84% rename from 400_xowa/src/gplx/xowa/langs/Xol_specials_mgr.java rename to 400_xowa/src/gplx/xowa/langs/specials/Xol_specials_mgr.java index 69e90db8a..739a3c545 100644 --- a/400_xowa/src/gplx/xowa/langs/Xol_specials_mgr.java +++ b/400_xowa/src/gplx/xowa/langs/specials/Xol_specials_mgr.java @@ -15,10 +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; import gplx.*; import gplx.xowa.*; +package gplx.xowa.langs.specials; import gplx.*; import gplx.xowa.*; import gplx.xowa.langs.*; +import gplx.xowa.langs.parsers.*; 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; + private Ordered_hash hash_by_special = Ordered_hash_.New_bry(), hash_by_aliases = Ordered_hash_.New_bry(); + public Xol_specials_mgr(Xol_lang_itm lang) {this.lang = lang;} private Xol_lang_itm lang; public void Clear() {hash_by_special.Clear();} public int Count() {return hash_by_special.Count();} public Xol_specials_itm Get_at(int i) {return (Xol_specials_itm)hash_by_special.Get_at(i);} 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 b7ffba31c..39f927e92 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 @@ -26,10 +26,10 @@ public class Xol_vnt_itm implements GfoInvkAble { 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 Dir() {return dir;} private int dir = Xol_vnt_dir_.Tid__bi; // EX: "bidirectional" 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 int Dir() {return dir;} private int dir = Xol_vnt_dir_.Tid__bi; // EX: "bidirectional" + public byte[][] Fallback_ary() {return fallback_ary;} private byte[][] fallback_ary = Bry_.Ary_empty; // EX: zh-hans|zh 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;} @@ -37,12 +37,12 @@ public class Xol_vnt_itm implements GfoInvkAble { public void Init(int dir, byte[][] fallback_ary) { this.dir = dir; this.fallback_ary = fallback_ary; } - public void Mask__fallbacks__calc(Xol_vnt_regy regy, byte[][] ary) { + public void Mask__fallbacks_(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 Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { 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 if (ctx.Match(k, Invk_converts_)) Convert_ary_(Bry_split_.Split(m.ReadBry("v"), Byte_ascii.Pipe)); else if (ctx.Match(k, Invk_dir_)) dir = Xol_vnt_dir_.Parse(m.ReadBry("v")); else return GfoInvkAble_.Rv_unhandled; return this; 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 deleted file mode 100644 index 2d901890e..000000000 --- a/400_xowa/src/gplx/xowa/langs/vnts/Xol_vnt_itm_sorter.java +++ /dev/null @@ -1,38 +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.xowa.parsers.vnts.*; -class Xol_vnt_itm_sorter__rule implements gplx.lists.ComparerAble { - private Hash_adp hash; - public void Sort(Hash_adp 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 829757bd6..37b29ddbb 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,17 +16,20 @@ 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.langs.vnts.converts.*; -import gplx.xowa.parsers.vnts.*; +import gplx.xowa.langs.vnts.converts.*; import gplx.xowa.parsers.vnts.*; public class Xol_vnt_mgr implements GfoInvkAble { - public Xol_vnt_mgr(Xol_lang lang) {this.lang = lang;} - 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_vnt_mgr(Xol_lang_itm lang) { + this.lang = lang; + this.convert_lang = new Vnt_convert_lang(convert_mgr, regy); + } + public Xol_lang_itm Lang() {return lang;} private final Xol_lang_itm lang; public Xol_convert_mgr Convert_mgr() {return convert_mgr;} private final Xol_convert_mgr convert_mgr = new Xol_convert_mgr(); + public Vnt_convert_lang Convert_lang() {return convert_lang;} private final Vnt_convert_lang convert_lang; + 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 Xol_vnt_itm Cur_itm() {return cur_itm;} private Xol_vnt_itm cur_itm; // EX:zh-cn + public boolean Enabled() {return enabled;} private boolean enabled = false; public String Html__lnki_style() {return html__lnki_style;} private String html__lnki_style = ""; // style for showing vnt lnkis in different colors + public void Enabled_(boolean v) {this.enabled = v;} // TEST public Xol_vnt_itm Regy__get_or_new(byte[] key) { Xol_vnt_itm rv = regy.Get_by(key); if (rv == null) { @@ -36,37 +39,31 @@ public class Xol_vnt_mgr implements GfoInvkAble { } return rv; } - 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 Cur_itm_(byte[] v) { + this.cur_itm = regy.Get_by(v); if (cur_itm == null) throw Err_.new_("lang.vnt", "vnt not found", "key", v); } - public void Init_by_wiki(Xowe_wiki wiki) { - if (!enabled) return; - Xop_vnt_lxr_.Init(wiki); - } 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()); + Xol_lang_itm vnt_lang = lang.Lang_mgr().Get_by_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_(regy, vnt_lang.Fallback_bry_ary()); } convert_mgr.Init(regy); // needs to run at end b/c converts are added one at a time } + 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 Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { 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_cur_vnt_)) Cur_itm_(m.ReadBry("v")); else if (ctx.Match(k, Invk_html_style_)) html__lnki_style = m.ReadStr("v"); else return GfoInvkAble_.Rv_unhandled; return this; 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 index 5118b8072..e1658ca2d 100644 --- a/400_xowa/src/gplx/xowa/langs/vnts/Xol_vnt_regy.java +++ b/400_xowa/src/gplx/xowa/langs/vnts/Xol_vnt_regy.java @@ -48,9 +48,9 @@ public class Xol_vnt_regy { } 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" + 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 + int mask = gplx.core.brys.Bit_.Get_flag(i); // 1,2,4,8 if (Bitmask_.Has_int(lhs, mask)) { // lhs has mask; EX: for lhs=6, mask=1 -> 'n'; mask=2 -> 'y' if (Bitmask_.Has_int(rhs, mask)) // if rhs does not have mask, return false; return true; @@ -58,5 +58,4 @@ public class Xol_vnt_regy { } 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_fxt.java b/400_xowa/src/gplx/xowa/langs/vnts/Xol_vnt_regy_fxt.java index 28240dee3..008b25d96 100644 --- a/400_xowa/src/gplx/xowa/langs/vnts/Xol_vnt_regy_fxt.java +++ b/400_xowa/src/gplx/xowa/langs/vnts/Xol_vnt_regy_fxt.java @@ -32,15 +32,14 @@ public class Xol_vnt_regy_fxt { 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); + public static void Init__vnt_mgr(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_or_load(itm.Key()).Fallback_bry_(Bry_.new_a7("zh-hans,zh-hant")); + } + vnt_mgr.Init_end(); + vnt_mgr.Cur_itm_(Bry_.new_a7(ary[cur_idx])); } public static Xol_vnt_regy new_chinese() { // REF.MW:/languages/classes/LanguageZh.php|LanguageZh|__construct Xol_vnt_regy rv = new Xol_vnt_regy(); 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 index ed2d30256..74aeaf365 100644 --- 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 @@ -46,8 +46,4 @@ public class Xol_vnt_regy_tst { , 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")); - } } diff --git a/400_xowa/src/gplx/xowa/langs/vnts/converts/Xol_convert_grp.java b/400_xowa/src/gplx/xowa/langs/vnts/converts/Xol_convert_grp.java index 9060a1d36..a0bb4b6b2 100644 --- a/400_xowa/src/gplx/xowa/langs/vnts/converts/Xol_convert_grp.java +++ b/400_xowa/src/gplx/xowa/langs/vnts/converts/Xol_convert_grp.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.vnts.converts; import gplx.*; import gplx.xowa.*; import gplx.xowa.langs.*; import gplx.xowa.langs.vnts.*; +import gplx.xowa.langs.parsers.*; 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_(); + 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();} @@ -32,7 +33,7 @@ public class Xol_convert_grp implements GfoInvkAble {// group of convert_itm by int len = raw.length; int pos = 0, fld_bgn = 0, fld_idx = 0; byte[] src = Bry_.Empty, trg = Bry_.Empty; - Xol_csv_parser csv_parser = Xol_csv_parser._; + Xol_csv_parser csv_parser = Xol_csv_parser.Instance; while (true) { boolean last = pos == len; byte b = last ? Byte_ascii.Nl : raw[pos]; 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 index b76481fdf..d3aae392a 100644 --- 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 @@ -16,36 +16,21 @@ 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.*; +import gplx.xowa.wikis.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; + private final Ordered_hash tmp_page_list = Ordered_hash_.New_bry(); 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 Xol_convert_wkr[] Converter_ary() {return wkr_ary;} private Xol_convert_wkr[] wkr_ary; private int wkr_ary_len; 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()); + itm.Convert_wkr().Init(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(byte[] src) {return Convert_text(src, 0, src.length);} - public byte[] Convert_text(byte[] src, int bgn, int end) {return Convert_text(cur_wkr_idx, src, bgn, end);} public byte[] Convert_text(int vnt_idx, byte[] src, int bgn, int end) { Bry_bfr tmp_bfr = Xoa_app_.Utl__bfr_mkr().Get_m001(); Xol_convert_wkr converter = wkr_ary[vnt_idx]; @@ -54,16 +39,17 @@ public class Xol_convert_mgr { } 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(); + Bry_bfr tmp_bfr = Xoa_app_.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) { + private 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) { // THREAD: 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); + // wiki.Data__core_mgr().Tbl__page().Select_in__ns_ttl(Cancelable_.Never, tmp_page_list, wiki.Ns_mgr(), true, 0, converted); // TODO: use this call; when defaulting test to use db_mgr, not txt_mgr + wiki.Db_mgr().Load_mgr().Load_by_ttls(Cancelable_.Never, tmp_page_list, Bool_.Y, 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 @@ -71,23 +57,21 @@ public class Xol_convert_mgr { 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; + private int Convert_ttl__convert_each_vnt(Xow_wiki wiki, Bry_bfr tmp_bfr, Xow_ns ns, byte[] ttl_bry) { + 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 = wiki.Ttl_parse(ns.Id(), tmp_bfr.To_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/vnts/converts/Xol_convert_regy.java b/400_xowa/src/gplx/xowa/langs/vnts/converts/Xol_convert_regy.java index 94efceb13..eab6bf7e1 100644 --- a/400_xowa/src/gplx/xowa/langs/vnts/converts/Xol_convert_regy.java +++ b/400_xowa/src/gplx/xowa/langs/vnts/converts/Xol_convert_regy.java @@ -18,7 +18,7 @@ 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.apps.fsys.*; 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_(); + 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); diff --git a/400_xowa/src/gplx/xowa/langs/vnts/converts/Xol_convert_regy_tst.java b/400_xowa/src/gplx/xowa/langs/vnts/converts/Xol_convert_regy_tst.java index 568273a06..3f8b931b8 100644 --- a/400_xowa/src/gplx/xowa/langs/vnts/converts/Xol_convert_regy_tst.java +++ b/400_xowa/src/gplx/xowa/langs/vnts/converts/Xol_convert_regy_tst.java @@ -47,15 +47,15 @@ class Xol_convert_regy_fxt { public Xop_fxt Parser_fxt() {return parser_fxt;} private Xop_fxt parser_fxt; public void Clear() { app = Xoa_app_fxt.app_(); - Xol_lang lang = app.Lang_mgr().Get_by_key_or_new(Bry_.new_a7("zh")); - Xol_lang_.Lang_init(lang); + Xol_lang_itm lang = app.Lang_mgr().Get_by_or_new(Bry_.new_a7("zh")); + Xol_lang_itm_.Lang_init(lang); Init_cnv(app, "zh", "zh-hant", KeyVal_.new_("x0", "x1")); 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")); + gplx.xowa.langs.vnts.Xol_vnt_regy_fxt.Init__vnt_mgr(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_lang_itm lang = app.Lang_mgr().Get_by_or_new(Bry_.new_a7(lang_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++) { @@ -64,21 +64,14 @@ class Xol_convert_regy_fxt { } 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.Convert_wkr().Rebuild(lang.Vnt_mgr().Convert_mgr().Converter_regy(), vnt_itm.Convert_ary()); + vnt_itm.Convert_wkr().Init(lang.Vnt_mgr().Convert_mgr().Converter_regy(), vnt_itm.Convert_ary()); } -// public void Test_convert(String lang, String vnt, String raw, String expd) { -// 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; -// Tfds.Eq(expd, actl); -// } public void Test_parse(String raw, String expd) { parser_fxt.Test_parse_page_all_str(raw, expd); } 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)); + Xol_lang_itm lang = app.Lang_mgr().Get_by_or_new(Bry_.new_a7(lang_key)); + Xoa_ttl ttl = wiki.Ttl_parse(Bry_.new_u8(raw)); Xowd_page_itm page = lang.Vnt_mgr().Convert_mgr().Convert_ttl(wiki, ttl); if (expd) Tfds.Eq_true(page.Exists()); diff --git a/400_xowa/src/gplx/xowa/langs/vnts/converts/Xol_convert_wkr.java b/400_xowa/src/gplx/xowa/langs/vnts/converts/Xol_convert_wkr.java index 3973036d8..13c93ca60 100644 --- a/400_xowa/src/gplx/xowa/langs/vnts/converts/Xol_convert_wkr.java +++ b/400_xowa/src/gplx/xowa/langs/vnts/converts/Xol_convert_wkr.java @@ -21,8 +21,8 @@ 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 void Add(byte[] src, byte[] trg) {trie.Add_obj(src, trg);} - public void Del(byte[] src) {trie.Del(src);} + public void Add(byte[] src, byte[] trg) {trie.Add_obj(src, trg);} // called by -{H}- + public void Del(byte[] src) {trie.Del(src);} // called by -{-}- 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; @@ -52,16 +52,16 @@ public class Xol_convert_wkr { if (!matched) bfr.Add_mid(src, bgn, end); // no convert; make sure to add back src, else bfr will be blank return matched; } - public void Rebuild(Xol_convert_regy regy, byte[][] ary) { + public void Init(Xol_convert_regy regy, byte[][] vnt_ary) { // EX: "zh-cn" should add all converts from "zh-hans" "zh-cn" to its wkr trie.Clear(); - int len = ary.length; + int len = vnt_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); + byte[] key = vnt_ary[i]; + Xol_convert_grp grp = regy.Get_or_null(key); if (grp == null) continue; // vnt may not have convert mapping; EX: zh-my + Init_grp(grp); } } - private void Rebuild_grp(Xol_convert_grp grp) { + private void Init_grp(Xol_convert_grp grp) { int len = grp.Len(); for (int i = 0; i < len; ++i) { Xol_convert_itm itm = grp.Get_at(i); diff --git a/400_xowa/src/gplx/xowa/langs/vnts/converts/Xol_mw_parse_tst.java b/400_xowa/src/gplx/xowa/langs/vnts/converts/Xol_mw_parse_tst.java index b903f28e8..c8a1b5197 100644 --- a/400_xowa/src/gplx/xowa/langs/vnts/converts/Xol_mw_parse_tst.java +++ b/400_xowa/src/gplx/xowa/langs/vnts/converts/Xol_mw_parse_tst.java @@ -19,23 +19,26 @@ package gplx.xowa.langs.vnts.converts; import gplx.*; import gplx.xowa.*; import import org.junit.*; 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() { - fxt.Test_convert("$zh2Hant = array('a' => 'A', 'b' => 'B',);", String_.Concat_lines_nl - ( "// zh_zh-hant" - , "app.langs.get('zh').converts.get('zh-hant').add_bulk(" - , "<:['" - , "a|A" - , "b|B" - , "']:>" - , ");" - )); - } + private final Xol_mw_parse_fxt fxt = new Xol_mw_parse_fxt(); +// @Test public void Basic() { +// fxt.Test_convert("$zh2Hant = array('a' => 'A', 'b' => 'B',);", String_.Concat_lines_nl +// ( "// zh_zh-hant" +// , "app.langs.get('zh').converts.get('zh-hant').add_bulk(" +// , "<:['" +// , "a|A" +// , "b|B" +// , "']:>" +// , ");" +// )); +// } // @Test public void Run() { -// Io_url src_dir = Io_url_.new_dir_("C:\\xowa\\bin\\any\\xowa\\lang\\mediawiki\\converts\\"); -// Io_url trg_dir = Io_url_.new_dir_("C:\\xowa\\bin\\any\\xowa\\lang\\"); +// Io_url src_dir = Io_url_.new_dir_("C:\\xowa\\bin\\any\\xowa\\cfg\\lang\\mediawiki\\converts\\"); +// Io_url trg_dir = Io_url_.new_dir_("C:\\xowa\\bin\\any\\xowa\\cfg\\lang\\"); // fxt.Test_run(src_dir, trg_dir); // } + @Test public void Ignore() { + fxt.toString(); + } } class Xol_mw_parse_grp { public byte[] Lng() {return lng;} public Xol_mw_parse_grp Lng_(byte[] v) {lng = v; return this;} private byte[] lng; @@ -80,15 +83,15 @@ class Xol_mw_parse_fxt { Xol_mw_parse_grp[] actl_ary = Parse(Bry_.new_u8(mw)); Bry_bfr bfr = Bry_bfr.new_(); actl_ary[0].Write_as_gfs(bfr); - Tfds.Eq_str_lines(expd, bfr.Xto_str()); + Tfds.Eq_str_lines(expd, bfr.To_str()); } public void Test_run(Io_url src_dir, Io_url trg_dir) { Bry_bfr bfr = Bry_bfr.new_(); - Io_url[] fils = Io_mgr.I.QueryDir_fils(src_dir); + Io_url[] fils = Io_mgr.Instance.QueryDir_fils(src_dir); int fils_len = fils.length; for (int i = 0; i < fils_len; i++) { Io_url fil = fils[i]; - byte[] src = Io_mgr.I.LoadFilBry(fil); + byte[] src = Io_mgr.Instance.LoadFilBry(fil); Xol_mw_parse_grp[] itms = Parse(src); int itms_len = itms.length; String lang_name = String_.Lower(String_.Mid(fil.NameOnly(), 0, 2)); // ZhConversion.php -> Zh @@ -97,7 +100,7 @@ class Xol_mw_parse_fxt { itm.Write_as_gfs(bfr); } Io_url trg_fil = Xol_convert_regy.Bld_url(trg_dir, lang_name); - Io_mgr.I.SaveFilBry(trg_fil, bfr.Xto_bry_and_clear()); + Io_mgr.Instance.SaveFilBry(trg_fil, bfr.To_bry_and_clear()); } } public Xol_mw_parse_grp[] Parse(byte[] src) { @@ -119,7 +122,7 @@ class Xol_mw_parse_fxt { private Xol_mw_parse_grp Parse_grp(Php_line_assign line) { 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" + key = Bry_.Lcase__all(key); // EX: "zh2hant" 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]); diff --git a/400_xowa/src/gplx/xowa/parsers/Xoa_parser_mgr.java b/400_xowa/src/gplx/xowa/parsers/Xoa_parser_mgr.java index 76e0cd425..329598d51 100644 --- a/400_xowa/src/gplx/xowa/parsers/Xoa_parser_mgr.java +++ b/400_xowa/src/gplx/xowa/parsers/Xoa_parser_mgr.java @@ -16,6 +16,31 @@ 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.*; -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(); +import gplx.xowa.parsers.xndes.*; import gplx.xowa.parsers.htmls.*; import gplx.xowa.parsers.uniqs.*; +public class Xoa_parser_mgr { + private final Mwh_doc_wkr__atr_bldr atr_bldr = new Mwh_doc_wkr__atr_bldr(); + public Xop_tkn_mkr Tkn_mkr() {return tkn_mkr;} private final Xop_tkn_mkr tkn_mkr = new Xop_tkn_mkr(); + public Xop_uniq_mgr Core__uniq_mgr() {return core__uniq_mgr;} private final Xop_uniq_mgr core__uniq_mgr = new Xop_uniq_mgr(); + public Mwh_atr_parser Xnde__atr_parser() {return atr_parser;} private final Mwh_atr_parser atr_parser = new Mwh_atr_parser(); + public Mwh_atr_itm[] Xnde__parse_atrs(byte[] src, int src_bgn, int src_end) { +// if (src_bgn < src_end) { // CHART +// src = Bry_.Mid(src, src_bgn, src_end); +// src = gplx.xowa.parsers.xndes.Xop_xnde_tkn.uniq_mgr.Parse(src); +// src_bgn = 0; +// src_end = src.length; +// } + atr_parser.Parse(atr_bldr, -1, -1, src, src_bgn, src_end); + return atr_bldr.To_atr_ary(); + } + public Mwh_atr_itm[] Xnde__parse_atrs_for_tblw(byte[] src, int src_bgn, int src_end) { +// int angle_bgn_pos = Bry_find_.Find_fwd(src, Byte_ascii.Angle_bgn, src_bgn, src_end); +// if (angle_bgn_pos != Bry_find_.Not_found) { +// src = Bry_.Mid(src, src_bgn, src_end); +// src = Bry_.Replace(src, Byte_ascii.Angle_bgn_bry, gplx.langs.htmls.Html_entity_.Lt_bry); +// src_bgn = 0; +// src_end = src.length; +// } + atr_parser.Parse(atr_bldr, -1, -1, src, src_bgn, src_end); + return atr_bldr.To_atr_ary(); + } } diff --git a/400_xowa/src/gplx/xowa/parsers/Xop_ctx.java b/400_xowa/src/gplx/xowa/parsers/Xop_ctx.java index baac0dca1..acb2b6681 100644 --- a/400_xowa/src/gplx/xowa/parsers/Xop_ctx.java +++ b/400_xowa/src/gplx/xowa/parsers/Xop_ctx.java @@ -18,10 +18,10 @@ 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.gui.*; import gplx.xowa.xtns.lst.*; +import gplx.xowa.guis.*; 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.*; +import gplx.xowa.parsers.logs.*; import gplx.xowa.htmls.modules.popups.keeplists.*; public class Xop_ctx { private Xop_ctx_wkr[] wkrs = new Xop_ctx_wkr[] {}; Xop_ctx(Xowe_wiki wiki, Xoae_page page) { @@ -31,9 +31,10 @@ public class Xop_ctx { for (Xop_ctx_wkr wkr : wkrs) wkr.Ctor_ctx(this); this.xnde_tag_regy = wiki.Mw_parser_mgr().Xnde_tag_regy(); } +// public boolean Scribunto; // CHART 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 Xol_lang_itm Lang() {return lang;} private final Xol_lang_itm 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; @@ -56,7 +57,7 @@ public class Xop_ctx { public Xop_keeplist_wiki Tmpl_keeplist() {return tmpl_keeplist;} public void Tmpl_keeplist_(Xop_keeplist_wiki v) {this.tmpl_keeplist = v;} private Xop_keeplist_wiki tmpl_keeplist; public boolean Tmpl_args_parsing() {return tmpl_args_parsing;} public Xop_ctx Tmpl_args_parsing_(boolean v) {tmpl_args_parsing = v; return this;} private boolean tmpl_args_parsing; public Bry_bfr Tmpl_output() {return tmpl_output;} public Xop_ctx Tmpl_output_(Bry_bfr v) {tmpl_output = v; return this;} private Bry_bfr tmpl_output; // OBSOLETE: after tmpl_prepend_nl rewrite; DATE:2014-08-21 - public Xot_defn_trace Defn_trace() {return defn_trace;} public Xop_ctx Defn_trace_(Xot_defn_trace v) {defn_trace = v; return this;} private Xot_defn_trace defn_trace = Xot_defn_trace_null._; + public Xot_defn_trace Defn_trace() {return defn_trace;} public Xop_ctx Defn_trace_(Xot_defn_trace v) {defn_trace = v; return this;} private Xot_defn_trace defn_trace = Xot_defn_trace_null.Instance; public boolean Only_include_evaluate() {return only_include_evaluate;} public Xop_ctx Only_include_evaluate_(boolean v) {only_include_evaluate = v; return this;} private boolean only_include_evaluate; public Lst_section_nde_mgr Lst_section_mgr() {if (lst_section_mgr == null) lst_section_mgr = new Lst_section_nde_mgr(); return lst_section_mgr;} private Lst_section_nde_mgr lst_section_mgr; public Hash_adp_bry Lst_page_regy() {return lst_page_regy;} private Hash_adp_bry lst_page_regy; diff --git a/400_xowa/src/gplx/xowa/parsers/Xop_lxr.java b/400_xowa/src/gplx/xowa/parsers/Xop_lxr.java index 2920424e8..cc9aa2224 100644 --- a/400_xowa/src/gplx/xowa/parsers/Xop_lxr.java +++ b/400_xowa/src/gplx/xowa/parsers/Xop_lxr.java @@ -20,7 +20,7 @@ import gplx.core.btries.*; import gplx.xowa.langs.*; public interface Xop_lxr { 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 Init_by_lang(Xol_lang_itm 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_mgr.java b/400_xowa/src/gplx/xowa/parsers/Xop_lxr_mgr.java index 9796db665..d0a191747 100644 --- a/400_xowa/src/gplx/xowa/parsers/Xop_lxr_mgr.java +++ b/400_xowa/src/gplx/xowa/parsers/Xop_lxr_mgr.java @@ -46,7 +46,7 @@ public class Xop_lxr_mgr { lxr.Init_by_wiki(wiki, trie); } } - public void Init_by_lang(Xol_lang lang) { + public void Init_by_lang(Xol_lang_itm lang) { int ary_len = ary.length; for (int i = 0; i < ary_len; i++) { Xop_lxr lxr = ary[i]; @@ -55,53 +55,53 @@ public class Xop_lxr_mgr { } public static Xop_lxr_mgr new_tmpl_() { return 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._ - , Xop_curly_bgn_lxr._, Xop_curly_end_lxr._ - , Xop_brack_bgn_lxr._, Xop_brack_end_lxr._ - , Xop_comm_lxr._ - , Xop_xnde_lxr._ // needed for xtn, noinclude, etc. - , Xop_under_lxr._ - , gplx.xowa.xtns.translates.Xop_tvar_lxr._ - , Xop_cr_lxr._ // always ignore \r; DATE:2014-03-02 + { Xop_pipe_lxr.Instance, new Xop_eq_lxr(true), Xop_colon_lxr.Instance, Xop_space_lxr.Instance, Xop_tab_lxr.Instance, Xop_nl_lxr.Instance + , Xop_curly_bgn_lxr.Instance, Xop_curly_end_lxr.Instance + , Xop_brack_bgn_lxr.Instance, Xop_brack_end_lxr.Instance + , Xop_comm_lxr.Instance + , Xop_xnde_lxr.Instance // needed for xtn, noinclude, etc. + , Xop_under_lxr.Instance + , gplx.xowa.xtns.translates.Xop_tvar_lxr.Instance + , Xop_cr_lxr.Instance // always ignore \r; DATE:2014-03-02 }); } public static Xop_lxr_mgr new_wiki_() { 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_amp_lxr._, Xop_apos_lxr._, Xop_colon_lxr._ - , Xop_lnki_lxr_bgn._, Xop_lnki_lxr_end._ - , Xop_list_lxr._ - , Xop_hdr_lxr._ - , Xop_hr_lxr._ - , Xop_xnde_lxr._ - , Xop_lnke_lxr._, Xop_lnke_end_lxr._ - , Xop_tblw_lxr._ - , Xop_pre_lxr._, Xop_nl_tab_lxr._ - , Xop_comm_lxr._ - , Xop_under_lxr._ + { Xop_pipe_lxr.Instance, new Xop_eq_lxr(false), Xop_space_lxr.Instance, Xop_tab_lxr.Instance, Xop_nl_lxr.Instance + , Xop_amp_lxr.Instance, Xop_apos_lxr.Instance, Xop_colon_lxr.Instance + , Xop_lnki_lxr_bgn.Instance, Xop_lnki_lxr_end.Instance + , Xop_list_lxr.Instance + , Xop_hdr_lxr.Instance + , Xop_hr_lxr.Instance + , Xop_xnde_lxr.Instance + , Xop_lnke_lxr.Instance, Xop_lnke_end_lxr.Instance + , Xop_tblw_lxr.Instance + , Xop_pre_lxr.Instance, Xop_nl_tab_lxr.Instance + , Xop_comm_lxr.Instance + , Xop_under_lxr.Instance }); } 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._ + { Xop_pipe_lxr.Instance, new Xop_eq_lxr(false), Xop_space_lxr.Instance, Xop_tab_lxr.Instance, Xop_nl_lxr.Instance + , Xop_curly_bgn_lxr.Instance, Xop_curly_end_lxr.Instance + , Xop_amp_lxr.Instance, Xop_colon_lxr.Instance + , Xop_apos_lxr.Instance + , Xop_lnki_lxr_bgn.Instance, Xop_lnki_lxr_end.Instance + , Xop_lnke_lxr.Instance, Xop_lnke_end_lxr.Instance + , Xop_xnde_lxr.Instance }); } 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._ - , Xop_curly_bgn_lxr._, Xop_curly_end_lxr._ - , Xop_brack_bgn_lxr._, Xop_brack_end_lxr._ - , Xop_comm_lxr._ - , Xop_xnde_lxr._ // needed for xtn, noinclude, etc. - , Xop_under_lxr._ - , gplx.xowa.xtns.translates.Xop_tvar_lxr._ - , Xop_cr_lxr._ // always ignore \r; DATE:2014-03-02 - , gplx.xowa.parsers.apos.Xop_apos_lxr._ // needed else multiple apos may be split across blocks; + { Xop_pipe_lxr.Instance, new Xop_eq_lxr(true), Xop_colon_lxr.Instance, Xop_space_lxr.Instance, Xop_tab_lxr.Instance, Xop_nl_lxr.Instance + , Xop_curly_bgn_lxr.Instance, Xop_curly_end_lxr.Instance + , Xop_brack_bgn_lxr.Instance, Xop_brack_end_lxr.Instance + , Xop_comm_lxr.Instance + , Xop_xnde_lxr.Instance // needed for xtn, noinclude, etc. + , Xop_under_lxr.Instance + , gplx.xowa.xtns.translates.Xop_tvar_lxr.Instance + , Xop_cr_lxr.Instance // always ignore \r; DATE:2014-03-02 + , gplx.xowa.parsers.apos.Xop_apos_lxr.Instance // needed else multiple apos may be split across blocks; }); } diff --git a/400_xowa/src/gplx/xowa/parsers/Xop_parser.java b/400_xowa/src/gplx/xowa/parsers/Xop_parser.java index d99889543..97a83d3c2 100644 --- a/400_xowa/src/gplx/xowa/parsers/Xop_parser.java +++ b/400_xowa/src/gplx/xowa/parsers/Xop_parser.java @@ -17,7 +17,7 @@ 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.langs.*; import gplx.xowa.wikis.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 final Xowe_wiki wiki; @@ -33,7 +33,7 @@ public class Xop_parser { // NOTE: parsers are reused; do not keep any read-writ tmpl_lxr_mgr.Init_by_wiki(wiki); wtxt_lxr_mgr.Init_by_wiki(wiki); } - public void Init_by_lang(Xol_lang lang) { + public void Init_by_lang(Xol_lang_itm lang) { tmpl_lxr_mgr.Init_by_lang(lang); wtxt_lxr_mgr.Init_by_lang(lang); } @@ -101,7 +101,7 @@ public class Xop_parser { // NOTE: parsers are reused; do not keep any read-writ int subs_len = root.Subs_len(); for (int i = 0; i < subs_len; i++) root.Subs_get(i).Tmpl_compile(ctx, src, tmpl_props); - return Xot_tmpl_wtr._.Write_all(ctx, root, src); // NOTE: generate new src since most callers will use it; + return Xot_tmpl_wtr.Instance.Write_all(ctx, root, src); // NOTE: generate new src since most callers will use it; } public void Parse_wtxt_to_wdom(Xop_root_tkn root, Xop_ctx ctx, Xop_tkn_mkr tkn_mkr, byte[] wtxt, int doc_bgn_pos) { root.Root_src_(wtxt); // always set latest src; needed for Parse_all wherein src will first be raw and then parsed tmpl @@ -112,6 +112,7 @@ public class Xop_parser { // NOTE: parsers are reused; do not keep any read-writ byte parse_tid_old = ctx.Parse_tid(); // NOTE: must store parse_tid b/c ctx can be reused by other classes ctx.Parse_tid_(parse_type); ctx.Page_bgn(root, src); + ctx.App().Parser_mgr().Core__uniq_mgr().Clear(); Parse_to_src_end(root, ctx, tkn_mkr, src, trie, doc_bgn_pos, len); ctx.Page_end(root, src, len); ctx.Parse_tid_(parse_tid_old); 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 6831bc7a7..488c7b7a8 100644 --- a/400_xowa/src/gplx/xowa/parsers/Xop_parser__tst.java +++ b/400_xowa/src/gplx/xowa/parsers/Xop_parser__tst.java @@ -53,6 +53,6 @@ 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_mgr().Main().Parse_text_to_html(bfr, fxt.Page(), para_enabled, raw_bry); - Tfds.Eq(expd, bfr.Xto_str_and_clear()); + Tfds.Eq(expd, bfr.To_str_and_clear()); } } 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 523b08a26..c8f60cba0 100644 --- a/400_xowa/src/gplx/xowa/parsers/Xop_tkn_mkr.java +++ b/400_xowa/src/gplx/xowa/parsers/Xop_tkn_mkr.java @@ -76,7 +76,7 @@ public class Xop_tkn_mkr { public gplx.xowa.xtns.lst.Lst_section_nde Xnde_section() {return new gplx.xowa.xtns.lst.Lst_section_nde();} public gplx.xowa.xtns.categoryList.Xtn_categorylist_nde Xnde_categoryList() {return new gplx.xowa.xtns.categoryList.Xtn_categorylist_nde();} public gplx.xowa.xtns.dynamicPageList.Dpl_xnde Xnde_dynamicPageList() {return new gplx.xowa.xtns.dynamicPageList.Dpl_xnde();} - public gplx.xowa.xtns.syntaxHighlight.Xtn_syntaxHighlight_nde Xnde_syntaxHighlight() {return new gplx.xowa.xtns.syntaxHighlight.Xtn_syntaxHighlight_nde();} + public gplx.xowa.xtns.syntax_highlights.Synh_xtn_nde Xnde_syntaxHighlight() {return new gplx.xowa.xtns.syntax_highlights.Synh_xtn_nde();} public gplx.xowa.xtns.templateData.Xtn_templateData_nde Xnde_templateData() {return new gplx.xowa.xtns.templateData.Xtn_templateData_nde();} public gplx.xowa.xtns.rss.Rss_xnde Xnde_rss() {return new gplx.xowa.xtns.rss.Rss_xnde();} public gplx.xowa.xtns.quiz.Quiz_xnde Xnde_quiz() {return new gplx.xowa.xtns.quiz.Quiz_xnde();} @@ -87,10 +87,7 @@ public class Xop_tkn_mkr { public gplx.xowa.xtns.inputBox.Xtn_inputbox_nde Xnde_inputbox() {return new gplx.xowa.xtns.inputBox.Xtn_inputbox_nde();} public gplx.xowa.xtns.translates.Xop_translate_xnde Xnde_translate() {return new gplx.xowa.xtns.translates.Xop_translate_xnde();} 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 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 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 void Clear() { // space_tkns_len = txt_tkns_len = 0; // } 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 79985e4b8..e63255f51 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 @@ -20,10 +20,10 @@ 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 Init_by_lang(Xol_lang_itm 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); } - public static final Xop_amp_lxr _ = new Xop_amp_lxr(); + public static final Xop_amp_lxr Instance = new Xop_amp_lxr(); } 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 8ecd53fc4..c5d126299 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 @@ -18,58 +18,63 @@ 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_mgr { + private final Object thread_lock_1 = new Object(), thread_lock_2 = new Object(); private final Bry_bfr tmp_bfr = Bry_bfr.reset_(32); - public Btrie_slim_mgr Amp_trie() {return amp_trie;} private final Btrie_slim_mgr amp_trie = Xop_amp_trie._; + public Btrie_slim_mgr Amp_trie() {return amp_trie;} private final Btrie_slim_mgr amp_trie = Xop_amp_trie.Instance; public int Rslt_pos() {return rslt_pos;} private int rslt_pos; public int Rslt_val() {return rslt_val;} private int rslt_val; public Xop_tkn_itm Parse_as_tkn(Xop_tkn_mkr tkn_mkr, byte[] src, int src_len, int amp_pos, int cur_pos) { - rslt_pos = amp_pos + 1; // default to fail pos; after amp; - Object o = amp_trie.Match_bgn(src, cur_pos, src_len); - cur_pos = amp_trie.Match_pos(); - if (o == null) return null; - Xop_amp_trie_itm itm = (Xop_amp_trie_itm)o; - switch (itm.Tid()) { - case Xop_amp_trie_itm.Tid_name_std: - case Xop_amp_trie_itm.Tid_name_xowa: - rslt_pos = cur_pos; - return tkn_mkr.Amp_txt(amp_pos, cur_pos, itm); - case Xop_amp_trie_itm.Tid_num_hex: - case Xop_amp_trie_itm.Tid_num_dec: - boolean ncr_is_hex = itm.Tid() == Xop_amp_trie_itm.Tid_num_hex; - boolean pass = Parse_as_int(ncr_is_hex, src, src_len, amp_pos, cur_pos); - return pass ? tkn_mkr.Amp_num(amp_pos, rslt_pos, rslt_val) : null; - default: throw Err_.new_unhandled(itm.Tid()); + synchronized (thread_lock_1) { + rslt_pos = amp_pos + 1; // default to fail pos; after amp; + Object o = amp_trie.Match_bgn(src, cur_pos, src_len); + cur_pos = amp_trie.Match_pos(); + if (o == null) return null; + Xop_amp_trie_itm itm = (Xop_amp_trie_itm)o; + switch (itm.Tid()) { + case Xop_amp_trie_itm.Tid_name_std: + case Xop_amp_trie_itm.Tid_name_xowa: + rslt_pos = cur_pos; + return tkn_mkr.Amp_txt(amp_pos, cur_pos, itm); + case Xop_amp_trie_itm.Tid_num_hex: + case Xop_amp_trie_itm.Tid_num_dec: + boolean ncr_is_hex = itm.Tid() == Xop_amp_trie_itm.Tid_num_hex; + boolean pass = Parse_as_int(ncr_is_hex, src, src_len, amp_pos, cur_pos); + return pass ? tkn_mkr.Amp_num(amp_pos, rslt_pos, rslt_val) : null; + default: throw Err_.new_unhandled(itm.Tid()); + } } } public boolean Parse_as_int(boolean ncr_is_hex, byte[] src, int src_len, int amp_pos, int int_bgn) { - 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_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--) { - byte b = src[i]; - if (ncr_is_hex) { - if (b >= 48 && b <= 57) cur = b - 48; - else if (b >= 65 && b <= 70) cur = b - 55; - else if (b >= 97 && b <= 102) cur = b - 87; - else if((b >= 71 && b <= 90) - || (b >= 91 && b <= 122)) continue; // NOTE: wiki discards letters G-Z; PAGE:en.w:Miscellaneous_Symbols "{{Unicode|&#xx26D0;}}"; NOTE 2nd x is discarded - else return false; - } - else { - cur = b - Byte_ascii.Num_0; - if (cur < 0 || cur > 10) return false; + synchronized (thread_lock_2) { + 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_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--) { + byte b = src[i]; + if (ncr_is_hex) { + if (b >= 48 && b <= 57) cur = b - 48; + else if (b >= 65 && b <= 70) cur = b - 55; + else if (b >= 97 && b <= 102) cur = b - 87; + else if((b >= 71 && b <= 90) + || (b >= 91 && b <= 122)) continue; // NOTE: wiki discards letters G-Z; PAGE:en.w:Miscellaneous_Symbols "{{Unicode|&#xx26D0;}}"; NOTE 2nd x is discarded + else return false; + } + else { + cur = b - Byte_ascii.Num_0; + if (cur < 0 || cur > 10) return false; + } + val += cur * factor; + if (val > gplx.core.intls.Utf8_.Codepoint_max) return false; // fail if value > largest_unicode_codepoint + factor *= multiple; } - val += cur * factor; - if (val > gplx.core.intls.Utf8_.Codepoint_max) return false; // fail if value > largest_unicode_codepoint - factor *= multiple; + rslt_val = val; + rslt_pos = semic_pos + 1; // position after semic + return true; } - rslt_val = val; - rslt_pos = semic_pos + 1; // position after semic - return true; } public byte[] Decode_as_bry(byte[] src) { if (src == null) return src; @@ -117,8 +122,8 @@ public class Xop_amp_mgr { tmp_bfr.Add_byte(b); ++pos; } - return dirty ? tmp_bfr.Xto_bry_and_clear() : src; + return dirty ? tmp_bfr.To_bry_and_clear() : src; } } - public static final Xop_amp_mgr I = new Xop_amp_mgr(); Xop_amp_mgr() {} + public static final Xop_amp_mgr Instance = new Xop_amp_mgr(); Xop_amp_mgr() {} } diff --git a/400_xowa/src/gplx/xowa/parsers/amps/Xop_amp_mgr_decode_tst.java b/400_xowa/src/gplx/xowa/parsers/amps/Xop_amp_mgr_decode_tst.java index c63988a8c..b9ec794d1 100644 --- a/400_xowa/src/gplx/xowa/parsers/amps/Xop_amp_mgr_decode_tst.java +++ b/400_xowa/src/gplx/xowa/parsers/amps/Xop_amp_mgr_decode_tst.java @@ -33,10 +33,10 @@ public class Xop_amp_mgr_decode_tst { @Test public void Hex_zero_padded() {fxt.Test_decode_as_bry("Σ" , "Σ");} @Test public void Hex_upper_x() {fxt.Test_decode_as_bry("Σ" , "Σ");} @Test public void Num_fail_large_codepoint() {fxt.Test_decode_as_bry("�" , "�");} - @Test public void Num_ignore_extra_x() {fxt.Test_decode_as_bry("&#xx26D0;" , Char_.To_str(Char_.XbyInt(9936)));} // 2nd x is ignored + @Test public void Num_ignore_extra_x() {fxt.Test_decode_as_bry("&#xx26D0;" , Char_.To_str(Char_.By_int(9936)));} // 2nd x is ignored } class Xop_amp_mgr_fxt { - private Xop_amp_mgr amp_mgr = Xop_amp_mgr.I; + private Xop_amp_mgr amp_mgr = Xop_amp_mgr.Instance; public void Reset() {} public void Test_decode_as_bry(String raw, String expd) { Tfds.Eq(expd, String_.new_u8(amp_mgr.Decode_as_bry(Bry_.new_u8(raw)))); diff --git a/400_xowa/src/gplx/xowa/parsers/amps/Xop_amp_trie.java b/400_xowa/src/gplx/xowa/parsers/amps/Xop_amp_trie.java index 7d91d6bde..255530f24 100644 --- a/400_xowa/src/gplx/xowa/parsers/amps/Xop_amp_trie.java +++ b/400_xowa/src/gplx/xowa/parsers/amps/Xop_amp_trie.java @@ -31,7 +31,7 @@ public class Xop_amp_trie { , Bry_xowa_nl = Bry_.new_a7("&xowa_nl;") , Bry_xowa_dash = Bry_.new_a7("&xowa_dash;") ; - public static final Btrie_slim_mgr _ = new_(); Xop_amp_trie() {} + public static final Btrie_slim_mgr Instance = new_(); Xop_amp_trie() {} private static Btrie_slim_mgr new_() {// REF.MW: Sanitizer|$wgHtmlEntities; NOTE:added apos Btrie_slim_mgr rv = Btrie_slim_mgr.cs(); Reg_name(rv, Bool_.Y, 60, Bry_xowa_lt); 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 a08b5b9e3..e79f5b242 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,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.amps; import gplx.*; import gplx.xowa.*; import gplx.xowa.parsers.*; -import gplx.langs.htmls.*; import gplx.xowa.html.lnkis.*; +import gplx.langs.htmls.*; import gplx.xowa.htmls.lnkis.*; public class Xop_amp_trie_itm { public Xop_amp_trie_itm(byte tid, int char_int, byte[] xml_name_bry) { this.tid = tid; 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 ebce3b4ff..1949574d6 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 @@ -20,8 +20,8 @@ import gplx.core.btries.*; import gplx.xowa.langs.*; public class Xop_apos_lxr implements Xop_lxr { 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 Init_by_lang(Xol_lang_itm 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() {} + public static final Xop_apos_lxr Instance = new Xop_apos_lxr(); Xop_apos_lxr() {} } 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 099f4aeaf..22cadae66 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 @@ -20,9 +20,9 @@ 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 Init_by_lang(Xol_lang_itm 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 Xop_hdr_lxr Instance = new Xop_hdr_lxr(); Xop_hdr_lxr() {} public static final byte Hook = Byte_ascii.Eq; } diff --git a/400_xowa/src/gplx/xowa/parsers/htmls/Mwh_atr_itm.java b/400_xowa/src/gplx/xowa/parsers/htmls/Mwh_atr_itm.java index c2377a61b..dde381341 100644 --- a/400_xowa/src/gplx/xowa/parsers/htmls/Mwh_atr_itm.java +++ b/400_xowa/src/gplx/xowa/parsers/htmls/Mwh_atr_itm.java @@ -34,6 +34,7 @@ public class Mwh_atr_itm { public boolean Valid() {return valid;} private final boolean valid; public boolean Key_exists() {return key_exists;} private final boolean key_exists; public boolean Repeated() {return repeated;} private final boolean repeated; + public boolean Invalid() {return repeated || !valid;} public int Atr_bgn() {return atr_bgn;} private int atr_bgn; public int Atr_end() {return atr_end;} private int atr_end; public int Key_bgn() {return key_bgn;} private final int key_bgn; @@ -45,42 +46,21 @@ public class Mwh_atr_itm { public byte[] Val_bry() {return val_bry;} private byte[] val_bry; public int Eql_pos() {return eql_pos;} private final int eql_pos; public int Qte_tid() {return qte_tid;} private final int qte_tid; + public byte Qte_byte() { + switch (qte_tid) { + case Mwh_atr_itm_.Qte_tid__none: return Byte_ascii.Null; + case Mwh_atr_itm_.Qte_tid__apos: return Byte_ascii.Apos; + case Mwh_atr_itm_.Qte_tid__qute: return Byte_ascii.Quote; + default: throw Err_.new_unhandled(qte_tid); + } + } public Mwh_atr_itm Atr_rng(int bgn, int end) {this.atr_bgn = bgn; this.atr_end = end; return this;} + public void Key_bry_(byte[] v) {this.key_bry = v;} + public void Val_bry_(byte[] v) {this.val_bry = v;} public String Val_as_str() {return String_.new_u8(Val_as_bry());} public byte[] Val_as_bry() {if (val_bry == null) val_bry = Bry_.Mid(src, val_bgn, val_end); return val_bry;} // NOTE: val_bry is cached public byte[] Val_as_bry__blank_to_null() {byte[] rv = Val_as_bry(); return Bry_.Len_eq_0(rv) ? null : rv;} public int Val_as_int_or(int or) {return val_bry == null ? Bry_.To_int_or__lax(src, val_bgn, val_end, or) : Bry_.To_int_or(val_bry, or);} public boolean Val_as_bool_by_int() {return Val_as_int_or(0) == 1;} public boolean Val_as_bool() {return Bry_.Eq(Bry_.Lcase__all(Val_as_bry()), Bool_.True_bry);} - public static final Mwh_atr_itm[] Ary_empty = new Mwh_atr_itm[0]; - public static final int Atr_tid__invalid = 1, Atr_tid__repeat = 2, Atr_tid__pair = 4, Atr_tid__name = 8; // NOTE: id order is important; see above; - public static final int Qte_tid__none = 0, Qte_tid__apos = 1, Qte_tid__qute = 2; - public static final int Mask__qte__none = 0, Mask__qte__apos = 1, Mask__qte_qute = 2; - public static final int - Mask__valid = 8 - , Mask__repeated = 16 - , Mask__key_exists = 32 - , Mask__val_made = 64 - ; - public static final boolean Mask__valid__n = false, Mask__valid__y = true; - public static final boolean Mask__key_exists__n = false, Mask__key_exists__y = true; - public static final boolean Mask__repeated__n = false, Mask__repeated__y = true; - public static final boolean Mask__val_made__n = false, Mask__val_made__y = true; - public static int Calc_atr_utl(int qte_tid, boolean valid, boolean repeated, boolean key_exists, boolean val_made) { - int rv = qte_tid; - if (valid) rv |= Mwh_atr_itm.Mask__valid; - if (repeated) rv |= Mwh_atr_itm.Mask__repeated; - if (key_exists) rv |= Mwh_atr_itm.Mask__key_exists; - if (val_made) rv |= Mwh_atr_itm.Mask__val_made; - return rv; - } - public static int Calc_qte_tid(int val) { - return val & ((1 << 3) - 1); - } - public static byte Calc_qte_byte(int[] data_ary, int idx) { - int val = data_ary[idx + Mwh_atr_mgr.Idx_atr_utl]; - int qte_tid = (val & ((1 << 3) - 1)); - return qte_tid == Qte_tid__apos ? Byte_ascii.Apos : Byte_ascii.Quote; - } -// public static final byte Key_tid_generic = 0, Key_tid_id = 1, Key_tid_style = 2, Key_tid_role = 3; } diff --git a/400_xowa/src/gplx/xowa/parsers/htmls/Mwh_atr_itm_.java b/400_xowa/src/gplx/xowa/parsers/htmls/Mwh_atr_itm_.java new file mode 100644 index 000000000..2f6083f0f --- /dev/null +++ b/400_xowa/src/gplx/xowa/parsers/htmls/Mwh_atr_itm_.java @@ -0,0 +1,51 @@ +/* +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.htmls; import gplx.*; import gplx.xowa.*; import gplx.xowa.parsers.*; +public class Mwh_atr_itm_ { + public static final Mwh_atr_itm[] Ary_empty = new Mwh_atr_itm[0]; + public static final int Atr_tid__invalid = 1, Atr_tid__repeat = 2, Atr_tid__pair = 4, Atr_tid__name = 8; // NOTE: id order is important; see above; + public static final int Qte_tid__none = 0, Qte_tid__apos = 1, Qte_tid__qute = 2; + public static final int Mask__qte__none = 0, Mask__qte__apos = 1, Mask__qte_qute = 2; + public static final int + Mask__valid = 8 + , Mask__repeated = 16 + , Mask__key_exists = 32 + , Mask__val_made = 64 + ; + public static final boolean Mask__valid__n = false, Mask__valid__y = true; + public static final boolean Mask__key_exists__n = false, Mask__key_exists__y = true; + public static final boolean Mask__repeated__n = false, Mask__repeated__y = true; + public static final boolean Mask__val_made__n = false, Mask__val_made__y = true; + public static int Calc_atr_utl(int qte_tid, boolean valid, boolean repeated, boolean key_exists, boolean val_made) { + int rv = qte_tid; + if (valid) rv |= Mwh_atr_itm_.Mask__valid; + if (repeated) rv |= Mwh_atr_itm_.Mask__repeated; + if (key_exists) rv |= Mwh_atr_itm_.Mask__key_exists; + if (val_made) rv |= Mwh_atr_itm_.Mask__val_made; + return rv; + } + public static int Calc_qte_tid(int val) { + return val & ((1 << 3) - 1); + } + public static byte Calc_qte_byte(int[] data_ary, int idx) { + int val = data_ary[idx + Mwh_atr_mgr.Idx_atr_utl]; + int qte_tid = (val & ((1 << 3) - 1)); + return qte_tid == Qte_tid__apos ? Byte_ascii.Apos : Byte_ascii.Quote; + } + public static final byte Key_tid__generic = 0, Key_tid__id = 1, Key_tid__style = 2, Key_tid__role = 3; +} diff --git a/400_xowa/src/gplx/xowa/parsers/xndes/Xop_xnde_atr_parser.java b/400_xowa/src/gplx/xowa/parsers/htmls/Mwh_atr_itm_owner.java similarity index 79% rename from 400_xowa/src/gplx/xowa/parsers/xndes/Xop_xnde_atr_parser.java rename to 400_xowa/src/gplx/xowa/parsers/htmls/Mwh_atr_itm_owner.java index 5ac1e1d53..2e863b5cd 100644 --- a/400_xowa/src/gplx/xowa/parsers/xndes/Xop_xnde_atr_parser.java +++ b/400_xowa/src/gplx/xowa/parsers/htmls/Mwh_atr_itm_owner.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.parsers.xndes; import gplx.*; import gplx.xowa.*; import gplx.xowa.parsers.*; -public interface Xop_xnde_atr_parser { - void Xatr_parse(Xowe_wiki wiki, byte[] src, Xop_xatr_itm xatr, Object xatr_key_obj); +package gplx.xowa.parsers.htmls; import gplx.*; import gplx.xowa.*; import gplx.xowa.parsers.*; +public interface Mwh_atr_itm_owner { + void Xatr__set(Xowe_wiki wiki, byte[] src, Mwh_atr_itm xatr, Object xatr_id_obj); } diff --git a/400_xowa/src/gplx/xowa/parsers/htmls/Mwh_atr_mgr.java b/400_xowa/src/gplx/xowa/parsers/htmls/Mwh_atr_mgr.java index e00cd07dc..6208a0627 100644 --- a/400_xowa/src/gplx/xowa/parsers/htmls/Mwh_atr_mgr.java +++ b/400_xowa/src/gplx/xowa/parsers/htmls/Mwh_atr_mgr.java @@ -64,7 +64,7 @@ public class Mwh_atr_mgr { } data_ary[data_idx + Idx_nde_uid] = nde_uid; data_ary[data_idx + Idx_nde_tid] = nde_tid; - data_ary[data_idx + Idx_atr_utl] = Mwh_atr_itm.Calc_atr_utl(qte_tid, valid, repeated, key_exists, val_made); + data_ary[data_idx + Idx_atr_utl] = Mwh_atr_itm_.Calc_atr_utl(qte_tid, valid, repeated, key_exists, val_made); data_ary[data_idx + Idx_atr_bgn] = atr_bgn; data_ary[data_idx + Idx_atr_end] = atr_end; data_ary[data_idx + Idx_key_bgn] = key_bgn; @@ -78,7 +78,7 @@ public class Mwh_atr_mgr { int atr_utl_idx = (atr_uid * Idx__mult) + Idx_atr_utl; int atr_utl = data_ary[atr_utl_idx]; int val_bry_exists = atr_utl & Atr_utl__val_bry_exists; - data_ary[atr_utl_idx] = Mwh_atr_itm.Atr_tid__repeat | val_bry_exists; + data_ary[atr_utl_idx] = Mwh_atr_itm_.Atr_tid__repeat | val_bry_exists; } public static final int Idx_nde_uid = 0 diff --git a/400_xowa/src/gplx/xowa/parsers/htmls/Mwh_atr_mgr_tst.java b/400_xowa/src/gplx/xowa/parsers/htmls/Mwh_atr_mgr_tst.java index 3e666e16d..17a353e1f 100644 --- a/400_xowa/src/gplx/xowa/parsers/htmls/Mwh_atr_mgr_tst.java +++ b/400_xowa/src/gplx/xowa/parsers/htmls/Mwh_atr_mgr_tst.java @@ -21,19 +21,19 @@ public class Mwh_atr_mgr_tst { private final Mwh_atr_mgr_fxt fxt = new Mwh_atr_mgr_fxt(); @Test public void Atr_utl_make() { // key="val" - fxt.Test_atr_utl_make(Mwh_atr_itm.Qte_tid__qute, Mwh_atr_itm.Mask__valid__y, Mwh_atr_itm.Mask__repeated__n, Mwh_atr_itm.Mask__key_exists__y, Mwh_atr_itm.Mask__val_made__n, 42); + fxt.Test_atr_utl_make(Mwh_atr_itm_.Qte_tid__qute, Mwh_atr_itm_.Mask__valid__y, Mwh_atr_itm_.Mask__repeated__n, Mwh_atr_itm_.Mask__key_exists__y, Mwh_atr_itm_.Mask__val_made__n, 42); // key=val key=val - fxt.Test_atr_utl_make(Mwh_atr_itm.Qte_tid__none, Mwh_atr_itm.Mask__valid__y, Mwh_atr_itm.Mask__repeated__y, Mwh_atr_itm.Mask__key_exists__y, Mwh_atr_itm.Mask__val_made__y, 120); + fxt.Test_atr_utl_make(Mwh_atr_itm_.Qte_tid__none, Mwh_atr_itm_.Mask__valid__y, Mwh_atr_itm_.Mask__repeated__y, Mwh_atr_itm_.Mask__key_exists__y, Mwh_atr_itm_.Mask__val_made__y, 120); } } class Mwh_atr_mgr_fxt { public void Test_atr_utl_make(int qte_tid, boolean valid, boolean repeated, boolean key_exists, boolean val_made, int expd) { - int atr_utl = Mwh_atr_itm.Calc_atr_utl(qte_tid, valid, repeated, key_exists, val_made); + int atr_utl = Mwh_atr_itm_.Calc_atr_utl(qte_tid, valid, repeated, key_exists, val_made); Tfds.Eq_int(expd, atr_utl); - Tfds.Eq_int(qte_tid, Mwh_atr_itm.Calc_qte_tid(atr_utl)); - Tfds.Eq_bool(valid, (atr_utl & Mwh_atr_itm.Mask__valid) == Mwh_atr_itm.Mask__valid); - Tfds.Eq_bool(repeated, (atr_utl & Mwh_atr_itm.Mask__repeated) == Mwh_atr_itm.Mask__repeated); - Tfds.Eq_bool(key_exists, (atr_utl & Mwh_atr_itm.Mask__key_exists) == Mwh_atr_itm.Mask__key_exists); - Tfds.Eq_bool(val_made, (atr_utl & Mwh_atr_itm.Mask__val_made) == Mwh_atr_itm.Mask__val_made); + Tfds.Eq_int(qte_tid, Mwh_atr_itm_.Calc_qte_tid(atr_utl)); + Tfds.Eq_bool(valid, (atr_utl & Mwh_atr_itm_.Mask__valid) == Mwh_atr_itm_.Mask__valid); + Tfds.Eq_bool(repeated, (atr_utl & Mwh_atr_itm_.Mask__repeated) == Mwh_atr_itm_.Mask__repeated); + Tfds.Eq_bool(key_exists, (atr_utl & Mwh_atr_itm_.Mask__key_exists) == Mwh_atr_itm_.Mask__key_exists); + Tfds.Eq_bool(val_made, (atr_utl & Mwh_atr_itm_.Mask__val_made) == Mwh_atr_itm_.Mask__val_made); } } diff --git a/400_xowa/src/gplx/xowa/parsers/htmls/Mwh_atr_parser.java b/400_xowa/src/gplx/xowa/parsers/htmls/Mwh_atr_parser.java index f5af870aa..1c7c51017 100644 --- a/400_xowa/src/gplx/xowa/parsers/htmls/Mwh_atr_parser.java +++ b/400_xowa/src/gplx/xowa/parsers/htmls/Mwh_atr_parser.java @@ -26,78 +26,73 @@ public class Mwh_atr_parser { // REF.MW:Sanitizer.php|decodeTagAttributes;MW_ATT private byte area = Area__atr_limbo; private int atr_bgn = -1, key_bgn = -1, key_end = -1, eql_pos = -1, val_bgn = -1, val_end = -1; private byte qte_byte = Byte_ascii.Null; - private boolean key_bfr_on = false, val_bfr_on = false, ws_is_before_val = false; + private boolean key_bfr_on = false, val_bfr_on = false, ws_is_before_val = false, qte_closed = false; private int nde_uid, nde_tid; public Bry_obj_ref Bry_obj() {return bry_ref;} private final Bry_obj_ref bry_ref = Bry_obj_ref.null_(); public int Nde_end_tid() {return nde_end_tid;} private int nde_end_tid; public int Parse(Mwh_doc_wkr wkr, int nde_uid, int nde_tid, byte[] src, int src_bgn, int src_end) { this.nde_uid = nde_uid; this.nde_tid = nde_tid; this.nde_end_tid = Mwh_doc_parser.Nde_end_tid__invalid; + this.atr_bgn = -1; area = Area__atr_limbo; boolean prv_is_ws = false; int pos = src_bgn; boolean loop = true; while (loop) { - if (pos == src_end) { - if (area == Area__val_quote) { // quote still open - int reset_pos = Bry_find_.Find_fwd(src, Byte_ascii.Space, val_bgn, src_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; - area = Area__invalid; val_end = reset_found ? reset_pos : src_end; - Make(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 - pos = Bry_find_.Find_fwd_while_not_ws(src, reset_pos, src_end); // skip ws - atr_bgn = -1; - area = Area__atr_limbo; - val_bfr.Clear(); - val_bfr_on = false; - ws_is_before_val = false; - continue; - } - else + if (pos >= src_end) { + switch (area) { + case Area__key: // EX: "a" + case Area__eql_limbo: // EX: "a " + case Area__val_naked: // EX: "a=b" + break; // valid atr + case Area__val_quote: // EX: "a='b'" + if (qte_closed) + Make(src, src_end); + else { // dangling; EX: "a='b c=d" + int reset_pos = Bry_find_.Find_fwd(src, Byte_ascii.Space, val_bgn, src_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; + area = Area__invalid; val_end = reset_found ? reset_pos : src_end; + Make(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 + pos = Bry_find_.Find_fwd_while_not_ws(src, reset_pos, src_end); // skip ws + atr_bgn = -1; + area = Area__atr_limbo; + continue; + } + } break; - } - else { - if (area == Area__val_limbo) // NOTE: handle dangling "k=" else will be "k"; EX: x> ; PAGE:en.s:Notes_by_the_Way/Chapter_2; DATE:2015-01-31 + case Area__invalid: case Area__atr_limbo: + case Area__val_limbo: area = Area__invalid; - if (atr_bgn != -1) { // atr_bgn will be -1 if atrs ends on quoted (EX:"a='b'"); else, pending atr that needs to be processed; EX: "a=b" b wil be in bfr - val_end = src_end; - Make(src, src_end); - } - break; + break; + } + if (atr_bgn != -1) { + val_end = src_end; + Make(src, val_end); } - } - else if (pos > src_end) break; + } byte b = src[pos]; switch (area) { - case Area__atr_limbo: // 1st area after node_name or attribute + case Area__invalid: switch (b) { - // gt -> stop iterating - case Byte_ascii.Gt: - nde_end_tid = Mwh_doc_parser.Nde_end_tid__gt; - loop = false; + // ws -> end invalid area + case Byte_ascii.Tab: case Byte_ascii.Nl: case Byte_ascii.Cr: case Byte_ascii.Space: + Make(src, pos); + area = Area__atr_limbo; break; - // slash -> check for "/>" or " / " - case Byte_ascii.Slash: - int nxt_pos = pos + 1; - if (nxt_pos == src_end) { - pos = nxt_pos; - return Mwh_doc_parser.Nde_end_tid__invalid; - } - else if (src[nxt_pos] == Byte_ascii.Gt) { - nde_end_tid = Mwh_doc_parser.Nde_end_tid__inline; - pos = nxt_pos; - loop = false; - } - else { - area = Area__invalid; atr_bgn = pos; - } + // rest -> continue eating up invalid chars + default: break; + } + break; + case Area__atr_limbo: // 1st area after (a) node_name, (b) attribute, (c) invalid_area + switch (b) { // ws -> ignore; skip any ws in atr_limbo; note that once a non-ws char is encountered, it will immediately go into another area - case Byte_ascii.Space: case Byte_ascii.Nl: case Byte_ascii.Tab: - if (atr_bgn == -1) atr_bgn = pos; + case Byte_ascii.Tab: case Byte_ascii.Nl: case Byte_ascii.Cr: case Byte_ascii.Space: + if (atr_bgn == -1) atr_bgn = pos; // NOTE: atr_bgn == -1 needed for multiple spaces; ALSO: cannot move above switch b/c of break; - // alphanum -> enter Area__key + // attribFirst -> enter Area__key; REF.MW: $attribFirst = '[:A-Z_a-z0-9]'; 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: case Byte_ascii.Ltr_A: case Byte_ascii.Ltr_B: case Byte_ascii.Ltr_C: case Byte_ascii.Ltr_D: case Byte_ascii.Ltr_E: @@ -110,42 +105,29 @@ public class Mwh_atr_parser { // REF.MW:Sanitizer.php|decodeTagAttributes;MW_ATT case Byte_ascii.Ltr_k: case Byte_ascii.Ltr_l: case Byte_ascii.Ltr_m: case Byte_ascii.Ltr_n: case Byte_ascii.Ltr_o: case Byte_ascii.Ltr_p: case Byte_ascii.Ltr_q: case Byte_ascii.Ltr_r: case Byte_ascii.Ltr_s: case Byte_ascii.Ltr_t: case Byte_ascii.Ltr_u: case Byte_ascii.Ltr_v: case Byte_ascii.Ltr_w: case Byte_ascii.Ltr_x: case Byte_ascii.Ltr_y: case Byte_ascii.Ltr_z: - case Byte_ascii.Colon: + case Byte_ascii.Colon: case Byte_ascii.Underline: area = Area__key; - if (atr_bgn == -1) atr_bgn = pos; + if (atr_bgn == -1) atr_bgn = pos; // NOTE: atr_bgn == -1 needed b/c of spaces key_bgn = pos; break; - // lt -> check for - case Byte_ascii.Lt: // handle "" + // angle_bgn -> check for + case Byte_ascii.Angle_bgn: // handle "" int gt_pos = Xnde_find_gt(src, pos, src_end); if (gt_pos == Bry_find_.Not_found) { - area = Area__invalid; - atr_bgn = pos; + area = Area__invalid; if (atr_bgn == -1) atr_bgn = pos; } else - pos = gt_pos; // position after ">"; note that there is ++pos below and loop will continue at gt_pos + 1 (next character after) + pos = gt_pos; // position after ">"; note that there is ++pos below and loop will continue at gt_pos + 1 (next character after) break; // rest -> invalid default: // quote and other non-valid key characters are invalid until next space; EX: " src_end invalid area - case Byte_ascii.Space: case Byte_ascii.Nl: case Byte_ascii.Tab: - Make(src, pos); - area = Area__atr_limbo; - break; - // rest -> continue eating up invalid chars - default: + area = Area__invalid; if (atr_bgn == -1) atr_bgn = pos; break; } break; case Area__key: switch (b) { - // alphanum -> valid key chars + // alphanum -> valid key chars; REF.MW: $attrib = '[:A-Z_a-z-.0-9]'; 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: case Byte_ascii.Ltr_A: case Byte_ascii.Ltr_B: case Byte_ascii.Ltr_C: case Byte_ascii.Ltr_D: case Byte_ascii.Ltr_E: @@ -158,26 +140,26 @@ public class Mwh_atr_parser { // REF.MW:Sanitizer.php|decodeTagAttributes;MW_ATT case Byte_ascii.Ltr_k: case Byte_ascii.Ltr_l: case Byte_ascii.Ltr_m: case Byte_ascii.Ltr_n: case Byte_ascii.Ltr_o: case Byte_ascii.Ltr_p: case Byte_ascii.Ltr_q: case Byte_ascii.Ltr_r: case Byte_ascii.Ltr_s: case Byte_ascii.Ltr_t: case Byte_ascii.Ltr_u: case Byte_ascii.Ltr_v: case Byte_ascii.Ltr_w: case Byte_ascii.Ltr_x: case Byte_ascii.Ltr_y: case Byte_ascii.Ltr_z: - case Byte_ascii.Colon: case Byte_ascii.Dash: case Byte_ascii.Dot: case Byte_ascii.Underline: + case Byte_ascii.Colon: case Byte_ascii.Underline: case Byte_ascii.Dash: case Byte_ascii.Dot: if (key_bfr_on) key_bfr.Add_byte(b); break; - // ws -> src_end key - case Byte_ascii.Space: case Byte_ascii.Nl: case Byte_ascii.Tab: + // ws -> end key + case Byte_ascii.Tab: case Byte_ascii.Nl: case Byte_ascii.Cr: case Byte_ascii.Space: area = Area__eql_limbo; key_end = pos; break; - // eq -> src_end key; skip Area_eq and go to Area_val_bgn + // eq -> end key; go to Area_val_limbo case Byte_ascii.Eq: area = Area__val_limbo; key_end = eql_pos = pos; break; - // lt -> check for - case Byte_ascii.Lt: + // angle_bgn -> check for + case Byte_ascii.Angle_bgn: int gt_pos = Xnde_find_gt(src, pos, src_end); if (gt_pos == Bry_find_.Not_found) // "<" should not be in key; EX: "ke skip - case Byte_ascii.Space: case Byte_ascii.Nl: case Byte_ascii.Tab: // skip ws - if (key_end == -1) { // EX: "a = b"; key_end != -1 b/c 1st \s sets key_end; EX: "a b = c"; key_end - val_end = pos - 1; - Make(src, pos); - area = Area__atr_limbo; - continue; - } + case Byte_ascii.Tab: case Byte_ascii.Nl: case Byte_ascii.Cr: case Byte_ascii.Space: // skip ws break; - // eq -> enter Area__eq + // eq -> enter Area__val_limbo case Byte_ascii.Eq: eql_pos = pos; area = Area__val_limbo; break; - // rest -> make atr and enter limbo - case Byte_ascii.Quote: case Byte_ascii.Apos: // FUTURE: previous word was key - default: // NOTE: added this late; xml_parser was not handling "line start=3" DATE:2013-07-03 - val_end = pos - 1; + // attribFirst -> enter Area__key; REF.MW: $attribFirst = '[:A-Z_a-z0-9]'; + 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: + case Byte_ascii.Ltr_A: case Byte_ascii.Ltr_B: case Byte_ascii.Ltr_C: case Byte_ascii.Ltr_D: case Byte_ascii.Ltr_E: + case Byte_ascii.Ltr_F: case Byte_ascii.Ltr_G: case Byte_ascii.Ltr_H: case Byte_ascii.Ltr_I: case Byte_ascii.Ltr_J: + case Byte_ascii.Ltr_K: case Byte_ascii.Ltr_L: case Byte_ascii.Ltr_M: case Byte_ascii.Ltr_N: case Byte_ascii.Ltr_O: + case Byte_ascii.Ltr_P: case Byte_ascii.Ltr_Q: case Byte_ascii.Ltr_R: case Byte_ascii.Ltr_S: case Byte_ascii.Ltr_T: + case Byte_ascii.Ltr_U: case Byte_ascii.Ltr_V: case Byte_ascii.Ltr_W: case Byte_ascii.Ltr_X: case Byte_ascii.Ltr_Y: case Byte_ascii.Ltr_Z: + case Byte_ascii.Ltr_a: case Byte_ascii.Ltr_b: case Byte_ascii.Ltr_c: case Byte_ascii.Ltr_d: case Byte_ascii.Ltr_e: + case Byte_ascii.Ltr_f: case Byte_ascii.Ltr_g: case Byte_ascii.Ltr_h: case Byte_ascii.Ltr_i: case Byte_ascii.Ltr_j: + case Byte_ascii.Ltr_k: case Byte_ascii.Ltr_l: case Byte_ascii.Ltr_m: case Byte_ascii.Ltr_n: case Byte_ascii.Ltr_o: + case Byte_ascii.Ltr_p: case Byte_ascii.Ltr_q: case Byte_ascii.Ltr_r: case Byte_ascii.Ltr_s: case Byte_ascii.Ltr_t: + case Byte_ascii.Ltr_u: case Byte_ascii.Ltr_v: case Byte_ascii.Ltr_w: case Byte_ascii.Ltr_x: case Byte_ascii.Ltr_y: case Byte_ascii.Ltr_z: + case Byte_ascii.Colon: case Byte_ascii.Underline: Make(src, pos); - area = Area__atr_limbo; - continue; + area = Area__key; + atr_bgn = key_bgn = pos; + break; + // rest -> make atr and enter limbo + default: + area = Area__invalid; + break; } break; case Area__val_limbo: switch (b) { // ws -> skip - case Byte_ascii.Space: case Byte_ascii.Nl: case Byte_ascii.Tab: + case Byte_ascii.Tab: case Byte_ascii.Nl: case Byte_ascii.Cr: case Byte_ascii.Space: ws_is_before_val = true; break; // quote -> enter Area_val_quote case Byte_ascii.Quote: case Byte_ascii.Apos: - area = Area__val_quote; qte_byte = b; prv_is_ws = false; + area = Area__val_quote; qte_byte = b; qte_closed = false; + prv_is_ws = false; val_bgn = pos + 1; break; - // alphanum -> enter Area_val_raw + // alphanum -> enter Area_val_raw; REF.MW: [a-zA-Z0-9!#$%&()*,\\-.\\/:;<>?@[\\]^_`{|}~]+ 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: case Byte_ascii.Ltr_A: case Byte_ascii.Ltr_B: case Byte_ascii.Ltr_C: case Byte_ascii.Ltr_D: case Byte_ascii.Ltr_E: @@ -236,64 +228,88 @@ public class Mwh_atr_parser { // REF.MW:Sanitizer.php|decodeTagAttributes;MW_ATT case Byte_ascii.Ltr_k: case Byte_ascii.Ltr_l: case Byte_ascii.Ltr_m: case Byte_ascii.Ltr_n: case Byte_ascii.Ltr_o: case Byte_ascii.Ltr_p: case Byte_ascii.Ltr_q: case Byte_ascii.Ltr_r: case Byte_ascii.Ltr_s: case Byte_ascii.Ltr_t: case Byte_ascii.Ltr_u: case Byte_ascii.Ltr_v: case Byte_ascii.Ltr_w: case Byte_ascii.Ltr_x: case Byte_ascii.Ltr_y: case Byte_ascii.Ltr_z: - case Byte_ascii.Colon: - case Byte_ascii.Hash: + case Byte_ascii.Bang: case Byte_ascii.Hash: case Byte_ascii.Dollar: case Byte_ascii.Percent: case Byte_ascii.Amp: + case Byte_ascii.Paren_bgn: case Byte_ascii.Paren_end: case Byte_ascii.Star: case Byte_ascii.Comma: case Byte_ascii.Dash: case Byte_ascii.Dot: + case Byte_ascii.Backslash: case Byte_ascii.Slash: case Byte_ascii.Colon: case Byte_ascii.Semic: + case Byte_ascii.Question: case Byte_ascii.At: + case Byte_ascii.Brack_bgn: case Byte_ascii.Brack_end: case Byte_ascii.Pow: case Byte_ascii.Underline: case Byte_ascii.Tick: + case Byte_ascii.Curly_bgn: case Byte_ascii.Curly_end: case Byte_ascii.Pipe: case Byte_ascii.Tilde: area = Area__val_naked; val_bgn = pos; break; - // lt -> check for - case Byte_ascii.Lt: + // case Byte_ascii.Angle_end: NOTE: valid in MW; making invalid now until finding counter-example + // angle_bgn -> check for + case Byte_ascii.Angle_bgn: int gt_pos = Xnde_find_gt(src, pos, src_end); if (gt_pos == Bry_find_.Not_found) - area = Area__invalid; + area = Area__invalid; // NOTE: valid in MW; making invalid now until finding counter-example else pos = gt_pos; // note that there is ++pos below and loop will continue at gt_pos + 1 (next character after) break; - // rest -> ignore (?) + // rest -> ignore default: + area = Area__invalid; break; } break; - case Area__val_quote: { // EX: "'val' " in "key = 'val'" + case Area__val_quote: { // EX: "'val' " in "key = 'val'"; REF.MW: \"([^<\"]*)\" switch (b) { // quote: check if same as opening quote case Byte_ascii.Quote: case Byte_ascii.Apos: - if (qte_byte == b) { // quote closes val - val_end = pos; - Make(src, pos + 1); // NOTE: set atr_end *after* quote + if (qte_closed) + area = Area__invalid; + else { + if (qte_byte == b) { // quote closes val + qte_closed = true; + val_end = pos; + } + else { // quote is just char; EX: title="1 o'clock" or title='The "C" way' + prv_is_ws = false; if (val_bfr_on) val_bfr.Add_byte(b); // INLINE: add char + } } - else { // quote is just char; EX: title="1 o'clock" or title='The "C" way' - prv_is_ws = false; if (val_bfr_on) val_bfr.Add_byte(b); // INLINE: add char - } - break; - // lt -> check for ; EX: - case Byte_ascii.Lt: - if (!val_bfr_on) {val_bfr.Add_mid(src, val_bgn, pos); val_bfr_on = true;} // INLINE: val_bfr.init - int gt_pos = Xnde_find_gt(src, pos, src_end); - if (gt_pos == Bry_find_.Not_found) - // area = Area__invalid; // DELETE: 2012-11-13; unpaired < should not mark atr invalid; EX: style='margin:1em convert all ws to \s; only allow 1 ws at any point in time - case Byte_ascii.Nl: case Byte_ascii.Tab: case Byte_ascii.Cr: // REF.MW:Sanitizer.php|decodeTagAttributes $value = preg_replace( '/[\t\r\n ]+/', ' ', $value ); - case Byte_ascii.Space: - if (!val_bfr_on) {val_bfr.Add_mid(src, val_bgn, pos); val_bfr_on = true;} // INLINE: val_bfr.init - if (prv_is_ws) {} // noop; only allow one ws at a time; EX: "a b" -> "a b"; "a\n\nb" -> "a b" + case Byte_ascii.Tab: case Byte_ascii.Nl: case Byte_ascii.Cr: case Byte_ascii.Space: // REF.MW:Sanitizer.php|decodeTagAttributes $value = preg_replace( '/[\t\r\n ]+/', ' ', $value ); + if (qte_closed) { + Make(src, pos); // NOTE: set atr_end *after* quote + if (atr_bgn == -1) atr_bgn = pos; // NOTE: process ws just like Area__atr_limbo + } + else { + if (!val_bfr_on) {val_bfr.Add_mid(src, val_bgn, pos); val_bfr_on = true;} // INLINE: val_bfr.init + if (prv_is_ws) {} // noop; only allow one ws at a time; EX: "a b" -> "a b"; "a\n\nb" -> "a b" + else { + prv_is_ws = true; val_bfr.Add_byte(Byte_ascii.Space); + } + } + break; + // angle_bgn -> check for ; EX: + case Byte_ascii.Angle_bgn: + int gt_pos = Xnde_find_gt(src, pos, src_end); + if (gt_pos == Bry_find_.Not_found) { + // area = Area__invalid; // "<" inside quote is invalid; EX: c + if (val_bfr_on) val_bfr.Add_byte(b); // INLINE: add char + } else { - prv_is_ws = true; val_bfr.Add_byte(Byte_ascii.Space); + if (qte_closed) {} + else { + if (!val_bfr_on) {val_bfr.Add_mid(src, val_bgn, pos); val_bfr_on = true;} // INLINE: val_bfr.init + } + pos = gt_pos; // note that there is ++pos below and loop will continue at gt_pos + 1 (next character after) } + prv_is_ws = false; break; // rest -> add to val default: - prv_is_ws = false; if (val_bfr_on) val_bfr.Add_byte(b); // INLINE: add char + if (qte_closed) + area = Area__invalid; + else { + prv_is_ws = false; if (val_bfr_on) val_bfr.Add_byte(b); // INLINE: add char + } break; } break; } - case Area__val_naked: // no quotes; EX:a=bcd + case Area__val_naked: // no quotes; EX:a=bcd; REF.MW:([a-zA-Z0-9!#$%&()*,\\-.\\/:;<>?@[\\]^_`{|}~]+) switch (b) { // alphanum -> continue reading 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: @@ -308,16 +324,28 @@ public class Mwh_atr_parser { // REF.MW:Sanitizer.php|decodeTagAttributes;MW_ATT case Byte_ascii.Ltr_k: case Byte_ascii.Ltr_l: case Byte_ascii.Ltr_m: case Byte_ascii.Ltr_n: case Byte_ascii.Ltr_o: case Byte_ascii.Ltr_p: case Byte_ascii.Ltr_q: case Byte_ascii.Ltr_r: case Byte_ascii.Ltr_s: case Byte_ascii.Ltr_t: case Byte_ascii.Ltr_u: case Byte_ascii.Ltr_v: case Byte_ascii.Ltr_w: case Byte_ascii.Ltr_x: case Byte_ascii.Ltr_y: case Byte_ascii.Ltr_z: - case Byte_ascii.Bang: case Byte_ascii.Hash: case Byte_ascii.Dollar: case Byte_ascii.Percent: - case Byte_ascii.Amp: case Byte_ascii.Paren_bgn: case Byte_ascii.Paren_end: case Byte_ascii.Star: - case Byte_ascii.Comma: case Byte_ascii.Dash: case Byte_ascii.Dot: case Byte_ascii.Slash: - case Byte_ascii.Colon: case Byte_ascii.Semic: case Byte_ascii.Gt: - case Byte_ascii.Question: case Byte_ascii.At: case Byte_ascii.Brack_bgn: case Byte_ascii.Brack_end: - case Byte_ascii.Pow: case Byte_ascii.Underline: case Byte_ascii.Tick: - case Byte_ascii.Curly_bgn: case Byte_ascii.Pipe: case Byte_ascii.Curly_end: case Byte_ascii.Tilde: + case Byte_ascii.Bang: case Byte_ascii.Hash: case Byte_ascii.Dollar: case Byte_ascii.Percent: case Byte_ascii.Amp: + case Byte_ascii.Paren_bgn: case Byte_ascii.Paren_end: case Byte_ascii.Star: case Byte_ascii.Comma: case Byte_ascii.Dash: case Byte_ascii.Dot: + case Byte_ascii.Backslash: case Byte_ascii.Slash: case Byte_ascii.Colon: case Byte_ascii.Semic: + case Byte_ascii.Question: case Byte_ascii.At: + case Byte_ascii.Brack_bgn: case Byte_ascii.Brack_end: case Byte_ascii.Pow: case Byte_ascii.Underline: case Byte_ascii.Tick: + case Byte_ascii.Curly_bgn: case Byte_ascii.Curly_end: case Byte_ascii.Pipe: case Byte_ascii.Tilde: + if (val_bfr_on) val_bfr.Add_byte(b); // INLINE: add char + break; + // case Byte_ascii.Angle_end: NOTE: valid in MW; making invalid now until finding counter-example + // angle_bgn -> check for ; EX: a=bcd + case Byte_ascii.Angle_bgn: + int gt_pos = Xnde_find_gt(src, pos, src_end); + if (gt_pos == Bry_find_.Not_found) { + area = Area__invalid; // NOTE: valid in MW; making invalid now until finding counter-example + } + else { + if (!val_bfr_on) {val_bfr.Add_mid(src, val_bgn, pos); val_bfr_on = true;} // INLINE: val_bfr.init + pos = gt_pos; // note that there is ++pos below and loop will continue at gt_pos + 1 (next character after) + } break; // ws -> src_end atr - case Byte_ascii.Space: case Byte_ascii.Tab: case Byte_ascii.Nl: + case Byte_ascii.Tab: case Byte_ascii.Nl: case Byte_ascii.Cr: case Byte_ascii.Space: val_end = pos; Make(src, pos); break; @@ -329,14 +357,9 @@ public class Mwh_atr_parser { // REF.MW:Sanitizer.php|decodeTagAttributes;MW_ATT key_end = pos; area = Area__val_limbo; // set area to val_bgn (basically, put after =) } - else // "a=b=c"; discard all + else // "a=b=c"; discard all area = Area__invalid; break; - case Byte_ascii.Lt: - val_end = pos; - Make(src, pos); - --pos; // NOTE: --pos to include "<" as part of next atr; above ws excludes from next atr - break; default: area = Area__invalid; break; @@ -355,10 +378,10 @@ public class Mwh_atr_parser { // REF.MW:Sanitizer.php|decodeTagAttributes;MW_ATT byte[] key_bry = text_ary[j * Mwh_atr_mgr.Text__mult]; byte[] val_bry_manual = null; int atr_utl = data_ary[itm_idx + Mwh_atr_mgr.Idx_atr_utl]; - boolean atr_valid = (atr_utl & Mwh_atr_itm.Mask__valid) == Mwh_atr_itm.Mask__valid; - boolean repeated = (atr_utl & Mwh_atr_itm.Mask__repeated) == Mwh_atr_itm.Mask__repeated; - boolean key_exists = (atr_utl & Mwh_atr_itm.Mask__key_exists) == Mwh_atr_itm.Mask__key_exists; - boolean val_made = (atr_utl & Mwh_atr_itm.Mask__val_made) == Mwh_atr_itm.Mask__val_made; + boolean atr_valid = (atr_utl & Mwh_atr_itm_.Mask__valid) == Mwh_atr_itm_.Mask__valid; + boolean repeated = (atr_utl & Mwh_atr_itm_.Mask__repeated) == Mwh_atr_itm_.Mask__repeated; + boolean key_exists = (atr_utl & Mwh_atr_itm_.Mask__key_exists) == Mwh_atr_itm_.Mask__key_exists; + boolean val_made = (atr_utl & Mwh_atr_itm_.Mask__val_made) == Mwh_atr_itm_.Mask__val_made; if (val_made) val_bry_manual = text_ary[(j * Mwh_atr_mgr.Text__mult) + 1]; wkr.On_atr_each(this, src, nde_tid, atr_valid, repeated, key_exists, key_bry, val_bry_manual, data_ary, itm_idx); @@ -368,6 +391,48 @@ public class Mwh_atr_parser { // REF.MW:Sanitizer.php|decodeTagAttributes;MW_ATT return pos; } + private void Make(byte[] src, int atr_end) { + // calc final values for atr + boolean key_exists = false; + byte[] key_bry = null, val_bry = null; + boolean atr_valid = true; + if (area == Area__invalid) { + atr_valid = false; + key_bry = Bry_.Empty; + key_bfr.Clear(); + if (val_bgn == -1) val_bgn = atr_bgn; + val_bfr.Clear(); + } + else { + if (key_bgn != -1 && val_bgn != -1) // key && val exists; EX: "" + key_exists = true; + else { // not a pair; EX: "" + if (key_end == -1) key_end = val_end; // NOTE: key_end == -1 when eos; EX: "a" would have key_bgn = 0; key_end = -1; val_end = 1 DATE:2014-07-03 + val_bgn = val_end = -1; + } + key_bry = key_bfr_on ? key_bfr.To_bry_and_clear() : Bry_.Mid(src, key_bgn, key_end); // always make key_bry; needed for repeated_atrs as well as key_tid + if (val_bfr_on) val_bry = val_bfr.To_bry_and_clear(); + } + int qte_tid = Mwh_atr_itm_.Mask__qte__none; + if (qte_byte != Byte_ascii.Null) + qte_tid = qte_byte == Byte_ascii.Quote ? Mwh_atr_itm_.Mask__qte_qute : Mwh_atr_itm_.Mask__qte__apos; + int atr_uid = atr_mgr.Add(nde_uid, nde_tid, atr_valid, false, key_exists, atr_bgn, atr_end, key_bgn, key_end, key_bry, eql_pos, qte_tid, val_bgn, val_end, val_bry); + + // handle repeated atrs + if (atr_valid) { + int repeated_uid = repeated_atrs_hash.Get_as_int_or(key_bry, -1); + if (repeated_uid != -1) { + repeated_atrs_hash.Del(key_bry); + atr_mgr.Set_repeated(repeated_uid); + } + repeated_atrs_hash.Add_bry_int(key_bry, atr_uid); + } + + // reset temp variables + area = Area__atr_limbo; qte_byte = Byte_ascii.Null; + atr_bgn = key_bgn = val_bgn = key_end = val_end = eql_pos = -1; + key_bfr_on = val_bfr_on = ws_is_before_val = qte_closed = false; + } public int Xnde_find_gt_find(byte[] src, int pos, int end) { bry_ref.Val_(null); byte b = src[pos]; @@ -381,7 +446,7 @@ public class Mwh_atr_parser { // REF.MW:Sanitizer.php|decodeTagAttributes;MW_ATT return bry == null ? Bry_find_.Not_found : bry.length + pos; } private int Xnde_find_gt(byte[] src, int lt_pos, int end) { - int pos = lt_pos + 1; + int pos = lt_pos + 1; if (pos == end) return Bry_find_.Not_found; byte b = src[pos]; if (b == Byte_ascii.Slash && pos + 1 < end) { ++pos; @@ -406,47 +471,6 @@ public class Mwh_atr_parser { // REF.MW:Sanitizer.php|decodeTagAttributes;MW_ATT } return Bry_find_.Not_found; } - private void Make(byte[] src, int atr_end) { - // calc final values for atr - boolean key_exists = false; - byte[] key_bry = null, val_bry = null; - boolean atr_valid = true; - if (area != Area__invalid) { - if (key_bgn != -1 && val_bgn != -1) // key && val exists; EX: "" - key_exists = true; - else { // not a pair; EX: "" - if (key_end == -1) key_end = val_end; // NOTE: key_end == -1 when eos; EX: "a" would have key_bgn = 0; key_end = -1; val_end = 1 DATE:2014-07-03 - val_bgn = val_end = -1; - } - key_bry = key_bfr_on ? key_bfr.Xto_bry_and_clear() : Bry_.Mid(src, key_bgn, key_end); // always make key_bry; needed for repeated_atrs as well as key_tid - if (val_bfr_on) val_bry = val_bfr.Xto_bry_and_clear(); - } - else { - atr_valid = false; - key_bry = Bry_.Empty; - key_bfr.Clear(); - if (val_bgn == -1) val_bgn = atr_bgn; - } - int qte_tid = Mwh_atr_itm.Mask__qte__none; - if (qte_byte != Byte_ascii.Null) - qte_tid = qte_byte == Byte_ascii.Quote ? Mwh_atr_itm.Mask__qte_qute : Mwh_atr_itm.Mask__qte__apos; - int atr_uid = atr_mgr.Add(nde_uid, nde_tid, atr_valid, false, key_exists, atr_bgn, atr_end, key_bgn, key_end, key_bry, eql_pos, qte_tid, val_bgn, val_end, val_bry); - - // handle repeated atrs - if (atr_valid) { - int repeated_uid = repeated_atrs_hash.Get_as_int_or(key_bry, -1); - if (repeated_uid != -1) { - repeated_atrs_hash.Del(key_bry); - atr_mgr.Set_repeated(repeated_uid); - } - repeated_atrs_hash.Add_bry_int(key_bry, atr_uid); - } - - // reset temp variables - area = Area__atr_limbo; qte_byte = Byte_ascii.Null; - atr_bgn = key_bgn = val_bgn = key_end = val_end = eql_pos = -1; - key_bfr_on = val_bfr_on = ws_is_before_val = false; - } private static final Hash_adp_bry xnde_hash = Hash_adp_bry.ci_a7() .Add_bry_bry(Xop_xnde_tag_.Tag_nowiki.Name_bry()) .Add_bry_bry(Xop_xnde_tag_.Tag_noinclude.Name_bry()) diff --git a/400_xowa/src/gplx/xowa/parsers/htmls/Mwh_atr_parser_fxt.java b/400_xowa/src/gplx/xowa/parsers/htmls/Mwh_atr_parser_fxt.java index ee4fed408..081926361 100644 --- a/400_xowa/src/gplx/xowa/parsers/htmls/Mwh_atr_parser_fxt.java +++ b/400_xowa/src/gplx/xowa/parsers/htmls/Mwh_atr_parser_fxt.java @@ -21,7 +21,7 @@ class Mwh_atr_parser_fxt { private final Mwh_atr_parser parser = new Mwh_atr_parser(); private final Mwh_doc_wkr__atr_bldr wkr = new Mwh_doc_wkr__atr_bldr(); public Mwh_atr_itm Make_pair(String key, String val) {return new Mwh_atr_itm(Bry_.Empty, Bool_.Y, Bool_.N, Bool_.Y, -1, -1, -1, -1, Bry_.new_u8(key) , -1, -1, Bry_.new_u8(val) , -1, -1);} - public Mwh_atr_itm Make_name(String key) {return new Mwh_atr_itm(Bry_.Empty, Bool_.Y, Bool_.N, Bool_.N, -1, -1, -1, -1, Bry_.new_u8(key) , -1, -1, null , -1, -1);} + public Mwh_atr_itm Make_name(String key) {return new Mwh_atr_itm(Bry_.Empty, Bool_.Y, Bool_.N, Bool_.N, -1, -1, -1, -1, Bry_.new_u8(key) , -1, -1, Bry_.new_u8(key) , -1, -1);} public Mwh_atr_itm Make_fail(int bgn, int end) {return new Mwh_atr_itm(Bry_.Empty, Bool_.N, Bool_.N, Bool_.N, bgn, end, -1, -1, null , -1, -1, null , -1, -1);} public void Test_val_as_int(String raw, int expd) { byte[] src = Bry_.new_u8(raw); @@ -44,14 +44,14 @@ class Mwh_atr_parser_fxt { for (int i = 0; i < len; ++i) { To_bfr(expd_bfr, i < expd_len ? expd_ary[i] : null, actl_bfr, i < actl_len ? actl_ary[i] : null); } - Tfds.Eq_str_lines(expd_bfr.Xto_str_and_clear(), actl_bfr.Xto_str_and_clear()); + Tfds.Eq_str_lines(expd_bfr.To_str_and_clear(), actl_bfr.To_str_and_clear()); } private void To_bfr(Bry_bfr expd_bfr, Mwh_atr_itm expd_itm, Bry_bfr actl_bfr, Mwh_atr_itm actl_itm) { To_bfr__main(expd_bfr, expd_itm); To_bfr__main(actl_bfr, actl_itm); To_bfr__head(expd_bfr, expd_itm); To_bfr__head(actl_bfr, actl_itm); - if (expd_itm.Atr_bgn() != -1) { + if (expd_itm != null && expd_itm.Atr_bgn() != -1) { To_bfr__atr_rng(expd_bfr, expd_itm); To_bfr__atr_rng(actl_bfr, actl_itm); } @@ -74,26 +74,3 @@ class Mwh_atr_parser_fxt { bfr.Add_str_a7("rng:").Add_int_variable(itm.Atr_bgn()).Add_byte_semic().Add_int_variable(itm.Atr_end()).Add_byte_nl(); } } -class Mwh_doc_wkr__atr_bldr implements Mwh_doc_wkr { - private final List_adp list = List_adp_.new_(); - public Hash_adp_bry Nde_regy() {return null;} - public void On_atr_each(Mwh_atr_parser mgr, byte[] src, int nde_tid, boolean valid, boolean repeated, boolean key_exists, byte[] key_bry, byte[] val_bry_manual, int[] data_ary, int itm_idx) { - int atr_bgn = data_ary[itm_idx + Mwh_atr_mgr.Idx_atr_bgn]; - int atr_end = data_ary[itm_idx + Mwh_atr_mgr.Idx_atr_end]; - int key_bgn = data_ary[itm_idx + Mwh_atr_mgr.Idx_key_bgn]; - int key_end = data_ary[itm_idx + Mwh_atr_mgr.Idx_key_end]; - int val_bgn = data_ary[itm_idx + Mwh_atr_mgr.Idx_val_bgn]; - int val_end = data_ary[itm_idx + Mwh_atr_mgr.Idx_val_end]; - int eql_pos = data_ary[itm_idx + Mwh_atr_mgr.Idx_eql_pos]; - int qte_tid = data_ary[itm_idx + Mwh_atr_mgr.Idx_atr_utl]; - qte_tid = Mwh_atr_itm.Calc_qte_tid(qte_tid); - Mwh_atr_itm atr = new Mwh_atr_itm(src, valid, repeated, key_exists, atr_bgn, atr_end, key_bgn, key_end, key_bry, val_bgn, val_end, val_bry_manual, eql_pos, qte_tid); - list.Add(atr); - } - public void On_txt_end(Mwh_doc_parser mgr, byte[] src, int nde_tid, int itm_bgn, int itm_end) {} - public void On_nde_head_bgn(Mwh_doc_parser mgr, byte[] src, int nde_tid, int key_bgn, int key_end) {} - public void On_nde_head_end(Mwh_doc_parser mgr, byte[] src, int nde_tid, int itm_bgn, int itm_end, boolean inline) {} - public void On_nde_tail_end(Mwh_doc_parser mgr, byte[] src, int nde_tid, int itm_bgn, int itm_end) {} - public void On_comment_end (Mwh_doc_parser mgr, byte[] src, int nde_tid, int itm_bgn, int itm_end) {} - public Mwh_atr_itm[] To_atr_ary() {return (Mwh_atr_itm[])list.To_ary_and_clear(Mwh_atr_itm.class);} -} diff --git a/400_xowa/src/gplx/xowa/parsers/htmls/Mwh_atr_parser_tst.java b/400_xowa/src/gplx/xowa/parsers/htmls/Mwh_atr_parser_tst.java index b742db996..34cf4fcb6 100644 --- a/400_xowa/src/gplx/xowa/parsers/htmls/Mwh_atr_parser_tst.java +++ b/400_xowa/src/gplx/xowa/parsers/htmls/Mwh_atr_parser_tst.java @@ -22,6 +22,7 @@ public class Mwh_atr_parser_tst { @Test public void Pair__quote__double() {fxt.Test_parse("a=\"b\"" , fxt.Make_pair("a" , "b"));} @Test public void Pair__quote__single() {fxt.Test_parse("a='b'" , fxt.Make_pair("a" , "b"));} @Test public void Pair__quote__none() {fxt.Test_parse("a=b" , fxt.Make_pair("a" , "b"));} + @Test public void Pair__quote__none__amp() {fxt.Test_parse("a=&bc" , fxt.Make_pair("a" , "&bc"));} @Test public void Pair__empty() {fxt.Test_parse("a=''" , fxt.Make_pair("a" , ""));} @Test public void Pair__key_w_underline() {fxt.Test_parse("a_b=c" , fxt.Make_pair("a_b" , "c"));} @@ -46,18 +47,32 @@ public class Mwh_atr_parser_tst { @Test public void Many__quote__apos() {fxt.Test_parse("a='b' c='d' e='f'" , fxt.Make_pair("a", "b"), fxt.Make_pair("c", "d"), fxt.Make_pair("e", "f"));} @Test public void Many__naked() {fxt.Test_parse("a=b c=d e=f" , fxt.Make_pair("a", "b"), fxt.Make_pair("c", "d"), fxt.Make_pair("e", "f"));} + @Test public void Many__naked__pair() {fxt.Test_parse("a b=c" , fxt.Make_name("a"), fxt.Make_pair("b", "c"));} - @Test public void Val__ws__nl() {fxt.Test_parse("a='b\nc'" , fxt.Make_pair("a", "b c"));} - @Test public void Val__ws__mult() {fxt.Test_parse("a='b c'" , fxt.Make_pair("a", "b c"));} - @Test public void Val__ws__mult_mult() {fxt.Test_parse("a='b c d'" , fxt.Make_pair("a", "b c d"));} // PURPOSE: fix wherein 1st-gobble gobbled rest of spaces (was b cd) - @Test public void Val__apos() {fxt.Test_parse("a=\"b c'd\"" , fxt.Make_pair("a", "b c'd"));} // PURPOSE: fix wherein apos was gobbled up; PAGE:en.s:Alice's_Adventures_in_Wonderland; DATE:2013-11-22 - @Test public void Val__apos_2() {fxt.Test_parse("a=\"b'c d\"" , fxt.Make_pair("a", "b'c d"));} // PURPOSE: fix wherein apos was causing "'b'c d"; PAGE:en.s:Grimm's_Household_Tales,_Volume_1; DATE:2013-12-22 + @Test public void Quote__ws__nl() {fxt.Test_parse("a='b\nc'" , fxt.Make_pair("a", "b c"));} + @Test public void Quote__ws__mult() {fxt.Test_parse("a='b c'" , fxt.Make_pair("a", "b c"));} + @Test public void Quote__ws__mult_mult() {fxt.Test_parse("a='b c d'" , fxt.Make_pair("a", "b c d"));} // PURPOSE: fix wherein 1st-gobble gobbled rest of spaces (was b cd) + @Test public void Quote__apos() {fxt.Test_parse("a=\"b c'd\"" , fxt.Make_pair("a", "b c'd"));} // PURPOSE: fix wherein apos was gobbled up; PAGE:en.s:Alice's_Adventures_in_Wonderland; DATE:2013-11-22 + @Test public void Quote__apos_2() {fxt.Test_parse("a=\"b'c d\"" , fxt.Make_pair("a", "b'c d"));} // PURPOSE: fix wherein apos was causing "'b'c d"; PAGE:en.s:Grimm's_Household_Tales,_Volume_1; DATE:2013-12-22 +// @Test public void Quote__angle() {fxt.Test_parse("a='<'" , fxt.Make_fail(0, 5));} // PURPOSE: "<" inside quotes is always invalid + @Test public void Quote__invalid() {fxt.Test_parse("a='b'c" , fxt.Make_fail(0, 6));} - @Test public void Nowiki__val() {fxt.Test_parse("a='b'" , fxt.Make_pair("a", "b").Atr_rng(0, 13));} - @Test public void Nowiki__key() {fxt.Test_parse("a=b" , fxt.Make_pair("a", "b").Atr_rng(8, 11));} - @Test public void Nowiki__key_2() {fxt.Test_parse("abc=d" , fxt.Make_pair("abc", "d").Atr_rng(0, 22));} - @Test public void Nowiki__key_3() {fxt.Test_parse("a=\"b\"" , fxt.Make_pair("a", "b").Atr_rng(0, 22));} // EX:fr.w:{{Portail|Transpédia|Californie}} - @Test public void Nowiki__quote() {fxt.Test_parse("a=\"bcdef\"", fxt.Make_pair("a", "bcdef"));} + @Test public void Nowiki__atr() {fxt.Test_parse("a=b" , fxt.Make_pair("a", "b").Atr_rng(8, 20));} + @Test public void Nowiki__key() {fxt.Test_parse("abc=d" , fxt.Make_pair("abc", "d").Atr_rng(0, 22));} + @Test public void Nowiki__eql() {fxt.Test_parse("a=\"b\"" , fxt.Make_pair("a", "b").Atr_rng(0, 22));} // EX:fr.w:{{Portail|Transpédia|Californie}} + @Test public void Nowiki__val__naked() {fxt.Test_parse("a=bcd" , fxt.Make_pair("a", "bcd").Atr_rng(0, 22));} + @Test public void Nowiki__val__quote() {fxt.Test_parse("a='b'" , fxt.Make_pair("a", "b").Atr_rng(0, 22));} + @Test public void Nowiki__val__quote_2() {fxt.Test_parse("a=\"bcdef\"", fxt.Make_pair("a", "bcdef"));} @Test public void Val__as_int() {fxt.Test_val_as_int("-123" , -123);} + +// @Test public void Embedded() { // PURPOSE: handle html inside attrib; PAGE:en.w:Economy_of_Greece DATE:2015-10-15 +// fxt.Test_parse("title='[1] c'" +// , fxt.Make_fail(0, 11) // "title='[1]" invalid b/c no ws after ' +// , fxt.Make_fail(89, 91) // " c'" invalid b/c name (c) cannot have apos +// ); +// } } diff --git a/400_xowa/src/gplx/xowa/parsers/htmls/Mwh_doc_itm.java b/400_xowa/src/gplx/xowa/parsers/htmls/Mwh_doc_itm.java index 0949678fb..d6666612f 100644 --- a/400_xowa/src/gplx/xowa/parsers/htmls/Mwh_doc_itm.java +++ b/400_xowa/src/gplx/xowa/parsers/htmls/Mwh_doc_itm.java @@ -21,5 +21,5 @@ class Mwh_doc_itm { public int Itm_tid() {return itm_tid;} private final int itm_tid; public byte[] Itm_bry() {return itm_bry;} private final byte[] itm_bry; public int Nde_tid() {return nde_tid;} private final int nde_tid; - public static final int Itm_tid__txt = 0, Itm_tid__nde_head = 1, Itm_tid__nde_tail = 2, Itm_tid__comment = 3; + public static final int Itm_tid__txt = 0, Itm_tid__nde_head = 1, Itm_tid__nde_tail = 2, Itm_tid__comment = 3, Itm_tid__entity = 4; } diff --git a/400_xowa/src/gplx/xowa/parsers/htmls/Mwh_doc_parser.java b/400_xowa/src/gplx/xowa/parsers/htmls/Mwh_doc_parser.java index e4612bb61..5cb02a578 100644 --- a/400_xowa/src/gplx/xowa/parsers/htmls/Mwh_doc_parser.java +++ b/400_xowa/src/gplx/xowa/parsers/htmls/Mwh_doc_parser.java @@ -17,11 +17,12 @@ along with this program. If not, see . */ package gplx.xowa.parsers.htmls; import gplx.*; import gplx.xowa.*; import gplx.xowa.parsers.*; import gplx.core.primitives.*; -import gplx.xowa.parsers.xndes.*; +import gplx.xowa.parsers.amps.*; import gplx.xowa.parsers.xndes.*; public class Mwh_doc_parser { private final Mwh_doc_mgr dom_mgr = new Mwh_doc_mgr(16); private final Mwh_atr_parser atr_parser = new Mwh_atr_parser(); private final List_adp nde_stack = List_adp_.new_(); + private final Xop_amp_mgr amp_mgr = Xop_amp_mgr.Instance; private final Xop_tkn_mkr tkn_mkr = new Xop_tkn_mkr(); private byte[] src; private int src_end; private Mwh_doc_wkr wkr; private Hash_adp_bry nde_regy; @@ -34,11 +35,28 @@ public class Mwh_doc_parser { int pos = txt_bgn = src_bgn; nde_uid = cur_nde_tid = -1; cur_nde = null; + while (pos < src_end) { - if (src[pos] == Byte_ascii.Angle_bgn) // "<": possible nde start - pos = Parse_nde(pos); - else // else, just increment - ++pos; + byte b = src[pos]; + switch (b) { + case Byte_ascii.Angle_bgn: // "<": possible nde start + pos = Parse_nde(pos); + break; + case Byte_ascii.Amp: // "&": check for entity; EX:   in sr-ec -> sr-el + Xop_tkn_itm tkn = amp_mgr.Parse_as_tkn(tkn_mkr, src, src_end, pos, pos + 1); + if (tkn == null) + ++pos; + else { + wkr.On_txt_end(this, src, cur_nde_tid, txt_bgn, pos); + wkr.On_entity_end(this, src, cur_nde_tid, tkn.Src_bgn(), tkn.Src_end()); + pos = tkn.Src_end(); + txt_bgn = pos; + } + break; + default: // else, just increment + ++pos; + break; + } } if (src_end != txt_bgn) wkr.On_txt_end(this, src, cur_nde_tid, txt_bgn, pos); } @@ -142,10 +160,45 @@ public class Mwh_doc_parser { break; case Nde_end_tid__ws: case Nde_end_tid__slash: - case Nde_end_tid__backslash: // handled above - pos = atr_parser.Parse(wkr, nde_uid, cur_nde_tid, src, pos, src_end); - nde_end_tid = atr_parser.Nde_end_tid(); - txt_bgn = pos; + case Nde_end_tid__backslash: + // look for ">" or "/>" + int tmp_pos = pos, atrs_end = src_end, head_end = src_end; + boolean loop = true; + while (loop) { + byte b = src[tmp_pos]; + switch (b) { + // angle_end -> stop iterating + case Byte_ascii.Angle_end: + atrs_end = tmp_pos; + head_end = tmp_pos + 1; + nde_end_tid = Mwh_doc_parser.Nde_end_tid__gt; + loop = false; + break; + // slash -> check for "/>" or " / " + case Byte_ascii.Slash: + int nxt_pos = tmp_pos + 1; + if (nxt_pos == src_end) { + nde_end_tid = Mwh_doc_parser.Nde_end_tid__invalid; + loop = false; + } + else if (src[nxt_pos] == Byte_ascii.Angle_end) { + atrs_end = tmp_pos; + head_end = tmp_pos + 2; + nde_end_tid = Mwh_doc_parser.Nde_end_tid__inline; + loop = false; + } + break; + } + if (loop) { + ++tmp_pos; + if (tmp_pos == src_end) break; + } + else + break; + } + atr_parser.Parse(wkr, nde_uid, cur_nde_tid, src, pos, atrs_end); + pos = head_end; + txt_bgn = head_end; break; } switch (nde_end_tid) { diff --git a/400_xowa/src/gplx/xowa/parsers/htmls/Mwh_doc_parser_fxt.java b/400_xowa/src/gplx/xowa/parsers/htmls/Mwh_doc_parser_fxt.java index 10e788f2c..ce5e72c28 100644 --- a/400_xowa/src/gplx/xowa/parsers/htmls/Mwh_doc_parser_fxt.java +++ b/400_xowa/src/gplx/xowa/parsers/htmls/Mwh_doc_parser_fxt.java @@ -23,6 +23,7 @@ class Mwh_doc_parser_fxt { public Mwh_doc_itm Make_txt (String raw) {return new Mwh_doc_itm(Mwh_doc_itm.Itm_tid__txt , -1, Bry_.new_u8(raw));} public Mwh_doc_itm Make_txt (String raw, int nde_tid) {return new Mwh_doc_itm(Mwh_doc_itm.Itm_tid__txt , nde_tid, Bry_.new_u8(raw));} public Mwh_doc_itm Make_comment (String raw) {return new Mwh_doc_itm(Mwh_doc_itm.Itm_tid__comment , -1, Bry_.new_u8(raw));} + public Mwh_doc_itm Make_entity (String raw) {return new Mwh_doc_itm(Mwh_doc_itm.Itm_tid__entity , -1, Bry_.new_u8(raw));} public Mwh_doc_itm Make_nde_head(String raw) {return new Mwh_doc_itm(Mwh_doc_itm.Itm_tid__nde_head , -1, Bry_.new_u8(raw));} public Mwh_doc_itm Make_nde_tail(String raw) {return new Mwh_doc_itm(Mwh_doc_itm.Itm_tid__nde_tail , -1, Bry_.new_u8(raw));} public void Test_parse(String raw, Mwh_doc_itm... expd) { @@ -41,7 +42,7 @@ class Mwh_doc_parser_fxt { for (int i = 0; i < len; ++i) { To_bfr(expd_bfr, i < expd_len ? expd_ary[i] : null, actl_bfr, i < actl_len ? actl_ary[i] : null); } - Tfds.Eq_str_lines(expd_bfr.Xto_str_and_clear(), actl_bfr.Xto_str_and_clear()); + Tfds.Eq_str_lines(expd_bfr.To_str_and_clear(), actl_bfr.To_str_and_clear()); } private void To_bfr(Bry_bfr expd_bfr, Mwh_doc_itm expd_itm, Bry_bfr actl_bfr, Mwh_doc_itm actl_itm) { To_bfr__main(expd_bfr, expd_itm); To_bfr__main(actl_bfr, actl_itm); @@ -62,12 +63,13 @@ class Mwh_doc_parser_fxt { class Mwh_doc_wkr__itm_bldr implements Mwh_doc_wkr { private final List_adp list = List_adp_.new_(); public Hash_adp_bry Nde_regy() {return nde_regy;} private final Hash_adp_bry nde_regy = Mwh_doc_wkr_.Nde_regy__mw(); - public void On_atr_each (Mwh_atr_parser mgr, byte[] src, int nde_tid, boolean valid, boolean repeated, boolean key_exists, byte[] key_bry, byte[] val_bry_manual, int[] itm_ary, int itm_idx) {} + public void On_atr_each (Mwh_atr_parser mgr, byte[] src, int nde_tid, boolean valid, boolean repeated, boolean key_exists, byte[] key_bry, byte[] val_bry_manual, int[] itm_ary, int itm_idx) {} public void On_txt_end (Mwh_doc_parser mgr, byte[] src, int nde_tid, int itm_bgn, int itm_end) {list.Add(new Mwh_doc_itm(Mwh_doc_itm.Itm_tid__txt , nde_tid, Bry_.Mid(src, itm_bgn, itm_end)));} public void On_nde_head_bgn (Mwh_doc_parser mgr, byte[] src, int nde_tid, int key_bgn, int key_end) {} public void On_nde_head_end (Mwh_doc_parser mgr, byte[] src, int nde_tid, int itm_bgn, int itm_end, boolean inline) {list.Add(new Mwh_doc_itm(Mwh_doc_itm.Itm_tid__nde_head , nde_tid, Bry_.Mid(src, itm_bgn, itm_end)));} public void On_nde_tail_end (Mwh_doc_parser mgr, byte[] src, int nde_tid, int itm_bgn, int itm_end) {list.Add(new Mwh_doc_itm(Mwh_doc_itm.Itm_tid__nde_tail , nde_tid, Bry_.Mid(src, itm_bgn, itm_end)));} public void On_comment_end (Mwh_doc_parser mgr, byte[] src, int nde_tid, int itm_bgn, int itm_end) {list.Add(new Mwh_doc_itm(Mwh_doc_itm.Itm_tid__comment , nde_tid, Bry_.Mid(src, itm_bgn, itm_end)));} + public void On_entity_end (Mwh_doc_parser mgr, byte[] src, int nde_tid, int itm_bgn, int itm_end) {list.Add(new Mwh_doc_itm(Mwh_doc_itm.Itm_tid__entity , nde_tid, Bry_.Mid(src, itm_bgn, itm_end)));} public Mwh_doc_itm[] To_atr_ary() {return (Mwh_doc_itm[])list.To_ary_and_clear(Mwh_doc_itm.class);} } diff --git a/400_xowa/src/gplx/xowa/parsers/htmls/Mwh_doc_parser_tst.java b/400_xowa/src/gplx/xowa/parsers/htmls/Mwh_doc_parser_tst.java index 43a38b1e1..89bf4322c 100644 --- a/400_xowa/src/gplx/xowa/parsers/htmls/Mwh_doc_parser_tst.java +++ b/400_xowa/src/gplx/xowa/parsers/htmls/Mwh_doc_parser_tst.java @@ -21,6 +21,7 @@ public class Mwh_doc_parser_tst { private final Mwh_doc_parser_fxt fxt = new Mwh_doc_parser_fxt(); @Test public void Text__basic() {fxt.Test_parse("abc" , fxt.Make_txt("abc"));} @Test public void Comment() {fxt.Test_parse("ac" , fxt.Make_txt("a"), fxt.Make_comment(""), fxt.Make_txt("c"));} + @Test public void Entity() {fxt.Test_parse("a b" , fxt.Make_txt("a"), fxt.Make_entity(" "), fxt.Make_txt("b"));} @Test public void Fail__inline_eos() {fxt.Test_parse("ad" , fxt.Make_txt("ad"));} @Test public void Node__inline() {fxt.Test_parse("ac" , fxt.Make_txt("a"), fxt.Make_nde_head("") , fxt.Make_txt("c"));} diff --git a/400_xowa/src/gplx/xowa/parsers/htmls/Mwh_doc_wkr.java b/400_xowa/src/gplx/xowa/parsers/htmls/Mwh_doc_wkr.java index 76dc02ff2..649893b88 100644 --- a/400_xowa/src/gplx/xowa/parsers/htmls/Mwh_doc_wkr.java +++ b/400_xowa/src/gplx/xowa/parsers/htmls/Mwh_doc_wkr.java @@ -24,4 +24,5 @@ public interface Mwh_doc_wkr { void On_nde_head_end(Mwh_doc_parser mgr, byte[] src, int nde_tid, int itm_bgn, int itm_end, boolean inline); void On_nde_tail_end(Mwh_doc_parser mgr, byte[] src, int nde_tid, int itm_bgn, int itm_end); void On_comment_end (Mwh_doc_parser mgr, byte[] src, int nde_tid, int itm_bgn, int itm_end); + void On_entity_end (Mwh_doc_parser mgr, byte[] src, int nde_tid, int itm_bgn, int itm_end); } diff --git a/400_xowa/src/gplx/xowa/parsers/htmls/Mwh_doc_wkr__atr_bldr.java b/400_xowa/src/gplx/xowa/parsers/htmls/Mwh_doc_wkr__atr_bldr.java new file mode 100644 index 000000000..78f776d6d --- /dev/null +++ b/400_xowa/src/gplx/xowa/parsers/htmls/Mwh_doc_wkr__atr_bldr.java @@ -0,0 +1,43 @@ +/* +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.htmls; import gplx.*; import gplx.xowa.*; import gplx.xowa.parsers.*; +public class Mwh_doc_wkr__atr_bldr implements Mwh_doc_wkr { + private final List_adp list = List_adp_.new_(); + public Hash_adp_bry Nde_regy() {return null;} + public void On_atr_each(Mwh_atr_parser mgr, byte[] src, int nde_tid, boolean valid, boolean repeated, boolean key_exists, byte[] key_bry, byte[] val_bry_manual, int[] data_ary, int itm_idx) { + int atr_bgn = data_ary[itm_idx + Mwh_atr_mgr.Idx_atr_bgn]; + int atr_end = data_ary[itm_idx + Mwh_atr_mgr.Idx_atr_end]; + int key_bgn = data_ary[itm_idx + Mwh_atr_mgr.Idx_key_bgn]; + int key_end = data_ary[itm_idx + Mwh_atr_mgr.Idx_key_end]; + int val_bgn = data_ary[itm_idx + Mwh_atr_mgr.Idx_val_bgn]; + int val_end = data_ary[itm_idx + Mwh_atr_mgr.Idx_val_end]; + int eql_pos = data_ary[itm_idx + Mwh_atr_mgr.Idx_eql_pos]; + int qte_tid = data_ary[itm_idx + Mwh_atr_mgr.Idx_atr_utl]; + qte_tid = Mwh_atr_itm_.Calc_qte_tid(qte_tid); + if (!key_exists) val_bry_manual = key_bry; + Mwh_atr_itm atr = new Mwh_atr_itm(src, valid, repeated, key_exists, atr_bgn, atr_end, key_bgn, key_end, key_bry, val_bgn, val_end, val_bry_manual, eql_pos, qte_tid); + list.Add(atr); + } + public void On_txt_end(Mwh_doc_parser mgr, byte[] src, int nde_tid, int itm_bgn, int itm_end) {} + public void On_nde_head_bgn(Mwh_doc_parser mgr, byte[] src, int nde_tid, int key_bgn, int key_end) {} + public void On_nde_head_end(Mwh_doc_parser mgr, byte[] src, int nde_tid, int itm_bgn, int itm_end, boolean inline) {} + public void On_nde_tail_end(Mwh_doc_parser mgr, byte[] src, int nde_tid, int itm_bgn, int itm_end) {} + public void On_comment_end (Mwh_doc_parser mgr, byte[] src, int nde_tid, int itm_bgn, int itm_end) {} + public void On_entity_end (Mwh_doc_parser mgr, byte[] src, int nde_tid, int itm_bgn, int itm_end) {} + public Mwh_atr_itm[] To_atr_ary() {return (Mwh_atr_itm[])list.To_ary_and_clear(Mwh_atr_itm.class);} +} \ No newline at end of file diff --git a/400_xowa/src/gplx/xowa/parsers/lists/HierPosAryBldr.java b/400_xowa/src/gplx/xowa/parsers/lists/HierPosAryBldr.java index d1faa03d0..50f5218b7 100644 --- a/400_xowa/src/gplx/xowa/parsers/lists/HierPosAryBldr.java +++ b/400_xowa/src/gplx/xowa/parsers/lists/HierPosAryBldr.java @@ -53,7 +53,7 @@ public class HierPosAryBldr { public String To_str() { String_bldr sb = String_bldr_.new_(); for (int i = 0; i < aryIdx; i++) - sb.Add_spr_unless_first(Int_.Xto_str(ary[i]), " ", i); + sb.Add_spr_unless_first(Int_.To_str(ary[i]), " ", i); return sb.To_str(); } int[] ary; int aryIdx = -1; int root = -1; 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 90e0caf64..407235a61 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 @@ -20,7 +20,7 @@ import gplx.core.btries.*; import gplx.xowa.langs.*; public class Xop_colon_lxr implements Xop_lxr { 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 Init_by_lang(Xol_lang_itm 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(); @@ -37,5 +37,5 @@ public class Xop_colon_lxr implements Xop_lxr { ctx.Subs_add(root, tkn_mkr.Colon(bgn_pos, cur_pos)); return cur_pos; } - public static final Xop_colon_lxr _ = new Xop_colon_lxr(); + public static final Xop_colon_lxr Instance = new Xop_colon_lxr(); } 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 3b91121b4..4835a2b12 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 @@ -20,9 +20,9 @@ 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 Init_by_lang(Xol_lang_itm 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() {} + public static final Xop_list_lxr Instance = new Xop_list_lxr(); Xop_list_lxr() {} } 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 c0c3f65cf..af6b48922 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 @@ -17,8 +17,8 @@ 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.langs.htmls.encoders.*; -import gplx.xowa.html.*; import gplx.xowa.html.hrefs.*; -import gplx.xowa.urls.*; +import gplx.xowa.htmls.*; import gplx.xowa.htmls.hrefs.*; +import gplx.xowa.apps.urls.*; public class Xoh_lnke_wtr { // private Xoae_app app; public Xoh_lnke_wtr(Xowe_wiki wiki) {}// this.app = wiki.Appe();} 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 c68b96528..ff05d66d4 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 @@ -20,8 +20,8 @@ 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 Init_by_lang(Xol_lang_itm 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() {} + public static final Xop_lnke_end_lxr Instance = 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 058d04829..fd9946a47 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 @@ -28,11 +28,11 @@ public class Xop_lnke_lxr implements Xop_lxr { Gfo_protocol_itm itm = ary[i]; Ctor_lxr_add(core_trie, itm.Key_w_colon_bry(), itm.Tid()); } - core_trie.Add(Bry_relative_1, new Xop_lnke_lxr(Xop_lnke_tkn.Lnke_typ_brack, Xoa_consts.Url_relative_prefix, Gfo_protocol_itm.Tid_relative_1)); - core_trie.Add(Bry_relative_2, new Xop_lnke_lxr(Xop_lnke_tkn.Lnke_typ_brack, Xoa_consts.Url_relative_prefix, Gfo_protocol_itm.Tid_relative_2)); + core_trie.Add(Bry_relative_1, new Xop_lnke_lxr(Xop_lnke_tkn.Lnke_typ_brack, Gfo_protocol_itm.Bry_relative, Gfo_protocol_itm.Tid_relative_1)); + core_trie.Add(Bry_relative_2, new Xop_lnke_lxr(Xop_lnke_tkn.Lnke_typ_brack, Gfo_protocol_itm.Bry_relative, Gfo_protocol_itm.Tid_relative_2)); 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 Init_by_lang(Xol_lang_itm 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)); @@ -42,5 +42,5 @@ public class Xop_lnke_lxr implements Xop_lxr { if (this.tid == Gfo_protocol_itm.Tid_xowa && !ctx.Wiki().Sys_cfg().Xowa_proto_enabled()) return ctx.Lxr_make_txt_(cur_pos); return ctx.Lnke().MakeTkn_bgn(ctx, tkn_mkr, root, src, src_len, bgn_pos, cur_pos, protocol, tid, lnke_typ); } - public static final Xop_lnke_lxr _ = new Xop_lnke_lxr(); Xop_lnke_lxr() {} + public static final Xop_lnke_lxr Instance = new Xop_lnke_lxr(); Xop_lnke_lxr() {} } 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 9f7ae6faa..ab3dcc1e5 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 @@ -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.xowa.urls.*; +import gplx.core.net.*; import gplx.xowa.apps.urls.*; import gplx.xowa.apps.progs.*; import gplx.xowa.wikis.xwikis.*; public class Xop_lnke_wkr implements Xop_ctx_wkr { public void Ctor_ctx(Xop_ctx ctx) {url_parser = ctx.Wiki().Utl__url_parser().Url_parser();} Gfo_url_parser url_parser; Gfo_url_site_data site_data = new Gfo_url_site_data(); @@ -288,7 +288,7 @@ public class Xop_lnke_wkr implements Xop_ctx_wkr { byte[] rhs_dlm_bry = Bry_quote; if (lhs_dlm_pos - proto_end_pos > 0) { Bry_bfr bfr = ctx.App().Utl__bfr_mkr().Get_k004(); - rhs_dlm_bry = bfr.Add(Bry_quote).Add_mid(src, proto_end_pos, lhs_dlm_pos).Xto_bry_and_clear(); + rhs_dlm_bry = bfr.Add(Bry_quote).Add_mid(src, proto_end_pos, lhs_dlm_pos).To_bry_and_clear(); bfr.Mkr_rls(); } 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); diff --git a/400_xowa/src/gplx/xowa/parsers/lnkes/Xop_lnke_wkr_brack_tst.java b/400_xowa/src/gplx/xowa/parsers/lnkes/Xop_lnke_wkr_brack_tst.java index a1b65cac0..9f94e197e 100644 --- a/400_xowa/src/gplx/xowa/parsers/lnkes/Xop_lnke_wkr_brack_tst.java +++ b/400_xowa/src/gplx/xowa/parsers/lnkes/Xop_lnke_wkr_brack_tst.java @@ -61,7 +61,7 @@ public class Xop_lnke_wkr_brack_tst { )); } @Test public void Encode_xwiki() { // PURPOSE: href title and args should always be encoded; PAGE:en.w:List_of_Category_A_listed_buildings_in_West_Lothian DATE:2014-07-15 - fxt.App().Usere().Wiki().Xwiki_mgr().Add_full(Bry_.new_a7("commons.wikimedia.org"), Bry_.new_a7("commons.wikimedia.org")); + fxt.App().Usere().Wiki().Xwiki_mgr().Add_by_atrs(Bry_.new_a7("commons.wikimedia.org"), Bry_.new_a7("commons.wikimedia.org")); fxt.Test_parse_page_wiki_str // encode page ( "[http://commons.wikimedia.org/%22%3E_A B]" , "B" // '%22%3E' not '">' diff --git a/400_xowa/src/gplx/xowa/parsers/lnkes/Xop_lnke_wkr_relative_tst.java b/400_xowa/src/gplx/xowa/parsers/lnkes/Xop_lnke_wkr_relative_tst.java index 0365bf5ef..1516c1772 100644 --- a/400_xowa/src/gplx/xowa/parsers/lnkes/Xop_lnke_wkr_relative_tst.java +++ b/400_xowa/src/gplx/xowa/parsers/lnkes/Xop_lnke_wkr_relative_tst.java @@ -36,7 +36,7 @@ public class Xop_lnke_wkr_relative_tst { fxt.Test_parse_page_wiki_str("[//en.wikipedia.org/wiki/Category:A A]", "A"); } @Test public void Relurl() { - fxt.App().Usere().Wiki().Xwiki_mgr().Add_full(Bry_.new_a7("en.wikipedia.org"), Bry_.new_a7("en.wikipedia.org")); + fxt.App().Usere().Wiki().Xwiki_mgr().Add_by_atrs(Bry_.new_a7("en.wikipedia.org"), Bry_.new_a7("en.wikipedia.org")); fxt.Test_parse_page_wiki_str("[[//en.wikipedia.org/ a]]", "[a]"); } } diff --git a/400_xowa/src/gplx/xowa/parsers/lnkes/Xop_lnke_wkr_xwiki_tst.java b/400_xowa/src/gplx/xowa/parsers/lnkes/Xop_lnke_wkr_xwiki_tst.java index f876c6fd7..1a6ca5d3e 100644 --- a/400_xowa/src/gplx/xowa/parsers/lnkes/Xop_lnke_wkr_xwiki_tst.java +++ b/400_xowa/src/gplx/xowa/parsers/lnkes/Xop_lnke_wkr_xwiki_tst.java @@ -20,11 +20,11 @@ import org.junit.*; public class Xop_lnke_wkr_xwiki_tst { @Before public void init() {fxt.Reset();} private Xop_fxt fxt = new Xop_fxt(); @Test public void Xwiki() { - fxt.App().Usere().Wiki().Xwiki_mgr().Add_full(Bry_.new_a7("en.wikipedia.org"), Bry_.new_a7("en.wikipedia.org")); + fxt.App().Usere().Wiki().Xwiki_mgr().Add_by_atrs(Bry_.new_a7("en.wikipedia.org"), Bry_.new_a7("en.wikipedia.org")); fxt.Test_parse_page_wiki_str("[http://en.wikipedia.org/wiki/A a]", "a"); } @Test public void Xwiki_relative() { - fxt.App().Usere().Wiki().Xwiki_mgr().Add_full(Bry_.new_a7("en.wikipedia.org"), Bry_.new_a7("en.wikipedia.org")); + fxt.App().Usere().Wiki().Xwiki_mgr().Add_by_atrs(Bry_.new_a7("en.wikipedia.org"), Bry_.new_a7("en.wikipedia.org")); fxt.Test_parse_page_wiki_str("[//en.wikipedia.org/ a]", "a"); } @Test public void Xwiki_qarg() {// DATE:2013-02-02 @@ -32,12 +32,12 @@ public class Xop_lnke_wkr_xwiki_tst { fxt.Test_parse_page_wiki_str("http://en.wikipedia.org/wiki/Special:Allpages?from=Earth", "http://en.wikipedia.org/wiki/Special:Allpages?from=Earth"); } @Test public void Lang_prefix() { - fxt.App().Usere().Wiki().Xwiki_mgr().Add_full(Bry_.new_a7("en.wikipedia.org"), Bry_.new_a7("en.wikipedia.org")); - fxt.Wiki().Xwiki_mgr().Add_full(Bry_.new_a7("fr"), Bry_.new_a7("fr.wikipedia.org")); + fxt.App().Usere().Wiki().Xwiki_mgr().Add_by_atrs(Bry_.new_a7("en.wikipedia.org"), Bry_.new_a7("en.wikipedia.org")); + fxt.Wiki().Xwiki_mgr().Add_by_atrs(Bry_.new_a7("fr"), Bry_.new_a7("fr.wikipedia.org")); fxt.Test_parse_page_wiki_str("[http://en.wikipedia.org/wiki/fr:A a]", "a"); } @Test public void Xwiki_query_arg() { - fxt.App().Usere().Wiki().Xwiki_mgr().Add_full(Bry_.new_a7("en.wikipedia.org"), Bry_.new_a7("en.wikipedia.org")); + fxt.App().Usere().Wiki().Xwiki_mgr().Add_by_atrs(Bry_.new_a7("en.wikipedia.org"), Bry_.new_a7("en.wikipedia.org")); fxt.Test_parse_page_wiki_str("[http://en.wikipedia.org/wiki/A?action=edit a]", "a"); } @Test public void Ignore_proto() { // PURPOSE: handle other protocols; PAGE:uk.w:Маскалі; DATE:2015-07-28 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 accd12c5d..36aaecf9a 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 @@ -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.net.*; import gplx.xowa.wikis.xwikis.*; -import gplx.xowa.html.*; import gplx.xowa.html.lnkis.*; import gplx.xowa.html.hrefs.*; +import gplx.xowa.htmls.*; import gplx.xowa.htmls.lnkis.*; import gplx.xowa.htmls.hrefs.*; public class Xop_link_parser { public byte[] Html_xowa_ttl() {return html_xowa_ttl;} private byte[] html_xowa_ttl; public byte Html_anchor_cls() {return html_anchor_cls;} private byte html_anchor_cls; @@ -44,7 +44,7 @@ public class Xop_link_parser { } tmp_bfr.Add(raw); // dump everything } - raw = tmp_bfr.Xto_bry_and_clear(); + raw = tmp_bfr.To_bry_and_clear(); html_anchor_cls = Xoh_lnki_consts.Tid_a_cls_none; html_anchor_rel = Xoh_lnki_consts.Tid_a_rel_nofollow; break; @@ -56,7 +56,7 @@ public class Xop_link_parser { html_xowa_ttl = Bry_.Mid(raw, slash_pos + Int_.Const_dlm_len, raw.length); } else // next char is not slash; assume xfer_itm refers to ns; EX:File:A.png - raw = tmp_bfr.Add(Xoh_href_.Bry__wiki).Add(raw).Xto_bry_and_clear(); + raw = tmp_bfr.Add(Xoh_href_.Bry__wiki).Add(raw).To_bry_and_clear(); break; default: // is page only; EX: Abc if (Bry_.Len_eq_0(raw)) // NOTE: handle blank link; EX: [[File:Loudspeaker.svg|11px|link=|alt=play]] @@ -67,7 +67,7 @@ public class Xop_link_parser { tmp_bfr.Clear(); return null; } - raw = tmp_bfr.Xto_bry_and_clear(); + raw = tmp_bfr.To_bry_and_clear(); } break; } 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 96ba2ddea..cbf07e30a 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,13 +17,13 @@ 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.langs.numbers.*; +import gplx.xowa.langs.*; import gplx.xowa.langs.kwds.*; 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); private final Btrie_bwd_mgr px_trie = Btrie_bwd_mgr.cs_(); private final Btrie_fast_mgr size_trie = Btrie_fast_mgr.cs(); private int lnki_w, lnki_h; - public void Evt_lang_changed(Xol_lang lang) { + public void Evt_lang_changed(Xol_lang_itm lang) { Bry_bfr tmp_bfr = int_bfr; Byte_obj_ref rslt = Byte_obj_ref.zero_(); Xol_kwd_mgr mgr = lang.Kwd_mgr(); @@ -103,7 +103,7 @@ public class Xop_lnki_arg_parser { } case Key_dim_x: { if (mode_width) { - this.lnki_w = int_bfr.XtoIntAndClear(-1); + this.lnki_w = int_bfr.To_int_and_clear(-1); mode_width = false; break; } @@ -111,7 +111,7 @@ public class Xop_lnki_arg_parser { } } } - int dim = int_bfr.XtoIntAndClear(-1); + int dim = int_bfr.To_int_and_clear(-1); if (mode_width) this.lnki_w = dim; else this.lnki_h = dim; return Tid_dim; @@ -126,7 +126,7 @@ public class Xop_lnki_arg_parser { if (list == null && Env_.Mode_testing()) return; // TEST: allows partial parsing of $magicWords size_trie.Clear(); px_trie.Clear(); for (int i = 0; i < 10; i++) - size_trie.Add((byte)(i + Char_.AsciiZero), Byte_obj_val.new_(Key_dim_num)); + size_trie.Add((byte)(i + Byte_ascii.Num_0), Byte_obj_val.new_(Key_dim_num)); int len = digit_mgr.Len(); // NOTE: add non-english numbers; EX: ۲۰۰px; DATE:2015-07-18 for (int i = 0; i < len; ++i) { KeyVal kv = digit_mgr.Get_at(i); 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 f6470c35f..10e14306c 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 @@ -21,7 +21,7 @@ import gplx.xowa.parsers.tmpls.*; public class Xop_lnki_lxr_bgn implements Xop_lxr { 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 Init_by_lang(Xol_lang_itm 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(); @@ -37,7 +37,7 @@ public class Xop_lnki_lxr_bgn implements Xop_lxr { ctx.Subs_add_and_stack(root, lnki); return cur_pos; } - public static final Xop_lnki_lxr_bgn _ = new Xop_lnki_lxr_bgn(); + public static final Xop_lnki_lxr_bgn Instance = new Xop_lnki_lxr_bgn(); } class Xop_lnki_size {public static final int None = 0, Width = 1, Height = 2, WidthHeight = 4, Upright = 8;} /* 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 321329c41..712f94ce3 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 @@ -21,8 +21,8 @@ import gplx.xowa.parsers.tmpls.*; public class Xop_lnki_lxr_end implements Xop_lxr { 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 Init_by_lang(Xol_lang_itm 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(); + public static final Xop_lnki_lxr_end Instance = 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 de21e40a3..01c5c510a 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 @@ -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.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.files.*; import gplx.xowa.htmls.*; import gplx.xowa.htmls.lnkis.*; import gplx.xowa.xtns.pfuncs.ttls.*; +import gplx.xowa.wikis.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_wkr.java b/400_xowa/src/gplx/xowa/parsers/lnkis/Xop_lnki_wkr.java index 7bec482bd..a5b68cc4a 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,11 +17,11 @@ 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.primitives.*; -import gplx.xowa.nss.*; +import gplx.xowa.wikis.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 { - private Arg_bldr arg_bldr = Arg_bldr._; + private Arg_bldr arg_bldr = Arg_bldr.Instance; private Number_parser number_parser = new Number_parser(); private Sites_regy_mgr sites_regy_mgr; public void Ctor_ctx(Xop_ctx ctx) {} 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 fb2c8468b..34841ff64 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 @@ -18,7 +18,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.*; -import gplx.xowa.nss.*; +import gplx.xowa.wikis.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_ { @@ -77,7 +77,7 @@ public class Xop_lnki_wkr_ { if (ttl_in_xwiki == null) return ttl; // occurs if ttl is bad in xwiki; EX: [[en:]] return ttl_in_xwiki.Ns().Id_file() ? ttl_in_xwiki : ttl; } - public static int Chk_for_tail(Xol_lang lang, byte[] src, int cur_pos, int src_len, Xop_lnki_tkn lnki) { + public static int Chk_for_tail(Xol_lang_itm lang, byte[] src, int cur_pos, int src_len, Xop_lnki_tkn lnki) { int bgn_pos = cur_pos; Btrie_slim_mgr lnki_trail = lang.Lnki_trail_mgr().Trie(); while (true) { // loop b/c there can be multiple consecutive lnki_trail_chars; EX: [[A]]bcde 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 61c532553..c91eeddac 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,8 +17,8 @@ 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.*; import gplx.xowa.langs.cases.*; -import gplx.xowa.nss.*; +import gplx.xowa.langs.*; import gplx.xowa.langs.cases.*; import gplx.xowa.langs.funcs.*; import gplx.xowa.langs.lnki_trails.*; +import gplx.xowa.wikis.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(); 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 f0ef72c0f..5a4c23e77 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 gplx.xowa.nss.*; +import org.junit.*; import gplx.xowa.wikis.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 2b91e3220..7bf750ad9 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 @@ -51,7 +51,7 @@ public class Xop_lnki_wkr__uncommon_tst { fxt.Test_html_wiki_frag("[[File:A.png|upright=1.333333333333333333333333333333333333333333333333333333333333333333333]]", " width=\"0\" height=\"0\""); // failure would print out original lnki } @Test public void Persian() { // PURPOSE: handle il8n nums; EX:[[پرونده:Shahbazi 3.jpg|۲۰۰px]] -> 200px; PAGE:fa.w:فهرست_آثار_علیرضا_شاپور_شهبازی; DATE:2015-07-18 - Xol_lang lang = fxt.Wiki().Lang(); + Xol_lang_itm lang = fxt.Wiki().Lang(); fxt.App().Gfs_mgr().Run_str_for(lang, gplx.xowa.xtns.pfuncs.numbers.Pf_formatnum_fa_tst.Persian_numbers_gfs); lang.Evt_lang_changed(); // force rebuild of size_trie fxt.Test_html_wiki_frag("[[File:A.png|۲۰۰px]]", " width=\"200\" height=\"0\""); diff --git a/400_xowa/src/gplx/xowa/parsers/lnkis/Xop_lnki_wkr__xwiki_tst.java b/400_xowa/src/gplx/xowa/parsers/lnkis/Xop_lnki_wkr__xwiki_tst.java index efd67ef0c..90d7b0326 100644 --- a/400_xowa/src/gplx/xowa/parsers/lnkis/Xop_lnki_wkr__xwiki_tst.java +++ b/400_xowa/src/gplx/xowa/parsers/lnkis/Xop_lnki_wkr__xwiki_tst.java @@ -51,7 +51,7 @@ public class Xop_lnki_wkr__xwiki_tst { } @Test public void Xwiki_not_registered() { fxt.App().Usere().Wiki().Xwiki_mgr().Clear(); - fxt.Wiki().Xwiki_mgr().Add_full(Bry_.new_a7("test"), Bry_.new_a7("test.wikimedia.org")); // register alias only, but not in user_wiki + fxt.Wiki().Xwiki_mgr().Add_by_atrs(Bry_.new_a7("test"), Bry_.new_a7("test.wikimedia.org")); // register alias only, but not in user_wiki fxt.Test_parse_page_wiki_str ( "[[test:A|A]]", String_.Concat_lines_nl_skip_last ( "A" diff --git a/400_xowa/src/gplx/xowa/parsers/lnkis/cfgs/Xoc_xwiki_repo_mgr.java b/400_xowa/src/gplx/xowa/parsers/lnkis/cfgs/Xoc_xwiki_repo_mgr.java index 60ecb35bf..f5b751c91 100644 --- a/400_xowa/src/gplx/xowa/parsers/lnkis/cfgs/Xoc_xwiki_repo_mgr.java +++ b/400_xowa/src/gplx/xowa/parsers/lnkis/cfgs/Xoc_xwiki_repo_mgr.java @@ -17,7 +17,7 @@ along with this program. If not, see . */ package gplx.xowa.parsers.lnkis.cfgs; import gplx.*; import gplx.xowa.*; import gplx.xowa.parsers.*; import gplx.xowa.parsers.lnkis.*; public class Xoc_xwiki_repo_mgr implements GfoInvkAble { - private Ordered_hash hash = Ordered_hash_.new_bry_(); + private Ordered_hash hash = Ordered_hash_.New_bry(); private Xowe_wiki wiki; public Xoc_xwiki_repo_mgr(Xowe_wiki wiki) {this.wiki = wiki;} public boolean Has(byte[] abrv) { 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 39a25dd29..620638670 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 @@ -18,7 +18,7 @@ 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.core.primitives.*; import gplx.xowa.wikis.data.tbls.*; -import gplx.xowa.langs.vnts.*; import gplx.xowa.gui.views.*; import gplx.xowa.pages.*; import gplx.xowa.html.hdumps.core.*; +import gplx.xowa.langs.vnts.*; import gplx.xowa.guis.views.*; import gplx.xowa.wikis.pages.*; import gplx.xowa.htmls.hdumps.core.*; import gplx.xowa.parsers.tmpls.*; public class Xog_redlink_mgr implements GfoInvkAble { private Xog_win_itm win; private Xog_html_itm html_itm; private Xowe_wiki wiki; private Xoae_page page; @@ -29,7 +29,7 @@ public class Xog_redlink_mgr implements GfoInvkAble { this.redlink_lnki_list = page.Redlink_lnki_list(); this.lnki_list = redlink_lnki_list.Lnki_list(); this.thread_id = redlink_lnki_list.Thread_id(); - this.log_enabled = log_enabled; this.usr_dlg = log_enabled ? Gfo_usr_dlg_.I : Gfo_usr_dlg_.Noop; + this.log_enabled = log_enabled; this.usr_dlg = log_enabled ? Gfo_usr_dlg_.Instance : Gfo_usr_dlg_.Noop; } public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { if (ctx.Match(k, Invk_run)) Redlink(); @@ -40,7 +40,7 @@ public class Xog_redlink_mgr implements GfoInvkAble { synchronized (this) { // NOTE: attempt to eliminate random IndexBounds errors; DATE:2014-09-02 if (redlink_lnki_list.Disabled()) return; List_adp work_list = List_adp_.new_(); - Ordered_hash page_hash = Ordered_hash_.new_bry_(); + Ordered_hash page_hash = Ordered_hash_.New_bry(); page_hash.Clear(); // NOTE: do not clear in Page_bgn, else will fail b/c of threading; EX: Open Page -> Preview -> Save; DATE:2013-11-17 work_list.Clear(); int len = lnki_list.Count(); @@ -79,7 +79,7 @@ public class Xog_redlink_mgr implements GfoInvkAble { Xowd_page_itm db_page = (Xowd_page_itm)page_hash.Get_by(full_db); if (db_page == null) continue; // pages shouldn't be null, but just in case if (!db_page.Exists()) { - String lnki_id = Xopg_redlink_lnki_list.Lnki_id_prefix + Int_.Xto_str(lnki.Html_uid()); + String lnki_id = Xopg_redlink_lnki_list.Lnki_id_prefix + Int_.To_str(lnki.Html_uid()); if (variants_enabled) { Xowd_page_itm vnt_page = vnt_mgr.Convert_mgr().Convert_ttl(wiki, lnki.Ttl()); if (vnt_page != null) { @@ -97,13 +97,13 @@ public class Xog_redlink_mgr implements GfoInvkAble { if (win.Usr_dlg().Canceled()) return; if (redlink_lnki_list.Thread_id() != thread_id) return; int uid = lnki.Html_uid(); - gplx.xowa.files.gui.Js_img_mgr.Update_link_missing(html_itm, Xopg_redlink_lnki_list.Lnki_id_prefix + Int_.Xto_str(uid)); + gplx.xowa.files.gui.Js_img_mgr.Update_link_missing(html_itm, Xopg_redlink_lnki_list.Lnki_id_prefix + Int_.To_str(uid)); redlink_mgr.Add(uid); ++redlink_count; } } if (log_enabled) - usr_dlg.Log_many("", "", "redlink.redlink_end: redlinks_run=~{0} links=~{1}", redlink_count, bfr == null ? String_.Empty : bfr.Xto_str_and_clear()); + usr_dlg.Log_many("", "", "redlink.redlink_end: redlinks_run=~{0} links=~{1}", redlink_count, bfr == null ? String_.Empty : bfr.To_str_and_clear()); } } public static final Xog_redlink_mgr Null = new Xog_redlink_mgr(); Xog_redlink_mgr() {} @@ -118,6 +118,6 @@ class Xog_redlink_wkr { } } public static void Redlink(Xog_html_itm html_itm, int uid) { - gplx.xowa.files.gui.Js_img_mgr.Update_link_missing(html_itm, Xopg_redlink_lnki_list.Lnki_id_prefix + Int_.Xto_str(uid)); + gplx.xowa.files.gui.Js_img_mgr.Update_link_missing(html_itm, Xopg_redlink_lnki_list.Lnki_id_prefix + Int_.To_str(uid)); } } 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 d7b5d62eb..3d3d6e652 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,10 +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.lnkis.redlinks; import gplx.*; import gplx.xowa.*; import gplx.xowa.parsers.*; import gplx.xowa.parsers.lnkis.*; -import gplx.xowa.nss.*; +import gplx.xowa.wikis.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 + private int lnki_idx = gplx.xowa.htmls.lnkis.Xoh_lnki_wtr.Lnki_id_min; // NOTE: default to 1, not 0, b/c 0 is ignored by wtr; DATE:2014-10-09 public Xopg_redlink_lnki_list(boolean ttl_is_module) { // never redlink in Module ns; particularly since Lua has multi-line comments for [[ ]] this.disabled = ttl_is_module; } diff --git a/400_xowa/src/gplx/xowa/parsers/logs/Xop_log_basic_wkr.java b/400_xowa/src/gplx/xowa/parsers/logs/Xop_log_basic_wkr.java index 7e766ceb5..8a1eab922 100644 --- a/400_xowa/src/gplx/xowa/parsers/logs/Xop_log_basic_wkr.java +++ b/400_xowa/src/gplx/xowa/parsers/logs/Xop_log_basic_wkr.java @@ -17,7 +17,7 @@ along with this program. If not, see . */ package gplx.xowa.parsers.logs; import gplx.*; import gplx.xowa.*; import gplx.xowa.parsers.*; import gplx.dbs.*; -import gplx.xowa.parsers.xndes.*; +import gplx.xowa.parsers.xndes.*; import gplx.xowa.parsers.htmls.*; public class Xop_log_basic_wkr implements GfoInvkAble { private Xop_log_mgr log_mgr; private Xop_log_basic_tbl log_tbl; private boolean save_page_ttl, save_log_time, save_args_len, save_args_str; @@ -25,7 +25,7 @@ public class Xop_log_basic_wkr implements GfoInvkAble { public Xop_log_basic_wkr(Xop_log_mgr log_mgr, Xop_log_basic_tbl log_tbl) {this.log_mgr = log_mgr; this.log_tbl = log_tbl;} public boolean Log_bgn(Xoae_page page, byte[] src, Xop_xnde_tkn xnde) {return true;} public void Log_end_xnde(Xoae_page page, int log_tid, byte[] src, Xop_xnde_tkn xnde_tkn) { - Xop_xatr_itm[] atrs_ary = xnde_tkn.Atrs_ary(); + Mwh_atr_itm[] atrs_ary = xnde_tkn.Atrs_ary(); Log_end(page, Null_log_bgn, log_tid, Null_log_msg, src , xnde_tkn.Src_bgn(), xnde_tkn.Src_end() , atrs_ary == null ? 0 : atrs_ary.length 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 13f576025..c1c9e73ad 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 @@ -21,7 +21,7 @@ import gplx.xowa.parsers.paras.*; public class Xop_comm_lxr implements Xop_lxr { 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 Init_by_lang(Xol_lang_itm 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; @@ -91,7 +91,7 @@ public class Xop_comm_lxr implements Xop_lxr { } public static final byte[] Bgn_ary = new byte[] {60, 33, 45, 45}, /**/ private static final int End_len = End_ary.length; - public static final Xop_comm_lxr _ = new Xop_comm_lxr(); Xop_comm_lxr() {} + public static final Xop_comm_lxr Instance = new Xop_comm_lxr(); Xop_comm_lxr() {} private static final String Xowa_skip_text_str = "XOWA_SKIP"; private static final byte[] Xowa_skip_text_bry = Bry_.new_a7(Xowa_skip_text_str); public static final byte[] Xowa_skip_comment_bry = Bry_.new_a7(""); 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 476e7f6e4..185c2796e 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 @@ -20,10 +20,10 @@ import gplx.core.btries.*; import gplx.xowa.langs.*; public class Xop_cr_lxr implements Xop_lxr { 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 Init_by_lang(Xol_lang_itm 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 } - public static final Xop_cr_lxr _ = new Xop_cr_lxr(); Xop_cr_lxr() {} + public static final Xop_cr_lxr Instance = new Xop_cr_lxr(); Xop_cr_lxr() {} } 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 aea4a6c88..a0a3d5006 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 @@ -22,7 +22,7 @@ public class Xop_eq_lxr implements Xop_lxr { public Xop_eq_lxr(boolean tmpl_mode) {this.tmpl_mode = tmpl_mode;} boolean tmpl_mode; 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 Init_by_lang(Xol_lang_itm 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.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 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 313e81c3e..edf850b77 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 @@ -21,7 +21,7 @@ import gplx.xowa.parsers.xndes.*; 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 Init_by_lang(Xol_lang_itm 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 @@ -42,5 +42,5 @@ public class Xop_hr_lxr implements Xop_lxr { return cur_pos; } private static final byte Hook_byt = Byte_ascii.Dash; public static final int Hr_len = 4; - public static final Xop_hr_lxr _ = new Xop_hr_lxr(); Xop_hr_lxr() {} + public static final Xop_hr_lxr Instance = new Xop_hr_lxr(); Xop_hr_lxr() {} } 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 index 9b59da883..012967b32 100644 --- a/400_xowa/src/gplx/xowa/parsers/miscs/Xop_macro_lxr.java +++ b/400_xowa/src/gplx/xowa/parsers/miscs/Xop_macro_lxr.java @@ -21,7 +21,7 @@ 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 Init_by_lang(Xol_lang_itm 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); @@ -31,5 +31,5 @@ public class Xop_macro_lxr implements Xop_lxr { ctx.Subs_add(root, tkn_mkr.Tab(bgn_pos, cur_pos)); return cur_pos; } - public static final Xop_tab_lxr _ = new Xop_tab_lxr(); + public static final Xop_tab_lxr Instance = 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 9e2ed34b2..3d33e9ed4 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 @@ -21,7 +21,7 @@ import gplx.xowa.parsers.tblws.*; import gplx.xowa.parsers.lnkis.*; import gplx. public class Xop_pipe_lxr implements Xop_lxr { 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 Init_by_lang(Xol_lang_itm 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; @@ -62,11 +62,6 @@ public class Xop_pipe_lxr implements Xop_lxr { Xop_tblw_wkr.Atrs_make(ctx, src, root, ctx.Tblw(), cur_tkn, Bool_.N); return cur_pos; } - case 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; case Xop_tkn_itm_.Tid_lnki: Xop_lnki_tkn lnki = (Xop_lnki_tkn)ctx.Stack_get_last(); // BLOCK:invalid_ttl_check if ( lnki.Pipe_count_is_zero() @@ -81,5 +76,5 @@ public class Xop_pipe_lxr implements Xop_lxr { return cur_pos; } } - public static final Xop_pipe_lxr _ = new Xop_pipe_lxr(); + public static final Xop_pipe_lxr Instance = new Xop_pipe_lxr(); } 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 a3aa9700b..ca9085a69 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 @@ -20,12 +20,12 @@ import gplx.core.btries.*; import gplx.xowa.langs.*; public class Xop_space_lxr implements Xop_lxr { 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 Init_by_lang(Xol_lang_itm 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.Space); ctx.Subs_add(root, tkn_mkr.Space(root, bgn_pos, cur_pos)); return cur_pos; } - public static final Xop_space_lxr _ = new Xop_space_lxr(); + public static final Xop_space_lxr Instance = new Xop_space_lxr(); } 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 b0ca3f0bd..555a3a1dc 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 @@ -20,7 +20,7 @@ import gplx.core.btries.*; import gplx.xowa.langs.*; public class Xop_tab_lxr implements Xop_lxr { 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 Init_by_lang(Xol_lang_itm 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); @@ -30,5 +30,5 @@ public class Xop_tab_lxr implements Xop_lxr { ctx.Subs_add(root, tkn_mkr.Tab(bgn_pos, cur_pos)); return cur_pos; } - public static final Xop_tab_lxr _ = new Xop_tab_lxr(); + public static final Xop_tab_lxr Instance = new Xop_tab_lxr(); } 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 2ef6d79a7..e37793369 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,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.xowa.langs.*; -import gplx.xowa.html.tocs.*; +import gplx.core.btries.*; +import gplx.xowa.langs.*; import gplx.xowa.langs.kwds.*; +import gplx.xowa.htmls.tocs.*; public class Xop_under_lxr implements Xop_lxr { private Btrie_mgr words_trie_ci, words_trie_cs; 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) { + public void Init_by_lang(Xol_lang_itm lang, Btrie_fast_mgr core_trie) { Xol_kwd_mgr kwd_mgr = lang.Kwd_mgr(); int under_kwds_len = under_kwds.length; Xop_under_lxr lxr = new Xop_under_lxr(); @@ -56,7 +57,7 @@ public class Xop_under_lxr implements Xop_lxr { if (kwd_case_match) // cs; add word directly to trie core_trie.Add(kwd_bry, word_lxr); else { // NOTE: next part is imprecise; XOWA parser is cs, but kwd is ci; for now, just add all upper and all lower - Gfo_usr_dlg_.I.Warn_many("", "", "under keyword does not start with __; id=~{0} key=~{1} word=~{2}", kwd_id, String_.new_u8(kwd_grp.Key()), String_.new_u8(kwd_bry)); + Gfo_usr_dlg_.Instance.Warn_many("", "", "under keyword does not start with __; id=~{0} key=~{1} word=~{2}", kwd_id, String_.new_u8(kwd_grp.Key()), String_.new_u8(kwd_bry)); core_trie.Add(lang.Case_mgr().Case_build_lower(kwd_bry), word_lxr); core_trie.Add(lang.Case_mgr().Case_build_upper(kwd_bry), word_lxr); } @@ -110,14 +111,14 @@ public class Xop_under_lxr implements Xop_lxr { default: break; // ignore anything else } } - public static final Xop_under_lxr _ = new Xop_under_lxr(); Xop_under_lxr() {} + public static final Xop_under_lxr Instance = new Xop_under_lxr(); Xop_under_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 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 Init_by_lang(Xol_lang_itm 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 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 13c566733..cf64ab390 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 gplx.xowa.langs.*; +import org.junit.*; import gplx.xowa.langs.*; import gplx.xowa.langs.kwds.*; public class Xop_under_lxr_tst { private Xop_fxt fxt = new Xop_fxt(); @Before public void init() {fxt.Reset();} @@ -98,7 +98,7 @@ public class Xop_under_lxr_tst { fxt.Test_parse_page_all_str("__DISAMBIG__", ""); } @Test public void Nocontentconvert() { // simple test; test for flag only; DATE:2014-02-06 - gplx.xowa.pages.Xopg_html_data html_data = fxt.Page().Html_data(); + gplx.xowa.wikis.pages.Xopg_html_data html_data = fxt.Page().Html_data(); Tfds.Eq(html_data.Lang_convert_content(), true); Tfds.Eq(html_data.Lang_convert_title(), true); fxt.Test_parse_page_all_str("__NOCONTENTCONVERT__ __NOTITLECONVERT__", " "); @@ -140,20 +140,20 @@ public class Xop_under_lxr_tst { fxt.Init_para_n_(); } @Test public void Hook_alt() { // PURPOSE: ja wikis use alternate __; DATE:2014-03-04 - Xowe_wiki wiki = fxt.Wiki(); Xol_lang lang = wiki.Lang(); + Xowe_wiki wiki = fxt.Wiki(); Xol_lang_itm lang = wiki.Lang(); fxt.Init_lang_kwds(lang, Xol_kwd_grp_.Id_toc, true, "__TOC__"); 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(); + Xowe_wiki wiki = fxt.Wiki(); Xol_lang_itm lang = wiki.Lang(); fxt.Init_lang_kwds(lang, Xol_kwd_grp_.Id_toc, false, "__TOC__"); 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"); } @Test public void Utf8_ci() { // PURPOSE: case-insensitive UTF8; DATE:2014-07-10 - Xowe_wiki wiki = fxt.Wiki(); Xol_lang lang = wiki.Lang(); + Xowe_wiki wiki = fxt.Wiki(); Xol_lang_itm lang = wiki.Lang(); lang.Case_mgr_u8_(); fxt.Init_lang_kwds(lang, Xol_kwd_grp_.Id_toc, false, "__AÉI__"); wiki.Parser_mgr().Main().Init_by_lang(lang); @@ -161,21 +161,21 @@ public class Xop_under_lxr_tst { fxt.Test_parse_page_all_str("a__aéi__b", "ab"); } @Test public void Utf8_ci_asymmetric() { // PURPOSE: case-insensitive UTF8; asymmetric; DATE:2014-07-10 - Xowe_wiki wiki = fxt.Wiki(); Xol_lang lang = wiki.Lang(); + Xowe_wiki wiki = fxt.Wiki(); Xol_lang_itm 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_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(); + Xowe_wiki wiki = fxt.Wiki(); Xol_lang_itm lang = wiki.Lang(); fxt.Init_lang_kwds(lang, Xol_kwd_grp_.Id_toc , Bool_.Y, "__TOC__"); 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 } @Test public void Ascii_cs_ci() { // PURPOSE: test simultaneous cs and ci; DATE:2014-07-11 - Xowe_wiki wiki = fxt.Wiki(); Xol_lang lang = wiki.Lang(); + Xowe_wiki wiki = fxt.Wiki(); Xol_lang_itm 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_mgr().Main().Init_by_lang(lang); 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 a7aaf04ef..eb632a61a 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 @@ -21,7 +21,7 @@ import gplx.xowa.parsers.lists.*; import gplx.xowa.parsers.tblws.*; import gplx. public class Xop_nl_lxr implements Xop_lxr { 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 Init_by_lang(Xol_lang_itm 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 @@ -113,5 +113,5 @@ public class Xop_nl_lxr implements Xop_lxr { } return Bry_.NotFound; } - public static final Xop_nl_lxr _ = new Xop_nl_lxr(); Xop_nl_lxr() {} + public static final Xop_nl_lxr Instance = new Xop_nl_lxr(); Xop_nl_lxr() {} } 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 e5cb79e9f..b6c195ca3 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 @@ -21,7 +21,7 @@ import gplx.xowa.parsers.tblws.*; public class Xop_nl_tab_lxr implements Xop_lxr { 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 Init_by_lang(Xol_lang_itm 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_find_.Find_fwd_while_space_or_tab(src, cur_pos, src_len); @@ -49,5 +49,5 @@ public class Xop_nl_tab_lxr implements Xop_lxr { ctx.Subs_add(root, tkn_mkr.Tab(cur_pos - 1, cur_pos)); return cur_pos; } - public static final Xop_nl_tab_lxr _ = new Xop_nl_tab_lxr(); Xop_nl_tab_lxr() {} + public static final Xop_nl_tab_lxr Instance = new Xop_nl_tab_lxr(); Xop_nl_tab_lxr() {} } diff --git a/400_xowa/src/gplx/xowa/parsers/paras/Xop_para_wkr_pre_tst.java b/400_xowa/src/gplx/xowa/parsers/paras/Xop_para_wkr_pre_tst.java index 3e32ff8bf..5ab74fee3 100644 --- a/400_xowa/src/gplx/xowa/parsers/paras/Xop_para_wkr_pre_tst.java +++ b/400_xowa/src/gplx/xowa/parsers/paras/Xop_para_wkr_pre_tst.java @@ -236,9 +236,9 @@ public class Xop_para_wkr_pre_tst { ), String_.Concat_lines_nl ( "

    " // this is wrong, but will be stripped by tidy , "

    " - , "
    "
    +		, " 
    "
     		, " a"
    -		, "
    " + , "
    " , "" , "


    " // also wrong, but leave for now , "

    " 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 d4922cd04..fba99ca8f 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 @@ -21,7 +21,7 @@ import gplx.xowa.parsers.lists.*; import gplx.xowa.parsers.tblws.*; import gplx. public class Xop_pre_lxr implements Xop_lxr { 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 Init_by_lang(Xol_lang_itm 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 @@ -75,7 +75,7 @@ public class Xop_pre_lxr implements Xop_lxr { } return ctx.Para().Process_pre(ctx, tkn_mkr, root, src, src_len, bgn_pos, cur_pos, txt_pos); } - public static final Xop_pre_lxr _ = new Xop_pre_lxr(); Xop_pre_lxr() {} + public static final Xop_pre_lxr Instance = new Xop_pre_lxr(); Xop_pre_lxr() {} private static final byte[] Hook_space = new byte[] {Byte_ascii.Nl, Byte_ascii.Space}; } /* 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 54c6b5f35..716a35138 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 @@ -44,7 +44,7 @@ public class Xop_tblw_lxr implements Xop_lxr { ctx.Stack_add(lnki_tkn); // push lnki back onto stack; TODO: combine these 2 lines into 1 // NOTE: this is a "\n|" inside a [[ ]]; must create two tokens for lnki to build correctly; ctx.Subs_add(root, tkn_mkr.NewLine(bgn_pos, bgn_pos + 1, Xop_nl_tkn.Tid_char, 1)); - return Xop_pipe_lxr._.Make_tkn(ctx, tkn_mkr, root, src, src_len, bgn_pos, cur_pos); // NOTE: need to call pipe_lxr in order to invalidate if lnki; DATE:2014-06-06 + return Xop_pipe_lxr.Instance.Make_tkn(ctx, tkn_mkr, root, src, src_len, bgn_pos, cur_pos); // NOTE: need to call pipe_lxr in order to invalidate if lnki; DATE:2014-06-06 } else { // \n| or \n! but no tbl if ( bgn_pos != Xop_parser_.Doc_bgn_bos // avoid ! at BOS @@ -118,7 +118,7 @@ public class Xop_tblw_lxr implements Xop_lxr { return Continue; } public Xop_tblw_lxr(byte wlxr_type) {this.wlxr_type = wlxr_type;} private byte wlxr_type; - public static final Xop_tblw_lxr _ = new Xop_tblw_lxr(); Xop_tblw_lxr() {} + public static final Xop_tblw_lxr Instance = new Xop_tblw_lxr(); Xop_tblw_lxr() {} public void Init_by_wiki(Xowe_wiki wiki, Btrie_fast_mgr core_trie) { core_trie.Add(Hook_tb, new Xop_tblw_lxr(Xop_tblw_wkr.Tblw_type_tb)); core_trie.Add(Hook_te, new Xop_tblw_lxr(Xop_tblw_wkr.Tblw_type_te)); @@ -129,7 +129,7 @@ public class Xop_tblw_lxr implements Xop_lxr { core_trie.Add(Hook_td2, new Xop_tblw_lxr(Xop_tblw_wkr.Tblw_type_td2)); 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 Init_by_lang(Xol_lang_itm 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|+") diff --git a/400_xowa/src/gplx/xowa/parsers/tblws/Xop_tblw_tb_tkn.java b/400_xowa/src/gplx/xowa/parsers/tblws/Xop_tblw_tb_tkn.java index 1a90380aa..4399580c9 100644 --- a/400_xowa/src/gplx/xowa/parsers/tblws/Xop_tblw_tb_tkn.java +++ b/400_xowa/src/gplx/xowa/parsers/tblws/Xop_tblw_tb_tkn.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.tblws; import gplx.*; import gplx.xowa.*; import gplx.xowa.parsers.*; -import gplx.xowa.parsers.xndes.*; +import gplx.xowa.parsers.xndes.*; import gplx.xowa.parsers.htmls.*; public class Xop_tblw_tb_tkn extends Xop_tkn_itm_base implements Xop_tblw_tkn { public Xop_tblw_tb_tkn(int bgn, int end, boolean tblw_xml, boolean auto_created) { this.tblw_xml = tblw_xml; this.Tkn_ini_pos(false, bgn, end); @@ -28,7 +28,7 @@ public class Xop_tblw_tb_tkn extends Xop_tkn_itm_base implements Xop_tblw_tkn { public int Atrs_bgn() {return atrs_bgn;} private int atrs_bgn = Xop_tblw_wkr.Atrs_null; public int Atrs_end() {return atrs_end;} private int atrs_end = -1; public void Atrs_rng_set(int bgn, int end) {this.atrs_bgn = bgn; this.atrs_end = end;} - public Xop_xatr_itm[] Atrs_ary() {return atrs_ary;} public Xop_tblw_tkn Atrs_ary_as_tblw_(Xop_xatr_itm[] v) {atrs_ary = v; return this;} private Xop_xatr_itm[] atrs_ary; + public Mwh_atr_itm[] Atrs_ary() {return atrs_ary;} public Xop_tblw_tkn Atrs_ary_as_tblw_(Mwh_atr_itm[] v) {atrs_ary = v; return this;} private Mwh_atr_itm[] atrs_ary; public boolean Tblw_xml() {return tblw_xml;} private boolean tblw_xml; public void Tblw_xml_(boolean v) {tblw_xml = v;} public int Tblw_subs_len() {return tblw_subs_len;} public void Tblw_subs_len_add_() {++tblw_subs_len;} private int tblw_subs_len; diff --git a/400_xowa/src/gplx/xowa/parsers/tblws/Xop_tblw_tc_tkn.java b/400_xowa/src/gplx/xowa/parsers/tblws/Xop_tblw_tc_tkn.java index 8add17692..cef33d77f 100644 --- a/400_xowa/src/gplx/xowa/parsers/tblws/Xop_tblw_tc_tkn.java +++ b/400_xowa/src/gplx/xowa/parsers/tblws/Xop_tblw_tc_tkn.java @@ -16,14 +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.tblws; import gplx.*; import gplx.xowa.*; import gplx.xowa.parsers.*; -import gplx.xowa.parsers.xndes.*; +import gplx.xowa.parsers.xndes.*; import gplx.xowa.parsers.htmls.*; public class Xop_tblw_tc_tkn extends Xop_tkn_itm_base implements Xop_tblw_tkn { @Override public byte Tkn_tid() {return Xop_tkn_itm_.Tid_tblw_tc;} public int Tblw_tid() {return Xop_xnde_tag_.Tid_caption;} public int Atrs_bgn() {return atrs_bgn;} private int atrs_bgn = Xop_tblw_wkr.Atrs_null; public int Atrs_end() {return atrs_end;} private int atrs_end = -1; public void Atrs_rng_set(int bgn, int end) {this.atrs_bgn = bgn; this.atrs_end = end;} - public Xop_xatr_itm[] Atrs_ary() {return atrs_ary;} public Xop_tblw_tkn Atrs_ary_as_tblw_(Xop_xatr_itm[] v) {atrs_ary = v; return this;} private Xop_xatr_itm[] atrs_ary; + public Mwh_atr_itm[] Atrs_ary() {return atrs_ary;} public Xop_tblw_tkn Atrs_ary_as_tblw_(Mwh_atr_itm[] v) {atrs_ary = v; return this;} private Mwh_atr_itm[] atrs_ary; public boolean Tblw_xml() {return tblw_xml;} private boolean tblw_xml; public int Tblw_subs_len() {return tblw_subs_len;} public void Tblw_subs_len_add_() {++tblw_subs_len;} private int tblw_subs_len; public Xop_tblw_tc_tkn Subs_add_ary(Xop_tkn_itm... ary) {for (Xop_tkn_itm itm : ary) super.Subs_add(itm); return this;} diff --git a/400_xowa/src/gplx/xowa/parsers/tblws/Xop_tblw_td_tkn.java b/400_xowa/src/gplx/xowa/parsers/tblws/Xop_tblw_td_tkn.java index 186d334a7..740f1b9b1 100644 --- a/400_xowa/src/gplx/xowa/parsers/tblws/Xop_tblw_td_tkn.java +++ b/400_xowa/src/gplx/xowa/parsers/tblws/Xop_tblw_td_tkn.java @@ -16,14 +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.tblws; import gplx.*; import gplx.xowa.*; import gplx.xowa.parsers.*; -import gplx.xowa.parsers.xndes.*; +import gplx.xowa.parsers.xndes.*; import gplx.xowa.parsers.htmls.*; public class Xop_tblw_td_tkn extends Xop_tkn_itm_base implements Xop_tblw_tkn { @Override public byte Tkn_tid() {return Xop_tkn_itm_.Tid_tblw_td;} public int Tblw_tid() {return Xop_xnde_tag_.Tid_td;} public int Atrs_bgn() {return atrs_bgn;} private int atrs_bgn = Xop_tblw_wkr.Atrs_null; public int Atrs_end() {return atrs_end;} private int atrs_end = -1; public void Atrs_rng_set(int bgn, int end) {this.atrs_bgn = bgn; this.atrs_end = end;} - public Xop_xatr_itm[] Atrs_ary() {return atrs_ary;} public Xop_tblw_tkn Atrs_ary_as_tblw_(Xop_xatr_itm[] v) {atrs_ary = v; return this;} private Xop_xatr_itm[] atrs_ary; + public Mwh_atr_itm[] Atrs_ary() {return atrs_ary;} public Xop_tblw_tkn Atrs_ary_as_tblw_(Mwh_atr_itm[] v) {atrs_ary = v; return this;} private Mwh_atr_itm[] atrs_ary; public boolean Tblw_xml() {return tblw_xml;} private boolean tblw_xml; public int Tblw_subs_len() {return tblw_subs_len;} public void Tblw_subs_len_add_() {++tblw_subs_len;} private int tblw_subs_len; public Xop_tblw_td_tkn Subs_add_ary(Xop_tkn_itm... ary) {for (Xop_tkn_itm itm : ary) super.Subs_add(itm); return this;} diff --git a/400_xowa/src/gplx/xowa/parsers/tblws/Xop_tblw_th_tkn.java b/400_xowa/src/gplx/xowa/parsers/tblws/Xop_tblw_th_tkn.java index 7face5814..66b688b97 100644 --- a/400_xowa/src/gplx/xowa/parsers/tblws/Xop_tblw_th_tkn.java +++ b/400_xowa/src/gplx/xowa/parsers/tblws/Xop_tblw_th_tkn.java @@ -16,14 +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.tblws; import gplx.*; import gplx.xowa.*; import gplx.xowa.parsers.*; -import gplx.xowa.parsers.xndes.*; +import gplx.xowa.parsers.xndes.*; import gplx.xowa.parsers.htmls.*; public class Xop_tblw_th_tkn extends Xop_tkn_itm_base implements Xop_tblw_tkn { @Override public byte Tkn_tid() {return Xop_tkn_itm_.Tid_tblw_th;} public int Tblw_tid() {return Xop_xnde_tag_.Tid_th;} public int Atrs_bgn() {return atrs_bgn;} private int atrs_bgn = Xop_tblw_wkr.Atrs_null; public int Atrs_end() {return atrs_end;} private int atrs_end = -1; public void Atrs_rng_set(int bgn, int end) {this.atrs_bgn = bgn; this.atrs_end = end;} - public Xop_xatr_itm[] Atrs_ary() {return atrs_ary;} public Xop_tblw_tkn Atrs_ary_as_tblw_(Xop_xatr_itm[] v) {atrs_ary = v; return this;} private Xop_xatr_itm[] atrs_ary; + public Mwh_atr_itm[] Atrs_ary() {return atrs_ary;} public Xop_tblw_tkn Atrs_ary_as_tblw_(Mwh_atr_itm[] v) {atrs_ary = v; return this;} private Mwh_atr_itm[] atrs_ary; public boolean Tblw_xml() {return tblw_xml;} private boolean tblw_xml; public int Tblw_subs_len() {return tblw_subs_len;} public void Tblw_subs_len_add_() {++tblw_subs_len;} private int tblw_subs_len; public Xop_tblw_th_tkn Subs_add_ary(Xop_tkn_itm... ary) {for (Xop_tkn_itm itm : ary) super.Subs_add(itm); return this;} diff --git a/400_xowa/src/gplx/xowa/parsers/tblws/Xop_tblw_tkn.java b/400_xowa/src/gplx/xowa/parsers/tblws/Xop_tblw_tkn.java index 83e58de5c..07c29c448 100644 --- a/400_xowa/src/gplx/xowa/parsers/tblws/Xop_tblw_tkn.java +++ b/400_xowa/src/gplx/xowa/parsers/tblws/Xop_tblw_tkn.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.tblws; import gplx.*; import gplx.xowa.*; import gplx.xowa.parsers.*; -import gplx.xowa.parsers.xndes.*; +import gplx.xowa.parsers.xndes.*; import gplx.xowa.parsers.htmls.*; public interface Xop_tblw_tkn extends Xop_tkn_itm { int Tblw_tid(); boolean Tblw_xml(); @@ -24,5 +24,5 @@ public interface Xop_tblw_tkn extends Xop_tkn_itm { int Atrs_bgn(); int Atrs_end(); void Atrs_rng_set(int bgn, int end); - Xop_xatr_itm[] Atrs_ary(); Xop_tblw_tkn Atrs_ary_as_tblw_(Xop_xatr_itm[] v); + Mwh_atr_itm[] Atrs_ary(); Xop_tblw_tkn Atrs_ary_as_tblw_(Mwh_atr_itm[] v); } diff --git a/400_xowa/src/gplx/xowa/parsers/tblws/Xop_tblw_tr_tkn.java b/400_xowa/src/gplx/xowa/parsers/tblws/Xop_tblw_tr_tkn.java index 2b3b2d25b..ab2d5bd49 100644 --- a/400_xowa/src/gplx/xowa/parsers/tblws/Xop_tblw_tr_tkn.java +++ b/400_xowa/src/gplx/xowa/parsers/tblws/Xop_tblw_tr_tkn.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.tblws; import gplx.*; import gplx.xowa.*; import gplx.xowa.parsers.*; -import gplx.xowa.parsers.xndes.*; +import gplx.xowa.parsers.xndes.*; import gplx.xowa.parsers.htmls.*; public class Xop_tblw_tr_tkn extends Xop_tkn_itm_base implements Xop_tblw_tkn { public Xop_tblw_tr_tkn(int bgn, int end, boolean tblw_xml, boolean auto_created) { this.tblw_xml = tblw_xml; this.Tkn_ini_pos(false, bgn, end); @@ -28,7 +28,7 @@ public class Xop_tblw_tr_tkn extends Xop_tkn_itm_base implements Xop_tblw_tkn { public int Atrs_bgn() {return atrs_bgn;} private int atrs_bgn = Xop_tblw_wkr.Atrs_null; public int Atrs_end() {return atrs_end;} private int atrs_end = -1; public void Atrs_rng_set(int bgn, int end) {this.atrs_bgn = bgn; this.atrs_end = end;} - public Xop_xatr_itm[] Atrs_ary() {return atrs_ary;} public Xop_tblw_tkn Atrs_ary_as_tblw_(Xop_xatr_itm[] v) {atrs_ary = v; return this;} private Xop_xatr_itm[] atrs_ary; + public Mwh_atr_itm[] Atrs_ary() {return atrs_ary;} public Xop_tblw_tkn Atrs_ary_as_tblw_(Mwh_atr_itm[] v) {atrs_ary = v; return this;} private Mwh_atr_itm[] atrs_ary; public boolean Tblw_xml() {return tblw_xml;} private boolean tblw_xml; public int Tblw_subs_len() {return tblw_subs_len;} public void Tblw_subs_len_add_() {++tblw_subs_len;} private int tblw_subs_len; public Xop_tblw_tr_tkn Subs_add_ary(Xop_tkn_itm... ary) {for (Xop_tkn_itm itm : ary) super.Subs_add(itm); return this;} 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 4628058bf..d60f4c982 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 @@ -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.tblws; import gplx.*; import gplx.xowa.*; import gplx.xowa.parsers.*; -import gplx.xowa.parsers.lists.*; import gplx.xowa.parsers.paras.*; import gplx.xowa.parsers.xndes.*; import gplx.xowa.parsers.miscs.*; +import gplx.xowa.parsers.lists.*; import gplx.xowa.parsers.paras.*; import gplx.xowa.parsers.xndes.*; import gplx.xowa.parsers.htmls.*; import gplx.xowa.parsers.miscs.*; public class Xop_tblw_wkr implements Xop_ctx_wkr { private int tblw_te_ignore_count = 0; public boolean Cell_pipe_seen() {return cell_pipe_seen;} public Xop_tblw_wkr Cell_pipe_seen_(boolean v) {cell_pipe_seen = v; return this;} private boolean cell_pipe_seen; // status of 1st cell pipe; EX: \n| a | b | c || -> flag pipe between a and b but ignore b and c @@ -299,7 +299,7 @@ public class Xop_tblw_wkr implements Xop_ctx_wkr { if (atrs_bgn > Xop_tblw_wkr.Atrs_ignore_check) { new_tkn.Atrs_rng_set(atrs_bgn, atrs_end); if (ctx.Parse_tid() == Xop_parser_.Parse_tid_page_wiki) { - Xop_xatr_itm[] atrs = ctx.App().Xatr_parser().Parse(ctx.Msg_log(), src, atrs_bgn, atrs_end); + Mwh_atr_itm[] atrs = ctx.App().Parser_mgr().Xnde__parse_atrs_for_tblw(src, atrs_bgn, atrs_end); new_tkn.Atrs_ary_as_tblw_(atrs); } } @@ -484,7 +484,7 @@ public class Xop_tblw_wkr implements Xop_ctx_wkr { 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); + Mwh_atr_itm[] atrs = ctx.App().Parser_mgr().Xnde__parse_atrs_for_tblw(src, atrs_bgn, atrs_end); prv_tblw.Atrs_ary_as_tblw_(atrs); } wkr.Cell_pipe_seen_(true); diff --git a/400_xowa/src/gplx/xowa/parsers/tblws/Xop_tblw_wkr__uncommon_tst.java b/400_xowa/src/gplx/xowa/parsers/tblws/Xop_tblw_wkr__uncommon_tst.java index ceaac6c0e..311a9b86d 100644 --- a/400_xowa/src/gplx/xowa/parsers/tblws/Xop_tblw_wkr__uncommon_tst.java +++ b/400_xowa/src/gplx/xowa/parsers/tblws/Xop_tblw_wkr__uncommon_tst.java @@ -20,7 +20,7 @@ import org.junit.*; public class Xop_tblw_wkr__uncommon_tst { @Before public void init() {fxt.Reset(); fxt.Init_para_y_();} private Xop_fxt fxt = new Xop_fxt(); @After public void term() {fxt.Init_para_n_();} - @Test public void Tr_pops_entire_stack() { // PURPOSE: in strange cases, tr will pop entire stack; PAGE:en.w:Turks_in_Denmark; DATE:2014-03-02 + @Test public void Tr_pops_entire_stack() { // PURPOSE: in strange cases, tr will pop entire stack; PAGE:en.w:Turks_in_Denmark; DATE:2014-03-02 fxt.Test_parse_page_all_str(String_.Concat_lines_nl_skip_last ( "{|" , "a" diff --git a/400_xowa/src/gplx/xowa/parsers/tmpls/Arg_bldr.java b/400_xowa/src/gplx/xowa/parsers/tmpls/Arg_bldr.java index 8120fd94c..031b30053 100644 --- a/400_xowa/src/gplx/xowa/parsers/tmpls/Arg_bldr.java +++ b/400_xowa/src/gplx/xowa/parsers/tmpls/Arg_bldr.java @@ -190,7 +190,7 @@ public class Arg_bldr { // itm.Dat_ary_(dat_end == dat_bgn ? Bry_.Empty : Bry_.Mid(src, dat_bgn, dat_end)); itm.Itm_static_(itm_is_static); } - public static final Arg_bldr _ = new Arg_bldr(); Arg_bldr() {} + public static final Arg_bldr Instance = new Arg_bldr(); Arg_bldr() {} } /* NOTE_1:mark tkn ignore unless wkr is prm; 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 44ff16fce..5c9e7ada6 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 @@ -20,12 +20,12 @@ import gplx.core.btries.*; import gplx.xowa.langs.*; public class Xop_brack_bgn_lxr implements Xop_lxr { 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 Init_by_lang(Xol_lang_itm 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); return cur_pos; } - public static final Xop_brack_bgn_lxr _ = new Xop_brack_bgn_lxr(); Xop_brack_bgn_lxr() {} + public static final Xop_brack_bgn_lxr Instance = new Xop_brack_bgn_lxr(); Xop_brack_bgn_lxr() {} } 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 0b76390a3..afcc208c0 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 @@ -20,7 +20,7 @@ import gplx.core.btries.*; import gplx.xowa.langs.*; public class Xop_brack_end_lxr implements Xop_lxr { 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 Init_by_lang(Xol_lang_itm 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); @@ -30,5 +30,5 @@ public class Xop_brack_end_lxr implements Xop_lxr { ctx.Subs_add(root, tkn); return cur_pos; } - public static final Xop_brack_end_lxr _ = new Xop_brack_end_lxr(); Xop_brack_end_lxr() {} + public static final Xop_brack_end_lxr Instance = new Xop_brack_end_lxr(); Xop_brack_end_lxr() {} } 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 9d2eda281..32b7e21c9 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 @@ -21,10 +21,10 @@ import gplx.xowa.parsers.tblws.*; public class Xop_curly_bgn_lxr implements Xop_lxr { 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 Init_by_lang(Xol_lang_itm 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 final Xop_curly_bgn_lxr Instance = 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*" Btrie_fast_mgr rv = Btrie_fast_mgr.cs(); rv.Add(Xop_tblw_lxr_ws.Hook_tb, Bry_.Empty); 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 0d283cd12..7ce0b142e 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 @@ -20,8 +20,8 @@ import gplx.core.btries.*; import gplx.xowa.langs.*; public class Xop_curly_end_lxr implements Xop_lxr { 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 Init_by_lang(Xol_lang_itm 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() {} + public static final Xop_curly_end_lxr Instance = 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 6e81eb723..db714491e 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 @@ -147,7 +147,7 @@ public class Xop_curly_wkr implements Xop_ctx_wkr { } return lxr_end_pos; } - private Xot_prm_wkr prm_wkr = Xot_prm_wkr._; + private Xot_prm_wkr prm_wkr = Xot_prm_wkr.Instance; public static final byte[] Hook_prm_bgn = new byte[] {Byte_ascii.Curly_bgn, Byte_ascii.Curly_bgn, Byte_ascii.Curly_bgn}, Hook_prm_end = new byte[] {Byte_ascii.Curly_end, Byte_ascii.Curly_end, Byte_ascii.Curly_end}; } /* diff --git a/400_xowa/src/gplx/xowa/parsers/tmpls/Xop_tkn_print_tst.java b/400_xowa/src/gplx/xowa/parsers/tmpls/Xop_tkn_print_tst.java index 7d0c203be..bccc884ca 100644 --- a/400_xowa/src/gplx/xowa/parsers/tmpls/Xop_tkn_print_tst.java +++ b/400_xowa/src/gplx/xowa/parsers/tmpls/Xop_tkn_print_tst.java @@ -35,6 +35,6 @@ public class Xop_tkn_print_tst { Xot_fmtr_prm raw_fmtr = new Xot_fmtr_prm(); defn.Root().Tmpl_fmt(ctx, raw_bry, raw_fmtr); raw_fmtr.Print(tst_Print_bb); - Tfds.Eq(raw, tst_Print_bb.Xto_str_and_clear()); + Tfds.Eq(raw, tst_Print_bb.To_str_and_clear()); } private Bry_bfr tst_Print_bb = Bry_bfr.new_(); } 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 39d263100..b4ae84f49 100644 --- a/400_xowa/src/gplx/xowa/parsers/tmpls/Xot_defn.java +++ b/400_xowa/src/gplx/xowa/parsers/tmpls/Xot_defn.java @@ -30,5 +30,5 @@ class Xot_defn_null implements Xot_defn { public Xot_defn Clone(int id, byte[] name) {return this;} public int Cache_size() {return 0;} public void Rls() {} - public static final Xot_defn_null _ = new Xot_defn_null(); Xot_defn_null() {} + public static final Xot_defn_null Instance = new Xot_defn_null(); Xot_defn_null() {} } 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 085035244..6f9de18db 100644 --- a/400_xowa/src/gplx/xowa/parsers/tmpls/Xot_defn_.java +++ b/400_xowa/src/gplx/xowa/parsers/tmpls/Xot_defn_.java @@ -16,9 +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.tmpls; import gplx.*; import gplx.xowa.*; import gplx.xowa.parsers.*; -import gplx.xowa.langs.*; +import gplx.xowa.langs.*; import gplx.xowa.langs.kwds.*; public class Xot_defn_ { - public static final Xot_defn Null = Xot_defn_null._; + public static final Xot_defn Null = Xot_defn_null.Instance; public static final byte Tid_null = 0 , Tid_func = 1 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 b1d72acf8..7839c6254 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,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.xowa.nss.*; +import gplx.xowa.wikis.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;} 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 43fc8645d..d43eddf3a 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 @@ -49,7 +49,7 @@ public class Xot_defn_tmpl_ { for (int i = 0; i < subs_len; i++) orig.Subs_get(i).Tmpl_evaluate(ctx, src, caller, arg_bfr); Arg_itm_tkn rv = tkn_mkr.ArgItm(-1, -1); // NOTE: was -1, 0; DATE:2013-04-10 - byte[] rv_ary = orig_arg.KeyTkn_exists() && val_tkn ? arg_bfr.Xto_bry_and_clear_and_trim() : arg_bfr.Xto_bry_and_clear(); // // NOTE: must trim if key_exists; DUPE:TRIM_IF_KEY; PAGE:en.w:Coord in Chernobyl disaster, Sahara + byte[] rv_ary = orig_arg.KeyTkn_exists() && val_tkn ? arg_bfr.To_bry_and_clear_and_trim() : arg_bfr.To_bry_and_clear(); // // NOTE: must trim if key_exists; DUPE:TRIM_IF_KEY; PAGE:en.w:Coord in Chernobyl disaster, Sahara rv.Dat_ary_(rv_ary); return rv; } diff --git a/400_xowa/src/gplx/xowa/parsers/tmpls/Xot_defn_trace.java b/400_xowa/src/gplx/xowa/parsers/tmpls/Xot_defn_trace.java index 4e3d396ad..29efec738 100644 --- a/400_xowa/src/gplx/xowa/parsers/tmpls/Xot_defn_trace.java +++ b/400_xowa/src/gplx/xowa/parsers/tmpls/Xot_defn_trace.java @@ -37,7 +37,7 @@ class Xot_defn_trace_brief implements Xot_defn_trace { else itm = (Xot_defn_trace_itm_brief)o; itm.Count_add(); - } private Ordered_hash hash = Ordered_hash_.new_(); + } private Ordered_hash hash = Ordered_hash_.New(); public void Trace_end(int trg_bgn, Bry_bfr trg) {} public void Print(byte[] src, Bry_bfr bb) { int count = hash.Count(); if (count == 0) return; diff --git a/400_xowa/src/gplx/xowa/parsers/tmpls/Xot_defn_trace_brief_tst.java b/400_xowa/src/gplx/xowa/parsers/tmpls/Xot_defn_trace_brief_tst.java index 9862de977..f11e3881a 100644 --- a/400_xowa/src/gplx/xowa/parsers/tmpls/Xot_defn_trace_brief_tst.java +++ b/400_xowa/src/gplx/xowa/parsers/tmpls/Xot_defn_trace_brief_tst.java @@ -42,7 +42,7 @@ class Xot_defn_trace_fxt { Xop_root_tkn root = ctx.Tkn_mkr().Root(src); fxt.Parser().Parse_page_all_clear(root, ctx, ctx.Tkn_mkr(), src); ctx.Defn_trace().Print(src, tmp); - String[] actl_ary = String_.Split(tmp.Xto_str_and_clear(), (char)Byte_ascii.Nl); + String[] actl_ary = String_.Split(tmp.To_str_and_clear(), (char)Byte_ascii.Nl); Tfds.Eq_ary(expd_ary, actl_ary); } private Bry_bfr tmp = Bry_bfr.new_(); String[] To_str(Xot_defn_trace_itm_brief[] ary) { @@ -50,7 +50,7 @@ class Xot_defn_trace_fxt { for (int i = 0; i < rv.length; i++) { Xot_defn_trace_itm_brief itm = ary[i]; sb.Add(String_.new_u8(itm.Name())).Add("|").Add(itm.Count()); - rv[i] = sb.Xto_str_and_clear(); + rv[i] = sb.To_str_and_clear(); } return rv; } diff --git a/400_xowa/src/gplx/xowa/parsers/tmpls/Xot_defn_trace_dbg.java b/400_xowa/src/gplx/xowa/parsers/tmpls/Xot_defn_trace_dbg.java index b54817416..86bfe4d2e 100644 --- a/400_xowa/src/gplx/xowa/parsers/tmpls/Xot_defn_trace_dbg.java +++ b/400_xowa/src/gplx/xowa/parsers/tmpls/Xot_defn_trace_dbg.java @@ -41,7 +41,7 @@ public class Xot_defn_trace_dbg implements Xot_defn_trace { // bfr.Add_mid(src, val_tkn.Dat_bgn(), val_tkn.Dat_end()); // } // else { -// Xot_fmtr_prm raw_fmtr = Xot_fmtr_prm._; +// Xot_fmtr_prm raw_fmtr = Xot_fmtr_prm.Instance; // nde.ValTkn().Tmpl_fmt(ctx, src, raw_fmtr); // raw_fmtr.Print(bfr); // } @@ -133,7 +133,7 @@ public class Xot_defn_trace_dbg implements Xot_defn_trace { } public void Clear() {bfr.Clear(); indent = 0; count = 0;} int indent = 0, count = 0; - public static final Xot_defn_trace_dbg _ = new Xot_defn_trace_dbg(); Xot_defn_trace_dbg() {} + public static final Xot_defn_trace_dbg Instance = new Xot_defn_trace_dbg(); Xot_defn_trace_dbg() {} private static final byte[] Ary_invk_lbl = Bry_.new_a7("*invk\n"), Ary_lnk_lbl = Bry_.new_a7("*lnk: "), Ary_args_lbl = Bry_.new_a7("*args\n") , Ary_result_lbl = Bry_.new_a7("*result\n") , Ary_eval_lbl = Bry_.new_a7("*eval\n") diff --git a/400_xowa/src/gplx/xowa/parsers/tmpls/Xot_defn_trace_dbg_tst.java b/400_xowa/src/gplx/xowa/parsers/tmpls/Xot_defn_trace_dbg_tst.java index 370fd3471..dfc94a0c5 100644 --- a/400_xowa/src/gplx/xowa/parsers/tmpls/Xot_defn_trace_dbg_tst.java +++ b/400_xowa/src/gplx/xowa/parsers/tmpls/Xot_defn_trace_dbg_tst.java @@ -25,7 +25,7 @@ public class Xot_defn_trace_dbg_tst { fx.Init_defn_add("concat", "{{{1}}}{{{2}}}"); fx.Init_defn_add("bool_str", "{{#ifeq:{{{1}}}|1|y|n}}"); fx.Init_defn_add("mid_1", "{{print|[ {{concat|{{{1}}}|{{{2}}}}} ]}}"); - fx.Ctx().Defn_trace_(Xot_defn_trace_dbg._); + fx.Ctx().Defn_trace_(Xot_defn_trace_dbg.Instance); } @Test public void Tmpl() { fx.tst_ diff --git a/400_xowa/src/gplx/xowa/parsers/tmpls/Xot_defn_trace_null.java b/400_xowa/src/gplx/xowa/parsers/tmpls/Xot_defn_trace_null.java index 2d3d4249a..25885ae4a 100644 --- a/400_xowa/src/gplx/xowa/parsers/tmpls/Xot_defn_trace_null.java +++ b/400_xowa/src/gplx/xowa/parsers/tmpls/Xot_defn_trace_null.java @@ -21,5 +21,5 @@ public class Xot_defn_trace_null implements Xot_defn_trace { public void Trace_bgn(Xop_ctx ctx, byte[] src, byte[] name, Xot_invk caller, Xot_invk self, Xot_defn defn) {} public void Trace_end(int trg_bgn, Bry_bfr trg) {} public void Print(byte[] src, Bry_bfr bb) {} - public static final Xot_defn_trace_null _ = new Xot_defn_trace_null(); Xot_defn_trace_null() {} + public static final Xot_defn_trace_null Instance = new Xot_defn_trace_null(); Xot_defn_trace_null() {} } diff --git a/400_xowa/src/gplx/xowa/parsers/tmpls/Xot_examples_tst.java b/400_xowa/src/gplx/xowa/parsers/tmpls/Xot_examples_tst.java index 55396e83c..764006801 100644 --- a/400_xowa/src/gplx/xowa/parsers/tmpls/Xot_examples_tst.java +++ b/400_xowa/src/gplx/xowa/parsers/tmpls/Xot_examples_tst.java @@ -20,7 +20,7 @@ import org.junit.*; public class Xot_examples_tst { private Xop_fxt fxt = new Xop_fxt(); @Before public void init() { - Io_mgr.I.InitEngine_mem(); + Io_mgr.Instance.InitEngine_mem(); fxt.Reset(); } @Test public void Arg_0() {Init_tmpl_for(); fxt.Test_parse_tmpl_str("{{For}}" , "For other uses, see [[Test page (disambiguation)]].");} diff --git a/400_xowa/src/gplx/xowa/parsers/tmpls/Xot_fmtr.java b/400_xowa/src/gplx/xowa/parsers/tmpls/Xot_fmtr.java index 87573d3cc..3c2cf8e25 100644 --- a/400_xowa/src/gplx/xowa/parsers/tmpls/Xot_fmtr.java +++ b/400_xowa/src/gplx/xowa/parsers/tmpls/Xot_fmtr.java @@ -71,5 +71,5 @@ class Xot_fmtr_prm implements Xot_fmtr { } public void Print(Bry_bfr bb) {bb.Add_bfr_and_preserve(trg); trg.Clear(); depth = 0;} Bry_bfr trg = Bry_bfr.new_(); int depth = 0; - public static final Xot_fmtr_prm _ = new Xot_fmtr_prm(); + public static final Xot_fmtr_prm Instance = new Xot_fmtr_prm(); } diff --git a/400_xowa/src/gplx/xowa/parsers/tmpls/Xot_invk_mock.java b/400_xowa/src/gplx/xowa/parsers/tmpls/Xot_invk_mock.java index 4f969703c..a6dc2f2fe 100644 --- a/400_xowa/src/gplx/xowa/parsers/tmpls/Xot_invk_mock.java +++ b/400_xowa/src/gplx/xowa/parsers/tmpls/Xot_invk_mock.java @@ -30,7 +30,7 @@ public class Xot_invk_mock implements Xot_invk { public int Frame_lifetime() {return frame_lifetime;} public void Frame_lifetime_(int v) {frame_lifetime = v;} private int frame_lifetime; public boolean Rslt_is_redirect() {return rslt_is_redirect;} public void Rslt_is_redirect_(boolean v) {rslt_is_redirect = v;} private boolean rslt_is_redirect; public Arg_nde_tkn Name_tkn() {return Arg_nde_tkn.Null;} - public int Args_len() {return args.Count() + idx_adj;} private Ordered_hash args = Ordered_hash_.new_bry_(); + public int Args_len() {return args.Count() + idx_adj;} private Ordered_hash args = Ordered_hash_.New_bry(); public Arg_nde_tkn Args_get_by_idx(int i) {return (Arg_nde_tkn)args.Get_at(i - idx_adj);} public Arg_nde_tkn Args_eval_by_idx(byte[] src, int idx) {// DUPE:MW_ARG_RETRIEVE int cur = 0, list_len = args.Count(); 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 915f16a17..74e9e9ab1 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,9 +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.tmpls; import gplx.*; import gplx.xowa.*; import gplx.xowa.parsers.*; -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.langs.*; import gplx.xowa.langs.kwds.*; import gplx.xowa.langs.vnts.*; import gplx.xowa.langs.vnts.converts.*; import gplx.xowa.langs.funcs.*; +import gplx.xowa.wikis.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.wikis.pages.*; import gplx.xowa.wikis.data.tbls.*; import gplx.xowa.parsers.miscs.*; public class Xot_invk_tkn extends Xop_tkn_itm_base implements Xot_invk { @@ -49,7 +49,7 @@ public class Xot_invk_tkn extends Xop_tkn_itm_base implements Xot_invk { } @Override public boolean Tmpl_evaluate(Xop_ctx ctx, byte[] src, Xot_invk caller, Bry_bfr bfr) { // this="{{t|{{{0}}}}}" caller="{{t|1}}" boolean rv = false; - Xot_defn defn = tmpl_defn; Xowe_wiki wiki = ctx.Wiki(); Xol_lang lang = wiki.Lang(); + Xot_defn defn = tmpl_defn; Xowe_wiki wiki = ctx.Wiki(); Xol_lang_itm lang = wiki.Lang(); byte[] name_ary = defn.Name(), argx_ary = Bry_.Empty; Arg_itm_tkn name_key_tkn = name_tkn.Key_tkn(); byte[] name_ary_orig = Bry_.Empty; int name_bgn = 0, name_ary_len = 0; @@ -61,7 +61,7 @@ public class Xot_invk_tkn extends Xop_tkn_itm_base implements Xot_invk { if (defn_tid == Xot_defn_.Tid_subst) name_tkn_bfr.Add(Get_first_subst_itm(lang.Kwd_mgr())); name_tkn.Tmpl_evaluate(ctx, src, caller, name_tkn_bfr); - name_ary = name_tkn_bfr.Xto_bry_and_clear(); + name_ary = name_tkn_bfr.To_bry_and_clear(); } else // tmpl is static; note that dat_ary is still valid but rest of name may not be; EX: {{subst:name{{{1}}}}} name_ary = Bry_.Mid(src, name_key_tkn.Dat_bgn(), name_key_tkn.Dat_end()); @@ -99,7 +99,7 @@ public class Xot_invk_tkn extends Xop_tkn_itm_base implements Xot_invk { if (ns_eval != null && !template_prefix_found) // do not transclude ns if Template prefix seen earlier; EX: {{Template:Wikipedia:A}} should not transclude "Wikipedia:A"; DATE:2013-04-03 return SubEval(ctx, wiki, bfr, name_ary, caller, src); - Xol_func_name_itm finder = lang.Func_regy().Find_defn(name_ary, name_bgn, name_ary_len); + Xol_func_itm finder = lang.Func_regy().Find_defn(name_ary, name_bgn, name_ary_len); defn = finder.Func(); int colon_pos = -1; switch (finder.Tid()) { @@ -110,7 +110,7 @@ public class Xot_invk_tkn extends Xop_tkn_itm_base implements Xot_invk { bfr.Add_byte(Byte_ascii.Pipe); // add | bfr.Add_mid(src, nde.Src_bgn(), nde.Src_end()); // add entire arg; "k=v"; note that src must be added, not evaluated, else may be dropped and cause stack overflow; PAGE:ru.w:Близкие_друзья_(Сезон_2) DATE:2014-10-21 } - Xot_fmtr_prm._.Print(bfr); + Xot_fmtr_prm.Instance.Print(bfr); bfr.Add(Xop_curly_end_lxr.Hook); return true; // NOTE: nothing else to do; return case Xot_defn_.Tid_safesubst: @@ -253,7 +253,7 @@ public class Xot_invk_tkn extends Xop_tkn_itm_base implements Xot_invk { Bry_bfr rslt_bfr = wiki.Utl__bfr_mkr().Get_k004(); try { Bld_key(invk_tmpl, name_ary, rslt_bfr); - byte[] rslt_key = rslt_bfr.Xto_bry_and_clear(); + byte[] rslt_key = rslt_bfr.To_bry_and_clear(); Object o = wiki.Cache_mgr().Tmpl_result_cache().Get_by(rslt_key); Xopg_tmpl_prepend_mgr prepend_mgr = ctx.Cur_page().Tmpl_prepend_mgr().Bgn(bfr); if (o != null) { @@ -265,11 +265,11 @@ public class Xot_invk_tkn extends Xop_tkn_itm_base implements Xot_invk { rv = defn_tmpl.Tmpl_evaluate(ctx, invk_tmpl, rslt_bfr); 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(); + byte[] tmp_src = rslt_bfr.To_bry_and_clear(); 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(); + byte[] rslt_val = rslt_bfr.To_bry_and_clear(); bfr.Add(rslt_val); Hash_adp cache = wiki.Cache_mgr().Tmpl_result_cache(); cache.Del(rslt_key); @@ -288,7 +288,7 @@ public class Xot_invk_tkn extends Xop_tkn_itm_base implements Xot_invk { boolean skip = false; skip = this.Src_end() - this.Src_bgn() > ctx.Tmpl_tkn_max(); if (!skip) { - gplx.xowa.html.modules.popups.keeplists.Xop_keeplist_wiki tmpl_keeplist = ctx.Tmpl_keeplist(); + gplx.xowa.htmls.modules.popups.keeplists.Xop_keeplist_wiki tmpl_keeplist = ctx.Tmpl_keeplist(); if (tmpl_keeplist != null && tmpl_keeplist.Enabled()) { byte[] ttl_lower = Xoa_ttl.Replace_spaces(ctx.Wiki().Lang().Case_mgr().Case_build_lower(ttl)); skip = !tmpl_keeplist.Match(ttl_lower); diff --git a/400_xowa/src/gplx/xowa/parsers/tmpls/Xot_invk_wkr.java b/400_xowa/src/gplx/xowa/parsers/tmpls/Xot_invk_wkr.java index 601f0e093..23f00bb20 100644 --- a/400_xowa/src/gplx/xowa/parsers/tmpls/Xot_invk_wkr.java +++ b/400_xowa/src/gplx/xowa/parsers/tmpls/Xot_invk_wkr.java @@ -16,13 +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.xowa.langs.*; +import gplx.xowa.langs.*; import gplx.xowa.langs.funcs.*; public class Xot_invk_wkr implements Xop_ctx_wkr, Xop_arg_wkr { public void Ctor_ctx(Xop_ctx ctx) {} public void Page_bgn(Xop_ctx ctx, Xop_root_tkn root) {this.tkn_mkr = ctx.Tkn_mkr();} private Xop_tkn_mkr tkn_mkr; 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) {} - private static Arg_bldr arg_bldr = Arg_bldr._; + private static Arg_bldr arg_bldr = Arg_bldr.Instance; public int Make_tkn(Xop_ctx ctx, Xop_root_tkn root, byte[] src, int lxr_cur_pos, int lxr_end_pos, Xop_curly_bgn_tkn bgn_tkn, int keep_curly_bgn) { Xot_invk_tkn invk = tkn_mkr.Tmpl_invk(bgn_tkn.Src_bgn(), lxr_end_pos); int loop_bgn = bgn_tkn.Tkn_sub_idx() + 1, loop_end = root.Subs_len(); @@ -60,7 +60,7 @@ public class Xot_invk_wkr implements Xop_ctx_wkr, Xop_arg_wkr { if (key_tkn.Itm_static() != Bool_.Y_byte) return; // dynamic tkn; can't identify func/name int colon_pos = -1, txt_bgn = key_tkn.Dat_bgn(), txt_end = key_tkn.Dat_end(); - Xol_func_name_itm finder = ctx.Wiki().Lang().Func_regy().Find_defn(src, txt_bgn, txt_end); + Xol_func_itm finder = ctx.Wiki().Lang().Func_regy().Find_defn(src, txt_bgn, txt_end); Xot_defn finder_func = finder.Func(); byte finder_typeId = finder.Tid(); switch (finder_typeId) { 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 6b9a6799f..0affcf1d4 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 gplx.xowa.nss.*; +import org.junit.*; import gplx.xowa.wikis.ttls.*; import gplx.xowa.wikis.nss.*; public class Xot_invk_wkr_basic_tst { private Xop_fxt fxt = new Xop_fxt(); @Before public void init() {fxt.Reset();} @@ -214,10 +214,10 @@ public class Xot_invk_wkr_basic_tst { fxt.Test_parse_tmpl_str("{{Missing}}", "[[:Template_foreign:Missing]]"); ns.Name_bry_(old_ns); } - @Test public void Xnde_xtn_preserved() { // PURPOSE: tmpl was dropping .Xtn ndes; EX: below was just ab + @Test public void Xnde_xtn_preserved() { // PURPOSE: tmpl was dropping .Xtn ndes; fxt.Init_defn_clear(); fxt.Init_defn_add("test_template", "{{{1}}}"); - fxt.Test_parse_page_all_str("{{test_template|a1b}}", "a
    1
    b"); + fxt.Test_parse_page_all_str("{{test_template|a1b}}", "a
    1
    b"); // was just ab fxt.Init_defn_clear(); } @Test public void Recurse() { diff --git a/400_xowa/src/gplx/xowa/parsers/tmpls/Xot_prm_tkn.java b/400_xowa/src/gplx/xowa/parsers/tmpls/Xot_prm_tkn.java index d2cbf65ef..598e2b83c 100644 --- a/400_xowa/src/gplx/xowa/parsers/tmpls/Xot_prm_tkn.java +++ b/400_xowa/src/gplx/xowa/parsers/tmpls/Xot_prm_tkn.java @@ -49,7 +49,7 @@ public class Xot_prm_tkn extends Xop_tkn_itm_base { find_tkn.Subs_get(i).Tmpl_evaluate(ctx, src, caller, find_bfr); prm_idx = Bry_.To_int_or__trim_ws(find_bfr.Bfr(), 0, find_bfr.Len(), -1); // parse as number first; NOTE: trim needed to transform "{{{ 1 }}}" to "1"; it.w:Portale:Giochi_da_tavolo; DATE:2014-02-09 if (prm_idx == -1) - prm_key = find_bfr.Xto_bry_and_clear_and_trim(); // not a number; parse as key; NOTE: must trim; PAGE:en.w:William Shakespeare; {{Relatebardtree}} + prm_key = find_bfr.To_bry_and_clear_and_trim(); // not a number; parse as key; NOTE: must trim; PAGE:en.w:William Shakespeare; {{Relatebardtree}} } Arg_nde_tkn arg_nde = null; if (prm_idx == -1) { // prm is key; EX: "{{{key1}}}" diff --git a/400_xowa/src/gplx/xowa/parsers/tmpls/Xot_prm_wkr.java b/400_xowa/src/gplx/xowa/parsers/tmpls/Xot_prm_wkr.java index e8c80fb2c..0bd0afe58 100644 --- a/400_xowa/src/gplx/xowa/parsers/tmpls/Xot_prm_wkr.java +++ b/400_xowa/src/gplx/xowa/parsers/tmpls/Xot_prm_wkr.java @@ -17,7 +17,7 @@ along with this program. If not, see . */ package gplx.xowa.parsers.tmpls; import gplx.*; import gplx.xowa.*; import gplx.xowa.parsers.*; class Xot_prm_wkr implements Xop_arg_wkr { - private static Arg_bldr arg_bldr = Arg_bldr._; + private static Arg_bldr arg_bldr = Arg_bldr.Instance; public boolean Make_tkn(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_curly_bgn_tkn bgn, int keep_curly_bgn) { int loop_bgn = bgn.Tkn_sub_idx() + 1; // +1 to ignore curly_bgn int loop_end = root.Subs_len(); @@ -28,7 +28,7 @@ class Xot_prm_wkr implements Xop_arg_wkr { return false; } Xot_prm_tkn prm_tkn = tkn_mkr.Tmpl_prm(bgn.Src_bgn(), lxr_cur_pos); - arg_bldr.Bld(ctx, tkn_mkr, Xot_prm_wkr._, Xop_arg_wkr_.Typ_prm, root, prm_tkn, lxr_bgn_pos, lxr_cur_pos, loop_bgn, loop_end, src); + arg_bldr.Bld(ctx, tkn_mkr, Xot_prm_wkr.Instance, Xop_arg_wkr_.Typ_prm, root, prm_tkn, lxr_bgn_pos, lxr_cur_pos, loop_bgn, loop_end, src); root.Subs_del_after(bgn.Tkn_sub_idx() + keep_curly_bgn); // NOTE: keep_curly_bgn determines whether or not to delete opening {{{ root.Subs_add(prm_tkn); return true; @@ -42,5 +42,5 @@ class Xot_prm_wkr implements Xop_arg_wkr { } return true; } - public static final Xot_prm_wkr _ = new Xot_prm_wkr(); Xot_prm_wkr() {} + public static final Xot_prm_wkr Instance = new Xot_prm_wkr(); Xot_prm_wkr() {} } diff --git a/400_xowa/src/gplx/xowa/parsers/tmpls/Xot_tmpl_wtr.java b/400_xowa/src/gplx/xowa/parsers/tmpls/Xot_tmpl_wtr.java index 2faae1ef9..f6446f0c2 100644 --- a/400_xowa/src/gplx/xowa/parsers/tmpls/Xot_tmpl_wtr.java +++ b/400_xowa/src/gplx/xowa/parsers/tmpls/Xot_tmpl_wtr.java @@ -109,5 +109,5 @@ public class Xot_tmpl_wtr { } } public static String Err_string = ""; - public static final Xot_tmpl_wtr _ = new Xot_tmpl_wtr(); Xot_tmpl_wtr() {} + public static final Xot_tmpl_wtr Instance = new Xot_tmpl_wtr(); Xot_tmpl_wtr() {} } diff --git a/400_xowa/src/gplx/xowa/parsers/uniqs/Xop_uniq_mgr.java b/400_xowa/src/gplx/xowa/parsers/uniqs/Xop_uniq_mgr.java new file mode 100644 index 000000000..ab4b7de28 --- /dev/null +++ b/400_xowa/src/gplx/xowa/parsers/uniqs/Xop_uniq_mgr.java @@ -0,0 +1,88 @@ +/* +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.uniqs; import gplx.*; import gplx.xowa.*; import gplx.xowa.parsers.*; +import gplx.core.btries.*; +public class Xop_uniq_mgr { // REF.MW:/parser/StripState.php + private final Btrie_slim_mgr general_trie = Btrie_slim_mgr.cs(); + private final Bry_bfr key_bfr = Bry_bfr.new_(32); + private int idx = -1; + public void Clear() {idx = -1; general_trie.Clear();} + public byte[] Add(byte[] val) { // "" -> "\u007fUNIQ-item-1--QINU\u007f" + byte[] key = key_bfr + .Add(Bry__uniq__add__bgn) + .Add_int_variable(++idx) + .Add(Bry__uniq__add__end).To_bry_and_clear(); + general_trie.Add_bry_bry(key, val); + return key; + } + public byte[] Get(byte[] key) {return (byte[])general_trie.Match_exact(key, 0, key.length);} + public byte[] Parse(byte[] src) {return Parse(key_bfr, general_trie, src);} + private byte[] Parse(Bry_bfr bfr, Btrie_slim_mgr trie, byte[] src) { + int src_len = src.length; + int pos = 0; + int mark_bgn = 0; + boolean dirty = false; + while (true) { + boolean is_last = pos == src_len; + byte b = is_last ? Byte_ascii.Null : src[pos]; + Object o = trie.Match_bgn_w_byte(b, src, pos, src_len); + if (o == null) + ++pos; + else { + byte[] val = (byte[])o; + int new_pos = trie.Match_pos(); // NOTE: since trie is reused, must capture pos here + val = Parse(Bry_bfr.new_(), trie, val); +// val = gplx.xowa.parsers.xndes.Xop_xnde_tkn.Hack_ctx.Wiki().Parser_mgr().Main().Parse_text_to_html(gplx.xowa.parsers.xndes.Xop_xnde_tkn.Hack_ctx, val); // CHART + bfr.Add_mid(src, mark_bgn, pos); + bfr.Add(val); + dirty = true; + pos = mark_bgn = new_pos; + } + if (is_last) { + if (dirty) + bfr.Add_mid(src, mark_bgn, src_len); + break; + } + } + return dirty ? bfr.To_bry_and_clear() : src; + } + public byte[] Uniq_bry_new() { + return Bry_.Add + ( Bry__uniq__bgn // "\x7fUNIQ" where "\x7f" is (byte)127 + , Random_bry_new(16)); // random hexdecimal String + } + public void Random_int_ary_(int... v) {random_int_ary = v;} private int[] random_int_ary; // TEST: + public byte[] Random_bry_new(int len) { + Bry_bfr key_bfr = Bry_bfr.new_(); + RandomAdp random_gen = RandomAdp_.new_(); + for (int i = 0; i < len; i += 7) { + int rand = random_int_ary == null ? random_gen.Next(Int_.Max_value) : random_int_ary[i / 7]; + String rand_str = Int_.To_str_hex(Bool_.N, Bool_.Y, rand & 0xfffffff); // limits value to 268435455 + key_bfr.Add_str_a7(rand_str); + } + byte[] rv = key_bfr.To_bry(0, len); + key_bfr.Clear(); + return rv; + } + private final static byte[] + Bry__uniq__bgn = Bry_.new_a7("\u007fUNIQ") + // , Bry__uniq__end = Bry_.new_a7("-QINU\u007f") + , Bry__uniq__add__bgn = Bry_.new_a7("\u007fUNIQ-item-") + , Bry__uniq__add__end = Bry_.new_a7("--QINU\u007f") + ; +} diff --git a/400_xowa/src/gplx/xowa/parsers/uniqs/Xop_uniq_mgr_tst.java b/400_xowa/src/gplx/xowa/parsers/uniqs/Xop_uniq_mgr_tst.java new file mode 100644 index 000000000..c2ac46a47 --- /dev/null +++ b/400_xowa/src/gplx/xowa/parsers/uniqs/Xop_uniq_mgr_tst.java @@ -0,0 +1,66 @@ +/* +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.uniqs; import gplx.*; import gplx.xowa.*; import gplx.xowa.parsers.*; +import org.junit.*; +public class Xop_uniq_mgr_tst { + private final Xop_uniq_mgr_fxt fxt = new Xop_uniq_mgr_fxt(); + @Before public void init() {fxt.Init();} + @Test public void Test_random_bry() { + fxt.Init_random_int_ary(Int_.Ary(240563374, 22728940, 1451248133)); + fxt.Test_uniq_bry_new("UNIQE56B4AE15AD0EC68"); + + fxt.Init_random_int_ary(Int_.Ary(1363621437, 426295411, 421041101)); + fxt.Test_uniq_bry_new("UNIQ147363D968C07391"); + } + @Test public void Add_and_get() { + String expd_key = "UNIQ-item-0--QINU"; + fxt.Test_add("a", expd_key); + fxt.Test_get(expd_key, "a"); + } + @Test public void Parse__basic() { + String expd_key = "UNIQ-item-0--QINU"; + fxt.Test_add("_b_", expd_key); + fxt.Test_parse("a" + expd_key + "c", "a_b_c"); + } + @Test public void Parse__recurse() { + String key_0 = "UNIQ-item-0--QINU"; + String key_1 = "UNIQ-item-1--QINU"; + String key_2 = "UNIQ-item-2--QINU"; + fxt.Test_add("0", key_0); + fxt.Test_add("1-" + key_0 + "-1", key_1); + fxt.Test_add("2-" + key_1 + "-2", key_2); + fxt.Test_parse("3-" + key_2 + "-3", "3-2-1-0-1-2-3"); + } +} +class Xop_uniq_mgr_fxt { + private final Xop_uniq_mgr mgr = new Xop_uniq_mgr(); + public Xop_uniq_mgr_fxt Init_random_int_ary(int... v) {mgr.Random_int_ary_(v); return this;} + public void Init() {mgr.Clear();} + public void Test_uniq_bry_new(String expd) { + Tfds.Eq_str(expd, String_.new_a7(mgr.Uniq_bry_new()), "unique_bry"); + } + public void Test_add(String raw, String expd) { + Tfds.Eq_str(expd, String_.new_a7(mgr.Add(Bry_.new_a7(raw))), "add"); + } + public void Test_get(String key, String expd) { + Tfds.Eq_str(expd, String_.new_a7(mgr.Get(Bry_.new_a7(key))), "get"); + } + public void Test_parse(String raw, String expd) { + Tfds.Eq_str(expd, String_.new_a7(mgr.Parse(Bry_.new_a7(raw))), "get"); + } +} diff --git a/400_xowa/src/gplx/xowa/parsers/utils/TstObj_tst.java b/400_xowa/src/gplx/xowa/parsers/utils/TstObj_tst.java index 17aa0dfcf..7f589449a 100644 --- a/400_xowa/src/gplx/xowa/parsers/utils/TstObj_tst.java +++ b/400_xowa/src/gplx/xowa/parsers/utils/TstObj_tst.java @@ -51,8 +51,8 @@ class Xop_rule_mgr implements TstRuleMgr { return this; } public String Reg() {return typeKey;} - Ordered_hash hash = Ordered_hash_.new_(); - public static final Xop_rule_mgr _ = new Xop_rule_mgr(); + Ordered_hash hash = Ordered_hash_.New(); + public static final Xop_rule_mgr Instance = new Xop_rule_mgr(); } class Xop_rule_dat { public String AtrKey() {return atrKey;} private String atrKey; @@ -79,7 +79,7 @@ public class TstObj_tst { private static int Add(int[] ary) {int rv = 0; for (int i = 0; i < ary.length; i++) rv += ary[i]; return rv;} @gplx.Internal protected static void Eval(String raw, TstObj expdChk, TstObj actlChk, TstRuleMgr ruleMgr) { List_adp rslts = List_adp_.new_(); - Eval(rslts, ruleMgr, Ordered_hash_.new_(), "", expdChk, actlChk); + Eval(rslts, ruleMgr, Ordered_hash_.New(), "", expdChk, actlChk); String_bldr sb = String_bldr_.new_(); sb.Add(raw).Add(Op_sys.Lnx.Nl_str()); @@ -114,14 +114,14 @@ public class TstObj_tst { TstAtr expdAtr = (TstAtr)expd.Atrs().Get_at(i); String key = expdAtr.Key(); TstAtr actlAtr = (TstAtr)actl.Atrs().Get_by(key); - if (expdAtr.ValType() == ObjectClassXtn._) { + if (expdAtr.ValType() == ObjectClassXtn.Instance) { SrlObj expdSrl = (SrlObj)expdAtr.Val(); TstObj expdTst = TstObj.new_(); expdSrl.SrlObj_Srl(expdTst); TstObj actlTst = TstObj.new_(); if (actlAtr != null) ((SrlObj)actlAtr.Val()).SrlObj_Srl(actlTst); if (ruleMgr.SkipChkObj(expdAtr.TypeKey(), key, expdTst)) continue; - Eval(rslts, ruleMgr, Ordered_hash_.new_(), idx + "." + key, expdTst, actlTst); + Eval(rslts, ruleMgr, Ordered_hash_.New(), idx + "." + key, expdTst, actlTst); } else { if (actlAtr == null) actlAtr = new TstAtr(); @@ -136,10 +136,10 @@ public class TstObj_tst { TstObj expdSub = i < expdSubsLen ? (TstObj)expd.Subs().Get_at(i) : TstObj.Null; TstObj actlSub = i < actlSubsLen ? (TstObj)actl.Subs().Get_at(i) : TstObj.Null; // if (ruleMgr != null) ruleMgr.Eval(expd.TypeKey(), expdSub.PropName(), expdAtr, actlAtr, skip); - String iAsStr = Int_.Xto_str(i); + String iAsStr = Int_.To_str(i); String subId = String_.Eq(idx, "") ? iAsStr : idx + "." + iAsStr; if (expdSub == TstObj.Null && actlSub != TstObj.Null) { - TstAtr mis = new TstAtr().Key_("idx").Val_(i).ValType_(IntClassXtn._); + TstAtr mis = new TstAtr().Key_("idx").Val_(i).ValType_(IntClassXtn.Instance); rslts.Add(new TstRslt().Expd_(mis).Actl_(mis).EvalPass_(false).EvalStr_("!=") .Id_(subId).Key_("sub_ref") .ExpdStr_("null").ActlStr_("not null")); @@ -182,18 +182,18 @@ class MockObj { } class TstObj implements SrlMgr { public boolean Type_rdr() {return false;} - public Ordered_hash Atrs() {return atrs;} private Ordered_hash atrs = Ordered_hash_.new_(); + public Ordered_hash Atrs() {return atrs;} private Ordered_hash atrs = Ordered_hash_.New(); public Object StoreRoot(SrlObj root, String key) {return null;} - public boolean SrlBoolOr(String key, boolean v) {Atrs_add(key, v, BoolClassXtn._); return v;} - public byte SrlByteOr(String key, byte v) {Atrs_add(key, v, ByteClassXtn._); return v;} - public int SrlIntOr(String key, int v) {Atrs_add(key, v, IntClassXtn._); return v;} - public long SrlLongOr(String key, long v) {Atrs_add(key, v, LongClassXtn._); return v;} - public String SrlStrOr(String key, String v) {Atrs_add(key, v, StringClassXtn._); return v;} - public Decimal_adp SrlDecimalOr(String key, Decimal_adp v) {Atrs_add(key, v, DecimalAdpClassXtn._); return v;} - public DateAdp SrlDateOr(String key, DateAdp v) {Atrs_add(key, v, DateAdpClassXtn._); return v;} - public double SrlDoubleOr(String key, double v) {Atrs_add(key, v, DoubleClassXtn._); return v;} + public boolean SrlBoolOr(String key, boolean v) {Atrs_add(key, v, BoolClassXtn.Instance); return v;} + public byte SrlByteOr(String key, byte v) {Atrs_add(key, v, ByteClassXtn.Instance); return v;} + public int SrlIntOr(String key, int v) {Atrs_add(key, v, IntClassXtn.Instance); return v;} + public long SrlLongOr(String key, long v) {Atrs_add(key, v, LongClassXtn.Instance); return v;} + public String SrlStrOr(String key, String v) {Atrs_add(key, v, StringClassXtn.Instance); return v;} + public Decimal_adp SrlDecimalOr(String key, Decimal_adp v) {Atrs_add(key, v, DecimalAdpClassXtn.Instance); return v;} + public DateAdp SrlDateOr(String key, DateAdp v) {Atrs_add(key, v, DateAdpClassXtn.Instance); return v;} + public double SrlDoubleOr(String key, double v) {Atrs_add(key, v, DoubleClassXtn.Instance); return v;} public Object SrlObjOr(String key, Object v) { - Atrs_add(key, v, ObjectClassXtn._); + Atrs_add(key, v, ObjectClassXtn.Instance); return v; } public void SrlList(String key, List_adp list, SrlObj proto, String itmKey) {} 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 06e3f296c..3b3cae4cc 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 @@ -17,8 +17,8 @@ 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.*; +import gplx.xowa.htmls.*; import gplx.xowa.htmls.hrefs.*; import gplx.xowa.parsers.tmpls.*; +import gplx.xowa.langs.*; import gplx.xowa.langs.msgs.*; import gplx.xowa.langs.kwds.*; 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 @@ -87,7 +87,7 @@ public class Xop_redirect_mgr { Bry_bfr fmt_bfr = app.Utl__bfr_mkr().Get_b512(); app.Tmp_fmtr().Fmt_(msg_itm.Val()).Bld_bfr_one(fmt_bfr, redirect_bfr); redirect_bfr.Clear().Mkr_rls(); fmt_bfr.Mkr_rls(); - return fmt_bfr.Xto_bry_and_clear(); + return fmt_bfr.To_bry_and_clear(); } private static byte[] Bry_redirect_dlm = Bry_.new_a7(" <--- "), Bry_redirect_arg = Bry_.new_a7("?redirect=no"); } class Xop_redirect_mgr_ { 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 4a2ee3313..8d6f2b0d2 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.langs.*; import gplx.xowa.parsers.tmpls.*; +import org.junit.*; import gplx.xowa.langs.kwds.*; 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/utils/Xop_sanitizer.java b/400_xowa/src/gplx/xowa/parsers/utils/Xop_sanitizer.java index b98239367..c7babcc45 100644 --- a/400_xowa/src/gplx/xowa/parsers/utils/Xop_sanitizer.java +++ b/400_xowa/src/gplx/xowa/parsers/utils/Xop_sanitizer.java @@ -32,7 +32,7 @@ public class Xop_sanitizer { private void trie_add(String hook, byte tid) {trie.Add_stub(hook, tid);} public byte[] Escape_id(byte[] src) { boolean dirty = Escape_id(src, 0, src.length, tmp_bfr); - return dirty ? tmp_bfr.Xto_bry_and_clear() : src; + return dirty ? tmp_bfr.To_bry_and_clear() : src; } public boolean Escape_id(byte[] src, int bgn, int end, Bry_bfr bfr) { boolean dirty = false; diff --git a/400_xowa/src/gplx/xowa/parsers/utils/Xop_sanitizer_tst.java b/400_xowa/src/gplx/xowa/parsers/utils/Xop_sanitizer_tst.java index b9cbfaa9d..dff232802 100644 --- a/400_xowa/src/gplx/xowa/parsers/utils/Xop_sanitizer_tst.java +++ b/400_xowa/src/gplx/xowa/parsers/utils/Xop_sanitizer_tst.java @@ -34,7 +34,7 @@ class Xop_sanitizer_fxt { public Xop_sanitizer sanitizer; public void Clear() { if (sanitizer != null) return; - sanitizer = new Xop_sanitizer(Xop_amp_mgr.I, new Gfo_msg_log(Xoa_app_.Name)); + sanitizer = new Xop_sanitizer(Xop_amp_mgr.Instance, new Gfo_msg_log(Xoa_app_.Name)); } public void tst_Escape_id(String raw, String expd) { byte[] raw_bry = Bry_.new_u8(raw); diff --git a/400_xowa/src/gplx/xowa/parsers/utils/Xop_util.java b/400_xowa/src/gplx/xowa/parsers/utils/Xop_util.java deleted file mode 100644 index 54b64ef02..000000000 --- a/400_xowa/src/gplx/xowa/parsers/utils/Xop_util.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.utils; import gplx.*; import gplx.xowa.*; import gplx.xowa.parsers.*; -import gplx.core.primitives.*; -public class Xop_util { - public byte[] Uniq_bry_new() { - return Bry_.Add - ( Random_bry_hdr // "\x7fUNIQ" where "\x7f" is (byte)127 - , Random_bry_new(16)); // random hexdecimal String - } - public void Random_int_ary_(int... v) {random_int_ary = v;} private int[] random_int_ary; // TEST: - public byte[] Random_bry_new(int len) { - Bry_bfr tmp_bfr = Bry_bfr.new_(); - RandomAdp random_gen = RandomAdp_.new_(); - for (int i = 0; i < len; i += 7) { - int rand = random_int_ary == null ? random_gen.Next(Int_.Max_value) : random_int_ary[i / 7]; - String rand_str = Int_.Xto_str_hex(Bool_.N, Bool_.Y, rand & 0xfffffff); // limits value to 268435455 - tmp_bfr.Add_str_a7(rand_str); - } - byte[] rv = tmp_bfr.Xto_bry(0, len); - tmp_bfr.Clear(); - return rv; - } - private final static byte[] Random_bry_hdr = Bry_.new_a7("\u007fUNIQ"); -} diff --git a/400_xowa/src/gplx/xowa/parsers/utils/Xop_util_tst.java b/400_xowa/src/gplx/xowa/parsers/utils/Xop_util_tst.java deleted file mode 100644 index 968efb115..000000000 --- a/400_xowa/src/gplx/xowa/parsers/utils/Xop_util_tst.java +++ /dev/null @@ -1,36 +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.utils; import gplx.*; import gplx.xowa.*; import gplx.xowa.parsers.*; -import org.junit.*; -public class Xop_util_tst { - private final Xop_util_fxt fxt = new Xop_util_fxt(); - @Test public void Basic() { - fxt.Init_random_int_ary(Int_.Ary(240563374, 22728940, 1451248133)); - fxt.Test_uniq_bry_new("UNIQE56B4AE15AD0EC68"); - - fxt.Init_random_int_ary(Int_.Ary(1363621437, 426295411, 421041101)); - fxt.Test_uniq_bry_new("UNIQ147363D968C07391"); - } -} -class Xop_util_fxt { - private final Xop_util util = new Xop_util(); - public Xop_util_fxt Init_random_int_ary(int... v) {util.Random_int_ary_(v); return this;} - public void Test_uniq_bry_new(String expd) { - Tfds.Eq_str(expd, String_.new_a7(util.Uniq_bry_new()), "unique_bry"); - } -} diff --git a/400_xowa/src/gplx/xowa/parsers/vnts/Vnt_convert_lang.java b/400_xowa/src/gplx/xowa/parsers/vnts/Vnt_convert_lang.java new file mode 100644 index 000000000..cca05b464 --- /dev/null +++ b/400_xowa/src/gplx/xowa/parsers/vnts/Vnt_convert_lang.java @@ -0,0 +1,189 @@ +/* +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.*; import gplx.dbs.*; +import gplx.xowa.langs.vnts.*; import gplx.xowa.langs.vnts.converts.*; +import gplx.xowa.parsers.htmls.*; +public class Vnt_convert_lang { + private final Xol_convert_mgr convert_mgr; private final Xol_vnt_regy vnt_regy; + private final Vnt_convert_rule converter_rule; private final Vnt_html_doc_wkr html_convert_wkr; private final Mwh_doc_parser doc_parser = new Mwh_doc_parser(); + private final Bry_bfr bfr = Bry_bfr.new_(255), tmp_frame_bfr = Bry_bfr.new_(255), tmp_convert_bfr = Bry_bfr.new_(255); + private byte[] src; private int src_len; private int pos; + private Vnt_log_mgr log_mgr; private int tag_bgn, tag_end; + public Vnt_convert_lang(Xol_convert_mgr convert_mgr, Xol_vnt_regy vnt_regy) { + this.convert_mgr = convert_mgr; this.vnt_regy = vnt_regy; + this.html_convert_wkr = new Vnt_html_doc_wkr(convert_mgr, vnt_regy); + this.converter_rule = new Vnt_convert_rule(this, vnt_regy, log_mgr); + } + public byte[] Converted_title() {return converted_title;} private byte[] converted_title; + public void Log__init(Db_conn conn) { + log_mgr = new Vnt_log_mgr(); + log_mgr.Init_by_db(conn, vnt_regy); + } + public byte[] Parse_page(Xol_vnt_itm vnt_itm, int page_id, byte[] src) {// REF.MW:/languages/LanguageConverter.php!recursiveConvertTopLevel + if (log_mgr != null) log_mgr.Init_by_page(page_id); + this.converted_title = null; + return Parse_bry(vnt_itm, src); + } + public byte[] Parse_bry(Xol_vnt_itm vnt_itm, byte[] src) { + boolean convert_needed = true; // false for sr lang; SEE:LanguageSr.php !$this->guessVariant(src, vnt); + this.pos = 0; + 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 + Add_output(vnt_itm, convert_needed, src, pos, src_len); + return bfr.To_bry_and_clear(); + } + boolean inside_tag = Is_inside_tag(pos, curly_bgn); + if (inside_tag) { + Add_output(vnt_itm, convert_needed, src, pos, tag_bgn); // Markup found; append segment + Auto_convert(bfr, vnt_itm, src, tag_bgn, tag_end); + pos = tag_end; + } + else { + Add_output(vnt_itm, convert_needed, src, pos, curly_bgn); // Markup found; append segment + pos = curly_bgn; // Advance position + bfr.Add(Parse_recursive(tmp_frame_bfr, vnt_itm, 1)); // Do recursive conversion + } + } + return bfr.To_bry_and_clear(); + } + private boolean Is_inside_tag(int prev_pos, int curly_bgn) { + if ( curly_bgn == 0 // -{ starts at BOS; EX: "-{A}-" + || curly_bgn == prev_pos // -{ starts after last pair; EX: "-{A}--{B}-" + ) return false; + int cur = curly_bgn - 1; + tag_bgn = tag_end = -1; + boolean loop = true; + while (loop) { // scan bwd for < + byte b = src[cur]; + switch (b) { + case Byte_ascii.Angle_bgn: tag_bgn = cur; loop = false; break; + case Byte_ascii.Angle_end: return false; // ">" found; "-{}-" not inside tag + default: --cur; break; + } + if (cur == prev_pos - 1) break; + } + if (tag_bgn == -1) return false; // no "<" found; + loop = true; + cur = curly_bgn + 1; // TODO: resume at }- + while (loop) { // scan fwd for > + byte b = src[cur]; + switch (b) { + case Byte_ascii.Angle_bgn: return false; // "<" found; "-{}-" not inside tag + case Byte_ascii.Angle_end: tag_end = cur + 1; return true; + default: ++cur; break; + } + if (cur == src_len) break; + } + return false; // no ">" foud + } + private byte[] Parse_recursive(Bry_bfr frame_bfr, Xol_vnt_itm vnt_itm, int depth) { + pos += 2; // skip "-{" + boolean warning_done = false; + boolean frame_bfr_dirty = false; + int bgn_pos = pos; + 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; + } + switch (((Byte_obj_val)o).Val()) { + case Tid__curly_bgn: + frame_bfr.Add_mid(src, bgn_pos, pos); // add everything from bgn of frame to cur pos; EX: "a" in "-{a-{b}-c}-" + frame_bfr_dirty = true; + if (depth >= max_depth) { + pos += 2; // skip "-{" + frame_bfr.Add(Bry__curly_bgn); + if (!warning_done) { + frame_bfr.Add_str("max depth"); + // wfMessage('language-converter-depth-warning')->numParams($this->mMaxDepth)->inContentLanguage()->text() + frame_bfr.Add_str(""); + warning_done = true; + } + continue; + } + frame_bfr.Add(Parse_recursive(Bry_bfr.new_(16), vnt_itm, depth + 1)); // Recursively parse another rule + bgn_pos = pos; + break; + case Tid__curly_end: + if (frame_bfr_dirty) { // recursive; use frame_bfr + frame_bfr.Add_mid(src, bgn_pos, pos); // add everything from bgn of frame to cur pos; EX: "a" in "-{a-{b}-c}-" + byte[] frame_bry = frame_bfr.To_bry_and_clear(); + converter_rule.Parse(vnt_itm, frame_bry, 0, frame_bry.length); + } + else // not recursive + converter_rule.Parse(vnt_itm, src, bgn_pos, pos); + Apply_manual_conv(converter_rule); + pos += 2; + return converter_rule.Display(); + default: throw Err_.new_unhandled(-1); // never happens + } + } + Auto_convert(frame_bfr, vnt_itm, src, bgn_pos, src_len); // Unclosed rule + pos = src_len; + return Bry_.Add(Bry__curly_bgn, frame_bfr.To_bry_and_clear()); + } + private void Add_output(Xol_vnt_itm vnt_itm, boolean convert_needed, byte[] src, int bgn, int end) { + if (end - bgn == 0) return; + if (convert_needed) { + Auto_convert(bfr, vnt_itm, src, bgn, end); + } + else + bfr.Add_mid(src, bgn, end); + } + public byte[] Auto_convert(Xol_vnt_itm vnt_itm, byte[] src) { + Auto_convert(tmp_convert_bfr, vnt_itm, src, 0, src.length); + return tmp_convert_bfr.To_bry_and_clear(); + } + private void Auto_convert(Bry_bfr bfr, Xol_vnt_itm vnt_itm, byte[] src, int bgn, int end) { + html_convert_wkr.Init(bfr, vnt_itm); + doc_parser.Parse(html_convert_wkr, src, bgn, end); + } + private void Apply_manual_conv(Vnt_convert_rule rule) { + this.converted_title = rule.Title(); + byte action = rule.Action(); + Vnt_rule_undi_mgr cnv_tbl = rule.Cnv_tbl(); + int len = cnv_tbl.Len(); + for (int i = 0; i < len; ++i) { + Vnt_rule_undi_grp grp = cnv_tbl.Get_at(i); + byte[] grp_key = grp.Vnt(); + Xol_vnt_itm vnt_itm = vnt_regy.Get_by(grp_key); if (vnt_itm == null) continue; + int grp_len = grp.Len(); + Xol_convert_wkr wkr = convert_mgr.Converter_ary()[vnt_itm.Idx()]; + for (int j = 0; j < grp_len; ++j) { + Vnt_rule_undi_itm itm = grp.Get_at(j); + if (action == Byte_ascii.Plus) { + wkr.Add(itm.Src(), itm.Trg()); + } + else if (action == Byte_ascii.Dash) + wkr.Del(itm.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); + public static final byte[] Bry__armor_bgn = Bry_.new_a7("-{R|"), Bry__armor_end = Bry_.new_a7("}-"); + private static final int max_depth = 32; +} diff --git a/400_xowa/src/gplx/xowa/parsers/vnts/Vnt_convert_lang__html__tst.java b/400_xowa/src/gplx/xowa/parsers/vnts/Vnt_convert_lang__html__tst.java new file mode 100644 index 000000000..4ebb131ab --- /dev/null +++ b/400_xowa/src/gplx/xowa/parsers/vnts/Vnt_convert_lang__html__tst.java @@ -0,0 +1,102 @@ +/* +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.langs.vnts.converts.*; +public class Vnt_convert_lang__html__tst { // REF: https://www.mediawiki.org/wiki/Writing_systems/Syntax + private final Vnt_convert_lang_fxt fxt = new Vnt_convert_lang_fxt(); + private String rule; + @Before public void init() { + rule = "-{H|zh-cn:cn;zh-hk:hk;zh-tw:tw}-"; + fxt.Clear(); + } + @Test public void Node() { + fxt.Test_parse(rule + "hkhkhk", "cncncn"); + } + @Test public void Attribs() { + fxt.Test_parse(rule + "hk", "cn"); + } + @Test public void Attribs__title() { + fxt.Test_parse(rule + "hk", "cn"); + } + @Test public void Attribs__alt() { + fxt.Test_parse(rule + "hk", "cn"); + } + @Test public void Attribs__alt_w_embedded_vnt() { // PURPOSE: handle embedded variants inside attribute tags; PAGE:sr.n:Проглашени_победници_„Вики_воли_Земљу" DATE:2015-10-13 + fxt.Test_parse(rule + "hk-{hk}-hk", "cnhkcn"); + } + @Test public void Attribs__skip_url() { + fxt.Test_parse(rule + "hk", "cn"); + } + @Test public void Node__script() { + fxt.Test_parse(rule + "hkhk", "cncn"); + } + @Test public void Node__code() { + fxt.Test_parse(rule + "hkhkhk", "cnhkcn"); + } + @Test public void Node__pre() { + fxt.Test_parse(rule + "hk
    hk
    hk", "cn
    hk
    cn"); + } + @Test public void Node__pre__nested() { + fxt.Test_parse(rule + "hk
    hk
    hk", "cn
    hk
    cn"); + } + @Test public void Recursive__deep() { + fxt.Test_parse("a-{b-{c-{d}-e}-f}-g", "abcdefg"); + } + @Test public void Recursive__many() { + fxt.Test_parse("a-{b-{c}-d-{e}-f}-g", "abcdefg"); + } + @Test public void Recursive__unclosed() { + fxt.Test_parse("a-{b-{c", "a-{b-{c"); + } + @Test public void Recursive__unclosed_2() { + fxt.Test_parse("a-{b-{c}-", "a-{bc"); + } + @Test public void Recursive__failed() { // PURPOSE: handle out of bounds exception; PAGE:zh.w:重庆市 ;DATE:2015-10-01 + fxt.Test_parse("-{zh-cn:a-{b}-c; zh-tw:d-{e}-f; }-", "abc"); + } + @Test public void Unclosed() { + fxt.Test_parse("a-{bc", "a-{bc"); + } + @Test public void Entity__body() { + fxt.Test_parse("-{H|zh-cn:nbsp-cn;zh-hk:nbsp;}-" + " nbsp", " nbsp-cn"); + } + @Test public void Entity__atr() { + fxt.Test_parse("-{H|zh-cn:nbsp-cn;zh-hk:nbsp;}-" + "
    " , "
    "); + } + @Test public void Node__example() { + fxt.Test_parse(rule + String_.Concat_lines_nl_skip_last + ( "{|" + , "|-" + , "|A
    " + , "|B
    " + , "-{zh-hans:C;zh-hant:D;}-" + , "|}") + , String_.Concat_lines_nl_skip_last + ( "{|" + , "|-" + , "|A
    " + , "|B
    " + , "C" + , "|}" + )); + } + @Test public void Attribs__title__w_vnt() { + fxt.Init_cur("zh-tw"); + fxt.Test_parse("cn", "cn"); // cn not converted to hk + } +} diff --git a/400_xowa/src/gplx/xowa/parsers/vnts/Vnt_converter_lang__syntax__tst.java b/400_xowa/src/gplx/xowa/parsers/vnts/Vnt_convert_lang__syntax__tst.java similarity index 85% rename from 400_xowa/src/gplx/xowa/parsers/vnts/Vnt_converter_lang__syntax__tst.java rename to 400_xowa/src/gplx/xowa/parsers/vnts/Vnt_convert_lang__syntax__tst.java index cfa7889df..8d57d2e16 100644 --- a/400_xowa/src/gplx/xowa/parsers/vnts/Vnt_converter_lang__syntax__tst.java +++ b/400_xowa/src/gplx/xowa/parsers/vnts/Vnt_convert_lang__syntax__tst.java @@ -17,8 +17,8 @@ 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.langs.vnts.converts.*; -public class Vnt_converter_lang__syntax__tst { // REF: https://www.mediawiki.org/wiki/Writing_systems/Syntax - private final Vnt_converter_lang_fxt fxt = new Vnt_converter_lang_fxt(); +public class Vnt_convert_lang__syntax__tst { // REF: https://www.mediawiki.org/wiki/Writing_systems/Syntax + private final Vnt_convert_lang_fxt fxt = new Vnt_convert_lang_fxt(); @Test public void Bidi() { String text = "-{zh-hans:a;zh-hant:b}-"; fxt.Test_parse_many(text, "a", "zh-hans", "zh-cn", "zh-sg", "zh"); @@ -81,23 +81,26 @@ public class Vnt_converter_lang__syntax__tst { // REF: https://www.mediawiki.org @Test public void Descrip__undi() {fxt.Test_parse("-{D|cn_k=>zh-cn:cn_v;hk_k=>zh-hk:hk_v}-", "cn_k⇒ZH-CN:cn_v;hk_k⇒ZH-HK:hk_v;");} @Test public void Descrip__mixd() {fxt.Test_parse("-{D|zh-tw:tw_v;cn_k=>zh-cn:cn_v;hk_k=>zh-hk:hk_v;zh-mo:mo_v}-", "ZH-TW:tw_v;ZH-MO:mo_v;cn_k⇒ZH-CN:cn_v;hk_k⇒ZH-HK:hk_v;");} } -class Vnt_converter_lang_fxt { - private final Vnt_converter_lang converter_lang; +class Vnt_convert_lang_fxt { + private final Vnt_convert_lang converter_lang; private final Xol_convert_mgr convert_mgr = new Xol_convert_mgr(); private final Xol_vnt_regy vnt_regy = Xol_vnt_regy_fxt.new_chinese(); private Xol_vnt_itm vnt_itm; - public Vnt_converter_lang_fxt() { - converter_lang = new Vnt_converter_lang(convert_mgr, vnt_regy); + public Vnt_convert_lang_fxt() { + converter_lang = new Vnt_convert_lang(convert_mgr, vnt_regy); + this.Clear(); + } + public void Clear() { convert_mgr.Init(vnt_regy); Init_cur("zh-cn"); } - public void Init_cur(String vnt) { + public Vnt_convert_lang_fxt Init_cur(String vnt) { byte[] cur_vnt = Bry_.new_a7(vnt); this.vnt_itm = vnt_regy.Get_by(cur_vnt); - convert_mgr.Cur_vnt_(cur_vnt); + return this; } public void Test_parse(String raw, String expd) { - Tfds.Eq_str(expd, String_.new_u8(converter_lang.Parse(vnt_itm, Bry_.new_u8(raw)))); + Tfds.Eq_str(expd, String_.new_u8(converter_lang.Parse_page(vnt_itm, -1, Bry_.new_u8(raw)))); } public void Test_parse_many(String raw, String expd, String... vnts) { int len = vnts.length; @@ -105,13 +108,13 @@ class Vnt_converter_lang_fxt { String vnt_key = vnts[i]; Init_cur(vnt_key); Xol_vnt_itm vnt = vnt_regy.Get_by(Bry_.new_a7(vnt_key)); - Tfds.Eq_str(expd, String_.new_u8(converter_lang.Parse(vnt, Bry_.new_u8(raw))), vnt_key); + Tfds.Eq_str(expd, String_.new_u8(converter_lang.Parse_page(vnt, -1, Bry_.new_u8(raw))), vnt_key); } } public void Test_parse_title(String raw, String expd_title, String expd_text, String vnt_key) { Init_cur(vnt_key); Xol_vnt_itm vnt = vnt_regy.Get_by(Bry_.new_a7(vnt_key)); - Tfds.Eq_str(expd_text, String_.new_u8(converter_lang.Parse(vnt, Bry_.new_u8(raw))), vnt_key); + Tfds.Eq_str(expd_text, String_.new_u8(converter_lang.Parse_page(vnt, -1, Bry_.new_u8(raw))), vnt_key); Tfds.Eq_str(expd_title, converter_lang.Converted_title()); } } diff --git a/400_xowa/src/gplx/xowa/parsers/vnts/Vnt_converter_rule.java b/400_xowa/src/gplx/xowa/parsers/vnts/Vnt_convert_rule.java similarity index 88% rename from 400_xowa/src/gplx/xowa/parsers/vnts/Vnt_converter_rule.java rename to 400_xowa/src/gplx/xowa/parsers/vnts/Vnt_convert_rule.java index 160e6f97a..83cb10772 100644 --- a/400_xowa/src/gplx/xowa/parsers/vnts/Vnt_converter_rule.java +++ b/400_xowa/src/gplx/xowa/parsers/vnts/Vnt_convert_rule.java @@ -18,24 +18,27 @@ 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.*; import gplx.xowa.langs.vnts.*; -class Vnt_converter_rule { // REF.MW: /languages/LanguageConverter.php|ConverterRule +class Vnt_convert_rule { // REF.MW: /languages/LanguageConverter.php|ConverterRule private final Vnt_flag_parser flag_parser = new Vnt_flag_parser(); private final Vnt_flag_code_mgr flag_codes = new Vnt_flag_code_mgr(); private final Vnt_flag_lang_mgr flag_langs = new Vnt_flag_lang_mgr(); private final Vnt_rule_parser rule_parser = new Vnt_rule_parser(); private final Vnt_rule_undi_mgr rule_undis = new Vnt_rule_undi_mgr(); private final Vnt_rule_bidi_mgr rule_bidis = new Vnt_rule_bidi_mgr(); private final Bry_bfr tmp_bfr = Bry_bfr.new_(); - private final Ordered_hash cnv_marked_hash = Ordered_hash_.new_bry_(); - private Vnt_converter_lang converter; - private Xol_vnt_regy vnt_regy; private Xol_vnt_itm vnt_itm; private byte[] vnt_key; + private final Ordered_hash cnv_marked_hash = Ordered_hash_.New_bry(); + private Vnt_convert_lang converter; + private Xol_vnt_regy vnt_regy; private byte[] vnt_key; + private Vnt_log_mgr log_mgr; private byte[] rule_raw; public byte[] Display() {return display;} private byte[] display; public byte[] Title() {return title;} private byte[] title; public byte Action() {return action;} private byte action; public Vnt_rule_undi_mgr Cnv_tbl() {return cnv_tbl;} private final Vnt_rule_undi_mgr cnv_tbl = new Vnt_rule_undi_mgr(); - public void Init(Vnt_converter_lang converter, Xol_vnt_regy vnt_regy, Xol_vnt_itm vnt_itm) { - this.converter = converter; - this.vnt_regy = vnt_regy; this.vnt_itm = vnt_itm; this.vnt_key = vnt_itm.Key(); - rule_parser.Init(vnt_regy); + public Vnt_convert_rule(Vnt_convert_lang converter, Xol_vnt_regy vnt_regy, Vnt_log_mgr log_mgr) { + this.converter = converter; this.log_mgr = log_mgr; + this.vnt_regy = vnt_regy; + flag_parser.Init(log_mgr); + rule_parser.Init(log_mgr, vnt_regy); } - public void Parse(byte[] src, int src_bgn, int src_end) { + public void Parse(Xol_vnt_itm vnt_itm, byte[] src, int src_bgn, int src_end) { + this.vnt_key = vnt_itm.Key(); this.display = this.title = null; this.action = Byte_ascii.Null; int pipe_pos = Bry_find_.Find_fwd(src, Byte_ascii.Pipe, src_bgn, src_end); @@ -61,9 +64,9 @@ class Vnt_converter_rule { // REF.MW: /languages/LanguageConverter.php|Converter flag_codes.Limit(Vnt_flag_code_.Tid_raw); } rule_parser.Clear(rule_undis, rule_bidis, rule_raw); - if (!flag_codes.Get(Vnt_flag_code_.Tid_raw) && !flag_codes.Get(Vnt_flag_code_.Tid_name)) { + if (!flag_codes.Get(Vnt_flag_code_.Tid_raw) && !flag_codes.Get(Vnt_flag_code_.Tid_name)) rule_parser.Parse(src, rule_bgn, src_end); - } + if (log_mgr != null) log_mgr.Log_rule(src_bgn, src_end, Bry_.Mid(src, src_bgn, src_end), flag_codes, flag_langs, rule_undis, rule_bidis); if (rule_undis.Has_none() && rule_bidis.Has_none()) { if ( flag_codes.Get(Vnt_flag_code_.Tid_add) || flag_codes.Get(Vnt_flag_code_.Tid_del) @@ -158,7 +161,7 @@ class Vnt_converter_rule { // REF.MW: /languages/LanguageConverter.php|Converter tmp_bfr.Add(undi_itm.Src()).Add(Bry__undi_spr).Add(undi_vnt.Name()).Add_byte_colon().Add(undi_itm.Trg()).Add_byte_semic(); } } - return tmp_bfr.Xto_bry_and_clear(); + return tmp_bfr.To_bry_and_clear(); } private byte[] Make_title(Xol_vnt_itm vnt) { if (vnt.Idx() == 0) { // for mainLanguageCode; EX: "zh" @@ -179,7 +182,7 @@ class Vnt_converter_rule { // REF.MW: /languages/LanguageConverter.php|Converter return rv; } private final static byte[] - Bry__error_bgn = Bry_.new_a7("") + Bry__error_bgn = Bry_.new_a7("vnt error") , Bry__error_end = Bry_.new_a7("") , Bry__undi_spr = Bry_.new_u8("⇒") ; diff --git a/400_xowa/src/gplx/xowa/parsers/vnts/Vnt_converter_lang.java b/400_xowa/src/gplx/xowa/parsers/vnts/Vnt_converter_lang.java deleted file mode 100644 index 2eb89f625..000000000 --- a/400_xowa/src/gplx/xowa/parsers/vnts/Vnt_converter_lang.java +++ /dev/null @@ -1,144 +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.vnts; import gplx.*; import gplx.xowa.*; import gplx.xowa.parsers.*; -import gplx.core.btries.*; import gplx.core.primitives.*; -import gplx.xowa.langs.vnts.*; import gplx.xowa.langs.vnts.converts.*; -import gplx.xowa.parsers.htmls.*; -public class Vnt_converter_lang { - 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; - private final Vnt_converter_rule converter_rule = new Vnt_converter_rule(); - private Xol_convert_mgr convert_mgr; private Xol_vnt_regy vnt_regy; // private Xol_vnt_mgr vnt_mgr; // private Xol_vnt_itm vnt_itm; - private final Mwh_doc_parser doc_parser = new Mwh_doc_parser(); - private final Vnt_html_doc_wkr html_convert_wkr; - private final Bry_bfr tmp_convert_bfr = Bry_bfr.new_(); - public Vnt_converter_lang(Xol_convert_mgr convert_mgr, Xol_vnt_regy vnt_regy) { - this.html_convert_wkr = new Vnt_html_doc_wkr(convert_mgr); - this.convert_mgr = convert_mgr; this.vnt_regy = vnt_regy; - } - public byte[] Converted_title() {return converted_title;} private byte[] converted_title; - public byte[] Parse(Xol_vnt_itm vnt_itm, byte[] src) {// REF.MW:/languages/LanguageConverter.php!recursiveConvertTopLevel - this.converted_title = null; - converter_rule.Init(this, vnt_regy, vnt_itm); - this.converted_title = null; - int markup_count = 0; - this.pos = 0; - this.convert_needed = true; // 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_itm, convert_needed, src, pos, src_len); - return bfr.Xto_bry_and_clear(); - } - Add_output(vnt_itm, convert_needed, src, pos, curly_bgn); // Markup found; append segment - pos = curly_bgn; // Advance position - ++markup_count; - Parse_recursive(vnt_itm, 1); // Do recursive conversion - } - return bfr.Xto_bry_and_clear(); - } - private void Parse_recursive(Xol_vnt_itm vnt_itm, int depth) { - pos += 2; // skip "-{" - boolean warning_done = false; - int bgn_pos = pos; - 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; - } - 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; - } - bgn_pos = pos; - Parse_recursive(vnt_itm, depth + 1); // Recursively parse another rule - break; - case Tid__curly_end: - converter_rule.Parse(src, bgn_pos, pos); - Apply_manual_conv(converter_rule); - bfr.Add(converter_rule.Display()); - pos += 2; - return; - default: throw Err_.new_unhandled(-1); // never happens - } - } - if (pos < src_len) { // Unclosed rule - bfr.Add(Bry__curly_bgn); - Auto_convert(bfr, vnt_itm, src, pos, src_len); - } - pos = src_len; - } - private void Add_output(Xol_vnt_itm vnt_itm, boolean convert_needed, byte[] src, int bgn, int end) { - if (end - bgn == 0) return; - if (convert_needed) { - Auto_convert(bfr, vnt_itm, src, bgn, end); - } - else - bfr.Add_mid(src, bgn, end); - } - public byte[] Auto_convert(Xol_vnt_itm vnt_itm, byte[] src) { - Auto_convert(tmp_convert_bfr, vnt_itm, src, 0, src.length); - return tmp_convert_bfr.Xto_bry_and_clear(); - } - private void Auto_convert(Bry_bfr bfr, Xol_vnt_itm vnt_itm, byte[] src, int bgn, int end) { - html_convert_wkr.Init(bfr, vnt_itm.Idx()); - doc_parser.Parse(html_convert_wkr, src, bgn, end); - } - private void Apply_manual_conv(Vnt_converter_rule rule) { - this.converted_title = rule.Title(); - byte action = rule.Action(); - Vnt_rule_undi_mgr cnv_tbl = rule.Cnv_tbl(); - int len = cnv_tbl.Len(); - for (int i = 0; i < len; ++i) { - Vnt_rule_undi_grp grp = cnv_tbl.Get_at(i); - byte[] grp_key = grp.Vnt(); - Xol_vnt_itm vnt_itm = vnt_regy.Get_by(grp_key); if (vnt_itm == null) continue; - int grp_len = grp.Len(); - Xol_convert_wkr wkr = convert_mgr.Converter_ary()[vnt_itm.Idx()]; - for (int j = 0; j < grp_len; ++j) { - Vnt_rule_undi_itm itm = grp.Get_at(j); - if (action == Byte_ascii.Plus) { - wkr.Add(itm.Src(), itm.Trg()); - } - else if (action == Byte_ascii.Dash) - wkr.Del(itm.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_converter_lang__html__tst.java b/400_xowa/src/gplx/xowa/parsers/vnts/Vnt_converter_lang__html__tst.java deleted file mode 100644 index 4b3e54d55..000000000 --- a/400_xowa/src/gplx/xowa/parsers/vnts/Vnt_converter_lang__html__tst.java +++ /dev/null @@ -1,53 +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.vnts; import gplx.*; import gplx.xowa.*; import gplx.xowa.parsers.*; -import org.junit.*; import gplx.xowa.langs.vnts.*; import gplx.xowa.langs.vnts.converts.*; -public class Vnt_converter_lang__html__tst { // REF: https://www.mediawiki.org/wiki/Writing_systems/Syntax - private final Vnt_converter_lang_fxt fxt = new Vnt_converter_lang_fxt(); - private String rule; - @Before public void init() { - rule = "-{H|zh-cn:cn;zh-hk:hk;zh-tw:tw}-"; - } - @Test public void Node() { - fxt.Test_parse(rule + "hkhkhk", "cncncn"); - } - @Test public void Attribs() { - fxt.Test_parse(rule + "hk", "cn"); - } - @Test public void Attribs__title() { - fxt.Test_parse(rule + "hk", "cn"); - } - @Test public void Attribs__alt() { - fxt.Test_parse(rule + "hk", "cn"); - } - @Test public void Attribs__skip_url() { - fxt.Test_parse(rule + "hk", "cn"); - } - @Test public void Node__style() { - fxt.Test_parse(rule + "hkhk", "cncn"); - } - @Test public void Node__code() { - fxt.Test_parse(rule + "hkhkhk", "cnhkcn"); - } - @Test public void Node__pre() { - fxt.Test_parse(rule + "hk
    hk
    hk", "cn
    hk
    cn"); - } - @Test public void Node__pre__nested() { - fxt.Test_parse(rule + "hk
    hk
    hk", "cn
    hk
    cn"); - } -} diff --git a/400_xowa/src/gplx/xowa/parsers/vnts/Vnt_flag_lang_mgr.java b/400_xowa/src/gplx/xowa/parsers/vnts/Vnt_flag_lang_mgr.java index 49e3b6b64..e12d41e59 100644 --- a/400_xowa/src/gplx/xowa/parsers/vnts/Vnt_flag_lang_mgr.java +++ b/400_xowa/src/gplx/xowa/parsers/vnts/Vnt_flag_lang_mgr.java @@ -18,11 +18,11 @@ 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 Vnt_flag_lang_mgr { - private final Ordered_hash regy = Ordered_hash_.new_bry_(); + private final Ordered_hash regy = Ordered_hash_.New_bry(); public int Count() {return regy.Count();} public boolean Has(byte[] vnt) {return regy.Has(vnt);} public void Clear() {regy.Clear();} - public void Add(Xol_vnt_itm itm) {regy.Add(itm.Key(), itm);} + public void Add(Xol_vnt_itm itm) {regy.Add_if_dupe_use_1st(itm.Key(), itm);} public Xol_vnt_itm Get_at(int i) {return (Xol_vnt_itm)regy.Get_at(i);} public void To_bfr__dbg(Bry_bfr bfr) { int len = regy.Count(); 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 index 046374eae..f5de7438d 100644 --- a/400_xowa/src/gplx/xowa/parsers/vnts/Vnt_flag_parser.java +++ b/400_xowa/src/gplx/xowa/parsers/vnts/Vnt_flag_parser.java @@ -21,6 +21,10 @@ class Vnt_flag_parser implements gplx.core.brys.Bry_split_wkr { private final Hash_adp_bry codes_regy = Vnt_flag_code_.Regy; private Vnt_flag_code_mgr codes; private Vnt_flag_lang_mgr langs; private Xol_vnt_regy vnt_regy; + private Vnt_log_mgr log_mgr; + public void Init(Vnt_log_mgr log_mgr) { + this.log_mgr = log_mgr; + } public void Parse(Vnt_flag_code_mgr codes, Vnt_flag_lang_mgr langs, Xol_vnt_regy vnt_regy, byte[] src, int src_bgn, int src_end) { this.codes = codes; this.langs = langs; this.vnt_regy = vnt_regy; codes.Clear(); langs.Clear(); @@ -54,6 +58,7 @@ class Vnt_flag_parser implements gplx.core.brys.Bry_split_wkr { if (flag_tid == -1) { // try to find flags like "zh-hans", "zh-hant"; allow syntaxes like "-{zh-hans;zh-hant|XXXX}-" Xol_vnt_itm vnt_itm = vnt_regy.Get_by(src, itm_bgn, itm_end); if (vnt_itm == null) return Bry_split_.Rv__ok; // unknown flag; ignore + if (log_mgr != null) log_mgr.Log_lang(vnt_itm, Vnt_log_mgr.Scope__lang); langs.Add(vnt_itm); return Bry_split_.Rv__ok; } diff --git a/400_xowa/src/gplx/xowa/parsers/vnts/Vnt_flag_parser_tst.java b/400_xowa/src/gplx/xowa/parsers/vnts/Vnt_flag_parser_tst.java index 08abbe0db..125e825e6 100644 --- a/400_xowa/src/gplx/xowa/parsers/vnts/Vnt_flag_parser_tst.java +++ b/400_xowa/src/gplx/xowa/parsers/vnts/Vnt_flag_parser_tst.java @@ -38,6 +38,7 @@ public class Vnt_flag_parser_tst { @Test public void Lang__one() {fxt.Test_parse("zh-hans" , "S;zh-hans");} @Test public void Lang__many() {fxt.Test_parse("zh-cn;zh-hk" , "S;zh-cn;zh-hk");} @Test public void Lang__many__ws() {fxt.Test_parse(" zh-cn ; zh-hk " , "S;zh-cn;zh-hk");} + @Test public void Lang__many__dupe() {fxt.Test_parse("zh-cn;zh-cn" , "S;zh-cn");} @Test public void Lang__zap__codes() {fxt.Test_parse("+;S;zh-hans;" , "zh-hans");} } class Vnt_flag_parser_fxt { @@ -50,6 +51,6 @@ class Vnt_flag_parser_fxt { parser.Parse(codes, langs, vnt_regy, src, 0, src.length); codes.To_bfr__dbg(bfr); langs.To_bfr__dbg(bfr); - Tfds.Eq_str(expd, bfr.Xto_str_and_clear()); + Tfds.Eq_str(expd, bfr.To_str_and_clear()); } } diff --git a/400_xowa/src/gplx/xowa/parsers/vnts/Vnt_html_doc_wkr.java b/400_xowa/src/gplx/xowa/parsers/vnts/Vnt_html_doc_wkr.java index 5071a8453..560576376 100644 --- a/400_xowa/src/gplx/xowa/parsers/vnts/Vnt_html_doc_wkr.java +++ b/400_xowa/src/gplx/xowa/parsers/vnts/Vnt_html_doc_wkr.java @@ -16,39 +16,46 @@ 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.parsers.htmls.*; import gplx.xowa.parsers.xndes.*; -import gplx.xowa.langs.vnts.converts.*; -import gplx.xowa.html.*; +import gplx.core.primitives.*; import gplx.core.btries.*; +import gplx.xowa.parsers.htmls.*; import gplx.xowa.parsers.xndes.*; import gplx.xowa.parsers.amps.*; +import gplx.xowa.langs.vnts.*; import gplx.xowa.langs.vnts.converts.*; +import gplx.xowa.htmls.*; class Vnt_html_doc_wkr implements Mwh_doc_wkr { private final Hash_adp_bry atr_hash = Hash_adp_bry.ci_a7(); + private final Xol_convert_mgr convert_mgr; private final Xol_vnt_regy vnt_regy; + private Vnt_convert_lang atr_converter; + private Xol_vnt_itm vnt_itm; private int convert_vnt_idx; private Bry_bfr bfr; - private final Xol_convert_mgr convert_mgr; private int convert_vnt_idx; - public Vnt_html_doc_wkr(Xol_convert_mgr convert_mgr) { - this.convert_mgr = convert_mgr; + public Vnt_html_doc_wkr(Xol_convert_mgr convert_mgr, Xol_vnt_regy vnt_regy) { + this.convert_mgr = convert_mgr; this.vnt_regy = vnt_regy; atr_hash.Add_many_str("title", "alt"); } public Hash_adp_bry Nde_regy() {return nde_regy;} private final Hash_adp_bry nde_regy = Mwh_doc_wkr_.Nde_regy__mw(); - public void Init(Bry_bfr bfr, int convert_vnt_idx) {this.bfr = bfr; this.convert_vnt_idx = convert_vnt_idx;} - public void On_atr_each (Mwh_atr_parser mgr, byte[] src, int nde_tid, boolean valid, boolean repeated, boolean key_exists, byte[] key_bry, byte[] val_bry_manual, int[] itm_ary, int itm_idx) { - int val_bgn = itm_ary[itm_idx + Mwh_atr_mgr.Idx_val_bgn]; - int val_end = itm_ary[itm_idx + Mwh_atr_mgr.Idx_val_end]; - if ( atr_hash.Get_by_mid(key_bry, 0, key_bry.length) == null // title, alt - || !key_exists - || Bry_find_.Find_fwd(src, Bry__url_frag, val_bgn, val_end) != Bry_find_.Not_found - ) { // handle name-only attribs like "" + public void Init(Bry_bfr bfr, Xol_vnt_itm vnt_itm) {this.bfr = bfr; this.vnt_itm = vnt_itm; this.convert_vnt_idx = vnt_itm.Idx();} + public void On_atr_each (Mwh_atr_parser mgr, byte[] src, int nde_tid, boolean valid, boolean repeated, boolean key_exists, byte[] key_bry, byte[] val_bry_manual, int[] itm_ary, int itm_idx) { + boolean literal = true; + if (atr_hash.Get_by_mid(key_bry, 0, key_bry.length) != null) { // title, alt + int val_bgn = itm_ary[itm_idx + Mwh_atr_mgr.Idx_val_bgn]; + int val_end = itm_ary[itm_idx + Mwh_atr_mgr.Idx_val_end]; + if (Bry_find_.Find_fwd(src, Bry__url_frag, val_bgn, val_end) == Bry_find_.Not_found) { // do not convert if urls are present + literal = false; + byte[] val_bry = val_bry_manual == null ? Bry_.Mid(src, val_bgn, val_end) : val_bry_manual; + if (atr_converter == null) atr_converter = new Vnt_convert_lang(convert_mgr, vnt_regy);// NOTE: late instantiation, or else StackOverflow error + val_bry = atr_converter.Parse_bry(vnt_itm, val_bry); + bfr.Add_byte_space(); + bfr.Add(key_bry); + bfr.Add_byte(Byte_ascii.Eq); + byte quote_byte = Mwh_atr_itm_.Calc_qte_byte(itm_ary, itm_idx); + bfr.Add_byte(quote_byte); + bfr.Add(val_bry); + bfr.Add_byte(quote_byte); + } + } + if (literal) { int atr_bgn = itm_ary[itm_idx + Mwh_atr_mgr.Idx_atr_bgn]; int atr_end = itm_ary[itm_idx + Mwh_atr_mgr.Idx_atr_end]; bfr.Add_mid(src, atr_bgn, atr_end); } - else { - bfr.Add_byte_space(); - bfr.Add(key_bry); - bfr.Add_byte(Byte_ascii.Eq); - byte quote_byte = Mwh_atr_itm.Calc_qte_byte(itm_ary, itm_idx); - bfr.Add_byte(quote_byte); - bfr.Add(convert_mgr.Convert_text(convert_vnt_idx, src, val_bgn, val_end)); - bfr.Add_byte(quote_byte); - } } public void On_txt_end (Mwh_doc_parser mgr, byte[] src, int nde_tid, int itm_bgn, int itm_end) { switch (nde_tid) { @@ -70,5 +77,6 @@ class Vnt_html_doc_wkr implements Mwh_doc_wkr { } public void On_nde_tail_end (Mwh_doc_parser mgr, byte[] src, int nde_tid, int itm_bgn, int itm_end) {bfr.Add_mid(src, itm_bgn, itm_end);} public void On_comment_end (Mwh_doc_parser mgr, byte[] src, int nde_tid, int itm_bgn, int itm_end) {bfr.Add_mid(src, itm_bgn, itm_end);} + public void On_entity_end (Mwh_doc_parser mgr, byte[] src, int nde_tid, int itm_bgn, int itm_end) {bfr.Add_mid(src, itm_bgn, itm_end);} private static final byte[] Bry__url_frag = Bry_.new_a7("://"); // REF.MW: if ( !strpos( $attr, '://' ) ) { } diff --git a/400_xowa/src/gplx/xowa/parsers/vnts/Vnt_log_mgr.java b/400_xowa/src/gplx/xowa/parsers/vnts/Vnt_log_mgr.java new file mode 100644 index 000000000..1560d87c6 --- /dev/null +++ b/400_xowa/src/gplx/xowa/parsers/vnts/Vnt_log_mgr.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.dbs.*; +import gplx.xowa.langs.vnts.*; +class Vnt_log_mgr { + private int uid; + private int page_id, rule_idx; + private Xol_vnt_regy vnt_regy; + private int[] vnt_ary = new int[10]; + private Vnt_log_tbl tbl; + public void Init_by_db(Db_conn conn, Xol_vnt_regy vnt_regy) { + this.vnt_regy = vnt_regy; + this.tbl = new Vnt_log_tbl(conn); + tbl.Create_tbl(); + this.uid = 0; + this.page_id = 0; + } + public void Init_by_page(int page_id) { + this.page_id = page_id; + this.rule_idx = -1; + for (int i = 0; i < 10; ++i) + vnt_ary[i] = 0; + } + public void Log_lang(byte[] vnt, int scope) {Log_lang(vnt_regy.Get_by(vnt), scope);} + public void Log_lang(Xol_vnt_itm itm, int scope) { + int idx = itm.Idx(); + int val = vnt_ary[idx]; + vnt_ary[idx] = val == 0 ? scope : val | scope; + } + public void Log_rule(int src_bgn, int src_end, byte[] src_txt, Vnt_flag_code_mgr flag_codes, Vnt_flag_lang_mgr flag_langs, Vnt_rule_undi_mgr rule_undis, Vnt_rule_bidi_mgr rule_bidis) { + tbl.Insert(uid, page_id, ++rule_idx + , flag_codes.Count(), flag_langs.Count(), rule_undis.Len(), rule_bidis.Len() + , flag_codes.Get(Vnt_flag_code_.Tid_add), flag_codes.Get(Vnt_flag_code_.Tid_del), flag_codes.Get(Vnt_flag_code_.Tid_aout), flag_codes.Get(Vnt_flag_code_.Tid_hide), flag_codes.Get(Vnt_flag_code_.Tid_raw), flag_codes.Get(Vnt_flag_code_.Tid_show), flag_codes.Get(Vnt_flag_code_.Tid_descrip), flag_codes.Get(Vnt_flag_code_.Tid_name), flag_codes.Get(Vnt_flag_code_.Tid_title), flag_codes.Get(Vnt_flag_code_.Tid_err) + , vnt_ary[0], vnt_ary[1], vnt_ary[2], vnt_ary[3], vnt_ary[4], vnt_ary[5], vnt_ary[6], vnt_ary[7], vnt_ary[8], vnt_ary[9] + , src_bgn, src_end, src_txt + ); + } + public void Rls() { + tbl.Rls(); + } + public static final int Scope__lang = 1, Scope__undi = 2, Scope__bidi = 4; +} diff --git a/400_xowa/src/gplx/xowa/parsers/vnts/Vnt_log_tbl.java b/400_xowa/src/gplx/xowa/parsers/vnts/Vnt_log_tbl.java new file mode 100644 index 000000000..6ea69776b --- /dev/null +++ b/400_xowa/src/gplx/xowa/parsers/vnts/Vnt_log_tbl.java @@ -0,0 +1,106 @@ +/* +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.dbs.*; +public class Vnt_log_tbl implements RlsAble { + private final String tbl_name = "log_vnt"; private final Db_meta_fld_list flds = Db_meta_fld_list.new_(); + private final String fld_uid, fld_page_id, fld_rule_idx + , fld_flag_count, fld_lang_count, fld_undi_count, fld_bidi_count + , fld_flag_add, fld_flag_del, fld_flag_aout, fld_flag_hide, fld_flag_raw, fld_flag_show, fld_flag_descrip, fld_flag_name, fld_flag_title, fld_flag_err + , fld_vnt_0, fld_vnt_1, fld_vnt_2, fld_vnt_3, fld_vnt_4, fld_vnt_5, fld_vnt_6, fld_vnt_7, fld_vnt_8, fld_vnt_9 + , fld_src_bgn, fld_src_end, fld_src_txt; + private Db_stmt stmt_insert; + public Vnt_log_tbl(Db_conn conn) { + this.conn = conn; + this.fld_uid = flds.Add_int("uid"); + this.fld_page_id = flds.Add_int("page_id"); + this.fld_rule_idx = flds.Add_int("rule_idx"); + this.fld_flag_count = flds.Add_int("flag_count"); + this.fld_lang_count = flds.Add_int("lang_count"); + this.fld_undi_count = flds.Add_int("undi_count"); + this.fld_bidi_count = flds.Add_int("bidi_count"); + this.fld_flag_add = flds.Add_int("flag_add"); + this.fld_flag_del = flds.Add_int("flag_del"); + this.fld_flag_aout = flds.Add_int("flag_aout"); + this.fld_flag_hide = flds.Add_int("flag_hide"); + this.fld_flag_raw = flds.Add_int("flag_raw"); + this.fld_flag_show = flds.Add_int("flag_show"); + this.fld_flag_descrip = flds.Add_int("flag_descrip"); + this.fld_flag_name = flds.Add_int("flag_name"); + this.fld_flag_title = flds.Add_int("flag_title"); + this.fld_flag_err = flds.Add_int("flag_err"); + this.fld_vnt_0 = flds.Add_int("vnt_0"); + this.fld_vnt_1 = flds.Add_int("vnt_1"); + this.fld_vnt_2 = flds.Add_int("vnt_2"); + this.fld_vnt_3 = flds.Add_int("vnt_3"); + this.fld_vnt_4 = flds.Add_int("vnt_4"); + this.fld_vnt_5 = flds.Add_int("vnt_5"); + this.fld_vnt_6 = flds.Add_int("vnt_6"); + this.fld_vnt_7 = flds.Add_int("vnt_7"); + this.fld_vnt_8 = flds.Add_int("vnt_8"); + this.fld_vnt_9 = flds.Add_int("vnt_9"); + this.fld_src_bgn = flds.Add_int("src_bgn"); + this.fld_src_end = flds.Add_int("src_end"); + this.fld_src_txt = flds.Add_text("src_txt"); + conn.Rls_reg(this); + } + public Db_conn Conn() {return conn;} private final Db_conn conn; + public void Rls() { + stmt_insert = Db_stmt_.Rls(stmt_insert); + } + public void Create_tbl() {conn.Ddl_create_tbl(Db_meta_tbl.new_(tbl_name, flds));} + public void Insert(int uid, int page_id, int rule_idx, int flag_count, int lang_count, int undi_count, int bidi_count + , boolean flag_add, boolean flag_del, boolean flag_aout, boolean flag_hide, boolean flag_raw, boolean flag_show, boolean flag_descrip, boolean flag_name, boolean flag_title, boolean flag_err + , int vnt_0, int vnt_1, int vnt_2, int vnt_3, int vnt_4, int vnt_5, int vnt_6, int vnt_7, int vnt_8, int vnt_9 + , int src_bgn, int src_end, byte[] src_txt + ) { + if (stmt_insert == null) stmt_insert = conn.Stmt_insert(tbl_name, flds); + stmt_insert.Clear() + .Val_int(fld_uid, uid) + .Val_int(fld_page_id, page_id) + .Val_int(fld_rule_idx, rule_idx) + .Val_int(fld_flag_count, flag_count) + .Val_int(fld_lang_count, lang_count) + .Val_int(fld_undi_count, undi_count) + .Val_int(fld_bidi_count, bidi_count) + .Val_int_by_bool(fld_flag_add, flag_add) + .Val_int_by_bool(fld_flag_del, flag_del) + .Val_int_by_bool(fld_flag_aout, flag_aout) + .Val_int_by_bool(fld_flag_hide, flag_hide) + .Val_int_by_bool(fld_flag_raw, flag_raw) + .Val_int_by_bool(fld_flag_show, flag_show) + .Val_int_by_bool(fld_flag_descrip, flag_descrip) + .Val_int_by_bool(fld_flag_name, flag_name) + .Val_int_by_bool(fld_flag_title, flag_title) + .Val_int_by_bool(fld_flag_err, flag_err) + .Val_int(fld_vnt_0, vnt_0) + .Val_int(fld_vnt_1, vnt_1) + .Val_int(fld_vnt_2, vnt_2) + .Val_int(fld_vnt_3, vnt_3) + .Val_int(fld_vnt_4, vnt_4) + .Val_int(fld_vnt_5, vnt_5) + .Val_int(fld_vnt_6, vnt_6) + .Val_int(fld_vnt_7, vnt_7) + .Val_int(fld_vnt_8, vnt_8) + .Val_int(fld_vnt_9, vnt_9) + .Val_int(fld_src_bgn, src_bgn) + .Val_int(fld_src_end, src_end) + .Val_bry_as_str(fld_src_txt, src_txt) + .Exec_insert(); + } +} diff --git a/400_xowa/src/gplx/xowa/parsers/vnts/Vnt_rule_bidi_mgr.java b/400_xowa/src/gplx/xowa/parsers/vnts/Vnt_rule_bidi_mgr.java index b812aca51..807449dca 100644 --- a/400_xowa/src/gplx/xowa/parsers/vnts/Vnt_rule_bidi_mgr.java +++ b/400_xowa/src/gplx/xowa/parsers/vnts/Vnt_rule_bidi_mgr.java @@ -17,7 +17,7 @@ along with this program. If not, see . */ package gplx.xowa.parsers.vnts; import gplx.*; import gplx.xowa.*; import gplx.xowa.parsers.*; class Vnt_rule_bidi_mgr { - private final Ordered_hash hash = Ordered_hash_.new_bry_(); + private final Ordered_hash hash = Ordered_hash_.New_bry(); public int Len() {return hash.Count();} public boolean Has_none() {return hash.Count() == 0;} public void Clear() {hash.Clear();} 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 index 81d346d3e..9133408f5 100644 --- a/400_xowa/src/gplx/xowa/parsers/vnts/Vnt_rule_parser.java +++ b/400_xowa/src/gplx/xowa/parsers/vnts/Vnt_rule_parser.java @@ -21,9 +21,11 @@ import gplx.xowa.langs.vnts.*; class Vnt_rule_parser implements gplx.core.brys.Bry_split_wkr { private final Btrie_slim_mgr vnt_trie = Btrie_slim_mgr.ci_a7(); private Vnt_rule_undi_mgr undis; private Vnt_rule_bidi_mgr bidis; - private int src_end, src_len; private byte[] rule_raw; + private int src_end; private byte[] rule_raw; public byte[] Raw() {return rule_raw;} - public void Init(Xol_vnt_regy vnt_regy) { + private Vnt_log_mgr log_mgr; + public void Init(Vnt_log_mgr log_mgr, Xol_vnt_regy vnt_regy) { + this.log_mgr = log_mgr; this.vnt_trie.Clear(); int len = vnt_regy.Len(); for (int i = 0; i < len; ++i) { @@ -37,23 +39,23 @@ class Vnt_rule_parser implements gplx.core.brys.Bry_split_wkr { this.rule_raw = rule_raw; } public void Parse(byte[] src, int src_bgn, int src_end) { - this.src_end = src_end; this.src_len = src.length; + this.src_end = src_end; Bry_split_.Split(src, src_bgn, src_end, Byte_ascii.Semic, false, this); // trim=false for "&#entity;" check below } public int Split(byte[] src, int itm_bgn, int itm_end) { // macro=>zh-hans:text; int html_entity_pos = Bry_find_.Find_bwd_while_alphanum(src, itm_end); byte html_entity_byte = src[html_entity_pos]; - if (html_entity_byte == Byte_ascii.Hash) html_entity_byte = src[html_entity_pos - 2]; // skip #; EX: { - if (html_entity_byte == Byte_ascii.Amp) return Bry_split_.Rv__extend; // reject "&#entity;"; EX: " zh-hans;" + if (html_entity_byte == Byte_ascii.Hash) html_entity_byte = src[html_entity_pos - 2]; // skip #; EX: { + if (html_entity_byte == Byte_ascii.Amp) return Bry_split_.Rv__extend; // reject "&#entity;"; EX: " zh-hans;" if (itm_end != src_end) { - int nxt_lang_bgn = Bry_find_.Find_fwd(src, Bry__bidi_dlm, itm_end + 1, src_len); // look for next "=>" + int nxt_lang_bgn = Bry_find_.Find_fwd(src, Bry__bidi_dlm, itm_end + 1, src_end); // look for next "=>" if (nxt_lang_bgn == Bry_find_.Not_found) - nxt_lang_bgn = Bry_find_.Find_fwd_while_ws(src, itm_end + 1, src_len); // skip any ws after end ";"; EX: "a:1; b:2"; NOTE: +1 to skip semic; + nxt_lang_bgn = Bry_find_.Find_fwd_while_ws(src, itm_end + 1, src_end); // skip any ws after end ";"; EX: "a:1; b:2"; NOTE: +1 to skip semic; else nxt_lang_bgn += 2; - int nxt_lang_end = Bry_find_.Find_fwd(src, Byte_ascii.Colon, nxt_lang_bgn, src_len); // get colon; + int nxt_lang_end = Bry_find_.Find_fwd(src, Byte_ascii.Colon, nxt_lang_bgn, src_end); // get colon; if (nxt_lang_end != Bry_find_.Not_found) { - nxt_lang_end = Bry_find_.Find_bwd__skip_ws(src, nxt_lang_end, src_len); // trim + nxt_lang_end = Bry_find_.Find_bwd__skip_ws(src, nxt_lang_end, src_end); // trim if (vnt_trie.Match_bgn(src, nxt_lang_bgn, nxt_lang_end) == null) return Bry_split_.Rv__extend; // reject ";not_variant"; EX: ";border" in "zh-hans:;zh-hant:" } } @@ -65,21 +67,24 @@ class Vnt_rule_parser implements gplx.core.brys.Bry_split_wkr { undi_end = Bry_find_.Find_bwd__skip_ws(src, undi_end, undi_bgn); // trim ws from end of bd; } Object vnt_obj = vnt_trie.Match_bgn(src, lang_bgn, itm_end); - if (vnt_obj == null) { + if (vnt_obj == null) return (itm_bgn == 0) ? Bry_split_.Rv__cancel : Bry_split_.Rv__extend; // if 1st item; cancel rest; otherwise, extend - } int lang_end = vnt_trie.Match_pos(); int text_bgn = Bry_find_.Find_fwd_while_ws(src, lang_end, itm_end); if (src[text_bgn] != Byte_ascii.Colon) return Bry_split_.Rv__extend; ++text_bgn; Xol_vnt_itm vnt_itm = (Xol_vnt_itm)vnt_obj; byte[] vnt_key = vnt_itm.Key(); byte[] text_bry = Bry_.Mid_w_trim(src, text_bgn, itm_end); - if (undi_end == Bry_find_.Not_found) + if (undi_end == Bry_find_.Not_found) { + if (log_mgr != null) log_mgr.Log_lang(vnt_itm, Vnt_log_mgr.Scope__bidi); bidis.Set(vnt_key, text_bry); + } else { byte[] undi_bry = Bry_.Mid(src, undi_bgn, undi_end); - if (itm_end - text_bgn > 0) + if (itm_end - text_bgn > 0) { + if (log_mgr != null) log_mgr.Log_lang(vnt_itm, Vnt_log_mgr.Scope__undi); undis.Set(vnt_key, undi_bry, text_bry); + } } return Bry_split_.Rv__ok; } diff --git a/400_xowa/src/gplx/xowa/parsers/vnts/Vnt_rule_parser_fxt.java b/400_xowa/src/gplx/xowa/parsers/vnts/Vnt_rule_parser_fxt.java index bff4c5c24..760a2c53c 100644 --- a/400_xowa/src/gplx/xowa/parsers/vnts/Vnt_rule_parser_fxt.java +++ b/400_xowa/src/gplx/xowa/parsers/vnts/Vnt_rule_parser_fxt.java @@ -25,13 +25,13 @@ class Vnt_rule_parser_fxt { vnt_regy.Add(Bry_.new_a7("x1"), Bry_.new_a7("lang1")); vnt_regy.Add(Bry_.new_a7("x2"), Bry_.new_a7("lang2")); vnt_regy.Add(Bry_.new_a7("x3"), Bry_.new_a7("lang3")); - parser.Init(vnt_regy); + parser.Init(null, vnt_regy); } public void Test_parse(String raw, String... expd_ary) { byte[] src = Bry_.new_u8(raw); parser.Clear(undis, bidis, src); parser.Parse(src, 0, src.length); parser.To_bry__dbg(bfr); - Tfds.Eq_str_lines(String_.Concat_lines_nl_skip_last(expd_ary), bfr.Xto_str_and_clear()); + Tfds.Eq_str_lines(String_.Concat_lines_nl_skip_last(expd_ary), bfr.To_str_and_clear()); } } diff --git a/400_xowa/src/gplx/xowa/parsers/vnts/Vnt_rule_undi_mgr.java b/400_xowa/src/gplx/xowa/parsers/vnts/Vnt_rule_undi_mgr.java index f4735675a..b99ccb870 100644 --- a/400_xowa/src/gplx/xowa/parsers/vnts/Vnt_rule_undi_mgr.java +++ b/400_xowa/src/gplx/xowa/parsers/vnts/Vnt_rule_undi_mgr.java @@ -17,7 +17,7 @@ along with this program. If not, see . */ package gplx.xowa.parsers.vnts; import gplx.*; import gplx.xowa.*; import gplx.xowa.parsers.*; class Vnt_rule_undi_mgr { - private final Ordered_hash hash = Ordered_hash_.new_bry_(); + private final Ordered_hash hash = Ordered_hash_.New_bry(); public int Len() {return hash.Count();} public boolean Has_none() {return hash.Count() == 0;} public void Clear() {hash.Clear();} @@ -51,7 +51,7 @@ class Vnt_rule_undi_mgr { } } class Vnt_rule_undi_grp { - private final Ordered_hash hash = Ordered_hash_.new_bry_(); + private final Ordered_hash hash = Ordered_hash_.New_bry(); public Vnt_rule_undi_grp(byte[] vnt) {this.vnt = vnt;} public int Len() {return hash.Count();} public Vnt_rule_undi_itm Get_at(int i) {return (Vnt_rule_undi_itm)hash.Get_at(i);} diff --git a/400_xowa/src/gplx/xowa/parsers/vnts/Xop_vnt_flag.java b/400_xowa/src/gplx/xowa/parsers/vnts/Xop_vnt_flag.java deleted file mode 100644 index bbc4502f6..000000000 --- a/400_xowa/src/gplx/xowa/parsers/vnts/Xop_vnt_flag.java +++ /dev/null @@ -1,75 +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.vnts; import gplx.*; import gplx.xowa.*; import gplx.xowa.parsers.*; -import gplx.core.btries.*; -public class Xop_vnt_flag { - 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_ { // REF.MW: /languages/LanguageConverter.php - public static final Xop_vnt_flag[] Ary_empty = new Xop_vnt_flag[0]; - 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" - , Tid_err = 3 // EX: -{E|zh-hans:A;zh-hant:B}- -> "A" - , Tid_add = 4 // add and output; EX: -{A|zh-hans:A;zh-hant:B}- -> "A" - , Tid_title = 5 // page_title; EX: -{T|zh-hans:A;zh-hant:B}- -> "" - , Tid_raw = 6 // raw: no convert; EX: -{R|zh-hans:A;zh-hant:B}- -> "zh-hans:A;zh-hant:B" - , Tid_descrip = 7 // 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 // 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" - , 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) - , Flag_all = new Xop_vnt_flag(Tid_all) - , Flag_err = new Xop_vnt_flag(Tid_err) - , Flag_add = new Xop_vnt_flag(Tid_add) - , Flag_title = new Xop_vnt_flag(Tid_title) - , Flag_raw = new Xop_vnt_flag(Tid_raw) - , Flag_descrip = new Xop_vnt_flag(Tid_descrip) - , Flag_del = new Xop_vnt_flag(Tid_del) - , Flag_macro = new Xop_vnt_flag(Tid_macro) - , Flag_name = new Xop_vnt_flag(Tid_name) - ; - public static final Btrie_fast_mgr Trie = Btrie_fast_mgr.ci_a7() // NOTE: match either lc or uc; EX: -{D}- or -{d}-; // NOTE:ci.ascii:MW_const.en; flag keys; EX: -{S|a}- - .Add(Byte_ascii.Ltr_S , Xop_vnt_flag_.Flag_show) - .Add(Byte_ascii.Plus , Xop_vnt_flag_.Flag_all) - .Add(Byte_ascii.Ltr_E , Xop_vnt_flag_.Flag_err) - .Add(Byte_ascii.Ltr_A , Xop_vnt_flag_.Flag_add) - .Add(Byte_ascii.Ltr_T , Xop_vnt_flag_.Flag_title) - .Add(Byte_ascii.Ltr_R , Xop_vnt_flag_.Flag_raw) - .Add(Byte_ascii.Ltr_D , Xop_vnt_flag_.Flag_descrip) - .Add(Byte_ascii.Dash , Xop_vnt_flag_.Flag_del) - .Add(Byte_ascii.Ltr_H , Xop_vnt_flag_.Flag_macro) - .Add(Byte_ascii.Ltr_N , Xop_vnt_flag_.Flag_name) - ; -} diff --git a/400_xowa/src/gplx/xowa/parsers/vnts/Xop_vnt_flag_parser.java b/400_xowa/src/gplx/xowa/parsers/vnts/Xop_vnt_flag_parser.java deleted file mode 100644 index 2c738ef84..000000000 --- a/400_xowa/src/gplx/xowa/parsers/vnts/Xop_vnt_flag_parser.java +++ /dev/null @@ -1,92 +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.vnts; import gplx.*; import gplx.xowa.*; import gplx.xowa.parsers.*; -import gplx.core.btries.*; -import gplx.xowa.langs.vnts.*; -class Xop_vnt_flag_parser { - 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) { - 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(); - boolean loop = true; - while (loop) { - Xop_tkn_itm sub = vnt_tkn.Subs_get(rslt_tkn_pos); - switch (sub.Tkn_tid()) { - 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; - 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()); - break; - } - ++rslt_tkn_pos; - if (rslt_tkn_pos == subs_len) 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: "-{|}-" - 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) { - int vnt_pos = 0; - boolean loop = true; - Btrie_slim_mgr trie = vnt_regy.Trie(); - while (loop) { - 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_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|}- - 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(((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 final Btrie_fast_mgr flag_trie = Xop_vnt_flag_.Trie; -} diff --git a/400_xowa/src/gplx/xowa/parsers/vnts/Xop_vnt_html_wtr.java b/400_xowa/src/gplx/xowa/parsers/vnts/Xop_vnt_html_wtr.java deleted file mode 100644 index 868b1df49..000000000 --- a/400_xowa/src/gplx/xowa/parsers/vnts/Xop_vnt_html_wtr.java +++ /dev/null @@ -1,77 +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.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) { - 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: "" - case Xop_vnt_html_wtr.Cmd_error: // original token; "-{A}-" - bfr.Add_mid(src, vnt.Src_bgn(), vnt.Src_end()); - break; - case Xop_vnt_html_wtr.Cmd_literal: { // val only; "A" - 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_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_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 - 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" - bfr.Add_mid(src, vnt.Vnt_pipe_idx_last(), vnt.Src_end() - 2); - 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); - break; - } - case Xop_vnt_html_wtr.Cmd_title: break; // title: ignore; already handled during parse; DATE:2014-08-29 - } - } - 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_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; - } - public static final byte - Cmd_error = 0 // eror -> output literal; EX: "-{some_unknown_error}-" -> "-{some_unknown_error}-" - , Cmd_empty = 1 // empty -> output nothing; EX: "-{}-" -> "" - , Cmd_literal = 2 // literal EX: "-{A}-" -> "A" - , Cmd_bidi = 3 // bidi EX: "-{zh-hans:A;zh-hant:B}-" -> "A" if zh-hans; "B" if zh-hant - , Cmd_lang = 4 // lang EX: "-{zh-hans|A}-" -> "A" if zh-hans; "" if zh-hant - , Cmd_raw = 5 // raw; text in -{}- EX: "-{R|zh-hans:A;zh-hant:B}- -> "zh-hans:A;zh-hant:B" - , Cmd_descrip = 6 // describe; output rules EX: "-{D|zh-hans:A;zh-hant:B}- -> "简体:A;繁體:B;" - , Cmd_title = 7 // title; change title EX: "-{T|zh-hans:A;zh-hant:B}- -> "A" as display title - ; -} 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 deleted file mode 100644 index 43672840b..000000000 --- a/400_xowa/src/gplx/xowa/parsers/vnts/Xop_vnt_lang_bldr.java +++ /dev/null @@ -1,33 +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.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 : Bitmask_.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/parsers/vnts/Xop_vnt_lxr.java b/400_xowa/src/gplx/xowa/parsers/vnts/Xop_vnt_lxr.java deleted file mode 100644 index ca32459f7..000000000 --- a/400_xowa/src/gplx/xowa/parsers/vnts/Xop_vnt_lxr.java +++ /dev/null @@ -1,73 +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.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 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 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(); - flag_parser = new Xop_vnt_flag_parser(vnt_mgr); - 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; - Xop_vnt_tkn vnt_tkn = (Xop_vnt_tkn)ctx.Stack_pop_til(root, src, stack_pos, false, bgn_pos, cur_pos, Xop_tkn_itm_.Tid_vnt); - Xowe_wiki wiki = ctx.Wiki(); - try { - vnt_tkn.Src_end_(cur_pos); - vnt_tkn.Subs_move(root); - Xop_vnt_flag[] vnt_flag_ary = Xop_vnt_flag_.Ary_empty; - int rule_subs_bgn = 0; - int pipe_tkn_count = vnt_tkn.Vnt_pipe_tkn_count(); - if (pipe_tkn_count > 0) { - flag_parser.Parse(wiki, ctx.Cur_page().Url(), vnt_tkn, pipe_tkn_count, src); - vnt_flag_ary = flag_parser.Rslt_flags(); - rule_subs_bgn = flag_parser.Rslt_tkn_pos(); - vnt_tkn.Vnt_pipe_idx_last_(flag_parser.Rslt_pipe_last()); - } - vnt_tkn.Vnt_flags_(vnt_flag_ary); - 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); - } - catch (Exception e) { - ctx.App().Usr_dlg().Warn_many("", "", "vnt.parse failed: page=~{0} src=~{1} err=~{2}", ctx.Cur_page().Ttl().Raw(), String_.new_u8(src, bgn_pos, cur_pos), Err_.Message_gplx_full(e)); - if (vnt_tkn != null) - root.Subs_add(tkn_mkr.Bry_mid(src, vnt_tkn.Src_bgn(), cur_pos)); - } - return cur_pos; - } -} 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 deleted file mode 100644 index a154d5617..000000000 --- a/400_xowa/src/gplx/xowa/parsers/vnts/Xop_vnt_lxr_.java +++ /dev/null @@ -1,46 +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.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/parsers/vnts/Xop_vnt_parser__html__tst.java b/400_xowa/src/gplx/xowa/parsers/vnts/Xop_vnt_parser__html__tst.java deleted file mode 100644 index 6f0f80c13..000000000 --- a/400_xowa/src/gplx/xowa/parsers/vnts/Xop_vnt_parser__html__tst.java +++ /dev/null @@ -1,79 +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.vnts; import gplx.*; import gplx.xowa.*; import gplx.xowa.parsers.*; -import org.junit.*; -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_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-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() { - fxt.Parser_fxt().Init_page_create("Template:A", "B"); - fxt.Test_parse("-{{{A}}}-", "B"); - } - @Test public void Tmpl_arg_4() { // PURPOSE: handle "-{" + "{{{" - fxt.Parser_fxt().Init_page_create("Template:A", "-{{{{1}}}}-"); - fxt.Test_parse("{{A|B}}", "B"); // -{ {{{1}}} }- -> -{B}- -> B - } - @Test public void Tmpl_arg_3() { // PURPOSE: handle "-" + "{{{"; PAGE:sr.w:ДНК; EX: DATE:2014-07-03 - fxt.Parser_fxt().Init_page_create("Template:A", "-{{{1}}}-"); - fxt.Test_parse("{{A|B}}", "-B-"); - } - @Test public void Parser_function() { - fxt.Test_parse("-{{{#expr:1}}}-", "1"); - } - @Test public void Ignore() { - fxt.Test_parse("-{{#expr:1}}-", "-1-"); - } - @Test public void Expr() { - fxt.Parser_fxt().Init_page_create("Template:A", "{{#expr: 0-{{{1|2}}}}}"); - fxt.Test_parse("{{A}}", "-2"); - } - @Test public void Invalid() { // PURPOSE: invalid flags should cause vnt to render text only; DATE:2014-04-10 - fxt.Test_parse("-{:a|b}-", "b"); - } - @Test public void Macro_ignore() { // PURPOSE: ignore macro (implement later); EX:zh.v:西安; Template:pagebanner; DATE:2014-05-03 - fxt.Test_parse("-{H|zh-cn:亚琛; zh-tw:阿亨;}-", ""); - } - @Test public void Title() { // PURPOSE: implement title; PAGE:zh.w:Help:進階字詞轉換處理 DATE:2014-08-29 - 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())); - } -// @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 deleted file mode 100644 index 51a1ae1e0..000000000 --- a/400_xowa/src/gplx/xowa/parsers/vnts/Xop_vnt_parser__tkn__basic__tst.java +++ /dev/null @@ -1,153 +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.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(Bitmask_.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 (Bitmask_.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 deleted file mode 100644 index 953633ec8..000000000 --- a/400_xowa/src/gplx/xowa/parsers/vnts/Xop_vnt_parser__tkn__macro__tst.java +++ /dev/null @@ -1,42 +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.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 deleted file mode 100644 index 331f43c27..000000000 --- a/400_xowa/src/gplx/xowa/parsers/vnts/Xop_vnt_parser_fxt.java +++ /dev/null @@ -1,46 +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.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/parsers/vnts/Xop_vnt_rule_tkn.java b/400_xowa/src/gplx/xowa/parsers/vnts/Xop_vnt_rule_tkn.java deleted file mode 100644 index 3e7cd56f4..000000000 --- a/400_xowa/src/gplx/xowa/parsers/vnts/Xop_vnt_rule_tkn.java +++ /dev/null @@ -1,28 +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.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 deleted file mode 100644 index 841a2eac6..000000000 --- a/400_xowa/src/gplx/xowa/parsers/vnts/Xop_vnt_rules_parser.java +++ /dev/null @@ -1,172 +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.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 deleted file mode 100644 index 946e73f0f..000000000 --- a/400_xowa/src/gplx/xowa/parsers/vnts/Xop_vnt_rules_parser_.java +++ /dev/null @@ -1,60 +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.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/parsers/vnts/Xop_vnt_tkn.java b/400_xowa/src/gplx/xowa/parsers/vnts/Xop_vnt_tkn.java deleted file mode 100644 index a7fe1a887..000000000 --- a/400_xowa/src/gplx/xowa/parsers/vnts/Xop_vnt_tkn.java +++ /dev/null @@ -1,71 +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.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); - vnt_pipe_idx_last = bgn + Xop_vnt_lxr_.Hook_bgn.length; // default last pipe to pos after -{ - } - @Override public byte Tkn_tid() {return Xop_tkn_itm_.Tid_vnt;} - public int Vnt_pipe_tkn_count() {return vnt_pipe_tkn_count;} - 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_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; - int rules_len = vnt_rules.length; - 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_tkn rule_0 = vnt_rules[0]; - if ( rules_len == 1 // only one rule - && 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) - vnt_cmd = Xop_vnt_html_wtr.Cmd_bidi; - } - } - else if (flags_len == 1){ // 1 flag; common case - Xop_vnt_flag flag_0 = vnt_flags[0]; - switch (flag_0.Tid()) { - case Xop_vnt_flag_.Tid_lang : vnt_cmd = Xop_vnt_html_wtr.Cmd_lang; break; - case Xop_vnt_flag_.Tid_raw : vnt_cmd = Xop_vnt_html_wtr.Cmd_raw; break; - case Xop_vnt_flag_.Tid_descrip : vnt_cmd = Xop_vnt_html_wtr.Cmd_descrip; break; - case Xop_vnt_flag_.Tid_unknown : vnt_cmd = Xop_vnt_html_wtr.Cmd_literal; break; // flag is unknown; output text as literal; EX: "-{|a}-"; "-{X|a}-" - 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; - 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()); - byte[] display_ttl = tmp_bfr.To_bry_and_rls(); - page.Html_data().Display_ttl_vnt_(display_ttl); - } - break; - } - } - } - } -} diff --git a/400_xowa/src/gplx/xowa/parsers/xndes/Xop_xatr_hash.java b/400_xowa/src/gplx/xowa/parsers/xndes/Xop_xatr_hash.java deleted file mode 100644 index bb4525391..000000000 --- a/400_xowa/src/gplx/xowa/parsers/xndes/Xop_xatr_hash.java +++ /dev/null @@ -1,47 +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.xndes; import gplx.*; import gplx.xowa.*; import gplx.xowa.parsers.*; -public class Xop_xatr_hash { - private final Ordered_hash hash = Ordered_hash_.new_bry_(); - private final byte[] src; - Xop_xatr_hash(byte[] src) {this.src = src;} - public int Len() {return hash.Count();} - public Xop_xatr_itm Get_at(int idx) { - return (Xop_xatr_itm)hash.Get_at(idx); - } - public Xop_xatr_itm Get_by(String key) { - return (Xop_xatr_itm)hash.Get_by(Bry_.new_u8(key)); - } - public byte[] Get_as_bry_or(String key, byte[] or) { - Xop_xatr_itm itm = Get_by(key); - return itm == null ? or : itm.Val_as_bry(src); - } - public boolean Match(String key, String val) { - Xop_xatr_itm itm = Get_by(key); if (itm == null) return false; - return String_.Eq(itm.Val_as_str(src), val); - } - private void Add(Xop_xatr_itm itm) { - hash.Add_if_dupe_use_nth(itm.Key_bry(), itm); - } - public static Xop_xatr_hash new_ary(byte[] src, Xop_xatr_itm[] ary) { - Xop_xatr_hash rv = new Xop_xatr_hash(src); - for (Xop_xatr_itm itm : ary) - rv.Add(itm); - return rv; - } -} diff --git a/400_xowa/src/gplx/xowa/parsers/xndes/Xop_xatr_itm.java b/400_xowa/src/gplx/xowa/parsers/xndes/Xop_xatr_itm.java deleted file mode 100644 index 90c398b41..000000000 --- a/400_xowa/src/gplx/xowa/parsers/xndes/Xop_xatr_itm.java +++ /dev/null @@ -1,65 +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.xndes; import gplx.*; import gplx.xowa.*; import gplx.xowa.parsers.*; -public class Xop_xatr_itm { - public static final byte Tid_null = 0, Tid_invalid = 1, Tid_repeat = 2, Tid_key_val = 3, Tid_key_only = 4; // NOTE: id order is important; see below; - public byte Tid() {return tid;} private byte tid; - public void Tid_to_repeat_() {tid = Tid_repeat;} - public void Tid_to_invalid_() {tid = Tid_invalid;} - public boolean Tid_is_key_only() {return tid == Tid_key_only;} - public int Key_bgn() {return key_bgn;} private int key_bgn; - public int Key_end() {return key_end;} private int key_end; - public byte[] Key_bry() {return key_bry;} public Xop_xatr_itm Key_bry_(byte[] v) {key_bry = v; return this;} private byte[] key_bry; - public byte[] Val_bry() {return val_bry;} public Xop_xatr_itm Val_bry_(byte[] v) {val_bry = v; return this;} private byte[] val_bry; - public void Key_rng_(int key_bgn, int key_end) {this.key_bgn = key_bgn; this.key_end = key_end;} - public byte Key_tid() {return key_tid;} public Xop_xatr_itm Key_tid_(byte v) {key_tid = v; return this;} private byte key_tid; - public int Val_bgn() {return val_bgn;} private int val_bgn; - public int Val_end() {return val_end;} private int val_end; - public int Atr_bgn() {return atr_bgn;} private int atr_bgn; - public int Atr_end() {return atr_end;} private int atr_end; - public int Eq_pos() {return eq_pos;} private int eq_pos; - public boolean Invalid() {return tid < Tid_key_val;} // NOTE: Tid order is important - public byte Quote_byte() {return quote_byte;} private byte quote_byte; - public String Val_as_str(byte[] src) {return String_.new_u8(Val_as_bry(src));} - public byte[] Val_as_bry(byte[] src) {if (val_bry == null) val_bry = Bry_.Mid(src, val_bgn, val_end); return val_bry;} // NOTE: val_bry is cached - public byte[] Val_as_bry__blank_to_null(byte[] src) {byte[] rv = Val_as_bry(src); return Bry_.Len_eq_0(rv) ? null : rv;} - public int Val_as_int_or(byte[] src, int or) {return val_bry == null ? Bry_.To_int_or__lax(src, val_bgn, val_end, or) : Bry_.To_int_or(val_bry, or);} - public boolean Val_as_bool_by_int(byte[] src) {return Val_as_int_or(src, 0) == 1;} - public boolean Val_as_bool(byte[] src) {return Bry_.Eq(Bry_.Lcase__all(Val_as_bry(src)), Bool_.True_bry);} - public static Xop_xatr_itm[] Xatr_parse(Xoae_app app, Xop_xnde_atr_parser parser, Hash_adp_bry hash, Xowe_wiki wiki, byte[] src, Xop_xnde_tkn xnde) { - Xop_xatr_itm[] xatr_ary = app.Xatr_parser().Parse(app.Msg_log(), src, xnde.Atrs_bgn(), xnde.Atrs_end()); - for (int i = 0; i < xatr_ary.length; i++) { - Xop_xatr_itm xatr = xatr_ary[i]; - if (xatr.Invalid()) continue; - Object xatr_key_obj = hash.Get_by_mid(src, xatr.Key_bgn(), xatr.Key_end()); - parser.Xatr_parse(wiki, src, xatr, xatr_key_obj); - } - return xatr_ary; - } - public Xop_xatr_itm(int atr_bgn, int atr_end) { - this.tid = Tid_invalid; this.atr_bgn = atr_bgn; this.atr_end = atr_end; - } - public Xop_xatr_itm(byte quote_byte, int atr_bgn, int atr_end, int key_bgn, int key_end) { - this.tid = Tid_key_only; this.quote_byte = quote_byte; this.atr_bgn = atr_bgn; this.atr_end = atr_end; this.key_bgn = key_bgn; this.key_end = key_end; this.val_bgn = key_bgn; this.val_end = key_end; - } - public Xop_xatr_itm(byte quote_byte, int atr_bgn, int atr_end, int key_bgn, int key_end, int val_bgn, int val_end, int eq_pos) { - this.tid = Tid_key_val; this.quote_byte = quote_byte; this.atr_bgn = atr_bgn; this.atr_end = atr_end; this.key_bgn = key_bgn; this.key_end = key_end; this.val_bgn = val_bgn; this.val_end = val_end; this.eq_pos = eq_pos; - } - public static final Xop_xatr_itm[] Ary_empty = new Xop_xatr_itm[0]; - public static final byte Key_tid_generic = 0, Key_tid_id = 1, Key_tid_style = 2, Key_tid_role = 3; -} 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 deleted file mode 100644 index 8aaf30ca3..000000000 --- a/400_xowa/src/gplx/xowa/parsers/xndes/Xop_xatr_parser.java +++ /dev/null @@ -1,408 +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.xndes; import gplx.*; import gplx.xowa.*; import gplx.xowa.parsers.*; -import gplx.core.primitives.*; -public class Xop_xatr_parser { // REF.MW:Sanitizer.php|decodeTagAttributes;MW_ATTRIBS_REGEX - private final List_adp xatrs = List_adp_.new_(); - private static final byte Mode_atr_bgn = 1, Mode_invalid = 2, Mode_key = 3, Mode_eq = 4, Mode_val_bgn = 5, Mode_val_quote = 6, Mode_val_raw = 7; - private byte mode = Mode_atr_bgn; - private int atr_bgn = -1, key_bgn = -1, key_end = -1, eq_pos = -1, val_bgn = -1, val_end = -1; boolean valid = true; - private byte quote_byte = Byte_ascii.Null; - private final Hash_adp_bry repeated_atrs_hash = Hash_adp_bry.ci_a7(); // ASCII:xnde_atrs - private final Bry_bfr key_bfr = Bry_bfr.new_(), val_bfr = Bry_bfr.new_(); - private boolean key_bfr_on = false, val_bfr_on = false, ws_is_before_val = false; - public Bry_obj_ref Bry_obj() {return bry_ref;} private final Bry_obj_ref bry_ref = Bry_obj_ref.null_(); - public int Xnde_find_gt_find(byte[] src, int pos, int end) { - bry_ref.Val_(null); - byte b = src[pos]; - if (b == Byte_ascii.Slash && pos + 1 < end) { // if x> ; PAGE:en.s:Notes_by_the_Way/Chapter_2; DATE:2015-01-31 - valid = false; - if (atr_bgn != -1) { // atr_bgn will be -1 if atrs ends on quoted (EX:"a='b'"); else, pending atr that needs to be processed; EX: "a=b" b wil be in bfr - val_end = end; - Make(log_mgr, src, end); - } - break; - } - } - else if (i > end) - break; - byte b = src[i]; - switch (mode) { - case Mode_atr_bgn: - switch (b) { - case Byte_ascii.Space: case Byte_ascii.Nl: case Byte_ascii.Tab: // skip any ws at bgn; note that once a non-ws char is encountered, it will immediately go into another mode - break; - 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: - case Byte_ascii.Ltr_A: case Byte_ascii.Ltr_B: case Byte_ascii.Ltr_C: case Byte_ascii.Ltr_D: case Byte_ascii.Ltr_E: - case Byte_ascii.Ltr_F: case Byte_ascii.Ltr_G: case Byte_ascii.Ltr_H: case Byte_ascii.Ltr_I: case Byte_ascii.Ltr_J: - case Byte_ascii.Ltr_K: case Byte_ascii.Ltr_L: case Byte_ascii.Ltr_M: case Byte_ascii.Ltr_N: case Byte_ascii.Ltr_O: - case Byte_ascii.Ltr_P: case Byte_ascii.Ltr_Q: case Byte_ascii.Ltr_R: case Byte_ascii.Ltr_S: case Byte_ascii.Ltr_T: - case Byte_ascii.Ltr_U: case Byte_ascii.Ltr_V: case Byte_ascii.Ltr_W: case Byte_ascii.Ltr_X: case Byte_ascii.Ltr_Y: case Byte_ascii.Ltr_Z: - case Byte_ascii.Ltr_a: case Byte_ascii.Ltr_b: case Byte_ascii.Ltr_c: case Byte_ascii.Ltr_d: case Byte_ascii.Ltr_e: - case Byte_ascii.Ltr_f: case Byte_ascii.Ltr_g: case Byte_ascii.Ltr_h: case Byte_ascii.Ltr_i: case Byte_ascii.Ltr_j: - case Byte_ascii.Ltr_k: case Byte_ascii.Ltr_l: case Byte_ascii.Ltr_m: case Byte_ascii.Ltr_n: case Byte_ascii.Ltr_o: - case Byte_ascii.Ltr_p: case Byte_ascii.Ltr_q: case Byte_ascii.Ltr_r: case Byte_ascii.Ltr_s: case Byte_ascii.Ltr_t: - case Byte_ascii.Ltr_u: case Byte_ascii.Ltr_v: case Byte_ascii.Ltr_w: case Byte_ascii.Ltr_x: case Byte_ascii.Ltr_y: case Byte_ascii.Ltr_z: - case Byte_ascii.Colon: - if (atr_bgn == -1) atr_bgn = i; - mode = Mode_key; - key_bgn = i; - break; - case Byte_ascii.Lt: - int gt_pos = Xnde_find_gt(log_mgr, src, i, end); - if (gt_pos == String_.Find_none) { - valid = false; mode = Mode_invalid; if (atr_bgn == -1) atr_bgn = i; - } - else { - i = gt_pos; // note that there is ++i below and loop will continue at gt_pos + 1 (next character after) - } - break; - default: - valid = false; mode = Mode_invalid; if (atr_bgn == -1) atr_bgn = i; - break; - } - break; - case Mode_invalid: - switch (b) { - case Byte_ascii.Space: case Byte_ascii.Nl: case Byte_ascii.Tab: - Make(log_mgr, src, i); - mode = Mode_atr_bgn; - break; - default: - break; - } - break; - case Mode_key: - 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: - case Byte_ascii.Ltr_A: case Byte_ascii.Ltr_B: case Byte_ascii.Ltr_C: case Byte_ascii.Ltr_D: case Byte_ascii.Ltr_E: - case Byte_ascii.Ltr_F: case Byte_ascii.Ltr_G: case Byte_ascii.Ltr_H: case Byte_ascii.Ltr_I: case Byte_ascii.Ltr_J: - case Byte_ascii.Ltr_K: case Byte_ascii.Ltr_L: case Byte_ascii.Ltr_M: case Byte_ascii.Ltr_N: case Byte_ascii.Ltr_O: - case Byte_ascii.Ltr_P: case Byte_ascii.Ltr_Q: case Byte_ascii.Ltr_R: case Byte_ascii.Ltr_S: case Byte_ascii.Ltr_T: - case Byte_ascii.Ltr_U: case Byte_ascii.Ltr_V: case Byte_ascii.Ltr_W: case Byte_ascii.Ltr_X: case Byte_ascii.Ltr_Y: case Byte_ascii.Ltr_Z: - case Byte_ascii.Ltr_a: case Byte_ascii.Ltr_b: case Byte_ascii.Ltr_c: case Byte_ascii.Ltr_d: case Byte_ascii.Ltr_e: - case Byte_ascii.Ltr_f: case Byte_ascii.Ltr_g: case Byte_ascii.Ltr_h: case Byte_ascii.Ltr_i: case Byte_ascii.Ltr_j: - case Byte_ascii.Ltr_k: case Byte_ascii.Ltr_l: case Byte_ascii.Ltr_m: case Byte_ascii.Ltr_n: case Byte_ascii.Ltr_o: - case Byte_ascii.Ltr_p: case Byte_ascii.Ltr_q: case Byte_ascii.Ltr_r: case Byte_ascii.Ltr_s: case Byte_ascii.Ltr_t: - case Byte_ascii.Ltr_u: case Byte_ascii.Ltr_v: case Byte_ascii.Ltr_w: case Byte_ascii.Ltr_x: case Byte_ascii.Ltr_y: case Byte_ascii.Ltr_z: - case Byte_ascii.Colon: case Byte_ascii.Dash: case Byte_ascii.Dot: case Byte_ascii.Underline: - if (key_bfr_on) key_bfr.Add_byte(b); - break; - case Byte_ascii.Space: case Byte_ascii.Nl: case Byte_ascii.Tab: - if (valid) { - key_end = i; - mode = Mode_eq; - } - else - Make(log_mgr, src, i); - break; - case Byte_ascii.Eq: - if (valid) { - key_end = i; - mode = Mode_val_bgn; - eq_pos = i; - } - break; - case Byte_ascii.Lt: - int gt_pos = Xnde_find_gt(log_mgr, src, i, end); - if (gt_pos == String_.Find_none) { - valid = false; mode = Mode_invalid; - } - else { - if (!key_bfr_on) key_bfr.Add_mid(src, key_bgn, i); - i = gt_pos; // note that there is ++i below and loop will continue at gt_pos + 1 (next character after) - key_bfr_on = true; - } - break; - default: - valid = false; mode = Mode_invalid; - break; - } - break; - case Mode_eq: - switch (b) { - case Byte_ascii.Space: case Byte_ascii.Nl: case Byte_ascii.Tab: // skip ws - if (key_end == -1) { // EX: "a = b"; key_end != -1 b/c 1st \s sets key_end; EX: "a b = c"; key_end - val_end = i - 1; - Make(log_mgr, src, i); - mode = Mode_atr_bgn; - continue; - } - break; - case Byte_ascii.Eq: - eq_pos = i; - mode = Mode_val_bgn; - break; - case Byte_ascii.Quote: case Byte_ascii.Apos: // FUTURE: previous word was key - default: // NOTE: added this late; xml_parser was not handling "line start=3" DATE:2013-07-03 - val_end = i - 1; - Make(log_mgr, src, i); - mode = Mode_atr_bgn; - continue; - } - break; - case Mode_val_bgn: - switch (b) { - case Byte_ascii.Space: case Byte_ascii.Nl: case Byte_ascii.Tab: // skip-ws - ws_is_before_val = true; - break; - case Byte_ascii.Quote: case Byte_ascii.Apos: - mode = Mode_val_quote; quote_byte = b; prv_is_ws = false; - break; - 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: - case Byte_ascii.Ltr_A: case Byte_ascii.Ltr_B: case Byte_ascii.Ltr_C: case Byte_ascii.Ltr_D: case Byte_ascii.Ltr_E: - case Byte_ascii.Ltr_F: case Byte_ascii.Ltr_G: case Byte_ascii.Ltr_H: case Byte_ascii.Ltr_I: case Byte_ascii.Ltr_J: - case Byte_ascii.Ltr_K: case Byte_ascii.Ltr_L: case Byte_ascii.Ltr_M: case Byte_ascii.Ltr_N: case Byte_ascii.Ltr_O: - case Byte_ascii.Ltr_P: case Byte_ascii.Ltr_Q: case Byte_ascii.Ltr_R: case Byte_ascii.Ltr_S: case Byte_ascii.Ltr_T: - case Byte_ascii.Ltr_U: case Byte_ascii.Ltr_V: case Byte_ascii.Ltr_W: case Byte_ascii.Ltr_X: case Byte_ascii.Ltr_Y: case Byte_ascii.Ltr_Z: - case Byte_ascii.Ltr_a: case Byte_ascii.Ltr_b: case Byte_ascii.Ltr_c: case Byte_ascii.Ltr_d: case Byte_ascii.Ltr_e: - case Byte_ascii.Ltr_f: case Byte_ascii.Ltr_g: case Byte_ascii.Ltr_h: case Byte_ascii.Ltr_i: case Byte_ascii.Ltr_j: - case Byte_ascii.Ltr_k: case Byte_ascii.Ltr_l: case Byte_ascii.Ltr_m: case Byte_ascii.Ltr_n: case Byte_ascii.Ltr_o: - case Byte_ascii.Ltr_p: case Byte_ascii.Ltr_q: case Byte_ascii.Ltr_r: case Byte_ascii.Ltr_s: case Byte_ascii.Ltr_t: - case Byte_ascii.Ltr_u: case Byte_ascii.Ltr_v: case Byte_ascii.Ltr_w: case Byte_ascii.Ltr_x: case Byte_ascii.Ltr_y: case Byte_ascii.Ltr_z: - case Byte_ascii.Colon: - case Byte_ascii.Hash: - mode = Mode_val_raw; - val_bgn = i; - break; - case Byte_ascii.Lt: - int gt_pos = Xnde_find_gt(log_mgr, src, i, end); - if (gt_pos == String_.Find_none) { - valid = false; mode = Mode_invalid; - } - else { - i = gt_pos; // note that there is ++i below and loop will continue at gt_pos + 1 (next character after) - } - break; - default: - break; - } - break; - case Mode_val_quote: - if (val_bgn == -1) val_bgn = i; - switch (b) { - case Byte_ascii.Quote: case Byte_ascii.Apos: - if (quote_byte == b) { - val_end = i; - Make(log_mgr, src, i + 1); // NOTE: set atr_end *after* quote - } - prv_is_ws = false; if (val_bfr_on) val_bfr.Add_byte(b); // INLINE: add char - break; - case Byte_ascii.Lt: // "<" try to find nowiki inside atr - int gt_pos = Xnde_find_gt(log_mgr, src, i, end); - if (gt_pos == String_.Find_none) { - // valid = false; mode = Mode_invalid; // DELETE: 2012-11-13; unpaired < should not mark atr invalid; EX: style='margin:1em. -*/ -package gplx.xowa.parsers.xndes; import gplx.*; import gplx.xowa.*; import gplx.xowa.parsers.*; -import org.junit.*; import gplx.core.tests.*; -public class Xop_xatr_parser_tst { - private final Xop_xatr_parser_fxt fxt = new Xop_xatr_parser_fxt(); - @Test public void Kv_quote_double() {fxt.tst_("a=\"b\"", fxt.new_atr_("a", "b"));} - @Test public void Kv_quote_single() {fxt.tst_("a='b'", fxt.new_atr_("a", "b"));} - @Test public void Kv_quote_none() {fxt.tst_("a=b", fxt.new_atr_("a", "b"));} - @Test public void Kv_empty() {fxt.tst_("a=''", fxt.new_atr_("a", ""));} - @Test public void Kv_key_has_underline() {fxt.tst_("a_b=c", fxt.new_atr_("a_b", "c"));} - @Test public void Val_quote_none() {fxt.tst_("b", fxt.new_atr_("b", "b"));} - @Test public void Val_quote_none_ws() {fxt.tst_(" b ", fxt.new_atr_("b", "b"));} // PURPOSE:discovered while writing test for ref's "lower-alpha" DATE:2014-07-03 - @Test public void Invalid_key_plus() {fxt.tst_("a+b", fxt.new_invalid_(0, 3));} - @Test public void Invalid_key_plus_many() {fxt.tst_("a+b c=d", fxt.new_invalid_(0, 3), fxt.new_atr_("c", "d"));} - @Test public void Invalid_val_plus() {fxt.tst_("a=b+c", fxt.new_invalid_(0, 5));} - @Test public void Invalid_recover() {fxt.tst_("* a=b", fxt.new_invalid_(0, 1), fxt.new_atr_("a", "b"));} // PURPOSE: * is invalid, but should not stop parsing of a=b - @Test public void Nowiki_val() {fxt.tst_("a='b'", fxt.new_atr_("a", "b").Expd_atr_rng_(0, 13).Expd_key_("a").Expd_val_("b"));} - @Test public void Nowiki_key() {fxt.tst_("a=b", fxt.new_atr_("a", "b").Expd_atr_rng_(8, 11));} - @Test public void Nowiki_key_2() {fxt.tst_("abc=d", fxt.new_atr_("abc", "d").Expd_atr_rng_(0, 22));} - @Test public void Nowiki_key_3() {fxt.tst_("a=\"b\"", fxt.new_atr_("a", "b").Expd_atr_rng_(0, 22));} // EX:fr.w:{{Portail|Transpédia|Californie}} - @Test public void Nowiki_quote() {fxt.tst_("a=\"bcdef\"", fxt.new_atr_("a", "bcdef"));} - @Test public void Int_value() {fxt.tst_int("a='-123'", -123);} - @Test public void Many_apos() {fxt.tst_("a='b' c='d' e='f'", fxt.new_atr_("a", "b"), fxt.new_atr_("c", "d"), fxt.new_atr_("e", "f"));} - @Test public void Many_raw() {fxt.tst_("a=b c=d e=f", fxt.new_atr_("a", "b"), fxt.new_atr_("c", "d"), fxt.new_atr_("e", "f"));} - @Test public void Ws_ini() {fxt.tst_(" a='b'", fxt.new_atr_("a", "b").Expd_atr_rng_(1, 6));} - @Test public void Ws_end() {fxt.tst_(" a='b' c='d'", fxt.new_atr_("a", "b").Expd_atr_rng_(1, 6), fxt.new_atr_("c", "d").Expd_atr_rng_(7, 12));} - @Test public void Quote_ws_nl() {fxt.tst_("a='b\nc'", fxt.new_atr_("a", "b c"));} - @Test public void Quote_ws_mult() {fxt.tst_("a='b c'", fxt.new_atr_("a", "b c"));} - @Test public void Quote_ws_mult_mult() {fxt.tst_("a='b c d'", fxt.new_atr_("a", "b c d"));} // PURPOSE: fix wherein 1st-gobble gobbled rest of spaces (was b cd) - @Test public void Quote_apos() {fxt.tst_("a=\"b c'd\"", fxt.new_atr_("a", "b c'd"));} // PURPOSE: fix wherein apos was gobbled up; PAGE:en.s:Alice's_Adventures_in_Wonderland; DATE:2013-11-22 - @Test public void Quote_apos_2() {fxt.tst_("a=\"b'c d\"", fxt.new_atr_("a", "b'c d"));} // PURPOSE: fix wherein apos was causing "'b'c d"; PAGE:en.s:Grimm's_Household_Tales,_Volume_1; DATE:2013-12-22 - @Test public void Multiple() {fxt.tst_("a b1 c", fxt.new_atr_("a", "a"), fxt.new_atr_("b1", "b1"), fxt.new_atr_("c", "c"));} - @Test public void Ws() {fxt.tst_("a = 'b'", fxt.new_atr_("a", "b"));} // PURPOSE: fix wherein multiple space was causing "a=a"; PAGE:fr.s:La_Sculpture_dans_les_cimetières_de_Paris/Père-Lachaise; DATE:2014-01-18 - @Test public void Dangling_eos() {fxt.tst_("a='b' c='d", fxt.new_atr_("a", "b"), fxt.new_invalid_(6, 10));} // PURPOSE: handle dangling quote at eos; PAGE:en.w:Aubervilliers DATE:2014-06-25 - @Test public void Dangling_bos() {fxt.tst_("a='b c=d", fxt.new_invalid_(0, 4), fxt.new_atr_("c", "d"));} // PURPOSE: handle dangling quote at bos; resume at next valid atr; PAGE:en.w:Aubervilliers DATE:2014-06-25 - @Test public void Invalid_incomplete() {fxt.tst_("a= c=d", fxt.new_invalid_(0, 3), fxt.new_atr_("c", "d"));} // PURPOSE: discard xatr if incomplete and followed by valid atr; PAGE:en.w:2013_in_American_television DATE:2014-09-25 - @Test public void Invalid_incomplete_2() {fxt.tst_("a=c=d", fxt.new_invalid_(0, 5));} // PURPOSE: variation of above; per MW regex, missing space invalidates entire attribute; DATE:2014-09-25 - @Test public void Invalid_incomplete_pair(){fxt.tst_("a= b=", fxt.new_invalid_(0, 3), fxt.new_invalid_(3, 5));} // PURPOSE: "b=" should be invalid not a kv of "b" = "b"; PAGE:en.s:Notes_by_the_Way/Chapter_2; DATE:2015-01-31 -/* -TODO: -change ws to be end; EX: "a=b c=d" atr1 ends at 4 (not 3) -*/ -// @Test public void Val_quote_none_many() { -// fxt.tst_("a b", fxt.new_atr_("", "a"), fxt.new_atr_("", "b")); -//// fxt.tst_("a='b' c d e='f'", fxt.new_atr_("a", "b"), fxt.new_atr_("", "c"), fxt.new_atr_("", "d"), fxt.new_atr_("e", "f")); -// } -} -class Xop_xatr_parser_fxt { - Xop_xatr_parser parser = new Xop_xatr_parser(); - Tst_mgr tst_mgr = new Tst_mgr(); - public Xop_xatr_itm_chkr new_invalid_(int bgn, int end) {return new Xop_xatr_itm_chkr().Expd_atr_rng_(bgn, end).Expd_typeId_(Xop_xatr_itm.Tid_invalid);} - public Xop_xatr_itm_chkr new_atr_(String key, String val) {return new Xop_xatr_itm_chkr().Expd_key_(key).Expd_val_(val);} - public void tst_(String src_str, Xop_xatr_itm_chkr... expd) { - byte[] src = Bry_.new_u8(src_str); - Gfo_msg_log msg_log = new Gfo_msg_log(Xoa_app_.Name); - Xop_xatr_itm[] actl = parser.Parse(msg_log, src, 0, src.length); - tst_mgr.Vars().Clear().Add("raw_bry", src); - tst_mgr.Tst_ary("xatr:", expd, actl); - } - public void tst_int(String src_str, int... expd) { - byte[] src = Bry_.new_u8(src_str); - Gfo_msg_log msg_log = new Gfo_msg_log(Xoa_app_.Name); - Xop_xatr_itm[] actl_atr = parser.Parse(msg_log, src, 0, src.length); - int[] actl = new int[actl_atr.length]; - - for (int i = 0; i < actl.length; i++) - actl[i] = actl_atr[i].Val_as_int_or(src, 0); - Tfds.Eq_ary(expd, actl); - } -} -class Xop_xatr_itm_chkr implements Tst_chkr { - public Class TypeOf() {return Xop_xatr_itm.class;} - public Xop_xatr_itm_chkr Expd_atr_rng_(int bgn, int end) {expd_atr_bgn = bgn; expd_atr_end = end; return this;} private int expd_atr_bgn = -1, expd_atr_end = -1; - public Xop_xatr_itm_chkr Expd_key_rng_(int bgn, int end) {expd_key_bgn = bgn; expd_key_end = end; return this;} private int expd_key_bgn = -1, expd_key_end = -1; - public Xop_xatr_itm_chkr Expd_key_(String v) {expd_key = v; return this;} private String expd_key; - public Xop_xatr_itm_chkr Expd_val_(String v) {expd_val = v; return this;} private String expd_val; - public Xop_xatr_itm_chkr Expd_typeId_(byte v) {expd_typeId = v; return this;} private byte expd_typeId = Xop_xatr_itm.Tid_null; - public int Chk(Tst_mgr mgr, String path, Object actl_obj) { - Xop_xatr_itm actl = (Xop_xatr_itm)actl_obj; - int err = 0; - err += mgr.Tst_val(expd_typeId == Xop_xatr_itm.Tid_null, path, "atr_typeId", expd_typeId, actl.Tid()); - err += mgr.Tst_val(expd_atr_bgn == -1, path, "atr_bgn", expd_atr_bgn, actl.Atr_bgn()); - err += mgr.Tst_val(expd_atr_end == -1, path, "atr_end", expd_atr_end, actl.Atr_end()); - err += mgr.Tst_val(expd_key_bgn == -1, path, "key_bgn", expd_key_bgn, actl.Key_bgn()); - err += mgr.Tst_val(expd_key_end == -1, path, "key_end", expd_key_end, actl.Key_end()); - if (actl.Key_bry() == null) - err += mgr.Tst_val(expd_key == null, path, "key", expd_key, mgr.Vars_get_bry_as_str("raw_bry", actl.Key_bgn(), actl.Key_end())); - else - err += mgr.Tst_val(expd_key == null, path, "key", expd_key, String_.new_u8(actl.Key_bry())); - if (actl.Val_bry() == null) - err += mgr.Tst_val(expd_val == null, path, "val", expd_val, mgr.Vars_get_bry_as_str("raw_bry", actl.Val_bgn(), actl.Val_end())); - else - err += mgr.Tst_val(expd_val == null, path, "val", expd_val, String_.new_u8(actl.Val_bry())); - return err; - } -} -/* -*/ diff --git a/400_xowa/src/gplx/xowa/parsers/xndes/Xop_xatr_whitelist_mgr.java b/400_xowa/src/gplx/xowa/parsers/xndes/Xop_xatr_whitelist_mgr.java index 459c75606..d933a83a5 100644 --- a/400_xowa/src/gplx/xowa/parsers/xndes/Xop_xatr_whitelist_mgr.java +++ b/400_xowa/src/gplx/xowa/parsers/xndes/Xop_xatr_whitelist_mgr.java @@ -16,9 +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.xndes; import gplx.*; import gplx.xowa.*; import gplx.xowa.parsers.*; -import gplx.core.primitives.*; import gplx.core.btries.*; +import gplx.core.primitives.*; import gplx.core.btries.*; import gplx.xowa.parsers.htmls.*; public class Xop_xatr_whitelist_mgr { - public boolean Chk(int tag_id, byte[] src, Xop_xatr_itm xatr) { + public boolean Chk(int tag_id, byte[] src, Mwh_atr_itm xatr) { byte[] key_bry = xatr.Key_bry(); byte[] chk_bry; int chk_bgn, chk_end; if (key_bry == null) { @@ -41,12 +41,12 @@ public class Xop_xatr_whitelist_mgr { && (itm.Exact() ? key_trie.Match_pos() == chk_end : true) // if exact, check for exact; else always true ; switch (itm_key_tid) { - case Xop_xatr_itm.Key_tid_style: + case Mwh_atr_itm_.Key_tid__style: if (!Scrub_style(xatr, src)) return false; - xatr.Val_bry_(gplx.xowa.parsers.amps.Xop_amp_mgr.I.Decode_as_bry(xatr.Val_as_bry(src))); // NOTE: must decode style values; "&#amp;#000000" -> "#000000"; see MW:checkCss; PAGE:en.w:Boron DATE:2015-07-29 + xatr.Val_bry_(gplx.xowa.parsers.amps.Xop_amp_mgr.Instance.Decode_as_bry(xatr.Val_as_bry())); // NOTE: must decode style values; "&#amp;#000000" -> "#000000"; see MW:checkCss; PAGE:en.w:Boron DATE:2015-07-29 break; - case Xop_xatr_itm.Key_tid_role: - if (!Bry_.Eq(Val_role_presentation, xatr.Val_as_bry(src))) return false; // MW: For now we only support role="presentation"; DATE:2014-04-05 + case Mwh_atr_itm_.Key_tid__role: + if (!Bry_.Eq(Val_role_presentation, xatr.Val_as_bry())) return false; // MW: For now we only support role="presentation"; DATE:2014-04-05 break; } return rv; @@ -169,18 +169,18 @@ public class Xop_xatr_whitelist_mgr { } private Xop_xatr_whitelist_itm Ini_key_trie_add(byte[] key, boolean exact) { Object key_tid_obj = tid_hash.Get_by(key); - byte key_tid = key_tid_obj == null ? Xop_xatr_itm.Key_tid_generic : ((Byte_obj_val)key_tid_obj).Val(); + byte key_tid = key_tid_obj == null ? Mwh_atr_itm_.Key_tid__generic : ((Byte_obj_val)key_tid_obj).Val(); Xop_xatr_whitelist_itm rv = new Xop_xatr_whitelist_itm(key, key_tid, exact); key_trie.Add_obj(key, rv); return rv; } private Hash_adp_bry tid_hash = Hash_adp_bry.ci_a7() - .Add_str_byte("id", Xop_xatr_itm.Key_tid_id) - .Add_str_byte("style", Xop_xatr_itm.Key_tid_style) - .Add_str_byte("role", Xop_xatr_itm.Key_tid_role) + .Add_str_byte("id", Mwh_atr_itm_.Key_tid__id) + .Add_str_byte("style", Mwh_atr_itm_.Key_tid__style) + .Add_str_byte("role", Mwh_atr_itm_.Key_tid__role) ; private Btrie_slim_mgr key_trie = Btrie_slim_mgr.ci_a7(); // NOTE:ci.ascii:HTML.node_name - public boolean Scrub_style(Xop_xatr_itm xatr, byte[] raw) { // REF:Sanitizer.php|checkCss; '! expression | filter\s*: | accelerator\s*: | url\s*\( !ix'; NOTE: this seems to affect MS IE only; DATE:2013-04-01 + public boolean Scrub_style(Mwh_atr_itm xatr, byte[] raw) { // REF:Sanitizer.php|checkCss; '! expression | filter\s*: | accelerator\s*: | url\s*\( !ix'; NOTE: this seems to affect MS IE only; DATE:2013-04-01 byte[] val_bry = xatr.Val_bry(); byte[] chk_bry; int chk_bgn, chk_end; if (val_bry == null) { diff --git a/400_xowa/src/gplx/xowa/parsers/xndes/Xop_xatr_whitelist_mgr_tst.java b/400_xowa/src/gplx/xowa/parsers/xndes/Xop_xatr_whitelist_mgr_tst.java index 308d7022f..7e017671d 100644 --- a/400_xowa/src/gplx/xowa/parsers/xndes/Xop_xatr_whitelist_mgr_tst.java +++ b/400_xowa/src/gplx/xowa/parsers/xndes/Xop_xatr_whitelist_mgr_tst.java @@ -16,9 +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.xndes; import gplx.*; import gplx.xowa.*; import gplx.xowa.parsers.*; -import org.junit.*; +import org.junit.*; import gplx.xowa.parsers.htmls.*; public class Xop_xatr_whitelist_mgr_tst { - Xop_xatr_whitelist_fxt fxt = new Xop_xatr_whitelist_fxt(); + private final Xop_xatr_whitelist_fxt fxt = new Xop_xatr_whitelist_fxt(); @Before public void init() {fxt.Clear();} @Test public void Basic() { fxt.Whitelist(Xop_xnde_tag_.Tid_div , "style" , true); @@ -46,17 +46,21 @@ public class Xop_xatr_whitelist_mgr_tst { } } class Xop_xatr_whitelist_fxt { + private Xop_xatr_whitelist_mgr whitelist_mgr; + private Mwh_atr_itm atr_itm = new Mwh_atr_itm(null, false, false, false, -1, -1, -1, -1, null, -1, -1, null, -1, 0); public void Clear() { if (whitelist_mgr == null) whitelist_mgr = new Xop_xatr_whitelist_mgr().Ini(); - } private Xop_xatr_whitelist_mgr whitelist_mgr; + } public void Whitelist(int tag_id, String key_str, boolean expd) { byte[] key_bry = Bry_.new_a7(key_str); - atr_itm.Key_rng_(0, key_bry.length); + // atr_itm.Key_rng_(0, key_bry.length); + atr_itm.Key_bry_(key_bry); Tfds.Eq(expd, whitelist_mgr.Chk(tag_id, key_bry, atr_itm), key_str); - } private Xop_xatr_itm atr_itm = new Xop_xatr_itm(0, 0); + } public void Whitelist(int tag_id, String key_str, String val_str, boolean expd) { byte[] key_bry = Bry_.new_a7(key_str); - atr_itm.Key_rng_(0, key_bry.length); + // atr_itm.Key_rng_(0, key_bry.length); + atr_itm.Key_bry_(key_bry); atr_itm.Val_bry_(Bry_.new_a7(val_str)); Tfds.Eq(expd, whitelist_mgr.Chk(tag_id, key_bry, atr_itm), key_str); } 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 2b517977b..2c802b199 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 @@ -20,8 +20,8 @@ import gplx.core.btries.*; import gplx.xowa.langs.*; public class Xop_xnde_lxr implements Xop_lxr { 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 Init_by_lang(Xol_lang_itm 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() {} + public static final Xop_xnde_lxr Instance = 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 d7081e8bc..d64b6fc08 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 @@ -61,7 +61,7 @@ public class Xop_xnde_tag { public Ordered_hash Langs() {return langs;} private Ordered_hash langs; private Int_obj_ref langs_key; public Xop_xnde_tag Langs_(int lang_code, String name) { if (langs == null) { - langs = Ordered_hash_.new_(); + langs = Ordered_hash_.New(); langs_key = Int_obj_ref.neg1_(); } Xop_xnde_tag_lang lang_tag = new Xop_xnde_tag_lang(lang_code, name); @@ -69,8 +69,8 @@ public class Xop_xnde_tag { return this; } 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(src, bgn, end, name_bry)) return Xop_xnde_tag_lang._; // canonical name (name_bry) is valid in all langs; EX:
    and cur_lang=de + if (langs == null) return Xop_xnde_tag_lang.Instance; // no langs defined; always return true; EX: + if (Bry_.Eq(src, bgn, end, name_bry)) return Xop_xnde_tag_lang.Instance; // 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_tag_.java b/400_xowa/src/gplx/xowa/parsers/xndes/Xop_xnde_tag_.java index a3d41d149..b1d97d9c2 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 @@ -170,7 +170,7 @@ public class Xop_xnde_tag_ { , Tag_kbd = new_(Tid_kbd, "kbd").No_inline_() , Tag_samp = new_(Tid_samp, "samp").No_inline_() , Tag_blockquote = new_(Tid_blockquote, "blockquote").No_inline_().Repeat_mids_().Section_().Block_open_bgn_().Block_close_end_() // NOTE: should be open_end_, but leaving for now; DATE:2014-03-11; added Repeat_mids_(); PAGE:en.w:Ring_a_Ring_o'_Roses DATE:2014-06-26 -, Tag_pre = new_(Tid_pre, "pre").No_inline_().Section_().Xtn_().Raw_().Block_open_bgn_().Block_close_end_().Ignore_empty_().Xtn_skips_template_args_() +, Tag_pre = new_(Tid_pre, "pre").No_inline_().Section_().Xtn_mw_().Raw_().Block_open_bgn_().Block_close_end_().Ignore_empty_().Xtn_skips_template_args_() , Tag_font = new_(Tid_font, "font").No_inline_() , Tag_center = new_(Tid_center, "center").No_inline_().Block_open_end_().Block_close_end_() // removed .Repeat_ends_(); added Nest_(); EX: w:Burr Truss; DATE:2012-12-12 , Tag_p = new_(Tid_p, "p").No_inline_().Section_().Block_open_bgn_().Block_close_end_() @@ -217,13 +217,13 @@ public class Xop_xnde_tag_ { , Tag_references = new_(Tid_references, "references").Xtn_mw_() , Tag_source = new_(Tid_source, "source").Xtn_mw_().Block_open_bgn_().Block_close_end_() // deactivate pre; pre; PAGE:en.w:Comment_(computer_programming); DATE:2014-06-23 , Tag_syntaxHighlight = new_(Tid_syntaxHighlight, "syntaxHighlight").Xtn_mw_().Block_open_bgn_().Block_close_end_() // deactivate pre; pre; PAGE:en.w:Comment_(computer_programming); DATE:2014-06-23 -, Tag_gallery = new_(Tid_gallery, "gallery").Xtn_().Block_open_bgn_().Block_close_end_().Xtn_auto_close_() -, Tag_imageMap = new_(Tid_imageMap, "imageMap").Xtn_() +, Tag_gallery = new_(Tid_gallery, "gallery").Xtn_mw_().Block_open_bgn_().Block_close_end_().Xtn_auto_close_() +, Tag_imageMap = new_(Tid_imageMap, "imageMap").Xtn_mw_() , Tag_timeline = new_(Tid_timeline, "timeline").Xtn_mw_() , Tag_hiero = new_(Tid_hiero, "hiero").Xtn_mw_() , Tag_inputBox = new_(Tid_inputBox, "inputBox").Xtn_mw_() , Tag_pages = new_(Tid_pages, "pages").Xtn_mw_() -, Tag_section = new_(Tid_section, "section").Xtn_mw_().Langs_(Xol_lang_itm_.Id_de, "Abschnitt").Langs_(Xol_lang_itm_.Id_he, "קטע").Langs_(Xol_lang_itm_.Id_pt, "trecho") // DATE:2014-07-18 +, Tag_section = new_(Tid_section, "section").Xtn_mw_().Langs_(Xol_lang_stub_.Id_de, "Abschnitt").Langs_(Xol_lang_stub_.Id_he, "קטע").Langs_(Xol_lang_stub_.Id_pt, "trecho") // DATE:2014-07-18 , Tag_pagequality = new_(Tid_pagequality, "pagequality").Xtn_mw_() , Tag_pagelist = new_(Tid_pagelist, "pagelist").Xtn_mw_() , Tag_categoryList = new_(Tid_categoryList, "categoryList").Xtn_mw_() diff --git a/400_xowa/src/gplx/xowa/parsers/xndes/Xop_xnde_tag_lang.java b/400_xowa/src/gplx/xowa/parsers/xndes/Xop_xnde_tag_lang.java index 87fa009ab..f07c0124c 100644 --- a/400_xowa/src/gplx/xowa/parsers/xndes/Xop_xnde_tag_lang.java +++ b/400_xowa/src/gplx/xowa/parsers/xndes/Xop_xnde_tag_lang.java @@ -28,5 +28,5 @@ public class Xop_xnde_tag_lang { public String Name_str() {return name_str;} private String name_str; public byte[] Name_bry() {return name_bry;} private byte[] name_bry; public byte[] Xtn_end_tag_tmp() {return xtnEndTag_tmp;} private byte[] xtnEndTag_tmp; - public static final Xop_xnde_tag_lang _ = new Xop_xnde_tag_lang(-1, String_.Empty); + public static final Xop_xnde_tag_lang Instance = new Xop_xnde_tag_lang(-1, String_.Empty); } diff --git a/400_xowa/src/gplx/xowa/parsers/xndes/Xop_xnde_tag_regy.java b/400_xowa/src/gplx/xowa/parsers/xndes/Xop_xnde_tag_regy.java index d51b964d7..87c5d8ad0 100644 --- a/400_xowa/src/gplx/xowa/parsers/xndes/Xop_xnde_tag_regy.java +++ b/400_xowa/src/gplx/xowa/parsers/xndes/Xop_xnde_tag_regy.java @@ -44,12 +44,8 @@ public class Xop_xnde_tag_regy { Xop_xnde_tag[] ary = Xop_xnde_tag_.Ary; for (int i = 0; i < len; ++i) { Xop_xnde_tag xnde = ary[i]; - if ( xtn_hash != null // xtn_hash is null during tests or when wiki is not in site_meta_db - && xnde.Xtn_mw() // only apply filter to xtn_xnde, not basic_xnde; EX: not - && !xtn_hash.Has(xnde.Name_bry()) // xtn_xnde is not in xtn_hash - ) continue; // skip; xtn is not defined in site_meta_db - if (is_tmpl && !xnde.Xtn()) // is_tmpl and basic_xnde; EX: - continue; // skip; tmpl only needs xtn_xnde; + if (Ignore_xnde(xtn_hash, xnde)) continue; // skip; xtn is not defined in site_meta_db + if (is_tmpl && !xnde.Xtn()) continue; // is_tmpl and basic_xnde; EX: Add_itm(trie, xnde); } if (is_tmpl) { // is_tmpl also has , , , @@ -59,6 +55,13 @@ public class Xop_xnde_tag_regy { Add_itm(trie, Xop_xnde_tag_.Tag_onlyinclude); } } + private boolean Ignore_xnde(Hash_adp_bry xtn_hash, Xop_xnde_tag xnde) { + return xtn_hash != null // xtn_hash is null during tests or when wiki is not in site_meta_db + && xnde.Xtn_mw() // only apply filter to xtn_xnde, not basic_xnde; EX: not
    + && !xtn_hash.Has(xnde.Name_bry()) // xtn_xnde is not in xtn_hash + && !Int_.In(xnde.Id(), Xop_xnde_tag_.Tid_translate, Xop_xnde_tag_.Tid_languages) // always include and ; TODO:filter out when extensions supported in site_cfg; DATE:2015-10-13 + ; // skip; xtn is not defined in site_meta_db + } private void Add_itm(Btrie_slim_mgr trie, Xop_xnde_tag xnde) { trie.Add_obj(xnde.Name_bry(), xnde); Ordered_hash langs = xnde.Langs(); diff --git a/400_xowa/src/gplx/xowa/parsers/xndes/Xop_xnde_tkn.java b/400_xowa/src/gplx/xowa/parsers/xndes/Xop_xnde_tkn.java index 4b4999e3b..ce6f11409 100644 --- a/400_xowa/src/gplx/xowa/parsers/xndes/Xop_xnde_tkn.java +++ b/400_xowa/src/gplx/xowa/parsers/xndes/Xop_xnde_tkn.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 gplx.xowa.xtns.*; import gplx.xowa.parsers.tblws.*; import gplx.xowa.parsers.tmpls.*; +import gplx.xowa.xtns.*; import gplx.xowa.parsers.tblws.*; import gplx.xowa.parsers.tmpls.*; import gplx.xowa.parsers.htmls.*; public class Xop_xnde_tkn extends Xop_tkn_itm_base implements Xop_tblw_tkn { @Override public byte Tkn_tid() {return Xop_tkn_itm_.Tid_xnde;} public int Tblw_tid() {return tag.Id();} // NOTE: tblw tkns actually return xnde as Tblw_tid @@ -31,9 +31,9 @@ public class Xop_xnde_tkn extends Xop_tkn_itm_base implements Xop_tblw_tkn { public int Atrs_end() {return atrs_end;} public Xop_xnde_tkn Atrs_end_(int v) {atrs_end = v; return this;} private int atrs_end = Xop_tblw_wkr.Atrs_null; public Xop_xnde_tkn Atrs_rng_(int bgn, int end) {atrs_bgn = bgn; atrs_end = end; return this;} public void Atrs_rng_set(int bgn, int end) {Atrs_rng_(bgn, end);} - public Xop_xatr_itm[] Atrs_ary() {return atrs_ary;} - public Xop_xnde_tkn Atrs_ary_(Xop_xatr_itm[] v) {atrs_ary = v; return this;} private Xop_xatr_itm[] atrs_ary; - public Xop_tblw_tkn Atrs_ary_as_tblw_(Xop_xatr_itm[] v) {atrs_ary = v; return this;} + public Mwh_atr_itm[] Atrs_ary() {return atrs_ary;} + public Xop_xnde_tkn Atrs_ary_ (Mwh_atr_itm[] v) {atrs_ary = v; return this;} private Mwh_atr_itm[] atrs_ary; + public Xop_tblw_tkn Atrs_ary_as_tblw_ (Mwh_atr_itm[] v) {atrs_ary = v; return this;} public Xop_xnde_tag Tag() {return tag;} public Xop_xnde_tkn Tag_(Xop_xnde_tag v) {tag = v; return this;} private Xop_xnde_tag tag; public int Tag_open_bgn() {return tag_open_bgn;} private int tag_open_bgn = Int_.Null; public int Tag_open_end() {return tag_open_end;} private int tag_open_end = Int_.Null; @@ -75,7 +75,13 @@ public class Xop_xnde_tkn extends Xop_tkn_itm_base implements Xop_tblw_tkn { } } } +// public static Xop_ctx Hack_ctx; // CHART @Override public boolean Tmpl_evaluate(Xop_ctx ctx, byte[] src, Xot_invk caller, Bry_bfr bfr) { +// if (ctx.Scribunto) { // CHART +// byte[] key = uniq_mgr.Add(Bry_.Mid(src, this.Src_bgn(), this.Src_end())); +// bfr.Add(key); +// return true; +// } int subs_len = this.Subs_len(); switch (tag.Id()) { case Xop_xnde_tag_.Tid_noinclude: // do not evaluate subs 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 afb24dc46..d0fd0a29c 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 @@ -18,28 +18,24 @@ 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.langs.htmls.*; -import gplx.xowa.parsers.logs.*; import gplx.xowa.parsers.tblws.*; import gplx.xowa.parsers.lnkis.*; import gplx.xowa.parsers.miscs.*; +import gplx.xowa.parsers.logs.*; import gplx.xowa.parsers.tblws.*; import gplx.xowa.parsers.lnkis.*; import gplx.xowa.parsers.miscs.*; import gplx.xowa.parsers.htmls.*; public class Xop_xnde_wkr implements Xop_ctx_wkr { public void Ctor_ctx(Xop_ctx ctx) {} public boolean Pre_at_bos() {return pre_at_bos;} public void Pre_at_bos_(boolean v) {pre_at_bos = v;} private boolean pre_at_bos; public void Page_bgn(Xop_ctx ctx, Xop_root_tkn root) {} public void Page_end(Xop_ctx ctx, Xop_root_tkn root, byte[] src, int src_len) {this.Clear();} - private void Clear() { - pre_at_bos = false; - } + private void Clear() {pre_at_bos = false;} public void AutoClose(Xop_ctx ctx, Xop_root_tkn root, byte[] src, int src_len, int bgn_pos, int cur_pos, Xop_tkn_itm tkn, int closing_tkn_tid) { Xop_xnde_tkn xnde = (Xop_xnde_tkn)tkn; xnde.Src_end_(src_len); - xnde.Subs_move(root); // NOTE: ctx.Root used to be root which was a member variable; DATE:2013-12-11 + xnde.Subs_move(root); if (closing_tkn_tid == Xop_tkn_itm_.Tid_lnki_end) Xop_xnde_wkr_.AutoClose_handle_dangling_nde_in_caption(root, tkn); // PAGE:sr.w:Сићевачка_клисура; DATE:2014-07-03 ctx.Msg_log().Add_itm_none(Xop_xnde_log.Dangling_xnde, src, xnde.Src_bgn(), xnde.Name_end()); // NOTE: xnde.Src_bgn to start at <; xnde.Name_end b/c xnde.Src_end is -1 } 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) { - bgn_pos = 0; // do not allow -1 pos - } - if (cur_pos == src_len) return ctx.Lxr_make_txt_(src_len); // "<" is last char in page; strange, but don't raise error; - Xop_tkn_itm last_tkn = ctx.Stack_get_last(); // BLOCK:invalid_ttl_check + if (bgn_pos == Xop_parser_.Doc_bgn_bos) bgn_pos = 0; // do not allow -1 pos + if (cur_pos == src_len) return ctx.Lxr_make_txt_(src_len); // "<" is EOS; don't raise error; + Xop_tkn_itm last_tkn = ctx.Stack_get_last(); // BLOCK:invalid_ttl_check if ( last_tkn != null && last_tkn.Tkn_tid() == Xop_tkn_itm_.Tid_lnki) { Xop_lnki_tkn lnki = (Xop_lnki_tkn)last_tkn; @@ -51,35 +47,38 @@ public class Xop_xnde_wkr implements Xop_ctx_wkr { } } - // find > + // check for "= src_len) return ctx.Lxr_make_txt_(atrs_bgn_pos); // truncated tag; EX: "= src_len) return ctx.Lxr_make_txt_(atrs_bgn_pos); // EOS: EX: "" -> "
    ++tag_end_pos; break; - case Byte_ascii.Dollar:// handles ; - default: // allow all other symbols by defaults + case Byte_ascii.Dollar: // handles ; + default: // allow all other symbols by defaults; TODO: need to filter out some like break; + // letters / numbers after tag; tag is invalid; EX: "; NOTE: MW does not ignore > inside quotes; EX:
    abc
    ->
    b">abc
    -> " )); fxt.Init_para_n_(); } diff --git a/400_xowa/src/gplx/xowa/parsers/xndes/Xop_xnde_wkr__xatrs_tst.java b/400_xowa/src/gplx/xowa/parsers/xndes/Xop_xnde_wkr__xatrs_tst.java index e6386ee71..34b6757d4 100644 --- a/400_xowa/src/gplx/xowa/parsers/xndes/Xop_xnde_wkr__xatrs_tst.java +++ b/400_xowa/src/gplx/xowa/parsers/xndes/Xop_xnde_wkr__xatrs_tst.java @@ -32,7 +32,7 @@ public class Xop_xnde_wkr__xatrs_tst { fxt.Test_parse_page_all_str("a" , "a"); // three } @Test public void Non_ws() { // PURPOSE: is valid; symbols function as ws - fxt.Init_log_(Xop_xatr_parser.Log_invalid_atr).Test_parse_page_wiki("" , fxt.tkn_xnde_(0, 7).Atrs_rng_(3, 5)); + fxt.Test_parse_page_wiki("" , fxt.tkn_xnde_(0, 7).Atrs_rng_(3, 5)); } @Test public void Invalid() { // PURPOSE: make sure brx does not match br fxt.Test_parse_page_wiki("" , fxt.tkn_bry_(0, 1), fxt.tkn_txt_(1, 6)); diff --git a/400_xowa/src/gplx/xowa/specials/Xoa_special_mgr.java b/400_xowa/src/gplx/xowa/specials/Xoa_special_mgr.java index df721d480..3f2a0bdbf 100644 --- a/400_xowa/src/gplx/xowa/specials/Xoa_special_mgr.java +++ b/400_xowa/src/gplx/xowa/specials/Xoa_special_mgr.java @@ -17,7 +17,7 @@ along with this program. If not, see . */ package gplx.xowa.specials; import gplx.*; import gplx.xowa.*; public class Xoa_special_mgr implements GfoInvkAble { - private Ordered_hash hash = Ordered_hash_.new_(); + private Ordered_hash hash = Ordered_hash_.New(); public Xoa_special_mgr() { hash.Add(gplx.xowa.xtns.wdatas.specials.Wdata_itemByTitle_cfg.Key, new gplx.xowa.xtns.wdatas.specials.Wdata_itemByTitle_cfg()); } diff --git a/400_xowa/src/gplx/xowa/specials/Xows_mgr.java b/400_xowa/src/gplx/xowa/specials/Xows_mgr.java index 313d4ea6d..c5ae0e408 100644 --- a/400_xowa/src/gplx/xowa/specials/Xows_mgr.java +++ b/400_xowa/src/gplx/xowa/specials/Xows_mgr.java @@ -17,7 +17,7 @@ along with this program. If not, see . */ package gplx.xowa.specials; import gplx.*; import gplx.xowa.*; import gplx.xowa.users.history.*; -import gplx.xowa.langs.*; +import gplx.xowa.langs.*; import gplx.xowa.langs.specials.*; import gplx.xowa.specials.*; import gplx.xowa.specials.allPages.*; import gplx.xowa.specials.search.*; import gplx.xowa.specials.nearby.*; import gplx.xowa.specials.randoms.*; import gplx.xowa.specials.statistics.*; import gplx.xowa.xtns.translates.*; import gplx.xowa.specials.movePage.*; import gplx.xowa.specials.xowa.system_data.*; import gplx.xowa.specials.xowa.default_tab.*; import gplx.xowa.specials.xowa.popup_history.*; import gplx.xowa.specials.xowa.file_browsers.*; import gplx.xowa.specials.xowa.diags.*; @@ -25,7 +25,7 @@ import gplx.xowa.xtns.wdatas.specials.*; import gplx.xowa.users.data.*; import gplx.xowa.users.bmks.*; public class Xows_mgr { private final Hash_adp_bry hash; - public Xows_mgr(Xowe_wiki wiki, Xol_lang lang) { + public Xows_mgr(Xowe_wiki wiki, Xol_lang_itm lang) { hash = Hash_adp_bry.ci_u8(lang.Case_mgr()); page_allpages = new Xows_page_allpages(wiki); page_search = new Xows_page__search(wiki); @@ -49,7 +49,7 @@ public class Xows_mgr { public Xosp_fbrow_special Page_file_browser() {return page_file_browser;} private final Xosp_fbrow_special page_file_browser = new Xosp_fbrow_special(); public Xows_bmk_page Page_bmk() {return page_bmk;} private final Xows_bmk_page page_bmk = new Xows_bmk_page(); public Xows_diag_page Page_diag() {return page_diag;} private final Xows_diag_page page_diag = new Xows_diag_page(); - public void Evt_lang_changed(Xol_lang lang) { + public void Evt_lang_changed(Xol_lang_itm lang) { hash.Clear(); hash.Add_str_obj(Xows_special_meta_.Key__search , page_search); hash.Add_str_obj(Xows_special_meta_.Key__all_pages , page_allpages); diff --git a/400_xowa/src/gplx/xowa/specials/allPages/Xows_page_allpages.java b/400_xowa/src/gplx/xowa/specials/allPages/Xows_page_allpages.java index 4278a6f11..ceb7d22c4 100644 --- a/400_xowa/src/gplx/xowa/specials/allPages/Xows_page_allpages.java +++ b/400_xowa/src/gplx/xowa/specials/allPages/Xows_page_allpages.java @@ -17,11 +17,11 @@ along with this program. If not, see . */ package gplx.xowa.specials.allPages; import gplx.*; import gplx.xowa.*; import gplx.xowa.specials.*; import gplx.core.primitives.*; import gplx.core.net.*; -import gplx.xowa.langs.*; -import gplx.xowa.nss.*; -import gplx.xowa.html.*; import gplx.xowa.html.hrefs.*; import gplx.xowa.html.lnkis.*; +import gplx.xowa.langs.*; import gplx.xowa.langs.msgs.*; +import gplx.xowa.wikis.nss.*; +import gplx.xowa.htmls.*; import gplx.xowa.htmls.hrefs.*; import gplx.xowa.htmls.lnkis.*; import gplx.xowa.wikis.domains.*; import gplx.xowa.wikis.data.tbls.*; -import gplx.xowa.urls.*; +import gplx.xowa.apps.urls.*; public class Xows_page_allpages implements GfoInvkAble, Bry_fmtr_arg, Xows_page { public Xows_page_allpages(Xowe_wiki wiki) { this.wiki = wiki; @@ -75,7 +75,7 @@ public class Xows_page_allpages implements GfoInvkAble, Bry_fmtr_arg, Xows_page public void Special_gen(Xowe_wiki wiki, Xoae_page page, Xoa_url url, Xoa_ttl ttl) { wiki.Parser_mgr().Ctx().Cur_page().Html_data().Display_ttl_(wiki.Msg_mgr().Val_by_id(Xol_msg_itm_.Id_sp_allpages_hdr)); url.Page_bry_(Bry_.Add(Bry_.new_a7("Special:"), ttl.Page_txt_wo_qargs())); // HACK: need to re-set Page b/c href_wtr does not eliminate qargs; DATE:2013-02-08 - if (wiki.Domain_tid() == Xow_domain_type_.Int__home) {wiki.Appe().Usr_dlg().Prog_many(GRP_KEY, "home.invalid", "AllPages not implemented for home wiki"); return;} + if (wiki.Domain_tid() == Xow_domain_tid_.Int__home) {wiki.Appe().Usr_dlg().Prog_many(GRP_KEY, "home.invalid", "AllPages not implemented for home wiki"); return;} if (rslt_list_ttls == null) this.Itms_per_page_(itms_per_page); boolean found = Build_data(url, ttl); if (!found) return; Build_html(page); @@ -124,7 +124,7 @@ public class Xows_page_allpages implements GfoInvkAble, Bry_fmtr_arg, Xows_page byte[] anchor_prv = Build_html_end(tmp_bfr, rslt_prv, false); byte[] anchor_nxt = Build_html_end(tmp_bfr, rslt_nxt, true); html_all.Bld_bfr_many(tmp_bfr, this, anchor_prv, anchor_nxt); - page.Data_raw_(tmp_bfr.Xto_bry_and_clear()); + page.Data_raw_(tmp_bfr.To_bry_and_clear()); tmp_bfr.Mkr_rls(); page.Html_data().Html_restricted_n_(); } @@ -143,7 +143,7 @@ public class Xows_page_allpages implements GfoInvkAble, Bry_fmtr_arg, Xows_page if (!ns.Id_main()) ttl_bry = Bry_.Add(ns.Name_db_w_colon(), ttl_bry); return Xoa_ttl.parse(wiki, ttl_bry); } - public void XferAry(Bry_bfr bfr, int idx) { + public void Fmt__do(Bry_bfr bfr) { int len = rslt_list_ttls.length; html_itm_fmtr.XferAry_bgn(); for (int i = 0; i < len; i += itms_per_grp) { @@ -182,7 +182,7 @@ class Xos_pagelist_html_itm_fmtr implements Bry_fmtr_arg { init_ns = mgr.Init_ns(); } int itms_per_grp, ttls_len, itm_pct; Xowd_page_itm[] ttls; Xow_ns init_ns; public void XferAry_end() {ttls = null;} - public void XferAry(Bry_bfr bfr, int idx) { + public void Fmt__do(Bry_bfr bfr) { int itm_end = itm_idx + itms_per_grp; for (int i = itm_idx; i < itm_end; i++) { if (i >= ttls_len) break; // handle odd number of itms; EX: interval=3; items=4; proc gets called on 0 (0-2) and 3 (3-5); ArrayIndex for 4, 5 diff --git a/400_xowa/src/gplx/xowa/specials/allPages/Xows_page_allpages_tst.java b/400_xowa/src/gplx/xowa/specials/allPages/Xows_page_allpages_tst.java index 49b4c8030..9422cafcc 100644 --- a/400_xowa/src/gplx/xowa/specials/allPages/Xows_page_allpages_tst.java +++ b/400_xowa/src/gplx/xowa/specials/allPages/Xows_page_allpages_tst.java @@ -17,8 +17,8 @@ along with this program. If not, see . */ package gplx.xowa.specials.allPages; import gplx.*; import gplx.xowa.*; import gplx.xowa.specials.*; import org.junit.*; import gplx.core.net.*; import gplx.xowa.wikis.data.tbls.*; -import gplx.xowa.nss.*; -import gplx.xowa.tdbs.hives.*; +import gplx.xowa.wikis.nss.*; +import gplx.xowa.wikis.tdbs.hives.*; public class Xows_page_allpages_tst { @Before public void init() {fxt.Clear();} private Xows_page_allpages_fxt fxt = new Xows_page_allpages_fxt(); @Test public void Build_data() { diff --git a/400_xowa/src/gplx/xowa/specials/movePage/Move_page.java b/400_xowa/src/gplx/xowa/specials/movePage/Move_page.java index 8538db26d..0bf7cb842 100644 --- a/400_xowa/src/gplx/xowa/specials/movePage/Move_page.java +++ b/400_xowa/src/gplx/xowa/specials/movePage/Move_page.java @@ -18,8 +18,8 @@ along with this program. If not, see . package gplx.xowa.specials.movePage; import gplx.*; import gplx.xowa.*; import gplx.xowa.specials.*; import gplx.core.primitives.*; import gplx.core.net.*; import gplx.xowa.wikis.data.tbls.*; import gplx.xowa.langs.msgs.*; -import gplx.xowa.html.hrefs.*; -import gplx.xowa.nss.*; +import gplx.xowa.htmls.hrefs.*; +import gplx.xowa.wikis.nss.*; import gplx.xowa.parsers.utils.*; public class Move_page implements Xows_page { private Move_trg_ns_list_fmtr ns_list_fmtr = new Move_trg_ns_list_fmtr(); @@ -39,7 +39,7 @@ public class Move_page implements Xows_page { page.Data_raw_(html); } private void Exec_rename(Xowe_wiki wiki, Xoae_page page) { - gplx.xowa.dbs.Xodb_save_mgr save_mgr = wiki.Db_mgr().Save_mgr(); + gplx.xowa.wikis.dbs.Xodb_save_mgr save_mgr = wiki.Db_mgr().Save_mgr(); int trg_ns_id = args.Trg_ns(); Xow_ns trg_ns = wiki.Ns_mgr().Ids_get_or_null(trg_ns_id); if (trg_ns == null) throw Err_.new_wo_type("unknown ns", "ns", trg_ns_id); byte[] trg_ttl_bry = args.Trg_ttl(); @@ -126,7 +126,7 @@ class Move_trg_ns_list_fmtr implements Bry_fmtr_arg { this.wiki = wiki; this.ttl = ttl; } - public void XferAry(Bry_bfr bfr, int idx) { + public void Fmt__do(Bry_bfr bfr) { Xow_ns_mgr ns_mgr = wiki.Ns_mgr(); int ns_len = ns_mgr.Ids_len(); for (int i = 0; i < ns_len; i++) { diff --git a/400_xowa/src/gplx/xowa/specials/nearby/Nearby_mgr.java b/400_xowa/src/gplx/xowa/specials/nearby/Nearby_mgr.java index 393a5e5f6..ebb340d41 100644 --- a/400_xowa/src/gplx/xowa/specials/nearby/Nearby_mgr.java +++ b/400_xowa/src/gplx/xowa/specials/nearby/Nearby_mgr.java @@ -52,7 +52,7 @@ public class Nearby_mgr implements Xows_page { tmp_bfr.Add_str_a7(""); } tmp_bfr.Add_str_a7("
    "); - return tmp_bfr.Xto_bry_and_clear(); + return tmp_bfr.To_bry_and_clear(); } Bry_fmtr form_fmtr = Bry_fmtr.new_(String_.Concat_lines_nl ( "
    " @@ -66,7 +66,7 @@ public class Nearby_mgr implements Xows_page { , "
    " )); Xoa_ttl trg_ttl; - Ordered_hash src_pool = Ordered_hash_.new_bry_(); + Ordered_hash src_pool = Ordered_hash_.New_bry(); public List_adp Find_from_to(Xowe_wiki wiki, byte[] src_bry, byte[] trg_bry, Hash_adp_bry excluded) { this.wiki = wiki; this.excluded = excluded; Xoa_ttl src_ttl = Xoa_ttl.parse(wiki, src_bry); if (src_ttl == null) return List_adp_.Noop; @@ -84,7 +84,7 @@ public class Nearby_mgr implements Xows_page { } private void Examine_page(Ordered_hash src_pool){ int len = src_pool.Count(); - Ordered_hash next_pool = Ordered_hash_.new_bry_(); + Ordered_hash next_pool = Ordered_hash_.New_bry(); for (int i = 0; i < len; i++) { Nearby_itmx itmx = (Nearby_itmx)src_pool.Get_at(i); Xoa_ttl ttl = itmx.Ttl(); @@ -95,7 +95,7 @@ public class Nearby_mgr implements Xows_page { Xoae_page page = wiki.Data_mgr().Get_page(ttl, false); if (page.Missing()) continue; wiki.Parser_mgr().Parse(page, true); - Ordered_hash lnkis = Ordered_hash_.new_bry_(); + Ordered_hash lnkis = Ordered_hash_.New_bry(); Collect_lnkis(lnkis, page.Root()); if (lnkis.Has(trg)) { ++results_cur; @@ -114,7 +114,7 @@ public class Nearby_mgr implements Xows_page { Examine_page(next_pool); // ++pages_count; // wiki.Parser_mgr().Parse(page, true); -// Ordered_hash lnkis = Ordered_hash_.new_bry_(); +// Ordered_hash lnkis = Ordered_hash_.New_bry(); // int len = lnkis.Count(); // for (int i = 0; i < len; i++) { // Xoa_ttl lnki_ttl = (Xoa_ttl)lnkis.Get_at(i); @@ -135,7 +135,7 @@ public class Nearby_mgr implements Xows_page { // if (page.Missing()) return; // ++pages_count; // wiki.Parser_mgr().Parse(page, true); -// Ordered_hash lnkis = Ordered_hash_.new_bry_(); +// Ordered_hash lnkis = Ordered_hash_.New_bry(); // Collect_lnkis(lnkis, page.Root()); // if (lnkis.Has(trg)) { // ++results_cur; diff --git a/400_xowa/src/gplx/xowa/specials/nearby/Nearby_mgr_tst.java b/400_xowa/src/gplx/xowa/specials/nearby/Nearby_mgr_tst.java index 29852cbf6..31633771c 100644 --- a/400_xowa/src/gplx/xowa/specials/nearby/Nearby_mgr_tst.java +++ b/400_xowa/src/gplx/xowa/specials/nearby/Nearby_mgr_tst.java @@ -50,7 +50,7 @@ class Nearby_mgr_fxt { tmp_bfr = Bry_bfr.new_(); } fxt.Reset(); - Io_mgr.I.InitEngine_mem(); + Io_mgr.Instance.InitEngine_mem(); nearby_mgr.Results_max_(1); return this; } private Xop_fxt fxt; Nearby_mgr nearby_mgr; Hash_adp_bry excluded; Bry_bfr tmp_bfr; @@ -72,6 +72,6 @@ class Nearby_mgr_fxt { tmp_bfr.Add(ttl.Page_db()); } } - return tmp_bfr.Xto_str_and_clear(); + return tmp_bfr.To_str_and_clear(); } } diff --git a/400_xowa/src/gplx/xowa/specials/randoms/Xop_randomRootPage_page.java b/400_xowa/src/gplx/xowa/specials/randoms/Xop_randomRootPage_page.java index ca12c2e37..fcc10c823 100644 --- a/400_xowa/src/gplx/xowa/specials/randoms/Xop_randomRootPage_page.java +++ b/400_xowa/src/gplx/xowa/specials/randoms/Xop_randomRootPage_page.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.specials.randoms; import gplx.*; import gplx.xowa.*; import gplx.xowa.specials.*; -import gplx.xowa.nss.*; +import gplx.xowa.wikis.nss.*; public class Xop_randomRootPage_page implements Xows_page { public Xows_special_meta Special_meta() {return Xows_special_meta_.Itm__random_root_page;} public void Special_gen(Xowe_wiki wiki, Xoae_page page, Xoa_url url, Xoa_ttl ttl) { diff --git a/400_xowa/src/gplx/xowa/specials/randoms/Xows_page_random.java b/400_xowa/src/gplx/xowa/specials/randoms/Xows_page_random.java index c4b5cdef2..f2a94815d 100644 --- a/400_xowa/src/gplx/xowa/specials/randoms/Xows_page_random.java +++ b/400_xowa/src/gplx/xowa/specials/randoms/Xows_page_random.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.specials.randoms; import gplx.*; import gplx.xowa.*; import gplx.xowa.specials.*; -import gplx.xowa.nss.*; +import gplx.xowa.wikis.nss.*; public class Xows_page_random implements Xows_page { public Xows_page_random(Xowe_wiki wiki) {} public Xows_special_meta Special_meta() {return Xows_special_meta_.Itm__random;} diff --git a/400_xowa/src/gplx/xowa/specials/search/Xog_search_suggest_mgr.java b/400_xowa/src/gplx/xowa/specials/search/Xog_search_suggest_mgr.java index 198fd0a56..b9b073c0f 100644 --- a/400_xowa/src/gplx/xowa/specials/search/Xog_search_suggest_mgr.java +++ b/400_xowa/src/gplx/xowa/specials/search/Xog_search_suggest_mgr.java @@ -17,9 +17,9 @@ along with this program. If not, see . */ package gplx.xowa.specials.search; import gplx.*; import gplx.xowa.*; import gplx.xowa.specials.*; import gplx.core.net.*; import gplx.core.threads.*; -import gplx.gfui.*; import gplx.xowa.gui.*; import gplx.xowa.gui.views.*; import gplx.xowa.wikis.data.tbls.*; +import gplx.gfui.*; import gplx.xowa.guis.*; import gplx.xowa.guis.views.*; import gplx.xowa.wikis.data.tbls.*; import gplx.core.js.*; -import gplx.xowa.nss.*; +import gplx.xowa.wikis.nss.*; public class Xog_search_suggest_mgr implements GfoInvkAble { public Xog_search_suggest_mgr(Xoa_gui_mgr gui_mgr) { this.app = gui_mgr.App(); @@ -100,7 +100,7 @@ public class Xog_search_suggest_mgr implements GfoInvkAble { public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { if (ctx.Match(k, Invk_search_async)) Search_async(); else if (ctx.Match(k, Invk_notify)) Notify(); - else if (ctx.Match(k, Invk_enabled)) return Yn.Xto_str(enabled); + else if (ctx.Match(k, Invk_enabled)) return Yn.To_str(enabled); else if (ctx.Match(k, Invk_enabled_)) enabled = m.ReadYn("v"); else if (ctx.Match(k, Invk_results_max)) return results_max; else if (ctx.Match(k, Invk_results_max_)) results_max = m.ReadInt("v"); @@ -111,9 +111,9 @@ public class Xog_search_suggest_mgr implements GfoInvkAble { else if (ctx.Match(k, Invk_all_pages_extend_)) all_pages_extend = m.ReadInt("v"); else if (ctx.Match(k, Invk_all_pages_min)) return all_pages_min; else if (ctx.Match(k, Invk_all_pages_min_)) all_pages_min = m.ReadInt("v"); - else if (ctx.Match(k, Invk_auto_wildcard)) return Yn.Xto_str(auto_wildcard); + else if (ctx.Match(k, Invk_auto_wildcard)) return Yn.To_str(auto_wildcard); else if (ctx.Match(k, Invk_auto_wildcard_)) auto_wildcard = m.ReadYn("v"); - else if (ctx.Match(k, Invk_log_enabled)) return Yn.Xto_str(log_enabled); + else if (ctx.Match(k, Invk_log_enabled)) return Yn.To_str(log_enabled); else if (ctx.Match(k, Invk_log_enabled_)) log_enabled = m.ReadYn("v"); else if (ctx.Match(k, Invk_args_default)) return args_default_str; else if (ctx.Match(k, Invk_args_default_)) Args_default_str_(m.ReadStr("v")); diff --git a/400_xowa/src/gplx/xowa/specials/search/Xosrh_core_tst.java b/400_xowa/src/gplx/xowa/specials/search/Xosrh_core_tst.java index 84af06447..f84680758 100644 --- a/400_xowa/src/gplx/xowa/specials/search/Xosrh_core_tst.java +++ b/400_xowa/src/gplx/xowa/specials/search/Xosrh_core_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.specials.search; import gplx.*; import gplx.xowa.*; import gplx.xowa.specials.*; -import org.junit.*; import gplx.xowa.tdbs.*; import gplx.xowa.wikis.data.tbls.*; +import org.junit.*; import gplx.xowa.wikis.tdbs.*; import gplx.xowa.wikis.data.tbls.*; public class Xosrh_core_tst { // @Before public void Init() {fxt.Clear();} private Xos_search_mgr_fxt fxt = new Xos_search_mgr_fxt(); @Test public void Basic() { @@ -121,7 +121,7 @@ public class Xosrh_core_tst { // Xobl_regy_itm itm = ary[i]; // itm.Srl_save(tmp_bfr); // } -// Io_mgr.I.SaveFilBfr(url, tmp_bfr); +// Io_mgr.Instance.SaveFilBfr(url, tmp_bfr); // } private Bry_bfr tmp_bfr = Bry_bfr.reset_(255); // public void Init_data(Io_url fil, params Xobl_data_itm[] ary) { // Xob_xdat_file xdat_file = new Xob_xdat_file(); @@ -129,7 +129,7 @@ public class Xosrh_core_tst { // for (int i = 0; i < ary_len; i++) { // Xobl_data_itm itm = ary[i]; // itm.Srl_save(tmp_bfr); -// xdat_file.Insert(bfr, tmp_bfr.Xto_bry_and_clear()); +// xdat_file.Insert(bfr, tmp_bfr.To_bry_and_clear()); // } // xdat_file.Save(fil); // } @@ -159,7 +159,7 @@ public class Xosrh_core_tst { // search_mgr.Page_mgr().Ns_mgr().Add_all(); // WORKAROUND: xdat fmt does not store ns with search data; pages will be retrieved with ns_id = null; force ns_all (instead of allowing ns_main default); // } // public void Clear() { -// Io_mgr.I.InitEngine_mem(); +// Io_mgr.Instance.InitEngine_mem(); // app = Xoa_app_fxt.app_(); // wiki = Xoa_app_fxt.wiki_tst_(app); // search_mgr = wiki.Special_mgr().Page_search(); diff --git a/400_xowa/src/gplx/xowa/specials/search/Xosrh_page_mgr.java b/400_xowa/src/gplx/xowa/specials/search/Xosrh_page_mgr.java index 2c145ee16..2ec78bcd7 100644 --- a/400_xowa/src/gplx/xowa/specials/search/Xosrh_page_mgr.java +++ b/400_xowa/src/gplx/xowa/specials/search/Xosrh_page_mgr.java @@ -61,7 +61,7 @@ public class Xosrh_page_mgr implements Xosrh_page_mgr_searcher { if (page_idx < 0 || page_idx >= pages_ary.length) return Grp_empty; if ( sort_tid != Xosrh_rslt_itm_sorter.Tid_ttl_asc && cancelable == Cancelable_.Never // cancelable != Cancelable_.Never for search_suggest - && wiki.Db_mgr().Tid() == gplx.xowa.dbs.Xodb_mgr_txt.Tid_txt // txt only has search_title fields (page_id, word_id), so it needs to do another load to get page fields; note that sql has page fields already + && wiki.Db_mgr().Tid() == gplx.xowa.wikis.dbs.Xodb_mgr_txt.Tid_txt // txt only has search_title fields (page_id, word_id), so it needs to do another load to get page fields; note that sql has page fields already ) { wiki.Db_mgr().Load_mgr().Load_by_ids(cancelable, cur_ids, itms_bgn, itms_end); } @@ -74,7 +74,7 @@ public class Xosrh_page_mgr implements Xosrh_page_mgr_searcher { } public List_adp Parse_search_and_load_ids(Cancelable cancelable, Bry_bfr bfr, Xows_ns_mgr ns_mgr, byte[] search) { search = wiki.Lang().Case_mgr().Case_build_lower(search, 0, search.length); - Xosrh_qry_itm cur_root = Xosrh_parser._.Parse(search); + Xosrh_qry_itm cur_root = Xosrh_parser.Instance.Parse(search); cur_root.Search(cancelable, bfr, search, wiki, itms_per_page, ns_mgr); return cur_root.Matches(search).Ids(); } diff --git a/400_xowa/src/gplx/xowa/specials/search/Xosrh_page_mgr_tst.java b/400_xowa/src/gplx/xowa/specials/search/Xosrh_page_mgr_tst.java index 4a5ca3b7c..821534428 100644 --- a/400_xowa/src/gplx/xowa/specials/search/Xosrh_page_mgr_tst.java +++ b/400_xowa/src/gplx/xowa/specials/search/Xosrh_page_mgr_tst.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.specials.search; import gplx.*; import gplx.xowa.*; import gplx.xowa.specials.*; -import org.junit.*; import gplx.xowa.tdbs.*; import gplx.xowa.tdbs.hives.*; import gplx.xowa.wikis.data.tbls.*; -import gplx.xowa.nss.*; +import org.junit.*; import gplx.xowa.wikis.tdbs.*; import gplx.xowa.wikis.tdbs.hives.*; import gplx.xowa.wikis.data.tbls.*; +import gplx.xowa.wikis.nss.*; public class Xosrh_page_mgr_tst { @Before public void init() {fxt.Clear();} private Xosrh_page_mgr_fxt fxt = new Xosrh_page_mgr_fxt(); @Test public void Basic() { @@ -49,7 +49,7 @@ class Xosrh_page_mgr_fxt { Base85_utl.XtoStrByAry(i, id_bry, 0, 5); tmp_itm.Ns_id_(Xow_ns_.Id_main).Init(i, Bry_.To_a7_bry(i, 0), false, 10, 0, i - bgn); Xotdb_page_itm_.Txt_id_save(tmp_bfr, tmp_itm); - hive_mgr.Create(id_bry, tmp_bfr.Xto_bry_and_clear(), null); + hive_mgr.Create(id_bry, tmp_bfr.To_bry_and_clear(), null); } return this; } diff --git a/400_xowa/src/gplx/xowa/specials/search/Xosrh_parser.java b/400_xowa/src/gplx/xowa/specials/search/Xosrh_parser.java index 0f9b33225..d29c256f2 100644 --- a/400_xowa/src/gplx/xowa/specials/search/Xosrh_parser.java +++ b/400_xowa/src/gplx/xowa/specials/search/Xosrh_parser.java @@ -19,7 +19,7 @@ package gplx.xowa.specials.search; import gplx.*; import gplx.xowa.*; import gpl class Xosrh_parser { public Xosrh_qry_itm Parse(byte[] src) { this.src = src; - Xosrh_qry_tkn[] tkns = Xosrh_scanner._.Scan(src); + Xosrh_qry_tkn[] tkns = Xosrh_scanner.Instance.Scan(src); return Parse_itm_or(make_ctx.Init(tkns)); } private Xosrh_parser_ctx make_ctx = new Xosrh_parser_ctx(); byte[] src; Xosrh_qry_itm Parse_itm_or(Xosrh_parser_ctx make_ctx) { @@ -70,7 +70,7 @@ class Xosrh_parser { return Xosrh_qry_itm.word_(src, word_tkn); } } - public static final Xosrh_parser _ = new Xosrh_parser(); Xosrh_parser() {} + public static final Xosrh_parser Instance = new Xosrh_parser(); Xosrh_parser() {} } class Xosrh_parser_ctx { public Xosrh_parser_ctx Init(Xosrh_qry_tkn[] ary) { diff --git a/400_xowa/src/gplx/xowa/specials/search/Xosrh_parser_tst.java b/400_xowa/src/gplx/xowa/specials/search/Xosrh_parser_tst.java index fabdac9d9..87c89d9ff 100644 --- a/400_xowa/src/gplx/xowa/specials/search/Xosrh_parser_tst.java +++ b/400_xowa/src/gplx/xowa/specials/search/Xosrh_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.specials.search; import gplx.*; import gplx.xowa.*; import gplx.xowa.specials.*; -import org.junit.*; import gplx.xowa.tdbs.*; import gplx.xowa.tdbs.hives.*; import gplx.xowa.wikis.data.tbls.*; +import org.junit.*; import gplx.xowa.wikis.tdbs.*; import gplx.xowa.wikis.tdbs.hives.*; import gplx.xowa.wikis.data.tbls.*; public class Xosrh_parser_tst { @Before public void init() {fxt.Clear();} private Xosearch_parser_fxt fxt = new Xosearch_parser_fxt(); @Test public void Scan_word() {fxt.Test_scan("abc", "abc");} @@ -62,7 +62,7 @@ class Xosearch_searcher_fxt { wiki = Xoa_app_fxt.wiki_tst_(app); mgr = new Xowd_hive_mgr(wiki, Xotdb_dir_info_.Tid_search_ttl); tmp_bfr = Bry_bfr.reset_(255); - parser = Xosrh_parser._; + parser = Xosrh_parser.Instance; } return this; } @@ -79,7 +79,7 @@ class Xosearch_searcher_fxt { tmp_bfr.Add_byte(Byte_ascii.Semic); tmp_bfr.Add_base85_len_5(0); } - mgr.Create(wiki.Ns_mgr().Ns_main(), ttl_bry, tmp_bfr.Xto_bry_and_clear(), null); + mgr.Create(wiki.Ns_mgr().Ns_main(), ttl_bry, tmp_bfr.To_bry_and_clear(), null); } public void Test_search(String ttl_str, int... expd) { byte[] ttl_bry = Bry_.new_a7(ttl_str); @@ -93,8 +93,8 @@ class Xosearch_searcher_fxt { class Xosearch_parser_fxt { public Xosearch_parser_fxt Clear() { if (parser == null) { - parser = Xosrh_parser._; - matches = Ordered_hash_.new_bry_(); + parser = Xosrh_parser.Instance; + matches = Ordered_hash_.New_bry(); } matches.Clear(); return this; @@ -134,12 +134,12 @@ class Xosearch_parser_fxt { } public void Test_scan(String raw, String... expd) { byte[] src = Bry_.new_a7(raw); - Xosrh_qry_tkn[] actl_itms = Xosrh_scanner._.Scan(src); + Xosrh_qry_tkn[] actl_itms = Xosrh_scanner.Instance.Scan(src); Tfds.Eq_ary(expd, To_strings(src, actl_itms)); } public void Test_scan_tids(String raw, byte... expd) { byte[] src = Bry_.new_a7(raw); - Xosrh_qry_tkn[] actl_itms = Xosrh_scanner._.Scan(src); + Xosrh_qry_tkn[] actl_itms = Xosrh_scanner.Instance.Scan(src); Tfds.Eq_ary(expd, To_tids(actl_itms)); } String[] To_strings(byte[] src, Xosrh_qry_tkn[] ary) { diff --git a/400_xowa/src/gplx/xowa/specials/search/Xosrh_qry_itm.java b/400_xowa/src/gplx/xowa/specials/search/Xosrh_qry_itm.java index 88e3ca90f..b8e11befc 100644 --- a/400_xowa/src/gplx/xowa/specials/search/Xosrh_qry_itm.java +++ b/400_xowa/src/gplx/xowa/specials/search/Xosrh_qry_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.specials.search; import gplx.*; import gplx.xowa.*; import gplx.xowa.specials.*; -import gplx.xowa.dbs.*; import gplx.xowa.wikis.data.tbls.*; import gplx.xowa.bldrs.cmds.texts.*; +import gplx.xowa.wikis.dbs.*; import gplx.xowa.wikis.data.tbls.*; import gplx.xowa.bldrs.cmds.texts.*; class Xosrh_qry_itm { public Xosrh_qry_itm(byte tid, byte[] word, Xosrh_qry_itm lhs, Xosrh_qry_itm rhs) { this.tid = tid; this.word = word; this.lhs = lhs; this.rhs = rhs; @@ -29,7 +29,7 @@ class Xosrh_qry_itm { public String Xto_str(byte[] src) { Bry_bfr bfr = Bry_bfr.new_(); Xto_str_bld(src, bfr); - return bfr.Xto_str_and_clear(); + return bfr.To_str_and_clear(); } public Xosrh_qry_ids Matches(byte[] src) { switch (tid) { @@ -74,7 +74,7 @@ class Xosrh_qry_itm { ids = Search_word(wiki, cancelable, tmp_bfr, ns_mgr, word, results_max); break; case Xosrh_qry_itm.Tid_word_quote: - Ordered_hash tmp_search_list = Ordered_hash_.new_(); + Ordered_hash tmp_search_list = Ordered_hash_.New(); byte[][] words = gplx.xowa.bldrs.cmds.texts.Xob_search_base.Split_ttl_into_words(wiki.Lang(), tmp_search_list, tmp_bfr, word); int words_len = words.length; List_adp prv_list = null; @@ -182,7 +182,7 @@ class Xosrh_qry_itm { } tmp_hash.Clear(); return rv; - } static Ordered_hash tmp_hash = Ordered_hash_.new_(); + } static Ordered_hash tmp_hash = Ordered_hash_.New(); List_adp Evaluate_not_found(String msg, Object... args) { return null; } diff --git a/400_xowa/src/gplx/xowa/specials/search/Xosrh_scanner.java b/400_xowa/src/gplx/xowa/specials/search/Xosrh_scanner.java index 7f36af79e..eb136c3c2 100644 --- a/400_xowa/src/gplx/xowa/specials/search/Xosrh_scanner.java +++ b/400_xowa/src/gplx/xowa/specials/search/Xosrh_scanner.java @@ -127,7 +127,7 @@ class Xosrh_scanner { } tkns.Add(new_tkn_(tid, src_bgn, src_end)); } - Ordered_hash tmp_list = Ordered_hash_.new_(); Bry_bfr tmp_bfr = Bry_bfr.new_(); + Ordered_hash tmp_list = Ordered_hash_.New(); Bry_bfr tmp_bfr = Bry_bfr.new_(); Xosrh_qry_tkn new_tkn_(byte tid, int val_bgn, int val_end) {return Xosrh_qry_tkn.new_pos_(tid, val_bgn, val_end);} private static byte[] Bry_and = Bry_.new_a7("AND"); private static final Btrie_slim_mgr trie = Btrie_slim_mgr.ci_a7()// NOTE:ci.ascii:OR / AND only @@ -138,7 +138,7 @@ class Xosrh_scanner { .Add_str_byte(")", Xosrh_qry_tkn.Tid_paren_end) .Add_str_byte("or", Xosrh_qry_tkn.Tid_or) .Add_str_byte("and", Xosrh_qry_tkn.Tid_and); - public static final Xosrh_scanner _ = new Xosrh_scanner(); Xosrh_scanner() {} + public static final Xosrh_scanner Instance = new Xosrh_scanner(); Xosrh_scanner() {} } class Xosrh_qry_tkn { Xosrh_qry_tkn(byte tid, int val_bgn, int val_end, byte[] val_bry) {this.tid = tid; this.val_bgn = val_bgn; this.val_end = val_end; this.val_bry = val_bry;} diff --git a/400_xowa/src/gplx/xowa/specials/search/Xow_domain_sorter__manual_tid.java b/400_xowa/src/gplx/xowa/specials/search/Xow_domain_sorter__manual_tid.java index 573eea732..cc3c5bfc1 100644 --- a/400_xowa/src/gplx/xowa/specials/search/Xow_domain_sorter__manual_tid.java +++ b/400_xowa/src/gplx/xowa/specials/search/Xow_domain_sorter__manual_tid.java @@ -68,7 +68,7 @@ class Xow_domain_sorter__manual_tid implements gplx.lists.ComparerAble { if (lhs_sort == -1 && rhs_sort != -1) return rhs_sort; else if (lhs_sort != -1 && rhs_sort == -1) return lhs_sort; else if (lhs_sort != -1 && rhs_sort != -1) return Int_.Compare(lhs_sort, rhs_sort); - else return Bry_.Compare(Xow_domain_type_.Get_type_as_bry(lhs.Domain_type_id()), Xow_domain_type_.Get_type_as_bry(rhs.Domain_type_id())); + else return Bry_.Compare(Xow_domain_tid_.Get_type_as_bry(lhs.Domain_type_id()), Xow_domain_tid_.Get_type_as_bry(rhs.Domain_type_id())); } private int Get_sort_idx_or_neg1(int tid) { Object o = sort_hash.Get_by(sort_key.Val_(tid)); @@ -79,7 +79,7 @@ class Xow_domain_sorter__manual_tid implements gplx.lists.ComparerAble { int[] id_ints = new int[len]; for (int i = 0; i < len; ++i) { byte[] id_bry = id_brys[i]; - int id_int = Xow_domain_type_.Get_type_as_tid(id_bry); + int id_int = Xow_domain_tid_.Get_type_as_tid(id_bry); id_ints[i] = id_int; } return new Xow_domain_sorter__manual_tid(id_ints); @@ -113,7 +113,7 @@ class Xow_domain_sorter__manual_lang implements gplx.lists.ComparerAble { int[] id_ints = new int[len]; for (int i = 0; i < len; ++i) { byte[] id_bry = id_brys[i]; - int id_int = Xol_lang_itm_.Get_by_key_or_intl(id_bry).Id(); + int id_int = Xol_lang_stub_.Get_by_key_or_intl(id_bry).Id(); id_ints[i] = id_int; } return new Xow_domain_sorter__manual_lang(id_ints); diff --git a/400_xowa/src/gplx/xowa/specials/search/Xows_core.java b/400_xowa/src/gplx/xowa/specials/search/Xows_core.java index cbcc84213..38d4f5e77 100644 --- a/400_xowa/src/gplx/xowa/specials/search/Xows_core.java +++ b/400_xowa/src/gplx/xowa/specials/search/Xows_core.java @@ -55,7 +55,7 @@ class Xows_core { boolean searching_db = cmd.Search(); html_wkr.Gen_tbl(tmp_bfr, cmd.Rslt(), cmd_key, cmd.Wiki().Domain_bry(), searching_db); } - page.Data_raw_(html_wkr.Gen_page(tmp_bfr.Xto_bry_and_clear())); + page.Data_raw_(html_wkr.Gen_page(tmp_bfr.To_bry_and_clear())); } public void Search_end(Xows_ui_cmd cmd) { cmd_hash.Del(cmd.Key()); @@ -69,7 +69,7 @@ class Xows_core { private void Assert_page_count(Xowe_wiki wiki) { Xowd_db_file search_db = wiki.Data__core_mgr().Db__search(); if (ask_for_upgrade - && wiki.App().App_type().Uid_is_gui() + && wiki.App().Mode().Tid_is_gui() && !search_db.Tbl__search_word().Ddl__page_count() && !upgraded_wikis.Has(wiki.Domain_bry()) ) { ask_for_upgrade = false; diff --git a/400_xowa/src/gplx/xowa/specials/search/Xows_db_cache.java b/400_xowa/src/gplx/xowa/specials/search/Xows_db_cache.java index 952d6e6d9..36bc69784 100644 --- a/400_xowa/src/gplx/xowa/specials/search/Xows_db_cache.java +++ b/400_xowa/src/gplx/xowa/specials/search/Xows_db_cache.java @@ -18,7 +18,7 @@ along with this program. If not, see . package gplx.xowa.specials.search; import gplx.*; import gplx.xowa.*; import gplx.xowa.specials.*; import gplx.xowa.specials.search.parsers_old.*; class Xows_db_cache { // one cache per search term; EX: "Earth* AND (History OR Future) AND -"middle earth"" is one cache - private final Ordered_hash hash = Ordered_hash_.new_bry_(); + private final Ordered_hash hash = Ordered_hash_.New_bry(); public Xows_db_word[] Words() {return words;} private Xows_db_word[] words; // words in cache; EX: earth, history, future but not "middle earth" (since not'ed) public Xows_db_matcher Matcher() {return matcher;} private Xows_db_matcher matcher; // criteria public boolean Done() {return done;} public void Done_y_() {done = true;} private boolean done; // marks if db search is done diff --git a/400_xowa/src/gplx/xowa/specials/search/Xows_db_wkr.java b/400_xowa/src/gplx/xowa/specials/search/Xows_db_wkr.java index e7749b918..9627241eb 100644 --- a/400_xowa/src/gplx/xowa/specials/search/Xows_db_wkr.java +++ b/400_xowa/src/gplx/xowa/specials/search/Xows_db_wkr.java @@ -17,7 +17,7 @@ along with this program. If not, see . */ package gplx.xowa.specials.search; import gplx.*; import gplx.xowa.*; import gplx.xowa.specials.*; import gplx.core.primitives.*; import gplx.dbs.*; -import gplx.xowa.nss.*; +import gplx.xowa.wikis.nss.*; import gplx.xowa.wikis.data.*; import gplx.xowa.wikis.data.tbls.*; import gplx.xowa.langs.cases.*; import gplx.gfui.*; class Xows_db_wkr { @@ -77,7 +77,7 @@ class Xows_db_wkr { int page_ns = rdr.Read_int(page_tbl.Fld_page_ns()); if (!qry.Ns_mgr().Has(page_ns)) continue; // ignore: ns doesn't match byte[] page_ttl = rdr.Read_bry_by_str(page_tbl.Fld_page_title()); - // Io_mgr.I.AppendFilStr("C:\\temp.txt", String_.new_u8(word.Text()) + "|" + Int_.Xto_str(page_ns) + "|" + String_.new_u8(page_ttl) + "\n"); + // Io_mgr.Instance.AppendFilStr("C:\\temp.txt", String_.new_u8(word.Text()) + "|" + Int_.To_str(page_ns) + "|" + String_.new_u8(page_ttl) + "\n"); byte[] page_ttl_lc = case_mgr.Case_build_lower(Xoa_ttl.Replace_unders(page_ttl)); byte[][] page_ttl_words = Bry_split_.Split(page_ttl_lc, Byte_ascii.Space, Bool_.Y); if (!matcher.Matches(page_ttl_lc, page_ttl_words)) continue; // ignore: ttl doesn't match matcher diff --git a/400_xowa/src/gplx/xowa/specials/search/Xows_html_wkr.java b/400_xowa/src/gplx/xowa/specials/search/Xows_html_wkr.java index c9bba075d..559f24e5c 100644 --- a/400_xowa/src/gplx/xowa/specials/search/Xows_html_wkr.java +++ b/400_xowa/src/gplx/xowa/specials/search/Xows_html_wkr.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.specials.search; import gplx.*; import gplx.xowa.*; import gplx.xowa.specials.*; -import gplx.langs.htmls.*; import gplx.xowa.html.wtrs.*; import gplx.xowa.langs.numbers.*; +import gplx.langs.htmls.*; import gplx.xowa.htmls.wtrs.*; import gplx.xowa.langs.numbers.*; class Xows_html_wkr { private final Bry_bfr tmp_bfr = Bry_bfr.new_(255); private Xows_ui_qry qry; private Xow_wiki wiki; private Xol_num_mgr num_mgr; @@ -31,7 +31,7 @@ class Xows_html_wkr { byte[] rslts_hdr = fmtr_rslts.Bld_bry_many(tmp_bfr, num_mgr.Format_num(qry.Itms_bgn() + List_adp_.Base1), num_mgr.Format_num(qry.Itms_end()), qry.Search_raw()); byte[] option_link = lnki_bldr.Href_(Bry_.new_a7("home"), wiki.Ttl_parse(Bry_.new_a7("Help:Options/Search"))).Img_16x16(Xoh_img_path.Img_option).Bld_to_bry(); fmtr_page.Bld_bfr_many(tmp_bfr, rslts_hdr, option_link, Paging_link(Bool_.N), Paging_link(Bool_.Y), tbls); - return tmp_bfr.Xto_bry_and_clear(); + return tmp_bfr.To_bry_and_clear(); } public void Gen_tbl(Bry_bfr bfr, Xows_ui_rslt rslt, byte[] cmd_key, byte[] wiki_domain, boolean searching_db) { html_rows.Init(rslt); @@ -95,7 +95,7 @@ class Xows_html_row implements Bry_fmtr_arg { private final Object thread_lock = new Object(); public Xows_html_row(Xoh_lnki_bldr lnki_bldr) {this.lnki_bldr = lnki_bldr;} public Xows_html_row Init(Xows_ui_rslt rslt) {this.rslt = rslt; return this;} - public void XferAry(Bry_bfr bfr, int idx) { //
    A + public void Fmt__do(Bry_bfr bfr) { // A int len = rslt.Len(); for (int i = 0; i < len; ++i) { Xows_db_row row = rslt.Get_at(i); diff --git a/400_xowa/src/gplx/xowa/specials/search/Xows_html_wkr_tst.java b/400_xowa/src/gplx/xowa/specials/search/Xows_html_wkr_tst.java index 18e9b17e1..b3694dbae 100644 --- a/400_xowa/src/gplx/xowa/specials/search/Xows_html_wkr_tst.java +++ b/400_xowa/src/gplx/xowa/specials/search/Xows_html_wkr_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.specials.search; import gplx.*; import gplx.xowa.*; import gplx.xowa.specials.*; -import org.junit.*; import gplx.xowa.html.wtrs.*; import gplx.xowa.tdbs.*; +import org.junit.*; import gplx.xowa.htmls.wtrs.*; import gplx.xowa.wikis.tdbs.*; import gplx.xowa.wikis.domains.*; import gplx.xowa.wikis.data.tbls.*; public class Xows_html_wkr_tst { @@ -68,8 +68,8 @@ class Xows_html_wkr_fxt { html_row.Init(rslt); for (int i = 0; i < rows.length; ++i) rslt.Add(rows[i]); - html_row.XferAry(tmp_bfr, 0); - Tfds.Eq_str_lines(expd, tmp_bfr.Xto_str_and_clear()); + html_row.Fmt__do(tmp_bfr); + Tfds.Eq_str_lines(expd, tmp_bfr.To_str_and_clear()); } public Xows_db_row Make_row(int len, String ttl_str) { byte[] ttl_bry = Bry_.new_u8(ttl_str); diff --git a/400_xowa/src/gplx/xowa/specials/search/Xows_ns_mgr.java b/400_xowa/src/gplx/xowa/specials/search/Xows_ns_mgr.java index d64e16fc0..da6cf6912 100644 --- a/400_xowa/src/gplx/xowa/specials/search/Xows_ns_mgr.java +++ b/400_xowa/src/gplx/xowa/specials/search/Xows_ns_mgr.java @@ -17,9 +17,9 @@ along with this program. If not, see . */ package gplx.xowa.specials.search; import gplx.*; import gplx.xowa.*; import gplx.xowa.specials.*; import gplx.core.primitives.*; -import gplx.xowa.nss.*; +import gplx.xowa.wikis.nss.*; public class Xows_ns_mgr { - private final Ordered_hash ns_hash = Ordered_hash_.new_(); private final Int_obj_ref tmp_ns_id = Int_obj_ref.neg1_(); private final Bry_bfr tmp_bfr = Bry_bfr.reset_(32); + private final Ordered_hash ns_hash = Ordered_hash_.New(); private final Int_obj_ref tmp_ns_id = Int_obj_ref.neg1_(); private final Bry_bfr tmp_bfr = Bry_bfr.reset_(32); private boolean ns_all, ns_main; public void Clear() { ns_hash.Clear(); @@ -75,7 +75,7 @@ public class Xows_ns_mgr { Int_obj_ref ns_id_ref = (Int_obj_ref)ns_hash.Get_at(i); tmp_bfr.Add_int_variable(ns_id_ref.Val()); } - return tmp_bfr.Xto_bry_and_clear(); + return tmp_bfr.To_bry_and_clear(); } } private static final byte[] Hash_key_all = new byte[] {Byte_ascii.Star}, Hash_key_main = new byte[] {Byte_ascii.Num_0}; diff --git a/400_xowa/src/gplx/xowa/specials/search/Xows_page__search.java b/400_xowa/src/gplx/xowa/specials/search/Xows_page__search.java index 8fa4f281e..243c78991 100644 --- a/400_xowa/src/gplx/xowa/specials/search/Xows_page__search.java +++ b/400_xowa/src/gplx/xowa/specials/search/Xows_page__search.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.specials.search; import gplx.*; import gplx.xowa.*; import gplx.xowa.specials.*; -import gplx.core.primitives.*; import gplx.xowa.apis.xowa.specials.*; +import gplx.core.primitives.*; import gplx.xowa.apps.apis.xowa.specials.*; import gplx.xowa.wikis.domains.*; import gplx.xowa.wikis.domains.crts.*; public class Xows_page__search implements Xows_page, GfoInvkAble, GfoEvObj { private final Xoae_app app; private final Xow_domain_itm wiki_domain; private final Xoapi_search search_api; @@ -34,7 +34,7 @@ public class Xows_page__search implements Xows_page, GfoInvkAble, GfoEvObj { public Xows_special_meta Special_meta() {return Xows_special_meta_.Itm__search;} private void Multi_wikis_changed() { Xow_domain_crt_itm crt = search_api.Multi_wikis_crt(wiki_domain); - this.search_domain_ary = app.Usere().Wiki().Xwiki_mgr().Get_by_crt(wiki_domain, crt); + this.search_domain_ary = Get_by_crt(app.Usere().Wiki().Xwiki_mgr(), wiki_domain, crt); if (search_domain_ary.length == 0) search_domain_ary = new Xow_domain_itm[] {wiki_domain}; // default to current if bad input Multi_sorts_changed(); } @@ -45,7 +45,7 @@ public class Xows_page__search implements Xows_page, GfoInvkAble, GfoEvObj { Xow_domain_sorter__manual.Sort(sorter, search_domain_ary); } public void Special_gen(Xowe_wiki wiki, Xoae_page page, Xoa_url url, Xoa_ttl ttl) { - if (wiki.Domain_tid() == Xow_domain_type_.Int__home) return; // do not allow search in home wiki; will throw null ref error b/c no search_ttl dirs + if (wiki.Domain_tid() == Xow_domain_tid_.Int__home) return; // do not allow search in home wiki; will throw null ref error b/c no search_ttl dirs if (search_domain_ary == null) Multi_wikis_changed(); // get args Xog_search_suggest_mgr search_suggest_mgr = wiki.Appe().Gui_mgr().Search_suggest_mgr(); @@ -61,7 +61,7 @@ public class Xows_page__search implements Xows_page, GfoInvkAble, GfoEvObj { } if (Bry_.Len_eq_0(search_bry)) return; // emptry String; exit now, else null ref error; DATE:2015-08-11 if ( search_suggest_mgr.Auto_wildcard() // add * automatically if option set - && wiki.Db_mgr().Tid() == gplx.xowa.dbs.Xodb_mgr_sql.Tid_sql // only apply to sql + && wiki.Db_mgr().Tid() == gplx.xowa.wikis.dbs.Xodb_mgr_sql.Tid_sql // only apply to sql && Bry_find_.Find_fwd(search_bry, Byte_ascii.Star) == -1 // search term does not have asterisk ) search_bry = Bry_.Add(search_bry, Byte_ascii.Star); @@ -101,4 +101,14 @@ public class Xows_page__search implements Xows_page, GfoInvkAble, GfoEvObj { public static final byte Match_tid_all = 0, Match_tid_bgn = 1; public static final byte Version_null = 0, Version_1 = 1, Version_2 = 2; private static final byte[] Qarg__fulltext = Bry_.new_a7("fulltext"), Qarg__fulltext__y = Bry_.new_a7("y"); + private static Xow_domain_itm[] Get_by_crt(gplx.xowa.wikis.xwikis.Xow_xwiki_mgr xwiki_mgr, Xow_domain_itm cur, gplx.xowa.wikis.domains.crts.Xow_domain_crt_itm crt) { + List_adp rv = List_adp_.new_(); + int len = xwiki_mgr.Len(); + for (int i = 0; i < len; ++i) { + gplx.xowa.wikis.xwikis.Xow_xwiki_itm xwiki = xwiki_mgr.Get_at(i); if (!xwiki.Offline()) continue; + Xow_domain_itm domain_itm = Xow_domain_itm_.parse(xwiki.Domain_bry()); + if (crt.Matches(cur, domain_itm)) rv.Add(domain_itm); + } + return (Xow_domain_itm[])rv.To_ary_and_clear(Xow_domain_itm.class); + } } diff --git a/400_xowa/src/gplx/xowa/specials/search/Xows_ui_async.java b/400_xowa/src/gplx/xowa/specials/search/Xows_ui_async.java index 36d5d463d..de75e864f 100644 --- a/400_xowa/src/gplx/xowa/specials/search/Xows_ui_async.java +++ b/400_xowa/src/gplx/xowa/specials/search/Xows_ui_async.java @@ -40,7 +40,7 @@ class Xows_ui_async { byte[] insert_key = insert_row == null ? insert_new_key : insert_row.Key(); Displace(new_row_slot, new_row); html_row.Gen_html(bfr, new_row); - String html_tbl = bfr.Xto_str_and_clear(); + String html_tbl = bfr.To_str_and_clear(); if (cxl.Canceled()) return; js_wkr.Html_elem_append_above(Html_utl.Encode_id_as_str(insert_key), html_tbl); if (last_row != null) { diff --git a/400_xowa/src/gplx/xowa/specials/search/Xows_ui_async_tst.java b/400_xowa/src/gplx/xowa/specials/search/Xows_ui_async_tst.java index 892dd4d3d..bedf35818 100644 --- a/400_xowa/src/gplx/xowa/specials/search/Xows_ui_async_tst.java +++ b/400_xowa/src/gplx/xowa/specials/search/Xows_ui_async_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.specials.search; import gplx.*; import gplx.xowa.*; import gplx.xowa.specials.*; -import org.junit.*; import gplx.xowa.html.wtrs.*; import gplx.xowa.files.gui.*; +import org.junit.*; import gplx.xowa.htmls.wtrs.*; import gplx.xowa.files.gui.*; public class Xows_ui_async_tst { @Before public void init() {fxt.Clear();} private Xows_ui_async_fxt fxt = new Xows_ui_async_fxt(); @Test public void Basic() { diff --git a/400_xowa/src/gplx/xowa/specials/search/Xows_ui_cmd.java b/400_xowa/src/gplx/xowa/specials/search/Xows_ui_cmd.java index b285ffbe6..ee98f0658 100644 --- a/400_xowa/src/gplx/xowa/specials/search/Xows_ui_cmd.java +++ b/400_xowa/src/gplx/xowa/specials/search/Xows_ui_cmd.java @@ -17,7 +17,7 @@ along with this program. If not, see . */ package gplx.xowa.specials.search; import gplx.*; import gplx.xowa.*; import gplx.xowa.specials.*; import gplx.core.threads.*; import gplx.langs.htmls.*; -import gplx.xowa.wikis.*; import gplx.xowa.files.gui.*; import gplx.xowa.gui.views.*; +import gplx.xowa.wikis.*; import gplx.xowa.files.gui.*; import gplx.xowa.guis.views.*; class Xows_ui_cmd implements GfoInvkAble, Cancelable, Xog_tab_close_lnr { private final Xows_core mgr; private final Xows_ui_qry qry; private final Xows_ui_rslt rslt; private final Xow_wiki wiki; private final Xoae_page page; private final Xog_tab_close_mgr tab_close_mgr; private final Xog_js_wkr js_wkr; @@ -25,7 +25,7 @@ class Xows_ui_cmd implements GfoInvkAble, Cancelable, Xog_tab_close_lnr { private Xows_db_cache cache; public Xows_ui_cmd(Xows_core mgr, Xows_ui_qry qry, Xow_wiki wiki, Xoae_page page, Xog_tab_close_mgr tab_close_mgr, Xog_js_wkr js_wkr) { this.mgr = mgr; this.qry = qry; this.wiki = wiki; this.page = page; this.tab_close_mgr = tab_close_mgr; this.js_wkr = js_wkr; - this.async = wiki.App().App_type().Uid_is_gui() && qry.Async_db(); + this.async = wiki.App().Mode().Tid_is_gui() && qry.Async_db(); this.rslt = new Xows_ui_rslt(); this.key = Html_utl.Encode_id_as_bry(Bry_.Add(qry.Key(), Byte_ascii.Pipe_bry, wiki.Domain_bry())); } @@ -45,7 +45,7 @@ class Xows_ui_cmd implements GfoInvkAble, Cancelable, Xog_tab_close_lnr { if (!cache.Done() && (qry.Itms_end() > cache.Itms_end())) { if (async) { fill_from_cache = false; // NOTE: do not retrieve cached results to page, else ui_async cmd will add out of order; DATE:2015-04-24 - if (async_wkr == null) async_wkr = new Xows_ui_async(this, new Xows_html_row(new gplx.xowa.html.wtrs.Xoh_lnki_bldr(wiki.App(), wiki.App().Html__href_wtr())), js_wkr, qry.Page_len(), wiki.Domain_bry()); + if (async_wkr == null) async_wkr = new Xows_ui_async(this, new Xows_html_row(new gplx.xowa.htmls.wtrs.Xoh_lnki_bldr(wiki.App(), wiki.App().Html__href_wtr())), js_wkr, qry.Page_len(), wiki.Domain_bry()); Thread_adp_.invk_(gplx.xowa.apps.Xoa_thread_.Key_special_search_db, this, Invk_search_db).Start(); } else diff --git a/400_xowa/src/gplx/xowa/specials/search/parsers/Xows_text_parser__v1.java b/400_xowa/src/gplx/xowa/specials/search/parsers/Xows_text_parser__v1.java index 59121ce99..cf16e5633 100644 --- a/400_xowa/src/gplx/xowa/specials/search/parsers/Xows_text_parser__v1.java +++ b/400_xowa/src/gplx/xowa/specials/search/parsers/Xows_text_parser__v1.java @@ -19,9 +19,9 @@ package gplx.xowa.specials.search.parsers; import gplx.*; import gplx.xowa.*; im import gplx.core.primitives.*; import gplx.xowa.langs.*; class Xows_text_parser__v1 { - private Xol_lang lang; private Bry_bfr bfr = Bry_bfr.new_(255); - private final Ordered_hash list = Ordered_hash_.new_bry_(); - public void Init(Xol_lang lang) {this.lang = lang;} + private Xol_lang_itm lang; private Bry_bfr bfr = Bry_bfr.new_(255); + private final Ordered_hash list = Ordered_hash_.New_bry(); + public void Init(Xol_lang_itm lang) {this.lang = lang;} public void Parse(byte[] src, int src_len, int bgn, int end) { if (lang != null) { // null lang passed in by searcher src = lang.Case_mgr().Case_build_lower(src); @@ -31,7 +31,7 @@ class Xows_text_parser__v1 { while (true) { if (word_done || i == src_len) { if (bfr.Len() > 0) { - byte[] word = bfr.Xto_bry_and_clear(); + byte[] word = bfr.To_bry_and_clear(); if (!list.Has(word)) list.Add(word, word); // don't add same word twice; EX: Title of "Can Can" should only have "Can" in index } if (i == src_len) break; diff --git a/400_xowa/src/gplx/xowa/specials/search/parsers/Xows_text_parser__v2.java b/400_xowa/src/gplx/xowa/specials/search/parsers/Xows_text_parser__v2.java index 762b129d1..bc77c77c5 100644 --- a/400_xowa/src/gplx/xowa/specials/search/parsers/Xows_text_parser__v2.java +++ b/400_xowa/src/gplx/xowa/specials/search/parsers/Xows_text_parser__v2.java @@ -65,7 +65,7 @@ class Xows_text_parser__v2 { public void Word__add(int bgn__ws, int word_end) { if (bgn__ws == word_end) return; // handle situations like "A!" where sym is at eos if (bgn__ws == -1) return; // handle situations like "A... " where " " is different than "..." - byte[] word = dirty ? bfr.Xto_bry_and_clear() : Bry_.Mid(src, bgn__ws, word_end); + byte[] word = dirty ? bfr.To_bry_and_clear() : Bry_.Mid(src, bgn__ws, word_end); word_mgr.Add(word); if (bgn__dash != -1) { word_mgr.Add(Bry_.Mid(src, bgn__dash, word_end)); @@ -83,7 +83,7 @@ class Xows_text_parser__v2 { public boolean Ws__is_word_end(int pos) {return parser__ws.Is_word_end(src, end, pos);} } class Xob_word_mgr { - private final Ordered_hash hash = Ordered_hash_.new_bry_(); + private final Ordered_hash hash = Ordered_hash_.New_bry(); public void Clear() {hash.Clear();} public int Len() {return hash.Count();} public Xob_word_itm Get_at(int i) {return (Xob_word_itm)hash.Get_at(i);} diff --git a/400_xowa/src/gplx/xowa/specials/search/parsers/Xows_text_parser__v2_tst.java b/400_xowa/src/gplx/xowa/specials/search/parsers/Xows_text_parser__v2_tst.java index 5eb56384a..1c474c904 100644 --- a/400_xowa/src/gplx/xowa/specials/search/parsers/Xows_text_parser__v2_tst.java +++ b/400_xowa/src/gplx/xowa/specials/search/parsers/Xows_text_parser__v2_tst.java @@ -144,7 +144,7 @@ class Xows_text_parser__v2_fxt { tmp_bfr.Add(word.Word()).Add_byte_pipe(); tmp_bfr.Add_int_variable(word.Count()); } - return tmp_bfr.Xto_str_and_clear(); + return tmp_bfr.To_str_and_clear(); } private String To_str(Xob_word_mgr word_mgr) { int len = word_mgr.Len(); diff --git a/400_xowa/src/gplx/xowa/specials/search/parsers_old/Xow_search_scanner.java b/400_xowa/src/gplx/xowa/specials/search/parsers_old/Xow_search_scanner.java index b1ebccedd..65ff574ae 100644 --- a/400_xowa/src/gplx/xowa/specials/search/parsers_old/Xow_search_scanner.java +++ b/400_xowa/src/gplx/xowa/specials/search/parsers_old/Xow_search_scanner.java @@ -19,7 +19,7 @@ package gplx.xowa.specials.search.parsers_old; import gplx.*; import gplx.xowa.* import gplx.core.primitives.*; import gplx.core.btries.*; class Xow_search_scanner { private final List_adp tkns = List_adp_.new_(); private byte[] src; private int src_len, pos, txt_bgn; - private final Ordered_hash tmp_list = Ordered_hash_.new_(); private final Bry_bfr tmp_bfr = Bry_bfr.new_(); + private final Ordered_hash tmp_list = Ordered_hash_.New(); private final Bry_bfr tmp_bfr = Bry_bfr.new_(); public Xow_search_tkn[] Scan(byte[] src) { this.src = src; this.src_len = src.length; tkns.Clear(); pos = 0; txt_bgn = -1; diff --git a/400_xowa/src/gplx/xowa/specials/search/quicks/Xoa_search_itm.java b/400_xowa/src/gplx/xowa/specials/search/quicks/Xoa_search_itm.java new file mode 100644 index 000000000..6ce7ad273 --- /dev/null +++ b/400_xowa/src/gplx/xowa/specials/search/quicks/Xoa_search_itm.java @@ -0,0 +1,27 @@ +/* +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.specials.search.quicks; import gplx.*; import gplx.xowa.*; import gplx.xowa.specials.*; import gplx.xowa.specials.search.*; +public class Xoa_search_itm { + public Xoa_search_itm(byte[] url, byte[] name, byte[] descrip, byte[] img) { + this.url = url; this.name = name; this.descrip = descrip; this.img = img; + } + public byte[] Url() {return url;} private final byte[] url; // EX: en.wikipedia.org/wiki/Earth + public byte[] Name() {return name;} private final byte[] name; // EX: Earth + public byte[] Descrip() {return descrip;} private final byte[] descrip; // EX: Third planet from the Sun + public byte[] Img() {return img;} private final byte[] img; // EX: Earth.png +} diff --git a/400_xowa/src/gplx/xowa/html/Xohv_page_wtr_mgr.java b/400_xowa/src/gplx/xowa/specials/search/quicks/Xoa_search_mgr.java similarity index 70% rename from 400_xowa/src/gplx/xowa/html/Xohv_page_wtr_mgr.java rename to 400_xowa/src/gplx/xowa/specials/search/quicks/Xoa_search_mgr.java index ad670aa53..c4f39f229 100644 --- a/400_xowa/src/gplx/xowa/html/Xohv_page_wtr_mgr.java +++ b/400_xowa/src/gplx/xowa/specials/search/quicks/Xoa_search_mgr.java @@ -15,6 +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.html; import gplx.*; import gplx.xowa.*; -public class Xohv_page_wtr_mgr extends Xoh_page_wtr_mgr_base { +package gplx.xowa.specials.search.quicks; import gplx.*; import gplx.xowa.*; import gplx.xowa.specials.*; import gplx.xowa.specials.search.*; +public class Xoa_search_mgr { + public Xoa_search_itm[] Search(byte[] search) { + // page_title LIKE 'Ear%' + // page_title LIKE '%Ear%' + return null; + } } diff --git a/400_xowa/src/gplx/xowa/specials/search/quicks/Xoa_search_tbl.java b/400_xowa/src/gplx/xowa/specials/search/quicks/Xoa_search_tbl.java new file mode 100644 index 000000000..8ab811f3a --- /dev/null +++ b/400_xowa/src/gplx/xowa/specials/search/quicks/Xoa_search_tbl.java @@ -0,0 +1,63 @@ +/* +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 . +*/ +//namespace gplx.xowa.specials.search.quicks { +// using gplx.dbs; +// public class Xoa_search_tbl : RlsAble { +// private final String tbl_name = "quick_search"; private final Db_meta_fld_list flds = Db_meta_fld_list.new_(); +// private final String fld_page_id, fld_page_title, fld_page_title_lower, fld_page_ns, fld_page_score, fld_page_len, fld_page_links, fld_page_descrip, fld_page_file_title; +// private final Db_conn conn; // private Db_stmt stmt_insert, stmt_update, stmt_select; +// public Db_conn Conn() {return conn;} +// public Xoa_search_tbl(Db_conn conn) { +// this.conn = conn; +// fld_page_id = flds.Add_int ("page_id"); +// fld_page_title = flds.Add_str ("page_title", 255); +// fld_page_title_lower = flds.Add_str ("page_title_lower", 255); +// fld_page_ns = flds.Add_int ("page_ns"); +// fld_page_score = flds.Add_byte ("page_score"); +// fld_page_len = flds.Add_byte ("page_len"); +// fld_page_links = flds.Add_byte ("page_links"); +// fld_page_descrip = flds.Add_str ("page_descrip", 1024); +// fld_page_file_title = flds.Add_str ("page_file_title", 255); +// conn.Rls_reg(this); +// } +// public void Insert(int page_id, byte[] page_title, int page_ns, int page_score, int page_len, int page_links, byte[] page_descrip, byte[] page_file_title) { +// Db_stmt stmt_insert = conn.Stmt_insert(tbl_name, flds); +// stmt_insert.Clear() +// .Val_int(fld_page_id, page_id).Val_bry_as_str(fld_page_title, page_title) +// .Val_int(fld_page_ns, page_ns).Val_int(fld_page_len, page_len) +// .Val_int(fld_page_links, page_links).Val_bry_as_str(fld_page_descrip, page_descrip) +// .Val_bry_as_str(fld_page_file_title, page_file_title) +// .Exec_insert(); +// } +// public void Rls() { +// } +// } +///* +//quick_search +//. page_id 123 +//. page_title Earth +//. page_title_lower earth +//. page_ns 0 +//. page_score 0 +//. page_len 140 +//. page_pagelinks 20 +//. page_descrip planet earth +//. page_file Earth.png +// +//*/ +//} diff --git a/400_xowa/src/gplx/xowa/specials/statistics/Xop_statistics_page.java b/400_xowa/src/gplx/xowa/specials/statistics/Xop_statistics_page.java index c24a9b780..bd839d2b7 100644 --- a/400_xowa/src/gplx/xowa/specials/statistics/Xop_statistics_page.java +++ b/400_xowa/src/gplx/xowa/specials/statistics/Xop_statistics_page.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.specials.statistics; import gplx.*; import gplx.xowa.*; import gplx.xowa.specials.*; -import gplx.xowa.langs.*; import gplx.xowa.langs.numbers.*; -import gplx.xowa.nss.*; +import gplx.xowa.langs.*; import gplx.xowa.langs.msgs.*; import gplx.xowa.langs.numbers.*; +import gplx.xowa.wikis.nss.*; public class Xop_statistics_page implements Xows_page { private Xop_statistics_stats_page_grp stats_page = new Xop_statistics_stats_page_grp(); // private Xop_statistics_stats_wiki_grp stats_wiki = new Xop_statistics_stats_wiki_grp(); @@ -45,7 +45,7 @@ public class Xop_statistics_page implements Xows_page { } class Xop_statistics_stats_page_grp implements Bry_fmtr_arg { public void Wiki_(Xowe_wiki v) {this.wiki = v;} private Xowe_wiki wiki; - public void XferAry(Bry_bfr bfr, int idx) { + public void Fmt__do(Bry_bfr bfr) { byte[] lbl_header_pages = wiki.Msg_mgr().Val_by_id(Xol_msg_itm_.Id_statistics_header_pages); byte[] lbl_articles = wiki.Msg_mgr().Val_by_id(Xol_msg_itm_.Id_statistics_articles); byte[] lbl_pages = wiki.Msg_mgr().Val_by_id(Xol_msg_itm_.Id_statistics_pages); @@ -71,7 +71,7 @@ class Xop_statistics_stats_page_grp implements Bry_fmtr_arg { class Xop_statistics_stats_ns_grp implements Bry_fmtr_arg { private Xop_statistics_stats_ns_itm ns_itm_fmtr = new Xop_statistics_stats_ns_itm(); public void Wiki_(Xowe_wiki v) {this.wiki = v; ns_itm_fmtr.Wiki_(v);} private Xowe_wiki wiki; - public void XferAry(Bry_bfr bfr, int idx) { + public void Fmt__do(Bry_bfr bfr) { byte[] lbl_header_ns = wiki.Msg_mgr().Val_by_id(Xol_msg_itm_.Id_statistics_header_ns); fmtr_ns_grp.Bld_bfr_many(bfr, lbl_header_ns, ns_itm_fmtr); } @@ -84,7 +84,7 @@ class Xop_statistics_stats_ns_grp implements Bry_fmtr_arg { } class Xop_statistics_stats_ns_itm implements Bry_fmtr_arg { public void Wiki_(Xowe_wiki v) {this.wiki = v;} private Xowe_wiki wiki; - public void XferAry(Bry_bfr bfr, int idx) { + public void Fmt__do(Bry_bfr bfr) { Xow_ns_mgr ns_mgr = wiki.Ns_mgr(); int ns_len = ns_mgr.Count(); for (int i = 0; i < ns_len; i++) { @@ -105,7 +105,7 @@ class Xop_statistics_stats_ns_itm implements Bry_fmtr_arg { } class Xop_statistics_stats_wiki_grp implements Bry_fmtr_arg { public void Wiki_(Xowe_wiki v) {this.wiki = v;} private Xowe_wiki wiki; - public void XferAry(Bry_bfr bfr, int idx) { + public void Fmt__do(Bry_bfr bfr) { fmtr_wiki.Bld_bfr_many(bfr, wiki.Db_mgr().Tid_name(), wiki.Fsys_mgr().Root_dir().Raw(), Byte_.To_str(wiki.Db_mgr().Category_version()), wiki.Maint_mgr().Wiki_dump_date().XtoStr_fmt_iso_8561()); } private Bry_fmtr fmtr_wiki = Bry_fmtr.new_(String_.Concat_lines_nl_skip_last diff --git a/400_xowa/src/gplx/xowa/specials/xowa/default_tab/Default_tab_page.java b/400_xowa/src/gplx/xowa/specials/xowa/default_tab/Default_tab_page.java index 51f2aa020..f25404daa 100644 --- a/400_xowa/src/gplx/xowa/specials/xowa/default_tab/Default_tab_page.java +++ b/400_xowa/src/gplx/xowa/specials/xowa/default_tab/Default_tab_page.java @@ -21,7 +21,7 @@ public class Default_tab_page implements Xows_page { public void Special_gen(Xowe_wiki wiki, Xoae_page page, Xoa_url url, Xoa_ttl ttl) { page.Data_raw_(Bry_.Empty); page.Html_data().Custom_html_(Bry_.Empty); - page.Html_data().Custom_name_(Tab_name_bry); + page.Html_data().Custom_tab_name_(Tab_name_bry); } public static final byte[] Tab_name_bry = Bry_.new_a7("New Tab"); } diff --git a/400_xowa/src/gplx/xowa/specials/xowa/diags/Xows_cmd__file_check.java b/400_xowa/src/gplx/xowa/specials/xowa/diags/Xows_cmd__file_check.java index d318d9cdf..cbdc20769 100644 --- a/400_xowa/src/gplx/xowa/specials/xowa/diags/Xows_cmd__file_check.java +++ b/400_xowa/src/gplx/xowa/specials/xowa/diags/Xows_cmd__file_check.java @@ -19,7 +19,7 @@ package gplx.xowa.specials.xowa.diags; import gplx.*; import gplx.xowa.*; import import gplx.core.net.*; import gplx.fsdb.*; import gplx.fsdb.meta.*; import gplx.xowa.files.origs.*; -import gplx.xowa.urls.*; +import gplx.xowa.apps.urls.*; class Xows_cmd__file_check { private Io_url tmp_dir; public void Exec(Bry_bfr bfr, Xoa_app app, Xoa_url url, Gfo_qarg_mgr arg_hash) { @@ -40,7 +40,7 @@ class Xows_cmd__file_check { Write_kv(bfr, "fsdb.atr_file", atr_main.Url()); } catch (Exception e) {bfr.Add_str_u8(Err_.Message_gplx_full(e));} try {Write_kv(bfr, "fsdb.orig", wiki.File__fsdb_core().File__orig_tbl_ary()[0].Conn().Conn_info().Xto_raw());} catch (Exception e) {bfr.Add_str_u8(Err_.Message_gplx_full(e));} - Fsdb_sql_mkr sql_mkr = schema_1 ? Fsdb_sql_mkr__v1.I : Fsdb_sql_mkr__v2.I; + Fsdb_sql_mkr sql_mkr = schema_1 ? Fsdb_sql_mkr__v1.Instance : Fsdb_sql_mkr__v2.Instance; String sql = ""; try { Xof_orig_tbl orig_tbl = wiki.File__fsdb_core().File__orig_tbl_ary()[0]; @@ -96,10 +96,10 @@ class Xows_cmd__file_check { byte[] bin_data = (byte[])row[bin_data_ordinal]; file_bry = gplx.xowa.files.repos.Xof_repo_itm_.Ttl_invalid_fsys_chars(tmp_bfr, file_bry); Io_url bin_url = tmp_dir.GenSubFil(String_.new_u8(file_bry)); - bin_url = tmp_dir.GenSubFil(bin_url.NameOnly() + "_" + Int_.Xto_str(owner_id) + bin_url.Ext()); + bin_url = tmp_dir.GenSubFil(bin_url.NameOnly() + "_" + Int_.To_str(owner_id) + bin_url.Ext()); Write_kv(bfr, "fsdb.bin.export", bin_url.Raw()); Write_kv(bfr, "fsdb.bin.len", bin_data.length); - Io_mgr.I.SaveFilBry(bin_url, bin_data); + Io_mgr.Instance.SaveFilBry(bin_url, bin_data); } } private static void Write_kv(Bry_bfr bfr, String key, Object val) { @@ -115,7 +115,7 @@ class Xows_cmd__file_check { bfr.Add_str_u8("------------------------------------------------------").Add_byte_nl(); } private static final byte[] Arg_wiki = Bry_.new_a7("wiki"), Arg_file = Bry_.new_a7("file"); - public static final Xows_cmd__file_check I = new Xows_cmd__file_check(); Xows_cmd__file_check() {} + public static final Xows_cmd__file_check Instance = new Xows_cmd__file_check(); Xows_cmd__file_check() {} } interface Fsdb_sql_mkr { String Orig_by_ttl(byte[] ttl); @@ -130,10 +130,10 @@ abstract class Fsdb_sql_mkr__base { class Fsdb_sql_mkr__v1 extends Fsdb_sql_mkr__base implements Fsdb_sql_mkr { public String Orig_by_ttl(byte[] ttl) {return String_.Format("SELECT * FROM wiki_orig WHERE orig_ttl = '{0}';", ttl);} public String Thm_by_id(int id) {return String_.Format("SELECT * FROM fsdb_xtn_thm WHERE thm_owner_id = {0};", id);} - public static final Fsdb_sql_mkr I = new Fsdb_sql_mkr__v1(); Fsdb_sql_mkr__v1() {} + public static final Fsdb_sql_mkr Instance = new Fsdb_sql_mkr__v1(); Fsdb_sql_mkr__v1() {} } class Fsdb_sql_mkr__v2 extends Fsdb_sql_mkr__base implements Fsdb_sql_mkr { public String Orig_by_ttl(byte[] ttl) {return String_.Format("SELECT * FROM orig_reg WHERE orig_ttl = '{0}';", ttl);} public String Thm_by_id(int id) {return String_.Format("SELECT * FROM fsdb_thm WHERE thm_owner_id = {0};", id);} - public static final Fsdb_sql_mkr I = new Fsdb_sql_mkr__v2(); Fsdb_sql_mkr__v2() {} + public static final Fsdb_sql_mkr Instance = new Fsdb_sql_mkr__v2(); Fsdb_sql_mkr__v2() {} } diff --git a/400_xowa/src/gplx/xowa/specials/xowa/diags/Xows_cmd__fs_check.java b/400_xowa/src/gplx/xowa/specials/xowa/diags/Xows_cmd__fs_check.java index 57ab63710..828d0bfa1 100644 --- a/400_xowa/src/gplx/xowa/specials/xowa/diags/Xows_cmd__fs_check.java +++ b/400_xowa/src/gplx/xowa/specials/xowa/diags/Xows_cmd__fs_check.java @@ -18,7 +18,7 @@ along with this program. If not, see . package gplx.xowa.specials.xowa.diags; import gplx.*; import gplx.xowa.*; import gplx.xowa.specials.*; import gplx.xowa.specials.xowa.*; import gplx.ios.*; import gplx.core.net.*; import gplx.fsdb.meta.*; -import gplx.xowa.urls.*; +import gplx.xowa.apps.urls.*; class Xows_cmd__fs_check { public void Exec(Bry_bfr bfr, Xoa_app app, Xoa_url url, Gfo_qarg_mgr arg_hash) { byte[] dir_bry = arg_hash.Get_val_bry_or(Arg_dir, null); @@ -38,8 +38,8 @@ class Xows_cmd__fs_check { } private void Write_dir(Bry_bfr bfr, Io_url dir_url) { bfr.Add_byte_nl().Add_str_a7("scanning: ").Add_str_u8(dir_url.Raw()).Add_byte_nl(); - if (!Io_mgr.I.ExistsDir(dir_url)) return; - IoItmDir dir_itm = Io_mgr.I.QueryDir_args(dir_url).Recur_(false).DirInclude_(true).ExecAsDir(); + if (!Io_mgr.Instance.ExistsDir(dir_url)) return; + IoItmDir dir_itm = Io_mgr.Instance.QueryDir_args(dir_url).Recur_(false).DirInclude_(true).ExecAsDir(); IoItmList sub_itms = dir_itm.SubDirs(); int len = sub_itms.Count(); for (int i = 0; i < len; ++i) { try { @@ -55,6 +55,6 @@ class Xows_cmd__fs_check { } catch (Exception e) {bfr.Add_str_u8(Err_.Message_gplx_full(e));} } } - public static final Xows_cmd__fs_check I = new Xows_cmd__fs_check(); Xows_cmd__fs_check() {} + public static final Xows_cmd__fs_check Instance = new Xows_cmd__fs_check(); Xows_cmd__fs_check() {} private static final byte[] Arg_wiki = Bry_.new_a7("wiki"), Arg_dir = Bry_.new_a7("dir"); } diff --git a/400_xowa/src/gplx/xowa/specials/xowa/diags/Xows_cmd__sql_dump.java b/400_xowa/src/gplx/xowa/specials/xowa/diags/Xows_cmd__sql_dump.java index 64375adfe..6f2077255 100644 --- a/400_xowa/src/gplx/xowa/specials/xowa/diags/Xows_cmd__sql_dump.java +++ b/400_xowa/src/gplx/xowa/specials/xowa/diags/Xows_cmd__sql_dump.java @@ -19,7 +19,7 @@ package gplx.xowa.specials.xowa.diags; import gplx.*; import gplx.xowa.*; import import gplx.ios.*; import gplx.core.primitives.*; import gplx.core.net.*; import gplx.dbs.*; import gplx.fsdb.meta.*; -import gplx.xowa.urls.*; +import gplx.xowa.apps.urls.*; class Xows_cmd__sql_dump { public void Exec(Bry_bfr bfr, Xoa_app app, Xoa_url url, Gfo_qarg_mgr arg_hash) { Db_conn conn = null; @@ -27,7 +27,7 @@ class Xows_cmd__sql_dump { byte[] wiki_bry = arg_hash.Get_val_bry_or(Arg_wiki, null); if (wiki_bry == null) { byte[] db_file_bry = arg_hash.Get_val_bry_or(Arg_db_file, null); if (db_file_bry == null) {Xoa_app_.Usr_dlg().Warn_many("", "", "special.cmd; no db_type: url=~{0}", url.Raw()); return;} - conn = Db_conn_bldr.I.Get(Io_url_.new_fil_(String_.new_u8(db_file_bry))); + conn = Db_conn_bldr.Instance.Get(Io_url_.new_fil_(String_.new_u8(db_file_bry))); } else { byte[] db_type_bry = arg_hash.Get_val_bry_or(Arg_db_type, null); if (db_type_bry == null) {Xoa_app_.Usr_dlg().Warn_many("", "", "special.cmd; no db_type: url=~{0}", url.Raw()); return;} @@ -41,7 +41,7 @@ class Xows_cmd__sql_dump { } Db_rdr_utl.Load_and_write(conn, String_.new_u8(sql_bry), bfr); } - public static final Xows_cmd__sql_dump I = new Xows_cmd__sql_dump(); Xows_cmd__sql_dump() {} + public static final Xows_cmd__sql_dump Instance = new Xows_cmd__sql_dump(); Xows_cmd__sql_dump() {} private static final byte[] Arg_wiki = Bry_.new_a7("wiki"), Arg_db_file = Bry_.new_a7("db_file"), Arg_db_type = Bry_.new_a7("db_type"), Arg_sql = Bry_.new_a7("sql"); private static final byte Db_type_fsdb_abc = 1, Db_type_fsdb_atr = 2, Db_type_wiki_core = 3; private static final Hash_adp_bry db_type_hash = Hash_adp_bry.cs() diff --git a/400_xowa/src/gplx/xowa/specials/xowa/diags/Xows_diag_page.java b/400_xowa/src/gplx/xowa/specials/xowa/diags/Xows_diag_page.java index d033d8f00..06aa94389 100644 --- a/400_xowa/src/gplx/xowa/specials/xowa/diags/Xows_diag_page.java +++ b/400_xowa/src/gplx/xowa/specials/xowa/diags/Xows_diag_page.java @@ -17,7 +17,7 @@ along with this program. If not, see . */ package gplx.xowa.specials.xowa.diags; import gplx.*; import gplx.xowa.*; import gplx.xowa.specials.*; import gplx.xowa.specials.xowa.*; import gplx.core.primitives.*; import gplx.core.net.*; -import gplx.xowa.urls.*; +import gplx.xowa.apps.urls.*; public class Xows_diag_page implements Xows_page { private Gfo_qarg_mgr arg_hash = new Gfo_qarg_mgr(); public Xows_special_meta Special_meta() {return Xows_special_meta_.Itm__diag;} @@ -28,12 +28,12 @@ public class Xows_diag_page implements Xows_page { Bry_bfr bfr = wiki.Utl__bfr_mkr().Get_m001(); bfr.Add_str_a7("
    \n");
     		switch (cmd_type_val.Val()) {
    -			case Type_file_check:	Xows_cmd__file_check.I.Exec(bfr, wiki.App(), url, arg_hash); break;
    -			case Type_fs_check:		Xows_cmd__fs_check.I.Exec(bfr, wiki.App(), url, arg_hash); break;
    -			case Type_sql_dump:		Xows_cmd__sql_dump.I.Exec(bfr, wiki.App(), url, arg_hash); break;
    +			case Type_file_check:	Xows_cmd__file_check.Instance.Exec(bfr, wiki.App(), url, arg_hash); break;
    +			case Type_fs_check:		Xows_cmd__fs_check.Instance.Exec(bfr, wiki.App(), url, arg_hash); break;
    +			case Type_sql_dump:		Xows_cmd__sql_dump.Instance.Exec(bfr, wiki.App(), url, arg_hash); break;
     		}
     		bfr.Add_str_a7("
    \n"); - page.Data_raw_(bfr.Xto_bry_and_clear()); + page.Data_raw_(bfr.To_bry_and_clear()); } private static final byte[] Arg_type = Bry_.new_a7("type"); private static final byte Type_file_check = 1, Type_fs_check = 2, Type_sql_dump = 3; diff --git a/400_xowa/src/gplx/xowa/specials/xowa/file_browsers/Xosp_fbrow_cmd__base.java b/400_xowa/src/gplx/xowa/specials/xowa/file_browsers/Xosp_fbrow_cmd__base.java index 0a0d74443..ff5baea6a 100644 --- a/400_xowa/src/gplx/xowa/specials/xowa/file_browsers/Xosp_fbrow_cmd__base.java +++ b/400_xowa/src/gplx/xowa/specials/xowa/file_browsers/Xosp_fbrow_cmd__base.java @@ -34,7 +34,7 @@ abstract class Xosp_fbrow_cmd__base implements Xosp_fbrow_cmd { String path_str = arg_mgr.Read_str_or_null("path"); if (path_str == null) return Xosp_fbrow_rslt.err_("url has unknown path"); // if (Op_sys.Cur().Tid_is_wnt()) path_str = String_.Replace(path_str, "/", "\\"); Io_url path_url = Io_url_.new_any_(path_str); - IoItmDir dir = Io_mgr.I.QueryDir_args(path_url).DirInclude_(true).ExecAsDir(); + IoItmDir dir = Io_mgr.Instance.QueryDir_args(path_url).DirInclude_(true).ExecAsDir(); dir.SubDirs().Sort(); dir.SubFils().Sort(); Xosp_fbrow_data_dir dir_itm = Xosp_fbrow_data_dir.new_(dir); Process_itms(dir_itm); @@ -42,7 +42,7 @@ abstract class Xosp_fbrow_cmd__base implements Xosp_fbrow_cmd { byte[] cmd_src = this.Cmd_src(); byte[] cmd_row = Html_body_cmd_row.Bld_bry_many(tmp_bfr, url_enc, cmd_src, this.Cmd_gui()); html_wtr.Write(tmp_bfr, cmd_src, cmd_row, dir_itm); - return new Xosp_fbrow_rslt(Html_head_default, tmp_bfr.Xto_bry_and_clear()); + return new Xosp_fbrow_rslt(Html_head_default, tmp_bfr.To_bry_and_clear()); } else return Write_html_selected(arg_mgr, selected_str, select_invkable); @@ -110,7 +110,7 @@ class Xosp_fbrow_html implements Bry_fmtr_arg { , this ); } - public void XferAry(Bry_bfr bfr, int idx) { + public void Fmt__do(Bry_bfr bfr) { int len = dir.Count(); for (int i = 0; i < len; ++i) { Xosp_fbrow_data_sub itm = (Xosp_fbrow_data_sub)dir.Get_at(i); @@ -176,7 +176,7 @@ class Xosp_fbrow_cmd__err implements Xosp_fbrow_cmd { public Xosp_fbrow_cmd Make_new() {return this;} public Xosp_fbrow_rslt Write_html(Xoa_url_arg_mgr arg_mgr, GfoInvkAble select_invkable) {return Rslt;} private static final Xosp_fbrow_rslt Rslt = new Xosp_fbrow_rslt(Bry_.Empty, Bry_.new_a7("url has unknown cmd")); - public static final Xosp_fbrow_cmd__err I = new Xosp_fbrow_cmd__err(); Xosp_fbrow_cmd__err() {} + public static final Xosp_fbrow_cmd__err Instance = new Xosp_fbrow_cmd__err(); Xosp_fbrow_cmd__err() {} } class Xosp_fbrow_cmd__wiki_add extends Xosp_fbrow_cmd__base { @Override protected byte[] Cmd_src() {return Regy_key;} @@ -192,7 +192,7 @@ class Xosp_fbrow_cmd__wiki_add extends Xosp_fbrow_cmd__base { Xowv_wiki wiki = (Xowv_wiki)GfoInvkAble_.InvkCmd_val(select_invkable, Xoav_wiki_mgr.Invk_import_by_fil, path_str + wikis[0]); Bry_bfr bfr = Bry_bfr.reset_(255); done_fmtr.Bld_bfr_many(bfr, wiki.Domain_str()); - return new Xosp_fbrow_rslt(Bry_.Empty, bfr.Xto_bry_and_clear()); + return new Xosp_fbrow_rslt(Bry_.Empty, bfr.To_bry_and_clear()); } private static final Bry_fmtr done_fmtr = Bry_fmtr.new_(String_.Concat_lines_nl_skip_last ( "~{domain} Main Page" @@ -200,7 +200,7 @@ class Xosp_fbrow_cmd__wiki_add extends Xosp_fbrow_cmd__base { , "domain"); private static final byte[] Ext_xowa = Bry_.new_a7(".xowa"); public static final byte[] Regy_key = Bry_.new_a7("xowa.wiki.add"); - public static final Xosp_fbrow_cmd__wiki_add I = new Xosp_fbrow_cmd__wiki_add(); + public static final Xosp_fbrow_cmd__wiki_add Instance = new Xosp_fbrow_cmd__wiki_add(); } class Xosp_fbrow_cmd__root_set extends Xosp_fbrow_cmd__base { @Override protected byte[] Cmd_src() {return Regy_key;} @@ -213,5 +213,5 @@ class Xosp_fbrow_cmd__root_set extends Xosp_fbrow_cmd__base { return new Xosp_fbrow_rslt(Bry_.Empty, Bry_.new_u8(selected)); } public static final byte[] Regy_key = Bry_.new_a7("xowa.fsys.root_"); - public static final Xosp_fbrow_cmd__root_set I = new Xosp_fbrow_cmd__root_set(); + public static final Xosp_fbrow_cmd__root_set Instance = new Xosp_fbrow_cmd__root_set(); } diff --git a/400_xowa/src/gplx/xowa/specials/xowa/file_browsers/Xosp_fbrow_data_dir.java b/400_xowa/src/gplx/xowa/specials/xowa/file_browsers/Xosp_fbrow_data_dir.java index 66c67acc4..895da499a 100644 --- a/400_xowa/src/gplx/xowa/specials/xowa/file_browsers/Xosp_fbrow_data_dir.java +++ b/400_xowa/src/gplx/xowa/specials/xowa/file_browsers/Xosp_fbrow_data_dir.java @@ -18,7 +18,7 @@ along with this program. If not, see . package gplx.xowa.specials.xowa.file_browsers; import gplx.*; import gplx.xowa.*; import gplx.xowa.specials.*; import gplx.xowa.specials.xowa.*; import gplx.ios.*; class Xosp_fbrow_data_dir { - private final Ordered_hash hash = Ordered_hash_.new_(); + private final Ordered_hash hash = Ordered_hash_.New(); public Xosp_fbrow_data_dir(Io_url url) {this.url = url;} public Io_url Url() {return url;} private final Io_url url; public int Count() {return hash.Count();} diff --git a/400_xowa/src/gplx/xowa/specials/xowa/file_browsers/Xosp_fbrow_special.java b/400_xowa/src/gplx/xowa/specials/xowa/file_browsers/Xosp_fbrow_special.java index f82e2768c..c1434999d 100644 --- a/400_xowa/src/gplx/xowa/specials/xowa/file_browsers/Xosp_fbrow_special.java +++ b/400_xowa/src/gplx/xowa/specials/xowa/file_browsers/Xosp_fbrow_special.java @@ -29,12 +29,12 @@ public class Xosp_fbrow_special implements Xows_page { public static Xosp_fbrow_rslt Gen(Gfo_qarg_itm[] args, GfoInvkAble select_invkable) { url_args.Init(args); byte[] cmd_bry = url_args.Read_bry_or_empty(Arg_cmd); - Xosp_fbrow_cmd cmd = (Xosp_fbrow_cmd)cmd_regy.Get_by_bry(cmd_bry); if (cmd == null) cmd = Xosp_fbrow_cmd__err.I; + Xosp_fbrow_cmd cmd = (Xosp_fbrow_cmd)cmd_regy.Get_by_bry(cmd_bry); if (cmd == null) cmd = Xosp_fbrow_cmd__err.Instance; return cmd.Make_new().Write_html(url_args, select_invkable); } private static final byte[] Arg_cmd = Bry_.new_a7("cmd"); private static final Hash_adp_bry cmd_regy = Hash_adp_bry.cs() - .Add_bry_obj(Xosp_fbrow_cmd__wiki_add.Regy_key, Xosp_fbrow_cmd__wiki_add.I) - .Add_bry_obj(Xosp_fbrow_cmd__root_set.Regy_key, Xosp_fbrow_cmd__root_set.I) + .Add_bry_obj(Xosp_fbrow_cmd__wiki_add.Regy_key, Xosp_fbrow_cmd__wiki_add.Instance) + .Add_bry_obj(Xosp_fbrow_cmd__root_set.Regy_key, Xosp_fbrow_cmd__root_set.Instance) ; } diff --git a/400_xowa/src/gplx/xowa/specials/xowa/popup_history/Popup_history_page.java b/400_xowa/src/gplx/xowa/specials/xowa/popup_history/Popup_history_page.java index 5ad756425..ab309ed92 100644 --- a/400_xowa/src/gplx/xowa/specials/xowa/popup_history/Popup_history_page.java +++ b/400_xowa/src/gplx/xowa/specials/xowa/popup_history/Popup_history_page.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.specials.xowa.popup_history; import gplx.*; import gplx.xowa.*; import gplx.xowa.specials.*; import gplx.xowa.specials.xowa.*; -import gplx.xowa.html.modules.popups.*; +import gplx.xowa.htmls.modules.popups.*; public class Popup_history_page implements Xows_page { public Xows_special_meta Special_meta() {return Xows_special_meta_.Itm__popup_history;} public void Special_gen(Xowe_wiki wiki, Xoae_page page, Xoa_url url, Xoa_ttl ttl) { diff --git a/400_xowa/src/gplx/xowa/specials/xowa/system_data/System_data_page.java b/400_xowa/src/gplx/xowa/specials/xowa/system_data/System_data_page.java index cc10e26a4..e0e200781 100644 --- a/400_xowa/src/gplx/xowa/specials/xowa/system_data/System_data_page.java +++ b/400_xowa/src/gplx/xowa/specials/xowa/system_data/System_data_page.java @@ -18,7 +18,7 @@ along with this program. If not, see . package gplx.xowa.specials.xowa.system_data; import gplx.*; import gplx.xowa.*; import gplx.xowa.specials.*; import gplx.xowa.specials.xowa.*; import gplx.core.primitives.*; import gplx.core.net.*; import gplx.xowa.langs.*; -import gplx.xowa.urls.*; +import gplx.xowa.apps.urls.*; public class System_data_page implements Xows_page { private Gfo_qarg_mgr arg_hash = new Gfo_qarg_mgr(); public Xows_special_meta Special_meta() {return Xows_special_meta_.Itm__system_data;} @@ -28,7 +28,7 @@ public class System_data_page implements Xows_page { Byte_obj_val type_val = (Byte_obj_val)type_hash.Get_by_bry(file_type); if (type_val == null) return; Io_url file_url = Path_from_type(wiki, type_val.Val()); if (file_url == null) return; Bry_bfr tmp_bfr = wiki.Utl__bfr_mkr().Get_m001(); - byte[] file_txt = Io_mgr.I.LoadFilBry(file_url); + byte[] file_txt = Io_mgr.Instance.LoadFilBry(file_url); file_txt = gplx.langs.htmls.Html_utl.Escape_html_as_bry(file_txt, true, false, false, false, false); // escape < or "
" in messages will cause pre to break fmtr_all.Bld_bfr_many(tmp_bfr, file_url.Raw(), file_txt); page.Data_raw_(tmp_bfr.To_bry_and_rls()); @@ -38,7 +38,7 @@ public class System_data_page implements Xows_page { switch (type) { case Type_log_session: return app.Log_wtr().Session_fil(); case Type_cfg_app: return app.Fsys_mgr().Cfg_app_fil(); - case Type_cfg_lang: return Xol_lang_.xo_lang_fil_(app.Fsys_mgr(), wiki.Lang().Key_str()); + case Type_cfg_lang: return Xol_lang_itm_.xo_lang_fil_(app.Fsys_mgr(), wiki.Lang().Key_str()); case Type_cfg_user: return app.Usere().Fsys_mgr().App_data_cfg_user_fil(); case Type_cfg_custom: return app.Usere().Fsys_mgr().App_data_cfg_custom_fil(); case Type_usr_history: return app.Usere().Fsys_mgr().App_data_history_fil(); diff --git a/400_xowa/src/gplx/xowa/users/Xoc_layout_mgr.java b/400_xowa/src/gplx/xowa/users/Xoc_layout_mgr.java index 4d5a4fef0..b7a14e66d 100644 --- a/400_xowa/src/gplx/xowa/users/Xoc_layout_mgr.java +++ b/400_xowa/src/gplx/xowa/users/Xoc_layout_mgr.java @@ -48,7 +48,7 @@ public class Xoc_layout_mgr implements GfoInvkAble { } } class Enm_mgr { - private Ordered_hash str_hash = Ordered_hash_.new_(); private Hash_adp val_hash = Hash_adp_.new_(); + private Ordered_hash str_hash = Ordered_hash_.New(); private Hash_adp val_hash = Hash_adp_.new_(); private Int_obj_ref tmp_val_ref = Int_obj_ref.zero_(); public Enm_mgr Add(byte val, String str) { Int_obj_ref val_ref = Int_obj_ref.new_(val); diff --git a/400_xowa/src/gplx/xowa/users/Xou_fsys_mgr.java b/400_xowa/src/gplx/xowa/users/Xou_fsys_mgr.java index 5cdba13ab..6b658f335 100644 --- a/400_xowa/src/gplx/xowa/users/Xou_fsys_mgr.java +++ b/400_xowa/src/gplx/xowa/users/Xou_fsys_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.users; import gplx.*; import gplx.xowa.*; -import gplx.xowa.apps.gfss.*; import gplx.xowa.wikis.*; +import gplx.xowa.apps.gfs.*; import gplx.xowa.wikis.*; public class Xou_fsys_mgr implements GfoInvkAble { private Io_url app_root_dir; private Io_url wiki_root_dir; private Io_url cur_root; public Xou_fsys_mgr(Xoae_app app, Xoue_user usr, Io_url user_dir) { diff --git a/400_xowa/src/gplx/xowa/users/Xou_log_mgr.java b/400_xowa/src/gplx/xowa/users/Xou_log_mgr.java index d07b66d60..98c16b6f3 100644 --- a/400_xowa/src/gplx/xowa/users/Xou_log_mgr.java +++ b/400_xowa/src/gplx/xowa/users/Xou_log_mgr.java @@ -19,7 +19,7 @@ package gplx.xowa.users; import gplx.*; import gplx.xowa.*; public class Xou_log_mgr implements GfoInvkAble { public boolean Log_redlinks() {return log_redlinks;} private boolean log_redlinks; public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { - if (ctx.Match(k, Invk_log_redlinks)) return Yn.Xto_str(log_redlinks); + if (ctx.Match(k, Invk_log_redlinks)) return Yn.To_str(log_redlinks); else if (ctx.Match(k, Invk_log_redlinks_)) log_redlinks = m.ReadYn("v"); return this; } diff --git a/400_xowa/src/gplx/xowa/users/Xou_security_mgr.java b/400_xowa/src/gplx/xowa/users/Xou_security_mgr.java index fa2321293..d02775182 100644 --- a/400_xowa/src/gplx/xowa/users/Xou_security_mgr.java +++ b/400_xowa/src/gplx/xowa/users/Xou_security_mgr.java @@ -21,7 +21,7 @@ public class Xou_security_mgr implements GfoInvkAble { public boolean Web_access_enabled() {return app.Api_root().Net().Enabled();} public void Web_access_enabled_(boolean v) {app.Api_root().Net().Enabled_(v);} public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { - if (ctx.Match(k, Invk_web_access_enabled)) return Yn.Xto_str(this.Web_access_enabled()); + if (ctx.Match(k, Invk_web_access_enabled)) return Yn.To_str(this.Web_access_enabled()); else if (ctx.Match(k, Invk_web_access_enabled_)) Web_access_enabled_(m.ReadYn("v")); return this; } diff --git a/400_xowa/src/gplx/xowa/users/Xou_user_.java b/400_xowa/src/gplx/xowa/users/Xou_user_.java index 00018598c..ce6ae03ed 100644 --- a/400_xowa/src/gplx/xowa/users/Xou_user_.java +++ b/400_xowa/src/gplx/xowa/users/Xou_user_.java @@ -17,12 +17,12 @@ along with this program. If not, see . */ package gplx.xowa.users; import gplx.*; import gplx.xowa.*; import gplx.xowa.langs.*; import gplx.xowa.langs.cases.*; import gplx.xowa.wikis.*; import gplx.xowa.xtns.scribunto.*; -import gplx.xowa.nss.*; +import gplx.xowa.wikis.nss.*; import gplx.xowa.wikis.domains.*; class Xou_user_ { public static Xowe_wiki new_or_create_(Xoue_user user, Xoae_app app) { Io_url wiki_dir = app.Fsys_mgr().Home_wiki_dir(); - Xol_lang lang = app.Lang_mgr().Get_by_key_or_new(app.Lang_mgr().Default_lang()); + Xol_lang_itm lang = app.Lang_mgr().Get_by_or_new(Xol_lang_itm_.Key_en); lang.Init_by_load(); // NOTE: lang.Load() must occur before Xowe_wiki.new() b/c wiki will create parsers based on lang Xowe_wiki rv = new Xowe_wiki(app, lang, ns_home_(lang.Case_mgr()), Xow_domain_uid_.To_domain(Xow_domain_uid_.Tid_xowa), wiki_dir); app.Wiki_mgr().Add(rv); @@ -32,7 +32,7 @@ class Xou_user_ { } public static void User_system_cfg_make(Gfo_usr_dlg usr_dlg, Io_url cfg_fil) { usr_dlg.Log_many(GRP_KEY, "user_system_cfg.create", "creating user_system_cfg.gfs: ~{0}", cfg_fil.Raw()); - Io_mgr.I.SaveFilStr(cfg_fil, User_system_cfg_text); + Io_mgr.Instance.SaveFilStr(cfg_fil, User_system_cfg_text); } public static void Bookmarks_make(Xoae_app app, Xowe_wiki home_wiki) { app.Usr_dlg().Log_many(GRP_KEY, "bookmarks.create", "creating bookmarks page"); diff --git a/400_xowa/src/gplx/xowa/users/Xou_user_mgr.java b/400_xowa/src/gplx/xowa/users/Xou_user_mgr.java index 680746410..16fee44cf 100644 --- a/400_xowa/src/gplx/xowa/users/Xou_user_mgr.java +++ b/400_xowa/src/gplx/xowa/users/Xou_user_mgr.java @@ -20,7 +20,7 @@ public class Xou_user_mgr implements GfoInvkAble { public Xou_user_mgr(Xoae_app app, Xoue_user user) {this.app = app; this.Add(user);} private Xoae_app app; public void Add(Xoue_user itm) {regy.Add(itm.Key(), itm);} Xoue_user GetByKey(String key) {return (Xoue_user)regy.Get_by(key);} - Ordered_hash regy = Ordered_hash_.new_(); + Ordered_hash regy = Ordered_hash_.New(); public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { if (ctx.Match(k, Invk_get)) { diff --git a/400_xowa/src/gplx/xowa/users/Xou_user_tst.java b/400_xowa/src/gplx/xowa/users/Xou_user_tst.java index 1c07a73d5..dba11c959 100644 --- a/400_xowa/src/gplx/xowa/users/Xou_user_tst.java +++ b/400_xowa/src/gplx/xowa/users/Xou_user_tst.java @@ -24,12 +24,12 @@ public class Xou_user_tst { fxt.Test_fil(user_system_cfg_url, ""); // check that it is blank fxt.App().Init_by_app(); // run Init_by_app fxt.Test_fil(user_system_cfg_url, Xou_user_.User_system_cfg_text); // check that it is created - Io_mgr.I.SaveFilStr(user_system_cfg_url, ""); // simulate edit by blanking out file + Io_mgr.Instance.SaveFilStr(user_system_cfg_url, ""); // simulate edit by blanking out file fxt.App().Init_by_app(); // run Init_by_app again fxt.Test_fil(user_system_cfg_url, ""); // check that it is still blank } @Test public void Available_from_fsys() { - Io_mgr.I.CreateDir(fxt.App().Fsys_mgr().Wiki_dir().GenSubDir("en.wikipedia.org")); + Io_mgr.Instance.CreateDir(fxt.App().Fsys_mgr().Wiki_dir().GenSubDir("en.wikipedia.org")); fxt.App().Usere().Available_from_fsys(); fxt.Test_xwikis ( fxt.Make_xwiki(Bool_.N, "home") @@ -39,9 +39,9 @@ public class Xou_user_tst { } class Xou_user_fxt { public Xoae_app App() {return app;} private Xoae_app app = Xoa_app_fxt.app_(); - public String Make_xwiki(boolean offline, String name) {return String_.Concat_with_str("|", Yn.Xto_str(offline), name);} + public String Make_xwiki(boolean offline, String name) {return String_.Concat_with_str("|", Yn.To_str(offline), name);} public void Test_fil(Io_url url, String expd) { - Tfds.Eq_str_lines(expd, Io_mgr.I.LoadFilStr(url)); + Tfds.Eq_str_lines(expd, Io_mgr.Instance.LoadFilStr(url)); } public void Test_xwikis(String... expd) { Xow_xwiki_mgr xwiki_mgr = app.Usere().Wiki().Xwiki_mgr(); diff --git a/400_xowa/src/gplx/xowa/users/Xouc_startup_mgr.java b/400_xowa/src/gplx/xowa/users/Xouc_startup_mgr.java index f4d113649..63774d7e4 100644 --- a/400_xowa/src/gplx/xowa/users/Xouc_startup_mgr.java +++ b/400_xowa/src/gplx/xowa/users/Xouc_startup_mgr.java @@ -47,7 +47,7 @@ public class Xouc_startup_mgr implements GfoInvkAble { private String Custom_config() { if (custom_config == null) { // NOTE: LoadFilStr never returns null, so this will only execute once Io_url custom_config_url = config.User().Fsys_mgr().App_data_cfg_custom_fil(); - custom_config = Io_mgr.I.LoadFilStr_args(custom_config_url).MissingIgnored_().Exec(); + custom_config = Io_mgr.Instance.LoadFilStr_args(custom_config_url).MissingIgnored_().Exec(); } return custom_config; } private String custom_config; @@ -60,7 +60,7 @@ public class Xouc_startup_mgr implements GfoInvkAble { } custom_config = v; // Io_url custom_config_url = config.User().Fsys_mgr().App_data_cfg_custom_fil(); // DELETE: no longer sync user_cfg to custom.gfs; already saved in user.gfs; DATE:2014-05-30 - // Io_mgr.I.SaveFilStr(custom_config_url, v); + // Io_mgr.Instance.SaveFilStr(custom_config_url, v); } public static final byte Page_home = 0, Page_last = 1, Page_xowa = 2; } diff --git a/400_xowa/src/gplx/xowa/users/Xouc_window_mgr.java b/400_xowa/src/gplx/xowa/users/Xouc_window_mgr.java index 6149d150e..d2886309e 100644 --- a/400_xowa/src/gplx/xowa/users/Xouc_window_mgr.java +++ b/400_xowa/src/gplx/xowa/users/Xouc_window_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.users; import gplx.*; import gplx.xowa.*; -import gplx.gfui.*; import gplx.xowa.gui.views.*; +import gplx.gfui.*; import gplx.xowa.guis.views.*; public class Xouc_window_mgr implements GfoInvkAble { public Xouc_window_mgr(Xoue_user user) {this.user = user;} private Xoue_user user; public byte Mode_tid() {return mode_tid;} private byte mode_tid = Mode_tid_previous; @@ -30,7 +30,7 @@ public class Xouc_window_mgr implements GfoInvkAble { else if (ctx.Match(k, Invk_mode_list)) return Options_mode_list; else if (ctx.Match(k, Invk_rect)) return rect; else if (ctx.Match(k, Invk_rect_)) rect = Rect_ref.parse(m.ReadStr("v")); - else if (ctx.Match(k, Invk_safe_mode)) return Yn.Xto_str(safe_mode); + else if (ctx.Match(k, Invk_safe_mode)) return Yn.To_str(safe_mode); else if (ctx.Match(k, Invk_safe_mode_)) safe_mode = m.ReadYn("v"); else if (ctx.Match(k, Invk_previous_adj)) return previous_adj; else if (ctx.Match(k, Invk_previous_adj_)) previous_adj = Rect_ref.parse(m.ReadStr("v")); diff --git a/400_xowa/src/gplx/xowa/users/Xoue_user.java b/400_xowa/src/gplx/xowa/users/Xoue_user.java index e7638b1ca..34b3530b2 100644 --- a/400_xowa/src/gplx/xowa/users/Xoue_user.java +++ b/400_xowa/src/gplx/xowa/users/Xoue_user.java @@ -38,8 +38,8 @@ public class Xoue_user implements Xou_user, GfoEvMgrOwner, GfoInvkAble { public Xow_wiki Wikii() {return this.Wiki();} public int Gender() {return Xol_gender_.Tid_unknown;} public Xoae_app Appe() {return app;} private final Xoae_app app; - public Xol_lang Lang() {if (lang == null) {lang = app.Lang_mgr().Get_by_key_or_new(app.Sys_cfg().Lang()); lang.Init_by_load();} return lang;} private Xol_lang lang; - public void Lang_(Xol_lang v) { + public Xol_lang_itm Lang() {if (lang == null) {lang = app.Lang_mgr().Get_by_or_new(app.Sys_cfg().Lang()); lang.Init_by_load();} return lang;} private Xol_lang_itm lang; + public void Lang_(Xol_lang_itm v) { lang = v; this.Msg_mgr().Lang_(v); wiki.Msg_mgr().Clear(); // clear home wiki msgs whenever lang changes; else messages cached from old lang will not be replaced; EX:Read/Edit; DATE:2014-05-26 @@ -58,7 +58,7 @@ public class Xoue_user implements Xou_user, GfoEvMgrOwner, GfoInvkAble { } private Xow_msg_mgr msg_mgr; public void Init_by_app(Xoae_app app) { Io_url user_system_cfg = fsys_mgr.App_data_cfg_dir().GenSubFil(Xou_fsys_mgr.Name_user_system_cfg); - if (!Io_mgr.I.ExistsFil(user_system_cfg)) Xou_user_.User_system_cfg_make(app.Usr_dlg(), user_system_cfg); + if (!Io_mgr.Instance.ExistsFil(user_system_cfg)) Xou_user_.User_system_cfg_make(app.Usr_dlg(), user_system_cfg); user_db_mgr.Init_by_app(Bool_.N, fsys_mgr.Root_dir().OwnerDir().GenSubFil("xowa.user." + key + ".sqlite3")); // EX: /xowa/user/xowa.user.anonymous.sqlite3 if (!Env_.Mode_testing()) { this.Available_from_fsys(); @@ -69,7 +69,7 @@ public class Xoue_user implements Xou_user, GfoEvMgrOwner, GfoInvkAble { session_mgr.Window_mgr().Save_window(app.Gui_mgr().Browser_win().Win_box()); history_mgr.Save(app); if (app.Gui_mgr().Browser_win().Tab_mgr().Html_load_tid__url()) - Io_mgr.I.DeleteDirDeep(fsys_mgr.App_temp_html_dir()); + Io_mgr.Instance.DeleteDirDeep(fsys_mgr.App_temp_html_dir()); app.File_mgr().Cache_mgr().Db_term(); } public void Bookmarks_add(byte[] wiki_domain, byte[] ttl_full_txt) { @@ -102,14 +102,14 @@ public class Xoue_user implements Xou_user, GfoEvMgrOwner, GfoInvkAble { public static final String Key_xowa_user = "anonymous"; public static final String Evt_lang_changed = "lang_changed"; public void Available_from_fsys() { - Io_url[] dirs = Io_mgr.I.QueryDir_args(app.Fsys_mgr().Wiki_dir()).Recur_(false).DirOnly_().ExecAsUrlAry(); + Io_url[] dirs = Io_mgr.Instance.QueryDir_args(app.Fsys_mgr().Wiki_dir()).Recur_(false).DirOnly_().ExecAsUrlAry(); Xowe_wiki usr_wiki = Wiki(); int dirs_len = dirs.length; for (int i = 0; i < dirs_len; i++) { Io_url dir = dirs[i]; String name = dir.NameOnly(); if (String_.Eq(name, gplx.xowa.bldrs.cmds.utils.Xob_core_batch_utl.Dir_dump) -// || !Io_mgr.I.ExistsDir(dir.GenSubFil_nest("ns")) +// || !Io_mgr.Instance.ExistsDir(dir.GenSubFil_nest("ns")) ) continue; byte[] dir_name_as_bry = Bry_.new_u8(name); Xow_xwiki_itm xwiki = Available_add(usr_wiki, dir_name_as_bry); @@ -126,6 +126,6 @@ public class Xoue_user implements Xou_user, GfoEvMgrOwner, GfoInvkAble { Available_add(usr_wiki, wikis[i]); } private Xow_xwiki_itm Available_add(Xowe_wiki usr_wiki, byte[] wiki_name) { - return usr_wiki.Xwiki_mgr().Add_full(wiki_name, wiki_name); + return usr_wiki.Xwiki_mgr().Add_by_atrs(wiki_name, wiki_name); } } diff --git a/400_xowa/src/gplx/xowa/users/Xous_window_mgr.java b/400_xowa/src/gplx/xowa/users/Xous_window_mgr.java index 191e2c4bf..5e36bc94c 100644 --- a/400_xowa/src/gplx/xowa/users/Xous_window_mgr.java +++ b/400_xowa/src/gplx/xowa/users/Xous_window_mgr.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.users; import gplx.*; import gplx.xowa.*; -import gplx.xowa.gui.views.*; -import gplx.xowa.apis.xowa.startups.tabs.*; +import gplx.xowa.guis.views.*; +import gplx.xowa.apps.apis.xowa.startups.tabs.*; public class Xous_window_mgr implements GfoInvkAble { public Xous_window_mgr(Xoue_user user) { this.user = user; @@ -27,9 +27,9 @@ public class Xous_window_mgr implements GfoInvkAble { public boolean Maximized() {return maximized;} private boolean maximized = false; public void Save_window(gplx.gfui.GfuiWin win) { Xoae_app app = user.Appe(); - gplx.xowa.cfgs.Xoa_cfg_mgr cfg_mgr = app.Cfg_mgr(); + gplx.xowa.apps.cfgs.Xoa_cfg_mgr cfg_mgr = app.Cfg_mgr(); if (user.Cfg_mgr().Startup_mgr().Window_mgr().Mode_tid() == Xouc_window_mgr.Mode_tid_previous) { - cfg_mgr.Set_by_app("app.user.session.window.maximized" , Yn.Xto_str(win.Maximized())); + cfg_mgr.Set_by_app("app.user.session.window.maximized" , Yn.To_str(win.Maximized())); cfg_mgr.Set_by_app("app.user.session.window.rect" , win.Rect().Xto_str()); } Xoapi_startup_tabs startup_tabs = app.Api_root().App().Startup().Tabs(); @@ -48,12 +48,12 @@ public class Xous_window_mgr implements GfoInvkAble { Xog_tab_itm tab = tab_mgr.Tabs_get_at(i); bfr.Add_str(tab.Page().Url().To_str()); } - return bfr.Xto_str_and_clear(); + return bfr.To_str_and_clear(); } public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { if (ctx.Match(k, Invk_rect)) return rect; else if (ctx.Match(k, Invk_rect_)) rect = Rect_ref.parse(m.ReadStr("v")); - else if (ctx.Match(k, Invk_maximized)) return Yn.Xto_str(maximized); + else if (ctx.Match(k, Invk_maximized)) return Yn.To_str(maximized); else if (ctx.Match(k, Invk_maximized_)) maximized = m.ReadYn("v"); return this; } public static final String Invk_rect = "rect", Invk_rect_ = "rect_", Invk_maximized = "maximized", Invk_maximized_ = "maximized_"; diff --git a/400_xowa/src/gplx/xowa/users/bmks/Dbui_tbl_itm__bmk.java b/400_xowa/src/gplx/xowa/users/bmks/Dbui_tbl_itm__bmk.java index 75caf0e17..bd7b65336 100644 --- a/400_xowa/src/gplx/xowa/users/bmks/Dbui_tbl_itm__bmk.java +++ b/400_xowa/src/gplx/xowa/users/bmks/Dbui_tbl_itm__bmk.java @@ -18,7 +18,7 @@ along with this program. If not, see . package gplx.xowa.users.bmks; import gplx.*; import gplx.xowa.*; import gplx.xowa.users.*; import gplx.langs.jsons.*; import gplx.langs.htmls.*; import gplx.xowa.users.data.*; import gplx.xowa.users.bmks.*; -import gplx.xowa.html.bridges.*; import gplx.xowa.html.bridges.dbuis.*; import gplx.xowa.html.bridges.dbuis.tbls.*; import gplx.xowa.html.bridges.dbuis.fmtrs.*; +import gplx.xowa.htmls.bridges.*; import gplx.xowa.htmls.bridges.dbuis.*; import gplx.xowa.htmls.bridges.dbuis.tbls.*; import gplx.xowa.htmls.bridges.dbuis.fmtrs.*; public class Dbui_tbl_itm__bmk implements Dbui_tbl_itm { private final Xoa_app app; private final Xoud_bmk_itm_tbl tbl; private final Dbui_tbl_fmtr tbl_fmtr = new Dbui_tbl_fmtr(); @@ -31,13 +31,13 @@ public class Dbui_tbl_itm__bmk implements Dbui_tbl_itm { public Dbui_btn_itm[] Edit_btns() {return edit_btns;} public Dbui_col_itm[] Cols() {return cols;} public void Reg(Bridge_cmd_mgr bridge_mgr) { - Dbui_cmd_mgr dbui_mgr = Dbui_cmd_mgr.I; + Dbui_cmd_mgr dbui_mgr = Dbui_cmd_mgr.Instance; dbui_mgr.Init_by_bridge(bridge_mgr); dbui_mgr.Add(this); } public void Select(Bry_bfr bfr, int owner) { Xoud_bmk_itm_row[] db_rows = tbl.Select_grp(owner); - byte[] option_link = app.Html__lnki_bldr().Href_(Bry_.new_a7("home"), app.User().Wikii().Ttl_parse(Bry_.new_a7("Help:Options/Bookmarks"))).Img_16x16(gplx.xowa.html.wtrs.Xoh_img_path.Img_option).Bld_to_bry(); + byte[] option_link = app.Html__lnki_bldr().Href_(Bry_.new_a7("home"), app.User().Wikii().Ttl_parse(Bry_.new_a7("Help:Options/Bookmarks"))).Img_16x16(gplx.xowa.htmls.wtrs.Xoh_img_path.Img_option).Bld_to_bry(); byte[] delete_confirm_msg = app.Api_root().Usr().Bookmarks().Delete_confirm() ? Msg__delete_confirm : Bry_.Empty; tbl_fmtr.Write(bfr, this, option_link, delete_confirm_msg, To_ui_rows(db_rows)); } private static final byte[] Msg__delete_confirm = Bry_.new_a7(" data-dbui-delete_confirm_msg='Are you sure you want to delete this bookmark?'"); @@ -83,14 +83,14 @@ public class Dbui_tbl_itm__bmk implements Dbui_tbl_itm { private String Write_cells(Dbui_val_fmtr val_fmtr, Dbui_btn_itm[] btns, byte[] row_id, Dbui_row_itm row) { cells_fmtr.Ctor(val_fmtr, btns); cells_fmtr.Init(row_id, row); - cells_fmtr.XferAry(tmp_bfr, 0); - return app.Html__bridge_mgr().Msg_bldr().Clear().Data("html", tmp_bfr.Xto_bry_and_clear()).To_json_str(); + cells_fmtr.Fmt__do(tmp_bfr); + return app.Html__bridge_mgr().Msg_bldr().Clear().Data("html", tmp_bfr.To_bry_and_clear()).To_json_str(); } private Xoud_bmk_itm_row Get_db_row(byte[] pkey) { int bmk_id = Bry_.To_int(pkey); return tbl.Select_or_null(bmk_id); } - private Dbui_row_itm Get_ui_row(Xoud_bmk_itm_row row) {return Get_ui_row(Int_.Xto_bry(row.Id()), row.Name(), row.Url(), row.Comment());} + private Dbui_row_itm Get_ui_row(Xoud_bmk_itm_row row) {return Get_ui_row(Int_.To_bry(row.Id()), row.Name(), row.Url(), row.Comment());} private Dbui_row_itm Get_ui_row(byte[] pkey, byte[] name, byte[] url, byte[] comment) { Dbui_val_itm[] vals = new Dbui_val_itm[3]; vals[0] = new Dbui_val_itm(name, Html_utl.Escape_html_as_bry(tmp_bfr, name)); diff --git a/400_xowa/src/gplx/xowa/users/bmks/Xows_bmk_page.java b/400_xowa/src/gplx/xowa/users/bmks/Xows_bmk_page.java index 904967d66..a9cdf07fb 100644 --- a/400_xowa/src/gplx/xowa/users/bmks/Xows_bmk_page.java +++ b/400_xowa/src/gplx/xowa/users/bmks/Xows_bmk_page.java @@ -17,7 +17,7 @@ along with this program. If not, see . */ package gplx.xowa.users.bmks; import gplx.*; import gplx.xowa.*; import gplx.xowa.users.*; import gplx.core.primitives.*; -import gplx.xowa.html.bridges.dbuis.tbls.*; +import gplx.xowa.htmls.bridges.dbuis.tbls.*; import gplx.xowa.users.data.*; import gplx.xowa.specials.*; public class Xows_bmk_page implements Xows_page { public Xows_special_meta Special_meta() {return Xows_special_meta_.Itm__bookmarks;} diff --git a/400_xowa/src/gplx/xowa/users/data/Xou_db_mgr.java b/400_xowa/src/gplx/xowa/users/data/Xou_db_mgr.java index 84fec5388..bdf2df5d2 100644 --- a/400_xowa/src/gplx/xowa/users/data/Xou_db_mgr.java +++ b/400_xowa/src/gplx/xowa/users/data/Xou_db_mgr.java @@ -35,7 +35,7 @@ public class Xou_db_mgr { public Xou_cache_mgr Cache_mgr() {return cache_mgr;} private Xou_cache_mgr cache_mgr; public Xou_file_itm_finder File__xfer_itm_finder() {return xfer_itm_finder;} private Xou_file_itm_finder xfer_itm_finder; public void Init_by_app(boolean drd, Io_url db_url) { - Db_conn_bldr_data db_conn_bldr = Db_conn_bldr.I.Get_or_new(db_url); + Db_conn_bldr_data db_conn_bldr = Db_conn_bldr.Instance.Get_or_new(db_url); Db_conn conn = db_conn_bldr.Conn(); boolean created = db_conn_bldr.Created(); this.db_file = new Xou_db_file(conn); db_file.Init_assert(); this.cache_mgr = new Xou_cache_mgr(app.Wiki_mgri(), app.Fsys_mgr().File_dir(), db_file); diff --git a/400_xowa/src/gplx/xowa/users/data/Xoud_opt_scope.java b/400_xowa/src/gplx/xowa/users/data/Xoud_opt_scope.java index e80bf3afc..4bfbcc788 100644 --- a/400_xowa/src/gplx/xowa/users/data/Xoud_opt_scope.java +++ b/400_xowa/src/gplx/xowa/users/data/Xoud_opt_scope.java @@ -24,8 +24,8 @@ class Xoud_opt_scope { public int Lang_id() {return lang_id;} private final int lang_id; public int Type_id() {return type_id;} private final int type_id; public String To_str() { - String lang_str = lang_id == Lang_id_wildcard ? "*" : String_.new_u8(Xol_lang_itm_.Get_by_id(lang_id).Key()); - String type_str = type_id == Lang_id_wildcard ? "*" : String_.new_u8(Xow_domain_type_.Get_type_as_bry(type_id)); + String lang_str = lang_id == Lang_id_wildcard ? "*" : String_.new_u8(Xol_lang_stub_.Get_by_id(lang_id).Key()); + String type_str = type_id == Lang_id_wildcard ? "*" : String_.new_u8(Xow_domain_tid_.Get_type_as_bry(type_id)); return lang_str + "." + type_str; } public static final int Lang_id_wildcard = -1, Type_id_wildcard = -1; @@ -34,7 +34,7 @@ class Xoud_opt_scope { class Xoud_opt_scope_parser { private Gfo_usr_dlg usr_dlg; private final List_adp list = List_adp_.new_(); public Xoud_opt_scope[] Parse(byte[] src) { - usr_dlg = Gfo_usr_dlg_.I; + usr_dlg = Gfo_usr_dlg_.Instance; list.Clear(); int pos = 0; int src_len = src.length; while (pos < src_len) { @@ -52,7 +52,7 @@ class Xoud_opt_scope_parser { if (lang_dot == 1 && src[bgn] == Byte_ascii.Star) lang_id = Xoud_opt_scope.Lang_id_wildcard; else { - Xol_lang_itm lang_itm = Xol_lang_itm_.Get_by_key_or_null(src, bgn, lang_dot); if (lang_itm == null) return Warn("scope.parse.invalid_lang: src=~{0}", src, bgn, end); + Xol_lang_stub lang_itm = Xol_lang_stub_.Get_by_key_or_null(src, bgn, lang_dot); if (lang_itm == null) return Warn("scope.parse.invalid_lang: src=~{0}", src, bgn, end); lang_id = lang_itm.Id(); } Object type_tid_obj = btrie_by_type.Match_bgn(src, lang_dot + 1, end); if (type_tid_obj == null) return Warn("scope.parse.invalid_type: src=~{0}", src, bgn, end); @@ -64,22 +64,22 @@ class Xoud_opt_scope_parser { return Xoud_opt_scope.App; } private static final Btrie_slim_mgr btrie_by_type = Btrie_slim_mgr.cs() - .Add_str_int("w" , Xow_domain_type_.Int__wikipedia) - .Add_str_int("d" , Xow_domain_type_.Int__wiktionary) - .Add_str_int("s" , Xow_domain_type_.Int__wikisource) - .Add_str_int("v" , Xow_domain_type_.Int__wikivoyage) - .Add_str_int("q" , Xow_domain_type_.Int__wikiquote) - .Add_str_int("b" , Xow_domain_type_.Int__wikibooks) - .Add_str_int("u" , Xow_domain_type_.Int__wikiversity) - .Add_str_int("n" , Xow_domain_type_.Int__wikinews) + .Add_str_int("w" , Xow_domain_tid_.Int__wikipedia) + .Add_str_int("d" , Xow_domain_tid_.Int__wiktionary) + .Add_str_int("s" , Xow_domain_tid_.Int__wikisource) + .Add_str_int("v" , Xow_domain_tid_.Int__wikivoyage) + .Add_str_int("q" , Xow_domain_tid_.Int__wikiquote) + .Add_str_int("b" , Xow_domain_tid_.Int__wikibooks) + .Add_str_int("u" , Xow_domain_tid_.Int__wikiversity) + .Add_str_int("n" , Xow_domain_tid_.Int__wikinews) .Add_str_int("*" , Xoud_opt_scope.Type_id_wildcard) - .Add_str_int("xowa" , Xow_domain_type_.Int__home) - .Add_str_int("wd" , Xow_domain_type_.Int__wikidata) - .Add_str_int("c" , Xow_domain_type_.Int__commons) - .Add_str_int("species" , Xow_domain_type_.Int__species) - .Add_str_int("meta" , Xow_domain_type_.Int__meta) - .Add_str_int("mw" , Xow_domain_type_.Int__mediawiki) - .Add_str_int("wmf" , Xow_domain_type_.Int__wmfblog) + .Add_str_int("xowa" , Xow_domain_tid_.Int__home) + .Add_str_int("wd" , Xow_domain_tid_.Int__wikidata) + .Add_str_int("c" , Xow_domain_tid_.Int__commons) + .Add_str_int("species" , Xow_domain_tid_.Int__species) + .Add_str_int("meta" , Xow_domain_tid_.Int__meta) + .Add_str_int("mw" , Xow_domain_tid_.Int__mediawiki) + .Add_str_int("wmf" , Xow_domain_tid_.Int__wmfblog) ; private static final Xoud_opt_scope[] Ary_app = new Xoud_opt_scope[] {Xoud_opt_scope.App}; } diff --git a/400_xowa/src/gplx/xowa/users/data/Xoud_opt_scope_tst.java b/400_xowa/src/gplx/xowa/users/data/Xoud_opt_scope_tst.java index 6039d2952..90bb43d7e 100644 --- a/400_xowa/src/gplx/xowa/users/data/Xoud_opt_scope_tst.java +++ b/400_xowa/src/gplx/xowa/users/data/Xoud_opt_scope_tst.java @@ -22,11 +22,11 @@ public class Xoud_opt_scope_tst { private Xoud_opt_scope_fxt fxt = new Xoud_opt_scope_fxt(); @Before public void init() {fxt.Clear();} @Test public void Basic() { - fxt.Test_parse("en.w" , fxt.Make(Xol_lang_itm_.Id_en, Xow_domain_type_.Int__wikipedia)); - fxt.Test_parse("en.*" , fxt.Make(Xol_lang_itm_.Id_en, Xoud_opt_scope.Type_id_wildcard)); - fxt.Test_parse("*.w" , fxt.Make(Xoud_opt_scope.Lang_id_wildcard, Xow_domain_type_.Int__wikipedia)); + fxt.Test_parse("en.w" , fxt.Make(Xol_lang_stub_.Id_en, Xow_domain_tid_.Int__wikipedia)); + fxt.Test_parse("en.*" , fxt.Make(Xol_lang_stub_.Id_en, Xoud_opt_scope.Type_id_wildcard)); + fxt.Test_parse("*.w" , fxt.Make(Xoud_opt_scope.Lang_id_wildcard, Xow_domain_tid_.Int__wikipedia)); fxt.Test_parse("" , Xoud_opt_scope.App); - fxt.Test_parse("en.w,fr.d" , fxt.Make(Xol_lang_itm_.Id_en, Xow_domain_type_.Int__wikipedia), fxt.Make(Xol_lang_itm_.Id_fr, Xow_domain_type_.Int__wiktionary)); + fxt.Test_parse("en.w,fr.d" , fxt.Make(Xol_lang_stub_.Id_en, Xow_domain_tid_.Int__wikipedia), fxt.Make(Xol_lang_stub_.Id_fr, Xow_domain_tid_.Int__wiktionary)); } } class Xoud_opt_scope_fxt { @@ -47,6 +47,6 @@ class Xoud_opt_scope_fxt { if (i != 0) bfr.Add_str_a7(","); bfr.Add_str_a7(itm.To_str()); } - return bfr.Xto_str_and_clear(); + return bfr.To_str_and_clear(); } } diff --git a/400_xowa/src/gplx/xowa/users/history/Dbui_tbl_itm__history.java b/400_xowa/src/gplx/xowa/users/history/Dbui_tbl_itm__history.java index c1f269f39..3e0f23ee1 100644 --- a/400_xowa/src/gplx/xowa/users/history/Dbui_tbl_itm__history.java +++ b/400_xowa/src/gplx/xowa/users/history/Dbui_tbl_itm__history.java @@ -18,7 +18,7 @@ along with this program. If not, see . package gplx.xowa.users.history; import gplx.*; import gplx.xowa.*; import gplx.xowa.users.*; import gplx.langs.jsons.*; import gplx.langs.htmls.*; import gplx.xowa.users.data.*; import gplx.xowa.users.bmks.*; -import gplx.xowa.html.bridges.*; import gplx.xowa.html.bridges.dbuis.*; import gplx.xowa.html.bridges.dbuis.tbls.*; import gplx.xowa.html.bridges.dbuis.fmtrs.*; +import gplx.xowa.htmls.bridges.*; import gplx.xowa.htmls.bridges.dbuis.*; import gplx.xowa.htmls.bridges.dbuis.tbls.*; import gplx.xowa.htmls.bridges.dbuis.fmtrs.*; public class Dbui_tbl_itm__history implements Dbui_tbl_itm { private final Xoa_app app; private final Xoud_history_tbl tbl; private final Dbui_tbl_fmtr tbl_fmtr = new Dbui_tbl_fmtr(); @@ -30,7 +30,7 @@ public class Dbui_tbl_itm__history implements Dbui_tbl_itm { public Dbui_btn_itm[] Edit_btns() {return Dbui_btn_itm.Ary_empty;} public Dbui_col_itm[] Cols() {return cols;} public void Reg(Bridge_cmd_mgr bridge_mgr) { - Dbui_cmd_mgr dbui_mgr = Dbui_cmd_mgr.I; + Dbui_cmd_mgr dbui_mgr = Dbui_cmd_mgr.Instance; dbui_mgr.Init_by_bridge(bridge_mgr); dbui_mgr.Add(this); } @@ -38,7 +38,7 @@ public class Dbui_tbl_itm__history implements Dbui_tbl_itm { public void Select(Bry_bfr bfr, int top) { tbl.Select_by_top(select_list, 100); Xoud_history_row[] db_rows = (Xoud_history_row[])select_list.To_ary_and_clear(Xoud_history_row.class); - byte[] option_link = app.Html__lnki_bldr().Href_(Bry_.new_a7("home"), app.User().Wikii().Ttl_parse(Bry_.new_a7("Help:Options/PageHistory"))).Img_16x16(gplx.xowa.html.wtrs.Xoh_img_path.Img_option).Bld_to_bry(); + byte[] option_link = app.Html__lnki_bldr().Href_(Bry_.new_a7("home"), app.User().Wikii().Ttl_parse(Bry_.new_a7("Help:Options/PageHistory"))).Img_16x16(gplx.xowa.htmls.wtrs.Xoh_img_path.Img_option).Bld_to_bry(); byte[] delete_confirm_msg = app.Api_root().Usr().Bookmarks().Delete_confirm() ? Msg__delete_confirm : Bry_.Empty; tbl_fmtr.Write(bfr, this, option_link, delete_confirm_msg, To_ui_rows(db_rows)); } private static final byte[] Msg__delete_confirm = Bry_.new_a7(" data-dbui-delete_confirm_msg='Are you sure you want to delete this row?'"); @@ -61,12 +61,12 @@ public class Dbui_tbl_itm__history implements Dbui_tbl_itm { int id = Bry_.To_int(pkey); return tbl.Select_or_null(id); } - private Dbui_row_itm Get_ui_row(Xoud_history_row row) {return Get_ui_row(Int_.Xto_bry(row.Id()), row.Wiki(), row.Url(), row.Count(), row.Time());} + private Dbui_row_itm Get_ui_row(Xoud_history_row row) {return Get_ui_row(Int_.To_bry(row.Id()), row.Wiki(), row.Url(), row.Count(), row.Time());} private Dbui_row_itm Get_ui_row(byte[] pkey, byte[] wiki, byte[] url, int count, DateAdp time) { Dbui_val_itm[] vals = new Dbui_val_itm[4]; vals[0] = new Dbui_val_itm(url, url_fmtr.Bld_bry_many(tmp_bfr, Html_utl.Escape_for_atr_val_as_bry(tmp_bfr, Byte_ascii.Apos, url))); vals[1] = new Dbui_val_itm(wiki, wiki); - byte[] count_bry = Int_.Xto_bry(count); + byte[] count_bry = Int_.To_bry(count); vals[2] = new Dbui_val_itm(count_bry, count_bry); byte[] time_bry = Bry_.new_u8(time.XtoStr_fmt_yyyy_MM_dd_HH_mm_ss()); vals[3] = new Dbui_val_itm(time_bry, time_bry); diff --git a/400_xowa/src/gplx/xowa/users/history/Xou_history_html.java b/400_xowa/src/gplx/xowa/users/history/Xou_history_html.java index 5aa209241..a6ee8c593 100644 --- a/400_xowa/src/gplx/xowa/users/history/Xou_history_html.java +++ b/400_xowa/src/gplx/xowa/users/history/Xou_history_html.java @@ -26,7 +26,7 @@ public class Xou_history_html implements Bry_fmtr_arg, Xows_page { html_grp.Bld_bfr_many(bfr, this); page.Data_raw_(bfr.To_bry_and_rls()); } - public void XferAry(Bry_bfr bfr, int idx) { + public void Fmt__do(Bry_bfr bfr) { int len = mgr.Len(); for (int i = 0; i < len; i++) { Xou_history_itm itm = mgr.Get_at(i); diff --git a/400_xowa/src/gplx/xowa/users/history/Xou_history_itm.java b/400_xowa/src/gplx/xowa/users/history/Xou_history_itm.java index b5d115877..1ee98ee81 100644 --- a/400_xowa/src/gplx/xowa/users/history/Xou_history_itm.java +++ b/400_xowa/src/gplx/xowa/users/history/Xou_history_itm.java @@ -68,6 +68,6 @@ public class Xou_history_itm { .Add(wiki) .Add_byte(Bry_.Dlm_fld) .Add(page) .Add_byte(Bry_.Dlm_row); } - public static byte[] key_(byte[] wiki, byte[] page) {return Bry_.Add(wiki, Key_dlm, page);} private static final byte[] Key_dlm = Xoa_consts.Pipe_bry; + public static byte[] key_(byte[] wiki, byte[] page) {return Bry_.Add(wiki, Key_dlm, page);} private static final byte[] Key_dlm = Byte_ascii.Pipe_bry; public static final byte Fld_key = 0, Fld_wiki = 1, Fld_page = 2, Fld_view_count = 3, Fld_view_bgn = 4, Fld_view_end = 5; } diff --git a/400_xowa/src/gplx/xowa/users/history/Xou_history_mgr.java b/400_xowa/src/gplx/xowa/users/history/Xou_history_mgr.java index 7eab5dc24..58cf4e7ea 100644 --- a/400_xowa/src/gplx/xowa/users/history/Xou_history_mgr.java +++ b/400_xowa/src/gplx/xowa/users/history/Xou_history_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.users.history; import gplx.*; import gplx.xowa.*; import gplx.xowa.users.*; -import gplx.core.primitives.*; import gplx.core.net.*; import gplx.xowa.html.hrefs.*; +import gplx.core.primitives.*; import gplx.core.net.*; import gplx.xowa.htmls.hrefs.*; public class Xou_history_mgr implements GfoInvkAble { private final Xou_history_html html_mgr = new Xou_history_html(); private Xou_history_sorter sorter = new Xou_history_sorter().Sort_fld_(Xou_history_itm.Fld_view_end).Ascending_(false); private final Io_url history_fil; - private Ordered_hash itms = Ordered_hash_.new_bry_(); + private Ordered_hash itms = Ordered_hash_.New_bry(); private boolean load_chk = false; private final Bry_bfr tmp_bfr = Bry_bfr.new_(); public Xou_history_mgr(Io_url history_fil) {this.history_fil = history_fil;} @@ -73,14 +73,14 @@ public class Xou_history_mgr implements GfoInvkAble { tmp_bfr.Add(page); Gfo_qarg_mgr qarg_mgr = url.Qargs_mgr(); qarg_mgr.To_bry(tmp_bfr, Xoa_app_.Utl__encoder_mgr().Href(), Bool_.N); - return tmp_bfr.Xto_bry_and_clear(); + return tmp_bfr.To_bry_and_clear(); } public void Sort() {itms.Sort_by(sorter);} public void Load() { if (load_chk) return; load_chk = true; itms.Clear(); - Xou_history_itm_srl.Load(Io_mgr.I.LoadFilBry(history_fil), itms); + Xou_history_itm_srl.Load(Io_mgr.Instance.LoadFilBry(history_fil), itms); itms.Sort_by(sorter); } public void Save(Xoae_app app) { @@ -90,13 +90,13 @@ public class Xou_history_mgr implements GfoInvkAble { itms.Sort_by(sorter); if (itms_len > current_itms_max) itms = Archive(app); byte[] ary = Xou_history_itm_srl.Save(itms); - Io_mgr.I.SaveFilBry(app.Usere().Fsys_mgr().App_data_history_fil(), ary); + Io_mgr.Instance.SaveFilBry(app.Usere().Fsys_mgr().App_data_history_fil(), ary); } public Ordered_hash Archive(Xoae_app app) { itms.Sort_by(sorter); int itms_len = itms.Count(); - Ordered_hash current_itms = Ordered_hash_.new_bry_(); - Ordered_hash archive_itms = Ordered_hash_.new_bry_(); + Ordered_hash current_itms = Ordered_hash_.New_bry(); + Ordered_hash archive_itms = Ordered_hash_.New_bry(); for (int i = 0; i < itms_len; i++) { Xou_history_itm itm = (Xou_history_itm)itms.Get_at(i); Ordered_hash itms_hash = (i < current_itms_reset) ? current_itms : archive_itms; @@ -104,7 +104,7 @@ public class Xou_history_mgr implements GfoInvkAble { } byte[] ary = Xou_history_itm_srl.Save(archive_itms); Io_url url = app.Usere().Fsys_mgr().App_data_history_fil().GenNewNameOnly(DateAdp_.Now().XtoStr_fmt_yyyyMMdd_HHmmss_fff()); - Io_mgr.I.SaveFilBry(url, ary); + Io_mgr.Instance.SaveFilBry(url, ary); return current_itms; } private int current_itms_max = 512, current_itms_reset = 256; public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { @@ -146,6 +146,6 @@ class Xou_history_itm_srl { int listLen = list.Count(); for (int i = 0; i < listLen; i++) ((Xou_history_itm)list.Get_at(i)).Save(bb); - return bb.Xto_bry(); + return bb.To_bry(); } } diff --git a/400_xowa/src/gplx/xowa/users/history/Xou_history_mgr_tst.java b/400_xowa/src/gplx/xowa/users/history/Xou_history_mgr_tst.java index fd8693e82..90dfb4916 100644 --- a/400_xowa/src/gplx/xowa/users/history/Xou_history_mgr_tst.java +++ b/400_xowa/src/gplx/xowa/users/history/Xou_history_mgr_tst.java @@ -52,7 +52,7 @@ class Xou_history_mgr_fxt { wiki = Xoa_app_fxt.wiki_tst_(app); under = app.Usere().History_mgr(); } - Io_mgr.I.DeleteDirDeep(Io_url_.new_dir_("mem/xowa/user/test_user/app/data/history/")); + Io_mgr.Instance.DeleteDirDeep(Io_url_.new_dir_("mem/xowa/user/test_user/app/data/history/")); under.Clear(); } public Xou_history_mgr_fxt Add_many(String... ary) { @@ -88,7 +88,7 @@ class Xou_history_mgr_fxt { public Xou_history_mgr_fxt Invk(String key, Object v) {GfoInvkAble_.InvkCmd_val(under, key, v); return this;} public Xou_history_mgr_fxt Save() {under.Save(app); return this;} public Xou_history_mgr_fxt Fil_tst(String expd_url, String expd) { - String actl = Io_mgr.I.LoadFilStr(expd_url); + String actl = Io_mgr.Instance.LoadFilStr(expd_url); Tfds.Eq_str_lines(expd, actl); return this; } diff --git a/400_xowa/src/gplx/xowa/users/history/Xoud_history_tbl.java b/400_xowa/src/gplx/xowa/users/history/Xoud_history_tbl.java index 3604bec74..bda98f947 100644 --- a/400_xowa/src/gplx/xowa/users/history/Xoud_history_tbl.java +++ b/400_xowa/src/gplx/xowa/users/history/Xoud_history_tbl.java @@ -71,7 +71,7 @@ public class Xoud_history_tbl implements RlsAble { } public void Select_by_top(List_adp rv, int count) { if (stmt_select_by_top == null) { - Db_qry__select_in_tbl qry = new Db_qry__select_in_tbl(tbl_name, flds.To_str_ary(), null, null, null, fld_time + " DESC", " LIMIT " + Int_.Xto_str(count)); + Db_qry__select_in_tbl qry = new Db_qry__select_in_tbl(tbl_name, flds.To_str_ary(), null, null, null, fld_time + " DESC", " LIMIT " + Int_.To_str(count)); stmt_select_by_top = conn.Stmt_new(qry); } Db_rdr rdr = stmt_select_by_top.Clear().Exec_select__rls_manual(); diff --git a/400_xowa/src/gplx/xowa/users/prefs/Prefs_converter.java b/400_xowa/src/gplx/xowa/users/prefs/Prefs_converter.java index e9acfafe1..39c405a5f 100644 --- a/400_xowa/src/gplx/xowa/users/prefs/Prefs_converter.java +++ b/400_xowa/src/gplx/xowa/users/prefs/Prefs_converter.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.users.prefs; import gplx.*; import gplx.xowa.*; import gplx.xowa.users.*; -import gplx.xowa.cfgs.*; +import gplx.xowa.apps.cfgs.*; public class Prefs_converter { private Bry_bfr bfr = Bry_bfr.new_(); private List_adp list = List_adp_.new_(); @@ -25,11 +25,11 @@ public class Prefs_converter { if (options_version == 1) { Io_url cfg_dir = app.Usere().Fsys_mgr().App_data_cfg_dir(); Io_url cfg_fil = cfg_dir.GenSubFil("user_system_cfg.gfs"); - Io_url trg_fil = cfg_fil.GenNewNameAndExt(gplx.xowa.cfgs.Xoa_cfg_db_txt.File_name); - if (!Io_mgr.I.ExistsFil(trg_fil)) { // do not overwrite file if it is there (i.e.: it's already converted); needed when running in app_mode = cmd (see HACK in Xob_bldr.Run) - String old_str = Io_mgr.I.LoadFilStr_args(cfg_fil).MissingIgnored_(true).Exec(); + Io_url trg_fil = cfg_fil.GenNewNameAndExt(gplx.xowa.apps.cfgs.Xoa_cfg_db_txt.File_name); + if (!Io_mgr.Instance.ExistsFil(trg_fil)) { // do not overwrite file if it is there (i.e.: it's already converted); needed when running in app_mode = cmd (see HACK in Xob_bldr.Run) + String old_str = Io_mgr.Instance.LoadFilStr_args(cfg_fil).MissingIgnored_(true).Exec(); String new_str = Convert(old_str); - Io_mgr.I.SaveFilStr(trg_fil, new_str); + Io_mgr.Instance.SaveFilStr(trg_fil, new_str); app.Cfg_mgr().Db_load_txt(); app.Cfg_mgr().Set_by_app("app.setup.dumps.wiki_storage_type", "sqlite"); app.Log_wtr().Log_to_session_fmt("converted options to v2"); @@ -38,7 +38,7 @@ public class Prefs_converter { } public String Convert(String raw) { list.Clear(); - GfoMsg root_msg = gplx.langs.gfss.Gfs_msg_bldr._.ParseToMsg(raw); + GfoMsg root_msg = gplx.langs.gfs.Gfs_msg_bldr.Instance.ParseToMsg(raw); int len = root_msg.Subs_count(); for (int i = 0; i < len; i++) { GfoMsg msg = root_msg.Subs_getAt(i); @@ -58,7 +58,7 @@ public class Prefs_converter { Write_escaped_str(bfr, itm.Val()); bfr.Add_str_a7("';\n"); } - return bfr.Xto_str_and_clear(); + return bfr.To_str_and_clear(); } private void Write_escaped_str(Bry_bfr bfr, String str) { byte[] bry = Bry_.new_u8(str); @@ -81,7 +81,7 @@ public class Prefs_converter { if (prop_set_key[prop_set_key_len - 1] != Byte_ascii.Underline) return; // doesn't end with _ bfr.Add_mid(prop_set_key, 0, prop_set_key_len - 1); Prefs_converter_itm itm = new Prefs_converter_itm(); - itm.Key_(bfr.Xto_str_and_clear()); + itm.Key_(bfr.To_str_and_clear()); String prop_val = m.Args_getAt(0).Val_to_str_or_empty(); itm.Val_(prop_val); list.Add(itm); @@ -105,7 +105,7 @@ public class Prefs_converter { Convert_msg(m.Subs_getAt(0), depth + 1); } } - public static final Prefs_converter _ = new Prefs_converter(); Prefs_converter() {} + public static final Prefs_converter Instance = new Prefs_converter(); Prefs_converter() {} } class Prefs_converter_itm { public String Key() {return key;} public void Key_(String v) {this.key = v;} private String key; diff --git a/400_xowa/src/gplx/xowa/users/prefs/Prefs_converter_tst.java b/400_xowa/src/gplx/xowa/users/prefs/Prefs_converter_tst.java index f603af917..e79acd8ba 100644 --- a/400_xowa/src/gplx/xowa/users/prefs/Prefs_converter_tst.java +++ b/400_xowa/src/gplx/xowa/users/prefs/Prefs_converter_tst.java @@ -34,7 +34,7 @@ public class Prefs_converter_tst { } } class Prefs_converter_fxt { - Prefs_converter converter = Prefs_converter._; + Prefs_converter converter = Prefs_converter.Instance; public void Test_convert(String raw, String expd) { String actl = converter.Convert(raw); Tfds.Eq_str_lines(expd, actl); diff --git a/400_xowa/src/gplx/xowa/users/prefs/Prefs_html_wtr.java b/400_xowa/src/gplx/xowa/users/prefs/Prefs_html_wtr.java index acb857184..090ea4cf9 100644 --- a/400_xowa/src/gplx/xowa/users/prefs/Prefs_html_wtr.java +++ b/400_xowa/src/gplx/xowa/users/prefs/Prefs_html_wtr.java @@ -96,13 +96,13 @@ class Prefs_html_wtr { if (cmd == null) cmd = hnde.Atrs_val_by_key_bry(Prefs_mgr.Bry_prop_get); tmp_bfr.Add(cmd).Add_byte(Byte_ascii.Semic); - try {return prefs_mgr.Eval(tmp_bfr.Xto_bry_and_clear());} + try {return prefs_mgr.Eval(tmp_bfr.To_bry_and_clear());} catch (Exception e) {return Err_.Message_gplx_full(e);} } KeyVal[] Get_select_options(Html_nde hnde) { byte[] options_list_key = hnde.Atrs_val_by_key_bry(Atr_key_xowa_prop_list); tmp_bfr.Add(options_list_key).Add_byte(Byte_ascii.Semic); - try {return (KeyVal[])prefs_mgr.Eval(tmp_bfr.Xto_bry_and_clear());} + try {return (KeyVal[])prefs_mgr.Eval(tmp_bfr.To_bry_and_clear());} catch (Exception e) {Err_.Noop(e); return KeyVal_.Ary_empty;} } private void Write__nde_end(Bry_bfr bfr) {bfr.Add_byte(Byte_ascii.Gt);} diff --git a/400_xowa/src/gplx/xowa/users/prefs/Prefs_mgr.java b/400_xowa/src/gplx/xowa/users/prefs/Prefs_mgr.java index 565167599..7283c1d4c 100644 --- a/400_xowa/src/gplx/xowa/users/prefs/Prefs_mgr.java +++ b/400_xowa/src/gplx/xowa/users/prefs/Prefs_mgr.java @@ -17,8 +17,8 @@ along with this program. If not, see . */ package gplx.xowa.users.prefs; import gplx.*; import gplx.xowa.*; import gplx.xowa.users.*; import gplx.core.primitives.*; import gplx.core.net.*; import gplx.langs.htmls.*; import gplx.gfui.*; -import gplx.xowa.gui.views.*; -import gplx.xowa.urls.*; +import gplx.xowa.guis.views.*; +import gplx.xowa.apps.urls.*; import gplx.xowa.parsers.*; public class Prefs_mgr implements GfoInvkAble { public Prefs_mgr(Xoae_app app) { @@ -50,7 +50,7 @@ public class Prefs_mgr implements GfoInvkAble { pos = hnde.Tag_rhs_end(); } bfr.Add_mid(src, pos, src.length); - return bfr.Xto_bry_and_clear(); + return bfr.To_bry_and_clear(); } private Bry_fmtr props_get_fmtr; private void Props_set_and_reload() { Xoae_page page = app.Gui_mgr().Browser_win().Active_page(); @@ -78,7 +78,7 @@ public class Prefs_mgr implements GfoInvkAble { byte[] eval_code = hnde.Atrs_val_by_key_bry(Bry_prop); if (eval_code == null) eval_code = hnde.Atrs_val_by_key_bry(Bry_prop_set); String hnde_val = null; - String hnde_key = "xowa_prop_" + Int_.Xto_str(i); + String hnde_key = "xowa_prop_" + Int_.To_str(i); Xog_html_itm html_itm = html_box_mok == null ? app.Gui_mgr().Browser_win().Active_tab().Html_itm() : html_box_mok; // TEST: byte elem_tid = Prefs_mgr.Elem_tid_tid_of(hnde); switch (elem_tid) { diff --git a/400_xowa/src/gplx/xowa/users/prefs/Prefs_mgr_tst.java b/400_xowa/src/gplx/xowa/users/prefs/Prefs_mgr_tst.java index 07b9d7284..73056a74b 100644 --- a/400_xowa/src/gplx/xowa/users/prefs/Prefs_mgr_tst.java +++ b/400_xowa/src/gplx/xowa/users/prefs/Prefs_mgr_tst.java @@ -17,8 +17,8 @@ along with this program. If not, see . */ package gplx.xowa.users.prefs; import gplx.*; import gplx.xowa.*; import gplx.xowa.users.*; import org.junit.*; -import gplx.gfui.*; import gplx.xowa.apps.gfss.*; -import gplx.xowa.gui.views.*; +import gplx.gfui.*; import gplx.xowa.apps.gfs.*; +import gplx.xowa.guis.views.*; public class Prefs_mgr_tst { private Prefs_mgr_fxt fxt = new Prefs_mgr_fxt(); @Before public void init() {fxt.Clear();} @@ -133,7 +133,7 @@ class Prefs_mgr_fxt { private Prefs_mgr prefs_mgr; private Gfui_html_mok html_box; public void Clear() { if (app == null) { - GfsCore._.Clear(); // NOTE: clear GfsCore, else Props test will fail for mass run + GfsCore.Instance.Clear(); // NOTE: clear GfsCore, else Props test will fail for mass run Xoa_gfs_mgr.Msg_parser_init(); app = Xoa_app_fxt.app_(); prefs_mgr = new Prefs_mgr(app); diff --git a/400_xowa/src/gplx/xowa/users/prefs/Prefs_rename_mgr.java b/400_xowa/src/gplx/xowa/users/prefs/Prefs_rename_mgr.java index 482785b52..2eef883c7 100644 --- a/400_xowa/src/gplx/xowa/users/prefs/Prefs_rename_mgr.java +++ b/400_xowa/src/gplx/xowa/users/prefs/Prefs_rename_mgr.java @@ -22,7 +22,7 @@ public class Prefs_rename_mgr { List_add(list, "app.cfgs.get('app.gui.html.portal.wikis.visible', 'app').val", "app.cfgs.get('xowa.api.html.page.toggles.get(''offline-wikis'').visible', 'app').val"); } public boolean Check(Io_url url) { - String cur_str = Io_mgr.I.LoadFilStr_args(url).MissingIgnored_().Exec(); + String cur_str = Io_mgr.Instance.LoadFilStr_args(url).MissingIgnored_().Exec(); boolean cur_str_changed = false; int list_len = list.Count(); for (int i = 0; i < list_len; ++i) { @@ -30,18 +30,18 @@ public class Prefs_rename_mgr { if (String_.Has(cur_str, itm.Src())) { cur_str_changed = true; cur_str = String_.Replace(cur_str, itm.Src(), itm.Trg()); - Gfo_usr_dlg_.I.Log_many("", "", "cfg.replace: src=~{src} trg = ~{trg}", itm.Src(), itm.Trg()); + Gfo_usr_dlg_.Instance.Log_many("", "", "cfg.replace: src=~{src} trg = ~{trg}", itm.Src(), itm.Trg()); } } if (cur_str_changed) - Io_mgr.I.SaveFilStr(url, cur_str); + Io_mgr.Instance.SaveFilStr(url, cur_str); return cur_str_changed; } private static void List_add(List_adp list, String src, String trg) {list.Add(new Prefs_rename_itm(src, trg));} - public static final Prefs_rename_mgr _ = new Prefs_rename_mgr(); + public static final Prefs_rename_mgr Instance = new Prefs_rename_mgr(); } class Prefs_rename_itm { public Prefs_rename_itm(String src, String trg) {this.src = src; this.trg = trg;} public String Src() {return src;} private String src; public String Trg() {return trg;} private String trg; -} \ No newline at end of file +} diff --git a/400_xowa/src/gplx/xowa/users/wikis/Xofs_url_itm_parser.java b/400_xowa/src/gplx/xowa/users/wikis/Xofs_url_itm_parser.java index 6b622f87b..8075a66cb 100644 --- a/400_xowa/src/gplx/xowa/users/wikis/Xofs_url_itm_parser.java +++ b/400_xowa/src/gplx/xowa/users/wikis/Xofs_url_itm_parser.java @@ -74,6 +74,6 @@ class Xofs_url_itm_parser { break; } } - itm.Url_(url_bfr.Xto_str_and_clear()); + itm.Url_(url_bfr.To_str_and_clear()); } } diff --git a/400_xowa/src/gplx/xowa/wikis/Xoa_wiki_mgr.java b/400_xowa/src/gplx/xowa/wikis/Xoa_wiki_mgr.java index dee34475e..06260c7bb 100644 --- a/400_xowa/src/gplx/xowa/wikis/Xoa_wiki_mgr.java +++ b/400_xowa/src/gplx/xowa/wikis/Xoa_wiki_mgr.java @@ -18,6 +18,9 @@ along with this program. If not, see . package gplx.xowa.wikis; import gplx.*; import gplx.xowa.*; public interface Xoa_wiki_mgr { boolean Has(byte[] key); + int Count(); + Xow_wiki Get_at_i(int i); + Xow_wiki Get_by_key_or_null_i(byte[] key); Xow_wiki Get_by_key_or_make_init_y(byte[] key); Xow_wiki Get_by_key_or_make_init_n(byte[] key); } diff --git a/400_xowa/src/gplx/xowa/wikis/Xoa_wiki_regy.java b/400_xowa/src/gplx/xowa/wikis/Xoa_wiki_regy.java index e869373bc..94fafb4f4 100644 --- a/400_xowa/src/gplx/xowa/wikis/Xoa_wiki_regy.java +++ b/400_xowa/src/gplx/xowa/wikis/Xoa_wiki_regy.java @@ -29,14 +29,14 @@ public class Xoa_wiki_regy { } public boolean Url_is_invalid_domain(Xoa_url url) { if (!Bry_.Eq(url.Page_bry(), Xoa_page_.Main_page_bry)) return false; // page is not "Main_Page"; assume not an invalid domain str; EX: "uk/wiki/Main_Page" - if ( Bry_.Eq(Xow_domain_type_.Bry__home, url.Wiki_bry()) // wiki is "home" - && !Bry_.Eq(Xow_domain_type_.Bry__home, url.Raw())) // raw is "home"; should be "home/wiki/Main_Page"; DATE:2014-02-09 + if ( Bry_.Eq(Xow_domain_tid_.Bry__home, url.Wiki_bry()) // wiki is "home" + && !Bry_.Eq(Xow_domain_tid_.Bry__home, url.Raw())) // raw is "home"; should be "home/wiki/Main_Page"; DATE:2014-02-09 return false; // special case to handle "home" which should mean "home" in any wiki, but "home/wiki/Main_Page" in home wiki return !this.Has(url.Wiki_bry()); } private void Init() { init_needed = false; - Io_url[] wiki_dirs = Io_mgr.I.QueryDir_args(app.Fsys_mgr().Wiki_dir()).DirInclude_(true).Recur_(false).ExecAsUrlAry(); + Io_url[] wiki_dirs = Io_mgr.Instance.QueryDir_args(app.Fsys_mgr().Wiki_dir()).DirInclude_(true).Recur_(false).ExecAsUrlAry(); int wiki_dirs_len = wiki_dirs.length; for (int i = 0; i < wiki_dirs_len; i++) { Io_url wiki_dir = wiki_dirs[i]; @@ -46,6 +46,6 @@ public class Xoa_wiki_regy { } public static void Make_wiki_dir(Xoa_app app, String domain_str) { // TEST: fake wiki_dir for Parse_from_url_bar; DATE:2014-02-16 Io_url wiki_dir = app.Fsys_mgr().Wiki_dir(); - Io_mgr.I.CreateDir(wiki_dir.GenSubDir(domain_str)); + Io_mgr.Instance.CreateDir(wiki_dir.GenSubDir(domain_str)); } } diff --git a/400_xowa/src/gplx/xowa/wikis/Xoae_wiki_mgr.java b/400_xowa/src/gplx/xowa/wikis/Xoae_wiki_mgr.java index db2fe6e26..0421538c8 100644 --- a/400_xowa/src/gplx/xowa/wikis/Xoae_wiki_mgr.java +++ b/400_xowa/src/gplx/xowa/wikis/Xoae_wiki_mgr.java @@ -16,10 +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.wikis; import gplx.*; import gplx.xowa.*; -import gplx.xowa.langs.*; import gplx.xowa.langs.cfgs.*; import gplx.xowa.xtns.wdatas.*; -import gplx.xowa.nss.*; +import gplx.xowa.langs.*; import gplx.xowa.xtns.wdatas.*; +import gplx.xowa.wikis.nss.*; import gplx.xowa.wikis.metas.*; import gplx.xowa.wikis.domains.*; import gplx.xowa.wikis.domains.crts.*; -import gplx.xowa.wikis.xwikis.cfgs.*; public class Xoae_wiki_mgr implements Xoa_wiki_mgr, GfoInvkAble { private Xoae_app app; private List_adp list = List_adp_.new_(); private Hash_adp_bry hash = Hash_adp_bry.ci_a7(); // ASCII:url_domain; EX:en.wikipedia.org @@ -29,16 +28,17 @@ public class Xoae_wiki_mgr implements Xoa_wiki_mgr, GfoInvkAble { wdata_mgr = new Wdata_wiki_mgr(app); } public Xoa_wiki_regy Wiki_regy() {return wiki_regy;} private Xoa_wiki_regy wiki_regy; - public Cfg_nde_root Groups() {return groups;} Cfg_nde_root groups = new Cfg_nde_root().Root_(new Xoac_wiki_grp(Bry_.Empty), Xoac_lang_grp.Make_grp, Bry_.Ary_empty); public Xow_script_mgr Scripts() {return scripts;} private Xow_script_mgr scripts = new Xow_script_mgr(); public Wdata_wiki_mgr Wdata_mgr() {return wdata_mgr;} Wdata_wiki_mgr wdata_mgr; public void Init_by_app() { wdata_mgr.Init_by_app(); } - public int Count() {return hash.Count();} + public int Count() {return list.Count();} public void Del(byte[] key) {hash.Del(key);} public boolean Has(byte[] key) {return hash.Has(key);} + public Xow_wiki Get_at_i(int i) {return (Xow_wiki)list.Get_at(i);} public Xowe_wiki Get_at(int i) {return Int_.Between(i, 0, this.Count() - 1) ? (Xowe_wiki)list.Get_at(i) : null;} + public Xow_wiki Get_by_key_or_null_i(byte[] key) {return Bry_.Len_eq_0(key) ? null : (Xowe_wiki)hash.Get_by(key);} public Xowe_wiki Get_by_key_or_null(byte[] key) {return Bry_.Len_eq_0(key) ? null : (Xowe_wiki)hash.Get_by(key);} public Xowe_wiki Get_by_key_or_null(byte[] src, int bgn, int end) {return (Xowe_wiki)hash.Get_by_mid(src, bgn, end);} public Xow_wiki Get_by_key_or_make_init_y(byte[] key) { @@ -87,22 +87,21 @@ public class Xoae_wiki_mgr implements Xoa_wiki_mgr, GfoInvkAble { } public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { if (ctx.Match(k, Invk_get)) return Get_by_key_or_make(m.ReadBry("v")); - else if (ctx.Match(k, Invk_groups)) return groups; else if (ctx.Match(k, Invk_scripts)) return scripts; else if (ctx.Match(k, Invk_wdata)) return wdata_mgr; else if (ctx.Match(k, Invk_len)) return this.Count(); else if (ctx.Match(k, Invk_get_at)) return this.Get_at(m.ReadInt("v")); else return GfoInvkAble_.Rv_unhandled; - } private static final String Invk_get = "get", Invk_groups = "groups", Invk_scripts = "scripts", Invk_wdata = "wdata"; + } private static final String Invk_get = "get", Invk_scripts = "scripts", Invk_wdata = "wdata"; private static final String Invk_len = "len", Invk_get_at = "get_at"; private Xowe_wiki New_wiki(byte[] key) { Xow_domain_itm domain_itm = Xow_domain_itm_.parse(key); byte[] lang_key = domain_itm.Lang_actl_key(); - if (lang_key == Xol_lang_itm_.Key__unknown) lang_key = Xol_lang_.Key_en; // unknown langs default to english; note that this makes nonwmf english by default - Xol_lang lang = app.Lang_mgr().Get_by_key_or_new(lang_key); - if (domain_itm.Domain_type_id() == Xow_domain_type_.Int__other) { - lang = new Xol_lang(app.Lang_mgr(), Xol_lang_.Key_en).Kwd_mgr__strx_(true); // create a new english lang, but enable strx functions; DATE:2015-08-23 - Xol_lang_.Lang_init(lang); + if (lang_key == Xol_lang_stub_.Key__unknown) lang_key = Xol_lang_itm_.Key_en; // unknown langs default to english; note that this makes nonwmf english by default + Xol_lang_itm lang = app.Lang_mgr().Get_by_or_new(lang_key); + if (domain_itm.Domain_type_id() == Xow_domain_tid_.Int__other) { + lang = new Xol_lang_itm(app.Lang_mgr(), Xol_lang_itm_.Key_en).Kwd_mgr__strx_(true); // create a new english lang, but enable strx functions; DATE:2015-08-23 + Xol_lang_itm_.Lang_init(lang); } Xow_ns_mgr ns_mgr = Xow_ns_mgr_.default_(lang.Case_mgr()); Io_url wiki_dir = app.Fsys_mgr().Wiki_dir().GenSubDir(domain_itm.Domain_str()); diff --git a/400_xowa/src/gplx/xowa/wikis/Xow_fsys_mgr.java b/400_xowa/src/gplx/xowa/wikis/Xow_fsys_mgr.java index 49368f8bb..419710f6c 100644 --- a/400_xowa/src/gplx/xowa/wikis/Xow_fsys_mgr.java +++ b/400_xowa/src/gplx/xowa/wikis/Xow_fsys_mgr.java @@ -26,7 +26,7 @@ public class Xow_fsys_mgr { public static Io_url Find_core_fil(Xow_wiki wiki) {return Find_core_fil(wiki.Fsys_mgr().Root_dir(), wiki.Domain_str());} public static Io_url Find_core_fil(Io_url wiki_root_dir, String domain_str) { - Io_url[] ary = Io_mgr.I.QueryDir_fils(wiki_root_dir); + Io_url[] ary = Io_mgr.Instance.QueryDir_fils(wiki_root_dir); int ary_len = ary.length; if (ary.length == 0) return null; Io_url rv = Find_core_fil__xowa(ary, ary_len, domain_str); return rv == null ? Find_core_fil__sqlite3(wiki_root_dir, ary, ary_len, domain_str) : rv; diff --git a/400_xowa/src/gplx/xowa/wikis/Xow_page_tid.java b/400_xowa/src/gplx/xowa/wikis/Xow_page_tid.java index e0f6bdfa3..9f110e18d 100644 --- a/400_xowa/src/gplx/xowa/wikis/Xow_page_tid.java +++ b/400_xowa/src/gplx/xowa/wikis/Xow_page_tid.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.wikis; import gplx.*; import gplx.xowa.*; -import gplx.xowa.nss.*; +import gplx.xowa.wikis.nss.*; import gplx.xowa.xtns.wdatas.*; public class Xow_page_tid { public static byte Identify(int wiki_tid, int ns_id, byte[] ttl) { diff --git a/400_xowa/src/gplx/xowa/wikis/Xowv_repo_mgr.java b/400_xowa/src/gplx/xowa/wikis/Xowv_repo_mgr.java index dbec86c41..87a5726af 100644 --- a/400_xowa/src/gplx/xowa/wikis/Xowv_repo_mgr.java +++ b/400_xowa/src/gplx/xowa/wikis/Xowv_repo_mgr.java @@ -59,7 +59,7 @@ public class Xowv_repo_mgr implements Xow_repo_mgr { public Xof_repo_pair Add_repo(Xoa_app app, Io_url wiki_root, byte[] src_repo_key, byte[] trg_repo_key) { Xof_repo_itm src_repo = Add(app, wiki_root, src_repo_key), trg_repo = Add(app, wiki_root, trg_repo_key); byte[] src_wiki_key = src_repo.Wiki_domain();//, trg_wiki_key = trg_repo.Wiki_key(); -// if (!Bry_.Eq(src_wiki_key, trg_wiki_key) && !Bry_.Eq(src_wiki_key, Xow_domain_type_.Bry__home)) throw Err_mgr._.fmt_(GRP_KEY, "add_repo", "wiki keys do not match: ~{0} ~{1}", String_.new_u8(src_wiki_key), String_.new_u8(trg_wiki_key)); +// if (!Bry_.Eq(src_wiki_key, trg_wiki_key) && !Bry_.Eq(src_wiki_key, Xow_domain_tid_.Bry__home)) throw Err_mgr.Instance.fmt_(GRP_KEY, "add_repo", "wiki keys do not match: ~{0} ~{1}", String_.new_u8(src_wiki_key), String_.new_u8(trg_wiki_key)); Xof_repo_pair pair = new Xof_repo_pair((byte)repos.Count(), src_wiki_key, src_repo, trg_repo); repos.Add(pair); return pair; diff --git a/400_xowa/src/gplx/xowa/wikis/Xowv_wiki.java b/400_xowa/src/gplx/xowa/wikis/Xowv_wiki.java index 741ee2562..b83a9664d 100644 --- a/400_xowa/src/gplx/xowa/wikis/Xowv_wiki.java +++ b/400_xowa/src/gplx/xowa/wikis/Xowv_wiki.java @@ -19,16 +19,16 @@ package gplx.xowa.wikis; import gplx.*; import gplx.xowa.*; import gplx.core.primitives.*; import gplx.core.net.*; import gplx.dbs.*; import gplx.xowa.apps.*; -import gplx.xowa.gui.*; +import gplx.xowa.guis.*; import gplx.xowa.langs.*; import gplx.xowa.langs.cases.*; import gplx.xowa.files.*; import gplx.xowa.files.origs.*; import gplx.xowa.files.fsdb.*; import gplx.xowa.files.bins.*; import gplx.xowa.wikis.domains.*; import gplx.xowa.wikis.metas.*; import gplx.xowa.wikis.data.*; import gplx.xowa.files.repos.*; import gplx.xowa.wikis.data.tbls.*; import gplx.xowa.wikis.xwikis.*; import gplx.xowa.wikis.ttls.*; import gplx.xowa.wikis.specials.*; -import gplx.xowa.html.*; import gplx.xowa.html.wtrs.*; import gplx.xowa.html.hdumps.*; import gplx.xowa.html.hzips.*; import gplx.xowa.html.css.*; import gplx.xowa.html.bridges.dbuis.tbls.*; -import gplx.xowa.nss.*; +import gplx.xowa.htmls.*; import gplx.xowa.htmls.wtrs.*; import gplx.xowa.htmls.hdumps.*; import gplx.xowa.htmls.hzips.*; import gplx.xowa.htmls.css.*; import gplx.xowa.htmls.bridges.dbuis.tbls.*; +import gplx.xowa.wikis.nss.*; import gplx.xowa.parsers.*; -import gplx.xowa.urls.*; +import gplx.xowa.apps.urls.*; import gplx.fsdb.*; import gplx.fsdb.meta.*; -public class Xowv_wiki implements Xow_wiki, Xow_ttl_parser { +public class Xowv_wiki implements Xow_wiki, Xow_ttl_parser, GfoInvkAble { private final Xof_fsdb_mgr__sql fsdb_mgr; private Fsdb_db_mgr db_core_mgr; private boolean init_needed = true; public Xowv_wiki(Xoav_app app, byte[] domain_bry, Io_url wiki_root_dir) { @@ -40,11 +40,11 @@ public class Xowv_wiki implements Xow_wiki, Xow_ttl_parser { this.ns_mgr = Xow_ns_mgr_.default_(app.Utl_case_mgr()); this.html__hzip_mgr = new Xow_hzip_mgr(app.Usr_dlg(), this); this.html__hdump_rdr = new Xohd_hdump_rdr(app, this); - this.xwiki_mgr = new Xow_xwiki_mgr(); this.special_mgr = new Xosp_special_mgr(this); this.fsys_mgr = new Xow_fsys_mgr(wiki_root_dir, app.Fsys_mgr().File_dir().GenSubDir(domain_str)); this.fsdb_mgr = new Xof_fsdb_mgr__sql(); this.url__parser = new Xoa_url_parser(this); + this.xwiki_mgr = new Xow_xwiki_mgr(this); } public Xoa_app App() {return app;} public boolean Type_is_edit() {return Bool_.N;} @@ -66,14 +66,14 @@ public class Xowv_wiki implements Xow_wiki, Xow_ttl_parser { public boolean Html__css_installing() {return html__css_installing;} public void Html__css_installing_(boolean v) {html__css_installing = v;} private boolean html__css_installing; public Xow_hzip_mgr Html__hzip_mgr() {return html__hzip_mgr;} private final Xow_hzip_mgr html__hzip_mgr; public Xohd_hdump_rdr Html__hdump_rdr() {return html__hdump_rdr;} private final Xohd_hdump_rdr html__hdump_rdr; - public Xoh_page_wtr_mgr_base Html__page_wtr_mgr() {return html__page_wtr_mgr;} private final Xohv_page_wtr_mgr html__page_wtr_mgr = new Xohv_page_wtr_mgr(); + public Xoh_page_wtr_mgr Html__wtr_mgr() {return html__wtr_mgr;} private final Xoh_page_wtr_mgr html__wtr_mgr = new Xoh_page_wtr_mgr(Bool_.Y); public Xow_mw_parser_mgr Mw_parser_mgr() {return mw_parser_mgr;} private final Xow_mw_parser_mgr mw_parser_mgr = new Xow_mw_parser_mgr(); public Xow_wiki_props Props() {return props;} private final Xow_wiki_props props = new Xow_wiki_props(); - public Xol_lang Lang() {throw Err_.new_unimplemented();} + public Xol_lang_itm Lang() {throw Err_.new_unimplemented();} public Xoa_url_parser Utl__url_parser() {return url__parser;} private final Xoa_url_parser url__parser; public Xosp_special_mgr Special_mgr() {return special_mgr;} private Xosp_special_mgr special_mgr; - public Xow_xwiki_mgr Xwiki_mgr() {return xwiki_mgr;} private Xow_xwiki_mgr xwiki_mgr; + public Xow_xwiki_mgr Xwiki_mgr() {return xwiki_mgr;} private final Xow_xwiki_mgr xwiki_mgr; public Xoav_app Appv() {return app;} private final Xoav_app app; public void Init_by_wiki() { if (!init_needed) return; @@ -106,4 +106,5 @@ public class Xowv_wiki implements Xow_wiki, Xow_ttl_parser { byte[] raw = Bry_.Add(ns.Name_db_w_colon(), ttl); return Xoa_ttl.parse(app.Utl__bfr_mkr(), app.Utl_amp_mgr(), app.Utl_case_mgr(), xwiki_mgr, ns_mgr, app.Utl_msg_log(), raw, 0, raw.length); } + public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) {throw Err_.new_unimplemented_w_msg("implemented for Xoa_cfg_mgr");} } diff --git a/400_xowa/src/gplx/xowa/wikis/caches/Xow_cache_mgr.java b/400_xowa/src/gplx/xowa/wikis/caches/Xow_cache_mgr.java index b6c977302..4121ba2bf 100644 --- a/400_xowa/src/gplx/xowa/wikis/caches/Xow_cache_mgr.java +++ b/400_xowa/src/gplx/xowa/wikis/caches/Xow_cache_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.wikis.caches; import gplx.*; import gplx.xowa.*; import gplx.xowa.wikis.*; -import gplx.xowa.langs.cfgs.*; +import gplx.xowa.wikis.xwikis.sitelinks.*; public class Xow_cache_mgr { private Xowe_wiki wiki; public Xow_cache_mgr(Xowe_wiki wiki) { @@ -32,28 +32,16 @@ public class Xow_cache_mgr { public KeyVal[] Scrib_lang_names() { if (scrib_lang_names == null) { List_adp list = List_adp_.new_(); - Cfg_nde_root root = wiki.Appe().Lang_mgr().Groups(); - int len = root.Root_len(); - for (int i = 0; i < len; i++) { - Cfg_nde_obj nde = root.Root_get_at(i); - Scrib_lang_names_grps(list, nde); + Xoa_sitelink_itm_mgr itm_mgr = wiki.App().Xwiki_mgr__sitelink_mgr().Itm_mgr(); + int len = itm_mgr.Len(); + for (int i = 0; i < len; ++i) { + Xoa_sitelink_itm itm = itm_mgr.Get_at(i); + KeyVal kv = KeyVal_.new_(String_.new_u8(itm.Key()), String_.new_u8(itm.Name())); + list.Add(kv); } scrib_lang_names = (KeyVal[])list.To_ary(KeyVal.class); } return scrib_lang_names; - } private static KeyVal[] scrib_lang_names; - private void Scrib_lang_names_grps(List_adp list, Cfg_nde_obj nde) { - int len = nde.Nde_subs_len(); - for (int i = 0; i < len; i++) { - Cfg_nde_obj lang_nde = nde.Nde_subs_get_at(i); - if (lang_nde.Nde_typ_is_grp()) - Scrib_lang_names_grps(list, lang_nde); - else { - Xoac_lang_itm lang_itm = (Xoac_lang_itm)lang_nde; - KeyVal kv = KeyVal_.new_(String_.new_u8(lang_itm.Key_bry()), String_.new_u8(lang_itm.Local_name_bry())); - list.Add(kv); - } - } } public void Free_mem_all() { tmpl_result_cache.Clear(); @@ -62,4 +50,5 @@ public class Xow_cache_mgr { lst_cache.Free_mem_all(); scrib_lang_names = null; } + private static KeyVal[] scrib_lang_names; } diff --git a/400_xowa/src/gplx/xowa/wikis/caches/Xow_defn_cache.java b/400_xowa/src/gplx/xowa/wikis/caches/Xow_defn_cache.java index 131511873..95ff94da8 100644 --- a/400_xowa/src/gplx/xowa/wikis/caches/Xow_defn_cache.java +++ b/400_xowa/src/gplx/xowa/wikis/caches/Xow_defn_cache.java @@ -18,13 +18,13 @@ along with this program. If not, see . package gplx.xowa.wikis.caches; import gplx.*; import gplx.xowa.*; import gplx.xowa.wikis.*; import gplx.core.intls.*; import gplx.core.caches.*; import gplx.xowa.langs.*; -import gplx.xowa.nss.*; +import gplx.xowa.wikis.nss.*; import gplx.xowa.parsers.tmpls.*; public class Xow_defn_cache { // stores compiled Xot_defn - private Xol_lang lang; // needed to lowercase names; + private Xol_lang_itm lang; // needed to lowercase names; private Bry_bfr upper_1st_bfr = Bry_bfr.reset_(255); private Gfo_cache_mgr cache = new Gfo_cache_mgr().Max_size_(64 * 1024 * 1024).Reduce_by_(32 * 1024 * 1024); - public Xow_defn_cache(Xol_lang lang) {this.lang = lang;} + public Xow_defn_cache(Xol_lang_itm lang) {this.lang = lang;} public Xot_defn Get_by_key(byte[] name) {return (Xot_defn)cache.Get_by_key(name);} public void Free_mem_all() {cache.Clear();} public void Free_mem_some() {cache.Reduce_recent();} diff --git a/400_xowa/src/gplx/xowa/ctgs/Xoa_ctg_mgr.java b/400_xowa/src/gplx/xowa/wikis/ctgs/Xoa_ctg_mgr.java similarity index 95% rename from 400_xowa/src/gplx/xowa/ctgs/Xoa_ctg_mgr.java rename to 400_xowa/src/gplx/xowa/wikis/ctgs/Xoa_ctg_mgr.java index 367f8f445..f5afea79a 100644 --- a/400_xowa/src/gplx/xowa/ctgs/Xoa_ctg_mgr.java +++ b/400_xowa/src/gplx/xowa/wikis/ctgs/Xoa_ctg_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.ctgs; import gplx.*; import gplx.xowa.*; +package gplx.xowa.wikis.ctgs; import gplx.*; import gplx.xowa.*; import gplx.xowa.wikis.*; public class Xoa_ctg_mgr implements GfoInvkAble { public void Init_by_app(Xoae_app app) { pagectgs_wtr = new Xoctg_pagelist_wtr().Init_by_app(app); @@ -35,7 +35,7 @@ public class Xoa_ctg_mgr implements GfoInvkAble { if (ctx.Match(k, Invk_missing_ctg_cls)) return Missing_ctg_cls_tid_print(missing_ctg_cls_tid); else if (ctx.Match(k, Invk_missing_ctg_cls_)) missing_ctg_cls_tid = Missing_ctg_cls_tid_parse(m.ReadStr("v")); else if (ctx.Match(k, Invk_missing_ctg_cls_list)) return Options_missing_ctg_cls_list; - else if (ctx.Match(k, Invk_pagecats_grouping_enabled)) return Yn.Xto_str(pagecats_grouping_enabled); + else if (ctx.Match(k, Invk_pagecats_grouping_enabled)) return Yn.To_str(pagecats_grouping_enabled); else if (ctx.Match(k, Invk_pagecats_grouping_enabled_)) pagecats_grouping_enabled = m.ReadYn("v"); else return GfoInvkAble_.Rv_unhandled; return this; diff --git a/400_xowa/src/gplx/xowa/ctgs/Xoctg_data_cache.java b/400_xowa/src/gplx/xowa/wikis/ctgs/Xoctg_data_cache.java similarity index 93% rename from 400_xowa/src/gplx/xowa/ctgs/Xoctg_data_cache.java rename to 400_xowa/src/gplx/xowa/wikis/ctgs/Xoctg_data_cache.java index 10465c567..fe745422c 100644 --- a/400_xowa/src/gplx/xowa/ctgs/Xoctg_data_cache.java +++ b/400_xowa/src/gplx/xowa/wikis/ctgs/Xoctg_data_cache.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.ctgs; import gplx.*; import gplx.xowa.*; +package gplx.xowa.wikis.ctgs; import gplx.*; import gplx.xowa.*; import gplx.xowa.wikis.*; public class Xoctg_data_cache { private Hash_adp_bry regy = Hash_adp_bry.cs(); // NOTE: changed to cs from ci; cache is hashing page_ttls by ctg_name which is always ttl.Page_txt(); DATE:2014-07-07 public Xoctg_data_ctg Get_or_null(byte[] ctg_name) {return (Xoctg_data_ctg)regy.Get_by_bry(ctg_name);} diff --git a/400_xowa/src/gplx/xowa/ctgs/Xoctg_data_ctg.java b/400_xowa/src/gplx/xowa/wikis/ctgs/Xoctg_data_ctg.java similarity index 93% rename from 400_xowa/src/gplx/xowa/ctgs/Xoctg_data_ctg.java rename to 400_xowa/src/gplx/xowa/wikis/ctgs/Xoctg_data_ctg.java index 07c1e4af3..3eac4b1dd 100644 --- a/400_xowa/src/gplx/xowa/ctgs/Xoctg_data_ctg.java +++ b/400_xowa/src/gplx/xowa/wikis/ctgs/Xoctg_data_ctg.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.ctgs; import gplx.*; import gplx.xowa.*; +package gplx.xowa.wikis.ctgs; import gplx.*; import gplx.xowa.*; import gplx.xowa.wikis.*; public class Xoctg_data_ctg { public Xoctg_data_ctg(byte[] ctg_name) {this.ctg_name = ctg_name;} public byte[] Ctg_name() {return ctg_name;} private byte[] ctg_name; diff --git a/400_xowa/src/gplx/xowa/ctgs/Xoctg_data_ctg_tst.java b/400_xowa/src/gplx/xowa/wikis/ctgs/Xoctg_data_ctg_tst.java similarity index 90% rename from 400_xowa/src/gplx/xowa/ctgs/Xoctg_data_ctg_tst.java rename to 400_xowa/src/gplx/xowa/wikis/ctgs/Xoctg_data_ctg_tst.java index 8b2fd8031..36efc3562 100644 --- a/400_xowa/src/gplx/xowa/ctgs/Xoctg_data_ctg_tst.java +++ b/400_xowa/src/gplx/xowa/wikis/ctgs/Xoctg_data_ctg_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.ctgs; import gplx.*; import gplx.xowa.*; +package gplx.xowa.wikis.ctgs; import gplx.*; import gplx.xowa.*; import gplx.xowa.wikis.*; import org.junit.*; public class Xoctg_data_ctg_tst { // @Before public void init() {fxt.Clear();} private Xoctg_idx_mgr_fxt fxt = new Xoctg_idx_mgr_fxt(); diff --git a/400_xowa/src/gplx/xowa/ctgs/Xoctg_fmtr_all.java b/400_xowa/src/gplx/xowa/wikis/ctgs/Xoctg_fmtr_all.java similarity index 93% rename from 400_xowa/src/gplx/xowa/ctgs/Xoctg_fmtr_all.java rename to 400_xowa/src/gplx/xowa/wikis/ctgs/Xoctg_fmtr_all.java index 2fdabb1a2..a916daae5 100644 --- a/400_xowa/src/gplx/xowa/ctgs/Xoctg_fmtr_all.java +++ b/400_xowa/src/gplx/xowa/wikis/ctgs/Xoctg_fmtr_all.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.ctgs; import gplx.*; import gplx.xowa.*; -import gplx.xowa.langs.*; +package gplx.xowa.wikis.ctgs; import gplx.*; import gplx.xowa.*; import gplx.xowa.wikis.*; +import gplx.xowa.langs.*; import gplx.xowa.langs.msgs.*; class Xoctg_fmtr_all { public Xoctg_fmtr_all(byte tid) {this.Ctor(tid);} public byte Tid() {return tid;} private byte tid; @@ -35,9 +35,9 @@ class Xoctg_fmtr_all { private void Ctor(byte tid) { this.tid = tid; switch (tid) { - case Xoa_ctg_mgr.Tid_subc: grps_enabled = Bool_.Y; msg_id_label = Xol_msg_itm_.Id_ctg_subc_label ; msg_id_stats = Xol_msg_itm_.Id_ctg_subc_count; div_id = Div_id_subc; url_arg_bgn = Url_arg_subc_bgn; url_arg_end = Url_arg_subc_end; this.fmtr_itm = Xoctg_fmtr_itm_subc._; break; - case Xoa_ctg_mgr.Tid_page: grps_enabled = Bool_.Y; msg_id_label = Xol_msg_itm_.Id_ctg_page_header; msg_id_stats = Xol_msg_itm_.Id_ctg_page_count; div_id = Div_id_page; url_arg_bgn = Url_arg_page_bgn; url_arg_end = Url_arg_page_end; this.fmtr_itm = Xoctg_fmtr_itm_page._; break; - case Xoa_ctg_mgr.Tid_file: grps_enabled = Bool_.Y; msg_id_label = Xol_msg_itm_.Id_ctg_file_header; msg_id_stats = Xol_msg_itm_.Id_ctg_file_count; div_id = Div_id_file; url_arg_bgn = Url_arg_file_bgn; url_arg_end = Url_arg_file_end; this.fmtr_itm = Xoctg_fmtr_itm_file._; break; + case Xoa_ctg_mgr.Tid_subc: grps_enabled = Bool_.Y; msg_id_label = Xol_msg_itm_.Id_ctg_subc_label ; msg_id_stats = Xol_msg_itm_.Id_ctg_subc_count; div_id = Div_id_subc; url_arg_bgn = Url_arg_subc_bgn; url_arg_end = Url_arg_subc_end; this.fmtr_itm = Xoctg_fmtr_itm_subc.Instance; break; + case Xoa_ctg_mgr.Tid_page: grps_enabled = Bool_.Y; msg_id_label = Xol_msg_itm_.Id_ctg_page_header; msg_id_stats = Xol_msg_itm_.Id_ctg_page_count; div_id = Div_id_page; url_arg_bgn = Url_arg_page_bgn; url_arg_end = Url_arg_page_end; this.fmtr_itm = Xoctg_fmtr_itm_page.Instance; break; + case Xoa_ctg_mgr.Tid_file: grps_enabled = Bool_.Y; msg_id_label = Xol_msg_itm_.Id_ctg_file_header; msg_id_stats = Xol_msg_itm_.Id_ctg_file_count; div_id = Div_id_file; url_arg_bgn = Url_arg_file_bgn; url_arg_end = Url_arg_file_end; this.fmtr_itm = Xoctg_fmtr_itm_file.Instance; break; default: throw Err_.new_unhandled(tid); } html_all.Fmt_(String_.Concat_lines_nl_skip_last @@ -156,6 +156,6 @@ interface Xoctg_fmtr_itm extends Bry_fmtr_arg { int Grp_end_idx(); boolean Grp_end_at_col(); int Col_idx(); void Col_idx_(int col_idx, int col_bgn); - void Init_from_all(Xowe_wiki wiki, Xol_lang lang, Xoctg_view_ctg ctg, Xoctg_fmtr_all mgr, Xoctg_view_grp itms_list, int itms_list_len); + void Init_from_all(Xowe_wiki wiki, Xol_lang_itm lang, Xoctg_view_ctg ctg, Xoctg_fmtr_all mgr, Xoctg_view_grp itms_list, int itms_list_len); void Init_from_grp(byte[] grp_ttl, int i); } diff --git a/400_xowa/src/gplx/xowa/ctgs/Xoctg_fmtr_grp.java b/400_xowa/src/gplx/xowa/wikis/ctgs/Xoctg_fmtr_grp.java similarity index 89% rename from 400_xowa/src/gplx/xowa/ctgs/Xoctg_fmtr_grp.java rename to 400_xowa/src/gplx/xowa/wikis/ctgs/Xoctg_fmtr_grp.java index 93be04d5c..7c8eb6194 100644 --- a/400_xowa/src/gplx/xowa/ctgs/Xoctg_fmtr_grp.java +++ b/400_xowa/src/gplx/xowa/wikis/ctgs/Xoctg_fmtr_grp.java @@ -15,14 +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.ctgs; import gplx.*; import gplx.xowa.*; -import gplx.xowa.langs.*; +package gplx.xowa.wikis.ctgs; import gplx.*; import gplx.xowa.*; import gplx.xowa.wikis.*; +import gplx.xowa.langs.*; import gplx.xowa.langs.msgs.*; class Xoctg_fmtr_grp implements Bry_fmtr_arg { - public void Init_from_all(Xowe_wiki wiki, Xol_lang lang, Xoctg_view_ctg ctg, Xoctg_fmtr_all mgr, Xoctg_view_grp itms_list) { + public void Init_from_all(Xowe_wiki wiki, Xol_lang_itm lang, Xoctg_view_ctg ctg, Xoctg_fmtr_all mgr, Xoctg_view_grp itms_list) { this.wiki = wiki; this.mgr = mgr; this.itms_fmtr = mgr.Fmtr_itm(); this.itms_list = itms_list; len = itms_list.Len(); itms_fmtr.Init_from_all(wiki, lang, ctg, mgr, itms_list, len); } private Xowe_wiki wiki; Xoctg_fmtr_itm itms_fmtr; Xoctg_view_grp itms_list; int len; Xoctg_fmtr_all mgr; - public void XferAry(Bry_bfr bfr, int xfer_idx) { + public void Fmt__do(Bry_bfr bfr) { if (mgr.Grps_enabled()) { if (len == 0) return; int cur_idx = itms_list.Bgn(); int col_bgn = cur_idx; diff --git a/400_xowa/src/gplx/xowa/ctgs/Xoctg_fmtr_itm.java b/400_xowa/src/gplx/xowa/wikis/ctgs/Xoctg_fmtr_itm.java similarity index 83% rename from 400_xowa/src/gplx/xowa/ctgs/Xoctg_fmtr_itm.java rename to 400_xowa/src/gplx/xowa/wikis/ctgs/Xoctg_fmtr_itm.java index 095480881..e38228ad6 100644 --- a/400_xowa/src/gplx/xowa/ctgs/Xoctg_fmtr_itm.java +++ b/400_xowa/src/gplx/xowa/wikis/ctgs/Xoctg_fmtr_itm.java @@ -15,18 +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.ctgs; import gplx.*; import gplx.xowa.*; -import gplx.xowa.html.*; import gplx.xowa.html.hrefs.*; import gplx.xowa.html.lnkis.*; +package gplx.xowa.wikis.ctgs; import gplx.*; import gplx.xowa.*; import gplx.xowa.wikis.*; +import gplx.xowa.htmls.*; import gplx.xowa.htmls.hrefs.*; import gplx.xowa.htmls.lnkis.*; import gplx.xowa.langs.*; import gplx.xowa.langs.msgs.*; import gplx.xowa.users.history.*; abstract class Xoctg_fmtr_itm_base implements Xoctg_fmtr_itm { - public void Init_from_all(Xowe_wiki wiki, Xol_lang lang, Xoctg_view_ctg ctg, Xoctg_fmtr_all mgr, Xoctg_view_grp itms_list, int itms_list_len) { + public void Init_from_all(Xowe_wiki wiki, Xol_lang_itm lang, Xoctg_view_ctg ctg, Xoctg_fmtr_all mgr, Xoctg_view_grp itms_list, int itms_list_len) { this.wiki = wiki; this.lang = lang; this.ctg = ctg; this.list = itms_list; this.len = itms_list_len; this.msg_mgr = wiki.Msg_mgr(); href_parser = wiki.Appe().Html__href_parser(); html_itm = mgr.Html_itm(); html_itm_missing = mgr.Html_itm_missing(); history_mgr = wiki.Appe().Usere().History_mgr(); - } protected Xowe_wiki wiki; Xol_lang lang; Xoctg_view_ctg ctg; protected int len; protected Xoh_href_parser href_parser; protected Bry_fmtr html_itm, html_itm_missing; protected Xoctg_view_grp list; protected Xow_msg_mgr msg_mgr; + } protected Xowe_wiki wiki; Xol_lang_itm lang; Xoctg_view_ctg ctg; protected int len; protected Xoh_href_parser href_parser; protected Bry_fmtr html_itm, html_itm_missing; protected Xoctg_view_grp list; protected Xow_msg_mgr msg_mgr; Xou_history_mgr history_mgr; public void Init_from_grp(byte[] ttl_char_0, int col_bgn) {this.ttl_char_0 = ttl_char_0; this.col_bgn = col_bgn;} private byte[] ttl_char_0; int col_bgn; int col_end; public int Col_idx() {return col_idx;} @@ -37,7 +37,7 @@ abstract class Xoctg_fmtr_itm_base implements Xoctg_fmtr_itm { } int col_idx; public int Grp_end_idx() {return grp_end_idx;} private int grp_end_idx; public boolean Grp_end_at_col() {return grp_end_at_col;} private boolean grp_end_at_col; - @gplx.Virtual public void XferAry(Bry_bfr bfr, int idx) { + @gplx.Virtual public void Fmt__do(Bry_bfr bfr) { for (int i = col_bgn; i < len; i++) { if (i == col_end) { grp_end_idx = i; @@ -67,10 +67,10 @@ abstract class Xoctg_fmtr_itm_base implements Xoctg_fmtr_itm { } } class Xoctg_fmtr_itm_page extends Xoctg_fmtr_itm_base { - public static final Xoctg_fmtr_itm_page _ = new Xoctg_fmtr_itm_page(); Xoctg_fmtr_itm_page() {} + public static final Xoctg_fmtr_itm_page Instance = new Xoctg_fmtr_itm_page(); Xoctg_fmtr_itm_page() {} } class Xoctg_fmtr_itm_file extends Xoctg_fmtr_itm_base { -// public override void XferAry(Bry_bfr bfr, int idx) { +// public override void Fmt__do(Bry_bfr bfr) { // html_itm = wiki.Html_mgr().Gallery_xtn_mgr().Html_gallery_itm_img(); // for (int i = list.Bgn(); i < len; i++) { // Xoctg_view_itm itm = list.Itms()[i]; @@ -91,7 +91,7 @@ class Xoctg_fmtr_itm_file extends Xoctg_fmtr_itm_base { // ); // } // } - public static final Xoctg_fmtr_itm_file _ = new Xoctg_fmtr_itm_file(); Xoctg_fmtr_itm_file() {} + public static final Xoctg_fmtr_itm_file Instance = new Xoctg_fmtr_itm_file(); Xoctg_fmtr_itm_file() {} } class Xoctg_fmtr_itm_subc extends Xoctg_fmtr_itm_base { @Override public void Bld_html(Bry_bfr bfr, Xowe_wiki wiki, Xoctg_view_itm itm, Xoa_ttl ttl, byte[] ttl_page, Xoh_href_parser href_parser, Bry_fmtr html_itm) { @@ -118,5 +118,5 @@ class Xoctg_fmtr_itm_subc extends Xoctg_fmtr_itm_base { if (bfr.Len() > 1) bfr.Add(Bld_contains_text_itm_dlm); // NOTE: 1 b/c Paren_bgn is always added bfr.Add(msg_mgr.Val_by_id_args(msg_id, val)); } static final byte[] Bld_contains_text_itm_dlm = Bry_.new_a7(", "); - public static final Xoctg_fmtr_itm_subc _ = new Xoctg_fmtr_itm_subc(); Xoctg_fmtr_itm_subc() {} + public static final Xoctg_fmtr_itm_subc Instance = new Xoctg_fmtr_itm_subc(); Xoctg_fmtr_itm_subc() {} } diff --git a/400_xowa/src/gplx/xowa/ctgs/Xoctg_html_mgr.java b/400_xowa/src/gplx/xowa/wikis/ctgs/Xoctg_html_mgr.java similarity index 91% rename from 400_xowa/src/gplx/xowa/ctgs/Xoctg_html_mgr.java rename to 400_xowa/src/gplx/xowa/wikis/ctgs/Xoctg_html_mgr.java index 6396fb4be..452cc96bf 100644 --- a/400_xowa/src/gplx/xowa/ctgs/Xoctg_html_mgr.java +++ b/400_xowa/src/gplx/xowa/wikis/ctgs/Xoctg_html_mgr.java @@ -15,10 +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.ctgs; import gplx.*; import gplx.xowa.*; -import gplx.xowa.dbs.*; import gplx.xowa.wikis.data.tbls.*; +package gplx.xowa.wikis.ctgs; import gplx.*; import gplx.xowa.*; import gplx.xowa.wikis.*; +import gplx.xowa.wikis.dbs.*; import gplx.xowa.wikis.data.tbls.*; import gplx.xowa.langs.*; import gplx.xowa.langs.msgs.*; -import gplx.xowa.nss.*; +import gplx.xowa.wikis.nss.*; public class Xoctg_html_mgr implements GfoInvkAble { @gplx.Internal protected Xoctg_fmtr_grp Fmtr_grp() {return fmtr_grp;} private Xoctg_fmtr_grp fmtr_grp = new Xoctg_fmtr_grp(); private final Xoctg_fmtr_all mgr_subcs = new Xoctg_fmtr_all(Xoa_ctg_mgr.Tid_subc); @@ -53,7 +53,7 @@ public class Xoctg_html_mgr implements GfoInvkAble { Add_titles(title_list, ctg.Subcs()); Add_titles(title_list, ctg.Files()); Add_titles(title_list, ctg.Pages()); - title_list.Sort_by(Xoctg_view_itm_sorter_id._); + title_list.Sort_by(Xoctg_view_itm_sorter_id.Instance); int len = title_list.Count(); int pct = len / 16; Xowd_page_itm dbo_page = new Xowd_page_itm(); @@ -87,7 +87,7 @@ public class Xoctg_html_mgr implements GfoInvkAble { Bld_all(bfr, wiki, page.Lang(), ctg, Xoa_ctg_mgr.Tid_page); Bld_all(bfr, wiki, page.Lang(), ctg, Xoa_ctg_mgr.Tid_file); } - @gplx.Internal protected void Bld_all(Bry_bfr bfr, Xowe_wiki wiki, Xol_lang lang, Xoctg_view_ctg view_ctg, byte tid) { + @gplx.Internal protected void Bld_all(Bry_bfr bfr, Xowe_wiki wiki, Xol_lang_itm lang, Xoctg_view_ctg view_ctg, byte tid) { Xoctg_view_grp view_grp = view_ctg.Grp_by_tid(tid); int view_grp_len = view_grp.Itms().length; if (view_grp_len == 0) return; view_grp.End_(view_grp_len); @@ -123,7 +123,7 @@ class Xoctg_view_itm_sorter_id implements gplx.lists.ComparerAble { Xoctg_view_itm rhs = (Xoctg_view_itm)rhsObj; return Int_.Compare(lhs.Id(), rhs.Id()); } - public static final Xoctg_view_itm_sorter_id _ = new Xoctg_view_itm_sorter_id(); + public static final Xoctg_view_itm_sorter_id Instance = new Xoctg_view_itm_sorter_id(); } class Xoctg_view_itm_sorter_sortkey implements gplx.lists.ComparerAble { public int compare(Object lhsObj, Object rhsObj) { @@ -131,5 +131,5 @@ class Xoctg_view_itm_sorter_sortkey implements gplx.lists.ComparerAble { Xoctg_view_itm rhs = (Xoctg_view_itm)rhsObj; return Bry_.Compare(lhs.Sortkey(), rhs.Sortkey()); } - public static final Xoctg_view_itm_sorter_sortkey _ = new Xoctg_view_itm_sorter_sortkey(); + public static final Xoctg_view_itm_sorter_sortkey Instance = new Xoctg_view_itm_sorter_sortkey(); } diff --git a/400_xowa/src/gplx/xowa/ctgs/Xoctg_html_mgr_tst.java b/400_xowa/src/gplx/xowa/wikis/ctgs/Xoctg_html_mgr_tst.java similarity index 96% rename from 400_xowa/src/gplx/xowa/ctgs/Xoctg_html_mgr_tst.java rename to 400_xowa/src/gplx/xowa/wikis/ctgs/Xoctg_html_mgr_tst.java index e37630b8b..2f07187ea 100644 --- a/400_xowa/src/gplx/xowa/ctgs/Xoctg_html_mgr_tst.java +++ b/400_xowa/src/gplx/xowa/wikis/ctgs/Xoctg_html_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.ctgs; import gplx.*; import gplx.xowa.*; +package gplx.xowa.wikis.ctgs; import gplx.*; import gplx.xowa.*; import gplx.xowa.wikis.*; import org.junit.*; public class Xoctg_html_mgr_tst { @Before public void init() {fxt.Clear();} private Xoh_ctg_page_fxt fxt = new Xoh_ctg_page_fxt(); @@ -251,7 +251,7 @@ class Xoh_ctg_page_fxt { fmtr_itm.Init_from_grp(new byte[] {grp_char_0}, 0); fmtr_itm.Col_idx_(0, 0); Bry_bfr bfr = wiki.Utl__bfr_mkr().Get_b512(); - fmtr_itm.XferAry(bfr, 0); + fmtr_itm.Fmt__do(bfr); Tfds.Eq_str_lines(expd, bfr.To_str_and_rls()); } public void Test_html_grp(byte tid, String expd) { @@ -259,7 +259,7 @@ class Xoh_ctg_page_fxt { Xoctg_fmtr_grp fmtr_grp = ctg_html.Fmtr_grp(); fmtr_grp.Init_from_all(wiki, wiki.Lang(), ctg, list_mgr, ctg.Grp_by_tid(tid)); Bry_bfr bfr = wiki.Utl__bfr_mkr().Get_b512(); - fmtr_grp.XferAry(bfr, 0); + fmtr_grp.Fmt__do(bfr); Tfds.Eq_str_lines(expd, bfr.To_str_and_rls()); } public void Test_html_all(byte tid, String expd) { diff --git a/400_xowa/src/gplx/xowa/ctgs/Xoctg_idx_itm.java b/400_xowa/src/gplx/xowa/wikis/ctgs/Xoctg_idx_itm.java similarity index 89% rename from 400_xowa/src/gplx/xowa/ctgs/Xoctg_idx_itm.java rename to 400_xowa/src/gplx/xowa/wikis/ctgs/Xoctg_idx_itm.java index a22454406..72684cb0d 100644 --- a/400_xowa/src/gplx/xowa/ctgs/Xoctg_idx_itm.java +++ b/400_xowa/src/gplx/xowa/wikis/ctgs/Xoctg_idx_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.ctgs; import gplx.*; import gplx.xowa.*; +package gplx.xowa.wikis.ctgs; import gplx.*; import gplx.xowa.*; import gplx.xowa.wikis.*; import gplx.core.flds.*; public class Xoctg_idx_itm { public int Pos() {return pos;} public Xoctg_idx_itm Pos_(int v) {pos = v; return this;} private int pos = -1; @@ -46,5 +46,5 @@ class Xoctg_idx_itm_sorter_sortkey implements gplx.lists.ComparerAble { Xoctg_idx_itm rhs = (Xoctg_idx_itm)rhsObj; return Bry_.Compare(lhs.Sortkey(), rhs.Sortkey()); } - public static final Xoctg_idx_itm_sorter_sortkey _ = new Xoctg_idx_itm_sorter_sortkey(); + public static final Xoctg_idx_itm_sorter_sortkey Instance = new Xoctg_idx_itm_sorter_sortkey(); } diff --git a/400_xowa/src/gplx/xowa/ctgs/Xoctg_idx_mgr.java b/400_xowa/src/gplx/xowa/wikis/ctgs/Xoctg_idx_mgr.java similarity index 96% rename from 400_xowa/src/gplx/xowa/ctgs/Xoctg_idx_mgr.java rename to 400_xowa/src/gplx/xowa/wikis/ctgs/Xoctg_idx_mgr.java index 16e5a87b1..ea66e97a0 100644 --- a/400_xowa/src/gplx/xowa/ctgs/Xoctg_idx_mgr.java +++ b/400_xowa/src/gplx/xowa/wikis/ctgs/Xoctg_idx_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.ctgs; import gplx.*; import gplx.xowa.*; +package gplx.xowa.wikis.ctgs; import gplx.*; import gplx.xowa.*; import gplx.xowa.wikis.*; import gplx.core.primitives.*; import gplx.core.flds.*; public class Xoctg_idx_mgr implements GfoInvkAble { List_adp itms = List_adp_.new_(); @@ -136,7 +136,7 @@ public class Xoctg_idx_mgr implements GfoInvkAble { if (tmp_pos == src_len) break; // last pipe; stop } if (!arg_is_from) - rv.Sort_by(Xoctg_view_itm_sorter_sortkey._); + rv.Sort_by(Xoctg_view_itm_sorter_sortkey.Instance); int rv_count = rv.Count(); if (rv_count > 0) { Xoctg_view_itm last_itm = (Xoctg_view_itm)rv.Get_at(rv_count - 1); diff --git a/400_xowa/src/gplx/xowa/ctgs/Xoctg_idx_mgr_tst.java b/400_xowa/src/gplx/xowa/wikis/ctgs/Xoctg_idx_mgr_tst.java similarity index 96% rename from 400_xowa/src/gplx/xowa/ctgs/Xoctg_idx_mgr_tst.java rename to 400_xowa/src/gplx/xowa/wikis/ctgs/Xoctg_idx_mgr_tst.java index dec2e4795..1fd73f358 100644 --- a/400_xowa/src/gplx/xowa/ctgs/Xoctg_idx_mgr_tst.java +++ b/400_xowa/src/gplx/xowa/wikis/ctgs/Xoctg_idx_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.ctgs; import gplx.*; import gplx.xowa.*; +package gplx.xowa.wikis.ctgs; import gplx.*; import gplx.xowa.*; import gplx.xowa.wikis.*; import org.junit.*; import gplx.core.primitives.*; public class Xoctg_idx_mgr_tst { @Before public void init() {fxt.Clear();} private Xoctg_idx_mgr_fxt fxt = new Xoctg_idx_mgr_fxt(); @@ -85,7 +85,7 @@ class Xoctg_idx_mgr_fxt { if (i < 10) bfr.Add_byte(Byte_ascii.Num_0); bfr.Add_int_variable(i).Add_byte_pipe(); } - return bfr.Xto_bry_and_clear(); + return bfr.To_bry_and_clear(); } public Xoctg_idx_mgr_fxt Init_itms(int block_len, byte[] src) {idx_mgr.Block_len_(block_len); idx_mgr.Index(Gfo_usr_dlg_.Test(), Ctg_name, src); return this;} public Xoctg_idx_mgr_fxt Init_block_len(int block_len) {idx_mgr.Block_len_(block_len); return this;} diff --git a/400_xowa/src/gplx/xowa/ctgs/Xoctg_page_xtn.java b/400_xowa/src/gplx/xowa/wikis/ctgs/Xoctg_page_xtn.java similarity index 92% rename from 400_xowa/src/gplx/xowa/ctgs/Xoctg_page_xtn.java rename to 400_xowa/src/gplx/xowa/wikis/ctgs/Xoctg_page_xtn.java index 05d1a7981..dd5b29459 100644 --- a/400_xowa/src/gplx/xowa/ctgs/Xoctg_page_xtn.java +++ b/400_xowa/src/gplx/xowa/wikis/ctgs/Xoctg_page_xtn.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.ctgs; import gplx.*; import gplx.xowa.*; +package gplx.xowa.wikis.ctgs; import gplx.*; import gplx.xowa.*; import gplx.xowa.wikis.*; public class Xoctg_page_xtn { public Xoctg_page_xtn(byte tid, byte[] sortkey) {this.tid = tid; this.sortkey = sortkey;} public byte[] Sortkey() {return sortkey;} public void Sortkey_(byte[] v) {this.sortkey = v;} private byte[] sortkey; diff --git a/400_xowa/src/gplx/xowa/ctgs/Xoctg_pagelist_grp.java b/400_xowa/src/gplx/xowa/wikis/ctgs/Xoctg_pagelist_grp.java similarity index 92% rename from 400_xowa/src/gplx/xowa/ctgs/Xoctg_pagelist_grp.java rename to 400_xowa/src/gplx/xowa/wikis/ctgs/Xoctg_pagelist_grp.java index c0eeecccd..36b36e864 100644 --- a/400_xowa/src/gplx/xowa/ctgs/Xoctg_pagelist_grp.java +++ b/400_xowa/src/gplx/xowa/wikis/ctgs/Xoctg_pagelist_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.ctgs; import gplx.*; import gplx.xowa.*; +package gplx.xowa.wikis.ctgs; import gplx.*; import gplx.xowa.*; import gplx.xowa.wikis.*; import gplx.xowa.langs.*; import gplx.xowa.langs.msgs.*; public class Xoctg_pagelist_grp implements Bry_fmtr_arg { public void Init_app(Xoae_app app, boolean type_is_normal, Bry_fmtr fmtr_grp, Bry_fmtr fmtr_itm) { @@ -31,7 +31,7 @@ public class Xoctg_pagelist_grp implements Bry_fmtr_arg { } private byte[] lbl_ctg_help, lbl_ctg_text, lbl_hidden; private static final byte[] Key_pagecategorieslink = Bry_.new_a7("pagecategorieslink"); public boolean Type_is_normal() {return type_is_normal;} private boolean type_is_normal; public Xoctg_pagelist_itms Itms() {return itms;} private Xoctg_pagelist_itms itms = new Xoctg_pagelist_itms(); - public void XferAry(Bry_bfr bfr, int idx) { + public void Fmt__do(Bry_bfr bfr) { if (type_is_normal) fmtr_grp.Bld_bfr_many(bfr, lbl_ctg_help, lbl_ctg_text, itms); else diff --git a/400_xowa/src/gplx/xowa/ctgs/Xoctg_pagelist_itms.java b/400_xowa/src/gplx/xowa/wikis/ctgs/Xoctg_pagelist_itms.java similarity index 85% rename from 400_xowa/src/gplx/xowa/ctgs/Xoctg_pagelist_itms.java rename to 400_xowa/src/gplx/xowa/wikis/ctgs/Xoctg_pagelist_itms.java index 1a7702482..7ef26205c 100644 --- a/400_xowa/src/gplx/xowa/ctgs/Xoctg_pagelist_itms.java +++ b/400_xowa/src/gplx/xowa/wikis/ctgs/Xoctg_pagelist_itms.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.ctgs; import gplx.*; import gplx.xowa.*; -import gplx.xowa.html.*; import gplx.xowa.html.hrefs.*; import gplx.xowa.html.lnkis.*; import gplx.xowa.wikis.data.tbls.*; -import gplx.xowa.nss.*; +package gplx.xowa.wikis.ctgs; import gplx.*; import gplx.xowa.*; import gplx.xowa.wikis.*; +import gplx.xowa.htmls.*; import gplx.xowa.htmls.hrefs.*; import gplx.xowa.htmls.lnkis.*; import gplx.xowa.wikis.data.tbls.*; +import gplx.xowa.wikis.nss.*; import gplx.xowa.users.history.*; public class Xoctg_pagelist_itms implements Bry_fmtr_arg { private Xoh_href_wtr href_wtr; private Xou_history_mgr history_mgr; private Bry_fmtr fmtr_itm; @@ -29,7 +29,7 @@ public class Xoctg_pagelist_itms implements Bry_fmtr_arg { public void Init_wiki(Xowe_wiki wiki) {this.wiki = wiki;} private Xowe_wiki wiki; public void Itms_clear() {itms.Clear();} private List_adp itms = List_adp_.new_(); public void Itms_add(Xowd_page_itm page) {itms.Add(page);} - public void XferAry(Bry_bfr bfr, int idx) { + public void Fmt__do(Bry_bfr bfr) { int len = itms.Count(); for (int i = 0; i < len; i++) { Xowd_page_itm page = (Xowd_page_itm)itms.Get_at(i); diff --git a/400_xowa/src/gplx/xowa/ctgs/Xoctg_pagelist_mgr.java b/400_xowa/src/gplx/xowa/wikis/ctgs/Xoctg_pagelist_mgr.java similarity index 91% rename from 400_xowa/src/gplx/xowa/ctgs/Xoctg_pagelist_mgr.java rename to 400_xowa/src/gplx/xowa/wikis/ctgs/Xoctg_pagelist_mgr.java index fad45d665..88c7a148b 100644 --- a/400_xowa/src/gplx/xowa/ctgs/Xoctg_pagelist_mgr.java +++ b/400_xowa/src/gplx/xowa/wikis/ctgs/Xoctg_pagelist_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.ctgs; import gplx.*; import gplx.xowa.*; +package gplx.xowa.wikis.ctgs; import gplx.*; import gplx.xowa.*; import gplx.xowa.wikis.*; public class Xoctg_pagelist_mgr implements Bry_fmtr_arg { public Xoctg_pagelist_mgr Init_by_app(Xoae_app app, Xoctg_pagelist_wtr hidden_wtr) { this.fmtr_all = hidden_wtr.Fmtr_all(); @@ -29,7 +29,7 @@ public class Xoctg_pagelist_mgr implements Bry_fmtr_arg { } public Xoctg_pagelist_grp Grp_normal() {return grp_normal;} private Xoctg_pagelist_grp grp_normal = new Xoctg_pagelist_grp(); public Xoctg_pagelist_grp Grp_hidden() {return grp_hidden;} private Xoctg_pagelist_grp grp_hidden = new Xoctg_pagelist_grp(); - public void XferAry(Bry_bfr bfr, int idx) { + public void Fmt__do(Bry_bfr bfr) { fmtr_all.Bld_bfr_many(bfr, grp_normal, grp_hidden); } } diff --git a/400_xowa/src/gplx/xowa/ctgs/Xoctg_pagelist_wtr.java b/400_xowa/src/gplx/xowa/wikis/ctgs/Xoctg_pagelist_wtr.java similarity index 94% rename from 400_xowa/src/gplx/xowa/ctgs/Xoctg_pagelist_wtr.java rename to 400_xowa/src/gplx/xowa/wikis/ctgs/Xoctg_pagelist_wtr.java index 72397397a..3d0dc5a03 100644 --- a/400_xowa/src/gplx/xowa/ctgs/Xoctg_pagelist_wtr.java +++ b/400_xowa/src/gplx/xowa/wikis/ctgs/Xoctg_pagelist_wtr.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.ctgs; import gplx.*; import gplx.xowa.*; +package gplx.xowa.wikis.ctgs; import gplx.*; import gplx.xowa.*; import gplx.xowa.wikis.*; import gplx.xowa.users.history.*; import gplx.xowa.wikis.data.tbls.*; public class Xoctg_pagelist_wtr { private Xoctg_pagelist_mgr pagelist_mgr = new Xoctg_pagelist_mgr(); @@ -33,7 +33,7 @@ public class Xoctg_pagelist_wtr { list.Itms().Itms_add(page); } pagelist_mgr.Init_by_wiki(wiki); - pagelist_mgr.XferAry(bfr, 0); + pagelist_mgr.Fmt__do(bfr); pagelist_mgr.Grp_hidden().Itms().Itms_clear(); pagelist_mgr.Grp_normal().Itms().Itms_clear(); } diff --git a/400_xowa/src/gplx/xowa/ctgs/Xoctg_pagelist_wtr_tst.java b/400_xowa/src/gplx/xowa/wikis/ctgs/Xoctg_pagelist_wtr_tst.java similarity index 92% rename from 400_xowa/src/gplx/xowa/ctgs/Xoctg_pagelist_wtr_tst.java rename to 400_xowa/src/gplx/xowa/wikis/ctgs/Xoctg_pagelist_wtr_tst.java index 7c6794c0b..3c0312abd 100644 --- a/400_xowa/src/gplx/xowa/ctgs/Xoctg_pagelist_wtr_tst.java +++ b/400_xowa/src/gplx/xowa/wikis/ctgs/Xoctg_pagelist_wtr_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.ctgs; import gplx.*; import gplx.xowa.*; +package gplx.xowa.wikis.ctgs; import gplx.*; import gplx.xowa.*; import gplx.xowa.wikis.*; import org.junit.*; import gplx.xowa.wikis.data.tbls.*; public class Xoctg_pagelist_wtr_tst { @@ -81,7 +81,7 @@ class Xoctg_pagelist_mgr_fxt { Bry_bfr bfr = Bry_bfr.new_(); Xowd_page_itm[] page_ary = (Xowd_page_itm[])init_ctgs.To_ary_and_clear(Xowd_page_itm.class); hidden_wtr.Print_hidden(bfr, fxt.Wiki(), page_ary); - Tfds.Eq_str_lines(expd, bfr.Xto_str_and_clear()); -// Tfds.Write(bfr.Xto_bry_and_clear()); + Tfds.Eq_str_lines(expd, bfr.To_str_and_clear()); +// Tfds.Write(bfr.To_bry_and_clear()); } } diff --git a/400_xowa/src/gplx/xowa/ctgs/Xoctg_url.java b/400_xowa/src/gplx/xowa/wikis/ctgs/Xoctg_url.java similarity index 95% rename from 400_xowa/src/gplx/xowa/ctgs/Xoctg_url.java rename to 400_xowa/src/gplx/xowa/wikis/ctgs/Xoctg_url.java index 398ff5a10..b22abb5b4 100644 --- a/400_xowa/src/gplx/xowa/ctgs/Xoctg_url.java +++ b/400_xowa/src/gplx/xowa/wikis/ctgs/Xoctg_url.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.ctgs; import gplx.*; import gplx.xowa.*; +package gplx.xowa.wikis.ctgs; import gplx.*; import gplx.xowa.*; import gplx.xowa.wikis.*; import gplx.core.primitives.*; import gplx.core.net.*; public class Xoctg_url { public byte[][] Grp_idxs() {return grp_idxs;} private byte[][] grp_idxs = new byte[3][]; diff --git a/400_xowa/src/gplx/xowa/ctgs/Xoctg_url_tst.java b/400_xowa/src/gplx/xowa/wikis/ctgs/Xoctg_url_tst.java similarity index 93% rename from 400_xowa/src/gplx/xowa/ctgs/Xoctg_url_tst.java rename to 400_xowa/src/gplx/xowa/wikis/ctgs/Xoctg_url_tst.java index edf14d584..1ea6d4cb3 100644 --- a/400_xowa/src/gplx/xowa/ctgs/Xoctg_url_tst.java +++ b/400_xowa/src/gplx/xowa/wikis/ctgs/Xoctg_url_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.ctgs; import gplx.*; import gplx.xowa.*; -import org.junit.*; import gplx.xowa.urls.*; +package gplx.xowa.wikis.ctgs; import gplx.*; import gplx.xowa.*; import gplx.xowa.wikis.*; +import org.junit.*; import gplx.xowa.apps.urls.*; public class Xoctg_url_tst { @Before public void init() {fxt.Clear();} private Xoctg_url_fxt fxt = new Xoctg_url_fxt(); @Test public void Basic() { diff --git a/400_xowa/src/gplx/xowa/ctgs/Xoctg_view_ctg.java b/400_xowa/src/gplx/xowa/wikis/ctgs/Xoctg_view_ctg.java similarity index 95% rename from 400_xowa/src/gplx/xowa/ctgs/Xoctg_view_ctg.java rename to 400_xowa/src/gplx/xowa/wikis/ctgs/Xoctg_view_ctg.java index dd46a7eb1..74453d334 100644 --- a/400_xowa/src/gplx/xowa/ctgs/Xoctg_view_ctg.java +++ b/400_xowa/src/gplx/xowa/wikis/ctgs/Xoctg_view_ctg.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.ctgs; import gplx.*; import gplx.xowa.*; +package gplx.xowa.wikis.ctgs; import gplx.*; import gplx.xowa.*; import gplx.xowa.wikis.*; public class Xoctg_view_ctg { public byte[] Name() {return name;} public Xoctg_view_ctg Name_(byte[] v) {name = v; return this;} private byte[] name; public int Total_count() {return subcs.Total() + pages.Total() + files.Total();} diff --git a/400_xowa/src/gplx/xowa/ctgs/Xoctg_view_ctg_tst.java b/400_xowa/src/gplx/xowa/wikis/ctgs/Xoctg_view_ctg_tst.java similarity index 90% rename from 400_xowa/src/gplx/xowa/ctgs/Xoctg_view_ctg_tst.java rename to 400_xowa/src/gplx/xowa/wikis/ctgs/Xoctg_view_ctg_tst.java index 33c41a727..8e8e9a9c1 100644 --- a/400_xowa/src/gplx/xowa/ctgs/Xoctg_view_ctg_tst.java +++ b/400_xowa/src/gplx/xowa/wikis/ctgs/Xoctg_view_ctg_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.ctgs; import gplx.*; import gplx.xowa.*; +package gplx.xowa.wikis.ctgs; import gplx.*; import gplx.xowa.*; import gplx.xowa.wikis.*; import org.junit.*; public class Xoctg_view_ctg_tst { // @Before public void init() {fxt.Clear();} private Xoctg_idx_mgr_fxt fxt = new Xoctg_idx_mgr_fxt(); diff --git a/400_xowa/src/gplx/xowa/ctgs/Xoctg_view_grp.java b/400_xowa/src/gplx/xowa/wikis/ctgs/Xoctg_view_grp.java similarity index 95% rename from 400_xowa/src/gplx/xowa/ctgs/Xoctg_view_grp.java rename to 400_xowa/src/gplx/xowa/wikis/ctgs/Xoctg_view_grp.java index bbbb7194e..574689c17 100644 --- a/400_xowa/src/gplx/xowa/ctgs/Xoctg_view_grp.java +++ b/400_xowa/src/gplx/xowa/wikis/ctgs/Xoctg_view_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.ctgs; import gplx.*; import gplx.xowa.*; +package gplx.xowa.wikis.ctgs; import gplx.*; import gplx.xowa.*; import gplx.xowa.wikis.*; public class Xoctg_view_grp { public Xoctg_view_grp(byte tid) {this.tid = tid;} public byte Tid() {return tid;} private byte tid; diff --git a/400_xowa/src/gplx/xowa/ctgs/Xoctg_view_itm.java b/400_xowa/src/gplx/xowa/wikis/ctgs/Xoctg_view_itm.java similarity index 94% rename from 400_xowa/src/gplx/xowa/ctgs/Xoctg_view_itm.java rename to 400_xowa/src/gplx/xowa/wikis/ctgs/Xoctg_view_itm.java index 8f2313eda..97ad5ebe3 100644 --- a/400_xowa/src/gplx/xowa/ctgs/Xoctg_view_itm.java +++ b/400_xowa/src/gplx/xowa/wikis/ctgs/Xoctg_view_itm.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.ctgs; import gplx.*; import gplx.xowa.*; +package gplx.xowa.wikis.ctgs; import gplx.*; import gplx.xowa.*; import gplx.xowa.wikis.*; import gplx.core.flds.*; -import gplx.xowa.nss.*; +import gplx.xowa.wikis.nss.*; public class Xoctg_view_itm implements gplx.CompareAble { public byte Tid() {return tid;} private byte tid; public int Id() {return id;} private int id; diff --git a/400_xowa/src/gplx/xowa/wikis/data/Xow_data_mgr.java b/400_xowa/src/gplx/xowa/wikis/data/Xow_data_mgr.java index 8ffb47cd2..9d351331c 100644 --- a/400_xowa/src/gplx/xowa/wikis/data/Xow_data_mgr.java +++ b/400_xowa/src/gplx/xowa/wikis/data/Xow_data_mgr.java @@ -18,9 +18,9 @@ along with this program. If not, see . package gplx.xowa.wikis.data; import gplx.*; import gplx.xowa.*; import gplx.xowa.wikis.*; import gplx.lists.*; /*ComparerAble*/ import gplx.xowa.bldrs.cmds.ctgs.*; import gplx.xowa.langs.*; import gplx.xowa.langs.vnts.*; -import gplx.xowa.nss.*; -import gplx.xowa.gui.views.*; -import gplx.xowa.dbs.*; import gplx.xowa.wikis.*; import gplx.xowa.langs.msgs.*; +import gplx.xowa.wikis.nss.*; +import gplx.xowa.guis.views.*; +import gplx.xowa.wikis.dbs.*; import gplx.xowa.wikis.*; import gplx.xowa.langs.msgs.*; import gplx.xowa.parsers.utils.*; import gplx.xowa.wikis.data.tbls.*; public class Xow_data_mgr implements GfoInvkAble { @@ -46,7 +46,7 @@ public class Xow_data_mgr implements GfoInvkAble { if ( !called_from_msg // if called from msg, fall through to actual data retrieval below, else infinite loop; DATE:2014-05-09 && Xow_page_tid.Identify_by_ttl(ttl.Page_db()) == Xow_page_tid.Tid_wikitext // skip ".js" and ".css" pages in MediaWiki; DATE:2014-06-13 ) { - Xol_lang lang = wiki.Lang(); + Xol_lang_itm lang = wiki.Lang(); byte[] msg_key = ttl.Page_db(); Bry_bfr tmp_bfr = wiki.Utl__bfr_mkr().Get_b512(); msg_key = lang.Case_mgr().Case_build_1st_lower(tmp_bfr, msg_key, 0, msg_key.length); @@ -65,7 +65,7 @@ public class Xow_data_mgr implements GfoInvkAble { while (true) { boolean exists = wiki.Db_mgr().Load_mgr().Load_by_ttl(db_page, ns, ttl.Page_db()); if (!exists) return rv.Missing_(); - if (wiki.App().App_type().Uid_is_gui()) // NOTE: must check if gui, else will write during mass build; DATE:2014-05-03 + if (wiki.App().Mode().Tid_is_gui()) // NOTE: must check if gui, else will write during mass build; DATE:2014-05-03 wiki.Appe().Usr_dlg().Prog_many(GRP_KEY, "file_load", "loading page for ~{0}", String_.new_u8(ttl.Raw())); wiki.Db_mgr().Load_mgr().Load_page(db_page, ns, !called_from_tmpl); byte[] bry = db_page.Text(); @@ -85,7 +85,7 @@ public class Xow_data_mgr implements GfoInvkAble { } public Xoae_page Load_page_by_ttl(Xoa_url url, Xoa_ttl ttl) {return Load_page_by_ttl(url, ttl, wiki.Lang(), wiki.Appe().Gui_mgr().Browser_win().Active_tab(), true);} public Xoae_page Load_page_by_ttl(Xoa_url url, Xoa_ttl ttl, Xog_tab_itm tab) {return Load_page_by_ttl(url, ttl, wiki.Lang(), tab, true);} - public Xoae_page Load_page_by_ttl(Xoa_url url, Xoa_ttl ttl, Xol_lang lang, Xog_tab_itm tab, boolean parse_page) { + public Xoae_page Load_page_by_ttl(Xoa_url url, Xoa_ttl ttl, Xol_lang_itm lang, Xog_tab_itm tab, boolean parse_page) { wiki.Init_assert(); Xoae_page page = Xoae_page.new_(wiki, ttl); page.Tab_data().Tab_(tab); this.Get_page(page, url, ttl, false, false); // get page from data_mgr @@ -94,7 +94,7 @@ public class Xow_data_mgr implements GfoInvkAble { Xol_vnt_mgr vnt_mgr = lang.Vnt_mgr(); if (vnt_mgr.Enabled()) { // if vnt enabled, then try to load by vnt form; DATE:2015-09-15 gplx.xowa.wikis.data.tbls.Xowd_page_itm page_itm = vnt_mgr.Convert_mgr().Convert_ttl(wiki, ttl); - if (page_itm.Exists()) { + if (page_itm != null && page_itm.Exists()) { Xoa_ttl vnt_ttl = Xoa_ttl.parse(wiki, ttl.Ns().Id(), page_itm.Ttl_page_db()); page = this.Get_page(vnt_ttl, false); vnt_missing = page.Missing(); diff --git a/400_xowa/src/gplx/xowa/wikis/data/Xow_data_mgr_tst.java b/400_xowa/src/gplx/xowa/wikis/data/Xow_data_mgr_tst.java index efeed90fb..3408521cf 100644 --- a/400_xowa/src/gplx/xowa/wikis/data/Xow_data_mgr_tst.java +++ b/400_xowa/src/gplx/xowa/wikis/data/Xow_data_mgr_tst.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.wikis.data; import gplx.*; import gplx.xowa.*; import gplx.xowa.wikis.*; -import org.junit.*; import gplx.xowa.tdbs.*; -import gplx.xowa.nss.*; +import org.junit.*; import gplx.xowa.wikis.tdbs.*; +import gplx.xowa.wikis.nss.*; public class Xow_data_mgr_tst { Xow_data_mgr_fxt fxt = new Xow_data_mgr_fxt(); @Before public void init() {fxt.Clear(); Tfds.Now_enabled_y_();} @@ -151,14 +151,14 @@ class Xow_data_mgr_fxt { public Xow_data_mgr_fxt Tst_regy_title(String expd) {return Tst_regy(Xotdb_dir_info_.Name_title, expd);} Xow_data_mgr_fxt Tst_regy(String name, String expd) { Io_url file_orig = Io_url_.mem_fil_("mem/xowa/wiki/en.wikipedia.org/ns/000/" + name + "/reg.csv"); - Tfds.Eq_str_lines(expd, Io_mgr.I.LoadFilStr(file_orig)); + Tfds.Eq_str_lines(expd, Io_mgr.Instance.LoadFilStr(file_orig)); return this; } public Xow_data_mgr_fxt Tst_data_page(String expd) {return Tst_data(Xotdb_dir_info_.Tid_page , Xow_ns_.Id_main, 0, expd);} public Xow_data_mgr_fxt Tst_data_title(String expd) {return Tst_data(Xotdb_dir_info_.Tid_ttl, Xow_ns_.Id_main, 0, expd);} public Xow_data_mgr_fxt Tst_data(byte dir_tid, int ns_id, int fil, String expd) { Io_url url = wiki.Tdb_fsys_mgr().Url_ns_fil(dir_tid, ns_id, fil); - Tfds.Eq_str_lines(expd, Io_mgr.I.LoadFilStr(url)); + Tfds.Eq_str_lines(expd, Io_mgr.Instance.LoadFilStr(url)); return this; } } diff --git a/400_xowa/src/gplx/xowa/wikis/data/Xow_page_fetcher_test.java b/400_xowa/src/gplx/xowa/wikis/data/Xow_page_fetcher_test.java index 441f93e37..d3d7d5cf9 100644 --- a/400_xowa/src/gplx/xowa/wikis/data/Xow_page_fetcher_test.java +++ b/400_xowa/src/gplx/xowa/wikis/data/Xow_page_fetcher_test.java @@ -28,5 +28,5 @@ public class Xow_page_fetcher_test implements Xow_page_fetcher { Xowd_page_itm rv = (Xowd_page_itm)pages.Get_by(Make_key(ns_id, ttl)); return rv == null ? null : rv.Text(); } - String Make_key(int ns_id, byte[] ttl) {return Int_.Xto_str(ns_id) + "|" + String_.new_u8(ttl);} + String Make_key(int ns_id, byte[] ttl) {return Int_.To_str(ns_id) + "|" + String_.new_u8(ttl);} } diff --git a/400_xowa/src/gplx/xowa/wikis/data/Xowd_core_db_props.java b/400_xowa/src/gplx/xowa/wikis/data/Xowd_core_db_props.java index 29762a894..f278cd16a 100644 --- a/400_xowa/src/gplx/xowa/wikis/data/Xowd_core_db_props.java +++ b/400_xowa/src/gplx/xowa/wikis/data/Xowd_core_db_props.java @@ -17,7 +17,7 @@ along with this program. If not, see . */ package gplx.xowa.wikis.data; import gplx.*; import gplx.xowa.*; import gplx.xowa.wikis.*; import gplx.ios.*; import gplx.dbs.*; import gplx.dbs.cfgs.*; -import gplx.dbs.metas.*; import gplx.xowa.bldrs.cmds.*; import gplx.xowa.dbs.*; +import gplx.dbs.metas.*; import gplx.xowa.bldrs.cmds.*; import gplx.xowa.wikis.dbs.*; public class Xowd_core_db_props { public Xowd_core_db_props(int schema, Xowd_db_layout layout_text, Xowd_db_layout layout_html, Xowd_db_layout layout_file, byte zip_tid_text, byte zip_tid_html) { this.schema = schema; @@ -50,12 +50,12 @@ public class Xowd_core_db_props { private static Xowd_core_db_props Cfg_load(Db_cfg_tbl tbl) { Db_cfg_hash cfg_hash = tbl.Select_as_hash(Cfg_grp); return new Xowd_core_db_props - ( cfg_hash.Get(Cfg_key__schema_version).To_int() - , Xowd_db_layout.get_(cfg_hash.Get(Cfg_key__layout_text).To_str()) - , Xowd_db_layout.get_(cfg_hash.Get(Cfg_key__layout_html).To_str()) - , Xowd_db_layout.get_(cfg_hash.Get(Cfg_key__layout_file).To_str()) - , cfg_hash.Get(Cfg_key__zip_tid_text).To_byte() - , cfg_hash.Get(Cfg_key__zip_tid_html).To_byte() + ( cfg_hash.Get_by(Cfg_key__schema_version).To_int() + , Xowd_db_layout.get_(cfg_hash.Get_by(Cfg_key__layout_text).To_str()) + , Xowd_db_layout.get_(cfg_hash.Get_by(Cfg_key__layout_html).To_str()) + , Xowd_db_layout.get_(cfg_hash.Get_by(Cfg_key__layout_file).To_str()) + , cfg_hash.Get_by(Cfg_key__zip_tid_text).To_byte() + , cfg_hash.Get_by(Cfg_key__zip_tid_html).To_byte() ); } private static final String Cfg_grp = Xow_cfg_consts.Grp__wiki_core diff --git a/400_xowa/src/gplx/xowa/wikis/data/Xowd_db_file.java b/400_xowa/src/gplx/xowa/wikis/data/Xowd_db_file.java index 40921d420..b749b7956 100644 --- a/400_xowa/src/gplx/xowa/wikis/data/Xowd_db_file.java +++ b/400_xowa/src/gplx/xowa/wikis/data/Xowd_db_file.java @@ -81,7 +81,7 @@ public class Xowd_db_file { return rv; } public static Xowd_db_file load_(Xowd_core_db_props props, int id, byte tid, Io_url url, String ns_ids, int part_id, Guid_adp guid) { - Db_conn conn = Db_conn_bldr.I.Get(url); + Db_conn conn = Db_conn_bldr.Instance.Get(url); if (conn == null) { Xoa_app_.Usr_dlg().Warn_many("", "", "wiki.db:missing db; tid=~{0} url=~{1}", Xowd_db_file_.To_key(tid), url.Raw()); conn = Db_conn_.Noop; diff --git a/400_xowa/src/gplx/xowa/wikis/data/Xowd_db_file_hash.java b/400_xowa/src/gplx/xowa/wikis/data/Xowd_db_file_hash.java index b94b13a4a..e67a7d0a2 100644 --- a/400_xowa/src/gplx/xowa/wikis/data/Xowd_db_file_hash.java +++ b/400_xowa/src/gplx/xowa/wikis/data/Xowd_db_file_hash.java @@ -17,7 +17,7 @@ along with this program. If not, see . */ package gplx.xowa.wikis.data; import gplx.*; import gplx.xowa.*; import gplx.xowa.wikis.*; class Xowd_db_file_hash { - private final Ordered_hash hash = Ordered_hash_.new_(); + private final Ordered_hash hash = Ordered_hash_.New(); public int Count_total() {return count_total;} private int count_total; public void Clear() {hash.Clear(); count_total = 0;} public void Del(Xowd_db_file file) { @@ -31,7 +31,7 @@ class Xowd_db_file_hash { byte tid = file.Tid(); Ordered_hash tids = (Ordered_hash)hash.Get_by(tid); if (tids == null) { - tids = Ordered_hash_.new_(); + tids = Ordered_hash_.New(); hash.Add(tid, tids); } tids.Add(file.Id(), file); diff --git a/400_xowa/src/gplx/xowa/wikis/data/Xowd_db_mgr.java b/400_xowa/src/gplx/xowa/wikis/data/Xowd_db_mgr.java index 345c9e65c..96e1f13ea 100644 --- a/400_xowa/src/gplx/xowa/wikis/data/Xowd_db_mgr.java +++ b/400_xowa/src/gplx/xowa/wikis/data/Xowd_db_mgr.java @@ -17,7 +17,7 @@ along with this program. If not, see . */ package gplx.xowa.wikis.data; import gplx.*; import gplx.xowa.*; import gplx.xowa.wikis.*; import gplx.dbs.*; import gplx.dbs.cfgs.*; -import gplx.xowa.dbs.*; import gplx.xowa.wikis.data.tbls.*; +import gplx.xowa.wikis.dbs.*; import gplx.xowa.wikis.data.tbls.*; import gplx.xowa.wikis.domains.*; import gplx.xowa.bldrs.infos.*; public class Xowd_db_mgr { private Xowd_db_file[] dbs__ary = new Xowd_db_file[0]; private int dbs__ary_len = 0; private final Xowd_db_file_hash db_file_hash = new Xowd_db_file_hash(); @@ -41,7 +41,7 @@ public class Xowd_db_mgr { } public Xowd_db_file Dbs__make_by_tid(byte tid, String ns_ids, int part_id, String file_name_suffix) { Io_url url = wiki_root_dir.GenSubFil(domain_itm.Domain_str() + file_name_suffix); - Xowd_db_file rv = Xowd_db_file.make_(db__core.Info_session(), props, dbs__ary_len, tid, url, ns_ids, part_id, db__core.Url().NameAndExt(), Db_conn_bldr.I.New(url)); + Xowd_db_file rv = Xowd_db_file.make_(db__core.Info_session(), props, dbs__ary_len, tid, url, ns_ids, part_id, db__core.Url().NameAndExt(), Db_conn_bldr.Instance.New(url)); Dbs__add_and_save(rv); Dbs__set_by_tid(rv); return rv; @@ -52,7 +52,7 @@ public class Xowd_db_mgr { Xowd_db_file db = dbs__ary[i]; if (!Byte_.In(db.Tid(), tids)) continue; db.Rls(); - Io_mgr.I.DeleteFil_args(db.Url()).MissingFails_off().Exec(); + Io_mgr.Instance.DeleteFil_args(db.Url()).MissingFails_off().Exec(); db.Cmd_mode_(Db_cmd_mode.Tid_delete); } db__core.Tbl__db().Commit_all(this); @@ -60,7 +60,7 @@ public class Xowd_db_mgr { } public void Init_by_load(Io_url core_url) { db_file_hash.Clear(); - Db_conn core_conn = Db_conn_bldr.I.Get(core_url); + Db_conn core_conn = Db_conn_bldr.Instance.Get(core_url); props = Xowd_core_db_props.Cfg_load(core_url, core_conn); Dbs__set_by_tid(Xowd_db_file.load_(props, Xowd_db_file_.Id_core, Core_db_tid(props.Layout_text()), core_url, Xob_info_file.Ns_ids_empty, Xob_info_file.Part_id_1st, Guid_adp_.Empty)); dbs__ary = db__core.Tbl__db().Select_all(props, core_url.OwnerDir()); @@ -77,7 +77,7 @@ public class Xowd_db_mgr { String core_file_name = Core_file_name(props.Layout_text(), domain_itm.Domain_str()); byte core_db_tid = Core_db_tid(props.Layout_text()); Io_url core_db_url = wiki_root_dir.GenSubFil(core_file_name); - Db_conn conn = Db_conn_bldr.I.New(core_db_url); + Db_conn conn = Db_conn_bldr.Instance.New(core_db_url); conn.Txn_bgn("make__core__tbls"); Dbs__set_by_tid(Xowd_db_file.make_(info_session, props, Xowd_db_file_.Id_core, core_db_tid, core_db_url, Xob_info_file.Ns_ids_empty, Xob_info_file.Part_id_1st, core_file_name, conn)); db__core.Tbl__db().Create_tbl(); @@ -127,8 +127,8 @@ public class Xowd_db_mgr { String tid_idx_str = ""; switch (tid) { case Xowd_db_file_.Tid_cat_core : break; - case Xowd_db_file_.Tid_cat_link : tid_idx_str = "-db." + Int_.Xto_str_pad_bgn_zero(tid_idx, 3); break; - default : tid_idx_str = tid_idx == 1 ? "" : "-db." + Int_.Xto_str_pad_bgn_zero(tid_idx, 3); break; + case Xowd_db_file_.Tid_cat_link : tid_idx_str = "-db." + Int_.To_str_pad_bgn_zero(tid_idx, 3); break; + default : tid_idx_str = tid_idx == 1 ? "" : "-db." + Int_.To_str_pad_bgn_zero(tid_idx, 3); break; } return String_.Format("-{0}{1}.xowa", tid_name, tid_idx_str); // EX: en.wikipedia.org-text-001.sqlite3 } diff --git a/400_xowa/src/gplx/xowa/wikis/data/tbls/Xowd_cat_link_tbl.java b/400_xowa/src/gplx/xowa/wikis/data/tbls/Xowd_cat_link_tbl.java index 702b81e32..8e9b60824 100644 --- a/400_xowa/src/gplx/xowa/wikis/data/tbls/Xowd_cat_link_tbl.java +++ b/400_xowa/src/gplx/xowa/wikis/data/tbls/Xowd_cat_link_tbl.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.wikis.data.tbls; import gplx.*; import gplx.xowa.*; import gplx.xowa.wikis.*; import gplx.xowa.wikis.data.*; -import gplx.dbs.*; import gplx.dbs.qrys.*; import gplx.xowa.ctgs.*; +import gplx.dbs.*; import gplx.dbs.qrys.*; import gplx.xowa.wikis.ctgs.*; public class Xowd_cat_link_tbl implements RlsAble { private final String tbl_name; private final Db_meta_fld_list flds = Db_meta_fld_list.new_(); private final String fld_from, fld_to_id, fld_sortkey, fld_timestamp, fld_type_id; diff --git a/400_xowa/src/gplx/xowa/wikis/data/tbls/Xowd_category_itm.java b/400_xowa/src/gplx/xowa/wikis/data/tbls/Xowd_category_itm.java index 919eb4128..976cb4159 100644 --- a/400_xowa/src/gplx/xowa/wikis/data/tbls/Xowd_category_itm.java +++ b/400_xowa/src/gplx/xowa/wikis/data/tbls/Xowd_category_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.wikis.data.tbls; import gplx.*; import gplx.xowa.*; import gplx.xowa.wikis.*; import gplx.xowa.wikis.data.*; -import gplx.core.primitives.*; import gplx.xowa.ctgs.*; +import gplx.core.primitives.*; import gplx.xowa.wikis.ctgs.*; public class Xowd_category_itm { public int Id() {return id;} private int id; public Int_obj_val Id_val() {if (id_val == null) id_val = Int_obj_val.new_(id); return id_val;} Int_obj_val id_val; diff --git a/400_xowa/src/gplx/xowa/wikis/data/tbls/Xowd_html_tbl.java b/400_xowa/src/gplx/xowa/wikis/data/tbls/Xowd_html_tbl.java index 1aab199fc..8914f8b11 100644 --- a/400_xowa/src/gplx/xowa/wikis/data/tbls/Xowd_html_tbl.java +++ b/400_xowa/src/gplx/xowa/wikis/data/tbls/Xowd_html_tbl.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.wikis.data.tbls; import gplx.*; import gplx.xowa.*; import gplx.xowa.wikis.*; import gplx.xowa.wikis.data.*; -import gplx.ios.*; import gplx.dbs.*; import gplx.dbs.qrys.*; import gplx.xowa.dbs.*; import gplx.dbs.cfgs.*; +import gplx.ios.*; import gplx.dbs.*; import gplx.dbs.qrys.*; import gplx.xowa.wikis.dbs.*; import gplx.dbs.cfgs.*; public class Xowd_html_tbl implements RlsAble { private final String tbl_name = "html"; private final Db_meta_fld_list flds = Db_meta_fld_list.new_(); private final String fld_page_id, fld_html_tid, fld_html_data; @@ -31,7 +31,7 @@ public class Xowd_html_tbl implements RlsAble { } public Db_conn Conn() {return conn;} public void Create_tbl() {conn.Ddl_create_tbl(Db_meta_tbl.new_(tbl_name, flds));} - public void Create_idx() {conn.Ddl_create_idx(Gfo_usr_dlg_.I, Db_meta_idx.new_unique_by_tbl(tbl_name, "main", fld_page_id, fld_html_tid));} + public void Create_idx() {conn.Ddl_create_idx(Gfo_usr_dlg_.Instance, Db_meta_idx.new_unique_by_tbl(tbl_name, "main", fld_page_id, fld_html_tid));} public void Insert_bgn() {conn.Txn_bgn("schema__html__insert"); stmt_insert = conn.Stmt_insert(tbl_name, flds);} public void Insert_end() {conn.Txn_end(); stmt_insert = Db_stmt_.Rls(stmt_insert);} public int Insert(int page_id, int tid, byte[] data) { diff --git a/400_xowa/src/gplx/xowa/wikis/data/tbls/Xowd_page_itm.java b/400_xowa/src/gplx/xowa/wikis/data/tbls/Xowd_page_itm.java index e21d4ae18..c542d8c36 100644 --- a/400_xowa/src/gplx/xowa/wikis/data/tbls/Xowd_page_itm.java +++ b/400_xowa/src/gplx/xowa/wikis/data/tbls/Xowd_page_itm.java @@ -17,7 +17,7 @@ along with this program. If not, see . */ package gplx.xowa.wikis.data.tbls; import gplx.*; import gplx.xowa.*; import gplx.xowa.wikis.*; import gplx.xowa.wikis.data.*; import gplx.core.primitives.*; -import gplx.xowa.nss.*; +import gplx.xowa.wikis.nss.*; public class Xowd_page_itm { public Xowd_page_itm() {this.Clear();} public int Id() {return id;} public Xowd_page_itm Id_(int v) {id = v; id_val = null; return this;} private int id; @@ -118,7 +118,7 @@ public class Xowd_page_itm { this.id_val = null; this.html_db_id = orig.html_db_id; } - public void Srl_save(Bry_bfr bfr) {gplx.xowa.tdbs.Xotdb_page_itm_.Txt_id_save(bfr, this);} + public void Srl_save(Bry_bfr bfr) {gplx.xowa.wikis.tdbs.Xotdb_page_itm_.Txt_id_save(bfr, this);} public static final int Id_null = -1, Modified_on_null_int = 0; public static final Xowd_page_itm[] Ary_empty = new Xowd_page_itm[0]; public static final Xowd_page_itm Null = null; diff --git a/400_xowa/src/gplx/xowa/wikis/data/tbls/Xowd_page_itm_sorter.java b/400_xowa/src/gplx/xowa/wikis/data/tbls/Xowd_page_itm_sorter.java index b93c152a7..a09c74e66 100644 --- a/400_xowa/src/gplx/xowa/wikis/data/tbls/Xowd_page_itm_sorter.java +++ b/400_xowa/src/gplx/xowa/wikis/data/tbls/Xowd_page_itm_sorter.java @@ -32,8 +32,8 @@ public class Xowd_page_itm_sorter implements ComparerAble { case Tid_id: return Int_.Compare(lhs.Id(), rhs.Id()); case Tid_ttl: return Bry_.Compare(lhs.Ttl_page_db(), rhs.Ttl_page_db()); case Tid_ctg_tid_sortkey: - gplx.xowa.ctgs.Xoctg_page_xtn lhs_xtn = (gplx.xowa.ctgs.Xoctg_page_xtn)lhs.Xtn(); - gplx.xowa.ctgs.Xoctg_page_xtn rhs_xtn = (gplx.xowa.ctgs.Xoctg_page_xtn)rhs.Xtn(); + gplx.xowa.wikis.ctgs.Xoctg_page_xtn lhs_xtn = (gplx.xowa.wikis.ctgs.Xoctg_page_xtn)lhs.Xtn(); + gplx.xowa.wikis.ctgs.Xoctg_page_xtn rhs_xtn = (gplx.xowa.wikis.ctgs.Xoctg_page_xtn)rhs.Xtn(); if (lhs_xtn == null || rhs_xtn == null) return CompareAble_.Same; int tid_comparable = Byte_.Compare(lhs_xtn.Tid(), rhs_xtn.Tid()); if (tid_comparable != CompareAble_.Same) return tid_comparable; diff --git a/400_xowa/src/gplx/xowa/wikis/data/tbls/Xowd_page_itm_tst.java b/400_xowa/src/gplx/xowa/wikis/data/tbls/Xowd_page_itm_tst.java index e39071ff1..581edea22 100644 --- a/400_xowa/src/gplx/xowa/wikis/data/tbls/Xowd_page_itm_tst.java +++ b/400_xowa/src/gplx/xowa/wikis/data/tbls/Xowd_page_itm_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.wikis.data.tbls; import gplx.*; import gplx.xowa.*; import gplx.xowa.wikis.*; import gplx.xowa.wikis.data.*; -import org.junit.*; import gplx.xowa.wikis.data.tbls.*; import gplx.xowa.nss.*; +import org.junit.*; import gplx.xowa.wikis.data.tbls.*; import gplx.xowa.wikis.nss.*; public class Xowd_page_itm_tst { @Before public void init() {fxt.Init();} private Xowd_page_itm_fxt fxt = new Xowd_page_itm_fxt(); @Test public void Ttl_() { diff --git a/400_xowa/src/gplx/xowa/wikis/data/tbls/Xowd_page_tbl.java b/400_xowa/src/gplx/xowa/wikis/data/tbls/Xowd_page_tbl.java index 92a05f653..cf01fb0fa 100644 --- a/400_xowa/src/gplx/xowa/wikis/data/tbls/Xowd_page_tbl.java +++ b/400_xowa/src/gplx/xowa/wikis/data/tbls/Xowd_page_tbl.java @@ -17,8 +17,8 @@ along with this program. If not, see . */ package gplx.xowa.wikis.data.tbls; import gplx.*; import gplx.xowa.*; import gplx.xowa.wikis.*; import gplx.xowa.wikis.data.*; import gplx.core.primitives.*; import gplx.core.criterias.*; -import gplx.dbs.*; import gplx.xowa.*; import gplx.xowa.dbs.*; import gplx.dbs.qrys.*; -import gplx.xowa.nss.*; +import gplx.dbs.*; import gplx.xowa.*; import gplx.xowa.wikis.dbs.*; import gplx.dbs.qrys.*; +import gplx.xowa.wikis.nss.*; public class Xowd_page_tbl implements RlsAble { private final String tbl_name = "page"; private String fld_id, fld_ns, fld_title, fld_is_redirect, fld_touched, fld_len, fld_random_int, fld_text_db_id, fld_html_db_id, fld_redirect_id; @@ -134,7 +134,7 @@ public class Xowd_page_tbl implements RlsAble { public boolean Select_in__id(Cancelable cancelable, boolean skip_table_read, List_adp rv, int bgn, int end) { Xowd_page_itm[] page_ary = (Xowd_page_itm[])rv.To_ary(Xowd_page_itm.class); int len = page_ary.length; if (len == 0) return false; - Ordered_hash hash = Ordered_hash_.new_(); + Ordered_hash hash = Ordered_hash_.New(); for (int i = 0; i < len; i++) { if (cancelable.Canceled()) return false; Xowd_page_itm p = page_ary[i]; @@ -185,7 +185,7 @@ public class Xowd_page_tbl implements RlsAble { ( "SELECT {0}, {1}, {2}, {3} FROM {4} INDEXED BY {4}__title WHERE {1} = {5} AND {2} BETWEEN '{6}' AND '{7}' ORDER BY {3} DESC LIMIT {8};" , fld_id, fld_ns, fld_title, fld_len , tbl_name - , Int_.Xto_str(ns.Id()), search_bgn, search_end, Int_.Xto_str(max_results) + , Int_.To_str(ns.Id()), search_bgn, search_end, Int_.To_str(max_results) ); Db_qry qry = Db_qry_sql.rdr_(sql); Db_rdr rdr = conn.Stmt_new(qry).Exec_select__rls_auto(); diff --git a/400_xowa/src/gplx/xowa/wikis/data/tbls/Xowd_page_tbl__in_wkrs.java b/400_xowa/src/gplx/xowa/wikis/data/tbls/Xowd_page_tbl__in_wkrs.java index e82bc1423..9cd211a20 100644 --- a/400_xowa/src/gplx/xowa/wikis/data/tbls/Xowd_page_tbl__in_wkrs.java +++ b/400_xowa/src/gplx/xowa/wikis/data/tbls/Xowd_page_tbl__in_wkrs.java @@ -18,7 +18,7 @@ along with this program. If not, see . package gplx.xowa.wikis.data.tbls; import gplx.*; import gplx.xowa.*; import gplx.xowa.wikis.*; import gplx.xowa.wikis.data.*; import gplx.core.criterias.*; import gplx.dbs.*; import gplx.dbs.utls.*; -import gplx.xowa.nss.*; +import gplx.xowa.wikis.nss.*; class Xowd_page_tbl__ttl_ns extends Xowd_page_tbl__in_wkr__base { private Xow_ns_mgr ns_mgr; private Ordered_hash hash; @Override protected int Interval() {return 64;} // NOTE: 96+ overflows; PAGE:en.w:Space_Liability_Convention; DATE:2013-10-24 diff --git a/400_xowa/src/gplx/xowa/wikis/data/tbls/Xowd_page_tbl_tst.java b/400_xowa/src/gplx/xowa/wikis/data/tbls/Xowd_page_tbl_tst.java index 9750e32f8..af41b7167 100644 --- a/400_xowa/src/gplx/xowa/wikis/data/tbls/Xowd_page_tbl_tst.java +++ b/400_xowa/src/gplx/xowa/wikis/data/tbls/Xowd_page_tbl_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.wikis.data.tbls; import gplx.*; import gplx.xowa.*; import gplx.xowa.wikis.*; import gplx.xowa.wikis.data.*; -import org.junit.*; import gplx.xowa.bldrs.*; import gplx.xowa.ctgs.*; import gplx.dbs.*; import gplx.xowa.wikis.data.tbls.*; +import org.junit.*; import gplx.xowa.bldrs.*; import gplx.xowa.wikis.ctgs.*; import gplx.dbs.*; import gplx.xowa.wikis.data.tbls.*; public class Xowd_page_tbl_tst { private Xowd_page_tbl_fxt fxt = new Xowd_page_tbl_fxt(); @Test public void Find_search_end() { diff --git a/400_xowa/src/gplx/xowa/wikis/data/tbls/Xowd_pagelinks_tbl.java b/400_xowa/src/gplx/xowa/wikis/data/tbls/Xowd_pagelinks_tbl.java index 7c2252aaa..595e28bd9 100644 --- a/400_xowa/src/gplx/xowa/wikis/data/tbls/Xowd_pagelinks_tbl.java +++ b/400_xowa/src/gplx/xowa/wikis/data/tbls/Xowd_pagelinks_tbl.java @@ -16,9 +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.wikis.data.tbls; import gplx.*; import gplx.xowa.*; import gplx.xowa.wikis.*; import gplx.xowa.wikis.data.*; -import gplx.ios.*; import gplx.dbs.*; import gplx.dbs.qrys.*; import gplx.xowa.dbs.*; import gplx.dbs.cfgs.*; +import gplx.ios.*; import gplx.dbs.*; import gplx.dbs.qrys.*; import gplx.xowa.wikis.dbs.*; import gplx.dbs.cfgs.*; public class Xowd_pagelinks_tbl implements RlsAble { - private final String tbl_name = "pagelinks"; private final Db_meta_fld_list flds = Db_meta_fld_list.new_(); + private final String tbl_name = "pagelink"; private final Db_meta_fld_list flds = Db_meta_fld_list.new_(); private final String fld_src_id, fld_trg_id; private final Db_conn conn; public Xowd_pagelinks_tbl(Db_conn conn) { @@ -31,7 +31,7 @@ public class Xowd_pagelinks_tbl implements RlsAble { public Db_conn Conn() {return conn;} public String Tbl_name() {return tbl_name;} public void Create_tbl() {conn.Ddl_create_tbl(Db_meta_tbl.new_(tbl_name, flds));} - public void Create_idx__src_trg() {conn.Ddl_create_idx(Gfo_usr_dlg_.I, Db_meta_idx.new_unique_by_tbl(tbl_name, "src_trg", fld_src_id, fld_trg_id));} - public void Create_idx__trg_src() {conn.Ddl_create_idx(Gfo_usr_dlg_.I, Db_meta_idx.new_unique_by_tbl(tbl_name, "trg_src", fld_trg_id, fld_src_id));} + public void Create_idx__src_trg() {conn.Ddl_create_idx(Gfo_usr_dlg_.Instance, Db_meta_idx.new_unique_by_tbl(tbl_name, "src_trg", fld_src_id, fld_trg_id));} + public void Create_idx__trg_src() {conn.Ddl_create_idx(Gfo_usr_dlg_.Instance, Db_meta_idx.new_unique_by_tbl(tbl_name, "trg_src", fld_trg_id, fld_src_id));} public void Rls() {} } diff --git a/400_xowa/src/gplx/xowa/wikis/data/tbls/Xowd_pagelinks_temp_tbl.java b/400_xowa/src/gplx/xowa/wikis/data/tbls/Xowd_pagelinks_temp_tbl.java index 576359dc9..5515b6d8d 100644 --- a/400_xowa/src/gplx/xowa/wikis/data/tbls/Xowd_pagelinks_temp_tbl.java +++ b/400_xowa/src/gplx/xowa/wikis/data/tbls/Xowd_pagelinks_temp_tbl.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.wikis.data.tbls; import gplx.*; import gplx.xowa.*; import gplx.xowa.wikis.*; import gplx.xowa.wikis.data.*; -import gplx.ios.*; import gplx.dbs.*; import gplx.dbs.qrys.*; import gplx.xowa.dbs.*; import gplx.dbs.cfgs.*; +import gplx.ios.*; import gplx.dbs.*; import gplx.dbs.qrys.*; import gplx.xowa.wikis.dbs.*; import gplx.dbs.cfgs.*; public class Xowd_pagelinks_temp_tbl implements RlsAble { private final String tbl_name = "pagelinks_temp"; private final Db_meta_fld_list flds = Db_meta_fld_list.new_(); private final String fld_src_id, fld_trg_ns, fld_trg_ttl; @@ -32,7 +32,7 @@ public class Xowd_pagelinks_temp_tbl implements RlsAble { public Db_conn Conn() {return conn;} public String Tbl_name() {return tbl_name;} public void Create_tbl() {conn.Ddl_create_tbl(Db_meta_tbl.new_(tbl_name, flds));} - public void Create_idx() {conn.Ddl_create_idx(Gfo_usr_dlg_.I, Db_meta_idx.new_normal_by_tbl(tbl_name, "main", fld_src_id, fld_trg_ns, fld_trg_ttl));} + public void Create_idx() {conn.Ddl_create_idx(Gfo_usr_dlg_.Instance, Db_meta_idx.new_normal_by_tbl(tbl_name, "main", fld_src_id, fld_trg_ns, fld_trg_ttl));} public void Insert_bgn() {conn.Txn_bgn("schema__pagelinks__insert"); stmt_insert = conn.Stmt_insert(tbl_name, flds);} public void Insert_end() {conn.Txn_end(); stmt_insert = Db_stmt_.Rls(stmt_insert);} public void Insert(int src_id, int trg_ns, byte[] trg_ttl) { diff --git a/400_xowa/src/gplx/xowa/wikis/data/tbls/Xowd_site_ns_tbl.java b/400_xowa/src/gplx/xowa/wikis/data/tbls/Xowd_site_ns_tbl.java index bd2b7012a..ad7c2c344 100644 --- a/400_xowa/src/gplx/xowa/wikis/data/tbls/Xowd_site_ns_tbl.java +++ b/400_xowa/src/gplx/xowa/wikis/data/tbls/Xowd_site_ns_tbl.java @@ -17,7 +17,7 @@ along with this program. If not, see . */ package gplx.xowa.wikis.data.tbls; import gplx.*; import gplx.xowa.*; import gplx.xowa.wikis.*; import gplx.xowa.wikis.data.*; import gplx.dbs.*; import gplx.dbs.qrys.*; -import gplx.xowa.nss.*; +import gplx.xowa.wikis.nss.*; public class Xowd_site_ns_tbl { private final String tbl_name; private final Db_meta_fld_list flds = Db_meta_fld_list.new_(); private final String fld_id, fld_name, fld_case, fld_count, fld_is_alias; diff --git a/400_xowa/src/gplx/xowa/wikis/data/tbls/Xowd_wbase_qid_tbl_tst.java b/400_xowa/src/gplx/xowa/wikis/data/tbls/Xowd_wbase_qid_tbl_tst.java index 7dd377a9f..b0c3277f8 100644 --- a/400_xowa/src/gplx/xowa/wikis/data/tbls/Xowd_wbase_qid_tbl_tst.java +++ b/400_xowa/src/gplx/xowa/wikis/data/tbls/Xowd_wbase_qid_tbl_tst.java @@ -17,7 +17,7 @@ along with this program. If not, see . */ package gplx.xowa.wikis.data.tbls; import gplx.*; import gplx.xowa.*; import gplx.xowa.wikis.*; import gplx.xowa.wikis.data.*; import org.junit.*; import gplx.dbs.*; -import gplx.xowa.nss.*; +import gplx.xowa.wikis.nss.*; public class Xowd_wbase_qid_tbl_tst { private final Xowd_wbase_qid_tbl_fxt fxt = new Xowd_wbase_qid_tbl_fxt(); @Before public void init() {fxt.Clear();} @@ -30,9 +30,9 @@ public class Xowd_wbase_qid_tbl_tst { class Xowd_wbase_qid_tbl_fxt { private Xowd_wbase_qid_tbl qid_tbl; public void Clear() { - Io_mgr.I.InitEngine_mem(); - Db_conn_bldr.I.Reg_default_mem(); - Db_conn conn = Db_conn_bldr.I.New(Io_url_.mem_fil_("mem/db/wbase.xowa")); + Io_mgr.Instance.InitEngine_mem(); + Db_conn_bldr.Instance.Reg_default_mem(); + Db_conn conn = Db_conn_bldr.Instance.New(Io_url_.mem_fil_("mem/db/wbase.xowa")); this.qid_tbl = new Xowd_wbase_qid_tbl(conn, Bool_.N, Bool_.Y); // simulate v2.4.2 with bad "spaces" qid_tbl.Create_tbl(); } @@ -42,7 +42,7 @@ class Xowd_wbase_qid_tbl_fxt { qid_tbl.Insert_end(); } public void Test_select(String src_wiki, int src_ns, String src_ttl, String expd) { - byte[] actl = qid_tbl.Select_qid(Bry_.new_u8(src_wiki), Bry_.new_a7(Int_.Xto_str(src_ns)), Bry_.new_u8(src_ttl)); + byte[] actl = qid_tbl.Select_qid(Bry_.new_u8(src_wiki), Bry_.new_a7(Int_.To_str(src_ns)), Bry_.new_u8(src_ttl)); Tfds.Eq(expd, String_.new_u8(actl)); } } diff --git a/400_xowa/src/gplx/xowa/wikis/data/tbls/Xowd_xowa_db_tbl.java b/400_xowa/src/gplx/xowa/wikis/data/tbls/Xowd_xowa_db_tbl.java index d1f74001a..82f2bc71c 100644 --- a/400_xowa/src/gplx/xowa/wikis/data/tbls/Xowd_xowa_db_tbl.java +++ b/400_xowa/src/gplx/xowa/wikis/data/tbls/Xowd_xowa_db_tbl.java @@ -53,7 +53,7 @@ public class Xowd_xowa_db_tbl { list.Add(Xowd_db_file.load_(props, rdr.Read_int(fld_id), rdr.Read_byte(fld_type), wiki_root_dir.GenSubFil(rdr.Read_str(fld_url)), ns_ids, part_id, guid)); } } finally {rdr.Rls();} - list.Sort_by(Xowd_db_file_sorter__id.I); + list.Sort_by(Xowd_db_file_sorter__id.Instance); return (Xowd_db_file[])list.To_ary(Xowd_db_file.class); } public void Commit_all(Xowd_db_mgr core_data_mgr) { @@ -85,5 +85,5 @@ class Xowd_db_file_sorter__id implements gplx.lists.ComparerAble { Xowd_db_file rhs = (Xowd_db_file)rhsObj; return Int_.Compare(lhs.Id(), rhs.Id()); } - public static final Xowd_db_file_sorter__id I = new Xowd_db_file_sorter__id(); Xowd_db_file_sorter__id() {} + public static final Xowd_db_file_sorter__id Instance = new Xowd_db_file_sorter__id(); Xowd_db_file_sorter__id() {} } diff --git a/400_xowa/src/gplx/xowa/wikis/dbs/Xodb_load_mgr.java b/400_xowa/src/gplx/xowa/wikis/dbs/Xodb_load_mgr.java new file mode 100644 index 000000000..5ef887717 --- /dev/null +++ b/400_xowa/src/gplx/xowa/wikis/dbs/Xodb_load_mgr.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.wikis.dbs; import gplx.*; import gplx.xowa.*; import gplx.xowa.wikis.*; +import gplx.core.primitives.*; +import gplx.xowa.wikis.nss.*; +import gplx.xowa.bldrs.cmds.ctgs.*; import gplx.xowa.wikis.ctgs.*; import gplx.xowa.specials.search.*; import gplx.xowa.wikis.data.tbls.*; +public interface Xodb_load_mgr { + void Load_init (Xowe_wiki wiki); + void Load_page (Xowd_page_itm rv, Xow_ns ns, boolean timestamp_enabled); + boolean Load_by_id (Xowd_page_itm rv, int id); + void Load_by_ids (Cancelable cancelable, List_adp rv, int bgn, int end); + boolean Load_by_ttl (Xowd_page_itm rv, Xow_ns ns, byte[] ttl); + void Load_by_ttls (Cancelable cancelable, Ordered_hash rv, boolean fill_idx_fields_only, int bgn, int end); + int Load_ctg_count (byte[] ttl); + boolean Load_ctg_v1 (Xoctg_view_ctg rv, byte[] ttl); + boolean Load_ctg_v2 (Xoctg_data_ctg rv, byte[] ttl); + void Load_ctg_v2a (Xoctg_view_ctg rv, Xoctg_url url_ctg, byte[] ttl_bry, int limit); + Xowd_page_itm[] Load_ctg_list (byte[][] ctg_ttls); + void Load_search (Cancelable cancelable, List_adp rv, byte[] search, int results_max); + void Load_ttls_for_all_pages (Cancelable cancelable, List_adp rslt_list, Xowd_page_itm rslt_nxt, Xowd_page_itm rslt_prv, Int_obj_ref rslt_count, Xow_ns ns, byte[] key, int max_results, int min_page_len, int browse_len, boolean include_redirects, boolean fetch_prv_item); + void Load_ttls_for_search_suggest(Cancelable cancelable, List_adp rslt_list, Xow_ns ns, byte[] key, int max_results, int min_page_len, int browse_len, boolean include_redirects, boolean fetch_prv_item); + byte[] Find_random_ttl (Xow_ns ns); + void Clear(); // TEST:helper function + byte[] Load_qid (byte[] wiki_alias, byte[] ns_num, byte[] ttl); + int Load_pid (byte[] lang_key, byte[] pid_name); + Xodb_page_rdr Get_page_rdr (Xowe_wiki wiki); +} diff --git a/400_xowa/src/gplx/xowa/dbs/Xodb_load_mgr_sql.java b/400_xowa/src/gplx/xowa/wikis/dbs/Xodb_load_mgr_sql.java similarity index 92% rename from 400_xowa/src/gplx/xowa/dbs/Xodb_load_mgr_sql.java rename to 400_xowa/src/gplx/xowa/wikis/dbs/Xodb_load_mgr_sql.java index e81160c4a..1c25f148b 100644 --- a/400_xowa/src/gplx/xowa/dbs/Xodb_load_mgr_sql.java +++ b/400_xowa/src/gplx/xowa/wikis/dbs/Xodb_load_mgr_sql.java @@ -15,10 +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.dbs; import gplx.*; import gplx.xowa.*; +package gplx.xowa.wikis.dbs; import gplx.*; import gplx.xowa.*; import gplx.xowa.wikis.*; import gplx.core.primitives.*; import gplx.dbs.*; import gplx.dbs.cfgs.*; -import gplx.xowa.apps.gfss.*; import gplx.xowa.bldrs.cmds.ctgs.*; import gplx.xowa.ctgs.*; import gplx.xowa.specials.search.*; import gplx.xowa.wikis.data.tbls.*; -import gplx.xowa.nss.*; +import gplx.xowa.apps.gfs.*; import gplx.xowa.bldrs.cmds.ctgs.*; import gplx.xowa.wikis.ctgs.*; import gplx.xowa.specials.search.*; import gplx.xowa.wikis.data.tbls.*; +import gplx.xowa.wikis.nss.*; import gplx.xowa.wikis.*; import gplx.xowa.wikis.metas.*; import gplx.xowa.wikis.data.*; public class Xodb_load_mgr_sql implements Xodb_load_mgr { public Xodb_load_mgr_sql(Xodb_mgr_sql db_mgr, Xowd_db_mgr fsys_mgr) {this.db_mgr = db_mgr; this.fsys_mgr = fsys_mgr;} private Xodb_mgr_sql db_mgr; Xowd_db_mgr fsys_mgr; @@ -37,9 +37,9 @@ public class Xodb_load_mgr_sql implements Xodb_load_mgr { db_core.Tbl__ns().Select_all(wiki.Ns_mgr()); } private void Load_init_cfg(Xowe_wiki wiki) { - String version_key = Xoa_gfs_mgr.Build_code(Xowe_wiki.Invk_props, Xow_wiki_props.Invk_bldr_version); + String version_key = Xoa_gfs_wtr_.Write_func_chain(Xowe_wiki.Invk_props, Xow_wiki_props.Invk_bldr_version); Db_cfg_hash cfg_hash = db_mgr.Core_data_mgr().Tbl__cfg().Select_as_hash(Xow_cfg_consts.Grp__wiki_init); - String version_val = cfg_hash.Get(version_key).To_str_or(""); + String version_val = cfg_hash.Get_by(version_key).To_str_or(""); Xodb_upgrade_mgr.Upgrade(db_mgr, cfg_hash, version_key, version_val); Bry_bfr bfr = wiki.Utl__bfr_mkr().Get_k004(); Xoa_gfs_mgr gfs_mgr = wiki.Appe().Gfs_mgr(); @@ -47,9 +47,9 @@ public class Xodb_load_mgr_sql implements Xodb_load_mgr { int len = cfg_hash.Len(); for (int i = 0; i < len; ++i) { Db_cfg_itm cfg_itm = cfg_hash.Get_at(i); - gfs_mgr.Build_prop_set(bfr, Bry_.new_u8(cfg_itm.Key()), Bry_.new_u8(cfg_itm.To_str_or(""))); + Xoa_gfs_wtr_.Write_prop(bfr, Bry_.new_u8(cfg_itm.Key()), Bry_.new_u8(cfg_itm.To_str_or(""))); } - gfs_mgr.Run_str_for(wiki, bfr.Xto_str_and_clear()); + gfs_mgr.Run_str_for(wiki, bfr.To_str_and_clear()); } finally {bfr.Mkr_rls();} } public boolean Load_by_ttl(Xowd_page_itm rv, Xow_ns ns, byte[] ttl) {return db_mgr.Core_data_mgr().Tbl__page().Select_by_ttl(rv, ns, ttl);} @@ -155,7 +155,7 @@ public class Xodb_load_mgr_sql implements Xodb_load_mgr { public Xowd_page_itm[] Load_ctg_list(byte[][] ctg_ttls) { if (db_mgr.Core_data_mgr().Db__cat_core() == null) return Xowd_page_itm.Ary_empty; int len = ctg_ttls.length; - Ordered_hash hash = Ordered_hash_.new_bry_(); + Ordered_hash hash = Ordered_hash_.New_bry(); for (int i = 0; i < len; i++) { Xowd_page_itm page = new Xowd_page_itm(); byte[] ttl = Xoa_ttl.Replace_spaces(ctg_ttls[i]); // NOTE: ctg_ttls has spaces since v1 rendered it literally; @@ -165,7 +165,7 @@ public class Xodb_load_mgr_sql implements Xodb_load_mgr { } len = hash.Count(); // must update len (!hash.Has() may have skipped titles) db_mgr.Core_data_mgr().Tbl__page().Select_in__ttl(Cancelable_.Never, hash, Xow_ns_.Id_category, 0, len); - Ordered_hash hash2 = Ordered_hash_.new_(); + Ordered_hash hash2 = Ordered_hash_.New(); for (int i = 0; i < len; i++) { Xowd_page_itm page = (Xowd_page_itm)hash.Get_at(i); if (!hash2.Has(page.Id_val())) diff --git a/400_xowa/src/gplx/xowa/dbs/Xodb_load_mgr_sql_tst.java b/400_xowa/src/gplx/xowa/wikis/dbs/Xodb_load_mgr_sql_tst.java similarity index 93% rename from 400_xowa/src/gplx/xowa/dbs/Xodb_load_mgr_sql_tst.java rename to 400_xowa/src/gplx/xowa/wikis/dbs/Xodb_load_mgr_sql_tst.java index 424923991..6897f9869 100644 --- a/400_xowa/src/gplx/xowa/dbs/Xodb_load_mgr_sql_tst.java +++ b/400_xowa/src/gplx/xowa/wikis/dbs/Xodb_load_mgr_sql_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.dbs; import gplx.*; import gplx.xowa.*; -import org.junit.*; import gplx.core.primitives.*; import gplx.xowa.bldrs.*; import gplx.xowa.ctgs.*; import gplx.dbs.*; import gplx.xowa.wikis.data.tbls.*; import gplx.xowa.nss.*; +package gplx.xowa.wikis.dbs; import gplx.*; import gplx.xowa.*; import gplx.xowa.wikis.*; +import org.junit.*; import gplx.core.primitives.*; import gplx.xowa.bldrs.*; import gplx.xowa.wikis.ctgs.*; import gplx.dbs.*; import gplx.xowa.wikis.data.tbls.*; import gplx.xowa.wikis.nss.*; public class Xodb_load_mgr_sql_tst { @Before public void init() {if (Xoa_test_.Db_skip()) return; fxt.Clear();} private Xodb_load_mgr_sql_fxt fxt = new Xodb_load_mgr_sql_fxt(); @After public void term() {if (Xoa_test_.Db_skip()) return; fxt.Rls();} @@ -94,7 +94,7 @@ class Xodb_load_mgr_sql_fxt { bfr.Add(page.Ttl_page_db()).Add_byte_pipe(); bfr.Add_byte(Bool_.To_byte(ctg_itm.Hidden())).Add_byte_nl(); } - return bfr.Xto_str_and_clear(); + return bfr.To_str_and_clear(); } public Xoctg_url_mok ctg_url_() {return new Xoctg_url_mok();} @@ -160,7 +160,7 @@ class Xoctg_mok_ctg { int ns_id = Xow_ns_.Id_main; byte ctg_tid = Xoa_ctg_mgr.Tid_page; for (int i = bgn; i < end; i++) { - byte[] ttl = Bry_.Add(ttl_prefix, Bry_.new_a7(Int_.Xto_str_pad_bgn_zero(i, 3))); + byte[] ttl = Bry_.Add(ttl_prefix, Bry_.new_a7(Int_.To_str_pad_bgn_zero(i, 3))); Xoctg_page_xtn db_ctg = new Xoctg_page_xtn(ctg_tid, ttl); Xowd_page_itm page = new Xowd_page_itm(); int page_id = next_id.Val_add_post(); diff --git a/400_xowa/src/gplx/xowa/dbs/Xodb_load_mgr_txt.java b/400_xowa/src/gplx/xowa/wikis/dbs/Xodb_load_mgr_txt.java similarity index 95% rename from 400_xowa/src/gplx/xowa/dbs/Xodb_load_mgr_txt.java rename to 400_xowa/src/gplx/xowa/wikis/dbs/Xodb_load_mgr_txt.java index 34968e849..874c2d60b 100644 --- a/400_xowa/src/gplx/xowa/dbs/Xodb_load_mgr_txt.java +++ b/400_xowa/src/gplx/xowa/wikis/dbs/Xodb_load_mgr_txt.java @@ -15,12 +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.dbs; import gplx.*; import gplx.xowa.*; -import gplx.core.primitives.*; import gplx.core.brys.*; import gplx.core.flds.*; import gplx.xowa.bldrs.cmds.ctgs.*; import gplx.xowa.ctgs.*; import gplx.xowa.specials.search.*; -import gplx.xowa.nss.*; +package gplx.xowa.wikis.dbs; import gplx.*; import gplx.xowa.*; import gplx.xowa.wikis.*; +import gplx.core.primitives.*; import gplx.core.brys.*; import gplx.core.flds.*; import gplx.xowa.bldrs.cmds.ctgs.*; import gplx.xowa.wikis.ctgs.*; import gplx.xowa.specials.search.*; +import gplx.xowa.wikis.nss.*; import gplx.xowa.wikis.data.*; import gplx.xowa.wikis.data.tbls.*; -import gplx.xowa.tdbs.*; import gplx.xowa.tdbs.hives.*; import gplx.xowa.tdbs.xdats.*; -import gplx.xowa.gui.views.*; +import gplx.xowa.wikis.tdbs.*; import gplx.xowa.wikis.tdbs.hives.*; import gplx.xowa.wikis.tdbs.xdats.*; +import gplx.xowa.guis.views.*; public class Xodb_load_mgr_txt implements Xodb_load_mgr { private final Xob_xdat_file tmp_xdat_file = new Xob_xdat_file(); private final Xob_xdat_itm tmp_xdat_itm = new Xob_xdat_itm(); private final Xowd_page_itm tmp_page = new Xowd_page_itm(); @@ -222,7 +222,7 @@ public class Xodb_load_mgr_txt implements Xodb_load_mgr { Bry_bfr tmp_bfr = wiki.Utl__bfr_mkr().Get_m001(); byte[] tmp_bry = tmp_bfr.Bfr(); if (cancelable.Canceled()) return false; - tmp_bry = Io_mgr.I.LoadFilBry_reuse(url, tmp_bry, tmp_len); + tmp_bry = Io_mgr.Instance.LoadFilBry_reuse(url, tmp_bry, tmp_len); if (cancelable.Canceled()) return false; if (tmp_bry.length == 0) wiki.Appe().Usr_dlg().Warn_many("", "file.empty", "hive file is empty: ~{0}", url.Raw()); @@ -262,7 +262,7 @@ public class Xodb_load_mgr_txt implements Xodb_load_mgr { Int_obj_ref count = Int_obj_ref.zero_(); Xob_random_itm[] files = Build_random_itms(regy_mgr, count); int random_idx = RandomAdp_.new_().Next(count.Val() - 1); // get a random idx; -1 since count is super 1 (EX: count of 1 mil; random_idx of 0 - 999,999) - int file_idx = CompareAble_.FindSlot(Xob_random_itm_comparer._, files, new Xob_random_itm(-1, random_idx, -1)); + int file_idx = CompareAble_.FindSlot(Xob_random_itm_comparer.Instance, files, new Xob_random_itm(-1, random_idx, -1)); Io_url file_url = fsys_mgr.Url_ns_fil(Xotdb_dir_info_.Tid_ttl, ns.Id(), file_idx); Load_xdat_file(Cancelable_.Never, tmp_xdat_file, file_url); Xob_random_itm file = files[file_idx]; @@ -391,7 +391,7 @@ public class Xodb_load_mgr_txt implements Xodb_load_mgr { Xowd_regy_mgr rv = ns_regys[ns_ord]; if (rv == null) { Io_url file = fsys_mgr.Url_ns_reg(ns.Num_str(), Xotdb_dir_info_.Tid_ttl); - if (!Io_mgr.I.ExistsFil(file)) return null; + if (!Io_mgr.Instance.ExistsFil(file)) return null; rv = new Xowd_regy_mgr(file); ns_regys[ns_ord] = rv; } @@ -567,5 +567,5 @@ class Xob_random_itm_comparer implements gplx.lists.ComparerAble { public int compare(Object lhsObj, Object rhsObj) { return Int_.Compare(((Xob_random_itm)lhsObj).End(), ((Xob_random_itm)rhsObj).End()); } - public static final Xob_random_itm_comparer _ = new Xob_random_itm_comparer(); Xob_random_itm_comparer() {} + public static final Xob_random_itm_comparer Instance = new Xob_random_itm_comparer(); Xob_random_itm_comparer() {} } diff --git a/400_xowa/src/gplx/xowa/dbs/Xodb_mgr.java b/400_xowa/src/gplx/xowa/wikis/dbs/Xodb_mgr.java similarity index 89% rename from 400_xowa/src/gplx/xowa/dbs/Xodb_mgr.java rename to 400_xowa/src/gplx/xowa/wikis/dbs/Xodb_mgr.java index be4e0e015..3a134817f 100644 --- a/400_xowa/src/gplx/xowa/dbs/Xodb_mgr.java +++ b/400_xowa/src/gplx/xowa/wikis/dbs/Xodb_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.dbs; import gplx.*; import gplx.xowa.*; -import gplx.dbs.*; import gplx.xowa.wikis.data.*; import gplx.xowa.html.hdumps.*; +package gplx.xowa.wikis.dbs; import gplx.*; import gplx.xowa.*; import gplx.xowa.wikis.*; +import gplx.dbs.*; import gplx.xowa.wikis.data.*; import gplx.xowa.htmls.hdumps.*; public interface Xodb_mgr extends GfoInvkAble { byte Tid(); String Tid_name(); diff --git a/400_xowa/src/gplx/xowa/dbs/Xodb_mgr_sql.java b/400_xowa/src/gplx/xowa/wikis/dbs/Xodb_mgr_sql.java similarity index 89% rename from 400_xowa/src/gplx/xowa/dbs/Xodb_mgr_sql.java rename to 400_xowa/src/gplx/xowa/wikis/dbs/Xodb_mgr_sql.java index 77af450f4..4a1f5d804 100644 --- a/400_xowa/src/gplx/xowa/dbs/Xodb_mgr_sql.java +++ b/400_xowa/src/gplx/xowa/wikis/dbs/Xodb_mgr_sql.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.dbs; import gplx.*; import gplx.xowa.*; +package gplx.xowa.wikis.dbs; import gplx.*; import gplx.xowa.*; import gplx.xowa.wikis.*; import gplx.ios.*; import gplx.dbs.*; import gplx.dbs.qrys.*; import gplx.dbs.engines.sqlite.*; -import gplx.xowa.apps.gfss.*; import gplx.xowa.wikis.data.tbls.*; import gplx.xowa.ctgs.*; import gplx.xowa.html.hdumps.*; +import gplx.xowa.apps.gfs.*; import gplx.xowa.wikis.data.tbls.*; import gplx.xowa.wikis.ctgs.*; import gplx.xowa.htmls.hdumps.*; import gplx.xowa.wikis.*; import gplx.xowa.wikis.data.*; public class Xodb_mgr_sql implements Xodb_mgr, GfoInvkAble { public Xodb_mgr_sql(Xowe_wiki wiki) { @@ -36,11 +36,11 @@ public class Xodb_mgr_sql implements Xodb_mgr, GfoInvkAble { public DateAdp Dump_date_query() { DateAdp rv = wiki.Props().Modified_latest(); if (rv != null) return rv; Io_url url = core_data_mgr.Db__core().Url(); - return Io_mgr.I.QueryFil(url).ModifiedTime(); + return Io_mgr.Instance.QueryFil(url).ModifiedTime(); } public void Category_version_update(boolean version_is_1) { String grp = Xow_cfg_consts.Grp__wiki_init; - String key = Xoa_gfs_mgr.Build_code(Xowe_wiki.Invk_db_mgr, Xodb_mgr_sql.Invk_category_version); + String key = Xoa_gfs_wtr_.Write_func_chain(Xowe_wiki.Invk_db_mgr, Xodb_mgr_sql.Invk_category_version); core_data_mgr.Tbl__cfg().Delete_val(grp, key);// always delete ctg version category_version = version_is_1 ? Xoa_ctg_mgr.Version_1 : Xoa_ctg_mgr.Version_2; core_data_mgr.Tbl__cfg().Insert_byte(grp, key, category_version); diff --git a/400_xowa/src/gplx/xowa/dbs/Xodb_mgr_txt.java b/400_xowa/src/gplx/xowa/wikis/dbs/Xodb_mgr_txt.java similarity index 87% rename from 400_xowa/src/gplx/xowa/dbs/Xodb_mgr_txt.java rename to 400_xowa/src/gplx/xowa/wikis/dbs/Xodb_mgr_txt.java index b75e11361..7a1a39177 100644 --- a/400_xowa/src/gplx/xowa/dbs/Xodb_mgr_txt.java +++ b/400_xowa/src/gplx/xowa/wikis/dbs/Xodb_mgr_txt.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.dbs; import gplx.*; import gplx.xowa.*; -import gplx.ios.*; import gplx.dbs.*; import gplx.xowa.wikis.data.*; import gplx.xowa.ctgs.*; import gplx.xowa.html.hdumps.*; import gplx.xowa.tdbs.*; import gplx.xowa.nss.*; +package gplx.xowa.wikis.dbs; import gplx.*; import gplx.xowa.*; import gplx.xowa.wikis.*; +import gplx.ios.*; import gplx.dbs.*; import gplx.xowa.wikis.data.*; import gplx.xowa.wikis.ctgs.*; import gplx.xowa.htmls.hdumps.*; import gplx.xowa.wikis.tdbs.*; import gplx.xowa.wikis.nss.*; public class Xodb_mgr_txt implements Xodb_mgr { public Xodb_mgr_txt(Xowe_wiki wiki, Xow_data_mgr data_mgr) { this.wiki = wiki; @@ -30,11 +30,11 @@ public class Xodb_mgr_txt implements Xodb_mgr { public Xodb_save_mgr Save_mgr() {return save_mgr;} private Xodb_save_mgr_txt save_mgr; public DateAdp Dump_date_query() { Io_url url = wiki.Tdb_fsys_mgr().Url_ns_fil(Xotdb_dir_info_.Tid_page, Xow_ns_.Id_main, 0); - return Io_mgr.I.QueryFil(url).ModifiedTime(); + return Io_mgr.Instance.QueryFil(url).ModifiedTime(); } public byte Category_version() { if (category_version == Xoa_ctg_mgr.Version_null) { - if (Io_mgr.I.ExistsDir(wiki.Tdb_fsys_mgr().Url_site_dir(Xotdb_dir_info_.Tid_category2_link))) + if (Io_mgr.Instance.ExistsDir(wiki.Tdb_fsys_mgr().Url_site_dir(Xotdb_dir_info_.Tid_category2_link))) category_version = Xoa_ctg_mgr.Version_2; else category_version = Xoa_ctg_mgr.Version_1; diff --git a/400_xowa/src/gplx/xowa/dbs/Xodb_page_rdr.java b/400_xowa/src/gplx/xowa/wikis/dbs/Xodb_page_rdr.java similarity index 89% rename from 400_xowa/src/gplx/xowa/dbs/Xodb_page_rdr.java rename to 400_xowa/src/gplx/xowa/wikis/dbs/Xodb_page_rdr.java index 3b9a7a86c..8001a5340 100644 --- a/400_xowa/src/gplx/xowa/dbs/Xodb_page_rdr.java +++ b/400_xowa/src/gplx/xowa/wikis/dbs/Xodb_page_rdr.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.dbs; import gplx.*; import gplx.xowa.*; +package gplx.xowa.wikis.dbs; import gplx.*; import gplx.xowa.*; import gplx.xowa.wikis.*; import gplx.xowa.wikis.data.tbls.*; public interface Xodb_page_rdr { boolean Move_next(); diff --git a/400_xowa/src/gplx/xowa/dbs/Xodb_page_rdr__sql.java b/400_xowa/src/gplx/xowa/wikis/dbs/Xodb_page_rdr__sql.java similarity index 92% rename from 400_xowa/src/gplx/xowa/dbs/Xodb_page_rdr__sql.java rename to 400_xowa/src/gplx/xowa/wikis/dbs/Xodb_page_rdr__sql.java index 7603e89b2..6648d9348 100644 --- a/400_xowa/src/gplx/xowa/dbs/Xodb_page_rdr__sql.java +++ b/400_xowa/src/gplx/xowa/wikis/dbs/Xodb_page_rdr__sql.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.dbs; import gplx.*; import gplx.xowa.*; +package gplx.xowa.wikis.dbs; import gplx.*; import gplx.xowa.*; import gplx.xowa.wikis.*; import gplx.dbs.*; import gplx.xowa.wikis.data.*; import gplx.xowa.wikis.data.tbls.*; class Xodb_page_rdr__sql implements Xodb_page_rdr { diff --git a/400_xowa/src/gplx/xowa/dbs/Xodb_page_rdr__tdb.java b/400_xowa/src/gplx/xowa/wikis/dbs/Xodb_page_rdr__tdb.java similarity index 90% rename from 400_xowa/src/gplx/xowa/dbs/Xodb_page_rdr__tdb.java rename to 400_xowa/src/gplx/xowa/wikis/dbs/Xodb_page_rdr__tdb.java index c29784daa..59d3d46fb 100644 --- a/400_xowa/src/gplx/xowa/dbs/Xodb_page_rdr__tdb.java +++ b/400_xowa/src/gplx/xowa/wikis/dbs/Xodb_page_rdr__tdb.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.dbs; import gplx.*; import gplx.xowa.*; +package gplx.xowa.wikis.dbs; import gplx.*; import gplx.xowa.*; import gplx.xowa.wikis.*; import gplx.ios.*; import gplx.xowa.wikis.data.tbls.*; -import gplx.xowa.nss.*; -import gplx.xowa.tdbs.*; import gplx.xowa.tdbs.hives.*; import gplx.xowa.tdbs.xdats.*; +import gplx.xowa.wikis.nss.*; +import gplx.xowa.wikis.tdbs.*; import gplx.xowa.wikis.tdbs.hives.*; import gplx.xowa.wikis.tdbs.xdats.*; public class Xodb_page_rdr__tdb implements Xodb_page_rdr { private final Xow_ns_mgr ns_mgr; private final Xotdb_fsys_mgr fsys_mgr; private int cur_ns_ord = -1; private Xow_ns cur_ns; private Io_url[] cur_file_ary; private Io_url cur_file; private int cur_file_idx = -1; @@ -74,7 +74,7 @@ public class Xodb_page_rdr__tdb implements Xodb_page_rdr { public void Rls() {} private Io_url[] Get_page_url_ary(Xow_ns ns) { Io_url reg_url = fsys_mgr.Url_ns_reg(ns.Num_str(), Xotdb_dir_info_.Tid_ttl); - if (!Io_mgr.I.ExistsFil(reg_url)) return null; + if (!Io_mgr.Instance.ExistsFil(reg_url)) return null; Xowd_regy_mgr reg_mgr = new Xowd_regy_mgr(reg_url); Xowd_hive_regy_itm[] file_ary = reg_mgr.Files_ary(); int len = file_ary.length; diff --git a/400_xowa/src/gplx/xowa/dbs/Xodb_save_mgr.java b/400_xowa/src/gplx/xowa/wikis/dbs/Xodb_save_mgr.java similarity index 91% rename from 400_xowa/src/gplx/xowa/dbs/Xodb_save_mgr.java rename to 400_xowa/src/gplx/xowa/wikis/dbs/Xodb_save_mgr.java index e80729e54..5753a2a2e 100644 --- a/400_xowa/src/gplx/xowa/dbs/Xodb_save_mgr.java +++ b/400_xowa/src/gplx/xowa/wikis/dbs/Xodb_save_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.dbs; import gplx.*; import gplx.xowa.*; +package gplx.xowa.wikis.dbs; import gplx.*; import gplx.xowa.*; import gplx.xowa.wikis.*; public interface Xodb_save_mgr { boolean Create_enabled(); void Create_enabled_(boolean v); boolean Update_modified_on_enabled(); void Update_modified_on_enabled_(boolean v); diff --git a/400_xowa/src/gplx/xowa/dbs/Xodb_save_mgr_sql.java b/400_xowa/src/gplx/xowa/wikis/dbs/Xodb_save_mgr_sql.java similarity index 96% rename from 400_xowa/src/gplx/xowa/dbs/Xodb_save_mgr_sql.java rename to 400_xowa/src/gplx/xowa/wikis/dbs/Xodb_save_mgr_sql.java index 11d2e0e76..71f2b8141 100644 --- a/400_xowa/src/gplx/xowa/dbs/Xodb_save_mgr_sql.java +++ b/400_xowa/src/gplx/xowa/wikis/dbs/Xodb_save_mgr_sql.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.dbs; import gplx.*; import gplx.xowa.*; +package gplx.xowa.wikis.dbs; import gplx.*; import gplx.xowa.*; import gplx.xowa.wikis.*; import gplx.ios.*; import gplx.dbs.*; import gplx.xowa.wikis.data.*; import gplx.xowa.wikis.data.tbls.*; import gplx.dbs.qrys.*; import gplx.xowa.wikis.*; public class Xodb_save_mgr_sql implements Xodb_save_mgr { diff --git a/400_xowa/src/gplx/xowa/dbs/Xodb_save_mgr_txt.java b/400_xowa/src/gplx/xowa/wikis/dbs/Xodb_save_mgr_txt.java similarity index 90% rename from 400_xowa/src/gplx/xowa/dbs/Xodb_save_mgr_txt.java rename to 400_xowa/src/gplx/xowa/wikis/dbs/Xodb_save_mgr_txt.java index 24d5e2d9d..5ad630f92 100644 --- a/400_xowa/src/gplx/xowa/dbs/Xodb_save_mgr_txt.java +++ b/400_xowa/src/gplx/xowa/wikis/dbs/Xodb_save_mgr_txt.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.dbs; import gplx.*; import gplx.xowa.*; +package gplx.xowa.wikis.dbs; import gplx.*; import gplx.xowa.*; import gplx.xowa.wikis.*; import gplx.xowa.wikis.domains.*; import gplx.xowa.wikis.data.tbls.*; -import gplx.xowa.nss.*; +import gplx.xowa.wikis.nss.*; import gplx.xowa.parsers.utils.*; -import gplx.xowa.tdbs.*; import gplx.xowa.tdbs.hives.*; import gplx.xowa.tdbs.xdats.*; +import gplx.xowa.wikis.tdbs.*; import gplx.xowa.wikis.tdbs.hives.*; import gplx.xowa.wikis.tdbs.xdats.*; public class Xodb_save_mgr_txt implements Xodb_save_mgr { public Xodb_save_mgr_txt(Xowe_wiki wiki, Xodb_load_mgr_txt load_mgr) { this.wiki = wiki; @@ -48,7 +48,7 @@ public class Xodb_save_mgr_txt implements Xodb_save_mgr { if (Bry_.Len_gt_0(page_rdr_bry)) page_rdr.Parse(page_rdr_bry, page_rdr_bry.length, page_rdr_url); int row_idx = page_rdr.Count(); Bry_bfr tmp_bfr = wiki.Utl__bfr_mkr().Get_b512(); - page_rdr.Insert(tmp_bfr, tmp.Xto_bry_and_clear()); + page_rdr.Insert(tmp_bfr, tmp.To_bry_and_clear()); this.Data_save(Xotdb_dir_info_.Tid_page, page_rdr, page_rdr_url, tmp_bfr); tmp_bfr.Mkr_rls(); @@ -57,12 +57,12 @@ public class Xodb_save_mgr_txt implements Xodb_save_mgr { Xotdb_page_itm_.Txt_ttl_save(tmp, db_page); byte[] ttl_row_bry = tmp.To_bry_and_rls(); Xowd_hive_mgr ttl_hive = new Xowd_hive_mgr(wiki, Xotdb_dir_info_.Tid_ttl); - ttl_hive.Create(ttl.Ns(), ttl.Page_db(), ttl_row_bry, Bry_comparer_fld_last._); + ttl_hive.Create(ttl.Ns(), ttl.Page_db(), ttl_row_bry, Bry_comparer_fld_last.Instance); wiki.Db_mgr().Load_mgr().Clear(); // NOTE: need to clear cached regy_ary in load_mgr } public void Data_update(Xoae_page page, byte[] text) {Data_update_under(page, text, null);} public void Data_rename(Xoae_page page, int trg_ns, byte[] trg_ttl) { - if (wiki.Domain_tid() != Xow_domain_type_.Int__home) { + if (wiki.Domain_tid() != Xow_domain_tid_.Int__home) { wiki.Appe().Usr_dlg().Warn_many("", "", "Only pages in the home wiki can be renamed"); return; } @@ -90,7 +90,7 @@ public class Xodb_save_mgr_txt implements Xodb_save_mgr { page.Revision_data().Modified_on_(modified_on); } Xotdb_page_itm_.Txt_page_save(tmp_bfr, db_page.Id(), modified_on, ttl_bry, text, true); - page_rdr.Update(tmp_bfr, page_itm, tmp_bfr.Xto_bry_and_clear()); + page_rdr.Update(tmp_bfr, page_itm, tmp_bfr.To_bry_and_clear()); Io_url page_rdr_url = fsys_mgr.Url_ns_fil(Xotdb_dir_info_.Tid_page, ttl.Ns().Id(), db_page.Text_db_id()); this.Data_save(Xotdb_dir_info_.Tid_page, page_rdr, page_rdr_url, tmp_bfr); tmp_bfr.Mkr_rls(); @@ -100,7 +100,7 @@ public class Xodb_save_mgr_txt implements Xodb_save_mgr { db_page.Redirected_(redirect_ttl != null); Bry_bfr tmp = wiki.Utl__bfr_mkr().Get_b512(); Xotdb_page_itm_.Txt_ttl_save(tmp, db_page); - byte[] ttl_row_bry = tmp.Xto_bry_and_clear(); + byte[] ttl_row_bry = tmp.To_bry_and_clear(); tmp.Mkr_rls(); Xowd_hive_mgr ttl_hive = new Xowd_hive_mgr(wiki, Xotdb_dir_info_.Tid_ttl); ttl_hive.Update(ns, old_ttl, new_ttl, ttl_row_bry, Xotdb_page_itm_.Txt_ttl_pos, Byte_ascii.Pipe, true, true); @@ -118,5 +118,5 @@ class Bry_comparer_fld_last implements gplx.lists.ComparerAble { int rhs_bgn = Bry_find_.Find_bwd(rhs, Byte_ascii.Pipe); if (rhs_bgn == Bry_.NotFound) rhs_bgn = -1; return Bry_.Compare(lhs, lhs_bgn + 1, lhs.length, rhs, rhs_bgn + 1, rhs.length); } - public static final Bry_comparer_fld_last _ = new Bry_comparer_fld_last(); + public static final Bry_comparer_fld_last Instance = new Bry_comparer_fld_last(); } diff --git a/400_xowa/src/gplx/xowa/dbs/Xodb_upgrade_mgr.java b/400_xowa/src/gplx/xowa/wikis/dbs/Xodb_upgrade_mgr.java similarity index 95% rename from 400_xowa/src/gplx/xowa/dbs/Xodb_upgrade_mgr.java rename to 400_xowa/src/gplx/xowa/wikis/dbs/Xodb_upgrade_mgr.java index fecf02fdf..fb1e8bfd2 100644 --- a/400_xowa/src/gplx/xowa/dbs/Xodb_upgrade_mgr.java +++ b/400_xowa/src/gplx/xowa/wikis/dbs/Xodb_upgrade_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.dbs; import gplx.*; import gplx.xowa.*; +package gplx.xowa.wikis.dbs; import gplx.*; import gplx.xowa.*; import gplx.xowa.wikis.*; import gplx.dbs.*; import gplx.dbs.cfgs.*; import gplx.xowa.wikis.data.tbls.*; class Xodb_upgrade_mgr { public static void Upgrade(Xodb_mgr_sql db_mgr, Db_cfg_hash cfg_hash, String version_key, String version_val) { diff --git a/400_xowa/src/gplx/xowa/wikis/domains/Xow_abrv_wm.java b/400_xowa/src/gplx/xowa/wikis/domains/Xow_abrv_wm.java index b619116db..8c9daa829 100644 --- a/400_xowa/src/gplx/xowa/wikis/domains/Xow_abrv_wm.java +++ b/400_xowa/src/gplx/xowa/wikis/domains/Xow_abrv_wm.java @@ -18,7 +18,7 @@ along with this program. If not, see . package gplx.xowa.wikis.domains; import gplx.*; import gplx.xowa.*; import gplx.xowa.wikis.*; import gplx.xowa.langs.*; public class Xow_abrv_wm { - public Xow_abrv_wm(byte[] raw, byte[] lang_domain, Xol_lang_itm lang_actl, int domain_type) { + public Xow_abrv_wm(byte[] raw, byte[] lang_domain, Xol_lang_stub lang_actl, int domain_type) { this.raw = raw; this.lang_domain = lang_domain; this.lang_actl = lang_actl; @@ -26,6 +26,6 @@ public class Xow_abrv_wm { } public byte[] Raw() {return raw;} private final byte[] raw; public byte[] Lang_domain() {return lang_domain;} private final byte[] lang_domain; - public Xol_lang_itm Lang_actl() {return lang_actl;} private final Xol_lang_itm lang_actl; + public Xol_lang_stub Lang_actl() {return lang_actl;} private final Xol_lang_stub lang_actl; public int Domain_type() {return domain_type;} private final int domain_type; } diff --git a/400_xowa/src/gplx/xowa/wikis/domains/Xow_abrv_wm_.java b/400_xowa/src/gplx/xowa/wikis/domains/Xow_abrv_wm_.java index 6c3a46e03..21ea1b7b5 100644 --- a/400_xowa/src/gplx/xowa/wikis/domains/Xow_abrv_wm_.java +++ b/400_xowa/src/gplx/xowa/wikis/domains/Xow_abrv_wm_.java @@ -25,7 +25,7 @@ public class Xow_abrv_wm_ { Object o = bry_trie.Match_bgn(src, src_len - 1, -1); if (o == null) return null; Xow_abrv_wm rv = Xow_abrv_wm_override.To_abrv_itm_or_null(src); if (rv != null) return rv; int domain_type = ((Int_obj_ref)o).Val(); - Xol_lang_itm lang_itm = Xol_lang_itm_.Get_by_key_or_intl(src, 0, bry_trie.Match_pos() + 1); + Xol_lang_stub lang_itm = Xol_lang_stub_.Get_by_key_or_intl(src, 0, bry_trie.Match_pos() + 1); return new Xow_abrv_wm(src, lang_itm.Key(), lang_itm, domain_type); } public static Xow_domain_itm Parse_to_domain_itm(byte[] src) { // EX: parse "enwiki" to "en.wikipedia.org" itm @@ -48,22 +48,22 @@ public class Xow_abrv_wm_ { domain_type = ((Int_obj_ref)o).Val(); } switch (domain_type) { - case Xow_domain_type_.Int__wmfblog: return Xow_domain_itm_.Bry__wmforg; - case Xow_domain_type_.Int__wikidata: return Xow_domain_itm_.Bry__wikidata; - case Xow_domain_type_.Int__mediawiki: return Xow_domain_itm_.Bry__mediawiki; - case Xow_domain_type_.Int__commons: return Xow_domain_itm_.Bry__commons; - case Xow_domain_type_.Int__species: return Xow_domain_itm_.Bry__species; - case Xow_domain_type_.Int__meta: return Xow_domain_itm_.Bry__meta; - case Xow_domain_type_.Int__incubator: return Xow_domain_itm_.Bry__incubator; - case Xow_domain_type_.Int__wikipedia: - case Xow_domain_type_.Int__wiktionary: - case Xow_domain_type_.Int__wikisource: - case Xow_domain_type_.Int__wikibooks: - case Xow_domain_type_.Int__wikiversity: - case Xow_domain_type_.Int__wikiquote: - case Xow_domain_type_.Int__wikinews: - case Xow_domain_type_.Int__wikivoyage: - case Xow_domain_type_.Int__wikimedia: + case Xow_domain_tid_.Int__wmfblog: return Xow_domain_itm_.Bry__wmforg; + case Xow_domain_tid_.Int__wikidata: return Xow_domain_itm_.Bry__wikidata; + case Xow_domain_tid_.Int__mediawiki: return Xow_domain_itm_.Bry__mediawiki; + case Xow_domain_tid_.Int__commons: return Xow_domain_itm_.Bry__commons; + case Xow_domain_tid_.Int__species: return Xow_domain_itm_.Bry__species; + case Xow_domain_tid_.Int__meta: return Xow_domain_itm_.Bry__meta; + case Xow_domain_tid_.Int__incubator: return Xow_domain_itm_.Bry__incubator; + case Xow_domain_tid_.Int__wikipedia: + case Xow_domain_tid_.Int__wiktionary: + case Xow_domain_tid_.Int__wikisource: + case Xow_domain_tid_.Int__wikibooks: + case Xow_domain_tid_.Int__wikiversity: + case Xow_domain_tid_.Int__wikiquote: + case Xow_domain_tid_.Int__wikinews: + case Xow_domain_tid_.Int__wikivoyage: + case Xow_domain_tid_.Int__wikimedia: if (lang == null) { lang = Bry_.Mid(src, 0, bry_trie.Match_pos() + 1); // en if (Bry_.Has(lang, Byte_ascii.Underline)) // convert "_" to "-"; note that wmf_keys have a strict format of langtype; EX: "zh_yuewiki"; DATE:2014-10-06 @@ -72,7 +72,7 @@ public class Xow_abrv_wm_ { return Bry_.Add ( lang , Byte_ascii.Dot_bry // . - , Xow_domain_type_.Get_type_as_bry(domain_type) // wikipedia + , Xow_domain_tid_.Get_type_as_bry(domain_type) // wikipedia , Byte_ascii.Dot_bry // . , Xow_domain_itm_.Seg__org // org ); @@ -82,14 +82,14 @@ public class Xow_abrv_wm_ { public static void To_abrv(Bry_bfr bfr, byte[] lang_key, Int_obj_ref domain_type) { byte[] suffix_bry = (byte[])int_hash.Get_by(domain_type); if (suffix_bry == null) return; switch (domain_type.Val()) { - case Xow_domain_type_.Int__commons: - case Xow_domain_type_.Int__species: - case Xow_domain_type_.Int__meta: - case Xow_domain_type_.Int__incubator: - case Xow_domain_type_.Int__wikidata: - case Xow_domain_type_.Int__mediawiki: - case Xow_domain_type_.Int__wmfblog: bfr.Add(suffix_bry); break; - case Xow_domain_type_.Int__other: break; + case Xow_domain_tid_.Int__commons: + case Xow_domain_tid_.Int__species: + case Xow_domain_tid_.Int__meta: + case Xow_domain_tid_.Int__incubator: + case Xow_domain_tid_.Int__wikidata: + case Xow_domain_tid_.Int__mediawiki: + case Xow_domain_tid_.Int__wmfblog: bfr.Add(suffix_bry); break; + case Xow_domain_tid_.Int__other: break; default: bfr.Add(lang_key).Add(suffix_bry); break; } } @@ -97,22 +97,22 @@ public class Xow_abrv_wm_ { int tid = domain_itm.Domain_type_id(); byte[] suffix = (byte[])int_hash.Get_by(Int_obj_ref.new_(tid)); if (suffix == null) return null; switch (tid) { - case Xow_domain_type_.Int__commons: - case Xow_domain_type_.Int__species: - case Xow_domain_type_.Int__meta: - case Xow_domain_type_.Int__incubator: - case Xow_domain_type_.Int__wikidata: - case Xow_domain_type_.Int__mediawiki: - case Xow_domain_type_.Int__wmfblog: return suffix; - case Xow_domain_type_.Int__wikipedia: - case Xow_domain_type_.Int__wiktionary: - case Xow_domain_type_.Int__wikisource: - case Xow_domain_type_.Int__wikibooks: - case Xow_domain_type_.Int__wikiversity: - case Xow_domain_type_.Int__wikiquote: - case Xow_domain_type_.Int__wikinews: - case Xow_domain_type_.Int__wikivoyage: - case Xow_domain_type_.Int__wikimedia: return Bry_.Add(domain_itm.Lang_orig_key(), suffix); + case Xow_domain_tid_.Int__commons: + case Xow_domain_tid_.Int__species: + case Xow_domain_tid_.Int__meta: + case Xow_domain_tid_.Int__incubator: + case Xow_domain_tid_.Int__wikidata: + case Xow_domain_tid_.Int__mediawiki: + case Xow_domain_tid_.Int__wmfblog: return suffix; + case Xow_domain_tid_.Int__wikipedia: + case Xow_domain_tid_.Int__wiktionary: + case Xow_domain_tid_.Int__wikisource: + case Xow_domain_tid_.Int__wikibooks: + case Xow_domain_tid_.Int__wikiversity: + case Xow_domain_tid_.Int__wikiquote: + case Xow_domain_tid_.Int__wikinews: + case Xow_domain_tid_.Int__wikivoyage: + case Xow_domain_tid_.Int__wikimedia: return Bry_.Add(domain_itm.Lang_orig_key(), suffix); default: throw Err_.new_unhandled(tid); } } @@ -121,22 +121,22 @@ public class Xow_abrv_wm_ { private static Btrie_bwd_mgr Init_trie() { int_hash = Hash_adp_.new_(); Btrie_bwd_mgr rv = new Btrie_bwd_mgr(false); - Init_trie_itm(rv, int_hash, "wiki" , Xow_domain_type_.Int__wikipedia); - Init_trie_itm(rv, int_hash, "wiktionary" , Xow_domain_type_.Int__wiktionary); - Init_trie_itm(rv, int_hash, "wikisource" , Xow_domain_type_.Int__wikisource); - Init_trie_itm(rv, int_hash, "wikibooks" , Xow_domain_type_.Int__wikibooks); - Init_trie_itm(rv, int_hash, "wikiversity" , Xow_domain_type_.Int__wikiversity); - Init_trie_itm(rv, int_hash, "wikiquote" , Xow_domain_type_.Int__wikiquote); - Init_trie_itm(rv, int_hash, "wikinews" , Xow_domain_type_.Int__wikinews); - Init_trie_itm(rv, int_hash, "wikivoyage" , Xow_domain_type_.Int__wikivoyage); - Init_trie_itm(rv, int_hash, "wikimedia" , Xow_domain_type_.Int__wikimedia); - Init_trie_itm(rv, int_hash, "commonswiki" , Xow_domain_type_.Int__commons); - Init_trie_itm(rv, int_hash, "specieswiki" , Xow_domain_type_.Int__species); - Init_trie_itm(rv, int_hash, "metawiki" , Xow_domain_type_.Int__meta); - Init_trie_itm(rv, int_hash, "incubatorwiki" , Xow_domain_type_.Int__incubator); - Init_trie_itm(rv, int_hash, "wikidatawiki" , Xow_domain_type_.Int__wikidata); - Init_trie_itm(rv, int_hash, "mediawikiwiki" , Xow_domain_type_.Int__mediawiki); - Init_trie_itm(rv, int_hash, "foundationwiki" , Xow_domain_type_.Int__wmfblog); + Init_trie_itm(rv, int_hash, "wiki" , Xow_domain_tid_.Int__wikipedia); + Init_trie_itm(rv, int_hash, "wiktionary" , Xow_domain_tid_.Int__wiktionary); + Init_trie_itm(rv, int_hash, "wikisource" , Xow_domain_tid_.Int__wikisource); + Init_trie_itm(rv, int_hash, "wikibooks" , Xow_domain_tid_.Int__wikibooks); + Init_trie_itm(rv, int_hash, "wikiversity" , Xow_domain_tid_.Int__wikiversity); + Init_trie_itm(rv, int_hash, "wikiquote" , Xow_domain_tid_.Int__wikiquote); + Init_trie_itm(rv, int_hash, "wikinews" , Xow_domain_tid_.Int__wikinews); + Init_trie_itm(rv, int_hash, "wikivoyage" , Xow_domain_tid_.Int__wikivoyage); + Init_trie_itm(rv, int_hash, "wikimedia" , Xow_domain_tid_.Int__wikimedia); + Init_trie_itm(rv, int_hash, "commonswiki" , Xow_domain_tid_.Int__commons); + Init_trie_itm(rv, int_hash, "specieswiki" , Xow_domain_tid_.Int__species); + Init_trie_itm(rv, int_hash, "metawiki" , Xow_domain_tid_.Int__meta); + Init_trie_itm(rv, int_hash, "incubatorwiki" , Xow_domain_tid_.Int__incubator); + Init_trie_itm(rv, int_hash, "wikidatawiki" , Xow_domain_tid_.Int__wikidata); + Init_trie_itm(rv, int_hash, "mediawikiwiki" , Xow_domain_tid_.Int__mediawiki); + Init_trie_itm(rv, int_hash, "foundationwiki" , Xow_domain_tid_.Int__wmfblog); return rv; } private static void Init_trie_itm(Btrie_bwd_mgr trie, Hash_adp hash, String str, int tid) { @@ -159,18 +159,18 @@ class Xow_abrv_wm_override { private static Hash_adp_bry itm_hash__make() { Hash_adp_bry rv = Hash_adp_bry.cs(); lang_hash = Hash_adp_bry.cs(); - itm_hash__add(rv, lang_hash, "ar.wikimedia.org", "arwikimedia", "ar", Xol_lang_itm_.Id_es, Xow_domain_type_.Int__wikimedia); // NOTE: ar means Argentina not Arabic - itm_hash__add(rv, lang_hash, "br.wikimedia.org", "brwikimedia", "br", Xol_lang_itm_.Id_es, Xow_domain_type_.Int__wikimedia); // NOTE: br means Brazil not Breto - itm_hash__add(rv, lang_hash, "co.wikimedia.org", "cowikimedia", "co", Xol_lang_itm_.Id_es, Xow_domain_type_.Int__wikimedia); // NOTE: co means Columbia not Corsican - itm_hash__add(rv, lang_hash, "ua.wikimedia.org", "ukwikimedia", "ua", Xol_lang_itm_.Id_uk, Xow_domain_type_.Int__wikimedia); // NOTE: ua means Ukrainian; NOTE: uk does not means United Kingdom (which redirects to https://wikimedia.org.uk) - itm_hash__add(rv, lang_hash, "ca.wikimedia.org", "cawikimedia", "ca", Xol_lang_itm_.Id_en, Xow_domain_type_.Int__wikimedia); // NOTE: ca means Canada not Catalan - itm_hash__add(rv, lang_hash, "be.wikimedia.org", "bewikimedia", "be", Xol_lang_itm_.Id_en, Xow_domain_type_.Int__wikimedia); // NOTE: be means Belgium not Belarusian - itm_hash__add(rv, lang_hash, "se.wikimedia.org", "sewikimedia", "se", Xol_lang_itm_.Id_sv, Xow_domain_type_.Int__wikimedia); // NOTE: se means Swedish not Northern Sami + itm_hash__add(rv, lang_hash, "ar.wikimedia.org", "arwikimedia", "ar", Xol_lang_stub_.Id_es, Xow_domain_tid_.Int__wikimedia); // NOTE: ar means Argentina not Arabic + itm_hash__add(rv, lang_hash, "br.wikimedia.org", "brwikimedia", "br", Xol_lang_stub_.Id_es, Xow_domain_tid_.Int__wikimedia); // NOTE: br means Brazil not Breto + itm_hash__add(rv, lang_hash, "co.wikimedia.org", "cowikimedia", "co", Xol_lang_stub_.Id_es, Xow_domain_tid_.Int__wikimedia); // NOTE: co means Columbia not Corsican + itm_hash__add(rv, lang_hash, "ua.wikimedia.org", "ukwikimedia", "ua", Xol_lang_stub_.Id_uk, Xow_domain_tid_.Int__wikimedia); // NOTE: ua means Ukrainian; NOTE: uk does not means United Kingdom (which redirects to https://wikimedia.org.uk) + itm_hash__add(rv, lang_hash, "ca.wikimedia.org", "cawikimedia", "ca", Xol_lang_stub_.Id_en, Xow_domain_tid_.Int__wikimedia); // NOTE: ca means Canada not Catalan + itm_hash__add(rv, lang_hash, "be.wikimedia.org", "bewikimedia", "be", Xol_lang_stub_.Id_en, Xow_domain_tid_.Int__wikimedia); // NOTE: be means Belgium not Belarusian + itm_hash__add(rv, lang_hash, "se.wikimedia.org", "sewikimedia", "se", Xol_lang_stub_.Id_sv, Xow_domain_tid_.Int__wikimedia); // NOTE: se means Swedish not Northern Sami return rv; } private static void itm_hash__add(Hash_adp_bry hash, Hash_adp_bry lang_hash, String domain, String raw, String lang_domain, int lang_actl, int domain_type) { byte[] abrv_bry = Bry_.new_u8(raw); - Xol_lang_itm lang_actl_itm = Xol_lang_itm_.Get_by_id(lang_actl); + Xol_lang_stub lang_actl_itm = Xol_lang_stub_.Get_by_id(lang_actl); Xow_abrv_wm itm = new Xow_abrv_wm(abrv_bry, Bry_.new_a7(lang_domain), lang_actl_itm, domain_type); hash.Add_bry_obj(abrv_bry, itm); lang_hash.Add_str_obj(domain, lang_actl_itm.Key()); diff --git a/400_xowa/src/gplx/xowa/wikis/domains/Xow_abrv_wm_tst.java b/400_xowa/src/gplx/xowa/wikis/domains/Xow_abrv_wm_tst.java index 2d7853d5d..78e97c228 100644 --- a/400_xowa/src/gplx/xowa/wikis/domains/Xow_abrv_wm_tst.java +++ b/400_xowa/src/gplx/xowa/wikis/domains/Xow_abrv_wm_tst.java @@ -20,28 +20,28 @@ import org.junit.*; import gplx.xowa.langs.*; public class Xow_abrv_wm_tst { private Xow_abrv_wm_fxt fxt = new Xow_abrv_wm_fxt(); @Test public void Parse() { - fxt.Test_parse("foundationwiki" , Xol_lang_itm_.Id__intl , Xow_domain_type_.Int__wmfblog); - fxt.Test_parse("wikidatawiki" , Xol_lang_itm_.Id__intl , Xow_domain_type_.Int__wikidata); - fxt.Test_parse("mediawikiwiki" , Xol_lang_itm_.Id__intl , Xow_domain_type_.Int__mediawiki); - fxt.Test_parse("commonswiki" , Xol_lang_itm_.Id__intl , Xow_domain_type_.Int__commons); - fxt.Test_parse("specieswiki" , Xol_lang_itm_.Id__intl , Xow_domain_type_.Int__species); - fxt.Test_parse("metawiki" , Xol_lang_itm_.Id__intl , Xow_domain_type_.Int__meta); - fxt.Test_parse("incubatorwiki" , Xol_lang_itm_.Id__intl , Xow_domain_type_.Int__incubator); - fxt.Test_parse("enwiki" , Xol_lang_itm_.Id_en , Xow_domain_type_.Int__wikipedia); - fxt.Test_parse("enwiktionary" , Xol_lang_itm_.Id_en , Xow_domain_type_.Int__wiktionary); - fxt.Test_parse("enwikisource" , Xol_lang_itm_.Id_en , Xow_domain_type_.Int__wikisource); - fxt.Test_parse("enwikibooks" , Xol_lang_itm_.Id_en , Xow_domain_type_.Int__wikibooks); - fxt.Test_parse("enwikiversity" , Xol_lang_itm_.Id_en , Xow_domain_type_.Int__wikiversity); - fxt.Test_parse("enwikiquote" , Xol_lang_itm_.Id_en , Xow_domain_type_.Int__wikiquote); - fxt.Test_parse("enwikinews" , Xol_lang_itm_.Id_en , Xow_domain_type_.Int__wikinews); - fxt.Test_parse("enwikivoyage" , Xol_lang_itm_.Id_en , Xow_domain_type_.Int__wikivoyage); - fxt.Test_parse("frwiki" , Xol_lang_itm_.Id_fr , Xow_domain_type_.Int__wikipedia); + fxt.Test_parse("foundationwiki" , Xol_lang_stub_.Id__intl , Xow_domain_tid_.Int__wmfblog); + fxt.Test_parse("wikidatawiki" , Xol_lang_stub_.Id__intl , Xow_domain_tid_.Int__wikidata); + fxt.Test_parse("mediawikiwiki" , Xol_lang_stub_.Id__intl , Xow_domain_tid_.Int__mediawiki); + fxt.Test_parse("commonswiki" , Xol_lang_stub_.Id__intl , Xow_domain_tid_.Int__commons); + fxt.Test_parse("specieswiki" , Xol_lang_stub_.Id__intl , Xow_domain_tid_.Int__species); + fxt.Test_parse("metawiki" , Xol_lang_stub_.Id__intl , Xow_domain_tid_.Int__meta); + fxt.Test_parse("incubatorwiki" , Xol_lang_stub_.Id__intl , Xow_domain_tid_.Int__incubator); + fxt.Test_parse("enwiki" , Xol_lang_stub_.Id_en , Xow_domain_tid_.Int__wikipedia); + fxt.Test_parse("enwiktionary" , Xol_lang_stub_.Id_en , Xow_domain_tid_.Int__wiktionary); + fxt.Test_parse("enwikisource" , Xol_lang_stub_.Id_en , Xow_domain_tid_.Int__wikisource); + fxt.Test_parse("enwikibooks" , Xol_lang_stub_.Id_en , Xow_domain_tid_.Int__wikibooks); + fxt.Test_parse("enwikiversity" , Xol_lang_stub_.Id_en , Xow_domain_tid_.Int__wikiversity); + fxt.Test_parse("enwikiquote" , Xol_lang_stub_.Id_en , Xow_domain_tid_.Int__wikiquote); + fxt.Test_parse("enwikinews" , Xol_lang_stub_.Id_en , Xow_domain_tid_.Int__wikinews); + fxt.Test_parse("enwikivoyage" , Xol_lang_stub_.Id_en , Xow_domain_tid_.Int__wikivoyage); + fxt.Test_parse("frwiki" , Xol_lang_stub_.Id_fr , Xow_domain_tid_.Int__wikipedia); fxt.Test_parse_null("unknown"); - fxt.Test_parse("plwikimedia" , Xol_lang_itm_.Id_pl , Xow_domain_type_.Int__wikimedia); + fxt.Test_parse("plwikimedia" , Xol_lang_stub_.Id_pl , Xow_domain_tid_.Int__wikimedia); } @Test public void Parse_override() { - fxt.Test_parse("arwikimedia" , Xol_lang_itm_.Id_es , Xow_domain_type_.Int__wikimedia); - fxt.Test_parse("ukwikimedia" , Xol_lang_itm_.Id_uk , Xow_domain_type_.Int__wikimedia); + fxt.Test_parse("arwikimedia" , Xol_lang_stub_.Id_es , Xow_domain_tid_.Int__wikimedia); + fxt.Test_parse("ukwikimedia" , Xol_lang_stub_.Id_uk , Xow_domain_tid_.Int__wikimedia); } @Test public void To_domain_itm() { fxt.Test_to_domain_itm("enwiki" , "en" , "en.wikipedia.org"); @@ -59,15 +59,15 @@ public class Xow_abrv_wm_tst { fxt.Test_to_abrv("commons.wikimedia.org" , "commonswiki"); } @Test public void To_abrv_by_lang() { - fxt.Test_to_abrv_by_lang("en", Xow_domain_type_.Int__wikipedia, "enwiki"); + fxt.Test_to_abrv_by_lang("en", Xow_domain_tid_.Int__wikipedia, "enwiki"); } } class Xow_abrv_wm_fxt { public void Test_parse(String raw, int expd_lang_id, int expd_domain_tid) { byte[] raw_bry = Bry_.new_a7(raw); Xow_abrv_wm abrv = Xow_abrv_wm_.Parse_to_abrv_or_null(raw_bry); - Xol_lang_itm actl_lang_itm = abrv.Lang_actl(); - Tfds.Eq(expd_lang_id , actl_lang_itm == null ? Xol_lang_itm_.Id__unknown : actl_lang_itm.Id()); + Xol_lang_stub actl_lang_itm = abrv.Lang_actl(); + Tfds.Eq(expd_lang_id , actl_lang_itm == null ? Xol_lang_stub_.Id__unknown : actl_lang_itm.Id()); Tfds.Eq(expd_domain_tid , abrv.Domain_type()); } public void Test_parse_null(String raw) { @@ -83,7 +83,7 @@ class Xow_abrv_wm_fxt { public void Test_to_abrv_by_lang(String lang_key, int wiki_tid, String expd) { Bry_bfr tmp_bfr = Bry_bfr.reset_(255); Xow_abrv_wm_.To_abrv(tmp_bfr, Bry_.new_a7(lang_key), gplx.core.primitives.Int_obj_ref.new_(wiki_tid)); - Tfds.Eq_str(expd, tmp_bfr.Xto_str_and_clear(), "to_abrv"); + Tfds.Eq_str(expd, tmp_bfr.To_str_and_clear(), "to_abrv"); } public void Test_to_domain_bry(String wmf_key, String expd_domain) { Tfds.Eq(expd_domain , String_.new_a7(Xow_abrv_wm_.Parse_to_domain_bry(Bry_.new_a7(wmf_key)))); diff --git a/400_xowa/src/gplx/xowa/wikis/domains/Xow_abrv_xo_.java b/400_xowa/src/gplx/xowa/wikis/domains/Xow_abrv_xo_.java index 1d8aba412..cfd772043 100644 --- a/400_xowa/src/gplx/xowa/wikis/domains/Xow_abrv_xo_.java +++ b/400_xowa/src/gplx/xowa/wikis/domains/Xow_abrv_xo_.java @@ -22,7 +22,7 @@ public class Xow_abrv_xo_ { Xow_domain_itm domain_itm = Xow_domain_itm_.parse(domain_bry); return Xow_abrv_xo_.To_bry(domain_itm.Domain_bry(), domain_itm.Lang_orig_key(), domain_itm.Domain_type()); } - public static byte[] To_bry(byte[] domain_bry, byte[] lang_key, Xow_domain_type type) { // en.wikipedia.org -> en.w + public static byte[] To_bry(byte[] domain_bry, byte[] lang_key, Xow_domain_tid type) { // en.wikipedia.org -> en.w byte[] type_abrv = type.Abrv(); if (type.Multi_lang()) // wikipedia,wiktionary,etc.. return Bry_.Add(lang_key, Byte_ascii.Dot_bry, type_abrv); @@ -34,18 +34,18 @@ public class Xow_abrv_xo_ { public static Xow_domain_itm To_itm(byte[] src) { int src_len = src.length; byte[] domain_bry = src; // default to src; handles unknown abrv like "a.wikia.com";"xowa";others - Xow_domain_type type = null; + Xow_domain_tid type = null; int dot_pos = Bry_find_.Find_fwd(src, Byte_ascii.Dot); if (dot_pos != Bry_find_.Not_found) { // dot found; EX: "en.w" - type = Xow_domain_type_.Get_abrv_as_itm(src, dot_pos + 1, src_len); + type = Xow_domain_tid_.Get_abrv_as_itm(src, dot_pos + 1, src_len); if (type != null) { // type found; EX: ".w" - Xol_lang_itm lang = Xol_lang_itm_.Get_by_key(src, 0, dot_pos); + Xol_lang_stub lang = Xol_lang_stub_.Get_by_key_or_null(src, 0, dot_pos); if (lang != null) // lang found; EX: "en." domain_bry = Bry_.Add(lang.Key(), type.Domain_bry()); } } else { // dot missing; EX: "c" - type = Xow_domain_type_.Get_abrv_as_itm(src, 0, src_len); + type = Xow_domain_tid_.Get_abrv_as_itm(src, 0, src_len); if (type != null) { // type found; EX: "c" domain_bry = type.Domain_bry(); } diff --git a/400_xowa/src/gplx/xowa/wikis/domains/Xow_domain_itm.java b/400_xowa/src/gplx/xowa/wikis/domains/Xow_domain_itm.java index 776d1b948..8b976f70b 100644 --- a/400_xowa/src/gplx/xowa/wikis/domains/Xow_domain_itm.java +++ b/400_xowa/src/gplx/xowa/wikis/domains/Xow_domain_itm.java @@ -18,7 +18,7 @@ along with this program. If not, see . package gplx.xowa.wikis.domains; import gplx.*; import gplx.xowa.*; import gplx.xowa.wikis.*; import gplx.xowa.langs.*; public class Xow_domain_itm { - Xow_domain_itm(byte[] domain_bry, Xow_domain_type domain_type, Xol_lang_itm lang_actl_itm, byte[] lang_orig_key) { + Xow_domain_itm(byte[] domain_bry, Xow_domain_tid domain_type, Xol_lang_stub lang_actl_itm, byte[] lang_orig_key) { this.domain_bry = domain_bry; this.domain_type = domain_type; this.lang_actl_itm = lang_actl_itm; this.lang_orig_key = lang_orig_key; this.domain_str = String_.new_u8(domain_bry); this.abrv_wm = Xow_abrv_wm_.To_abrv(this); @@ -26,23 +26,23 @@ public class Xow_domain_itm { } public byte[] Domain_bry() {return domain_bry;} private final byte[] domain_bry; public String Domain_str() {return domain_str;} private final String domain_str; - public Xow_domain_type Domain_type() {return domain_type;} private final Xow_domain_type domain_type; + public Xow_domain_tid Domain_type() {return domain_type;} private final Xow_domain_tid domain_type; public int Domain_type_id() {return domain_type.Tid();} public byte[] Abrv_wm() {return abrv_wm;} private final byte[] abrv_wm; // EX: enwiki public byte[] Abrv_xo() {return abrv_xo;} private final byte[] abrv_xo; // EX: en.w - public Xol_lang_itm Lang_actl_itm() {return lang_actl_itm;} private final Xol_lang_itm lang_actl_itm; // EX: zh + public Xol_lang_stub Lang_actl_itm() {return lang_actl_itm;} private final Xol_lang_stub lang_actl_itm; // EX: zh public int Lang_actl_uid() {return lang_actl_itm.Id();} public byte[] Lang_actl_key() {return lang_actl_itm.Key();} public byte[] Lang_orig_key() {return lang_orig_key;} private final byte[] lang_orig_key; // EX: lzh public int Sort_idx() {return sort_idx;} public void Sort_idx_(int v) {sort_idx = v;} private int sort_idx = -1; // used for Search public static Xow_domain_itm new_(byte[] domain_bry, int domain_tid, byte[] lang_key) { - Xol_lang_itm lang_actl_itm = Xol_lang_itm_.Get_by_key_or_intl(lang_key); - return new Xow_domain_itm(domain_bry, Xow_domain_type_.Get_type_as_itm(domain_tid), lang_actl_itm, lang_actl_itm.Key()); + Xol_lang_stub lang_actl_itm = Xol_lang_stub_.Get_by_key_or_intl(lang_key); + return new Xow_domain_itm(domain_bry, Xow_domain_tid_.Get_type_as_itm(domain_tid), lang_actl_itm, lang_actl_itm.Key()); } - public static Xow_domain_itm new_(byte[] domain_bry, int domain_tid, Xol_lang_itm lang_actl, byte[] lang_orig) { - return new Xow_domain_itm(domain_bry, Xow_domain_type_.Get_type_as_itm(domain_tid), lang_actl, lang_orig); + public static Xow_domain_itm new_(byte[] domain_bry, int domain_tid, Xol_lang_stub lang_actl, byte[] lang_orig) { + return new Xow_domain_itm(domain_bry, Xow_domain_tid_.Get_type_as_itm(domain_tid), lang_actl, lang_orig); } public static Xow_domain_itm new_(byte[] domain_bry, int domain_tid, byte[] lang_actl_key, byte[] lang_orig_key) { - return new Xow_domain_itm(domain_bry, Xow_domain_type_.Get_type_as_itm(domain_tid), Xol_lang_itm_.Get_by_key_or_intl(lang_actl_key), lang_orig_key); + return new Xow_domain_itm(domain_bry, Xow_domain_tid_.Get_type_as_itm(domain_tid), Xol_lang_stub_.Get_by_key_or_intl(lang_actl_key), lang_orig_key); } } diff --git a/400_xowa/src/gplx/xowa/wikis/domains/Xow_domain_itm_.java b/400_xowa/src/gplx/xowa/wikis/domains/Xow_domain_itm_.java index 44d3fe57f..eb3be29ac 100644 --- a/400_xowa/src/gplx/xowa/wikis/domains/Xow_domain_itm_.java +++ b/400_xowa/src/gplx/xowa/wikis/domains/Xow_domain_itm_.java @@ -29,50 +29,50 @@ public class Xow_domain_itm_ { int raw_len = raw.length; int dot_0 = Bry_find_.Find_fwd(raw, Byte_ascii.Dot, 0, raw_len); if (dot_0 == Bry_.NotFound) { // 0 dots; check for "home" - return Bry_.Eq(raw, Xow_domain_type_.Bry__home) + return Bry_.Eq(raw, Xow_domain_tid_.Bry__home) ? Xow_domain_uid_.To_domain(Xow_domain_uid_.Tid_xowa) : new_other(raw); } int dot_1 = Bry_find_.Find_fwd(raw, Byte_ascii.Dot, dot_0 + 1, raw_len); if (dot_1 == Bry_.NotFound) { // 1 dot; check for "wikimediafoundation.org" - return Bry_.Match(raw, 0, dot_0, Xow_domain_type_.Bry__wmforg) - ? Xow_domain_itm.new_(raw, Xow_domain_type_.Int__wmfblog, Xol_lang_itm_.Key__unknown) + return Bry_.Match(raw, 0, dot_0, Xow_domain_tid_.Bry__wmforg) + ? Xow_domain_itm.new_(raw, Xow_domain_tid_.Int__wmfblog, Xol_lang_stub_.Key__unknown) : new_other(raw); } // 2 dots - int seg_1_tid = Xow_domain_type_.Get_type_as_tid(raw, dot_0 + 1, dot_1); // parse middle; EX: ".wikipedia." - if (seg_1_tid == Xow_domain_type_.Int__null) return new_other(raw); // seg_1 is unknown; return other; + int seg_1_tid = Xow_domain_tid_.Get_type_as_tid(raw, dot_0 + 1, dot_1); // parse middle; EX: ".wikipedia." + if (seg_1_tid == Xow_domain_tid_.Int__null) return new_other(raw); // seg_1 is unknown; return other; switch (seg_1_tid) { - case Xow_domain_type_.Int__wikipedia: case Xow_domain_type_.Int__wiktionary: case Xow_domain_type_.Int__wikisource: case Xow_domain_type_.Int__wikibooks: - case Xow_domain_type_.Int__wikiversity: case Xow_domain_type_.Int__wikiquote: case Xow_domain_type_.Int__wikinews: case Xow_domain_type_.Int__wikivoyage: // ~{lang}.~{type}.org + case Xow_domain_tid_.Int__wikipedia: case Xow_domain_tid_.Int__wiktionary: case Xow_domain_tid_.Int__wikisource: case Xow_domain_tid_.Int__wikibooks: + case Xow_domain_tid_.Int__wikiversity: case Xow_domain_tid_.Int__wikiquote: case Xow_domain_tid_.Int__wikinews: case Xow_domain_tid_.Int__wikivoyage: // ~{lang}.~{type}.org byte[] lang_orig = Bry_.Mid(raw, 0, dot_0); byte[] lang_actl = Get_lang_code_for_mw_messages_file(lang_orig); return Xow_domain_itm.new_(raw, seg_1_tid, lang_actl, lang_orig); // NOTE: seg_tids must match wiki_tids - case Xow_domain_type_.Int__wikidata: case Xow_domain_type_.Int__mediawiki:// ~www.~{type}.org - return Xow_domain_itm.new_(raw, seg_1_tid, Xol_lang_itm_.Key__unknown); - case Xow_domain_type_.Int__wikimedia: // ~{type}.wikimedia.org; - int seg_0_tid = Xow_domain_type_.Get_type_as_tid(raw, 0, dot_0); // try to get "incubator", "meta", etc.. - if (seg_0_tid == Xow_domain_type_.Int__null) { // not a known name; try language + case Xow_domain_tid_.Int__wikidata: case Xow_domain_tid_.Int__mediawiki:// ~www.~{type}.org + return Xow_domain_itm.new_(raw, seg_1_tid, Xol_lang_stub_.Key__unknown); + case Xow_domain_tid_.Int__wikimedia: // ~{type}.wikimedia.org; + int seg_0_tid = Xow_domain_tid_.Get_type_as_tid(raw, 0, dot_0); // try to get "incubator", "meta", etc.. + if (seg_0_tid == Xow_domain_tid_.Int__null) { // not a known name; try language byte[] lang_override = Xow_abrv_wm_override.To_lang_key_or_null(raw); // handle "lang-like" wikimedia domains like "ar.wikimedia.org" which is actually to "Argentina Wikimedia" if (lang_override == null) { - Xol_lang_itm wikimedia_lang = Xol_lang_itm_.Get_by_key_or_null(raw, 0, dot_0); - return wikimedia_lang == null ? new_other(raw) : Xow_domain_itm.new_(raw, Xow_domain_type_.Int__wikimedia, wikimedia_lang.Key()); + Xol_lang_stub wikimedia_lang = Xol_lang_stub_.Get_by_key_or_null(raw, 0, dot_0); + return wikimedia_lang == null ? new_other(raw) : Xow_domain_itm.new_(raw, Xow_domain_tid_.Int__wikimedia, wikimedia_lang.Key()); } else - return Xow_domain_itm.new_(raw, Xow_domain_type_.Int__wikimedia, lang_override, Bry_.Mid(raw, 0, dot_0)); + return Xow_domain_itm.new_(raw, Xow_domain_tid_.Int__wikimedia, lang_override, Bry_.Mid(raw, 0, dot_0)); } switch (seg_0_tid) { - case Xow_domain_type_.Int__commons: case Xow_domain_type_.Int__species: case Xow_domain_type_.Int__meta: case Xow_domain_type_.Int__incubator: - return Xow_domain_itm.new_(raw, seg_0_tid, Xol_lang_itm_.Key__unknown); // NOTE: seg_tids must match wiki_tids; NOTE: lang_key is "en" (really, "multi" but making things easier) + case Xow_domain_tid_.Int__commons: case Xow_domain_tid_.Int__species: case Xow_domain_tid_.Int__meta: case Xow_domain_tid_.Int__incubator: + return Xow_domain_itm.new_(raw, seg_0_tid, Xol_lang_stub_.Key__unknown); // NOTE: seg_tids must match wiki_tids; NOTE: lang_key is "en" (really, "multi" but making things easier) default: return new_other(raw); } - case Xow_domain_type_.Int__other: + case Xow_domain_tid_.Int__other: default: return new_other(raw); } } - private static Xow_domain_itm new_other(byte[] raw) {return Xow_domain_itm.new_(raw, Xow_domain_type_.Int__other, Xol_lang_itm_.Key__unknown);} + private static Xow_domain_itm new_other(byte[] raw) {return Xow_domain_itm.new_(raw, Xow_domain_tid_.Int__other, Xol_lang_stub_.Key__unknown);} private static byte[] Get_lang_code_for_mw_messages_file(byte[] v) { Object o = lang_to_gfs_hash.Get_by_bry(v); return o == null ? v : (byte[])o; @@ -103,6 +103,7 @@ public class Xow_domain_itm_ { , Bry__incubator = Bry_.new_a7(Str__incubator) , Bry__wmforg = Bry_.new_a7(Str__wmforg) , Bry__home = Bry_.new_a7(Str__home) + , Bry__simplewiki = Bry_.new_a7("simple.wikipedia.org") ; public static final byte[] Seg__org = Bry_.new_a7("org"), Seg__www = Bry_.new_a7("www"); } diff --git a/400_xowa/src/gplx/xowa/wikis/domains/Xow_domain_itm_tst.java b/400_xowa/src/gplx/xowa/wikis/domains/Xow_domain_itm_tst.java index f7e191e35..22c1b64f7 100644 --- a/400_xowa/src/gplx/xowa/wikis/domains/Xow_domain_itm_tst.java +++ b/400_xowa/src/gplx/xowa/wikis/domains/Xow_domain_itm_tst.java @@ -19,17 +19,17 @@ package gplx.xowa.wikis.domains; import gplx.*; import gplx.xowa.*; import gplx. import org.junit.*; public class Xow_domain_itm_tst { private final Xow_domain_fxt fxt = new Xow_domain_fxt(); - @Test public void Parse_en_wikipedia() {fxt.Test_parse("en.wikipedia.org" , "en" , "en" , Xow_domain_type_.Int__wikipedia);} - @Test public void Parse_fr_wikipedia() {fxt.Test_parse("fr.wikipedia.org" , "fr" , "fr" , Xow_domain_type_.Int__wikipedia);} - @Test public void Parse_en_wiktionary() {fxt.Test_parse("en.wiktionary.org" , "en" , "en" , Xow_domain_type_.Int__wiktionary);} - @Test public void Parse_zh_classical_wikipedia() {fxt.Test_parse("zh-classical.wikipedia.org" , "zh-classical" , "lzh" , Xow_domain_type_.Int__wikipedia);} - @Test public void Parse_commons() {fxt.Test_parse("commons.wikimedia.org" , "" , "" , Xow_domain_type_.Int__commons);} - @Test public void Parse_species() {fxt.Test_parse("species.wikimedia.org" , "" , "" , Xow_domain_type_.Int__species);} - @Test public void Parse_ru_wikimedia_org() {fxt.Test_parse("ru.wikimedia.org" , "ru" , "ru" , Xow_domain_type_.Int__wikimedia);} - @Test public void Parse_home() {fxt.Test_parse("home" , "" , "" , Xow_domain_type_.Int__home);} - @Test public void Parse_other() {fxt.Test_parse("other.wiki" , "" , "" , Xow_domain_type_.Int__other);} - @Test public void Parse_ua_wikimedia_org() {fxt.Test_parse("ua.wikimedia.org" , "ua" , "uk" , Xow_domain_type_.Int__wikimedia);} - @Test public void Parse_ar_wikimedia_org() {fxt.Test_parse("ar.wikimedia.org" , "ar" , "es" , Xow_domain_type_.Int__wikimedia);} + @Test public void Parse_en_wikipedia() {fxt.Test_parse("en.wikipedia.org" , "en" , "en" , Xow_domain_tid_.Int__wikipedia);} + @Test public void Parse_fr_wikipedia() {fxt.Test_parse("fr.wikipedia.org" , "fr" , "fr" , Xow_domain_tid_.Int__wikipedia);} + @Test public void Parse_en_wiktionary() {fxt.Test_parse("en.wiktionary.org" , "en" , "en" , Xow_domain_tid_.Int__wiktionary);} + @Test public void Parse_zh_classical_wikipedia() {fxt.Test_parse("zh-classical.wikipedia.org" , "zh-classical" , "lzh" , Xow_domain_tid_.Int__wikipedia);} + @Test public void Parse_commons() {fxt.Test_parse("commons.wikimedia.org" , "" , "" , Xow_domain_tid_.Int__commons);} + @Test public void Parse_species() {fxt.Test_parse("species.wikimedia.org" , "" , "" , Xow_domain_tid_.Int__species);} + @Test public void Parse_ru_wikimedia_org() {fxt.Test_parse("ru.wikimedia.org" , "ru" , "ru" , Xow_domain_tid_.Int__wikimedia);} + @Test public void Parse_home() {fxt.Test_parse("home" , "" , "" , Xow_domain_tid_.Int__home);} + @Test public void Parse_other() {fxt.Test_parse("other.wiki" , "" , "" , Xow_domain_tid_.Int__other);} + @Test public void Parse_ua_wikimedia_org() {fxt.Test_parse("ua.wikimedia.org" , "ua" , "uk" , Xow_domain_tid_.Int__wikimedia);} + @Test public void Parse_ar_wikimedia_org() {fxt.Test_parse("ar.wikimedia.org" , "ar" , "es" , Xow_domain_tid_.Int__wikimedia);} } class Xow_domain_fxt { public void Test_parse(String domain, String expd_orig_lang, String expd_actl_lang, int expd_tid) { diff --git a/400_xowa/src/gplx/xowa/wikis/domains/Xow_domain_type.java b/400_xowa/src/gplx/xowa/wikis/domains/Xow_domain_tid.java similarity index 88% rename from 400_xowa/src/gplx/xowa/wikis/domains/Xow_domain_type.java rename to 400_xowa/src/gplx/xowa/wikis/domains/Xow_domain_tid.java index c0ba6e473..e9ec9881b 100644 --- a/400_xowa/src/gplx/xowa/wikis/domains/Xow_domain_type.java +++ b/400_xowa/src/gplx/xowa/wikis/domains/Xow_domain_tid.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.wikis.domains; import gplx.*; import gplx.xowa.*; import gplx.xowa.wikis.*; -public class Xow_domain_type { - public Xow_domain_type(boolean multi_lang, int src, int tid, byte[] key_bry, byte[] abrv, byte[] domain_bry) { +public class Xow_domain_tid { + public Xow_domain_tid(boolean multi_lang, int src, int tid, byte[] key_bry, byte[] abrv, byte[] domain_bry) { this.multi_lang = multi_lang; this.src = src; this.tid = tid; this.key_bry = key_bry; this.abrv = abrv; this.domain_bry = domain_bry; this.key_str = String_.new_u8(key_bry); } @@ -28,6 +28,7 @@ public class Xow_domain_type { public byte[] Key_bry() {return key_bry;} private final byte[] key_bry; // EX: wikipedia public byte[] Abrv() {return abrv;} private final byte[] abrv; // EX: w public byte[] Domain_bry() {return domain_bry;} private byte[] domain_bry; // EX: .wikipedia.org + public byte[] Display_bry() {return Bry_.Ucase__1st(key_bry);} // EX: Wikipedia } class Xow_domain_type_src_ { public static final int diff --git a/400_xowa/src/gplx/xowa/wikis/domains/Xow_domain_type_.java b/400_xowa/src/gplx/xowa/wikis/domains/Xow_domain_tid_.java similarity index 88% rename from 400_xowa/src/gplx/xowa/wikis/domains/Xow_domain_type_.java rename to 400_xowa/src/gplx/xowa/wikis/domains/Xow_domain_tid_.java index 721623b57..4134b6483 100644 --- a/400_xowa/src/gplx/xowa/wikis/domains/Xow_domain_type_.java +++ b/400_xowa/src/gplx/xowa/wikis/domains/Xow_domain_tid_.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.wikis.domains; import gplx.*; import gplx.xowa.*; import gplx.xowa.wikis.*; -public class Xow_domain_type_ { +public class Xow_domain_tid_ { public static final int Int__null = 0 , Int__wikipedia = 1 @@ -79,10 +79,10 @@ public class Xow_domain_type_ { , Bry__home = Bry_.new_a7(Str__home) , Bry__other = Bry_.new_a7(Str__other) ; - private static final Xow_domain_type[] ary = new Xow_domain_type[Int___len]; + private static final Xow_domain_tid[] ary = new Xow_domain_tid[Int___len]; private static final Hash_adp_bry type_regy = Hash_adp_bry.ci_a7(); // LOC:must go before new_() private static final Hash_adp_bry abrv_regy = Hash_adp_bry.cs(); // LOC:must go before new_() - public static final Xow_domain_type + public static final Xow_domain_tid Itm__wikipedia = new_(Bool_.Y , Xow_domain_type_src_.Int__wmf , Int__wikipedia , Bry__wikipedia , "w" , ".wikipedia.org") , Itm__wiktionary = new_(Bool_.Y , Xow_domain_type_src_.Int__wmf , Int__wiktionary , Bry__wiktionary , "d" , ".wiktionary.org") , Itm__wikisource = new_(Bool_.Y , Xow_domain_type_src_.Int__wmf , Int__wikisource , Bry__wikisource , "s" , ".wikisource.org") @@ -102,20 +102,20 @@ public class Xow_domain_type_ { , Itm__home = new_(Bool_.N , Xow_domain_type_src_.Int__xowa, Int__home , Bry__home , "home" , Xow_domain_itm_.Str__home) , Itm__other = new_(Bool_.N , Xow_domain_type_src_.Int__mw , Int__other , Bry__other , "" , "") ; - private static Xow_domain_type new_(boolean multi_lang, int src, int tid, byte[] key_bry, String abrv_xo_str, String domain_bry) { + private static Xow_domain_tid new_(boolean multi_lang, int src, int tid, byte[] key_bry, String abrv_xo_str, String domain_bry) { byte[] abrv_xo_bry = Bry_.new_u8(abrv_xo_str); - Xow_domain_type rv = new Xow_domain_type(multi_lang, src, tid, key_bry, abrv_xo_bry, Bry_.new_u8(domain_bry)); + Xow_domain_tid rv = new Xow_domain_tid(multi_lang, src, tid, key_bry, abrv_xo_bry, Bry_.new_u8(domain_bry)); ary[tid] = rv; type_regy.Add(key_bry, rv); abrv_regy.Add(abrv_xo_bry, rv); return rv; } - public static Xow_domain_type Get_abrv_as_itm(byte[] src, int bgn, int end) {return (Xow_domain_type)abrv_regy.Get_by_mid(src, bgn, end);} - public static Xow_domain_type Get_type_as_itm(int tid) {return ary[tid];} + public static Xow_domain_tid Get_abrv_as_itm(byte[] src, int bgn, int end) {return (Xow_domain_tid)abrv_regy.Get_by_mid(src, bgn, end);} + public static Xow_domain_tid Get_type_as_itm(int tid) {return ary[tid];} public static byte[] Get_type_as_bry(int tid) {return ary[tid].Key_bry();} public static int Get_type_as_tid(byte[] src) {return Get_type_as_tid(src, 0, src.length);} public static int Get_type_as_tid(byte[] src, int bgn, int end) { Object o = type_regy.Get_by_mid(src, bgn, end); - return o == null ? Xow_domain_type_.Int__null : ((Xow_domain_type)o).Tid(); + return o == null ? Xow_domain_tid_.Int__null : ((Xow_domain_tid)o).Tid(); } } diff --git a/400_xowa/src/gplx/xowa/wikis/domains/Xow_domain_uid_.java b/400_xowa/src/gplx/xowa/wikis/domains/Xow_domain_uid_.java index 32fae38bf..2272e8e7a 100644 --- a/400_xowa/src/gplx/xowa/wikis/domains/Xow_domain_uid_.java +++ b/400_xowa/src/gplx/xowa/wikis/domains/Xow_domain_uid_.java @@ -44,23 +44,23 @@ public class Xow_domain_uid_ { public static int To_int(Xow_domain_itm domain) { int domain_tid = 0; switch (domain.Domain_type_id()) { - case Xow_domain_type_.Int__home: return Tid_xowa; - case Xow_domain_type_.Int__commons: return Tid_commons; - case Xow_domain_type_.Int__wikidata: return Tid_wikidata; - case Xow_domain_type_.Int__mediawiki: return Tid_mediawiki; - case Xow_domain_type_.Int__meta: return Tid_meta; - case Xow_domain_type_.Int__incubator: return Tid_incubator; - case Xow_domain_type_.Int__wmfblog: return Tid_wmfblog; - case Xow_domain_type_.Int__species: return Tid_species; - case Xow_domain_type_.Int__wikipedia: domain_tid = Tid_sub_wikipedia; break; - case Xow_domain_type_.Int__wiktionary: domain_tid = Tid_sub_wiktionary; break; - case Xow_domain_type_.Int__wikisource: domain_tid = Tid_sub_wikisource; break; - case Xow_domain_type_.Int__wikivoyage: domain_tid = Tid_sub_wikivoyage; break; - case Xow_domain_type_.Int__wikiquote: domain_tid = Tid_sub_wikiquote; break; - case Xow_domain_type_.Int__wikibooks: domain_tid = Tid_sub_wikibooks; break; - case Xow_domain_type_.Int__wikiversity: domain_tid = Tid_sub_wikiversity; break; - case Xow_domain_type_.Int__wikinews: domain_tid = Tid_sub_wikinews; break; - case Xow_domain_type_.Int__wikimedia: domain_tid = Tid_sub_wikimedia; break; + case Xow_domain_tid_.Int__home: return Tid_xowa; + case Xow_domain_tid_.Int__commons: return Tid_commons; + case Xow_domain_tid_.Int__wikidata: return Tid_wikidata; + case Xow_domain_tid_.Int__mediawiki: return Tid_mediawiki; + case Xow_domain_tid_.Int__meta: return Tid_meta; + case Xow_domain_tid_.Int__incubator: return Tid_incubator; + case Xow_domain_tid_.Int__wmfblog: return Tid_wmfblog; + case Xow_domain_tid_.Int__species: return Tid_species; + case Xow_domain_tid_.Int__wikipedia: domain_tid = Tid_sub_wikipedia; break; + case Xow_domain_tid_.Int__wiktionary: domain_tid = Tid_sub_wiktionary; break; + case Xow_domain_tid_.Int__wikisource: domain_tid = Tid_sub_wikisource; break; + case Xow_domain_tid_.Int__wikivoyage: domain_tid = Tid_sub_wikivoyage; break; + case Xow_domain_tid_.Int__wikiquote: domain_tid = Tid_sub_wikiquote; break; + case Xow_domain_tid_.Int__wikibooks: domain_tid = Tid_sub_wikibooks; break; + case Xow_domain_tid_.Int__wikiversity: domain_tid = Tid_sub_wikiversity; break; + case Xow_domain_tid_.Int__wikinews: domain_tid = Tid_sub_wikinews; break; + case Xow_domain_tid_.Int__wikimedia: domain_tid = Tid_sub_wikimedia; break; default: throw Err_.new_unhandled(domain.Domain_type_id()); } return Const_system_reserved // reserve first 100 slots @@ -70,35 +70,35 @@ public class Xow_domain_uid_ { } public static Xow_domain_itm To_domain(int tid) { switch (tid) { - case Tid_xowa: return Xow_domain_itm.new_(Xow_domain_itm_.Bry__home, Xow_domain_type_.Int__home, Xol_lang_itm_.Key__unknown); - case Tid_commons: return Xow_domain_itm.new_(Xow_domain_itm_.Bry__commons, Xow_domain_type_.Int__commons, Xol_lang_itm_.Key__unknown); - case Tid_wikidata: return Xow_domain_itm.new_(Xow_domain_itm_.Bry__wikidata, Xow_domain_type_.Int__commons, Xol_lang_itm_.Key__unknown); - case Tid_mediawiki: return Xow_domain_itm.new_(Xow_domain_itm_.Bry__mediawiki, Xow_domain_type_.Int__mediawiki, Xol_lang_itm_.Key__unknown); - case Tid_meta: return Xow_domain_itm.new_(Xow_domain_itm_.Bry__meta, Xow_domain_type_.Int__meta, Xol_lang_itm_.Key__unknown); - case Tid_incubator: return Xow_domain_itm.new_(Xow_domain_itm_.Bry__incubator, Xow_domain_type_.Int__incubator, Xol_lang_itm_.Key__unknown); - case Tid_wmfblog: return Xow_domain_itm.new_(Xow_domain_itm_.Bry__wmforg, Xow_domain_type_.Int__wmfblog, Xol_lang_itm_.Key__unknown); - case Tid_species: return Xow_domain_itm.new_(Xow_domain_itm_.Bry__species, Xow_domain_type_.Int__species, Xol_lang_itm_.Key__unknown); + case Tid_xowa: return Xow_domain_itm.new_(Xow_domain_itm_.Bry__home, Xow_domain_tid_.Int__home, Xol_lang_stub_.Key__unknown); + case Tid_commons: return Xow_domain_itm.new_(Xow_domain_itm_.Bry__commons, Xow_domain_tid_.Int__commons, Xol_lang_stub_.Key__unknown); + case Tid_wikidata: return Xow_domain_itm.new_(Xow_domain_itm_.Bry__wikidata, Xow_domain_tid_.Int__commons, Xol_lang_stub_.Key__unknown); + case Tid_mediawiki: return Xow_domain_itm.new_(Xow_domain_itm_.Bry__mediawiki, Xow_domain_tid_.Int__mediawiki, Xol_lang_stub_.Key__unknown); + case Tid_meta: return Xow_domain_itm.new_(Xow_domain_itm_.Bry__meta, Xow_domain_tid_.Int__meta, Xol_lang_stub_.Key__unknown); + case Tid_incubator: return Xow_domain_itm.new_(Xow_domain_itm_.Bry__incubator, Xow_domain_tid_.Int__incubator, Xol_lang_stub_.Key__unknown); + case Tid_wmfblog: return Xow_domain_itm.new_(Xow_domain_itm_.Bry__wmforg, Xow_domain_tid_.Int__wmfblog, Xol_lang_stub_.Key__unknown); + case Tid_species: return Xow_domain_itm.new_(Xow_domain_itm_.Bry__species, Xow_domain_tid_.Int__species, Xol_lang_stub_.Key__unknown); } int tmp = tid - Const_system_reserved; int lang_id = tmp / 20; int type_id = tmp % 20; int tid_int = 0; byte[] tid_bry = null; switch (type_id) { - case Tid_sub_wikipedia: tid_int = Xow_domain_type_.Int__wikipedia; tid_bry = Xow_domain_type_.Bry__wikipedia; break; - case Tid_sub_wiktionary: tid_int = Xow_domain_type_.Int__wiktionary; tid_bry = Xow_domain_type_.Bry__wiktionary; break; - case Tid_sub_wikisource: tid_int = Xow_domain_type_.Int__wikisource; tid_bry = Xow_domain_type_.Bry__wikisource; break; - case Tid_sub_wikivoyage: tid_int = Xow_domain_type_.Int__wikivoyage; tid_bry = Xow_domain_type_.Bry__wikivoyage; break; - case Tid_sub_wikiquote: tid_int = Xow_domain_type_.Int__wikiquote; tid_bry = Xow_domain_type_.Bry__wikiquote; break; - case Tid_sub_wikibooks: tid_int = Xow_domain_type_.Int__wikibooks; tid_bry = Xow_domain_type_.Bry__wikibooks; break; - case Tid_sub_wikiversity: tid_int = Xow_domain_type_.Int__wikiversity; tid_bry = Xow_domain_type_.Bry__wikiversity; break; - case Tid_sub_wikinews: tid_int = Xow_domain_type_.Int__wikinews; tid_bry = Xow_domain_type_.Bry__wikinews; break; - case Tid_sub_wikimedia: tid_int = Xow_domain_type_.Int__wikimedia; tid_bry = Xow_domain_type_.Bry__wikimedia; break; + case Tid_sub_wikipedia: tid_int = Xow_domain_tid_.Int__wikipedia; tid_bry = Xow_domain_tid_.Bry__wikipedia; break; + case Tid_sub_wiktionary: tid_int = Xow_domain_tid_.Int__wiktionary; tid_bry = Xow_domain_tid_.Bry__wiktionary; break; + case Tid_sub_wikisource: tid_int = Xow_domain_tid_.Int__wikisource; tid_bry = Xow_domain_tid_.Bry__wikisource; break; + case Tid_sub_wikivoyage: tid_int = Xow_domain_tid_.Int__wikivoyage; tid_bry = Xow_domain_tid_.Bry__wikivoyage; break; + case Tid_sub_wikiquote: tid_int = Xow_domain_tid_.Int__wikiquote; tid_bry = Xow_domain_tid_.Bry__wikiquote; break; + case Tid_sub_wikibooks: tid_int = Xow_domain_tid_.Int__wikibooks; tid_bry = Xow_domain_tid_.Bry__wikibooks; break; + case Tid_sub_wikiversity: tid_int = Xow_domain_tid_.Int__wikiversity; tid_bry = Xow_domain_tid_.Bry__wikiversity; break; + case Tid_sub_wikinews: tid_int = Xow_domain_tid_.Int__wikinews; tid_bry = Xow_domain_tid_.Bry__wikinews; break; + case Tid_sub_wikimedia: tid_int = Xow_domain_tid_.Int__wikimedia; tid_bry = Xow_domain_tid_.Bry__wikimedia; break; default: throw Err_.new_unhandled(type_id); } - Xol_lang_itm lang = Xol_lang_itm_.Get_by_id(lang_id); + Xol_lang_stub lang = Xol_lang_stub_.Get_by_id(lang_id); Bry_bfr bfr = Xoa_app_.Utl__bfr_mkr().Get_b128(); bfr.Add(lang.Key()).Add_byte_dot().Add(tid_bry).Add_byte_dot().Add(Xow_domain_itm_.Seg__org); - byte[] domain_bry = bfr.Xto_bry_and_clear(); + byte[] domain_bry = bfr.To_bry_and_clear(); bfr.Mkr_rls(); return Xow_domain_itm.new_(domain_bry, tid_int, lang, lang.Key()); } diff --git a/400_xowa/src/gplx/xowa/wikis/domains/Xow_domain_uid__tst.java b/400_xowa/src/gplx/xowa/wikis/domains/Xow_domain_uid__tst.java index 5864accc4..4b67ca80b 100644 --- a/400_xowa/src/gplx/xowa/wikis/domains/Xow_domain_uid__tst.java +++ b/400_xowa/src/gplx/xowa/wikis/domains/Xow_domain_uid__tst.java @@ -20,8 +20,8 @@ import org.junit.*; public class Xow_domain_uid__tst { @Before public void init() {fxt.Clear();} private final Xow_domain_uid__fxt fxt = new Xow_domain_uid__fxt(); @Test public void Basic() { - fxt.Test(Xow_domain_uid_.Tid_commons , "commons.wikimedia.org" , "", Xow_domain_type_.Int__commons); - fxt.Test(100 , "en.wikipedia.org" , "en", Xow_domain_type_.Int__wikipedia); + fxt.Test(Xow_domain_uid_.Tid_commons , "commons.wikimedia.org" , "", Xow_domain_tid_.Int__commons); + fxt.Test(100 , "en.wikipedia.org" , "en", Xow_domain_tid_.Int__wikipedia); } } class Xow_domain_uid__fxt { diff --git a/400_xowa/src/gplx/xowa/wikis/domains/crts/Xow_domain_crt_itm_.java b/400_xowa/src/gplx/xowa/wikis/domains/crts/Xow_domain_crt_itm_.java index 4b396507a..49986be0f 100644 --- a/400_xowa/src/gplx/xowa/wikis/domains/crts/Xow_domain_crt_itm_.java +++ b/400_xowa/src/gplx/xowa/wikis/domains/crts/Xow_domain_crt_itm_.java @@ -21,7 +21,7 @@ class Xow_domain_crt_itm_ { } class Xow_domain_crt_itm__any_wiki implements Xow_domain_crt_itm { public boolean Matches(Xow_domain_itm cur, Xow_domain_itm comp) {return true;} - public static final Xow_domain_crt_itm__any_wiki I = new Xow_domain_crt_itm__any_wiki(); Xow_domain_crt_itm__any_wiki() {} + public static final Xow_domain_crt_itm__any_wiki Instance = new Xow_domain_crt_itm__any_wiki(); Xow_domain_crt_itm__any_wiki() {} } class Xow_domain_crt_itm__in implements Xow_domain_crt_itm { private final Xow_domain_crt_itm[] ary; @@ -38,34 +38,34 @@ class Xow_domain_crt_itm__in implements Xow_domain_crt_itm { class Xow_domain_crt_itm__any_standard implements Xow_domain_crt_itm { public boolean Matches(Xow_domain_itm cur, Xow_domain_itm comp) { switch (comp.Domain_type_id()) { - case Xow_domain_type_.Int__wikipedia: - case Xow_domain_type_.Int__wiktionary: - case Xow_domain_type_.Int__wikisource: - case Xow_domain_type_.Int__wikivoyage: - case Xow_domain_type_.Int__wikiquote: - case Xow_domain_type_.Int__wikibooks: - case Xow_domain_type_.Int__wikiversity: - case Xow_domain_type_.Int__wikinews: return true; - default: return false; + case Xow_domain_tid_.Int__wikipedia: + case Xow_domain_tid_.Int__wiktionary: + case Xow_domain_tid_.Int__wikisource: + case Xow_domain_tid_.Int__wikivoyage: + case Xow_domain_tid_.Int__wikiquote: + case Xow_domain_tid_.Int__wikibooks: + case Xow_domain_tid_.Int__wikiversity: + case Xow_domain_tid_.Int__wikinews: return true; + default: return false; } } - public static final Xow_domain_crt_itm__any_standard I = new Xow_domain_crt_itm__any_standard(); Xow_domain_crt_itm__any_standard() {} + public static final Xow_domain_crt_itm__any_standard Instance = new Xow_domain_crt_itm__any_standard(); Xow_domain_crt_itm__any_standard() {} } class Xow_domain_crt_itm__none implements Xow_domain_crt_itm { public boolean Matches(Xow_domain_itm cur, Xow_domain_itm comp) {return false;} - public static final Xow_domain_crt_itm__none I = new Xow_domain_crt_itm__none(); Xow_domain_crt_itm__none() {} + public static final Xow_domain_crt_itm__none Instance = new Xow_domain_crt_itm__none(); Xow_domain_crt_itm__none() {} } class Xow_domain_crt_itm__self implements Xow_domain_crt_itm { public boolean Matches(Xow_domain_itm cur, Xow_domain_itm comp) {return Bry_.Eq(cur.Domain_bry(), comp.Domain_bry());} - public static final Xow_domain_crt_itm__self I = new Xow_domain_crt_itm__self(); Xow_domain_crt_itm__self() {} + public static final Xow_domain_crt_itm__self Instance = new Xow_domain_crt_itm__self(); Xow_domain_crt_itm__self() {} } class Xow_domain_crt_itm__same_lang implements Xow_domain_crt_itm { public boolean Matches(Xow_domain_itm cur, Xow_domain_itm comp) {return Bry_.Eq(cur.Lang_orig_key(), comp.Lang_orig_key());} - public static final Xow_domain_crt_itm__same_lang I = new Xow_domain_crt_itm__same_lang(); Xow_domain_crt_itm__same_lang() {} + public static final Xow_domain_crt_itm__same_lang Instance = new Xow_domain_crt_itm__same_lang(); Xow_domain_crt_itm__same_lang() {} } class Xow_domain_crt_itm__same_type implements Xow_domain_crt_itm { public boolean Matches(Xow_domain_itm cur, Xow_domain_itm comp) {return cur.Domain_type_id() == comp.Domain_type_id();} - public static final Xow_domain_crt_itm__same_type I = new Xow_domain_crt_itm__same_type(); Xow_domain_crt_itm__same_type() {} + public static final Xow_domain_crt_itm__same_type Instance = new Xow_domain_crt_itm__same_type(); Xow_domain_crt_itm__same_type() {} } class Xow_domain_crt_itm__lang implements Xow_domain_crt_itm { private final byte[] lang_key; diff --git a/400_xowa/src/gplx/xowa/wikis/domains/crts/Xow_domain_crt_itm_parser.java b/400_xowa/src/gplx/xowa/wikis/domains/crts/Xow_domain_crt_itm_parser.java index 22a4a7944..a8847c20c 100644 --- a/400_xowa/src/gplx/xowa/wikis/domains/crts/Xow_domain_crt_itm_parser.java +++ b/400_xowa/src/gplx/xowa/wikis/domains/crts/Xow_domain_crt_itm_parser.java @@ -36,15 +36,15 @@ class Xow_domain_crt_itm_parser { byte[][] word_ary = Bry_split_.Split(line, Byte_ascii.Pipe); int word_len = word_ary.length; if (word_len != 2) return null; // not A|B; exit now; - Xow_domain_crt_itm key_itm = Xow_domain_crt_itm_parser.I.Parse_as_in(word_ary[0]); + Xow_domain_crt_itm key_itm = Xow_domain_crt_itm_parser.Instance.Parse_as_in(word_ary[0]); if (key_itm == Xow_domain_crt_itm_.Null) return null; // invalid key; exit; if (is_ary) { - Xow_domain_crt_itm[] ary_itm = Xow_domain_crt_itm_parser.I.Parse_as_ary(word_ary[1]); + Xow_domain_crt_itm[] ary_itm = Xow_domain_crt_itm_parser.Instance.Parse_as_ary(word_ary[1]); if (ary_itm == null) return null; rv.Add(new Xow_domain_crt_kv_ary(key_itm, ary_itm)); } else { - Xow_domain_crt_itm val_itm = Xow_domain_crt_itm_parser.I.Parse_as_in(word_ary[1]); + Xow_domain_crt_itm val_itm = Xow_domain_crt_itm_parser.Instance.Parse_as_in(word_ary[1]); if (val_itm == Xow_domain_crt_itm_.Null) return null; // invalid val; exit; rv.Add(new Xow_domain_crt_kv_itm(key_itm, val_itm)); } @@ -70,22 +70,22 @@ class Xow_domain_crt_itm_parser { Xow_domain_crt_itm rv = (Xow_domain_crt_itm)itm_hash.Get_by_bry(raw); if (rv != null) return rv; // singleton; EX: , , etc.. int raw_len = raw.length; if (Bry_.Has_at_bgn(raw, Wild_lang)) { // EX: *.wikipedia - int wiki_tid = Xow_domain_type_.Get_type_as_tid(raw, Wild_lang.length, raw_len); - return wiki_tid == Xow_domain_type_.Int__null ? Xow_domain_crt_itm_.Null : new Xow_domain_crt_itm__type(wiki_tid); + int wiki_tid = Xow_domain_tid_.Get_type_as_tid(raw, Wild_lang.length, raw_len); + return wiki_tid == Xow_domain_tid_.Int__null ? Xow_domain_crt_itm_.Null : new Xow_domain_crt_itm__type(wiki_tid); } else if (Bry_.Has_at_end(raw, Wild_type)) { // EX: en.* - Xol_lang_itm lang_itm = Xol_lang_itm_.Get_by_key(raw, 0, raw_len - Wild_type.length); + Xol_lang_stub lang_itm = Xol_lang_stub_.Get_by_key_or_null(raw, 0, raw_len - Wild_type.length); return lang_itm == null ? Xow_domain_crt_itm_.Null : new Xow_domain_crt_itm__lang(lang_itm.Key()); } else return new Xow_domain_crt_itm__wiki(raw); // EX: en.wikipedia.org } private static final Hash_adp_bry itm_hash = Hash_adp_bry.cs() - .Add_str_obj("" , Xow_domain_crt_itm__self.I) - .Add_str_obj("" , Xow_domain_crt_itm__same_type.I) - .Add_str_obj("" , Xow_domain_crt_itm__same_lang.I) - .Add_str_obj("" , Xow_domain_crt_itm__any_wiki.I) + .Add_str_obj("" , Xow_domain_crt_itm__self.Instance) + .Add_str_obj("" , Xow_domain_crt_itm__same_type.Instance) + .Add_str_obj("" , Xow_domain_crt_itm__same_lang.Instance) + .Add_str_obj("" , Xow_domain_crt_itm__any_wiki.Instance) ; private static final byte[] Wild_lang = Bry_.new_a7("*."), Wild_type = Bry_.new_a7(".*"); - public static final Xow_domain_crt_itm_parser I = new Xow_domain_crt_itm_parser(); Xow_domain_crt_itm_parser() {} + public static final Xow_domain_crt_itm_parser Instance = new Xow_domain_crt_itm_parser(); Xow_domain_crt_itm_parser() {} } diff --git a/400_xowa/src/gplx/xowa/wikis/domains/crts/Xow_domain_crt_kv_itm_mgr.java b/400_xowa/src/gplx/xowa/wikis/domains/crts/Xow_domain_crt_kv_itm_mgr.java index 2c177f2be..5a90547da 100644 --- a/400_xowa/src/gplx/xowa/wikis/domains/crts/Xow_domain_crt_kv_itm_mgr.java +++ b/400_xowa/src/gplx/xowa/wikis/domains/crts/Xow_domain_crt_kv_itm_mgr.java @@ -22,7 +22,7 @@ public class Xow_domain_crt_kv_itm_mgr { @gplx.Internal protected void Add(Xow_domain_crt_kv_itm itm) {list.Add(itm);} public boolean Parse_as_itms(byte[] raw) { this.Clear(); - Xow_domain_crt_kv_itm[] ary = Xow_domain_crt_itm_parser.I.Parse_as_kv_itms_or_null(raw); + Xow_domain_crt_kv_itm[] ary = Xow_domain_crt_itm_parser.Instance.Parse_as_kv_itms_or_null(raw); if (ary == null) return false; // invalid parse; leave current value as is and exit; int len = ary.length; for (int i = 0; i < len; ++i) @@ -31,7 +31,7 @@ public class Xow_domain_crt_kv_itm_mgr { } public boolean Parse_as_arys(byte[] raw) { this.Clear(); - Xow_domain_crt_kv_ary[] ary = Xow_domain_crt_itm_parser.I.Parse_as_kv_arys_or_null(raw); + Xow_domain_crt_kv_ary[] ary = Xow_domain_crt_itm_parser.Instance.Parse_as_kv_arys_or_null(raw); if (ary == null) return false; // invalid parse; leave current value as is and exit; int len = ary.length; for (int i = 0; i < len; ++i) @@ -44,7 +44,7 @@ public class Xow_domain_crt_kv_itm_mgr { Xow_domain_crt_kv_itm kv = (Xow_domain_crt_kv_itm)list.Get_at(i); if (kv.Key().Matches(cur, comp)) return kv.Val(); } - return Xow_domain_crt_itm__none.I; + return Xow_domain_crt_itm__none.Instance; } public Xow_domain_crt_itm[] Find_ary(Xow_domain_itm cur, Xow_domain_itm comp) { int len = list.Count(); diff --git a/400_xowa/src/gplx/xowa/wikis/metas/Bfmtr_eval_wiki.java b/400_xowa/src/gplx/xowa/wikis/metas/Bfmtr_eval_wiki.java index 41c489c54..440b96541 100644 --- a/400_xowa/src/gplx/xowa/wikis/metas/Bfmtr_eval_wiki.java +++ b/400_xowa/src/gplx/xowa/wikis/metas/Bfmtr_eval_wiki.java @@ -20,7 +20,7 @@ public class Bfmtr_eval_wiki implements Bry_fmtr_eval_mgr { public Bfmtr_eval_wiki(Xowe_wiki wiki) {this.wiki = wiki;} private Xowe_wiki wiki; public boolean Enabled() {return enabled;} public void Enabled_(boolean v) {enabled = v;} private boolean enabled = true; public byte[] Eval(byte[] cmd) { - Object rslt = GfsCore._.Exec_bry(cmd, wiki); + Object rslt = GfsCore.Instance.Exec_bry(cmd, wiki); return Bry_.new_u8(Object_.Xto_str_strict_or_null_mark(rslt)); } public void Eval_mgr_(Bry_fmtr... fmtrs) { diff --git a/400_xowa/src/gplx/xowa/wikis/metas/Xow_script_mgr.java b/400_xowa/src/gplx/xowa/wikis/metas/Xow_script_mgr.java index f4dcdb0a7..a698e5a74 100644 --- a/400_xowa/src/gplx/xowa/wikis/metas/Xow_script_mgr.java +++ b/400_xowa/src/gplx/xowa/wikis/metas/Xow_script_mgr.java @@ -30,9 +30,9 @@ public class Xow_script_mgr implements GfoInvkAble { Xow_script_itm itm = (Xow_script_itm)hash.Get_at(i); int wiki_tid = wiki.Domain_tid(); if (Int_.In(wiki_tid, itm.Wiki_tids())) // wiki_tid matches itm - itm.Fmtr().Bld_bfr_many(bfr, wiki.Domain_bry(), Xow_domain_type_.Get_type_as_bry(wiki_tid), wiki.Lang().Key_bry()); + itm.Fmtr().Bld_bfr_many(bfr, wiki.Domain_bry(), Xow_domain_tid_.Get_type_as_bry(wiki_tid), wiki.Lang().Key_bry()); } - String gfs_script = String_.Replace(bfr.Xto_str_and_clear(), Op_sys.Wnt.Nl_str(), Op_sys.Lnx.Nl_str()); + String gfs_script = String_.Replace(bfr.To_str_and_clear(), Op_sys.Wnt.Nl_str(), Op_sys.Lnx.Nl_str()); wiki.Appe().Gfs_mgr().Run_str(gfs_script); bfr.Mkr_rls(); } @@ -41,12 +41,12 @@ public class Xow_script_mgr implements GfoInvkAble { int len = wiki_tid_names.length; int[] wiki_tids = new int[len]; for (int i = 0; i < len; i++) - wiki_tids[i] = Xow_domain_type_.Get_type_as_tid(wiki_tid_names[i]); + wiki_tids[i] = Xow_domain_tid_.Get_type_as_tid(wiki_tid_names[i]); Xow_script_itm itm = new Xow_script_itm(key, wiki_tids, script); hash.Add_if_dupe_use_nth(itm.Key(), itm); } - public Ordered_hash hash = Ordered_hash_.new_bry_(); + public Ordered_hash hash = Ordered_hash_.New_bry(); } class Xow_script_itm { public Xow_script_itm(byte[] key, int[] wiki_tids, byte[] script) { diff --git a/400_xowa/src/gplx/xowa/wikis/metas/Xow_wiki_props.java b/400_xowa/src/gplx/xowa/wikis/metas/Xow_wiki_props.java index cdd3bd0ba..1b38d1678 100644 --- a/400_xowa/src/gplx/xowa/wikis/metas/Xow_wiki_props.java +++ b/400_xowa/src/gplx/xowa/wikis/metas/Xow_wiki_props.java @@ -18,7 +18,7 @@ along with this program. If not, see . package gplx.xowa.wikis.metas; import gplx.*; import gplx.xowa.*; import gplx.xowa.wikis.*; import gplx.xowa.langs.msgs.*; import gplx.xowa.wikis.*; import gplx.xowa.wikis.domains.*; -import gplx.xowa.html.hrefs.*; +import gplx.xowa.htmls.hrefs.*; public class Xow_wiki_props implements GfoInvkAble { public byte[] Main_page() {return main_page;} private byte[] main_page = Xoa_page_.Main_page_bry; // HACK: default to Main_Page b/c some code tries to do Xoa_ttl.parse() which will not work with ""; DATE:2014-02-16 public Xow_wiki_props Main_page_(byte[] v) {main_page = v; return this;} @@ -42,7 +42,7 @@ public class Xow_wiki_props implements GfoInvkAble { public byte[] Siteinfo_misc() {return siteinfo_misc;} public byte[] Siteinfo_mainpage() {return siteinfo_mainpage;} private byte[] siteinfo_mainpage = Bry_.Empty; public DateAdp Modified_latest() {return modified_latest;} private DateAdp modified_latest; - public Xow_wiki_props SiteName_(int v) {site_name = Bry_.new_a7(String_.UpperFirst(String_.new_a7(Xow_domain_type_.Get_type_as_bry(v)))); return this;} + public Xow_wiki_props SiteName_(int v) {site_name = Bry_.new_a7(String_.UpperFirst(String_.new_a7(Xow_domain_tid_.Get_type_as_bry(v)))); return this;} public Xow_wiki_props Siteinfo_misc_(byte[] v) { siteinfo_misc = v; int pipe_0 = Bry_find_.Find_fwd(v, Byte_ascii.Pipe); diff --git a/400_xowa/src/gplx/xowa/wikis/metas/Xow_wiki_stats.java b/400_xowa/src/gplx/xowa/wikis/metas/Xow_wiki_stats.java index d54ff9afb..43b301558 100644 --- a/400_xowa/src/gplx/xowa/wikis/metas/Xow_wiki_stats.java +++ b/400_xowa/src/gplx/xowa/wikis/metas/Xow_wiki_stats.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.wikis.metas; import gplx.*; import gplx.xowa.*; import gplx.xowa.wikis.*; -import gplx.xowa.nss.*; +import gplx.xowa.wikis.nss.*; public class Xow_wiki_stats implements GfoInvkAble { public Xow_wiki_stats(Xowe_wiki wiki) {this.wiki = wiki;} private Xowe_wiki wiki; public int NumPages() {return num_pages;} public Xow_wiki_stats NumPages_(int v) {num_pages = v; return this;} private int num_pages; // in entire wiki: 28,433,596 diff --git a/400_xowa/src/gplx/xowa/wikis/modules/Xow_module_base.java b/400_xowa/src/gplx/xowa/wikis/modules/Xow_module_base.java index a24b665b9..d09f022e5 100644 --- a/400_xowa/src/gplx/xowa/wikis/modules/Xow_module_base.java +++ b/400_xowa/src/gplx/xowa/wikis/modules/Xow_module_base.java @@ -21,8 +21,8 @@ public class Xow_module_base implements GfoInvkAble { public boolean Enabled_y() {return enabled == Bool_.Y_byte;} public boolean Enabled_n() {return enabled == Bool_.N_byte;} @gplx.Virtual public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { - if (ctx.Match(k, Invk_enabled)) return Yn.Xto_nullable_str(enabled); - else if (ctx.Match(k, Invk_enabled_)) enabled = Yn.Xto_nullable_byte(m.ReadStr("v")); + if (ctx.Match(k, Invk_enabled)) return Yn.To_nullable_str(enabled); + else if (ctx.Match(k, Invk_enabled_)) enabled = Yn.To_nullable_byte(m.ReadStr("v")); else return GfoInvkAble_.Rv_unhandled; return this; } diff --git a/400_xowa/src/gplx/xowa/wikis/modules/Xow_module_mgr.java b/400_xowa/src/gplx/xowa/wikis/modules/Xow_module_mgr.java index 52c2c0a44..ff0eadbcb 100644 --- a/400_xowa/src/gplx/xowa/wikis/modules/Xow_module_mgr.java +++ b/400_xowa/src/gplx/xowa/wikis/modules/Xow_module_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.wikis.modules; import gplx.*; import gplx.xowa.*; import gplx.xowa.wikis.*; -import gplx.xowa.html.heads.*; import gplx.xowa.html.modules.popups.*; +import gplx.xowa.htmls.heads.*; import gplx.xowa.htmls.modules.popups.*; public class Xow_module_mgr implements GfoInvkAble { private Hash_adp_bry regy = Hash_adp_bry.cs(); public Xow_module_mgr(Xowe_wiki wiki) { diff --git a/400_xowa/src/gplx/xowa/nss/Xow_ns.java b/400_xowa/src/gplx/xowa/wikis/nss/Xow_ns.java similarity index 94% rename from 400_xowa/src/gplx/xowa/nss/Xow_ns.java rename to 400_xowa/src/gplx/xowa/wikis/nss/Xow_ns.java index 76be62bba..0dee7573f 100644 --- a/400_xowa/src/gplx/xowa/nss/Xow_ns.java +++ b/400_xowa/src/gplx/xowa/wikis/nss/Xow_ns.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.nss; import gplx.*; import gplx.xowa.*; -import gplx.xowa.bldrs.cmds.*; +package gplx.xowa.wikis.nss; import gplx.*; import gplx.xowa.*; import gplx.xowa.wikis.*; +import gplx.xowa.bldrs.cmds.*; import gplx.xowa.apps.urls.*; public class Xow_ns implements GfoInvkAble { public Xow_ns(int id, byte case_match, byte[] name, boolean is_alias) { this.id = id; this.case_match = case_match; this.is_alias = is_alias; @@ -33,9 +33,9 @@ public class Xow_ns implements GfoInvkAble { this.name_db_w_colon = Bry_.Add(v, Byte_ascii.Colon); this.name_str = String_.new_u8(v); } - this.num_str = Int_.Xto_str_pad_bgn_zero(id, 3); + this.num_str = Int_.To_str_pad_bgn_zero(id, 3); this.num_bry = Bry_.new_a7(num_str); - this.name_enc = Xoa_url_encoder._.Encode(name_bry); + this.name_enc = Xoa_url_encoder.Instance.Encode(name_bry); this.name_txt = Bry_.Replace(name_enc, Byte_ascii.Underline, Byte_ascii.Space); this.name_txt_w_colon = Bry_.Replace(name_db_w_colon, Byte_ascii.Underline, Byte_ascii.Space); } @@ -79,7 +79,7 @@ public class Xow_ns implements GfoInvkAble { public byte[] Gen_ttl(byte[] page) {return id == Xow_ns_.Id_main ? page : Bry_.Add(name_db_w_colon, page);} public void Aliases_add(String alias) { if (String_.Eq(alias, name_str)) return; - if (aliases == null) aliases = Ordered_hash_.new_(); + if (aliases == null) aliases = Ordered_hash_.New(); aliases.Add_if_dupe_use_1st(alias, alias); } private Ordered_hash aliases; public KeyVal[] Aliases_as_scrib_ary() { // NOTE: intended for Scrib_lib_site; DATE:2014-02-15 diff --git a/400_xowa/src/gplx/xowa/nss/Xow_ns_.java b/400_xowa/src/gplx/xowa/wikis/nss/Xow_ns_.java similarity index 95% rename from 400_xowa/src/gplx/xowa/nss/Xow_ns_.java rename to 400_xowa/src/gplx/xowa/wikis/nss/Xow_ns_.java index ff13d1fb3..01d0a932f 100644 --- a/400_xowa/src/gplx/xowa/nss/Xow_ns_.java +++ b/400_xowa/src/gplx/xowa/wikis/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.nss; import gplx.*; import gplx.xowa.*; +package gplx.xowa.wikis.nss; import gplx.*; import gplx.xowa.*; import gplx.xowa.wikis.*; import gplx.core.primitives.*; public class Xow_ns_ { public static final int // PAGE:en.w:http://www.mediawiki.org/wiki/Help:Namespaces @@ -53,7 +53,7 @@ public class Xow_ns_ { if (canonical_hash == null) { Xow_ns[] ary = Canonical; int len = ary.length; - canonical_hash = Ordered_hash_.new_bry_(); + canonical_hash = Ordered_hash_.New_bry(); for (int i = 0; i < len; i++) { Xow_ns ns = ary[i]; canonical_hash.Add(ns.Name_bry(), Int_obj_val.new_(ns.Id())); diff --git a/400_xowa/src/gplx/xowa/nss/Xow_ns_case_.java b/400_xowa/src/gplx/xowa/wikis/nss/Xow_ns_case_.java similarity index 92% rename from 400_xowa/src/gplx/xowa/nss/Xow_ns_case_.java rename to 400_xowa/src/gplx/xowa/wikis/nss/Xow_ns_case_.java index a6176dee5..c3342a702 100644 --- a/400_xowa/src/gplx/xowa/nss/Xow_ns_case_.java +++ b/400_xowa/src/gplx/xowa/wikis/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.nss; import gplx.*; import gplx.xowa.*; +package gplx.xowa.wikis.nss; import gplx.*; import gplx.xowa.*; import gplx.xowa.wikis.*; 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/gplx/xowa/nss/Xow_ns_mgr.java b/400_xowa/src/gplx/xowa/wikis/nss/Xow_ns_mgr.java similarity index 96% rename from 400_xowa/src/gplx/xowa/nss/Xow_ns_mgr.java rename to 400_xowa/src/gplx/xowa/wikis/nss/Xow_ns_mgr.java index 7c334bced..39e60f8b8 100644 --- a/400_xowa/src/gplx/xowa/nss/Xow_ns_mgr.java +++ b/400_xowa/src/gplx/xowa/wikis/nss/Xow_ns_mgr.java @@ -15,15 +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.nss; import gplx.*; import gplx.xowa.*; +package gplx.xowa.wikis.nss; import gplx.*; import gplx.xowa.*; import gplx.xowa.wikis.*; import gplx.core.primitives.*; import gplx.core.btries.*; import gplx.xowa.langs.cases.*; import gplx.xowa.bldrs.installs.*; import gplx.xowa.xtns.scribunto.*; public class Xow_ns_mgr implements GfoInvkAble, gplx.lists.ComparerAble { - private Ordered_hash id_hash = Ordered_hash_.new_(); // hash for retrieval by id + private Ordered_hash id_hash = Ordered_hash_.New(); // hash for retrieval by id private Hash_adp_bry name_hash; // hash for retrieval by name; note that ns names are case-insensitive "File:" == "fILe:" private Hash_adp_bry tmpl_hash; // hash for retrieval by name; PERF for templates - private Ordered_hash aliases = Ordered_hash_.new_(); // hash to store aliases; used to populate name_hash; + private Ordered_hash aliases = Ordered_hash_.New(); // hash to store aliases; used to populate name_hash; public Xow_ns_mgr(Xol_case_mgr case_mgr) { name_hash = Hash_adp_bry.ci_u8(case_mgr); tmpl_hash = Hash_adp_bry.ci_u8(case_mgr); @@ -231,7 +231,7 @@ public class Xow_ns_mgr implements GfoInvkAble, gplx.lists.ComparerAble { if (literalize) bfr.Add_byte(Byte_ascii.Colon); // NOTE: add : to literalize ns; EX: [[Category:A]] will get thrown into category list; [[:Category:A]] will print bfr.Add(text_form ? ns.Name_txt_w_colon() : ns.Name_db_w_colon()); bfr.Add(ttl); - return bfr.Xto_bry_and_clear(); + return bfr.To_bry_and_clear(); } class Xow_ns_mgr_name_itm { public Xow_ns_mgr_name_itm(byte[] name, Xow_ns ns) {this.name = name; this.name_len = name.length; this.ns = ns;} diff --git a/400_xowa/src/gplx/xowa/nss/Xow_ns_mgr_.java b/400_xowa/src/gplx/xowa/wikis/nss/Xow_ns_mgr_.java similarity index 89% rename from 400_xowa/src/gplx/xowa/nss/Xow_ns_mgr_.java rename to 400_xowa/src/gplx/xowa/wikis/nss/Xow_ns_mgr_.java index 7a08df071..18b25ac01 100644 --- a/400_xowa/src/gplx/xowa/nss/Xow_ns_mgr_.java +++ b/400_xowa/src/gplx/xowa/wikis/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.nss; import gplx.*; import gplx.xowa.*; -import gplx.xowa.langs.*; import gplx.xowa.langs.cases.*; +package gplx.xowa.wikis.nss; import gplx.*; import gplx.xowa.*; import gplx.xowa.wikis.*; +import gplx.xowa.langs.*; import gplx.xowa.langs.cases.*; import gplx.xowa.langs.bldrs.*; 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) @@ -30,7 +30,7 @@ public class Xow_ns_mgr_ { rv.Init(); return rv; } - public static void rebuild_(Xol_lang lang, Xow_ns_mgr ns_mgr) { + public static void rebuild_(Xol_lang_itm lang, Xow_ns_mgr ns_mgr) { Xol_ns_grp ns_names = lang.Ns_names(); int ns_names_len = ns_names.Len(); for (int i = 0; i < ns_names_len; i++) { diff --git a/400_xowa/src/gplx/xowa/nss/Xow_ns_mgr_tst.java b/400_xowa/src/gplx/xowa/wikis/nss/Xow_ns_mgr_tst.java similarity index 94% rename from 400_xowa/src/gplx/xowa/nss/Xow_ns_mgr_tst.java rename to 400_xowa/src/gplx/xowa/wikis/nss/Xow_ns_mgr_tst.java index d2716108c..1eefdc4d6 100644 --- a/400_xowa/src/gplx/xowa/nss/Xow_ns_mgr_tst.java +++ b/400_xowa/src/gplx/xowa/wikis/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.nss; import gplx.*; import gplx.xowa.*; +package gplx.xowa.wikis.nss; import gplx.*; import gplx.xowa.*; import gplx.xowa.wikis.*; import org.junit.*; import gplx.xowa.langs.cases.*; public class Xow_ns_mgr_tst { @@ -52,7 +52,7 @@ class Xow_ns_mgr_fxt { int ids_len = ids.length; for (int i = 0; i < ids_len; i++) { int id = ids[i]; - ns_mgr.Add_new(id, Int_.Xto_str(id)); + ns_mgr.Add_new(id, Int_.To_str(id)); } return this; } diff --git a/400_xowa/src/gplx/xowa/nss/Xow_ns_tst.java b/400_xowa/src/gplx/xowa/wikis/nss/Xow_ns_tst.java similarity index 94% rename from 400_xowa/src/gplx/xowa/nss/Xow_ns_tst.java rename to 400_xowa/src/gplx/xowa/wikis/nss/Xow_ns_tst.java index da0b34453..83f0290f2 100644 --- a/400_xowa/src/gplx/xowa/nss/Xow_ns_tst.java +++ b/400_xowa/src/gplx/xowa/wikis/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.nss; import gplx.*; import gplx.xowa.*; +package gplx.xowa.wikis.nss; import gplx.*; import gplx.xowa.*; import gplx.xowa.wikis.*; 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/Xoa_page__commons_mgr.java b/400_xowa/src/gplx/xowa/wikis/pages/Xoa_page__commons_mgr.java similarity index 92% rename from 400_xowa/src/gplx/xowa/pages/Xoa_page__commons_mgr.java rename to 400_xowa/src/gplx/xowa/wikis/pages/Xoa_page__commons_mgr.java index 9b6d92a76..a352d04ae 100644 --- a/400_xowa/src/gplx/xowa/pages/Xoa_page__commons_mgr.java +++ b/400_xowa/src/gplx/xowa/wikis/pages/Xoa_page__commons_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.pages; import gplx.*; import gplx.xowa.*; +package gplx.xowa.wikis.pages; import gplx.*; import gplx.xowa.*; import gplx.xowa.wikis.*; public class Xoa_page__commons_mgr { public boolean Xowa_mockup() {return xowa_mockup;} public void Xowa_mockup_(boolean v) {xowa_mockup = v;} private boolean xowa_mockup; public Xow_wiki Source_wiki() {return source_wiki;} public void Source_wiki_(Xow_wiki v) {source_wiki = v;} private Xow_wiki source_wiki; diff --git a/400_xowa/src/gplx/xowa/pages/Xopg_html_data.java b/400_xowa/src/gplx/xowa/wikis/pages/Xopg_html_data.java similarity index 90% rename from 400_xowa/src/gplx/xowa/pages/Xopg_html_data.java rename to 400_xowa/src/gplx/xowa/wikis/pages/Xopg_html_data.java index 4bc05aba2..41c561922 100644 --- a/400_xowa/src/gplx/xowa/pages/Xopg_html_data.java +++ b/400_xowa/src/gplx/xowa/wikis/pages/Xopg_html_data.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.pages; import gplx.*; import gplx.xowa.*; -import gplx.langs.htmls.*; import gplx.xowa.html.heads.*; import gplx.xowa.pages.skins.*; import gplx.xowa.xtns.indicators.*; +package gplx.xowa.wikis.pages; import gplx.*; import gplx.xowa.*; import gplx.xowa.wikis.*; +import gplx.langs.htmls.*; import gplx.xowa.htmls.heads.*; import gplx.xowa.wikis.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; @@ -51,7 +51,7 @@ public class Xopg_html_data { public byte[] Xtn_scribunto_dbg() {return xtn_scribunto_dbg;} public void Xtn_scribunto_dbg_(byte[] v) {xtn_scribunto_dbg = Bry_.Add(xtn_scribunto_dbg, v);} private byte[] xtn_scribunto_dbg = Bry_.Empty; public Xoh_head_mgr Head_mgr() {return module_mgr;} private Xoh_head_mgr module_mgr = new Xoh_head_mgr(); public byte[] Custom_html() {return custom_html;} public Xopg_html_data Custom_html_(byte[] v) {custom_html = v; return this;} private byte[] custom_html; - public byte[] Custom_name() {return custom_name;} public Xopg_html_data Custom_name_(byte[] v) {custom_name = v; return this;} private byte[] custom_name; + public byte[] Custom_tab_name() {return custom_tab_name;} public Xopg_html_data Custom_tab_name_(byte[] v) {custom_tab_name = v; return this;} private byte[] custom_tab_name; public byte[] Custom_head_end() {return custom_head_end;} public byte[] Custom_html_end() {return custom_html_end;} public void Custom_head_end_concat(byte[] v) { @@ -78,14 +78,14 @@ public class Xopg_html_data { xtn_search_txt = Bry_.Empty; xtn_scribunto_dbg = Bry_.Empty; module_mgr.Clear(); - custom_html = custom_html_end = custom_head_end = custom_name = null; + custom_html = custom_html_end = custom_head_end = custom_tab_name = null; if (ctg_hash != null) ctg_hash.Clear(); indicators.Clear(); this.mode_wtxt_shown = false; } public byte[][] Ctgs_to_ary() {return ctg_hash == null ? Bry_.Ary_empty : (byte[][])ctg_hash.To_ary(byte[].class);} public void Ctgs_add(Xoa_ttl ttl) { - if (ctg_hash == null) ctg_hash = Ordered_hash_.new_bry_(); + if (ctg_hash == null) ctg_hash = Ordered_hash_.New_bry(); byte[] ttl_bry = ttl.Page_txt(); if (ctg_hash.Has(ttl_bry)) return; ctg_hash.Add(ttl_bry, ttl_bry); diff --git a/400_xowa/src/gplx/xowa/pages/Xopg_view_mode.java b/400_xowa/src/gplx/xowa/wikis/pages/Xopg_page_.java similarity index 86% rename from 400_xowa/src/gplx/xowa/pages/Xopg_view_mode.java rename to 400_xowa/src/gplx/xowa/wikis/pages/Xopg_page_.java index 643648bf5..bc527c4f7 100644 --- a/400_xowa/src/gplx/xowa/pages/Xopg_view_mode.java +++ b/400_xowa/src/gplx/xowa/wikis/pages/Xopg_page_.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.pages; import gplx.*; import gplx.xowa.*; -public class Xopg_view_mode { +package gplx.xowa.wikis.pages; import gplx.*; import gplx.xowa.*; import gplx.xowa.wikis.*; +public class Xopg_page_ { public static final byte Tid_read = 0, Tid_edit = 1, Tid_html = 2; } diff --git a/400_xowa/src/gplx/xowa/pages/Xopg_revision_data.java b/400_xowa/src/gplx/xowa/wikis/pages/Xopg_revision_data.java similarity index 94% rename from 400_xowa/src/gplx/xowa/pages/Xopg_revision_data.java rename to 400_xowa/src/gplx/xowa/wikis/pages/Xopg_revision_data.java index d3182b577..7976a08b1 100644 --- a/400_xowa/src/gplx/xowa/pages/Xopg_revision_data.java +++ b/400_xowa/src/gplx/xowa/wikis/pages/Xopg_revision_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.pages; import gplx.*; import gplx.xowa.*; +package gplx.xowa.wikis.pages; import gplx.*; import gplx.xowa.*; import gplx.xowa.wikis.*; public class Xopg_revision_data { public int Id() {return id;} public Xopg_revision_data Id_(int v) {id = v; return this;} private int id; public DateAdp Modified_on() {return modified_on;} public Xopg_revision_data Modified_on_(DateAdp v) {modified_on = v; return this;} private DateAdp modified_on = DateAdp_.MinValue; diff --git a/400_xowa/src/gplx/xowa/pages/Xopg_tab_data.java b/400_xowa/src/gplx/xowa/wikis/pages/Xopg_tab_data.java similarity index 90% rename from 400_xowa/src/gplx/xowa/pages/Xopg_tab_data.java rename to 400_xowa/src/gplx/xowa/wikis/pages/Xopg_tab_data.java index 03acdac3a..e5d7981f3 100644 --- a/400_xowa/src/gplx/xowa/pages/Xopg_tab_data.java +++ b/400_xowa/src/gplx/xowa/wikis/pages/Xopg_tab_data.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.pages; import gplx.*; import gplx.xowa.*; -import gplx.xowa.gui.views.*; +package gplx.xowa.wikis.pages; import gplx.*; import gplx.xowa.*; import gplx.xowa.wikis.*; +import gplx.xowa.guis.views.*; public class Xopg_tab_data { public Xog_tab_itm Tab() {return tab;} public void Tab_(Xog_tab_itm v) {this.tab = v;} private Xog_tab_itm tab; public boolean Cancel_show() {return cancel_show;} public void Cancel_show_y_() {this.cancel_show = true;} private boolean cancel_show; // used for Special:Search diff --git a/400_xowa/src/gplx/xowa/pages/Xopg_tmpl_prepend_mgr.java b/400_xowa/src/gplx/xowa/wikis/pages/Xopg_tmpl_prepend_mgr.java similarity index 95% rename from 400_xowa/src/gplx/xowa/pages/Xopg_tmpl_prepend_mgr.java rename to 400_xowa/src/gplx/xowa/wikis/pages/Xopg_tmpl_prepend_mgr.java index 323450a31..5a2e4ff4d 100644 --- a/400_xowa/src/gplx/xowa/pages/Xopg_tmpl_prepend_mgr.java +++ b/400_xowa/src/gplx/xowa/wikis/pages/Xopg_tmpl_prepend_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.pages; import gplx.*; import gplx.xowa.*; +package gplx.xowa.wikis.pages; import gplx.*; import gplx.xowa.*; import gplx.xowa.wikis.*; import gplx.core.btries.*; import gplx.xowa.parsers.*; import gplx.xowa.parsers.tmpls.*; public class Xopg_tmpl_prepend_mgr { diff --git a/400_xowa/src/gplx/xowa/pages/skins/Xopg_xtn_skin_fmtr_arg.java b/400_xowa/src/gplx/xowa/wikis/pages/skins/Xopg_xtn_skin_fmtr_arg.java similarity index 86% rename from 400_xowa/src/gplx/xowa/pages/skins/Xopg_xtn_skin_fmtr_arg.java rename to 400_xowa/src/gplx/xowa/wikis/pages/skins/Xopg_xtn_skin_fmtr_arg.java index 5c0a3809e..142c53989 100644 --- a/400_xowa/src/gplx/xowa/pages/skins/Xopg_xtn_skin_fmtr_arg.java +++ b/400_xowa/src/gplx/xowa/wikis/pages/skins/Xopg_xtn_skin_fmtr_arg.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.pages.skins; import gplx.*; import gplx.xowa.*; import gplx.xowa.pages.*; +package gplx.xowa.wikis.pages.skins; import gplx.*; import gplx.xowa.*; import gplx.xowa.wikis.*; import gplx.xowa.wikis.pages.*; public class Xopg_xtn_skin_fmtr_arg implements Bry_fmtr_arg { private Xoae_page page; private byte xtn_skin_tid; public Xopg_xtn_skin_fmtr_arg(Xoae_page page, byte xtn_skin_tid) { this.page = page; this.xtn_skin_tid = xtn_skin_tid; } - public void XferAry(Bry_bfr bfr, int idx) { + public void Fmt__do(Bry_bfr bfr) { Xopg_xtn_skin_mgr mgr = page.Html_data().Xtn_skin_mgr(); int len = mgr.Count(); for (int i = 0; i < len; ++i) { diff --git a/400_xowa/src/gplx/xowa/pages/skins/Xopg_xtn_skin_itm.java b/400_xowa/src/gplx/xowa/wikis/pages/skins/Xopg_xtn_skin_itm.java similarity index 85% rename from 400_xowa/src/gplx/xowa/pages/skins/Xopg_xtn_skin_itm.java rename to 400_xowa/src/gplx/xowa/wikis/pages/skins/Xopg_xtn_skin_itm.java index afff0921b..f2c010eec 100644 --- a/400_xowa/src/gplx/xowa/pages/skins/Xopg_xtn_skin_itm.java +++ b/400_xowa/src/gplx/xowa/wikis/pages/skins/Xopg_xtn_skin_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.pages.skins; import gplx.*; import gplx.xowa.*; import gplx.xowa.pages.*; +package gplx.xowa.wikis.pages.skins; import gplx.*; import gplx.xowa.*; import gplx.xowa.wikis.*; import gplx.xowa.wikis.pages.*; public interface Xopg_xtn_skin_itm { byte Tid(); byte[] Key(); diff --git a/400_xowa/src/gplx/xowa/pages/skins/Xopg_xtn_skin_itm_stub.java b/400_xowa/src/gplx/xowa/wikis/pages/skins/Xopg_xtn_skin_itm_stub.java similarity index 88% rename from 400_xowa/src/gplx/xowa/pages/skins/Xopg_xtn_skin_itm_stub.java rename to 400_xowa/src/gplx/xowa/wikis/pages/skins/Xopg_xtn_skin_itm_stub.java index 18b9fe687..cfeb9c6c8 100644 --- a/400_xowa/src/gplx/xowa/pages/skins/Xopg_xtn_skin_itm_stub.java +++ b/400_xowa/src/gplx/xowa/wikis/pages/skins/Xopg_xtn_skin_itm_stub.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.pages.skins; import gplx.*; import gplx.xowa.*; import gplx.xowa.pages.*; +package gplx.xowa.wikis.pages.skins; import gplx.*; import gplx.xowa.*; import gplx.xowa.wikis.*; import gplx.xowa.wikis.pages.*; public class Xopg_xtn_skin_itm_stub implements Xopg_xtn_skin_itm { private final byte[] val; public Xopg_xtn_skin_itm_stub(byte[] val) {this.val = val;} diff --git a/400_xowa/src/gplx/xowa/pages/skins/Xopg_xtn_skin_itm_tid.java b/400_xowa/src/gplx/xowa/wikis/pages/skins/Xopg_xtn_skin_itm_tid.java similarity index 85% rename from 400_xowa/src/gplx/xowa/pages/skins/Xopg_xtn_skin_itm_tid.java rename to 400_xowa/src/gplx/xowa/wikis/pages/skins/Xopg_xtn_skin_itm_tid.java index cf02ca099..f6b1665f8 100644 --- a/400_xowa/src/gplx/xowa/pages/skins/Xopg_xtn_skin_itm_tid.java +++ b/400_xowa/src/gplx/xowa/wikis/pages/skins/Xopg_xtn_skin_itm_tid.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.pages.skins; import gplx.*; import gplx.xowa.*; import gplx.xowa.pages.*; +package gplx.xowa.wikis.pages.skins; import gplx.*; import gplx.xowa.*; import gplx.xowa.wikis.*; import gplx.xowa.wikis.pages.*; public class Xopg_xtn_skin_itm_tid { public static final byte Tid_sidebar = 0; } diff --git a/400_xowa/src/gplx/xowa/pages/skins/Xopg_xtn_skin_mgr.java b/400_xowa/src/gplx/xowa/wikis/pages/skins/Xopg_xtn_skin_mgr.java similarity index 85% rename from 400_xowa/src/gplx/xowa/pages/skins/Xopg_xtn_skin_mgr.java rename to 400_xowa/src/gplx/xowa/wikis/pages/skins/Xopg_xtn_skin_mgr.java index ec8e57d58..bbc1fca5d 100644 --- a/400_xowa/src/gplx/xowa/pages/skins/Xopg_xtn_skin_mgr.java +++ b/400_xowa/src/gplx/xowa/wikis/pages/skins/Xopg_xtn_skin_mgr.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.pages.skins; import gplx.*; import gplx.xowa.*; import gplx.xowa.pages.*; +package gplx.xowa.wikis.pages.skins; import gplx.*; import gplx.xowa.*; import gplx.xowa.wikis.*; import gplx.xowa.wikis.pages.*; public class Xopg_xtn_skin_mgr { - private Ordered_hash hash = Ordered_hash_.new_bry_(); + private Ordered_hash hash = Ordered_hash_.New_bry(); public int Count() {return hash.Count();} public void Add(Xopg_xtn_skin_itm itm) {hash.Add_if_dupe_use_1st(itm.Key(), itm);} public Xopg_xtn_skin_itm Get_at(int i) {return (Xopg_xtn_skin_itm)hash.Get_at(i);} diff --git a/400_xowa/src/gplx/xowa/wikis/specials/Xosp_special_mgr.java b/400_xowa/src/gplx/xowa/wikis/specials/Xosp_special_mgr.java index a236b851e..1f1d1ecc5 100644 --- a/400_xowa/src/gplx/xowa/wikis/specials/Xosp_special_mgr.java +++ b/400_xowa/src/gplx/xowa/wikis/specials/Xosp_special_mgr.java @@ -17,9 +17,9 @@ along with this program. If not, see . */ package gplx.xowa.wikis.specials; import gplx.*; import gplx.xowa.*; import gplx.xowa.wikis.*; import gplx.core.net.*; -import gplx.xowa.langs.*; +import gplx.xowa.langs.*; import gplx.xowa.langs.specials.*; import gplx.xowa.specials.*; import gplx.xowa.specials.xowa.file_browsers.*; -import gplx.xowa.gui.*; +import gplx.xowa.guis.*; public class Xosp_special_mgr { private final Xowv_wiki wiki; private final Hash_adp_bry hash; diff --git a/400_xowa/src/gplx/xowa/tdbs/ByteAry_fil.java b/400_xowa/src/gplx/xowa/wikis/tdbs/ByteAry_fil.java similarity index 84% rename from 400_xowa/src/gplx/xowa/tdbs/ByteAry_fil.java rename to 400_xowa/src/gplx/xowa/wikis/tdbs/ByteAry_fil.java index 6c4dd39e9..3748ab5d3 100644 --- a/400_xowa/src/gplx/xowa/tdbs/ByteAry_fil.java +++ b/400_xowa/src/gplx/xowa/wikis/tdbs/ByteAry_fil.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.tdbs; import gplx.*; import gplx.xowa.*; +package gplx.xowa.wikis.tdbs; import gplx.*; import gplx.xowa.*; import gplx.xowa.wikis.*; import gplx.core.primitives.*; public class ByteAry_fil { public List_adp Itms() {return itms;} List_adp itms = List_adp_.new_(); @@ -25,7 +25,7 @@ public class ByteAry_fil { public int Raw_max() {return raw_max;} private int raw_max = Io_mgr.Len_mb; public ByteAry_fil Ini_file(Io_url fil) { this.fil = fil; - raw_bry = Io_mgr.I.LoadFilBry_reuse(fil, raw_bry, raw_len); + raw_bry = Io_mgr.Instance.LoadFilBry_reuse(fil, raw_bry, raw_len); return this; } public Object Xto_itms(Class itm_type) { @@ -35,5 +35,5 @@ public class ByteAry_fil { raw_len.Val_zero_(); return rv; } - public static final ByteAry_fil _ = new ByteAry_fil(); ByteAry_fil() {} + public static final ByteAry_fil Instance = new ByteAry_fil(); ByteAry_fil() {} } diff --git a/400_xowa/src/gplx/xowa/tdbs/Xotdb_dir_info.java b/400_xowa/src/gplx/xowa/wikis/tdbs/Xotdb_dir_info.java similarity index 94% rename from 400_xowa/src/gplx/xowa/tdbs/Xotdb_dir_info.java rename to 400_xowa/src/gplx/xowa/wikis/tdbs/Xotdb_dir_info.java index c9875782f..9ae0baea5 100644 --- a/400_xowa/src/gplx/xowa/tdbs/Xotdb_dir_info.java +++ b/400_xowa/src/gplx/xowa/wikis/tdbs/Xotdb_dir_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.tdbs; import gplx.*; import gplx.xowa.*; +package gplx.xowa.wikis.tdbs; import gplx.*; import gplx.xowa.*; import gplx.xowa.wikis.*; import gplx.ios.*; public class Xotdb_dir_info { public Xotdb_dir_info(boolean ns_root, byte id, String name) {this.ns_root = ns_root; this.id = id; this.name = name;} diff --git a/400_xowa/src/gplx/xowa/tdbs/Xotdb_dir_info_.java b/400_xowa/src/gplx/xowa/wikis/tdbs/Xotdb_dir_info_.java similarity index 95% rename from 400_xowa/src/gplx/xowa/tdbs/Xotdb_dir_info_.java rename to 400_xowa/src/gplx/xowa/wikis/tdbs/Xotdb_dir_info_.java index fe51eeb0b..f5e019e34 100644 --- a/400_xowa/src/gplx/xowa/tdbs/Xotdb_dir_info_.java +++ b/400_xowa/src/gplx/xowa/wikis/tdbs/Xotdb_dir_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.tdbs; import gplx.*; import gplx.xowa.*; +package gplx.xowa.wikis.tdbs; import gplx.*; import gplx.xowa.*; import gplx.xowa.wikis.*; public class Xotdb_dir_info_ { public static String Tid_name(byte tid) { switch (tid) { diff --git a/400_xowa/src/gplx/xowa/tdbs/Xotdb_fsys_mgr.java b/400_xowa/src/gplx/xowa/wikis/tdbs/Xotdb_fsys_mgr.java similarity index 88% rename from 400_xowa/src/gplx/xowa/tdbs/Xotdb_fsys_mgr.java rename to 400_xowa/src/gplx/xowa/wikis/tdbs/Xotdb_fsys_mgr.java index 53171eb24..05b081f5e 100644 --- a/400_xowa/src/gplx/xowa/tdbs/Xotdb_fsys_mgr.java +++ b/400_xowa/src/gplx/xowa/wikis/tdbs/Xotdb_fsys_mgr.java @@ -15,10 +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.tdbs; import gplx.*; import gplx.xowa.*; +package gplx.xowa.wikis.tdbs; import gplx.*; import gplx.xowa.*; import gplx.xowa.wikis.*; import gplx.xowa.bldrs.*; -import gplx.xowa.nss.*; -import gplx.xowa.tdbs.utils.*; +import gplx.xowa.wikis.nss.*; +import gplx.xowa.wikis.tdbs.utils.*; public class Xotdb_fsys_mgr { private final Io_url root_dir; private final Xow_ns_mgr ns_mgr; public Xotdb_fsys_mgr(Io_url root_dir, Xow_ns_mgr ns_mgr) { @@ -38,7 +38,7 @@ public class Xotdb_fsys_mgr { public Io_url Url_ns_fil(byte tid, int ns_id, int fil_idx) { Xotdb_dir_info dir_info = dir_regy[tid]; String dir_name = dir_info.Name() + Xotdb_dir_info.Wtr_dir(dir_info.Ext_tid()); - return Xotdb_fsys_mgr.Url_fil(ns_dir.GenSubDir_nest(Int_.Xto_str_pad_bgn_zero(ns_id, 3), dir_name), fil_idx, dir_regy[tid].Ext_bry()); + return Xotdb_fsys_mgr.Url_fil(ns_dir.GenSubDir_nest(Int_.To_str_pad_bgn_zero(ns_id, 3), dir_name), fil_idx, dir_regy[tid].Ext_bry()); } public Io_url Url_site_fil(byte tid, int fil_idx) {return Xotdb_fsys_mgr.Url_fil(Url_site_dir(tid), fil_idx, Xotdb_dir_info_.Bry_xdat);} public Io_url Url_site_reg(byte tid) {return Url_site_dir(tid).GenSubFil(Xotdb_dir_info_.Name_reg_fil);} @@ -54,7 +54,7 @@ public class Xotdb_fsys_mgr { Scan_dirs_ns(ns_dir, ns_mgr); } private static void Scan_dirs_zip(Xotdb_fsys_mgr fsys_mgr, byte id) { - Io_url[] dirs = Io_mgr.I.QueryDir_args(fsys_mgr.Ns_dir().GenSubDir_nest("000")).FilPath_("*page*").DirOnly_().Recur_(false).ExecAsUrlAry(); + Io_url[] dirs = Io_mgr.Instance.QueryDir_args(fsys_mgr.Ns_dir().GenSubDir_nest("000")).FilPath_("*page*").DirOnly_().Recur_(false).ExecAsUrlAry(); int len = dirs.length; byte tid = gplx.ios.Io_stream_.Tid_raw; // needed for Xoa_xowa_exec_tst for (int i = 0; i < len; i++) { @@ -68,7 +68,7 @@ public class Xotdb_fsys_mgr { fsys_mgr.Tdb_dir_regy()[id].Ext_tid_(tid); } private static Hash_adp Scan_dirs_ns(Io_url ns_dir, Xow_ns_mgr ns_mgr) { - Io_url[] ns_dirs = Io_mgr.I.QueryDir_args(ns_dir).Recur_(false).DirOnly_().ExecAsUrlAry(); + Io_url[] ns_dirs = Io_mgr.Instance.QueryDir_args(ns_dir).Recur_(false).DirOnly_().ExecAsUrlAry(); int len = ns_dirs.length; Hash_adp rv = Hash_adp_.new_(); for (int i = 0; i < len; i++) { diff --git a/400_xowa/src/gplx/xowa/tdbs/Xotdb_fsys_mgr_tst.java b/400_xowa/src/gplx/xowa/wikis/tdbs/Xotdb_fsys_mgr_tst.java similarity index 89% rename from 400_xowa/src/gplx/xowa/tdbs/Xotdb_fsys_mgr_tst.java rename to 400_xowa/src/gplx/xowa/wikis/tdbs/Xotdb_fsys_mgr_tst.java index c164c7a20..632200744 100644 --- a/400_xowa/src/gplx/xowa/tdbs/Xotdb_fsys_mgr_tst.java +++ b/400_xowa/src/gplx/xowa/wikis/tdbs/Xotdb_fsys_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.tdbs; import gplx.*; import gplx.xowa.*; -import org.junit.*; import gplx.xowa.tdbs.*; -import gplx.xowa.nss.*; +package gplx.xowa.wikis.tdbs; import gplx.*; import gplx.xowa.*; import gplx.xowa.wikis.*; +import org.junit.*; import gplx.xowa.wikis.tdbs.*; +import gplx.xowa.wikis.nss.*; public class Xotdb_fsys_mgr_tst { @Before public void init() {fxt.Clear();} private final Xow_fsys_mgr_fxt fxt = new Xow_fsys_mgr_fxt(); @Test public void Basic() { diff --git a/400_xowa/src/gplx/xowa/tdbs/Xotdb_page_itm_.java b/400_xowa/src/gplx/xowa/wikis/tdbs/Xotdb_page_itm_.java similarity index 96% rename from 400_xowa/src/gplx/xowa/tdbs/Xotdb_page_itm_.java rename to 400_xowa/src/gplx/xowa/wikis/tdbs/Xotdb_page_itm_.java index 83c970750..8cf9329c4 100644 --- a/400_xowa/src/gplx/xowa/tdbs/Xotdb_page_itm_.java +++ b/400_xowa/src/gplx/xowa/wikis/tdbs/Xotdb_page_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.tdbs; import gplx.*; import gplx.xowa.*; +package gplx.xowa.wikis.tdbs; import gplx.*; import gplx.xowa.*; import gplx.xowa.wikis.*; import gplx.core.brys.*; import gplx.xowa.wikis.data.tbls.*; public class Xotdb_page_itm_ { static final int Txt_len_id = 5, Txt_len_fil_idx = 5, Txt_len_row_idx = 5, Txt_len_type = 1, Txt_len_text_len = 5; diff --git a/400_xowa/src/gplx/xowa/tdbs/Xotdb_page_raw_parser.java b/400_xowa/src/gplx/xowa/wikis/tdbs/Xotdb_page_raw_parser.java similarity index 90% rename from 400_xowa/src/gplx/xowa/tdbs/Xotdb_page_raw_parser.java rename to 400_xowa/src/gplx/xowa/wikis/tdbs/Xotdb_page_raw_parser.java index 9c53adf44..d7479d963 100644 --- a/400_xowa/src/gplx/xowa/tdbs/Xotdb_page_raw_parser.java +++ b/400_xowa/src/gplx/xowa/wikis/tdbs/Xotdb_page_raw_parser.java @@ -15,15 +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.tdbs; import gplx.*; import gplx.xowa.*; +package gplx.xowa.wikis.tdbs; import gplx.*; import gplx.xowa.*; import gplx.xowa.wikis.*; import gplx.core.brys.*; import gplx.ios.*; import gplx.xowa.wikis.data.tbls.*; -import gplx.xowa.nss.*; -import gplx.xowa.tdbs.bldrs.*; +import gplx.xowa.wikis.nss.*; +import gplx.xowa.wikis.tdbs.bldrs.*; public class Xotdb_page_raw_parser { public void Init(Gfo_usr_dlg usr_dlg, Xowe_wiki wiki, int load_len) { this.wiki = wiki; ns_mgr = wiki.Ns_mgr(); rdr = new Io_line_rdr(usr_dlg, new Io_url[1]); - rdr.Line_dlm_(Byte_ascii.Tab).Load_len_(load_len).Key_gen_(Io_line_rdr_key_gen_all._); + rdr.Line_dlm_(Byte_ascii.Tab).Load_len_(load_len).Key_gen_(Io_line_rdr_key_gen_all.Instance); } public void Init_ns(Xow_ns ns_itm) {this.ns_itm = ns_itm;} public void Reset_one(Io_url url) { @@ -32,7 +32,7 @@ public class Xotdb_page_raw_parser { public void Load(Gfo_usr_dlg usr_dlg, Xowe_wiki wiki, Xow_ns ns_itm, Io_url[] urls, int load_len) { this.wiki = wiki; ns_mgr = wiki.Ns_mgr(); this.ns_itm = ns_itm; rdr = new Io_line_rdr(usr_dlg, urls); - rdr.Line_dlm_(Byte_ascii.Tab).Load_len_(load_len).Key_gen_(Io_line_rdr_key_gen_all._); + rdr.Line_dlm_(Byte_ascii.Tab).Load_len_(load_len).Key_gen_(Io_line_rdr_key_gen_all.Instance); } Io_line_rdr rdr; Xowe_wiki wiki; Xow_ns_mgr ns_mgr; Xow_ns ns_itm; public void Skip_first_line() { rdr.Read_next(); diff --git a/400_xowa/src/gplx/xowa/tdbs/bldrs/Io_line_rdr_key_gen_all.java b/400_xowa/src/gplx/xowa/wikis/tdbs/bldrs/Io_line_rdr_key_gen_all.java similarity index 78% rename from 400_xowa/src/gplx/xowa/tdbs/bldrs/Io_line_rdr_key_gen_all.java rename to 400_xowa/src/gplx/xowa/wikis/tdbs/bldrs/Io_line_rdr_key_gen_all.java index ed4001f2c..da4c5a6d5 100644 --- a/400_xowa/src/gplx/xowa/tdbs/bldrs/Io_line_rdr_key_gen_all.java +++ b/400_xowa/src/gplx/xowa/wikis/tdbs/bldrs/Io_line_rdr_key_gen_all.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.tdbs.bldrs; import gplx.*; import gplx.xowa.*; import gplx.xowa.tdbs.*; +package gplx.xowa.wikis.tdbs.bldrs; import gplx.*; import gplx.xowa.*; import gplx.xowa.wikis.*; import gplx.xowa.wikis.tdbs.*; import gplx.ios.*; public class Io_line_rdr_key_gen_all implements Io_line_rdr_key_gen { public void Gen(Io_line_rdr bfr) { bfr.Key_pos_bgn_(bfr.Itm_pos_bgn()).Key_pos_end_(bfr.Itm_pos_end()); } - public static final Io_line_rdr_key_gen_all _ = new Io_line_rdr_key_gen_all(); Io_line_rdr_key_gen_all() {} + public static final Io_line_rdr_key_gen_all Instance = new Io_line_rdr_key_gen_all(); Io_line_rdr_key_gen_all() {} } diff --git a/400_xowa/src/gplx/xowa/tdbs/hives/Bry_comparer_bgn_eos.java b/400_xowa/src/gplx/xowa/wikis/tdbs/hives/Bry_comparer_bgn_eos.java similarity index 88% rename from 400_xowa/src/gplx/xowa/tdbs/hives/Bry_comparer_bgn_eos.java rename to 400_xowa/src/gplx/xowa/wikis/tdbs/hives/Bry_comparer_bgn_eos.java index 05a66317f..acf053e7f 100644 --- a/400_xowa/src/gplx/xowa/tdbs/hives/Bry_comparer_bgn_eos.java +++ b/400_xowa/src/gplx/xowa/wikis/tdbs/hives/Bry_comparer_bgn_eos.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.tdbs.hives; import gplx.*; import gplx.xowa.*; import gplx.xowa.tdbs.*; +package gplx.xowa.wikis.tdbs.hives; import gplx.*; import gplx.xowa.*; import gplx.xowa.wikis.*; import gplx.xowa.wikis.tdbs.*; public class Bry_comparer_bgn_eos implements gplx.lists.ComparerAble { public Bry_comparer_bgn_eos(int bgn) {this.bgn = bgn;} private int bgn; public int compare(Object lhsObj, Object rhsObj) { diff --git a/400_xowa/src/gplx/xowa/tdbs/hives/Xoa_hive_mgr.java b/400_xowa/src/gplx/xowa/wikis/tdbs/hives/Xoa_hive_mgr.java similarity index 87% rename from 400_xowa/src/gplx/xowa/tdbs/hives/Xoa_hive_mgr.java rename to 400_xowa/src/gplx/xowa/wikis/tdbs/hives/Xoa_hive_mgr.java index 54e55c2c0..cb9dcd108 100644 --- a/400_xowa/src/gplx/xowa/tdbs/hives/Xoa_hive_mgr.java +++ b/400_xowa/src/gplx/xowa/wikis/tdbs/hives/Xoa_hive_mgr.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.tdbs.hives; import gplx.*; import gplx.xowa.*; import gplx.xowa.tdbs.*; +package gplx.xowa.wikis.tdbs.hives; import gplx.*; import gplx.xowa.*; import gplx.xowa.wikis.*; import gplx.xowa.wikis.tdbs.*; import gplx.core.primitives.*; -import gplx.xowa.tdbs.xdats.*; +import gplx.xowa.wikis.tdbs.xdats.*; public class Xoa_hive_mgr { public Xoa_hive_mgr(Xoae_app app) {this.app = app;} private Xoae_app app; public Xob_xdat_itm Itm() {return xdat_itm;} @@ -32,7 +32,7 @@ public class Xoa_hive_mgr { Bry_bfr tmp_bfr = app.Utl__bfr_mkr().Get_m001(); byte[] tmp_bry = tmp_bfr.Bfr(); bry_len.Val_zero_(); Io_url file = Xotdb_fsys_mgr.Url_fil(hive_root, fil_idx, fil_ext_bry); - tmp_bry = Io_mgr.I.LoadFilBry_reuse(file, tmp_bry, bry_len); + tmp_bry = Io_mgr.Instance.LoadFilBry_reuse(file, tmp_bry, bry_len); xdat_rdr.Clear().Parse(tmp_bry, bry_len.Val(), file); tmp_bfr.Clear_and_rls(); return xdat_rdr; diff --git a/400_xowa/src/gplx/xowa/tdbs/hives/Xob_hive_mgr.java b/400_xowa/src/gplx/xowa/wikis/tdbs/hives/Xob_hive_mgr.java similarity index 95% rename from 400_xowa/src/gplx/xowa/tdbs/hives/Xob_hive_mgr.java rename to 400_xowa/src/gplx/xowa/wikis/tdbs/hives/Xob_hive_mgr.java index 11c39de49..96ac24891 100644 --- a/400_xowa/src/gplx/xowa/tdbs/hives/Xob_hive_mgr.java +++ b/400_xowa/src/gplx/xowa/wikis/tdbs/hives/Xob_hive_mgr.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.tdbs.hives; import gplx.*; import gplx.xowa.*; import gplx.xowa.tdbs.*; +package gplx.xowa.wikis.tdbs.hives; import gplx.*; import gplx.xowa.*; import gplx.xowa.wikis.*; import gplx.xowa.wikis.tdbs.*; import gplx.ios.*; import gplx.xowa.wikis.data.tbls.*; import gplx.xowa.bldrs.sqls.*; -import gplx.xowa.nss.*; +import gplx.xowa.wikis.nss.*; import gplx.xowa.specials.*; import gplx.xowa.specials.allPages.*; -import gplx.xowa.tdbs.xdats.*; +import gplx.xowa.wikis.tdbs.xdats.*; public class Xob_hive_mgr { public Xob_hive_mgr(Xowe_wiki wiki) {this.wiki = wiki; this.fsys_mgr = wiki.Tdb_fsys_mgr();} private Xowe_wiki wiki; Xotdb_fsys_mgr fsys_mgr; public void Clear() {regy.Clear(); xdat.Clear();} @@ -194,5 +194,5 @@ public class Xob_hive_mgr { xdat_fil.Insert(tmp_bfr, row); xdat_fil.Save(xdat_url); tmp_bfr.Mkr_rls(); - } private Xob_xdat_file xdat = new Xob_xdat_file(); Io_zip_mgr zip_mgr = Io_zip_mgr_base._; + } private Xob_xdat_file xdat = new Xob_xdat_file(); Io_zip_mgr zip_mgr = Io_zip_mgr_base.Instance; } diff --git a/400_xowa/src/gplx/xowa/tdbs/hives/Xob_hive_mgr_tst.java b/400_xowa/src/gplx/xowa/wikis/tdbs/hives/Xob_hive_mgr_tst.java similarity index 89% rename from 400_xowa/src/gplx/xowa/tdbs/hives/Xob_hive_mgr_tst.java rename to 400_xowa/src/gplx/xowa/wikis/tdbs/hives/Xob_hive_mgr_tst.java index 7d8654406..d68303391 100644 --- a/400_xowa/src/gplx/xowa/tdbs/hives/Xob_hive_mgr_tst.java +++ b/400_xowa/src/gplx/xowa/wikis/tdbs/hives/Xob_hive_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.tdbs.hives; import gplx.*; import gplx.xowa.*; import gplx.xowa.tdbs.*; +package gplx.xowa.wikis.tdbs.hives; import gplx.*; import gplx.xowa.*; import gplx.xowa.wikis.*; import gplx.xowa.wikis.tdbs.*; import org.junit.*; public class Xob_hive_mgr_tst { Xow_hive_mgr_fxt fxt = new Xow_hive_mgr_fxt(); diff --git a/400_xowa/src/gplx/xowa/tdbs/hives/Xow_hive_mgr_fxt.java b/400_xowa/src/gplx/xowa/wikis/tdbs/hives/Xow_hive_mgr_fxt.java similarity index 89% rename from 400_xowa/src/gplx/xowa/tdbs/hives/Xow_hive_mgr_fxt.java rename to 400_xowa/src/gplx/xowa/wikis/tdbs/hives/Xow_hive_mgr_fxt.java index b6c0df592..dd7ef5763 100644 --- a/400_xowa/src/gplx/xowa/tdbs/hives/Xow_hive_mgr_fxt.java +++ b/400_xowa/src/gplx/xowa/wikis/tdbs/hives/Xow_hive_mgr_fxt.java @@ -15,10 +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.tdbs.hives; import gplx.*; import gplx.xowa.*; import gplx.xowa.tdbs.*; -import gplx.xowa.nss.*; +package gplx.xowa.wikis.tdbs.hives; import gplx.*; import gplx.xowa.*; import gplx.xowa.wikis.*; import gplx.xowa.wikis.tdbs.*; +import gplx.xowa.wikis.nss.*; import gplx.xowa.wikis.data.tbls.*; -import gplx.xowa.tdbs.xdats.*; +import gplx.xowa.wikis.tdbs.xdats.*; public class Xow_hive_mgr_fxt { public void Clear() { if (hive_mgr == null) { @@ -27,7 +27,7 @@ public class Xow_hive_mgr_fxt { hive_mgr = new Xob_hive_mgr(wiki); } hive_mgr.Clear(); - Io_mgr.I.InitEngine_mem(); + Io_mgr.Instance.InitEngine_mem(); } private Xob_hive_mgr hive_mgr; Xoae_app app; public Xowe_wiki Wiki() {return wiki;} private Xowe_wiki wiki; public void Find_nearby(String key, int count, boolean include_redirects, String... expd) { @@ -53,7 +53,7 @@ public class Xow_hive_mgr_fxt { for (int fil_idx = 0; fil_idx < files; fil_idx++) { for (int ttl_idx = 0; ttl_idx < ttls_per_file; ttl_idx++) { tmp_bfr.Add_byte(ltr).Add_int_fixed(ttl_idx, ttl_bry_len); - byte[] ttl_bry = tmp_bfr.Xto_bry_and_clear(); + byte[] ttl_bry = tmp_bfr.To_bry_and_clear(); if (ttl_idx == 0) ttl_0 = ttl_bry; else if (ttl_idx == ttls_per_file - 1) ttl_n = ttl_bry; Xotdb_page_itm_.Txt_ttl_save(xdat_wtr.Bfr(), id++, 0, ttl_idx, ttl_idx % 2 == 1, 1, ttl_bry); @@ -88,12 +88,12 @@ public class Xow_hive_mgr_fxt { .Add_base85_len_5(itm_len) .Add_byte_pipe() .Add_base85_len_5(ns_id) .Add_byte_pipe() .Add_str(ttl) .Add_byte_nl(); - byte[] row = bfr.Xto_bry_and_clear(); + byte[] row = bfr.To_bry_and_clear(); bfr.Mkr_rls(); hive_mgr.Create(Xotdb_dir_info_.Tid_id, key_bry, row); } public Xow_hive_mgr_fxt Load(String url, String... expd) { - String actl = Io_mgr.I.LoadFilStr(url); + String actl = Io_mgr.Instance.LoadFilStr(url); Tfds.Eq_ary_str(expd, String_.SplitLines_nl(actl)); return this; } @@ -108,7 +108,7 @@ class Xob_reg_wtr { .Add_int_variable(itm_count).Add_byte(Byte_ascii.Nl); } public void Flush(Io_url url) { - Io_mgr.I.SaveFilBfr(url, bfr); -// Tfds.Write(url.Raw() + "\n" + Io_mgr.I.LoadFilStr(url)); + Io_mgr.Instance.SaveFilBfr(url, bfr); +// Tfds.Write(url.Raw() + "\n" + Io_mgr.Instance.LoadFilStr(url)); } } diff --git a/400_xowa/src/gplx/xowa/tdbs/hives/Xowd_hive_mgr.java b/400_xowa/src/gplx/xowa/wikis/tdbs/hives/Xowd_hive_mgr.java similarity index 89% rename from 400_xowa/src/gplx/xowa/tdbs/hives/Xowd_hive_mgr.java rename to 400_xowa/src/gplx/xowa/wikis/tdbs/hives/Xowd_hive_mgr.java index 284f4a4e0..1f9352a9f 100644 --- a/400_xowa/src/gplx/xowa/tdbs/hives/Xowd_hive_mgr.java +++ b/400_xowa/src/gplx/xowa/wikis/tdbs/hives/Xowd_hive_mgr.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.tdbs.hives; import gplx.*; import gplx.xowa.*; import gplx.xowa.tdbs.*; -import gplx.xowa.nss.*; -import gplx.xowa.tdbs.xdats.*; +package gplx.xowa.wikis.tdbs.hives; import gplx.*; import gplx.xowa.*; import gplx.xowa.wikis.*; import gplx.xowa.wikis.tdbs.*; +import gplx.xowa.wikis.nss.*; +import gplx.xowa.wikis.tdbs.xdats.*; public class Xowd_hive_mgr { public Xowd_hive_mgr(Xowe_wiki wiki, byte dir_tid) { this.wiki = wiki; fsys_mgr = wiki.Tdb_fsys_mgr(); this.dir_tid = dir_tid; @@ -36,7 +36,7 @@ public class Xowd_hive_mgr { reg_mgr.Update_add(fil_idx, key); } Io_url url = fsys_mgr.Url_ns_fil(dir_tid, ns.Id(), fil_idx); - byte[] bry = Io_mgr.I.LoadFilBry(url); + byte[] bry = Io_mgr.Instance.LoadFilBry(url); Xob_xdat_file xdat = new Xob_xdat_file(); if (bry != Bry_.Empty) xdat.Parse(bry, bry.length, url); @@ -60,7 +60,7 @@ public class Xowd_hive_mgr { reg_mgr.Update_add(fil_idx, key); } Io_url url = fsys_mgr.Url_site_fil(dir_tid, fil_idx); - byte[] bry = Io_mgr.I.LoadFilBry(url); + byte[] bry = Io_mgr.Instance.LoadFilBry(url); Xob_xdat_file xdat = new Xob_xdat_file(); if (bry != Bry_.Empty) xdat.Parse(bry, bry.length, url); @@ -79,7 +79,7 @@ public class Xowd_hive_mgr { if (new_key != null) reg_save = reg_mgr.Update_change(fil_idx, old_key, new_key); Io_url url = fsys_mgr.Url_ns_fil(dir_tid, ns.Id(), fil_idx); - byte[] bry = Io_mgr.I.LoadFilBry(url); + byte[] bry = Io_mgr.Instance.LoadFilBry(url); Xob_xdat_file xdat = new Xob_xdat_file(); if (bry != Bry_.Empty) xdat.Parse(bry, bry.length, url); diff --git a/400_xowa/src/gplx/xowa/tdbs/hives/Xowd_hive_mgr_tst.java b/400_xowa/src/gplx/xowa/wikis/tdbs/hives/Xowd_hive_mgr_tst.java similarity index 90% rename from 400_xowa/src/gplx/xowa/tdbs/hives/Xowd_hive_mgr_tst.java rename to 400_xowa/src/gplx/xowa/wikis/tdbs/hives/Xowd_hive_mgr_tst.java index 956f805f1..d1327ab7d 100644 --- a/400_xowa/src/gplx/xowa/tdbs/hives/Xowd_hive_mgr_tst.java +++ b/400_xowa/src/gplx/xowa/wikis/tdbs/hives/Xowd_hive_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.tdbs.hives; import gplx.*; import gplx.xowa.*; import gplx.xowa.tdbs.*; +package gplx.xowa.wikis.tdbs.hives; import gplx.*; import gplx.xowa.*; import gplx.xowa.wikis.*; import gplx.xowa.wikis.tdbs.*; import org.junit.*; -import gplx.xowa.nss.*; +import gplx.xowa.wikis.nss.*; public class Xowd_hive_mgr_tst { Xowd_hive_mgr_fxt fxt = new Xowd_hive_mgr_fxt(); @Before public void init() {fxt.Clear();} @@ -71,12 +71,12 @@ class Xowd_hive_mgr_fxt { } public Xowd_hive_mgr_fxt Tst_reg(String expd) { Io_url file_orig = Io_url_.mem_fil_("mem/xowa/wiki/en.wikipedia.org/ns/000/title/reg.csv"); - Tfds.Eq_str_lines(expd, Io_mgr.I.LoadFilStr(file_orig)); + Tfds.Eq_str_lines(expd, Io_mgr.Instance.LoadFilStr(file_orig)); return this; } public Xowd_hive_mgr_fxt Tst_fil(int fil, String expd) { Io_url url = wiki.Tdb_fsys_mgr().Url_ns_fil(Xotdb_dir_info_.Tid_page, Xow_ns_.Id_main, fil); - Tfds.Eq_str_lines(expd, Io_mgr.I.LoadFilStr(url)); + Tfds.Eq_str_lines(expd, Io_mgr.Instance.LoadFilStr(url)); return this; } public Xowd_hive_mgr_fxt Update(String key, String data) { diff --git a/400_xowa/src/gplx/xowa/tdbs/hives/Xowd_hive_regy_itm.java b/400_xowa/src/gplx/xowa/wikis/tdbs/hives/Xowd_hive_regy_itm.java similarity index 88% rename from 400_xowa/src/gplx/xowa/tdbs/hives/Xowd_hive_regy_itm.java rename to 400_xowa/src/gplx/xowa/wikis/tdbs/hives/Xowd_hive_regy_itm.java index cb9b5abcb..516a088c5 100644 --- a/400_xowa/src/gplx/xowa/tdbs/hives/Xowd_hive_regy_itm.java +++ b/400_xowa/src/gplx/xowa/wikis/tdbs/hives/Xowd_hive_regy_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.tdbs.hives; import gplx.*; import gplx.xowa.*; import gplx.xowa.tdbs.*; +package gplx.xowa.wikis.tdbs.hives; import gplx.*; import gplx.xowa.*; import gplx.xowa.wikis.*; import gplx.xowa.wikis.tdbs.*; import gplx.core.primitives.*; public class Xowd_hive_regy_itm {// csv file with the format of "idx|bgn|end|count"; EX: "0|AA|AZ|120\n1|BA|BZ|110" public Xowd_hive_regy_itm(int idx) {this.idx = idx;} @@ -26,7 +26,7 @@ public class Xowd_hive_regy_itm {// csv file with the format of "idx|bgn|end|cou public static Xowd_hive_regy_itm[] parse_fil_(ByteAry_fil utl) { List_adp rv = utl.Itms(); byte[] ary = utl.Raw_bry(); - int ary_len = utl.Raw_len(); if (ary_len == 0) return Xowd_hive_regy_itm.Ary_empty; //throw Err_mgr._.fmt_("xowa.wiki.data", "title_registry_file_not_found", "title_registry file not found: ~{0}", utl.Fil().Xto_api()); + int ary_len = utl.Raw_len(); if (ary_len == 0) return Xowd_hive_regy_itm.Ary_empty; //throw Err_mgr.Instance.fmt_("xowa.wiki.data", "title_registry_file_not_found", "title_registry file not found: ~{0}", utl.Fil().Xto_api()); Int_obj_ref pos = Int_obj_ref.zero_(); while (pos.Val() < ary_len) { Xowd_hive_regy_itm file = new Xowd_hive_regy_itm(); diff --git a/400_xowa/src/gplx/xowa/tdbs/hives/Xowd_regy_mgr.java b/400_xowa/src/gplx/xowa/wikis/tdbs/hives/Xowd_regy_mgr.java similarity index 87% rename from 400_xowa/src/gplx/xowa/tdbs/hives/Xowd_regy_mgr.java rename to 400_xowa/src/gplx/xowa/wikis/tdbs/hives/Xowd_regy_mgr.java index a92fd509c..cf174e716 100644 --- a/400_xowa/src/gplx/xowa/tdbs/hives/Xowd_regy_mgr.java +++ b/400_xowa/src/gplx/xowa/wikis/tdbs/hives/Xowd_regy_mgr.java @@ -15,20 +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.tdbs.hives; import gplx.*; import gplx.xowa.*; import gplx.xowa.tdbs.*; +package gplx.xowa.wikis.tdbs.hives; import gplx.*; import gplx.xowa.*; import gplx.xowa.wikis.*; import gplx.xowa.wikis.tdbs.*; import gplx.lists.*; public class Xowd_regy_mgr { public static final int Not_found = -1; public Xowd_regy_mgr() {} public Xowd_regy_mgr(Io_url fil) {this.Init(fil);} public Io_url Fil() {return fil;} Io_url fil; - public void Init(Io_url fil) {this.fil = fil; files_ary = Xowd_hive_regy_itm.parse_fil_(ByteAry_fil._.Ini_file(fil));} + public void Init(Io_url fil) {this.fil = fil; files_ary = Xowd_hive_regy_itm.parse_fil_(ByteAry_fil.Instance.Ini_file(fil));} public Xowd_hive_regy_itm[] Files_ary() {return files_ary;} private Xowd_hive_regy_itm[] files_ary; public void Clear() {files_ary = Xowd_hive_regy_itm.Ary_empty;} public int Files_find(byte[] key) { if (files_ary.length == 0) return Xowd_regy_mgr.Regy_null; // NOTE: FindSlot does not accept empty ary; returning 0, b/c Find returns likely file_idx; EX: regy of 0|B|D and 1|F|H; A returns 0; Z returns 1 return CompareAble_.FindSlot(comparer, files_ary, comparer_itm.End_(key)); - } ComparerAble comparer = Xowd_ttl_file_comparer_end._; Xowd_hive_regy_itm comparer_itm = Xowd_hive_regy_itm.tmp_().Count_(1); + } ComparerAble comparer = Xowd_ttl_file_comparer_end.Instance; Xowd_hive_regy_itm comparer_itm = Xowd_hive_regy_itm.tmp_().Count_(1); public Xowd_hive_regy_itm Create(byte[] key) { int itm_idx = files_ary.length; files_ary = (Xowd_hive_regy_itm[])Array_.Resize(files_ary, itm_idx + 1); @@ -70,7 +70,7 @@ public class Xowd_regy_mgr { Xowd_hive_regy_itm itm = files_ary[i]; itm.Srl_save(bfr); } - Io_mgr.I.SaveFilBfr(fil, bfr); + Io_mgr.Instance.SaveFilBfr(fil, bfr); } public static final int Regy_null = -1; } diff --git a/400_xowa/src/gplx/xowa/tdbs/hives/Xowd_regy_mgr_tst.java b/400_xowa/src/gplx/xowa/wikis/tdbs/hives/Xowd_regy_mgr_tst.java similarity index 92% rename from 400_xowa/src/gplx/xowa/tdbs/hives/Xowd_regy_mgr_tst.java rename to 400_xowa/src/gplx/xowa/wikis/tdbs/hives/Xowd_regy_mgr_tst.java index 346921b30..8d393ae4c 100644 --- a/400_xowa/src/gplx/xowa/tdbs/hives/Xowd_regy_mgr_tst.java +++ b/400_xowa/src/gplx/xowa/wikis/tdbs/hives/Xowd_regy_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.tdbs.hives; import gplx.*; import gplx.xowa.*; import gplx.xowa.tdbs.*; +package gplx.xowa.wikis.tdbs.hives; import gplx.*; import gplx.xowa.*; import gplx.xowa.wikis.*; import gplx.xowa.wikis.tdbs.*; import org.junit.*; public class Xowd_regy_mgr_tst { Xowd_regy_mgr_fxt fxt = new Xowd_regy_mgr_fxt(); @@ -61,7 +61,7 @@ class Xowd_regy_mgr_fxt { public void Clear() { if (mgr == null) { mgr_url = Io_url_.mem_fil_("mem/hive_regy.csv"); - Io_mgr.I.DeleteFil(mgr_url); + Io_mgr.Instance.DeleteFil(mgr_url); mgr = new Xowd_regy_mgr(mgr_url); } else { @@ -72,13 +72,13 @@ class Xowd_regy_mgr_fxt { public Xowd_regy_mgr_fxt Update_add(int fil_idx, String key) {mgr.Update_add(fil_idx, Bry_.new_a7(key)); return this;} public Xowd_regy_mgr_fxt Update_change(int fil_idx, String old_key, String new_key) {mgr.Update_change(fil_idx, Bry_.new_a7(old_key), Bry_.new_a7(new_key)); return this;} public Xowd_regy_mgr_fxt Load(String lines) { - Io_mgr.I.SaveFilStr(mgr_url, lines); + Io_mgr.Instance.SaveFilStr(mgr_url, lines); mgr = new Xowd_regy_mgr(mgr_url); return this; } public Xowd_regy_mgr_fxt Save() {mgr.Save(); return this;} public Xowd_regy_mgr_fxt Tst_file(String expd) { - Tfds.Eq_str_lines(expd, Io_mgr.I.LoadFilStr(mgr_url)); + Tfds.Eq_str_lines(expd, Io_mgr.Instance.LoadFilStr(mgr_url)); return this; } public Xowd_regy_mgr_fxt Tst_find(String find, int expd) { diff --git a/400_xowa/src/gplx/xowa/tdbs/hives/Xowd_ttl_file_comparer_end.java b/400_xowa/src/gplx/xowa/wikis/tdbs/hives/Xowd_ttl_file_comparer_end.java similarity index 82% rename from 400_xowa/src/gplx/xowa/tdbs/hives/Xowd_ttl_file_comparer_end.java rename to 400_xowa/src/gplx/xowa/wikis/tdbs/hives/Xowd_ttl_file_comparer_end.java index 64be3c5ab..b3d381d3e 100644 --- a/400_xowa/src/gplx/xowa/tdbs/hives/Xowd_ttl_file_comparer_end.java +++ b/400_xowa/src/gplx/xowa/wikis/tdbs/hives/Xowd_ttl_file_comparer_end.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.tdbs.hives; import gplx.*; import gplx.xowa.*; import gplx.xowa.tdbs.*; +package gplx.xowa.wikis.tdbs.hives; import gplx.*; import gplx.xowa.*; import gplx.xowa.wikis.*; import gplx.xowa.wikis.tdbs.*; public class Xowd_ttl_file_comparer_end implements gplx.lists.ComparerAble { public int compare(Object lhsObj, Object rhsObj) { Xowd_hive_regy_itm lhs = (Xowd_hive_regy_itm)lhsObj, rhs = (Xowd_hive_regy_itm)rhsObj; @@ -23,5 +23,5 @@ public class Xowd_ttl_file_comparer_end implements gplx.lists.ComparerAble { //else if (rhs.Count() == 0) return Bry_.Compare(lhs.End(), rhs.End()); // NOTE: this line mirrors the top, but is actually covered by below else return Bry_.Compare(lhs.End(), rhs.End()); } - public static final Xowd_ttl_file_comparer_end _ = new Xowd_ttl_file_comparer_end(); Xowd_ttl_file_comparer_end() {} + public static final Xowd_ttl_file_comparer_end Instance = new Xowd_ttl_file_comparer_end(); Xowd_ttl_file_comparer_end() {} } diff --git a/400_xowa/src/gplx/xowa/tdbs/metas/Xof_meta_fil.java b/400_xowa/src/gplx/xowa/wikis/tdbs/metas/Xof_meta_fil.java similarity index 88% rename from 400_xowa/src/gplx/xowa/tdbs/metas/Xof_meta_fil.java rename to 400_xowa/src/gplx/xowa/wikis/tdbs/metas/Xof_meta_fil.java index fe860e3f5..ccd8b36ab 100644 --- a/400_xowa/src/gplx/xowa/tdbs/metas/Xof_meta_fil.java +++ b/400_xowa/src/gplx/xowa/wikis/tdbs/metas/Xof_meta_fil.java @@ -15,10 +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.tdbs.metas; import gplx.*; import gplx.xowa.*; import gplx.xowa.tdbs.*; +package gplx.xowa.wikis.tdbs.metas; import gplx.*; import gplx.xowa.*; import gplx.xowa.wikis.*; import gplx.xowa.wikis.tdbs.*; import gplx.core.flds.*; public class Xof_meta_fil { - private final Ordered_hash itms = Ordered_hash_.new_bry_(); + private final Ordered_hash itms = Ordered_hash_.New_bry(); public Xof_meta_fil(Xof_meta_mgr meta_mgr, byte[] md5) {this.meta_mgr = meta_mgr; this.md5 = md5;} public Xof_meta_mgr Owner_mgr() {return meta_mgr;} private final Xof_meta_mgr meta_mgr; public byte[] Md5() {return md5;} private final byte[] md5; @@ -56,6 +56,6 @@ public class Xof_meta_fil { for (int i = 0; i < depth; i++) Bld_url_bfr.Add_byte(md5[i]); Bld_url_bfr.Add(Bry_url_ext); - return Io_url_.new_fil_(Bld_url_bfr.Xto_str_and_clear()); + return Io_url_.new_fil_(Bld_url_bfr.To_str_and_clear()); } static final byte[] Bry_url_ext = Bry_.new_a7(".csv"); static Bry_bfr Bld_url_bfr = Bry_bfr.new_(260); // 260 is max path of url } diff --git a/400_xowa/src/gplx/xowa/tdbs/metas/Xof_meta_fil_tst.java b/400_xowa/src/gplx/xowa/wikis/tdbs/metas/Xof_meta_fil_tst.java similarity index 89% rename from 400_xowa/src/gplx/xowa/tdbs/metas/Xof_meta_fil_tst.java rename to 400_xowa/src/gplx/xowa/wikis/tdbs/metas/Xof_meta_fil_tst.java index f4a295fcf..c2de270ce 100644 --- a/400_xowa/src/gplx/xowa/tdbs/metas/Xof_meta_fil_tst.java +++ b/400_xowa/src/gplx/xowa/wikis/tdbs/metas/Xof_meta_fil_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.tdbs.metas; import gplx.*; import gplx.xowa.*; import gplx.xowa.tdbs.*; +package gplx.xowa.wikis.tdbs.metas; import gplx.*; import gplx.xowa.*; import gplx.xowa.wikis.*; import gplx.xowa.wikis.tdbs.*; import org.junit.*; import gplx.xowa.files.*; public class Xof_meta_fil_tst { Xof_meta_fil_fxt fxt = new Xof_meta_fil_fxt(); diff --git a/400_xowa/src/gplx/xowa/tdbs/metas/Xof_meta_itm.java b/400_xowa/src/gplx/xowa/wikis/tdbs/metas/Xof_meta_itm.java similarity index 96% rename from 400_xowa/src/gplx/xowa/tdbs/metas/Xof_meta_itm.java rename to 400_xowa/src/gplx/xowa/wikis/tdbs/metas/Xof_meta_itm.java index c72bc107f..490e64169 100644 --- a/400_xowa/src/gplx/xowa/tdbs/metas/Xof_meta_itm.java +++ b/400_xowa/src/gplx/xowa/wikis/tdbs/metas/Xof_meta_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.tdbs.metas; import gplx.*; import gplx.xowa.*; import gplx.xowa.tdbs.*; +package gplx.xowa.wikis.tdbs.metas; import gplx.*; import gplx.xowa.*; import gplx.xowa.wikis.*; import gplx.xowa.wikis.tdbs.*; import gplx.core.flds.*; import gplx.xowa.files.*; import gplx.xowa.files.repos.*; import gplx.xowa.parsers.utils.*; import gplx.xowa.parsers.lnkis.*; diff --git a/400_xowa/src/gplx/xowa/tdbs/metas/Xof_meta_mgr.java b/400_xowa/src/gplx/xowa/wikis/tdbs/metas/Xof_meta_mgr.java similarity index 90% rename from 400_xowa/src/gplx/xowa/tdbs/metas/Xof_meta_mgr.java rename to 400_xowa/src/gplx/xowa/wikis/tdbs/metas/Xof_meta_mgr.java index 39f884c9b..fc8693800 100644 --- a/400_xowa/src/gplx/xowa/tdbs/metas/Xof_meta_mgr.java +++ b/400_xowa/src/gplx/xowa/wikis/tdbs/metas/Xof_meta_mgr.java @@ -15,10 +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.tdbs.metas; import gplx.*; import gplx.xowa.*; import gplx.xowa.tdbs.*; +package gplx.xowa.wikis.tdbs.metas; import gplx.*; import gplx.xowa.*; import gplx.xowa.wikis.*; import gplx.xowa.wikis.tdbs.*; import gplx.core.flds.*; public class Xof_meta_mgr implements GfoInvkAble { - private Object[] root = new Object[16]; private final Ordered_hash dirty_fils = Ordered_hash_.new_bry_(); + private Object[] root = new Object[16]; private final Ordered_hash dirty_fils = Ordered_hash_.New_bry(); private final Gfo_fld_rdr rdr = Gfo_fld_rdr.xowa_(); private final Xof_meta_thumb_parser parser = new Xof_meta_thumb_parser(); public Xof_meta_mgr(Xowe_wiki wiki) {this.wiki = wiki; this.root_dir = wiki.Appe().Fsys_mgr().File_dir().GenSubDir_nest("#meta", wiki.Domain_str());} public Xowe_wiki Wiki() {return wiki;} private Xowe_wiki wiki; @@ -58,16 +58,16 @@ public class Xof_meta_mgr implements GfoInvkAble { Io_url fil_url = Xof_meta_fil.Bld_url(root_dir, fil.Md5(), depth); fil.Save(wtr); if (append_only) - Io_mgr.I.AppendFilBfr(fil_url, tmp_bfr); + Io_mgr.Instance.AppendFilBfr(fil_url, tmp_bfr); else - Io_mgr.I.SaveFilBfr(fil_url, tmp_bfr); + Io_mgr.Instance.SaveFilBfr(fil_url, tmp_bfr); } dirty_fils.Clear(); if (clear) this.Clear(); } Gfo_fld_wtr wtr = Gfo_fld_wtr.xowa_(); Xof_meta_fil Load(byte[] md5) { Io_url fil_url = Xof_meta_fil.Bld_url(root_dir, md5, depth); - byte[] bry = Io_mgr.I.LoadFilBry(fil_url); if (bry == Bry_.Empty) return null; + byte[] bry = Io_mgr.Instance.LoadFilBry(fil_url); if (bry == Bry_.Empty) return null; rdr.Ini(bry, 0); Xof_meta_fil rv = Bld_new(root, depth - 1, this, md5, 0); // NOTE: need to register file before loading it; defect wherein 2 files with same hash prefix would skip one b/c Loaded file was not registered; EX.WS: en.wikiquote.org/The Hitchhiker's Guide to the Galaxy; NMMP_dolphin_with_locator.jpeg, da6f95736ed249f371f30bf5f1205fbd; Hoags_object.jpg, daed4a54e48e4266bd2f2763b7c4018c rv.Load(rdr, parser); @@ -80,7 +80,7 @@ public class Xof_meta_mgr implements GfoInvkAble { } private static final String Invk_regy_depth_ = "depth_"; static final String GRP_KEY = "xowa.file_regy."; private static Xof_meta_fil Get_fil_or_null_recur(Object[] ary, int depth_max, byte[] md5, int md5_idx) { - int ary_idx = Int_.Xto_int_hex(md5[md5_idx]); + int ary_idx = Int_.To_int_hex(md5[md5_idx]); if (ary_idx < 0 || ary_idx > 15) throw Err_.new_wo_type("md5_not_valid", "md5", String_.new_u8(md5), "idx", md5_idx); Object o = ary[ary_idx]; if (o == null) return null; @@ -91,7 +91,7 @@ public class Xof_meta_mgr implements GfoInvkAble { return Get_fil_or_null_recur(nxt, depth_max, md5, md5_idx + 1); } private static Xof_meta_fil Bld_new(Object[] ary, int depth_max, Xof_meta_mgr regy_mgr, byte[] md5, int md5_idx) { - int ary_idx = Int_.Xto_int_hex(md5[md5_idx]); + int ary_idx = Int_.To_int_hex(md5[md5_idx]); if (ary_idx < 0 || ary_idx > 15) throw Err_.new_wo_type("md5_not_valid", "md", String_.new_u8(md5), "idx", md5_idx); Object o = ary[ary_idx]; if (md5_idx == depth_max) { // leaf; create itm diff --git a/400_xowa/src/gplx/xowa/tdbs/metas/Xof_meta_mgr_tst.java b/400_xowa/src/gplx/xowa/wikis/tdbs/metas/Xof_meta_mgr_tst.java similarity index 86% rename from 400_xowa/src/gplx/xowa/tdbs/metas/Xof_meta_mgr_tst.java rename to 400_xowa/src/gplx/xowa/wikis/tdbs/metas/Xof_meta_mgr_tst.java index a1dc2addb..b17d0578f 100644 --- a/400_xowa/src/gplx/xowa/tdbs/metas/Xof_meta_mgr_tst.java +++ b/400_xowa/src/gplx/xowa/wikis/tdbs/metas/Xof_meta_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.tdbs.metas; import gplx.*; import gplx.xowa.*; import gplx.xowa.tdbs.*; +package gplx.xowa.wikis.tdbs.metas; import gplx.*; import gplx.xowa.*; import gplx.xowa.wikis.*; import gplx.xowa.wikis.tdbs.*; import org.junit.*; import gplx.core.primitives.*; import gplx.gfui.*; import gplx.xowa.files.*; @@ -62,14 +62,14 @@ class Xof_file_regy_fxt { Xof_meta_mgr regy_mgr; byte[] md5_(byte[] name) {return Xof_file_wkr_.Md5(name);} public void Ini() { - Io_mgr.I.InitEngine_mem(); + Io_mgr.Instance.InitEngine_mem(); Xoae_app app = Xoa_app_fxt.app_(); Xowe_wiki wiki = Xoa_app_fxt.wiki_tst_(app); regy_mgr = new Xof_meta_mgr(wiki); regy_mgr.Clear(); regy_mgr.Depth_(2); } - public Xof_file_regy_fxt Save_fil(String url, String... data) {Io_mgr.I.SaveFilStr(Io_url_.mem_fil_(url), String_.Concat_lines_nl(data)); return this;} + public Xof_file_regy_fxt Save_fil(String url, String... data) {Io_mgr.Instance.SaveFilStr(Io_url_.mem_fil_(url), String_.Concat_lines_nl(data)); return this;} public Xof_file_regy_fxt Set(String name_str, int w, int h, boolean orig_exists, String... thumbs) { byte[] name = Bry_.new_u8(name_str); byte[] md5 = md5_(name); @@ -82,14 +82,14 @@ class Xof_file_regy_fxt { int len = ary.length; Xof_meta_thumb[] rv = new Xof_meta_thumb[len]; for (int i = 0; i < len; i++) { - int[] size = Int_ary_parser._.Parse_ary(ary[i], Byte_ascii.Comma); + int[] size = Int_ary_parser.Instance.Parse_ary(ary[i], Byte_ascii.Comma); rv[i] = new Xof_meta_thumb().Width_(size[0]).Height_(size[1]).Exists_y_(); } return rv; } public Xof_file_regy_fxt tst_Save(String url_str, String... expd_ary) { regy_mgr.Save(); - Tfds.Eq_ary_str(expd_ary, Io_mgr.I.LoadFilStr_args(Io_url_.new_fil_(url_str)).ExecAsStrAryLnx()); + Tfds.Eq_ary_str(expd_ary, Io_mgr.Instance.LoadFilStr_args(Io_url_.new_fil_(url_str)).ExecAsStrAryLnx()); return this; } } diff --git a/400_xowa/src/gplx/xowa/tdbs/metas/Xof_meta_thumb.java b/400_xowa/src/gplx/xowa/wikis/tdbs/metas/Xof_meta_thumb.java similarity index 94% rename from 400_xowa/src/gplx/xowa/tdbs/metas/Xof_meta_thumb.java rename to 400_xowa/src/gplx/xowa/wikis/tdbs/metas/Xof_meta_thumb.java index b207f8014..b689f2592 100644 --- a/400_xowa/src/gplx/xowa/tdbs/metas/Xof_meta_thumb.java +++ b/400_xowa/src/gplx/xowa/wikis/tdbs/metas/Xof_meta_thumb.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.tdbs.metas; import gplx.*; import gplx.xowa.*; import gplx.xowa.tdbs.*; +package gplx.xowa.wikis.tdbs.metas; import gplx.*; import gplx.xowa.*; import gplx.xowa.wikis.*; import gplx.xowa.wikis.tdbs.*; public class Xof_meta_thumb { public Xof_meta_thumb() {} public Xof_meta_thumb(byte exists, int width, int height, int[] seeks) {this.exists = exists; this.width = width; this.height = height; this.seeks = seeks; if (seeks == null) seeks = Int_.Ary_empty;} diff --git a/400_xowa/src/gplx/xowa/tdbs/metas/Xof_meta_thumb_parser.java b/400_xowa/src/gplx/xowa/wikis/tdbs/metas/Xof_meta_thumb_parser.java similarity index 94% rename from 400_xowa/src/gplx/xowa/tdbs/metas/Xof_meta_thumb_parser.java rename to 400_xowa/src/gplx/xowa/wikis/tdbs/metas/Xof_meta_thumb_parser.java index 379122905..d295dd35c 100644 --- a/400_xowa/src/gplx/xowa/tdbs/metas/Xof_meta_thumb_parser.java +++ b/400_xowa/src/gplx/xowa/wikis/tdbs/metas/Xof_meta_thumb_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.tdbs.metas; import gplx.*; import gplx.xowa.*; import gplx.xowa.tdbs.*; +package gplx.xowa.wikis.tdbs.metas; import gplx.*; import gplx.xowa.*; import gplx.xowa.wikis.*; import gplx.xowa.wikis.tdbs.*; import gplx.core.primitives.*; public class Xof_meta_thumb_parser extends Obj_ary_parser_base { Number_parser num_parser = new Number_parser(); diff --git a/400_xowa/src/gplx/xowa/tdbs/metas/Xof_meta_thumb_parser_tst.java b/400_xowa/src/gplx/xowa/wikis/tdbs/metas/Xof_meta_thumb_parser_tst.java similarity index 92% rename from 400_xowa/src/gplx/xowa/tdbs/metas/Xof_meta_thumb_parser_tst.java rename to 400_xowa/src/gplx/xowa/wikis/tdbs/metas/Xof_meta_thumb_parser_tst.java index cc9143cae..a8d41bd59 100644 --- a/400_xowa/src/gplx/xowa/tdbs/metas/Xof_meta_thumb_parser_tst.java +++ b/400_xowa/src/gplx/xowa/wikis/tdbs/metas/Xof_meta_thumb_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.tdbs.metas; import gplx.*; import gplx.xowa.*; import gplx.xowa.tdbs.*; +package gplx.xowa.wikis.tdbs.metas; import gplx.*; import gplx.xowa.*; import gplx.xowa.wikis.*; import gplx.xowa.wikis.tdbs.*; import org.junit.*; import gplx.core.strings.*; public class Xof_meta_thumb_parser_tst { Xof_meta_thumb_parser parser = new Xof_meta_thumb_parser(); @@ -42,7 +42,7 @@ public class Xof_meta_thumb_parser_tst { } sb.Add_char_nl(); } - return sb.Xto_str_and_clear(); + return sb.To_str_and_clear(); } String_bldr sb = String_bldr_.new_(); // Xof_meta_img_chkr img_(int w, int h, params int[] seeks) {return new Xof_meta_img_chkr().Width_(w).Height_(h).Seeks_(seeks);} Xof_meta_thumb itm_y_(int w, int h, int... seeks) {return new Xof_meta_thumb(Xof_meta_itm.Exists_y, w, h, seeks);} diff --git a/400_xowa/src/gplx/xowa/tdbs/stats/Xob_stat_itm.java b/400_xowa/src/gplx/xowa/wikis/tdbs/stats/Xob_stat_itm.java similarity index 76% rename from 400_xowa/src/gplx/xowa/tdbs/stats/Xob_stat_itm.java rename to 400_xowa/src/gplx/xowa/wikis/tdbs/stats/Xob_stat_itm.java index 7601a4a02..76de0648e 100644 --- a/400_xowa/src/gplx/xowa/tdbs/stats/Xob_stat_itm.java +++ b/400_xowa/src/gplx/xowa/wikis/tdbs/stats/Xob_stat_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.tdbs.stats; import gplx.*; import gplx.xowa.*; import gplx.xowa.tdbs.*; +package gplx.xowa.wikis.tdbs.stats; import gplx.*; import gplx.xowa.*; import gplx.xowa.wikis.*; import gplx.xowa.wikis.tdbs.*; import gplx.core.strings.*; public class Xob_stat_itm implements NewAble { public String Ns() {return ns;} private String ns; @@ -30,14 +30,14 @@ public class Xob_stat_itm implements NewAble { } public void To_str(String_bldr sb) { XtoStr_fld(sb, ns).XtoStr_fld(sb, Fils).XtoStr_fld(sb, Size).XtoStr_fld(sb, SizeMax).XtoStr_fld(sb, SizeMaxIdx).XtoStr_fld(sb, SizeMin); - sb.Add(Int_.Xto_str(SizeMinIdx)); + sb.Add(Int_.To_str(SizeMinIdx)); } - Xob_stat_itm XtoStr_fld(String_bldr sb, long v) {sb.Add(Long_.Xto_str(v)).Add(Xob_stat_itm.Dlm); return this;} - Xob_stat_itm XtoStr_fld(String_bldr sb, int v) {sb.Add(Int_.Xto_str(v)).Add(Xob_stat_itm.Dlm); return this;} + Xob_stat_itm XtoStr_fld(String_bldr sb, long v) {sb.Add(Long_.To_str(v)).Add(Xob_stat_itm.Dlm); return this;} + Xob_stat_itm XtoStr_fld(String_bldr sb, int v) {sb.Add(Int_.To_str(v)).Add(Xob_stat_itm.Dlm); return this;} Xob_stat_itm XtoStr_fld(String_bldr sb, String v) {sb.Add(v).Add(Xob_stat_itm.Dlm); return this;} public Xob_stat_itm(String ns) { this.ns = ns; } - public Object NewByKey(Object o) {return new Xob_stat_itm((String)o);} public static final Xob_stat_itm _ = new Xob_stat_itm(); Xob_stat_itm() {} + public Object NewByKey(Object o) {return new Xob_stat_itm((String)o);} public static final Xob_stat_itm Instance = new Xob_stat_itm(); Xob_stat_itm() {} public static final char Dlm = '|'; } diff --git a/400_xowa/src/gplx/xowa/tdbs/stats/Xob_stat_mgr.java b/400_xowa/src/gplx/xowa/wikis/tdbs/stats/Xob_stat_mgr.java similarity index 85% rename from 400_xowa/src/gplx/xowa/tdbs/stats/Xob_stat_mgr.java rename to 400_xowa/src/gplx/xowa/wikis/tdbs/stats/Xob_stat_mgr.java index ac0f4ba9b..cdc8bba0c 100644 --- a/400_xowa/src/gplx/xowa/tdbs/stats/Xob_stat_mgr.java +++ b/400_xowa/src/gplx/xowa/wikis/tdbs/stats/Xob_stat_mgr.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.tdbs.stats; import gplx.*; import gplx.xowa.*; import gplx.xowa.tdbs.*; +package gplx.xowa.wikis.tdbs.stats; import gplx.*; import gplx.xowa.*; import gplx.xowa.wikis.*; import gplx.xowa.wikis.tdbs.*; import gplx.core.strings.*; -import gplx.xowa.nss.*; +import gplx.xowa.wikis.nss.*; public class Xob_stat_mgr { public Xob_stat_type GetOrNew(byte tid) { Xob_stat_type rv = (Xob_stat_type)regy.Get_by(tid); @@ -39,7 +39,7 @@ public class Xob_stat_mgr { for (int i = 0; i < regy.Count(); i++) { Xob_stat_type typ = (Xob_stat_type)regy.Get_at(i); Xob_stat_itm itm = (Xob_stat_itm)typ.GetOrNew(ns); - sb.Add(Int_.Xto_str_pad_bgn_zero(itm.Fils, 5)).Add(" "); + sb.Add(Int_.To_str_pad_bgn_zero(itm.Fils, 5)).Add(" "); } sb.Add_str_w_crlf(ns); } @@ -54,7 +54,7 @@ public class Xob_stat_mgr { return sb.To_str(); } String[] GetNmsAry(Xow_ns_mgr nsMgr) { - Ordered_hash nsRegy = Ordered_hash_.new_(); + Ordered_hash nsRegy = Ordered_hash_.New(); for (int i = 0; i < regy.Count(); i++) { Xob_stat_type typ = (Xob_stat_type)regy.Get_at(i); for (int j = 0; j < typ.Count(); j++) { @@ -65,5 +65,5 @@ public class Xob_stat_mgr { } return (String[])nsRegy.To_ary(String.class); } - Ordered_hash regy = Ordered_hash_.new_(); + Ordered_hash regy = Ordered_hash_.New(); } diff --git a/400_xowa/src/gplx/xowa/tdbs/stats/Xob_stat_type.java b/400_xowa/src/gplx/xowa/wikis/tdbs/stats/Xob_stat_type.java similarity index 77% rename from 400_xowa/src/gplx/xowa/tdbs/stats/Xob_stat_type.java rename to 400_xowa/src/gplx/xowa/wikis/tdbs/stats/Xob_stat_type.java index 308cbca78..6001ca7d9 100644 --- a/400_xowa/src/gplx/xowa/tdbs/stats/Xob_stat_type.java +++ b/400_xowa/src/gplx/xowa/wikis/tdbs/stats/Xob_stat_type.java @@ -15,12 +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.tdbs.stats; import gplx.*; import gplx.xowa.*; import gplx.xowa.tdbs.*; -import gplx.core.strings.*; import gplx.xowa.tdbs.*; +package gplx.xowa.wikis.tdbs.stats; import gplx.*; import gplx.xowa.*; import gplx.xowa.wikis.*; import gplx.xowa.wikis.tdbs.*; +import gplx.core.strings.*; import gplx.xowa.wikis.tdbs.*; public class Xob_stat_type { public byte Tid() {return tid;} private byte tid; public Xob_stat_type(byte tid) {this.tid = tid;} - public Xob_stat_itm GetOrNew(String ns) {return (Xob_stat_itm)regy.Get_by_or_new(ns, Xob_stat_itm._);} + public Xob_stat_itm GetOrNew(String ns) {return (Xob_stat_itm)regy.Get_by_or_new(ns, Xob_stat_itm.Instance);} public Xob_stat_itm GetAt(int i) {return (Xob_stat_itm)regy.Get_at(i);} public int Count() {return regy.Count();} public void To_str(String_bldr sb) { @@ -31,6 +31,6 @@ public class Xob_stat_type { sb.Add(Byte_ascii.Nl); } } - Ordered_hash regy = Ordered_hash_.new_(); - public static final Xob_stat_type _ = new Xob_stat_type(); Xob_stat_type() {} + Ordered_hash regy = Ordered_hash_.New(); + public static final Xob_stat_type Instance = new Xob_stat_type(); Xob_stat_type() {} } diff --git a/400_xowa/src/gplx/xowa/tdbs/utils/Xos_url_gen.java b/400_xowa/src/gplx/xowa/wikis/tdbs/utils/Xos_url_gen.java similarity index 89% rename from 400_xowa/src/gplx/xowa/tdbs/utils/Xos_url_gen.java rename to 400_xowa/src/gplx/xowa/wikis/tdbs/utils/Xos_url_gen.java index b0946a476..90f852b4b 100644 --- a/400_xowa/src/gplx/xowa/tdbs/utils/Xos_url_gen.java +++ b/400_xowa/src/gplx/xowa/wikis/tdbs/utils/Xos_url_gen.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.tdbs.utils; import gplx.*; import gplx.xowa.*; import gplx.xowa.tdbs.*; +package gplx.xowa.wikis.tdbs.utils; import gplx.*; import gplx.xowa.*; import gplx.xowa.wikis.*; import gplx.xowa.wikis.tdbs.*; import gplx.ios.*; public class Xos_url_gen implements Io_url_gen { public Xos_url_gen(Io_url root) {this.root = root;} Io_url root; int idx = 0; @@ -42,7 +42,7 @@ public class Xos_url_gen implements Io_url_gen { } tmp_bfr.Add_int_fixed(idx, 10); tmp_bfr.Add(ext); - return Io_url_.new_fil_(tmp_bfr.Xto_str_and_clear()); + return Io_url_.new_fil_(tmp_bfr.To_str_and_clear()); } private static Bry_bfr tmp_bfr = Bry_bfr.reset_(256); } diff --git a/400_xowa/src/gplx/xowa/tdbs/utils/Xos_url_gen_tst.java b/400_xowa/src/gplx/xowa/wikis/tdbs/utils/Xos_url_gen_tst.java similarity index 90% rename from 400_xowa/src/gplx/xowa/tdbs/utils/Xos_url_gen_tst.java rename to 400_xowa/src/gplx/xowa/wikis/tdbs/utils/Xos_url_gen_tst.java index 06e868653..ced4f58af 100644 --- a/400_xowa/src/gplx/xowa/tdbs/utils/Xos_url_gen_tst.java +++ b/400_xowa/src/gplx/xowa/wikis/tdbs/utils/Xos_url_gen_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.tdbs.utils; import gplx.*; import gplx.xowa.*; import gplx.xowa.tdbs.*; +package gplx.xowa.wikis.tdbs.utils; import gplx.*; import gplx.xowa.*; import gplx.xowa.wikis.*; import gplx.xowa.wikis.tdbs.*; import org.junit.*; import gplx.ios.*; public class Xos_url_gen_tst { diff --git a/400_xowa/src/gplx/xowa/tdbs/xdats/Xob_xdat_file.java b/400_xowa/src/gplx/xowa/wikis/tdbs/xdats/Xob_xdat_file.java similarity index 95% rename from 400_xowa/src/gplx/xowa/tdbs/xdats/Xob_xdat_file.java rename to 400_xowa/src/gplx/xowa/wikis/tdbs/xdats/Xob_xdat_file.java index 640cc6078..022c8abe9 100644 --- a/400_xowa/src/gplx/xowa/tdbs/xdats/Xob_xdat_file.java +++ b/400_xowa/src/gplx/xowa/wikis/tdbs/xdats/Xob_xdat_file.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.tdbs.xdats; import gplx.*; import gplx.xowa.*; import gplx.xowa.tdbs.*; +package gplx.xowa.wikis.tdbs.xdats; import gplx.*; import gplx.xowa.*; import gplx.xowa.wikis.*; import gplx.xowa.wikis.tdbs.*; import gplx.ios.*; public class Xob_xdat_file { public byte[] Src() {return src;} private byte[] src; @@ -35,7 +35,7 @@ public class Xob_xdat_file { bfr.Add_mid(src, itm_0_bgn, itm.Itm_bgn()); bfr.Add(v); bfr.Add_mid(src, itm.Itm_end() + 1, src.length); // NOTE: + 1 to skip nl - src = bfr.Xto_bry_and_clear(); + src = bfr.To_bry_and_clear(); return this; } byte[][] Src_extract_brys(int ary_len) { @@ -63,7 +63,7 @@ public class Xob_xdat_file { itm_bgn = itm_end; bfr.Add(bry); } - src = bfr.Xto_bry_and_clear(); + src = bfr.To_bry_and_clear(); } public void Insert(Bry_bfr bfr, byte[] itm) { int ary_len = itm_ends.length; @@ -97,7 +97,7 @@ public class Xob_xdat_file { } if (insert) bfr.Add(new_itm); itm_0_bgn = (ary_len * Len_idx_itm) + Len_itm_dlm; - src = bfr.Xto_bry_and_clear(); + src = bfr.To_bry_and_clear(); } static final byte Dlm_hdr_fld = Byte_ascii.Pipe, Dlm_row = Byte_ascii.Nl; public void Save(Io_url url) { Bry_bfr bfr = Bry_bfr.new_(); @@ -192,7 +192,7 @@ public class Xob_xdat_file { bfr.Add(row); bfr.Add(dlm); } - return bfr.Xto_bry_and_clear(); + return bfr.To_bry_and_clear(); } } class Xob_xdat_file_ { diff --git a/400_xowa/src/gplx/xowa/tdbs/xdats/Xob_xdat_file_tst.java b/400_xowa/src/gplx/xowa/wikis/tdbs/xdats/Xob_xdat_file_tst.java similarity index 93% rename from 400_xowa/src/gplx/xowa/tdbs/xdats/Xob_xdat_file_tst.java rename to 400_xowa/src/gplx/xowa/wikis/tdbs/xdats/Xob_xdat_file_tst.java index a247c1dec..46b1ef2dd 100644 --- a/400_xowa/src/gplx/xowa/tdbs/xdats/Xob_xdat_file_tst.java +++ b/400_xowa/src/gplx/xowa/wikis/tdbs/xdats/Xob_xdat_file_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.tdbs.xdats; import gplx.*; import gplx.xowa.*; import gplx.xowa.tdbs.*; -import org.junit.*; import gplx.core.strings.*; import gplx.xowa.tdbs.hives.*; +package gplx.xowa.wikis.tdbs.xdats; import gplx.*; import gplx.xowa.*; import gplx.xowa.wikis.*; import gplx.xowa.wikis.tdbs.*; +import org.junit.*; import gplx.core.strings.*; import gplx.xowa.wikis.tdbs.hives.*; public class Xob_xdat_file_tst { @Test public void Find() { Xob_xdat_file rdr = rdr_("!!!!%|!!!!%|!!!!%|!!!!%|!!!!%|", "0|b", "1|d", "2|f", "3|h", "4|j"); @@ -95,7 +95,7 @@ public class Xob_xdat_file_tst { private void Chk_file(Xob_xdat_file rdr, String expd) { Io_url url = Io_url_.new_fil_("mem/test.xdat"); rdr.Save(url); - String actl = Io_mgr.I.LoadFilStr(url); + String actl = Io_mgr.Instance.LoadFilStr(url); Tfds.Eq_str_lines(expd, actl); } private void tst_Find(Xob_xdat_file rdr, String find, int expd, boolean exact) { diff --git a/400_xowa/src/gplx/xowa/tdbs/xdats/Xob_xdat_file_wtr.java b/400_xowa/src/gplx/xowa/wikis/tdbs/xdats/Xob_xdat_file_wtr.java similarity index 93% rename from 400_xowa/src/gplx/xowa/tdbs/xdats/Xob_xdat_file_wtr.java rename to 400_xowa/src/gplx/xowa/wikis/tdbs/xdats/Xob_xdat_file_wtr.java index f8c56f4b8..ef1cbed9d 100644 --- a/400_xowa/src/gplx/xowa/tdbs/xdats/Xob_xdat_file_wtr.java +++ b/400_xowa/src/gplx/xowa/wikis/tdbs/xdats/Xob_xdat_file_wtr.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.tdbs.xdats; import gplx.*; import gplx.xowa.*; import gplx.xowa.tdbs.*; -import gplx.ios.*; import gplx.xowa.tdbs.*; +package gplx.xowa.wikis.tdbs.xdats; import gplx.*; import gplx.xowa.*; import gplx.xowa.wikis.*; import gplx.xowa.wikis.tdbs.*; +import gplx.ios.*; import gplx.xowa.wikis.tdbs.*; public class Xob_xdat_file_wtr { public static Xob_xdat_file_wtr new_file_(int fil_max, Io_url root_dir) {return new Xob_xdat_file_wtr(fil_max, root_dir, Io_stream_.Tid_raw);} public static Xob_xdat_file_wtr new_by_tid_(int fil_max, Io_url root_dir, byte dir_tid, byte tid) {return new Xob_xdat_file_wtr(fil_max, root_dir.GenSubDir(Xotdb_dir_info_.Tid_name(dir_tid) + Xotdb_dir_info.Wtr_dir(tid)), tid);} @@ -82,7 +82,7 @@ public class Xob_xdat_file_wtr { // usr_dlg.Log_many(GRP_KEY, "flush_err", "--ctg exceeds len: expd_len=~{0} actl_len=~{1} url=~{2}", this.Fil_len(), fil_max, fil_url.Xto_api()); // IoStream stream = IoStream_.Null; // try { -// stream = Io_mgr.I.OpenStreamWrite(fil_url); +// stream = Io_mgr.Instance.OpenStreamWrite(fil_url); // if (idx_pos > 0) // write idx; NOTE: if idx written, then .xdat; else .csv // FlushIdx(stream); // stream.Write(bfr.Bry(), 0, bfr.Len()); // write data; @@ -143,6 +143,6 @@ class SortAlgo_quick {// quicksort if (lo < j) Sort_recurse(lo, j); if (i < hi) Sort_recurse(i, hi); } - public static final SortAlgo_quick _ = new SortAlgo_quick(); SortAlgo_quick() {} + public static final SortAlgo_quick Instance = new SortAlgo_quick(); SortAlgo_quick() {} } diff --git a/400_xowa/src/gplx/xowa/tdbs/xdats/Xob_xdat_file_wtr_tst.java b/400_xowa/src/gplx/xowa/wikis/tdbs/xdats/Xob_xdat_file_wtr_tst.java similarity index 87% rename from 400_xowa/src/gplx/xowa/tdbs/xdats/Xob_xdat_file_wtr_tst.java rename to 400_xowa/src/gplx/xowa/wikis/tdbs/xdats/Xob_xdat_file_wtr_tst.java index 22ddcbe36..7d6f81f34 100644 --- a/400_xowa/src/gplx/xowa/tdbs/xdats/Xob_xdat_file_wtr_tst.java +++ b/400_xowa/src/gplx/xowa/wikis/tdbs/xdats/Xob_xdat_file_wtr_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.tdbs.xdats; import gplx.*; import gplx.xowa.*; import gplx.xowa.tdbs.*; +package gplx.xowa.wikis.tdbs.xdats; import gplx.*; import gplx.xowa.*; import gplx.xowa.wikis.*; import gplx.xowa.wikis.tdbs.*; import org.junit.*; public class Xob_xdat_file_wtr_tst { @Test public void Write() { - Io_mgr.I.InitEngine_mem(); + Io_mgr.Instance.InitEngine_mem(); Io_url dir = Io_url_.mem_dir_("mem/dir"); Xob_xdat_file_wtr wtr = Xob_xdat_file_wtr.new_file_(1000, dir); tst_Write(wtr, "<1", "<1"); @@ -48,7 +48,7 @@ public class Xob_xdat_file_wtr_tst { private void tst_Flush(Xob_xdat_file_wtr wtr, String expd) { Io_url url = wtr.Fil_url(); wtr.Flush(Gfo_usr_dlg_.Test()); - String actl = Io_mgr.I.LoadFilStr(url); + String actl = Io_mgr.Instance.LoadFilStr(url); Tfds.Eq(expd, actl); } } diff --git a/400_xowa/src/gplx/xowa/tdbs/xdats/Xob_xdat_itm.java b/400_xowa/src/gplx/xowa/wikis/tdbs/xdats/Xob_xdat_itm.java similarity index 92% rename from 400_xowa/src/gplx/xowa/tdbs/xdats/Xob_xdat_itm.java rename to 400_xowa/src/gplx/xowa/wikis/tdbs/xdats/Xob_xdat_itm.java index c77e3b608..a2627dcc9 100644 --- a/400_xowa/src/gplx/xowa/tdbs/xdats/Xob_xdat_itm.java +++ b/400_xowa/src/gplx/xowa/wikis/tdbs/xdats/Xob_xdat_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.tdbs.xdats; import gplx.*; import gplx.xowa.*; import gplx.xowa.tdbs.*; +package gplx.xowa.wikis.tdbs.xdats; import gplx.*; import gplx.xowa.*; import gplx.xowa.wikis.*; import gplx.xowa.wikis.tdbs.*; public class Xob_xdat_itm { public byte[] Src() {return src;} public Xob_xdat_itm Src_(byte[] v) {src = v; return this;} private byte[] src; public int Itm_bgn() {return itm_bgn;} public Xob_xdat_itm Itm_bgn_(int v) {itm_bgn = v; return this;} private int itm_bgn = -1; diff --git a/400_xowa/src/gplx/xowa/wikis/ttls/Xow_ttl__anchor_tst.java b/400_xowa/src/gplx/xowa/wikis/ttls/Xow_ttl__anchor_tst.java index 8263e7b40..03df5f5de 100644 --- a/400_xowa/src/gplx/xowa/wikis/ttls/Xow_ttl__anchor_tst.java +++ b/400_xowa/src/gplx/xowa/wikis/ttls/Xow_ttl__anchor_tst.java @@ -22,7 +22,7 @@ public class Xow_ttl__anchor_tst { @Test public void Anch_y() {fxt.Init_ttl("a#b") .Expd_full_txt("A").Expd_page_txt("A").Expd_anch_txt("b").Test();} @Test public void Anch_only() {fxt.Init_ttl("#a") .Expd_full_txt("").Expd_page_txt("").Expd_anch_txt("a").Test();} @Test public void Anchor_fails() { // PURPOSE: :#batch:Main Page causes ttl to fail b/c # is treated as anchor; DATE:2013-01-02 - fxt.Wiki().Xwiki_mgr().Add_full(Bry_.new_a7("#batch"), Bry_.new_a7("none")); + fxt.Wiki().Xwiki_mgr().Add_by_atrs(Bry_.new_a7("#batch"), Bry_.new_a7("none")); fxt.Init_ttl(":#batch:Main Page").Expd_full_txt("Main Page").Test(); } @Test public void Anchor_angles() {// PURPOSE: angles in anchor should be encoded; DATE: 2013-01-23 diff --git a/400_xowa/src/gplx/xowa/wikis/ttls/Xow_ttl__basic_tst.java b/400_xowa/src/gplx/xowa/wikis/ttls/Xow_ttl__basic_tst.java index e036d0434..52fc77775 100644 --- a/400_xowa/src/gplx/xowa/wikis/ttls/Xow_ttl__basic_tst.java +++ b/400_xowa/src/gplx/xowa/wikis/ttls/Xow_ttl__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.wikis.ttls; import gplx.*; import gplx.xowa.*; import gplx.xowa.wikis.*; -import org.junit.*; import gplx.xowa.nss.*; +import org.junit.*; import gplx.xowa.wikis.nss.*; public class Xow_ttl__basic_tst { @Before public void init() {fxt.Reset();} private Xow_ttl_fxt fxt = new Xow_ttl_fxt(); @Test public void Ns() {fxt.Init_ttl("Help:Test") .Expd_ns_id(Xow_ns_.Id_help).Expd_page_txt("Test").Test();} diff --git a/400_xowa/src/gplx/xowa/wikis/ttls/Xow_ttl__xwik_tst.java b/400_xowa/src/gplx/xowa/wikis/ttls/Xow_ttl__xwik_tst.java index 8f871599a..0e49da2ea 100644 --- a/400_xowa/src/gplx/xowa/wikis/ttls/Xow_ttl__xwik_tst.java +++ b/400_xowa/src/gplx/xowa/wikis/ttls/Xow_ttl__xwik_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.wikis.ttls; import gplx.*; import gplx.xowa.*; import gplx.xowa.wikis.*; -import org.junit.*; import gplx.xowa.nss.*; +import org.junit.*; import gplx.xowa.wikis.nss.*; public class Xow_ttl__xwik_tst { @Before public void init() {fxt.Reset();} private Xow_ttl_fxt fxt = new Xow_ttl_fxt(); @Test public void Known() {fxt.Init_ttl("fr:a") .Expd_xwik_txt("fr").Expd_ns_id(Xow_ns_.Id_main).Expd_page_txt("a").Test();} @@ -36,7 +36,7 @@ public class Xow_ttl__xwik_tst { fxt.Init_ttl(":::fr:Test").Expd_xwik_txt("").Expd_page_txt(":fr:Test").Expd_force_literal_link(1).Test(); } @Test public void Ns_should_precede_xwiki() {// PURPOSE: the "Wikipedia" in "Wikipedia:Main page" should be interpreted as namespace, not an alias - fxt.Wiki().Xwiki_mgr().Add_full(Bry_.new_a7("Wikipedia"), Bry_.new_a7("en.wikipedia.org")); + fxt.Wiki().Xwiki_mgr().Add_by_atrs(Bry_.new_a7("Wikipedia"), Bry_.new_a7("en.wikipedia.org")); fxt.Init_ttl("Wikipedia:Test").Expd_xwik_txt("").Expd_full_txt("Wikipedia:Test").Test(); } } \ No newline at end of file diff --git a/400_xowa/src/gplx/xowa/wikis/ttls/Xow_ttl_fxt.java b/400_xowa/src/gplx/xowa/wikis/ttls/Xow_ttl_fxt.java index 41af8d7d4..b54df4eeb 100644 --- a/400_xowa/src/gplx/xowa/wikis/ttls/Xow_ttl_fxt.java +++ b/400_xowa/src/gplx/xowa/wikis/ttls/Xow_ttl_fxt.java @@ -45,7 +45,7 @@ class Xow_ttl_fxt { public Xowe_wiki Wiki() {return fxt.Wiki();} public void Reset() { fxt.Reset(); - fxt.Wiki().Xwiki_mgr().Add_full(Bry_.new_a7("fr"), Bry_.new_a7("fr.wikipedia.org")); + fxt.Wiki().Xwiki_mgr().Add_by_atrs(Bry_.new_a7("fr"), Bry_.new_a7("fr.wikipedia.org")); test_raw = "Test page"; expd_ns_id = Int_.Min_value; expd_xwik_txt = expd_full_txt = expd_full_url = expd_page_txt = expd_page_url = expd_leaf_txt = expd_leaf_url = expd_base_txt = expd_base_url diff --git a/400_xowa/src/gplx/xowa/wikis/ttls/Xow_ttl_parser.java b/400_xowa/src/gplx/xowa/wikis/ttls/Xow_ttl_parser.java index 75b5b2f87..e5c7b1aa3 100644 --- a/400_xowa/src/gplx/xowa/wikis/ttls/Xow_ttl_parser.java +++ b/400_xowa/src/gplx/xowa/wikis/ttls/Xow_ttl_parser.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.wikis.ttls; import gplx.*; import gplx.xowa.*; import gplx.xowa.wikis.*; -import gplx.xowa.nss.*; +import gplx.xowa.wikis.nss.*; public interface Xow_ttl_parser { Xoa_ttl Ttl_parse(byte[] ttl); Xoa_ttl Ttl_parse(int ns_id, byte[] ttl); diff --git a/400_xowa/src/gplx/xowa/wikis/xwikis/Xow_lang_grp.java b/400_xowa/src/gplx/xowa/wikis/xwikis/Xow_lang_grp.java deleted file mode 100644 index b5b07f727..000000000 --- a/400_xowa/src/gplx/xowa/wikis/xwikis/Xow_lang_grp.java +++ /dev/null @@ -1,85 +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.wikis.xwikis; import gplx.*; import gplx.xowa.*; import gplx.xowa.wikis.*; -public class Xow_lang_grp implements GfoInvkAble { - public int Id() {return id;} private int id; - public byte[] Key() {return key;} private byte[] key; - public byte[] Name() {return name;} public Xow_lang_grp Name_(byte[] v) {name = v; return this;} private byte[] name; - public int Sort_idx() {return sort_idx;} public Xow_lang_grp Sort_idx_(int v) {sort_idx = v; return this;} private int sort_idx = 0; - public byte Sort_mode() {return sort_mode;} public Xow_lang_grp Sort_mode_(byte v) {sort_mode = v; return this;} private byte sort_mode = Sort_mode_page_name; - public Xow_lang_itm[] Itms() {if (itms == null) itms = (Xow_lang_itm[])itm_list.To_ary(Xow_lang_itm.class); return itms;} private Xow_lang_itm[] itms; - public int Itms_len() {return this.Itms().length;} - public Xow_lang_itm Itms_get(int i) {return this.Itms()[i];} - public void Itms_add(Xow_lang_itm itm) {itms = null; itm_list.Add(itm);} List_adp itm_list = List_adp_.new_(); - public void Itms_active_len_add_one_() {++itms_active_len;} - public int Itms_active_len() {return itms_active_len;} private int itms_active_len; - public void Itms_reset() { - Xow_lang_itm[] itms_ary = this.Itms(); - int itms_len = itms_ary.length; - for (int i = 0; i < itms_len; i++) - itms_ary[i].Atrs_set(null, false, null); // clear out pre-existing page names; needed b/c this struct is a singleton for entire wiki - itms_active_len = 0; - } - public Bry_fmtr Html_all() {return html_all;} Bry_fmtr html_all; public Xow_lang_grp Html_all_(String s) {html_all = Bry_fmtr.new_(s, "all_name", "grps"); return this;} - public byte[] Html_grp_bgn() {return html_grp_bgn;} private byte[] html_grp_bgn = Bry_.new_a7("\n "); - public byte[] Html_grp_end() {return html_grp_end;} private byte[] html_grp_end = Bry_.new_a7("\n "); - public Bry_fmtr Html_itm() {return html_itm;} Bry_fmtr html_itm; public Xow_lang_grp Html_itm_(String s) {html_itm = Bry_fmtr.new_(s, "lang_code", "lang_domain", "lang_name", "lang_href", "pagename_translation", "page_badge"); return this;} - public void Html_bld(Bry_bfr bfr, Xowe_wiki wiki) { - Xow_lang_itm[] itms_ary = this.Itms(); - if (sort_mode == Xow_lang_grp.Sort_mode_page_name) - Array_.Sort(itms_ary, Xow_lang_itm_sorter_page_name._); - int itms_ary_len = itms_ary.length; - for (int i = 0; i < itms_ary_len; i++) - itms_ary[i].Html_bld(bfr, wiki); - } - public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { - if (ctx.Match(k, Invk_owner)) return lang_mgr; - else if (ctx.Match(k, Invk_name_)) name = m.ReadBry("v"); - else if (ctx.Match(k, Invk_sort_idx_)) sort_idx = m.ReadInt("v"); - else if (ctx.Match(k, Invk_sort_mode_)) sort_mode = (byte)m.ReadInt("v"); - else if (ctx.Match(k, Invk_html_all_)) Html_all_(m.ReadStr("v")); - else if (ctx.Match(k, Invk_html_itm_)) Html_itm_(m.ReadStr("v")); - else return GfoInvkAble_.Rv_unhandled; - return this; - } private static final String Invk_owner = "owner", Invk_name_ = "name_", Invk_sort_mode_ = "sort_mode_", Invk_sort_idx_ = "sort_idx_", Invk_html_all_ = "html_all_", Invk_html_itm_ = "html_itm_"; - public static final byte Sort_mode_lang_idx = 0, Sort_mode_lang_name = 1, Sort_mode_page_name = 2; - public static Xow_lang_grp dflt_(Xow_lang_mgr lang_mgr, int id, byte[] key) { - Xow_lang_grp rv = new Xow_lang_grp(); - rv.lang_mgr = lang_mgr; rv.id = id; rv.key = key; rv.name = key; - rv.Html_all_(String_.Concat_lines_nl_skip_last - ( "" - , "

~{all_name}

" - , " ~{grps}" - , "
" - )); - rv.Html_itm_(String_.Concat_lines_nl_skip_last - ( "" - , " ~{lang_name}~{pagename_translation}" - )); - return rv; - } private Xow_lang_grp() {} - Xow_lang_mgr lang_mgr; -} -class Xow_lang_itm_sorter_page_name implements gplx.lists.ComparerAble { - public int compare(Object lhsObj, Object rhsObj) {return Bry_.Compare(((Xow_lang_itm)lhsObj).Page_name(), ((Xow_lang_itm)rhsObj).Page_name());} - public static final Xow_lang_itm_sorter_page_name _ = new Xow_lang_itm_sorter_page_name(); Xow_lang_itm_sorter_page_name() {} -} -class Xow_lang_grp_sorter_sort_idx implements gplx.lists.ComparerAble { - public int compare(Object lhsObj, Object rhsObj) {return Int_.Compare(((Xow_lang_grp)lhsObj).Sort_idx(), ((Xow_lang_grp)rhsObj).Sort_idx());} - public static final Xow_lang_grp_sorter_sort_idx _ = new Xow_lang_grp_sorter_sort_idx(); Xow_lang_grp_sorter_sort_idx() {} -} diff --git a/400_xowa/src/gplx/xowa/wikis/xwikis/Xow_lang_itm.java b/400_xowa/src/gplx/xowa/wikis/xwikis/Xow_lang_itm.java deleted file mode 100644 index 70c79030b..000000000 --- a/400_xowa/src/gplx/xowa/wikis/xwikis/Xow_lang_itm.java +++ /dev/null @@ -1,39 +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.wikis.xwikis; import gplx.*; import gplx.xowa.*; import gplx.xowa.wikis.*; -import gplx.xowa.langs.cfgs.*; -public class Xow_lang_itm { - private final Xow_lang_grp html_grp; private final Xow_xwiki_itm xwiki; private final Xoac_lang_itm lang; - public Xow_lang_itm(Xow_lang_grp html_grp, Xow_xwiki_itm xwiki, Xoac_lang_itm lang) { - this.html_grp = html_grp; this.xwiki = xwiki; this.lang = lang; - } - public byte[] Lang_key() {return lang.Key_bry();} - public byte[] Lang_domain() {return xwiki.Domain_bry();} - public byte[] Lang_name() {return lang.Local_name_bry();} - public byte[] Page_name() {return page_name;} private byte[] page_name; - public boolean Page_name_has() {return Bry_.Len_gt_0(page_name);} - public boolean Empty_xwiki() {return empty_xwiki;} private boolean empty_xwiki; - public byte[][] Page_badges() {return page_badges;} private byte[][] page_badges; - public void Html_bld(Bry_bfr bfr, Xowe_wiki wiki) { - html_grp.Html_itm().Bld_bfr(bfr, lang.Key_bry(), xwiki.Domain_bry(), lang.Local_name_bry(), page_name); - } - public void Atrs_set(byte[] page_name, boolean empty_xwiki, byte[][] page_badges) { - this.page_name = page_name; this.empty_xwiki = empty_xwiki; this.page_badges = page_badges; - html_grp.Itms_active_len_add_one_(); - } -} diff --git a/400_xowa/src/gplx/xowa/wikis/xwikis/Xow_lang_mgr.java b/400_xowa/src/gplx/xowa/wikis/xwikis/Xow_lang_mgr.java deleted file mode 100644 index 5c4667055..000000000 --- a/400_xowa/src/gplx/xowa/wikis/xwikis/Xow_lang_mgr.java +++ /dev/null @@ -1,194 +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.wikis.xwikis; import gplx.*; import gplx.xowa.*; import gplx.xowa.wikis.*; -import gplx.xowa.langs.*; import gplx.xowa.wikis.xwikis.*; import gplx.xowa.apis.xowa.html.*; import gplx.xowa.xtns.wdatas.core.*; -import gplx.xowa.html.hrefs.*; -import gplx.xowa.langs.cfgs.*; -public class Xow_lang_mgr { - Xow_lang_mgr() { - int len = Xol_lang_itm_.Id__max; - itms = new Xow_lang_itm[len]; - } - public Bry_fmtr Html_div() {return html_div;} private final Bry_fmtr html_div = Bry_fmtr.new_(String_.Concat_lines_nl_skip_last - ( "
" - , "
~{toggle_btn} (links: ~{len}) ~{wikidata_link}
" - , " ~{grps}" - , "
" - , "" - ), "len", "wikidata_link", "toggle_btn", "toggle_hdr", "grps"); - public Bry_fmtr Html_wikidata_link() {return html_wikidata_link;} private final Bry_fmtr html_wikidata_link = Bry_fmtr.new_(" (wikidata)", "qid"); - public void Clear() {hash.Clear();} - public void Itms_reg(Xow_xwiki_itm xwiki, Xoac_lang_itm lang) { - int lang_id = xwiki.Lang_id(); - Xoac_lang_grp ini_grp = lang.Grp(); - Xow_lang_grp grp = (Xow_lang_grp)hash.Get_by(ini_grp.Key_bry()); - if (grp == null) { - grp = Grps_get_or_new(ini_grp.Key_bry()); - grp.Name_(ini_grp.Name_bry()); - grp.Sort_idx_(ini_grp.Sort_idx()); - } - Xow_lang_itm itm = itms[lang_id]; - if (itm == null) { - itm = new Xow_lang_itm(grp, xwiki, lang); - itms[lang_id] = itm; - } - grp.Itms_add(itm); - } - public int Grps_len() {return hash.Count();} - public Xow_lang_grp Grps_get_at(int i) {return (Xow_lang_grp)hash.Get_at(i);} - Xow_lang_grp Grps_get_or_new(byte[] key) { - Xow_lang_grp rv = (Xow_lang_grp)hash.Get_by(key); - if (rv == null) { - int id = hash.Count(); - rv = Xow_lang_grp.dflt_(this, id, key); - rv.Sort_idx_(id); - hash.Add(key, rv); - rv.Name_(key); - } - return rv; - } private Ordered_hash hash = Ordered_hash_.new_bry_(); - public void Grps_sort() {hash.Sort_by(Xow_lang_grp_sorter_sort_idx._);} - public void Html_bld(Bry_bfr bfr, Xowe_wiki wiki, List_adp slink_list, byte[] qid) { - int grp_len = hash.Count(); - for (int i = 0; i < grp_len; i++) { - Xow_lang_grp grp = (Xow_lang_grp)hash.Get_at(i); - grp.Itms_reset(); - } - int slink_len = slink_list.Count(); - for (int i = 0; i < slink_len; i++) { - Wdata_sitelink_itm slink = (Wdata_sitelink_itm)slink_list.Get_at(i); - Xoa_ttl ttl = slink.Page_ttl(); - Xow_xwiki_itm xwiki = ttl.Wik_itm(); - int lang_id = xwiki.Lang_id(); - Xow_lang_itm itm = itms[lang_id]; // NOTE: handles ttls like [[fr:]] and [[:fr;]] which have an empty Page_txt, but a valued Full_txt_raw - byte[] ttl_bry = ttl.Page_txt_w_anchor(); - boolean empty_xwiki = false; - if (Bry_.Len_eq_0(ttl_bry)) { - ttl_bry = wiki.Parser_mgr().Ctx().Cur_page().Ttl().Page_txt(); - empty_xwiki = true; - } - itm.Atrs_set(ttl_bry, empty_xwiki, slink.Badges()); - } - html_bldr.Init(this, wiki, slink_list, slink_len, qid); - html_bldr.XferAry(bfr, -1); - } private Xow_lang_itm[] itms = null; Xow_lang_html html_bldr = new Xow_lang_html(); - public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { - if (ctx.Match(k, Invk_get)) return Grps_get_or_new(m.ReadBry("v")); - else if (ctx.Match(k, Invk_sort)) Grps_sort(); - else return GfoInvkAble_.Rv_unhandled; - return this; - } private static final String Invk_get = "get", Invk_sort = "sort"; - public static Xow_lang_mgr dflt_() {return new Xow_lang_mgr();} -} -class Xow_lang_html implements Bry_fmtr_arg { - private Xow_lang_mgr lang_mgr; Xowe_wiki wiki; List_adp ttl_list; private byte[] qid; - private Xoapi_toggle_itm toggle_itm; - private int stage = 0; - public Xow_lang_html Init(Xow_lang_mgr lang_mgr, Xowe_wiki wiki, List_adp ttl_list, int ttl_list_len, byte[] qid) { - this.lang_mgr = lang_mgr; this.wiki = wiki; this.ttl_list = ttl_list; this.qid = qid; - toggle_itm = wiki.Appe().Api_root().Html().Page().Toggle_mgr().Get_or_new("wikidata-langs"); - return this; - } - public void XferAry(Bry_bfr bfr, int idx) { - switch (stage) { - case 0: { - stage = 1; - Bry_bfr tmp_bfr = wiki.Utl__bfr_mkr().Get_b128().Mkr_rls(); - byte[] msg_lang = wiki.Msg_mgr().Val_by_id(Xol_msg_itm_.Id_page_lang_header); - byte[] wikidata_link = Bry_.Len_eq_0(qid) ? Bry_.Empty : lang_mgr.Html_wikidata_link().Bld_bry_many(tmp_bfr, qid); - toggle_itm.Init(msg_lang); - lang_mgr.Html_div().Bld_bfr_many(bfr, ttl_list.Count(), wikidata_link, toggle_itm.Html_toggle_btn(), toggle_itm.Html_toggle_hdr(), this); - stage = 0; - break; - } - case 1: - stage = 2; - int grps_len = lang_mgr.Grps_len(); - for (int i = 0; i < grps_len; i++) { - grp = lang_mgr.Grps_get_at(i); - if (grp.Itms_active_len() == 0) continue; // skip grps with no items - grp.Html_all().Bld_bfr_many(bfr, grp.Name(), this); - } - stage = 1; - break; - case 2: - int itms_len = grp.Itms_len(); - int grp_counter = 0; boolean row_opened = false; - for (int i = 0; i < itms_len; i++) { - Xow_lang_itm itm = grp.Itms_get(i); - if (!itm.Page_name_has()) continue; - if (grp_counter == 0) { - bfr.Add(grp.Html_grp_bgn()); - row_opened = true; - } - byte[] lang_key = itm.Lang_key(); - byte[] domain = itm.Lang_domain(); - byte[] page_name = itm.Page_name(); - byte[] local_name = itm.Lang_name(); - byte[] badge_cls = Badge_cls(tmp_bfr, itm.Page_badges()); - if (wiki.Appe().Usere().Wiki().Xwiki_mgr().Get_by_key(domain) == null) - tmp_bfr.Add(Xoh_href_.Bry__https).Add(domain).Add(Xoh_href_.Bry__wiki); - else - tmp_bfr.Add(Xoh_href_.Bry__site).Add(domain).Add(Xoh_href_.Bry__wiki); - if (!itm.Empty_xwiki()) tmp_bfr.Add(page_name); - grp.Html_itm().Bld_bfr_many(bfr, lang_key, domain, local_name, tmp_bfr.Xto_bry_and_clear(), page_name, badge_cls); - ++grp_counter; - if (grp_counter == 3) { - row_opened = false; - bfr.Add(grp.Html_grp_end()); - grp_counter = 0; - } - } - if (row_opened) { - bfr.Add(grp.Html_grp_end()); - grp_counter = 0; - } - stage = 2; - break; - } - } private Xow_lang_grp grp; Bry_bfr tmp_bfr = Bry_bfr.reset_(255); - private static byte[] Badge_cls(Bry_bfr bfr, byte[][] badges) { - if (badges == null) badges = Bry_.Ary_empty; - int badges_len = badges.length; - bfr.Add(Cls_bgn); - if (badges_len == 0) - bfr.Add(Badge_none_cls); - else { - for (int i = 0; i < badges_len; ++i) { - if (i != 0) bfr.Add_byte_comma(); - byte[] badge = badges[i]; - byte[] badge_cls = (byte[])badges_hash.Get_by_bry(badge); - if (badge_cls == null) Gfo_usr_dlg_.I.Warn_many("", "", "unknown badge: badge=~{0}", String_.new_u8(badge)); - else bfr.Add(badge_cls); - } - } - bfr.Add_byte_apos(); - return bfr.Xto_bry_and_clear(); - } - private static final byte[] - Badge_none_cls = Bry_.new_a7("badge-none") - , Cls_bgn = Bry_.new_a7(" class='") - ; - private static Hash_adp_bry badges_hash = Hash_adp_bry.ci_a7() - .Add_str_obj("Q17437798", Bry_.new_a7("badge-goodarticle")) - .Add_str_obj("Q17437796", Bry_.new_a7("badge-featuredarticle")) - .Add_str_obj("Q17559452", Bry_.new_a7("badge-recommendedarticle")) - .Add_str_obj("Q17506997", Bry_.new_a7("badge-featuredlist")) - .Add_str_obj("Q17580674", Bry_.new_a7("badge-featuredportal")) - ; -} \ No newline at end of file diff --git a/400_xowa/src/gplx/xowa/wikis/xwikis/Xow_xwiki_itm.java b/400_xowa/src/gplx/xowa/wikis/xwikis/Xow_xwiki_itm.java index c3edeaa11..d619a965b 100644 --- a/400_xowa/src/gplx/xowa/wikis/xwikis/Xow_xwiki_itm.java +++ b/400_xowa/src/gplx/xowa/wikis/xwikis/Xow_xwiki_itm.java @@ -20,11 +20,11 @@ import gplx.core.net.*; import gplx.xowa.langs.*; import gplx.xowa.wikis.domains.*; public class Xow_xwiki_itm implements gplx.CompareAble { - public Xow_xwiki_itm(byte[] key_bry, byte[] url_fmt, int lang_id, int domain_tid, byte[] domain_bry, byte[] domain_name) { + public Xow_xwiki_itm(byte[] key_bry, byte[] url_fmt, int lang_id, int domain_tid, byte[] domain_bry, byte[] domain_name, byte[] abrv_wm) { this.key_bry = key_bry; this.key_str = String_.new_u8(key_bry); this.url_fmt = url_fmt; this.lang_id = lang_id; this.url_fmtr = Bry_.Len_eq_0(url_fmt) ? null : Bry_fmtr.new_(url_fmt, "0"); - this.domain_tid = domain_tid; this.domain_bry = domain_bry; this.domain_name = domain_name; + this.domain_tid = domain_tid; this.domain_bry = domain_bry; this.domain_name = domain_name; this.abrv_wm = abrv_wm; } public byte[] Key_bry() {return key_bry;} private final byte[] key_bry; // EX: commons public String Key_str() {return key_str;} private final String key_str; @@ -34,17 +34,17 @@ public class Xow_xwiki_itm implements gplx.CompareAble { public int Domain_tid() {return domain_tid;} private final int domain_tid; // EX: Tid_int_commons public byte[] Domain_bry() {return domain_bry;} private final byte[] domain_bry; // EX: commons.wikimedia.org public byte[] Domain_name() {return domain_name;} private final byte[] domain_name; // EX: Wikimedia Commons + public byte[] Abrv_wm() {return abrv_wm;} private final byte[] abrv_wm; // EX: enwiki; needed for sitelinks public boolean Offline() {return offline;} public Xow_xwiki_itm Offline_(boolean v) {offline = v; return this;} private boolean offline; public int compareTo(Object obj) {Xow_xwiki_itm comp = (Xow_xwiki_itm)obj; return Bry_.Compare(key_bry, comp.key_bry);} public boolean Type_is_xwiki_lang(byte[] cur_lang_key) { - return lang_id != Xol_lang_itm_.Id__unknown // valid lang code - && domain_tid != Xow_domain_type_.Int__commons // commons should never be considered an xwiki_lang; EX:[[commons:A]] PAGE:species:Scarabaeidae; DATE:2014-09-10 + return lang_id != Xol_lang_stub_.Id__unknown // valid lang code + && domain_tid != Xow_domain_tid_.Int__commons // commons should never be considered an xwiki_lang; EX:[[commons:A]] PAGE:species:Scarabaeidae; DATE:2014-09-10 && !Bry_.Eq(key_bry, cur_lang_key) // lang is different than current; EX: [[en:A]] in en.wikipedia.org shouldn't link back to self && Bry_.Len_gt_0(url_fmt) // url_fmt exists ; } - - public static Xow_xwiki_itm new_(byte[] key_bry, byte[] url_fmt, int lang_id, int domain_tid, byte[] domain_bry) { - return new Xow_xwiki_itm(key_bry, url_fmt, lang_id, domain_tid, domain_bry, domain_bry); + public static Xow_xwiki_itm new_(byte[] key_bry, byte[] url_fmt, int lang_id, int domain_tid, byte[] domain_bry, byte[] abrv_wm) { + return new Xow_xwiki_itm(key_bry, url_fmt, lang_id, domain_tid, domain_bry, domain_bry, abrv_wm); } } diff --git a/400_xowa/src/gplx/xowa/wikis/xwikis/Xow_xwiki_mgr.java b/400_xowa/src/gplx/xowa/wikis/xwikis/Xow_xwiki_mgr.java index 7fa21d694..55dc60fd8 100644 --- a/400_xowa/src/gplx/xowa/wikis/xwikis/Xow_xwiki_mgr.java +++ b/400_xowa/src/gplx/xowa/wikis/xwikis/Xow_xwiki_mgr.java @@ -16,217 +16,77 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.xowa.wikis.xwikis; import gplx.*; import gplx.xowa.*; import gplx.xowa.wikis.*; -import gplx.core.net.*; -import gplx.xowa.langs.*; import gplx.xowa.langs.cfgs.*; -import gplx.xowa.html.hrefs.*; -import gplx.xowa.wikis.domains.*; import gplx.xowa.wikis.xwikis.cfgs.*; -public class Xow_xwiki_mgr implements GfoInvkAble { - private Xowe_wiki wiki; private Xow_xwiki_mgr_srl srl; - private final Ordered_hash list = Ordered_hash_.new_bry_(); - private final Hash_adp_bry hash = Hash_adp_bry.ci_a7(); - public Xow_xwiki_mgr() {} // FIXME: current placeholder for viewer - public Xow_xwiki_mgr(Xowe_wiki wiki, Gfo_url_parser url_parser) { +import gplx.core.net.*; import gplx.xowa.htmls.hrefs.*; +import gplx.xowa.langs.*; +import gplx.xowa.wikis.domains.*; import gplx.xowa.wikis.xwikis.parsers.*; import gplx.xowa.wikis.xwikis.sitelinks.*; +public class Xow_xwiki_mgr { + private final Ordered_hash list = Ordered_hash_.New_bry(); private final Hash_adp_bry hash = Hash_adp_bry.ci_a7(); + private final Xow_wiki wiki; + public Xow_xwiki_mgr(Xow_wiki wiki) { this.wiki = wiki; - srl = new Xow_xwiki_mgr_srl(wiki.Domain_itm(), this); this.xwiki_domain_tid = Xwiki_tid(wiki.Domain_tid()); } - public int Xwiki_domain_tid() {return xwiki_domain_tid;} private int xwiki_domain_tid; - public Xow_lang_mgr Lang_mgr() {return lang_mgr;} private final Xow_lang_mgr lang_mgr = Xow_lang_mgr.dflt_(); - public int Len() {return list.Count();} + public int Xwiki_domain_tid() {return xwiki_domain_tid;} private int xwiki_domain_tid; + public int Len() {return list.Count();} public void Clear() {hash.Clear(); list.Clear();} + public void Sort_by_key() {list.Sort();} public Xow_xwiki_itm Get_at(int i) {return (Xow_xwiki_itm)list.Get_at(i);} public Xow_xwiki_itm Get_by_key(byte[] key) {return (Xow_xwiki_itm)hash.Get_by_bry(key);} public Xow_xwiki_itm Get_by_mid(byte[] src, int bgn, int end) {return (Xow_xwiki_itm)hash.Get_by_mid(src, bgn, end);} - public Xow_xwiki_itm Add_full(String alias, String domain) {return Add_full(Bry_.new_a7(alias), Bry_.new_a7(domain), null);} - public Xow_xwiki_itm Add_full(byte[] alias, byte[] domain) {return Add_full(alias, domain, null);} - public Xow_xwiki_itm Add_full(byte[] alias, byte[] domain_bry, byte[] url_fmt) { - int domain_tid = Byte_.Zero; - int lang_id = -1; - Xow_domain_itm wiki_type = Xow_domain_itm_.parse(domain_bry); - domain_tid = wiki_type.Domain_type_id(); - if (Bry_.Len_gt_0(wiki_type.Lang_actl_key())) { // domain_bry has lang (EX: "en.") - Xol_lang_itm lang_itm = Xol_lang_itm_.Get_by_key(wiki_type.Lang_actl_key()); - if (lang_itm == null) return null; // unknown lang: do not add to wiki collection; EX: en1.wikipedia.org - lang_id = lang_itm.Id(); - } - Xow_xwiki_itm itm = Xow_xwiki_itm.new_(alias, url_fmt, lang_id, domain_tid, domain_bry); - Add_itm(itm, null); + public Xow_xwiki_itm Add_by_atrs(String key, String domain) {return Add_by_atrs(Bry_.new_a7(key), Bry_.new_a7(domain), null);} + public Xow_xwiki_itm Add_by_atrs(byte[] key, byte[] domain) {return Add_by_atrs(key, domain, null);} + public Xow_xwiki_itm Add_by_atrs(byte[] key, byte[] domain_bry, byte[] url_fmt) { + Xow_domain_itm domain_itm = Xow_domain_itm_.parse(domain_bry); + Xow_xwiki_itm itm = Xow_xwiki_itm.new_(key, url_fmt, domain_itm.Lang_actl_uid(), domain_itm.Domain_type_id(), domain_bry, domain_itm.Abrv_wm()); + Add_itm(itm); return itm; } - public void Sort_by_key() { - list.Sort(); - } - public Xow_domain_itm[] Get_by_crt(Xow_domain_itm cur, gplx.xowa.wikis.domains.crts.Xow_domain_crt_itm crt) { - List_adp rv = List_adp_.new_(); - int len = this.Len(); + public void Add_by_sitelink_mgr() {Add_by_sitelink_mgr(wiki.Domain_tid());} + public void Add_by_sitelink_mgr(int domain_tid) { + String wiki_tid_name_str = String_.new_u8(Xow_domain_tid_.Get_type_as_bry(domain_tid)); + Xoa_sitelink_itm_mgr itm_mgr = wiki.App().Xwiki_mgr__sitelink_mgr().Itm_mgr(); + int len = itm_mgr.Len(); for (int i = 0; i < len; ++i) { - Xow_xwiki_itm wiki = this.Get_at(i); - if (!wiki.Offline()) continue; - Xow_domain_itm domain_itm = Xow_domain_itm_.parse(wiki.Domain_bry()); - if (crt.Matches(cur, domain_itm)) rv.Add(domain_itm); - } - return (Xow_domain_itm[])rv.To_ary_and_clear(Xow_domain_itm.class); - } - public void Add_bulk(byte[] raw) { - byte[][] rows = Bry_split_.Split(raw, Byte_ascii.Nl); - int rows_len = rows.length; - Hash_adp_bry lang_regy = Xol_lang_itm_.Regy(); - for (int i = 0; i < rows_len; i++) { - byte[] row = rows[i]; if (Bry_.Len_eq_0(row)) continue; // ignore blank rows - Xow_xwiki_itm itm = Add_bulk_row(lang_regy, row); - Add_itm(itm, null); - } - } - public Xow_xwiki_itm Add_bulk_row(Hash_adp_bry lang_regy, byte[] row) { - byte[][] flds = Bry_split_.Split(row, Byte_ascii.Pipe); int flds_len = flds.length; - byte[] alias = Bry_.Empty, domain_bry = Bry_.Empty; - for (int j = 0; j < flds_len; j++) { - byte[] fld = flds[j]; - switch (j) { - case 0: alias = fld; break; - case 1: domain_bry = fld; break; - case 2: break; // reserved for 0,1 (0=custom; 1=wmf) - default: throw Err_.new_unhandled(j); - } - } - Xow_domain_itm domain = Xow_domain_itm_.parse(domain_bry); - int lang_id = Xol_lang_itm_.Id__unknown; - if (Bry_.Len_gt_0(domain.Lang_actl_key())) { - Xol_lang_itm lang_itm = Xol_lang_itm_.Get_by_key(domain.Lang_actl_key()); - if (lang_itm != null // lang exists - && Bry_.Eq(alias, lang_itm.Key())) // alias == lang.key; only assign langs to aliases that have lang key; EX: w|en.wikipedia.org; "w" alias should not be registered for "en"; DATE:2013-07-25 - lang_id = lang_itm.Id(); + Xoa_sitelink_itm itm = (Xoa_sitelink_itm)itm_mgr.Get_at(i); + byte[] itm_key = itm.Key(); // EX: "fr" as in "[[fr:]]" + byte[] domain_bry = Bry_.new_u8(String_.Format("{0}.{1}.org", String_.new_u8(itm_key), wiki_tid_name_str)); // EX: fr.wikipedia.org + Xow_domain_itm domain_itm = Xow_domain_itm_.parse(domain_bry); + byte[] abrv_wm = domain_itm == null ? null : domain_itm.Abrv_wm(); + Xow_xwiki_itm xwiki = Xow_xwiki_itm.new_(itm_key, Bld_url_fmt(domain_bry), domain_itm.Lang_actl_uid(), domain_tid, domain_bry, abrv_wm); + Add_itm(xwiki); } - byte[] url_fmt = Bry_.Add(Xoh_href_.Bry__https, domain_bry, Xoh_href_.Bry__wiki, Arg_0); - return Xow_xwiki_itm.new_(alias, url_fmt, lang_id, domain.Domain_type_id(), domain_bry); - } static final byte[] Arg_0 = Bry_.new_a7("~{0}"); - String Exec_itms_print(byte[] raw) { - Bry_fmtr fmtr = Bry_fmtr.new_bry_(raw, "wiki_key");//, "wiki_type_url", "wiki_lang", "wiki_name", "wiki_logo_url"); - Bry_bfr tmp_bfr = Xoa_app_.Utl__bfr_mkr().Get_k004(); - Hash_adp_bry seen = Hash_adp_bry.ci_a7(); // ASCII:url_domain; EX:en.wikipedia.org - int wikis_len = list.Count(); - for (int i = 0; i < wikis_len; i++) { - Xow_xwiki_itm itm = (Xow_xwiki_itm)list.Get_at(i); - byte[] key = itm.Key_bry(); - if (Bry_.Eq(key, Xow_domain_type_.Bry__home)) continue; // skip home - byte[] domain = itm.Domain_bry(); - if (seen.Has(domain)) continue; - seen.Add_as_key_and_val(domain); - fmtr.Bld_bfr_many(tmp_bfr, key); - } - return tmp_bfr.To_str_and_rls(); } - public void Add_bulk_peers(byte[] raw) { - byte[][] keys = Bry_split_.Split(raw, Byte_ascii.Tilde); - int len = keys.length; - Ordered_hash peers = Ordered_hash_.new_(); - Cfg_nde_root peer_root = wiki.Appe().Wiki_mgr().Groups(); - for (int i = 0; i < len; i++) { - byte[] key = keys[i]; - Cfg_nde_obj peer_grp = peer_root.Grps_get(key); - if (peer_grp == null) - throw Err_.new_wo_type("unknown peer group", "key", String_.new_u8(key)); - else - Cfg_nde_obj_.Fill_recurse(peers, peer_grp); - } - - len = peers.Count(); - byte[] lang_key_bry = wiki.Lang().Key_bry(); - if (lang_key_bry == Xol_lang_itm_.Key__unknown) lang_key_bry = Xol_lang_.Key_en; // default non-lang wikis to english - String lang_key_str = String_.new_u8(lang_key_bry); - int lang_id = Xol_lang_itm_.Get_by_key(lang_key_bry).Id(); - for (int i = 0; i < len; i++) { - Xoac_wiki_itm wiki_itm = (Xoac_wiki_itm)peers.Get_at(i); - byte[] wiki_name_bry = wiki_itm.Key_bry(); - String wiki_name = String_.new_u8(wiki_name_bry); - String domain_str = null; - int domain_tid = Xow_domain_type_.Get_type_as_tid(wiki_name_bry); - switch (domain_tid) { - case Xow_domain_type_.Int__commons: - case Xow_domain_type_.Int__species: - case Xow_domain_type_.Int__meta: - case Xow_domain_type_.Int__incubator: domain_str = String_.Format("{0}.wikimedia.org", wiki_name); break; // EX: commons.wikimedia.org - case Xow_domain_type_.Int__wikidata: domain_str = String_.Format("www.wikidata.org", wiki_name); break; // EX: www.wikidata.org - case Xow_domain_type_.Int__mediawiki: domain_str = String_.Format("www.mediawiki.org", wiki_name); break; - case Xow_domain_type_.Int__wmfblog: domain_str = String_.Format("wikimediafoundation.org", wiki_name); break; - default: domain_str = String_.Format("{0}.{1}.org", lang_key_str, wiki_name); break; // EX: en.wiktionary.org + public void Add_by_csv(byte[] src) { + synchronized (list) { // THREAD: parser stores state at app-level + Xow_xwiki_itm_parser itm_parser = wiki.App().Xwiki_mgr__itm_parser(); + itm_parser.Init_by_wiki(wiki.Domain_itm()); + itm_parser.Load_by_bry(src); + Ordered_hash xwiki_list = itm_parser.Xwiki_list(); + int len = xwiki_list.Count(); + for (int i = 0; i < len; ++i) { + Xow_xwiki_itm itm = (Xow_xwiki_itm)xwiki_list.Get_at(i); + Add_itm(itm); } - byte[] domain_bry = Bry_.new_u8(domain_str); - // Xowe_wiki lang_wiki = wiki.Appe().Wiki_mgr().Get_by_key_or_null(domain_bry); // DELETE: causes commons to show; DATE:2015-09-23 - // boolean offline_exists = lang_wiki != null; - String fmt = String_.Format("http://" + domain_str + "/wiki/~{0}"); - int aliases_len = wiki_itm.Aliases().length; - for (int j = 0; j < aliases_len; j++) { - byte[] alias = wiki_itm.Aliases()[j]; - if (wiki.Ns_mgr().Names_get_or_null(alias, 0, alias.length) != null) continue; // NOTE: do not add xwiki if alias matches namespace; EX: en.wiktionary.org has ns of "Wiktionary"; do not add alias of "wiktionary"; note that wikipedia does have an alias to wiktionary - Xow_xwiki_itm xwiki = Xow_xwiki_itm.new_(alias, Bry_.new_u8(fmt), lang_id, domain_tid, domain_bry); // .Offline_(offline_exists); // NOTE: domain_tid must be used, not wiki.Domain_tid; DATE:2014-09-14 - Add_itm(xwiki, null); - } - } - } - public void Add_bulk_langs(GfoMsg m) { - byte[] grp_key = m.ReadBry("grp_key"); - byte[] wiki_type_name = m.ReadBryOr("wiki_type_name", null); - int wiki_tid = wiki_type_name == null ? wiki.Domain_tid() : Xow_domain_type_.Get_type_as_tid(wiki_type_name); - Add_bulk_langs(grp_key, wiki_tid); - } - public void Add_bulk_langs(byte[] grp_key) {Add_bulk_langs(grp_key, wiki.Domain_tid());} - public void Add_bulk_langs(byte[] grp_key, int domain_tid) { - Ordered_hash langs = wiki.Appe().Lang_mgr().Xto_hash(grp_key); - int len = langs.Count(); - byte[] wiki_tid_name = Xow_domain_type_.Get_type_as_bry(domain_tid); - String wiki_tid_name_str = String_.new_u8(wiki_tid_name); - for (int i = 0; i < len; i++) { - Xoac_lang_itm lang = (Xoac_lang_itm)langs.Get_at(i); - String domain_str = String_.Format("{0}.{1}.org", String_.new_u8(lang.Key_bry()), wiki_tid_name_str); // EX: fr.wikipedia.org - byte[] domain_bry = Bry_.new_u8(domain_str); - // Xowe_wiki lang_wiki = wiki.Appe().Wiki_mgr().Get_by_key_or_null(domain_bry); // DELETE: causes commons to show; DATE:2015-09-23 - // boolean offline_exists = lang_wiki != null; - String url_fmt = String_.Format("http://" + domain_str + "/wiki/~{0}"); - int lang_id = Xol_lang_itm_.Get_by_key(lang.Key_bry()).Id(); - Xow_xwiki_itm xwiki = Xow_xwiki_itm.new_(lang.Key_bry(), Bry_.new_u8(url_fmt), lang_id, domain_tid, domain_bry); // .Offline_(offline_exists); - Add_itm(xwiki, lang); } - lang_mgr.Grps_sort(); } - public void Add_itm(Xow_xwiki_itm itm) {Add_itm(itm, null);} - private void Add_itm(Xow_xwiki_itm xwiki, Xoac_lang_itm lang) { - byte[] xwiki_key = xwiki.Key_bry(); - if ( !hash.Has(xwiki.Key_bry()) // only register xwiki / lang pair once - && lang != null) // null lang should not be registered - lang_mgr.Itms_reg(xwiki, lang); - byte[] xwiki_domain = xwiki.Domain_bry(); - if (!domain_hash.Has(xwiki_domain)) { // domain is new - domain_hash.Add(xwiki_domain, xwiki_key); - list.Add_if_dupe_use_nth(xwiki_key, xwiki); // only add to list if domain is new; some wikis like commons will be added multiple times under different aliases (commons, c, commons.wikimedia.org); need to check domain and add only once DATE:2014-11-07 - } - hash.Add_if_dupe_use_nth(xwiki_key, xwiki); - } private final Hash_adp_bry domain_hash = Hash_adp_bry.ci_a7(); - public void Add_many(byte[] v) {srl.Load_by_bry(v);} - public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { - if (ctx.Match(k, Invk_count)) return list.Count(); - else if (ctx.Match(k, Invk_add_bulk)) Add_bulk(m.ReadBry("v")); - else if (ctx.Match(k, Invk_add_bulk_langs)) Add_bulk_langs(m); - else if (ctx.Match(k, Invk_add_bulk_peers)) Add_bulk_peers(m.ReadBry("v")); - else if (ctx.Match(k, Invk_add_many)) Add_many(m.ReadBry("v")); - else if (ctx.Match(k, Invk_itms_print)) return Exec_itms_print(m.ReadBry("v")); - else if (ctx.Match(k, Invk_clear)) this.Clear(); - else return GfoInvkAble_.Rv_unhandled; - return this; + public void Add_itm(Xow_xwiki_itm itm) { + byte[] key_bry = itm.Key_bry(); + if (wiki.Ns_mgr().Names_get_or_null(key_bry) != null) return;// NOTE: do not add xwiki if key matches namespace; EX: en.wiktionary.org has ns of "Wiktionary"; do not add key of "wiktionary"; note that wikipedia does have an key to wiktionary + list.Add_if_dupe_use_nth(key_bry, itm); // NOTE: some wikis like commons will be added multiple times under different aliases (commons, c, commons.wikimedia.org); need to check domain and add only once DATE:2014-11-07 + hash.Add_if_dupe_use_nth(key_bry, itm); } - private static final String - Invk_add_bulk = "add_bulk", Invk_add_bulk_langs = "add_bulk_langs", Invk_add_bulk_peers = "add_bulk_peers", Invk_add_many = "add_many" - , Invk_itms_print = "itms_print", Invk_count = "count", Invk_clear = "clear" - ; private static int Xwiki_tid(int tid) { switch (tid) { - case Xow_domain_type_.Int__commons: - case Xow_domain_type_.Int__species: - case Xow_domain_type_.Int__incubator: - case Xow_domain_type_.Int__mediawiki: - case Xow_domain_type_.Int__wmfblog: - case Xow_domain_type_.Int__home: return Xow_domain_type_.Int__wikipedia; // set xwiki_tid to wikipedia; allows [[da:Page]] to point to da.wikipedia.org; PAGE:species:Puccinia; DATE:2014-09-14 - default: return tid; + case Xow_domain_tid_.Int__commons: case Xow_domain_tid_.Int__species: case Xow_domain_tid_.Int__incubator: + case Xow_domain_tid_.Int__mediawiki: case Xow_domain_tid_.Int__wmfblog: case Xow_domain_tid_.Int__home: + return Xow_domain_tid_.Int__wikipedia; // set xwiki_tid to wikipedia; allows [[da:Page]] to point to da.wikipedia.org; PAGE:species:Puccinia; DATE:2014-09-14 + default: return tid; } } + public static byte[] Get_domain_from_url(Gfo_url_parser url_parser, Gfo_url url, byte[] url_fmt) { // extract "commons.wikimedia.org" from "http://commons.wikimedia.org/wiki/Category:~{0}" + url_parser.Parse(url, url_fmt, 0, url_fmt.length); + return url.Segs__get_at_1st(); + } + public static byte[] Bld_url_fmt(byte[] domain_bry) {return Bry_.Add(gplx.core.net.Gfo_protocol_itm.Itm_https.Text_bry(), domain_bry, Bry__url_fmt_end);} + private static final byte[] Bry__url_fmt_end = Bry_.new_a7("/wiki/~{0}"); } diff --git a/400_xowa/src/gplx/xowa/wikis/xwikis/Xow_xwiki_mgr_srl.java b/400_xowa/src/gplx/xowa/wikis/xwikis/Xow_xwiki_mgr_srl.java deleted file mode 100644 index c07afd763..000000000 --- a/400_xowa/src/gplx/xowa/wikis/xwikis/Xow_xwiki_mgr_srl.java +++ /dev/null @@ -1,39 +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.wikis.xwikis; import gplx.*; import gplx.xowa.*; import gplx.xowa.wikis.*; -import gplx.langs.dsvs.*; import gplx.xowa.wikis.domains.*; -class Xow_xwiki_mgr_srl extends Dsv_wkr_base { - private byte[] key, url_fmt, name; - private final Xow_domain_itm cur_domain; private final Xow_xwiki_mgr mgr; - public Xow_xwiki_mgr_srl(Xow_domain_itm cur_domain, Xow_xwiki_mgr mgr) { - this.cur_domain = cur_domain; this.mgr = mgr; - } - @Override public Dsv_fld_parser[] Fld_parsers() {return new Dsv_fld_parser[] {Dsv_fld_parser_.Bry_parser, Dsv_fld_parser_.Bry_parser, Dsv_fld_parser_.Bry_parser};} - @Override public boolean Write_bry(Dsv_tbl_parser parser, int fld_idx, byte[] src, int bgn, int end) { - switch (fld_idx) { - case 0: key = Bry_.Mid(src, bgn, end); return true; - case 1: url_fmt = Bry_.Mid(src, bgn, end); return true; - case 2: name = Bry_.Mid(src, bgn, end); return true; - default: return false; - } - } - @Override public void Commit_itm(Dsv_tbl_parser parser, int pos) { - Xow_xwiki_itm itm = Xow_xwiki_itm_bldr.I.Bld(cur_domain, key, url_fmt, name); - mgr.Add_itm(itm); - } -} diff --git a/400_xowa/src/gplx/xowa/wikis/xwikis/Xow_xwiki_mgr_tst.java b/400_xowa/src/gplx/xowa/wikis/xwikis/Xow_xwiki_mgr_tst.java deleted file mode 100644 index b0a0e6fbd..000000000 --- a/400_xowa/src/gplx/xowa/wikis/xwikis/Xow_xwiki_mgr_tst.java +++ /dev/null @@ -1,141 +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.wikis.xwikis; import gplx.*; import gplx.xowa.*; import gplx.xowa.wikis.*; -import org.junit.*; import gplx.core.strings.*; -import gplx.xowa.wikis.domains.*; import gplx.xowa.langs.*; -public class Xow_xwiki_mgr_tst { - @Before public void init() {fxt.Clear();} private Xow_xwiki_mgr_fxt fxt = new Xow_xwiki_mgr_fxt(); - @Test public void Add_bulk_wiki_en() {fxt.Test_add_bulk("w|en.wikipedia.org" , Xol_lang_itm_.Id__unknown , Xow_domain_type_.Int__wikipedia , "w" , "https://en.wikipedia.org/wiki/~{0}", "en.wikipedia.org");} - @Test public void Add_bulk_wiki_fr() {fxt.Test_add_bulk("fr|fr.wikipedia.org" , Xol_lang_itm_.Id_fr , Xow_domain_type_.Int__wikipedia , "fr" , "https://fr.wikipedia.org/wiki/~{0}", "fr.wikipedia.org");} - @Test public void Add_bulk_wikt_en() {fxt.Test_add_bulk("wikt|en.wiktionary.org" , Xol_lang_itm_.Id__unknown , Xow_domain_type_.Int__wiktionary , "wikt" , "https://en.wiktionary.org/wiki/~{0}", "en.wiktionary.org");} - @Test public void Add_bulk_commons() {fxt.Test_add_bulk("commons|commons.wikimedia.org" , Xol_lang_itm_.Id__unknown , Xow_domain_type_.Int__commons , "commons" , "https://commons.wikimedia.org/wiki/~{0}", "commons.wikimedia.org");} - @Test public void Add_bulk_commons_cap() {fxt.Test_add_bulk("Commons|commons.wikimedia.org" , Xol_lang_itm_.Id__unknown , Xow_domain_type_.Int__commons , "Commons" , "https://commons.wikimedia.org/wiki/~{0}", "commons.wikimedia.org");} - @Test public void Add_bulk_langs_wiki() {fxt.Init_langs().Test_add_bulk_langs("wiki", fxt.xwiki_("en", "en.wikipedia.org", "http://en.wikipedia.org/wiki/~{0}"), fxt.xwiki_("de", "de.wikipedia.org", "http://de.wikipedia.org/wiki/~{0}"), fxt.xwiki_("fr", "fr.wikipedia.org", "http://fr.wikipedia.org/wiki/~{0}"), fxt.xwiki_("ja", "ja.wikipedia.org", "http://ja.wikipedia.org/wiki/~{0}"));} - @Test public void Add_bulk_langs_grps() {fxt.Init_langs().Test_add_bulk_langs("europe_west~asia_east", fxt.xwiki_("de", "de.wikipedia.org", "http://de.wikipedia.org/wiki/~{0}"), fxt.xwiki_("fr", "fr.wikipedia.org", "http://fr.wikipedia.org/wiki/~{0}"), fxt.xwiki_("ja", "ja.wikipedia.org", "http://ja.wikipedia.org/wiki/~{0}"));} - @Test public void Add_bulk_langs_grp_itm() {fxt.Init_langs().Test_add_bulk_langs("europe_west~ja", fxt.xwiki_("de", "de.wikipedia.org", "http://de.wikipedia.org/wiki/~{0}"), fxt.xwiki_("fr", "fr.wikipedia.org", "http://fr.wikipedia.org/wiki/~{0}"), fxt.xwiki_("ja", "ja.wikipedia.org", "http://ja.wikipedia.org/wiki/~{0}"));} - @Test public void Add_bulk_langs_grp_commons() { - fxt.Init_langs(); - fxt.Wiki().Xwiki_mgr().Add_bulk_langs(Bry_.new_a7("europe_west"), Xow_domain_type_.Int__wikipedia); - fxt.Tst_itms(fxt.xwiki_("de", "de.wikipedia.org", "http://de.wikipedia.org/wiki/~{0}"), fxt.xwiki_("fr", "fr.wikipedia.org", "http://fr.wikipedia.org/wiki/~{0}")); - } - @Test public void Add_bulk_peers() {fxt.Init_peers().Test_add_bulk_peers("peer", fxt.xwiki_null_("commons"), fxt.xwiki_null_("m"), fxt.xwiki_("wikt", "en.wiktionary.org", "http://en.wiktionary.org/wiki/~{0}"), fxt.xwiki_("wiktionary", "en.wiktionary.org", "http://en.wiktionary.org/wiki/~{0}"), fxt.xwiki_("s", "en.wikisource.org", "http://en.wikisource.org/wiki/~{0}"));} - @Test public void Add_bulk_peers_skip_self() {fxt.Init_peers().Test_add_bulk_peers("peer", fxt.xwiki_null_("wikipedia"), fxt.xwiki_("w", "en.wikipedia.org", "http://en.wikipedia.org/wiki/~{0}"));} // PURPOSE: skip "wikipedia" as alias since "Wikipedia" is namespace; needed for titles of "Wikipedia:Main page" (which would otherwise try to go to page "Main Page" in the main names of xwiki "Wikipedia" - @Test public void Add_bulk_core_wikidata() {fxt.Init_peers().Test_add_bulk_peers("core", fxt.xwiki_("d", "www.wikidata.org", "http://www.wikidata.org/wiki/~{0}"));} - @Test public void Add_bulk_peers_tid() { // PURPOSE:wikt should generate wiki_tid of wiktionary, not wikipedia; PAGE:en.s:Main_Page DATE:2014-09-14 - fxt.Init_wikt ().Test_add_bulk_peers("peer", fxt.xwiki_("wikt", "en.wiktionary.org", "http://en.wiktionary.org/wiki/~{0}")); - } - @Test public void Multiple_aliases_should_only_add_once() { // PURPOSE.FIX: multiple aliases for same domain should only be added once to Get_at's list; DATE:2014-11-07 - fxt.Exec_add_bulk("a1|a.org\na2|a.org").Test_len(1); - } -} -class Xow_xwiki_mgr_fxt { - Xow_xwiki_mgr xwiki_mgr; Xoa_lang_mgr lang_mgr; String_bldr sb = String_bldr_.new_(); Xoae_app app; Xowe_wiki wiki; - public void Clear() { - if (xwiki_mgr == null) { - app = Xoa_app_fxt.app_(); - wiki = Xoa_app_fxt.wiki_tst_(app); - xwiki_mgr = wiki.Xwiki_mgr(); - lang_mgr = app.Lang_mgr(); - } - xwiki_mgr.Clear(); - lang_mgr.Clear(); - } - public Xowe_wiki Wiki() {return wiki;} - public Xow_xwiki_itm xwiki_null_(String key) {return Xow_xwiki_itm.new_(Bry_.new_u8(key), Bry_.Empty, Xol_lang_itm_.Id__unknown, Xow_domain_type_.Int__other, Bry_.Empty);} - public Xow_xwiki_itm xwiki_(String key, String domain_str, String url_fmt) { - Xow_domain_itm domain = Xow_domain_itm_.parse(Bry_.new_u8(domain_str)); - return Xow_xwiki_itm.new_(Bry_.new_u8(key), Bry_.new_u8(url_fmt), domain.Lang_actl_itm().Id(), domain.Domain_type_id(), domain.Domain_bry()); - } - public Xow_xwiki_mgr_fxt Test_add_bulk(String raw, int lang_tid, int wiki_tid, String alias, String fmt, String domain) { - Xow_xwiki_itm itm = xwiki_mgr.Add_bulk_row(Xol_lang_itm_.Regy(), Bry_.new_a7(raw)); - Tfds.Eq(alias, String_.new_a7(itm.Key_bry())); - Tfds.Eq(fmt, String_.new_a7(itm.Url_fmt())); - Tfds.Eq(wiki_tid, itm.Domain_tid(), "wiki_tid"); - Tfds.Eq(lang_tid, itm.Lang_id(), "lang_id"); - return this; - } - public Xow_xwiki_mgr_fxt Init_langs() { - lang_mgr.Groups().Set_bulk(Bry_.new_u8(String_.Concat_lines_nl - ( "+||grp|wiki" - , "+|wiki|grp|english" - , "+|wiki|grp|europe_west" - , "+|wiki|grp|asia_east" - , "+|english|itm|en|English" - , "+|europe_west|itm|fr|French" - , "+|europe_west|itm|de|German" - , "+|asia_east|itm|ja|Japanese" - ))); - return this; - } - public Xow_xwiki_mgr_fxt Init_peers() { - app.Wiki_mgr().Groups().Set_bulk(Bry_.new_u8(String_.Concat_lines_nl - ( "+|core|itm|commons|commons" - , "+|core|itm|meta|meta;m" - , "+|core|itm|wikidata|d" - , "+|peer|itm|wiktionary|wikt;wiktionary" - , "+|peer|itm|wikisource|s" - , "+|peer|itm|wikipedia|w;wikipedia" - ))); - return this; - } - public Xow_xwiki_mgr_fxt Init_wikt() { - app.Wiki_mgr().Groups().Set_bulk(Bry_.new_u8(String_.Concat_lines_nl - ( "+|peer|itm|wiktionary|wikt;wiktionary" - ))); - return this; - } - public Xow_xwiki_mgr_fxt Test_add_bulk_langs(String langs, Xow_xwiki_itm... itms) { - xwiki_mgr.Add_bulk_langs(Bry_.new_u8(langs)); - Tfds.Eq_str_lines(Xto_str(itms), Xto_str(To_ary(itms))); - return this; - } - public Xow_xwiki_mgr_fxt Test_add_bulk_peers(String peers, Xow_xwiki_itm... itms) { - xwiki_mgr.Add_bulk_peers(Bry_.new_u8(peers)); - Tfds.Eq_str_lines(Xto_str(itms), Xto_str(To_ary(itms))); - return this; - } - public Xow_xwiki_mgr_fxt Tst_itms(Xow_xwiki_itm... itms) { - Tfds.Eq_str_lines(Xto_str(itms), Xto_str(To_ary(itms))); - return this; - } - public Xow_xwiki_mgr_fxt Exec_add_bulk(String raw) {xwiki_mgr.Add_bulk(Bry_.new_u8(raw)); return this;} - public Xow_xwiki_mgr_fxt Test_len(int expd) {Tfds.Eq(expd, xwiki_mgr.Len()); return this;} - Xow_xwiki_itm[] To_ary(Xow_xwiki_itm[] itms) { - int len = itms.length; - List_adp rv = List_adp_.new_(); - for (int i = 0; i < len; i++) { - byte[] alias = itms[i].Key_bry(); - Xow_xwiki_itm itm = xwiki_mgr.Get_by_key(alias); - if (itm == null) itm = xwiki_null_(String_.new_u8(alias)); // "null", ignore - rv.Add(itm); - } - return (Xow_xwiki_itm[])rv.To_ary(Xow_xwiki_itm.class); - } - String Xto_str(Xow_xwiki_itm[] itms) { - int len = itms.length; - for (int i = 0; i < len; i++) { - Xow_xwiki_itm itm = itms[i]; - if (Bry_.Len_eq_0(itm.Domain_bry())) // "null", ignore - sb.Add(itm.Key_bry()).Add_char_nl(); - else { - sb.Add(itm.Key_bry()).Add_char_pipe().Add(itm.Domain_bry()).Add_char_pipe().Add(itm.Url_fmt()).Add_char_pipe().Add(itm.Domain_tid()).Add_char_nl(); - } - } - return sb.Xto_str_and_clear(); - } -} diff --git a/400_xowa/src/gplx/xowa/wikis/xwikis/Xow_xwiki_itm_bldr.java b/400_xowa/src/gplx/xowa/wikis/xwikis/bldrs/Xow_xwiki_itm_bldr.java similarity index 62% rename from 400_xowa/src/gplx/xowa/wikis/xwikis/Xow_xwiki_itm_bldr.java rename to 400_xowa/src/gplx/xowa/wikis/xwikis/bldrs/Xow_xwiki_itm_bldr.java index 1dfc395c7..249feb9ef 100644 --- a/400_xowa/src/gplx/xowa/wikis/xwikis/Xow_xwiki_itm_bldr.java +++ b/400_xowa/src/gplx/xowa/wikis/xwikis/bldrs/Xow_xwiki_itm_bldr.java @@ -15,26 +15,25 @@ 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.wikis.xwikis; import gplx.*; import gplx.xowa.*; import gplx.xowa.wikis.*; +package gplx.xowa.wikis.xwikis.bldrs; import gplx.*; import gplx.xowa.*; import gplx.xowa.wikis.*; import gplx.xowa.wikis.xwikis.*; import gplx.core.net.*; -import gplx.xowa.apps.gfss.*; +import gplx.xowa.apps.gfs.*; import gplx.xowa.langs.*; import gplx.xowa.wikis.domains.*; public class Xow_xwiki_itm_bldr { private final Bry_bfr tmp_bfr = Bry_bfr.new_(); private final Gfo_url_parser url_parser = new Gfo_url_parser(); private final Gfo_url url = new Gfo_url(); - public Xow_xwiki_itm Bld(Xow_domain_itm cur_domain, byte[] key, byte[] mw_url, byte[] domain_name) { - byte[] xo_url = Xoa_gfs_php_mgr.Xto_gfs(tmp_bfr, mw_url); // EX: "//commons.wikimedia.org/wiki/Category:$1" -> "//commons.wikimedia.org/wiki/Category:~{0}" - url_parser.Parse(url, xo_url, 0, xo_url.length); - byte[] domain_bry = url.Segs__get_at_1st(); // extract "commons.wikimedia.org" + public Xow_xwiki_itm Bld_mw(Xow_domain_itm cur_domain, byte[] key, byte[] mw_url, byte[] domain_name) {return Bld_xo(cur_domain, key, Xoa_gfs_php_mgr.Xto_gfs(tmp_bfr, mw_url), domain_name);} // EX: "//commons.wikimedia.org/wiki/Category:$1" -> "//commons.wikimedia.org/wiki/Category:~{0}" + public Xow_xwiki_itm Bld_xo(Xow_domain_itm cur_domain, byte[] key, byte[] xo_url, byte[] domain_name) { + byte[] domain_bry = Xow_xwiki_mgr.Get_domain_from_url(url_parser, url, xo_url); Xow_domain_itm domain_itm = Xow_domain_itm_.parse(domain_bry); - Xol_lang_itm lang_itm = Xol_lang_itm_.Get_by_key(domain_itm.Lang_actl_key()); - int lang_id = lang_itm == null ? Xol_lang_itm_.Id__unknown : lang_itm.Id(); + Xol_lang_stub lang_itm = Xol_lang_stub_.Get_by_key_or_null(domain_itm.Lang_actl_key()); + int lang_id = lang_itm == null ? Xol_lang_stub_.Id__unknown : lang_itm.Id(); if (domain_name == null) { // no hard-coded name; currently dmoz or commons domain_name = (byte[])domain_name_hash.Get_by_bry(domain_bry); // NOTE: domain_name is needed for "Related Sites" in wikivoyage if (domain_name == null) { - if ( cur_domain.Domain_type_id() != Xow_domain_type_.Int__wikipedia // cur_domain is not wikipedia - && domain_itm.Domain_type_id() == Xow_domain_type_.Int__wikipedia // domain_itm is wikipedia + if ( cur_domain.Domain_type_id() != Xow_domain_tid_.Int__wikipedia // cur_domain is not wikipedia + && domain_itm.Domain_type_id() == Xow_domain_tid_.Int__wikipedia // domain_itm is wikipedia && cur_domain.Lang_actl_uid() == domain_itm.Lang_actl_uid() // cur_domain lang matches domain_lang ) { domain_name = Bry__domain_name__wikipedia; // EX: in "en.wikivoyage.org", "en.wikipedia.org" should have name of "Wikipedia" (not "en.wikipedia.org") @@ -43,12 +42,12 @@ public class Xow_xwiki_itm_bldr { domain_name = domain_bry; // default to domain_bry } } - return new Xow_xwiki_itm(key, xo_url, lang_id, domain_itm.Domain_type_id(), domain_bry, domain_name); + return new Xow_xwiki_itm(key, xo_url, lang_id, domain_itm.Domain_type_id(), domain_bry, domain_name, cur_domain.Abrv_wm()); } private static final Hash_adp_bry domain_name_hash = Hash_adp_bry.cs() .Add_str_obj("commons.wikimedia.org" , Bry_.new_a7("Wikimedia Commons")) .Add_str_obj("www.dmoz.org" , Bry_.new_a7("DMOZ")) ; private static final byte[] Bry__domain_name__wikipedia = Bry_.new_a7("Wikipedia"); - public static final Xow_xwiki_itm_bldr I = new Xow_xwiki_itm_bldr(); Xow_xwiki_itm_bldr() {} + public static final Xow_xwiki_itm_bldr Instance = new Xow_xwiki_itm_bldr(); Xow_xwiki_itm_bldr() {} } diff --git a/400_xowa/src/gplx/xowa/wikis/xwikis/Xow_xwiki_itm_tst.java b/400_xowa/src/gplx/xowa/wikis/xwikis/bldrs/Xow_xwiki_itm_bldr_tst.java similarity index 68% rename from 400_xowa/src/gplx/xowa/wikis/xwikis/Xow_xwiki_itm_tst.java rename to 400_xowa/src/gplx/xowa/wikis/xwikis/bldrs/Xow_xwiki_itm_bldr_tst.java index ed01ba5b0..0dc6ea075 100644 --- a/400_xowa/src/gplx/xowa/wikis/xwikis/Xow_xwiki_itm_tst.java +++ b/400_xowa/src/gplx/xowa/wikis/xwikis/bldrs/Xow_xwiki_itm_bldr_tst.java @@ -15,21 +15,21 @@ 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.wikis.xwikis; import gplx.*; import gplx.xowa.*; import gplx.xowa.wikis.*; +package gplx.xowa.wikis.xwikis.bldrs; import gplx.*; import gplx.xowa.*; import gplx.xowa.wikis.*; import gplx.xowa.wikis.xwikis.*; import org.junit.*; import gplx.xowa.langs.*; import gplx.xowa.wikis.domains.*; -public class Xow_xwiki_itm_tst { - @Before public void init() {fxt.Clear();} private Xow_xwiki_itm_fxt fxt = new Xow_xwiki_itm_fxt(); - @Test public void Commons() {fxt.Test_bld("commons.wikimedia.org/wiki/$1" , "commons.wikimedia.org" , "commons.wikimedia.org/wiki/~{0}" , Xow_domain_type_.Int__commons , Xol_lang_itm_.Id__unknown);} - @Test public void Wiktionary() {fxt.Test_bld("fr.wiktionary.org/wiki/$1" , "fr.wiktionary.org" , "fr.wiktionary.org/wiki/~{0}" , Xow_domain_type_.Int__wiktionary , Xol_lang_itm_.Id_fr);} - @Test public void Lang() {fxt.Test_bld("fr.wikipedia.org/wiki/$1" , "fr.wikipedia.org" , "fr.wikipedia.org/wiki/~{0}" , Xow_domain_type_.Int__wikipedia , Xol_lang_itm_.Id_fr);} +public class Xow_xwiki_itm_bldr_tst { + @Before public void init() {fxt.Clear();} private final Xow_xwiki_itm_bldr_fxt fxt = new Xow_xwiki_itm_bldr_fxt(); + @Test public void Commons() {fxt.Test_bld("commons.wikimedia.org/wiki/$1" , "commons.wikimedia.org" , "commons.wikimedia.org/wiki/~{0}" , Xow_domain_tid_.Int__commons , Xol_lang_stub_.Id__unknown);} + @Test public void Wiktionary() {fxt.Test_bld("fr.wiktionary.org/wiki/$1" , "fr.wiktionary.org" , "fr.wiktionary.org/wiki/~{0}" , Xow_domain_tid_.Int__wiktionary , Xol_lang_stub_.Id_fr);} + @Test public void Lang() {fxt.Test_bld("fr.wikipedia.org/wiki/$1" , "fr.wikipedia.org" , "fr.wikipedia.org/wiki/~{0}" , Xow_domain_tid_.Int__wikipedia , Xol_lang_stub_.Id_fr);} } -class Xow_xwiki_itm_fxt { +class Xow_xwiki_itm_bldr_fxt { private Xow_domain_itm domain_itm; public void Clear() { - domain_itm = Xow_domain_itm.new_(Bry_.new_a7("en.wikivoyage.org"), Xow_domain_type_.Int__wikivoyage, Xol_lang_.Key_en); // NOTE: use "en.wikivoyage.org" to domain_name; needed for "Related sites" + domain_itm = Xow_domain_itm.new_(Bry_.new_a7("en.wikivoyage.org"), Xow_domain_tid_.Int__wikivoyage, Xol_lang_itm_.Key_en); // NOTE: use "en.wikivoyage.org" to domain_name; needed for "Related sites" } public void Test_bld(String url, String expd_domain, String expd_url_fmt, int expd_wiki_tid, int expd_lang_tid) { - Xow_xwiki_itm itm = Xow_xwiki_itm_bldr.I.Bld(domain_itm, domain_itm.Domain_bry(), Bry_.new_u8(url), null); + Xow_xwiki_itm itm = Xow_xwiki_itm_bldr.Instance.Bld_mw(domain_itm, domain_itm.Domain_bry(), Bry_.new_u8(url), null); Tfds.Eq(expd_domain , String_.new_u8(itm.Domain_bry())); Tfds.Eq(expd_url_fmt , String_.new_u8(itm.Url_fmt())); Tfds.Eq(expd_wiki_tid , itm.Domain_tid(), "wiki"); diff --git a/400_xowa/src/gplx/xowa/wikis/xwikis/cfgs/Xoac_wiki_grp.java b/400_xowa/src/gplx/xowa/wikis/xwikis/cfgs/Xoac_wiki_grp.java deleted file mode 100644 index 87544a318..000000000 --- a/400_xowa/src/gplx/xowa/wikis/xwikis/cfgs/Xoac_wiki_grp.java +++ /dev/null @@ -1,48 +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.wikis.xwikis.cfgs; import gplx.*; import gplx.xowa.*; import gplx.xowa.wikis.*; import gplx.xowa.wikis.xwikis.*; -import gplx.xowa.langs.cfgs.*; -interface Xoac_wiki_obj {} -public class Xoac_wiki_grp implements Cfg_nde_obj, Xoac_wiki_obj { - public Xoac_wiki_grp(byte[] key) {this.key_bry = key; this.name_bry = key_bry;} - public byte[] Key_bry() {return key_bry;} private byte[] key_bry; - public byte[] Name_bry() {return name_bry;} private byte[] name_bry; - public boolean Nde_typ_is_grp() {return true;} - public byte[] Nde_key() {return key_bry;} - public Cfg_nde_obj Nde_subs_make(byte[] itm_type, byte[] itm_key, byte[][] itm_atrs) { - Cfg_nde_obj rv = null; - if (Bry_.Eq(itm_type, Make_grp)) rv = new Xoac_wiki_grp(itm_key); - else if (Bry_.Eq(itm_type, Make_itm)) rv = new Xoac_wiki_itm(itm_key); - else throw Err_.new_unhandled(itm_type); - rv.Nde_atrs_set(itm_atrs); - return rv; - } - public int Nde_subs_len() {return itms.Count();} - public Cfg_nde_obj Nde_subs_get_at(int i) {return (Cfg_nde_obj)itms.Get_at(i);} - public Cfg_nde_obj Nde_subs_get(byte[] key) {return (Cfg_nde_obj)itms.Get_by(key);} - public void Nde_subs_add(byte[] itm_key, Cfg_nde_obj itm_obj) {itms.Add(itm_key, itm_obj);} - public void Nde_subs_del(byte[] key) {itms.Del(key);} - public void Nde_atrs_set(byte[][] ary) { - int ary_len = ary.length; - if (ary_len > 0) name_bry = ary[0]; - } - public static final byte[] Make_grp = Bry_.new_a7("grp"), Make_itm = Bry_.new_a7("itm"); - public int Itms_len() {return itms.Count();} - public Cfg_nde_obj Itms_get_at(int i) {return (Cfg_nde_obj)itms.Get_at(i);} - Ordered_hash itms = Ordered_hash_.new_bry_(); -} diff --git a/400_xowa/src/gplx/xowa/wikis/xwikis/cfgs/Xoac_wiki_grp_tst.java b/400_xowa/src/gplx/xowa/wikis/xwikis/cfgs/Xoac_wiki_grp_tst.java deleted file mode 100644 index 3a6ec48b3..000000000 --- a/400_xowa/src/gplx/xowa/wikis/xwikis/cfgs/Xoac_wiki_grp_tst.java +++ /dev/null @@ -1,99 +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.wikis.xwikis.cfgs; import gplx.*; import gplx.xowa.*; import gplx.xowa.wikis.*; import gplx.xowa.wikis.xwikis.*; -import org.junit.*; import gplx.core.tests.*; -import gplx.xowa.wikis.*; import gplx.xowa.langs.cfgs.*; -public class Xoac_wiki_grp_tst { - Xoac_wiki_grp_fxt fxt = new Xoac_wiki_grp_fxt(); - @Before public void init() {fxt.Clear();} - @Test public void Add_itm_new() { - fxt.Define_bulk(String_.Concat_lines_nl - ( "+|core|itm|commons|commons" - , "+|core|itm|meta|meta;m" - , "+|peer|itm|wiktionary|wikt;wiktionary" - , "+|peer|itm|wikisource|s" - ) - , fxt.grp_("core").Itms_ - ( fxt.itm_("commons").Aliases_("commons") - , fxt.itm_("meta").Aliases_("meta", "m") - ) - , fxt.grp_("peer").Itms_ - ( fxt.itm_("wiktionary").Aliases_("wikt", "wiktionary") - , fxt.itm_("wikisource").Aliases_("s") - ) - ); - } -} -class Xoac_wiki_grp_fxt { - Xoae_wiki_mgr wiki_mgr; Tst_mgr tst_mgr = new Tst_mgr(); - public void Clear() { - Xoae_app app = Xoa_app_fxt.app_(); - wiki_mgr = app.Wiki_mgr(); - } - public Xoac_wiki_itm_chkr itm_(String key) {return new Xoac_wiki_itm_chkr(key);} - public Xoac_wiki_grp_chkr grp_(String key) {return new Xoac_wiki_grp_chkr(key);} - public Xoac_wiki_grp_fxt Define_bulk(String raw, Xoac_wiki_grp_chkr... expd) { - wiki_mgr.Groups().Set_bulk(Bry_.new_u8(raw)); - tst_mgr.Tst_ary("", expd, To_ary(wiki_mgr.Groups())); - return this; - } - Xoac_wiki_grp[] To_ary(Cfg_nde_root root) { - int len = root.Root_len(); - Xoac_wiki_grp[] rv = new Xoac_wiki_grp[len]; - for (int i = 0; i < len; i++) { - rv[i] = (Xoac_wiki_grp)root.Root_get_at(i); // ASSUME: root only has grps (no itms) - } - return rv; - } -} -interface Xoac_wiki_chkr_obj extends Tst_chkr {} -class Xoac_wiki_itm_chkr implements Xoac_wiki_chkr_obj { - public Xoac_wiki_itm_chkr(String key) {this.key = key;} - public String Key() {return key;} private String key; - public Xoac_wiki_itm_chkr Aliases_(String... v) {aliases = v; return this;} private String[] aliases; - public Class TypeOf() {return Xoac_wiki_itm.class;} - public int Chk(Tst_mgr mgr, String path, Object actl_obj) { - Xoac_wiki_itm actl = (Xoac_wiki_itm)actl_obj; - int rv = 0; - rv += mgr.Tst_val(key == null, path, "key", key, String_.new_u8(actl.Key_bry())); - rv += mgr.Tst_val(aliases == null, path, "aliases", String_.AryXtoStr(aliases), String_.AryXtoStr(String_.Ary(actl.Aliases()))); - return rv; - } -} -class Xoac_wiki_grp_chkr implements Xoac_wiki_chkr_obj { - public Xoac_wiki_grp_chkr(String key) {this.key = key;} - public String Key() {return key;} private String key; - public Xoac_wiki_grp_chkr Name_(String v) {name = v; return this;} private String name; - public Xoac_wiki_grp_chkr Itms_(Xoac_wiki_chkr_obj... v) {this.itms = v; return this;} private Xoac_wiki_chkr_obj[] itms; - public Class TypeOf() {return Xoac_wiki_grp.class;} - public int Chk(Tst_mgr mgr, String path, Object actl_obj) { - Xoac_wiki_grp actl = (Xoac_wiki_grp)actl_obj; - int rv = 0; - rv += mgr.Tst_val(key == null, path, "key", key, String_.new_u8(actl.Key_bry())); - rv += mgr.Tst_val(name == null, path, "name", name, String_.new_u8(actl.Name_bry())); - rv += mgr.Tst_sub_ary(itms, To_ary(actl), path, rv); - return rv; - } - Xoac_wiki_obj[] To_ary(Xoac_wiki_grp grp) { - int len = grp.Itms_len(); - Xoac_wiki_obj[] rv = new Xoac_wiki_obj[len]; - for (int i = 0; i < len; i++) - rv[i] = (Xoac_wiki_obj)grp.Itms_get_at(i); // ASSUME: grp only has itms (no grps) - return rv; - } -} diff --git a/400_xowa/src/gplx/xowa/wikis/xwikis/cfgs/Xoac_wiki_itm.java b/400_xowa/src/gplx/xowa/wikis/xwikis/cfgs/Xoac_wiki_itm.java deleted file mode 100644 index 3074381d5..000000000 --- a/400_xowa/src/gplx/xowa/wikis/xwikis/cfgs/Xoac_wiki_itm.java +++ /dev/null @@ -1,36 +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.wikis.xwikis.cfgs; import gplx.*; import gplx.xowa.*; import gplx.xowa.wikis.*; import gplx.xowa.wikis.xwikis.*; -import gplx.xowa.langs.cfgs.*; -public class Xoac_wiki_itm implements Cfg_nde_obj, Xoac_wiki_obj { - public Xoac_wiki_itm(byte[] key) {this.key_bry = key;} - public byte[] Key_bry() {return key_bry;} private byte[] key_bry; - public byte[][] Aliases() {return aliases;} private byte[][] aliases; - public byte[] Nde_key() {return key_bry;} - public boolean Nde_typ_is_grp() {return false;} - public Cfg_nde_obj Nde_subs_make(byte[] itm_type, byte[] itm_key, byte[][] itm_atrs) {throw Err_.new_wo_type("leafs cannot have itms", "type", itm_type, "key", itm_key);} - public Cfg_nde_obj Nde_subs_get(byte[] key) {throw Err_.new_wo_type("leafs cannot have itms", "key", key);} - public int Nde_subs_len() {return 0;} - public Cfg_nde_obj Nde_subs_get_at(int i) {throw Err_.new_wo_type("leafs cannot have itms", "idx", i);} - public void Nde_subs_add(byte[] itm_key, Cfg_nde_obj itm_obj) {throw Err_.new_wo_type("leafs cannot have itms", "key", String_.new_u8(itm_key));} - public void Nde_subs_del(byte[] key) {throw Err_.new_wo_type("leafs cannot delete itms", "key", String_.new_u8(key));} - public void Nde_atrs_set(byte[][] ary) { - int ary_len = ary.length; - if (ary_len > 0) aliases = Bry_split_.Split(ary[0], Byte_ascii.Semic); - } -} diff --git a/400_xowa/src/gplx/xowa/wikis/xwikis/parsers/Xow_xwiki_itm_parser.java b/400_xowa/src/gplx/xowa/wikis/xwikis/parsers/Xow_xwiki_itm_parser.java new file mode 100644 index 000000000..ca70e3840 --- /dev/null +++ b/400_xowa/src/gplx/xowa/wikis/xwikis/parsers/Xow_xwiki_itm_parser.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.wikis.xwikis.parsers; import gplx.*; import gplx.xowa.*; import gplx.xowa.wikis.*; import gplx.xowa.wikis.xwikis.*; +import gplx.core.net.*; +import gplx.langs.dsvs.*; +import gplx.xowa.langs.*; +import gplx.xowa.wikis.domains.*; import gplx.xowa.wikis.xwikis.bldrs.*; +public class Xow_xwiki_itm_parser extends Dsv_wkr_base { + private Xow_domain_itm owner_domain_itm; + private int cur_tid = -1; private byte[] cur_fld1, cur_fld2, cur_fld3; + private final Gfo_url_parser url_parser = new Gfo_url_parser(); private final Gfo_url url = new Gfo_url(); + public Ordered_hash Xwiki_list() {return xwiki_list;} private final Ordered_hash xwiki_list = Ordered_hash_.New(); + @Override public Dsv_fld_parser[] Fld_parsers() {return new Dsv_fld_parser[] {Dsv_fld_parser_.Bry_parser, Dsv_fld_parser_.Bry_parser, Dsv_fld_parser_.Bry_parser, Dsv_fld_parser_.Bry_parser};} + @Override public boolean Write_bry(Dsv_tbl_parser parser, int fld_idx, byte[] src, int bgn, int end) { + switch (fld_idx) { + case 0: cur_tid = Bry_.To_int_or(src, bgn, end, -1); return true; + case 1: cur_fld1 = Bry_.Mid(src, bgn, end); return true; + case 2: cur_fld2 = Bry_.Mid(src, bgn, end); return true; + case 3: cur_fld3 = Bry_.Mid(src, bgn, end); return true; + default: return false; + } + } + public Xow_xwiki_itm_parser Init_by_wiki(Xow_domain_itm owner_domain_itm) {this.owner_domain_itm = owner_domain_itm; return this;} + @Override public void Load_by_bry_bgn() {xwiki_list.Clear();} + @Override public void Commit_itm(Dsv_tbl_parser parser, int pos) { + byte[][] key_ary = Bry_split_.Split(cur_fld1, Byte_ascii.Semic); // allow multiple key defs; EX: "w;wikipedia" + boolean xwiki_is_mw = true; + byte[] domain_name = cur_fld3; // NOTE: by happenstance, domain_name is always cur_fld3 + byte[] url_fmt = null, domain_bry = null; + switch (cur_tid) { + case Tid__manual: // EX: "0|domz|http://www.dmoz.org/~{0}|DMOZ" + xwiki_is_mw = false; + url_fmt = cur_fld2; + domain_bry = Xow_xwiki_mgr.Get_domain_from_url(url_parser, url, url_fmt); + break; + case Tid__mw_domain: // EX: "1|w|en.wikipedia.org" + domain_bry = cur_fld2; + break; + case Tid__wm_peer: // EX: "2|wikt|wikipedia" + domain_bry = Bry_.Add(owner_domain_itm.Lang_actl_key(), Byte_ascii.Dot_bry, cur_fld2, gplx.xowa.apps.urls.Xoa_url_parser.Bry_dot_org); + break; + case Tid__wm_lang: // EX: "3|en;english|en|English" + domain_bry = Bry_.Add(cur_fld2, Byte_ascii.Dot_bry, owner_domain_itm.Domain_type().Key_bry(), gplx.xowa.apps.urls.Xoa_url_parser.Bry_dot_org); + break; + default: throw Err_.new_unhandled(cur_tid); + } + byte[] abrv_wm = null; + int lang_id = Xol_lang_stub_.Id__unknown, domain_tid = Xow_domain_tid_.Int__other; + if (xwiki_is_mw) { + url_fmt = Xow_xwiki_mgr.Bld_url_fmt(domain_bry); + Xow_domain_itm domain_itm = Xow_domain_itm_.parse(domain_bry); + if (Bry_.Len_eq_0(domain_name)) { // no name; build default + Xol_lang_stub stub_itm = Xol_lang_stub_.Get_by_key_or_null(domain_itm.Lang_actl_itm().Key()); + byte[] lang_name = stub_itm == null ? Bry_.Empty : stub_itm.Canonical_name(); + domain_name = Bry_.Add_w_dlm(Byte_ascii.Space, lang_name, domain_itm.Domain_type().Display_bry()); + } + abrv_wm = domain_itm.Abrv_wm(); + lang_id = domain_itm.Lang_actl_uid(); + domain_tid = domain_itm.Domain_type_id(); + } + Create_xwikis(key_ary, url_fmt, lang_id, domain_tid, domain_bry, domain_name, abrv_wm); + cur_tid = -1; + cur_fld1 = cur_fld2 = cur_fld3 = null; + } + private void Create_xwikis(byte[][] key_ary, byte[] url_fmt, int lang_id, int domain_tid, byte[] domain_bry, byte[] domain_name, byte[] abrv_wm) { + for (byte[] key : key_ary) { + Xow_xwiki_itm itm = Xow_xwiki_itm_bldr.Instance.Bld_xo(owner_domain_itm, key, url_fmt, domain_name); + xwiki_list.Add(key, itm); + } + } + public static final int + Tid__manual = 0 + , Tid__mw_domain = 1 + , Tid__wm_peer = 2 + , Tid__wm_lang = 3 + ; +} diff --git a/400_xowa/src/gplx/xowa/wikis/xwikis/parsers/Xow_xwiki_itm_parser_tst.java b/400_xowa/src/gplx/xowa/wikis/xwikis/parsers/Xow_xwiki_itm_parser_tst.java new file mode 100644 index 000000000..fc3875a46 --- /dev/null +++ b/400_xowa/src/gplx/xowa/wikis/xwikis/parsers/Xow_xwiki_itm_parser_tst.java @@ -0,0 +1,97 @@ +/* +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.wikis.xwikis.parsers; import gplx.*; import gplx.xowa.*; import gplx.xowa.wikis.*; import gplx.xowa.wikis.xwikis.*; +import org.junit.*; import gplx.xowa.wikis.domains.*; +public class Xow_xwiki_itm_parser_tst { + private final Xow_xwiki_itm_parser_fxt fxt = new Xow_xwiki_itm_parser_fxt(); + @Test public void Manual() { + fxt.Exec_parse(String_.Concat_lines_nl_skip_last + ( "0|a|https://a.org/~{0}|A" + )); + fxt.Test_parse(String_.Concat_lines_nl_skip_last + ( "a|https://a.org/~{0}|A" + )); + } + @Test public void Mw_domain() { + fxt.Exec_parse(String_.Concat_lines_nl_skip_last + ( "1|w|en.wikipedia.org|Wikipedia" + )); + fxt.Test_parse(String_.Concat_lines_nl_skip_last + ( "w|https://en.wikipedia.org/wiki/~{0}|Wikipedia" + )); + } + @Test public void Wm_peer() { + fxt.Exec_parse(String_.Concat_lines_nl_skip_last + ( "2|wikt|wiktionary|Wiktionary" + )); + fxt.Test_parse(String_.Concat_lines_nl_skip_last + ( "wikt|https://en.wiktionary.org/wiki/~{0}|Wiktionary" + )); + } + @Test public void Wm_lang() { + fxt.Exec_parse(String_.Concat_lines_nl_skip_last + ( "3|fr|fr|French" + )); + fxt.Test_parse(String_.Concat_lines_nl_skip_last + ( "fr|https://fr.wikipedia.org/wiki/~{0}|French" + )); + } + @Test public void Multiple() { + fxt.Exec_parse(String_.Concat_lines_nl_skip_last + ( "2|wikt;wiktionary|wiktionary|Wiktionary" + )); + fxt.Test_parse(String_.Concat_lines_nl_skip_last + ( "wikt|https://en.wiktionary.org/wiki/~{0}|Wiktionary" + , "wiktionary|https://en.wiktionary.org/wiki/~{0}|Wiktionary" + )); + } + @Test public void Default_name() { + fxt.Exec_parse(String_.Concat_lines_nl_skip_last + ( "2|wikt|wiktionary|" + )); + fxt.Test_parse(String_.Concat_lines_nl_skip_last + ( "wikt|https://en.wiktionary.org/wiki/~{0}|English Wiktionary" + )); + } +} +class Xow_xwiki_itm_parser_fxt { + private final Xow_xwiki_itm_parser parser = new Xow_xwiki_itm_parser(); + private final Bry_bfr tmp_bfr = Bry_bfr.new_(); + public Xow_xwiki_itm_parser_fxt() { + parser.Init_by_wiki(Xow_domain_itm_.parse(Bry_.new_a7("en.wikipedia.org"))); + } + public void Exec_parse(String raw) { + byte[] src = Bry_.new_u8(raw); + parser.Load_by_bry(src); + } + public void Test_parse(String expd) { + Tfds.Eq_str_lines(expd, To_str()); + } + private String To_str() { + Ordered_hash list = parser.Xwiki_list(); + int len = list.Count(); + for (int i = 0; i < len; ++i) { + Xow_xwiki_itm itm = (Xow_xwiki_itm)list.Get_at(i); + tmp_bfr.Add(itm.Key_bry()).Add_byte_pipe(); + tmp_bfr.Add(itm.Url_fmt()).Add_byte_pipe(); + tmp_bfr.Add(itm.Domain_name()).Add_byte_nl(); + } + list.Clear(); + return tmp_bfr.To_str_and_clear(); + } +} diff --git a/400_xowa/src/gplx/xowa/wikis/xwikis/parsers/Xow_xwiki_mgr_tst.java b/400_xowa/src/gplx/xowa/wikis/xwikis/parsers/Xow_xwiki_mgr_tst.java new file mode 100644 index 000000000..b8a909755 --- /dev/null +++ b/400_xowa/src/gplx/xowa/wikis/xwikis/parsers/Xow_xwiki_mgr_tst.java @@ -0,0 +1,147 @@ +/* +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.wikis.xwikis.parsers; import gplx.*; import gplx.xowa.*; import gplx.xowa.wikis.*; import gplx.xowa.wikis.xwikis.*; +import org.junit.*; import gplx.core.strings.*; +import gplx.xowa.wikis.domains.*; import gplx.xowa.langs.*; +public class Xow_xwiki_mgr_tst { + @Before public void init() {fxt.Clear();} private Xow_xwiki_mgr_fxt fxt = new Xow_xwiki_mgr_fxt(); + @Test public void Add_bulk_langs_wiki() { + fxt.Init_langs(); + fxt.Test_add_bulk_langs + ( fxt.xwiki_("en", "en.wikipedia.org", "https://en.wikipedia.org/wiki/~{0}") + , fxt.xwiki_("de", "de.wikipedia.org", "https://de.wikipedia.org/wiki/~{0}") + , fxt.xwiki_("fr", "fr.wikipedia.org", "https://fr.wikipedia.org/wiki/~{0}") + , fxt.xwiki_("ja", "ja.wikipedia.org", "https://ja.wikipedia.org/wiki/~{0}") + ); + } + @Test public void Add_bulk_langs_grp_commons() { + fxt.Init_langs(); + fxt.Wiki().Xwiki_mgr().Add_by_sitelink_mgr(Xow_domain_tid_.Int__wikipedia); + fxt.Tst_itms(fxt.xwiki_("de", "de.wikipedia.org", "https://de.wikipedia.org/wiki/~{0}"), fxt.xwiki_("fr", "fr.wikipedia.org", "https://fr.wikipedia.org/wiki/~{0}")); + } + @Test public void Add_bulk_peers() { + fxt.Init_peers(); + fxt.Test_add_bulk_peers + ( fxt.xwiki_("wikt", "en.wiktionary.org" + , "https://en.wiktionary.org/wiki/~{0}") + , fxt.xwiki_("wiktionary", "en.wiktionary.org" + , "https://en.wiktionary.org/wiki/~{0}") + , fxt.xwiki_("s", "en.wikisource.org", "https://en.wikisource.org/wiki/~{0}")); + } + @Test public void Add_bulk_peers_skip_self() { // PURPOSE: skip "wikipedia" as alias since "Wikipedia" is namespace; needed for titles of "Wikipedia:Main page" (which would otherwise try to go to page "Main Page" in the main names of xwiki "Wikipedia" + fxt.Init_peers(); + fxt.Test_add_bulk_peers + ( fxt.xwiki_null_("wikipedia") + , fxt.xwiki_("w", "en.wikipedia.org", "https://en.wikipedia.org/wiki/~{0}")); + } + @Test public void Add_bulk_peers_tid() { // PURPOSE:wikt should generate wiki_tid of wiktionary, not wikipedia; PAGE:en.s:Main_Page DATE:2014-09-14 + fxt.Init_wikt ().Test_add_bulk_peers(fxt.xwiki_("wikt", "en.wiktionary.org", "https://en.wiktionary.org/wiki/~{0}")); + } +// @Test public void Duplicate() { // PURPOSE.FIX: multiple aliases for same domain should only be added once to Get_at's list; DATE:2014-11-07 +// fxt.Exec_parse(String_.Concat_lines_nl_skip_last +// ( "0|a1|a.org" +// , "0|a2|a.org" +// )); +// fxt.Test_parse(String_.Concat_lines_nl_skip_last +// ( "a1|https://a.org//~{0}" +// )); +// } +} +class Xow_xwiki_mgr_fxt { + Xow_xwiki_mgr xwiki_mgr; Xoa_lang_mgr lang_mgr; String_bldr sb = String_bldr_.new_(); Xoae_app app; Xowe_wiki wiki; + public void Clear() { + if (xwiki_mgr == null) { + app = Xoa_app_fxt.app_(); + wiki = Xoa_app_fxt.wiki_tst_(app); + xwiki_mgr = wiki.Xwiki_mgr(); + lang_mgr = app.Lang_mgr(); + } + xwiki_mgr.Clear(); + lang_mgr.Clear(); + } + public Xowe_wiki Wiki() {return wiki;} + public Xow_xwiki_itm xwiki_null_(String key) {return Xow_xwiki_itm.new_(Bry_.new_u8(key), Bry_.Empty, Xol_lang_stub_.Id__unknown, Xow_domain_tid_.Int__other, Bry_.Empty, Bry_.Empty);} + public Xow_xwiki_itm xwiki_(String key, String domain_str, String url_fmt) { + Xow_domain_itm domain = Xow_domain_itm_.parse(Bry_.new_u8(domain_str)); + return Xow_xwiki_itm.new_(Bry_.new_u8(key), Bry_.new_u8(url_fmt), domain.Lang_actl_itm().Id(), domain.Domain_type_id(), domain.Domain_bry(), domain.Abrv_wm()); + } + public Xow_xwiki_mgr_fxt Init_langs() { + app.Xwiki_mgr__sitelink_mgr().Parse(Bry_.new_u8(String_.Concat_lines_nl + ( "0|english" + , "1|en|English" + , "0|europe_west" + , "1|fr|French" + , "1|de|German" + , "0|asia_east" + , "1|ja|Japanese" + ))); + return this; + } + public Xow_xwiki_mgr_fxt Init_peers() { + wiki.Xwiki_mgr().Add_by_csv(Bry_.new_u8(String_.Concat_lines_nl + ( "1|d|www.wikidata.org" + , "2|wikt;wiktionary|wiktionary" + , "2|s|wikisource" + , "2|w;wikipedia|wikipedia" + ))); + return this; + } + public Xow_xwiki_mgr_fxt Init_wikt() { + wiki.Xwiki_mgr().Add_by_csv(Bry_.new_u8(String_.Concat_lines_nl + ( "2|wikt;wiktionary|wiktionary" + ))); + return this; + } + public Xow_xwiki_mgr_fxt Test_add_bulk_langs(Xow_xwiki_itm... itms) { + xwiki_mgr.Add_by_sitelink_mgr(); + Tfds.Eq_str_lines(Xto_str(itms), Xto_str(To_ary(itms))); + return this; + } + public Xow_xwiki_mgr_fxt Test_add_bulk_peers(Xow_xwiki_itm... itms) { + Tfds.Eq_str_lines(Xto_str(itms), Xto_str(To_ary(itms))); + return this; + } + public Xow_xwiki_mgr_fxt Tst_itms(Xow_xwiki_itm... itms) { + Tfds.Eq_str_lines(Xto_str(itms), Xto_str(To_ary(itms))); + return this; + } + public Xow_xwiki_mgr_fxt Test_len(int expd) {Tfds.Eq(expd, xwiki_mgr.Len()); return this;} + Xow_xwiki_itm[] To_ary(Xow_xwiki_itm[] itms) { + int len = itms.length; + List_adp rv = List_adp_.new_(); + for (int i = 0; i < len; i++) { + byte[] alias = itms[i].Key_bry(); + Xow_xwiki_itm itm = xwiki_mgr.Get_by_key(alias); + if (itm == null) itm = xwiki_null_(String_.new_u8(alias)); // "null", ignore + rv.Add(itm); + } + return (Xow_xwiki_itm[])rv.To_ary(Xow_xwiki_itm.class); + } + String Xto_str(Xow_xwiki_itm[] itms) { + int len = itms.length; + for (int i = 0; i < len; i++) { + Xow_xwiki_itm itm = itms[i]; + if (Bry_.Len_eq_0(itm.Domain_bry())) // "null", ignore + sb.Add(itm.Key_bry()).Add_char_nl(); + else { + sb.Add(itm.Key_bry()).Add_char_pipe().Add(itm.Domain_bry()).Add_char_pipe().Add(itm.Url_fmt()).Add_char_pipe().Add(itm.Domain_tid()).Add_char_nl(); + } + } + return sb.To_str_and_clear(); + } +} diff --git a/400_xowa/src/gplx/xowa/wikis/xwikis/sitelinks/Xoa_sitelink_grp.java b/400_xowa/src/gplx/xowa/wikis/xwikis/sitelinks/Xoa_sitelink_grp.java new file mode 100644 index 000000000..c105bd25c --- /dev/null +++ b/400_xowa/src/gplx/xowa/wikis/xwikis/sitelinks/Xoa_sitelink_grp.java @@ -0,0 +1,51 @@ +/* +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.wikis.xwikis.sitelinks; import gplx.*; import gplx.xowa.*; import gplx.xowa.wikis.*; import gplx.xowa.wikis.xwikis.*; +public class Xoa_sitelink_grp implements gplx.CompareAble { + private final Ordered_hash hash = Ordered_hash_.New_bry(); + public Xoa_sitelink_grp(byte[] name, int sort) { + this.name = name; + this.sort = sort; + } + public byte[] Name() {return name;} private final byte[] name; + public int Sort() {return sort;} private final int sort; + public int Len() {return hash.Count();} + public Xoa_sitelink_itm Get_at(int i) {return (Xoa_sitelink_itm)hash.Get_at(i);} + public void Add(Xoa_sitelink_itm itm) {hash.Add(itm.Key(), itm);} + public void Del(byte[] key) {hash.Del(key);} + public void Active_len__add() {++active_len;} + public int Active_len() {return active_len;} private int active_len; + public void Reset() { + int len = hash.Count(); + for (int i = 0; i < len; ++i) { + Xoa_sitelink_itm itm = (Xoa_sitelink_itm)hash.Get_at(i); + itm.Init_by_page(null, null, false, null); // clear out pre-existing page names; needed b/c this struct is a singleton for entire wiki + } + active_len = 0; + } + public int compareTo(Object obj) {Xoa_sitelink_grp comp = (Xoa_sitelink_grp)obj; return Int_.Compare(sort, comp.sort);} + public void To_bfr(Bry_bfr bfr) { + bfr.Add_int_digits(1, Xoa_sitelink_mgr_parser.Tid__grp).Add_byte_pipe(); + bfr.Add(name).Add_byte_nl(); + int len = hash.Count(); + for (int i = 0; i < len; ++i) { + Xoa_sitelink_itm itm = (Xoa_sitelink_itm)hash.Get_at(i); + itm.To_bfr(bfr); + } + } +} diff --git a/400_xowa/src/gplx/xowa/wikis/xwikis/sitelinks/Xoa_sitelink_grp_mgr.java b/400_xowa/src/gplx/xowa/wikis/xwikis/sitelinks/Xoa_sitelink_grp_mgr.java new file mode 100644 index 000000000..9e64e10db --- /dev/null +++ b/400_xowa/src/gplx/xowa/wikis/xwikis/sitelinks/Xoa_sitelink_grp_mgr.java @@ -0,0 +1,45 @@ +/* +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.wikis.xwikis.sitelinks; import gplx.*; import gplx.xowa.*; import gplx.xowa.wikis.*; import gplx.xowa.wikis.xwikis.*; +public class Xoa_sitelink_grp_mgr { + private final Ordered_hash hash = Ordered_hash_.New_bry(); + public Xoa_sitelink_grp_mgr() { + this.default_grp = new Xoa_sitelink_grp(Bry_.new_a7("Others"), 1024); + hash.Add(default_grp.Name(), default_grp); + } + public Xoa_sitelink_grp Default_grp() {return default_grp;} private final Xoa_sitelink_grp default_grp; + public int Len() {return hash.Count();} + public void Clear() {hash.Clear();} + public Xoa_sitelink_grp Get_at(int idx) {return (Xoa_sitelink_grp)hash.Get_at(idx);} + public Xoa_sitelink_grp Get_by_or_new(byte[] key) { + Xoa_sitelink_grp rv = (Xoa_sitelink_grp)hash.Get_by(key); + if (rv == null) { + rv = new Xoa_sitelink_grp(key, hash.Count()); + hash.Add(key, rv); + } + return rv; + } + public void Sort() {hash.Sort();} + public void To_bfr(Bry_bfr bfr) { + int len = hash.Count(); + for (int i = 0; i < len; ++i) { + Xoa_sitelink_grp grp = (Xoa_sitelink_grp)hash.Get_at(i); + grp.To_bfr(bfr); + } + } +} diff --git a/400_xowa/src/gplx/xowa/wikis/xwikis/sitelinks/Xoa_sitelink_itm.java b/400_xowa/src/gplx/xowa/wikis/xwikis/sitelinks/Xoa_sitelink_itm.java new file mode 100644 index 000000000..d5c0b2857 --- /dev/null +++ b/400_xowa/src/gplx/xowa/wikis/xwikis/sitelinks/Xoa_sitelink_itm.java @@ -0,0 +1,51 @@ +/* +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.wikis.xwikis.sitelinks; import gplx.*; import gplx.xowa.*; import gplx.xowa.wikis.*; import gplx.xowa.wikis.xwikis.*; +import gplx.xowa.wikis.domains.*; +public class Xoa_sitelink_itm { + public Xoa_sitelink_itm(Xoa_sitelink_grp grp, byte[] key, byte[] name) { + this.grp = grp; this.key = key; this.name = name; + grp.Add(this); + } + public byte[] Key() {return key;} private final byte[] key; // EX: "en", "c"; NOTE: usually lang_key, but can be xwiki key + public byte[] Name() {return name;} private byte[] name; // EX: "English", "Commons" + public Xoa_sitelink_grp Grp() {return grp;} private Xoa_sitelink_grp grp; // EX: "Tier 1" + public Xow_domain_itm Site_domain() {return site_domain;} private Xow_domain_itm site_domain; // EX: "en.wikipedia.org"; "commons.wikimedia.org" + public byte[] Page_name() {return page_name;} private byte[] page_name; // EX: "Earth", "Terre" + public boolean Page_name_is_empty() {return page_name_is_empty;} private boolean page_name_is_empty; // EX: [[fr:]] + public byte[][] Page_badges() {return page_badges;} private byte[][] page_badges; + + public void Init_by_page(Xow_domain_itm site_domain, byte[] page_name, boolean page_name_is_empty, byte[][] page_badges) { + this.site_domain = site_domain; + this.page_name = page_name; this.page_name_is_empty = page_name_is_empty; this.page_badges = page_badges; + grp.Active_len__add(); + } + public void Move_to(Xoa_sitelink_grp new_grp) { + if (Bry_.Eq(new_grp.Name(), grp.Name())) return; // same grp + grp.Del(key); + new_grp.Add(this); + this.grp = new_grp; + } + public void Grp_(Xoa_sitelink_grp v) {this.grp = v;} + public void Site_name_(byte[] v) {this.name = v;} + public void To_bfr(Bry_bfr bfr) { + bfr.Add_int_digits(1, Xoa_sitelink_mgr_parser.Tid__itm).Add_byte_pipe(); + bfr.Add(key).Add_byte_pipe(); + bfr.Add(name).Add_byte_nl(); + } +} diff --git a/400_xowa/src/gplx/xowa/wikis/xwikis/sitelinks/Xoa_sitelink_itm_mgr.java b/400_xowa/src/gplx/xowa/wikis/xwikis/sitelinks/Xoa_sitelink_itm_mgr.java new file mode 100644 index 000000000..e8497d6f1 --- /dev/null +++ b/400_xowa/src/gplx/xowa/wikis/xwikis/sitelinks/Xoa_sitelink_itm_mgr.java @@ -0,0 +1,37 @@ +/* +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.wikis.xwikis.sitelinks; import gplx.*; import gplx.xowa.*; import gplx.xowa.wikis.*; import gplx.xowa.wikis.xwikis.*; +import gplx.xowa.langs.*; +public class Xoa_sitelink_itm_mgr { + private final Ordered_hash hash = Ordered_hash_.New_bry(); + private final Xoa_sitelink_grp default_grp; + public Xoa_sitelink_itm_mgr(Xoa_sitelink_grp default_grp) {this.default_grp = default_grp;} + public int Len() {return hash.Count();} + public void Clear() {hash.Clear();} + public void Add(Xoa_sitelink_itm itm) {hash.Add(itm.Key(), itm);} + public Xoa_sitelink_itm Get_at(int idx) {return (Xoa_sitelink_itm)hash.Get_at(idx);} + public Xoa_sitelink_itm Get_by(byte[] key) {return (Xoa_sitelink_itm)hash.Get_by(key);} + public Xoa_sitelink_itm Get_by_or_new(byte[] key) { + Xoa_sitelink_itm rv = (Xoa_sitelink_itm)hash.Get_by(key); + if (rv == null) { + rv = new Xoa_sitelink_itm(default_grp, key, Bry_.Empty); + hash.Add(key, rv); + } + return rv; + } +} diff --git a/400_xowa/src/gplx/xowa/wikis/xwikis/sitelinks/Xoa_sitelink_mgr.java b/400_xowa/src/gplx/xowa/wikis/xwikis/sitelinks/Xoa_sitelink_mgr.java new file mode 100644 index 000000000..653351075 --- /dev/null +++ b/400_xowa/src/gplx/xowa/wikis/xwikis/sitelinks/Xoa_sitelink_mgr.java @@ -0,0 +1,48 @@ +/* +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.wikis.xwikis.sitelinks; import gplx.*; import gplx.xowa.*; import gplx.xowa.wikis.*; import gplx.xowa.wikis.xwikis.*; +import gplx.xowa.wikis.xwikis.sitelinks.htmls.*; import gplx.xowa.langs.*; +public class Xoa_sitelink_mgr { + private final Xoa_sitelink_div_wtr div_wtr = new Xoa_sitelink_div_wtr(); + public Xoa_sitelink_itm_mgr Itm_mgr() {return itm_mgr;} private final Xoa_sitelink_itm_mgr itm_mgr; + public Xoa_sitelink_grp_mgr Grp_mgr() {return grp_mgr;} private final Xoa_sitelink_grp_mgr grp_mgr = new Xoa_sitelink_grp_mgr(); + public Xoa_sitelink_mgr() { + this.itm_mgr = new Xoa_sitelink_itm_mgr(grp_mgr.Default_grp()); + } + public void Init_by_app() { // add all langs + Xoa_sitelink_grp default_grp = grp_mgr.Default_grp(); + Xol_lang_stub[] ary = Xol_lang_stub_.Ary(); + int len = ary.length; + for (int i = 0; i < len; ++i) { + Xol_lang_stub stub = ary[i]; + Xoa_sitelink_itm itm = itm_mgr.Get_by(stub.Key()); + if (itm == null) { // note that some itms may already exist if user has defined custom names + itm = new Xoa_sitelink_itm(default_grp, stub.Key(), stub.Canonical_name()); + itm_mgr.Add(itm); + } + } + } + public void Parse(byte[] src) { + Xoa_sitelink_mgr_parser parser = new Xoa_sitelink_mgr_parser(this); + parser.Load_by_bry(src); + grp_mgr.Sort(); // sort again to put "Others" at bottom + } + public void Write_html(Bry_bfr bfr, Xowe_wiki wiki, List_adp slink_list, byte[] qid) { + div_wtr.Write(bfr, wiki, this, slink_list, qid); + } +} diff --git a/400_xowa/src/gplx/xowa/wikis/xwikis/sitelinks/Xoa_sitelink_mgr_parser.java b/400_xowa/src/gplx/xowa/wikis/xwikis/sitelinks/Xoa_sitelink_mgr_parser.java new file mode 100644 index 000000000..ef63178af --- /dev/null +++ b/400_xowa/src/gplx/xowa/wikis/xwikis/sitelinks/Xoa_sitelink_mgr_parser.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.wikis.xwikis.sitelinks; import gplx.*; import gplx.xowa.*; import gplx.xowa.wikis.*; import gplx.xowa.wikis.xwikis.*; +import gplx.langs.dsvs.*; +class Xoa_sitelink_mgr_parser extends Dsv_wkr_base { + private final Xoa_sitelink_grp_mgr grp_mgr; + private final Xoa_sitelink_itm_mgr itm_mgr; + private int cur_tid = -1; + private byte[] cur_fld1, cur_fld2; + private Xoa_sitelink_grp cur_grp; + public Xoa_sitelink_mgr_parser(Xoa_sitelink_mgr mgr) {this.grp_mgr = mgr.Grp_mgr(); this.itm_mgr = mgr.Itm_mgr();} + @Override public Dsv_fld_parser[] Fld_parsers() {return new Dsv_fld_parser[] {Dsv_fld_parser_.Bry_parser, Dsv_fld_parser_.Bry_parser, Dsv_fld_parser_.Bry_parser};} + @Override public boolean Write_bry(Dsv_tbl_parser parser, int fld_idx, byte[] src, int bgn, int end) { + switch (fld_idx) { + case 0: cur_tid = Bry_.To_int_or(src, bgn, end, -1); return true; + case 1: cur_fld1 = Bry_.Mid(src, bgn, end); return true; + case 2: cur_fld2 = Bry_.Mid(src, bgn, end); return true; + default: return false; + } + } + @Override public void Commit_itm(Dsv_tbl_parser parser, int pos) { + switch (cur_tid) { + case Tid__grp: + cur_grp = grp_mgr.Get_by_or_new(cur_fld1); + break; + case Tid__itm: + Xoa_sitelink_itm itm = itm_mgr.Get_by_or_new(cur_fld1); + itm.Move_to(cur_grp); + itm.Site_name_(cur_fld2); + break; + default: throw Err_.new_unhandled(cur_tid); + } + cur_tid = -1; + cur_fld1 = cur_fld2 = null; + } + public static final int Tid__grp = 0, Tid__itm = 1; +} diff --git a/400_xowa/src/gplx/xowa/wikis/xwikis/sitelinks/Xoa_sitelink_mgr_parser_tst.java b/400_xowa/src/gplx/xowa/wikis/xwikis/sitelinks/Xoa_sitelink_mgr_parser_tst.java new file mode 100644 index 000000000..c3db62151 --- /dev/null +++ b/400_xowa/src/gplx/xowa/wikis/xwikis/sitelinks/Xoa_sitelink_mgr_parser_tst.java @@ -0,0 +1,69 @@ +/* +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.wikis.xwikis.sitelinks; import gplx.*; import gplx.xowa.*; import gplx.xowa.wikis.*; import gplx.xowa.wikis.xwikis.*; +import org.junit.*; +public class Xoa_sitelink_mgr_parser_tst { + private final Xoa_sitelink_mgr_parser_fxt fxt = new Xoa_sitelink_mgr_parser_fxt(); + @Before public void init() {fxt.Clear();} + @Test public void Basic() { + String raw = String_.Concat_lines_nl_skip_last + ( "0|Tier 0" + , "1|de|German" + , "1|en|English" + , "0|Tier 1" + , "1|ar|Arabic" + , "1|ca|Catalan" + ); + fxt.Exec_parse(raw); + fxt.Test_parse(raw); + } + @Test public void Move() { + String raw = String_.Concat_lines_nl_skip_last + ( "0|Tier 0" + , "1|de|German" + , "0|Tier 1" + , "1|ar|Arabic" + ); + fxt.Exec_parse(raw); + raw = String_.Concat_lines_nl_skip_last + ( "0|Tier 0" + , "1|ar|Arabic" + , "0|Tier 1" + , "1|de|German" + ); + fxt.Exec_parse(raw); + fxt.Test_parse(raw); + } +} +class Xoa_sitelink_mgr_parser_fxt { + private final Xoa_sitelink_mgr mgr = new Xoa_sitelink_mgr(); + private final Xoa_sitelink_mgr_parser parser; + private final Bry_bfr tmp_bfr = Bry_bfr.new_(); + public void Clear() {mgr.Grp_mgr().Clear();} + public Xoa_sitelink_mgr_parser_fxt() { + this.parser = new Xoa_sitelink_mgr_parser(mgr); + } + public void Exec_parse(String raw) { + byte[] src = Bry_.new_u8(raw); + parser.Load_by_bry(src); + } + public void Test_parse(String expd) { + mgr.Grp_mgr().To_bfr(tmp_bfr); + Tfds.Eq_str_lines(expd, tmp_bfr.To_str_and_clear()); + } +} diff --git a/400_xowa/src/gplx/xowa/wikis/xwikis/sitelinks/htmls/Xoa_sitelink_div_wtr.java b/400_xowa/src/gplx/xowa/wikis/xwikis/sitelinks/htmls/Xoa_sitelink_div_wtr.java new file mode 100644 index 000000000..be57eb029 --- /dev/null +++ b/400_xowa/src/gplx/xowa/wikis/xwikis/sitelinks/htmls/Xoa_sitelink_div_wtr.java @@ -0,0 +1,69 @@ +/* +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.wikis.xwikis.sitelinks.htmls; import gplx.*; import gplx.xowa.*; import gplx.xowa.wikis.*; import gplx.xowa.wikis.xwikis.*; import gplx.xowa.wikis.xwikis.sitelinks.*; +import gplx.xowa.apps.apis.xowa.html.*; +import gplx.xowa.langs.*; import gplx.xowa.langs.msgs.*; +import gplx.xowa.xtns.wdatas.core.*; +public class Xoa_sitelink_div_wtr { + private final Xoa_sitelink_grp_wtr grp_wtr = new Xoa_sitelink_grp_wtr(); + public void Write(Bry_bfr bfr, Xowe_wiki wiki, Xoa_sitelink_mgr mgr, List_adp slink_list, byte[] qid) { + Xoa_sitelink_grp_mgr grp_mgr = mgr.Grp_mgr(); Xoa_sitelink_itm_mgr itm_mgr = mgr.Itm_mgr(); + + // reset grps + grp_wtr.Init_by_app(wiki.App()); + int grp_len = grp_mgr.Len(); + for (int i = 0; i < grp_len; ++i) { + Xoa_sitelink_grp grp = grp_mgr.Get_at(i); + grp.Reset(); + } + + // add itms to each grp + int slink_len = slink_list.Count(); + for (int i = 0; i < slink_len; i++) { + Wdata_sitelink_itm slink = (Wdata_sitelink_itm)slink_list.Get_at(i); + Xoa_ttl ttl = slink.Page_ttl(); + Xoa_sitelink_itm itm = itm_mgr.Get_by(ttl.Wik_itm().Key_bry()); + if (itm == null) { + Xoa_app_.Usr_dlg().Warn_many("", "", "sitelink itm missing; wiki=~{0} key=~{1} lnki_ttl=~{2}", wiki.Domain_bry(), ttl.Wik_itm().Key_bry(), ttl.Raw()); + continue; + } + byte[] ttl_bry = ttl.Page_txt_w_anchor(); + boolean ttl_is_empty = false; + if (Bry_.Len_eq_0(ttl_bry)) { // NOTE: handles ttls like [[fr:]] and [[:fr;]] which have an empty Page_txt, but a valued Full_txt_raw + ttl_bry = wiki.Parser_mgr().Ctx().Cur_page().Ttl().Page_txt(); + ttl_is_empty = true; + } + itm.Init_by_page(slink.Domain_info(), ttl_bry, ttl_is_empty, slink.Badges()); + } + + // write html + Xoapi_toggle_itm toggle_itm = wiki.Appe().Api_root().Html().Page().Toggle_mgr().Get_or_new("wikidata-langs"); + toggle_itm.Init(wiki.Msg_mgr().Val_by_id(Xol_msg_itm_.Id_page_lang_header)); + Bry_bfr tmp_bfr = wiki.Utl__bfr_mkr().Get_b128().Mkr_rls(); + byte[] wikidata_link = Bry_.Len_eq_0(qid) ? Bry_.Empty : wbase_fmtr.Bld_bry_many(tmp_bfr, qid); + div_fmtr.Bld_bfr_many(bfr, slink_len, wikidata_link, toggle_itm.Html_toggle_btn(), toggle_itm.Html_toggle_hdr(), grp_wtr.Fmt__init(grp_mgr)); + } + private static final Bry_fmtr wbase_fmtr = Bry_fmtr.new_(" (wikidata)", "qid"); + private static final Bry_fmtr div_fmtr = Bry_fmtr.new_(String_.Concat_lines_nl_skip_last + ( "
" + , "
~{toggle_btn} (links: ~{len}) ~{wikidata_link}
" + , " ~{grps}" + , "
" + , "" + ), "len", "wikidata_link", "toggle_btn", "toggle_hdr", "grps"); +} diff --git a/400_xowa/src/gplx/xowa/wikis/xwikis/Xow_lang_mgr_fxt.java b/400_xowa/src/gplx/xowa/wikis/xwikis/sitelinks/htmls/Xoa_sitelink_div_wtr_fxt.java similarity index 57% rename from 400_xowa/src/gplx/xowa/wikis/xwikis/Xow_lang_mgr_fxt.java rename to 400_xowa/src/gplx/xowa/wikis/xwikis/sitelinks/htmls/Xoa_sitelink_div_wtr_fxt.java index 398731f67..e3eea0753 100644 --- a/400_xowa/src/gplx/xowa/wikis/xwikis/Xow_lang_mgr_fxt.java +++ b/400_xowa/src/gplx/xowa/wikis/xwikis/sitelinks/htmls/Xoa_sitelink_div_wtr_fxt.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.wikis.xwikis; import gplx.*; import gplx.xowa.*; import gplx.xowa.wikis.*; +package gplx.xowa.wikis.xwikis.sitelinks.htmls; import gplx.*; import gplx.xowa.*; import gplx.xowa.wikis.*; import gplx.xowa.wikis.xwikis.*; import gplx.xowa.wikis.xwikis.sitelinks.*; import gplx.xowa.langs.*; import gplx.xowa.parsers.*; -public class Xow_lang_mgr_fxt { +class Xoa_sitelink_div_wtr_fxt { public void Clear() { app = Xoa_app_fxt.app_(); wiki = Xoa_app_fxt.wiki_tst_(app); @@ -25,27 +25,24 @@ public class Xow_lang_mgr_fxt { } public static void Init_langs(Xowe_wiki wiki) { Xoae_app app = wiki.Appe(); - Xoa_lang_mgr lang_mgr = app.Lang_mgr(); - lang_mgr.Groups().Set_bulk(Bry_.new_a7(String_.Concat_lines_nl - ( "+||grp|wiki" - , "+|wiki|grp|grp1" - , "+|wiki|grp|grp2" - , "+|grp1|itm|simple|Simple" - , "+|grp2|itm|fr|French" - , "+|grp1|itm|es|Spanish" - , "+|grp2|itm|de|German" - , "+|grp1|itm|it|Italian" - , "+|grp1|itm|zh|Chinese" - ))); - wiki.Xwiki_mgr().Add_bulk_langs(Bry_.new_a7("wiki")); - String bulk = String_.Concat_lines_nl - ( "simple.wikipedia.org|simple.wikipedia.org" - , "fr.wikipedia.org|fr.wikipedia.org" - , "es.wikipedia.org|es.wikipedia.org" - , "de.wikipedia.org|de.wikipedia.org" - , "it.wikipedia.org|it.wikipedia.org" - ); - wiki.Appe().Usere().Wiki().Xwiki_mgr().Add_bulk(Bry_.new_a7(bulk)); + app.Xwiki_mgr__sitelink_mgr().Parse(Bry_.new_u8(String_.Concat_lines_nl + ( "0|grp1" + , "1|simple|Simple" + , "1|es|Spanish" + , "1|it|Italian" + , "1|zh|Chinese" + , "0|grp2" + , "1|fr|French" + , "1|de|German" + ))); + wiki.Xwiki_mgr().Add_by_sitelink_mgr(); + wiki.Appe().Usere().Wiki().Xwiki_mgr().Add_by_csv(Bry_.new_a7(String_.Concat_lines_nl + ( "1|simple.wikipedia.org|simple.wikipedia.org" + , "1|fr.wikipedia.org|fr.wikipedia.org" + , "1|es.wikipedia.org|es.wikipedia.org" + , "1|de.wikipedia.org|de.wikipedia.org" + , "1|it.wikipedia.org|it.wikipedia.org" + ))); } public Xowe_wiki Wiki() {return wiki;} private Xowe_wiki wiki; Xoae_app app; @@ -59,7 +56,7 @@ public class Xow_lang_mgr_fxt { wiki.Html_mgr().Html_wtr().Write_all(bfr, ctx, raw_bry, root); Bry_bfr html_bfr = Bry_bfr.new_(); - wiki.Xwiki_mgr().Lang_mgr().Html_bld(html_bfr, wiki, ctx.Cur_page().Slink_list(), gplx.xowa.xtns.wdatas.Wdata_xwiki_link_wtr.Qid_null); - Tfds.Eq_str_lines(expd, html_bfr.Xto_str_and_clear()); + wiki.App().Xwiki_mgr__sitelink_mgr().Write_html(html_bfr, wiki, ctx.Cur_page().Slink_list(), gplx.xowa.xtns.wdatas.Wdata_xwiki_link_wtr.Qid_null); + Tfds.Eq_str_lines(expd, html_bfr.To_str_and_clear()); } } diff --git a/400_xowa/src/gplx/xowa/wikis/xwikis/Xow_lang_mgr_tst.java b/400_xowa/src/gplx/xowa/wikis/xwikis/sitelinks/htmls/Xoa_sitelink_div_wtr_tst.java similarity index 84% rename from 400_xowa/src/gplx/xowa/wikis/xwikis/Xow_lang_mgr_tst.java rename to 400_xowa/src/gplx/xowa/wikis/xwikis/sitelinks/htmls/Xoa_sitelink_div_wtr_tst.java index 819d15855..2acc59592 100644 --- a/400_xowa/src/gplx/xowa/wikis/xwikis/Xow_lang_mgr_tst.java +++ b/400_xowa/src/gplx/xowa/wikis/xwikis/sitelinks/htmls/Xoa_sitelink_div_wtr_tst.java @@ -15,10 +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.wikis.xwikis; import gplx.*; import gplx.xowa.*; import gplx.xowa.wikis.*; +package gplx.xowa.wikis.xwikis.sitelinks.htmls; import gplx.*; import gplx.xowa.*; import gplx.xowa.wikis.*; import gplx.xowa.wikis.xwikis.*; import gplx.xowa.wikis.xwikis.sitelinks.*; import org.junit.*; -public class Xow_lang_mgr_tst { - private final Xow_lang_mgr_fxt fxt = new Xow_lang_mgr_fxt(); +public class Xoa_sitelink_div_wtr_tst { + private final Xoa_sitelink_div_wtr_fxt fxt = new Xoa_sitelink_div_wtr_fxt(); @Before public void init() {fxt.Clear();} @Test public void Basic() { fxt.tst("[[simple:Earth]] [[fr:Terre]] [[es:Tierra]] [[de:Erde]] [[it:Terre]]", String_.Concat_lines_nl_skip_last @@ -28,7 +28,7 @@ public class Xow_lang_mgr_tst { , "

grp1

" , " " , " " - , " " + , " " , " " , " " , " " @@ -38,6 +38,7 @@ public class Xow_lang_mgr_tst { , " " , " " , " " + , " " , "
Simple
  • Earth
  • Simple
  • Earth
  • Spanish
  • Tierra
  • Italian
  • Terre
  • French
  • Terre
  • German
  • Erde
  • " , "
    " , " " @@ -52,7 +53,9 @@ public class Xow_lang_mgr_tst { , "

    grp1

    " , " " , " " - , " " + , " " + , " " , "
    Simple
  • Test page
  • Simple
  • Test page
  • " + , " " , "
    " , " " @@ -69,6 +72,8 @@ public class Xow_lang_mgr_tst { , " " , " " , " " + , " " , "
    Chinese
  • Earth
  • " + , " " , "
    " , " " @@ -83,7 +88,9 @@ public class Xow_lang_mgr_tst { , "

    grp1

    " , " " , " " - , " " + , " " + , " " , "
    Simple
  • A#b
  • Simple
  • A#b
  • " + , " " , "
    " , " " diff --git a/400_xowa/src/gplx/xowa/wikis/xwikis/sitelinks/htmls/Xoa_sitelink_grp_wtr.java b/400_xowa/src/gplx/xowa/wikis/xwikis/sitelinks/htmls/Xoa_sitelink_grp_wtr.java new file mode 100644 index 000000000..10dc5a5ce --- /dev/null +++ b/400_xowa/src/gplx/xowa/wikis/xwikis/sitelinks/htmls/Xoa_sitelink_grp_wtr.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.wikis.xwikis.sitelinks.htmls; import gplx.*; import gplx.xowa.*; import gplx.xowa.wikis.*; import gplx.xowa.wikis.xwikis.*; import gplx.xowa.wikis.xwikis.sitelinks.*; +class Xoa_sitelink_grp_wtr implements Bry_fmtr_arg { + private final Xoa_sitelink_itm_wtr itm_wtr = new Xoa_sitelink_itm_wtr(); + private Xoa_sitelink_grp_mgr mgr; + public void Init_by_app(Xoa_app app) {itm_wtr.Init_by_app(app);} + public Xoa_sitelink_grp_wtr Fmt__init(Xoa_sitelink_grp_mgr mgr) {this.mgr = mgr; return this;} + public void Fmt__do(Bry_bfr bfr) { + int len = mgr.Len(); + for (int i = 0; i < len; ++i) { + Xoa_sitelink_grp grp = mgr.Get_at(i); + if (grp.Active_len() == 0) continue; // skip grps with no items + fmtr.Bld_bfr_many(bfr, grp.Name(), itm_wtr.Fmt__init(grp)); + } + } + private static final Bry_fmtr fmtr = Bry_fmtr.new_(String_.Concat_lines_nl_skip_last + ( "" + , "

    ~{all_name}

    " + , " ~{grps}" + , "
    " + ), "all_name", "grps"); +} diff --git a/400_xowa/src/gplx/xowa/wikis/xwikis/sitelinks/htmls/Xoa_sitelink_itm_wtr.java b/400_xowa/src/gplx/xowa/wikis/xwikis/sitelinks/htmls/Xoa_sitelink_itm_wtr.java new file mode 100644 index 000000000..65a1e31aa --- /dev/null +++ b/400_xowa/src/gplx/xowa/wikis/xwikis/sitelinks/htmls/Xoa_sitelink_itm_wtr.java @@ -0,0 +1,64 @@ +/* +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.wikis.xwikis.sitelinks.htmls; import gplx.*; import gplx.xowa.*; import gplx.xowa.wikis.*; import gplx.xowa.wikis.xwikis.*; import gplx.xowa.wikis.xwikis.sitelinks.*; +import gplx.xowa.htmls.hrefs.*; +import gplx.xowa.wikis.domains.*; +class Xoa_sitelink_itm_wtr implements Bry_fmtr_arg { + private final Bry_bfr tmp_bfr = Bry_bfr.new_(255); + private Xoa_app app; private Xoa_sitelink_grp grp; + public void Init_by_app(Xoa_app app) {this.app = app;} + public Xoa_sitelink_itm_wtr Fmt__init(Xoa_sitelink_grp grp) {this.grp = grp; return this;} + public void Fmt__do(Bry_bfr bfr) { + int len = grp.Len(); + boolean tr_opened = false; int td_idx = 0; + for (int i = 0; i < len; ++i) { + Xoa_sitelink_itm itm = grp.Get_at(i); + if (Bry_.Len_eq_0(itm.Page_name())) continue; // xwiki does not exist for current page + if (td_idx == 0) { + bfr.Add(tr_bgn); + tr_opened = true; + } + Xow_domain_itm domain_itm = itm.Site_domain(); + byte[] domain_bry = domain_itm.Domain_bry(); + byte[] page_name = itm.Page_name(); + byte[] url_protocol = app.Xwiki_mgr__missing(domain_bry) ? Xoh_href_.Bry__https : Xoh_href_.Bry__site; // if wiki exists, "/site/", else "https://" + byte[] url_page = itm.Page_name_is_empty() ? Bry_.Empty : page_name; + byte[] url = Bry_.Add(url_protocol, domain_bry, Xoh_href_.Bry__wiki, url_page); + td_fmtr.Bld_bfr_many(bfr, domain_itm.Lang_actl_key(), domain_itm.Domain_bry(), itm.Name(), url, page_name, Xoa_sitelink_itm_wtr__badge.Bld_badge_class(tmp_bfr, itm.Page_badges())); + ++td_idx; + if (td_idx == td_max) { + tr_opened = false; + bfr.Add(tr_end); + td_idx = 0; + } + } + if (tr_opened) { + for (int i = td_idx; i < td_max; ++i) + bfr.Add(td_nil); + bfr.Add(tr_end); + } + } + private static final int td_max = 3; + private static final byte[] tr_bgn = Bry_.new_a7("\n "); + private static final byte[] td_nil = Bry_.new_a7("\n "); + private static final byte[] tr_end = Bry_.new_a7("\n "); + private static final Bry_fmtr td_fmtr = Bry_fmtr.new_(String_.Concat_lines_nl_skip_last + ( "" + , " ~{lang_name}~{pagename_translation}" + ), "lang_code", "lang_domain", "lang_name", "lang_href", "pagename_translation", "page_badge"); +} diff --git a/400_xowa/src/gplx/xowa/wikis/xwikis/sitelinks/htmls/Xoa_sitelink_itm_wtr__badge.java b/400_xowa/src/gplx/xowa/wikis/xwikis/sitelinks/htmls/Xoa_sitelink_itm_wtr__badge.java new file mode 100644 index 000000000..1962fd7c2 --- /dev/null +++ b/400_xowa/src/gplx/xowa/wikis/xwikis/sitelinks/htmls/Xoa_sitelink_itm_wtr__badge.java @@ -0,0 +1,51 @@ +/* +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.wikis.xwikis.sitelinks.htmls; import gplx.*; import gplx.xowa.*; import gplx.xowa.wikis.*; import gplx.xowa.wikis.xwikis.*; import gplx.xowa.wikis.xwikis.sitelinks.*; +class Xoa_sitelink_itm_wtr__badge { + public static byte[] Bld_badge_class(Bry_bfr bfr, byte[][] badge_ary) { // EX: "Q17437798", "Q17437796" -> "class='badge-goodarticle,badge-featuredarticle'" + if (badge_ary == null) badge_ary = Bry_.Ary_empty; + bfr.Add(Cls_bgn); + int badges_len = badge_ary.length; + if (badges_len == 0) + bfr.Add(Badge_none_cls); + else { + for (int i = 0; i < badges_len; ++i) { + if (i != 0) bfr.Add_byte_comma(); + byte[] badge_itm = badge_ary[i]; + byte[] badge_cls = (byte[])badges_hash.Get_by_bry(badge_itm); + if (badge_cls == null) + Gfo_usr_dlg_.Instance.Warn_many("", "", "unknown badge: badge=~{0}", String_.new_u8(badge_itm)); + else + bfr.Add(badge_cls); + } + } + bfr.Add_byte_apos(); + return bfr.To_bry_and_clear(); + } + private static final byte[] + Badge_none_cls = Bry_.new_a7("badge-none") + , Cls_bgn = Bry_.new_a7(" class='") + ; + private static final Hash_adp_bry badges_hash = Hash_adp_bry.ci_a7() + .Add_str_obj("Q17437798", Bry_.new_a7("badge-goodarticle")) + .Add_str_obj("Q17437796", Bry_.new_a7("badge-featuredarticle")) + .Add_str_obj("Q17559452", Bry_.new_a7("badge-recommendedarticle")) + .Add_str_obj("Q17506997", Bry_.new_a7("badge-featuredlist")) + .Add_str_obj("Q17580674", Bry_.new_a7("badge-featuredportal")) + ; +} diff --git a/400_xowa/src/gplx/xowa/wms/sites/Site_api_mgr.java b/400_xowa/src/gplx/xowa/wms/sites/Site_api_mgr.java deleted file mode 100644 index c5f09a99b..000000000 --- a/400_xowa/src/gplx/xowa/wms/sites/Site_api_mgr.java +++ /dev/null @@ -1,76 +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.wms.sites; import gplx.*; import gplx.xowa.*; import gplx.xowa.wms.*; -import gplx.dbs.cfgs.*; -import gplx.core.net.*; -import gplx.langs.jsons.*; -import gplx.xowa.wikis.domains.*; -public class Site_api_mgr { - private final Json_parser json_parser = new Json_parser(); - private final Site_json_parser site_parser; - public Site_api_mgr() { - this.site_parser = new Site_json_parser(json_parser); - } - public void Load_wiki(Gfo_usr_dlg usr_dlg, Gfo_inet_conn inet_conn, String domain_str, Db_cfg_tbl cfg_tbl) { - // Load_wiki_by_inet(usr_dlg, inet_conn, domain_str, cfg_tbl); -// Site_meta_itm meta_itm = new Site_meta_itm(); -// site_parser.Parse_root(meta_itm, domain_str, json_text); - } - public void Load_all(Gfo_usr_dlg usr_dlg, Gfo_inet_conn inet_conn, Io_url db_url, String[] reqd_ary, DateAdp cutoff) { - Ordered_hash reqd_hash = Ordered_hash_.new_(); - int reqd_len = reqd_ary.length; - for (int i = 0; i < reqd_len; ++i) - reqd_hash.Add_as_key_and_val(reqd_ary[i]); - - Site_core_db json_db = new Site_core_db(db_url); - Site_core_itm[] actl_ary = json_db.Tbl__core().Select_all_downloaded(cutoff); - int actl_len = actl_ary.length; - for (int i = 0; i < actl_len; ++i) { // remove items that have been completed after cutoff date - Site_core_itm actl_itm = actl_ary[i]; - reqd_hash.Del(String_.new_u8(actl_itm.Site_domain())); - } - - reqd_len = reqd_hash.Count(); - for (int i = 0; i < reqd_len; ++i) { - String domain_str = (String)reqd_hash.Get_at(i); - DateAdp json_date = DateAdp_.Now(); - byte[] json_text = null; - for (int j = 0; j < 5; ++j) { - json_text = Xowm_api_mgr.Call_api(usr_dlg, inet_conn, domain_str, "action=query&format=json&meta=siteinfo&siprop=general|namespaces|statistics|interwikimap|namespacealiases|specialpagealiases|libraries|extensions|skins|magicwords|functionhooks|showhooks|extensiontags|protocols|defaultoptions|languages"); - if (json_text == null) - gplx.core.threads.Thread_adp_.Sleep(1000); - else - break; - } - byte[] domain_bry = Bry_.new_u8(domain_str); - byte[] site_abrv = Xow_abrv_xo_.To_bry(domain_bry); - json_db.Tbl__core().Insert(site_abrv, domain_bry, Bool_.N, json_date, json_text); - } - - reqd_len = reqd_ary.length; - for (int i = 0; i < reqd_len; ++i) { - String domain_str = reqd_ary[i]; - byte[] site_abrv = Xow_abrv_xo_.To_bry(Bry_.new_u8(domain_str)); - Site_core_itm core_itm = json_db.Tbl__core().Select_itm(site_abrv); - if (core_itm.Json_completed()) continue; - Site_meta_itm meta_itm = new Site_meta_itm(); - site_parser.Parse_root(meta_itm, String_.new_u8(core_itm.Site_domain()), core_itm.Json_text()); - json_db.Save(meta_itm, site_abrv); - } - } -} diff --git a/400_xowa/src/gplx/xowa/wms/sites/Site_core_db_tst.java b/400_xowa/src/gplx/xowa/wms/sites/Site_core_db_tst.java deleted file mode 100644 index 8ec46f5e3..000000000 --- a/400_xowa/src/gplx/xowa/wms/sites/Site_core_db_tst.java +++ /dev/null @@ -1,32 +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.wms.sites; import gplx.*; import gplx.xowa.*; import gplx.xowa.wms.*; -import org.junit.*; -import gplx.dbs.*; -import gplx.xowa.bldrs.cmds.utils.*; -public class Site_core_db_tst { - @Test public void Basic() { -// Xoa_app app = Xoa_app_fxt.app_(); -// Db_conn_bldr.I.Reg_default_sqlite(); -// Io_url db_url = Tfds.RscDir.GenSubFil_nest("400_xowa", "site_meta.sqlite3"); -// gplx.core.consoles.Console_adp__sys.I.Write_str(db_url.Xto_api()); -// Xoa_app_.Usr_dlg_(Gfo_usr_dlg_.Test_console()); -// new Site_api_mgr().Load_all(app.Utl__inet_conn(), db_url, gplx.xowa.wikis.domains.Xow_domain_regy.All, DateAdp_.parse_iso8561("2015-09-08 23:00:00")); -// Xoa_app_.Usr_dlg_(Gfo_usr_dlg_.Noop); - } -} diff --git a/400_xowa/src/gplx/xowa/xtns/Xow_xtn_mgr.java b/400_xowa/src/gplx/xowa/xtns/Xow_xtn_mgr.java index 29970e8cc..c942ff367 100644 --- a/400_xowa/src/gplx/xowa/xtns/Xow_xtn_mgr.java +++ b/400_xowa/src/gplx/xowa/xtns/Xow_xtn_mgr.java @@ -20,7 +20,7 @@ import gplx.core.primitives.*; import gplx.core.btries.*; import gplx.xowa.xtns.cite.*; import gplx.xowa.xtns.imaps.*; import gplx.xowa.xtns.relatedSites.*; import gplx.xowa.xtns.proofreadPage.*; import gplx.xowa.xtns.wdatas.*; import gplx.xowa.xtns.insiders.*; import gplx.xowa.xtns.indicators.*; public class Xow_xtn_mgr implements GfoInvkAble { - private Ordered_hash regy = Ordered_hash_.new_bry_(); + private Ordered_hash regy = Ordered_hash_.New_bry(); public int Count() {return regy.Count();} public Cite_xtn_mgr Xtn_cite() {return xtn_cite;} private Cite_xtn_mgr xtn_cite; public Imap_xtn_mgr Xtn_imap() {return xtn_imap;} private Imap_xtn_mgr xtn_imap; diff --git a/400_xowa/src/gplx/xowa/xtns/Xox_mgr_base.java b/400_xowa/src/gplx/xowa/xtns/Xox_mgr_base.java index c26e8f0c7..fdab4dd4c 100644 --- a/400_xowa/src/gplx/xowa/xtns/Xox_mgr_base.java +++ b/400_xowa/src/gplx/xowa/xtns/Xox_mgr_base.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.xtns; import gplx.*; import gplx.xowa.*; -import gplx.xowa.bldrs.langs.*; import gplx.xowa.html.*; +import gplx.xowa.langs.bldrs.*; import gplx.xowa.htmls.*; import gplx.xowa.parsers.*; import gplx.xowa.parsers.xndes.*; public abstract class Xox_mgr_base implements Xox_mgr { public Xox_mgr_base() { @@ -34,15 +34,16 @@ public abstract class Xox_mgr_base implements Xox_mgr { @gplx.Virtual public void Xtn_init_by_app(Xoae_app app) {} @gplx.Virtual public void Xtn_init_by_wiki(Xowe_wiki wiki) {} @gplx.Virtual public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { - if (ctx.Match(k, Invk_enabled)) return Yn.Xto_str(enabled); + if (ctx.Match(k, Invk_enabled)) return Yn.To_str(enabled); else if (ctx.Match(k, Invk_enabled_)) {enabled = m.ReadYn("v"); enabled_manually = true;} else return GfoInvkAble_.Rv_unhandled; return this; } private static final String Invk_enabled = "enabled", Invk_enabled_ = "enabled_"; - public static void Xtn_write_escape(Xoae_app app, Bry_bfr bfr, byte[] src, Xop_xnde_tkn xnde) {Xtn_write_escape(app, bfr, src, xnde.Src_bgn(), xnde.Src_end());} - public static void Xtn_write_escape(Xoae_app app, Bry_bfr bfr, byte[] src) {Xtn_write_escape(app, bfr, src, 0, src.length);} + public static void Xtn_write_escape(Xoae_app app, Bry_bfr bfr, byte[] src, Xop_xnde_tkn xnde) {Xtn_write_escape(app, bfr, src, xnde.Src_bgn(), xnde.Src_end());} + public static void Xtn_write_escape(Xoae_app app, Bry_bfr bfr, byte[] src) {Xtn_write_escape(app, bfr, src, 0, src.length);} public static void Xtn_write_escape(Xoae_app app, Bry_bfr bfr, byte[] src, int bgn, int end) {Xoh_html_wtr_escaper.Escape(app.Parser_amp_mgr(), bfr, src, bgn, end, true, false);} + public static void Xtn_write_escape_pre(Xoae_app app, Bry_bfr bfr, byte[] src, int bgn, int end){Xoh_html_wtr_escaper.Escape(app.Parser_amp_mgr(), bfr, src, bgn, end, false, false);} public static void Xtn_write_unsupported(Xoae_app app, Xop_ctx ctx, Bry_bfr bfr, byte[] src, Xop_xnde_tkn xnde, byte parse_content_tid) { bfr.Add(Xowa_not_implemented); Xox_mgr_base.Xtn_write_escape(app, bfr, src, xnde.Tag_open_bgn(), xnde.Tag_open_end()); diff --git a/400_xowa/src/gplx/xowa/xtns/Xox_xnde.java b/400_xowa/src/gplx/xowa/xtns/Xox_xnde.java index 5726069e7..3e82f75a2 100644 --- a/400_xowa/src/gplx/xowa/xtns/Xox_xnde.java +++ b/400_xowa/src/gplx/xowa/xtns/Xox_xnde.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.xtns; import gplx.*; import gplx.xowa.*; -import gplx.xowa.html.*; +import gplx.xowa.htmls.*; import gplx.xowa.parsers.*; import gplx.xowa.parsers.xndes.*; public interface Xox_xnde { void Xtn_parse(Xowe_wiki wiki, Xop_ctx ctx, Xop_root_tkn root, byte[] src, Xop_xnde_tkn xnde); diff --git a/400_xowa/src/gplx/xowa/langs/cfgs/Cfg_nde_obj_.java b/400_xowa/src/gplx/xowa/xtns/Xox_xnde_.java similarity index 54% rename from 400_xowa/src/gplx/xowa/langs/cfgs/Cfg_nde_obj_.java rename to 400_xowa/src/gplx/xowa/xtns/Xox_xnde_.java index f3e57c10f..b5dbdc225 100644 --- a/400_xowa/src/gplx/xowa/langs/cfgs/Cfg_nde_obj_.java +++ b/400_xowa/src/gplx/xowa/xtns/Xox_xnde_.java @@ -15,17 +15,16 @@ 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.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(); - for (int i = 0; i < subs_len; i++) { - Cfg_nde_obj sub_obj = (Cfg_nde_obj)peer_grp.Nde_subs_get_at(i); - if (sub_obj.Nde_typ_is_grp()) - Cfg_nde_obj_.Fill_recurse(rv, (Cfg_nde_obj)sub_obj); - else { - rv.Add_if_dupe_use_nth(sub_obj.Nde_key(), sub_obj); - } +package gplx.xowa.xtns; import gplx.*; import gplx.xowa.*; +import gplx.xowa.parsers.htmls.*; import gplx.xowa.parsers.xndes.*; +public class Xox_xnde_ { + public static Mwh_atr_itm[] Xatr__set(Xowe_wiki wiki, Mwh_atr_itm_owner owner, Hash_adp_bry hash, byte[] src, Xop_xnde_tkn xnde) { + Mwh_atr_itm[] rv = wiki.Appe().Parser_mgr().Xnde__parse_atrs(src, xnde.Atrs_bgn(), xnde.Atrs_end()); + int len = rv.length; + for (int i = 0; i < len; ++i) { + Mwh_atr_itm xatr = rv[i]; if (xatr.Invalid()) continue; + owner.Xatr__set(wiki, src, xatr, hash.Get_by_bry(xatr.Key_bry())); } + return rv; } } diff --git a/400_xowa/src/gplx/xowa/xtns/categoryList/Xtn_categorylist_nde.java b/400_xowa/src/gplx/xowa/xtns/categoryList/Xtn_categorylist_nde.java index cf289ab2d..8a727ab32 100644 --- a/400_xowa/src/gplx/xowa/xtns/categoryList/Xtn_categorylist_nde.java +++ b/400_xowa/src/gplx/xowa/xtns/categoryList/Xtn_categorylist_nde.java @@ -16,10 +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.xtns.categoryList; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; -import gplx.xowa.html.*; -import gplx.xowa.parsers.*; import gplx.xowa.parsers.xndes.*; -public class Xtn_categorylist_nde implements Xox_xnde, Xop_xnde_atr_parser { +import gplx.xowa.htmls.*; +import gplx.xowa.parsers.*; import gplx.xowa.parsers.xndes.*; import gplx.xowa.parsers.htmls.*; +public class Xtn_categorylist_nde implements Xox_xnde { public void Xtn_parse(Xowe_wiki wiki, Xop_ctx ctx, Xop_root_tkn root, byte[] src, Xop_xnde_tkn xnde) {} - public void Xatr_parse(Xowe_wiki wiki, byte[] src, Xop_xatr_itm xatr, Object xatr_key_obj) {} public void Xtn_write(Bry_bfr bfr, Xoae_app app, Xop_ctx ctx, Xoh_html_wtr html_wtr, Xoh_wtr_ctx hctx, Xop_xnde_tkn xnde, byte[] src) {} } diff --git a/400_xowa/src/gplx/xowa/xtns/cite/Ref_html_wtr.java b/400_xowa/src/gplx/xowa/xtns/cite/Ref_html_wtr.java index 1f81a2c77..b9d07a4c7 100644 --- a/400_xowa/src/gplx/xowa/xtns/cite/Ref_html_wtr.java +++ b/400_xowa/src/gplx/xowa/xtns/cite/Ref_html_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.xtns.cite; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; -import gplx.xowa.html.*; +import gplx.xowa.htmls.*; import gplx.xowa.parsers.*; import gplx.xowa.parsers.xndes.*; public class Ref_html_wtr { public Ref_html_wtr(Xowe_wiki wiki) { @@ -123,14 +123,14 @@ class Xoh_ref_list_fmtr implements Bry_fmtr_arg { return itm; // no itm has text; TODO:WARN } private boolean HasTxt(Ref_nde v) {return v.Body() != null && v.Body().Root_src().length > 0;} - public void XferAry(Bry_bfr trg, int idx) { + public void Fmt__do(Bry_bfr bfr) { int related_len = itm.Related_len(); Bry_fmtr itm_fmtr = cfg.Grp_html_list(); - Fmt(itm_fmtr, wiki, trg, itm); + Fmt(itm_fmtr, wiki, bfr, itm); for (int i = 0; i < related_len; i++) { Ref_nde link_itm = itm.Related_get(i); if (link_itm.Nested()) continue; - Fmt(itm_fmtr, wiki, trg, link_itm); + Fmt(itm_fmtr, wiki, bfr, link_itm); } } private void Fmt(Bry_fmtr itm_fmtr, Xowe_wiki wiki, Bry_bfr trg, Ref_nde itm) { diff --git a/400_xowa/src/gplx/xowa/xtns/cite/Ref_nde.java b/400_xowa/src/gplx/xowa/xtns/cite/Ref_nde.java index 82e6b1437..058457726 100644 --- a/400_xowa/src/gplx/xowa/xtns/cite/Ref_nde.java +++ b/400_xowa/src/gplx/xowa/xtns/cite/Ref_nde.java @@ -17,9 +17,9 @@ along with this program. If not, see . */ package gplx.xowa.xtns.cite; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.core.primitives.*; -import gplx.xowa.html.*; -import gplx.xowa.parsers.*; import gplx.xowa.parsers.xndes.*; -public class Ref_nde implements Xox_xnde, Xop_xnde_atr_parser { +import gplx.xowa.htmls.*; +import gplx.xowa.parsers.*; import gplx.xowa.parsers.xndes.*; import gplx.xowa.parsers.htmls.*; +public class Ref_nde implements Xox_xnde, Mwh_atr_itm_owner { public byte[] Name() {return name;} public Ref_nde Name_(byte[] v) {name = v; return this;} private byte[] name = Bry_.Empty; public byte[] Group() {return group;} private byte[] group = Bry_.Empty; public byte[] Follow() {return follow;} private byte[] follow = Bry_.Empty; @@ -32,18 +32,18 @@ public class Ref_nde implements Xox_xnde, Xop_xnde_atr_parser { public Xop_xnde_tkn Xnde() {return xnde;} private Xop_xnde_tkn xnde; public Xop_root_tkn Body() {return body;} private Xop_root_tkn body; public boolean Exists_in_lnki_title() {return exists_in_lnki_title;} public Ref_nde Exists_in_lnki_title_(boolean v) {exists_in_lnki_title = v; return this;} private boolean exists_in_lnki_title; - public void Xatr_parse(Xowe_wiki wiki, byte[] src, Xop_xatr_itm xatr, Object xatr_key_obj) { - if (xatr_key_obj == null) return; - Byte_obj_val xatr_key = (Byte_obj_val)xatr_key_obj; - switch (xatr_key.Val()) { - case Xatr_id_name: name = wiki.Appe().Sanitizer().Escape_id(xatr.Val_as_bry(src)); break; - case Xatr_id_follow: follow = xatr.Val_as_bry(src); break; - case Xatr_id_group: group = xatr.Val_as_bry(src); break; + public void Xatr__set(Xowe_wiki wiki, byte[] src, Mwh_atr_itm xatr, Object xatr_id_obj) { + if (xatr_id_obj == null) return; + Byte_obj_val xatr_id = (Byte_obj_val)xatr_id_obj; + switch (xatr_id.Val()) { + case Xatr_id_name: name = wiki.Appe().Sanitizer().Escape_id(xatr.Val_as_bry()); break; + case Xatr_id_follow: follow = xatr.Val_as_bry(); break; + case Xatr_id_group: group = xatr.Val_as_bry(); break; } } public void Xtn_parse(Xowe_wiki wiki, Xop_ctx ctx, Xop_root_tkn root, byte[] src, Xop_xnde_tkn xnde) { if (ctx.Tid_is_popup()) return; - Xop_xatr_itm.Xatr_parse(wiki.Appe(), this, xatrs_hash, wiki, src, xnde); + Xox_xnde_.Xatr__set(wiki, this, xatrs_hash, src, xnde); if (xnde.CloseMode() == Xop_xnde_tkn.CloseMode_pair) body = wiki.Parser_mgr().Main().Parse_text_to_wdom_old_ctx(ctx, Bry_.Mid(src, xnde.Tag_open_end(), xnde.Tag_close_bgn()), false); byte[] references_group = ctx.References_group(); // set by @@ -72,8 +72,8 @@ public class Ref_nde implements Xox_xnde, Xop_xnde_atr_parser { related[related_len] = itm; related_len = new_len; } - public static final byte Xatr_id_name = 0, Xatr_id_group = 1, Xatr_id_follow = 2; public static final int Idx_minor_follow = -2; + public static final byte Xatr_id_name = 0, Xatr_id_group = 1, Xatr_id_follow = 2; private static final Hash_adp_bry xatrs_hash = Hash_adp_bry.ci_a7() .Add_str_obj("name", Byte_obj_val.new_(Ref_nde.Xatr_id_name)) .Add_str_obj("group", Byte_obj_val.new_(Ref_nde.Xatr_id_group)) diff --git a/400_xowa/src/gplx/xowa/xtns/cite/References_nde.java b/400_xowa/src/gplx/xowa/xtns/cite/References_nde.java index f95cf7763..896509725 100644 --- a/400_xowa/src/gplx/xowa/xtns/cite/References_nde.java +++ b/400_xowa/src/gplx/xowa/xtns/cite/References_nde.java @@ -17,16 +17,16 @@ along with this program. If not, see . */ package gplx.xowa.xtns.cite; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.core.primitives.*; -import gplx.xowa.html.*; -import gplx.xowa.parsers.*; import gplx.xowa.parsers.xndes.*; -public class References_nde implements Xox_xnde, Xop_xnde_atr_parser { +import gplx.xowa.htmls.*; +import gplx.xowa.parsers.*; import gplx.xowa.parsers.xndes.*; import gplx.xowa.parsers.htmls.*; +public class References_nde implements Xox_xnde, Mwh_atr_itm_owner { public byte[] Group() {return group;} public References_nde Group_(byte[] v) {group = v; return this;} private byte[] group = Bry_.Empty; public int List_idx() {return list_idx;} public References_nde List_idx_(int v) {list_idx = v; return this;} private int list_idx; - public void Xatr_parse(Xowe_wiki wiki, byte[] src, Xop_xatr_itm xatr, Object xatr_key_obj) { - if (xatr_key_obj == null) return; - Byte_obj_val xatr_key = (Byte_obj_val)xatr_key_obj; - switch (xatr_key.Val()) { - case Xatr_id_group: group = xatr.Val_as_bry(src); break; + public void Xatr__set(Xowe_wiki wiki, byte[] src, Mwh_atr_itm xatr, Object xatr_id_obj) { + if (xatr_id_obj == null) return; + Byte_obj_val xatr_id = (Byte_obj_val)xatr_id_obj; + switch (xatr_id.Val()) { + case Xatr_id_group: group = xatr.Val_as_bry(); break; } } public void Xtn_parse(Xowe_wiki wiki, Xop_ctx ctx, Xop_root_tkn root, byte[] src, Xop_xnde_tkn xnde) { @@ -34,7 +34,7 @@ public class References_nde implements Xox_xnde, Xop_xnde_atr_parser { Ref_itm_mgr ref_mgr = ctx.Cur_page().Ref_mgr(); if (ref_mgr.References__recursing()) return; // skip nested else refs will be lost; EX:""; PAGE:en.w:Hwair; DATE:2014-06-27 ctx.Para().Process_block__bgn_n__end_y(Xop_xnde_tag_.Tag_div); // xnde generates ; ->
      ; close any blocks; PAGE:fr.w:Heidi_(roman); DATE:2014-02-17 - Xop_xatr_itm.Xatr_parse(wiki.Appe(), this, xatrs_hash, wiki, src, xnde); + Xox_xnde_.Xatr__set(wiki, this, xatrs_hash, src, xnde); if (xnde.CloseMode() == Xop_xnde_tkn.CloseMode_pair) { // "", ""; parse anything in between but only to pick up tags; discard everything else; DATE:2014-06-27 int itm_bgn = xnde.Tag_open_end(), itm_end = xnde.Tag_close_bgn(); Xop_ctx references_ctx = Xop_ctx.new_sub_page_(wiki, ctx, ctx.Lst_page_regy()).References_group_(group); // changed from following: "Xop_ctx references_ctx = Xop_ctx.new_sub_(wiki).References_group_(group);"; DATE:2015-05-16; diff --git a/400_xowa/src/gplx/xowa/xtns/cldrs/Cldr_lang_tbl.java b/400_xowa/src/gplx/xowa/xtns/cldrs/Cldr_lang_tbl.java new file mode 100644 index 000000000..1ba4f21d1 --- /dev/null +++ b/400_xowa/src/gplx/xowa/xtns/cldrs/Cldr_lang_tbl.java @@ -0,0 +1,47 @@ +/* +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.xtns.cldrs; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; +import gplx.dbs.*; +class Cldr_lang_tbl implements RlsAble { + private final String tbl_name = "cldr_lang"; private final Db_meta_fld_list flds = Db_meta_fld_list.new_(); + private final String fld_cldr_code, fld_lang_code, fld_lang_name; + private final Db_conn conn; private Db_stmt stmt_select, stmt_insert; + public Cldr_lang_tbl(Db_conn conn) { + this.conn = conn; + this.fld_cldr_code = flds.Add_str("cldr_code", 32); + this.fld_lang_code = flds.Add_str("lang_code", 32); + this.fld_lang_name = flds.Add_str("lang_name", 2048); + conn.Rls_reg(this); + } + public void Create_tbl() {conn.Ddl_create_tbl(Db_meta_tbl.new_(tbl_name, flds, Db_meta_idx.new_unique_by_tbl(tbl_name, "main", fld_cldr_code, fld_lang_code)));} + public void Insert_bgn() {conn.Txn_bgn("cldr_lang__inser"); stmt_insert = conn.Stmt_insert(tbl_name, flds);} + public void Insert_end() {conn.Txn_end(); stmt_insert = Db_stmt_.Rls(stmt_insert);} + public void Insert_cmd_by_batch(byte[] cldr_code, byte[] lang_code, byte[] lang_name) { + stmt_insert.Clear().Val_bry_as_str(fld_cldr_code, cldr_code).Val_bry_as_str(fld_lang_code, lang_code).Val_bry_as_str(fld_lang_name, lang_name).Exec_insert(); + } + public byte[] Select(byte[] cldr_code, byte[] lang_code) { + if (stmt_select == null) stmt_select = conn.Stmt_select(tbl_name, flds, fld_cldr_code, fld_lang_code); + Db_rdr rdr = stmt_select.Clear().Val_bry_as_str(fld_cldr_code, cldr_code).Val_bry_as_str(fld_lang_code, lang_code).Exec_select__rls_manual(); + try {return (byte[])rdr.Read_bry(fld_lang_name);} + finally {rdr.Rls();} + } + public void Rls() { + stmt_select = Db_stmt_.Rls(stmt_select); + stmt_insert = Db_stmt_.Rls(stmt_insert); + } +} \ No newline at end of file diff --git a/400_xowa/src/gplx/xowa/xtns/dynamicPageList/Dpl_itm.java b/400_xowa/src/gplx/xowa/xtns/dynamicPageList/Dpl_itm.java index 55fe79921..d0399edf8 100644 --- a/400_xowa/src/gplx/xowa/xtns/dynamicPageList/Dpl_itm.java +++ b/400_xowa/src/gplx/xowa/xtns/dynamicPageList/Dpl_itm.java @@ -17,9 +17,9 @@ along with this program. If not, see . */ package gplx.xowa.xtns.dynamicPageList; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.core.primitives.*; -import gplx.langs.htmls.*; import gplx.xowa.html.*; +import gplx.langs.htmls.*; import gplx.xowa.htmls.*; import gplx.xowa.parsers.*; import gplx.xowa.parsers.xndes.*; -import gplx.xowa.nss.*; +import gplx.xowa.wikis.nss.*; class Dpl_itm { public List_adp Ctg_includes() {return ctg_includes;} private List_adp ctg_includes; public List_adp Ctg_excludes() {return ctg_excludes;} private List_adp ctg_excludes; @@ -118,7 +118,7 @@ class Dpl_itm { case Dpl_itm_keys.Key_gallerycaption: gallery_caption = val; break; // FUTURE: parse for {{int:}}? case Dpl_itm_keys.Key_galleryshowfilesize: gallery_filesize = Dpl_itm_keys.Parse_as_bool(val, true); break; case Dpl_itm_keys.Key_galleryshowfilename: gallery_filename = Dpl_itm_keys.Parse_as_bool(val, true); break; - case Dpl_itm_keys.Key_ordermethod: sort_tid = Dpl_sort.Parse(val); break; + case Dpl_itm_keys.Key_ordermethod: sort_tid = Dpl_sort.Parse_ordermethod(val); break; } } private void Parse_ctg_date(byte[] val) { diff --git a/400_xowa/src/gplx/xowa/xtns/dynamicPageList/Dpl_sort.java b/400_xowa/src/gplx/xowa/xtns/dynamicPageList/Dpl_sort.java index 9fdf0476d..30772593d 100644 --- a/400_xowa/src/gplx/xowa/xtns/dynamicPageList/Dpl_sort.java +++ b/400_xowa/src/gplx/xowa/xtns/dynamicPageList/Dpl_sort.java @@ -21,23 +21,23 @@ class Dpl_sort { public static byte Parse_as_bool_byte(byte[] bry) { byte val = Dpl_itm_keys.Parse(bry, Dpl_itm_keys.Key_null); switch (val) { - case Dpl_itm_keys.Key_ascending: return Bool_.Y_byte; - case Dpl_itm_keys.Key_descending: return Bool_.N_byte; - case Dpl_itm_keys.Key_null: - default: return Bool_.__byte; + case Dpl_itm_keys.Key_ascending: return Bool_.Y_byte; + case Dpl_itm_keys.Key_descending: return Bool_.N_byte; + case Dpl_itm_keys.Key_null: + default: return Bool_.__byte; } } - public static byte Parse(byte[] bry) { + public static byte Parse_ordermethod(byte[] bry) { byte key = Dpl_itm_keys.Parse(bry, Dpl_itm_keys.Key_categoryadd); switch (key) { - case Dpl_itm_keys.Key_lastedit: return Tid_lastedit; - case Dpl_itm_keys.Key_length: return Tid_length; - case Dpl_itm_keys.Key_created: return Tid_created; - case Dpl_itm_keys.Key_sortkey: return Tid_sortkey; - case Dpl_itm_keys.Key_categorysortkey: return Tid_categorysortkey; - case Dpl_itm_keys.Key_popularity: return Tid_popularity; // FUTURE: default to categoryadd if counters disabled - case Dpl_itm_keys.Key_categoryadd: return Tid_categoryadd; - default: throw Err_.new_unhandled(key); + case Dpl_itm_keys.Key_lastedit: return Tid_lastedit; + case Dpl_itm_keys.Key_length: return Tid_length; + case Dpl_itm_keys.Key_created: return Tid_created; + case Dpl_itm_keys.Key_sortkey: return Tid_sortkey; + case Dpl_itm_keys.Key_categorysortkey: return Tid_categorysortkey; + case Dpl_itm_keys.Key_popularity: return Tid_popularity; // FUTURE: default to categoryadd if counters disabled + case Dpl_itm_keys.Key_categoryadd: return Tid_categoryadd; + default: return Tid_categoryadd; // NOTE: "ordermethod=ascending" will return Dpl_itm_keys.Key_ascending; default to Tid_categoryadd; PAGE:sr.d:Викиречник:Википројекат_1001_арапска_реч/Списак_уноса; DATE:2015-10-16 } } } diff --git a/400_xowa/src/gplx/xowa/xtns/dynamicPageList/Dpl_xnde.java b/400_xowa/src/gplx/xowa/xtns/dynamicPageList/Dpl_xnde.java index aec820731..b1b2138dc 100644 --- a/400_xowa/src/gplx/xowa/xtns/dynamicPageList/Dpl_xnde.java +++ b/400_xowa/src/gplx/xowa/xtns/dynamicPageList/Dpl_xnde.java @@ -17,12 +17,12 @@ along with this program. If not, see . */ package gplx.xowa.xtns.dynamicPageList; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.core.primitives.*; -import gplx.xowa.html.*; -import gplx.xowa.dbs.*; import gplx.xowa.ctgs.*; import gplx.xowa.wikis.data.tbls.*; -import gplx.xowa.parsers.*; import gplx.xowa.parsers.xndes.*; -public class Dpl_xnde implements Xox_xnde, Xop_xnde_atr_parser { +import gplx.xowa.htmls.*; +import gplx.xowa.wikis.dbs.*; import gplx.xowa.wikis.ctgs.*; import gplx.xowa.wikis.data.tbls.*; +import gplx.xowa.parsers.*; import gplx.xowa.parsers.xndes.*; import gplx.xowa.parsers.htmls.*; +public class Dpl_xnde implements Xox_xnde { private Dpl_itm itm = new Dpl_itm(); private List_adp pages = List_adp_.new_(); - public void Xatr_parse(Xowe_wiki wiki, byte[] src, Xop_xatr_itm xatr, Object xatr_key_obj) {} // NOTE: has no attributes + public void Xatr__set(Xowe_wiki wiki, byte[] src, Mwh_atr_itm xatr, Object xatr_id_obj) {} // NOTE: has no attributes public void Xtn_parse(Xowe_wiki wiki, Xop_ctx ctx, Xop_root_tkn root, byte[] src, Xop_xnde_tkn xnde) { itm.Parse(wiki, ctx, ctx.Cur_page().Ttl().Full_txt(), src, xnde); Dpl_page_finder.Find_pages(pages, wiki, itm); @@ -76,13 +76,13 @@ class Dpl_page_finder { rv.Clear(); List_adp includes = itm.Ctg_includes(); if (includes == null) return; int includes_len = includes.Count(); - Ordered_hash old_regy = Ordered_hash_.new_(), new_regy = Ordered_hash_.new_(), cur_regy = Ordered_hash_.new_(); + Ordered_hash old_regy = Ordered_hash_.New(), new_regy = Ordered_hash_.New(), cur_regy = Ordered_hash_.New(); Xodb_load_mgr load_mgr = wiki.Db_mgr().Load_mgr(); Xowd_page_itm tmp_page = new Xowd_page_itm(); Int_obj_ref tmp_id = Int_obj_ref.zero_(); List_adp del_list = List_adp_.new_(); int ns_filter = itm.Ns_filter(); - Ordered_hash exclude_pages = Ordered_hash_.new_(); + Ordered_hash exclude_pages = Ordered_hash_.New(); Find_excludes(exclude_pages, load_mgr, tmp_page, tmp_id, itm.Ctg_excludes()); for (int i = 0; i < includes_len; i++) { // loop over includes @@ -92,7 +92,7 @@ class Dpl_page_finder { Del_old_pages_not_in_cur(i, tmp_id, old_regy, cur_regy, del_list); Add_cur_pages_also_in_old(i, tmp_id, old_regy, cur_regy, new_regy, exclude_pages, ns_filter); old_regy = new_regy; - new_regy = Ordered_hash_.new_(); + new_regy = Ordered_hash_.New(); } int pages_len = old_regy.Count(); for (int i = 0; i < pages_len; i++) { // loop over old and create pages diff --git a/400_xowa/src/gplx/xowa/xtns/dynamicPageList/Dpl_xnde_tst.java b/400_xowa/src/gplx/xowa/xtns/dynamicPageList/Dpl_xnde_tst.java index 26eb6253a..8135229e2 100644 --- a/400_xowa/src/gplx/xowa/xtns/dynamicPageList/Dpl_xnde_tst.java +++ b/400_xowa/src/gplx/xowa/xtns/dynamicPageList/Dpl_xnde_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.xtns.dynamicPageList; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; -import org.junit.*; import gplx.core.strings.*; import gplx.xowa.cfgs.*; import gplx.xowa.nss.*; +import org.junit.*; import gplx.core.strings.*; import gplx.xowa.apps.cfgs.*; import gplx.xowa.wikis.nss.*; public class Dpl_xnde_tst { private Dpl_xnde_fxt fxt = new Dpl_xnde_fxt(); @Before public void init() {fxt.Clear();} @@ -173,6 +173,16 @@ public class Dpl_xnde_tst { fxt.Fxt().Test_parse_page_wiki_str("category=a", "No pages meet these criteria."); fxt.Wiki().Cfg_parser().Xtns().Itm_pages().Reset(); // must reset to clear cached invalid ns_page for next tests } + @Test public void Ordermethod__invalid() { // PURPOSE: do not fail if ordermethod is invalid; PAGE:sr.d:Викиречник:Википројекат_1001_арапска_реч/Списак_уноса; DATE:2015-10-16 + fxt.Ctg_create("Ctg_0", "A", "B", "C"); + fxt.Ul_pages(String_.Concat_lines_nl_skip_last + ( "" + , "category=Ctg_0" + , "ordermethod=ascending" // should not throw error + , "ordermethod=sortkey" + , "") + , fxt.Ul(Itm_html_null, "A", "B", "C")); + } private static final String Itm_html_null = null; } class Dpl_page_mok { @@ -194,7 +204,7 @@ class Dpl_xnde_fxt { fxt.Wiki().Xtn_mgr().Xtn_proofread().Enabled_y_(); fxt.Wiki().Db_mgr().Load_mgr().Clear(); // must clear; otherwise fails b/c files get deleted, but wiki.data_mgr caches the Xowd_regy_mgr (the .reg file) in memory; fxt.Wiki().Ns_mgr().Add_new(Xowc_xtn_pages.Ns_page_id_default, "Page").Add_new(Xowc_xtn_pages.Ns_index_id_default, "Index").Init(); - Io_mgr.I.InitEngine_mem(); + Io_mgr.Instance.InitEngine_mem(); } public Xowe_wiki Wiki() {return fxt.Wiki();} public Xop_fxt Fxt() {return fxt;} @@ -234,7 +244,7 @@ class Dpl_xnde_fxt { bfr.Add(">").Add(page).Add("").Add_char_nl(); } bfr.Add("").Add_char_nl(); - return bfr.Xto_str_and_clear(); + return bfr.To_str_and_clear(); } public void Ul_pages(String raw, String expd) { fxt.Test_parse_page_wiki_str(raw, expd); diff --git a/400_xowa/src/gplx/xowa/xtns/flaggedRevs/Pages_using_pending_changes_func.java b/400_xowa/src/gplx/xowa/xtns/flaggedRevs/Pages_using_pending_changes_func.java index 6da725c5f..71dcb34df 100644 --- a/400_xowa/src/gplx/xowa/xtns/flaggedRevs/Pages_using_pending_changes_func.java +++ b/400_xowa/src/gplx/xowa/xtns/flaggedRevs/Pages_using_pending_changes_func.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.xtns.flaggedRevs; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; -import gplx.xowa.langs.*; -import gplx.xowa.html.*; import gplx.xowa.pages.skins.*; import gplx.xowa.xtns.pfuncs.*; +import gplx.xowa.langs.*; import gplx.xowa.langs.kwds.*; +import gplx.xowa.htmls.*; import gplx.xowa.wikis.pages.skins.*; import gplx.xowa.xtns.pfuncs.*; import gplx.xowa.parsers.*; import gplx.xowa.parsers.tmpls.*; public class Pages_using_pending_changes_func extends Pf_func_base { @Override public int Id() {return Xol_kwd_grp_.Id_pagesUsingPendingChanges;} @@ -25,5 +25,5 @@ public class Pages_using_pending_changes_func extends Pf_func_base { @Override public void Func_evaluate(Xop_ctx ctx, byte[] src, Xot_invk caller, Xot_invk self, Bry_bfr bfr) { bfr.Add_int_fixed(0, 1); } - public static final Pages_using_pending_changes_func _ = new Pages_using_pending_changes_func(); Pages_using_pending_changes_func() {} + public static final Pages_using_pending_changes_func Instance = new Pages_using_pending_changes_func(); Pages_using_pending_changes_func() {} } diff --git a/400_xowa/src/gplx/xowa/xtns/flaggedRevs/Pages_using_pending_changes_func_tst.java b/400_xowa/src/gplx/xowa/xtns/flaggedRevs/Pages_using_pending_changes_func_tst.java index e95c03bfe..b8c7e4614 100644 --- a/400_xowa/src/gplx/xowa/xtns/flaggedRevs/Pages_using_pending_changes_func_tst.java +++ b/400_xowa/src/gplx/xowa/xtns/flaggedRevs/Pages_using_pending_changes_func_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.xtns.flaggedRevs; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; -import org.junit.*; import gplx.xowa.pages.skins.*; +import org.junit.*; import gplx.xowa.wikis.pages.skins.*; public class Pages_using_pending_changes_func_tst { @Before public void init() {fxt.Reset();} private Xop_fxt fxt = new Xop_fxt(); @Test public void Basic() { diff --git a/400_xowa/src/gplx/xowa/xtns/flaggedRevs/Pending_change_level_func.java b/400_xowa/src/gplx/xowa/xtns/flaggedRevs/Pending_change_level_func.java index 68448f3c3..0ce4801f9 100644 --- a/400_xowa/src/gplx/xowa/xtns/flaggedRevs/Pending_change_level_func.java +++ b/400_xowa/src/gplx/xowa/xtns/flaggedRevs/Pending_change_level_func.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.xtns.flaggedRevs; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; -import gplx.xowa.langs.*; -import gplx.xowa.html.*; import gplx.xowa.pages.skins.*; import gplx.xowa.xtns.pfuncs.*; +import gplx.xowa.langs.*; import gplx.xowa.langs.kwds.*; +import gplx.xowa.htmls.*; import gplx.xowa.wikis.pages.skins.*; import gplx.xowa.xtns.pfuncs.*; import gplx.xowa.parsers.*; import gplx.xowa.parsers.tmpls.*; public class Pending_change_level_func extends Pf_func_base { @Override public int Id() {return Xol_kwd_grp_.Id_pendingChangeLevel;} @Override public Pf_func New(int id, byte[] name) {return new Pending_change_level_func().Name_(name);} @Override public void Func_evaluate(Xop_ctx ctx, byte[] src, Xot_invk caller, Xot_invk self, Bry_bfr bfr) {}// NOOP - public static final Pending_change_level_func _ = new Pending_change_level_func(); Pending_change_level_func() {} + public static final Pending_change_level_func Instance = new Pending_change_level_func(); Pending_change_level_func() {} } diff --git a/400_xowa/src/gplx/xowa/xtns/flaggedRevs/Pending_change_level_func_tst.java b/400_xowa/src/gplx/xowa/xtns/flaggedRevs/Pending_change_level_func_tst.java index 3d4c0f9cf..84c506cf0 100644 --- a/400_xowa/src/gplx/xowa/xtns/flaggedRevs/Pending_change_level_func_tst.java +++ b/400_xowa/src/gplx/xowa/xtns/flaggedRevs/Pending_change_level_func_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.xtns.flaggedRevs; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; -import org.junit.*; import gplx.xowa.pages.skins.*; +import org.junit.*; import gplx.xowa.wikis.pages.skins.*; public class Pending_change_level_func_tst { @Before public void init() {fxt.Reset();} private Xop_fxt fxt = new Xop_fxt(); @Test public void Basic() { diff --git a/400_xowa/src/gplx/xowa/xtns/gallery/Gallery_box_w_fmtr_arg.java b/400_xowa/src/gplx/xowa/xtns/gallery/Gallery_box_w_fmtr_arg.java index a2214ca29..e14cf9689 100644 --- a/400_xowa/src/gplx/xowa/xtns/gallery/Gallery_box_w_fmtr_arg.java +++ b/400_xowa/src/gplx/xowa/xtns/gallery/Gallery_box_w_fmtr_arg.java @@ -16,14 +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.xtns.gallery; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; -import gplx.langs.htmls.*; import gplx.xowa.html.hdumps.abrvs.*; +import gplx.langs.htmls.*; import gplx.xowa.htmls.hdumps.abrvs.*; public interface Gallery_box_w_fmtr_arg extends Bry_fmtr_arg { Gallery_box_w_fmtr_arg Init(int uid, int width); } class Gallery_box_w_fmtr_arg__basic implements Gallery_box_w_fmtr_arg { private int width; public Gallery_box_w_fmtr_arg Init(int uid, int width) {this.width = width; return this;} - public void XferAry(Bry_bfr bfr, int idx) { + public void Fmt__do(Bry_bfr bfr) { bfr.Add(Style_bgn); bfr.Add_int_variable(width); bfr.Add(Style_end); @@ -33,7 +33,7 @@ class Gallery_box_w_fmtr_arg__basic implements Gallery_box_w_fmtr_arg { class Gallery_box_w_fmtr_arg__hdump implements Gallery_box_w_fmtr_arg { private int uid; public Gallery_box_w_fmtr_arg Init(int uid, int width) {this.uid = uid; return this;} - public void XferAry(Bry_bfr bfr, int idx) { + public void Fmt__do(Bry_bfr bfr) { bfr.Add(Xohd_abrv_.Key_gallery_box_w); bfr.Add_int_variable(uid); bfr.Add_byte_apos(); @@ -45,7 +45,7 @@ interface Gallery_img_pad_fmtr_arg extends Bry_fmtr_arg { class Gallery_img_pad_fmtr_arg__basic implements Gallery_img_pad_fmtr_arg { private int vpad; public Gallery_img_pad_fmtr_arg Init(int uid, int vpad) {this.vpad = vpad; return this;} - public void XferAry(Bry_bfr bfr, int idx) { + public void Fmt__do(Bry_bfr bfr) { bfr.Add(Style_bgn); bfr.Add_int_variable(vpad); bfr.Add(Style_end); @@ -55,7 +55,7 @@ class Gallery_img_pad_fmtr_arg__basic implements Gallery_img_pad_fmtr_arg { class Gallery_img_pad_fmtr_arg__hdump implements Gallery_img_pad_fmtr_arg { private int uid; public Gallery_img_pad_fmtr_arg Init(int uid, int width) {this.uid = uid; return this;} - public void XferAry(Bry_bfr bfr, int idx) { + public void Fmt__do(Bry_bfr bfr) { bfr.Add(Xohd_abrv_.Key_gallery_img_pad); bfr.Add_int_variable(uid); bfr.Add_byte_apos(); diff --git a/400_xowa/src/gplx/xowa/xtns/gallery/Gallery_html_wtr.java b/400_xowa/src/gplx/xowa/xtns/gallery/Gallery_html_wtr.java index bff1c0cb2..cde39ac5f 100644 --- a/400_xowa/src/gplx/xowa/xtns/gallery/Gallery_html_wtr.java +++ b/400_xowa/src/gplx/xowa/xtns/gallery/Gallery_html_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.xtns.gallery; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; -import gplx.xowa.files.*; import gplx.xowa.html.*; import gplx.xowa.html.lnkis.*; import gplx.xowa.html.hdumps.core.*; import gplx.xowa.html.hdumps.pages.*; import gplx.xowa.parsers.lnkis.*; +import gplx.xowa.files.*; import gplx.xowa.htmls.*; import gplx.xowa.htmls.lnkis.*; import gplx.xowa.htmls.hdumps.core.*; import gplx.xowa.htmls.hdumps.pages.*; import gplx.xowa.parsers.lnkis.*; import gplx.xowa.parsers.*; public class Gallery_html_wtr { private final Xoh_arg_img_core img_core_fmtr_basic = new Xoh_arg_img_core__basic(), img_core_fmtr_hdump = new Xoh_arg_img_core__hdump(); diff --git a/400_xowa/src/gplx/xowa/xtns/gallery/Gallery_itm.java b/400_xowa/src/gplx/xowa/xtns/gallery/Gallery_itm.java index 8b6f11676..d46bd5dd1 100644 --- a/400_xowa/src/gplx/xowa/xtns/gallery/Gallery_itm.java +++ b/400_xowa/src/gplx/xowa/xtns/gallery/Gallery_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.xtns.gallery; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; -import gplx.xowa.files.*; import gplx.xowa.files.gui.*; import gplx.xowa.gui.views.*; import gplx.xowa.html.*; +import gplx.xowa.files.*; import gplx.xowa.files.gui.*; import gplx.xowa.guis.views.*; import gplx.xowa.htmls.*; import gplx.xowa.parsers.*; import gplx.xowa.parsers.lnkis.*; public class Gallery_itm implements Js_img_wkr { private Gallery_xnde xnde; private Xof_file_itm xfer_itm; private Xowe_wiki wiki; private Xop_ctx ctx; private byte[] src; private byte[] gallery_li_id_bry; private int gallery_itm_idx; @@ -51,7 +51,7 @@ public class Gallery_itm implements Js_img_wkr { try { xfer_itm.Init_at_gallery_end(html_w, html_h, html_view_url, html_orig_url); gallery_mgr.Write_html_itm(bfr, tmp_bfr, wiki.Appe(), wiki, ctx.Cur_page(), ctx, wiki.Html_mgr().Html_wtr(), Xoh_wtr_ctx.Basic, src, xnde, Bry_.Empty, gallery_itm_idx, xfer_itm, false); - String itm_html = bfr.Xto_str_and_clear(); + String itm_html = bfr.To_str_and_clear(); js_wkr.Html_elem_replace_html(String_.new_u8(gallery_li_id_bry), itm_html); if (gallery_itm_idx == xnde.Itms_len() - 1 && Gallery_mgr_base_.Mode_is_packed(xnde.Mode())) page.Xtn_gallery_packed_exists_y_(); // set flag for packed_gallery; don't fire multiple times; PAGE:en.w:National_Sculpture_Museum_(Valladolid); DATE:2014-07-21 diff --git a/400_xowa/src/gplx/xowa/xtns/gallery/Gallery_itm_parser.java b/400_xowa/src/gplx/xowa/xtns/gallery/Gallery_itm_parser.java index 53ae740d7..523017457 100644 --- a/400_xowa/src/gplx/xowa/xtns/gallery/Gallery_itm_parser.java +++ b/400_xowa/src/gplx/xowa/xtns/gallery/Gallery_itm_parser.java @@ -17,8 +17,8 @@ along with this program. If not, see . */ package gplx.xowa.xtns.gallery; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.core.primitives.*; import gplx.core.btries.*; -import gplx.xowa.langs.*; -import gplx.xowa.nss.*; +import gplx.xowa.langs.*; import gplx.xowa.langs.kwds.*; +import gplx.xowa.wikis.nss.*; import gplx.xowa.parsers.*; import gplx.xowa.parsers.lnkis.*; import gplx.xowa.parsers.lnkis.redlinks.*; import gplx.xowa.parsers.tmpls.*; import gplx.xowa.files.*; public class Gallery_itm_parser { @@ -31,7 +31,7 @@ public class Gallery_itm_parser { private Bry_bfr caption_bfr = Bry_bfr.reset_(255); private int caption_bgn; private Xop_ctx ctx; public Gallery_itm_parser Init_by_wiki(Xowe_wiki wiki) { - this.wiki = wiki; Xol_lang lang = wiki.Lang(); + this.wiki = wiki; Xol_lang_itm lang = wiki.Lang(); this.ctx = wiki.Parser_mgr().Ctx(); trie.Clear(); Byte_obj_ref tmp_bref = Byte_obj_ref.zero_(); @@ -52,7 +52,7 @@ public class Gallery_itm_parser { byte cur_mode = Parse_itm(); if (cur_itm.Ttl() != null) { if (caption_bfr.Len() > 0) - cur_itm.Caption_bry_(caption_bfr.Xto_bry_and_clear_and_trim()); + cur_itm.Caption_bry_(caption_bfr.To_bry_and_clear_and_trim()); Make_lnki_tkn(mgr, xnde, src); rv.Add(cur_itm); cur_itm = new Gallery_itm(); @@ -226,9 +226,9 @@ public class Gallery_itm_parser { } private static final byte Fld_null = 0, Fld_ttl = 1, Fld_caption = 2, Fld_alt = 3, Fld_link = 4, Fld_page = 5; private static final byte Mode_eos = 1, Mode_nl = 2, Mode_pipe = 3, Mode_text = 4; - private void Init_keyword(Byte_obj_ref tmp_bref, Xol_lang lang, int kwd_id, byte trie_key) { + private void Init_keyword(Byte_obj_ref tmp_bref, Xol_lang_itm lang, int kwd_id, byte trie_key) { Xol_kwd_grp grp = lang.Kwd_mgr().Get_at(kwd_id); - if (grp == null) {Gfo_usr_dlg_.I.Warn_many("", "", "could not find gallery keyword: ~{0}", String_.new_u8(Xol_kwd_grp_.Bry_by_id(kwd_id))); return;} + if (grp == null) {Gfo_usr_dlg_.Instance.Warn_many("", "", "could not find gallery keyword: ~{0}", String_.new_u8(Xol_kwd_grp_.Bry_by_id(kwd_id))); return;} Xol_kwd_itm[] itms = grp.Itms(); int len = itms.length; Byte_obj_val trie_ref = Byte_obj_val.new_(trie_key); diff --git a/400_xowa/src/gplx/xowa/xtns/gallery/Gallery_itm_parser_tst.java b/400_xowa/src/gplx/xowa/xtns/gallery/Gallery_itm_parser_tst.java index 1d07f89c9..9bfd1e76c 100644 --- a/400_xowa/src/gplx/xowa/xtns/gallery/Gallery_itm_parser_tst.java +++ b/400_xowa/src/gplx/xowa/xtns/gallery/Gallery_itm_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.xtns.gallery; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; -import org.junit.*; import gplx.xowa.langs.*; +import org.junit.*; import gplx.xowa.langs.*; import gplx.xowa.langs.kwds.*; public class Gallery_itm_parser_tst { @Before public void init() {fxt.Init();} private Gallery_itm_parser_fxt fxt = new Gallery_itm_parser_fxt(); @Test public void All() {fxt.Test_parse("File:A.png|a|alt=b|link=c" , fxt.Expd("File:A.png", "a" , "b" , "c"));} @@ -79,7 +79,7 @@ class Gallery_itm_parser_fxt { public String[] Expd(String ttl, String caption) {return new String[] {ttl, caption, null, null, null};} public String[] Expd(String ttl, String caption, String alt) {return new String[] {ttl, caption, alt, null, null};} public String[] Expd(String ttl, String caption, String alt, String link) {return new String[] {ttl, caption, alt, link, null};} - public String[] Expd(String ttl, String caption, String alt, String link, int page) {return new String[] {ttl, caption, alt, link, Int_.Xto_str(page)};} + public String[] Expd(String ttl, String caption, String alt, String link, int page) {return new String[] {ttl, caption, alt, link, Int_.To_str(page)};} public void Init_kwd_set(int kwd_id, String kwd_val) { wiki.Lang().Kwd_mgr().Get_or_new(kwd_id).Itms()[0].Val_(Bry_.new_a7(kwd_val)); parser.Init_by_wiki(wiki); diff --git a/400_xowa/src/gplx/xowa/xtns/gallery/Gallery_mgr_base.java b/400_xowa/src/gplx/xowa/xtns/gallery/Gallery_mgr_base.java index 007e8e1e1..3a441d6b9 100644 --- a/400_xowa/src/gplx/xowa/xtns/gallery/Gallery_mgr_base.java +++ b/400_xowa/src/gplx/xowa/xtns/gallery/Gallery_mgr_base.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.xtns.gallery; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; -import gplx.langs.htmls.*; import gplx.xowa.html.*; import gplx.xowa.html.modules.*; import gplx.xowa.files.*; import gplx.xowa.html.hdumps.abrvs.*; import gplx.xowa.html.hdumps.core.*; -import gplx.xowa.parsers.*; import gplx.xowa.parsers.xndes.*; import gplx.xowa.parsers.lnkis.*; +import gplx.langs.htmls.*; import gplx.xowa.htmls.*; import gplx.xowa.htmls.modules.*; import gplx.xowa.files.*; import gplx.xowa.htmls.hdumps.abrvs.*; import gplx.xowa.htmls.hdumps.core.*; +import gplx.xowa.parsers.*; import gplx.xowa.parsers.xndes.*; import gplx.xowa.parsers.htmls.*; import gplx.xowa.parsers.lnkis.*; public abstract class Gallery_mgr_base { private Gallery_box_w_fmtr_arg__basic box_w_fmtr__basic = new Gallery_box_w_fmtr_arg__basic(); private Gallery_box_w_fmtr_arg__hdump box_w_fmtr__hdump = new Gallery_box_w_fmtr_arg__hdump(); private Gallery_img_pad_fmtr_arg__basic img_pad_fmtr__basic = new Gallery_img_pad_fmtr_arg__basic(); private Gallery_img_pad_fmtr_arg__hdump img_pad_fmtr__hdump = new Gallery_img_pad_fmtr_arg__hdump(); @@ -63,7 +63,7 @@ public abstract class Gallery_mgr_base { page.Hdump_data().Imgs_add(new Xohd_data_itm__gallery_mgr(gallery_uid, max_width)); } byte[] box_cls = Fmt_and_add(tmp_bfr, box_cls_fmtr, xnde.Atr_cls(), this.Tid_bry()); - byte[] gallery_ul_id = tmp_bfr.Add(box_id_prefix_bry).Add_int_variable(gallery_uid).Xto_bry_and_clear(); + byte[] gallery_ul_id = tmp_bfr.Add(box_id_prefix_bry).Add_int_variable(gallery_uid).To_bry_and_clear(); Box_hdr_write(bfr, wiki.Appe().Html_mgr().Whitelist_mgr(), src, gallery_ul_id, box_cls, box_style, xnde.Atrs_other(), hctx_is_hdump, gallery_uid); byte[] box_caption = xnde.Atr_caption(); if (Bry_.Len_gt_0(box_caption)) box_caption_fmtr.Bld_bfr_many(bfr, box_caption); @@ -91,7 +91,7 @@ public abstract class Gallery_mgr_base { xfer_itm.Html_elem_tid_(Xof_html_elem.Tid_gallery_v2); } int img_uid = xfer_itm.Html_uid(); - byte[] gallery_li_id = tmp_bfr.Add(itm_id_prefix_bry).Add_int_variable(img_uid).Xto_bry_and_clear(); + byte[] gallery_li_id = tmp_bfr.Add(itm_id_prefix_bry).Add_int_variable(img_uid).To_bry_and_clear(); byte[] itm_html = Bry_.Empty; int html_w_expand = xfer_itm.Html_w(); int html_h_expand = xfer_itm.Html_h(); @@ -131,7 +131,7 @@ public abstract class Gallery_mgr_base { itm_div1_fmtr.Bld_bfr_many(tmp_bfr, vpad_fmtr.Init(img_uid, vpad)); //
      wiki.Html_mgr().Html_wtr().Lnki_wtr().Write_file(tmp_bfr, ctx, hctx, src, lnki, xfer_itm, alt); tmp_bfr.Add(itm_divs_end_bry); - itm_html = tmp_bfr.Xto_bry_and_clear(); + itm_html = tmp_bfr.To_bry_and_clear(); } byte[] show_filenames_link = Bry_.Empty; @@ -146,8 +146,8 @@ public abstract class Gallery_mgr_base { itm_li_bgn_fmtr.Bld_bfr_many(bfr, gallery_li_id, box_w_fmtr_arg.Init(img_uid, itm_div_width)); bfr.Add(itm_html); wiki.Parser_mgr().Main().Parse_text_to_html(tmp_bfr, page, true, itm_caption); - itm_caption = tmp_bfr.Xto_bry_and_clear(); - itm_caption = tmp_bfr.Add(show_filenames_link).Add(itm_caption).Xto_bry_and_clear(); + itm_caption = tmp_bfr.To_bry_and_clear(); + itm_caption = tmp_bfr.Add(show_filenames_link).Add(itm_caption).To_bry_and_clear(); Wrap_gallery_text(bfr, itm_caption, html_w_expand, html_h_expand); bfr.Add(itm_li_end_bry); if (hctx_is_hdump) @@ -187,7 +187,7 @@ public abstract class Gallery_mgr_base { tmp_bfr.Add_byte_space(); tmp_bfr.Add(trailer); } - return tmp_bfr.Xto_bry_and_clear(); + return tmp_bfr.To_bry_and_clear(); } private static void Box_hdr_write(Bry_bfr bfr, Xop_xatr_whitelist_mgr whitelist_mgr, byte[] src, byte[] gallery_ul_uid, byte[] cls, byte[] style, List_adp xatr_list, boolean hctx_is_hdump, int uid) { bfr.Add_byte(Byte_ascii.Lt).Add(Html_tag_.Ul_name_bry); @@ -204,10 +204,10 @@ public abstract class Gallery_mgr_base { if (xatr_list != null) { int len = xatr_list.Count(); for (int i = 0; i < len; i++) { - Xop_xatr_itm xatr = (Xop_xatr_itm)xatr_list.Get_at(i); + Mwh_atr_itm xatr = (Mwh_atr_itm)xatr_list.Get_at(i); if (!whitelist_mgr.Chk(Xop_xnde_tag_.Tid_ul, src, xatr)) continue; byte[] key = xatr.Key_bry(); - byte[] val = xatr.Val_as_bry(src); + byte[] val = xatr.Val_as_bry(); Html_wtr.Write_atr_bry(bfr, key, val); } } diff --git a/400_xowa/src/gplx/xowa/xtns/gallery/Gallery_mgr_base_basic_tst.java b/400_xowa/src/gplx/xowa/xtns/gallery/Gallery_mgr_base_basic_tst.java index df399a694..ea35c96e6 100644 --- a/400_xowa/src/gplx/xowa/xtns/gallery/Gallery_mgr_base_basic_tst.java +++ b/400_xowa/src/gplx/xowa/xtns/gallery/Gallery_mgr_base_basic_tst.java @@ -17,7 +17,7 @@ along with this program. If not, see . */ package gplx.xowa.xtns.gallery; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import org.junit.*; -import gplx.xowa.html.*; import gplx.xowa.files.fsdb.*; +import gplx.xowa.htmls.*; import gplx.xowa.files.fsdb.*; public class Gallery_mgr_base_basic_tst { private Gallery_mgr_base_fxt fxt = new Gallery_mgr_base_fxt(); @Before public void init() {fxt.Reset();} diff --git a/400_xowa/src/gplx/xowa/xtns/gallery/Gallery_mgr_base_xnde_atrs_tst.java b/400_xowa/src/gplx/xowa/xtns/gallery/Gallery_mgr_base_xnde_atrs_tst.java index 2f028d39f..d8fd3e38c 100644 --- a/400_xowa/src/gplx/xowa/xtns/gallery/Gallery_mgr_base_xnde_atrs_tst.java +++ b/400_xowa/src/gplx/xowa/xtns/gallery/Gallery_mgr_base_xnde_atrs_tst.java @@ -17,7 +17,7 @@ along with this program. If not, see . */ package gplx.xowa.xtns.gallery; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import org.junit.*; -import gplx.xowa.html.*; +import gplx.xowa.htmls.*; public class Gallery_mgr_base_xnde_atrs_tst { private Gallery_mgr_base_fxt fxt = new Gallery_mgr_base_fxt(); @Before public void init() {fxt.Reset();} diff --git a/400_xowa/src/gplx/xowa/xtns/gallery/Gallery_mgr_packed_base.java b/400_xowa/src/gplx/xowa/xtns/gallery/Gallery_mgr_packed_base.java index 7be574582..a9675fe53 100644 --- a/400_xowa/src/gplx/xowa/xtns/gallery/Gallery_mgr_packed_base.java +++ b/400_xowa/src/gplx/xowa/xtns/gallery/Gallery_mgr_packed_base.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.xtns.gallery; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; -import gplx.xowa.files.*; import gplx.xowa.html.modules.*; +import gplx.xowa.files.*; import gplx.xowa.htmls.modules.*; import gplx.xowa.parsers.lnkis.*; public class Gallery_mgr_packed_base extends Gallery_mgr_base { @Override public byte Tid() {return Gallery_mgr_base_.Packed_tid;} diff --git a/400_xowa/src/gplx/xowa/xtns/gallery/Gallery_xnde.java b/400_xowa/src/gplx/xowa/xtns/gallery/Gallery_xnde.java index a992a7978..4063ff3aa 100644 --- a/400_xowa/src/gplx/xowa/xtns/gallery/Gallery_xnde.java +++ b/400_xowa/src/gplx/xowa/xtns/gallery/Gallery_xnde.java @@ -19,9 +19,9 @@ package gplx.xowa.xtns.gallery; import gplx.*; import gplx.xowa.*; import gplx.x import gplx.core.primitives.*; import gplx.dbs.cfgs.*; import gplx.fsdb.meta.*; import gplx.xowa.parsers.logs.*; -import gplx.xowa.html.*; import gplx.xowa.files.*; import gplx.xowa.files.fsdb.*; -import gplx.xowa.parsers.*; import gplx.xowa.parsers.xndes.*; -public class Gallery_xnde implements Xox_xnde, Xop_xnde_atr_parser { +import gplx.xowa.htmls.*; import gplx.xowa.files.*; import gplx.xowa.files.fsdb.*; +import gplx.xowa.parsers.*; import gplx.xowa.parsers.xndes.*; import gplx.xowa.parsers.htmls.*; +public class Gallery_xnde implements Xox_xnde, Mwh_atr_itm_owner { private Gallery_xtn_mgr xtn_mgr; public byte Mode() {return mode;} private byte mode; public int Itm_w() {return itm_w;} private int itm_w = Null; @@ -38,18 +38,18 @@ public class Gallery_xnde implements Xox_xnde, Xop_xnde_atr_parser { public Gallery_itm Itms_get_at(int i) {return (Gallery_itm)itms.Get_at(i);} public Gallery_mgr_base Gallery_mgr() {return gallery_mgr;} private Gallery_mgr_base gallery_mgr; private boolean html_wtr_v1 = false; - public void Xatr_parse(Xowe_wiki wiki, byte[] src, Xop_xatr_itm xatr, Object xatr_key_obj) { - if (xatr_key_obj != null) { - Byte_obj_val xatr_key = (Byte_obj_val)xatr_key_obj; - switch (xatr_key.Val()) { - case Gallery_xnde_atrs.Mode_tid: mode = Gallery_mgr_base_.Get_or_traditional(xatr.Val_as_bry(src)); break; - case Gallery_xnde_atrs.Perrow_tid: itms_per_row = xatr.Val_as_int_or(src, Null); break; - case Gallery_xnde_atrs.Widths_tid: itm_w = xatr.Val_as_int_or(src, Null); break; - case Gallery_xnde_atrs.Heights_tid: itm_h = xatr.Val_as_int_or(src, Null); break; - case Gallery_xnde_atrs.Showfilename_tid: show_filename = xatr.Val_as_bool(src); break; - case Gallery_xnde_atrs.Caption_tid: if (!xatr.Tid_is_key_only()) atr_caption = xatr.Val_as_bry(src); break; // NOTE: do not create caption for key only; EX: PAGE:fr.w:Chronologie_du_si�ge_de_Paris_(1870); DATE:2014-08-15 - case Gallery_xnde_atrs.Style_tid: atr_style = xatr.Val_as_bry(src); break; - case Gallery_xnde_atrs.Class_tid: atr_cls = xatr.Val_as_bry(src); break; + public void Xatr__set(Xowe_wiki wiki, byte[] src, Mwh_atr_itm xatr, Object xatr_id_obj) { + if (xatr_id_obj != null) { + Byte_obj_val xatr_id = (Byte_obj_val)xatr_id_obj; + switch (xatr_id.Val()) { + case Gallery_xnde_atrs.Mode_tid: mode = Gallery_mgr_base_.Get_or_traditional(xatr.Val_as_bry()); break; + case Gallery_xnde_atrs.Perrow_tid: itms_per_row = xatr.Val_as_int_or(Null); break; + case Gallery_xnde_atrs.Widths_tid: itm_w = xatr.Val_as_int_or(Null); break; + case Gallery_xnde_atrs.Heights_tid: itm_h = xatr.Val_as_int_or(Null); break; + case Gallery_xnde_atrs.Showfilename_tid: show_filename = xatr.Val_as_bool(); break; + case Gallery_xnde_atrs.Caption_tid: if (xatr.Key_exists()) atr_caption = xatr.Val_as_bry(); break; // NOTE: do not create caption for key only; EX: PAGE:fr.w:Chronologie_du_si�ge_de_Paris_(1870); DATE:2014-08-15 + case Gallery_xnde_atrs.Style_tid: atr_style = xatr.Val_as_bry(); break; + case Gallery_xnde_atrs.Class_tid: atr_cls = xatr.Val_as_bry(); break; } } else { @@ -60,7 +60,7 @@ public class Gallery_xnde implements Xox_xnde, Xop_xnde_atr_parser { public void Xtn_parse(Xowe_wiki wiki, Xop_ctx ctx, Xop_root_tkn root, byte[] src, Xop_xnde_tkn xnde) { try { ctx.Para().Process_block__xnde(xnde.Tag(), Xop_xnde_tag.Block_bgn); // cancel pre for ; DATE:2014-03-11 - Xop_xatr_itm.Xatr_parse(wiki.Appe(), this, Gallery_xnde_atrs.Key_hash, wiki, src, xnde); + Xox_xnde_.Xatr__set(wiki, this, Gallery_xnde_atrs.Key_hash, src, xnde); xtn_mgr = (Gallery_xtn_mgr)wiki.Xtn_mgr().Get_or_fail(Gallery_xtn_mgr.XTN_KEY); Init_atrs(wiki); gallery_mgr.Get_modules(ctx.Cur_page()); @@ -87,7 +87,7 @@ public class Gallery_xnde implements Xox_xnde, Xop_xnde_atr_parser { } private void Init_atrs(Xowe_wiki wiki) { Db_cfg_hash cfg_grp = wiki.File_mgr().Cfg_get(Xof_fsdb_mgr_cfg.Grp_xowa); - if (cfg_grp.Get(Xof_fsdb_mgr_cfg.Key_gallery_fix_defaults).To_yn_or_n()) { + if (cfg_grp.Get_by(Xof_fsdb_mgr_cfg.Key_gallery_fix_defaults).To_yn_or_n()) { if (itm_w == Gallery_xnde.Null && itm_h == Gallery_xnde.Null) // if no w/h specified, set both to default (just like v1) itm_w = itm_h = Gallery_xnde.Default; } @@ -97,7 +97,7 @@ public class Gallery_xnde implements Xox_xnde, Xop_xnde_atr_parser { } gallery_mgr = Gallery_mgr_base_.New_by_mode(mode); if ( !wiki.File_mgr().Version_1_y() // v2: fsdb - && !cfg_grp.Get(Xof_fsdb_mgr_cfg.Key_gallery_packed).To_yn_or_n() // packed not supported + && !cfg_grp.Get_by(Xof_fsdb_mgr_cfg.Key_gallery_packed).To_yn_or_n() // packed not supported ) { gallery_mgr = Gallery_mgr_base_.New_by_mode(Gallery_mgr_base_.Traditional_tid); // always go to traditional html_wtr_v1 = true; diff --git a/400_xowa/src/gplx/xowa/xtns/gallery/Gallery_xtn_mgr.java b/400_xowa/src/gplx/xowa/xtns/gallery/Gallery_xtn_mgr.java index f2ad529c6..0b5933e0b 100644 --- a/400_xowa/src/gplx/xowa/xtns/gallery/Gallery_xtn_mgr.java +++ b/400_xowa/src/gplx/xowa/xtns/gallery/Gallery_xtn_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.xtns.gallery; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; -import gplx.xowa.html.modules.*; +import gplx.xowa.htmls.modules.*; public class Gallery_xtn_mgr extends Xox_mgr_base { @Override public byte[] Xtn_key() {return XTN_KEY;} public static final byte[] XTN_KEY = Bry_.new_a7("gallery"); @Override public Xox_mgr Clone_new() {return new Gallery_xtn_mgr();} diff --git a/400_xowa/src/gplx/xowa/xtns/geoCrumbs/Geoc_isin_func.java b/400_xowa/src/gplx/xowa/xtns/geoCrumbs/Geoc_isin_func.java index 5a30ca09e..cdd4f0a3b 100644 --- a/400_xowa/src/gplx/xowa/xtns/geoCrumbs/Geoc_isin_func.java +++ b/400_xowa/src/gplx/xowa/xtns/geoCrumbs/Geoc_isin_func.java @@ -17,7 +17,7 @@ along with this program. If not, see . */ package gplx.xowa.xtns.geoCrumbs; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.pfuncs.*; -import gplx.xowa.langs.*; +import gplx.xowa.langs.*; import gplx.xowa.langs.kwds.*; import gplx.xowa.parsers.*; import gplx.xowa.parsers.tmpls.*; public class Geoc_isin_func extends Pf_func_base { @Override public int Id() {return Xol_kwd_grp_.Id_geoCrumbs_isin;} @@ -31,5 +31,5 @@ public class Geoc_isin_func extends Pf_func_base { wiki.Parser_mgr().Main().Parse_text_to_html(tmp_bfr, ctx.Cur_page(), false, lnki_ttl); ctx.Cur_page().Html_data().Content_sub_(tmp_bfr.To_bry_and_rls()); } - public static final Geoc_isin_func _ = new Geoc_isin_func(); + public static final Geoc_isin_func Instance = new Geoc_isin_func(); } diff --git a/400_xowa/src/gplx/xowa/xtns/geodata/Geo_coordinates_func.java b/400_xowa/src/gplx/xowa/xtns/geodata/Geo_coordinates_func.java index 358dc6779..06c5af83f 100644 --- a/400_xowa/src/gplx/xowa/xtns/geodata/Geo_coordinates_func.java +++ b/400_xowa/src/gplx/xowa/xtns/geodata/Geo_coordinates_func.java @@ -17,11 +17,11 @@ along with this program. If not, see . */ package gplx.xowa.xtns.geodata; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.pfuncs.*; -import gplx.xowa.langs.*; +import gplx.xowa.langs.*; import gplx.xowa.langs.kwds.*; import gplx.xowa.parsers.*; import gplx.xowa.parsers.tmpls.*; public class Geo_coordinates_func extends Pf_func_base { @Override public void Func_evaluate(Xop_ctx ctx, byte[] src, Xot_invk caller, Xot_invk self, Bry_bfr bfr) {} // NOOP: MW uses to save coordinates for API retrieval @Override public int Id() {return Xol_kwd_grp_.Id_xtn_geodata_coordinates;} @Override public Pf_func New(int id, byte[] name) {return new Geo_coordinates_func().Name_(name);} - public static final Geo_coordinates_func _ = new Geo_coordinates_func(); Geo_coordinates_func() {} + public static final Geo_coordinates_func Instance = new Geo_coordinates_func(); Geo_coordinates_func() {} } diff --git a/400_xowa/src/gplx/xowa/xtns/graphs/Graph_xnde.java b/400_xowa/src/gplx/xowa/xtns/graphs/Graph_xnde.java index 89721c420..d5f9e1101 100644 --- a/400_xowa/src/gplx/xowa/xtns/graphs/Graph_xnde.java +++ b/400_xowa/src/gplx/xowa/xtns/graphs/Graph_xnde.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.xtns.graphs; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; -import gplx.xowa.html.*; -import gplx.xowa.parsers.*; import gplx.xowa.parsers.logs.*; import gplx.xowa.parsers.xndes.*; -public class Graph_xnde implements Xox_xnde, Xop_xnde_atr_parser { +import gplx.xowa.htmls.*; +import gplx.xowa.parsers.*; import gplx.xowa.parsers.logs.*; import gplx.xowa.parsers.xndes.*; import gplx.xowa.parsers.htmls.*; +public class Graph_xnde implements Xox_xnde { private Graph_xtn xtn; - public void Xatr_parse(Xowe_wiki wiki, byte[] src, Xop_xatr_itm xatr, Object xatr_key_obj) {} + public void Xatr__set(Xowe_wiki wiki, byte[] src, Mwh_atr_itm xatr, Object xatr_id_obj) {} public void Xtn_parse(Xowe_wiki wiki, Xop_ctx ctx, Xop_root_tkn root, byte[] src, Xop_xnde_tkn xnde) { ctx.Para().Process_block__xnde(xnde.Tag(), Xop_xnde_tag.Block_bgn); this.xtn = (Graph_xtn)wiki.Xtn_mgr().Get_or_fail(Graph_xtn.Xtn_key_static); diff --git a/400_xowa/src/gplx/xowa/xtns/graphs/Graph_xtn.java b/400_xowa/src/gplx/xowa/xtns/graphs/Graph_xtn.java index cf42c0e5a..3e9cb6219 100644 --- a/400_xowa/src/gplx/xowa/xtns/graphs/Graph_xtn.java +++ b/400_xowa/src/gplx/xowa/xtns/graphs/Graph_xtn.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.xtns.graphs; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; -import gplx.xowa.wikis.*; import gplx.xowa.html.modules.*; import gplx.xowa.apps.fsys.*; +import gplx.xowa.wikis.*; import gplx.xowa.htmls.modules.*; import gplx.xowa.apps.fsys.*; public class Graph_xtn extends Xox_mgr_base implements GfoInvkAble { @Override public boolean Enabled_default() {return true;} @Override public byte[] Xtn_key() {return Xtn_key_static;} public static final byte[] Xtn_key_static = Bry_.new_a7("graph"); diff --git a/400_xowa/src/gplx/xowa/xtns/hieros/Hiero_file_mgr.java b/400_xowa/src/gplx/xowa/xtns/hieros/Hiero_file_mgr.java index 3520c89af..f74645f48 100644 --- a/400_xowa/src/gplx/xowa/xtns/hieros/Hiero_file_mgr.java +++ b/400_xowa/src/gplx/xowa/xtns/hieros/Hiero_file_mgr.java @@ -18,7 +18,7 @@ along with this program. If not, see . package gplx.xowa.xtns.hieros; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.langs.dsvs.*; class Hiero_file_mgr implements GfoInvkAble { - private Ordered_hash hash = Ordered_hash_.new_bry_(); + private Ordered_hash hash = Ordered_hash_.New_bry(); private Hiero_file_srl srl; public Hiero_file_mgr() {srl = new Hiero_file_srl(this);} public int Len() {return hash.Count();} diff --git a/400_xowa/src/gplx/xowa/xtns/hieros/Hiero_html_mgr.java b/400_xowa/src/gplx/xowa/xtns/hieros/Hiero_html_mgr.java index 9043836cc..db133e5dd 100644 --- a/400_xowa/src/gplx/xowa/xtns/hieros/Hiero_html_mgr.java +++ b/400_xowa/src/gplx/xowa/xtns/hieros/Hiero_html_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.xtns.hieros; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; -import gplx.langs.htmls.*; import gplx.xowa.html.*; +import gplx.langs.htmls.*; import gplx.xowa.htmls.*; class Hiero_html_mgr { private Bry_bfr html_bfr = Bry_bfr.reset_(Io_mgr.Len_kb), content_bfr = Bry_bfr.reset_(255), tbl_content_bfr = Bry_bfr.reset_(Io_mgr.Len_kb), temp_bfr = Bry_bfr.reset_(255); private Xoh_wtr_ctx hctx; @@ -102,7 +102,7 @@ class Hiero_html_mgr { else temp_bfr.Add(v); } - byte[] prefab_bry = temp_bfr.Xto_bry_and_clear(); + byte[] prefab_bry = temp_bfr.To_bry_and_clear(); Hiero_prefab_itm prefab_itm = prefab_mgr.Get_by_key(prefab_bry); if (prefab_itm != null) { byte[] td_height = wtr.Td_height(Resize_glyph(prefab_bry, cartouche_opened)); @@ -159,7 +159,7 @@ class Hiero_html_mgr { byte[] td_height = wtr.Td_height(Resize_glyph(v, cartouche_opened, total)); temp_bfr.Add(Render_glyph(v, td_height)); } - wtr.Td(content_bfr, temp_bfr.Xto_bry_and_clear()); + wtr.Td(content_bfr, temp_bfr.To_bry_and_clear()); } } private byte[] Render_glyph(byte[] src) {return Render_glyph(src, Bry_.Empty);} diff --git a/400_xowa/src/gplx/xowa/xtns/hieros/Hiero_html_wtr.java b/400_xowa/src/gplx/xowa/xtns/hieros/Hiero_html_wtr.java index 58d61fff8..3e002c9ba 100644 --- a/400_xowa/src/gplx/xowa/xtns/hieros/Hiero_html_wtr.java +++ b/400_xowa/src/gplx/xowa/xtns/hieros/Hiero_html_wtr.java @@ -16,16 +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.xtns.hieros; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; -import gplx.langs.htmls.*; import gplx.xowa.html.*; +import gplx.langs.htmls.*; import gplx.xowa.htmls.*; class Hiero_html_wtr { private Hiero_phoneme_mgr phoneme_mgr; private Bry_bfr temp_bfr = Bry_bfr.reset_(255); public Hiero_html_wtr(Hiero_html_mgr mgr, Hiero_phoneme_mgr phoneme_mgr) {this.phoneme_mgr = phoneme_mgr;} - public void Init_for_write(Xoh_wtr_ctx hctx) {this.hiero_img_dir = hctx.Mode_is_hdump() ? gplx.xowa.html.hdumps.abrvs.Xohd_abrv_.Key_hiero_dir : Hiero_xtn_mgr.Img_src_dir;} private byte[] hiero_img_dir = null; + public void Init_for_write(Xoh_wtr_ctx hctx) {this.hiero_img_dir = hctx.Mode_is_hdump() ? gplx.xowa.htmls.hdumps.abrvs.Xohd_abrv_.Key_hiero_dir : Hiero_xtn_mgr.Img_src_dir;} private byte[] hiero_img_dir = null; public void Hr(Bry_bfr bfr) {bfr.Add(Html_tag_.Hr_inl).Add_byte_nl();} public void Tbl_eol(Bry_bfr bfr) {bfr.Add(Tbl_eol_bry);} public byte[] Td_height(int height) { - return temp_bfr.Add(Option_bgn_bry).Add_int_variable(height).Add(Option_end_bry).Xto_bry_and_clear(); + return temp_bfr.Add(Option_bgn_bry).Add_int_variable(height).Add(Option_end_bry).To_bry_and_clear(); } private static final byte[] Option_bgn_bry = Bry_.new_a7("height: ") @@ -130,7 +130,7 @@ class Hiero_html_wtr { ; public byte[] Img_phoneme(byte[] img_cls, byte[] td_height, byte[] glyph_esc, byte[] code) { byte[] code_esc = Html_utl.Escape_html_as_bry(temp_bfr, code); - byte[] img_title = temp_bfr.Add(code_esc).Add_byte_space().Add_byte(Byte_ascii.Brack_bgn).Add(glyph_esc).Add_byte(Byte_ascii.Brack_end).Xto_bry_and_clear(); // "~{code} [~{glyph}]" + byte[] img_title = temp_bfr.Add(code_esc).Add_byte_space().Add_byte(Byte_ascii.Brack_bgn).Add(glyph_esc).Add_byte(Byte_ascii.Brack_end).To_bry_and_clear(); // "~{code} [~{glyph}]" return Img(img_cls, td_height, glyph_esc, code_esc, img_title); } public byte[] Img_file(byte[] img_cls, byte[] td_height, byte[] glyph_esc) {return Img(img_cls, td_height, glyph_esc, glyph_esc, glyph_esc);} diff --git a/400_xowa/src/gplx/xowa/xtns/hieros/Hiero_mw_tables_parser.java b/400_xowa/src/gplx/xowa/xtns/hieros/Hiero_mw_tables_parser.java index 1f561a9ba..7230ae84d 100644 --- a/400_xowa/src/gplx/xowa/xtns/hieros/Hiero_mw_tables_parser.java +++ b/400_xowa/src/gplx/xowa/xtns/hieros/Hiero_mw_tables_parser.java @@ -18,7 +18,7 @@ along with this program. If not, see . package gplx.xowa.xtns.hieros; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.core.primitives.*; import gplx.langs.phps.*; import gplx.langs.dsvs.*; -import gplx.xowa.apps.gfss.*; +import gplx.xowa.apps.gfs.*; public class Hiero_mw_tables_parser { private Php_parser parser = new Php_parser(); private Php_evaluator evaluator; private Php_text_itm_parser quote_parser = new Php_text_itm_parser(); @@ -31,7 +31,7 @@ public class Hiero_mw_tables_parser { } public void Load_data(Hiero_xtn_mgr xtn_mgr, Io_url load_fil) {// NOTE: parsing tables.php instead of tables.ser b/c latter is too difficult to read / debug evaluator.Clear(); - parser.Parse_tkns(Io_mgr.I.LoadFilBry(load_fil), evaluator); + parser.Parse_tkns(Io_mgr.Instance.LoadFilBry(load_fil), evaluator); Php_line[] lines = (Php_line[])evaluator.List().To_ary(Php_line.class); int lines_len = lines.length; for (int i = 0; i < lines_len; i++) { @@ -79,7 +79,7 @@ public class Hiero_mw_tables_parser { } } public void Save_data(Hiero_xtn_mgr xtn_mgr, Io_url save_fil) { - Gfs_bldr bldr = new Gfs_bldr(); + Xoa_gfs_bldr bldr = new Xoa_gfs_bldr(); int len = -1; Hiero_prefab_mgr prefab_mgr = xtn_mgr.Prefab_mgr(); @@ -112,7 +112,7 @@ public class Hiero_mw_tables_parser { } bldr.Add_quote_xtn_end(); bldr.Add_paren_end().Add_term_nl(); - Io_mgr.I.SaveFilBfr(save_fil, bldr.Bfr()); + Io_mgr.Instance.SaveFilBfr(save_fil, bldr.Bfr()); } private static final byte Tid_prefabs = 0, Tid_files = 1, Tid_phonemes = 2; private static Hash_adp_bry Tid_hash = Hash_adp_bry.cs().Add_str_byte("wh_prefabs", Tid_prefabs).Add_str_byte("wh_files", Tid_files).Add_str_byte("wh_phonemes", Tid_phonemes); diff --git a/400_xowa/src/gplx/xowa/xtns/hieros/Hiero_mw_tables_parser_tst.java b/400_xowa/src/gplx/xowa/xtns/hieros/Hiero_mw_tables_parser_tst.java index d1acb0368..34c50ecd8 100644 --- a/400_xowa/src/gplx/xowa/xtns/hieros/Hiero_mw_tables_parser_tst.java +++ b/400_xowa/src/gplx/xowa/xtns/hieros/Hiero_mw_tables_parser_tst.java @@ -65,9 +65,9 @@ class Hiero_mw_tables_parser_fxt { public void Test_bld_all(String raw, String expd) { Io_url load_url = Io_url_.mem_fil_("mem/hiero/load.php"); Io_url save_url = Io_url_.mem_fil_("mem/hiero/save.php"); - Io_mgr.I.SaveFilStr(load_url, raw); + Io_mgr.Instance.SaveFilStr(load_url, raw); parser.Bld_all(load_url, save_url); - Tfds.Eq_str_lines(expd, Io_mgr.I.LoadFilStr(save_url)); + Tfds.Eq_str_lines(expd, Io_mgr.Instance.LoadFilStr(save_url)); } public void Exec_bld_all(String load, String save) { parser.Bld_all(Io_url_.new_fil_(load), Io_url_.new_fil_(save)); diff --git a/400_xowa/src/gplx/xowa/xtns/hieros/Hiero_parser.java b/400_xowa/src/gplx/xowa/xtns/hieros/Hiero_parser.java index 1aa3ad6a7..5667d7f8a 100644 --- a/400_xowa/src/gplx/xowa/xtns/hieros/Hiero_parser.java +++ b/400_xowa/src/gplx/xowa/xtns/hieros/Hiero_parser.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.xtns.hieros; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; -import gplx.core.btries.*; import gplx.langs.htmls.*; import gplx.xowa.html.*; +import gplx.core.btries.*; import gplx.langs.htmls.*; import gplx.xowa.htmls.*; class Hiero_parser { private Btrie_slim_mgr trie = Btrie_slim_mgr.cs(); private List_adp blocks = List_adp_.new_(); @@ -75,7 +75,7 @@ class Hiero_parser { } private void New_token(Hiero_parser_itm itm) { if (cur_tkn.Len_gt_0()) - cur_block.Add(cur_tkn.Xto_bry_and_clear()); + cur_block.Add(cur_tkn.To_bry_and_clear()); if (itm != null) cur_block.Add(itm.Key()); } diff --git a/400_xowa/src/gplx/xowa/xtns/hieros/Hiero_phoneme_mgr.java b/400_xowa/src/gplx/xowa/xtns/hieros/Hiero_phoneme_mgr.java index 7a7a71860..ba60163a9 100644 --- a/400_xowa/src/gplx/xowa/xtns/hieros/Hiero_phoneme_mgr.java +++ b/400_xowa/src/gplx/xowa/xtns/hieros/Hiero_phoneme_mgr.java @@ -18,7 +18,7 @@ along with this program. If not, see . package gplx.xowa.xtns.hieros; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.langs.dsvs.*; class Hiero_phoneme_mgr implements GfoInvkAble { - private Ordered_hash hash = Ordered_hash_.new_bry_(); + private Ordered_hash hash = Ordered_hash_.New_bry(); private Hiero_phoneme_srl srl; public Hiero_phoneme_mgr() {srl = new Hiero_phoneme_srl(this);} public int Len() {return hash.Count();} diff --git a/400_xowa/src/gplx/xowa/xtns/hieros/Hiero_prefab_mgr.java b/400_xowa/src/gplx/xowa/xtns/hieros/Hiero_prefab_mgr.java index bb7ea47b7..e5ffe8b45 100644 --- a/400_xowa/src/gplx/xowa/xtns/hieros/Hiero_prefab_mgr.java +++ b/400_xowa/src/gplx/xowa/xtns/hieros/Hiero_prefab_mgr.java @@ -18,7 +18,7 @@ along with this program. If not, see . package gplx.xowa.xtns.hieros; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.langs.dsvs.*; class Hiero_prefab_mgr implements GfoInvkAble { - private Ordered_hash hash = Ordered_hash_.new_bry_(); + private Ordered_hash hash = Ordered_hash_.New_bry(); private Hiero_prefab_srl srl; public Hiero_prefab_mgr() {srl = new Hiero_prefab_srl(this);} public int Len() {return hash.Count();} diff --git a/400_xowa/src/gplx/xowa/xtns/hieros/Hiero_xnde.java b/400_xowa/src/gplx/xowa/xtns/hieros/Hiero_xnde.java index c157f2524..bfb8b020a 100644 --- a/400_xowa/src/gplx/xowa/xtns/hieros/Hiero_xnde.java +++ b/400_xowa/src/gplx/xowa/xtns/hieros/Hiero_xnde.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.xtns.hieros; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; -import gplx.xowa.html.*; -import gplx.xowa.parsers.*; import gplx.xowa.parsers.logs.*; import gplx.xowa.parsers.xndes.*; -public class Hiero_xnde implements Xox_xnde, Xop_xnde_atr_parser { +import gplx.xowa.htmls.*; +import gplx.xowa.parsers.*; import gplx.xowa.parsers.logs.*; import gplx.xowa.parsers.xndes.*; import gplx.xowa.parsers.htmls.*; +public class Hiero_xnde implements Xox_xnde { private Hiero_xtn_mgr xtn_mgr; private Hiero_block[] blocks; - public void Xatr_parse(Xowe_wiki wiki, byte[] src, Xop_xatr_itm xatr, Object xatr_key_obj) {} + public void Xatr__set(Xowe_wiki wiki, byte[] src, Mwh_atr_itm xatr, Object xatr_id_obj) {} public void Xtn_parse(Xowe_wiki wiki, Xop_ctx ctx, Xop_root_tkn root, byte[] src, Xop_xnde_tkn xnde) { ctx.Para().Process_block__xnde(xnde.Tag(), Xop_xnde_tag.Block_bgn); xtn_mgr = (Hiero_xtn_mgr)wiki.Xtn_mgr().Get_or_fail(Hiero_xtn_mgr.Xtn_key_static); diff --git a/400_xowa/src/gplx/xowa/xtns/hieros/Hiero_xtn_mgr.java b/400_xowa/src/gplx/xowa/xtns/hieros/Hiero_xtn_mgr.java index 06bfd0ff9..224d502d1 100644 --- a/400_xowa/src/gplx/xowa/xtns/hieros/Hiero_xtn_mgr.java +++ b/400_xowa/src/gplx/xowa/xtns/hieros/Hiero_xtn_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.xtns.hieros; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; -import gplx.xowa.wikis.*; import gplx.xowa.html.modules.*; import gplx.xowa.apps.fsys.*; +import gplx.xowa.wikis.*; import gplx.xowa.htmls.modules.*; import gplx.xowa.apps.fsys.*; public class Hiero_xtn_mgr extends Xox_mgr_base implements GfoInvkAble { @Override public boolean Enabled_default() {return true;} @Override public byte[] Xtn_key() {return Xtn_key_static;} public static final byte[] Xtn_key_static = Bry_.new_a7("hiero"); diff --git a/400_xowa/src/gplx/xowa/xtns/imaps/Imap_img_fmtr_arg.java b/400_xowa/src/gplx/xowa/xtns/imaps/Imap_img_fmtr_arg.java index cf7d972a9..3ac3f1c89 100644 --- a/400_xowa/src/gplx/xowa/xtns/imaps/Imap_img_fmtr_arg.java +++ b/400_xowa/src/gplx/xowa/xtns/imaps/Imap_img_fmtr_arg.java @@ -17,7 +17,7 @@ along with this program. If not, see . */ package gplx.xowa.xtns.imaps; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.core.primitives.*; -import gplx.xowa.html.*; import gplx.xowa.html.lnkis.*; +import gplx.xowa.htmls.*; import gplx.xowa.htmls.lnkis.*; import gplx.xowa.parsers.*; class Imap_img_fmtr_arg implements Bry_fmtr_arg { private Xoh_wtr_ctx hctx; private Imap_map map; private Imap_xtn_mgr xtn_mgr; @@ -32,7 +32,7 @@ class Imap_img_fmtr_arg implements Bry_fmtr_arg { this.img_cls = img_cls; this.img_href = img_href; } - public void XferAry(Bry_bfr bfr, int idx) { + public void Fmt__do(Bry_bfr bfr) { Bry_fmtr fmtr = Imap_html_fmtrs.Img_anchor_none; byte[] anchor_href = Bry_.Empty, anchor_text = Bry_.Empty; Imap_itm_dflt itm_dflt = map.Dflt(); diff --git a/400_xowa/src/gplx/xowa/xtns/imaps/Imap_itm_shape.java b/400_xowa/src/gplx/xowa/xtns/imaps/Imap_itm_shape.java index 28366287b..ec5896b88 100644 --- a/400_xowa/src/gplx/xowa/xtns/imaps/Imap_itm_shape.java +++ b/400_xowa/src/gplx/xowa/xtns/imaps/Imap_itm_shape.java @@ -17,7 +17,7 @@ along with this program. If not, see . */ package gplx.xowa.xtns.imaps; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.core.primitives.*; import gplx.core.net.*; -import gplx.xowa.parsers.*; import gplx.xowa.parsers.lnkis.*; import gplx.xowa.parsers.lnkes.*; import gplx.xowa.html.*; +import gplx.xowa.parsers.*; import gplx.xowa.parsers.lnkis.*; import gplx.xowa.parsers.lnkes.*; import gplx.xowa.htmls.*; interface Imap_link_owner { void Link_tid_(int v); void Link_href_(byte[] v); @@ -34,7 +34,7 @@ class Imap_link_owner_ { Xop_lnki_tkn lnki_tkn = (Xop_lnki_tkn)tkn; link_owner.Link_href_(app.Html__href_wtr().Build_to_bry(wiki, lnki_tkn.Ttl())); wiki.Html_mgr().Html_wtr().Lnki_wtr().Write_caption(bfr, Xoh_wtr_ctx.Alt, src, lnki_tkn, lnki_tkn.Ttl()); - link_owner.Link_text_(bfr.Xto_bry_and_clear()); + link_owner.Link_text_(bfr.To_bry_and_clear()); break; } case Xop_tkn_itm_.Tid_lnke: { @@ -43,9 +43,9 @@ class Imap_link_owner_ { int lnke_bgn = lnke.Lnke_bgn(), lnke_end = lnke.Lnke_end(); boolean proto_is_xowa = lnke.Proto_tid() == Gfo_protocol_itm.Tid_xowa; Xoh_lnke_wtr lnke_wtr = wiki.Html_mgr().Html_wtr().Lnke_wtr(); lnke_wtr.Write_href(bfr, ctx, src, lnke, lnke_bgn, lnke_end, proto_is_xowa); - link_owner.Link_href_(bfr.Xto_bry_and_clear()); + link_owner.Link_href_(bfr.To_bry_and_clear()); lnke_wtr.Write_caption(bfr, wiki.Html_mgr().Html_wtr(), Xoh_wtr_ctx.Basic, ctx, src, lnke, lnke_bgn, lnke_end, proto_is_xowa); - link_owner.Link_text_(bfr.Xto_bry_and_clear()); + link_owner.Link_text_(bfr.To_bry_and_clear()); break; } } diff --git a/400_xowa/src/gplx/xowa/xtns/imaps/Imap_map.java b/400_xowa/src/gplx/xowa/xtns/imaps/Imap_map.java index be811640b..736d98f81 100644 --- a/400_xowa/src/gplx/xowa/xtns/imaps/Imap_map.java +++ b/400_xowa/src/gplx/xowa/xtns/imaps/Imap_map.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.xtns.imaps; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; -import gplx.xowa.files.*; import gplx.xowa.html.*; import gplx.xowa.files.gui.*; import gplx.xowa.gui.views.*; import gplx.xowa.html.lnkis.*; -import gplx.xowa.html.hdumps.core.*; +import gplx.xowa.files.*; import gplx.xowa.htmls.*; import gplx.xowa.files.gui.*; import gplx.xowa.guis.views.*; import gplx.xowa.htmls.lnkis.*; +import gplx.xowa.htmls.hdumps.core.*; public class Imap_map implements Xoh_file_img_wkr, Js_img_wkr { private static final Imap_map_fmtr map_fmtr_arg = new Imap_map_fmtr(); public Imap_map(int id) {this.id = id;} @@ -50,7 +50,7 @@ public class Imap_map implements Xoh_file_img_wkr, Js_img_wkr { Xowe_wiki wiki = xtn_mgr.Wiki(); Bry_bfr tmp_bfr = wiki.Utl__bfr_mkr().Get_k004(); Write_imap_div(tmp_bfr, Xoh_wtr_ctx.Basic, html_uid, html_w, html_h, html_view_url.To_http_file_bry(), orig_w, orig_h); - js_wkr.Html_elem_replace_html("imap_div_" + Int_.Xto_str(html_uid), tmp_bfr.To_str_and_rls()); + js_wkr.Html_elem_replace_html("imap_div_" + Int_.To_str(html_uid), tmp_bfr.To_str_and_rls()); } private void Write_imap_div(Bry_bfr bfr, Xoh_wtr_ctx hctx, int html_uid, int html_w, int html_h, byte[] html_src, int orig_w, int orig_h) { byte[] desc_style = Calc_desc_style(html_w, html_h); diff --git a/400_xowa/src/gplx/xowa/xtns/imaps/Imap_map_fmtr.java b/400_xowa/src/gplx/xowa/xtns/imaps/Imap_map_fmtr.java index f9ceef6d6..a64bfec5d 100644 --- a/400_xowa/src/gplx/xowa/xtns/imaps/Imap_map_fmtr.java +++ b/400_xowa/src/gplx/xowa/xtns/imaps/Imap_map_fmtr.java @@ -20,7 +20,7 @@ class Imap_map_fmtr implements Bry_fmtr_arg { private int imap_id; public void Init(int imap_id, Imap_itm_shape[] shapes, double scale) {this.imap_id = imap_id; shapes_fmtr_arg.Init(shapes, scale);} public Imap_pts_fmtr_arg Pts_fmtr() {return shapes_fmtr_arg.Pts_fmtr();} - public void XferAry(Bry_bfr bfr, int idx) { + public void Fmt__do(Bry_bfr bfr) { Imap_html_fmtrs.Map.Bld_bfr_many(bfr, imap_id, shapes_fmtr_arg); } private static final Imap_shapes_fmtr shapes_fmtr_arg = new Imap_shapes_fmtr(); @@ -29,7 +29,7 @@ class Imap_shapes_fmtr implements Bry_fmtr_arg { private Imap_itm_shape[] shapes; public void Init(Imap_itm_shape[] shapes, double scale) {this.shapes = shapes; pts_fmtr_arg.Scale_(scale);} public Imap_pts_fmtr_arg Pts_fmtr() {return pts_fmtr_arg;} - public void XferAry(Bry_bfr bfr, int idx) { + public void Fmt__do(Bry_bfr bfr) { int shapes_len = shapes.length; Bry_fmtr fmtr = Imap_html_fmtrs.Area; for (int i = 0; i < shapes_len; ++i) { diff --git a/400_xowa/src/gplx/xowa/xtns/imaps/Imap_parser.java b/400_xowa/src/gplx/xowa/xtns/imaps/Imap_parser.java index 47114ac18..58695f44f 100644 --- a/400_xowa/src/gplx/xowa/xtns/imaps/Imap_parser.java +++ b/400_xowa/src/gplx/xowa/xtns/imaps/Imap_parser.java @@ -19,7 +19,7 @@ package gplx.xowa.xtns.imaps; import gplx.*; import gplx.xowa.*; import gplx.xow import gplx.core.btries.*; import gplx.core.primitives.*; import gplx.xowa.parsers.*; import gplx.xowa.parsers.lnkis.*; import gplx.xowa.parsers.lnkis.redlinks.*; import gplx.xowa.parsers.xndes.*; import gplx.xowa.parsers.tmpls.*; class Imap_parser { - private Imap_xtn_mgr xtn_mgr; private Xoa_url page_url; private Gfo_usr_dlg usr_dlg = Gfo_usr_dlg_.I; + private Imap_xtn_mgr xtn_mgr; private Xoa_url page_url; private Gfo_usr_dlg usr_dlg = Gfo_usr_dlg_.Instance; private byte[] imap_img_src; private Imap_itm_img imap_img; private Imap_itm_dflt imap_dflt; @@ -92,7 +92,7 @@ class Imap_parser { private boolean Parse_desc(int itm_bgn, int itm_end) { xtn_mgr.Desc_assert(); Btrie_slim_mgr trie = xtn_mgr.Desc_trie(); - byte tid_desc = Imap_desc_tid.parse(trie, src, Bry_find_.Trim_fwd_space_tab(src, itm_bgn, itm_end), Bry_find_.Trim_bwd_space_tab(src, itm_bgn, itm_end)); + byte tid_desc = Imap_desc_tid.parse(trie, src, Bry_find_.Trim_fwd_space_tab(src, itm_bgn, itm_end), Bry_find_.Trim_bwd_space_tab(src, itm_end, itm_bgn)); switch (tid_desc) { case Imap_desc_tid.Tid_null: return Add_err(Bool_.N, itm_bgn, itm_end, "imagemap_invalid_coord"); case Imap_desc_tid.Tid_none: return true; diff --git a/400_xowa/src/gplx/xowa/xtns/imaps/Imap_pts_fmtr_arg.java b/400_xowa/src/gplx/xowa/xtns/imaps/Imap_pts_fmtr_arg.java index 248f04fce..e2306d72f 100644 --- a/400_xowa/src/gplx/xowa/xtns/imaps/Imap_pts_fmtr_arg.java +++ b/400_xowa/src/gplx/xowa/xtns/imaps/Imap_pts_fmtr_arg.java @@ -21,7 +21,7 @@ class Imap_pts_fmtr_arg implements Bry_fmtr_arg { private double scale = 1; private Double_obj_val[] pts; public void Scale_(double v) {this.scale = v;} public void Pts_(Double_obj_val[] v) {this.pts = v;} - public void XferAry(Bry_bfr bfr, int idx) { + public void Fmt__do(Bry_bfr bfr) { int pts_len = pts.length; for (int i = 0; i < pts_len; ++i) { Double_obj_val pt = pts[i]; diff --git a/400_xowa/src/gplx/xowa/xtns/imaps/Imap_xnde.java b/400_xowa/src/gplx/xowa/xtns/imaps/Imap_xnde.java index b5b0b85f4..c3d8f78de 100644 --- a/400_xowa/src/gplx/xowa/xtns/imaps/Imap_xnde.java +++ b/400_xowa/src/gplx/xowa/xtns/imaps/Imap_xnde.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.xtns.imaps; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; -import gplx.xowa.html.*; +import gplx.xowa.htmls.*; import gplx.xowa.parsers.*; import gplx.xowa.parsers.logs.*; import gplx.xowa.parsers.xndes.*; public class Imap_xnde implements Xox_xnde { private Imap_xtn_mgr xtn_mgr; diff --git a/400_xowa/src/gplx/xowa/xtns/imaps/Imap_xnde_html_all_tst.java b/400_xowa/src/gplx/xowa/xtns/imaps/Imap_xnde_html_all_tst.java index a446e7853..7d85cbee9 100644 --- a/400_xowa/src/gplx/xowa/xtns/imaps/Imap_xnde_html_all_tst.java +++ b/400_xowa/src/gplx/xowa/xtns/imaps/Imap_xnde_html_all_tst.java @@ -16,9 +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.xtns.imaps; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; -import org.junit.*; import gplx.xowa.langs.*; +import org.junit.*; import gplx.xowa.langs.*; import gplx.xowa.langs.msgs.*; public class Imap_xnde_html_all_tst { - @Before public void init() {fxt.Reset();} private Imap_xnde_html_fxt fxt = new Imap_xnde_html_fxt(); + @Before public void init() {fxt.Reset();} private final Imap_xnde_html_fxt fxt = new Imap_xnde_html_fxt(); @Test public void Basic() { fxt.Test_html_full_str(String_.Concat_lines_nl_skip_last ( "" diff --git a/400_xowa/src/gplx/xowa/xtns/imaps/Imap_xnde_html_itm_tst.java b/400_xowa/src/gplx/xowa/xtns/imaps/Imap_xnde_html_itm_tst.java index e53a8e5d7..37485ae3b 100644 --- a/400_xowa/src/gplx/xowa/xtns/imaps/Imap_xnde_html_itm_tst.java +++ b/400_xowa/src/gplx/xowa/xtns/imaps/Imap_xnde_html_itm_tst.java @@ -28,6 +28,6 @@ class Imap_html_bldr_fxt extends Imap_fxt_base { private Imap_pts_fmtr_arg pts_fmtr_arg = new Imap_pts_fmtr_arg(); public void Test_shape_html(Imap_itm_shape shape, String expd) { Imap_shapes_fmtr.Fmt_shape(bfr, Imap_html_fmtrs.Area, pts_fmtr_arg, shape); - Tfds.Eq(expd, bfr.Xto_str_and_clear()); + Tfds.Eq(expd, bfr.To_str_and_clear()); } } diff --git a/400_xowa/src/gplx/xowa/xtns/imaps/Imap_xtn_mgr.java b/400_xowa/src/gplx/xowa/xtns/imaps/Imap_xtn_mgr.java index efa7cbdd3..18b7c251b 100644 --- a/400_xowa/src/gplx/xowa/xtns/imaps/Imap_xtn_mgr.java +++ b/400_xowa/src/gplx/xowa/xtns/imaps/Imap_xtn_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.xtns.imaps; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; -import gplx.core.btries.*; import gplx.xowa.wikis.*; import gplx.xowa.html.*; import gplx.xowa.html.lnkis.*; +import gplx.core.btries.*; import gplx.xowa.wikis.*; import gplx.xowa.htmls.*; import gplx.xowa.htmls.lnkis.*; public class Imap_xtn_mgr extends Xox_mgr_base implements GfoInvkAble { private boolean init; @Override public boolean Enabled_default() {return true;} diff --git a/400_xowa/src/gplx/xowa/xtns/indicators/Indicator_html_bldr.java b/400_xowa/src/gplx/xowa/xtns/indicators/Indicator_html_bldr.java index 1e9add6c0..8474d64d7 100644 --- a/400_xowa/src/gplx/xowa/xtns/indicators/Indicator_html_bldr.java +++ b/400_xowa/src/gplx/xowa/xtns/indicators/Indicator_html_bldr.java @@ -18,7 +18,7 @@ along with this program. If not, see . package gplx.xowa.xtns.indicators; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; public class Indicator_html_bldr implements Bry_fmtr_arg { private Indicator_html_bldr_itm bldr_itm = new Indicator_html_bldr_itm(); - private Ordered_hash list = Ordered_hash_.new_(); + private Ordered_hash list = Ordered_hash_.New(); public void Enabled_(boolean v) {enabled = v;} private boolean enabled = Bool_.Y; public void Clear() { enabled = Bool_.Y; @@ -30,7 +30,7 @@ public class Indicator_html_bldr implements Bry_fmtr_arg { if (!enabled) return; // do not add if disabled; called from ; PAGE:en.s:The_Parochial_System_(Wilberforce,_1838); DATE:2015-04-29 list.Add_if_dupe_use_nth(xnde.Name(), xnde); // Add_if_dupe_use_nth: 2nd indicator overwrites 1st; DATE:2015-04-29 } - public void XferAry(Bry_bfr bfr, int idx) { + public void Fmt__do(Bry_bfr bfr) { if (list.Count() == 0) return; // do not build html if no items; DATE:2015-04-29 bldr_itm.Init(list); fmtr_grp.Bld_bfr_many(bfr, bldr_itm); @@ -46,7 +46,7 @@ public class Indicator_html_bldr implements Bry_fmtr_arg { class Indicator_html_bldr_itm implements Bry_fmtr_arg { private Ordered_hash list; public void Init(Ordered_hash list) {this.list = list;} - public void XferAry(Bry_bfr bfr, int idx) { + public void Fmt__do(Bry_bfr bfr) { int list_len = list.Count(); for (int i = list_len - 1; i > -1; --i) { // reverse order Indicator_xnde xnde = (Indicator_xnde)list.Get_at(i); diff --git a/400_xowa/src/gplx/xowa/xtns/indicators/Indicator_html_bldr_tst.java b/400_xowa/src/gplx/xowa/xtns/indicators/Indicator_html_bldr_tst.java index cf34ee5b0..d3b5d531b 100644 --- a/400_xowa/src/gplx/xowa/xtns/indicators/Indicator_html_bldr_tst.java +++ b/400_xowa/src/gplx/xowa/xtns/indicators/Indicator_html_bldr_tst.java @@ -60,7 +60,7 @@ class Indicator_html_bldr_fxt { } public void Test_bld(String expd) { Bry_bfr tmp_bfr = Bry_bfr.reset_(255); - page.Html_data().Indicators().XferAry(tmp_bfr, 0); - Tfds.Eq_str_lines(expd, tmp_bfr.Xto_str_and_clear()); + page.Html_data().Indicators().Fmt__do(tmp_bfr); + Tfds.Eq_str_lines(expd, tmp_bfr.To_str_and_clear()); } } diff --git a/400_xowa/src/gplx/xowa/xtns/indicators/Indicator_xnde.java b/400_xowa/src/gplx/xowa/xtns/indicators/Indicator_xnde.java index bfc678550..a6d6e684a 100644 --- a/400_xowa/src/gplx/xowa/xtns/indicators/Indicator_xnde.java +++ b/400_xowa/src/gplx/xowa/xtns/indicators/Indicator_xnde.java @@ -16,26 +16,27 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.xowa.xtns.indicators; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; -import gplx.core.primitives.*; import gplx.xowa.html.*; import gplx.xowa.pages.skins.*; -import gplx.xowa.parsers.*; import gplx.xowa.parsers.xndes.*; -public class Indicator_xnde implements Xox_xnde, Xop_xnde_atr_parser { +import gplx.core.primitives.*; import gplx.xowa.htmls.*; import gplx.xowa.wikis.pages.skins.*; +import gplx.xowa.parsers.*; import gplx.xowa.parsers.xndes.*; import gplx.xowa.parsers.htmls.*; +public class Indicator_xnde implements Xox_xnde, Mwh_atr_itm_owner { public String Name() {return name;} private String name; public byte[] Html() {return html;} private byte[] html; public void Init_for_test(String name, byte[] html) {this.name = name; this.html = html;} // TEST - public void Xatr_parse(Xowe_wiki wiki, byte[] src, Xop_xatr_itm xatr, Object xatr_key_obj) { - if (xatr_key_obj == null) return; - Byte_obj_val xatr_key = (Byte_obj_val)xatr_key_obj; - switch (xatr_key.Val()) { - case Xatr_name: this.name = xatr.Val_as_str(src); break; + public void Xatr__set(Xowe_wiki wiki, byte[] src, Mwh_atr_itm xatr, Object xatr_id_obj) { + if (xatr_id_obj == null) return; + Byte_obj_val xatr_id = (Byte_obj_val)xatr_id_obj; + switch (xatr_id.Val()) { + case Xatr_name: this.name = xatr.Val_as_str(); break; } } public void Xtn_parse(Xowe_wiki wiki, Xop_ctx ctx, Xop_root_tkn root, byte[] src, Xop_xnde_tkn xnde) { - Xop_xatr_itm.Xatr_parse(wiki.Appe(), this, xatrs_hash, wiki, src, xnde); + Xox_xnde_.Xatr__set(wiki, this, xatrs_hash, src, xnde); this.html = Xop_parser_.Parse_text_to_html(wiki, ctx.Cur_page(), ctx.Cur_page().Ttl(), Bry_.Mid(src, xnde.Tag_open_end(), xnde.Tag_close_bgn()), false); Indicator_html_bldr html_bldr = ctx.Cur_page().Html_data().Indicators(); - html_bldr.Add(this); + if (this.name != null) html_bldr.Add(this); // NOTE: must do null-check b/c Add will use Name as key for hashtable } public void Xtn_write(Bry_bfr bfr, Xoae_app app, Xop_ctx ctx, Xoh_html_wtr html_wtr, Xoh_wtr_ctx hctx, Xop_xnde_tkn xnde, byte[] src) { + if (this.name == null) bfr.Add_str_a7("Error: Page status indicators' name attribute must not be empty."); } private static final byte Xatr_name = 0; private static final Hash_adp_bry xatrs_hash = Hash_adp_bry.ci_a7() diff --git a/400_xowa/src/gplx/xowa/xtns/inputBox/Xtn_inputbox_nde.java b/400_xowa/src/gplx/xowa/xtns/inputBox/Xtn_inputbox_nde.java index 1f65b83e8..09e0fff6d 100644 --- a/400_xowa/src/gplx/xowa/xtns/inputBox/Xtn_inputbox_nde.java +++ b/400_xowa/src/gplx/xowa/xtns/inputBox/Xtn_inputbox_nde.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.xtns.inputBox; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; -import gplx.xowa.html.*; +import gplx.xowa.htmls.*; import gplx.xowa.parsers.*; import gplx.xowa.parsers.xndes.*; public class Xtn_inputbox_nde implements Xox_xnde { public void Xtn_parse(Xowe_wiki wiki, Xop_ctx ctx, Xop_root_tkn root, byte[] src, Xop_xnde_tkn xnde) {} // FUTURE: noop for now so it doesn't show (since it's useless) diff --git a/400_xowa/src/gplx/xowa/xtns/insiders/Insider_func.java b/400_xowa/src/gplx/xowa/xtns/insiders/Insider_func.java index 32647907a..865c49ab6 100644 --- a/400_xowa/src/gplx/xowa/xtns/insiders/Insider_func.java +++ b/400_xowa/src/gplx/xowa/xtns/insiders/Insider_func.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.xtns.insiders; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; -import gplx.xowa.xtns.pfuncs.*; import gplx.xowa.pages.skins.*; -import gplx.xowa.langs.*; +import gplx.xowa.xtns.pfuncs.*; import gplx.xowa.wikis.pages.skins.*; +import gplx.xowa.langs.*; import gplx.xowa.langs.kwds.*; import gplx.xowa.parsers.*; import gplx.xowa.parsers.tmpls.*; public class Insider_func extends Pf_func_base { @Override public int Id() {return Xol_kwd_grp_.Id_insider;} @@ -32,5 +32,5 @@ public class Insider_func extends Pf_func_base { } skin_itm.Add(val); } - public static final Insider_func _ = new Insider_func(); Insider_func() {} + public static final Insider_func Instance = new Insider_func(); Insider_func() {} } diff --git a/400_xowa/src/gplx/xowa/xtns/insiders/Insider_html_bldr.java b/400_xowa/src/gplx/xowa/xtns/insiders/Insider_html_bldr.java index 47d7dbf70..19608c7df 100644 --- a/400_xowa/src/gplx/xowa/xtns/insiders/Insider_html_bldr.java +++ b/400_xowa/src/gplx/xowa/xtns/insiders/Insider_html_bldr.java @@ -17,9 +17,9 @@ along with this program. If not, see . */ package gplx.xowa.xtns.insiders; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.langs.htmls.encoders.*; -import gplx.xowa.wikis.*; import gplx.xowa.wikis.xwikis.*; import gplx.xowa.pages.skins.*; -import gplx.xowa.html.hrefs.*; -import gplx.xowa.nss.*; +import gplx.xowa.wikis.*; import gplx.xowa.wikis.xwikis.*; import gplx.xowa.wikis.pages.skins.*; +import gplx.xowa.htmls.hrefs.*; +import gplx.xowa.wikis.nss.*; class Insider_xtn_skin_itm implements Xopg_xtn_skin_itm { private List_adp itms = List_adp_.new_(); private Insider_html_bldr html_bldr; @@ -43,7 +43,7 @@ public class Insider_html_bldr implements Bry_fmtr_arg { hash.Clear(); fmtr_grp.Bld_bfr_many(bfr, xtn_mgr.Msg_sidebar_ttl(), xtn_mgr.Msg_about_page(), xtn_mgr.Msg_about_ttl(), this); } - public void XferAry(Bry_bfr bfr, int idx) { + public void Fmt__do(Bry_bfr bfr) { Xowe_wiki wiki = xtn_mgr.Wiki(); Url_encoder href_encoder = Xoa_app_.Utl__encoder_mgr().Href(); for (int i = 0; i < list_len; ++i) { @@ -54,7 +54,7 @@ public class Insider_html_bldr implements Bry_fmtr_arg { if (hash.Has(user_ttl_bry)) continue; hash.Add(user_ttl_bry, user_ttl_bry); href_encoder.Encode(tmp_ttl, user_ttl_bry); - user_ttl_bry = tmp_ttl.Xto_bry_and_clear(); + user_ttl_bry = tmp_ttl.To_bry_and_clear(); fmtr_itm.Bld_bfr(bfr, user_ttl_bry, user_ttl.Page_txt()); } } diff --git a/400_xowa/src/gplx/xowa/xtns/insiders/Insider_html_bldr_tst.java b/400_xowa/src/gplx/xowa/xtns/insiders/Insider_html_bldr_tst.java index 8e75c8923..4c89cf1e3 100644 --- a/400_xowa/src/gplx/xowa/xtns/insiders/Insider_html_bldr_tst.java +++ b/400_xowa/src/gplx/xowa/xtns/insiders/Insider_html_bldr_tst.java @@ -57,6 +57,6 @@ class Insider_html_bldr_fxt { public void Test_bld(String expd) { Bry_bfr tmp_bfr = Bry_bfr.reset_(255); skin_itm.Write(tmp_bfr, page); - Tfds.Eq_str_lines(expd, tmp_bfr.Xto_str_and_clear()); + Tfds.Eq_str_lines(expd, tmp_bfr.To_str_and_clear()); } } diff --git a/400_xowa/src/gplx/xowa/xtns/listings/Listing_xnde.java b/400_xowa/src/gplx/xowa/xtns/listings/Listing_xnde.java index 2b6290958..d0b1ae8b3 100644 --- a/400_xowa/src/gplx/xowa/xtns/listings/Listing_xnde.java +++ b/400_xowa/src/gplx/xowa/xtns/listings/Listing_xnde.java @@ -17,32 +17,32 @@ along with this program. If not, see . */ package gplx.xowa.xtns.listings; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.core.primitives.*; -import gplx.langs.htmls.*; import gplx.xowa.html.*; -import gplx.xowa.langs.*; -import gplx.xowa.parsers.*; import gplx.xowa.parsers.xndes.*; -public class Listing_xnde implements Xox_xnde, Xop_xnde_atr_parser { +import gplx.langs.htmls.*; import gplx.xowa.htmls.*; +import gplx.xowa.langs.*; import gplx.xowa.langs.msgs.*; +import gplx.xowa.parsers.*; import gplx.xowa.parsers.xndes.*; import gplx.xowa.parsers.htmls.*; +public class Listing_xnde implements Xox_xnde, Mwh_atr_itm_owner { public Listing_xnde(int tag_id) {} private byte[] xatr_name, xatr_alt, xatr_address, xatr_directions, xatr_phone, xatr_tollfree, xatr_email, xatr_fax, xatr_url, xatr_hours, xatr_price, xatr_checkin, xatr_checkout; private int xatr_lat = Xatr_meridian_null, xatr_long = Xatr_meridian_null; - public void Xatr_parse(Xowe_wiki wiki, byte[] src, Xop_xatr_itm xatr, Object xatr_obj) { - if (xatr_obj == null) return; - byte xatr_tid = ((Byte_obj_val)xatr_obj).Val(); - switch (xatr_tid) { - case Listing_xatrs.Tid_name: xatr_name = xatr.Val_as_bry__blank_to_null(src); break; - case Listing_xatrs.Tid_alt: xatr_alt = xatr.Val_as_bry__blank_to_null(src); break; - case Listing_xatrs.Tid_address: xatr_address = xatr.Val_as_bry__blank_to_null(src); break; - case Listing_xatrs.Tid_directions: xatr_directions = xatr.Val_as_bry__blank_to_null(src); break; - case Listing_xatrs.Tid_phone: xatr_phone = xatr.Val_as_bry__blank_to_null(src); break; - case Listing_xatrs.Tid_tollfree: xatr_tollfree = xatr.Val_as_bry__blank_to_null(src); break; - case Listing_xatrs.Tid_email: xatr_email = xatr.Val_as_bry__blank_to_null(src); break; - case Listing_xatrs.Tid_fax: xatr_fax = xatr.Val_as_bry__blank_to_null(src); break; - case Listing_xatrs.Tid_url: xatr_url = xatr.Val_as_bry__blank_to_null(src); break; - case Listing_xatrs.Tid_hours: xatr_hours = xatr.Val_as_bry__blank_to_null(src); break; - case Listing_xatrs.Tid_price: xatr_price = xatr.Val_as_bry__blank_to_null(src); break; - case Listing_xatrs.Tid_checkin: xatr_checkin = xatr.Val_as_bry__blank_to_null(src); break; - case Listing_xatrs.Tid_checkout: xatr_checkout = xatr.Val_as_bry__blank_to_null(src); break; - case Listing_xatrs.Tid_lat: xatr_lat = xatr.Val_as_int_or(src, Xatr_meridian_null); break; - case Listing_xatrs.Tid_long: xatr_long = xatr.Val_as_int_or(src, Xatr_meridian_null); break; + public void Xatr__set(Xowe_wiki wiki, byte[] src, Mwh_atr_itm xatr, Object xatr_id_obj) { + if (xatr_id_obj == null) return; + Byte_obj_val xatr_id = (Byte_obj_val)xatr_id_obj; + switch (xatr_id.Val()) { + case Listing_xatrs.Tid_name: xatr_name = xatr.Val_as_bry__blank_to_null(); break; + case Listing_xatrs.Tid_alt: xatr_alt = xatr.Val_as_bry__blank_to_null(); break; + case Listing_xatrs.Tid_address: xatr_address = xatr.Val_as_bry__blank_to_null(); break; + case Listing_xatrs.Tid_directions: xatr_directions = xatr.Val_as_bry__blank_to_null(); break; + case Listing_xatrs.Tid_phone: xatr_phone = xatr.Val_as_bry__blank_to_null(); break; + case Listing_xatrs.Tid_tollfree: xatr_tollfree = xatr.Val_as_bry__blank_to_null(); break; + case Listing_xatrs.Tid_email: xatr_email = xatr.Val_as_bry__blank_to_null(); break; + case Listing_xatrs.Tid_fax: xatr_fax = xatr.Val_as_bry__blank_to_null(); break; + case Listing_xatrs.Tid_url: xatr_url = xatr.Val_as_bry__blank_to_null(); break; + case Listing_xatrs.Tid_hours: xatr_hours = xatr.Val_as_bry__blank_to_null(); break; + case Listing_xatrs.Tid_price: xatr_price = xatr.Val_as_bry__blank_to_null(); break; + case Listing_xatrs.Tid_checkin: xatr_checkin = xatr.Val_as_bry__blank_to_null(); break; + case Listing_xatrs.Tid_checkout: xatr_checkout = xatr.Val_as_bry__blank_to_null(); break; + case Listing_xatrs.Tid_lat: xatr_lat = xatr.Val_as_int_or(Xatr_meridian_null); break; + case Listing_xatrs.Tid_long: xatr_long = xatr.Val_as_int_or(Xatr_meridian_null); break; } } private void Init_args() { @@ -68,13 +68,12 @@ public class Listing_xnde implements Xox_xnde, Xop_xnde_atr_parser { this.wiki = wiki; this.parser = wiki.Parser_mgr().Main(); this.msg_mgr = wiki.Lang().Msg_mgr(); xtn_mgr = (Listing_xtn_mgr)wiki.Xtn_mgr().Get_or_fail(Listing_xtn_mgr.Xtn_key_static); if (xtn_mgr == null || !xtn_mgr.Enabled()) return; - Xoae_app app = wiki.Appe(); - Xop_xatr_itm[] atrs = Xop_xatr_itm.Xatr_parse(app, this, Listing_xatrs.Key_hash, wiki, src, xnde); + Mwh_atr_itm[] atrs = Xox_xnde_.Xatr__set(wiki, this, Listing_xatrs.Key_hash, src, xnde); Init_args(); Html_wtr hwtr = xtn_mgr.Hwtr(); if (!Bld_by_template(xnde, atrs, src)) { Bld_by_args(xtn_mgr, hwtr, xnde, src); - html_output = hwtr.Xto_bry_and_clear(); + html_output = hwtr.To_bry_and_clear(); } } public void Xtn_write(Bry_bfr bfr, Xoae_app app, Xop_ctx ctx, Xoh_html_wtr html_wtr, Xoh_wtr_ctx hctx, Xop_xnde_tkn xnde, byte[] src) { @@ -83,26 +82,26 @@ public class Listing_xnde implements Xox_xnde, Xop_xnde_atr_parser { else bfr.Add(html_output); } - private boolean Bld_by_template(Xop_xnde_tkn xnde, Xop_xatr_itm[] atrs, byte[] src) { + private boolean Bld_by_template(Xop_xnde_tkn xnde, Mwh_atr_itm[] atrs, byte[] src) { byte[] listings_template = xtn_mgr.Listings_template(); if (listings_template == null) return false; Bry_bfr bfr = wiki.Utl__bfr_mkr().Get_b512(); - bfr.Add(Xoa_consts.Invk_bgn); // "{{" + bfr.Add(Bry__invk_bgn); // "{{" bfr.Add(listings_template); // name int atrs_len = atrs.length; for (int i = 0; i < atrs_len; i++) { - Xop_xatr_itm atr = atrs[i]; + Mwh_atr_itm atr = atrs[i]; bfr.Add_byte_pipe(); // "|" byte[] atr_key = atr.Key_bry(); if (atr_key == null) continue; // skip keyless atrs; PAGE:nl.v:Rome;EX: DATE:2014-06-04 bfr.Add(atr_key); // key bfr.Add_byte(Byte_ascii.Eq); // "=" - bfr.Add(atr.Val_as_bry(src)); // val; NOTE: must use Val_as_bry(src), not Val_bry, else int or "" will not be captured; DATE:2014-05-21 + bfr.Add(atr.Val_as_bry()); // val; NOTE: must use Val_as_bry(src), not Val_bry, else int or "" will not be captured; DATE:2014-05-21 } if (xnde.CloseMode() == Xop_xnde_tkn.CloseMode_pair) { bfr.Add_byte_pipe(); // "|" bfr.Add_mid(src, xnde.Tag_open_end(), xnde.Tag_close_bgn()); } - bfr.Add(Xoa_consts.Invk_end); // "}}" + bfr.Add(Bry__invk_end); // "}}" Xop_ctx sub_ctx = Xop_ctx.new_sub_(wiki); html_output = wiki.Parser_mgr().Main().Parse_text_to_html(sub_ctx, bfr.To_bry_and_rls()); return true; @@ -110,7 +109,7 @@ public class Listing_xnde implements Xox_xnde, Xop_xnde_atr_parser { private void Bld_by_args(Listing_xtn_mgr xtn_mgr, Html_wtr wtr, Xop_xnde_tkn xnde, byte[] src) { wtr.Nde_full(Tag_strong, xatr_name); // name if (xatr_url != null) - wtr.Nde_full_atrs(Tag_a, wtr.Xto_bry_and_clear(), false + wtr.Nde_full_atrs(Tag_a, wtr.To_bry_and_clear(), false , Atr_a_href , xatr_url , Atr_a_class , Atr_a_class_external_text , Atr_a_rel , Atr_a_rel_nofollow @@ -200,11 +199,11 @@ public class Listing_xnde implements Xox_xnde, Xop_xnde_atr_parser { if (position_template == null) return null; Bry_bfr tmp_bfr = wiki.Utl__bfr_mkr().Get_b128().Mkr_rls(); byte[] rv = position_template.Fmt(tmp_bfr, xatr_lat, xatr_long); - tmp_bfr.Add(Xoa_consts.Invk_bgn); // "{{" + tmp_bfr.Add(Bry__invk_bgn); // "{{" tmp_bfr.Add(rv); // rv is not message, but actually template precursor - tmp_bfr.Add(Xoa_consts.Invk_end); // "}}" + tmp_bfr.Add(Bry__invk_end); // "}}" Xop_ctx sub_ctx = Xop_ctx.new_sub_(wiki); - rv = wiki.Parser_mgr().Main().Parse_text_to_html(sub_ctx, tmp_bfr.Xto_bry_and_clear()); + rv = wiki.Parser_mgr().Main().Parse_text_to_html(sub_ctx, tmp_bfr.To_bry_and_clear()); Xol_msg_itm position_text = xtn_mgr.Position_text(); if (Bry_.Len_eq_0(position_text.Val())) return rv; return position_text.Fmt(tmp_bfr, rv); @@ -228,6 +227,10 @@ public class Listing_xnde implements Xox_xnde, Xop_xnde_atr_parser { , Txt_dot_space = Bry_.new_a7(". ") , Txt_mailto = Bry_.new_a7("mailto:") ; + private static final byte[] + Bry__invk_bgn = gplx.xowa.parsers.tmpls.Xop_curly_bgn_lxr.Hook + , Bry__invk_end = gplx.xowa.parsers.tmpls.Xop_curly_end_lxr.Hook + ; } class Listing_xatrs { public static final byte Tid_name = 0, Tid_alt = 1, Tid_address = 2, Tid_directions = 3, Tid_phone = 4, Tid_tollfree = 5, Tid_email = 6, Tid_fax = 7, Tid_url = 8 diff --git a/400_xowa/src/gplx/xowa/xtns/listings/Listing_xnde_basic_tst.java b/400_xowa/src/gplx/xowa/xtns/listings/Listing_xnde_basic_tst.java index 4ff052395..456ec2ac3 100644 --- a/400_xowa/src/gplx/xowa/xtns/listings/Listing_xnde_basic_tst.java +++ b/400_xowa/src/gplx/xowa/xtns/listings/Listing_xnde_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.xtns.listings; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; -import org.junit.*; import gplx.xowa.langs.*; +import org.junit.*; import gplx.xowa.langs.*; import gplx.xowa.langs.msgs.*; public class Listing_xnde_basic_tst { private Xop_fxt fxt = new Xop_fxt(); private Listing_xtn_mgr listings_xtn_mgr; diff --git a/400_xowa/src/gplx/xowa/xtns/listings/Listing_xtn_mgr.java b/400_xowa/src/gplx/xowa/xtns/listings/Listing_xtn_mgr.java index 578b34d4c..f9f28d9f5 100644 --- a/400_xowa/src/gplx/xowa/xtns/listings/Listing_xtn_mgr.java +++ b/400_xowa/src/gplx/xowa/xtns/listings/Listing_xtn_mgr.java @@ -17,7 +17,7 @@ along with this program. If not, see . */ package gplx.xowa.xtns.listings; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.langs.htmls.*; -import gplx.xowa.langs.*; +import gplx.xowa.langs.*; import gplx.xowa.langs.msgs.*; import gplx.xowa.wikis.*; import gplx.xowa.parsers.*; public class Listing_xtn_mgr extends Xox_mgr_base { @@ -63,7 +63,7 @@ public class Listing_xtn_mgr extends Xox_mgr_base { hwtr.Nde_full_atrs(Listing_xnde.Tag_abbr, symbol_text, true , Listing_xnde.Atr_a_title, Html_utl.Escape_html_as_bry(template_text) ); - rv = hwtr.Xto_bry_and_clear(); + rv = hwtr.To_bry_and_clear(); } else { rv = template_text; diff --git a/400_xowa/src/gplx/xowa/xtns/lst/Lst_pfunc_lst.java b/400_xowa/src/gplx/xowa/xtns/lst/Lst_pfunc_lst.java index ffd612acc..d46b7feaa 100644 --- a/400_xowa/src/gplx/xowa/xtns/lst/Lst_pfunc_lst.java +++ b/400_xowa/src/gplx/xowa/xtns/lst/Lst_pfunc_lst.java @@ -17,7 +17,7 @@ along with this program. If not, see . */ package gplx.xowa.xtns.lst; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.pfuncs.*; -import gplx.xowa.langs.*; +import gplx.xowa.langs.*; import gplx.xowa.langs.kwds.*; import gplx.xowa.parsers.*; import gplx.xowa.parsers.tmpls.*; public class Lst_pfunc_lst extends Pf_func_base { @Override public int Id() {return Xol_kwd_grp_.Id_lst;} @@ -29,5 +29,5 @@ public class Lst_pfunc_lst extends Pf_func_base { byte[] sect_end = Pf_func_.Eval_arg_or(ctx, src, caller, self, args_len, 1, Lst_pfunc_wkr.Null_arg); new Lst_pfunc_wkr().Init_include(src_ttl_bry, sect_bgn, sect_end).Exec(bfr, ctx); } - public static final Lst_pfunc_lst _ = new Lst_pfunc_lst(); Lst_pfunc_lst() {} + public static final Lst_pfunc_lst Instance = new Lst_pfunc_lst(); Lst_pfunc_lst() {} } diff --git a/400_xowa/src/gplx/xowa/xtns/lst/Lst_pfunc_lst_tst.java b/400_xowa/src/gplx/xowa/xtns/lst/Lst_pfunc_lst_tst.java index adbc41b6c..b0014c0bd 100644 --- a/400_xowa/src/gplx/xowa/xtns/lst/Lst_pfunc_lst_tst.java +++ b/400_xowa/src/gplx/xowa/xtns/lst/Lst_pfunc_lst_tst.java @@ -89,7 +89,7 @@ class Lst_pfunc_lst_fxt { if (fxt == null) fxt = new Xop_fxt(); fxt.Reset(); fxt.Wiki().Cache_mgr().Free_mem_all(); - Io_mgr.I.InitEngine_mem(); + Io_mgr.Instance.InitEngine_mem(); return this; } public Xop_fxt Fxt() {return fxt;} private Xop_fxt fxt; diff --git a/400_xowa/src/gplx/xowa/xtns/lst/Lst_pfunc_lstx.java b/400_xowa/src/gplx/xowa/xtns/lst/Lst_pfunc_lstx.java index 3bf1531d3..2cbf6a0d6 100644 --- a/400_xowa/src/gplx/xowa/xtns/lst/Lst_pfunc_lstx.java +++ b/400_xowa/src/gplx/xowa/xtns/lst/Lst_pfunc_lstx.java @@ -17,7 +17,7 @@ along with this program. If not, see . */ package gplx.xowa.xtns.lst; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.pfuncs.*; -import gplx.xowa.langs.*; +import gplx.xowa.langs.*; import gplx.xowa.langs.kwds.*; import gplx.xowa.parsers.*; import gplx.xowa.parsers.tmpls.*; public class Lst_pfunc_lstx extends Pf_func_base { @Override public int Id() {return Xol_kwd_grp_.Id_lstx;} @@ -29,5 +29,5 @@ public class Lst_pfunc_lstx extends Pf_func_base { byte[] sect_replace = Pf_func_.Eval_arg_or(ctx, src, caller, self, args_len, 1, Lst_pfunc_wkr.Null_arg); new Lst_pfunc_wkr().Init_exclude(src_ttl_bry, sect_exclude, sect_replace).Exec(bfr, ctx); } - public static final Lst_pfunc_lstx _ = new Lst_pfunc_lstx(); Lst_pfunc_lstx() {} + public static final Lst_pfunc_lstx Instance = new Lst_pfunc_lstx(); Lst_pfunc_lstx() {} } diff --git a/400_xowa/src/gplx/xowa/xtns/lst/Lst_pfunc_wkr.java b/400_xowa/src/gplx/xowa/xtns/lst/Lst_pfunc_wkr.java index 5081e9684..ed34100d8 100644 --- a/400_xowa/src/gplx/xowa/xtns/lst/Lst_pfunc_wkr.java +++ b/400_xowa/src/gplx/xowa/xtns/lst/Lst_pfunc_wkr.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.xtns.lst; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; -import gplx.xowa.nss.*; +import gplx.xowa.wikis.nss.*; import gplx.xowa.parsers.*; import gplx.xowa.parsers.tmpls.*; public class Lst_pfunc_wkr { private boolean mode_include = true; diff --git a/400_xowa/src/gplx/xowa/xtns/lst/Lst_section_nde.java b/400_xowa/src/gplx/xowa/xtns/lst/Lst_section_nde.java index 20ccee0d7..a0f041fa1 100644 --- a/400_xowa/src/gplx/xowa/xtns/lst/Lst_section_nde.java +++ b/400_xowa/src/gplx/xowa/xtns/lst/Lst_section_nde.java @@ -17,37 +17,36 @@ along with this program. If not, see . */ package gplx.xowa.xtns.lst; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.core.primitives.*; -import gplx.xowa.langs.*; import gplx.xowa.html.*; -import gplx.xowa.parsers.*; import gplx.xowa.parsers.xndes.*; -public class Lst_section_nde implements Xox_xnde, Xop_xnde_atr_parser { +import gplx.xowa.langs.*; import gplx.xowa.htmls.*; +import gplx.xowa.parsers.*; import gplx.xowa.parsers.xndes.*; import gplx.xowa.parsers.htmls.*; +public class Lst_section_nde implements Xox_xnde, Mwh_atr_itm_owner { public byte[] Section_name() {return section_name;} private byte[] section_name; - public void Xatr_parse(Xowe_wiki wiki, byte[] src, Xop_xatr_itm xatr, Object xatr_obj) { - if (xatr_obj == null) return; - byte xatr_tid = ((Byte_obj_val)xatr_obj).Val(); - switch (xatr_tid) { + public void Xatr__set(Xowe_wiki wiki, byte[] src, Mwh_atr_itm xatr, Object xatr_id_obj) { + if (xatr_id_obj == null) return; + byte xatr_id = ((Byte_obj_val)xatr_id_obj).Val(); + switch (xatr_id) { case Xatr_name: case Xatr_bgn: case Xatr_end: - section_name = xatr.Val_as_bry(src); name_tid = xatr_tid; break; + section_name = xatr.Val_as_bry(); name_tid = xatr_id; break; } } public Xop_xnde_tkn Xnde() {return xnde;} private Xop_xnde_tkn xnde; public byte Name_tid() {return name_tid;} private byte name_tid; public void Xtn_parse(Xowe_wiki wiki, Xop_ctx ctx, Xop_root_tkn root, byte[] src, Xop_xnde_tkn xnde) { - Xoae_app app = ctx.App(); - Xop_xatr_itm[] atrs = Xop_xatr_itm.Xatr_parse(app, this, wiki.Lang().Xatrs_section(), wiki, src, xnde); + Mwh_atr_itm[] atrs = Xox_xnde_.Xatr__set(wiki, this, wiki.Lang().Xatrs_section(), src, xnde); this.xnde = xnde; xnde.Atrs_ary_(atrs); ctx.Lst_section_mgr().Add(this); } public void Xtn_write(Bry_bfr bfr, Xoae_app app, Xop_ctx ctx, Xoh_html_wtr html_wtr, Xoh_wtr_ctx hctx, Xop_xnde_tkn xnde, byte[] src) {} // NOTE: write nothing;
      is just a bookmark public static final byte Xatr_name = 0, Xatr_bgn = 1, Xatr_end = 2; - public static Hash_adp_bry new_xatrs_(Xol_lang lang) { + public static Hash_adp_bry new_xatrs_(Xol_lang_itm lang) { Hash_adp_bry rv = Hash_adp_bry.ci_u8(lang.Case_mgr()); // UTF8:see xatrs below rv.Add_str_byte("name", Lst_section_nde.Xatr_name); Xatrs_add(rv, "begin", "end"); switch (lang.Lang_id()) { // NOTE: as of v315572b, i18n is done directly in code, not in magic.php; am wary of adding keywords for general words like begin/end, so adding them manually per language; DATE:2013-02-09 - case Xol_lang_itm_.Id_de: Xatrs_add(rv, "Anfang", "Ende"); break; - case Xol_lang_itm_.Id_he: Xatrs_add(rv, "התחלה", "סוף"); break; - case Xol_lang_itm_.Id_pt: Xatrs_add(rv, "começo", "fim"); break; + case Xol_lang_stub_.Id_de: Xatrs_add(rv, "Anfang", "Ende"); break; + case Xol_lang_stub_.Id_he: Xatrs_add(rv, "התחלה", "סוף"); break; + case Xol_lang_stub_.Id_pt: Xatrs_add(rv, "começo", "fim"); break; } return rv; } diff --git a/400_xowa/src/gplx/xowa/xtns/lst/Lst_section_nde_tst.java b/400_xowa/src/gplx/xowa/xtns/lst/Lst_section_nde_tst.java index c819d9590..f8e184e90 100644 --- a/400_xowa/src/gplx/xowa/xtns/lst/Lst_section_nde_tst.java +++ b/400_xowa/src/gplx/xowa/xtns/lst/Lst_section_nde_tst.java @@ -23,7 +23,7 @@ public class Lst_section_nde_tst { fxt.Test_parse_page_all_str("a
      c
      d", "ad"); } @Test public void German() { // PURPOSE: non-english tags for section DATE:2014-07-18 - fxt.Lang_by_id_(Xol_lang_itm_.Id_de); + fxt.Lang_by_id_(Xol_lang_stub_.Id_de); fxt.Test_parse_page_all_str("acd" , "ad"); // check that German works fxt.Test_parse_page_all_str("a
      c
      d" , "ad"); // check that English still works fxt.Test_parse_page_all_str("acd" , "a<trecho name="b">c</trecho>d"); // check that Portuguese does not work diff --git a/400_xowa/src/gplx/xowa/xtns/mapSources/Map_dd2dms_func.java b/400_xowa/src/gplx/xowa/xtns/mapSources/Map_dd2dms_func.java index 0f3d832e6..160be9ce7 100644 --- a/400_xowa/src/gplx/xowa/xtns/mapSources/Map_dd2dms_func.java +++ b/400_xowa/src/gplx/xowa/xtns/mapSources/Map_dd2dms_func.java @@ -18,7 +18,7 @@ along with this program. If not, see . package gplx.xowa.xtns.mapSources; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.core.primitives.*; import gplx.xowa.xtns.pfuncs.*; -import gplx.xowa.langs.*; +import gplx.xowa.langs.*; import gplx.xowa.langs.kwds.*; import gplx.xowa.parsers.*; import gplx.xowa.parsers.tmpls.*; public class Map_dd2dms_func extends Pf_func_base { @Override public int Id() {return Xol_kwd_grp_.Id_mapSources_dd2dms;} @@ -43,21 +43,21 @@ public class Map_dd2dms_func extends Pf_func_base { } } tmp_bfr.Mkr_rls(); - Map_math map_math = Map_math._; + Map_math map_math = Map_math.Instance; if (map_math.Ctor(coord, prec, Bry_.Empty, 2)) bfr.Add(map_math.Get_dms(plus, minus)); else map_math.Fail(ctx, src, self, bfr, this.Name()); } public static void Deg_to_dms(Bry_bfr bfr, boolean coord_is_lng, byte[] coord, int prec) { - Map_math map_math = Map_math._; + Map_math map_math = Map_math.Instance; if (map_math.Ctor(coord, prec, Bry_.Empty, 2)) { bfr.Add(map_math.Get_dms(Bry_.Empty, Bry_.Empty)); byte[] dir = coord_is_lng ? map_math.Coord_dir_ns() : map_math.Coord_dir_ew(); bfr.Add_byte_space().Add(dir); } } - public static final Map_dd2dms_func _ = new Map_dd2dms_func(); Map_dd2dms_func() {} + public static final Map_dd2dms_func Instance = new Map_dd2dms_func(); Map_dd2dms_func() {} private static final byte Key_tid_plus = 1, Key_tid_minus = 2, Key_tid_precision = 3; private static final Hash_adp_bry Key_hash = Hash_adp_bry.cs() .Add_str_byte("plus" , Key_tid_plus) diff --git a/400_xowa/src/gplx/xowa/xtns/mapSources/Map_deg2dd_func.java b/400_xowa/src/gplx/xowa/xtns/mapSources/Map_deg2dd_func.java index deab54f27..7a1b99636 100644 --- a/400_xowa/src/gplx/xowa/xtns/mapSources/Map_deg2dd_func.java +++ b/400_xowa/src/gplx/xowa/xtns/mapSources/Map_deg2dd_func.java @@ -17,7 +17,7 @@ along with this program. If not, see . */ package gplx.xowa.xtns.mapSources; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.pfuncs.*; -import gplx.xowa.langs.*; +import gplx.xowa.langs.*; import gplx.xowa.langs.kwds.*; import gplx.xowa.parsers.*; import gplx.xowa.parsers.tmpls.*; public class Map_deg2dd_func extends Pf_func_base { @Override public int Id() {return Xol_kwd_grp_.Id_mapSources_deg2dd;} @@ -26,11 +26,11 @@ public class Map_deg2dd_func extends Pf_func_base { byte[] coord = Eval_argx(ctx, src, caller, self); byte[] precision_bry = Pf_func_.Eval_val_or(ctx, src, caller, self, self.Args_len(), 0, null); int prec = precision_bry == null ? -1 : Bry_.To_int_or(precision_bry, -1); - Map_math map_math = Map_math._; + Map_math map_math = Map_math.Instance; if (map_math.Ctor(coord, prec, Bry_.Empty, 2)) bfr.Add_double(map_math.Coord_dec()); else map_math.Fail(ctx, src, self, bfr, this.Name()); } - public static final Map_deg2dd_func _ = new Map_deg2dd_func(); Map_deg2dd_func() {} + public static final Map_deg2dd_func Instance = new Map_deg2dd_func(); Map_deg2dd_func() {} } diff --git a/400_xowa/src/gplx/xowa/xtns/mapSources/Map_geolink_func.java b/400_xowa/src/gplx/xowa/xtns/mapSources/Map_geolink_func.java index 37a6c69a6..b843613ee 100644 --- a/400_xowa/src/gplx/xowa/xtns/mapSources/Map_geolink_func.java +++ b/400_xowa/src/gplx/xowa/xtns/mapSources/Map_geolink_func.java @@ -17,7 +17,7 @@ along with this program. If not, see . */ package gplx.xowa.xtns.mapSources; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.core.primitives.*; -import gplx.xowa.langs.*; +import gplx.xowa.langs.*; import gplx.xowa.langs.msgs.*; import gplx.xowa.langs.kwds.*; import gplx.xowa.xtns.pfuncs.*; import gplx.xowa.parsers.*; import gplx.xowa.parsers.tmpls.*; public class Map_geolink_func extends Pf_func_base { @@ -66,7 +66,7 @@ public class Map_geolink_func extends Pf_func_base { private static final Xol_msg_itm tmp_msg_itm = new Xol_msg_itm(-1, Bry_.Empty); private static byte[] Xto_coord(Bry_bfr bfr, Map_math math, boolean pass, byte[] dir, byte[] or) { return pass - ? bfr.Add_double(Math_.Abs_double(math.Dec())).Add_byte(Byte_ascii.Underline).Add(dir).Xto_bry_and_clear() + ? bfr.Add_double(Math_.Abs_double(math.Dec())).Add_byte(Byte_ascii.Underline).Add(dir).To_bry_and_clear() : or ; } @@ -78,7 +78,7 @@ public class Map_geolink_func extends Pf_func_base { } private static byte[] Xto_dec(Bry_bfr bfr, Map_math math, boolean pass) { return pass - ? bfr.Add_double(math.Dec()).Xto_bry_and_clear() + ? bfr.Add_double(math.Dec()).To_bry_and_clear() : Bry_arg_5_fail ; } @@ -90,7 +90,7 @@ public class Map_geolink_func extends Pf_func_base { /* return wfMsgReplaceArgs( $pattern, $args ); */ - public static final Map_geolink_func _ = new Map_geolink_func(); Map_geolink_func() {} + public static final Map_geolink_func Instance = new Map_geolink_func(); Map_geolink_func() {} private static final byte Key_tid_lat_val = 1, Key_tid_long_val = 2, Key_tid_lat_pos = 3, Key_tid_lat_neg = 4, Key_tid_long_pos = 5, Key_tid_long_min = 6, Key_tid_prec = 7; private static final Hash_adp_bry Key_hash = Hash_adp_bry.cs() .Add_str_byte("lat" , Key_tid_lat_val) diff --git a/400_xowa/src/gplx/xowa/xtns/mapSources/Map_math.java b/400_xowa/src/gplx/xowa/xtns/mapSources/Map_math.java index f6a8e8c05..76cc451aa 100644 --- a/400_xowa/src/gplx/xowa/xtns/mapSources/Map_math.java +++ b/400_xowa/src/gplx/xowa/xtns/mapSources/Map_math.java @@ -136,7 +136,7 @@ class Map_math {// REF.MW:MapSources_math.php letter = minus; if (letter != null) tmp_bfr.Add_byte_space().Add(letter); - return tmp_bfr.Xto_bry_and_clear(); + return tmp_bfr.To_bry_and_clear(); } private void Parse_input(byte[] src) { // REF.MW: toDec src = Parse_input_normalize(tmp_bfr, src); @@ -268,7 +268,7 @@ class Map_math {// REF.MW:MapSources_math.php i = Input_trie.Match_pos(); } } - return bfr.Xto_bry_and_clear_and_trim(); + return bfr.To_bry_and_clear_and_trim(); } private static final byte Dir_unknown_id = 0, Dir_lat_id = 1, Dir_long_id = 2; public static final byte[] Dir_lat_bry = Bry_.new_a7("lat"), Dir_long_bry = Bry_.new_a7("long"); @@ -315,5 +315,5 @@ class Map_math {// REF.MW:MapSources_math.php .Add_str_byte("e" , Input_tid_compass) .Add_str_byte("w" , Input_tid_compass) ; - public static final Map_math _ = new Map_math(); + public static final Map_math Instance = new Map_math(); } diff --git a/400_xowa/src/gplx/xowa/xtns/massMessage/Message_target_func.java b/400_xowa/src/gplx/xowa/xtns/massMessage/Message_target_func.java index 621379408..bdf0f64e6 100644 --- a/400_xowa/src/gplx/xowa/xtns/massMessage/Message_target_func.java +++ b/400_xowa/src/gplx/xowa/xtns/massMessage/Message_target_func.java @@ -17,7 +17,7 @@ along with this program. If not, see . */ package gplx.xowa.xtns.massMessage; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.pfuncs.*; -import gplx.xowa.langs.*; +import gplx.xowa.langs.*; import gplx.xowa.langs.kwds.*; import gplx.xowa.parsers.*; import gplx.xowa.parsers.tmpls.*; public class Message_target_func extends Pf_func_base { @Override public int Id() {return Xol_kwd_grp_.Id_massMessage_target;} @@ -26,5 +26,5 @@ public class Message_target_func extends Pf_func_base { byte[] argx = Eval_argx(ctx, src, caller, self); if (argx == null) return; bfr.Add(Xop_tkn_.Lnki_bgn).Add(argx).Add(Xop_tkn_.Lnki_end); // TODO: evaluate 2nd arg; {{#target:A|en.wikipedia.org}} } - public static final Message_target_func _ = new Message_target_func(); Message_target_func() {} + public static final Message_target_func Instance = new Message_target_func(); Message_target_func() {} } diff --git a/400_xowa/src/gplx/xowa/xtns/math/Math_nde.java b/400_xowa/src/gplx/xowa/xtns/math/Math_nde.java index 43975af21..f8bff79fd 100644 --- a/400_xowa/src/gplx/xowa/xtns/math/Math_nde.java +++ b/400_xowa/src/gplx/xowa/xtns/math/Math_nde.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.xtns.math; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; -import gplx.xowa.html.*; -import gplx.xowa.parsers.*; import gplx.xowa.parsers.logs.*; import gplx.xowa.parsers.xndes.*; -public class Math_nde implements Xox_xnde, Xop_xnde_atr_parser { +import gplx.xowa.htmls.*; +import gplx.xowa.parsers.*; import gplx.xowa.parsers.logs.*; import gplx.xowa.parsers.xndes.*; import gplx.xowa.parsers.htmls.*; +public class Math_nde implements Xox_xnde { public Xop_xnde_tkn Xnde() {throw Err_.new_unimplemented();} - public void Xatr_parse(Xowe_wiki wiki, byte[] src, Xop_xatr_itm xatr, Object xatr_obj) {} + public void Xatr__set(Xowe_wiki wiki, byte[] src, Mwh_atr_itm xatr, Object xatr_id_obj) {} public void Xtn_parse(Xowe_wiki wiki, Xop_ctx ctx, Xop_root_tkn root, byte[] src, Xop_xnde_tkn xnde) { Xof_math_mgr math_mgr = wiki.Appe().File_mgr().Math_mgr(); boolean log_wkr_enabled = Log_wkr != Xop_log_basic_wkr.Null; if (log_wkr_enabled) Log_wkr.Log_end_xnde(ctx.Cur_page(), Xop_log_basic_wkr.Tid_math, src, xnde); diff --git a/400_xowa/src/gplx/xowa/xtns/math/Xof_math_html_wtr.java b/400_xowa/src/gplx/xowa/xtns/math/Xof_math_html_wtr.java index b4d45662a..76024a122 100644 --- a/400_xowa/src/gplx/xowa/xtns/math/Xof_math_html_wtr.java +++ b/400_xowa/src/gplx/xowa/xtns/math/Xof_math_html_wtr.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.xtns.math; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; -import gplx.xowa.html.*; -import gplx.xowa.parsers.*; import gplx.xowa.parsers.xndes.*; +import gplx.xowa.htmls.*; +import gplx.xowa.parsers.*; import gplx.xowa.parsers.xndes.*; import gplx.xowa.parsers.vnts.*; public class Xof_math_html_wtr { private Xof_math_itm tmp_math_itm = new Xof_math_itm(); private Bry_fmtr math_fmtr_latex = Bry_fmtr.new_("~{math_text}", "math_idx", "math_text"); @@ -36,15 +36,20 @@ public class Xof_math_html_wtr { bfr.Add_str(tmp_math_itm.Png_url().To_http_file_str()); bfr.Add(Xoh_consts.__inline_quote); } - else { - int id = page.File_math().Count(); - Xof_math_itm new_math_itm = tmp_math_itm.Clone().Id_(id); - Bry_fmtr math_fmtr = renderer_is_latex ? math_fmtr_latex : math_fmtr_mathjax; - math_fmtr.Bld_bfr_many(tmp_bfr, id, math_bry); - bfr.Add_bfr_and_clear(tmp_bfr); - if (enabled && renderer_is_latex) // NOTE: only generate images if math is enabled; otherwise "downloading" prints at bottom of screen, but no action (also a lot of file IO) - page.File_math().Add(new_math_itm); - } + else + Write_for_mathjax(bfr, page, enabled, renderer_is_latex, math_bry, tmp_bfr); + } + private void Write_for_mathjax(Bry_bfr bfr, Xoae_page page, boolean enabled, boolean renderer_is_latex, byte[] math_bry, Bry_bfr tmp_bfr) { + int id = page.File_math().Count(); + Xof_math_itm new_math_itm = tmp_math_itm.Clone().Id_(id); + Bry_fmtr math_fmtr = renderer_is_latex ? math_fmtr_latex : math_fmtr_mathjax; + boolean armor_math = page.Lang().Vnt_mgr().Enabled() && !renderer_is_latex; // REF.MW:LangConverter.php|armourMath + if (armor_math) bfr.Add(Vnt_convert_lang.Bry__armor_bgn); + math_fmtr.Bld_bfr_many(tmp_bfr, id, math_bry); + bfr.Add_bfr_and_clear(tmp_bfr); + if (armor_math) bfr.Add(Vnt_convert_lang.Bry__armor_end); + if (enabled && renderer_is_latex) // NOTE: only generate images if math is enabled; otherwise "downloading" prints at bottom of screen, but no action (also a lot of file IO) + page.File_math().Add(new_math_itm); } private static byte[] Escape_tex(Bry_bfr tmp_bfr, boolean mathjax, byte[] bry) {return Escape_tex(false, tmp_bfr, mathjax, bry, 0, bry.length);} private static byte[] Escape_tex(boolean write_to_bfr, Bry_bfr bfr, boolean mathjax, byte[] bry, int bgn, int end) { @@ -80,6 +85,6 @@ public class Xof_math_html_wtr { if (write_to_bfr) return null; else - return dirty ? bfr.Xto_bry_and_clear() : bry; + return dirty ? bfr.To_bry_and_clear() : bry; } } diff --git a/400_xowa/src/gplx/xowa/xtns/math/Xof_math_mgr.java b/400_xowa/src/gplx/xowa/xtns/math/Xof_math_mgr.java index 53615ccd7..7ff82cdc7 100644 --- a/400_xowa/src/gplx/xowa/xtns/math/Xof_math_mgr.java +++ b/400_xowa/src/gplx/xowa/xtns/math/Xof_math_mgr.java @@ -38,7 +38,7 @@ public class Xof_math_mgr implements GfoInvkAble { } public boolean Find_itm(Xof_math_itm rv, String wiki_key, byte[] math_bry) { Make_itm(rv, wiki_key, math_bry); - return Io_mgr.I.ExistsFil(rv.Png_url()); + return Io_mgr.Instance.ExistsFil(rv.Png_url()); } public boolean Renderer_is_mathjax() {return renderer_is_mathjax;} public void Renderer_is_mathjax_(boolean v) {renderer_is_mathjax = v;} private boolean renderer_is_mathjax = true; private Io_url Make_png_fil(Io_url math_dir, String hash) { @@ -49,7 +49,7 @@ public class Xof_math_mgr implements GfoInvkAble { .Add(String_.CharAt(hash, 2)).Add(Math_dir_spr) .Add(hash).Add(".png") ; - return Io_url_.new_fil_(tmp_sb.Xto_str_and_clear()); + return Io_url_.new_fil_(tmp_sb.To_str_and_clear()); } public boolean MakePng(byte[] math, String hash, Io_url png_url, String prog_fmt) { if (!enabled) return false; @@ -57,14 +57,14 @@ public class Xof_math_mgr implements GfoInvkAble { Io_url tex_url = tmp_dir.GenSubFil("xowa_math_temp.tex"); String latex = Latex_wrap(math); prog_fmt = String_.Replace(prog_fmt, "~", "~~"); // double-up ~ or else will break in progress bar - Io_mgr.I.SaveFilStr(tex_url, latex); + Io_mgr.Instance.SaveFilStr(tex_url, latex); cmd_convert_tex_to_dvi.Prog_fmt_(prog_fmt + " tex_to_dvi: ~{process_seconds} second(s); ~{process_exe_name} ~{process_exe_args}"); boolean pass = cmd_convert_tex_to_dvi.Run(tex_url.Raw(), tmp_dir.Xto_api()).Exit_code_pass(); if (!pass) { app.Usr_dlg().Warn_many(GRP_KEY, "tex_to_dvi.fail", "fail: tex_to_dvi: error=~{0} latex=~{1}", cmd_convert_tex_to_dvi.Rslt_out(), latex); } // NOTE: latex sometimes throws errors, but will generate .dvi; for sake of simplicity; always try to run dvipng - Io_mgr.I.CreateDirIfAbsent(png_url.OwnerDir()); + Io_mgr.Instance.CreateDirIfAbsent(png_url.OwnerDir()); cmd_convert_dvi_to_png.Prog_fmt_(prog_fmt + " dvi_to_png: ~{process_seconds} second(s); ~{process_exe_name} ~{process_exe_args}"); pass = cmd_convert_dvi_to_png.Run(tex_url.GenNewExt(".dvi"), png_url, tmp_dir.Xto_api()).Exit_code_pass(); if (!pass) { @@ -93,7 +93,7 @@ public class Xof_math_mgr implements GfoInvkAble { )); public boolean Enabled() {return enabled;} public Xof_math_mgr Enabled_(boolean v) {enabled = v; return this;} private boolean enabled = true; public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { - if (ctx.Match(k, Invk_enabled)) return Yn.Xto_str(enabled); + if (ctx.Match(k, Invk_enabled)) return Yn.To_str(enabled); else if (ctx.Match(k, Invk_enabled_)) enabled = m.ReadYn("v"); else if (ctx.Match(k, Invk_renderer)) return renderer_is_mathjax ? "mathjax" : "latex"; else if (ctx.Match(k, Invk_renderer_)) renderer_is_mathjax = String_.Eq(m.ReadStr("v"), "mathjax"); diff --git a/400_xowa/src/gplx/xowa/xtns/math/Xof_math_mgr_html_tst.java b/400_xowa/src/gplx/xowa/xtns/math/Xof_math_mgr_html_tst.java index af509c2b2..3087fbca2 100644 --- a/400_xowa/src/gplx/xowa/xtns/math/Xof_math_mgr_html_tst.java +++ b/400_xowa/src/gplx/xowa/xtns/math/Xof_math_mgr_html_tst.java @@ -33,4 +33,9 @@ public class Xof_math_mgr_html_tst { @Test public void Quote() { // PURPOSE: assert that quote is not escaped; DATE:2014-07-20 fxt.Test_html_full_str("a\"b", "a\"b"); } + @Test public void Vnt() { // PURPOSE: if vnt, armor math; PAGE:sr.w:Земља; DATE:2015-10-11 + fxt.Wiki().Lang().Vnt_mgr().Enabled_(Bool_.Y); + fxt.Test_html_full_str("abc", "-{R|abc}-"); // NOTE: this also armors the id which is good for the mathjax.js + fxt.Wiki().Lang().Vnt_mgr().Enabled_(Bool_.N); + } } diff --git a/400_xowa/src/gplx/xowa/xtns/math/Xof_math_subst_regy.java b/400_xowa/src/gplx/xowa/xtns/math/Xof_math_subst_regy.java index 06f67f4a6..326e35809 100644 --- a/400_xowa/src/gplx/xowa/xtns/math/Xof_math_subst_regy.java +++ b/400_xowa/src/gplx/xowa/xtns/math/Xof_math_subst_regy.java @@ -56,7 +56,7 @@ public class Xof_math_subst_regy { } for (int i = 0; i < dollarSignCount; i++) bfr.Add_byte(Byte_ascii.Dollar); - return bfr.Xto_bry_and_clear_and_trim(); + return bfr.To_bry_and_clear_and_trim(); } boolean init = false; public Xof_math_subst_regy Init() { if (init) return this; diff --git a/400_xowa/src/gplx/xowa/xtns/math/texvcs/tkns/Texvc_root.java b/400_xowa/src/gplx/xowa/xtns/math/texvcs/tkns/Texvc_root.java index 462a8dfa4..e4eb9ec4e 100644 --- a/400_xowa/src/gplx/xowa/xtns/math/texvcs/tkns/Texvc_root.java +++ b/400_xowa/src/gplx/xowa/xtns/math/texvcs/tkns/Texvc_root.java @@ -77,7 +77,7 @@ public class Texvc_root implements Texvc_tkn { if (regy_tkn.Update_end(uid, end)) regy_nde.Update_end(uid, end); } - public String Print_tex_str(Bry_bfr bfr) {Print_tex_bry(bfr, src, 0); return bfr.Xto_str_and_clear();} + public String Print_tex_str(Bry_bfr bfr) {Print_tex_bry(bfr, src, 0); return bfr.To_str_and_clear();} public void Print_tex_bry(Bry_bfr bfr, byte[] src, int indent) { int subs_len = Subs__len(); for (int i = 0; i < subs_len; ++i) { @@ -85,7 +85,7 @@ public class Texvc_root implements Texvc_tkn { sub_tkn.Print_tex_bry(bfr, src, indent + 1); } } - public String Print_dbg_str(Bry_bfr bfr) {Print_dbg_bry(bfr, 0); return bfr.Xto_str_and_clear();} + public String Print_dbg_str(Bry_bfr bfr) {Print_dbg_bry(bfr, 0); return bfr.To_str_and_clear();} public void Print_dbg_bry(Bry_bfr bfr, int indent) { int len = this.Subs__len(); for (int i = 0; i < len; ++i) { diff --git a/400_xowa/src/gplx/xowa/xtns/math/texvcs/tkns/Texvc_tkn_.java b/400_xowa/src/gplx/xowa/xtns/math/texvcs/tkns/Texvc_tkn_.java index 8477b7093..3097b4505 100644 --- a/400_xowa/src/gplx/xowa/xtns/math/texvcs/tkns/Texvc_tkn_.java +++ b/400_xowa/src/gplx/xowa/xtns/math/texvcs/tkns/Texvc_tkn_.java @@ -49,7 +49,7 @@ public class Texvc_tkn_ { int len = ary.length; for (int i = 0; i < len; ++i) ary[i].Print_dbg_bry(bfr, 0); - return bfr.Xto_str_and_clear(); + return bfr.To_str_and_clear(); } public static void Print_dbg_str__bgn(Bry_bfr bfr, int indent, Texvc_tkn tkn) { if (indent > 0) bfr.Add_byte_repeat(Byte_ascii.Space, indent * 2); diff --git a/400_xowa/src/gplx/xowa/xtns/pfuncs/Pf_func_.java b/400_xowa/src/gplx/xowa/xtns/pfuncs/Pf_func_.java index 9bf989caf..5cfe15f08 100644 --- a/400_xowa/src/gplx/xowa/xtns/pfuncs/Pf_func_.java +++ b/400_xowa/src/gplx/xowa/xtns/pfuncs/Pf_func_.java @@ -17,7 +17,7 @@ along with this program. If not, see . */ package gplx.xowa.xtns.pfuncs; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.core.primitives.*; -import gplx.xowa.langs.*; +import gplx.xowa.langs.*; import gplx.xowa.langs.msgs.*; import gplx.xowa.langs.kwds.*; import gplx.xowa.xtns.pfuncs.ifs.*; import gplx.xowa.xtns.pfuncs.times.*; import gplx.xowa.xtns.pfuncs.numbers.*; import gplx.xowa.xtns.pfuncs.ttls.*; import gplx.xowa.xtns.pfuncs.langs.*; import gplx.xowa.xtns.pfuncs.strings.*; import gplx.xowa.xtns.pfuncs.stringutils.*; import gplx.xowa.xtns.pfuncs.pages.*; import gplx.xowa.xtns.pfuncs.wikis.*; import gplx.xowa.parsers.*; import gplx.xowa.parsers.tmpls.*; public class Pf_func_ { @@ -30,18 +30,18 @@ public class Pf_func_ { nde.Key_tkn().Tmpl_evaluate(ctx, src, caller, bfr); // NOTE: must add key b/c parser functions do not have keys and some usages pass in xml_tkns; EX: {{#if|= self_args_len) return or; Bry_bfr bfr = Bry_bfr.new_(); Arg_nde_tkn nde = self.Args_get_by_idx(i); nde.Val_tkn().Tmpl_evaluate(ctx, src, caller, bfr); - return bfr.Xto_bry_and_clear_and_trim(); + return bfr.To_bry_and_clear_and_trim(); } public static byte[] Eval_tkn(Bry_bfr bfr, Xop_ctx ctx, byte[] src, Xot_invk caller, Xop_tkn_itm tkn) { tkn.Tmpl_evaluate(ctx, src, caller, bfr); - return bfr.Xto_bry_and_clear(); + return bfr.To_bry_and_clear(); } private static final Number_parser lhs_parser = new Number_parser().Hex_enabled_(true), rhs_parser = new Number_parser().Hex_enabled_(true); public static boolean Eq_(byte[] lhs, byte[] rhs) { // PATCH.PHP: php allows "003" == "3.0"; ASSUME: numbers are either int or int-like decimal; long, float, decimal not supported @@ -64,7 +64,7 @@ public class Pf_func_ { if (rhs_parser.Has_err()) return false; return lhs_parser.Has_frac() || rhs_parser.Has_frac() ? lhs_parser.Rv_as_dec().Eq(rhs_parser.Rv_as_dec()) : lhs_parser.Rv_as_int() == rhs_parser.Rv_as_int(); } - public static void Reg(gplx.xowa.langs.Xol_func_name_regy func_regy, Xol_lang lang) { + public static void Reg(gplx.xowa.langs.funcs.Xol_func_regy func_regy, Xol_lang_itm lang) { Xol_kwd_mgr kwd_mgr = lang.Kwd_mgr(); int[] kwd_ary = Ary_get(!lang.Kwd_mgr__strx()); int len = kwd_ary.length; @@ -295,7 +295,7 @@ public class Pf_func_ { case Xol_kwd_grp_.Id_ttl_subj_txt: case Xol_kwd_grp_.Id_ttl_subj_url: case Xol_kwd_grp_.Id_ttl_talk_txt: - case Xol_kwd_grp_.Id_ttl_talk_url: return Pfunc_ttl._; + case Xol_kwd_grp_.Id_ttl_talk_url: return Pfunc_ttl.Instance; case Xol_kwd_grp_.Id_site_sitename: case Xol_kwd_grp_.Id_site_servername: @@ -305,7 +305,7 @@ public class Pf_func_ { case Xol_kwd_grp_.Id_site_stylepath: case Xol_kwd_grp_.Id_site_contentlanguage: case Xol_kwd_grp_.Id_site_directionmark: - case Xol_kwd_grp_.Id_site_currentversion: return Pfunc_wiki_props._; + case Xol_kwd_grp_.Id_site_currentversion: return Pfunc_wiki_props.Instance; case Xol_kwd_grp_.Id_num_pages: case Xol_kwd_grp_.Id_num_articles: @@ -314,25 +314,25 @@ public class Pf_func_ { case Xol_kwd_grp_.Id_num_views: case Xol_kwd_grp_.Id_num_users: case Xol_kwd_grp_.Id_num_users_active: - case Xol_kwd_grp_.Id_num_admins: return Pfunc_wiki_stats._; + case Xol_kwd_grp_.Id_num_admins: return Pfunc_wiki_stats.Instance; case Xol_kwd_grp_.Id_page_id: case Xol_kwd_grp_.Id_rev_id: case Xol_kwd_grp_.Id_rev_pagesize: case Xol_kwd_grp_.Id_rev_user: - case Xol_kwd_grp_.Id_rev_protectionlevel: return Pfunc_rev_props._; - case Xol_kwd_grp_.Id_page_displaytitle: return Pfunc_displaytitle._; - case Xol_kwd_grp_.Id_page_defaultsort: return Pfunc_defaultsort._; - case Xol_kwd_grp_.Id_noeditsection: return Pfunc_noeditsection._; - case Xol_kwd_grp_.Id_site_pagesincategory: return Pfunc_pagesincategory._; + case Xol_kwd_grp_.Id_rev_protectionlevel: return Pfunc_rev_props.Instance; + case Xol_kwd_grp_.Id_page_displaytitle: return Pfunc_displaytitle.Instance; + case Xol_kwd_grp_.Id_page_defaultsort: return Pfunc_defaultsort.Instance; + case Xol_kwd_grp_.Id_noeditsection: return Pfunc_noeditsection.Instance; + case Xol_kwd_grp_.Id_site_pagesincategory: return Pfunc_pagesincategory.Instance; case Xol_kwd_grp_.Id_url_ns: return new Pfunc_ns(false); case Xol_kwd_grp_.Id_url_nse: return new Pfunc_ns(true); case Xol_kwd_grp_.Id_url_urlencode: return new Pfunc_urlencode(); - case Xol_kwd_grp_.Id_str_lc: return new Pfunc_case(Xol_lang.Tid_lower, false); - case Xol_kwd_grp_.Id_str_lcfirst: return new Pfunc_case(Xol_lang.Tid_lower, true); - case Xol_kwd_grp_.Id_str_uc: return new Pfunc_case(Xol_lang.Tid_upper, false); - case Xol_kwd_grp_.Id_str_ucfirst: return new Pfunc_case(Xol_lang.Tid_upper, true); + case Xol_kwd_grp_.Id_str_lc: return new Pfunc_case(Xol_lang_itm.Tid_lower, false); + case Xol_kwd_grp_.Id_str_lcfirst: return new Pfunc_case(Xol_lang_itm.Tid_lower, true); + case Xol_kwd_grp_.Id_str_uc: return new Pfunc_case(Xol_lang_itm.Tid_upper, false); + case Xol_kwd_grp_.Id_str_ucfirst: return new Pfunc_case(Xol_lang_itm.Tid_upper, true); case Xol_kwd_grp_.Id_str_padleft: return new Pfunc_pad(Xol_kwd_grp_.Id_str_padleft, false); case Xol_kwd_grp_.Id_str_padright: return new Pfunc_pad(Xol_kwd_grp_.Id_str_padright, true); case Xol_kwd_grp_.Id_str_formatnum: return new Pf_formatnum(); @@ -381,32 +381,32 @@ public class Pf_func_ { case Xol_kwd_grp_.Id_xowa_dbg: return new Xop_xowa_dbg(); case Xol_kwd_grp_.Id_xowa: return new gplx.xowa.xtns.xowa_cmds.Xop_xowa_func(); - case Xol_kwd_grp_.Id_xtn_geodata_coordinates: return gplx.xowa.xtns.geodata.Geo_coordinates_func._; - case Xol_kwd_grp_.Id_lst: return gplx.xowa.xtns.lst.Lst_pfunc_lst._; - case Xol_kwd_grp_.Id_lstx: return gplx.xowa.xtns.lst.Lst_pfunc_lstx._; + case Xol_kwd_grp_.Id_xtn_geodata_coordinates: return gplx.xowa.xtns.geodata.Geo_coordinates_func.Instance; + case Xol_kwd_grp_.Id_lst: return gplx.xowa.xtns.lst.Lst_pfunc_lst.Instance; + case Xol_kwd_grp_.Id_lstx: return gplx.xowa.xtns.lst.Lst_pfunc_lstx.Instance; case Xol_kwd_grp_.Id_invoke: return new gplx.xowa.xtns.scribunto.Scrib_invoke_func(); case Xol_kwd_grp_.Id_property: return new gplx.xowa.xtns.wdatas.pfuncs.Wdata_pf_property(); case Xol_kwd_grp_.Id_noexternallanglinks: return new gplx.xowa.xtns.wdatas.pfuncs.Wdata_pf_noExternalLangLinks(); case Xol_kwd_grp_.Id_wbreponame: return new gplx.xowa.xtns.wdatas.pfuncs.Wdata_pf_wbreponame(); - case Xol_kwd_grp_.Id_mapSources_deg2dd: return gplx.xowa.xtns.mapSources.Map_deg2dd_func._; - case Xol_kwd_grp_.Id_mapSources_dd2dms: return gplx.xowa.xtns.mapSources.Map_dd2dms_func._; - case Xol_kwd_grp_.Id_mapSources_geoLink: return gplx.xowa.xtns.mapSources.Map_geolink_func._; + case Xol_kwd_grp_.Id_mapSources_deg2dd: return gplx.xowa.xtns.mapSources.Map_deg2dd_func.Instance; + case Xol_kwd_grp_.Id_mapSources_dd2dms: return gplx.xowa.xtns.mapSources.Map_dd2dms_func.Instance; + case Xol_kwd_grp_.Id_mapSources_geoLink: return gplx.xowa.xtns.mapSources.Map_geolink_func.Instance; - case Xol_kwd_grp_.Id_geoCrumbs_isin: return gplx.xowa.xtns.geoCrumbs.Geoc_isin_func._; + case Xol_kwd_grp_.Id_geoCrumbs_isin: return gplx.xowa.xtns.geoCrumbs.Geoc_isin_func.Instance; - case Xol_kwd_grp_.Id_relatedArticles: return gplx.xowa.xtns.relatedArticles.Articles_func._; - case Xol_kwd_grp_.Id_insider: return gplx.xowa.xtns.insiders.Insider_func._; + case Xol_kwd_grp_.Id_relatedArticles: return gplx.xowa.xtns.relatedArticles.Articles_func.Instance; + case Xol_kwd_grp_.Id_insider: return gplx.xowa.xtns.insiders.Insider_func.Instance; - case Xol_kwd_grp_.Id_massMessage_target: return gplx.xowa.xtns.massMessage.Message_target_func._; + case Xol_kwd_grp_.Id_massMessage_target: return gplx.xowa.xtns.massMessage.Message_target_func.Instance; - case Xol_kwd_grp_.Id_pendingChangeLevel: return gplx.xowa.xtns.flaggedRevs.Pending_change_level_func._; - case Xol_kwd_grp_.Id_pagesUsingPendingChanges: return gplx.xowa.xtns.flaggedRevs.Pages_using_pending_changes_func._; + case Xol_kwd_grp_.Id_pendingChangeLevel: return gplx.xowa.xtns.flaggedRevs.Pending_change_level_func.Instance; + case Xol_kwd_grp_.Id_pagesUsingPendingChanges: return gplx.xowa.xtns.flaggedRevs.Pages_using_pending_changes_func.Instance; case Xol_kwd_grp_.Id_cascadingSources: return new Pf_func_noop(id); - case Xol_kwd_grp_.Id_bang: return Pf_func_bang._; + case Xol_kwd_grp_.Id_bang: return Pf_func_bang.Instance; default: throw Err_.new_unhandled(id); } } @@ -421,6 +421,6 @@ class Pf_func_bang extends Pf_func_base { @Override public int Id() {return Xol_kwd_grp_.Id_bang;} @Override public void Func_evaluate(Xop_ctx ctx, byte[] src, Xot_invk caller, Xot_invk self, Bry_bfr bfr) {bfr.Add_byte_pipe();} @Override public Pf_func New(int id, byte[] name) {return this;} - public static final Pf_func_bang _ = new Pf_func_bang(); + public static final Pf_func_bang Instance = new Pf_func_bang(); Pf_func_bang() {this.Name_(Byte_ascii.Bang_bry);} } diff --git a/400_xowa/src/gplx/xowa/xtns/pfuncs/Pf_func_base.java b/400_xowa/src/gplx/xowa/xtns/pfuncs/Pf_func_base.java index 72e10f1b1..43cae2656 100644 --- a/400_xowa/src/gplx/xowa/xtns/pfuncs/Pf_func_base.java +++ b/400_xowa/src/gplx/xowa/xtns/pfuncs/Pf_func_base.java @@ -37,7 +37,7 @@ public abstract class Pf_func_base implements Pf_func { Bry_bfr tmp = Bry_bfr.new_(); for (int i = 0; i < subs_len; i++) name_val_tkn.Subs_get(i).Tmpl_evaluate(ctx, src, caller, tmp); - argx_dat = tmp.Xto_bry_and_clear_and_trim(); + argx_dat = tmp.To_bry_and_clear_and_trim(); } } return argx_dat; @@ -63,7 +63,7 @@ public abstract class Pf_func_base implements Pf_func { Bry_bfr tmp = Bry_bfr.new_(); for (int i = 0; i < subs_len; i++) name_val_tkn.Subs_get(i).Tmpl_evaluate(ctx, src, caller, tmp); - argx_dat = tmp.Xto_bry_and_clear_and_trim(); + argx_dat = tmp.To_bry_and_clear_and_trim(); } } return argx_dat; diff --git a/400_xowa/src/gplx/xowa/xtns/pfuncs/exprs/Pfunc_expr.java b/400_xowa/src/gplx/xowa/xtns/pfuncs/exprs/Pfunc_expr.java index ce383b54d..2da6b00ff 100644 --- a/400_xowa/src/gplx/xowa/xtns/pfuncs/exprs/Pfunc_expr.java +++ b/400_xowa/src/gplx/xowa/xtns/pfuncs/exprs/Pfunc_expr.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.xtns.pfuncs.exprs; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.pfuncs.*; -import gplx.xowa.langs.*; +import gplx.xowa.langs.*; import gplx.xowa.langs.kwds.*; import gplx.xowa.parsers.*; import gplx.xowa.parsers.tmpls.*; public class Pfunc_expr extends Pf_func_base { @Override public boolean Func_require_colon_arg() {return true;} @@ -36,7 +36,7 @@ public class Pfunc_expr extends Pf_func_base { return true; } } - private static Pfunc_expr_shunter shunter = Pfunc_expr_shunter._; + private static Pfunc_expr_shunter shunter = Pfunc_expr_shunter.Instance; @Override public int Id() {return Xol_kwd_grp_.Id_xtn_expr;} @Override public Pf_func New(int id, byte[] name) {return new Pfunc_expr().Name_(name);} } diff --git a/400_xowa/src/gplx/xowa/xtns/pfuncs/exprs/Pfunc_expr_ops.java b/400_xowa/src/gplx/xowa/xtns/pfuncs/exprs/Pfunc_expr_ops.java index 042243e09..409225a8f 100644 --- a/400_xowa/src/gplx/xowa/xtns/pfuncs/exprs/Pfunc_expr_ops.java +++ b/400_xowa/src/gplx/xowa/xtns/pfuncs/exprs/Pfunc_expr_ops.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.xtns.pfuncs.exprs; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.pfuncs.*; -import gplx.xowa.langs.*; +import gplx.xowa.langs.*; import gplx.xowa.langs.msgs.*; import gplx.xowa.parsers.*; interface Expr_tkn { int Tid(); @@ -37,7 +37,7 @@ class Ws_tkn implements Expr_tkn { public int Tid() {return Expr_tkn_.Tid_space;} public byte[] Val_ary() {return val_ary;} private byte[] val_ary; public String Val_str() {return val_str;} private String val_str; - public Ws_tkn(byte b) {this.val_ary = new byte[] {b}; this.val_str = Char_.To_str(Char_.XbyInt(b));} + public Ws_tkn(byte b) {this.val_ary = new byte[] {b}; this.val_str = Char_.To_str(Char_.By_int(b));} } class Paren_bgn_tkn implements Expr_tkn, Func_tkn { public int Tid() {return Expr_tkn_.Tid_paren_lhs;} @@ -48,13 +48,13 @@ class Paren_bgn_tkn implements Expr_tkn, Func_tkn { public int Precedence() {return -1;} public Func_tkn GetAlt() {return this;} public boolean Calc(Xop_ctx ctx, Pfunc_expr_shunter shunter, Val_stack val_stack) {throw Err_.new_unimplemented();} - public static Paren_bgn_tkn _ = new Paren_bgn_tkn(); Paren_bgn_tkn() {} + public static Paren_bgn_tkn Instance = new Paren_bgn_tkn(); Paren_bgn_tkn() {} } class Paren_end_tkn implements Expr_tkn { public int Tid() {return Expr_tkn_.Tid_paren_rhs;} public byte[] Val_ary() {return val_ary;} private byte[] val_ary = Bry_.new_u8(val_str); public String Val_str() {return val_str;} static final String val_str = ")"; - public static Paren_end_tkn _ = new Paren_end_tkn(); Paren_end_tkn() {} + public static Paren_end_tkn Instance = new Paren_end_tkn(); Paren_end_tkn() {} } class Num_tkn implements Expr_tkn { public int Tid() {return Expr_tkn_.Tid_number;} @@ -131,27 +131,27 @@ class Func_tkn_plus extends Func_tkn_base { public Func_tkn_plus(String v) {this.Ctor(v);} @Override public int ArgCount() {return 2;} @Override public int Precedence() {return 6;} - @Override public Func_tkn GetAlt() {return Func_tkn_plus_positive._;} + @Override public Func_tkn GetAlt() {return Func_tkn_plus_positive.Instance;} @Override public boolean Calc_hook(Xop_ctx ctx, Pfunc_expr_shunter shunter, Val_stack val_stack) { Decimal_adp rhs = val_stack.Pop(); Decimal_adp lhs = val_stack.Pop(); val_stack.Push(lhs.Add(rhs)); return true; } - public static final Func_tkn_plus _ = new Func_tkn_plus(); Func_tkn_plus() {} + public static final Func_tkn_plus Instance = new Func_tkn_plus(); Func_tkn_plus() {} } class Func_tkn_plus_positive extends Func_tkn_base { Func_tkn_plus_positive(String v) {this.Ctor(v);} @Override public int ArgCount() {return 1;} @Override public int Precedence() {return 10;} @Override public boolean Calc_hook(Xop_ctx ctx, Pfunc_expr_shunter shunter, Val_stack val_stack) {return true;}// effectively a noop - public static final Func_tkn_plus_positive _ = new Func_tkn_plus_positive("+"); + public static final Func_tkn_plus_positive Instance = new Func_tkn_plus_positive("+"); } class Func_tkn_minus extends Func_tkn_base { public Func_tkn_minus(String v) {this.Ctor(v);} @Override public int ArgCount() {return 2;} @Override public int Precedence() {return 6;} - @Override public Func_tkn GetAlt() {return Func_tkn_minus_negative._;} + @Override public Func_tkn GetAlt() {return Func_tkn_minus_negative.Instance;} @Override public boolean Calc_hook(Xop_ctx ctx, Pfunc_expr_shunter shunter, Val_stack val_stack) { Decimal_adp rhs = val_stack.Pop(); Decimal_adp lhs = val_stack.Pop(); @@ -168,7 +168,7 @@ class Func_tkn_minus_negative extends Func_tkn_base { val_stack.Push(val.Multiply(Decimal_adp_.Neg1)); return true; } - public static final Func_tkn_minus_negative _ = new Func_tkn_minus_negative("-"); + public static final Func_tkn_minus_negative Instance = new Func_tkn_minus_negative("-"); } class Func_tkn_divide extends Func_tkn_base { public Func_tkn_divide(String v) {this.Ctor(v);} @@ -222,7 +222,7 @@ class Func_tkn_e_op extends Func_tkn_base { public Func_tkn_e_op(String v) {this.Ctor(v);} @Override public int ArgCount() {return 2;} @Override public int Precedence() {return 9;} // NOTE: needs to be < than - sign - @Override public Func_tkn GetAlt() {return Func_tkn_e_const._;} + @Override public Func_tkn GetAlt() {return Func_tkn_e_const.Instance;} @Override public boolean Calc_hook(Xop_ctx ctx, Pfunc_expr_shunter shunter, Val_stack val_stack) { Decimal_adp rhs = val_stack.Pop(); Decimal_adp lhs = val_stack.Pop(); @@ -364,7 +364,7 @@ class Func_tkn_e_const extends Func_tkn_base { val_stack.Push(Decimal_adp_.Const_e); return true; } - public static final Func_tkn_e_const _ = new Func_tkn_e_const("e"); + public static final Func_tkn_e_const Instance = new Func_tkn_e_const("e"); } class Func_tkn_pi extends Func_tkn_base { public Func_tkn_pi(String v) {this.Ctor(v);} diff --git a/400_xowa/src/gplx/xowa/xtns/pfuncs/exprs/Pfunc_expr_shunter.java b/400_xowa/src/gplx/xowa/xtns/pfuncs/exprs/Pfunc_expr_shunter.java index f5044907d..1633c29f1 100644 --- a/400_xowa/src/gplx/xowa/xtns/pfuncs/exprs/Pfunc_expr_shunter.java +++ b/400_xowa/src/gplx/xowa/xtns/pfuncs/exprs/Pfunc_expr_shunter.java @@ -17,7 +17,7 @@ along with this program. If not, see . */ package gplx.xowa.xtns.pfuncs.exprs; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.pfuncs.*; import gplx.core.btries.*; -import gplx.xowa.langs.*; +import gplx.xowa.langs.*; import gplx.xowa.langs.msgs.*; import gplx.xowa.parsers.*; public class Pfunc_expr_shunter { Btrie_fast_mgr trie = expression_(); @@ -140,7 +140,7 @@ public class Pfunc_expr_shunter { prc_stack.Pop(); prv_prc = prc_stack.GetLast(); } - if (prv_prc == Paren_bgn_tkn._) + if (prv_prc == Paren_bgn_tkn.Instance) prc_stack.Pop(); else return Err_set(ctx, Xol_msg_itm_.Id_pfunc_expr_unexpected_closing_bracket); @@ -164,8 +164,8 @@ public class Pfunc_expr_shunter { Trie_add(rv, new Ws_tkn(Byte_ascii.Space)); Trie_add(rv, new Ws_tkn(Byte_ascii.Tab)); Trie_add(rv, new Ws_tkn(Byte_ascii.Nl)); - Trie_add(rv, Paren_bgn_tkn._); - Trie_add(rv, Paren_end_tkn._); + Trie_add(rv, Paren_bgn_tkn.Instance); + Trie_add(rv, Paren_end_tkn.Instance); Trie_add(rv, new Func_tkn_plus("+")); Trie_add(rv, new Func_tkn_minus("-")); Trie_add(rv, new Func_tkn_minus(Char_.To_str((char)8722))); @@ -218,5 +218,5 @@ public class Pfunc_expr_shunter { return rv; } private static void Trie_add(Btrie_fast_mgr trie, Expr_tkn tkn) {trie.Add(tkn.Val_ary(), tkn);} - public static final Pfunc_expr_shunter _ = new Pfunc_expr_shunter(); Pfunc_expr_shunter() {} + public static final Pfunc_expr_shunter Instance = new Pfunc_expr_shunter(); Pfunc_expr_shunter() {} } diff --git a/400_xowa/src/gplx/xowa/xtns/pfuncs/ifs/Pfunc_if.java b/400_xowa/src/gplx/xowa/xtns/pfuncs/ifs/Pfunc_if.java index e95e3619e..fb7c2b034 100644 --- a/400_xowa/src/gplx/xowa/xtns/pfuncs/ifs/Pfunc_if.java +++ b/400_xowa/src/gplx/xowa/xtns/pfuncs/ifs/Pfunc_if.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.xtns.pfuncs.ifs; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.pfuncs.*; -import gplx.xowa.langs.*; +import gplx.xowa.langs.*; import gplx.xowa.langs.kwds.*; import gplx.xowa.parsers.*; import gplx.xowa.parsers.tmpls.*; public class Pfunc_if extends Pf_func_base { @Override public boolean Func_require_colon_arg() {return true;} diff --git a/400_xowa/src/gplx/xowa/xtns/pfuncs/ifs/Pfunc_ifeq.java b/400_xowa/src/gplx/xowa/xtns/pfuncs/ifs/Pfunc_ifeq.java index f18b1f454..8194d194d 100644 --- a/400_xowa/src/gplx/xowa/xtns/pfuncs/ifs/Pfunc_ifeq.java +++ b/400_xowa/src/gplx/xowa/xtns/pfuncs/ifs/Pfunc_ifeq.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.xtns.pfuncs.ifs; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.pfuncs.*; -import gplx.xowa.langs.*; +import gplx.xowa.langs.*; import gplx.xowa.langs.kwds.*; import gplx.xowa.parsers.*; import gplx.xowa.parsers.tmpls.*; public class Pfunc_ifeq extends Pf_func_base { @Override public boolean Func_require_colon_arg() {return true;} diff --git a/400_xowa/src/gplx/xowa/xtns/pfuncs/ifs/Pfunc_iferror.java b/400_xowa/src/gplx/xowa/xtns/pfuncs/ifs/Pfunc_iferror.java index 81ec86a65..bb1c0ab4e 100644 --- a/400_xowa/src/gplx/xowa/xtns/pfuncs/ifs/Pfunc_iferror.java +++ b/400_xowa/src/gplx/xowa/xtns/pfuncs/ifs/Pfunc_iferror.java @@ -17,7 +17,7 @@ along with this program. If not, see . */ package gplx.xowa.xtns.pfuncs.ifs; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.pfuncs.*; import gplx.core.primitives.*; import gplx.core.btries.*; -import gplx.xowa.langs.*; +import gplx.xowa.langs.*; import gplx.xowa.langs.kwds.*; import gplx.xowa.parsers.*; import gplx.xowa.parsers.tmpls.*; public class Pfunc_iferror extends Pf_func_base { @Override public boolean Func_require_colon_arg() {return true;} diff --git a/400_xowa/src/gplx/xowa/xtns/pfuncs/ifs/Pfunc_ifexist.java b/400_xowa/src/gplx/xowa/xtns/pfuncs/ifs/Pfunc_ifexist.java index 18e772af2..c4f0fa50b 100644 --- a/400_xowa/src/gplx/xowa/xtns/pfuncs/ifs/Pfunc_ifexist.java +++ b/400_xowa/src/gplx/xowa/xtns/pfuncs/ifs/Pfunc_ifexist.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.xtns.pfuncs.ifs; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.pfuncs.*; -import gplx.xowa.langs.*; +import gplx.xowa.langs.*; import gplx.xowa.langs.kwds.*; import gplx.xowa.parsers.*; import gplx.xowa.parsers.tmpls.*; public class Pfunc_ifexist extends Pf_func_base { @Override public int Id() {return Xol_kwd_grp_.Id_xtn_iferror;} diff --git a/400_xowa/src/gplx/xowa/xtns/pfuncs/ifs/Pfunc_ifexist_mgr.java b/400_xowa/src/gplx/xowa/xtns/pfuncs/ifs/Pfunc_ifexist_mgr.java index 2a88b5d07..3a7b93aa7 100644 --- a/400_xowa/src/gplx/xowa/xtns/pfuncs/ifs/Pfunc_ifexist_mgr.java +++ b/400_xowa/src/gplx/xowa/xtns/pfuncs/ifs/Pfunc_ifexist_mgr.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.xtns.pfuncs.ifs; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.pfuncs.*; -import gplx.xowa.wms.apis.*; import gplx.xowa.wikis.data.tbls.*; -import gplx.xowa.nss.*; +import gplx.xowa.bldrs.wms.apis.*; import gplx.xowa.wikis.data.tbls.*; +import gplx.xowa.wikis.nss.*; public class Pfunc_ifexist_mgr { private Xowd_page_itm db_page = Xowd_page_itm.new_tmp(); private Hash_adp regy = Hash_adp_bry.cs(); @@ -58,7 +58,7 @@ public class Pfunc_ifexist_mgr { Xowe_wiki commons_wiki = wiki.Appe().Wiki_mgr().Wiki_commons(); boolean env_is_testing = Env_.Mode_testing(); if ( commons_wiki != null // null check - && ( commons_wiki.Init_assert().Db_mgr().Tid() == gplx.xowa.dbs.Xodb_mgr_sql.Tid_sql // make sure tid=sql; tid=txt automatically created for online images; DATE:2014-09-21 + && ( commons_wiki.Init_assert().Db_mgr().Tid() == gplx.xowa.wikis.dbs.Xodb_mgr_sql.Tid_sql // make sure tid=sql; tid=txt automatically created for online images; DATE:2014-09-21 || env_is_testing ) ) { diff --git a/400_xowa/src/gplx/xowa/xtns/pfuncs/ifs/Pfunc_ifexist_tst.java b/400_xowa/src/gplx/xowa/xtns/pfuncs/ifs/Pfunc_ifexist_tst.java index 726313319..4e5f32f05 100644 --- a/400_xowa/src/gplx/xowa/xtns/pfuncs/ifs/Pfunc_ifexist_tst.java +++ b/400_xowa/src/gplx/xowa/xtns/pfuncs/ifs/Pfunc_ifexist_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.xtns.pfuncs.ifs; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.pfuncs.*; -import org.junit.*; import gplx.xowa.tdbs.metas.*; +import org.junit.*; import gplx.xowa.wikis.tdbs.metas.*; public class Pfunc_ifexist_tst { private Xop_fxt fxt = new Xop_fxt(); @Before public void init() {fxt.Reset();} diff --git a/400_xowa/src/gplx/xowa/xtns/pfuncs/ifs/Pfunc_ifexpr.java b/400_xowa/src/gplx/xowa/xtns/pfuncs/ifs/Pfunc_ifexpr.java index 0ad602bb1..0a6bebac5 100644 --- a/400_xowa/src/gplx/xowa/xtns/pfuncs/ifs/Pfunc_ifexpr.java +++ b/400_xowa/src/gplx/xowa/xtns/pfuncs/ifs/Pfunc_ifexpr.java @@ -17,7 +17,7 @@ along with this program. If not, see . */ package gplx.xowa.xtns.pfuncs.ifs; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.pfuncs.*; import gplx.xowa.xtns.pfuncs.exprs.*; -import gplx.xowa.langs.*; +import gplx.xowa.langs.*; import gplx.xowa.langs.kwds.*; import gplx.xowa.parsers.*; import gplx.xowa.parsers.tmpls.*; public class Pfunc_ifexpr extends Pf_func_base { @Override public boolean Func_require_colon_arg() {return true;} @@ -38,7 +38,7 @@ public class Pfunc_ifexpr extends Pf_func_base { bb.Add(Pf_func_.Eval_arg_or_empty(ctx, src, caller, self, self_args_len, 0)); } } - Pfunc_expr_shunter shunter = Pfunc_expr_shunter._; + Pfunc_expr_shunter shunter = Pfunc_expr_shunter.Instance; @Override public int Id() {return Xol_kwd_grp_.Id_xtn_ifexpr;} @Override public Pf_func New(int id, byte[] name) {return new Pfunc_ifexpr().Name_(name);} } diff --git a/400_xowa/src/gplx/xowa/xtns/pfuncs/ifs/Pfunc_switch.java b/400_xowa/src/gplx/xowa/xtns/pfuncs/ifs/Pfunc_switch.java index 8e6e53143..c81df3808 100644 --- a/400_xowa/src/gplx/xowa/xtns/pfuncs/ifs/Pfunc_switch.java +++ b/400_xowa/src/gplx/xowa/xtns/pfuncs/ifs/Pfunc_switch.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.xtns.pfuncs.ifs; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.pfuncs.*; -import gplx.xowa.langs.*; +import gplx.xowa.langs.*; import gplx.xowa.langs.kwds.*; import gplx.xowa.parsers.*; import gplx.xowa.parsers.tmpls.*; public class Pfunc_switch extends Pf_func_base { @Override public int Id() {return Xol_kwd_grp_.Id_xtn_switch;} @@ -83,7 +83,7 @@ public class Pfunc_switch extends Pf_func_base { return Bry_.Trim(src, itm.Dat_bgn(), itm.Dat_end()); else { itm.Tmpl_evaluate(ctx, src, caller, tmp); - return tmp.Xto_bry_and_clear_and_trim(); + return tmp.To_bry_and_clear_and_trim(); } } public static final byte[] Dflt_keyword = Bry_.new_a7("#default"); // NOTE: technically should pull from messages, but would need to cache Dflt_keyword on wiki level; checked all Messages files, and no one overrides it; DATE:2014-05-29 diff --git a/400_xowa/src/gplx/xowa/xtns/pfuncs/ifs/Pfunc_switch_tst.java b/400_xowa/src/gplx/xowa/xtns/pfuncs/ifs/Pfunc_switch_tst.java index 98c589dec..c71d79718 100644 --- a/400_xowa/src/gplx/xowa/xtns/pfuncs/ifs/Pfunc_switch_tst.java +++ b/400_xowa/src/gplx/xowa/xtns/pfuncs/ifs/Pfunc_switch_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.xtns.pfuncs.ifs; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.pfuncs.*; -import org.junit.*; import gplx.xowa.langs.*; +import org.junit.*; import gplx.xowa.langs.*; import gplx.xowa.langs.kwds.*; public class Pfunc_switch_tst { @Before public void init() {fxt.Reset();} private Xop_fxt fxt = new Xop_fxt(); @Test public void Basic_a() {fxt.Test_parse_tmpl_str_test("{{#switch:a|a=1|b=2|3}}" , "{{test}}" , "1");} diff --git a/400_xowa/src/gplx/xowa/xtns/pfuncs/ifs/Xop_xowa_dbg.java b/400_xowa/src/gplx/xowa/xtns/pfuncs/ifs/Xop_xowa_dbg.java index 11ea20007..ee77c5f0a 100644 --- a/400_xowa/src/gplx/xowa/xtns/pfuncs/ifs/Xop_xowa_dbg.java +++ b/400_xowa/src/gplx/xowa/xtns/pfuncs/ifs/Xop_xowa_dbg.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.xtns.pfuncs.ifs; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.pfuncs.*; -import gplx.xowa.langs.*; +import gplx.xowa.langs.*; import gplx.xowa.langs.kwds.*; import gplx.xowa.parsers.*; import gplx.xowa.parsers.tmpls.*; public class Xop_xowa_dbg extends Pf_func_base { @Override public void Func_evaluate(Xop_ctx ctx, byte[] src, Xot_invk caller, Xot_invk self, Bry_bfr bfr) { diff --git a/400_xowa/src/gplx/xowa/xtns/pfuncs/langs/Pfunc_gender.java b/400_xowa/src/gplx/xowa/xtns/pfuncs/langs/Pfunc_gender.java index e69b10f12..f37203e9c 100644 --- a/400_xowa/src/gplx/xowa/xtns/pfuncs/langs/Pfunc_gender.java +++ b/400_xowa/src/gplx/xowa/xtns/pfuncs/langs/Pfunc_gender.java @@ -17,7 +17,7 @@ along with this program. If not, see . */ package gplx.xowa.xtns.pfuncs.langs; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.pfuncs.*; import gplx.core.primitives.*; import gplx.xowa.users.*; -import gplx.xowa.langs.*; import gplx.xowa.langs.genders.*; +import gplx.xowa.langs.*; import gplx.xowa.langs.kwds.*; import gplx.xowa.langs.genders.*; import gplx.xowa.parsers.*; import gplx.xowa.parsers.tmpls.*; public class Pfunc_gender extends Pf_func_base { @Override public int Id() {return Xol_kwd_grp_.Id_i18n_gender;} @@ -41,7 +41,7 @@ public class Pfunc_gender extends Pf_func_base { } if (self_args_len == 1) {bfr.Add(when_m); return;} // per MW: EX: {{gender:name|a}} -> "a" int gender = Get_gender(ctx.App().User(), user_name); - Xol_lang lang = ctx.Cur_page().Lang(); + Xol_lang_itm lang = ctx.Cur_page().Lang(); bfr.Add(lang.Gender().Gender_eval(gender, when_m, when_f, when_u)); } private static int Get_gender(Xou_user user, byte[] user_name) { diff --git a/400_xowa/src/gplx/xowa/xtns/pfuncs/langs/Pfunc_grammar.java b/400_xowa/src/gplx/xowa/xtns/pfuncs/langs/Pfunc_grammar.java index f1da858f8..40bc77392 100644 --- a/400_xowa/src/gplx/xowa/xtns/pfuncs/langs/Pfunc_grammar.java +++ b/400_xowa/src/gplx/xowa/xtns/pfuncs/langs/Pfunc_grammar.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.xtns.pfuncs.langs; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.pfuncs.*; -import gplx.xowa.langs.*; +import gplx.xowa.langs.*; import gplx.xowa.langs.kwds.*; import gplx.xowa.parsers.*; import gplx.xowa.parsers.tmpls.*; public class Pfunc_grammar extends Pf_func_base { @Override public int Id() {return Xol_kwd_grp_.Id_i18n_grammar;} @@ -25,7 +25,7 @@ public class Pfunc_grammar extends Pf_func_base { @Override public void Func_evaluate(Xop_ctx ctx, byte[] src, Xot_invk caller, Xot_invk self, Bry_bfr bfr) { byte[] argx = Eval_argx(ctx, src, caller, self); byte[] word = Pf_func_.Eval_arg_or_empty(ctx, src, caller, self, self.Args_len(), 0); - Xol_lang lang = ctx.Cur_page().Lang(); + Xol_lang_itm lang = ctx.Cur_page().Lang(); boolean pass = false; try {pass = lang.Grammar().Grammar_eval(bfr, lang, word, argx);} catch (Exception e) {Err_.Noop(e);} diff --git a/400_xowa/src/gplx/xowa/xtns/pfuncs/langs/Pfunc_grammar_tst.java b/400_xowa/src/gplx/xowa/xtns/pfuncs/langs/Pfunc_grammar_tst.java index fca7079cd..3e9efc0e1 100644 --- a/400_xowa/src/gplx/xowa/xtns/pfuncs/langs/Pfunc_grammar_tst.java +++ b/400_xowa/src/gplx/xowa/xtns/pfuncs/langs/Pfunc_grammar_tst.java @@ -24,7 +24,7 @@ public class Pfunc_grammar_tst { fxt.Test_parse_tmpl_str_test("{{grammar:a|b}}" , "{{test}}" , "[[:Template:grammar]]"); } @Test public void Finnish() { - fxt.Lang_by_id_(Xol_lang_itm_.Id_fi); + fxt.Lang_by_id_(Xol_lang_stub_.Id_fi); fxt.Reset().Test_parse_tmpl_str_test("{{grammar:elative|Wikiuutiset}}" , "{{test}}" , "Wikiuutisista"); fxt.Reset().Test_parse_tmpl_str_test("{{grammar:talo}}" , "{{test}}" , ""); fxt.Reset().Test_parse_tmpl_str_test("{{grammar:genitive|talo}}" , "{{test}}" , "talon"); @@ -39,7 +39,7 @@ public class Pfunc_grammar_tst { fxt.Reset().Test_parse_tmpl_str_test("{{grammar:illative|sängy}}" , "{{test}}" , "sängyyn"); } @Test public void Russian() { - fxt.Lang_by_id_(Xol_lang_itm_.Id_ru); + fxt.Lang_by_id_(Xol_lang_stub_.Id_ru); fxt.Reset().Test_parse_tmpl_str_test("{{grammar:unknown}}" , "{{test}}" , ""); fxt.Reset().Test_parse_tmpl_str_test("{{grammar:genitive|aвики}}" , "{{test}}" , "aвики"); fxt.Reset().Test_parse_tmpl_str_test("{{grammar:genitive|aВики}}" , "{{test}}" , "aВики"); diff --git a/400_xowa/src/gplx/xowa/xtns/pfuncs/langs/Pfunc_i18n_tst.java b/400_xowa/src/gplx/xowa/xtns/pfuncs/langs/Pfunc_i18n_tst.java index 86bf407a3..3ddb87259 100644 --- a/400_xowa/src/gplx/xowa/xtns/pfuncs/langs/Pfunc_i18n_tst.java +++ b/400_xowa/src/gplx/xowa/xtns/pfuncs/langs/Pfunc_i18n_tst.java @@ -30,21 +30,21 @@ class Pfunc_i18n_fxt { if (app == null) app = Xoa_app_fxt.app_(); app.Lang_mgr().Clear(); // else lang values retained from last run app.Free_mem(false); // else tmpl_result_cache will get reused from last run for {{test}} - lang = app.Lang_mgr().Get_by_key_or_new(Bry_.new_a7(lang_key)); + lang = app.Lang_mgr().Get_by_or_new(Bry_.new_a7(lang_key)); wiki = Xoa_app_fxt.wiki_(app, lang_key + ".wikipedia.org", lang); fxt = new Xop_fxt(app, wiki); return this; - } private Xoae_app app; private Xop_fxt fxt; Xol_lang lang; Xowe_wiki wiki; + } private Xoae_app app; private Xop_fxt fxt; Xol_lang_itm lang; Xowe_wiki wiki; public Pfunc_i18n_fxt Reg_func(String name, boolean case_match, String word) { Io_url url = Io_url_.mem_fil_("mem/xowa/bin/any/xowa/cfg/lang/core/" + lang_key + ".gfs"); String func = "keywords.load_text('" + name + "|" + (case_match ? "1" : "0") + "|" + name + "~" + word + "~');"; - Io_mgr.I.SaveFilStr(url, func); + Io_mgr.Instance.SaveFilStr(url, func); return this; } public Pfunc_i18n_fxt Reg_msg(String key, String val) { Io_url url = Io_url_.mem_fil_("mem/xowa/bin/any/xowa/cfg/lang/core/" + lang_key + ".gfs"); String func = "messages.load_text('" + key + "|" + val + "');"; - Io_mgr.I.SaveFilStr(url, func); + Io_mgr.Instance.SaveFilStr(url, func); return this; } public Pfunc_i18n_fxt Load() { diff --git a/400_xowa/src/gplx/xowa/xtns/pfuncs/langs/Pfunc_int.java b/400_xowa/src/gplx/xowa/xtns/pfuncs/langs/Pfunc_int.java index 9f508911c..6757bf7a9 100644 --- a/400_xowa/src/gplx/xowa/xtns/pfuncs/langs/Pfunc_int.java +++ b/400_xowa/src/gplx/xowa/xtns/pfuncs/langs/Pfunc_int.java @@ -17,7 +17,7 @@ along with this program. If not, see . */ package gplx.xowa.xtns.pfuncs.langs; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.pfuncs.*; import gplx.langs.phps.*; -import gplx.xowa.langs.*; import gplx.xowa.langs.msgs.*; +import gplx.xowa.langs.*; import gplx.xowa.langs.kwds.*; import gplx.xowa.langs.msgs.*; import gplx.xowa.parsers.*; import gplx.xowa.parsers.tmpls.*; public class Pfunc_int extends Pf_func_base { @Override public int Id() {return Xol_kwd_grp_.Id_i18n_int;} @@ -25,7 +25,7 @@ public class Pfunc_int extends Pf_func_base { @Override public void Func_evaluate(Xop_ctx ctx, byte[] src, Xot_invk caller, Xot_invk self, Bry_bfr bfr) { byte[] msg_key = Eval_argx(ctx, src, caller, self); Xowe_wiki wiki = ctx.Wiki(); - Xol_lang page_lang = ctx.Cur_page().Lang(); + Xol_lang_itm page_lang = ctx.Cur_page().Lang(); byte[][] args_ary = Bry_.Ary_empty; int args_len = self.Args_len(); if (args_len > 0) { diff --git a/400_xowa/src/gplx/xowa/xtns/pfuncs/langs/Pfunc_int_tst.java b/400_xowa/src/gplx/xowa/xtns/pfuncs/langs/Pfunc_int_tst.java index 86bdec422..23a1aff29 100644 --- a/400_xowa/src/gplx/xowa/xtns/pfuncs/langs/Pfunc_int_tst.java +++ b/400_xowa/src/gplx/xowa/xtns/pfuncs/langs/Pfunc_int_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.xtns.pfuncs.langs; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.pfuncs.*; -import org.junit.*; import gplx.xowa.langs.*; +import org.junit.*; import gplx.xowa.langs.*; import gplx.xowa.langs.msgs.*; public class Pfunc_int_tst { @Before public void init() {fxt.Reset();} private Pf_msg_mgr_fxt fxt = new Pf_msg_mgr_fxt(); @Test public void Basic() {fxt.Test_parse_en("{{int:january}}" , "January");} @@ -35,7 +35,7 @@ public class Pfunc_int_tst { fxt.Test_parse_en("{{int:january/en}}", "January"); } @Test public void Lang_specified_by_page() { - fxt.Test_parse_lang("fr", "{{int:Lang}}", "fr"); // NOTE: "Lang" msg is added by Xol_lang; message_mgr.Itm_by_key_or_new(Bry_.new_a7("Lang")).Atrs_set(key_bry, false, false); + fxt.Test_parse_lang("fr", "{{int:Lang}}", "fr"); // NOTE: "Lang" msg is added by Xol_lang_itm; message_mgr.Itm_by_key_or_new(Bry_.new_a7("Lang")).Atrs_set(key_bry, false, false); } @Test public void Lang_missing_msg_return_en() { // PURPOSE: if key does not exist in non-english language, use English; EX: la.w:Fasciculus:HannibalFrescoCapitolinec1510.jpg; DATE:2013-09-10 fxt.Init_msg_gfs("en_only_key", "en_only_val", false, false); @@ -81,7 +81,7 @@ public class Pfunc_int_tst { } class Pf_msg_mgr_fxt { private Xop_fxt fxt; - private Xol_lang en_lang; + private Xol_lang_itm en_lang; private Xowe_wiki en_wiki; public void Reset() { fxt = new Xop_fxt(); // new fxt, else transclude tests will fail @@ -89,7 +89,7 @@ class Pf_msg_mgr_fxt { en_lang = en_wiki.Lang(); } public void Init_msg_gfs(String key, String val, boolean fmt, boolean tmpl) {Init_msg_gfs(en_lang, key, val, fmt, tmpl);} - public void Init_msg_gfs(Xol_lang lang, String key, String val, boolean fmt, boolean tmpl) { + public void Init_msg_gfs(Xol_lang_itm lang, String key, String val, boolean fmt, boolean tmpl) { Xol_msg_itm msg_itm = lang.Msg_mgr().Itm_by_key_or_new(Bry_.new_u8(key)); msg_itm.Atrs_set(Bry_.new_u8(val), fmt, tmpl); } @@ -106,7 +106,7 @@ class Pf_msg_mgr_fxt { alt_fxt.Test_parse_tmpl_str_test(raw, "{{test}}" , expd); } public void Test_parse_lang(String other_lang_id, String raw, String expd) { - Xol_lang other_lang = fxt.App().Lang_mgr().Get_by_key_or_new(Bry_.new_a7(other_lang_id)); + Xol_lang_itm other_lang = fxt.App().Lang_mgr().Get_by_or_new(Bry_.new_a7(other_lang_id)); other_lang.Init_by_load(); fxt.Page().Lang_(other_lang); fxt.Test_parse_tmpl_str_test(raw, "{{test}}", expd); diff --git a/400_xowa/src/gplx/xowa/xtns/pfuncs/langs/Pfunc_language.java b/400_xowa/src/gplx/xowa/xtns/pfuncs/langs/Pfunc_language.java index f96285e71..568b24391 100644 --- a/400_xowa/src/gplx/xowa/xtns/pfuncs/langs/Pfunc_language.java +++ b/400_xowa/src/gplx/xowa/xtns/pfuncs/langs/Pfunc_language.java @@ -16,20 +16,20 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package gplx.xowa.xtns.pfuncs.langs; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.pfuncs.*; -import gplx.xowa.langs.*; +import gplx.xowa.langs.*; import gplx.xowa.langs.kwds.*; import gplx.xowa.parsers.*; import gplx.xowa.parsers.tmpls.*; public class Pfunc_language extends Pf_func_base { @Override public int Id() {return Xol_kwd_grp_.Id_i18n_language;} @Override public Pf_func New(int id, byte[] name) {return new Pfunc_language().Name_(name);} @Override public void Func_evaluate(Xop_ctx ctx, byte[] src, Xot_invk caller, Xot_invk self, Bry_bfr bfr) { byte[] argx = Eval_argx(ctx, src, caller, self); - Hash_adp_bry regy = Xol_lang_itm_.Regy(); + Hash_adp_bry regy = Xol_lang_stub_.Regy(); if (argx.length == 0) return; // {{#language:}} should return ""; note that byte[0] will fail in Match_exact Object o = regy.Get_by_bry(argx); if (o == null) bfr.Add(argx); else { - Xol_lang_itm lang_itm = (Xol_lang_itm)o; + Xol_lang_stub lang_itm = (Xol_lang_stub)o; bfr.Add(lang_itm.Canonical_name()); } } diff --git a/400_xowa/src/gplx/xowa/xtns/pfuncs/langs/Pfunc_plural.java b/400_xowa/src/gplx/xowa/xtns/pfuncs/langs/Pfunc_plural.java index d2a586908..50e4153a9 100644 --- a/400_xowa/src/gplx/xowa/xtns/pfuncs/langs/Pfunc_plural.java +++ b/400_xowa/src/gplx/xowa/xtns/pfuncs/langs/Pfunc_plural.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.xtns.pfuncs.langs; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.pfuncs.*; -import gplx.xowa.langs.*; +import gplx.xowa.langs.*; import gplx.xowa.langs.kwds.*; import gplx.xowa.parsers.*; import gplx.xowa.parsers.tmpls.*; public class Pfunc_plural extends Pf_func_base { @Override public boolean Func_require_colon_arg() {return true;} diff --git a/400_xowa/src/gplx/xowa/xtns/pfuncs/numbers/Pf_formatnum.java b/400_xowa/src/gplx/xowa/xtns/pfuncs/numbers/Pf_formatnum.java index cb5bf2171..64d895b2b 100644 --- a/400_xowa/src/gplx/xowa/xtns/pfuncs/numbers/Pf_formatnum.java +++ b/400_xowa/src/gplx/xowa/xtns/pfuncs/numbers/Pf_formatnum.java @@ -17,20 +17,20 @@ along with this program. If not, see . */ package gplx.xowa.xtns.pfuncs.numbers; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.pfuncs.*; import gplx.core.btries.*; import gplx.core.intls.*; -import gplx.xowa.langs.*; import gplx.xowa.langs.numbers.*; +import gplx.xowa.langs.*; import gplx.xowa.langs.kwds.*; import gplx.xowa.langs.numbers.*; import gplx.xowa.parsers.*; import gplx.xowa.parsers.tmpls.*; public class Pf_formatnum extends Pf_func_base { @Override public int Id() {return Xol_kwd_grp_.Id_str_formatnum;} @Override public Pf_func New(int id, byte[] name) {return new Pf_formatnum().Name_(name);} @Override public boolean Func_require_colon_arg() {return true;} @Override public void Func_evaluate(Xop_ctx ctx, byte[] src, Xot_invk caller, Xot_invk self, Bry_bfr bfr) { - Xol_lang lang = ctx.Wiki().Lang(); + Xol_lang_itm lang = ctx.Wiki().Lang(); int self_args_len = self.Args_len(); byte[] argx = Eval_argx(ctx, src, caller, self); byte[] arg1 = Pf_func_.Eval_arg_or_empty(ctx, src, caller, self, self_args_len, 0); bfr.Add(Format_num(lang, argx, arg1)); } - public static byte[] Format_num(Xol_lang lang, byte[] num, byte[] arg1) { + public static byte[] Format_num(Xol_lang_itm lang, byte[] num, byte[] arg1) { Btrie_slim_mgr trie_raw = lang.Kwd_mgr().Trie_raw(); Btrie_slim_mgr trie_nosep = lang.Kwd_mgr().Trie_nosep(); int arg1_len = arg1.length; diff --git a/400_xowa/src/gplx/xowa/xtns/pfuncs/numbers/Pf_formatnum_es_tst.java b/400_xowa/src/gplx/xowa/xtns/pfuncs/numbers/Pf_formatnum_es_tst.java index 7815e6453..86d34b959 100644 --- a/400_xowa/src/gplx/xowa/xtns/pfuncs/numbers/Pf_formatnum_es_tst.java +++ b/400_xowa/src/gplx/xowa/xtns/pfuncs/numbers/Pf_formatnum_es_tst.java @@ -22,7 +22,7 @@ public class Pf_formatnum_es_tst { private Xop_fxt fxt; @Before public void init() { Xoae_app app = Xoa_app_fxt.app_(); - Xol_lang lang = new Xol_lang(app.Lang_mgr(), Bry_.new_a7("es")).Init_by_load_assert(); + Xol_lang_itm lang = new Xol_lang_itm(app.Lang_mgr(), Bry_.new_a7("es")).Init_by_load_assert(); Xowe_wiki wiki = Xoa_app_fxt.wiki_(app, "es.wikipedia.org", lang); fxt = new Xop_fxt(app, wiki); } diff --git a/400_xowa/src/gplx/xowa/xtns/pfuncs/numbers/Pf_formatnum_fa_tst.java b/400_xowa/src/gplx/xowa/xtns/pfuncs/numbers/Pf_formatnum_fa_tst.java index e679ed9e0..e36f20a94 100644 --- a/400_xowa/src/gplx/xowa/xtns/pfuncs/numbers/Pf_formatnum_fa_tst.java +++ b/400_xowa/src/gplx/xowa/xtns/pfuncs/numbers/Pf_formatnum_fa_tst.java @@ -22,7 +22,7 @@ public class Pf_formatnum_fa_tst { private Xop_fxt fxt; @Before public void init() { Xoae_app app = Xoa_app_fxt.app_(); - Xol_lang lang = new Xol_lang(app.Lang_mgr(), Bry_.new_a7("fa")).Init_by_load_assert(); + Xol_lang_itm lang = new Xol_lang_itm(app.Lang_mgr(), Bry_.new_a7("fa")).Init_by_load_assert(); app.Gfs_mgr().Run_str_for(lang, Persian_numbers_gfs); Xowe_wiki wiki = Xoa_app_fxt.wiki_(app, "fa.wikipedia.org", lang); fxt = new Xop_fxt(app, wiki); diff --git a/400_xowa/src/gplx/xowa/xtns/pfuncs/pages/Pfunc_defaultsort.java b/400_xowa/src/gplx/xowa/xtns/pfuncs/pages/Pfunc_defaultsort.java index 7cb7e401e..fc60d1d95 100644 --- a/400_xowa/src/gplx/xowa/xtns/pfuncs/pages/Pfunc_defaultsort.java +++ b/400_xowa/src/gplx/xowa/xtns/pfuncs/pages/Pfunc_defaultsort.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.xtns.pfuncs.pages; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.pfuncs.*; -import gplx.xowa.langs.*; +import gplx.xowa.langs.*; import gplx.xowa.langs.kwds.*; import gplx.xowa.parsers.*; import gplx.xowa.parsers.tmpls.*; public class Pfunc_defaultsort extends Pf_func_base { @Override public void Func_evaluate(Xop_ctx ctx, byte[] src, Xot_invk caller, Xot_invk self, Bry_bfr bb) {} @Override public int Id() {return Xol_kwd_grp_.Id_page_defaultsort;} @Override public Pf_func New(int id, byte[] name) {return new Pfunc_defaultsort().Name_(name);} - public static final Pfunc_defaultsort _ = new Pfunc_defaultsort(); Pfunc_defaultsort() {} + public static final Pfunc_defaultsort Instance = new Pfunc_defaultsort(); Pfunc_defaultsort() {} } diff --git a/400_xowa/src/gplx/xowa/xtns/pfuncs/pages/Pfunc_displaytitle.java b/400_xowa/src/gplx/xowa/xtns/pfuncs/pages/Pfunc_displaytitle.java index 747b35075..2395278c4 100644 --- a/400_xowa/src/gplx/xowa/xtns/pfuncs/pages/Pfunc_displaytitle.java +++ b/400_xowa/src/gplx/xowa/xtns/pfuncs/pages/Pfunc_displaytitle.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.xtns.pfuncs.pages; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.pfuncs.*; -import gplx.xowa.html.*; -import gplx.xowa.langs.*; import gplx.xowa.langs.cases.*; +import gplx.xowa.htmls.*; +import gplx.xowa.langs.kwds.*; import gplx.xowa.langs.cases.*; import gplx.xowa.parsers.*; import gplx.xowa.parsers.tmpls.*; public class Pfunc_displaytitle extends Pf_func_base { @Override public int Id() {return Xol_kwd_grp_.Id_page_displaytitle;} @@ -31,11 +31,11 @@ public class Pfunc_displaytitle extends Pf_func_base { boolean restrict = wiki.Cfg_parser().Display_title_restrict(); Xoh_wtr_ctx hctx = restrict ? Xoh_wtr_ctx.Display_title : Xoh_wtr_ctx.Basic; // restrict removes certain HTML (display:none) wiki.Html_mgr().Html_wtr().Write_tkn(tmp_bfr, display_ttl_ctx, hctx, display_ttl_root.Data_mid(), display_ttl_root, 0, display_ttl_root); - byte[] val_html = tmp_bfr.Xto_bry_and_clear(); + byte[] val_html = tmp_bfr.To_bry_and_clear(); if (restrict) { // restrict only allows displayTitles which have text similar to the pageTitle; PAGE:de.b:Kochbuch/_Druckversion; DATE:2014-08-18 Xoae_page page = ctx.Cur_page(); wiki.Html_mgr().Html_wtr().Write_tkn(tmp_bfr, display_ttl_ctx, Xoh_wtr_ctx.Alt, display_ttl_root.Data_mid(), display_ttl_root, 0, display_ttl_root); - byte[] val_html_lc = tmp_bfr.Xto_bry_and_clear(); + byte[] val_html_lc = tmp_bfr.To_bry_and_clear(); Xol_case_mgr case_mgr = wiki.Lang().Case_mgr(); val_html_lc = Standardize_displaytitle_text(case_mgr, val_html_lc); byte[] page_ttl_lc = Standardize_displaytitle_text(case_mgr, page.Ttl().Page_db()); @@ -49,5 +49,5 @@ public class Pfunc_displaytitle extends Pf_func_base { byte[] rv = case_mgr.Case_build_lower(val); // lower-case return Bry_.Replace(rv, Byte_ascii.Space, Byte_ascii.Underline); // force underline; PAGE:de.w:Mod_qos DATE:2014-11-06 } - public static final Pfunc_displaytitle _ = new Pfunc_displaytitle(); Pfunc_displaytitle() {} + public static final Pfunc_displaytitle Instance = new Pfunc_displaytitle(); Pfunc_displaytitle() {} } diff --git a/400_xowa/src/gplx/xowa/xtns/pfuncs/pages/Pfunc_noeditsection.java b/400_xowa/src/gplx/xowa/xtns/pfuncs/pages/Pfunc_noeditsection.java index cb3db8305..e072e4973 100644 --- a/400_xowa/src/gplx/xowa/xtns/pfuncs/pages/Pfunc_noeditsection.java +++ b/400_xowa/src/gplx/xowa/xtns/pfuncs/pages/Pfunc_noeditsection.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.xtns.pfuncs.pages; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.pfuncs.*; -import gplx.xowa.langs.*; +import gplx.xowa.langs.*; import gplx.xowa.langs.kwds.*; import gplx.xowa.parsers.*; import gplx.xowa.parsers.tmpls.*; public class Pfunc_noeditsection extends Pf_func_base { @Override public void Func_evaluate(Xop_ctx ctx, byte[] src, Xot_invk caller, Xot_invk self, Bry_bfr bb) {} @Override public int Id() {return Xol_kwd_grp_.Id_noeditsection;} @Override public Pf_func New(int id, byte[] name) {return new Pfunc_noeditsection().Name_(name);} - public static final Pfunc_noeditsection _ = new Pfunc_noeditsection(); Pfunc_noeditsection() {} + public static final Pfunc_noeditsection Instance = new Pfunc_noeditsection(); Pfunc_noeditsection() {} } diff --git a/400_xowa/src/gplx/xowa/xtns/pfuncs/pages/Pfunc_rev_props.java b/400_xowa/src/gplx/xowa/xtns/pfuncs/pages/Pfunc_rev_props.java index 2c4ae157a..052de9415 100644 --- a/400_xowa/src/gplx/xowa/xtns/pfuncs/pages/Pfunc_rev_props.java +++ b/400_xowa/src/gplx/xowa/xtns/pfuncs/pages/Pfunc_rev_props.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.xtns.pfuncs.pages; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.pfuncs.*; -import gplx.xowa.langs.*; -import gplx.xowa.pages.*; import gplx.xowa.parsers.*; import gplx.xowa.parsers.tmpls.*; +import gplx.xowa.langs.*; import gplx.xowa.langs.kwds.*; +import gplx.xowa.wikis.pages.*; import gplx.xowa.parsers.*; import gplx.xowa.parsers.tmpls.*; public class Pfunc_rev_props extends Pf_func_base { @Override public void Func_evaluate(Xop_ctx ctx, byte[] src, Xot_invk caller, Xot_invk self, Bry_bfr bfr) { byte[] argx = Eval_argx(ctx, src, caller, self); @@ -48,5 +48,5 @@ public class Pfunc_rev_props extends Pf_func_base { public Pfunc_rev_props(int id) {this.id = id;} @Override public int Id() {return id;} private int id; @Override public Pf_func New(int id, byte[] name) {return new Pfunc_rev_props(id).Name_(name);} - public static final Pfunc_rev_props _ = new Pfunc_rev_props(-1); + public static final Pfunc_rev_props Instance = new Pfunc_rev_props(-1); } diff --git a/400_xowa/src/gplx/xowa/xtns/pfuncs/strings/Pfunc_case.java b/400_xowa/src/gplx/xowa/xtns/pfuncs/strings/Pfunc_case.java index 71e59885c..c21424ea8 100644 --- a/400_xowa/src/gplx/xowa/xtns/pfuncs/strings/Pfunc_case.java +++ b/400_xowa/src/gplx/xowa/xtns/pfuncs/strings/Pfunc_case.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.xtns.pfuncs.strings; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.pfuncs.*; -import gplx.xowa.langs.*; +import gplx.xowa.langs.*; import gplx.xowa.langs.kwds.*; import gplx.xowa.parsers.*; import gplx.xowa.parsers.tmpls.*; public class Pfunc_case extends Pf_func_base { // EX: {{lc:A}} -> a private boolean first; private int case_type; @@ -27,8 +27,8 @@ public class Pfunc_case extends Pf_func_base { // EX: {{lc:A}} -> a @Override public void Func_evaluate(Xop_ctx ctx, byte[] src, Xot_invk caller, Xot_invk self, Bry_bfr trg) { byte[] val_dat_ary = Eval_argx(ctx, src, caller, self); if (val_dat_ary == Bry_.Empty) return; int val_dat_ary_len = val_dat_ary.length; if (val_dat_ary_len == 0) return; // nothing to uc / lc; just return - Xol_lang lang = ctx.Wiki().Lang(); - boolean upper = case_type == Xol_lang.Tid_upper; + Xol_lang_itm lang = ctx.Wiki().Lang(); + boolean upper = case_type == Xol_lang_itm.Tid_upper; if (first) { Bry_bfr tmp_bfr = ctx.App().Utl__bfr_mkr().Get_b512(); val_dat_ary = lang.Case_mgr().Case_build_1st(tmp_bfr, upper, val_dat_ary, 0, val_dat_ary_len); diff --git a/400_xowa/src/gplx/xowa/xtns/pfuncs/strings/Pfunc_tag.java b/400_xowa/src/gplx/xowa/xtns/pfuncs/strings/Pfunc_tag.java index de0c40d7d..6dd9fa254 100644 --- a/400_xowa/src/gplx/xowa/xtns/pfuncs/strings/Pfunc_tag.java +++ b/400_xowa/src/gplx/xowa/xtns/pfuncs/strings/Pfunc_tag.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.xtns.pfuncs.strings; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.pfuncs.*; -import gplx.xowa.html.*; -import gplx.xowa.langs.*; +import gplx.xowa.htmls.*; +import gplx.xowa.langs.*; import gplx.xowa.langs.kwds.*; import gplx.xowa.parsers.*; import gplx.xowa.parsers.xndes.*; import gplx.xowa.parsers.tmpls.*; public class Pfunc_tag extends Pf_func_base { @Override public int Id() {return Xol_kwd_grp_.Id_misc_tag;} diff --git a/400_xowa/src/gplx/xowa/xtns/pfuncs/strings/Pfunc_tag_tst.java b/400_xowa/src/gplx/xowa/xtns/pfuncs/strings/Pfunc_tag_tst.java index c51fc4cc0..93e9fe328 100644 --- a/400_xowa/src/gplx/xowa/xtns/pfuncs/strings/Pfunc_tag_tst.java +++ b/400_xowa/src/gplx/xowa/xtns/pfuncs/strings/Pfunc_tag_tst.java @@ -20,7 +20,7 @@ import org.junit.*; public class Pfunc_tag_tst { @Before public void init() {fxt.Reset();} private Xop_fxt fxt = new Xop_fxt(); @Test public void Basic() {fxt.Test_html_full_str("{{#tag:pre|a|id=b|style=c}}" , "
      a
      ");} -// @Test public void Missing_val() {fxt.ini_Msg(Mwl_tag_rsc._.Invalid).Test_parse_tmpl_str_test("{{#tag:pre|a|id=}}" , "{{test}}" , "");} // see {{Reflist|colwidth=30em}} -> a{{#tag:references||group=}} -> "" +// @Test public void Missing_val() {fxt.ini_Msg(Mwl_tag_rsc.Instance.Invalid).Test_parse_tmpl_str_test("{{#tag:pre|a|id=}}" , "{{test}}" , "");} // see {{Reflist|colwidth=30em}} -> a{{#tag:references||group=}} -> "" @Test public void Atr2_empty() {fxt.Test_html_full_str("{{#tag:pre|a|id=b|}}" , "
      a
      ");} // see {{Reflist|colwidth=30em}} -> a{{#tag:references||group=a|}} -> "" @Test public void Val_apos() {fxt.Test_html_full_str("{{#tag:pre|a|id='b'}}" , "
      a
      ");} @Test public void Val_quote() {fxt.Test_html_full_str("{{#tag:pre|a|id=\"b\"}}" , "
      a
      ");} diff --git a/400_xowa/src/gplx/xowa/xtns/pfuncs/stringutils/Pfunc_count.java b/400_xowa/src/gplx/xowa/xtns/pfuncs/stringutils/Pfunc_count.java index 1b8d5ed81..5918f54c1 100644 --- a/400_xowa/src/gplx/xowa/xtns/pfuncs/stringutils/Pfunc_count.java +++ b/400_xowa/src/gplx/xowa/xtns/pfuncs/stringutils/Pfunc_count.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.xtns.pfuncs.stringutils; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.pfuncs.*; -import gplx.xowa.langs.*; +import gplx.xowa.langs.*; import gplx.xowa.langs.kwds.*; import gplx.xowa.parsers.*; import gplx.xowa.parsers.tmpls.*; public class Pfunc_count extends Pf_func_base { @Override public int Id() {return Xol_kwd_grp_.Id_strx_count;} diff --git a/400_xowa/src/gplx/xowa/xtns/pfuncs/stringutils/Pfunc_explode.java b/400_xowa/src/gplx/xowa/xtns/pfuncs/stringutils/Pfunc_explode.java index 12608eb41..5f295f175 100644 --- a/400_xowa/src/gplx/xowa/xtns/pfuncs/stringutils/Pfunc_explode.java +++ b/400_xowa/src/gplx/xowa/xtns/pfuncs/stringutils/Pfunc_explode.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.xtns.pfuncs.stringutils; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.pfuncs.*; -import gplx.xowa.langs.*; +import gplx.xowa.langs.*; import gplx.xowa.langs.kwds.*; import gplx.xowa.parsers.*; import gplx.xowa.parsers.tmpls.*; public class Pfunc_explode extends Pf_func_base { @Override public int Id() {return Xol_kwd_grp_.Id_strx_explode;} diff --git a/400_xowa/src/gplx/xowa/xtns/pfuncs/stringutils/Pfunc_len.java b/400_xowa/src/gplx/xowa/xtns/pfuncs/stringutils/Pfunc_len.java index 7aeea82c4..44ee4b327 100644 --- a/400_xowa/src/gplx/xowa/xtns/pfuncs/stringutils/Pfunc_len.java +++ b/400_xowa/src/gplx/xowa/xtns/pfuncs/stringutils/Pfunc_len.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.xtns.pfuncs.stringutils; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.pfuncs.*; -import gplx.xowa.langs.*; +import gplx.xowa.langs.*; import gplx.xowa.langs.kwds.*; import gplx.xowa.parsers.*; import gplx.xowa.parsers.tmpls.*; public class Pfunc_len extends Pf_func_base { @Override public int Id() {return Xol_kwd_grp_.Id_strx_len;} diff --git a/400_xowa/src/gplx/xowa/xtns/pfuncs/stringutils/Pfunc_pos.java b/400_xowa/src/gplx/xowa/xtns/pfuncs/stringutils/Pfunc_pos.java index 3ad059b89..41a1d9ce0 100644 --- a/400_xowa/src/gplx/xowa/xtns/pfuncs/stringutils/Pfunc_pos.java +++ b/400_xowa/src/gplx/xowa/xtns/pfuncs/stringutils/Pfunc_pos.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.xtns.pfuncs.stringutils; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.pfuncs.*; -import gplx.xowa.langs.*; +import gplx.xowa.langs.*; import gplx.xowa.langs.kwds.*; import gplx.xowa.parsers.*; import gplx.xowa.parsers.tmpls.*; public class Pfunc_pos extends Pf_func_base { @Override public int Id() {return Xol_kwd_grp_.Id_strx_pos;} diff --git a/400_xowa/src/gplx/xowa/xtns/pfuncs/stringutils/Pfunc_replace.java b/400_xowa/src/gplx/xowa/xtns/pfuncs/stringutils/Pfunc_replace.java index 06f1b13c9..a8cd7ff31 100644 --- a/400_xowa/src/gplx/xowa/xtns/pfuncs/stringutils/Pfunc_replace.java +++ b/400_xowa/src/gplx/xowa/xtns/pfuncs/stringutils/Pfunc_replace.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.xtns.pfuncs.stringutils; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.pfuncs.*; -import gplx.xowa.langs.*; +import gplx.xowa.langs.*; import gplx.xowa.langs.kwds.*; import gplx.xowa.parsers.*; import gplx.xowa.parsers.tmpls.*; public class Pfunc_replace extends Pf_func_base { @Override public int Id() {return Xol_kwd_grp_.Id_strx_replace;} diff --git a/400_xowa/src/gplx/xowa/xtns/pfuncs/stringutils/Pfunc_rpos.java b/400_xowa/src/gplx/xowa/xtns/pfuncs/stringutils/Pfunc_rpos.java index 058cc96e7..478426827 100644 --- a/400_xowa/src/gplx/xowa/xtns/pfuncs/stringutils/Pfunc_rpos.java +++ b/400_xowa/src/gplx/xowa/xtns/pfuncs/stringutils/Pfunc_rpos.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.xtns.pfuncs.stringutils; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.pfuncs.*; -import gplx.xowa.langs.*; +import gplx.xowa.langs.*; import gplx.xowa.langs.kwds.*; import gplx.xowa.parsers.*; import gplx.xowa.parsers.tmpls.*; public class Pfunc_rpos extends Pf_func_base { @Override public int Id() {return Xol_kwd_grp_.Id_strx_rpos;} diff --git a/400_xowa/src/gplx/xowa/xtns/pfuncs/stringutils/Pfunc_sub.java b/400_xowa/src/gplx/xowa/xtns/pfuncs/stringutils/Pfunc_sub.java index 8e313862e..e8c1a4ce5 100644 --- a/400_xowa/src/gplx/xowa/xtns/pfuncs/stringutils/Pfunc_sub.java +++ b/400_xowa/src/gplx/xowa/xtns/pfuncs/stringutils/Pfunc_sub.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.xtns.pfuncs.stringutils; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.pfuncs.*; -import gplx.xowa.langs.*; +import gplx.xowa.langs.*; import gplx.xowa.langs.kwds.*; import gplx.xowa.parsers.*; import gplx.xowa.parsers.tmpls.*; public class Pfunc_sub extends Pf_func_base { @Override public int Id() {return Xol_kwd_grp_.Id_strx_sub;} diff --git a/400_xowa/src/gplx/xowa/xtns/pfuncs/stringutils/Pfunc_urldecode.java b/400_xowa/src/gplx/xowa/xtns/pfuncs/stringutils/Pfunc_urldecode.java index 96b4e6e26..e8cf686c0 100644 --- a/400_xowa/src/gplx/xowa/xtns/pfuncs/stringutils/Pfunc_urldecode.java +++ b/400_xowa/src/gplx/xowa/xtns/pfuncs/stringutils/Pfunc_urldecode.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.xtns.pfuncs.stringutils; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.pfuncs.*; -import gplx.xowa.langs.*; +import gplx.xowa.langs.*; import gplx.xowa.langs.kwds.*; import gplx.xowa.parsers.*; import gplx.xowa.parsers.tmpls.*; public class Pfunc_urldecode extends Pf_func_base { @Override public int Id() {return Xol_kwd_grp_.Id_strx_urldecode;} diff --git a/400_xowa/src/gplx/xowa/xtns/pfuncs/times/Pft_fmt_itm.java b/400_xowa/src/gplx/xowa/xtns/pfuncs/times/Pft_fmt_itm.java index 83ee56eb1..2ee6fb963 100644 --- a/400_xowa/src/gplx/xowa/xtns/pfuncs/times/Pft_fmt_itm.java +++ b/400_xowa/src/gplx/xowa/xtns/pfuncs/times/Pft_fmt_itm.java @@ -19,5 +19,5 @@ package gplx.xowa.xtns.pfuncs.times; import gplx.*; import gplx.xowa.*; import g import gplx.xowa.langs.*; public interface Pft_fmt_itm { int TypeId(); - void Fmt(Bry_bfr bfr, Xowe_wiki wiki, Xol_lang lang, DateAdp date, Pft_func_formatdate_bldr bldr); + void Fmt(Bry_bfr bfr, Xowe_wiki wiki, Xol_lang_itm lang, DateAdp date, Pft_func_formatdate_bldr bldr); } diff --git a/400_xowa/src/gplx/xowa/xtns/pfuncs/times/Pft_fmt_itm_.java b/400_xowa/src/gplx/xowa/xtns/pfuncs/times/Pft_fmt_itm_.java index fe8bb1c68..e48611df9 100644 --- a/400_xowa/src/gplx/xowa/xtns/pfuncs/times/Pft_fmt_itm_.java +++ b/400_xowa/src/gplx/xowa/xtns/pfuncs/times/Pft_fmt_itm_.java @@ -17,7 +17,7 @@ along with this program. If not, see . */ package gplx.xowa.xtns.pfuncs.times; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.pfuncs.*; import gplx.core.btries.*; -import gplx.xowa.langs.*; +import gplx.xowa.langs.*; import gplx.xowa.langs.msgs.*; import gplx.xowa.parsers.*; public class Pft_fmt_itm_ { public static final int diff --git a/400_xowa/src/gplx/xowa/xtns/pfuncs/times/Pft_fmt_itm_foreign.java b/400_xowa/src/gplx/xowa/xtns/pfuncs/times/Pft_fmt_itm_foreign.java index 6f367bfd3..7d1fae2b6 100644 --- a/400_xowa/src/gplx/xowa/xtns/pfuncs/times/Pft_fmt_itm_foreign.java +++ b/400_xowa/src/gplx/xowa/xtns/pfuncs/times/Pft_fmt_itm_foreign.java @@ -19,7 +19,7 @@ package gplx.xowa.xtns.pfuncs.times; import gplx.*; import gplx.xowa.*; import g import gplx.xowa.langs.*; class Pft_fmt_itm_roman implements Pft_fmt_itm { public int TypeId() {return Pft_fmt_itm_.Tid_roman;} - public void Fmt(Bry_bfr bfr, Xowe_wiki wiki, Xol_lang lang, DateAdp date, Pft_func_formatdate_bldr bldr) { + public void Fmt(Bry_bfr bfr, Xowe_wiki wiki, Xol_lang_itm lang, DateAdp date, Pft_func_formatdate_bldr bldr) { int nxt_idx = bldr.Idx_cur() + 1; Pft_fmt_itm[] ary = bldr.Fmt_itms(); if (nxt_idx < ary.length) { @@ -37,113 +37,113 @@ class Pft_fmt_itm_roman implements Pft_fmt_itm { } class Pft_fmt_itm_thai implements Pft_fmt_itm { public int TypeId() {return Pft_fmt_itm_.Tid_thai;} - public void Fmt(Bry_bfr bfr, Xowe_wiki wiki, Xol_lang lang, DateAdp date, Pft_func_formatdate_bldr bldr) { + public void Fmt(Bry_bfr bfr, Xowe_wiki wiki, Xol_lang_itm lang, DateAdp date, Pft_func_formatdate_bldr bldr) { bfr.Add_int_variable(date.Year() + 543); } } class Pft_fmt_itm_minguo implements Pft_fmt_itm { public int TypeId() {return Pft_fmt_itm_.Tid_minguo;} - public void Fmt(Bry_bfr bfr, Xowe_wiki wiki, Xol_lang lang, DateAdp date, Pft_func_formatdate_bldr bldr) { + public void Fmt(Bry_bfr bfr, Xowe_wiki wiki, Xol_lang_itm lang, DateAdp date, Pft_func_formatdate_bldr bldr) { bfr.Add_int_variable(date.Year() - 1911); } } class Pft_fmt_itm_hebrew_year_num implements Pft_fmt_itm { public int TypeId() {return Pft_fmt_itm_.Tid_hebrew_year_num;} - public void Fmt(Bry_bfr bfr, Xowe_wiki wiki, Xol_lang lang, DateAdp date, Pft_func_formatdate_bldr bldr) { + public void Fmt(Bry_bfr bfr, Xowe_wiki wiki, Xol_lang_itm lang, DateAdp date, Pft_func_formatdate_bldr bldr) { int[] hebrew_date = Pft_fmt_itm_hebrew_.Calc_hebrew_date(date); bfr.Add_int_variable(hebrew_date[Pft_fmt_itm_hebrew_.Rslt_year_num]); } } class Pft_fmt_itm_hebrew_month_num implements Pft_fmt_itm { public int TypeId() {return Pft_fmt_itm_.Tid_hebrew_month_num;} - public void Fmt(Bry_bfr bfr, Xowe_wiki wiki, Xol_lang lang, DateAdp date, Pft_func_formatdate_bldr bldr) { + public void Fmt(Bry_bfr bfr, Xowe_wiki wiki, Xol_lang_itm lang, DateAdp date, Pft_func_formatdate_bldr bldr) { int[] hebrew_date = Pft_fmt_itm_hebrew_.Calc_hebrew_date(date); bfr.Add_int_variable(hebrew_date[Pft_fmt_itm_hebrew_.Rslt_month_num]); } } class Pft_fmt_itm_hebrew_day_num implements Pft_fmt_itm { public int TypeId() {return Pft_fmt_itm_.Tid_hebrew_day_num;} - public void Fmt(Bry_bfr bfr, Xowe_wiki wiki, Xol_lang lang, DateAdp date, Pft_func_formatdate_bldr bldr) { + public void Fmt(Bry_bfr bfr, Xowe_wiki wiki, Xol_lang_itm lang, DateAdp date, Pft_func_formatdate_bldr bldr) { int[] hebrew_date = Pft_fmt_itm_hebrew_.Calc_hebrew_date(date); bfr.Add_int_variable(hebrew_date[Pft_fmt_itm_hebrew_.Rslt_day_num]); } } class Pft_fmt_itm_hebrew_month_days_count implements Pft_fmt_itm { public int TypeId() {return Pft_fmt_itm_.Tid_hebrew_month_days_count;} - public void Fmt(Bry_bfr bfr, Xowe_wiki wiki, Xol_lang lang, DateAdp date, Pft_func_formatdate_bldr bldr) { + public void Fmt(Bry_bfr bfr, Xowe_wiki wiki, Xol_lang_itm lang, DateAdp date, Pft_func_formatdate_bldr bldr) { int[] hebrew_date = Pft_fmt_itm_hebrew_.Calc_hebrew_date(date); bfr.Add_int_variable(hebrew_date[Pft_fmt_itm_hebrew_.Rslt_month_days_count]); } } class Pft_fmt_itm_hebrew_month_name_full implements Pft_fmt_itm { public int TypeId() {return Pft_fmt_itm_.Tid_hebrew_month_name_full;} - public void Fmt(Bry_bfr bfr, Xowe_wiki wiki, Xol_lang lang, DateAdp date, Pft_func_formatdate_bldr bldr) { + public void Fmt(Bry_bfr bfr, Xowe_wiki wiki, Xol_lang_itm lang, DateAdp date, Pft_func_formatdate_bldr bldr) { bfr.Add(Pft_fmt_itm_hebrew_.Get_hebrew_month_name_full(wiki, date)); } } class Pft_fmt_itm_hebrew_month_name_gen implements Pft_fmt_itm { public int TypeId() {return Pft_fmt_itm_.Tid_hebrew_month_name_gen;} - public void Fmt(Bry_bfr bfr, Xowe_wiki wiki, Xol_lang lang, DateAdp date, Pft_func_formatdate_bldr bldr) { + public void Fmt(Bry_bfr bfr, Xowe_wiki wiki, Xol_lang_itm lang, DateAdp date, Pft_func_formatdate_bldr bldr) { bfr.Add(Pft_fmt_itm_hebrew_.Get_hebrew_month_name_gen(wiki, date)); } } class Pft_fmt_itm_hebrew_numeral implements Pft_fmt_itm { public int TypeId() {return Pft_fmt_itm_.Tid_hebrew_numeral;} - public void Fmt(Bry_bfr bfr, Xowe_wiki wiki, Xol_lang lang, DateAdp date, Pft_func_formatdate_bldr bldr) { + public void Fmt(Bry_bfr bfr, Xowe_wiki wiki, Xol_lang_itm lang, DateAdp date, Pft_func_formatdate_bldr bldr) { bfr.Add_str(Pft_fmt_itm_hebrew_.Calc_hebrew_numeral(date.Year())); } } class Pft_fmt_itm_iranian_year_idx implements Pft_fmt_itm { public int TypeId() {return Pft_fmt_itm_.Tid_iranian_year_idx;} - public void Fmt(Bry_bfr bfr, Xowe_wiki wiki, Xol_lang lang, DateAdp date, Pft_func_formatdate_bldr bldr) { + public void Fmt(Bry_bfr bfr, Xowe_wiki wiki, Xol_lang_itm lang, DateAdp date, Pft_func_formatdate_bldr bldr) { int[] seg_ary = Pft_fmt_itm_iranian.Calc_date(date); bfr.Add_int_variable(seg_ary[Pft_fmt_itm_iranian.Rslt__year]); } } class Pft_fmt_itm_iranian_month_idx implements Pft_fmt_itm { public int TypeId() {return Pft_fmt_itm_.Tid_iranian_month_idx;} - public void Fmt(Bry_bfr bfr, Xowe_wiki wiki, Xol_lang lang, DateAdp date, Pft_func_formatdate_bldr bldr) { + public void Fmt(Bry_bfr bfr, Xowe_wiki wiki, Xol_lang_itm lang, DateAdp date, Pft_func_formatdate_bldr bldr) { int[] seg_ary = Pft_fmt_itm_iranian.Calc_date(date); bfr.Add_int_variable(seg_ary[Pft_fmt_itm_iranian.Rslt__month]); } } class Pft_fmt_itm_iranian_day_idx implements Pft_fmt_itm { public int TypeId() {return Pft_fmt_itm_.Tid_iranian_day_idx;} - public void Fmt(Bry_bfr bfr, Xowe_wiki wiki, Xol_lang lang, DateAdp date, Pft_func_formatdate_bldr bldr) { + public void Fmt(Bry_bfr bfr, Xowe_wiki wiki, Xol_lang_itm lang, DateAdp date, Pft_func_formatdate_bldr bldr) { int[] seg_ary = Pft_fmt_itm_iranian.Calc_date(date); bfr.Add_int_variable(seg_ary[Pft_fmt_itm_iranian.Rslt__day]); } } class Pft_fmt_itm_iranian_month_name implements Pft_fmt_itm { public int TypeId() {return Pft_fmt_itm_.Tid_iranian_month_name;} - public void Fmt(Bry_bfr bfr, Xowe_wiki wiki, Xol_lang lang, DateAdp date, Pft_func_formatdate_bldr bldr) { + public void Fmt(Bry_bfr bfr, Xowe_wiki wiki, Xol_lang_itm lang, DateAdp date, Pft_func_formatdate_bldr bldr) { bfr.Add(Pft_fmt_itm_iranian.Get_month_name(wiki, date)); } } class Pft_fmt_itm_hijiri_year_idx implements Pft_fmt_itm { public int TypeId() {return Pft_fmt_itm_.Tid_hijiri_year_idx;} - public void Fmt(Bry_bfr bfr, Xowe_wiki wiki, Xol_lang lang, DateAdp date, Pft_func_formatdate_bldr bldr) { + public void Fmt(Bry_bfr bfr, Xowe_wiki wiki, Xol_lang_itm lang, DateAdp date, Pft_func_formatdate_bldr bldr) { int[] seg_ary = Pft_fmt_itm_hijiri.Calc_date(date); bfr.Add_int_variable(seg_ary[Pft_fmt_itm_hijiri.Rslt__year]); } } class Pft_fmt_itm_hijiri_month_idx implements Pft_fmt_itm { public int TypeId() {return Pft_fmt_itm_.Tid_hijiri_month_idx;} - public void Fmt(Bry_bfr bfr, Xowe_wiki wiki, Xol_lang lang, DateAdp date, Pft_func_formatdate_bldr bldr) { + public void Fmt(Bry_bfr bfr, Xowe_wiki wiki, Xol_lang_itm lang, DateAdp date, Pft_func_formatdate_bldr bldr) { int[] seg_ary = Pft_fmt_itm_hijiri.Calc_date(date); bfr.Add_int_variable(seg_ary[Pft_fmt_itm_hijiri.Rslt__month]); } } class Pft_fmt_itm_hijiri_day_idx implements Pft_fmt_itm { public int TypeId() {return Pft_fmt_itm_.Tid_hijiri_day_idx;} - public void Fmt(Bry_bfr bfr, Xowe_wiki wiki, Xol_lang lang, DateAdp date, Pft_func_formatdate_bldr bldr) { + public void Fmt(Bry_bfr bfr, Xowe_wiki wiki, Xol_lang_itm lang, DateAdp date, Pft_func_formatdate_bldr bldr) { int[] seg_ary = Pft_fmt_itm_hijiri.Calc_date(date); bfr.Add_int_variable(seg_ary[Pft_fmt_itm_hijiri.Rslt__day]); } } class Pft_fmt_itm_hijiri_month_name implements Pft_fmt_itm { public int TypeId() {return Pft_fmt_itm_.Tid_hijiri_month_name;} - public void Fmt(Bry_bfr bfr, Xowe_wiki wiki, Xol_lang lang, DateAdp date, Pft_func_formatdate_bldr bldr) { + public void Fmt(Bry_bfr bfr, Xowe_wiki wiki, Xol_lang_itm lang, DateAdp date, Pft_func_formatdate_bldr bldr) { bfr.Add(Pft_fmt_itm_hijiri.Get_month_name(wiki, date)); } } diff --git a/400_xowa/src/gplx/xowa/xtns/pfuncs/times/Pft_fmt_itm_hebrew_.java b/400_xowa/src/gplx/xowa/xtns/pfuncs/times/Pft_fmt_itm_hebrew_.java index 9d40bb73c..5da1a2649 100644 --- a/400_xowa/src/gplx/xowa/xtns/pfuncs/times/Pft_fmt_itm_hebrew_.java +++ b/400_xowa/src/gplx/xowa/xtns/pfuncs/times/Pft_fmt_itm_hebrew_.java @@ -214,7 +214,7 @@ class Pft_fmt_itm_hebrew_ { }; public static String Calc_hebrew_numeral(int num) { if (num > 9999 || num <= 0) - return Int_.Xto_str(num); + return Int_.To_str(num); String tmp = ""; int pow10 = 1000; diff --git a/400_xowa/src/gplx/xowa/xtns/pfuncs/times/Pft_fmt_itm_seg_int.java b/400_xowa/src/gplx/xowa/xtns/pfuncs/times/Pft_fmt_itm_seg_int.java index c65ec49c3..5e5dcd030 100644 --- a/400_xowa/src/gplx/xowa/xtns/pfuncs/times/Pft_fmt_itm_seg_int.java +++ b/400_xowa/src/gplx/xowa/xtns/pfuncs/times/Pft_fmt_itm_seg_int.java @@ -21,7 +21,7 @@ class Pft_fmt_itm_seg_int implements Pft_fmt_itm { public Pft_fmt_itm_seg_int(int segIdx, int len, boolean fixed_len) {this.segIdx = segIdx; this.fixed_len = fixed_len; this.len = len;} private int segIdx, len; boolean fixed_len; public int TypeId() {return Pft_fmt_itm_.Tid_seg_int;} public int SegIdx() {return segIdx;} - public void Fmt(Bry_bfr bfr, Xowe_wiki wiki, Xol_lang lang, DateAdp date, Pft_func_formatdate_bldr bldr) { + public void Fmt(Bry_bfr bfr, Xowe_wiki wiki, Xol_lang_itm lang, DateAdp date, Pft_func_formatdate_bldr bldr) { int val = date.Segment(segIdx); if (fixed_len) bfr.Add_int_fixed(val, len); else bfr.Add_int_variable(val); @@ -29,24 +29,24 @@ class Pft_fmt_itm_seg_int implements Pft_fmt_itm { } class Pft_fmt_itm_raw implements Pft_fmt_itm { public int TypeId() {return Pft_fmt_itm_.Tid_raw;} - public void Fmt(Bry_bfr bfr, Xowe_wiki wiki, Xol_lang lang, DateAdp date, Pft_func_formatdate_bldr bldr) { + public void Fmt(Bry_bfr bfr, Xowe_wiki wiki, Xol_lang_itm lang, DateAdp date, Pft_func_formatdate_bldr bldr) { // TODO: should flag .Raw() on bldr to skip transliterating numerals in foreign languages; DATE:2013-12-31 } } class Pft_fmt_itm_seg_str implements Pft_fmt_itm { public Pft_fmt_itm_seg_str(int segIdx, int type) {this.segIdx = segIdx; this.type = type;} private int segIdx, type; public int TypeId() {return Pft_fmt_itm_.Tid_seg_str;} - public void Fmt(Bry_bfr bfr, Xowe_wiki wiki, Xol_lang lang, DateAdp date, Pft_func_formatdate_bldr bldr) { + public void Fmt(Bry_bfr bfr, Xowe_wiki wiki, Xol_lang_itm lang, DateAdp date, Pft_func_formatdate_bldr bldr) { DateAdpTranslator_xapp.Translate(wiki, lang, type, date.Segment(segIdx), bfr); } } class Pft_fmt_itm_year_isLeap implements Pft_fmt_itm { public int TypeId() {return Pft_fmt_itm_.Tid_year_isLeap;} - public void Fmt(Bry_bfr bfr, Xowe_wiki wiki, Xol_lang lang, DateAdp date, Pft_func_formatdate_bldr bldr) {bfr.Add_int_fixed(DateAdp_.IsLeapYear(date.Year()) ? 1 : 0, 1);} + public void Fmt(Bry_bfr bfr, Xowe_wiki wiki, Xol_lang_itm lang, DateAdp date, Pft_func_formatdate_bldr bldr) {bfr.Add_int_fixed(DateAdp_.IsLeapYear(date.Year()) ? 1 : 0, 1);} } class Pft_fmt_itm_hour_base12 implements Pft_fmt_itm { public int TypeId() {return Pft_fmt_itm_.Tid_hour_base12;} - public void Fmt(Bry_bfr bfr, Xowe_wiki wiki, Xol_lang lang, DateAdp date, Pft_func_formatdate_bldr bldr) { + public void Fmt(Bry_bfr bfr, Xowe_wiki wiki, Xol_lang_itm lang, DateAdp date, Pft_func_formatdate_bldr bldr) { int val = date.Hour(); switch (val) { case 0: val = 12; break; @@ -60,29 +60,29 @@ class Pft_fmt_itm_hour_base12 implements Pft_fmt_itm { } class Pft_fmt_itm_timestamp_unix implements Pft_fmt_itm { public int TypeId() {return Pft_fmt_itm_.Tid_timestamp_unix;} - public void Fmt(Bry_bfr bfr, Xowe_wiki wiki, Xol_lang lang, DateAdp date, Pft_func_formatdate_bldr bldr) {bfr.Add_long_variable(date.Timestamp_unix());} + public void Fmt(Bry_bfr bfr, Xowe_wiki wiki, Xol_lang_itm lang, DateAdp date, Pft_func_formatdate_bldr bldr) {bfr.Add_long_variable(date.Timestamp_unix());} } class Pft_fmt_itm_raw_ary implements Pft_fmt_itm { public int TypeId() {return Pft_fmt_itm_.Tid_raw_ary;} - public void Fmt(Bry_bfr bfr, Xowe_wiki wiki, Xol_lang lang, DateAdp date, Pft_func_formatdate_bldr bldr) {bfr.Add_mid(src, bgn, end);} + public void Fmt(Bry_bfr bfr, Xowe_wiki wiki, Xol_lang_itm lang, DateAdp date, Pft_func_formatdate_bldr bldr) {bfr.Add_mid(src, bgn, end);} public Pft_fmt_itm_raw_ary(byte[] src, int bgn, int end) {this.src = src; this.bgn = bgn; this.end = end;} private byte[] src; int bgn; int end; } class Pft_fmt_itm_raw_byt implements Pft_fmt_itm { public int TypeId() {return Pft_fmt_itm_.Tid_raw_byt;} - public void Fmt(Bry_bfr bfr, Xowe_wiki wiki, Xol_lang lang, DateAdp date, Pft_func_formatdate_bldr bldr) {bfr.Add_byte(b);} + public void Fmt(Bry_bfr bfr, Xowe_wiki wiki, Xol_lang_itm lang, DateAdp date, Pft_func_formatdate_bldr bldr) {bfr.Add_byte(b);} public Pft_fmt_itm_raw_byt(byte b) {this.b = b;} private byte b; } class Pft_fmt_itm_daysInMonth implements Pft_fmt_itm { public int TypeId() {return Pft_fmt_itm_.Tid_daysInMonth;} - public void Fmt(Bry_bfr bfr, Xowe_wiki wiki, Xol_lang lang, DateAdp date, Pft_func_formatdate_bldr bldr) {bfr.Add_int_variable(DateAdp_.DaysInMonth(date));} + public void Fmt(Bry_bfr bfr, Xowe_wiki wiki, Xol_lang_itm lang, DateAdp date, Pft_func_formatdate_bldr bldr) {bfr.Add_int_variable(DateAdp_.DaysInMonth(date));} } class Pft_fmt_itm_dayOfYear implements Pft_fmt_itm { public int TypeId() {return Pft_fmt_itm_.Tid_dayOfYear;} - public void Fmt(Bry_bfr bfr, Xowe_wiki wiki, Xol_lang lang, DateAdp date, Pft_func_formatdate_bldr bldr) {bfr.Add_int_variable(date.DayOfYear() - Int_.Base1);} // php is base1; .net/java is base0 + public void Fmt(Bry_bfr bfr, Xowe_wiki wiki, Xol_lang_itm lang, DateAdp date, Pft_func_formatdate_bldr bldr) {bfr.Add_int_variable(date.DayOfYear() - Int_.Base1);} // php is base1; .net/java is base0 } class Pft_fmt_itm_am_pm implements Pft_fmt_itm { public int TypeId() {return Pft_fmt_itm_.Tid_AmPm;} - public void Fmt(Bry_bfr bfr, Xowe_wiki wiki, Xol_lang lang, DateAdp date, Pft_func_formatdate_bldr bldr) { + public void Fmt(Bry_bfr bfr, Xowe_wiki wiki, Xol_lang_itm lang, DateAdp date, Pft_func_formatdate_bldr bldr) { boolean am = date.Hour() < 13; byte[] val = null; if ( am && lower) val = Ary_am_lower; @@ -95,7 +95,7 @@ class Pft_fmt_itm_am_pm implements Pft_fmt_itm { } class Pft_fmt_itm_dow_base0 implements Pft_fmt_itm { public int TypeId() {return Pft_fmt_itm_.Tid_dow_base0;} - public void Fmt(Bry_bfr bfr, Xowe_wiki wiki, Xol_lang lang, DateAdp date, Pft_func_formatdate_bldr bldr) { + public void Fmt(Bry_bfr bfr, Xowe_wiki wiki, Xol_lang_itm lang, DateAdp date, Pft_func_formatdate_bldr bldr) { int dow = date.DayOfWeek(); if (dow == 0) dow = 7; bfr.Add_int_fixed(dow, 1); @@ -104,7 +104,7 @@ class Pft_fmt_itm_dow_base0 implements Pft_fmt_itm { class Pft_fmt_itm_iso_fmt implements Pft_fmt_itm { public Pft_fmt_itm_iso_fmt() {} public int TypeId() {return Pft_fmt_itm_.Tid_iso_fmt;} - public void Fmt(Bry_bfr bfr, Xowe_wiki wiki, Xol_lang lang, DateAdp date, Pft_func_formatdate_bldr bldr) { + public void Fmt(Bry_bfr bfr, Xowe_wiki wiki, Xol_lang_itm lang, DateAdp date, Pft_func_formatdate_bldr bldr) { bfr.Add_str(date.XtoStr_fmt("yyyy-MM-dd")); bfr.Add_byte(Byte_ascii.Ltr_T); bfr.Add_str(date.XtoStr_fmt("HH:mm:ss")); @@ -114,7 +114,7 @@ class Pft_fmt_itm_iso_fmt implements Pft_fmt_itm { class Pft_fmt_itm_rfc_5322 implements Pft_fmt_itm { public Pft_fmt_itm_rfc_5322() {} public int TypeId() {return Pft_fmt_itm_.Tid_rfc_5322;} - public void Fmt(Bry_bfr bfr, Xowe_wiki wiki, Xol_lang lang, DateAdp date, Pft_func_formatdate_bldr bldr) {// Mon, 02 Jan 2012 10:15:01 +0000 + public void Fmt(Bry_bfr bfr, Xowe_wiki wiki, Xol_lang_itm lang, DateAdp date, Pft_func_formatdate_bldr bldr) {// Mon, 02 Jan 2012 10:15:01 +0000 int dow = date.DayOfWeek(); DateAdpTranslator_xapp.Translate(wiki, lang, DateAdp_.SegIdx_dayOfWeek, dow, bfr); bfr.Add_byte(Byte_ascii.Comma).Add_byte(Byte_ascii.Space); @@ -125,7 +125,7 @@ class Pft_fmt_itm_rfc_5322 implements Pft_fmt_itm { class Pft_fmt_itm_timezone_offset implements Pft_fmt_itm { public Pft_fmt_itm_timezone_offset() {} public int TypeId() {return Pft_fmt_itm_.Tid_timezone_offset;} - public void Fmt(Bry_bfr bfr, Xowe_wiki wiki, Xol_lang lang, DateAdp date, Pft_func_formatdate_bldr bldr) { + public void Fmt(Bry_bfr bfr, Xowe_wiki wiki, Xol_lang_itm lang, DateAdp date, Pft_func_formatdate_bldr bldr) { bfr.Add_int_variable(date.Timezone_offset()); } } diff --git a/400_xowa/src/gplx/xowa/xtns/pfuncs/times/Pft_func_date_int.java b/400_xowa/src/gplx/xowa/xtns/pfuncs/times/Pft_func_date_int.java index 1076341c1..f0edd2a36 100644 --- a/400_xowa/src/gplx/xowa/xtns/pfuncs/times/Pft_func_date_int.java +++ b/400_xowa/src/gplx/xowa/xtns/pfuncs/times/Pft_func_date_int.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.xtns.pfuncs.times; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.pfuncs.*; -import gplx.xowa.langs.*; +import gplx.xowa.langs.*; import gplx.xowa.langs.kwds.*; import gplx.xowa.parsers.*; import gplx.xowa.parsers.tmpls.*; public class Pft_func_date_int extends Pf_func_base { public Pft_func_date_int(int id, int date_tid) {this.id = id; this.date_tid = date_tid;} private int date_tid; @@ -24,7 +24,7 @@ public class Pft_func_date_int extends Pf_func_base { @Override public Pf_func New(int id, byte[] name) {return new Pft_func_date_int(id, date_tid).Name_(name);} @Override public void Func_evaluate(Xop_ctx ctx, byte[] src, Xot_invk caller, Xot_invk self, Bry_bfr bfr) { DateAdp date = DateAdp_.MinValue; - Xowe_wiki wiki = ctx.Wiki(); Xol_lang lang = ctx.Lang(); + Xowe_wiki wiki = ctx.Wiki(); Xol_lang_itm lang = ctx.Lang(); switch (date_tid) { case Date_tid_lcl: date = DateAdp_.Now(); break; case Date_tid_utc: date = DateAdp_.Now().XtoUtc(); break; diff --git a/400_xowa/src/gplx/xowa/xtns/pfuncs/times/Pft_func_formatdate.java b/400_xowa/src/gplx/xowa/xtns/pfuncs/times/Pft_func_formatdate.java index 0ce0d3a81..758db2943 100644 --- a/400_xowa/src/gplx/xowa/xtns/pfuncs/times/Pft_func_formatdate.java +++ b/400_xowa/src/gplx/xowa/xtns/pfuncs/times/Pft_func_formatdate.java @@ -17,7 +17,7 @@ along with this program. If not, see . */ package gplx.xowa.xtns.pfuncs.times; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.pfuncs.*; import gplx.core.btries.*; -import gplx.xowa.langs.*; +import gplx.xowa.langs.*; import gplx.xowa.langs.kwds.*; import gplx.xowa.parsers.*; import gplx.xowa.parsers.tmpls.*; public class Pft_func_formatdate extends Pf_func_base { @Override public int Id() {return Xol_kwd_grp_.Id_str_formatdate;} diff --git a/400_xowa/src/gplx/xowa/xtns/pfuncs/times/Pft_func_formatdate_bldr.java b/400_xowa/src/gplx/xowa/xtns/pfuncs/times/Pft_func_formatdate_bldr.java index e31fa5da1..622b3708f 100644 --- a/400_xowa/src/gplx/xowa/xtns/pfuncs/times/Pft_func_formatdate_bldr.java +++ b/400_xowa/src/gplx/xowa/xtns/pfuncs/times/Pft_func_formatdate_bldr.java @@ -21,10 +21,10 @@ public class Pft_func_formatdate_bldr { public int Idx_cur() {return idx_cur;} private int idx_cur; public Pft_func_formatdate_bldr Idx_nxt_(int v) {idx_nxt = v; return this;} private int idx_nxt; public Pft_fmt_itm[] Fmt_itms() {return fmt_itms;} Pft_fmt_itm[] fmt_itms; - public void Format(Bry_bfr bfr, Xowe_wiki wiki, Xol_lang lang, DateAdp date, Pft_fmt_itm fmt_itm) { + public void Format(Bry_bfr bfr, Xowe_wiki wiki, Xol_lang_itm lang, DateAdp date, Pft_fmt_itm fmt_itm) { fmt_itm.Fmt(bfr, wiki, lang, date, this); } - public void Format(Bry_bfr bfr, Xowe_wiki wiki, Xol_lang lang, DateAdp date, Pft_fmt_itm[] fmt_itms) { + public void Format(Bry_bfr bfr, Xowe_wiki wiki, Xol_lang_itm lang, DateAdp date, Pft_fmt_itm[] fmt_itms) { this.fmt_itms = fmt_itms; int len = fmt_itms.length; idx_cur = 0; idx_nxt = -1; @@ -44,7 +44,7 @@ public class Pft_func_formatdate_bldr { } } if (last != null) { - int year_int = bfr.XtoIntAndClear(-1); + int year_int = bfr.To_int_and_clear(-1); if (year_int != -1) { // handle no format; EX:{{#time:xh}} DATE:2014-07-20 date = DateAdp_.seg_(new int[] {year_int, date.Month(), date.Day(), date.Hour(), date.Minute(), date.Second(), date.Frac()}); last.Fmt(bfr, wiki, lang, date, this); diff --git a/400_xowa/src/gplx/xowa/xtns/pfuncs/times/Pft_func_time.java b/400_xowa/src/gplx/xowa/xtns/pfuncs/times/Pft_func_time.java index 38085d00b..01ab64e6e 100644 --- a/400_xowa/src/gplx/xowa/xtns/pfuncs/times/Pft_func_time.java +++ b/400_xowa/src/gplx/xowa/xtns/pfuncs/times/Pft_func_time.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.xtns.pfuncs.times; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.pfuncs.*; -import gplx.xowa.langs.*; +import gplx.xowa.langs.*; import gplx.xowa.langs.kwds.*; import gplx.xowa.parsers.*; import gplx.xowa.parsers.tmpls.*; public class Pft_func_time extends Pf_func_base { Pft_func_time(boolean utc) {this.utc = utc;} private boolean utc; @@ -33,11 +33,11 @@ public class Pft_func_time extends Pf_func_base { if (date == null || error_bfr.Len() > 0) bfr.Add_str_a7("").Add_bfr_and_clear(error_bfr).Add_str(""); else { - Xol_lang lang = ctx.Lang(); + Xol_lang_itm lang = ctx.Lang(); if (Bry_.Len_gt_0(arg_lang)) { - Xol_lang_itm specified_lang_itm = Xol_lang_itm_.Get_by_key(arg_lang); + Xol_lang_stub specified_lang_itm = Xol_lang_stub_.Get_by_key_or_null(arg_lang); if (specified_lang_itm != null) { // NOTE: if lang_code is bad, then ignore (EX:bad_code) - Xol_lang specified_lang = ctx.Wiki().Appe().Lang_mgr().Get_by_key_or_new(arg_lang); + Xol_lang_itm specified_lang = ctx.Wiki().Appe().Lang_mgr().Get_by_or_new(arg_lang); lang = specified_lang; } } @@ -59,7 +59,7 @@ public class Pft_func_time extends Pf_func_base { public static final Pft_func_time _Lcl = new Pft_func_time(false), _Utc = new Pft_func_time(true); } class DateAdpTranslator_xapp { - public static void Translate(Xowe_wiki wiki, Xol_lang lang, int type, int val, Bry_bfr bb) { + public static void Translate(Xowe_wiki wiki, Xol_lang_itm lang, int type, int val, Bry_bfr bb) { lang.Init_by_load_assert(); byte[] itm_val = lang.Msg_mgr().Val_by_id(type + val); if (itm_val == null) return; bb.Add(itm_val); diff --git a/400_xowa/src/gplx/xowa/xtns/pfuncs/times/Pft_func_time_basic_tst.java b/400_xowa/src/gplx/xowa/xtns/pfuncs/times/Pft_func_time_basic_tst.java index 0016d8929..de07aaa2c 100644 --- a/400_xowa/src/gplx/xowa/xtns/pfuncs/times/Pft_func_time_basic_tst.java +++ b/400_xowa/src/gplx/xowa/xtns/pfuncs/times/Pft_func_time_basic_tst.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.xtns.pfuncs.times; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.pfuncs.*; -import org.junit.*; import gplx.xowa.langs.*; -public class Pft_func_time_basic_tst { +import org.junit.*; import gplx.xowa.langs.*; import gplx.xowa.langs.msgs.*; +public class Pft_func_time_basic_tst { @Before public void init() {fxt.Reset(); Tfds.Now_set(DateAdp_.new_(2012, 1, 2, 3, 4, 5, 6));} private Xop_fxt fxt = new Xop_fxt(); @After public void term() {Tfds.Now_enabled_n_();} @Test public void Utc_date() {fxt.Test_parse_tmpl_str("{{#time:Y-m-d|2012-01-02 03:04:05}}" , "2012-01-02");} @@ -84,7 +84,7 @@ public class Pft_func_time_basic_tst { @Test public void Timezone_wrap() {fxt.Test_parse_tmpl_str("{{#time:Y-m-d H:i:s|2012-01-31 22:30:05+01:30}}" , "2012-02-01 00:00:05");} // PURPOSE: handle timezone wrap ; DATE:2014-08-26 @Test public void Rfc5322() {fxt.Test_parse_tmpl_str("{{#time:r|}}" , "Mon, 02 Jan 2012 08:04:05 +0000");} @Test public void Lang() { - Xol_lang fr_lang = fxt.App().Lang_mgr().Get_by_key_or_new(Bry_.new_a7("fr")); + Xol_lang_itm fr_lang = fxt.App().Lang_mgr().Get_by_or_new(Bry_.new_a7("fr")); Xol_msg_itm msg_itm = fr_lang.Msg_mgr().Itm_by_key_or_new(Bry_.new_a7("January")); msg_itm.Atrs_set(Bry_.new_a7("Janvier"), false, false); fxt.Test_parse_tmpl_str("{{#time:F|2012-01|fr}}" , "Janvier"); diff --git a/400_xowa/src/gplx/xowa/xtns/pfuncs/times/Pft_func_time_foreign_tst.java b/400_xowa/src/gplx/xowa/xtns/pfuncs/times/Pft_func_time_foreign_tst.java index 52e8fc8a3..5ad81ddb9 100644 --- a/400_xowa/src/gplx/xowa/xtns/pfuncs/times/Pft_func_time_foreign_tst.java +++ b/400_xowa/src/gplx/xowa/xtns/pfuncs/times/Pft_func_time_foreign_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.xtns.pfuncs.times; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.pfuncs.*; -import org.junit.*; import gplx.xowa.langs.*; +import org.junit.*; import gplx.xowa.langs.*; import gplx.xowa.langs.msgs.*; public class Pft_func_time_foreign_tst { @Before public void init() {fxt.Clear();} private Pft_func_time_foreign_fxt fxt = new Pft_func_time_foreign_fxt(); @After public void term() {fxt.Term();} @@ -79,7 +79,7 @@ class Pft_func_time_foreign_fxt { public void Test_Roman(int v, String expd) { Bry_bfr bfr = Bry_bfr.new_(16); Pfxtp_roman.ToRoman(v, bfr); - String actl = bfr.Xto_str_and_clear(); + String actl = bfr.To_str_and_clear(); Tfds.Eq(expd, actl); } } diff --git a/400_xowa/src/gplx/xowa/xtns/pfuncs/times/Pxd_itm_misc.java b/400_xowa/src/gplx/xowa/xtns/pfuncs/times/Pxd_itm_misc.java index 642d7ab3c..09a3fad5e 100644 --- a/400_xowa/src/gplx/xowa/xtns/pfuncs/times/Pxd_itm_misc.java +++ b/400_xowa/src/gplx/xowa/xtns/pfuncs/times/Pxd_itm_misc.java @@ -54,7 +54,7 @@ class Pxd_itm_colon extends Pxd_itm_base { class Pxd_itm_null extends Pxd_itm_base { @Override public byte Tkn_tid() {return Pxd_itm_.Tid_null;} @Override public int Eval_idx() {return 99;} - public static final Pxd_itm_null _ = new Pxd_itm_null(); + public static final Pxd_itm_null Instance = new Pxd_itm_null(); } class Pxd_itm_dash extends Pxd_itm_base { @Override public byte Tkn_tid() {return Pxd_itm_.Tid_dash;} @@ -123,12 +123,12 @@ class Pxd_itm_sorter implements gplx.lists.ComparerAble { Pxd_itm rhs = (Pxd_itm)rhsObj; return Int_.Compare(lhs.Eval_idx(), rhs.Eval_idx()); } - public static final Pxd_itm_sorter _ = new Pxd_itm_sorter(); + public static final Pxd_itm_sorter Instance = new Pxd_itm_sorter(); public static Pxd_itm[] XtoAryAndSort(Pxd_itm[] src, int src_len) { Pxd_itm[] rv = new Pxd_itm[src_len]; for (int i = 0; i < src_len; i++) rv[i] = src[i]; - Array_.Sort(rv, Pxd_itm_sorter._); + Array_.Sort(rv, Pxd_itm_sorter.Instance); return rv; } } \ No newline at end of file diff --git a/400_xowa/src/gplx/xowa/xtns/pfuncs/times/Pxd_itm_month_name.java b/400_xowa/src/gplx/xowa/xtns/pfuncs/times/Pxd_itm_month_name.java index 6e7289708..6aba8a55b 100644 --- a/400_xowa/src/gplx/xowa/xtns/pfuncs/times/Pxd_itm_month_name.java +++ b/400_xowa/src/gplx/xowa/xtns/pfuncs/times/Pxd_itm_month_name.java @@ -237,7 +237,7 @@ class Pxd_itm_day_suffix extends Pxd_itm_base implements Pxd_itm_prototype { state.Err_set(Pft_func_time_log.Invalid_day, Bry_fmtr_arg_.int_(Int_.Min_value)); } } - public static final Pxd_itm_day_suffix _ = new Pxd_itm_day_suffix(); Pxd_itm_day_suffix() {} + public static final Pxd_itm_day_suffix Instance = new Pxd_itm_day_suffix(); Pxd_itm_day_suffix() {} } class Pxd_itm_day_relative extends Pxd_itm_base implements Pxd_itm_prototype { public Pxd_itm_day_relative(int adj, int ary_idx) {Ctor(ary_idx); this.adj = adj;} diff --git a/400_xowa/src/gplx/xowa/xtns/pfuncs/times/Pxd_parser.java b/400_xowa/src/gplx/xowa/xtns/pfuncs/times/Pxd_parser.java index e3f4ab4b8..6b6d0d627 100644 --- a/400_xowa/src/gplx/xowa/xtns/pfuncs/times/Pxd_parser.java +++ b/400_xowa/src/gplx/xowa/xtns/pfuncs/times/Pxd_parser.java @@ -233,7 +233,7 @@ class Pxd_parser_ { int len = suffix_ary.length; for (int i = 0; i < len; i++) { String suffix = suffix_ary[i]; - trie.Add_obj(suffix, Pxd_itm_day_suffix._); + trie.Add_obj(suffix, Pxd_itm_day_suffix.Instance); } } private static void Init_relative() { diff --git a/400_xowa/src/gplx/xowa/xtns/pfuncs/times/Pxd_parser_tst.java b/400_xowa/src/gplx/xowa/xtns/pfuncs/times/Pxd_parser_tst.java index 6d8434b72..809fc3e5d 100644 --- a/400_xowa/src/gplx/xowa/xtns/pfuncs/times/Pxd_parser_tst.java +++ b/400_xowa/src/gplx/xowa/xtns/pfuncs/times/Pxd_parser_tst.java @@ -66,7 +66,7 @@ public class Pxd_parser_tst { byte[] raw_ary = Bry_.new_u8(raw); DateAdp date = parser.Parse(raw_ary, bfr); if (date == DateAdp_.MinValue) - Tfds.Eq(expd, bfr.Xto_str_and_clear(), raw); + Tfds.Eq(expd, bfr.To_str_and_clear(), raw); else Tfds.Eq(expd, date.XtoStr_fmt_yyyy_MM_dd()); } @@ -74,7 +74,7 @@ public class Pxd_parser_tst { byte[] raw_ary = Bry_.new_u8(raw); DateAdp date = parser.Parse(raw_ary, bfr); if (date == DateAdp_.MinValue) - Tfds.Eq(expd, bfr.Xto_str_and_clear(), raw); + Tfds.Eq(expd, bfr.To_str_and_clear(), raw); else Tfds.Eq(expd, date.XtoStr_fmt("HH:mm:ss.fff")); } @@ -82,7 +82,7 @@ public class Pxd_parser_tst { byte[] raw_ary = Bry_.new_u8(raw); DateAdp date = parser.Parse(raw_ary, bfr); if (date == DateAdp_.MinValue) - Tfds.Eq(expd, bfr.Xto_str_and_clear(), raw); + Tfds.Eq(expd, bfr.To_str_and_clear(), raw); else Tfds.Eq(expd, date.XtoStr_fmt("yyyy-MM-dd HH:mm:ss.fff")); } diff --git a/400_xowa/src/gplx/xowa/xtns/pfuncs/ttls/Pfunc_anchorencode.java b/400_xowa/src/gplx/xowa/xtns/pfuncs/ttls/Pfunc_anchorencode.java index 964870c58..19f073549 100644 --- a/400_xowa/src/gplx/xowa/xtns/pfuncs/ttls/Pfunc_anchorencode.java +++ b/400_xowa/src/gplx/xowa/xtns/pfuncs/ttls/Pfunc_anchorencode.java @@ -17,7 +17,7 @@ along with this program. If not, see . */ package gplx.xowa.xtns.pfuncs.ttls; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.pfuncs.*; import gplx.core.btries.*; import gplx.langs.htmls.encoders.*; -import gplx.xowa.langs.*; +import gplx.xowa.langs.*; import gplx.xowa.langs.kwds.*; import gplx.xowa.parsers.*; import gplx.xowa.parsers.amps.*; import gplx.xowa.parsers.lnkes.*; import gplx.xowa.parsers.xndes.*; import gplx.xowa.parsers.lnkis.*; import gplx.xowa.parsers.tmpls.*; public class Pfunc_anchorencode extends Pf_func_base { // EX: {{anchorencode:a b}} -> a+b @Override public boolean Func_require_colon_arg() {return true;} @@ -46,7 +46,7 @@ public class Pfunc_anchorencode extends Pf_func_base { // EX: {{anchorencode:a b Xop_tkn_itm sub = root.Subs_get(i); Tkn(src, sub, root, i, tmp_bfr); } - byte[] unencoded = tmp_bfr.Xto_bry_and_clear(); + byte[] unencoded = tmp_bfr.To_bry_and_clear(); encoder.Encode(tmp_bfr, unencoded); bfr.Add_bfr_and_clear(tmp_bfr); } diff --git a/400_xowa/src/gplx/xowa/xtns/pfuncs/ttls/Pfunc_filepath.java b/400_xowa/src/gplx/xowa/xtns/pfuncs/ttls/Pfunc_filepath.java index 66be163b7..012d795f2 100644 --- a/400_xowa/src/gplx/xowa/xtns/pfuncs/ttls/Pfunc_filepath.java +++ b/400_xowa/src/gplx/xowa/xtns/pfuncs/ttls/Pfunc_filepath.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.xtns.pfuncs.ttls; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.pfuncs.*; -import gplx.xowa.langs.*; -import gplx.xowa.nss.*; +import gplx.xowa.langs.*; import gplx.xowa.langs.kwds.*; +import gplx.xowa.wikis.nss.*; import gplx.xowa.files.*; import gplx.xowa.files.repos.*; import gplx.xowa.files.origs.*; import gplx.xowa.parsers.*; import gplx.xowa.parsers.tmpls.*; diff --git a/400_xowa/src/gplx/xowa/xtns/pfuncs/ttls/Pfunc_filepath_tst.java b/400_xowa/src/gplx/xowa/xtns/pfuncs/ttls/Pfunc_filepath_tst.java index 64fda8388..66fab468b 100644 --- a/400_xowa/src/gplx/xowa/xtns/pfuncs/ttls/Pfunc_filepath_tst.java +++ b/400_xowa/src/gplx/xowa/xtns/pfuncs/ttls/Pfunc_filepath_tst.java @@ -17,7 +17,7 @@ along with this program. If not, see . */ package gplx.xowa.xtns.pfuncs.ttls; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.pfuncs.*; import org.junit.*; import gplx.dbs.*; -import gplx.xowa.tdbs.*; +import gplx.xowa.wikis.tdbs.*; import gplx.xowa.files.*; import gplx.xowa.files.exts.*; import gplx.xowa.files.origs.*; import gplx.xowa.files.repos.*; import gplx.xowa.wikis.domains.*; import gplx.xowa.wikis.ttls.*; public class Pfunc_filepath_tst { @@ -26,8 +26,8 @@ public class Pfunc_filepath_tst { private Xowe_wiki en_wiki, commons_wiki; @Before public void init() { fxt.Reset(); - Io_mgr.I.InitEngine_mem(); - Db_conn_bldr.I.Reg_default_mem(); + Io_mgr.Instance.InitEngine_mem(); + Db_conn_bldr.Instance.Reg_default_mem(); Xoae_app app = fxt.App(); en_wiki = fxt.Wiki(); // Init_orig_mgr(en_wiki); @@ -40,7 +40,7 @@ public class Pfunc_filepath_tst { app.File_mgr().Repo_mgr().Set("src_commons", "mem/xowa/file/commons/src/", commons_wiki.Domain_str()); app.File_mgr().Repo_mgr().Set("trg_commons", "mem/xowa/file/commons/trg/", commons_wiki.Domain_str()); en_wiki.File_mgr().Repo_mgr().Add_repo(Bry_.new_a7("src_commons"), Bry_.new_a7("trg_commons")); - Io_mgr.I.CreateDir(Io_url_.new_dir_("mem/xowa/wiki/commons.wikimedia.org/ns/000/page/")); // HACK: create page_dir so Scan_dirs_zip will not identify commons as zipped; FIX: remove; WHEN: after redoing commons.css download logic + Io_mgr.Instance.CreateDir(Io_url_.new_dir_("mem/xowa/wiki/commons.wikimedia.org/ns/000/page/")); // HACK: create page_dir so Scan_dirs_zip will not identify commons as zipped; FIX: remove; WHEN: after redoing commons.css download logic } @Test public void Wiki_is_local() { fxt.Init_page_create(en_wiki, "File:A.png", ""); diff --git a/400_xowa/src/gplx/xowa/xtns/pfuncs/ttls/Pfunc_ns.java b/400_xowa/src/gplx/xowa/xtns/pfuncs/ttls/Pfunc_ns.java index 358b113f2..2c4d3f1a9 100644 --- a/400_xowa/src/gplx/xowa/xtns/pfuncs/ttls/Pfunc_ns.java +++ b/400_xowa/src/gplx/xowa/xtns/pfuncs/ttls/Pfunc_ns.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.xtns.pfuncs.ttls; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.pfuncs.*; -import gplx.xowa.langs.*; -import gplx.xowa.nss.*; +import gplx.xowa.langs.*; import gplx.xowa.langs.kwds.*; +import gplx.xowa.wikis.nss.*; import gplx.xowa.parsers.*; import gplx.xowa.parsers.tmpls.*; public class Pfunc_ns extends Pf_func_base { // EX: {{ns:6}} -> File private boolean encode; @@ -33,7 +33,7 @@ public class Pfunc_ns extends Pf_func_base { // EX: {{ns:6}} -> File if (ns_id == Int_.Min_value) { Object o = ctx.Wiki().Ns_mgr().Names_get_or_null(val_dat_ary, 0, val_dat_ary_len); if (o == null - && !Bry_.Eq(ctx.Lang().Key_bry(), Xol_lang_.Key_en)) // foreign language; english canonical names are still valid; REF.MW: Language.php|getNsIndex + && !Bry_.Eq(ctx.Lang().Key_bry(), Xol_lang_itm_.Key_en)) // foreign language; english canonical names are still valid; REF.MW: Language.php|getNsIndex o = canonical.Get_by_mid(val_dat_ary, 0, val_dat_ary_len); if (o != null) { Xow_ns itm = (Xow_ns)o; diff --git a/400_xowa/src/gplx/xowa/xtns/pfuncs/ttls/Pfunc_rel2abs.java b/400_xowa/src/gplx/xowa/xtns/pfuncs/ttls/Pfunc_rel2abs.java index 8f9bc84d9..21ed07192 100644 --- a/400_xowa/src/gplx/xowa/xtns/pfuncs/ttls/Pfunc_rel2abs.java +++ b/400_xowa/src/gplx/xowa/xtns/pfuncs/ttls/Pfunc_rel2abs.java @@ -17,7 +17,7 @@ along with this program. If not, see . */ package gplx.xowa.xtns.pfuncs.ttls; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.pfuncs.*; import gplx.core.primitives.*; import gplx.core.btries.*; -import gplx.xowa.langs.*; +import gplx.xowa.langs.*; import gplx.xowa.langs.kwds.*; import gplx.xowa.parsers.*; import gplx.xowa.parsers.tmpls.*; public class Pfunc_rel2abs extends Pf_func_base { @Override public boolean Func_require_colon_arg() {return true;} @@ -164,7 +164,7 @@ public class Pfunc_rel2abs extends Pf_func_base { } tmp_bfr.Add_mid(tmp, seg_ary[j] - tmp_adj, seg_ary[j+1] - tmp_adj); } - return tmp_bfr.Xto_bry_and_clear(); + return tmp_bfr.To_bry_and_clear(); } private static int[] seg_ary = new int[Xoa_ttl.Max_len]; @Override public int Id() {return Xol_kwd_grp_.Id_xtn_rel2abs;} diff --git a/400_xowa/src/gplx/xowa/xtns/pfuncs/ttls/Pfunc_titleparts.java b/400_xowa/src/gplx/xowa/xtns/pfuncs/ttls/Pfunc_titleparts.java index 3800fde5d..19610595b 100644 --- a/400_xowa/src/gplx/xowa/xtns/pfuncs/ttls/Pfunc_titleparts.java +++ b/400_xowa/src/gplx/xowa/xtns/pfuncs/ttls/Pfunc_titleparts.java @@ -17,7 +17,7 @@ along with this program. If not, see . */ package gplx.xowa.xtns.pfuncs.ttls; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.pfuncs.*; import gplx.core.primitives.*; import gplx.xowa.xtns.pfuncs.times.*; -import gplx.xowa.langs.*; +import gplx.xowa.langs.*; import gplx.xowa.langs.kwds.*; import gplx.xowa.parsers.*; import gplx.xowa.parsers.tmpls.*; public class Pfunc_titleparts extends Pf_func_base { @Override public boolean Func_require_colon_arg() {return true;} diff --git a/400_xowa/src/gplx/xowa/xtns/pfuncs/ttls/Pfunc_ttl.java b/400_xowa/src/gplx/xowa/xtns/pfuncs/ttls/Pfunc_ttl.java index b6fae2241..87f408a47 100644 --- a/400_xowa/src/gplx/xowa/xtns/pfuncs/ttls/Pfunc_ttl.java +++ b/400_xowa/src/gplx/xowa/xtns/pfuncs/ttls/Pfunc_ttl.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.xtns.pfuncs.ttls; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.pfuncs.*; -import gplx.xowa.langs.*; +import gplx.xowa.langs.*; import gplx.xowa.langs.kwds.*; import gplx.xowa.parsers.*; import gplx.xowa.parsers.tmpls.*; public class Pfunc_ttl extends Pf_func_base { @Override public void Func_evaluate(Xop_ctx ctx, byte[] src, Xot_invk caller, Xot_invk self, Bry_bfr bfr) { @@ -49,5 +49,5 @@ public class Pfunc_ttl extends Pf_func_base { public Pfunc_ttl(int id) {this.id = id;} @Override public int Id() {return id;} private int id; @Override public Pf_func New(int id, byte[] name) {return new Pfunc_ttl(id).Name_(name);} - public static final Pfunc_ttl _ = new Pfunc_ttl(-1); + public static final Pfunc_ttl Instance = new Pfunc_ttl(-1); } diff --git a/400_xowa/src/gplx/xowa/xtns/pfuncs/ttls/Pfunc_urlencode.java b/400_xowa/src/gplx/xowa/xtns/pfuncs/ttls/Pfunc_urlencode.java index 821da4863..35a3d0e57 100644 --- a/400_xowa/src/gplx/xowa/xtns/pfuncs/ttls/Pfunc_urlencode.java +++ b/400_xowa/src/gplx/xowa/xtns/pfuncs/ttls/Pfunc_urlencode.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.xtns.pfuncs.ttls; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.pfuncs.*; -import gplx.xowa.langs.*; +import gplx.xowa.langs.*; import gplx.xowa.langs.kwds.*; import gplx.xowa.parsers.*; import gplx.xowa.parsers.tmpls.*; public class Pfunc_urlencode extends Pf_func_base { // EX: {{urlencode:a b}} -> a+b @Override public boolean Func_require_colon_arg() {return true;} diff --git a/400_xowa/src/gplx/xowa/xtns/pfuncs/ttls/Pfunc_urlfunc.java b/400_xowa/src/gplx/xowa/xtns/pfuncs/ttls/Pfunc_urlfunc.java index 28571669f..b5304068d 100644 --- a/400_xowa/src/gplx/xowa/xtns/pfuncs/ttls/Pfunc_urlfunc.java +++ b/400_xowa/src/gplx/xowa/xtns/pfuncs/ttls/Pfunc_urlfunc.java @@ -17,7 +17,7 @@ along with this program. If not, see . */ package gplx.xowa.xtns.pfuncs.ttls; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.pfuncs.*; import gplx.xowa.wikis.xwikis.*; -import gplx.xowa.html.hrefs.*; +import gplx.xowa.htmls.hrefs.*; import gplx.xowa.parsers.*; import gplx.xowa.parsers.tmpls.*; public class Pfunc_urlfunc extends Pf_func_base { // EX: {{lc:A}} -> a @Override public boolean Func_require_colon_arg() {return true;} @@ -36,7 +36,7 @@ public class Pfunc_urlfunc extends Pf_func_base { // EX: {{lc:A}} -> a if (tid == Tid_canonical) trg.Add(Xoh_href_.Bry__https); // "https://" else - trg.Add(Xoa_consts.Url_relative_prefix); // "//" + trg.Add(gplx.core.net.Gfo_protocol_itm.Bry_relative); // "//" trg.Add(xwiki.Domain_bry()) // "commons.wikimedia.org" .Add(Xoh_href_.Bry__wiki) // "/wiki/" .Add_mid(ttl_ary, xwiki.Key_bry().length + 1, ttl_ary.length); // "A#b?c=d"; +1 for colon after "commons:"; NOTE: ugly way of getting rest of url, but ttl currently does not have Full_wo_wiki diff --git a/400_xowa/src/gplx/xowa/xtns/pfuncs/ttls/Pfunc_urlfunc_tst.java b/400_xowa/src/gplx/xowa/xtns/pfuncs/ttls/Pfunc_urlfunc_tst.java index 87a9ca65c..bdcf13025 100644 --- a/400_xowa/src/gplx/xowa/xtns/pfuncs/ttls/Pfunc_urlfunc_tst.java +++ b/400_xowa/src/gplx/xowa/xtns/pfuncs/ttls/Pfunc_urlfunc_tst.java @@ -30,13 +30,13 @@ public class Pfunc_urlfunc_tst { @Test public void Fullurl_arg() {fxt.Test_parse_tmpl_str_test("{{fullurle:a&b! c|action=edit}}" , "{{test}}", "//en.wikipedia.org/wiki/A%26b!_c?action=edit");} @Test public void Random() {fxt.Test_parse_tmpl_str_test("{{fullurle:a&b! c|action=edit}}" , "{{test|a|b|c}}", "//en.wikipedia.org/wiki/A%26b!_c?action=edit");} @Test public void Xwiki() { - fxt.Wiki().Xwiki_mgr().Add_full("commons", "commons.wikimedia.org"); + fxt.Wiki().Xwiki_mgr().Add_by_atrs("commons", "commons.wikimedia.org"); fxt.Reset().Test_parse_tmpl_str_test("{{localurl:commons:A}}" , "{{test}}", "//commons.wikimedia.org/wiki/A"); fxt.Reset().Test_parse_tmpl_str_test("{{fullurl:commons:A}}" , "{{test}}", "//commons.wikimedia.org/wiki/A"); fxt.Reset().Test_parse_tmpl_str_test("{{canonicalurl:commons:A}}" , "{{test}}", "https://commons.wikimedia.org/wiki/A"); } @Test public void Xwiki_qarg_fix() { - fxt.Wiki().Xwiki_mgr().Add_full("commons", "commons.wikimedia.org"); + fxt.Wiki().Xwiki_mgr().Add_by_atrs("commons", "commons.wikimedia.org"); fxt.Reset().Test_parse_tmpl_str_test("{{fullurl:commons:A|key=val}}" , "{{test}}", "//commons.wikimedia.org/wiki/A?key=val"); } } diff --git a/400_xowa/src/gplx/xowa/xtns/pfuncs/wikis/Pfunc_pagesincategory.java b/400_xowa/src/gplx/xowa/xtns/pfuncs/wikis/Pfunc_pagesincategory.java index 3062d9856..053c8292a 100644 --- a/400_xowa/src/gplx/xowa/xtns/pfuncs/wikis/Pfunc_pagesincategory.java +++ b/400_xowa/src/gplx/xowa/xtns/pfuncs/wikis/Pfunc_pagesincategory.java @@ -17,31 +17,70 @@ along with this program. If not, see . */ package gplx.xowa.xtns.pfuncs.wikis; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.pfuncs.*; import gplx.core.btries.*; -import gplx.xowa.langs.*; import gplx.xowa.langs.numbers.*; +import gplx.xowa.langs.*; import gplx.xowa.langs.kwds.*; import gplx.xowa.langs.numbers.*; +import gplx.xowa.wikis.nss.*; import gplx.xowa.wikis.data.*; import gplx.xowa.wikis.data.tbls.*; import gplx.xowa.parsers.*; import gplx.xowa.parsers.tmpls.*; public class Pfunc_pagesincategory extends Pf_func_base { - @Override public void Func_evaluate(Xop_ctx ctx, byte[] src, Xot_invk caller, Xot_invk self, Bry_bfr bb) { - byte[] val_dat_ary = Eval_argx(ctx, src, caller, self); if (Bry_.Len_eq_0(val_dat_ary)) {bb.Add_int_fixed(0, 1); return;} - val_dat_ary = Xoa_ttl.Replace_spaces(val_dat_ary); + @Override public int Id() {return Xol_kwd_grp_.Id_site_pagesincategory;} + @Override public Pf_func New(int id, byte[] name) {return new Pfunc_pagesincategory().Name_(name);} + @Override public void Func_evaluate(Xop_ctx ctx, byte[] src, Xot_invk caller, Xot_invk self, Bry_bfr bfr) { // REF.MW: /includes/parser/CoreParserFunctions.php|pagesincategory + byte[] ctg_ttl_bry = Eval_argx(ctx, src, caller, self); + if (Bry_.Len_eq_0(ctg_ttl_bry)) {bfr.Add_int_digits(1, 0); return;} // no title; EX: "{{PAGESINCATEGORY:}}" Xowe_wiki wiki = ctx.Wiki(); - int ctg_len = wiki.Db_mgr().Load_mgr().Load_ctg_count(val_dat_ary); - if (ctg_len == 0) {bb.Add_int_fixed(0, 1); return;} - - Xol_lang lang = wiki.Lang(); - if (trie == null) trie = Xol_kwd_mgr.trie_(lang.Kwd_mgr(), Xol_kwd_grp_.Id_str_rawsuffix); + Xowd_db_mgr core_data_mgr = wiki.Data__core_mgr(); + int ctg_id = core_data_mgr.Tbl__page().Select_id(Xow_ns_.Id_category, Xoa_ttl.Replace_spaces(ctg_ttl_bry)); + if (ctg_id == Xowd_page_itm.Id_null) {bfr.Add_int_digits(1, 0); return;} // category doesn't exist; EX: "{{PAGESINCATEGORY:Unknown_category}}" + Xowd_category_itm ctg_itm = core_data_mgr.Db__cat_core().Tbl__cat_core().Select(ctg_id); + if (ctg_itm == null) {bfr.Add_int_digits(1, 0); return;} // category counts don't exist; shouldn't happen + Xol_lang_itm lang = wiki.Lang(); + Btrie_slim_mgr num_format_trie = Xol_kwd_mgr.trie_(lang.Kwd_mgr(), Xol_kwd_grp_.Id_str_rawsuffix); + Btrie_slim_mgr type_page_trie = Xol_kwd_mgr.trie_(lang.Kwd_mgr(), Xol_kwd_grp_.Id_pagesincategory_pages); + Btrie_slim_mgr type_subc_trie = Xol_kwd_mgr.trie_(lang.Kwd_mgr(), Xol_kwd_grp_.Id_pagesincategory_subcats); + Btrie_slim_mgr type_file_trie = Xol_kwd_mgr.trie_(lang.Kwd_mgr(), Xol_kwd_grp_.Id_pagesincategory_files); + boolean fmt_num = true; byte[] type_bry = null; + int self_args_len = self.Args_len(); + byte[] arg_1 = self_args_len < 1 ? null : Pf_func_.Eval_arg_or_empty(ctx, src, caller, self, self_args_len, 0); + byte[] arg_2 = self_args_len < 2 ? null : Pf_func_.Eval_arg_or_empty(ctx, src, caller, self, self_args_len, 1); + if (num_format_trie.Match_exact(arg_1) != null) { // is arg_1 raw? + fmt_num = false; + type_bry = arg_2; + } + else { + type_bry = arg_1; + fmt_num = num_format_trie.Match_exact(arg_2) == null; + } + int num = ctg_itm.Count_all(); + if (type_bry != null) { + if (type_page_trie.Match_exact(type_bry) != null) num = ctg_itm.Count_pages(); + else if (type_subc_trie.Match_exact(type_bry) != null) num = ctg_itm.Count_subcs(); + else if (type_file_trie.Match_exact(type_bry) != null) num = ctg_itm.Count_files(); + } + byte[] num_bry = Int_.To_bry(num); + byte[] rslt = fmt_num ? lang.Num_mgr().Format_num(num_bry) : lang.Num_mgr().Raw(num_bry); + bfr.Add(rslt); + } + public void Func_evaluate_old(Xop_ctx ctx, byte[] src, Xot_invk caller, Xot_invk self, Bry_bfr bfr) { + byte[] ctg_ttl_bry = Eval_argx(ctx, src, caller, self); if (Bry_.Len_eq_0(ctg_ttl_bry)) {bfr.Add_int_digits(1, 0); return;} // no title; return 0; EX: "{{PAGESINCATEGORY:}}" + ctg_ttl_bry = Xoa_ttl.Replace_spaces(ctg_ttl_bry); + Xowe_wiki wiki = ctx.Wiki(); + int ctg_len = wiki.Db_mgr().Load_mgr().Load_ctg_count(ctg_ttl_bry); + if (ctg_len == 0) {bfr.Add_int_digits(1, 0); return;} + Xol_lang_itm lang = wiki.Lang(); + Btrie_slim_mgr num_format_trie = Xol_kwd_mgr.trie_(lang.Kwd_mgr(), Xol_kwd_grp_.Id_str_rawsuffix); +// Btrie_slim_mgr type_page_trie = Xol_kwd_mgr.trie_(lang.Kwd_mgr(), Xol_kwd_grp_.Id_pagesincategory_pages); +// Btrie_slim_mgr type_subc_trie = Xol_kwd_mgr.trie_(lang.Kwd_mgr(), Xol_kwd_grp_.Id_pagesincategory_subcats); +// Btrie_slim_mgr type_file_trie = Xol_kwd_mgr.trie_(lang.Kwd_mgr(), Xol_kwd_grp_.Id_pagesincategory_files); int self_args_len = self.Args_len(); boolean fmt_num = true; if (self_args_len == 1) { byte[] arg1 = Pf_func_.Eval_arg_or_empty(ctx, src, caller, self, self_args_len, 0); - if (arg1 != Bry_.Empty && trie.Match_exact(arg1, 0, arg1.length) != null) + if (arg1 != Bry_.Empty && num_format_trie.Match_exact(arg1, 0, arg1.length) != null) fmt_num = false; } Bry_bfr tmp_bfr = wiki.Utl__bfr_mkr().Get_b128().Mkr_rls(); - byte[] ctg_len_bry = tmp_bfr.Add_int_variable(ctg_len).Xto_bry_and_clear(); + byte[] ctg_len_bry = tmp_bfr.Add_int_variable(ctg_len).To_bry_and_clear(); byte[] rslt = fmt_num ? lang.Num_mgr().Format_num(ctg_len_bry) : lang.Num_mgr().Raw(ctg_len_bry); - bb.Add(rslt); - } private Btrie_slim_mgr trie; - @Override public int Id() {return Xol_kwd_grp_.Id_site_pagesincategory;} - @Override public Pf_func New(int id, byte[] name) {return new Pfunc_pagesincategory().Name_(name);} - public static final Pfunc_pagesincategory _ = new Pfunc_pagesincategory(); Pfunc_pagesincategory() {} + bfr.Add(rslt); + } + public static final Pfunc_pagesincategory Instance = new Pfunc_pagesincategory(); Pfunc_pagesincategory() {} } diff --git a/400_xowa/src/gplx/xowa/xtns/pfuncs/wikis/Pfunc_pagesincategory_tst.java b/400_xowa/src/gplx/xowa/xtns/pfuncs/wikis/Pfunc_pagesincategory_tst.java new file mode 100644 index 000000000..b5f2cbf88 --- /dev/null +++ b/400_xowa/src/gplx/xowa/xtns/pfuncs/wikis/Pfunc_pagesincategory_tst.java @@ -0,0 +1,65 @@ +/* +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.xtns.pfuncs.wikis; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.pfuncs.*; +import org.junit.*; import gplx.xowa.wikis.nss.*; import gplx.xowa.wikis.data.*; import gplx.xowa.wikis.data.tbls.*; +public class Pfunc_pagesincategory_tst { + private final Pfunc_pagesincategory_tstr tstr = new Pfunc_pagesincategory_tstr(); + @Before public void setup() {tstr.Init(); tstr.Init_category_counts("A", 1000, 2000, 3000);} + @Test public void Type__none() {tstr.Test_parse("{{PAGESINCATEGORY:A}}" , "6,000");} + @Test public void Type__none__fmt() {tstr.Test_parse("{{PAGESINCATEGORY:A|R}}" , "6000");} + @Test public void Type__page__1st() {tstr.Test_parse("{{PAGESINCATEGORY:A|pages}}" , "1,000");} + @Test public void Type__subc__1st() {tstr.Test_parse("{{PAGESINCATEGORY:A|subcats}}" , "2,000");} + @Test public void Type__file__1st() {tstr.Test_parse("{{PAGESINCATEGORY:A|files}}" , "3,000");} + @Test public void Type__page__2nd() {tstr.Test_parse("{{PAGESINCATEGORY:A|R|pages}}" , "1000");} + @Test public void Type__subc__2nd() {tstr.Test_parse("{{PAGESINCATEGORY:A|R|subcats}}" , "2000");} + @Test public void Type__file__2nd() {tstr.Test_parse("{{PAGESINCATEGORY:A|R|files}}" , "3000");} + @Test public void Zero__no_title() {tstr.Test_parse("{{PAGESINCATEGORY:}}" , "0");} + @Test public void Zero__missing_title() {tstr.Test_parse("{{PAGESINCATEGORY:Missing}}" , "0");} + @Test public void Wrong_args() {tstr.Test_parse("{{PAGESINCATEGORY:A|invalid|x}}" , "6,000");} // defaults to all,fmt +} +class Pfunc_pagesincategory_tstr { + private final Xop_fxt parser_tstr; + private final Xoae_app app; private final Xowe_wiki wiki; + private final Xowd_db_mgr core_data_mgr; + private final Xowd_page_tbl page_tbl; private final Xowd_cat_core_tbl cat_core_tbl; + public Pfunc_pagesincategory_tstr() { + Xoa_test_.Inet__init(); + this.app = Xoa_app_fxt.app_(); + this.wiki = Xoa_app_fxt.wiki_tst_(app); + Xoa_test_.Db__init__mem(wiki); + this.parser_tstr = new Xop_fxt(app, wiki); + this.core_data_mgr = wiki.Data__core_mgr(); + this.page_tbl = core_data_mgr.Tbl__page(); + this.cat_core_tbl = core_data_mgr.Db__cat_core().Tbl__cat_core(); + } + public void Init() { + parser_tstr.Reset(); + } + public void Init_category_counts(String category_title, int pages, int subcs, int files) { + int page_id = 1; + page_tbl.Insert_bgn(); + page_tbl.Insert_cmd_by_batch(page_id, Xow_ns_.Id_category, Bry_.new_u8(category_title), Bool_.N, DateAdp_.Now(), 1, 1, 1, 1); + page_tbl.Insert_end(); + cat_core_tbl.Insert_bgn(); + cat_core_tbl.Insert_cmd_by_batch(page_id, pages, subcs, files, Byte_.Zero, 1); + cat_core_tbl.Insert_end(); + } + public void Test_parse(String raw, String expd) { + parser_tstr.Test_html_full_str(raw, expd); + } +} diff --git a/400_xowa/src/gplx/xowa/xtns/pfuncs/wikis/Pfunc_wiki_props.java b/400_xowa/src/gplx/xowa/xtns/pfuncs/wikis/Pfunc_wiki_props.java index 6d2c1fb78..4df654b89 100644 --- a/400_xowa/src/gplx/xowa/xtns/pfuncs/wikis/Pfunc_wiki_props.java +++ b/400_xowa/src/gplx/xowa/xtns/pfuncs/wikis/Pfunc_wiki_props.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.xtns.pfuncs.wikis; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.pfuncs.*; -import gplx.xowa.langs.*; +import gplx.xowa.langs.*; import gplx.xowa.langs.kwds.*; import gplx.xowa.parsers.*; import gplx.xowa.parsers.tmpls.*; import gplx.xowa.wikis.metas.*; public class Pfunc_wiki_props extends Pf_func_base { @@ -38,5 +38,5 @@ public class Pfunc_wiki_props extends Pf_func_base { } } @Override public Pf_func New(int id, byte[] name) {return new Pfunc_wiki_props(id).Name_(name);} - public static final Pfunc_wiki_props _ = new Pfunc_wiki_props(-1); + public static final Pfunc_wiki_props Instance = new Pfunc_wiki_props(-1); } diff --git a/400_xowa/src/gplx/xowa/xtns/pfuncs/wikis/Pfunc_wiki_props_tst.java b/400_xowa/src/gplx/xowa/xtns/pfuncs/wikis/Pfunc_wiki_props_tst.java index 0519a611e..4463d8a02 100644 --- a/400_xowa/src/gplx/xowa/xtns/pfuncs/wikis/Pfunc_wiki_props_tst.java +++ b/400_xowa/src/gplx/xowa/xtns/pfuncs/wikis/Pfunc_wiki_props_tst.java @@ -32,7 +32,7 @@ public class Pfunc_wiki_props_tst { @Test public void NumArticles_raw() {Init_numArticles(1234); fxt.Test_parse_tmpl_str_test("{{NUMBEROFARTICLES:R}}" , "{{test}}", "1234"); Init_numArticles(2);} @Test public void NumArticles_fmt() {Init_numArticles(1234); fxt.Test_parse_tmpl_str_test("{{NUMBEROFARTICLES}}" , "{{test}}", "1,234"); Init_numArticles(2);} @Test public void NumArticles_fmt_i18n() { // PURPOSE: use lang's num_mgr; PAGE:ru.u:Main_Page; DATE:2014-07-03 - fxt.Lang_by_id_(Xol_lang_itm_.Id_ru); + fxt.Lang_by_id_(Xol_lang_stub_.Id_ru); Init_numArticles(1234); fxt.Test_parse_tmpl_str_test("{{NUMBEROFARTICLES}}" , "{{test}}", "1234"); Init_numArticles(2); } private Pfunc_wiki_props_tst Init_numArticles(int v) {fxt.Wiki().Stats().NumArticles_(v); return this;} diff --git a/400_xowa/src/gplx/xowa/xtns/pfuncs/wikis/Pfunc_wiki_stats.java b/400_xowa/src/gplx/xowa/xtns/pfuncs/wikis/Pfunc_wiki_stats.java index 68c1aa6cd..401253bb7 100644 --- a/400_xowa/src/gplx/xowa/xtns/pfuncs/wikis/Pfunc_wiki_stats.java +++ b/400_xowa/src/gplx/xowa/xtns/pfuncs/wikis/Pfunc_wiki_stats.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.xtns.pfuncs.wikis; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.pfuncs.*; -import gplx.xowa.langs.*; +import gplx.xowa.langs.*; import gplx.xowa.langs.kwds.*; import gplx.xowa.parsers.*; import gplx.xowa.parsers.tmpls.*; import gplx.xowa.wikis.metas.*; public class Pfunc_wiki_stats extends Pf_func_base { @@ -48,5 +48,5 @@ public class Pfunc_wiki_stats extends Pf_func_base { public Pfunc_wiki_stats(int id) {this.id = id;} @Override public int Id() {return id;} private int id; @Override public Pf_func New(int id, byte[] name) {return new Pfunc_wiki_stats(id).Name_(name);} - public static final Pfunc_wiki_stats _ = new Pfunc_wiki_stats(-1); + public static final Pfunc_wiki_stats Instance = new Pfunc_wiki_stats(-1); } diff --git a/400_xowa/src/gplx/xowa/xtns/poems/Poem_nde.java b/400_xowa/src/gplx/xowa/xtns/poems/Poem_nde.java index 713054bce..ac203b665 100644 --- a/400_xowa/src/gplx/xowa/xtns/poems/Poem_nde.java +++ b/400_xowa/src/gplx/xowa/xtns/poems/Poem_nde.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.xtns.poems; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; -import gplx.langs.htmls.*; import gplx.xowa.html.*; +import gplx.langs.htmls.*; import gplx.xowa.htmls.*; import gplx.xowa.parsers.*; import gplx.xowa.parsers.xndes.*; public class Poem_nde implements Xox_xnde { private Xop_root_tkn xtn_root; @@ -74,7 +74,7 @@ public class Poem_nde implements Xox_xnde { if (indent_enabled) bfr.Add(Html_tag_.Span_rhs); // if "\n:", add line_bgn = line_end + 1; // +1 to skip over end "\n" } - return bfr.Xto_bry_and_clear(); + return bfr.To_bry_and_clear(); } private static byte[] Div_poem_bgn = Bry_.new_a7("
      \n

      \n") // NOTE: always enclose in

      ; MW does this implicitly in its modified parse; DATE:2014-04-27 diff --git a/400_xowa/src/gplx/xowa/xtns/proofreadPage/Pp_index_parser.java b/400_xowa/src/gplx/xowa/xtns/proofreadPage/Pp_index_parser.java index 06c09ee42..929b570ae 100644 --- a/400_xowa/src/gplx/xowa/xtns/proofreadPage/Pp_index_parser.java +++ b/400_xowa/src/gplx/xowa/xtns/proofreadPage/Pp_index_parser.java @@ -17,7 +17,7 @@ along with this program. If not, see . */ package gplx.xowa.xtns.proofreadPage; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.core.primitives.*; -import gplx.xowa.nss.*; +import gplx.xowa.wikis.nss.*; import gplx.xowa.parsers.*; import gplx.xowa.parsers.logs.*; import gplx.xowa.parsers.xndes.*; import gplx.xowa.parsers.lnkis.*; import gplx.xowa.parsers.tmpls.*; class Pp_index_parser { public static Pp_index_page Parse(Xowe_wiki wiki, Xop_ctx ctx, Xoa_ttl index_ttl, int ns_page_id) { diff --git a/400_xowa/src/gplx/xowa/xtns/proofreadPage/Pp_pagelist_nde.java b/400_xowa/src/gplx/xowa/xtns/proofreadPage/Pp_pagelist_nde.java index c6809442b..af245aedf 100644 --- a/400_xowa/src/gplx/xowa/xtns/proofreadPage/Pp_pagelist_nde.java +++ b/400_xowa/src/gplx/xowa/xtns/proofreadPage/Pp_pagelist_nde.java @@ -16,10 +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.xtns.proofreadPage; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; -import gplx.xowa.html.*; -import gplx.xowa.parsers.*; import gplx.xowa.parsers.logs.*; import gplx.xowa.parsers.xndes.*; -public class Pp_pagelist_nde implements Xox_xnde, Xop_xnde_atr_parser { // TODO: - public void Xatr_parse(Xowe_wiki wiki, byte[] src, Xop_xatr_itm xatr, Object xatr_key_obj) {} +import gplx.xowa.htmls.*; +import gplx.xowa.parsers.*; import gplx.xowa.parsers.logs.*; import gplx.xowa.parsers.xndes.*; import gplx.xowa.parsers.htmls.*; +public class Pp_pagelist_nde implements Xox_xnde { // TODO: + public void Xatr__set(Xowe_wiki wiki, byte[] src, Mwh_atr_itm xatr, Object xatr_id_obj) {} public void Xtn_parse(Xowe_wiki wiki, Xop_ctx ctx, Xop_root_tkn root, byte[] src, Xop_xnde_tkn xnde) { boolean log_wkr_enabled = Log_wkr != Xop_log_basic_wkr.Null; if (log_wkr_enabled) Log_wkr.Log_end_xnde(ctx.Cur_page(), Xop_log_basic_wkr.Tid_hiero, src, xnde); } public static Xop_log_basic_wkr Log_wkr = Xop_log_basic_wkr.Null; diff --git a/400_xowa/src/gplx/xowa/xtns/proofreadPage/Pp_pagequality_nde.java b/400_xowa/src/gplx/xowa/xtns/proofreadPage/Pp_pagequality_nde.java index 09d2e2cb3..9333e8caa 100644 --- a/400_xowa/src/gplx/xowa/xtns/proofreadPage/Pp_pagequality_nde.java +++ b/400_xowa/src/gplx/xowa/xtns/proofreadPage/Pp_pagequality_nde.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.xtns.proofreadPage; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; -import gplx.xowa.html.*; +import gplx.xowa.htmls.*; import gplx.xowa.parsers.*; import gplx.xowa.parsers.xndes.*; public class Pp_pagequality_nde implements Xox_xnde { public void Xtn_parse(Xowe_wiki wiki, Xop_ctx ctx, Xop_root_tkn root, byte[] src, Xop_xnde_tkn xnde) {} // FUTURE: noop for now so it doesn't show (since it's useless) diff --git a/400_xowa/src/gplx/xowa/xtns/proofreadPage/Pp_pages_nde.java b/400_xowa/src/gplx/xowa/xtns/proofreadPage/Pp_pages_nde.java index 9ac31533b..33872c594 100644 --- a/400_xowa/src/gplx/xowa/xtns/proofreadPage/Pp_pages_nde.java +++ b/400_xowa/src/gplx/xowa/xtns/proofreadPage/Pp_pages_nde.java @@ -17,12 +17,12 @@ along with this program. If not, see . */ package gplx.xowa.xtns.proofreadPage; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.core.primitives.*; -import gplx.xowa.cfgs.*; -import gplx.xowa.html.*; -import gplx.xowa.nss.*; -import gplx.xowa.xtns.lst.*; import gplx.xowa.pages.*; import gplx.xowa.wikis.data.tbls.*; -import gplx.xowa.parsers.*; import gplx.xowa.parsers.amps.*; import gplx.xowa.parsers.xndes.*; import gplx.xowa.parsers.lnkis.*; import gplx.xowa.parsers.tmpls.*; -public class Pp_pages_nde implements Xox_xnde, Xop_xnde_atr_parser { +import gplx.xowa.apps.cfgs.*; +import gplx.xowa.htmls.*; +import gplx.xowa.wikis.nss.*; +import gplx.xowa.xtns.lst.*; import gplx.xowa.wikis.pages.*; import gplx.xowa.wikis.data.tbls.*; +import gplx.xowa.parsers.*; import gplx.xowa.parsers.amps.*; import gplx.xowa.parsers.xndes.*; import gplx.xowa.parsers.htmls.*; import gplx.xowa.parsers.lnkis.*; import gplx.xowa.parsers.tmpls.*; +public class Pp_pages_nde implements Xox_xnde, Mwh_atr_itm_owner { private boolean xtn_literal = false; private Xop_root_tkn xtn_root; private byte[] index_ttl_bry, bgn_page_bry, end_page_bry, bgn_sect_bry, end_sect_bry; @@ -36,23 +36,23 @@ public class Pp_pages_nde implements Xox_xnde, Xop_xnde_atr_parser { private Xoae_app app; private Xowe_wiki wiki; private Xop_ctx ctx; private Gfo_usr_dlg usr_dlg; private byte[] src; private Xop_xnde_tkn xnde_tkn; private Xoa_ttl cur_page_ttl; - public void Xatr_parse(Xowe_wiki wiki, byte[] src, Xop_xatr_itm xatr, Object xatr_key_obj) { - if (xatr_key_obj == null) return; - Byte_obj_val xatr_key = (Byte_obj_val)xatr_key_obj; - switch (xatr_key.Val()) { - case Xatr_index_ttl: index_ttl_bry = xatr.Val_as_bry(src); break; - case Xatr_bgn_page: bgn_page_bry = xatr.Val_as_bry(src); break; - case Xatr_end_page: end_page_bry = xatr.Val_as_bry(src); break; - case Xatr_bgn_sect: bgn_sect_bry = xatr.Val_as_bry(src); break; - case Xatr_end_sect: end_sect_bry = xatr.Val_as_bry(src); break; - case Xatr_include: include = xatr.Val_as_bry(src); break; - case Xatr_exclude: exclude = xatr.Val_as_bry(src); break; - case Xatr_step: step_bry = xatr.Val_as_bry(src); break; - case Xatr_onlysection: onlysection = xatr.Val_as_bry(src); break; - case Xatr_header: header = xatr.Val_as_bry(src); break; - case Xatr_toc_cur: toc_cur = xatr.Val_as_bry(src); break; - case Xatr_toc_prv: toc_prv = xatr.Val_as_bry(src); break; - case Xatr_toc_nxt: toc_nxt = xatr.Val_as_bry(src); break; + public void Xatr__set(Xowe_wiki wiki, byte[] src, Mwh_atr_itm xatr, Object xatr_id_obj) { + if (xatr_id_obj == null) return; + Byte_obj_val xatr_id = (Byte_obj_val)xatr_id_obj; + switch (xatr_id.Val()) { + case Xatr_index_ttl: index_ttl_bry = xatr.Val_as_bry(); break; + case Xatr_bgn_page: bgn_page_bry = xatr.Val_as_bry(); break; + case Xatr_end_page: end_page_bry = xatr.Val_as_bry(); break; + case Xatr_bgn_sect: bgn_sect_bry = xatr.Val_as_bry(); break; + case Xatr_end_sect: end_sect_bry = xatr.Val_as_bry(); break; + case Xatr_include: include = xatr.Val_as_bry(); break; + case Xatr_exclude: exclude = xatr.Val_as_bry(); break; + case Xatr_step: step_bry = xatr.Val_as_bry(); break; + case Xatr_onlysection: onlysection = xatr.Val_as_bry(); break; + case Xatr_header: header = xatr.Val_as_bry(); break; + case Xatr_toc_cur: toc_cur = xatr.Val_as_bry(); break; + case Xatr_toc_prv: toc_prv = xatr.Val_as_bry(); break; + case Xatr_toc_nxt: toc_nxt = xatr.Val_as_bry(); break; } } public void Xtn_parse(Xowe_wiki wiki, Xop_ctx ctx, Xop_root_tkn root, byte[] src, Xop_xnde_tkn xnde) { @@ -82,7 +82,7 @@ public class Pp_pages_nde implements Xox_xnde, Xop_xnde_atr_parser { private boolean Init_vars(Xowe_wiki wiki, Xop_ctx ctx, byte[] src, Xop_xnde_tkn xnde) { this.wiki = wiki; this.ctx = ctx; app = wiki.Appe(); usr_dlg = app.Usr_dlg(); this.src = src; this.xnde_tkn = xnde; cur_page_ttl = ctx.Cur_page().Ttl(); - Xop_xatr_itm.Xatr_parse(app, this, xtn_atrs, wiki, src, xnde); + Xox_xnde_.Xatr__set(wiki, this, xatrs_hash, src, xnde); Xop_amp_mgr amp_mgr = wiki.Appe().Parser_amp_mgr(); index_ttl_bry = amp_mgr.Decode_as_bry(index_ttl_bry); bgn_page_bry = amp_mgr.Decode_as_bry(bgn_page_bry); @@ -134,13 +134,13 @@ public class Pp_pages_nde implements Xox_xnde, Xop_xnde_atr_parser { full_bfr.Add_byte_pipe() .Add(caption) .Add(Xop_tkn_.Lnki_end); - return full_bfr.Xto_bry_and_clear(); + return full_bfr.To_bry_and_clear(); } private byte[] Get_caption(Bry_bfr full_bfr, byte[] index_page_src, Xop_lnki_tkn lnki) { byte[] rv = Bry_.Empty; try { wiki.Html_mgr().Html_wtr().Write_tkn(full_bfr, ctx, Xoh_wtr_ctx.Basic, index_page_src, null, -1, lnki.Caption_tkn()); - rv = full_bfr.Xto_bry_and_clear(); + rv = full_bfr.To_bry_and_clear(); } catch (Exception e) { wiki.Appe().Usr_dlg().Warn_many("", "", "failed to write caption: page=~{0} lnki=~{1} err=~{2}", ctx.Cur_page().Ttl().Full_db(), String_.new_u8(index_page_src, lnki.Src_bgn(), lnki.Src_end()), Err_.Message_gplx_full(e)); @@ -205,9 +205,9 @@ public class Pp_pages_nde implements Xox_xnde, Xop_xnde_atr_parser { .Add(arg.Val()) ; } - full_bfr.Add(Xoa_consts.Invk_end); + full_bfr.Add(gplx.xowa.parsers.tmpls.Xop_curly_end_lxr.Hook); full_bfr.Add(rv); - return full_bfr.Xto_bry_and_clear(); + return full_bfr.To_bry_and_clear(); } private Xoa_ttl[] Get_ttls_from_xnde_args() { if (!Chk_step()) return Ttls_null; @@ -306,7 +306,7 @@ public class Pp_pages_nde implements Xox_xnde, Xop_xnde_atr_parser { .Add(index_ttl_bry) // EX: 'File.djvu' .Add_byte(Byte_ascii.Slash) // EX: '/' .Add_int_variable(page.Val()); // EX: '123' - rv[rv_idx++] = Xoa_ttl.parse(wiki, ttl_bfr.Xto_bry_and_clear()); + rv[rv_idx++] = Xoa_ttl.parse(wiki, ttl_bfr.To_bry_and_clear()); } ttl_bfr.Mkr_rls(); return rv; @@ -359,7 +359,7 @@ public class Pp_pages_nde implements Xox_xnde, Xop_xnde_atr_parser { } page_bfr.Mkr_rls(); ctx.Tmpl_output_(null); - return full_bfr.Xto_bry_and_clear(); + return full_bfr.To_bry_and_clear(); } private Xop_root_tkn Bld_root_nde(Bry_bfr page_bfr, Hash_adp_bry lst_page_regy, byte[] wikitext) { Xop_ctx tmp_ctx = Xop_ctx.new_sub_page_(wiki, ctx, lst_page_regy); @@ -371,7 +371,7 @@ public class Pp_pages_nde implements Xox_xnde, Xop_xnde_atr_parser { tmp_parser.Parse_text_to_wdom(rv, tmp_ctx, tmp_ctx.Tkn_mkr(), wikitext, Xop_parser_.Doc_bgn_bos); return rv; } - private static Hash_adp_bry xtn_atrs = Hash_adp_bry.ci_a7() // NOTE: these do not seem to be i18n'd; no ProofreadPage.magic.php; ProofreadPage.i18n.php only has messages; ProofreadPage.body.php refers to names literally + private static Hash_adp_bry xatrs_hash = Hash_adp_bry.ci_a7() // NOTE: these do not seem to be i18n'd; no ProofreadPage.magic.php; ProofreadPage.i18n.php only has messages; ProofreadPage.body.php refers to names literally .Add_str_obj("index" , Byte_obj_val.new_(Pp_pages_nde.Xatr_index_ttl)) .Add_str_obj("from" , Byte_obj_val.new_(Pp_pages_nde.Xatr_bgn_page)) .Add_str_obj("to" , Byte_obj_val.new_(Pp_pages_nde.Xatr_end_page)) diff --git a/400_xowa/src/gplx/xowa/xtns/proofreadPage/Pp_pages_nde_basic_tst.java b/400_xowa/src/gplx/xowa/xtns/proofreadPage/Pp_pages_nde_basic_tst.java index 9b3393053..5eb26271e 100644 --- a/400_xowa/src/gplx/xowa/xtns/proofreadPage/Pp_pages_nde_basic_tst.java +++ b/400_xowa/src/gplx/xowa/xtns/proofreadPage/Pp_pages_nde_basic_tst.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.xtns.proofreadPage; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; -import org.junit.*; import gplx.xowa.cfgs.*; +import org.junit.*; import gplx.xowa.apps.cfgs.*; public class Pp_pages_nde_basic_tst { private Xop_fxt fxt = new Xop_fxt(); @Before public void Init() { - Io_mgr.I.InitEngine_mem(); + Io_mgr.Instance.InitEngine_mem(); fxt.Wiki().Xtn_mgr().Xtn_proofread().Enabled_y_(); fxt.Wiki().Db_mgr().Load_mgr().Clear(); // must clear; otherwise fails b/c files get deleted, but wiki.data_mgr caches the Xowd_regy_mgr (the .reg file) in memory; fxt.Wiki().Ns_mgr().Add_new(Xowc_xtn_pages.Ns_page_id_default, "Page").Add_new(Xowc_xtn_pages.Ns_index_id_default, "Index").Init(); diff --git a/400_xowa/src/gplx/xowa/xtns/proofreadPage/Pp_pages_nde_hdr_tst.java b/400_xowa/src/gplx/xowa/xtns/proofreadPage/Pp_pages_nde_hdr_tst.java index e19cfe467..e53b7cb0b 100644 --- a/400_xowa/src/gplx/xowa/xtns/proofreadPage/Pp_pages_nde_hdr_tst.java +++ b/400_xowa/src/gplx/xowa/xtns/proofreadPage/Pp_pages_nde_hdr_tst.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.xtns.proofreadPage; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; -import org.junit.*; import gplx.xowa.cfgs.*; +import org.junit.*; import gplx.xowa.apps.cfgs.*; public class Pp_pages_nde_hdr_tst { private Xop_fxt fxt = new Xop_fxt(); @Before public void Init() { - Io_mgr.I.InitEngine_mem(); + Io_mgr.Instance.InitEngine_mem(); fxt.Wiki().Xtn_mgr().Xtn_proofread().Enabled_y_(); fxt.Wiki().Cache_mgr().Page_cache().Free_mem_all(); fxt.Wiki().Db_mgr().Load_mgr().Clear(); // must clear; otherwise fails b/c files get deleted, but wiki.data_mgr caches the Xowd_regy_mgr (the .reg file) in memory; diff --git a/400_xowa/src/gplx/xowa/xtns/proofreadPage/Pp_pages_nde_index_tst.java b/400_xowa/src/gplx/xowa/xtns/proofreadPage/Pp_pages_nde_index_tst.java index ab232845f..0e5fa20e0 100644 --- a/400_xowa/src/gplx/xowa/xtns/proofreadPage/Pp_pages_nde_index_tst.java +++ b/400_xowa/src/gplx/xowa/xtns/proofreadPage/Pp_pages_nde_index_tst.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.xtns.proofreadPage; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; -import org.junit.*; import gplx.xowa.cfgs.*; +import org.junit.*; import gplx.xowa.apps.cfgs.*; public class Pp_pages_nde_index_tst { private Xop_fxt fxt = new Xop_fxt(); @Before public void Init() { - Io_mgr.I.InitEngine_mem(); + Io_mgr.Instance.InitEngine_mem(); fxt.Wiki().Xtn_mgr().Xtn_proofread().Enabled_y_(); fxt.Wiki().Db_mgr().Load_mgr().Clear(); // must clear; otherwise fails b/c files get deleted, but wiki.data_mgr caches the Xowd_regy_mgr (the .reg file) in memory; fxt.Wiki().Ns_mgr().Add_new(Xowc_xtn_pages.Ns_page_id_default, "Page").Add_new(Xowc_xtn_pages.Ns_index_id_default, "Index").Init(); diff --git a/400_xowa/src/gplx/xowa/xtns/proofreadPage/Pp_xtn_mgr.java b/400_xowa/src/gplx/xowa/xtns/proofreadPage/Pp_xtn_mgr.java index 62a0e47c2..c49ed72eb 100644 --- a/400_xowa/src/gplx/xowa/xtns/proofreadPage/Pp_xtn_mgr.java +++ b/400_xowa/src/gplx/xowa/xtns/proofreadPage/Pp_xtn_mgr.java @@ -24,6 +24,6 @@ public class Pp_xtn_mgr extends Xox_mgr_base { @Override public Xox_mgr Clone_new() {return new Pp_xtn_mgr();} @Override public void Xtn_init_by_wiki(Xowe_wiki wiki) { if (!this.Enabled_manually()) - this.Enabled_(wiki.Domain_tid() == Xow_domain_type_.Int__wikisource); // only enable for wikisource + this.Enabled_(wiki.Domain_tid() == Xow_domain_tid_.Int__wikisource); // only enable for wikisource } } diff --git a/400_xowa/src/gplx/xowa/xtns/quiz/Quiz_xnde.java b/400_xowa/src/gplx/xowa/xtns/quiz/Quiz_xnde.java index 87ff0c9b1..ff089d217 100644 --- a/400_xowa/src/gplx/xowa/xtns/quiz/Quiz_xnde.java +++ b/400_xowa/src/gplx/xowa/xtns/quiz/Quiz_xnde.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.xtns.quiz; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; -import gplx.xowa.html.*; +import gplx.xowa.htmls.*; import gplx.xowa.parsers.*; import gplx.xowa.parsers.logs.*; import gplx.xowa.parsers.lnkis.*; import gplx.xowa.parsers.xndes.*; public class Quiz_xnde implements Xox_xnde { public void Xtn_parse(Xowe_wiki wiki, Xop_ctx ctx, Xop_root_tkn root, byte[] src, Xop_xnde_tkn xnde) {} diff --git a/400_xowa/src/gplx/xowa/xtns/relatedArticles/Articles_func.java b/400_xowa/src/gplx/xowa/xtns/relatedArticles/Articles_func.java index 65f5b914b..1c23329b2 100644 --- a/400_xowa/src/gplx/xowa/xtns/relatedArticles/Articles_func.java +++ b/400_xowa/src/gplx/xowa/xtns/relatedArticles/Articles_func.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.xtns.relatedArticles; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; -import gplx.xowa.langs.*; -import gplx.xowa.html.*; import gplx.xowa.pages.skins.*; import gplx.xowa.xtns.pfuncs.*; +import gplx.xowa.langs.*; import gplx.xowa.langs.kwds.*; +import gplx.xowa.htmls.*; import gplx.xowa.wikis.pages.skins.*; import gplx.xowa.xtns.pfuncs.*; import gplx.xowa.parsers.*; import gplx.xowa.parsers.tmpls.*; public class Articles_func extends Pf_func_base { @Override public int Id() {return Xol_kwd_grp_.Id_relatedArticles;} @@ -41,7 +41,7 @@ public class Articles_func extends Pf_func_base { xtn_itm.Add(new Articles_itm(ttl, text)); } } - public static final Articles_func _ = new Articles_func(); Articles_func() {} + public static final Articles_func Instance = new Articles_func(); Articles_func() {} private static final byte[] Const_dlm = new byte[] {Byte_ascii.Amp, Byte_ascii.Amp}; } class Articles_itm { @@ -55,7 +55,7 @@ class Articles_itm { class Articles_itm_fmtr implements Bry_fmtr_arg { private Xowe_wiki wiki; private List_adp itms; public void Init(Xowe_wiki wiki, List_adp itms) {this.wiki = wiki; this.itms = itms;} - public void XferAry(Bry_bfr bfr, int idx) { + public void Fmt__do(Bry_bfr bfr) { int len = itms.Count(); for (int i = 0; i < len; i++) { Articles_itm itm = (Articles_itm)itms.Get_at(i); @@ -64,7 +64,7 @@ class Articles_itm_fmtr implements Bry_fmtr_arg { } } private static final Bry_fmtr fmtr = Bry_fmtr.new_("\n

    1. ~{text}
    2. ", "ttl", "text"); - public static final Articles_itm_fmtr _ = new Articles_itm_fmtr(); Articles_itm_fmtr() {} + public static final Articles_itm_fmtr Instance = new Articles_itm_fmtr(); Articles_itm_fmtr() {} } class Articles_xtn_skin_itm implements Xopg_xtn_skin_itm { private List_adp itms = List_adp_.new_(); @@ -76,7 +76,7 @@ class Articles_xtn_skin_itm implements Xopg_xtn_skin_itm { itms_fmtr.Init(wiki, itms); html_fmtr.Bld_bfr_many(bfr, wiki.Msg_mgr().Val_by_key_obj("relatedarticles-title"), itms_fmtr); } - private static final Articles_itm_fmtr itms_fmtr = Articles_itm_fmtr._; + private static final Articles_itm_fmtr itms_fmtr = Articles_itm_fmtr.Instance; private static final Bry_fmtr html_fmtr = Bry_fmtr.new_(String_.Concat_lines_nl_skip_last ( "
      " , "

      ~{h3}

      " diff --git a/400_xowa/src/gplx/xowa/xtns/relatedArticles/Articles_func_tst.java b/400_xowa/src/gplx/xowa/xtns/relatedArticles/Articles_func_tst.java index 26dd4fc46..311c25200 100644 --- a/400_xowa/src/gplx/xowa/xtns/relatedArticles/Articles_func_tst.java +++ b/400_xowa/src/gplx/xowa/xtns/relatedArticles/Articles_func_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.xtns.relatedArticles; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; -import org.junit.*; import gplx.xowa.pages.skins.*; +import org.junit.*; import gplx.xowa.wikis.pages.skins.*; public class Articles_func_tst { @Before public void init() {fxt.Reset();} private Articles_func_fxt fxt = new Articles_func_fxt(); @Test public void Basic() { @@ -44,7 +44,7 @@ class Articles_func_fxt { fxt.Test_parse_page_all_str(raw, ""); Xopg_xtn_skin_fmtr_arg fmtr_arg = new Xopg_xtn_skin_fmtr_arg(fxt.Page(), Xopg_xtn_skin_itm_tid.Tid_sidebar); Bry_bfr bfr = Bry_bfr.new_(); - fmtr_arg.XferAry(bfr, 0); - Tfds.Eq_str_lines(expd, bfr.Xto_str_and_clear()); + fmtr_arg.Fmt__do(bfr); + Tfds.Eq_str_lines(expd, bfr.To_str_and_clear()); } } diff --git a/400_xowa/src/gplx/xowa/xtns/relatedSites/Sites_html_bldr.java b/400_xowa/src/gplx/xowa/xtns/relatedSites/Sites_html_bldr.java index d467dcc2c..dfc82d316 100644 --- a/400_xowa/src/gplx/xowa/xtns/relatedSites/Sites_html_bldr.java +++ b/400_xowa/src/gplx/xowa/xtns/relatedSites/Sites_html_bldr.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.xtns.relatedSites; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; -import gplx.xowa.wikis.domains.*; import gplx.xowa.wikis.xwikis.*; import gplx.xowa.pages.skins.*; -import gplx.xowa.html.hrefs.*; +import gplx.xowa.wikis.domains.*; import gplx.xowa.wikis.xwikis.*; import gplx.xowa.wikis.pages.skins.*; +import gplx.xowa.htmls.hrefs.*; class Sites_xtn_skin_itm implements Xopg_xtn_skin_itm { private List_adp itms = List_adp_.new_(); private Sites_html_bldr html_bldr; @@ -41,7 +41,7 @@ public class Sites_html_bldr implements Bry_fmtr_arg { hash.Clear(); fmtr_grp.Bld_bfr_many(bfr, xtn_mgr.Msg_related_sites(), this); } - public void XferAry(Bry_bfr bfr, int idx) { + public void Fmt__do(Bry_bfr bfr) { Xowe_wiki wiki = xtn_mgr.Wiki(); Xoh_href_parser href_parser = wiki.Appe().Html__href_parser(); for (int i = 0; i < list_len; ++i) { @@ -55,8 +55,8 @@ public class Sites_html_bldr implements Bry_fmtr_arg { } private static byte[] Xto_href(Bry_bfr tmp_bfr, Bry_fmtr url_fmtr, Xoh_href_parser href_parser, Xowe_wiki wiki, Xow_xwiki_itm xwiki_itm, byte[] ttl_page_db) { Xoa_app_.Utl__encoder_mgr().Href().Encode(tmp_bfr, ttl_page_db); - byte[] rv = url_fmtr.Fmt_(xwiki_itm.Url_fmt()).Bld_bry_many(tmp_bfr, tmp_bfr.Xto_bry_and_clear()); - if (xwiki_itm.Domain_tid() != Xow_domain_type_.Int__other) + byte[] rv = url_fmtr.Fmt_(xwiki_itm.Url_fmt()).Bld_bry_many(tmp_bfr, tmp_bfr.To_bry_and_clear()); + if (xwiki_itm.Domain_tid() != Xow_domain_tid_.Int__other) rv = Bry_.Add(Xoh_href_.Bry__site, rv); return rv; } diff --git a/400_xowa/src/gplx/xowa/xtns/relatedSites/Sites_html_bldr_tst.java b/400_xowa/src/gplx/xowa/xtns/relatedSites/Sites_html_bldr_tst.java index 494299461..090d6f094 100644 --- a/400_xowa/src/gplx/xowa/xtns/relatedSites/Sites_html_bldr_tst.java +++ b/400_xowa/src/gplx/xowa/xtns/relatedSites/Sites_html_bldr_tst.java @@ -47,10 +47,10 @@ class Sites_html_bldr_fxt { this.xtn_mgr = wiki.Xtn_mgr().Xtn_sites(); xtn_mgr.Enabled_y_(); xtn_mgr.Xtn_init_by_wiki(wiki); - wiki.Xwiki_mgr().Add_many(Bry_.new_a7(String_.Concat_lines_nl_skip_last - ( "w|en.wikipedia.org/wiki/$1|Wikipedia" - , "commons|commons.wikimedia.org/wiki/Category:$1|Wikimedia Commons" - , "dmoz|http://www.dmoz.org/$1|DMOZ" + wiki.Xwiki_mgr().Add_by_csv(Bry_.new_a7(String_.Concat_lines_nl_skip_last + ( "0|w|en.wikipedia.org/wiki/~{0}|Wikipedia" + , "0|commons|commons.wikimedia.org/wiki/Category:~{0}|Wikimedia Commons" + , "0|dmoz|http://www.dmoz.org/~{0}|DMOZ" ))); Init_regy_mgr("commons", "dmoz"); this.page = wiki.Parser_mgr().Ctx().Cur_page(); @@ -64,6 +64,6 @@ class Sites_html_bldr_fxt { Bry_bfr tmp_bfr = Bry_bfr.reset_(255); Sites_xtn_skin_itm skin_itm = (Sites_xtn_skin_itm)page.Html_data().Xtn_skin_mgr().Get_or_null(Sites_xtn_skin_itm.KEY); skin_itm.Write(tmp_bfr, page); - Tfds.Eq_str_lines(expd, tmp_bfr.Xto_str_and_clear()); + Tfds.Eq_str_lines(expd, tmp_bfr.To_str_and_clear()); } } diff --git a/400_xowa/src/gplx/xowa/xtns/relatedSites/Sites_regy_mgr.java b/400_xowa/src/gplx/xowa/xtns/relatedSites/Sites_regy_mgr.java index e2414ae65..cc77605fe 100644 --- a/400_xowa/src/gplx/xowa/xtns/relatedSites/Sites_regy_mgr.java +++ b/400_xowa/src/gplx/xowa/xtns/relatedSites/Sites_regy_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.xtns.relatedSites; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; -import gplx.xowa.wikis.xwikis.*; import gplx.xowa.pages.skins.*; +import gplx.xowa.wikis.xwikis.*; import gplx.xowa.wikis.pages.skins.*; public class Sites_regy_mgr implements GfoInvkAble { private Hash_adp_bry hash = Hash_adp_bry.cs(); private Xow_xwiki_mgr xwiki_mgr; diff --git a/400_xowa/src/gplx/xowa/xtns/rss/Rss_xnde.java b/400_xowa/src/gplx/xowa/xtns/rss/Rss_xnde.java index 962c19f29..6fd16cf44 100644 --- a/400_xowa/src/gplx/xowa/xtns/rss/Rss_xnde.java +++ b/400_xowa/src/gplx/xowa/xtns/rss/Rss_xnde.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.xtns.rss; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; -import gplx.xowa.html.*; +import gplx.xowa.htmls.*; import gplx.xowa.parsers.*; import gplx.xowa.parsers.logs.*; import gplx.xowa.parsers.lnkis.*; import gplx.xowa.parsers.xndes.*; public class Rss_xnde implements Xox_xnde { public void Xtn_parse(Xowe_wiki wiki, Xop_ctx ctx, Xop_root_tkn root, byte[] src, Xop_xnde_tkn xnde) {} diff --git a/400_xowa/src/gplx/xowa/xtns/scores/Score_xnde.java b/400_xowa/src/gplx/xowa/xtns/scores/Score_xnde.java index bfbc48577..f1cd20e7c 100644 --- a/400_xowa/src/gplx/xowa/xtns/scores/Score_xnde.java +++ b/400_xowa/src/gplx/xowa/xtns/scores/Score_xnde.java @@ -17,10 +17,10 @@ along with this program. If not, see . */ package gplx.xowa.xtns.scores; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.core.primitives.*; -import gplx.xowa.html.*; import gplx.xowa.files.*; -import gplx.xowa.gui.views.*; -import gplx.xowa.parsers.*; import gplx.xowa.parsers.logs.*; import gplx.xowa.parsers.xndes.*; import gplx.xowa.parsers.lnkis.*; -public class Score_xnde implements Xox_xnde, Xop_xnde_atr_parser, Xoh_cmd_itm { +import gplx.xowa.htmls.*; import gplx.xowa.files.*; +import gplx.xowa.guis.views.*; +import gplx.xowa.parsers.*; import gplx.xowa.parsers.logs.*; import gplx.xowa.parsers.xndes.*; import gplx.xowa.parsers.htmls.*; import gplx.xowa.parsers.lnkis.*; +public class Score_xnde implements Xox_xnde, Mwh_atr_itm_owner, Xoh_cmd_itm { public boolean Lang_is_abc() {return lang_is_abc;} private boolean lang_is_abc; public boolean Code_is_raw() {return code_is_raw;} private boolean code_is_raw; public boolean Output_midi() {return output_midi;} private boolean output_midi; @@ -29,21 +29,21 @@ public class Score_xnde implements Xox_xnde, Xop_xnde_atr_parser, Xoh_cmd_itm { public byte[] File_ogg() {return file_ogg;} private byte[] file_ogg; public Xop_root_tkn Body() {return body;} public Score_xnde Body_(Xop_root_tkn v) {body = v; return this;} private Xop_root_tkn body; public Xop_xnde_tkn Xnde() {return xnde;} private Xop_xnde_tkn xnde = null; - public void Xatr_parse(Xowe_wiki wiki, byte[] src, Xop_xatr_itm xatr, Object xatr_key_obj) { - if (xatr_key_obj == null) return; - Byte_obj_val xatr_key = (Byte_obj_val)xatr_key_obj; - switch (xatr_key.Val()) { - case Xatr_id_lang_is_abc: lang_is_abc = Bry_.Eq(Bry_.Ucase__all(xatr.Val_as_bry(src)), Lang_abc); break; - case Xatr_id_code_is_raw: code_is_raw = xatr.Val_as_bool_by_int(src); break; - case Xatr_id_output_midi: output_midi = xatr.Val_as_bool_by_int(src); break; - case Xatr_id_output_ogg: output_ogg = xatr.Val_as_bool_by_int(src); break; - case Xatr_id_file_midi: file_midi = xatr.Val_as_bry(src); break; - case Xatr_id_file_ogg: file_ogg = xatr.Val_as_bry(src); break; - default: throw Err_.new_unhandled(xatr_key.Val()); + public void Xatr__set(Xowe_wiki wiki, byte[] src, Mwh_atr_itm xatr, Object xatr_id_obj) { + if (xatr_id_obj == null) return; + Byte_obj_val xatr_id = (Byte_obj_val)xatr_id_obj; + switch (xatr_id.Val()) { + case Xatr_id_lang_is_abc: lang_is_abc = Bry_.Eq(Bry_.Ucase__all(xatr.Val_as_bry()), Lang_abc); break; + case Xatr_id_code_is_raw: code_is_raw = xatr.Val_as_bool_by_int(); break; + case Xatr_id_output_midi: output_midi = xatr.Val_as_bool_by_int(); break; + case Xatr_id_output_ogg: output_ogg = xatr.Val_as_bool_by_int(); break; + case Xatr_id_file_midi: file_midi = xatr.Val_as_bry(); break; + case Xatr_id_file_ogg: file_ogg = xatr.Val_as_bry(); break; + default: throw Err_.new_unhandled(xatr_id.Val()); } } public void Xtn_parse(Xowe_wiki wiki, Xop_ctx ctx, Xop_root_tkn root, byte[] src, Xop_xnde_tkn xnde) { - Xop_xatr_itm.Xatr_parse(wiki.Appe(), this, atr_hash, wiki, src, xnde); + Xox_xnde_.Xatr__set(wiki, this, xatrs_hash, src, xnde); this.xnde = xnde; code = Bry_.Mid(src, xnde.Tag_open_end(), xnde.Tag_close_bgn()); code = Bry_.Replace(code, gplx.xowa.bldrs.xmls.Xob_xml_parser_.Bry_tab_ent, gplx.xowa.bldrs.xmls.Xob_xml_parser_.Bry_tab); @@ -62,7 +62,7 @@ public class Score_xnde implements Xox_xnde, Xop_xnde_atr_parser, Xoh_cmd_itm { if (!score_xtn.Enabled()) {Html_write_code_as_pre(bfr, app); return;} ProcessAdp ly_process = app.Prog_mgr().App_lilypond(); if (ly_process.Exe_exists() == Bool_.__byte && ly_process.Exe_url() != null) { // TEST: ly_process.Exe_url() is null - boolean exists = Io_mgr.I.ExistsFil(ly_process.Exe_url()); + boolean exists = Io_mgr.Instance.ExistsFil(ly_process.Exe_url()); ly_process.Exe_exists_(exists ? Bool_.Y_byte : Bool_.N_byte); } if (ly_process.Exe_exists() == Bool_.N_byte) {Html_write_code_as_pre(bfr, app); return;} @@ -73,13 +73,13 @@ public class Score_xnde implements Xox_xnde, Xop_xnde_atr_parser, Xoh_cmd_itm { output_dir = app.Fsys_mgr().File_dir().GenSubDir_nest(wiki.Domain_str(), "lilypond", Char_.To_str(sha1[0]), Char_.To_str(sha1[1]), String_.new_a7(sha1)); // NOTE: MW also adds an extra level for 8-len; EX: /.../sha1_32_len/sha1_8_len/ png_file = output_dir.GenSubFil(sha1_prefix + ".png"); aud_file = output_dir.GenSubFil(sha1_prefix + ".midi"); - hcmd_id = "xowa_score_" + Int_.Xto_str(page.Html_cmd_mgr().Count()); + hcmd_id = "xowa_score_" + Int_.To_str(page.Html_cmd_mgr().Count()); html_id_pre = hcmd_id + "_pre"; html_id_img = hcmd_id + "_img"; html_id_a = hcmd_id + "_a"; html_a_href = ""; html_img_src = ""; - html_img_alt = String_.new_u8(Bry_.Replace(code, Xoa_consts.Nl_bry, gplx.langs.htmls.Html_entity_.Nl_bry)); + html_img_alt = String_.new_u8(Bry_.Replace(code, Byte_ascii.Nl_bry, gplx.langs.htmls.Html_entity_.Nl_bry)); String html_img_alt_tmp = "", html_img_src_tmp = "", html_a_href_tmp = ""; html_img_src = png_file.To_http_file_str(); html_a_href = aud_file.To_http_file_str(); @@ -91,7 +91,7 @@ public class Score_xnde implements Xox_xnde, Xop_xnde_atr_parser, Xoh_cmd_itm { else if (file_ogg != null) { html_a_href = Fill_xfer(wiki, ctx, page, file_ogg); } - if (Io_mgr.I.Exists(png_file)) { // file exists; add html; + if (Io_mgr.Instance.Exists(png_file)) { // file exists; add html; html_img_alt_tmp = html_img_alt; html_img_src_tmp = html_img_src; html_a_href_tmp = html_a_href; @@ -119,22 +119,22 @@ public class Score_xnde implements Xox_xnde, Xop_xnde_atr_parser, Xoh_cmd_itm { if (Score_xtn_mgr.Lilypond_version == null) Score_xtn_mgr.Lilypond_version = Get_lilypond_version(ly_process); if (lang_is_abc) { Io_url abc_file = output_dir.GenSubFil(sha1_prefix + ".abc"); - Io_mgr.I.SaveFilBry(abc_file, code); + Io_mgr.Instance.SaveFilBry(abc_file, code); ProcessAdp abc2ly_process = app.Prog_mgr().App_abc2ly(); if (!abc2ly_process.Run(abc_file, ly_file).Exit_code_pass()) { fail_msg = abc2ly_process.Rslt_out(); app.Usr_dlg().Warn_many("", "", "abc2ly failed: ~{0}", fail_msg); return; } - ly_text = Io_mgr.I.LoadFilBry(ly_file); + ly_text = Io_mgr.Instance.LoadFilBry(ly_file); ly_text = Bry_.Replace_between(ly_text, Abc_tagline_bgn, Abc_tagline_end, Abc_tagline_repl); // remove "tagline = Generated By AbcToLy" at bottom of image - Io_mgr.I.SaveFilBry(ly_file, ly_text); + Io_mgr.Instance.SaveFilBry(ly_file, ly_text); } else { Bry_bfr tmp_bfr = wiki.Utl__bfr_mkr().Get_m001(); ly_text = code_is_raw ? code : score_xtn.Lilypond_fmtr().Bld_bry_many(tmp_bfr, Score_xtn_mgr.Lilypond_version, code); tmp_bfr.Mkr_rls(); - Io_mgr.I.SaveFilBry(ly_file, ly_text); + Io_mgr.Instance.SaveFilBry(ly_file, ly_text); } ly_process.Working_dir_(ly_file.OwnerDir()); // NOTE: must change working_dir, else file will be dumped into same dir as lilypond.exe if (!ly_process.Run(ly_file).Exit_code_pass()) { @@ -151,11 +151,11 @@ public class Score_xnde implements Xox_xnde, Xop_xnde_atr_parser, Xoh_cmd_itm { else html_a_href = ogg_file.To_http_file_str(); } - Io_mgr.I.DeleteFil(ly_file); + Io_mgr.Instance.DeleteFil(ly_file); Io_url png_file_untrimmed = png_file.GenNewNameOnly("untrimmed"); - Io_mgr.I.MoveFil(png_file, png_file_untrimmed); + Io_mgr.Instance.MoveFil(png_file, png_file_untrimmed); app.Prog_mgr().App_trim_img().Run(png_file_untrimmed, png_file); - Io_mgr.I.DeleteFil(png_file_untrimmed); + Io_mgr.Instance.DeleteFil(png_file_untrimmed); fail_msg = null; } private String fail_msg = null; public void Hcmd_write(Xoae_app app, Gfo_usr_dlg usr_dlg, Xoae_page page) { @@ -187,7 +187,7 @@ public class Score_xnde implements Xox_xnde, Xop_xnde_atr_parser, Xoh_cmd_itm { return Bry_.Mid(rslt, bgn_pos, end_pos); } public static final byte Xatr_id_lang_is_abc = 0, Xatr_id_code_is_raw = 1, Xatr_id_output_midi = 2, Xatr_id_output_ogg = 3, Xatr_id_file_midi = 4, Xatr_id_file_ogg = 5; - private static final Hash_adp_bry atr_hash = Hash_adp_bry.ci_a7() + private static final Hash_adp_bry xatrs_hash = Hash_adp_bry.ci_a7() .Add_str_byte("lang", Xatr_id_lang_is_abc) .Add_str_byte("raw", Xatr_id_code_is_raw) .Add_str_byte("midi", Xatr_id_output_midi) diff --git a/400_xowa/src/gplx/xowa/xtns/scribunto/Scrib_core.java b/400_xowa/src/gplx/xowa/xtns/scribunto/Scrib_core.java index cda548ffc..209b54c54 100644 --- a/400_xowa/src/gplx/xowa/xtns/scribunto/Scrib_core.java +++ b/400_xowa/src/gplx/xowa/xtns/scribunto/Scrib_core.java @@ -41,7 +41,7 @@ public class Scrib_core { } 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 lang;} private Xol_lang lang; + public Xol_lang_itm Lang() {return lang;} private Xol_lang_itm lang; @gplx.Internal protected void Wiki_(Xowe_wiki v) {this.wiki = v;} // TEST: public Xoae_page Page() {return page;} private Xoae_page page; public boolean Enabled() {return enabled;} private boolean enabled = true; @@ -110,7 +110,7 @@ public class Scrib_core { public byte[] Cur_lang() {return cur_lang;} private byte[] cur_lang = Bry_.Empty; public Scrib_lua_mod RegisterInterface(Scrib_lib lib, Io_url url, KeyVal... args) { this.RegisterLibrary(lib.Procs()); - Scrib_lua_mod rv = this.LoadLibraryFromFile(url.NameAndExt(), Io_mgr.I.LoadFilStr(url)); + Scrib_lua_mod rv = this.LoadLibraryFromFile(url.NameAndExt(), Io_mgr.Instance.LoadFilStr(url)); Scrib_lua_proc setupInterface_func = rv.Fncs_get_by_key("setupInterface"); if (setupInterface_func != null) engine.CallFunction(setupInterface_func.Id(), Scrib_kv_utl_.base1_obj_(args)); @@ -142,7 +142,7 @@ public class Scrib_core { } return rv; } - public Ordered_hash Frame_created_list() {return frame_created_list;} private Ordered_hash frame_created_list = Ordered_hash_.new_(); // created by NewChildFrame + public Ordered_hash Frame_created_list() {return frame_created_list;} private Ordered_hash frame_created_list = Ordered_hash_.New(); // created by NewChildFrame public Xot_invk Frame_current() {return frame_current;} private Xot_invk frame_current; public Xot_invk Frame_parent() {return frame_parent;} private Xot_invk frame_parent; @gplx.Internal protected void Frame_current_(Xot_invk v) {frame_current = v;} // TEST: @@ -170,6 +170,9 @@ public class Scrib_core { func_rslt = engine.CallFunction(lib_mw.Mod().Fncs_get_id("executeFunction"), func_args); // call function now String rslt = Scrib_kv_utl_.Val_to_str(func_rslt, 0); // rslt expects an array with 1 scalar value bfr.Add_str(rslt); +// byte[] rslt_bry = Bry_.new_u8(rslt); // CHART +// gplx.xowa.parsers.xndes.Xop_xnde_tkn.Hack_ctx = ctx; +// bfr.Add(rslt_bry); if (!Env_.Mode_testing()) engine.CleanupChunks(KeyVal_.Ary(KeyVal_.int_(proc.Id(), ""))); // cleanup chunk immediately; needed for heavy pages like en.d:water; DATE:2014-08-07 } diff --git a/400_xowa/src/gplx/xowa/xtns/scribunto/Scrib_core_fxt.java b/400_xowa/src/gplx/xowa/xtns/scribunto/Scrib_core_fxt.java index 8dcc9fe66..2a4f800e3 100644 --- a/400_xowa/src/gplx/xowa/xtns/scribunto/Scrib_core_fxt.java +++ b/400_xowa/src/gplx/xowa/xtns/scribunto/Scrib_core_fxt.java @@ -46,7 +46,7 @@ public class Scrib_core_fxt { public KeyVal kv_func_(String key, int id) {return KeyVal_.new_(key, new Scrib_lua_proc(key, id));} public Scrib_core_fxt Init_lib_fil(String name, String text) { Io_url url = core.Fsys_mgr().Script_dir().GenSubFil(name); - Io_mgr.I.SaveFilStr(url, text); + Io_mgr.Instance.SaveFilStr(url, text); return this; } public Scrib_core_fxt Init_server_prep_add(String v) {server.Prep_add(v); return this;} diff --git a/400_xowa/src/gplx/xowa/xtns/scribunto/Scrib_err_filter_mgr.java b/400_xowa/src/gplx/xowa/xtns/scribunto/Scrib_err_filter_mgr.java index 3d378ee1a..8dd4873b6 100644 --- a/400_xowa/src/gplx/xowa/xtns/scribunto/Scrib_err_filter_mgr.java +++ b/400_xowa/src/gplx/xowa/xtns/scribunto/Scrib_err_filter_mgr.java @@ -17,7 +17,7 @@ along with this program. If not, see . */ package gplx.xowa.xtns.scribunto; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; public class Scrib_err_filter_mgr implements GfoInvkAble { - private final Ordered_hash hash_by_mod = Ordered_hash_.new_(); + private final Ordered_hash hash_by_mod = Ordered_hash_.New(); public void Clear() {hash_by_mod.Clear();} public boolean Count_eq_0() {return hash_by_mod.Count() == 0;} public boolean Match(String mod, String fnc, String err) { @@ -57,7 +57,7 @@ public class Scrib_err_filter_mgr implements GfoInvkAble { } } } - return bfr.Xto_str_and_clear(); + return bfr.To_str_and_clear(); } private List_adp Get_itms_or_null(String mod, String fnc) { Ordered_hash hash_by_fnc = (Ordered_hash)hash_by_mod.Get_by(mod); if (hash_by_fnc == null) return null; @@ -66,7 +66,7 @@ public class Scrib_err_filter_mgr implements GfoInvkAble { private List_adp New_itms(String mod, String fnc) { Ordered_hash hash_by_fnc = (Ordered_hash)hash_by_mod.Get_by(mod); if (hash_by_fnc == null) { - hash_by_fnc = Ordered_hash_.new_(); + hash_by_fnc = Ordered_hash_.New(); hash_by_mod.Add(mod, hash_by_fnc); } List_adp list_of_err = (List_adp)hash_by_fnc.Get_by(fnc); diff --git a/400_xowa/src/gplx/xowa/xtns/scribunto/Scrib_fsys_mgr.java b/400_xowa/src/gplx/xowa/xtns/scribunto/Scrib_fsys_mgr.java index 5f1571bdb..eea651d27 100644 --- a/400_xowa/src/gplx/xowa/xtns/scribunto/Scrib_fsys_mgr.java +++ b/400_xowa/src/gplx/xowa/xtns/scribunto/Scrib_fsys_mgr.java @@ -34,14 +34,14 @@ public class Scrib_fsys_mgr { gplx.ios.Io_fil lib_fil = (gplx.ios.Io_fil)lib_fil_obj; String lib_data = lib_fil.Data(); if (lib_data == null) { - lib_data = Io_mgr.I.LoadFilStr(lib_fil.Url()); + lib_data = Io_mgr.Instance.LoadFilStr(lib_fil.Url()); lib_fil.Data_(lib_data); } return lib_data; } private static Ordered_hash libs_init(Io_url script_dir) { - Ordered_hash rv = Ordered_hash_.new_(); - Io_url[] fils = Io_mgr.I.QueryDir_args(script_dir).Recur_().ExecAsUrlAry(); + Ordered_hash rv = Ordered_hash_.New(); + Io_url[] fils = Io_mgr.Instance.QueryDir_args(script_dir).Recur_().ExecAsUrlAry(); int fils_len = fils.length; for (int i = 0; i < fils_len; i++) { Io_url fil = fils[i]; diff --git a/400_xowa/src/gplx/xowa/xtns/scribunto/Scrib_fsys_mgr_tst.java b/400_xowa/src/gplx/xowa/xtns/scribunto/Scrib_fsys_mgr_tst.java index e3bc09d91..32501cbb5 100644 --- a/400_xowa/src/gplx/xowa/xtns/scribunto/Scrib_fsys_mgr_tst.java +++ b/400_xowa/src/gplx/xowa/xtns/scribunto/Scrib_fsys_mgr_tst.java @@ -34,7 +34,7 @@ public class Scrib_fsys_mgr_tst { class Scrib_fsys_mgr_fxt { private Scrib_fsys_mgr fsys_mgr; public void Clear() { - Io_mgr.I.InitEngine_mem(); + Io_mgr.Instance.InitEngine_mem(); fsys_mgr = new Scrib_fsys_mgr(); } public Scrib_fsys_mgr_fxt Init(String root_dir, String... rel_paths) { @@ -45,7 +45,7 @@ class Scrib_fsys_mgr_fxt { for (int i = 0; i < rel_paths_len; i++) { String rel_path = rel_paths[i]; Io_url fil_url = script_dir.GenSubFil(rel_path); - Io_mgr.I.SaveFilStr(fil_url, fil_url.Raw()); + Io_mgr.Instance.SaveFilStr(fil_url, fil_url.Raw()); } return this; } @@ -59,4 +59,4 @@ class Scrib_fsys_mgr_fxt { Tfds.Eq(expd, code != null, key); } } -} \ No newline at end of file +} diff --git a/400_xowa/src/gplx/xowa/xtns/scribunto/Scrib_invoke_func.java b/400_xowa/src/gplx/xowa/xtns/scribunto/Scrib_invoke_func.java index 612ab60c5..9e78bfc4a 100644 --- a/400_xowa/src/gplx/xowa/xtns/scribunto/Scrib_invoke_func.java +++ b/400_xowa/src/gplx/xowa/xtns/scribunto/Scrib_invoke_func.java @@ -17,9 +17,9 @@ along with this program. If not, see . */ package gplx.xowa.xtns.scribunto; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.langs.htmls.*; -import gplx.xowa.langs.*; import gplx.xowa.langs.msgs.*; -import gplx.xowa.nss.*; -import gplx.xowa.html.*; +import gplx.xowa.langs.kwds.*; import gplx.xowa.langs.msgs.*; +import gplx.xowa.wikis.nss.*; +import gplx.xowa.htmls.*; import gplx.xowa.parsers.*; import gplx.xowa.parsers.logs.*; import gplx.xowa.parsers.tmpls.*; import gplx.xowa.xtns.pfuncs.*; public class Scrib_invoke_func extends Pf_func_base { diff --git a/400_xowa/src/gplx/xowa/xtns/scribunto/Scrib_invoke_func_fxt.java b/400_xowa/src/gplx/xowa/xtns/scribunto/Scrib_invoke_func_fxt.java index 309f7dc81..2639d51be 100644 --- a/400_xowa/src/gplx/xowa/xtns/scribunto/Scrib_invoke_func_fxt.java +++ b/400_xowa/src/gplx/xowa/xtns/scribunto/Scrib_invoke_func_fxt.java @@ -31,7 +31,7 @@ public class Scrib_invoke_func_fxt { core = core_fxt.Core(); server = core_fxt.Server(); core.Interpreter().Server_(server); - Io_mgr.I.InitEngine_mem(); + Io_mgr.Instance.InitEngine_mem(); fxt.Reset(); core.When_page_changed(fxt.Page()); init_tmpl = init_page = null; @@ -85,11 +85,11 @@ public class Scrib_invoke_func_fxt { } public void Test_parse_err(String raw, String expd_err_type) { Scrib_invoke_func.Error(tmp_bfr, fxt.Wiki().Msg_mgr(), expd_err_type); - fxt.Test_parse_page_tmpl_str(raw, tmp_bfr.Xto_str_and_clear()); + fxt.Test_parse_page_tmpl_str(raw, tmp_bfr.To_str_and_clear()); } public void Test_error(Exception e, String expd) { Scrib_invoke_func.Error(tmp_bfr, fxt.Wiki().Msg_mgr(), e); - Tfds.Eq_str(expd, tmp_bfr.Xto_str_and_clear(), "error"); + Tfds.Eq_str(expd, tmp_bfr.To_str_and_clear(), "error"); } public void Test_lib_proc(Scrib_lib lib, String func_name, Object[] args, String expd) {Test_lib_proc_kv(lib, func_name, Scrib_kv_utl_.base1_many_(args), expd);} public void Test_lib_proc_kv(Scrib_lib lib, String func_name, KeyVal[] args, String expd) { @@ -114,7 +114,7 @@ public class Scrib_invoke_func_fxt { public void Clear_for_lib() {Clear_for_lib("en.wikipedia.org", "en");} public void Clear_for_lib(String domain, String lang) { Xoae_app app = Xoa_app_fxt.app_(); - fxt = new Xop_fxt(app, Xoa_app_fxt.wiki_(app, domain, app.Lang_mgr().Get_by_key_or_new(Bry_.new_u8(lang)))); // NOTE: don't try to cache fxt on func_fxt level; causes errors in Language_lib + fxt = new Xop_fxt(app, Xoa_app_fxt.wiki_(app, domain, app.Lang_mgr().Get_by_or_new(Bry_.new_u8(lang)))); // NOTE: don't try to cache fxt on func_fxt level; causes errors in Language_lib core_fxt = new Scrib_core_fxt(fxt); core = core_fxt.Core(); Xot_invk parent_frame = new Xot_invk_temp(true); parent_frame.Frame_tid_(Scrib_frame_.Tid_null); @@ -140,7 +140,7 @@ public class Scrib_invoke_func_fxt { KeyVal kv = ary[i]; bfr.Add_str(Object_.Xto_str_strict_or_null_mark(kv.Val())); } - return bfr.Xto_str_and_clear(); + return bfr.To_str_and_clear(); } public void Test_scrib_proc_bool(Scrib_lib lib, String proc_name, Object[] args, boolean expd) {Test_scrib_proc_obj(lib, proc_name, Scrib_kv_utl_.base1_many_(args), expd);} public void Test_scrib_proc_int(Scrib_lib lib, String proc_name, Object[] args, int expd) {Test_scrib_proc_obj(lib, proc_name, Scrib_kv_utl_.base1_many_(args), expd);} @@ -186,7 +186,7 @@ class Scrib_lua_rsp_bldr { bfr.Add_str_a7("s:2:\"op\";s:4:\"call\";s:5:\"nargs\";i:3;s:4:\"args\";"); Bld_kv_ary(bfr, ary); bfr.Add_str_a7("}"); - return bfr.Xto_str_and_clear(); + return bfr.To_str_and_clear(); } private void Bld_obj(Bry_bfr bfr, Object v) { Class v_type = v.getClass(); diff --git a/400_xowa/src/gplx/xowa/xtns/scribunto/Scrib_lua_mod.java b/400_xowa/src/gplx/xowa/xtns/scribunto/Scrib_lua_mod.java index 0b190f7e7..36c6ab497 100644 --- a/400_xowa/src/gplx/xowa/xtns/scribunto/Scrib_lua_mod.java +++ b/400_xowa/src/gplx/xowa/xtns/scribunto/Scrib_lua_mod.java @@ -17,7 +17,7 @@ along with this program. If not, see . */ package gplx.xowa.xtns.scribunto; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; public class Scrib_lua_mod { - private Ordered_hash hash = Ordered_hash_.new_(); + private Ordered_hash hash = Ordered_hash_.New(); public Scrib_lua_mod(Scrib_core core, String name) {this.name = name; this.core = core;} private Scrib_core core; public int Lua_id() {return lua_id;} private int lua_id = -1; public String Name() {return name;} private String name; diff --git a/400_xowa/src/gplx/xowa/xtns/scribunto/Scrib_proc_mgr.java b/400_xowa/src/gplx/xowa/xtns/scribunto/Scrib_proc_mgr.java index 3f1a94148..8243b53e8 100644 --- a/400_xowa/src/gplx/xowa/xtns/scribunto/Scrib_proc_mgr.java +++ b/400_xowa/src/gplx/xowa/xtns/scribunto/Scrib_proc_mgr.java @@ -17,7 +17,7 @@ along with this program. If not, see . */ package gplx.xowa.xtns.scribunto; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; public class Scrib_proc_mgr { - private Ordered_hash hash = Ordered_hash_.new_(); + private Ordered_hash hash = Ordered_hash_.New(); public void Clear() {hash.Clear();} public Scrib_proc Get_by_key(String key) {return (Scrib_proc)hash.Get_by(key);} public Scrib_proc Get_at(int i) {return (Scrib_proc)hash.Get_at(i);} diff --git a/400_xowa/src/gplx/xowa/xtns/scribunto/Scrib_xtn_mgr.java b/400_xowa/src/gplx/xowa/xtns/scribunto/Scrib_xtn_mgr.java index e172cf75b..a9ff3715d 100644 --- a/400_xowa/src/gplx/xowa/xtns/scribunto/Scrib_xtn_mgr.java +++ b/400_xowa/src/gplx/xowa/xtns/scribunto/Scrib_xtn_mgr.java @@ -47,13 +47,13 @@ public class Scrib_xtn_mgr extends Xox_mgr_base { else if (ctx.Match(k, Invk_lua_timeout_)) lua_timeout = m.ReadInt("v"); else if (ctx.Match(k, Invk_lua_timeout_polling)) return lua_timeout_polling; else if (ctx.Match(k, Invk_lua_timeout_polling_)) lua_timeout_polling = m.ReadInt("v"); - else if (ctx.Match(k, Invk_lua_log_enabled)) return Yn.Xto_str(lua_log_enabled); + else if (ctx.Match(k, Invk_lua_log_enabled)) return Yn.To_str(lua_log_enabled); else if (ctx.Match(k, Invk_lua_log_enabled_)) lua_log_enabled = m.ReadBool("v"); else if (ctx.Match(k, Invk_lua_timeout_busy_wait)) return lua_timeout_busy_wait; else if (ctx.Match(k, Invk_lua_timeout_busy_wait_)) lua_timeout_busy_wait = m.ReadInt("v"); else if (ctx.Match(k, Invk_lua_timeout_loop)) return lua_timeout_loop; else if (ctx.Match(k, Invk_lua_timeout_loop_)) lua_timeout_loop = m.ReadInt("v"); - else if (ctx.Match(k, Invk_luaj_debug_enabled)) return Yn.Xto_str(luaj_debug_enabled); + else if (ctx.Match(k, Invk_luaj_debug_enabled)) return Yn.To_str(luaj_debug_enabled); else if (ctx.Match(k, Invk_luaj_debug_enabled_)) Luaj_debug_enabled_(m.ReadBool("v")); else if (ctx.Match(k, Invk_invoke_wkr)) return m.ReadYnOrY("v") ? Invoke_wkr_or_new() : GfoInvkAble_.Null; else return super.Invk(ctx, ikey, k, m); diff --git a/400_xowa/src/gplx/xowa/xtns/scribunto/engines/luaj/Luaj_server_func_dbg.java b/400_xowa/src/gplx/xowa/xtns/scribunto/engines/luaj/Luaj_server_func_dbg.java index 71e31f7ac..ee24518ba 100644 --- a/400_xowa/src/gplx/xowa/xtns/scribunto/engines/luaj/Luaj_server_func_dbg.java +++ b/400_xowa/src/gplx/xowa/xtns/scribunto/engines/luaj/Luaj_server_func_dbg.java @@ -33,7 +33,7 @@ public class Luaj_server_func_dbg extends VarArgFunction { bfr.Add_str(gplx.langs.htmls.Html_utl.Escape_html_as_str(s) + " "); } bfr.Add_str("
      "); - core.Page().Html_data().Xtn_scribunto_dbg_(bfr.Xto_bry_and_clear()); + core.Page().Html_data().Xtn_scribunto_dbg_(bfr.To_bry_and_clear()); return NONE; } public static Luaj_server_func_dbg _ = new Luaj_server_func_dbg(); diff --git a/400_xowa/src/gplx/xowa/xtns/scribunto/engines/process/Process_engine.java b/400_xowa/src/gplx/xowa/xtns/scribunto/engines/process/Process_engine.java index d00a1a5a3..2b7a102a1 100644 --- a/400_xowa/src/gplx/xowa/xtns/scribunto/engines/process/Process_engine.java +++ b/400_xowa/src/gplx/xowa/xtns/scribunto/engines/process/Process_engine.java @@ -51,8 +51,8 @@ public class Process_engine implements Scrib_engine { while (true) { Dispatch_bld_send(bfr, ary); boolean log_enabled = scrib_opts.Lua_log_enabled(); - if (log_enabled) app.Usr_dlg().Log_direct("sent:" + bfr.Xto_str() + "\n"); - byte[] rsp_bry = server.Server_comm(bfr.Xto_bry_and_clear(), ary); + if (log_enabled) app.Usr_dlg().Log_direct("sent:" + bfr.To_str() + "\n"); + byte[] rsp_bry = server.Server_comm(bfr.To_bry_and_clear(), ary); if (log_enabled) app.Usr_dlg().Log_direct("rcvd:" + String_.new_u8(rsp_bry) + "\n\n"); String op = rsp.Extract(rsp_bry); if (String_.Eq(op, "return")) { diff --git a/400_xowa/src/gplx/xowa/xtns/scribunto/engines/process/Process_send_wtr.java b/400_xowa/src/gplx/xowa/xtns/scribunto/engines/process/Process_send_wtr.java index 0e888145a..13db74476 100644 --- a/400_xowa/src/gplx/xowa/xtns/scribunto/engines/process/Process_send_wtr.java +++ b/400_xowa/src/gplx/xowa/xtns/scribunto/engines/process/Process_send_wtr.java @@ -21,7 +21,7 @@ public class Process_send_wtr { public String Encode(Object o) { Bry_bfr tmp_bfr = Bry_bfr.reset_(Io_mgr.Len_kb); Encode_obj(tmp_bfr, o); - return tmp_bfr.Xto_str_and_clear(); + return tmp_bfr.To_str_and_clear(); } public void Encode_bool(Bry_bfr bfr, boolean v) {bfr.Add(v ? CONST_bool_true : CONST_bool_false);} public void Encode_int(Bry_bfr bfr, int v) {bfr.Add_int_variable(v);} diff --git a/400_xowa/src/gplx/xowa/xtns/scribunto/engines/process/Process_server_mock.java b/400_xowa/src/gplx/xowa/xtns/scribunto/engines/process/Process_server_mock.java index 33e88f5db..3fb74dfd4 100644 --- a/400_xowa/src/gplx/xowa/xtns/scribunto/engines/process/Process_server_mock.java +++ b/400_xowa/src/gplx/xowa/xtns/scribunto/engines/process/Process_server_mock.java @@ -56,9 +56,9 @@ class Process_server_mock_rcvd_val implements Process_server_mock_rcvd { public String Bld(Object[] cmd_objs) { Bry_bfr tmp_bfr = Bry_bfr.new_(); Bld_recursive(tmp_bfr, 0, (KeyVal[])cmd_objs[5]); - byte[] values_str = tmp_bfr.Xto_bry_and_clear(); + byte[] values_str = tmp_bfr.To_bry_and_clear(); tmp_bfr.Add(Bry_rv_bgn).Add_int_variable(values_str.length).Add(Bry_rv_mid).Add(values_str).Add(Bry_rv_end); - return tmp_bfr.Xto_str_and_clear(); + return tmp_bfr.To_str_and_clear(); } private void Bld_recursive(Bry_bfr bfr, int depth, KeyVal[] ary) { int len = ary.length; diff --git a/400_xowa/src/gplx/xowa/xtns/scribunto/engines/process/Process_stream_rdr_tst.java b/400_xowa/src/gplx/xowa/xtns/scribunto/engines/process/Process_stream_rdr_tst.java index e0f04696a..193684958 100644 --- a/400_xowa/src/gplx/xowa/xtns/scribunto/engines/process/Process_stream_rdr_tst.java +++ b/400_xowa/src/gplx/xowa/xtns/scribunto/engines/process/Process_stream_rdr_tst.java @@ -65,7 +65,7 @@ class Process_stream_rdr_fxt { break; } } - expd_str = bfr.Xto_str_and_clear(); + expd_str = bfr.To_str_and_clear(); return this; } Bry_bfr bfr = Bry_bfr.reset_(128); public void Test_read_body() { diff --git a/400_xowa/src/gplx/xowa/xtns/scribunto/errs/Scrib_err_mgr.java b/400_xowa/src/gplx/xowa/xtns/scribunto/errs/Scrib_err_mgr.java index 78750a08c..e17f1d8fc 100644 --- a/400_xowa/src/gplx/xowa/xtns/scribunto/errs/Scrib_err_mgr.java +++ b/400_xowa/src/gplx/xowa/xtns/scribunto/errs/Scrib_err_mgr.java @@ -17,7 +17,7 @@ along with this program. If not, see . */ package gplx.xowa.xtns.scribunto.errs; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.scribunto.*; class Scrib_err_mgr implements GfoInvkAble { - private Ordered_hash hash = Ordered_hash_.new_bry_(); + private Ordered_hash hash = Ordered_hash_.New_bry(); private int key_id = 0; private static final byte[] Key_prefix = Bry_.new_a7("scrib_err_"); private Scrib_err_cmd Set(byte[] key) { diff --git a/400_xowa/src/gplx/xowa/xtns/scribunto/libs/Scrib_lib_language.java b/400_xowa/src/gplx/xowa/xtns/scribunto/libs/Scrib_lib_language.java index 7a911dfad..1e749f324 100644 --- a/400_xowa/src/gplx/xowa/xtns/scribunto/libs/Scrib_lib_language.java +++ b/400_xowa/src/gplx/xowa/xtns/scribunto/libs/Scrib_lib_language.java @@ -86,7 +86,7 @@ public class Scrib_lib_language implements Scrib_lib { boolean exists = false; if ( lang_code != null // null check; protecting against Module passing in nil from lua && String_.Eq(lang_code, String_.Lower(lang_code)) // must be lower-case; REF.MW: $code === strtolower( $code ) - && Xol_lang_itm_.Exists(Bry_.new_a7(lang_code)) + && Xol_lang_stub_.Exists(Bry_.new_a7(lang_code)) ) exists = true; return rslt.Init_obj(exists); @@ -116,9 +116,9 @@ public class Scrib_lib_language implements Scrib_lib { byte b = lang_code[i]; if (b == Byte_ascii.Dash) {} else { - byte tid = Xol_lang_.Char_tid(b); + byte tid = Xol_lang_itm_.Char_tid(b); switch (tid) { - case Xol_lang_.Char_tid_ltr_l: case Xol_lang_.Char_tid_ltr_u: case Xol_lang_.Char_tid_num: + case Xol_lang_itm_.Char_tid_ltr_l: case Xol_lang_itm_.Char_tid_ltr_u: case Xol_lang_itm_.Char_tid_num: break; default: valid = false; @@ -132,7 +132,7 @@ public class Scrib_lib_language implements Scrib_lib { public boolean FetchLanguageName(Scrib_proc_args args, Scrib_proc_rslt rslt) { byte[] lang_code = args.Pull_bry(0); // byte[] trans_code = args.Get_bry_or_null(1); // TODO: FetchLanguageName("en", "fr") -> Anglais; WHEN: needs global database of languages; - Xol_lang_itm lang_itm = Xol_lang_itm_.Get_by_key(lang_code); + Xol_lang_stub lang_itm = Xol_lang_stub_.Get_by_key_or_null(lang_code); return rslt.Init_obj(lang_itm == null ? String_.Empty : String_.new_u8(lang_itm.Canonical_name())); } public boolean FetchLanguageNames(Scrib_proc_args args, Scrib_proc_rslt rslt) { @@ -142,13 +142,13 @@ public class Scrib_lib_language implements Scrib_lib { } public boolean GetFallbacksFor(Scrib_proc_args args, Scrib_proc_rslt rslt) { byte[] lang_code = args.Pull_bry(0); - Xol_lang lang = core.App().Lang_mgr().Get_by_key(lang_code); if (lang == null) return rslt.Init_many_empty(); // lang is not valid; return empty array per MW; + Xol_lang_itm lang = core.App().Lang_mgr().Get_by(lang_code); if (lang == null) return rslt.Init_many_empty(); // lang is not valid; return empty array per MW; return rslt.Init_bry_ary(lang.Fallback_bry_ary()); } public boolean Lcfirst(Scrib_proc_args args, Scrib_proc_rslt rslt) {return Case_1st(args, rslt, Bool_.N);} public boolean Ucfirst(Scrib_proc_args args, Scrib_proc_rslt rslt) {return Case_1st(args, rslt, Bool_.Y);} private boolean Case_1st(Scrib_proc_args args, Scrib_proc_rslt rslt, boolean upper) { - Xol_lang lang = lang_(args); + Xol_lang_itm lang = lang_(args); byte[] word = args.Pull_bry(1); Bry_bfr bfr = core.Wiki().Appe().Utl__bfr_mkr().Get_b128().Mkr_rls(); return rslt.Init_obj(lang.Case_mgr().Case_build_1st(bfr, upper, word, 0, word.length)); @@ -156,13 +156,13 @@ public class Scrib_lib_language implements Scrib_lib { public boolean Lc(Scrib_proc_args args, Scrib_proc_rslt rslt) {return Case_all(args, rslt, Bool_.N);} public boolean Uc(Scrib_proc_args args, Scrib_proc_rslt rslt) {return Case_all(args, rslt, Bool_.Y);} private boolean Case_all(Scrib_proc_args args, Scrib_proc_rslt rslt, boolean upper) { - Xol_lang lang = lang_(args); + Xol_lang_itm lang = lang_(args); byte[] word = args.Pull_bry(1); return rslt.Init_obj(lang.Case_mgr().Case_build(upper, word, 0, word.length)); } public boolean CaseFold(Scrib_proc_args args, Scrib_proc_rslt rslt) {return Uc(args, rslt);} // REF.MW:Language.php!caseFold; http://www.w3.org/International/wiki/Case_folding public boolean FormatNum(Scrib_proc_args args, Scrib_proc_rslt rslt) { - Xol_lang lang = lang_(args); + Xol_lang_itm lang = lang_(args); byte[] num = args.Xstr_bry_or_null(1); boolean skip_commafy = false; if (num != null) { // MW: if num present, check options table for noCommafy arg; @@ -177,7 +177,7 @@ public class Scrib_lib_language implements Scrib_lib { return rslt.Init_obj(rv); } public boolean FormatDate(Scrib_proc_args args, Scrib_proc_rslt rslt) { - Xol_lang lang = lang_(args); + Xol_lang_itm lang = lang_(args); byte[] fmt_bry = args.Pull_bry(1); byte[] date_bry = args.Cast_bry_or_empty(2); // NOTE: optional empty is required b/c date is sometimes null; use Bry_.Empty b/c this is what Pft_func_time.ParseDate takes; DATE:2013-04-05 boolean utc = args.Cast_bool_or_n(3); @@ -203,14 +203,14 @@ public class Scrib_lib_language implements Scrib_lib { return rslt.Init_obj(rv); } public boolean ParseFormattedNumber(Scrib_proc_args args, Scrib_proc_rslt rslt) { - Xol_lang lang = lang_(args); + Xol_lang_itm lang = lang_(args); byte[] num = args.Xstr_bry_or_null(1); if (num == null) return rslt.Init_null(); // ParseFormattedNumber can sometimes take 1 arg ({'en'}), or null arg ({'en', null}); return null (not ""); DATE:2014-01-07 byte[] rv = lang.Num_mgr().Raw(num); return rslt.Init_obj(rv); } public boolean FormatDuration(Scrib_proc_args args, Scrib_proc_rslt rslt) { - Xol_lang lang = lang_(args); + Xol_lang_itm lang = lang_(args); long seconds = args.Pull_long(1); KeyVal[] intervals_kv_ary = args.Cast_kv_ary_or_null(2); Xol_duration_itm[] intervals = Xol_duration_itm_.Xto_itm_ary(intervals_kv_ary); @@ -218,7 +218,7 @@ public class Scrib_lib_language implements Scrib_lib { return rslt.Init_obj(rv); } public boolean GetDurationIntervals(Scrib_proc_args args, Scrib_proc_rslt rslt) { - Xol_lang lang = lang_(args); + Xol_lang_itm lang = lang_(args); long seconds = args.Pull_long(1); KeyVal[] intervals_kv_ary = args.Cast_kv_ary_or_null(2); Xol_duration_itm[] intervals = Xol_duration_itm_.Xto_itm_ary(intervals_kv_ary); @@ -226,14 +226,14 @@ public class Scrib_lib_language implements Scrib_lib { return rslt.Init_obj(Xol_interval_itm.Xto_kv_ary(rv)); } public boolean ConvertPlural(Scrib_proc_args args, Scrib_proc_rslt rslt) { - Xol_lang lang = lang_(args); + Xol_lang_itm lang = lang_(args); int count = args.Pull_int(1); byte[][] words = args.Cast_params_as_bry_ary_or_rest_of_ary(2); byte[] rv = lang.Plural().Plural_eval(lang, count, words); return rslt.Init_obj(rv); } public boolean ConvertGrammar(Scrib_proc_args args, Scrib_proc_rslt rslt) { - Xol_lang lang = lang_(args); + Xol_lang_itm lang = lang_(args); byte[] word = args.Pull_bry(1); byte[] type = args.Pull_bry(2); Bry_bfr bfr = core.Wiki().Utl__bfr_mkr().Get_b512(); @@ -242,12 +242,12 @@ public class Scrib_lib_language implements Scrib_lib { } public boolean gender(Scrib_proc_args args, Scrib_proc_rslt rslt) {throw Err_.new_unimplemented();} public boolean IsRTL(Scrib_proc_args args, Scrib_proc_rslt rslt) { - Xol_lang lang = lang_(args); + Xol_lang_itm lang = lang_(args); return rslt.Init_obj(!lang.Dir_ltr()); } - private Xol_lang lang_(Scrib_proc_args args) { + private Xol_lang_itm lang_(Scrib_proc_args args) { byte[] lang_code = args.Cast_bry_or_null(0); - Xol_lang lang = lang_code == null ? null : core.App().Lang_mgr().Get_by_key_or_load(lang_code); + Xol_lang_itm lang = lang_code == null ? null : core.App().Lang_mgr().Get_by_or_load(lang_code); if (lang == null) throw Err_.new_wo_type("lang_code is not valid", "lang_code", String_.new_u8(lang_code)); return lang; } diff --git a/400_xowa/src/gplx/xowa/xtns/scribunto/libs/Scrib_lib_language_tst.java b/400_xowa/src/gplx/xowa/xtns/scribunto/libs/Scrib_lib_language_tst.java index 400b2eb75..662e3a031 100644 --- a/400_xowa/src/gplx/xowa/xtns/scribunto/libs/Scrib_lib_language_tst.java +++ b/400_xowa/src/gplx/xowa/xtns/scribunto/libs/Scrib_lib_language_tst.java @@ -17,7 +17,7 @@ along with this program. If not, see . */ package gplx.xowa.xtns.scribunto.libs; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.scribunto.*; import org.junit.*; -import gplx.xowa.langs.*; import gplx.xowa.langs.numbers.*; +import gplx.xowa.langs.*; import gplx.xowa.langs.msgs.*; import gplx.xowa.langs.numbers.*; public class Scrib_lib_language_tst { @Before public void init() { fxt.Clear_for_lib(); @@ -49,7 +49,7 @@ public class Scrib_lib_language_tst { fxt.Test_scrib_proc_str(lib, Scrib_lib_language.Invk_fetchLanguageName, Object_.Ary("enx"), ""); } @Test public void GetFallbacksFor() { - Xol_lang other_lang = fxt.Core().App().Lang_mgr().Get_by_key_or_new(Bry_.new_a7("zh")); + Xol_lang_itm other_lang = fxt.Core().App().Lang_mgr().Get_by_or_new(Bry_.new_a7("zh")); other_lang.Fallback_bry_(Bry_.new_a7("gan-hant, zh-hant, zh-hans")); fxt.Test_scrib_proc_str_ary(lib, Scrib_lib_language.Invk_getFallbacksFor, Object_.Ary("zh"), String_.Concat_lines_nl ( "1=" @@ -63,7 +63,7 @@ public class Scrib_lib_language_tst { fxt.Test_scrib_proc_empty(lib, Scrib_lib_language.Invk_getFallbacksFor, Object_.Ary("unknown")); } @Test public void FormatNum() { - Xol_lang other_lang = fxt.Core().App().Lang_mgr().Get_by_key_or_new(Bry_.new_a7("de")).Init_by_load_assert(); // NOTE: must call Init_by_load_assert, else load will be called by scrib and sprs below will get overwritten during load; + Xol_lang_itm other_lang = fxt.Core().App().Lang_mgr().Get_by_or_new(Bry_.new_a7("de")).Init_by_load_assert(); // NOTE: must call Init_by_load_assert, else load will be called by scrib and sprs below will get overwritten during load; fxt.Parser_fxt().Init_lang_numbers_separators(other_lang, ".", ","); fxt.Test_scrib_proc_str(lib, Scrib_lib_language.Invk_formatNum, Object_.Ary("de", 1234), "1.234"); // german spr fxt.Test_scrib_proc_str(lib, Scrib_lib_language.Invk_formatNum, Object_.Ary("en", 1234), "1,234"); // english spr @@ -116,8 +116,8 @@ public class Scrib_lib_language_tst { } @Test public void IsRTL() { fxt.Test_scrib_proc_bool(lib, Scrib_lib_language.Invk_isRTL, Object_.Ary("en"), false); - Xol_lang other_lang = fxt.Core().App().Lang_mgr().Get_by_key_or_new(Bry_.new_a7("ar")); - GfoInvkAble_.InvkCmd_val(other_lang, Xol_lang.Invk_dir_rtl_, true); + Xol_lang_itm other_lang = fxt.Core().App().Lang_mgr().Get_by_or_new(Bry_.new_a7("ar")); + GfoInvkAble_.InvkCmd_val(other_lang, Xol_lang_itm.Invk_dir_rtl_, true); fxt.Test_scrib_proc_bool(lib, Scrib_lib_language.Invk_isRTL, Object_.Ary("ar"), true); } @Test public void Format_duration() { diff --git a/400_xowa/src/gplx/xowa/xtns/scribunto/libs/Scrib_lib_message.java b/400_xowa/src/gplx/xowa/xtns/scribunto/libs/Scrib_lib_message.java index 1fa1fb0b1..37777f149 100644 --- a/400_xowa/src/gplx/xowa/xtns/scribunto/libs/Scrib_lib_message.java +++ b/400_xowa/src/gplx/xowa/xtns/scribunto/libs/Scrib_lib_message.java @@ -17,8 +17,8 @@ along with this program. If not, see . */ package gplx.xowa.xtns.scribunto.libs; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.scribunto.*; import gplx.core.primitives.*; import gplx.langs.htmls.*; -import gplx.xowa.apps.gfss.*; -import gplx.xowa.langs.*; +import gplx.xowa.apps.gfs.*; +import gplx.xowa.langs.*; import gplx.xowa.langs.msgs.*; import gplx.xowa.parsers.*; public class Scrib_lib_message implements Scrib_lib { public Scrib_lib_message(Scrib_core core) {this.core = core;} private Scrib_core core; @@ -115,7 +115,7 @@ class Scrib_lib_message_data { if (Bry_.Eq(lang_key, cur_lang) || Bry_.Len_eq_0(lang_key)) // if lang_key == core_lang then use wiki.msg_mgr; also same if lang_key == blank (arg not given) return wiki.Msg_mgr().Val_by_key_args(msg_key, args); else { - Xol_lang lang = wiki.Appe().Lang_mgr().Get_by_key_or_new(lang_key); lang.Init_by_load_assert(); + Xol_lang_itm lang = wiki.Appe().Lang_mgr().Get_by_or_new(lang_key); lang.Init_by_load_assert(); Xol_msg_itm msg_itm = lang.Msg_mgr().Itm_by_key_or_null(msg_key); if (msg_itm == null) return Bry_.Empty; return msg_itm.Val(); } diff --git a/400_xowa/src/gplx/xowa/xtns/scribunto/libs/Scrib_lib_message_tst.java b/400_xowa/src/gplx/xowa/xtns/scribunto/libs/Scrib_lib_message_tst.java index bb699a8dd..a558263d1 100644 --- a/400_xowa/src/gplx/xowa/xtns/scribunto/libs/Scrib_lib_message_tst.java +++ b/400_xowa/src/gplx/xowa/xtns/scribunto/libs/Scrib_lib_message_tst.java @@ -28,7 +28,7 @@ public class Scrib_lib_message_tst { fxt.Test_scrib_proc_str(lib, Scrib_lib_message.Invk_plain, Object_.Ary((Object)keys_ary_arg("redirectedfrom", "A")) , "(Redirected from A)"); } @Test public void Plain_lang() { - Xol_lang lang = fxt.Parser_fxt().Wiki().Appe().Lang_mgr().Get_by_key_or_new(Bry_.new_a7("fr")); + Xol_lang_itm lang = fxt.Parser_fxt().Wiki().Appe().Lang_mgr().Get_by_or_new(Bry_.new_a7("fr")); Init_msg(lang, "sun", "dim"); fxt.Test_scrib_proc_str(lib, Scrib_lib_message.Invk_plain, Object_.Ary((Object)keys_ary_lang("sun", "fr")) , "dim"); } @@ -55,7 +55,7 @@ public class Scrib_lib_message_tst { fxt.Test_scrib_proc_str(lib, Scrib_lib_message.Invk_init_message_for_lang, Object_.Ary_empty , "lang=en"); } private void Init_msg(String key, String val) {Init_msg(fxt.Core().Wiki().Lang(), key, val);} - private void Init_msg(Xol_lang lang, String key, String val) { + private void Init_msg(Xol_lang_itm lang, String key, String val) { lang.Msg_mgr().Itm_by_key_or_new(Bry_.new_a7(key)).Atrs_set(Bry_.new_a7(val), false, false); } KeyVal[] keys_ary(String msg_key) {return keys_ary(msg_key, null, null);} diff --git a/400_xowa/src/gplx/xowa/xtns/scribunto/libs/Scrib_lib_mw.java b/400_xowa/src/gplx/xowa/xtns/scribunto/libs/Scrib_lib_mw.java index d939ec664..e5ed5c84b 100644 --- a/400_xowa/src/gplx/xowa/xtns/scribunto/libs/Scrib_lib_mw.java +++ b/400_xowa/src/gplx/xowa/xtns/scribunto/libs/Scrib_lib_mw.java @@ -17,7 +17,7 @@ along with this program. If not, see . */ package gplx.xowa.xtns.scribunto.libs; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.scribunto.*; import gplx.core.primitives.*; -import gplx.xowa.langs.*; +import gplx.xowa.langs.*; import gplx.xowa.langs.funcs.*; import gplx.xowa.parsers.*; import gplx.xowa.parsers.tmpls.*; public class Scrib_lib_mw implements Scrib_lib { private Scrib_core core; private Scrib_fsys_mgr fsys_mgr; @@ -117,13 +117,13 @@ public class Scrib_lib_mw implements Scrib_lib { //frame.Args_eval_by_idx(core.Ctx().Src(), idx_int); // NOTE: arg[0] is always MW function name; EX: {{#invoke:Mod_0|Func_0|Arg_1}}; arg_x = "Mod_0"; args[0] = "Func_0"; args[1] = "Arg_1" if (nde == null) return rslt.Init_ary_empty(); nde.Val_tkn().Tmpl_evaluate(ctx, src, core.Frame_parent(), tmp_bfr); - return rslt.Init_obj(tmp_bfr.Xto_str_and_clear()); + return rslt.Init_obj(tmp_bfr.To_str_and_clear()); } else { Arg_nde_tkn nde = frame.Args_get_by_key(src, Bry_.new_u8(idx_str)); if (nde == null) return rslt.Init_ary_empty(); // idx_str does not exist; nde.Val_tkn().Tmpl_evaluate(ctx, src, core.Frame_parent(), tmp_bfr); - return rslt.Init_obj(tmp_bfr.Xto_str_and_clear_and_trim()); // NOTE: must trim if key_exists; DUPE:TRIM_IF_KEY + return rslt.Init_obj(tmp_bfr.To_str_and_clear_and_trim()); // NOTE: must trim if key_exists; DUPE:TRIM_IF_KEY } } private Arg_nde_tkn Get_arg(Xot_invk invk, int idx, int frame_arg_adj) { // DUPE:MW_ARG_RETRIEVE @@ -191,15 +191,17 @@ public class Scrib_lib_mw implements Scrib_lib { else { // key exists; EX:{{a|key=val}} key_as_int = Bry_.To_int_or(tmp_bfr.Bfr(), 0, tmp_bfr.Len(), Int_.Min_value); if (key_as_int == Int_.Min_value) { // key is not int; create str - key_as_str = tmp_bfr.Xto_str_and_clear(); + key_as_str = tmp_bfr.To_str_and_clear(); key_is_str = true; } else { // key is int; must return int for key b/c lua treats table[1] different than table["1"]; DATE:2014-02-13 tmp_bfr.Clear(); // must clear bfr, else key will be added to val; } } +// ctx.Scribunto = Bool_.Y; // CHART nde.Val_tkn().Tmpl_evaluate(ctx, src, parent_frame, tmp_bfr); - String val = key_missing ? tmp_bfr.Xto_str_and_clear() : tmp_bfr.Xto_str_and_clear_and_trim(); // NOTE: must trim if key_exists; DUPE:TRIM_IF_KEY +// ctx.Scribunto = Bool_.N; + String val = key_missing ? tmp_bfr.To_str_and_clear() : tmp_bfr.To_str_and_clear_and_trim(); // NOTE: must trim if key_exists; DUPE:TRIM_IF_KEY KeyVal kv = key_is_str ? KeyVal_.new_(key_as_str, val) : KeyVal_.int_(key_as_int, val); rv.Add(kv); } @@ -230,10 +232,10 @@ public class Scrib_lib_mw implements Scrib_lib { for (int i = 0; i < args_len; i++) { Arg_nde_tkn arg = frame.Args_get_by_idx(i + args_adj); arg.Key_tkn().Tmpl_evaluate(ctx, src, frame, tmp_bfr); - String key = tmp_bfr.Xto_str_and_clear(); - if (String_.Eq(key, "")) key = Int_.Xto_str(i); + String key = tmp_bfr.To_str_and_clear(); + if (String_.Eq(key, "")) key = Int_.To_str(i); arg.Val_tkn().Tmpl_evaluate(ctx, src, parent_frame, tmp_bfr); // NOTE: must evaluate against parent_frame; evaluating against current frame may cause stack-overflow; DATE:2013-04-04 - String val = tmp_bfr.Xto_str_and_clear(); + String val = tmp_bfr.To_str_and_clear(); kv_args[i] = KeyVal_.new_(key, val); } Xot_invk_mock mock_frame = Xot_invk_mock.new_(Bry_.new_u8(frame_id), kv_args); // use frame_id for Frame_ttl; in lieu of a better candidate; DATE:2014-09-21 @@ -252,7 +254,7 @@ public class Scrib_lib_mw implements Scrib_lib { Bry_obj_ref fnc_name_ref = Bry_obj_ref.new_(fnc_name); KeyVal[] parser_func_args = CallParserFunction_parse_args(cur_wiki.Appe().Utl_num_parser(), argx_ref, fnc_name_ref, args.Ary()); Xot_invk_mock frame = Xot_invk_mock.new_(parent_frame.Defn_tid(), 0, fnc_name, parser_func_args); // pass something as frame_ttl; choosng fnc_name; DATE:2014-09-21 - Xol_func_name_itm finder = cur_wiki.Lang().Func_regy().Find_defn(fnc_name, 0, fnc_name_len); + Xol_func_itm finder = cur_wiki.Lang().Func_regy().Find_defn(fnc_name, 0, fnc_name_len); Xot_defn defn = finder.Func(); if (defn == Xot_defn_.Null) throw Err_.new_wo_type("callParserFunction: function was not found", "function", String_.new_u8(fnc_name)); Bry_bfr bfr = cur_wiki.Utl__bfr_mkr().Get_k004(); @@ -260,7 +262,7 @@ public class Scrib_lib_mw implements Scrib_lib { fnc_ctx.Parse_tid_(Xop_parser_.Parse_tid_page_tmpl); // default xnde names to template; needed for test, but should be in place; DATE:2014-06-27 Xot_invk_tkn.Eval_func(fnc_ctx, src, parent_frame, frame, bfr, defn, argx_ref.Val()); bfr.Mkr_rls(); - return rslt.Init_obj(bfr.Xto_str_and_clear()); + return rslt.Init_obj(bfr.To_str_and_clear()); } private KeyVal[] CallParserFunction_parse_args(Number_parser num_parser, Bry_obj_ref argx_ref, Bry_obj_ref fnc_name_ref, KeyVal[] args) { List_adp rv = List_adp_.new_(); @@ -279,7 +281,7 @@ public class Scrib_lib_mw implements Scrib_lib { else rv.Add(arg); } - rv.Sort_by(Scrib_lib_mw_callParserFunction_sorter._); + rv.Sort_by(Scrib_lib_mw_callParserFunction_sorter.Instance); // get argx byte[] fnc_name = fnc_name_ref.Val(); int fnc_name_len = fnc_name.length; @@ -359,7 +361,7 @@ public class Scrib_lib_mw implements Scrib_lib { } KeyVal[] args_ary = args.Pull_kv_ary(2); Xot_invk_mock new_frame = Xot_invk_mock.new_(core.Frame_current().Defn_tid(), 0, ttl.Full_txt(), args_ary); // NOTE: use spaces, not unders; REF.MW:$frame->getTitle()->getPrefixedText(); DATE:2014-08-14 - String new_frame_id = "frame" + Int_.Xto_str(frame_list_len); + String new_frame_id = "frame" + Int_.To_str(frame_list_len); frame_list.Add(new_frame_id, new_frame); return rslt.Init_obj(new_frame_id); } @@ -390,5 +392,5 @@ class Scrib_lib_mw_callParserFunction_sorter implements gplx.lists.ComparerAble else // both are strings return String_.Compare(String_.cast(lhs_key), String_.cast(rhs_key)); } - public static final Scrib_lib_mw_callParserFunction_sorter _ = new Scrib_lib_mw_callParserFunction_sorter(); Scrib_lib_mw_callParserFunction_sorter() {} + public static final Scrib_lib_mw_callParserFunction_sorter Instance = new Scrib_lib_mw_callParserFunction_sorter(); Scrib_lib_mw_callParserFunction_sorter() {} } diff --git a/400_xowa/src/gplx/xowa/xtns/scribunto/libs/Scrib_lib_site.java b/400_xowa/src/gplx/xowa/xtns/scribunto/libs/Scrib_lib_site.java index 28c138ce0..ee5a264be 100644 --- a/400_xowa/src/gplx/xowa/xtns/scribunto/libs/Scrib_lib_site.java +++ b/400_xowa/src/gplx/xowa/xtns/scribunto/libs/Scrib_lib_site.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.xtns.scribunto.libs; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.scribunto.*; -import gplx.xowa.langs.*; -import gplx.xowa.nss.*; +import gplx.xowa.langs.*; import gplx.xowa.langs.msgs.*; +import gplx.xowa.wikis.nss.*; import gplx.xowa.wikis.metas.*; import gplx.xowa.wikis.xwikis.*; public class Scrib_lib_site implements Scrib_lib { public Scrib_lib_site(Scrib_core core) {this.core = core;} private Scrib_core core; diff --git a/400_xowa/src/gplx/xowa/xtns/scribunto/libs/Scrib_lib_site_tst.java b/400_xowa/src/gplx/xowa/xtns/scribunto/libs/Scrib_lib_site_tst.java index 58f9f7ab2..e8eadf2ad 100644 --- a/400_xowa/src/gplx/xowa/xtns/scribunto/libs/Scrib_lib_site_tst.java +++ b/400_xowa/src/gplx/xowa/xtns/scribunto/libs/Scrib_lib_site_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.xtns.scribunto.libs; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.scribunto.*; -import org.junit.*; import gplx.xowa.nss.*; +import org.junit.*; import gplx.xowa.wikis.nss.*; public class Scrib_lib_site_tst { @Before public void init() { fxt.Clear_for_lib(); diff --git a/400_xowa/src/gplx/xowa/xtns/scribunto/libs/Scrib_lib_text_.java b/400_xowa/src/gplx/xowa/xtns/scribunto/libs/Scrib_lib_text_.java index f66b0aa45..f34750c61 100644 --- a/400_xowa/src/gplx/xowa/xtns/scribunto/libs/Scrib_lib_text_.java +++ b/400_xowa/src/gplx/xowa/xtns/scribunto/libs/Scrib_lib_text_.java @@ -62,6 +62,6 @@ class Scrib_lib_text_ { } } bfr.Add(Colon_encoded); - return KeyVal_.new_(itm.Key_wo_colon_str(), bfr.Xto_str_and_clear()); + return KeyVal_.new_(itm.Key_wo_colon_str(), bfr.To_str_and_clear()); } private static final byte[] Colon_encoded = Bry_.new_a7(":"); } diff --git a/400_xowa/src/gplx/xowa/xtns/scribunto/libs/Scrib_lib_text__json_util.java b/400_xowa/src/gplx/xowa/xtns/scribunto/libs/Scrib_lib_text__json_util.java index 363ab5df8..ca4d0f5a6 100644 --- a/400_xowa/src/gplx/xowa/xtns/scribunto/libs/Scrib_lib_text__json_util.java +++ b/400_xowa/src/gplx/xowa/xtns/scribunto/libs/Scrib_lib_text__json_util.java @@ -22,7 +22,7 @@ class Scrib_lib_text__json_util { public void Reindex_arrays(Scrib_lib_text__reindex_data rv, KeyVal[] kv_ary, boolean is_encoding) { int next = 0; if (is_encoding) { - Array_.Sort(kv_ary, KeyVal__sorter__key_is_numeric.I); + Array_.Sort(kv_ary, KeyVal__sorter__key_is_numeric.Instance); next = 1; } boolean is_sequence = true; @@ -196,7 +196,7 @@ class KeyVal__sorter__key_is_numeric implements gplx.lists.ComparerAble { int rhs_int = Int_.parse_or(rhs_itm.Key(), Int_.Min_value); return CompareAble_.Compare(lhs_int, rhs_int); } - public static final KeyVal__sorter__key_is_numeric I = new KeyVal__sorter__key_is_numeric(); KeyVal__sorter__key_is_numeric() {} + public static final KeyVal__sorter__key_is_numeric Instance = new KeyVal__sorter__key_is_numeric(); KeyVal__sorter__key_is_numeric() {} } class Scrib_lib_text__reindex_data { public boolean Rv_is_kvy() {return rv_is_kvy;} private boolean rv_is_kvy; diff --git a/400_xowa/src/gplx/xowa/xtns/scribunto/libs/Scrib_lib_title.java b/400_xowa/src/gplx/xowa/xtns/scribunto/libs/Scrib_lib_title.java index 92165ec31..cdef7eccb 100644 --- a/400_xowa/src/gplx/xowa/xtns/scribunto/libs/Scrib_lib_title.java +++ b/400_xowa/src/gplx/xowa/xtns/scribunto/libs/Scrib_lib_title.java @@ -17,10 +17,10 @@ along with this program. If not, see . */ package gplx.xowa.xtns.scribunto.libs; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.scribunto.*; import gplx.core.primitives.*; -import gplx.xowa.nss.*; +import gplx.xowa.wikis.nss.*; import gplx.xowa.wikis.caches.*; import gplx.xowa.xtns.pfuncs.ttls.*; import gplx.xowa.wikis.xwikis.*; import gplx.xowa.wikis.data.tbls.*; import gplx.xowa.files.commons.*; import gplx.xowa.files.origs.*; -import gplx.xowa.wms.apis.*; +import gplx.xowa.bldrs.wms.apis.*; public class Scrib_lib_title implements Scrib_lib { public Scrib_lib_title(Scrib_core core) {this.core = core;} private Scrib_core core; public Scrib_lua_mod Mod() {return mod;} private Scrib_lua_mod mod; diff --git a/400_xowa/src/gplx/xowa/xtns/scribunto/libs/Scrib_lib_title_tst.java b/400_xowa/src/gplx/xowa/xtns/scribunto/libs/Scrib_lib_title_tst.java index ec9d8565b..69097581a 100644 --- a/400_xowa/src/gplx/xowa/xtns/scribunto/libs/Scrib_lib_title_tst.java +++ b/400_xowa/src/gplx/xowa/xtns/scribunto/libs/Scrib_lib_title_tst.java @@ -22,7 +22,7 @@ import gplx.fsdb.*; import gplx.xowa.wikis.domains.*; import gplx.xowa.files.*; import gplx.xowa.files.origs.*; import gplx.xowa.files.repos.*; import gplx.xowa.wikis.ttls.*; public class Scrib_lib_title_tst { @Before public void init() { - Db_conn_bldr.I.Reg_default_mem(); + Db_conn_bldr.Instance.Reg_default_mem(); fxt.Clear_for_lib(); fxt.Core().Wiki().File__fsdb_mode().Tid_v2_bld_y_(); lib = fxt.Core().Lib_title().Init(); @@ -46,7 +46,7 @@ public class Scrib_lib_title_tst { fxt.Test_scrib_proc_str_ary(lib, Scrib_lib_title.Invk_makeTitle, Object_.Ary("Module", "A") , ttl_fast(828, "Module", "A")); fxt.Test_scrib_proc_str_ary(lib, Scrib_lib_title.Invk_makeTitle, Object_.Ary(828, "A") , ttl_fast(828, "Module", "A")); fxt.Test_scrib_proc_str_ary(lib, Scrib_lib_title.Invk_makeTitle, Object_.Ary("Template", "A", "b") , ttl_fast(10, "Template", "A", "b")); - fxt.Parser_fxt().Wiki().Xwiki_mgr().Add_full("fr", "fr.wikipedia.org"); + fxt.Parser_fxt().Wiki().Xwiki_mgr().Add_by_atrs("fr", "fr.wikipedia.org"); fxt.Test_scrib_proc_str_ary(lib, Scrib_lib_title.Invk_makeTitle, Object_.Ary("Template", "A", "b", "fr") , ttl_fast(0, "", "Template:A", "b", "fr")); fxt.Parser_fxt().Init_log_(Xop_ttl_log.Invalid_char); fxt.Test_scrib_proc_str_ary(lib, Scrib_lib_title.Invk_makeTitle, Object_.Ary("Template", "a[b"), Scrib_invoke_func_fxt.Null_rslt_ary); // PURPOSE: handle bad MakeTitle cmds; PAGE:en.w:Disney; DATE:2013-10-15 @@ -99,7 +99,7 @@ public class Scrib_lib_title_tst { private static void Wiki_orig_tbl__create(Xowe_wiki wiki) { Xowe_wiki_.Create(wiki, 1, "dump.xml"); Xowd_db_file text_db = wiki.Data__core_mgr().Dbs__make_by_tid(Xowd_db_file_.Tid_text); text_db.Tbl__text().Create_tbl(); - Fsdb_db_mgr__v2_bldr.I.Get_or_make(wiki, Bool_.Y); + Fsdb_db_mgr__v2_bldr.Instance.Get_or_make(wiki, Bool_.Y); wiki.File_mgr().Init_file_mgr_by_load(wiki); } private static void Wiki_orig_tbl__insert(Xowe_wiki wiki, String ttl_str, int w, int h) { @@ -109,7 +109,7 @@ public class Scrib_lib_title_tst { // private static void Init_page_regy(Xowe_wiki wiki, String ttl, int id, boolean is_redirect) { // String url_str = "test/en.wikipedia.org/wiki_page_regy"; // Db_meta_tbl meta = new Xowd_page_tbl().new_meta(); -// Db_conn_pool.I.Set_mem(url_str, meta); +// Db_conn_pool.Instance.Set_mem(url_str, meta); // Db_conn_info url = Db_conn_info_.mem_(url_str); // Xowd_page_tbl tbl = new Xowd_page_tbl(Bool_.N, url); // tbl.Insert(id, ns_id, Bry_.new_u8(ttl), is_redirect, modified_on, page_len, random_int, text_db_id, html_db_id); @@ -122,7 +122,7 @@ public class Scrib_lib_title_tst { ( "1=" , " isLocal=true" , " interwiki=" + xwiki - , " namespace=" + Int_.Xto_str(ns_id) + , " namespace=" + Int_.To_str(ns_id) , " nsText=" + ns_str , " text=" + ttl , " fragment=" + anchor @@ -134,7 +134,7 @@ public class Scrib_lib_title_tst { return String_.Concat_lines_nl_skip_last ( "1=" , " isRedirect=" + Bool_.To_str_lower(redirect) - , " id=" + Int_.Xto_str(ttl_id) + , " id=" + Int_.To_str(ttl_id) , " contentModel=" + Scrib_lib_title.Key_wikitexet , " exists=" + Bool_.To_str_lower(exists) ); @@ -149,8 +149,8 @@ public class Scrib_lib_title_tst { return String_.Concat_lines_nl_skip_last ( "1=" , " exists=true" - , " width=" + Int_.Xto_str(w) - , " height=" + Int_.Xto_str(h) + , " width=" + Int_.To_str(w) + , " height=" + Int_.To_str(h) , " pages=<>" ); } diff --git a/400_xowa/src/gplx/xowa/xtns/scribunto/libs/Scrib_lib_uri.java b/400_xowa/src/gplx/xowa/xtns/scribunto/libs/Scrib_lib_uri.java index 076461d32..947e7e4b8 100644 --- a/400_xowa/src/gplx/xowa/xtns/scribunto/libs/Scrib_lib_uri.java +++ b/400_xowa/src/gplx/xowa/xtns/scribunto/libs/Scrib_lib_uri.java @@ -17,7 +17,7 @@ along with this program. If not, see . */ package gplx.xowa.xtns.scribunto.libs; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.scribunto.*; import gplx.xowa.xtns.pfuncs.ttls.*; -import gplx.xowa.nss.*; +import gplx.xowa.wikis.nss.*; import gplx.xowa.parsers.*; public class Scrib_lib_uri implements Scrib_lib { public Scrib_lib_uri(Scrib_core core) {this.core = core;} private Scrib_core core; @@ -63,7 +63,7 @@ public class Scrib_lib_uri implements Scrib_lib { if (ttl.Ns().Id() == Xow_ns_.Id_media) { // change "Media:" -> "File:" bfr.Add(wiki.Ns_mgr().Ns_file().Name_db_w_colon()); bfr.Add(ttl.Page_db()); - ttl_bry = bfr.Xto_bry_and_clear(); + ttl_bry = bfr.To_bry_and_clear(); } Pfunc_urlfunc.UrlString(core.Ctx(), url_tid, false, ttl_bry, bfr, qry_bry); return rslt.Init_obj(bfr.To_str_and_rls()); diff --git a/400_xowa/src/gplx/xowa/xtns/scribunto/libs/Scrib_lib_ustring.java b/400_xowa/src/gplx/xowa/xtns/scribunto/libs/Scrib_lib_ustring.java index 8cc2c4b3f..516126e54 100644 --- a/400_xowa/src/gplx/xowa/xtns/scribunto/libs/Scrib_lib_ustring.java +++ b/400_xowa/src/gplx/xowa/xtns/scribunto/libs/Scrib_lib_ustring.java @@ -143,7 +143,7 @@ public class Scrib_lib_ustring implements Scrib_lib { if ( j < capts_len // bounds check b/c null can be passed && Bool_.cast(capts[j].Val()) // check if true; indicates that group is "()" or "anypos" see regex converter; DATE:2014-04-23 ) - tmp_list.Add(Int_.Xto_str(grp.Bgn() + Scrib_lib_ustring.Base1)); // return index only for (); NOTE: always return as String; callers expect String, and may do operations like len(result), which will fail if int; DATE:2013-12-20 + tmp_list.Add(Int_.To_str(grp.Bgn() + Scrib_lib_ustring.Base1)); // return index only for (); NOTE: always return as String; callers expect String, and may do operations like len(result), which will fail if int; DATE:2013-12-20 else tmp_list.Add(grp.Val()); // return match } @@ -190,7 +190,7 @@ class Scrib_lib_ustring_gsub_mgr { } else if (Object_.Eq(repl_type, Int_.Cls_ref_type)) { // NOTE:@replace sometimes int; PAGE:en.d:λύω; DATE:2014-09-02 tmp_repl_tid = Repl_tid_string; - tmp_repl_bry = Bry_.new_u8(Int_.Xto_str(Int_.cast(repl_obj))); + tmp_repl_bry = Bry_.new_u8(Int_.To_str(Int_.cast(repl_obj))); } else if (Object_.Eq(repl_type, KeyVal[].class)) { tmp_repl_tid = Repl_tid_table; @@ -232,7 +232,7 @@ class Scrib_lib_ustring_gsub_mgr { int text_len = String_.Len(text); if (pos < text_len) tmp_bfr.Add_str(String_.Mid(text, pos, text_len)); // NOTE: regx returns char pos (not bry); must add as String, not bry; DATE:2013-07-17 - return tmp_bfr.Xto_str_and_clear(); + return tmp_bfr.To_str_and_clear(); } private void Exec_repl_itm(Bry_bfr tmp_bfr, byte repl_tid, byte[] repl_bry, String text, Regx_match match) { switch (repl_tid) { diff --git a/400_xowa/src/gplx/xowa/xtns/scribunto/libs/Scrib_lib_wikibase_srl.java b/400_xowa/src/gplx/xowa/xtns/scribunto/libs/Scrib_lib_wikibase_srl.java index 497f02b94..933b375b9 100644 --- a/400_xowa/src/gplx/xowa/xtns/scribunto/libs/Scrib_lib_wikibase_srl.java +++ b/400_xowa/src/gplx/xowa/xtns/scribunto/libs/Scrib_lib_wikibase_srl.java @@ -94,7 +94,7 @@ class Scrib_lib_wikibase_srl { KeyVal[] rv = new KeyVal[rv_len]; for (int i = 0; i < len; i++) { Wdata_claim_grp grp = (Wdata_claim_grp)claim_grps.Get_at(i); - String pid_str = Int_.Xto_str(grp.Id()); + String pid_str = Int_.To_str(grp.Id()); KeyVal[] grp_val = Srl_claims_prop_grp("P" + pid_str, grp, base_adj); rv[i] = KeyVal_.new_("P" + pid_str, grp_val); if (legacy_style) diff --git a/400_xowa/src/gplx/xowa/xtns/scribunto/libs/Scrib_lib_wikibase_srl_tst.java b/400_xowa/src/gplx/xowa/xtns/scribunto/libs/Scrib_lib_wikibase_srl_tst.java index f130bd911..fe8f3f5f0 100644 --- a/400_xowa/src/gplx/xowa/xtns/scribunto/libs/Scrib_lib_wikibase_srl_tst.java +++ b/400_xowa/src/gplx/xowa/xtns/scribunto/libs/Scrib_lib_wikibase_srl_tst.java @@ -395,7 +395,7 @@ class Scrib_lib_wikibase_srl_fxt { private String Xto_str(KeyVal[] ary) { Bry_bfr bfr = Bry_bfr.new_(); Xto_str(bfr, ary, 0); - return bfr.Xto_str_and_clear(); + return bfr.To_str_and_clear(); } private void Xto_str(Bry_bfr bfr, KeyVal[] ary, int depth) { int len = ary.length; diff --git a/400_xowa/src/gplx/xowa/xtns/scribunto/libs/Scrib_lib_wikibase_srl_visitor.java b/400_xowa/src/gplx/xowa/xtns/scribunto/libs/Scrib_lib_wikibase_srl_visitor.java index 274d680c6..4b6d3f49f 100644 --- a/400_xowa/src/gplx/xowa/xtns/scribunto/libs/Scrib_lib_wikibase_srl_visitor.java +++ b/400_xowa/src/gplx/xowa/xtns/scribunto/libs/Scrib_lib_wikibase_srl_visitor.java @@ -33,7 +33,7 @@ class Scrib_lib_wikibase_srl_visitor implements Wdata_claim_visitor { Wdata_claim_itm_entity claim_entity = (Wdata_claim_itm_entity)itm; KeyVal[] rv = new KeyVal[2]; rv[0] = KeyVal_.new_(Wdata_dict_value_entity.Str_entity_type, claim_entity.Entity_tid_str()); - rv[1] = KeyVal_.new_(Wdata_dict_value_entity.Str_numeric_id, Int_.Xto_str(claim_entity.Entity_id())); + rv[1] = KeyVal_.new_(Wdata_dict_value_entity.Str_numeric_id, Int_.To_str(claim_entity.Entity_id())); return rv; } public void Visit_monolingualtext(Wdata_claim_itm_monolingualtext itm) { diff --git a/400_xowa/src/gplx/xowa/xtns/scribunto/libs/Scrib_regx_converter.java b/400_xowa/src/gplx/xowa/xtns/scribunto/libs/Scrib_regx_converter.java index c50910ea8..0180a9288 100644 --- a/400_xowa/src/gplx/xowa/xtns/scribunto/libs/Scrib_regx_converter.java +++ b/400_xowa/src/gplx/xowa/xtns/scribunto/libs/Scrib_regx_converter.java @@ -44,7 +44,7 @@ public class Scrib_regx_converter { bfr.Add(q_flag ? Bry_dollar_escaped : Bry_dollar_literal); break; case Byte_ascii.Paren_bgn: { - if (i + 1 >= len) throw Err_.new_wo_type("Unmatched open-paren at pattern character " + Int_.Xto_str(i)); + if (i + 1 >= len) throw Err_.new_wo_type("Unmatched open-paren at pattern character " + Int_.To_str(i)); boolean capt_itm = src[i + 1] == Byte_ascii.Paren_end; // current is "()" ++grps_len; capt_list.Add(KeyVal_.int_(grps_len, capt_itm)); @@ -55,7 +55,7 @@ public class Scrib_regx_converter { } case Byte_ascii.Paren_end: if (grps_open.Count() == 0) - throw Err_.new_wo_type("Unmatched close-paren at pattern character " + Int_.Xto_str(i)); + throw Err_.new_wo_type("Unmatched close-paren at pattern character " + Int_.To_str(i)); List_adp_.DelAt_last(grps_open); bfr.Add_byte(Byte_ascii.Paren_end); break; @@ -90,8 +90,8 @@ public class Scrib_regx_converter { } synchronized (fmtr_balanced) { ++bct; - fmtr_balanced.Bld_bfr(bfr_balanced, Int_.Xto_bry(bct), Byte_.Ary(char_0), Byte_.Ary(char_1)); - bfr.Add(bfr_balanced.Xto_bry_and_clear()); + fmtr_balanced.Bld_bfr(bfr_balanced, Int_.To_bry(bct), Byte_.Ary(char_0), Byte_.Ary(char_1)); + bfr.Add(bfr_balanced.To_bry_and_clear()); } } break; @@ -116,7 +116,7 @@ public class Scrib_regx_converter { 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: grps_len = nxt - Byte_ascii.Num_0; if (grps_len == 0 || grps_len > capt_list.Count() || grps_open_Has(grps_open, grps_len)) - throw Err_.new_wo_type("invalid capture index %" + grps_len + " at pattern character " + Int_.Xto_str(i)); + throw Err_.new_wo_type("invalid capture index %" + grps_len + " at pattern character " + Int_.To_str(i)); bfr.Add(Bry_bf2_seg_0).Add_int_variable(grps_len);//.Add(Bry_bf2_seg_1); // $bfr .= "\\g{m$grps_len}"; break; default: @@ -130,7 +130,7 @@ public class Scrib_regx_converter { i = bracketedCharSetToRegex(bfr, src, i, len); q_flag = true; break; - case Byte_ascii.Brack_end: throw Err_.new_wo_type("Unmatched close-bracket at pattern character " + Int_.Xto_str(i)); + case Byte_ascii.Brack_end: throw Err_.new_wo_type("Unmatched close-bracket at pattern character " + Int_.To_str(i)); case Byte_ascii.Dot: q_flag = true; bfr.Add_byte(Byte_ascii.Dot); @@ -158,7 +158,7 @@ public class Scrib_regx_converter { } if (grps_open.Count() > 0) throw Err_.new_wo_type("Unclosed capture beginning at pattern character " + Int_.cast(grps_open.Get_at(0))); // bfr.Add(Bry_regx_end); // NOTE: do not add PHP /us at end; u=PCRE_UTF8 which is not needed for Java; s=PCRE_DOTALL which will be specified elsewhere - regx = bfr.Xto_str_and_clear(); + regx = bfr.To_str_and_clear(); return regx; } private Bry_bfr bfr = Bry_bfr.new_(); private int bracketedCharSetToRegex(Bry_bfr bfr, byte[] src, int i, int len) { diff --git a/400_xowa/src/gplx/xowa/xtns/syntaxHighlight/Xtn_syntaxHighlight_nde.java b/400_xowa/src/gplx/xowa/xtns/syntaxHighlight/Xtn_syntaxHighlight_nde.java deleted file mode 100644 index 9728efcea..000000000 --- a/400_xowa/src/gplx/xowa/xtns/syntaxHighlight/Xtn_syntaxHighlight_nde.java +++ /dev/null @@ -1,101 +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.xtns.syntaxHighlight; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; -import gplx.core.primitives.*; -import gplx.langs.htmls.*; import gplx.xowa.html.*; -import gplx.xowa.parsers.*; import gplx.xowa.parsers.xndes.*; -public class Xtn_syntaxHighlight_nde implements Xox_xnde, Xop_xnde_atr_parser { - private byte[] lang = Bry_.Empty; private byte[] style = null; private byte[] enclose = Bry_.Empty; - private boolean line_enabled = false; private int start = 1; private Int_rng_mgr highlight_idxs = Int_rng_mgr_null._; - public Xop_xnde_tkn Xnde() {throw Err_.new_unimplemented();} - public void Xatr_parse(Xowe_wiki wiki, byte[] src, Xop_xatr_itm xatr, Object xatr_obj) { - if (xatr_obj == null) return; - byte xatr_tid = ((Byte_obj_val)xatr_obj).Val(); - switch (xatr_tid) { - case Xatr_enclose: enclose = xatr.Val_as_bry(src); break; - case Xatr_lang: lang = xatr.Val_as_bry(src); break; - case Xatr_style: style = xatr.Val_as_bry(src); break; - case Xatr_line: line_enabled = true; break; - case Xatr_start: start = xatr.Val_as_int_or(src, 1); break; - case Xatr_highlight: highlight_idxs = new Int_rng_mgr_base(); highlight_idxs.Parse(xatr.Val_as_bry(src)); break; - } - } - public void Xtn_parse(Xowe_wiki wiki, Xop_ctx ctx, Xop_root_tkn root, byte[] src, Xop_xnde_tkn xnde) { - Xoae_app app = ctx.App(); Xop_xnde_tag tag = xnde.Tag(); - ctx.Para().Process_block__xnde(tag, tag.Block_open()); // deactivate pre; pre; PAGE:en.w:Comment_(computer_programming); DATE:2014-06-24 - Xop_xatr_itm.Xatr_parse(app, this, xatrs_syntaxHighlight, wiki, src, xnde); - ctx.Para().Process_block__xnde(tag, tag.Block_close()); // deactivate pre; pre; PAGE:en.w:Comment_(computer_programming); DATE:2014-06-24 - } - public void Xtn_write(Bry_bfr bfr, Xoae_app app, Xop_ctx ctx, Xoh_html_wtr html_wtr, Xoh_wtr_ctx hctx, Xop_xnde_tkn xnde, byte[] src) { - boolean lang_is_text = Bry_.Eq(lang, Lang_text); - boolean enclose_is_none = Bry_.Eq(enclose, Enclose_none); - if (enclose_is_none) { - bfr.Add(Xoh_consts.Span_bgn); - } - else if (lang_is_text) { - bfr.Add(Xoh_consts.Code_bgn_open); - if (style != null) - bfr.Add(Xoh_consts.Style_atr).Add(this.style).Add_byte(Byte_ascii.Quote); - bfr.Add_byte(Byte_ascii.Gt); - } - else { - bfr.Add(Xoh_consts.Pre_bgn_open); - bfr.Add(Xoh_consts.Style_atr).Add(Xoh_consts.Pre_style_overflow_auto); - if (style != null) bfr.Add(style); - bfr.Add(Xoh_consts.__end_quote); - } - int text_bgn = xnde.Tag_open_end(); - int text_end = Bry_find_.Find_bwd_while(src, xnde.Tag_close_bgn(), -1, Byte_ascii.Space) + 1; // trim space from end; PAGE:en.w:Comment_(computer_programming) DATE:2014-06-23 - if (line_enabled || enclose_is_none) { - bfr.Add_byte_nl(); - byte[][] lines = Bry_split_.Split_lines(Bry_.Mid(src, text_bgn, text_end)); - int lines_len = lines.length; - int line_idx = start; - int line_end = (line_idx + lines_len) - 1; // EX: line_idx=9 line_len=1; line_end=9 - int digits_max = Int_.DigitCount(line_end); - for (int i = 0; i < lines_len; i++) { - byte[] line = lines[i]; if (i == 0 && Bry_.Len_eq_0(line)) continue; - if (line_enabled) { - bfr.Add(Xoh_consts.Span_bgn_open).Add(Xoh_consts.Style_atr).Add(Style_line).Add(Xoh_consts.__end_quote); - int pad = digits_max - Int_.DigitCount(line_idx); - if (pad > 0) bfr.Add_byte_repeat(Byte_ascii.Space, pad); - bfr.Add_int_variable(line_idx++).Add_byte(Byte_ascii.Space); - bfr.Add(Xoh_consts.Span_end); - } - bfr.Add(Xoh_consts.Span_bgn_open); - if (highlight_idxs.Match(i)) - bfr.Add(Xoh_consts.Style_atr).Add(Style_highlight).Add(Xoh_consts.__end_quote); - else - bfr.Add(Xoh_consts.__end); - Xox_mgr_base.Xtn_write_escape(app, bfr, line); - bfr.Add(Xoh_consts.Span_end); - if (enclose_is_none) - bfr.Add(Html_tag_.Br_inl); - bfr.Add_byte_nl(); - } - } - else - Xox_mgr_base.Xtn_write_escape(app, bfr, src, text_bgn, text_end); - if (enclose_is_none) bfr.Add(Xoh_consts.Span_end); - else if (lang_is_text) bfr.Add(Xoh_consts.Code_end); - else bfr.Add(Xoh_consts.Pre_end); - } - private static final byte[] Lang_text = Bry_.new_a7("text"), Style_line = Bry_.new_a7("-moz-user-select:none;"), Style_highlight = Bry_.new_a7("background-color: #FFFFCC;"), Enclose_none = Bry_.new_a7("none"); - public static final byte Xatr_enclose = 2, Xatr_lang = 3, Xatr_style = 4, Xatr_line = 5, Xatr_start = 6, Xatr_highlight = 7; - private static final Hash_adp_bry xatrs_syntaxHighlight = Hash_adp_bry.ci_a7().Add_str_byte("enclose", Xatr_enclose).Add_str_byte("lang", Xatr_lang).Add_str_byte("style", Xatr_style).Add_str_byte("line", Xatr_line).Add_str_byte("start", Xatr_start).Add_str_byte("highlight", Xatr_highlight); -} diff --git a/400_xowa/src/gplx/xowa/xtns/syntaxHighlight/Int_rng_mgr.java b/400_xowa/src/gplx/xowa/xtns/syntax_highlights/Int_rng_mgr.java similarity index 91% rename from 400_xowa/src/gplx/xowa/xtns/syntaxHighlight/Int_rng_mgr.java rename to 400_xowa/src/gplx/xowa/xtns/syntax_highlights/Int_rng_mgr.java index 99ef17977..d88a6f930 100644 --- a/400_xowa/src/gplx/xowa/xtns/syntaxHighlight/Int_rng_mgr.java +++ b/400_xowa/src/gplx/xowa/xtns/syntax_highlights/Int_rng_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.xtns.syntaxHighlight; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; +package gplx.xowa.xtns.syntax_highlights; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; public interface Int_rng_mgr { boolean Match(int v); boolean Parse(byte[] src); @@ -23,7 +23,7 @@ public interface Int_rng_mgr { class Int_rng_mgr_null implements Int_rng_mgr { public boolean Match(int v) {return false;} public boolean Parse(byte[] src) {return false;} - public static final Int_rng_mgr_null _ = new Int_rng_mgr_null(); Int_rng_mgr_null() {} + public static final Int_rng_mgr_null Instance = new Int_rng_mgr_null(); Int_rng_mgr_null() {} } class Int_rng_mgr_base implements Int_rng_mgr { private List_adp itms = List_adp_.new_(); @@ -84,4 +84,4 @@ class Int_where_val implements Int_where { class Int_where_rng implements Int_where { public Int_where_rng(int bgn, int end) {this.bgn = bgn; this.end = end;} private int bgn, end; public boolean Match(int v) {return v >= bgn && v <= end;} -} \ No newline at end of file +} diff --git a/400_xowa/src/gplx/xowa/xtns/syntaxHighlight/Int_rng_mgr_tst.java b/400_xowa/src/gplx/xowa/xtns/syntax_highlights/Int_rng_mgr_tst.java similarity index 84% rename from 400_xowa/src/gplx/xowa/xtns/syntaxHighlight/Int_rng_mgr_tst.java rename to 400_xowa/src/gplx/xowa/xtns/syntax_highlights/Int_rng_mgr_tst.java index dee5e24aa..d8e03243a 100644 --- a/400_xowa/src/gplx/xowa/xtns/syntaxHighlight/Int_rng_mgr_tst.java +++ b/400_xowa/src/gplx/xowa/xtns/syntax_highlights/Int_rng_mgr_tst.java @@ -15,20 +15,22 @@ 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.xtns.syntaxHighlight; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; +package gplx.xowa.xtns.syntax_highlights; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import org.junit.*; public class Int_rng_mgr_tst { - @Before public void init() {fxt.Clear();} Int_rng_mgr_fxt fxt = new Int_rng_mgr_fxt(); + private final Int_rng_mgr_fxt fxt = new Int_rng_mgr_fxt(); + @Before public void init() {fxt.Clear();} @Test public void Val() {fxt.Test_parse_y("2") .Test_match_y(2) .Test_match_n(1, 3);} @Test public void Rng() {fxt.Test_parse_y("2-5") .Test_match_y(2, 3, 4, 5) .Test_match_n(0, 1, 6);} @Test public void Many() {fxt.Test_parse_y("1,3-5,7,9-10") .Test_match_y(1, 3, 4, 5, 7, 9, 10) .Test_match_n(0, 2, 6, 8, 11);} } class Int_rng_mgr_fxt { + private Int_rng_mgr_base mgr; public void Clear() { if (mgr == null) mgr = new Int_rng_mgr_base(); mgr.Clear(); - } Int_rng_mgr_base mgr; + } public Int_rng_mgr_fxt Test_parse_y(String raw) {return Test_parse(raw, true);} public Int_rng_mgr_fxt Test_parse_n(String raw) {return Test_parse(raw, false);} public Int_rng_mgr_fxt Test_parse(String raw, boolean expd) {Tfds.Eq(expd, mgr.Parse(Bry_.new_a7(raw))); return this;} @@ -37,7 +39,7 @@ class Int_rng_mgr_fxt { public Int_rng_mgr_fxt Test_match(int[] ary, boolean expd) { int len = ary.length; for (int i = 0; i < len; i++) { - Tfds.Eq(expd, mgr.Match(ary[i]), Int_.Xto_str(ary[i])); + Tfds.Eq(expd, mgr.Match(ary[i]), Int_.To_str(ary[i])); } return this; } diff --git a/400_xowa/src/gplx/xowa/xtns/syntax_highlights/Synh_xtn_nde.java b/400_xowa/src/gplx/xowa/xtns/syntax_highlights/Synh_xtn_nde.java new file mode 100644 index 000000000..0797abd2d --- /dev/null +++ b/400_xowa/src/gplx/xowa/xtns/syntax_highlights/Synh_xtn_nde.java @@ -0,0 +1,57 @@ +/* +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.xtns.syntax_highlights; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; +import gplx.core.primitives.*; +import gplx.xowa.parsers.*; import gplx.xowa.parsers.xndes.*; import gplx.xowa.parsers.htmls.*; +import gplx.xowa.htmls.*; +public class Synh_xtn_nde implements Xox_xnde, Mwh_atr_itm_owner { + private byte[] lang = Bry_.Empty; private byte[] style = null; private byte[] enclose = Bry_.Empty; + private boolean line_enabled = false; private int start = 1; private Int_rng_mgr highlight_idxs = Int_rng_mgr_null.Instance; + public Xop_xnde_tkn Xnde() {throw Err_.new_unimplemented();} + public void Xatr__set(Xowe_wiki wiki, byte[] src, Mwh_atr_itm xatr, Object xatr_id_obj) { + if (xatr_id_obj == null) return; + Byte_obj_val xatr_id = (Byte_obj_val)xatr_id_obj; + switch (xatr_id.Val()) { + case Xatr_line: line_enabled = true; break; + case Xatr_enclose: enclose = xatr.Val_as_bry(); break; + case Xatr_lang: lang = xatr.Val_as_bry(); break; + case Xatr_style: style = xatr.Val_as_bry(); break; + case Xatr_start: start = xatr.Val_as_int_or(1); break; + case Xatr_highlight: highlight_idxs = new Int_rng_mgr_base(); highlight_idxs.Parse(xatr.Val_as_bry()); break; + } + } + public void Xtn_parse(Xowe_wiki wiki, Xop_ctx ctx, Xop_root_tkn root, byte[] src, Xop_xnde_tkn xnde) { + Xop_xnde_tag tag = xnde.Tag(); + ctx.Para().Process_block__xnde(tag, tag.Block_open()); // deactivate pre; pre; PAGE:en.w:Comment_(computer_programming); DATE:2014-06-24 + Xox_xnde_.Xatr__set(wiki, this, xatrs_hash, src, xnde); + ctx.Para().Process_block__xnde(tag, tag.Block_close()); // deactivate pre; pre; PAGE:en.w:Comment_(computer_programming); DATE:2014-06-24 + } + public void Xtn_write(Bry_bfr bfr, Xoae_app app, Xop_ctx ctx, Xoh_html_wtr html_wtr, Xoh_wtr_ctx hctx, Xop_xnde_tkn xnde, byte[] src) { + Synh_xtn_nde_.Make(bfr, app, src, xnde.Tag_open_end(), xnde.Tag_close_bgn(), lang, enclose, style, line_enabled, start, highlight_idxs); + } + private static final byte Xatr_enclose = 1, Xatr_lang = 2, Xatr_style = 3, Xatr_line = 4, Xatr_start = 5, Xatr_highlight = 6; + private static final Hash_adp_bry xatrs_hash = Hash_adp_bry.ci_a7() + .Add_str_byte("enclose" , Xatr_enclose) + .Add_str_byte("inline" , Xatr_enclose) + .Add_str_byte("lang" , Xatr_lang) + .Add_str_byte("style" , Xatr_style) + .Add_str_byte("line" , Xatr_line) + .Add_str_byte("start" , Xatr_start) + .Add_str_byte("highlight" , Xatr_highlight) + ; +} diff --git a/400_xowa/src/gplx/xowa/xtns/syntax_highlights/Synh_xtn_nde_.java b/400_xowa/src/gplx/xowa/xtns/syntax_highlights/Synh_xtn_nde_.java new file mode 100644 index 000000000..61293696e --- /dev/null +++ b/400_xowa/src/gplx/xowa/xtns/syntax_highlights/Synh_xtn_nde_.java @@ -0,0 +1,78 @@ +/* +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.xtns.syntax_highlights; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; +import gplx.langs.htmls.*; import gplx.xowa.htmls.*; +class Synh_xtn_nde_ { + public static void Make(Bry_bfr bfr, Xoae_app app, byte[] src, int src_bgn, int src_end, byte[] lang, byte[] enclose, byte[] style, boolean line_enabled, int start, Int_rng_mgr highlight_idxs) { + boolean enclose_is_none = Bry_.Eq(enclose, Enclose_none); + if (enclose_is_none) { // enclose=none -> put in + bfr.Add(Bry__code_bgn); + if (style != null) bfr.Add(Xoh_consts.Style_atr).Add(style).Add_byte(Byte_ascii.Quote); + bfr.Add_byte(Byte_ascii.Gt); + } + else { + bfr.Add(Bry__div_bgn); + if (style != null) bfr.Add(Xoh_consts.Style_atr).Add(style).Add_byte(Byte_ascii.Quote); + bfr.Add_byte(Byte_ascii.Angle_end); + bfr.Add(Xoh_consts.Pre_bgn_overflow); + } + int text_bgn = src_bgn; + int text_end = Bry_find_.Find_bwd_while(src, src_end, -1, Byte_ascii.Space) + 1; // trim space from end; PAGE:en.w:Comment_(computer_programming) DATE:2014-06-23 + if (line_enabled) { + bfr.Add_byte_nl(); + byte[][] lines = Bry_split_.Split_lines(Bry_.Mid(src, text_bgn, text_end)); + int lines_len = lines.length; + int line_idx = start; + int line_end = (line_idx + lines_len) - 1; // EX: line_idx=9 line_len=1; line_end=9 + int digits_max = Int_.DigitCount(line_end); + for (int i = 0; i < lines_len; i++) { + byte[] line = lines[i]; if (i == 0 && Bry_.Len_eq_0(line)) continue; + if (line_enabled) { + bfr.Add(Xoh_consts.Span_bgn_open).Add(Xoh_consts.Style_atr).Add(Style_line).Add(Xoh_consts.__end_quote); + int pad = digits_max - Int_.DigitCount(line_idx); + if (pad > 0) bfr.Add_byte_repeat(Byte_ascii.Space, pad); + bfr.Add_int_variable(line_idx++).Add_byte(Byte_ascii.Space); + bfr.Add(Xoh_consts.Span_end); + } + bfr.Add(Xoh_consts.Span_bgn_open); + if (highlight_idxs.Match(i)) + bfr.Add(Xoh_consts.Style_atr).Add(Style_highlight).Add(Xoh_consts.__end_quote); + else + bfr.Add(Xoh_consts.__end); + Xox_mgr_base.Xtn_write_escape(app, bfr, line); + bfr.Add(Xoh_consts.Span_end); + bfr.Add_byte_nl(); + } + } + else + Xox_mgr_base.Xtn_write_escape_pre(app, bfr, src, text_bgn, text_end); + if (enclose_is_none) { + bfr.Add(Xoh_consts.Code_end); + } + else { + bfr.Add(Xoh_consts.Pre_end); + bfr.Add(Xoh_consts.Div_end); + } + } + private static final byte[] + Enclose_none = Bry_.new_a7("none") + , Style_line = Bry_.new_a7("-moz-user-select:none;"), Style_highlight = Bry_.new_a7("background-color: #FFFFCC;") + , Bry__div_bgn = Bry_.new_a7("
      . */ -package gplx.xowa.xtns.syntaxHighlight; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; +package gplx.xowa.xtns.syntax_highlights; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import org.junit.*; -public class Xtn_syntaxHighlight_nde_tst { - private Xop_fxt fxt = new Xop_fxt(); +public class Synh_xtn_nde_tst { + private final Xop_fxt fxt = new Xop_fxt(); @Test public void Basic() { - fxt.Test_parse_page_all_str("abc", "
      abc
      "); + fxt.Test_parse_page_all_str("abc", "
      abc
      "); } @Test public void Text() { - fxt.Test_parse_page_all_str("abc", "abc"); + fxt.Test_parse_page_all_str("abc", "
      abc
      "); } @Test public void Style_pre() { - fxt.Test_parse_page_all_str("abc", "
      abc
      "); + fxt.Test_parse_page_all_str("abc", "
      abc
      "); } @Test public void Style_code() { - fxt.Test_parse_page_all_str("abc", "abc"); + fxt.Test_parse_page_all_str("abc", "
      abc
      "); } @Test public void Trim_ws() { fxt.Test_parse_page_all_str(String_.Concat_lines_nl @@ -37,9 +37,9 @@ public class Xtn_syntaxHighlight_nde_tst { , "abc" , "" ), String_.Concat_lines_nl - ( "
      "
      +		(	"
      "
       		,	"abc"
      -		,	"
      " + , "
      " )); } @Test public void Line() { @@ -49,10 +49,10 @@ public class Xtn_syntaxHighlight_nde_tst { , "b" , "" ), String_.Concat_lines_nl - ( "
      "
      +		(	"
      "
       		,	"1 a"
       		,	"2 b"
      -		,	"
      " + , "
      " )); } @Test public void Start() { @@ -62,10 +62,10 @@ public class Xtn_syntaxHighlight_nde_tst { , "b" , "" ), String_.Concat_lines_nl - ( "
      "
      +		(	"
      "
       		,	"3 a"
       		,	"4 b"
      -		,	"
      " + , "
      " )); } @Test public void Highlight() { @@ -76,26 +76,26 @@ public class Xtn_syntaxHighlight_nde_tst { , "c" , "" ), String_.Concat_lines_nl - ( "
      "
      +		(	"
      "
       		,	"1 a"
       		,	"2 b"
       		,	"3 c"
      -		,	"
      " + , "
      " )); } @Test public void Enclose_none() { fxt.Test_parse_page_all_str(String_.Concat_lines_nl - ( "" + ( "" , "a" , "b" , "c" , "" ), String_.Concat_lines_nl - ( "" - , "a
      " - , "b
      " - , "c
      " - , "
      " + ( "" + , "a" + , "b" + , "c" + , "" )); } @Test public void Line_padded() { @@ -105,10 +105,10 @@ public class Xtn_syntaxHighlight_nde_tst { , "b" , "
      " ), String_.Concat_lines_nl - ( "
      "
      +		(	"
      "
       		,	" 9 a"
       		,	"10 b"
      -		,	"
      " + , "
      " )); } @Test public void EndTag_has_ws() { // PURPOSE: not being closed correctly; PAGE:en.w:Mergesort; updated; DATE:2014-06-24 @@ -125,15 +125,15 @@ public class Xtn_syntaxHighlight_nde_tst { ), String_.Concat_lines_nl_skip_last ( "

      a" , "

      " - , "
      "
      +		,	"
      "
       		,	"b"
      -		,	"
      " + , "
      " , "" , "

      c" , "

      " - , "
      "
      +		,	"
      "
       		,	"d"
      -		,	"
      " + , "
      " , "" )); fxt.Init_para_n_(); @@ -144,9 +144,9 @@ public class Xtn_syntaxHighlight_nde_tst { , "abc" , " " // trim ws here ), String_.Concat_lines_nl - ( "
      "
      +		(	"
      "
       		,	"abc"
      -		,	"
      " + , "
      " )); } @Test public void Pre() {// PURPOSE: handle pre; PAGE:en.w:Comment_(computer_programming); DATE:2014-06-23 @@ -162,9 +162,9 @@ public class Xtn_syntaxHighlight_nde_tst { ), String_.Concat_lines_nl ( "

      a" , "

      " - , "
      "
      +		,	" 
      "
       		,	" b"
      -		,	"
      " + , "
      " , "" , "

      c" , "

      " diff --git a/400_xowa/src/gplx/xowa/xtns/templateData/Xtn_templateData_nde.java b/400_xowa/src/gplx/xowa/xtns/templateData/Xtn_templateData_nde.java index d80dec1f0..d28ce832f 100644 --- a/400_xowa/src/gplx/xowa/xtns/templateData/Xtn_templateData_nde.java +++ b/400_xowa/src/gplx/xowa/xtns/templateData/Xtn_templateData_nde.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.xtns.templateData; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; -import gplx.xowa.html.*; -import gplx.xowa.parsers.*; import gplx.xowa.parsers.xndes.*; -public class Xtn_templateData_nde implements Xox_xnde, Xop_xnde_atr_parser { +import gplx.xowa.htmls.*; +import gplx.xowa.parsers.*; import gplx.xowa.parsers.xndes.*; import gplx.xowa.parsers.htmls.*; +public class Xtn_templateData_nde implements Xox_xnde { public Xop_xnde_tkn Xnde() {return xnde;} private Xop_xnde_tkn xnde; - public void Xatr_parse(Xowe_wiki wiki, byte[] src, Xop_xatr_itm xatr, Object xatr_obj) {} + public void Xatr__set(Xowe_wiki wiki, byte[] src, Mwh_atr_itm xatr, Object xatr_id_obj) {} public void Xtn_parse(Xowe_wiki wiki, Xop_ctx ctx, Xop_root_tkn root, byte[] src, Xop_xnde_tkn xnde) { this.xnde = xnde; } diff --git a/400_xowa/src/gplx/xowa/xtns/translates/Xop_languages_xnde.java b/400_xowa/src/gplx/xowa/xtns/translates/Xop_languages_xnde.java index 66f0fd305..8ec72cc71 100644 --- a/400_xowa/src/gplx/xowa/xtns/translates/Xop_languages_xnde.java +++ b/400_xowa/src/gplx/xowa/xtns/translates/Xop_languages_xnde.java @@ -17,8 +17,8 @@ along with this program. If not, see . */ package gplx.xowa.xtns.translates; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.core.primitives.*; -import gplx.xowa.nss.*; -import gplx.xowa.html.*; import gplx.xowa.html.hrefs.*; import gplx.xowa.langs.*; import gplx.xowa.wikis.data.tbls.*; +import gplx.xowa.wikis.nss.*; +import gplx.xowa.htmls.*; import gplx.xowa.htmls.hrefs.*; import gplx.xowa.langs.*; import gplx.xowa.wikis.data.tbls.*; import gplx.xowa.parsers.*; import gplx.xowa.parsers.xndes.*; public class Xop_languages_xnde implements Xox_xnde { public Xop_xnde_tkn Xnde() {return xnde;} private Xop_xnde_tkn xnde; @@ -56,17 +56,17 @@ public class Xop_languages_xnde implements Xox_xnde { && page_ttl_bry[lang_bgn - 1] == Xoa_ttl.Subpage_spr // prv char must be /; EX: "Page/fr" ) { byte[] lang_key = Bry_.Mid(page_ttl_bry, lang_bgn, page_ttl_bry_len); - if (Bry_.Eq(lang_key, Xol_lang_.Key_en)) // lang is english; mark english found; + if (Bry_.Eq(lang_key, Xol_lang_itm_.Key_en)) // lang is english; mark english found; english_needed = false; - Xol_lang_itm lang_itm = Xol_lang_itm_.Get_by_key(lang_key); + Xol_lang_stub lang_itm = Xol_lang_stub_.Get_by_key_or_null(lang_key); if (lang_itm == null) continue; // not a known lang rv.Add(lang_itm); } } if (rv.Count() == 0) return List_adp_.Noop; // no lang items; handles situations where just "Page" is returned if (english_needed) // english not found; always add; handles situations wherein Page/fr and Page/de added, but not Page/en - rv.Add(Xol_lang_itm_.Get_by_key(Xol_lang_.Key_en)); - rv.Sort_by(Xol_lang_itm_.Comparer_key); + rv.Add(Xol_lang_stub_.Get_by_key_or_en(Xol_lang_itm_.Key_en)); + rv.Sort_by(Xol_lang_stub_.Comparer_key); return rv; } public void Xtn_write(Bry_bfr bfr, Xoae_app app, Xop_ctx ctx, Xoh_html_wtr html_wtr, Xoh_wtr_ctx hctx, Xop_xnde_tkn xnde, byte[] src) { @@ -108,24 +108,24 @@ class Xop_languages_fmtr implements Bry_fmtr_arg { this.root_ttl = root_ttl; this.cur_lang = cur_lang; } private List_adp langs; private Xowe_wiki wiki; private Xoa_ttl root_ttl; private byte[] cur_lang; - public void XferAry(Bry_bfr bfr, int idx) { + public void Fmt__do(Bry_bfr bfr) { int len = langs.Count(); Xoh_href_wtr href_wtr = wiki.Appe().Html__href_wtr(); int ns_id = root_ttl.Ns().Id(); byte[] root_ttl_bry = root_ttl.Page_db(); // NOTE: do not use .Full(); ns will be added in Xoa_ttl.parse below for (int i = 0; i < len; i++) { - Xol_lang_itm lang = (Xol_lang_itm)langs.Get_at(i); + Xol_lang_stub lang = (Xol_lang_stub)langs.Get_at(i); byte[] lang_key = lang.Key(); - boolean lang_is_en = Bry_.Eq(lang_key, Xol_lang_.Key_en); + boolean lang_is_en = Bry_.Eq(lang_key, Xol_lang_itm_.Key_en); byte[] lang_ttl_bry = lang_is_en ? root_ttl_bry : Bry_.Add_w_dlm(Xoa_ttl.Subpage_spr, root_ttl_bry, lang_key); Xoa_ttl lang_ttl = Xoa_ttl.parse(wiki, ns_id, lang_ttl_bry); byte[] lang_href = href_wtr.Build_to_bry(wiki, lang_ttl); byte[] lang_title = Xoh_html_wtr.Ttl_to_title(lang_ttl.Full_txt()); Bry_fmtr fmtr = null; - if (Bry_.Eq(lang_key, Xol_lang_.Key_en)) fmtr = Xop_languages_xnde.fmtr_itm_english; + if (Bry_.Eq(lang_key, Xol_lang_itm_.Key_en)) fmtr = Xop_languages_xnde.fmtr_itm_english; else if (Bry_.Eq(lang_key, cur_lang)) fmtr = Xop_languages_xnde.fmtr_itm_selected; else fmtr = Xop_languages_xnde.fmtr_itm_basic; - fmtr.Bld_bfr_many(bfr, lang_href, lang_title, lang.Localized_name()); + fmtr.Bld_bfr_many(bfr, lang_href, lang_title, lang.Canonical_name()); } } } diff --git a/400_xowa/src/gplx/xowa/xtns/translates/Xop_languages_xnde_tst.java b/400_xowa/src/gplx/xowa/xtns/translates/Xop_languages_xnde_tst.java index 499355f19..b6aed9dbe 100644 --- a/400_xowa/src/gplx/xowa/xtns/translates/Xop_languages_xnde_tst.java +++ b/400_xowa/src/gplx/xowa/xtns/translates/Xop_languages_xnde_tst.java @@ -19,7 +19,7 @@ package gplx.xowa.xtns.translates; import gplx.*; import gplx.xowa.*; import gpl import org.junit.*; public class Xop_languages_xnde_tst { @Before public void init() { - Io_mgr.I.InitEngine_mem(); + Io_mgr.Instance.InitEngine_mem(); fxt.Reset(); fxt.Page_ttl_("Help:A"); fxt.Init_page_create("Help:A", ""); // create for AllPages diff --git a/400_xowa/src/gplx/xowa/xtns/translates/Xop_mylanguage_page.java b/400_xowa/src/gplx/xowa/xtns/translates/Xop_mylanguage_page.java index e869d447f..8741f64fc 100644 --- a/400_xowa/src/gplx/xowa/xtns/translates/Xop_mylanguage_page.java +++ b/400_xowa/src/gplx/xowa/xtns/translates/Xop_mylanguage_page.java @@ -25,7 +25,7 @@ public class Xop_mylanguage_page implements Xows_page { byte[] page_bry = ttl.Leaf_txt_wo_qarg(); // EX: Help:A byte[] lang_key = wiki.Appe().Usere().Lang().Key_bry(); // EX: fr byte[] trg_bry = page_bry; - boolean lang_is_english = Bry_.Eq(lang_key, Xol_lang_.Key_en); + boolean lang_is_english = Bry_.Eq(lang_key, Xol_lang_itm_.Key_en); if (!lang_is_english) trg_bry = Bry_.Add_w_dlm(Xoa_ttl.Subpage_spr, page_bry, lang_key); Xoae_page found_page = wiki.Data_mgr().Redirect(page, trg_bry); diff --git a/400_xowa/src/gplx/xowa/xtns/translates/Xop_translate_xnde.java b/400_xowa/src/gplx/xowa/xtns/translates/Xop_translate_xnde.java index eb5d26d27..c3253e41b 100644 --- a/400_xowa/src/gplx/xowa/xtns/translates/Xop_translate_xnde.java +++ b/400_xowa/src/gplx/xowa/xtns/translates/Xop_translate_xnde.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.xtns.translates; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; -import gplx.xowa.html.*; -import gplx.xowa.parsers.*; import gplx.xowa.parsers.xndes.*; -public class Xop_translate_xnde implements Xox_xnde, Xop_xnde_atr_parser { +import gplx.xowa.htmls.*; +import gplx.xowa.parsers.*; import gplx.xowa.parsers.xndes.*; import gplx.xowa.parsers.htmls.*; +public class Xop_translate_xnde implements Xox_xnde { public Xop_root_tkn Xtn_root() {return xtn_root;} private Xop_root_tkn xtn_root; - public void Xatr_parse(Xowe_wiki wiki, byte[] src, Xop_xatr_itm xatr, Object xatr_obj) {} + public void Xatr__set(Xowe_wiki wiki, byte[] src, Mwh_atr_itm xatr, Object xatr_id_obj) {} public void Xtn_parse(Xowe_wiki wiki, Xop_ctx ctx, Xop_root_tkn root, byte[] src, Xop_xnde_tkn xnde) { byte[] translate_src = Bry_.Mid(src, xnde.Tag_open_end(), xnde.Tag_close_bgn()); translate_src = Bry_.Trim(translate_src, 0, translate_src.length); diff --git a/400_xowa/src/gplx/xowa/xtns/translates/Xop_tvar_lxr.java b/400_xowa/src/gplx/xowa/xtns/translates/Xop_tvar_lxr.java index 6aa1abe59..509dfe55b 100644 --- a/400_xowa/src/gplx/xowa/xtns/translates/Xop_tvar_lxr.java +++ b/400_xowa/src/gplx/xowa/xtns/translates/Xop_tvar_lxr.java @@ -21,7 +21,7 @@ import gplx.xowa.parsers.*; public class Xop_tvar_lxr implements Xop_lxr { public int Lxr_tid() {return Xop_lxr_.Tid_tvar;} public void Init_by_wiki(Xowe_wiki wiki, Btrie_fast_mgr core_trie) {core_trie.Add(Hook_bgn, this);} - public void Init_by_lang(Xol_lang lang, Btrie_fast_mgr core_trie) {} + public void Init_by_lang(Xol_lang_itm lang, Btrie_fast_mgr core_trie) {} public void Term(Btrie_fast_mgr core_trie) {} private static final byte[] Hook_bgn = Bry_.new_a7(""); 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) { @@ -35,5 +35,5 @@ public class Xop_tvar_lxr implements Xop_lxr { ctx.Subs_add(root, tkn_mkr.Tvar(bgn_pos, end_pos, cur_pos, rhs_end, rhs_end + Int_.Const_position_after_char, lhs_bgn, body)); return end_pos; } - public static final Xop_tvar_lxr _ = new Xop_tvar_lxr(); Xop_tvar_lxr() {} + public static final Xop_tvar_lxr Instance = new Xop_tvar_lxr(); Xop_tvar_lxr() {} } diff --git a/400_xowa/src/gplx/xowa/xtns/wdatas/Wdata_doc.java b/400_xowa/src/gplx/xowa/xtns/wdatas/Wdata_doc.java index 3645c509e..d35f5659a 100644 --- a/400_xowa/src/gplx/xowa/xtns/wdatas/Wdata_doc.java +++ b/400_xowa/src/gplx/xowa/xtns/wdatas/Wdata_doc.java @@ -41,8 +41,8 @@ public class Wdata_doc { return (Wdata_claim_grp)o; } public byte[] Label_list__get(byte[] lang_key) {return Lang_text_list__get(this.Label_list(), lang_key);} - public byte[] Label_list__get_or_fallback(Xol_lang lang) {return Lang_text_list__get_or_fallback(this.Label_list(), lang);} - public byte[] Descr_list__get_or_fallback(Xol_lang lang) {return Lang_text_list__get_or_fallback(this.Descr_list(), lang);} + public byte[] Label_list__get_or_fallback(Xol_lang_itm lang) {return Lang_text_list__get_or_fallback(this.Label_list(), lang);} + public byte[] Descr_list__get_or_fallback(Xol_lang_itm lang) {return Lang_text_list__get_or_fallback(this.Descr_list(), lang);} public byte[] Slink_list__get_or_fallback(byte[] abrv_wm) { Wdata_sitelink_itm rv = (Wdata_sitelink_itm)this.Slink_list().Get_by(abrv_wm); return rv == null ? null : rv.Name(); @@ -52,9 +52,9 @@ public class Wdata_doc { Wdata_langtext_itm rv = (Wdata_langtext_itm)rv_obj; return rv.Text(); } - public byte[] Lang_text_list__get_or_fallback(Ordered_hash lang_text_list, Xol_lang lang) { + public byte[] Lang_text_list__get_or_fallback(Ordered_hash lang_text_list, Xol_lang_itm lang) { byte[] rv = Lang_text_list__get(lang_text_list, lang.Key_bry()); if (rv != null) return rv; - byte[][] ary = lang.Fallback_bry_ary(); // NOTE: en is currently automatically being added by Xol_lang + byte[][] ary = lang.Fallback_bry_ary(); // NOTE: en is currently automatically being added by Xol_lang_itm int len = ary.length; for (int i = 0; i < len; ++i) { byte[] lang_key = ary[i]; diff --git a/400_xowa/src/gplx/xowa/xtns/wdatas/Wdata_doc_bldr.java b/400_xowa/src/gplx/xowa/xtns/wdatas/Wdata_doc_bldr.java index 7b4bc28ba..1ee404dde 100644 --- a/400_xowa/src/gplx/xowa/xtns/wdatas/Wdata_doc_bldr.java +++ b/400_xowa/src/gplx/xowa/xtns/wdatas/Wdata_doc_bldr.java @@ -42,6 +42,6 @@ public class Wdata_doc_bldr { return rv; } private void Init() { - descr_list = Ordered_hash_.new_bry_(); label_list = Ordered_hash_.new_bry_(); slink_list = Ordered_hash_.new_bry_(); alias_list = Ordered_hash_.new_bry_(); claim_list = Ordered_hash_.new_(); + descr_list = Ordered_hash_.New_bry(); label_list = Ordered_hash_.New_bry(); slink_list = Ordered_hash_.New_bry(); alias_list = Ordered_hash_.New_bry(); claim_list = Ordered_hash_.New(); } } diff --git a/400_xowa/src/gplx/xowa/xtns/wdatas/Wdata_prop_val_visitor.java b/400_xowa/src/gplx/xowa/xtns/wdatas/Wdata_prop_val_visitor.java index 3bdbd69fd..eb4b82f08 100644 --- a/400_xowa/src/gplx/xowa/xtns/wdatas/Wdata_prop_val_visitor.java +++ b/400_xowa/src/gplx/xowa/xtns/wdatas/Wdata_prop_val_visitor.java @@ -33,15 +33,15 @@ class Wdata_prop_val_visitor implements Wdata_claim_visitor { Wdata_doc entity_doc = wdata_mgr.Pages_get(itm.Page_ttl_db()); if (entity_doc == null) return; // NOTE: wiki may refer to entity that no longer exists; EX: {{#property:p1}} which links to Q1, but p1 links to Q2 and Q2 was deleted; DATE:2014-02-01 byte[] label = entity_doc.Label_list__get(lang_key); - if (label == null && !Bry_.Eq(lang_key, Xol_lang_.Key_en)) // NOTE: some properties may not exist in language of wiki; default to english; DATE:2013-12-19 - label = entity_doc.Label_list__get(Xol_lang_.Key_en); + if (label == null && !Bry_.Eq(lang_key, Xol_lang_itm_.Key_en)) // NOTE: some properties may not exist in language of wiki; default to english; DATE:2013-12-19 + label = entity_doc.Label_list__get(Xol_lang_itm_.Key_en); if (label != null) // if label is still not found, don't add null reference bfr.Add(label); } public void Visit_quantity(Wdata_claim_itm_quantity itm) { byte[] amount_bry = itm.Amount(); long val = Bry_.To_long_or(amount_bry, Ignore_comma, 0, amount_bry.length, 0); // NOTE: must cast to long for large numbers; EX:{{#property:P1082}} PAGE:en.w:Earth; DATE:2015-08-02 - Xol_lang lang = app.Lang_mgr().Get_by_key(lang_key); + Xol_lang_itm lang = app.Lang_mgr().Get_by(lang_key); bfr.Add(lang.Num_mgr().Format_num_by_long(val)); // amount; EX: 1,234 if (itm.Lbound_as_num().To_long() != val && itm.Ubound_as_num().To_long() != val) { // NOTE: do not output ± if lbound == val == ubound; PAGE:en.w:Tintinan DATE:2015-08-02 bfr.Add(Bry_quantity_margin_of_error); // symbol: EX: ± diff --git a/400_xowa/src/gplx/xowa/xtns/wdatas/Wdata_wiki_mgr.java b/400_xowa/src/gplx/xowa/xtns/wdatas/Wdata_wiki_mgr.java index ec436b493..d6ff47f32 100644 --- a/400_xowa/src/gplx/xowa/xtns/wdatas/Wdata_wiki_mgr.java +++ b/400_xowa/src/gplx/xowa/xtns/wdatas/Wdata_wiki_mgr.java @@ -18,9 +18,9 @@ along with this program. If not, see . package gplx.xowa.xtns.wdatas; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.core.primitives.*; import gplx.langs.jsons.*; -import gplx.xowa.nss.*; +import gplx.xowa.wikis.nss.*; import gplx.xowa.langs.*; -import gplx.xowa.wikis.domains.*; import gplx.xowa.html.*; import gplx.xowa.parsers.logs.*; import gplx.xowa.apis.xowa.xtns.*; import gplx.xowa.apis.xowa.html.*; import gplx.xowa.users.*; +import gplx.xowa.wikis.domains.*; import gplx.xowa.htmls.*; import gplx.xowa.parsers.logs.*; import gplx.xowa.apps.apis.xowa.xtns.*; import gplx.xowa.apps.apis.xowa.html.*; import gplx.xowa.users.*; import gplx.xowa.xtns.wdatas.parsers.*; import gplx.xowa.xtns.wdatas.pfuncs.*; import gplx.xowa.xtns.wdatas.core.*; import gplx.xowa.xtns.wdatas.hwtrs.*; import gplx.xowa.parsers.*; public class Wdata_wiki_mgr implements GfoEvObj, GfoInvkAble { @@ -58,7 +58,7 @@ public class Wdata_wiki_mgr implements GfoEvObj, GfoInvkAble { } public void Qids_add(Bry_bfr bfr, byte[] lang_key, int wiki_tid, byte[] ns_num, byte[] ttl, byte[] qid) { Xow_abrv_wm_.To_abrv(bfr, lang_key, wiki_tid_ref.Val_(wiki_tid)); - byte[] qids_key = bfr.Add_byte(Byte_ascii.Pipe).Add(ns_num).Add_byte(Byte_ascii.Pipe).Add(ttl).Xto_bry(); + byte[] qids_key = bfr.Add_byte(Byte_ascii.Pipe).Add(ns_num).Add_byte(Byte_ascii.Pipe).Add(ttl).To_bry(); qids_cache.Add(qids_key, qid); } public byte[] Qids_get(Xowe_wiki wiki, Xoa_ttl ttl) {return Qids_get(wiki.Wdata_wiki_abrv(), ttl);} @@ -77,7 +77,7 @@ public class Wdata_wiki_mgr implements GfoEvObj, GfoInvkAble { public Int_obj_val Pids_add(byte[] pids_key, int pid_id) {Int_obj_val rv = Int_obj_val.new_(pid_id); pids_cache.Add(pids_key, rv); return rv;} public int Pids_get(byte[] lang_key, byte[] pid_name) { if (!enabled) return Pid_null; - byte[] pids_key = Bry_.Add(lang_key, Xoa_consts.Pipe_bry, pid_name); + byte[] pids_key = Bry_.Add(lang_key, Byte_ascii.Pipe_bry, pid_name); Int_obj_val rv = (Int_obj_val)pids_cache.Get_by(pids_key); if (rv == null) { int pid_id = this.Wdata_wiki().Db_mgr().Load_mgr().Load_pid(lang_key, pid_name); if (pid_id == Pid_null) return Pid_null; @@ -177,7 +177,7 @@ public class Wdata_wiki_mgr implements GfoEvObj, GfoInvkAble { } private void Hwtr_msgs_make() { if (!app.Wiki_mgr().Wiki_regy().Has(Xow_domain_itm_.Bry__wikidata)) return; - Xol_lang new_lang = app.Usere().Lang(); + Xol_lang_itm new_lang = app.Usere().Lang(); Xowe_wiki cur_wiki = this.Wdata_wiki(); cur_wiki.Xtn_mgr().Xtn_wikibase().Load_msgs(cur_wiki, new_lang); Wdata_hwtr_msgs hwtr_msgs = Wdata_hwtr_msgs.new_(cur_wiki.Msg_mgr()); @@ -197,7 +197,7 @@ public class Wdata_wiki_mgr implements GfoEvObj, GfoInvkAble { return jdoc_parser.Parse(src); } public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) { - if (ctx.Match(k, Invk_enabled)) return Yn.Xto_str(enabled); + if (ctx.Match(k, Invk_enabled)) return Yn.To_str(enabled); else if (ctx.Match(k, Invk_enabled_)) enabled = m.ReadYn("v"); else if (ctx.Match(k, Invk_domain)) return String_.new_u8(domain); else if (ctx.Match(k, Invk_domain_)) domain = m.ReadBry("v"); @@ -223,11 +223,11 @@ public class Wdata_wiki_mgr implements GfoEvObj, GfoInvkAble { public static final byte[] Html_json_id = Bry_.new_a7("xowa-wikidata-json"); public static boolean Wiki_page_is_json(int wiki_tid, int ns_id) { switch (wiki_tid) { - case Xow_domain_type_.Int__wikidata: + case Xow_domain_tid_.Int__wikidata: if (ns_id == Xow_ns_.Id_main || ns_id == gplx.xowa.xtns.wdatas.Wdata_wiki_mgr.Ns_property) return true; break; - case Xow_domain_type_.Int__home: + case Xow_domain_tid_.Int__home: if (ns_id == gplx.xowa.xtns.wdatas.Wdata_wiki_mgr.Ns_property) return true; break; diff --git a/400_xowa/src/gplx/xowa/xtns/wdatas/Wdata_wiki_mgr_fxt.java b/400_xowa/src/gplx/xowa/xtns/wdatas/Wdata_wiki_mgr_fxt.java index 02f57df2d..c4b65a940 100644 --- a/400_xowa/src/gplx/xowa/xtns/wdatas/Wdata_wiki_mgr_fxt.java +++ b/400_xowa/src/gplx/xowa/xtns/wdatas/Wdata_wiki_mgr_fxt.java @@ -17,23 +17,24 @@ along with this program. If not, see . */ package gplx.xowa.xtns.wdatas; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.core.primitives.*; import gplx.langs.jsons.*; -import gplx.xowa.wikis.*; import gplx.xowa.wikis.xwikis.*; import gplx.xowa.gui.*; import gplx.xowa.xtns.wdatas.imports.*; import gplx.xowa.pages.*; -import gplx.xowa.nss.*; +import gplx.xowa.wikis.*; import gplx.xowa.wikis.xwikis.*; import gplx.xowa.guis.*; import gplx.xowa.xtns.wdatas.imports.*; import gplx.xowa.wikis.pages.*; +import gplx.xowa.wikis.nss.*; import gplx.xowa.langs.*; import gplx.xowa.xtns.wdatas.core.*; import gplx.xowa.xtns.wdatas.pfuncs.*; -import gplx.xowa.langs.cfgs.*; -import gplx.xowa.tdbs.hives.*; import gplx.xowa.tdbs.xdats.*; +import gplx.xowa.wikis.tdbs.hives.*; import gplx.xowa.wikis.tdbs.xdats.*; public class Wdata_wiki_mgr_fxt { + private final Wdata_xwiki_link_wtr wdata_lang_wtr = new Wdata_xwiki_link_wtr(); public Xowe_wiki Wiki() {return parser_fxt.Wiki();} public Wdata_wiki_mgr_fxt Init() {return Init(new Xop_fxt(), true);} public Wdata_wiki_mgr_fxt Init(Xop_fxt parser_fxt, boolean reset) { this.parser_fxt = parser_fxt; this.wiki = parser_fxt.Wiki(); app = wiki.Appe(); + app.Xwiki_mgr__sitelink_mgr().Init_by_app(); wdoc_bldr = new Wdata_doc_bldr(); wdata_mgr = app.Wiki_mgr().Wdata_mgr(); wdata_mgr.Clear(); if (reset) { - Io_mgr.I.InitEngine_mem(); + Io_mgr.Instance.InitEngine_mem(); parser_fxt.Reset(); } return this; @@ -49,14 +50,14 @@ public class Wdata_wiki_mgr_fxt { public Wdata_claim_itm_core Make_claim_str(int pid, String val) {return Make_claim_str(pid, Bry_.new_u8(val));} public Wdata_claim_itm_core Make_claim_str(int pid, byte[] val) {return new Wdata_claim_itm_str(pid, Wdata_dict_snak_tid.Tid_value, val);} public Wdata_claim_itm_core Make_claim_time(int pid, String val) {return Make_claim_time(pid, val, Bry_.Empty, Bry_.Empty);} - public Wdata_claim_itm_core Make_claim_time(int pid, String val, int precision) {return Make_claim_time(pid, val, Int_.Xto_bry(precision), Bry_.Empty);} + public Wdata_claim_itm_core Make_claim_time(int pid, String val, int precision) {return Make_claim_time(pid, val, Int_.To_bry(precision), Bry_.Empty);} public Wdata_claim_itm_core Make_claim_time(int pid, String val, byte[] precision, byte[] calendar) { return new Wdata_claim_itm_time(pid, Wdata_dict_snak_tid.Tid_value, Wdata_dict_value_time.Xto_time(val), Bry_.Empty, Bry_.Empty, Bry_.Empty, precision, calendar); } public Wdata_claim_itm_core Make_claim_monolingual(int pid, String lang, String text) {return new Wdata_claim_itm_monolingualtext(pid, Wdata_dict_snak_tid.Tid_value, Bry_.new_u8(lang), Bry_.new_u8(text));} public Wdata_claim_itm_core Make_claim_quantity(int pid, String amount, String unit, String ubound, String lbound) {return new Wdata_claim_itm_quantity(pid, Wdata_dict_snak_tid.Tid_value, Bry_.new_a7(amount), Bry_.new_a7(unit), Bry_.new_a7(ubound), Bry_.new_a7(lbound));} - public Wdata_claim_itm_core Make_claim_entity_qid(int pid, int val) {return new Wdata_claim_itm_entity(pid, Wdata_dict_snak_tid.Tid_value, Wdata_dict_value_entity_tid.Tid_item, Int_.Xto_bry(val));} - public Wdata_claim_itm_core Make_claim_entity_pid(int pid, int val) {return new Wdata_claim_itm_entity(pid, Wdata_dict_snak_tid.Tid_value, Wdata_dict_value_entity_tid.Tid_property, Int_.Xto_bry(val));} + public Wdata_claim_itm_core Make_claim_entity_qid(int pid, int val) {return new Wdata_claim_itm_entity(pid, Wdata_dict_snak_tid.Tid_value, Wdata_dict_value_entity_tid.Tid_item, Int_.To_bry(val));} + public Wdata_claim_itm_core Make_claim_entity_pid(int pid, int val) {return new Wdata_claim_itm_entity(pid, Wdata_dict_snak_tid.Tid_value, Wdata_dict_value_entity_tid.Tid_property, Int_.To_bry(val));} public Wdata_claim_itm_core Make_claim_geo(int pid, String lon, String lat) {return Make_claim_geo(pid, lon, lat, ".00001", null, "http://www.wikidata.org/entity/Q2");} public Wdata_claim_itm_core Make_claim_geo(int pid, String lon, String lat, String prc, String alt, String glb) { return new Wdata_claim_itm_globecoordinate(pid, Wdata_dict_snak_tid.Tid_value, Bry_.new_a7(lat), Bry_.new_a7(lon), Bry_.new_a7(alt), Bry_.new_a7(prc), Bry_.new_a7(glb)); @@ -75,7 +76,7 @@ public class Wdata_wiki_mgr_fxt { int len = prefixes.length; for (int i = 0; i < len; i++) { String prefix = prefixes[i]; - wiki.Xwiki_mgr().Add_full(prefix, prefix + ".wikipedia.org"); + wiki.Xwiki_mgr().Add_by_atrs(prefix, prefix + ".wikipedia.org"); } } public void Init_qids_add(String lang_key, int wiki_tid, String ttl, String qid) { @@ -94,7 +95,7 @@ public class Wdata_wiki_mgr_fxt { regy_mgr.Save(); Bry_bfr bfr = app.Utl__bfr_mkr().Get_b512().Mkr_rls(); - byte[] itm = bfr.Add(ttl_bry).Add_byte(Byte_ascii.Pipe).Add(Bry_.new_a7(qid)).Add_byte_nl().Xto_bry_and_clear(); + byte[] itm = bfr.Add(ttl_bry).Add_byte(Byte_ascii.Pipe).Add(Bry_.new_a7(qid)).Add_byte_nl().To_bry_and_clear(); Xob_xdat_file xdat_file = new Xob_xdat_file(); xdat_file.Insert(bfr, itm); Io_url file_orig = Xob_wdata_qid_base_tst.ttl_(app.Wiki_mgr().Wdata_mgr().Wdata_wiki(), wiki, ns_num, 0); @@ -128,43 +129,28 @@ public class Wdata_wiki_mgr_fxt { parser_fxt.Test_parse_page_tmpl_str(raw, expd); } public void Test_parse_langs(String raw, String expd) { - // clear langs, else dupes - wiki.Xwiki_mgr().Lang_mgr().Clear(); - // setup langs Xoae_page page = wiki.Parser_mgr().Ctx().Cur_page(); - Xoa_lang_mgr lang_mgr = app.Lang_mgr(); - lang_mgr.Groups().Set_bulk(Bry_.new_a7(String_.Concat_lines_nl - ( "+||grp|wiki" - , "+|wiki|grp|grp1" - , "+|grp1|itm|en|English" - , "+|grp1|itm|fr|French" - , "+|grp1|itm|de|German" - , "+|grp1|itm|pl|Polish" - ))); - wiki.Xwiki_mgr().Add_bulk_langs(Bry_.new_a7("wiki")); - String bulk = String_.Concat_lines_nl - ( "en.wikipedia.org|en.wikipedia.org" - , "fr.wikipedia.org|fr.wikipedia.org" - , "de.wikipedia.org|de.wikipedia.org" - , "pl.wikipedia.org|pl.wikipedia.org" - ); - wiki.Appe().Usere().Wiki().Xwiki_mgr().Add_bulk(Bry_.new_a7(bulk)); - - // register lang itms (needed for perf) - Xow_xwiki_mgr xwiki_mgr = wiki.Xwiki_mgr(); - int len = xwiki_mgr.Len(); - for (int i = 0; i < len; i++) { - Xow_xwiki_itm xwiki_itm = xwiki_mgr.Get_at(i); - byte[] lang_key = Xol_lang_itm_.Get_by_id(xwiki_itm.Lang_id()).Key(); - Object lang_obj = app.Lang_mgr().Groups().Grps_get(Bry_.new_a7("wiki")).Nde_subs_get_at(0).Nde_subs_get(lang_key); - wiki.Xwiki_mgr().Lang_mgr().Itms_reg(xwiki_itm, (Xoac_lang_itm)lang_obj); - } + app.Xwiki_mgr__sitelink_mgr().Parse(Bry_.new_u8(String_.Concat_lines_nl + ( "0|grp1" + , "1|en|English" + , "1|fr|French" + , "1|de|German" + , "1|pl|Polish" + ))); + wiki.Xwiki_mgr().Add_by_sitelink_mgr(); + wiki.Appe().Usere().Wiki().Xwiki_mgr().Add_by_csv(Bry_.new_a7(String_.Concat_lines_nl + ( "1|en.wikipedia.org|en.wikipedia.org" + , "1|fr.wikipedia.org|fr.wikipedia.org" + , "1|de.wikipedia.org|de.wikipedia.org" + , "1|pl.wikipedia.org|pl.wikipedia.org" + ))); parser_fxt.Page_ttl_("Q1_en"); parser_fxt.Exec_parse_page_all_as_str(raw); Bry_bfr tmp_bfr = wiki.Appe().Utl__bfr_mkr().Get_b512(); - wiki.Html_mgr().Page_wtr_mgr().Wkr(Xopg_view_mode.Tid_read).Wdata_lang_wtr().Page_(page).XferAry(tmp_bfr, 0); + + wdata_lang_wtr.Page_(page).Fmt__do(tmp_bfr); Tfds.Eq_str_lines(expd, tmp_bfr.To_str_and_rls()); } public void Test_xwiki_links(String ttl, String... expd) { diff --git a/400_xowa/src/gplx/xowa/xtns/wdatas/Wdata_xtn_mgr.java b/400_xowa/src/gplx/xowa/xtns/wdatas/Wdata_xtn_mgr.java index c56abeb62..3b78af2ce 100644 --- a/400_xowa/src/gplx/xowa/xtns/wdatas/Wdata_xtn_mgr.java +++ b/400_xowa/src/gplx/xowa/xtns/wdatas/Wdata_xtn_mgr.java @@ -17,7 +17,7 @@ along with this program. If not, see . */ package gplx.xowa.xtns.wdatas; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.langs.htmls.*; -import gplx.xowa.langs.*; import gplx.xowa.bldrs.langs.*; +import gplx.xowa.langs.*; import gplx.xowa.langs.bldrs.*; import gplx.xowa.wikis.*; public class Wdata_xtn_mgr extends Xox_mgr_base { private static final String XTN_KEY_STR = "Wikibase"; public static final byte[] XTN_KEY = Bry_.new_a7(XTN_KEY_STR); @@ -27,7 +27,7 @@ public class Wdata_xtn_mgr extends Xox_mgr_base { @Override public void Xtn_init_by_wiki(Xowe_wiki wiki) { if (!Enabled()) return; } - public void Load_msgs(Xowe_wiki wdata_wiki, Xol_lang lang) { + public void Load_msgs(Xowe_wiki wdata_wiki, Xol_lang_itm lang) { wdata_wiki.Msg_mgr().Lang_(lang); Xtn_load_i18n(wdata_wiki, XTN_KEY_STR, "lib" , "i18n", lang.Key_str() + ".json"); Xtn_load_i18n(wdata_wiki, XTN_KEY_STR, "repo", "i18n", lang.Key_str() + ".json"); diff --git a/400_xowa/src/gplx/xowa/xtns/wdatas/Wdata_xwiki_link_wtr.java b/400_xowa/src/gplx/xowa/xtns/wdatas/Wdata_xwiki_link_wtr.java index 531b3578a..c5d11f415 100644 --- a/400_xowa/src/gplx/xowa/xtns/wdatas/Wdata_xwiki_link_wtr.java +++ b/400_xowa/src/gplx/xowa/xtns/wdatas/Wdata_xwiki_link_wtr.java @@ -21,18 +21,18 @@ import gplx.xowa.wikis.domains.*; import gplx.xowa.wikis.xwikis.*; import gplx.xowa.xtns.wdatas.core.*; import gplx.xowa.xtns.wdatas.pfuncs.*; public class Wdata_xwiki_link_wtr implements Bry_fmtr_arg { public Wdata_xwiki_link_wtr Page_(Xoae_page page) {this.page = page; return this;} private Xoae_page page; - public void XferAry(Bry_bfr bfr, int idx) { + public void Fmt__do(Bry_bfr bfr) { List_adp slink_list = page.Slink_list(); Xoa_ttl page_ttl = page.Ttl(); byte[] qid = Write_wdata_links(slink_list, page.Wikie(), page_ttl, page.Wdata_external_lang_links()); if (!Bry_.Eq(qid, Qid_null) && !page_ttl.Ns().Id_special()) // don't write "In other languages" if no qid; also skip Special ns; needed for pages with wbase page, but no sitelinks; PAGE:en.w:Tintinan; DATE:2015-08-03 - page.Wikie().Xwiki_mgr().Lang_mgr().Html_bld(bfr, page.Wikie(), slink_list, qid); + page.Wiki().App().Xwiki_mgr__sitelink_mgr().Write_html(bfr, page.Wikie(), slink_list, qid); } public static byte[] Write_wdata_links(List_adp slink_list, Xowe_wiki wiki, Xoa_ttl ttl, Wdata_external_lang_links_data external_links_mgr) { try { switch (wiki.Domain_tid()) { - case Xow_domain_type_.Int__home: // home will never be in wikidata - case Xow_domain_type_.Int__wikidata: // wikidata will never be in wikidata + case Xow_domain_tid_.Int__home: // home will never be in wikidata + case Xow_domain_tid_.Int__wikidata: // wikidata will never be in wikidata return Qid_null; } Wdata_wiki_mgr wdata_mgr = wiki.Appe().Wiki_mgr().Wdata_mgr(); @@ -55,7 +55,7 @@ public class Wdata_xwiki_link_wtr implements Bry_fmtr_arg { tmp_bfr.Add(lang_key); tmp_bfr.Add_byte(Byte_ascii.Colon); tmp_bfr.Add(slink.Name()); - Xoa_ttl slink_ttl = Xoa_ttl.parse(wiki, tmp_bfr.Xto_bry_and_clear()); + Xoa_ttl slink_ttl = Xoa_ttl.parse(wiki, tmp_bfr.To_bry_and_clear()); if (slink_ttl == null) continue; // invalid ttl Xow_xwiki_itm xwiki_itm = slink_ttl.Wik_itm(); if ( xwiki_itm == null // not a known xwiki; EX: [[zzz:abc]] @@ -66,7 +66,7 @@ public class Wdata_xwiki_link_wtr implements Bry_fmtr_arg { } tmp_bfr.Mkr_rls(); if (external_links_mgr_enabled && external_links_mgr.Sort()) - slink_list.Sort_by(Xoa_ttl_sorter._); + slink_list.Sort_by(Xoa_ttl_sorter.Instance); return doc.Qid(); } catch (Exception e) {Err_.Noop(e); return Qid_null;} } @@ -77,5 +77,5 @@ class Xoa_ttl_sorter implements gplx.lists.ComparerAble { Xoa_ttl lhs = (Xoa_ttl)lhsObj, rhs = (Xoa_ttl)rhsObj; return Bry_.Compare(lhs.Raw(), rhs.Raw()); } - public static final Xoa_ttl_sorter _ = new Xoa_ttl_sorter(); Xoa_ttl_sorter() {} + public static final Xoa_ttl_sorter Instance = new Xoa_ttl_sorter(); Xoa_ttl_sorter() {} } diff --git a/400_xowa/src/gplx/xowa/xtns/wdatas/Wdata_xwiki_link_wtr_tst.java b/400_xowa/src/gplx/xowa/xtns/wdatas/Wdata_xwiki_link_wtr_tst.java index fa911b073..90f21ed71 100644 --- a/400_xowa/src/gplx/xowa/xtns/wdatas/Wdata_xwiki_link_wtr_tst.java +++ b/400_xowa/src/gplx/xowa/xtns/wdatas/Wdata_xwiki_link_wtr_tst.java @@ -19,16 +19,16 @@ package gplx.xowa.xtns.wdatas; import gplx.*; import gplx.xowa.*; import gplx.xo import org.junit.*; import gplx.langs.jsons.*; import gplx.xowa.wikis.domains.*; public class Wdata_xwiki_link_wtr_tst { - @Before public void init() {fxt.Init();} Wdata_wiki_mgr_fxt fxt = new Wdata_wiki_mgr_fxt(); + @Before public void init() {fxt.Init();} private final Wdata_wiki_mgr_fxt fxt = new Wdata_wiki_mgr_fxt(); @Test public void Skip_xwiki_lang_for_self() { // PURPOSE: list of language links should not include self fxt.Init_xwikis_add("en", "fr", "de"); - fxt.Init_qids_add("en", Xow_domain_type_.Int__wikipedia, "Q1_en", "Q1"); + fxt.Init_qids_add("en", Xow_domain_tid_.Int__wikipedia, "Q1_en", "Q1"); fxt.Init_pages_add(fxt.Wdoc_bldr("Q1").Add_sitelink("enwiki", "Q1_en").Add_sitelink("frwiki", "Q1_fr").Add_sitelink("dewiki", "Q1_de").Xto_wdoc()); fxt.Test_xwiki_links("Q1_en", "Q1_fr", "Q1_de"); } @Test public void No_external_lang_links__de() { fxt.Init_xwikis_add("fr", "de"); - fxt.Init_qids_add("en", Xow_domain_type_.Int__wikipedia, "Q1_en", "Q1"); + fxt.Init_qids_add("en", Xow_domain_tid_.Int__wikipedia, "Q1_en", "Q1"); fxt.Init_pages_add(fxt.Wdoc_bldr("Q1").Add_sitelink("enwiki", "Q1_en").Add_sitelink("frwiki", "Q1_fr").Add_sitelink("dewiki", "Q1_de").Xto_wdoc()); fxt.Init_external_links_mgr_add("de"); fxt.Test_xwiki_links("Q1_en", "Q1_de"); @@ -41,6 +41,8 @@ public class Wdata_xwiki_link_wtr_tst { , " " , " " , " " + , " " , "
      German
    3. Q1 de
    4. " + , " " , "
      " , " " @@ -49,7 +51,7 @@ public class Wdata_xwiki_link_wtr_tst { } @Test public void Links_w_name_fmt() { // PURPOSE: wikidata changed links node from "enwiki:A" to "enwiki:{name:A,badges:[]}"; DATE:2013-09-14 fxt.Init_xwikis_add("en", "fr", "de"); - fxt.Init_qids_add("en", Xow_domain_type_.Int__wikipedia, "Q1_en", "Q1"); + fxt.Init_qids_add("en", Xow_domain_tid_.Int__wikipedia, "Q1_en", "Q1"); Json_doc jdoc = fxt.App().Utl__json_parser().Parse(String_.Concat_lines_nl ( "{ \"entity\":\"q1\"" , ", \"links\":" @@ -64,7 +66,7 @@ public class Wdata_xwiki_link_wtr_tst { } @Test public void Same_lang_but_different_domains() { // PURPOSE: if two entries for same lang, but one is in different domain, use the one for the current wiki DATE:2014-06-21 fxt.Init_xwikis_add("en", "fr", "de"); - fxt.Init_qids_add("en", Xow_domain_type_.Int__wikipedia, "Q1_en", "Q1"); + fxt.Init_qids_add("en", Xow_domain_tid_.Int__wikipedia, "Q1_en", "Q1"); Json_doc jdoc = fxt.App().Utl__json_parser().Parse(String_.Concat_lines_nl ( "{ \"entity\":\"q1\"" , ", \"links\":" @@ -80,7 +82,7 @@ public class Wdata_xwiki_link_wtr_tst { } @Test public void Badges() { fxt.Init_xwikis_add("de", "fr", "pl"); - fxt.Init_qids_add("en", Xow_domain_type_.Int__wikipedia, "Q1_en", "Q1"); + fxt.Init_qids_add("en", Xow_domain_tid_.Int__wikipedia, "Q1_en", "Q1"); fxt.Init_pages_add ( fxt.Wdoc_bldr("Q1") .Add_sitelink("enwiki", "Q1_en") @@ -95,8 +97,8 @@ public class Wdata_xwiki_link_wtr_tst { , "

      grp1

      " , " " , " " - , " " , " " + , " " , " " , " " , "
      German
    5. Q1 de
    6. French
    7. Q1 fr
    8. German
    9. Q1 de
    10. Polish
    11. Q1 pl
    12. " @@ -121,7 +123,7 @@ public class Wdata_xwiki_link_wtr_tst { // @Test public void No_external_lang_links__sort() { // fxt.Init_xwikis_add("de", "fr"); -// fxt.Init_qids_add("en", Xow_domain_type_.Int__wikipedia, "Q1_en", "Q1"); +// fxt.Init_qids_add("en", Xow_domain_tid_.Int__wikipedia, "Q1_en", "Q1"); // fxt.Init_pages_add("Q1", fxt.page_bldr_("Q1").Add_sitelink("enwiki", "Q1_en").Add_sitelink("frwiki", "Q1_fr").Add_sitelink("dewiki", "Q1_de").Xto_page_doc()); // fxt.Init_external_links_mgr_add("*"); // fxt.Test_xwiki_links("Q1_en", "Q1_de", "Q1_fr"); diff --git a/400_xowa/src/gplx/xowa/xtns/wdatas/core/Wdata_claim_grp.java b/400_xowa/src/gplx/xowa/xtns/wdatas/core/Wdata_claim_grp.java index b72cec837..d2019d159 100644 --- a/400_xowa/src/gplx/xowa/xtns/wdatas/core/Wdata_claim_grp.java +++ b/400_xowa/src/gplx/xowa/xtns/wdatas/core/Wdata_claim_grp.java @@ -21,7 +21,7 @@ public class Wdata_claim_grp { public Wdata_claim_grp(Int_obj_ref id_ref, Wdata_claim_itm_core[] itms) {this.id_ref = id_ref; this.itms = itms;} public Int_obj_ref Id_ref() {return id_ref;} private final Int_obj_ref id_ref; public int Id() {return id_ref.Val();} - public String Id_str() {if (id_str == null) id_str = "P" + Int_.Xto_str(id_ref.Val()); return id_str;} private String id_str; + public String Id_str() {if (id_str == null) id_str = "P" + Int_.To_str(id_ref.Val()); return id_str;} private String id_str; public int Len() {return itms.length;} private Wdata_claim_itm_core[] itms; public Wdata_claim_itm_core Get_at(int i) {return itms[i];} public static List_adp Xto_list(Ordered_hash hash) { diff --git a/400_xowa/src/gplx/xowa/xtns/wdatas/core/Wdata_claim_grp_list.java b/400_xowa/src/gplx/xowa/xtns/wdatas/core/Wdata_claim_grp_list.java index 2a869839d..2e37e8e78 100644 --- a/400_xowa/src/gplx/xowa/xtns/wdatas/core/Wdata_claim_grp_list.java +++ b/400_xowa/src/gplx/xowa/xtns/wdatas/core/Wdata_claim_grp_list.java @@ -17,7 +17,7 @@ along with this program. If not, see . */ package gplx.xowa.xtns.wdatas.core; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.wdatas.*; public class Wdata_claim_grp_list { - private Ordered_hash hash = Ordered_hash_.new_(); + private Ordered_hash hash = Ordered_hash_.New(); public void Add(Wdata_claim_grp itm) {hash.Add(itm.Id_ref(), itm);} public int Len() {return hash.Count();} public Wdata_claim_grp Get_at(int i) {return (Wdata_claim_grp)hash.Get_at(i);} diff --git a/400_xowa/src/gplx/xowa/xtns/wdatas/core/Wdata_claim_itm_entity.java b/400_xowa/src/gplx/xowa/xtns/wdatas/core/Wdata_claim_itm_entity.java index 67a41289f..8fbfaeb7c 100644 --- a/400_xowa/src/gplx/xowa/xtns/wdatas/core/Wdata_claim_itm_entity.java +++ b/400_xowa/src/gplx/xowa/xtns/wdatas/core/Wdata_claim_itm_entity.java @@ -44,6 +44,6 @@ public class Wdata_claim_itm_entity extends Wdata_claim_itm_core { public Wdata } @Override public void Welcome(Wdata_claim_visitor visitor) {visitor.Visit_entity(this);} @Override public String toString() {// TEST: - return String_.Concat_with_str("|", Wdata_dict_snak_tid.Xto_str(this.Snak_tid()), Wdata_dict_val_tid.Xto_str(this.Val_tid()), this.Entity_tid_str(), Int_.Xto_str(entity_id)); + return String_.Concat_with_str("|", Wdata_dict_snak_tid.Xto_str(this.Snak_tid()), Wdata_dict_val_tid.Xto_str(this.Val_tid()), this.Entity_tid_str(), Int_.To_str(entity_id)); } } diff --git a/400_xowa/src/gplx/xowa/xtns/wdatas/core/Wdata_claim_itm_time.java b/400_xowa/src/gplx/xowa/xtns/wdatas/core/Wdata_claim_itm_time.java index ec50f2e08..4ff67149a 100644 --- a/400_xowa/src/gplx/xowa/xtns/wdatas/core/Wdata_claim_itm_time.java +++ b/400_xowa/src/gplx/xowa/xtns/wdatas/core/Wdata_claim_itm_time.java @@ -35,7 +35,7 @@ public class Wdata_claim_itm_time extends Wdata_claim_itm_core { public Wdata_c precision_int = Bry_.To_int_or(precision, -1); if (precision_int == -1) { precision_int = Wdata_date.Fmt_ymdhns; - Gfo_usr_dlg_.I.Warn_many("", "", "unknown precision: ~{0}", String_.new_u8(precision)); + Gfo_usr_dlg_.Instance.Warn_many("", "", "unknown precision: ~{0}", String_.new_u8(precision)); } } return precision_int; @@ -45,7 +45,7 @@ public class Wdata_claim_itm_time extends Wdata_claim_itm_core { public Wdata_c before_int = Bry_.To_int_or(before, -1); if (before_int == -1) { before_int = 0; - Gfo_usr_dlg_.I.Warn_many("", "", "unknown before: ~{0}", String_.new_u8(before)); + Gfo_usr_dlg_.Instance.Warn_many("", "", "unknown before: ~{0}", String_.new_u8(before)); } } return before_int; @@ -55,7 +55,7 @@ public class Wdata_claim_itm_time extends Wdata_claim_itm_core { public Wdata_c after_int = Bry_.To_int_or(after, -1); if (after_int == -1) { after_int = 0; - Gfo_usr_dlg_.I.Warn_many("", "", "unknown after: ~{0}", String_.new_u8(after)); + Gfo_usr_dlg_.Instance.Warn_many("", "", "unknown after: ~{0}", String_.new_u8(after)); } } return after_int; diff --git a/400_xowa/src/gplx/xowa/xtns/wdatas/core/Wdata_date.java b/400_xowa/src/gplx/xowa/xtns/wdatas/core/Wdata_date.java index 8cb1533e2..10886cffb 100644 --- a/400_xowa/src/gplx/xowa/xtns/wdatas/core/Wdata_date.java +++ b/400_xowa/src/gplx/xowa/xtns/wdatas/core/Wdata_date.java @@ -134,15 +134,15 @@ public class Wdata_date { int after = date.after; if (before == 0) { if (after != 0) - bry = tmp_bfr.Add(msgs.Sym_plus()).Add_int_variable(after).Xto_bry_and_clear(); + bry = tmp_bfr.Add(msgs.Sym_plus()).Add_int_variable(after).To_bry_and_clear(); } else { if (after == 0) - bry = tmp_bfr.Add(msgs.Sym_minus()).Add_int_variable(before).Xto_bry_and_clear(); + bry = tmp_bfr.Add(msgs.Sym_minus()).Add_int_variable(before).To_bry_and_clear(); else if (before == after) - bry = tmp_bfr.Add(msgs.Sym_plusminus()).Add_int_variable(before).Xto_bry_and_clear(); + bry = tmp_bfr.Add(msgs.Sym_plusminus()).Add_int_variable(before).To_bry_and_clear(); else - bry = tmp_bfr.Add(msgs.Sym_minus()).Add_int_variable(before).Add(msgs.Sym_list_comma()).Add(msgs.Sym_plus()).Add_int_variable(after).Xto_bry_and_clear(); + bry = tmp_bfr.Add(msgs.Sym_minus()).Add_int_variable(before).Add(msgs.Sym_list_comma()).Add(msgs.Sym_plus()).Add_int_variable(after).To_bry_and_clear(); } if (bry != null) { bry = tmp_fmtr.Fmt_(msgs.Sym_fmt_parentheses()).Bld_bry_many(tmp_bfr, bry); diff --git a/400_xowa/src/gplx/xowa/xtns/wdatas/core/Wdata_date_tst.java b/400_xowa/src/gplx/xowa/xtns/wdatas/core/Wdata_date_tst.java index 85fdae20e..df43656e7 100644 --- a/400_xowa/src/gplx/xowa/xtns/wdatas/core/Wdata_date_tst.java +++ b/400_xowa/src/gplx/xowa/xtns/wdatas/core/Wdata_date_tst.java @@ -87,6 +87,6 @@ class Wdata_date_fxt { if (msgs == null) msgs = Wdata_hwtr_msgs.new_en_(); Wdata_date date = Wdata_date.parse(Bry_.new_a7(raw), precision, init_before, init_after, init_calendar_is_julian); Wdata_date.Xto_str(tmp_bfr, tmp_time_fmtr, tmp_time_bfr, msgs, date); - Tfds.Eq(expd, tmp_bfr.Xto_str_and_clear()); + Tfds.Eq(expd, tmp_bfr.To_str_and_clear()); } } diff --git a/400_xowa/src/gplx/xowa/xtns/wdatas/core/Wdata_dict_utl.java b/400_xowa/src/gplx/xowa/xtns/wdatas/core/Wdata_dict_utl.java index e63aaaa80..5ccba8cf5 100644 --- a/400_xowa/src/gplx/xowa/xtns/wdatas/core/Wdata_dict_utl.java +++ b/400_xowa/src/gplx/xowa/xtns/wdatas/core/Wdata_dict_utl.java @@ -21,7 +21,7 @@ public class Wdata_dict_utl { public static byte Get_tid_or_invalid(byte[] qid, Hash_adp_bry dict, byte[] key) { Object rv_obj = dict.Get_by_bry(key); if (rv_obj == null) { - Gfo_usr_dlg_.I.Warn_many("", "", "unknown wikidata key; qid=~{0} key=~{1}", String_.new_u8(qid), String_.new_u8(key)); + Gfo_usr_dlg_.Instance.Warn_many("", "", "unknown wikidata key; qid=~{0} key=~{1}", String_.new_u8(qid), String_.new_u8(key)); return Tid_invalid; } return ((Byte_obj_val)rv_obj).Val(); diff --git a/400_xowa/src/gplx/xowa/xtns/wdatas/core/Wdata_dict_value_time.java b/400_xowa/src/gplx/xowa/xtns/wdatas/core/Wdata_dict_value_time.java index bf56dccee..885bbcee4 100644 --- a/400_xowa/src/gplx/xowa/xtns/wdatas/core/Wdata_dict_value_time.java +++ b/400_xowa/src/gplx/xowa/xtns/wdatas/core/Wdata_dict_value_time.java @@ -87,7 +87,7 @@ public class Wdata_dict_value_time { .Add_int_fixed(date.Second(), 2) .Add_byte(Byte_ascii.Ltr_Z) ; - return tmp_bfr.Xto_bry_and_clear(); + return tmp_bfr.To_bry_and_clear(); } private static Bry_bfr tmp_bfr = Bry_bfr.new_(); private static byte[] Bry_year_prefix = Bry_.new_a7("+0000000"); } diff --git a/400_xowa/src/gplx/xowa/xtns/wdatas/core/Wdata_lang_sorter.java b/400_xowa/src/gplx/xowa/xtns/wdatas/core/Wdata_lang_sorter.java index 1ff6e01b5..d8313b46b 100644 --- a/400_xowa/src/gplx/xowa/xtns/wdatas/core/Wdata_lang_sorter.java +++ b/400_xowa/src/gplx/xowa/xtns/wdatas/core/Wdata_lang_sorter.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.xtns.wdatas.core; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.wdatas.*; -import gplx.xowa.apis.xowa.xtns.*; +import gplx.xowa.apps.apis.xowa.xtns.*; public class Wdata_lang_sorter implements GfoEvObj, gplx.lists.ComparerAble { private Hash_adp_bry hash = Hash_adp_bry.cs(); public Wdata_lang_sorter() {evMgr = GfoEvMgr.new_(this);} diff --git a/400_xowa/src/gplx/xowa/xtns/wdatas/hwtrs/Wdata_fmtr__claim.java b/400_xowa/src/gplx/xowa/xtns/wdatas/hwtrs/Wdata_fmtr__claim.java index d806bbeac..91aa93410 100644 --- a/400_xowa/src/gplx/xowa/xtns/wdatas/hwtrs/Wdata_fmtr__claim.java +++ b/400_xowa/src/gplx/xowa/xtns/wdatas/hwtrs/Wdata_fmtr__claim.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.xtns.wdatas.hwtrs; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.wdatas.*; -import gplx.xowa.xtns.wdatas.core.*; import gplx.xowa.apis.xowa.html.*; +import gplx.xowa.xtns.wdatas.core.*; import gplx.xowa.apps.apis.xowa.html.*; class Wdata_fmtr__claim_grp implements Bry_fmtr_arg { private Wdata_fmtr__claim_tbl fmtr_tbl = new Wdata_fmtr__claim_tbl(); private boolean is_empty; private Xoapi_toggle_itm toggle_itm; @@ -33,7 +33,7 @@ class Wdata_fmtr__claim_grp implements Bry_fmtr_arg { toc_data.Make(list_count); fmtr_tbl.Init_by_wdoc(ttl, list); } - public void XferAry(Bry_bfr bfr, int idx) { + public void Fmt__do(Bry_bfr bfr) { if (is_empty) return; fmtr.Bld_bfr_many(bfr, toc_data.Href(), toc_data.Text(), toggle_itm.Html_toggle_btn(), toggle_itm.Html_toggle_hdr(), fmtr_tbl); } @@ -59,7 +59,7 @@ class Wdata_fmtr__claim_tbl implements Bry_fmtr_arg { this.list = list; this.ttl = ttl; } - public void XferAry(Bry_bfr bfr, int idx) { + public void Fmt__do(Bry_bfr bfr) { int len = list.Count(); for (int i = 0; i < len; ++i) { Wdata_claim_grp grp = (Wdata_claim_grp)list.Get_at(i); @@ -101,13 +101,13 @@ class Wdata_fmtr__claim_row implements Bry_fmtr_arg { public void Init_by_grp(byte[] ttl, Wdata_claim_grp claim_grp) { this.ttl = ttl; this.claim_grp = claim_grp; } - public void XferAry(Bry_bfr bfr, int idx) { + public void Fmt__do(Bry_bfr bfr) { int len = claim_grp.Len(); claim_html_wtr.Init(ttl, tmp_bfr, msgs, lbl_mgr); for (int i = 0; i < len; ++i) { Wdata_claim_itm_core itm = claim_grp.Get_at(i); itm.Welcome(claim_html_wtr); - byte[] val = tmp_bfr.Xto_bry_and_clear(); + byte[] val = tmp_bfr.To_bry_and_clear(); fmtr_qual.Init_by_claim(ttl, itm); fmtr_ref.Init_by_claim(ttl, itm); row_fmtr.Bld_bfr_many(bfr, Wdata_dict_rank.Xto_str(itm.Rank_tid()), val, fmtr_qual, fmtr_ref); @@ -153,7 +153,7 @@ class Wdata_fmtr__qual_tbl implements Bry_fmtr_arg { this.claim = claim; fmtr_row.Init_by_grp(ttl, claim.Qualifiers()); } - public void XferAry(Bry_bfr bfr, int idx) { + public void Fmt__do(Bry_bfr bfr) { if (claim.Qualifiers() == null || claim.Qualifiers().Len() == 0) return; fmtr.Bld_bfr_many(bfr, fmtr_row); } @@ -172,7 +172,7 @@ class Wdata_fmtr__qual_row implements Bry_fmtr_arg { public void Init_by_ctor(Wdata_lbl_mgr lbl_mgr) {this.lbl_mgr = lbl_mgr;} public void Init_by_lang(Wdata_hwtr_msgs msgs) {this.msgs = msgs;} public void Init_by_grp(byte[] ttl, Wdata_claim_grp_list quals) {this.ttl = ttl; this.quals = quals;} - public void XferAry(Bry_bfr bfr, int idx) { + public void Fmt__do(Bry_bfr bfr) { int len = quals.Len(); claim_html_wtr.Init(ttl, tmp_bfr, msgs, lbl_mgr); for (int i = 0; i < len; ++i) { @@ -181,7 +181,7 @@ class Wdata_fmtr__qual_row implements Bry_fmtr_arg { for (int j = 0; j < grp_len; ++j) { Wdata_claim_itm_core itm = grp.Get_at(j); itm.Welcome(claim_html_wtr); - byte[] val = tmp_bfr.Xto_bry_and_clear(); + byte[] val = tmp_bfr.To_bry_and_clear(); row_fmtr.Bld_bfr_many(bfr, grp.Id(), lbl_mgr.Get_text__pid(grp.Id()), val); } } @@ -217,7 +217,7 @@ class Wdata_fmtr__ref_tbl implements Bry_fmtr_arg { this.claim = claim; fmtr_row.Init_by_grp(ttl, claim.References()); } - public void XferAry(Bry_bfr bfr, int idx) { + public void Fmt__do(Bry_bfr bfr) { if (claim.References() == null) return; fmtr.Bld_bfr_many(bfr, fmtr_row); } @@ -247,7 +247,7 @@ class Wdata_fmtr__ref_row implements Bry_fmtr_arg { public void Init_by_ctor(Wdata_lbl_mgr lbl_mgr) {this.lbl_mgr = lbl_mgr;} public void Init_by_lang(Wdata_hwtr_msgs msgs) {this.msgs = msgs;} public void Init_by_grp(byte[] ttl, Wdata_references_grp[] ref_grps) {this.ttl = ttl; this.ref_grps = ref_grps;} - public void XferAry(Bry_bfr bfr, int idx) { + public void Fmt__do(Bry_bfr bfr) { int len = ref_grps.length; claim_html_wtr.Init(ttl, tmp_bfr, msgs, lbl_mgr); for (int i = 0; i < len; ++i) { @@ -260,7 +260,7 @@ class Wdata_fmtr__ref_row implements Bry_fmtr_arg { for (int k = 0; k < grp2_len; ++k) { Wdata_claim_itm_core itm = grp2.Get_at(k); itm.Welcome(claim_html_wtr); - byte[] val = tmp_bfr.Xto_bry_and_clear(); + byte[] val = tmp_bfr.To_bry_and_clear(); row_fmtr.Bld_bfr_many(bfr, grp2.Id(), lbl_mgr.Get_text__pid(grp2.Id()), val); } } diff --git a/400_xowa/src/gplx/xowa/xtns/wdatas/hwtrs/Wdata_fmtr__json.java b/400_xowa/src/gplx/xowa/xtns/wdatas/hwtrs/Wdata_fmtr__json.java index e46478b63..fba4f7537 100644 --- a/400_xowa/src/gplx/xowa/xtns/wdatas/hwtrs/Wdata_fmtr__json.java +++ b/400_xowa/src/gplx/xowa/xtns/wdatas/hwtrs/Wdata_fmtr__json.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.xtns.wdatas.hwtrs; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.wdatas.*; -import gplx.langs.jsons.*; import gplx.xowa.html.*; import gplx.xowa.apis.xowa.html.*; +import gplx.langs.jsons.*; import gplx.xowa.htmls.*; import gplx.xowa.apps.apis.xowa.html.*; class Wdata_fmtr__json implements Bry_fmtr_arg { private final Bry_bfr tmp_bfr = Bry_bfr.reset_(255); private Xoapi_toggle_itm toggle_itm; private Wdata_toc_data toc_data; private Json_doc jdoc; @@ -32,10 +32,10 @@ class Wdata_fmtr__json implements Bry_fmtr_arg { this.jdoc = jdoc; toc_data.Make(0); } - public void XferAry(Bry_bfr bfr, int idx) { + public void Fmt__do(Bry_bfr bfr) { if (jdoc == null) return; // TEST: wdoc doesn't have jdoc jdoc.Root_nde().Print_as_json(tmp_bfr, 0); - fmtr.Bld_bfr_many(bfr, toc_data.Href(), toc_data.Text(), toggle_itm.Html_toggle_btn(), toggle_itm.Html_toggle_hdr(), tmp_bfr.Xto_bry_and_clear()); + fmtr.Bld_bfr_many(bfr, toc_data.Href(), toc_data.Text(), toggle_itm.Html_toggle_btn(), toggle_itm.Html_toggle_hdr(), tmp_bfr.To_bry_and_clear()); } private final Bry_fmtr fmtr = Bry_fmtr.new_(String_.Concat_lines_nl_skip_last ( "" diff --git a/400_xowa/src/gplx/xowa/xtns/wdatas/hwtrs/Wdata_fmtr__langtext.java b/400_xowa/src/gplx/xowa/xtns/wdatas/hwtrs/Wdata_fmtr__langtext.java index 5cf1e438e..aea62fc0f 100644 --- a/400_xowa/src/gplx/xowa/xtns/wdatas/hwtrs/Wdata_fmtr__langtext.java +++ b/400_xowa/src/gplx/xowa/xtns/wdatas/hwtrs/Wdata_fmtr__langtext.java @@ -17,7 +17,7 @@ along with this program. If not, see . */ package gplx.xowa.xtns.wdatas.hwtrs; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.wdatas.*; import gplx.langs.htmls.*; -import gplx.xowa.langs.*; import gplx.xowa.wikis.*; import gplx.xowa.xtns.wdatas.core.*; import gplx.xowa.apis.xowa.html.*; +import gplx.xowa.langs.*; import gplx.xowa.wikis.*; import gplx.xowa.xtns.wdatas.core.*; import gplx.xowa.apps.apis.xowa.html.*; class Wdata_fmtr__langtext_tbl implements Bry_fmtr_arg { private Wdata_toc_data toc_data; private Wdata_lang_sorter lang_sorter; private Xoapi_toggle_itm toggle_itm; private Wdata_fmtr__langtext_row fmtr_row; private byte[] col_hdr_lang_name, col_hdr_lang_code, col_hdr_text; private int list_len; @@ -36,7 +36,7 @@ class Wdata_fmtr__langtext_tbl implements Bry_fmtr_arg { list.Sort_by(lang_sorter); fmtr_row.Init_by_page(list); } - public void XferAry(Bry_bfr bfr, int idx) { + public void Fmt__do(Bry_bfr bfr) { if (list_len == 0) return; fmtr.Bld_bfr_many(bfr, toc_data.Href(), toc_data.Text(), col_hdr_lang_name, col_hdr_lang_code, col_hdr_text, toggle_itm.Html_toggle_btn(), toggle_itm.Html_toggle_hdr(), fmtr_row); } @@ -60,12 +60,12 @@ interface Wdata_fmtr__langtext_row extends Bry_fmtr_arg { class Wdata_fmtr__langtext_row_base implements Wdata_fmtr__langtext_row { private Ordered_hash list; public void Init_by_page(Ordered_hash list) {this.list = list;} - public void XferAry(Bry_bfr bfr, int idx) { + public void Fmt__do(Bry_bfr bfr) { int len = list.Count(); for (int i = 0; i < len; ++i) { Wdata_langtext_itm itm = (Wdata_langtext_itm)list.Get_at(i); - Xol_lang_itm lang_itm = Xol_lang_itm_.Get_by_key_or_intl(itm.Lang()); - row_fmtr.Bld_bfr_many(bfr, itm.Lang(), Html_utl.Escape_html_as_bry(lang_itm.Localized_name()), Html_utl.Escape_html_as_bry(itm.Text())); + Xol_lang_stub lang_itm = Xol_lang_stub_.Get_by_key_or_intl(itm.Lang()); + row_fmtr.Bld_bfr_many(bfr, itm.Lang(), Html_utl.Escape_html_as_bry(lang_itm.Canonical_name()), Html_utl.Escape_html_as_bry(itm.Text())); } } private final Bry_fmtr row_fmtr = Bry_fmtr.new_(String_.Concat_lines_nl_skip_last @@ -95,7 +95,7 @@ class Wdata_fmtr__langtext_row_base implements Wdata_fmtr__langtext_row { class Wdata_fmtr__alias_row implements Wdata_fmtr__langtext_row { private Ordered_hash list; public void Init_by_page(Ordered_hash list) {this.list = list;} - public void XferAry(Bry_bfr bfr, int idx) { + public void Fmt__do(Bry_bfr bfr) { int len = list.Count(); for (int i = 0; i < len; ++i) { Wdata_alias_itm itm = (Wdata_alias_itm)list.Get_at(i); @@ -103,7 +103,7 @@ class Wdata_fmtr__alias_row implements Wdata_fmtr__langtext_row { int vals_len = vals_ary.length; for (int j = 0; j < vals_len; ++j) { byte[] val = vals_ary[j]; - Xol_lang_itm lang_itm = Xol_lang_itm_.Get_by_key_or_intl(itm.Lang()); + Xol_lang_stub lang_itm = Xol_lang_stub_.Get_by_key_or_intl(itm.Lang()); byte[] lang_code = Byte_ascii.Dash_bry; byte[] lang_code_style = lang_code_style_n; if (j == 0) { diff --git a/400_xowa/src/gplx/xowa/xtns/wdatas/hwtrs/Wdata_fmtr__oview.java b/400_xowa/src/gplx/xowa/xtns/wdatas/hwtrs/Wdata_fmtr__oview.java index 10a38ad27..5cb34f89f 100644 --- a/400_xowa/src/gplx/xowa/xtns/wdatas/hwtrs/Wdata_fmtr__oview.java +++ b/400_xowa/src/gplx/xowa/xtns/wdatas/hwtrs/Wdata_fmtr__oview.java @@ -17,7 +17,7 @@ along with this program. If not, see . */ package gplx.xowa.xtns.wdatas.hwtrs; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.wdatas.*; import gplx.langs.htmls.encoders.*; -import gplx.xowa.xtns.wdatas.core.*; import gplx.xowa.apis.xowa.xtns.*; +import gplx.xowa.xtns.wdatas.core.*; import gplx.xowa.apps.apis.xowa.xtns.*; class Wdata_fmtr__oview_tbl implements Bry_fmtr_arg { private Xoapi_wikibase wikibase_api; private Url_encoder href_encoder; private Wdata_fmtr__oview_alias_itm fmtr_aliases = new Wdata_fmtr__oview_alias_itm(); @@ -33,7 +33,7 @@ class Wdata_fmtr__oview_tbl implements Bry_fmtr_arg { public void Init_by_wdoc(Wdata_doc wdoc) { this.wdoc = wdoc; } - public void XferAry(Bry_bfr bfr, int idx) { + public void Fmt__do(Bry_bfr bfr) { byte[][] core_langs = wikibase_api.Core_langs(); byte[] oview_label = Wdata_langtext_itm.Get_text_or_empty(wdoc.Label_list(), core_langs); byte[] oview_descr = Wdata_langtext_itm.Get_text_or_empty(wdoc.Descr_list(), core_langs); @@ -79,7 +79,7 @@ class Wdata_fmtr__oview_tbl implements Bry_fmtr_arg { class Wdata_fmtr__oview_alias_itm implements Bry_fmtr_arg { private byte[][] ary; public void Init_by_itm(byte[][] ary) {this.ary = ary;} - public void XferAry(Bry_bfr bfr, int idx) { + public void Fmt__do(Bry_bfr bfr) { if (ary == null) return; int len = ary.length; for (int i = 0; i < len; ++i) diff --git a/400_xowa/src/gplx/xowa/xtns/wdatas/hwtrs/Wdata_fmtr__slink.java b/400_xowa/src/gplx/xowa/xtns/wdatas/hwtrs/Wdata_fmtr__slink.java index 242a2c3cb..48c305d2f 100644 --- a/400_xowa/src/gplx/xowa/xtns/wdatas/hwtrs/Wdata_fmtr__slink.java +++ b/400_xowa/src/gplx/xowa/xtns/wdatas/hwtrs/Wdata_fmtr__slink.java @@ -18,7 +18,7 @@ along with this program. If not, see . package gplx.xowa.xtns.wdatas.hwtrs; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.wdatas.*; import gplx.langs.htmls.encoders.*; import gplx.langs.htmls.*; import gplx.xowa.langs.*; import gplx.xowa.xtns.wdatas.core.*; -import gplx.xowa.wikis.domains.*; import gplx.xowa.apis.xowa.html.*; import gplx.xowa.wikis.xwikis.*; +import gplx.xowa.wikis.domains.*; import gplx.xowa.apps.apis.xowa.html.*; import gplx.xowa.wikis.xwikis.*; class Wdata_fmtr__slink_grp implements Bry_fmtr_arg { private final Wdata_fmtr__slink_tbl fmtr_tbl = new Wdata_fmtr__slink_tbl(); private boolean is_empty; public void Init_by_ctor(Wdata_lang_sorter lang_sorter, Xoapi_toggle_mgr toggle_mgr, Wdata_lbl_mgr lbl_regy, Url_encoder href_encoder, Wdata_fmtr__toc_div fmtr_toc, Xow_xwiki_mgr xwiki_mgr) { @@ -29,7 +29,7 @@ class Wdata_fmtr__slink_grp implements Bry_fmtr_arg { this.is_empty = list.Count() == 0; if (is_empty) return; fmtr_tbl.Init_by_wdoc(list); } - public void XferAry(Bry_bfr bfr, int idx) { + public void Fmt__do(Bry_bfr bfr) { if (is_empty) return; fmtr.Bld_bfr_many(bfr, fmtr_tbl); } @@ -75,7 +75,7 @@ class Wdata_fmtr__slink_tbl implements Bry_fmtr_arg { grp.Rows().Sort_by(lang_sorter); } } - public void XferAry(Bry_bfr bfr, int idx) { + public void Fmt__do(Bry_bfr bfr) { for (int i = 0; i < Wdata_slink_grp.Idx__len; ++i) { Wdata_slink_grp grp = grps[i]; if (grp.Rows().Count() == 0) continue; @@ -106,15 +106,15 @@ class Wdata_fmtr__slink_row implements Bry_fmtr_arg { fmtr_badges.Init_by_ctor(lbl_regy); } public void Init_by_page(Ordered_hash list) {this.list = list;} - public void XferAry(Bry_bfr bfr, int idx) { + public void Fmt__do(Bry_bfr bfr) { int len = list.Count(); for (int i = 0; i < len; ++i) { Wdata_sitelink_itm itm = (Wdata_sitelink_itm)list.Get_at(i); Xow_domain_itm domain_info = itm.Domain_info(); byte[] wmf_key = domain_info.Abrv_wm(); - Xol_lang_itm lang_itm = domain_info.Lang_actl_itm(); + Xol_lang_stub lang_itm = domain_info.Lang_actl_itm(); byte[] lang_key = lang_itm.Key(); - byte[] lang_name = lang_itm.Localized_name(); + byte[] lang_name = lang_itm.Canonical_name(); byte[] domain_bry = domain_info.Domain_bry(); byte[] page_name = itm.Name(); fmtr_badges.Init_by_itm(itm.Badges()); @@ -145,7 +145,7 @@ class Wdata_fmtr__slink_badges implements Bry_fmtr_arg { private Wdata_lbl_mgr lbl_regy; private byte[][] badges; public void Init_by_ctor(Wdata_lbl_mgr lbl_regy) {this.lbl_regy = lbl_regy;} public void Init_by_itm(byte[][] badges) {this.badges = badges;} - public void XferAry(Bry_bfr bfr, int idx) { + public void Fmt__do(Bry_bfr bfr) { int len = badges.length; for (int i = 0; i < len; ++i) { byte[] ttl = badges[i]; diff --git a/400_xowa/src/gplx/xowa/xtns/wdatas/hwtrs/Wdata_fmtr__toc.java b/400_xowa/src/gplx/xowa/xtns/wdatas/hwtrs/Wdata_fmtr__toc.java index c558c56b9..e5aebe27c 100644 --- a/400_xowa/src/gplx/xowa/xtns/wdatas/hwtrs/Wdata_fmtr__toc.java +++ b/400_xowa/src/gplx/xowa/xtns/wdatas/hwtrs/Wdata_fmtr__toc.java @@ -23,9 +23,9 @@ class Wdata_fmtr__toc_div implements Bry_fmtr_arg { public void Init_by_lang(Wdata_hwtr_msgs msgs) {this.tbl_hdr = msgs.Toc_tbl_hdr();} public void Init_by_wdoc(Wdata_doc wdoc) {itms.Clear();} public void Add(Wdata_toc_data toc_data) {itms.Add(toc_data);} - public void XferAry(Bry_bfr bfr, int idx) { + public void Fmt__do(Bry_bfr bfr) { int itms_len = itms.Count(); - if (itms_len <= gplx.xowa.html.tocs.Xow_hdr_mgr.Toc_min) return; + if (itms_len <= gplx.xowa.htmls.tocs.Xow_hdr_mgr.Toc_min) return; fmtr_itm.Init_by_itm((Wdata_toc_data[])itms.To_ary_and_clear(Wdata_toc_data.class)); fmtr.Bld_bfr_many(bfr, tbl_hdr, fmtr_itm); } @@ -43,7 +43,7 @@ class Wdata_fmtr__toc_div implements Bry_fmtr_arg { class Wdata_fmtr__toc_itm implements Bry_fmtr_arg { private Wdata_toc_data[] ary; public void Init_by_itm(Wdata_toc_data[] v) {this.ary = v;} - public void XferAry(Bry_bfr bfr, int idx) { + public void Fmt__do(Bry_bfr bfr) { int len = ary.length; for (int i = 0; i < len; ++i) { Wdata_toc_data itm = ary[i]; diff --git a/400_xowa/src/gplx/xowa/xtns/wdatas/hwtrs/Wdata_hwtr_mgr.java b/400_xowa/src/gplx/xowa/xtns/wdatas/hwtrs/Wdata_hwtr_mgr.java index 982c7560a..d8904663c 100644 --- a/400_xowa/src/gplx/xowa/xtns/wdatas/hwtrs/Wdata_hwtr_mgr.java +++ b/400_xowa/src/gplx/xowa/xtns/wdatas/hwtrs/Wdata_hwtr_mgr.java @@ -17,7 +17,7 @@ along with this program. If not, see . */ package gplx.xowa.xtns.wdatas.hwtrs; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.wdatas.*; import gplx.langs.htmls.encoders.*; -import gplx.xowa.xtns.wdatas.core.*; import gplx.xowa.apis.xowa.html.*; import gplx.xowa.wikis.xwikis.*; import gplx.xowa.apis.xowa.xtns.*; +import gplx.xowa.xtns.wdatas.core.*; import gplx.xowa.apps.apis.xowa.html.*; import gplx.xowa.wikis.xwikis.*; import gplx.xowa.apps.apis.xowa.xtns.*; public class Wdata_hwtr_mgr { private final Bry_bfr bfr = Bry_bfr.reset_(Io_mgr.Len_mb); @gplx.Internal protected Wdata_fmtr__toc_div Fmtr_toc() {return fmtr_toc;} private final Wdata_fmtr__toc_div fmtr_toc = new Wdata_fmtr__toc_div(); @@ -77,7 +77,7 @@ public class Wdata_hwtr_mgr { fmtr_main.Bld_bfr_many(bfr, fmtr_oview, "", "", "", "", "", "", ""); bfr.Add_str_a7(""); bfr.Add_str_a7(""); - return bfr.Xto_bry_and_clear(); + return bfr.To_bry_and_clear(); } public byte[] Write(Wdata_doc wdoc) { bfr.Add_str_a7("
      "); @@ -85,7 +85,7 @@ public class Wdata_hwtr_mgr { fmtr_main.Bld_bfr_many(bfr, fmtr_oview, fmtr_toc, fmtr_claim, fmtr_slink, fmtr_label, fmtr_descr, fmtr_alias, fmtr_json); bfr.Add_str_a7("
      "); bfr.Add_str_a7(""); - return bfr.Xto_bry_and_clear(); + return bfr.To_bry_and_clear(); } public static void Write_link_wikidata(Bry_bfr bfr, byte[] href, byte[] text) { text = gplx.langs.htmls.Html_utl.Escape_html_as_bry(text); diff --git a/400_xowa/src/gplx/xowa/xtns/wdatas/hwtrs/Wdata_hwtr_mgr_tst.java b/400_xowa/src/gplx/xowa/xtns/wdatas/hwtrs/Wdata_hwtr_mgr_tst.java index a4229cacf..5e2fa2692 100644 --- a/400_xowa/src/gplx/xowa/xtns/wdatas/hwtrs/Wdata_hwtr_mgr_tst.java +++ b/400_xowa/src/gplx/xowa/xtns/wdatas/hwtrs/Wdata_hwtr_mgr_tst.java @@ -17,7 +17,7 @@ along with this program. If not, see . */ package gplx.xowa.xtns.wdatas.hwtrs; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.wdatas.*; import org.junit.*; -import gplx.langs.jsons.*; import gplx.langs.htmls.encoders.*; import gplx.xowa.xtns.wdatas.core.*; import gplx.xowa.xtns.wdatas.parsers.*; import gplx.xowa.apis.xowa.html.*; import gplx.xowa.wikis.xwikis.*; import gplx.xowa.apis.xowa.xtns.*; +import gplx.langs.jsons.*; import gplx.langs.htmls.encoders.*; import gplx.xowa.xtns.wdatas.core.*; import gplx.xowa.xtns.wdatas.parsers.*; import gplx.xowa.apps.apis.xowa.html.*; import gplx.xowa.wikis.xwikis.*; import gplx.xowa.apps.apis.xowa.xtns.*; public class Wdata_hwtr_mgr_tst { @Before public void init() {fxt.init();} private Wdata_hwtr_mgr_fxt fxt = new Wdata_hwtr_mgr_fxt(); @Test public void Stub() {} @@ -281,7 +281,7 @@ public class Wdata_hwtr_mgr_tst { // } } class Wdata_hwtr_mgr_fxt { - private Wdata_hwtr_mgr doc_hwtr; private Ordered_hash resolved_ttls = Ordered_hash_.new_bry_(); + private Wdata_hwtr_mgr doc_hwtr; private Ordered_hash resolved_ttls = Ordered_hash_.New_bry(); public Wdata_wiki_mgr_fxt Wdata_fxt() {return wdata_fxt;} private Wdata_wiki_mgr_fxt wdata_fxt = new Wdata_wiki_mgr_fxt(); public void init() { if (doc_hwtr == null) { @@ -290,7 +290,7 @@ class Wdata_hwtr_mgr_fxt { Xoapi_toggle_mgr toggle_mgr = new Xoapi_toggle_mgr(); wdata_fxt.Init(); toggle_mgr.Ctor_by_app(wdata_fxt.App()); // must init, else null error - doc_hwtr.Init_by_ctor(new Xoapi_wikibase(), new Wdata_lbl_wkr__test(resolved_ttls), Url_encoder.new_html_href_mw_(), toggle_mgr, new Xow_xwiki_mgr()); + doc_hwtr.Init_by_ctor(new Xoapi_wikibase(), new Wdata_lbl_wkr__test(resolved_ttls), Url_encoder.new_html_href_mw_(), toggle_mgr, new Xow_xwiki_mgr(wdata_fxt.Wiki())); doc_hwtr.Init_by_lang(msgs); } resolved_ttls.Clear(); @@ -309,15 +309,15 @@ class Wdata_hwtr_mgr_fxt { Bry_bfr tmp_bfr = Bry_bfr.new_(); Wdata_visitor__html_wtr html_wtr = new Wdata_visitor__html_wtr().Init(Bry_.Empty, tmp_bfr, doc_hwtr.Msgs(), doc_hwtr.Lbl_mgr()); claim.Welcome(html_wtr); - byte[] actl = tmp_bfr.Xto_bry_and_clear(); + byte[] actl = tmp_bfr.To_bry_and_clear(); Tfds.Eq(expd, String_.new_u8(actl)); } public void Test_json(Wdata_doc wdoc, String expd) { Wdata_fmtr__json fmtr_json = doc_hwtr.Fmtr_json(); fmtr_json.Init_by_wdoc(wdoc.Jdoc()); Bry_bfr tmp_bfr = Bry_bfr.new_(); - fmtr_json.XferAry(tmp_bfr, 0); - Tfds.Eq_str_lines(expd, tmp_bfr.Xto_str_and_clear()); + fmtr_json.Fmt__do(tmp_bfr); + Tfds.Eq_str_lines(expd, tmp_bfr.To_str_and_clear()); } } class Wdata_lbl_wkr__test implements Wdata_lbl_wkr { diff --git a/400_xowa/src/gplx/xowa/xtns/wdatas/hwtrs/Wdata_hwtr_msgs.java b/400_xowa/src/gplx/xowa/xtns/wdatas/hwtrs/Wdata_hwtr_msgs.java index a23cfd9e8..d644aa915 100644 --- a/400_xowa/src/gplx/xowa/xtns/wdatas/hwtrs/Wdata_hwtr_msgs.java +++ b/400_xowa/src/gplx/xowa/xtns/wdatas/hwtrs/Wdata_hwtr_msgs.java @@ -86,14 +86,14 @@ public class Wdata_hwtr_msgs { geo_meters = brys[offset + 7]; Bry_fmtr fmtr = Bry_fmtr.new_( slink_tbl_hdr_fmt, "wiki_type"); Bry_bfr bfr = Bry_bfr.new_(64); - slink_tbl_hdr_w = fmtr.Bld_bry_many(bfr, Name_(Xow_domain_type_.Bry__wikipedia)); - slink_tbl_hdr_d = fmtr.Bld_bry_many(bfr, Name_(Xow_domain_type_.Bry__wiktionary)); - slink_tbl_hdr_s = fmtr.Bld_bry_many(bfr, Name_(Xow_domain_type_.Bry__wikisource)); - slink_tbl_hdr_v = fmtr.Bld_bry_many(bfr, Name_(Xow_domain_type_.Bry__wikivoyage)); - slink_tbl_hdr_q = fmtr.Bld_bry_many(bfr, Name_(Xow_domain_type_.Bry__wikiquote)); - slink_tbl_hdr_b = fmtr.Bld_bry_many(bfr, Name_(Xow_domain_type_.Bry__wikibooks)); - slink_tbl_hdr_u = fmtr.Bld_bry_many(bfr, Name_(Xow_domain_type_.Bry__wikiversity)); - slink_tbl_hdr_n = fmtr.Bld_bry_many(bfr, Name_(Xow_domain_type_.Bry__wikinews)); + slink_tbl_hdr_w = fmtr.Bld_bry_many(bfr, Name_(Xow_domain_tid_.Bry__wikipedia)); + slink_tbl_hdr_d = fmtr.Bld_bry_many(bfr, Name_(Xow_domain_tid_.Bry__wiktionary)); + slink_tbl_hdr_s = fmtr.Bld_bry_many(bfr, Name_(Xow_domain_tid_.Bry__wikisource)); + slink_tbl_hdr_v = fmtr.Bld_bry_many(bfr, Name_(Xow_domain_tid_.Bry__wikivoyage)); + slink_tbl_hdr_q = fmtr.Bld_bry_many(bfr, Name_(Xow_domain_tid_.Bry__wikiquote)); + slink_tbl_hdr_b = fmtr.Bld_bry_many(bfr, Name_(Xow_domain_tid_.Bry__wikibooks)); + slink_tbl_hdr_u = fmtr.Bld_bry_many(bfr, Name_(Xow_domain_tid_.Bry__wikiversity)); + slink_tbl_hdr_n = fmtr.Bld_bry_many(bfr, Name_(Xow_domain_tid_.Bry__wikinews)); slink_tbl_hdr_x = fmtr.Bld_bry_many(bfr, slink_tbl_hdr_fmt_other); } public byte[][] Ary() {return ary;} private final byte[][] ary; diff --git a/400_xowa/src/gplx/xowa/xtns/wdatas/hwtrs/Wdata_lbl_itm.java b/400_xowa/src/gplx/xowa/xtns/wdatas/hwtrs/Wdata_lbl_itm.java index 959628a51..1b3b1e2b9 100644 --- a/400_xowa/src/gplx/xowa/xtns/wdatas/hwtrs/Wdata_lbl_itm.java +++ b/400_xowa/src/gplx/xowa/xtns/wdatas/hwtrs/Wdata_lbl_itm.java @@ -32,8 +32,8 @@ public class Wdata_lbl_itm { public void Load_vals(byte[] lang, byte[] text) {this.lang = lang; this.text = text;} public static byte[] Make_ttl(boolean is_pid, int id) { return is_pid - ? Bry_.Add(Ttl_prefix_pid, Int_.Xto_bry(id)) - : Bry_.Add(Ttl_prefix_qid, Int_.Xto_bry(id)) + ? Bry_.Add(Ttl_prefix_pid, Int_.To_bry(id)) + : Bry_.Add(Ttl_prefix_qid, Int_.To_bry(id)) ; } private static final byte[] Ttl_prefix_pid = Bry_.new_a7("Property:P"), Ttl_prefix_qid = Bry_.new_a7("Q"); diff --git a/400_xowa/src/gplx/xowa/xtns/wdatas/hwtrs/Wdata_lbl_mgr.java b/400_xowa/src/gplx/xowa/xtns/wdatas/hwtrs/Wdata_lbl_mgr.java index 0dac5d668..c11b8345d 100644 --- a/400_xowa/src/gplx/xowa/xtns/wdatas/hwtrs/Wdata_lbl_mgr.java +++ b/400_xowa/src/gplx/xowa/xtns/wdatas/hwtrs/Wdata_lbl_mgr.java @@ -30,7 +30,7 @@ public class Wdata_lbl_mgr { @gplx.Internal protected void Wkr_(Wdata_lbl_wkr v) {this.wkr = v;} private Wdata_lbl_wkr wkr; public Wdata_lbl_itm Get_itm__ttl(byte[] ttl) { Wdata_lbl_itm rv = (Wdata_lbl_itm)ttl_hash.Get_by(ttl); - if (rv == null) Gfo_usr_dlg_.I.Warn_many("", "", "wdata.hwtr:unknown entity; ttl=~{0}", String_.new_u8(ttl)); // NOTE: should not happen + if (rv == null) Gfo_usr_dlg_.Instance.Warn_many("", "", "wdata.hwtr:unknown entity; ttl=~{0}", String_.new_u8(ttl)); // NOTE: should not happen return rv; } public byte[] Get_text__ttl(byte[] ttl, byte[] or) { @@ -43,12 +43,12 @@ public class Wdata_lbl_mgr { Hash_adp hash = is_pid ? pid_hash : qid_hash; Wdata_lbl_itm rv_itm = (Wdata_lbl_itm)hash.Get_by(int_hash_key.Val_(id)); if (rv_itm != null) return rv_itm.Text(); // found; return lbl - Gfo_usr_dlg_.I.Warn_many("", "", "wdata.hwtr:unknown entity; is_pid=~{0} id=~{1}", Yn.Xto_str(is_pid), id); // NOTE: should not happen + Gfo_usr_dlg_.Instance.Warn_many("", "", "wdata.hwtr:unknown entity; is_pid=~{0} id=~{1}", Yn.To_str(is_pid), id); // NOTE: should not happen return Wdata_lbl_itm.Make_ttl(is_pid, id); // missing; return ttl; EX: "Property:P1", "Q1"; } public void Queue_if_missing__ttl(byte[] ttl) {Queue_if_missing__ttl(ttl, Bool_.N);} public void Queue_if_missing__ttl(byte[] ttl, boolean get_en) { - if (ttl == null) {Gfo_usr_dlg_.I.Warn_many("", "", "wdata.hwtr:unknown href; href=~{0}", String_.new_u8(ttl)); return;} + if (ttl == null) {Gfo_usr_dlg_.Instance.Warn_many("", "", "wdata.hwtr:unknown href; href=~{0}", String_.new_u8(ttl)); return;} boolean has = ttl_hash.Has(ttl); if (!has) Queue_add(qid_hash, Bool_.N, Qid_int(ttl), get_en); } diff --git a/400_xowa/src/gplx/xowa/xtns/wdatas/hwtrs/Wdata_lbl_wkr_wiki.java b/400_xowa/src/gplx/xowa/xtns/wdatas/hwtrs/Wdata_lbl_wkr_wiki.java index 5a63923af..76c53d7a2 100644 --- a/400_xowa/src/gplx/xowa/xtns/wdatas/hwtrs/Wdata_lbl_wkr_wiki.java +++ b/400_xowa/src/gplx/xowa/xtns/wdatas/hwtrs/Wdata_lbl_wkr_wiki.java @@ -17,7 +17,7 @@ along with this program. If not, see . */ package gplx.xowa.xtns.wdatas.hwtrs; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.wdatas.*; import gplx.xowa.langs.*; -import gplx.xowa.xtns.wdatas.core.*; import gplx.xowa.apis.xowa.xtns.*; +import gplx.xowa.xtns.wdatas.core.*; import gplx.xowa.apps.apis.xowa.xtns.*; public class Wdata_lbl_wkr_wiki implements Wdata_lbl_wkr { private Wdata_wiki_mgr wdata_mgr; private Xoapi_wikibase wikibase_api; @@ -41,7 +41,7 @@ public class Wdata_lbl_wkr_wiki implements Wdata_lbl_wkr { else { itm.Load_vals(label.Lang(), label.Text()); if (itm.Text_en_enabled()) { - Wdata_langtext_itm en_label = (Wdata_langtext_itm)labels.Get_by(Xol_lang_.Key_en); + Wdata_langtext_itm en_label = (Wdata_langtext_itm)labels.Get_by(Xol_lang_itm_.Key_en); itm.Text_en_(en_label == null ? Bry_.Empty : en_label.Text()); } } diff --git a/400_xowa/src/gplx/xowa/xtns/wdatas/hwtrs/Wdata_slink_grp.java b/400_xowa/src/gplx/xowa/xtns/wdatas/hwtrs/Wdata_slink_grp.java index 1e3f0a1ae..1bfda90f9 100644 --- a/400_xowa/src/gplx/xowa/xtns/wdatas/hwtrs/Wdata_slink_grp.java +++ b/400_xowa/src/gplx/xowa/xtns/wdatas/hwtrs/Wdata_slink_grp.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.xtns.wdatas.hwtrs; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.wdatas.*; -import gplx.xowa.xtns.wdatas.core.*; import gplx.xowa.apis.xowa.html.*; +import gplx.xowa.xtns.wdatas.core.*; import gplx.xowa.apps.apis.xowa.html.*; import gplx.xowa.wikis.domains.*; class Wdata_slink_grp { public Wdata_slink_grp(int tid, byte[] wiki_name, Xoapi_toggle_itm toggle_itm, Wdata_toc_data toc_data) { @@ -26,7 +26,7 @@ class Wdata_slink_grp { public byte[] Wiki_name() {return wiki_name;} private final byte[] wiki_name; public Wdata_toc_data Toc_data() {return toc_data;} private final Wdata_toc_data toc_data; public Xoapi_toggle_itm Toggle_itm() {return toggle_itm;} private Xoapi_toggle_itm toggle_itm; - public Ordered_hash Rows() {return rows;} private final Ordered_hash rows = Ordered_hash_.new_(); + public Ordered_hash Rows() {return rows;} private final Ordered_hash rows = Ordered_hash_.New(); public static void Sift(Wdata_slink_grp[] rv, Ordered_hash list) { for (int i = 0; i < Idx__len; ++i) rv[i].Rows().Clear(); @@ -39,14 +39,14 @@ class Wdata_slink_grp { } public static int Idx_by_tid(int tid) { switch (tid) { - case Xow_domain_type_.Int__wikipedia: return Idx_w; - case Xow_domain_type_.Int__wiktionary: return Idx_d; - case Xow_domain_type_.Int__wikisource: return Idx_s; - case Xow_domain_type_.Int__wikivoyage: return Idx_v; - case Xow_domain_type_.Int__wikiquote: return Idx_q; - case Xow_domain_type_.Int__wikibooks: return Idx_b; - case Xow_domain_type_.Int__wikiversity: return Idx_u; - case Xow_domain_type_.Int__wikinews: return Idx_n; + case Xow_domain_tid_.Int__wikipedia: return Idx_w; + case Xow_domain_tid_.Int__wiktionary: return Idx_d; + case Xow_domain_tid_.Int__wikisource: return Idx_s; + case Xow_domain_tid_.Int__wikivoyage: return Idx_v; + case Xow_domain_tid_.Int__wikiquote: return Idx_q; + case Xow_domain_tid_.Int__wikibooks: return Idx_b; + case Xow_domain_tid_.Int__wikiversity: return Idx_u; + case Xow_domain_tid_.Int__wikinews: return Idx_n; default: return Idx_x; } } @@ -66,14 +66,14 @@ class Wdata_slink_grp { } public static byte[] Name_by_tid(int idx) { switch (idx) { - case Idx_w: return Xow_domain_type_.Bry__wikipedia; - case Idx_d: return Xow_domain_type_.Bry__wiktionary; - case Idx_s: return Xow_domain_type_.Bry__wikisource; - case Idx_v: return Xow_domain_type_.Bry__wikivoyage; - case Idx_q: return Xow_domain_type_.Bry__wikiquote; - case Idx_b: return Xow_domain_type_.Bry__wikibooks; - case Idx_u: return Xow_domain_type_.Bry__wikiversity; - case Idx_n: return Xow_domain_type_.Bry__wikinews; + case Idx_w: return Xow_domain_tid_.Bry__wikipedia; + case Idx_d: return Xow_domain_tid_.Bry__wiktionary; + case Idx_s: return Xow_domain_tid_.Bry__wikisource; + case Idx_v: return Xow_domain_tid_.Bry__wikivoyage; + case Idx_q: return Xow_domain_tid_.Bry__wikiquote; + case Idx_b: return Xow_domain_tid_.Bry__wikibooks; + case Idx_u: return Xow_domain_tid_.Bry__wikiversity; + case Idx_n: return Xow_domain_tid_.Bry__wikinews; case Idx_x: return Name_special; default: throw Err_.new_unhandled(idx); } diff --git a/400_xowa/src/gplx/xowa/xtns/wdatas/hwtrs/Wdata_visitor__html_wtr.java b/400_xowa/src/gplx/xowa/xtns/wdatas/hwtrs/Wdata_visitor__html_wtr.java index 27a300bfa..bece79364 100644 --- a/400_xowa/src/gplx/xowa/xtns/wdatas/hwtrs/Wdata_visitor__html_wtr.java +++ b/400_xowa/src/gplx/xowa/xtns/wdatas/hwtrs/Wdata_visitor__html_wtr.java @@ -66,7 +66,7 @@ class Wdata_visitor__html_wtr implements Wdata_claim_visitor { if (!Bry_.Eq(unit, Wdata_claim_itm_quantity.Unit_1)) tmp_bfr.Add_byte_space().Add(unit); } catch (Exception e) { - Gfo_usr_dlg_.I.Warn_many("", "", "failed to write quantity; ttl=~{0} pid=~{1} err=~{2}", ttl, itm.Pid(), Err_.Message_gplx_full(e)); + Gfo_usr_dlg_.Instance.Warn_many("", "", "failed to write quantity; ttl=~{0} pid=~{1} err=~{2}", ttl, itm.Pid(), Err_.Message_gplx_full(e)); } } private static final byte[] Time_plus_minus_spr = Bry_.new_a7(" / "); public void Visit_time(Wdata_claim_itm_time itm) {itm.Write_to_bfr(tmp_bfr, tmp_time_bfr, tmp_time_fmtr, msgs, ttl);} @@ -85,7 +85,7 @@ class Wdata_visitor__html_wtr implements Wdata_claim_visitor { tmp_bfr.Add_byte(Byte_ascii.Paren_end); } } catch (Exception e) { - Gfo_usr_dlg_.I.Warn_many("", "", "failed to write globecoordinate; ttl=~{0} pid=~{1} err=~{2}", ttl, itm.Pid(), Err_.Message_gplx_full(e)); + Gfo_usr_dlg_.Instance.Warn_many("", "", "failed to write globecoordinate; ttl=~{0} pid=~{1} err=~{2}", ttl, itm.Pid(), Err_.Message_gplx_full(e)); } } public void Visit_system(Wdata_claim_itm_system itm) { diff --git a/400_xowa/src/gplx/xowa/xtns/wdatas/hwtrs/Wdata_visitor__html_wtr_tst.java b/400_xowa/src/gplx/xowa/xtns/wdatas/hwtrs/Wdata_visitor__html_wtr_tst.java index 13c506c22..8c035348a 100644 --- a/400_xowa/src/gplx/xowa/xtns/wdatas/hwtrs/Wdata_visitor__html_wtr_tst.java +++ b/400_xowa/src/gplx/xowa/xtns/wdatas/hwtrs/Wdata_visitor__html_wtr_tst.java @@ -17,7 +17,7 @@ along with this program. If not, see . */ package gplx.xowa.xtns.wdatas.hwtrs; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.wdatas.*; import org.junit.*; -import gplx.langs.jsons.*; import gplx.xowa.xtns.wdatas.core.*; import gplx.xowa.xtns.wdatas.parsers.*; import gplx.xowa.apis.xowa.html.*; +import gplx.langs.jsons.*; import gplx.xowa.xtns.wdatas.core.*; import gplx.xowa.xtns.wdatas.parsers.*; import gplx.xowa.apps.apis.xowa.html.*; public class Wdata_visitor__html_wtr_tst { @Before public void init() {fxt.init();} private Wdata_hwtr_mgr_fxt fxt = new Wdata_hwtr_mgr_fxt(); @Test public void Monolingualtext() { diff --git a/400_xowa/src/gplx/xowa/xtns/wdatas/imports/Io_stream_rdr_mgr.java b/400_xowa/src/gplx/xowa/xtns/wdatas/imports/Io_stream_rdr_mgr.java index 40f69f2bd..36d883486 100644 --- a/400_xowa/src/gplx/xowa/xtns/wdatas/imports/Io_stream_rdr_mgr.java +++ b/400_xowa/src/gplx/xowa/xtns/wdatas/imports/Io_stream_rdr_mgr.java @@ -21,7 +21,7 @@ import gplx.core.criterias.*; class Io_stream_rdr_mgr { public static Io_stream_rdr Get_rdr_or_null(Io_url src_fil, Io_url src_dir, Io_stream_unzip_mgr unzip_mgr, String... filter_ary) { IoItmFil src_itm = null; - if (src_fil != null) src_itm = Io_mgr.I.QueryFil(src_fil); + if (src_fil != null) src_itm = Io_mgr.Instance.QueryFil(src_fil); // specified file doesn't exist; try to find similar file based on filter if (src_itm == null || !src_itm.Exists()) { @@ -46,7 +46,7 @@ class Io_stream_rdr_mgr { // get files and check each file for match IoItmFil rv = null; - IoItmHash itm_hash = Io_mgr.I.QueryDir_args(dir).ExecAsItmHash(); + IoItmHash itm_hash = Io_mgr.Instance.QueryDir_args(dir).ExecAsItmHash(); int len = itm_hash.Count(); for (int i = 0; i < len; ++i) { IoItm_base itm = itm_hash.Get_at(i); diff --git a/400_xowa/src/gplx/xowa/xtns/wdatas/imports/Wdata_idx_mgr_base.java b/400_xowa/src/gplx/xowa/xtns/wdatas/imports/Wdata_idx_mgr_base.java index afcc3fe2c..3f706a76c 100644 --- a/400_xowa/src/gplx/xowa/xtns/wdatas/imports/Wdata_idx_mgr_base.java +++ b/400_xowa/src/gplx/xowa/xtns/wdatas/imports/Wdata_idx_mgr_base.java @@ -18,12 +18,12 @@ along with this program. If not, see . package gplx.xowa.xtns.wdatas.imports; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.wdatas.*; import gplx.langs.jsons.*; import gplx.ios.*; import gplx.xowa.bldrs.*; import gplx.xowa.bldrs.wkrs.*; -import gplx.xowa.langs.*; +import gplx.xowa.langs.*; import gplx.xowa.langs.parsers.*; import gplx.xowa.xtns.wdatas.imports.*; abstract class Wdata_idx_mgr_base { public void Ctor(Xob_itm_dump_base wkr, Xob_bldr bldr, Xowe_wiki wiki, int dump_fil_len) { this.wkr = wkr; this.wiki = wiki; this.bldr = bldr; this.dump_fil_len = dump_fil_len; - } Xob_itm_dump_base wkr; protected Xowe_wiki wiki; Xob_bldr bldr; Xol_csv_parser csv_parser = Xol_csv_parser._; protected Ordered_hash hash = Ordered_hash_.new_(); protected int dump_fil_len; + } Xob_itm_dump_base wkr; protected Xowe_wiki wiki; Xob_bldr bldr; Xol_csv_parser csv_parser = Xol_csv_parser.Instance; protected Ordered_hash hash = Ordered_hash_.New(); protected int dump_fil_len; public void Flush() { int len = hash.Count(); for (int i = 0; i < len; i++) { @@ -37,6 +37,6 @@ abstract class Wdata_idx_mgr_base { Wdata_idx_wtr wtr = (Wdata_idx_wtr)hash.Get_at(i); wtr.Make(bldr.Usr_dlg(), wkr.Make_fil_len()); } - if (wkr.Delete_temp()) Io_mgr.I.DeleteDirDeep(wkr.Temp_dir()); + if (wkr.Delete_temp()) Io_mgr.Instance.DeleteDirDeep(wkr.Temp_dir()); } } diff --git a/400_xowa/src/gplx/xowa/xtns/wdatas/imports/Wdata_idx_wtr.java b/400_xowa/src/gplx/xowa/xtns/wdatas/imports/Wdata_idx_wtr.java index d08dd4625..d1e3ad7bd 100644 --- a/400_xowa/src/gplx/xowa/xtns/wdatas/imports/Wdata_idx_wtr.java +++ b/400_xowa/src/gplx/xowa/xtns/wdatas/imports/Wdata_idx_wtr.java @@ -30,7 +30,7 @@ class Wdata_idx_wtr { dump_bfr.Add(ttl).Add_byte_pipe().Add(qid).Add_byte_nl(); } public void Flush() { - Io_mgr.I.AppendFilBfr(dump_url_gen.Nxt_url(), dump_bfr); + Io_mgr.Instance.AppendFilBfr(dump_url_gen.Nxt_url(), dump_bfr); } public void Make(Gfo_usr_dlg usr_dlg, int make_fil_len) { Xobdc_merger.Basic(usr_dlg, dump_url_gen, dump_dir.OwnerDir().GenSubDir("sort"), dump_fil_max, Io_line_rdr_key_gen_.first_pipe, new Xob_make_cmd_site(usr_dlg, make_dir, make_fil_len)); diff --git a/400_xowa/src/gplx/xowa/xtns/wdatas/imports/Xob_wbase_json_dump_db.java b/400_xowa/src/gplx/xowa/xtns/wdatas/imports/Xob_wbase_json_dump_db.java index fbe1fa686..d2a919970 100644 --- a/400_xowa/src/gplx/xowa/xtns/wdatas/imports/Xob_wbase_json_dump_db.java +++ b/400_xowa/src/gplx/xowa/xtns/wdatas/imports/Xob_wbase_json_dump_db.java @@ -19,9 +19,9 @@ package gplx.xowa.xtns.wdatas.imports; import gplx.*; import gplx.xowa.*; import import gplx.ios.*; import gplx.langs.jsons.*; import gplx.xowa.bldrs.*; import gplx.xowa.bldrs.cmds.*; import gplx.xowa.bldrs.cmds.texts.sqls.*; -import gplx.xowa.nss.*; +import gplx.xowa.wikis.nss.*; import gplx.xowa.wikis.*; import gplx.xowa.wikis.data.*; import gplx.xowa.wikis.data.tbls.*; -import gplx.xowa.apis.xowa.bldrs.imports.*; +import gplx.xowa.apps.apis.xowa.bldrs.imports.*; import gplx.xowa.xtns.wdatas.core.*; import gplx.xowa.xtns.wdatas.parsers.*; class Xob_wbase_json_dump_db { private final Gfo_usr_dlg usr_dlg; private final Xoae_app app; private final Xowe_wiki wiki; private final Xob_bldr bldr; diff --git a/400_xowa/src/gplx/xowa/xtns/wdatas/imports/Xob_wbase_json_dump_parser.java b/400_xowa/src/gplx/xowa/xtns/wdatas/imports/Xob_wbase_json_dump_parser.java index e49df92e3..499594a68 100644 --- a/400_xowa/src/gplx/xowa/xtns/wdatas/imports/Xob_wbase_json_dump_parser.java +++ b/400_xowa/src/gplx/xowa/xtns/wdatas/imports/Xob_wbase_json_dump_parser.java @@ -46,7 +46,7 @@ class Xob_wbase_json_dump_parser { int cur_pos = Extract_page(page, buffer_rdr, page_bgn); if (cur_pos == -1) break; if (cur_pos < page_bgn) - bldr.Print_prog_msg(buffer_rdr.Fil_pos(), buffer_rdr_len, 1, prog_fmt, Int_.Xto_str_pad_bgn_zero((int)(buffer_rdr.Fil_pos() / Io_mgr.Len_mb), Int_.DigitCount((int)(buffer_rdr.Fil_len() / Io_mgr.Len_mb))), "", page.Ttl_page_db()); + bldr.Print_prog_msg(buffer_rdr.Fil_pos(), buffer_rdr_len, 1, prog_fmt, Int_.To_str_pad_bgn_zero((int)(buffer_rdr.Fil_pos() / Io_mgr.Len_mb), Int_.DigitCount((int)(buffer_rdr.Fil_len() / Io_mgr.Len_mb))), "", page.Ttl_page_db()); page_bgn = cur_pos; } dump_db.Parse_end(); diff --git a/400_xowa/src/gplx/xowa/xtns/wdatas/imports/Xob_wbase_ns_parser.java b/400_xowa/src/gplx/xowa/xtns/wdatas/imports/Xob_wbase_ns_parser.java index f024aa8d2..95ef2359e 100644 --- a/400_xowa/src/gplx/xowa/xtns/wdatas/imports/Xob_wbase_ns_parser.java +++ b/400_xowa/src/gplx/xowa/xtns/wdatas/imports/Xob_wbase_ns_parser.java @@ -17,9 +17,9 @@ along with this program. If not, see . */ package gplx.xowa.xtns.wdatas.imports; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.wdatas.*; import gplx.dbs.*; -import gplx.xowa.nss.*; +import gplx.xowa.wikis.nss.*; import gplx.xowa.wikis.domains.*; -import gplx.xowa.wms.sites.*; +import gplx.xowa.bldrs.wms.sites.*; class Xob_wbase_ns_parser { private final Hash_adp_bry ns_mgr_hash = Hash_adp_bry.cs(); private final Site_core_db core_db; diff --git a/400_xowa/src/gplx/xowa/xtns/wdatas/imports/Xob_wdata_db_cmd.java b/400_xowa/src/gplx/xowa/xtns/wdatas/imports/Xob_wdata_db_cmd.java index c7b37d233..967f4a9dc 100644 --- a/400_xowa/src/gplx/xowa/xtns/wdatas/imports/Xob_wdata_db_cmd.java +++ b/400_xowa/src/gplx/xowa/xtns/wdatas/imports/Xob_wdata_db_cmd.java @@ -19,12 +19,12 @@ package gplx.xowa.xtns.wdatas.imports; import gplx.*; import gplx.xowa.*; import import gplx.dbs.*; import gplx.dbs.cfgs.*; import gplx.dbs.engines.sqlite.*; import gplx.xowa.bldrs.*; import gplx.xowa.files.fsdb.*; import gplx.xowa.files.origs.*; import gplx.langs.jsons.*; import gplx.xowa.xtns.wdatas.*; import gplx.xowa.xtns.wdatas.core.*; import gplx.xowa.langs.*; -import gplx.xowa.nss.*; +import gplx.xowa.wikis.nss.*; import gplx.xowa.bldrs.cmds.*; import gplx.xowa.wikis.data.tbls.*; public class Xob_wdata_db_cmd extends Xob_dump_mgr_base implements Xob_cmd { private Wdata_tbl_mgr tbl_mgr = new Wdata_tbl_mgr(); private Wdata_wiki_mgr wdata_mgr; private Json_parser json_parser; - private byte[] lang_key = Xol_lang_.Key_en; + private byte[] lang_key = Xol_lang_itm_.Key_en; public Xob_wdata_db_cmd(Xob_bldr bldr, Xowe_wiki wiki) {this.Cmd_ctor(bldr, wiki);} @Override public String Cmd_key() {return Xob_cmd_keys.Key_wbase_db;} @Override public byte Init_redirect() {return Bool_.N_byte;} // json will never be found in a redirect diff --git a/400_xowa/src/gplx/xowa/xtns/wdatas/imports/Xob_wdata_pid_base_tst.java b/400_xowa/src/gplx/xowa/xtns/wdatas/imports/Xob_wdata_pid_base_tst.java index a8304bd81..04eb5b5db 100644 --- a/400_xowa/src/gplx/xowa/xtns/wdatas/imports/Xob_wdata_pid_base_tst.java +++ b/400_xowa/src/gplx/xowa/xtns/wdatas/imports/Xob_wdata_pid_base_tst.java @@ -17,7 +17,7 @@ along with this program. If not, see . */ package gplx.xowa.xtns.wdatas.imports; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.wdatas.*; import org.junit.*; -import gplx.xowa.wikis.*; import gplx.xowa.tdbs.*; +import gplx.xowa.wikis.*; import gplx.xowa.wikis.tdbs.*; public class Xob_wdata_pid_base_tst { gplx.xowa.bldrs.Xob_fxt fxt = new gplx.xowa.bldrs.Xob_fxt().Ctor_mem(); Io_url reg_(Xowe_wiki wdata, String wiki) {return Wdata_idx_wtr.dir_pid_(wdata, wiki).GenSubFil(Xotdb_dir_info_.Name_reg_fil);} @@ -69,6 +69,6 @@ public class Xob_wdata_pid_base_tst { } bfr.Add_str_a7(" }").Add_byte_nl(); bfr.Add_str_a7("}").Add_byte_nl(); - return String_.Replace(bfr.Xto_str_and_clear(), "'", "\""); + return String_.Replace(bfr.To_str_and_clear(), "'", "\""); } } diff --git a/400_xowa/src/gplx/xowa/xtns/wdatas/imports/Xob_wdata_pid_sql.java b/400_xowa/src/gplx/xowa/xtns/wdatas/imports/Xob_wdata_pid_sql.java index 20787b71c..8d971bdd8 100644 --- a/400_xowa/src/gplx/xowa/xtns/wdatas/imports/Xob_wdata_pid_sql.java +++ b/400_xowa/src/gplx/xowa/xtns/wdatas/imports/Xob_wdata_pid_sql.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.xtns.wdatas.imports; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.wdatas.*; -import gplx.xowa.wikis.data.*; import gplx.dbs.*; import gplx.xowa.dbs.*; import gplx.xowa.wikis.data.tbls.*; +import gplx.xowa.wikis.data.*; import gplx.dbs.*; import gplx.xowa.wikis.dbs.*; import gplx.xowa.wikis.data.tbls.*; public class Xob_wdata_pid_sql extends Xob_wdata_pid_base { private Xowd_wbase_pid_tbl tbl; @Override public String Wkr_key() {return gplx.xowa.bldrs.Xob_cmd_keys.Key_wbase_pid;} diff --git a/400_xowa/src/gplx/xowa/xtns/wdatas/imports/Xob_wdata_qid_base.java b/400_xowa/src/gplx/xowa/xtns/wdatas/imports/Xob_wdata_qid_base.java index cb1afa789..5c8b7e60d 100644 --- a/400_xowa/src/gplx/xowa/xtns/wdatas/imports/Xob_wdata_qid_base.java +++ b/400_xowa/src/gplx/xowa/xtns/wdatas/imports/Xob_wdata_qid_base.java @@ -17,9 +17,9 @@ along with this program. If not, see . */ package gplx.xowa.xtns.wdatas.imports; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.wdatas.*; import gplx.langs.jsons.*; import gplx.ios.*; import gplx.xowa.xtns.wdatas.core.*; import gplx.xowa.xtns.wdatas.parsers.*; import gplx.xowa.wikis.data.tbls.*; -import gplx.xowa.nss.*; +import gplx.xowa.wikis.nss.*; import gplx.xowa.bldrs.*; import gplx.xowa.bldrs.wkrs.*; -import gplx.xowa.wms.sites.*; +import gplx.xowa.bldrs.wms.sites.*; public abstract class Xob_wdata_qid_base extends Xob_itm_dump_base implements Xobd_wkr, GfoInvkAble { private Json_parser parser; private Xob_wbase_ns_parser ns_parser; private final Xob_wbase_ns_parser_rslt ns_parser_rslt = new Xob_wbase_ns_parser_rslt(); public Xob_wdata_qid_base Ctor(Xob_bldr bldr, Xowe_wiki wiki) {this.Cmd_ctor(bldr, wiki); return this;} diff --git a/400_xowa/src/gplx/xowa/xtns/wdatas/imports/Xob_wdata_qid_base_tst.java b/400_xowa/src/gplx/xowa/xtns/wdatas/imports/Xob_wdata_qid_base_tst.java index 9772aad8d..ce3526f84 100644 --- a/400_xowa/src/gplx/xowa/xtns/wdatas/imports/Xob_wdata_qid_base_tst.java +++ b/400_xowa/src/gplx/xowa/xtns/wdatas/imports/Xob_wdata_qid_base_tst.java @@ -17,14 +17,14 @@ along with this program. If not, see . */ package gplx.xowa.xtns.wdatas.imports; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.wdatas.*; import org.junit.*; -import gplx.xowa.nss.*; -import gplx.xowa.wikis.*; import gplx.xowa.tdbs.*; import gplx.dbs.*; -import gplx.xowa.wms.sites.*; +import gplx.xowa.wikis.nss.*; +import gplx.xowa.wikis.*; import gplx.xowa.wikis.tdbs.*; import gplx.dbs.*; +import gplx.xowa.bldrs.wms.sites.*; public class Xob_wdata_qid_base_tst { private gplx.xowa.bldrs.Xob_fxt fxt; // NOTE: reset memory instance (don't just call clear) @Before public void init() { this.fxt = new gplx.xowa.bldrs.Xob_fxt().Ctor_mem(); - gplx.dbs.Db_conn_bldr.I.Reg_default_mem(); + gplx.dbs.Db_conn_bldr.Instance.Reg_default_mem(); } @Test public void Basic() { fxt.doc_ary_ diff --git a/400_xowa/src/gplx/xowa/xtns/wdatas/imports/Xob_wdata_qid_sql.java b/400_xowa/src/gplx/xowa/xtns/wdatas/imports/Xob_wdata_qid_sql.java index 87c0caaa8..8c9889835 100644 --- a/400_xowa/src/gplx/xowa/xtns/wdatas/imports/Xob_wdata_qid_sql.java +++ b/400_xowa/src/gplx/xowa/xtns/wdatas/imports/Xob_wdata_qid_sql.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.xtns.wdatas.imports; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.wdatas.*; -import gplx.xowa.wikis.data.*; import gplx.dbs.*; import gplx.xowa.dbs.*; import gplx.xowa.wikis.data.tbls.*; +import gplx.xowa.wikis.data.*; import gplx.dbs.*; import gplx.xowa.wikis.dbs.*; import gplx.xowa.wikis.data.tbls.*; public class Xob_wdata_qid_sql extends Xob_wdata_qid_base { private Xowd_wbase_qid_tbl tbl; @Override public String Wkr_key() {return gplx.xowa.bldrs.Xob_cmd_keys.Key_wbase_qid;} diff --git a/400_xowa/src/gplx/xowa/xtns/wdatas/imports/Xob_wdata_qid_txt.java b/400_xowa/src/gplx/xowa/xtns/wdatas/imports/Xob_wdata_qid_txt.java index 736aa82c6..8ea65eea0 100644 --- a/400_xowa/src/gplx/xowa/xtns/wdatas/imports/Xob_wdata_qid_txt.java +++ b/400_xowa/src/gplx/xowa/xtns/wdatas/imports/Xob_wdata_qid_txt.java @@ -22,7 +22,7 @@ public class Xob_wdata_qid_txt extends Xob_wdata_qid_base { @Override public String Wkr_key() {return gplx.xowa.bldrs.Xob_cmd_keys.Key_tdb_text_wdata_qid;} @Override public void Qid_bgn() {qid_bldr = new Wdata_idx_bldr_qid().Ctor(this, bldr, wiki, dump_fil_len);} @Override public void Qid_add(byte[] wiki_key, int ns_id, byte[] ttl, byte[] qid) { - qid_bldr.Add(String_.new_u8(wiki_key), Int_.Xto_str_pad_bgn_zero(ns_id, 3), ttl, qid); + qid_bldr.Add(String_.new_u8(wiki_key), Int_.To_str_pad_bgn_zero(ns_id, 3), ttl, qid); } @Override public void Qid_end() { qid_bldr.Flush(); diff --git a/400_xowa/src/gplx/xowa/xtns/wdatas/parsers/Wdata_doc_parser_fxt_base.java b/400_xowa/src/gplx/xowa/xtns/wdatas/parsers/Wdata_doc_parser_fxt_base.java index a19a55a52..59f86e261 100644 --- a/400_xowa/src/gplx/xowa/xtns/wdatas/parsers/Wdata_doc_parser_fxt_base.java +++ b/400_xowa/src/gplx/xowa/xtns/wdatas/parsers/Wdata_doc_parser_fxt_base.java @@ -28,11 +28,11 @@ abstract class Wdata_doc_parser_fxt_base { public Wdata_langtext_itm Make_langval(String lang, String text) {return new Wdata_langtext_itm(Bry_.new_u8(lang), Bry_.new_u8(text));} public Wdata_alias_itm Make_alias(String lang, String... vals) {return new Wdata_alias_itm(Bry_.new_u8(lang), Bry_.Ary(vals));} public Wdata_claim_itm_core Make_claim_str(int pid, String val) {return new Wdata_claim_itm_str(pid, Wdata_dict_snak_tid.Tid_value, Bry_.new_u8(val));} - public Wdata_claim_itm_core Make_claim_entity_qid(int pid, int entityId) {return new Wdata_claim_itm_entity(pid, Wdata_dict_snak_tid.Tid_value, Wdata_dict_value_entity_tid.Tid_item, Int_.Xto_bry(entityId));} - public Wdata_claim_itm_core Make_claim_entity_pid(int pid, int entityId) {return new Wdata_claim_itm_entity(pid, Wdata_dict_snak_tid.Tid_value, Wdata_dict_value_entity_tid.Tid_property, Int_.Xto_bry(entityId));} + public Wdata_claim_itm_core Make_claim_entity_qid(int pid, int entityId) {return new Wdata_claim_itm_entity(pid, Wdata_dict_snak_tid.Tid_value, Wdata_dict_value_entity_tid.Tid_item, Int_.To_bry(entityId));} + public Wdata_claim_itm_core Make_claim_entity_pid(int pid, int entityId) {return new Wdata_claim_itm_entity(pid, Wdata_dict_snak_tid.Tid_value, Wdata_dict_value_entity_tid.Tid_property, Int_.To_bry(entityId));} public Wdata_claim_itm_core Make_claim_monolingualtext(int pid, String lang, String text) {return new Wdata_claim_itm_monolingualtext(pid, Wdata_dict_snak_tid.Tid_value, Bry_.new_u8(lang), Bry_.new_u8(text));} public Wdata_claim_itm_core Make_claim_globecoordinate(int pid, String lat, String lng, String prc) {return new Wdata_claim_itm_globecoordinate(pid, Wdata_dict_snak_tid.Tid_value, Bry_.new_u8(lat), Bry_.new_u8(lng), Object_.Bry__null, Bry_.new_u8(prc), Bry_.new_a7("http://www.wikidata.org/entity/Q2"));} - public Wdata_claim_itm_core Make_claim_quantity(int pid, int val, int unit, int ubound, int lbound) {return new Wdata_claim_itm_quantity(pid, Wdata_dict_snak_tid.Tid_value, Bry_.new_u8(Int_.Xto_str(val)), Bry_.new_u8(Int_.Xto_str(unit)), Bry_.new_u8(Int_.Xto_str(ubound)), Bry_.new_u8(Int_.Xto_str(lbound)));} + public Wdata_claim_itm_core Make_claim_quantity(int pid, int val, int unit, int ubound, int lbound) {return new Wdata_claim_itm_quantity(pid, Wdata_dict_snak_tid.Tid_value, Bry_.new_u8(Int_.To_str(val)), Bry_.new_u8(Int_.To_str(unit)), Bry_.new_u8(Int_.To_str(ubound)), Bry_.new_u8(Int_.To_str(lbound)));} public Wdata_claim_itm_core Make_claim_time(int pid, String val) {return new Wdata_claim_itm_time(pid, Wdata_dict_snak_tid.Tid_value, Wdata_dict_value_time.Xto_time(val), Wdata_dict_value_time.Val_timezone_bry, Wdata_dict_value_time.Val_before_bry, Wdata_dict_value_time.Val_after_bry, Wdata_dict_value_time.Val_precision_bry, Wdata_dict_value_time.Val_calendarmodel_bry);} public Wdata_claim_itm_core Make_claim_novalue(int pid) {return new Wdata_claim_itm_system(pid, Wdata_dict_val_tid.Tid_unknown, Wdata_dict_snak_tid.Tid_novalue);} public void Test_entity(String raw, String expd) {Tfds.Eq(expd, String_.new_u8(wdoc_parser.Parse_qid(json_parser.Parse_by_apos(raw))));} diff --git a/400_xowa/src/gplx/xowa/xtns/wdatas/parsers/Wdata_doc_parser_v1.java b/400_xowa/src/gplx/xowa/xtns/wdatas/parsers/Wdata_doc_parser_v1.java index 8983da813..b9bf36548 100644 --- a/400_xowa/src/gplx/xowa/xtns/wdatas/parsers/Wdata_doc_parser_v1.java +++ b/400_xowa/src/gplx/xowa/xtns/wdatas/parsers/Wdata_doc_parser_v1.java @@ -38,7 +38,7 @@ public class Wdata_doc_parser_v1 implements Wdata_doc_parser { public Ordered_hash Parse_sitelinks(byte[] qid, Json_doc doc) { try { Json_nde list_nde = Json_nde.cast(doc.Get_grp(Bry_links)); if (list_nde == null) return Wdata_doc_parser_v1.Empty_ordered_hash_bry; - Ordered_hash rv = Ordered_hash_.new_bry_(); + Ordered_hash rv = Ordered_hash_.New_bry(); int list_len = list_nde.Len(); for (int i = 0; i < list_len; ++i) { Json_kv wiki_kv = Json_kv.cast(list_nde.Get_at(i)); @@ -67,7 +67,7 @@ public class Wdata_doc_parser_v1 implements Wdata_doc_parser { try { byte[] langval_key = label_or_description ? Bry_label : Bry_description; Json_nde list_nde = Json_nde.cast(doc.Get_grp(langval_key)); if (list_nde == null) return Wdata_doc_parser_v1.Empty_ordered_hash_bry; - Ordered_hash rv = Ordered_hash_.new_bry_(); + Ordered_hash rv = Ordered_hash_.New_bry(); int list_len = list_nde.Len(); for (int i = 0; i < list_len; ++i) { Json_kv data_kv = Json_kv.cast(list_nde.Get_at(i)); @@ -81,7 +81,7 @@ public class Wdata_doc_parser_v1 implements Wdata_doc_parser { public Ordered_hash Parse_aliases(byte[] qid, Json_doc doc) { try { Json_nde list_nde = Json_nde.cast(doc.Get_grp(Bry_aliases)); if (list_nde == null) return Wdata_doc_parser_v1.Empty_ordered_hash_bry; - Ordered_hash rv = Ordered_hash_.new_bry_(); + Ordered_hash rv = Ordered_hash_.New_bry(); int list_len = list_nde.Len(); for (int i = 0; i < list_len; ++i) { Json_kv data_kv = Json_kv.cast(list_nde.Get_at(i)); @@ -127,7 +127,7 @@ public class Wdata_doc_parser_v1 implements Wdata_doc_parser { public Wdata_claim_itm_base Parse_claims_data(byte[] qid, int pid, byte snak_tid, Json_nde nde) {throw Err_.new_unimplemented();} public static Ordered_hash Claims_list_to_hash(List_adp full_list) { full_list.Sort(); - Ordered_hash rv = Ordered_hash_.new_(); List_adp temp_itms = List_adp_.new_(); + Ordered_hash rv = Ordered_hash_.New(); List_adp temp_itms = List_adp_.new_(); int prv_pid = -1; int len = full_list.Count(); for (int i = 0; i < len; ++i) { @@ -220,7 +220,7 @@ public class Wdata_doc_parser_v1 implements Wdata_doc_parser { return kv.Val().Data_bry(); } private void Warn(String fmt, Object... args) {usr_dlg.Warn_many("", "", fmt, args);} - public static final Ordered_hash Empty_ordered_hash_bry = Ordered_hash_.new_bry_(), Empty_ordered_hash_generic = Ordered_hash_.new_(); + public static final Ordered_hash Empty_ordered_hash_bry = Ordered_hash_.New_bry(), Empty_ordered_hash_generic = Ordered_hash_.New(); private static final byte Prop_tid_m = 0, Prop_tid_q = 1, Prop_tid_g = 2, Prop_tid_rank = 3, Prop_tid_refs = 4; private static final Hash_adp_bry Prop_key_hash = Hash_adp_bry.ci_a7() .Add_bry_byte(Wdata_dict_claim_v1.Bry_m , Prop_tid_m) @@ -230,7 +230,7 @@ public class Wdata_doc_parser_v1 implements Wdata_doc_parser { .Add_bry_byte(Wdata_dict_claim_v1.Bry_refs , Prop_tid_refs); Ordered_hash Bld_hash(Json_doc doc, byte[] key) { Json_nde nde = Json_nde.cast(doc.Get_grp(key)); if (nde == null) return Empty_ordered_hash_bry; - Ordered_hash rv = Ordered_hash_.new_bry_(); + Ordered_hash rv = Ordered_hash_.New_bry(); int len = nde.Len(); for (int i = 0; i < len; i++) { Json_kv kv = Json_kv.cast(nde.Get_at(i)); diff --git a/400_xowa/src/gplx/xowa/xtns/wdatas/parsers/Wdata_doc_parser_v2.java b/400_xowa/src/gplx/xowa/xtns/wdatas/parsers/Wdata_doc_parser_v2.java index 33824051a..a59afc408 100644 --- a/400_xowa/src/gplx/xowa/xtns/wdatas/parsers/Wdata_doc_parser_v2.java +++ b/400_xowa/src/gplx/xowa/xtns/wdatas/parsers/Wdata_doc_parser_v2.java @@ -28,7 +28,7 @@ public class Wdata_doc_parser_v2 implements Wdata_doc_parser { public Ordered_hash Parse_sitelinks(byte[] qid, Json_doc doc) { try { Json_nde list_nde = Json_nde.cast(doc.Get_grp(Bry_sitelinks)); if (list_nde == null) return Wdata_doc_parser_v1.Empty_ordered_hash_bry; - Ordered_hash rv = Ordered_hash_.new_bry_(); + Ordered_hash rv = Ordered_hash_.New_bry(); int list_len = list_nde.Len(); Hash_adp_bry dict = Wdata_dict_sitelink.Dict; for (int i = 0; i < list_len; ++i) { @@ -56,7 +56,7 @@ public class Wdata_doc_parser_v2 implements Wdata_doc_parser { try { byte[] langval_key = label_or_description ? Bry_labels : Bry_descriptions; Json_nde list_nde = Json_nde.cast(doc.Get_grp(langval_key)); if (list_nde == null) return Wdata_doc_parser_v1.Empty_ordered_hash_bry; - Ordered_hash rv = Ordered_hash_.new_bry_(); + Ordered_hash rv = Ordered_hash_.New_bry(); int list_len = list_nde.Len(); Hash_adp_bry dict = Wdata_dict_langtext.Dict; for (int i = 0; i < list_len; ++i) { @@ -82,7 +82,7 @@ public class Wdata_doc_parser_v2 implements Wdata_doc_parser { public Ordered_hash Parse_aliases(byte[] qid, Json_doc doc) { try { Json_nde list_nde = Json_nde.cast(doc.Get_grp(Bry_aliases)); if (list_nde == null) return Wdata_doc_parser_v1.Empty_ordered_hash_bry; - Ordered_hash rv = Ordered_hash_.new_bry_(); + Ordered_hash rv = Ordered_hash_.New_bry(); int list_len = list_nde.Len(); Hash_adp_bry dict = Wdata_dict_langtext.Dict; for (int i = 0; i < list_len; ++i) { diff --git a/400_xowa/src/gplx/xowa/xtns/wdatas/pfuncs/Wdata_external_lang_links_data.java b/400_xowa/src/gplx/xowa/xtns/wdatas/pfuncs/Wdata_external_lang_links_data.java index 958202a1f..ce5069cbe 100644 --- a/400_xowa/src/gplx/xowa/xtns/wdatas/pfuncs/Wdata_external_lang_links_data.java +++ b/400_xowa/src/gplx/xowa/xtns/wdatas/pfuncs/Wdata_external_lang_links_data.java @@ -45,7 +45,7 @@ public class Wdata_external_lang_links_data { for (int i = 0; i < args_len; i++) { Arg_nde_tkn nde = self.Args_get_by_idx(i); nde.Val_tkn().Tmpl_evaluate(ctx, src, self, tmp_bfr); - byte[] lang = tmp_bfr.Xto_bry_and_clear(); + byte[] lang = tmp_bfr.To_bry_and_clear(); Langs_add(lang); } tmp_bfr.Mkr_rls(); diff --git a/400_xowa/src/gplx/xowa/xtns/wdatas/pfuncs/Wdata_pf_noExternalLangLinks.java b/400_xowa/src/gplx/xowa/xtns/wdatas/pfuncs/Wdata_pf_noExternalLangLinks.java index 17d020b9a..20b38fddb 100644 --- a/400_xowa/src/gplx/xowa/xtns/wdatas/pfuncs/Wdata_pf_noExternalLangLinks.java +++ b/400_xowa/src/gplx/xowa/xtns/wdatas/pfuncs/Wdata_pf_noExternalLangLinks.java @@ -17,7 +17,7 @@ along with this program. If not, see . */ package gplx.xowa.xtns.wdatas.pfuncs; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.wdatas.*; import gplx.langs.jsons.*; -import gplx.xowa.langs.*; +import gplx.xowa.langs.*; import gplx.xowa.langs.kwds.*; import gplx.xowa.xtns.pfuncs.*; import gplx.xowa.parsers.*; import gplx.xowa.parsers.tmpls.*; public class Wdata_pf_noExternalLangLinks extends Pf_func_base { diff --git a/400_xowa/src/gplx/xowa/xtns/wdatas/pfuncs/Wdata_pf_property.java b/400_xowa/src/gplx/xowa/xtns/wdatas/pfuncs/Wdata_pf_property.java index cc3ca7a6d..41ccec1b7 100644 --- a/400_xowa/src/gplx/xowa/xtns/wdatas/pfuncs/Wdata_pf_property.java +++ b/400_xowa/src/gplx/xowa/xtns/wdatas/pfuncs/Wdata_pf_property.java @@ -18,7 +18,7 @@ along with this program. If not, see . package gplx.xowa.xtns.wdatas.pfuncs; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.wdatas.*; import gplx.langs.jsons.*; import gplx.core.primitives.*; import gplx.xowa.parsers.logs.*; import gplx.xowa.xtns.pfuncs.*; import gplx.xowa.xtns.wdatas.core.*; -import gplx.xowa.langs.*; +import gplx.xowa.langs.*; import gplx.xowa.langs.kwds.*; import gplx.xowa.parsers.*; import gplx.xowa.parsers.tmpls.*; public class Wdata_pf_property extends Pf_func_base { @Override public int Id() {return Xol_kwd_grp_.Id_property;} diff --git a/400_xowa/src/gplx/xowa/xtns/wdatas/pfuncs/Wdata_pf_property_data.java b/400_xowa/src/gplx/xowa/xtns/wdatas/pfuncs/Wdata_pf_property_data.java index 312c3acb9..515334c94 100644 --- a/400_xowa/src/gplx/xowa/xtns/wdatas/pfuncs/Wdata_pf_property_data.java +++ b/400_xowa/src/gplx/xowa/xtns/wdatas/pfuncs/Wdata_pf_property_data.java @@ -44,7 +44,7 @@ public class Wdata_pf_property_data { continue; } nde.Val_tkn().Tmpl_evaluate(ctx, src, self, tmp_bfr); - byte[] val = tmp_bfr.Xto_bry_and_clear(); + byte[] val = tmp_bfr.To_bry_and_clear(); byte key_tid = ((Byte_obj_val)o).Val(); switch (key_tid) { case Atr_of_id: of = val; break; diff --git a/400_xowa/src/gplx/xowa/xtns/wdatas/pfuncs/Wdata_pf_property_tst.java b/400_xowa/src/gplx/xowa/xtns/wdatas/pfuncs/Wdata_pf_property_tst.java index 4cfc6c032..9479f0a97 100644 --- a/400_xowa/src/gplx/xowa/xtns/wdatas/pfuncs/Wdata_pf_property_tst.java +++ b/400_xowa/src/gplx/xowa/xtns/wdatas/pfuncs/Wdata_pf_property_tst.java @@ -131,7 +131,7 @@ class Wdata_pf_property_data_fxt { app = parser_fxt.App(); wdata_mgr = app.Wiki_mgr().Wdata_mgr(); } - Io_mgr.I.InitEngine_mem(); + Io_mgr.Instance.InitEngine_mem(); wdata_mgr.Clear(); parser_fxt.Reset(); expd_id_int = -1; diff --git a/400_xowa/src/gplx/xowa/xtns/wdatas/pfuncs/Wdata_pf_wbreponame.java b/400_xowa/src/gplx/xowa/xtns/wdatas/pfuncs/Wdata_pf_wbreponame.java index a382a41d3..a50213cd4 100644 --- a/400_xowa/src/gplx/xowa/xtns/wdatas/pfuncs/Wdata_pf_wbreponame.java +++ b/400_xowa/src/gplx/xowa/xtns/wdatas/pfuncs/Wdata_pf_wbreponame.java @@ -17,7 +17,7 @@ along with this program. If not, see . */ package gplx.xowa.xtns.wdatas.pfuncs; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.wdatas.*; import gplx.langs.jsons.*; -import gplx.xowa.langs.*; +import gplx.xowa.langs.*; import gplx.xowa.langs.kwds.*; import gplx.xowa.xtns.pfuncs.*; import gplx.xowa.parsers.*; import gplx.xowa.parsers.tmpls.*; public class Wdata_pf_wbreponame extends Pf_func_base { diff --git a/400_xowa/src/gplx/xowa/xtns/wdatas/specials/Wdata_itemByTitle_page.java b/400_xowa/src/gplx/xowa/xtns/wdatas/specials/Wdata_itemByTitle_page.java index ac76d4a50..43de8ad92 100644 --- a/400_xowa/src/gplx/xowa/xtns/wdatas/specials/Wdata_itemByTitle_page.java +++ b/400_xowa/src/gplx/xowa/xtns/wdatas/specials/Wdata_itemByTitle_page.java @@ -18,7 +18,7 @@ along with this program. If not, see . package gplx.xowa.xtns.wdatas.specials; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.wdatas.*; import gplx.core.net.*; import gplx.xowa.wikis.domains.*; import gplx.xowa.specials.*; -import gplx.xowa.urls.*; +import gplx.xowa.apps.urls.*; public class Wdata_itemByTitle_page implements Xows_page { private Gfo_qarg_mgr arg_hash = new Gfo_qarg_mgr(); private static final byte[] Arg_site = Bry_.new_a7("site"), Arg_page = Bry_.new_a7("page"); diff --git a/400_xowa/src/gplx/xowa/xtns/wdatas/specials/Wdata_itemByTitle_page_tst.java b/400_xowa/src/gplx/xowa/xtns/wdatas/specials/Wdata_itemByTitle_page_tst.java index 91a1b1cb5..9f62d2937 100644 --- a/400_xowa/src/gplx/xowa/xtns/wdatas/specials/Wdata_itemByTitle_page_tst.java +++ b/400_xowa/src/gplx/xowa/xtns/wdatas/specials/Wdata_itemByTitle_page_tst.java @@ -57,7 +57,7 @@ class Wdata_itemByTitle_page_fxt { parser_fxt.Init_page_create(app.Wiki_mgr().Wdata_mgr().Wdata_wiki(), qid_ttl, text); } public void Init_wdata_label(String wmf_key_str, String wdata_label, String qid) { - wdata_fxt.Init_qids_add("en", Xow_domain_type_.Int__wikipedia, wdata_label, qid); + wdata_fxt.Init_qids_add("en", Xow_domain_tid_.Int__wikipedia, wdata_label, qid); } public void Test_open(String link, String expd) { Xoae_page page = wiki.Parser_mgr().Ctx().Cur_page(); diff --git a/400_xowa/src/gplx/xowa/xtns/xowa_cmds/Xop_xowa_cmd.java b/400_xowa/src/gplx/xowa/xtns/xowa_cmds/Xop_xowa_cmd.java index bd4728f2a..8828e1df6 100644 --- a/400_xowa/src/gplx/xowa/xtns/xowa_cmds/Xop_xowa_cmd.java +++ b/400_xowa/src/gplx/xowa/xtns/xowa_cmds/Xop_xowa_cmd.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.xtns.xowa_cmds; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; -import gplx.xowa.html.*; +import gplx.xowa.htmls.*; import gplx.xowa.parsers.*; import gplx.xowa.parsers.xndes.*; public class Xop_xowa_cmd implements Xox_xnde { public Xop_root_tkn Xtn_root() {throw Err_.new_unimplemented_w_msg("xowa_cmd.xtn_root should not be called");} diff --git a/400_xowa/src/gplx/xowa/xtns/xowa_cmds/Xop_xowa_cmd_tst.java b/400_xowa/src/gplx/xowa/xtns/xowa_cmds/Xop_xowa_cmd_tst.java index 7c119be03..e6a706eec 100644 --- a/400_xowa/src/gplx/xowa/xtns/xowa_cmds/Xop_xowa_cmd_tst.java +++ b/400_xowa/src/gplx/xowa/xtns/xowa_cmds/Xop_xowa_cmd_tst.java @@ -17,14 +17,14 @@ along with this program. If not, see . */ package gplx.xowa.xtns.xowa_cmds; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import org.junit.*; -import gplx.xowa.apps.gfss.*; +import gplx.xowa.apps.gfs.*; public class Xop_xowa_cmd_tst { @Before public void init() { Xoa_gfs_mgr.Msg_parser_init(); fxt.Reset(); } private Xop_fxt fxt = new Xop_fxt(); @Test public void Basic() { - GfsCore._.AddCmd(fxt.App(), Xoae_app.Invk_app); + GfsCore.Instance.AddCmd(fxt.App(), Xoae_app.Invk_app); fxt.Wiki().Sys_cfg().Xowa_cmd_enabled_(false); fxt.Test_parse_page_all_str(String_.Concat_lines_nl_skip_last ( "" diff --git a/400_xowa/src/gplx/xowa/xtns/xowa_cmds/Xop_xowa_func.java b/400_xowa/src/gplx/xowa/xtns/xowa_cmds/Xop_xowa_func.java index 58eed82da..61164fb2a 100644 --- a/400_xowa/src/gplx/xowa/xtns/xowa_cmds/Xop_xowa_func.java +++ b/400_xowa/src/gplx/xowa/xtns/xowa_cmds/Xop_xowa_func.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.xtns.xowa_cmds; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; -import gplx.xowa.langs.*; +import gplx.xowa.langs.*; import gplx.xowa.langs.kwds.*; import gplx.xowa.xtns.pfuncs.*; import gplx.xowa.parsers.*; import gplx.xowa.parsers.tmpls.*; public class Xop_xowa_func extends Pf_func_base { diff --git a/400_xowa/src/gplx/xowa/xtns/xowa_cmds/Xop_xowa_func_tst.java b/400_xowa/src/gplx/xowa/xtns/xowa_cmds/Xop_xowa_func_tst.java index 60686d0e3..f139006db 100644 --- a/400_xowa/src/gplx/xowa/xtns/xowa_cmds/Xop_xowa_func_tst.java +++ b/400_xowa/src/gplx/xowa/xtns/xowa_cmds/Xop_xowa_func_tst.java @@ -17,13 +17,13 @@ along with this program. If not, see . */ package gplx.xowa.xtns.xowa_cmds; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import org.junit.*; -import gplx.xowa.apps.gfss.*; +import gplx.xowa.apps.gfs.*; public class Xop_xowa_func_tst { @Before public void init() { Xoa_gfs_mgr.Msg_parser_init(); } private Xop_fxt fxt = new Xop_fxt(); @Test public void Template() { - GfsCore._.AddCmd(fxt.App(), Xoae_app.Invk_app); + GfsCore.Instance.AddCmd(fxt.App(), Xoae_app.Invk_app); fxt.Wiki().Sys_cfg().Xowa_cmd_enabled_(true); fxt.Init_defn_add("A", "{{#xowa|{{{1}}}}}"); fxt.Test_parse_page_all_str("{{A|app.users.get('anonymous').name;}}", "anonymous"); diff --git a/400_xowa/src/gplx/xowa/xtns/xowa_cmds/Xox_xowa_html_cmd.java b/400_xowa/src/gplx/xowa/xtns/xowa_cmds/Xox_xowa_html_cmd.java index b87527e3a..461ef6e9c 100644 --- a/400_xowa/src/gplx/xowa/xtns/xowa_cmds/Xox_xowa_html_cmd.java +++ b/400_xowa/src/gplx/xowa/xtns/xowa_cmds/Xox_xowa_html_cmd.java @@ -16,18 +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.xtns.xowa_cmds; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; -import gplx.core.primitives.*; import gplx.xowa.html.*; -import gplx.xowa.parsers.*; import gplx.xowa.parsers.xndes.*; -public class Xox_xowa_html_cmd implements Xox_xnde, Xop_xnde_atr_parser { +import gplx.core.primitives.*; import gplx.xowa.htmls.*; +import gplx.xowa.parsers.*; import gplx.xowa.parsers.xndes.*; import gplx.xowa.parsers.htmls.*; +public class Xox_xowa_html_cmd implements Xox_xnde, Mwh_atr_itm_owner { private byte pos_val = Pos_head_end; public Xop_root_tkn Xtn_root() {throw Err_.new_unimplemented_w_msg("xowa_html_cmd.xtn_root should not be called");} public byte[] Xtn_html() {throw Err_.new_unimplemented_w_msg("xowa_html_cmd.xtn_html should not be called");} - public void Xatr_parse(Xowe_wiki wiki, byte[] src, Xop_xatr_itm xatr, Object xatr_key_obj) { - if (xatr_key_obj == null) return; - Byte_obj_val xatr_key = (Byte_obj_val)xatr_key_obj; - switch (xatr_key.Val()) { - case Xatr_pos_id: pos_val = Pos_val(xatr.Val_as_bry(src)); break; - default: throw Err_.new_unhandled(xatr_key.Val()); + public void Xatr__set(Xowe_wiki wiki, byte[] src, Mwh_atr_itm xatr, Object xatr_id_obj) { + if (xatr_id_obj == null) return; + Byte_obj_val xatr_id = (Byte_obj_val)xatr_id_obj; + switch (xatr_id.Val()) { + case Xatr_pos_id: pos_val = Pos_val(xatr.Val_as_bry()); break; + default: throw Err_.new_unhandled(xatr_id.Val()); } } public void Xtn_parse(Xowe_wiki wiki, Xop_ctx ctx, Xop_root_tkn root, byte[] src, Xop_xnde_tkn xnde) { @@ -35,7 +35,7 @@ public class Xox_xowa_html_cmd implements Xox_xnde, Xop_xnde_atr_parser { wiki.Appe().Usr_dlg().Warn_many("", "", "xowa_html command only allowed in xowa_home"); return; } - Xop_xatr_itm.Xatr_parse(wiki.Appe(), this, atr_hash, wiki, src, xnde); + Xox_xnde_.Xatr__set(wiki, this, xatrs_hash, src, xnde); int itm_bgn = xnde.Tag_open_end(), itm_end = xnde.Tag_close_bgn(); if (src[itm_bgn] == Byte_ascii.Nl) ++itm_bgn; // ignore 1st \n; // if (src[itm_end - 1] == Byte_ascii.Nl) --itm_end; // ignore last \n; @@ -62,5 +62,5 @@ public class Xox_xowa_html_cmd implements Xox_xnde, Xop_xnde_atr_parser { .Add_bry_byte(Xatr_pos_val__html_end, Pos_html_end) ; private static final byte Xatr_pos_id = 1; - private static final Hash_adp_bry atr_hash = Hash_adp_bry.ci_a7().Add_bry_byte(Xatr_pos_key, Xatr_pos_id); + private static final Hash_adp_bry xatrs_hash = Hash_adp_bry.ci_a7().Add_bry_byte(Xatr_pos_key, Xatr_pos_id); } diff --git a/400_xowa/src/gplx/xowa/xtns/xowa_cmds/Xox_xowa_html_cmd_tst.java b/400_xowa/src/gplx/xowa/xtns/xowa_cmds/Xox_xowa_html_cmd_tst.java index 8f0be623a..3cc6d7313 100644 --- a/400_xowa/src/gplx/xowa/xtns/xowa_cmds/Xox_xowa_html_cmd_tst.java +++ b/400_xowa/src/gplx/xowa/xtns/xowa_cmds/Xox_xowa_html_cmd_tst.java @@ -17,7 +17,7 @@ along with this program. If not, see . */ package gplx.xowa.xtns.xowa_cmds; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import org.junit.*; -import gplx.xowa.html.*; import gplx.xowa.gui.*; import gplx.xowa.pages.*; +import gplx.xowa.htmls.*; import gplx.xowa.guis.*; import gplx.xowa.wikis.pages.*; import gplx.xowa.parsers.*; public class Xox_xowa_html_cmd_tst { @Before public void init() {fxt.Clear();} private Xox_xowa_html_cmd_fxt fxt = new Xox_xowa_html_cmd_fxt(); @@ -50,7 +50,7 @@ class Xox_xowa_html_cmd_fxt { Xop_root_tkn root = fxt.Exec_parse_page_all_as_root(raw_bry); fxt.Page().Root_(root); html_mgr.Html_wtr().Write_all(bfr, fxt.Ctx(), raw_bry, root); - byte[] actl = html_mgr.Page_wtr_mgr().Wkr(Xopg_view_mode.Tid_read).Write(html_mgr.Page_wtr_mgr(), fxt.Page(), fxt.Ctx(), bfr); + byte[] actl = html_mgr.Page_wtr_mgr().Wkr(Xopg_page_.Tid_read).Write_page(fxt.Page(), fxt.Ctx(), bfr); Tfds.Eq_str_lines(expd, String_.new_u8(actl)); } } diff --git a/tst/400_xowa/bin/any/xowa/cfg/wiki/site_cfg b/tst/400_xowa/bin/any/xowa/cfg/wiki/site_cfg new file mode 100644 index 000000000..36be04491 --- /dev/null +++ b/tst/400_xowa/bin/any/xowa/cfg/wiki/site_cfg @@ -0,0 +1,2 @@ +math +source diff --git a/tst/400_xowa/root/wiki/en.wikipedia.org/en.wikipedia.org-file-user.xowa b/tst/400_xowa/root/wiki/en.wikipedia.org/en.wikipedia.org-file-user.xowa deleted file mode 100644 index 4e61025a6..000000000 Binary files a/tst/400_xowa/root/wiki/en.wikipedia.org/en.wikipedia.org-file-user.xowa and /dev/null differ diff --git a/tst/400_xowa/root/wiki/en.wikipedia.org/en.wikipedia.org-file.xowa b/tst/400_xowa/root/wiki/en.wikipedia.org/en.wikipedia.org-file.xowa deleted file mode 100644 index 1bb26d403..000000000 Binary files a/tst/400_xowa/root/wiki/en.wikipedia.org/en.wikipedia.org-file.xowa and /dev/null differ diff --git a/tst/400_xowa/root/wiki/en.wikipedia.org/en.wikipedia.org-text.xowa b/tst/400_xowa/root/wiki/en.wikipedia.org/en.wikipedia.org-text.xowa index 3fd530837..b8230e9c7 100644 Binary files a/tst/400_xowa/root/wiki/en.wikipedia.org/en.wikipedia.org-text.xowa and b/tst/400_xowa/root/wiki/en.wikipedia.org/en.wikipedia.org-text.xowa differ