mirror of
https://github.com/gnosygnu/xowa.git
synced 2026-03-02 03:49:30 +00:00
v2.5.4.1
This commit is contained in:
@@ -18,13 +18,13 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
package gplx;
|
||||
import gplx.core.strings.*;
|
||||
public class App_cmd_mgr {
|
||||
private OrderedHash expd_args = OrderedHash_.new_(), actl_args = OrderedHash_.new_();
|
||||
private ListAdp tmp_vals = ListAdp_.new_(); private String[] orig_ary;
|
||||
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.Xto_ary(App_cmd_arg.class);}
|
||||
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);
|
||||
@@ -46,12 +46,12 @@ public class App_cmd_mgr {
|
||||
String itm = ary[i];
|
||||
if (String_.HasAtBgn(itm, arg_prefix)) { // key
|
||||
if (arg != null) {
|
||||
String[] tmp_ary = tmp_vals.XtoStrAry();
|
||||
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.Fetch(key);
|
||||
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;}
|
||||
@@ -64,25 +64,25 @@ public class App_cmd_mgr {
|
||||
}
|
||||
}
|
||||
if (arg != null) {
|
||||
String[] tmp_ary = tmp_vals.XtoStrAry();
|
||||
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.FetchAt(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.Fetch(key);}
|
||||
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.Fetch(key_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.Fetch(key_header);
|
||||
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);
|
||||
@@ -106,7 +106,7 @@ public class App_cmd_mgr {
|
||||
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.FetchAt(i);
|
||||
Gfo_msg_data data = (Gfo_msg_data)errs.Get_at(i);
|
||||
sb.Add_fmt_line(" " + data.Gen_str_ary());
|
||||
}
|
||||
sb.Add_char_crlf();
|
||||
@@ -119,7 +119,7 @@ public class App_cmd_mgr {
|
||||
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.FetchAt(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;
|
||||
@@ -128,7 +128,7 @@ public class App_cmd_mgr {
|
||||
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.FetchAt(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)
|
||||
@@ -137,17 +137,17 @@ public class App_cmd_mgr {
|
||||
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().FetchAt(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 OrderedHash Expd_copy() {
|
||||
OrderedHash rv = OrderedHash_.new_();
|
||||
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.FetchAt(i);
|
||||
App_cmd_arg arg = (App_cmd_arg)expd_args.Get_at(i);
|
||||
rv.Add(arg.Key(), arg.Clone());
|
||||
}
|
||||
return rv;
|
||||
@@ -156,7 +156,7 @@ public class App_cmd_mgr {
|
||||
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 ListAdp errs = ListAdp_.new_();
|
||||
public Gfo_msg_data Errs_get(int i) {return (Gfo_msg_data)errs.FetchAt(i);}
|
||||
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";
|
||||
}
|
||||
@@ -18,18 +18,18 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
package gplx;
|
||||
import gplx.core.primitives.*;
|
||||
public class Bry_cache {
|
||||
public byte[] Get_or_new(String v) {return Get_or_new(Bry_.new_utf8_(v));}
|
||||
public byte[] Get_or_new(String v) {return Get_or_new(Bry_.new_u8(v));}
|
||||
public byte[] Get_or_new(byte[] v) {
|
||||
if (v.length == 0) return Bry_.Empty;
|
||||
Object rv = hash.Fetch(hash_ref.Val_(v));
|
||||
Object rv = hash.Get_by(hash_ref.Val_(v));
|
||||
if (rv == null) {
|
||||
Bry_obj_ref bry = Bry_obj_ref.new_(v);
|
||||
hash.AddKeyVal(bry);
|
||||
hash.Add_as_key_and_val(bry);
|
||||
return v;
|
||||
}
|
||||
else
|
||||
return ((Bry_obj_ref)rv).Val();
|
||||
}
|
||||
HashAdp hash = HashAdp_.new_(); Bry_obj_ref hash_ref = Bry_obj_ref.null_();
|
||||
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() {}
|
||||
}
|
||||
|
||||
@@ -27,7 +27,7 @@ public class ByteAryAry_chkr implements Tst_chkr {
|
||||
err += mgr.Tst_val(true, path, "len", ary.length, actl_len);
|
||||
for (int i = 0; i < expd_len; i++) {
|
||||
byte[] actl_itm = i >= actl_len ? null : actl[i];
|
||||
err += mgr.Tst_val(false, path, "ary:" + Int_.Xto_str(i), String_.new_utf8_(ary[i]), String_.new_utf8_(actl_itm));
|
||||
err += mgr.Tst_val(false, path, "ary:" + Int_.Xto_str(i), String_.new_u8(ary[i]), String_.new_u8(actl_itm));
|
||||
}
|
||||
return err;
|
||||
}
|
||||
|
||||
@@ -33,7 +33,7 @@ class GfoCacheMgr_fxt {
|
||||
public GfoCacheMgr_fxt run_Add(String... ary) {
|
||||
for (int i = 0; i < ary.length; i++) {
|
||||
String s = ary[i];
|
||||
mgr.Add(Bry_.new_utf8_(s), new GfoCacheItm_mock(s), String_.Len(s));
|
||||
mgr.Add(Bry_.new_u8(s), new GfoCacheItm_mock(s), String_.Len(s));
|
||||
Env_.TickCount_Test++;
|
||||
}
|
||||
return this;
|
||||
@@ -41,7 +41,7 @@ class GfoCacheMgr_fxt {
|
||||
public GfoCacheMgr_fxt run_Get(String... ary) {
|
||||
for (int i = 0; i < ary.length; i++) {
|
||||
String s = ary[i];
|
||||
mgr.Get_by_key(Bry_.new_utf8_(s));
|
||||
mgr.Get_by_key(Bry_.new_u8(s));
|
||||
Env_.TickCount_Test++;
|
||||
}
|
||||
return this;
|
||||
|
||||
@@ -17,27 +17,27 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package gplx;
|
||||
public class Gfo_cache_mgr {
|
||||
private OrderedHash hash = OrderedHash_.new_bry_();
|
||||
private OrderedHash recent = OrderedHash_.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;
|
||||
public int Count() {return hash.Count();}
|
||||
public void Clear() {hash.Clear(); recent.Clear(); cur_size = 0;}
|
||||
@gplx.Internal protected Object Get_at(int i) {
|
||||
Gfo_cache_itm rv = (Gfo_cache_itm)hash.FetchAt(i);
|
||||
Gfo_cache_itm rv = (Gfo_cache_itm)hash.Get_at(i);
|
||||
return rv.Val();
|
||||
}
|
||||
public Object Get_by_key(byte[] key) {
|
||||
Object o = hash.Fetch(key); if (o == null) return null;
|
||||
Object o = hash.Get_by(key); if (o == null) return null;
|
||||
Gfo_cache_itm rv = (Gfo_cache_itm)o;
|
||||
rv.Timestamp_update();
|
||||
Object recent_itm = recent.Fetch(key);
|
||||
Object recent_itm = recent.Get_by(key);
|
||||
if (recent_itm == null) recent.Add(key, rv);
|
||||
return rv.Val();
|
||||
}
|
||||
public void Del(byte[] key) {
|
||||
Object o = hash.Fetch(key); if (o == null) return;
|
||||
Object o = hash.Get_by(key); if (o == null) return;
|
||||
Gfo_cache_itm itm = (Gfo_cache_itm)o;
|
||||
cur_size -= itm.Size();
|
||||
hash.Del(itm.Key());
|
||||
@@ -46,7 +46,7 @@ public class Gfo_cache_mgr {
|
||||
public void Add_replace(byte[] key, RlsAble val, int size) {
|
||||
// Del(key);
|
||||
// Add(key, val, size);
|
||||
Object o = hash.Fetch(key);
|
||||
Object o = hash.Get_by(key);
|
||||
if (o == null)
|
||||
Add(key, val, size);
|
||||
else {
|
||||
@@ -67,7 +67,7 @@ public class Gfo_cache_mgr {
|
||||
// ConsoleAdp._.WriteLine("reducing");
|
||||
int len = recent.Count();
|
||||
for (int i = 0; i < len; i++) {
|
||||
Gfo_cache_itm itm = (Gfo_cache_itm)recent.FetchAt(i);
|
||||
Gfo_cache_itm itm = (Gfo_cache_itm)recent.Get_at(i);
|
||||
itm.Rls(); // releases root
|
||||
}
|
||||
recent.Clear();
|
||||
@@ -76,10 +76,10 @@ public class Gfo_cache_mgr {
|
||||
ConsoleAdp._.WriteLine("compacting:");
|
||||
// hash.Sort();
|
||||
// int len = hash.Count();
|
||||
// ListAdp deleted = ListAdp_.new_();
|
||||
// List_adp deleted = List_adp_.new_();
|
||||
// int deleted_size = 0, deleted_count = 0;
|
||||
// for (int i = 0; i < len; i++) {
|
||||
// Gfo_cache_itm itm = (Gfo_cache_itm)hash.FetchAt(i);
|
||||
// Gfo_cache_itm itm = (Gfo_cache_itm)hash.Get_at(i);
|
||||
// int new_deleted_size = deleted_size + 1;//itm.Size();
|
||||
// if (new_deleted_size > 4000 && deleted_count > 0) break;
|
||||
// deleted.Add(itm);
|
||||
@@ -88,7 +88,7 @@ public class Gfo_cache_mgr {
|
||||
// }
|
||||
// len = deleted.Count();
|
||||
// for (int i = 0; i < len; i++) {
|
||||
// Gfo_cache_itm itm = (Gfo_cache_itm)deleted.FetchAt(i);
|
||||
// Gfo_cache_itm itm = (Gfo_cache_itm)deleted.Get_at(i);
|
||||
// cur_size --;
|
||||
// hash.Del(bry_ref.Val_(itm.Key()));
|
||||
// itm.Rls();
|
||||
@@ -97,7 +97,7 @@ public class Gfo_cache_mgr {
|
||||
|
||||
int len = hash.Count();
|
||||
for (int i = 0; i < len; i++) {
|
||||
Gfo_cache_itm itm = (Gfo_cache_itm)hash.FetchAt(i);
|
||||
Gfo_cache_itm itm = (Gfo_cache_itm)hash.Get_at(i);
|
||||
// hash.Del(bry_ref.Val_(itm.Key()));
|
||||
itm.Rls();
|
||||
}
|
||||
|
||||
@@ -23,7 +23,7 @@ public class Gfo_url_arg {
|
||||
public Gfo_url_arg Val_bry_(byte[] v) {val_bry = v; return this;}
|
||||
public static final Gfo_url_arg[] Ary_empty = new Gfo_url_arg[0];
|
||||
public static Gfo_url_arg new_key_(String key) {
|
||||
return new Gfo_url_arg(Bry_.new_utf8_(key), Bry_.Empty);
|
||||
return new Gfo_url_arg(Bry_.new_u8(key), Bry_.Empty);
|
||||
}
|
||||
public static Gfo_url_arg[] Ary(String... kvs) {
|
||||
int len = kvs.length;
|
||||
@@ -34,7 +34,7 @@ public class Gfo_url_arg {
|
||||
if (i % 2 == 0)
|
||||
key = s;
|
||||
else
|
||||
rv[i / 2] = new Gfo_url_arg(Bry_.new_utf8_(key), Bry_.new_utf8_(s));
|
||||
rv[i / 2] = new Gfo_url_arg(Bry_.new_u8(key), Bry_.new_u8(s));
|
||||
}
|
||||
return rv;
|
||||
}
|
||||
|
||||
@@ -20,7 +20,7 @@ import gplx.xowa.net.*;
|
||||
public class Gfo_url_parser {
|
||||
private boolean pass = true;
|
||||
private Gfo_url url;
|
||||
private ListAdp segs = ListAdp_.new_(), args = ListAdp_.new_();
|
||||
private List_adp segs = List_adp_.new_(), args = List_adp_.new_();
|
||||
private Url_encoder encoder = Url_encoder.new_html_href_mw_().Itms_raw_same_many(Byte_ascii.Underline); private Hash_adp_bry protocols = Hash_adp_bry.ci_ascii_(); // ASCII:url_protocol; EX:"http:", "ftp:", etc
|
||||
public Gfo_url_parser() {
|
||||
Init_protocols(Xoo_protocol_itm.Ary());
|
||||
@@ -209,7 +209,7 @@ public class Gfo_url_parser {
|
||||
}
|
||||
++pos;
|
||||
}
|
||||
url.Segs_((byte[][])segs.Xto_ary(byte[].class));
|
||||
url.Segs_((byte[][])segs.To_ary(byte[].class));
|
||||
}
|
||||
private void Parse_anchor(byte[] src, int bgn, int end) {
|
||||
if (bgn == end) return;
|
||||
@@ -264,7 +264,7 @@ public class Gfo_url_parser {
|
||||
++pos;
|
||||
}
|
||||
url.Args_bgn_(bgn - 1); // NOTE: bgn is 1st char after ?; -1 to place at ?
|
||||
url.Args_((Gfo_url_arg[])args.Xto_ary(Gfo_url_arg.class));
|
||||
url.Args_((Gfo_url_arg[])args.To_ary(Gfo_url_arg.class));
|
||||
}
|
||||
private void Args_add(byte[] src, int key_bgn, int key_end, int val_bgn, int val_end) {
|
||||
encoder.Decode(src, key_bgn, key_end, tmp_bfr, false);
|
||||
|
||||
@@ -95,10 +95,10 @@ class Gfo_url_parser_chkr implements Tst_chkr {
|
||||
public Gfo_url_parser_chkr Site_sub_(String v) {this.site_sub = v; return this;} private String site_sub;
|
||||
public Gfo_url_parser_chkr Site_name_(String v) {this.site_name = v; return this;} private String site_name;
|
||||
public Gfo_url_parser_chkr Site_domain_(String v) {this.site_domain = v; return this;} private String site_domain;
|
||||
public Gfo_url_parser_chkr Segs_(String v) {segs.Add(v); return this;} ListAdp segs = ListAdp_.new_();
|
||||
public Gfo_url_parser_chkr Segs_(String v) {segs.Add(v); return this;} List_adp segs = List_adp_.new_();
|
||||
public Gfo_url_parser_chkr Page_(String v) {this.page = v; return this;} private String page;
|
||||
public Gfo_url_parser_chkr Anchor_(String v) {this.anchor = v; return this;} private String anchor;
|
||||
public Gfo_url_parser_chkr Args_(String k, String v) {args.Add(new Gfo_url_arg_chkr(k, v)); return this;} ListAdp args = ListAdp_.new_();
|
||||
public Gfo_url_parser_chkr Args_(String k, String v) {args.Add(new Gfo_url_arg_chkr(k, v)); return this;} List_adp args = List_adp_.new_();
|
||||
public Gfo_url_parser_chkr Err_(byte v) {err = v; return this;} private byte err;
|
||||
public Gfo_url_parser_chkr Reset() {
|
||||
protocol_tid = Xoo_protocol_itm.Tid_null;
|
||||
@@ -114,29 +114,29 @@ class Gfo_url_parser_chkr implements Tst_chkr {
|
||||
int rv = 0;
|
||||
rv += mgr.Tst_val(err == Gfo_url.Err_none, path, "err", err, actl.Err());
|
||||
rv += mgr.Tst_val(protocol_tid == Xoo_protocol_itm.Tid_null, path, "protocol_tid", protocol_tid, actl.Protocol_tid());
|
||||
rv += mgr.Tst_val(site == null, path, "site", site, String_.new_utf8_(actl.Site()));
|
||||
rv += mgr.Tst_val(site_sub == null, path, "site_sub", site_sub, String_.new_utf8_(actl.Site_sub()));
|
||||
rv += mgr.Tst_val(site_name == null, path, "site_name", site_name, String_.new_utf8_(actl.Site_name()));
|
||||
rv += mgr.Tst_val(site_domain == null, path, "site_domain", site_domain, String_.new_utf8_(actl.Site_domain()));
|
||||
bry_ary_chkr.Val_(Bry_.Ary(segs.XtoStrAry()));
|
||||
rv += mgr.Tst_val(site == null, path, "site", site, String_.new_u8(actl.Site()));
|
||||
rv += mgr.Tst_val(site_sub == null, path, "site_sub", site_sub, String_.new_u8(actl.Site_sub()));
|
||||
rv += mgr.Tst_val(site_name == null, path, "site_name", site_name, String_.new_u8(actl.Site_name()));
|
||||
rv += mgr.Tst_val(site_domain == null, path, "site_domain", site_domain, String_.new_u8(actl.Site_domain()));
|
||||
bry_ary_chkr.Val_(Bry_.Ary(segs.To_str_ary()));
|
||||
rv += bry_ary_chkr.Chk(mgr, "segs", actl.Segs());
|
||||
rv += mgr.Tst_val(page == null, path, "page", page, String_.new_utf8_(actl.Page()));
|
||||
rv += mgr.Tst_val(anchor == null, path, "anchor", anchor, String_.new_utf8_(actl.Anchor()));
|
||||
mgr.Tst_sub_ary((Gfo_url_arg_chkr[])args.Xto_ary(Gfo_url_arg_chkr.class), actl.Args(), "args", rv);
|
||||
rv += mgr.Tst_val(page == null, path, "page", page, String_.new_u8(actl.Page()));
|
||||
rv += mgr.Tst_val(anchor == null, path, "anchor", anchor, String_.new_u8(actl.Anchor()));
|
||||
mgr.Tst_sub_ary((Gfo_url_arg_chkr[])args.To_ary(Gfo_url_arg_chkr.class), actl.Args(), "args", rv);
|
||||
return rv;
|
||||
}
|
||||
public Gfo_url_parser_chkr Raw_(String v) {this.raw = v; return this;} private String raw;
|
||||
public void tst_() {
|
||||
byte[] bry = Bry_.new_utf8_(raw);
|
||||
byte[] bry = Bry_.new_u8(raw);
|
||||
Gfo_url url = new Gfo_url();
|
||||
parser.Parse(url, bry, 0, bry.length);
|
||||
Tst_mgr tst_mgr = new Tst_mgr();
|
||||
tst_mgr.Tst_obj(this, url);
|
||||
} Gfo_url_parser parser = new Gfo_url_parser();
|
||||
public void Parse_site_fast_tst(String raw, String expd) {
|
||||
byte[] raw_bry = Bry_.new_utf8_(raw);
|
||||
byte[] raw_bry = Bry_.new_u8(raw);
|
||||
parser.Parse_site_fast(site_data, raw_bry, 0, raw_bry.length);
|
||||
String actl = String_.new_utf8_(raw_bry, site_data.Site_bgn(), site_data.Site_end());
|
||||
String actl = String_.new_u8(raw_bry, site_data.Site_bgn(), site_data.Site_end());
|
||||
Tfds.Eq(expd, actl);
|
||||
} Gfo_url_site_data site_data = new Gfo_url_site_data();
|
||||
}
|
||||
@@ -146,8 +146,8 @@ class Gfo_url_arg_chkr implements Tst_chkr {
|
||||
public int Chk(Tst_mgr mgr, String path, Object actl_obj) {
|
||||
Gfo_url_arg actl = (Gfo_url_arg)actl_obj;
|
||||
int rv = 0;
|
||||
rv += mgr.Tst_val(key == null, path, "key", key, String_.new_utf8_(actl.Key_bry()));
|
||||
rv += mgr.Tst_val(val == null, path, "val", val, String_.new_utf8_(actl.Val_bry()));
|
||||
rv += mgr.Tst_val(key == null, path, "key", key, String_.new_u8(actl.Key_bry()));
|
||||
rv += mgr.Tst_val(val == null, path, "val", val, String_.new_u8(actl.Val_bry()));
|
||||
return rv;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -20,8 +20,8 @@ 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 = DecimalAdp_.CalcPctStr(cur + ListAdp_.Base1, end, "00.00");
|
||||
usr_dlg.Prog_many(grp_key, msg_key, fmt, Int_.Xto_str_pad_bgn_zero(cur + ListAdp_.Base1, endLen), end, pct);
|
||||
String pct = DecimalAdp_.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);
|
||||
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) {
|
||||
|
||||
@@ -18,7 +18,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
package gplx;
|
||||
public class Int_ary_parser extends Obj_ary_parser_base {
|
||||
Number_parser parser = new Number_parser(); int[] ary; int ary_idx;
|
||||
public int[] Parse_ary(String str, byte dlm) {byte[] bry = Bry_.new_utf8_(str); return Parse_ary(bry, 0, bry.length, dlm);}
|
||||
public int[] Parse_ary(String str, byte dlm) {byte[] bry = Bry_.new_u8(str); return Parse_ary(bry, 0, bry.length, dlm);}
|
||||
public int[] Parse_ary(byte[] bry, int bgn, int end, byte dlm) {
|
||||
Parse_core(bry, bgn, end, dlm, Byte_ascii.Nil);
|
||||
return ary;
|
||||
@@ -32,7 +32,7 @@ public class Int_ary_parser extends Obj_ary_parser_base {
|
||||
}
|
||||
}
|
||||
@Override protected void Parse_itm(byte[] bry, int bgn, int end) {
|
||||
parser.Parse(bry, bgn, end); if (parser.Has_err() || parser.Has_frac()) throw Err_.new_fmt_("failed to parse number: {0}", String_.new_utf8_(bry, bgn, end));
|
||||
parser.Parse(bry, bgn, end); if (parser.Has_err() || parser.Has_frac()) throw Err_.new_fmt_("failed to parse number: {0}", String_.new_u8(bry, bgn, end));
|
||||
ary[ary_idx++] = parser.Rv_as_int();
|
||||
}
|
||||
public static final Int_ary_parser _ = new Int_ary_parser();
|
||||
|
||||
@@ -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_ascii_(raw), bgn, end, Byte_ascii.Comma);
|
||||
int[] actl = Int_ary_parser._.Parse_ary(Bry_.new_a7(raw), bgn, end, Byte_ascii.Comma);
|
||||
Tfds.Eq_ary(expd, actl);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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._.LoadFilBry(src_fil);
|
||||
byte[] src_bry = Io_mgr.I.LoadFilBry(src_fil);
|
||||
byte[] trg_bry = Zip_bry(src_bry, 0, src_bry.length);
|
||||
Io_mgr._.SaveFilBry(trg_fil, trg_bry);
|
||||
Io_mgr.I.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 exc) {throw Err_.err_(exc, "error duing zip: src=~{0}", zip_path);}
|
||||
}
|
||||
private Io_url[] Zip_dir__get_subs(Io_url url) {
|
||||
return Io_mgr._.QueryDir_args(url).DirInclude_().ExecAsUrlAry();
|
||||
return Io_mgr.I.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._.CreateDirIfAbsent(trg_dir);
|
||||
Io_mgr.I.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._.CreateDirIfAbsent(itm_url.OwnerDir()); // make sure owner dir exists
|
||||
Io_mgr.I.CreateDirIfAbsent(itm_url.OwnerDir()); // make sure owner dir exists
|
||||
if (itm_url.Type_fil()) {
|
||||
Io_mgr._.SaveFilStr_args(itm_url, "").Exec();
|
||||
Io_mgr.I.SaveFilStr_args(itm_url, "").Exec();
|
||||
File itm_file = new File(itm_url.Raw());
|
||||
FileOutputStream itm_strm = new FileOutputStream(itm_file);
|
||||
int len;
|
||||
|
||||
@@ -18,19 +18,19 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
package 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._.LoadFilBry(src_fil);
|
||||
byte[] src_bry = Io_mgr.I.LoadFilBry(src_fil);
|
||||
byte[] zip_bry = Zip_bry(src_bry, 0, src_bry.length);
|
||||
Io_mgr._.SaveFilBry(trg_fil, zip_bry);
|
||||
Io_mgr.I.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));}
|
||||
public byte[] Unzip_bry(byte[] src, int bgn, int len) {
|
||||
if (src == Bry_.Empty) return src;
|
||||
byte[] section = Bry_.Mid(src, bgn, bgn + len);
|
||||
if (!Bry_.HasAtBgn(section, Bry_zipped, 0, section.length)) throw Err_.new_("src not zipped: " + String_.new_utf8_(section));
|
||||
if (!Bry_.HasAtBgn(section, Bry_zipped, 0, section.length)) throw Err_.new_("src not zipped: " + String_.new_u8(section));
|
||||
return Bry_.Mid(section, Bry_zipped.length, section.length);
|
||||
}
|
||||
public void Unzip_to_dir(Io_url src_fil, Io_url trg_dir) {}
|
||||
private static final byte[] Bry_zipped = Bry_.new_utf8_("zipped:");
|
||||
private static final byte[] Bry_zipped = Bry_.new_u8("zipped:");
|
||||
public static final Io_zip_mgr_mok _ = new Io_zip_mgr_mok(); Io_zip_mgr_mok() {}
|
||||
}
|
||||
|
||||
@@ -23,7 +23,7 @@ public class Io_zip_mgr_tst {
|
||||
}
|
||||
private void Zip_unzip_tst(String s) {
|
||||
Io_zip_mgr zip_mgr = Io_zip_mgr_base._;
|
||||
byte[] src = Bry_.new_ascii_(s);
|
||||
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);
|
||||
Tfds.Eq_ary(src, unz);
|
||||
|
||||
@@ -71,26 +71,26 @@ public class Number_parser_tst {
|
||||
class Number_parser_fxt {
|
||||
private final Number_parser parser = new Number_parser();
|
||||
public void Clear() {parser.Clear();}
|
||||
public void Init_ignore(String chars) {parser.Ignore_chars_(Bry_.new_ascii_(chars));}
|
||||
public void Init_ignore(String chars) {parser.Ignore_chars_(Bry_.new_a7(chars));}
|
||||
public void Test_int(String raw, int expd) {
|
||||
byte[] raw_bry = Bry_.new_ascii_(raw);
|
||||
byte[] raw_bry = Bry_.new_a7(raw);
|
||||
int actl = parser.Parse(raw_bry, 0, raw_bry.length).Rv_as_int();
|
||||
Tfds.Eq(expd, actl, raw);
|
||||
}
|
||||
public void Test_dec(String raw, DecimalAdp expd) {
|
||||
byte[] raw_bry = Bry_.new_ascii_(raw);
|
||||
byte[] raw_bry = Bry_.new_a7(raw);
|
||||
DecimalAdp actl = parser.Parse(raw_bry, 0, raw_bry.length).Rv_as_dec();
|
||||
Tfds.Eq(expd.Xto_decimal(), actl.Xto_decimal(), raw);
|
||||
}
|
||||
public void Test_err(String raw, boolean expd) {
|
||||
byte[] raw_bry = Bry_.new_ascii_(raw);
|
||||
byte[] raw_bry = Bry_.new_a7(raw);
|
||||
boolean actl = parser.Parse(raw_bry, 0, raw_bry.length).Has_err();
|
||||
Tfds.Eq(expd, actl, raw);
|
||||
}
|
||||
public void Test_hex(String raw, int expd_val) {Test_hex(raw, expd_val, true);}
|
||||
public void Test_hex(String raw, int expd_val, boolean expd_pass) {
|
||||
parser.Hex_enabled_(true);
|
||||
byte[] raw_bry = Bry_.new_ascii_(raw);
|
||||
byte[] raw_bry = Bry_.new_a7(raw);
|
||||
int actl = parser.Parse(raw_bry, 0, raw_bry.length).Rv_as_int();
|
||||
if (expd_pass) {
|
||||
Tfds.Eq(expd_val, actl, raw);
|
||||
|
||||
@@ -19,13 +19,13 @@ package gplx;
|
||||
import gplx.core.strings.*;
|
||||
public class Tst_mgr {
|
||||
public Tst_mgr ThrowError_n_() {throwError = false; return this;} private boolean throwError = true;
|
||||
public ListAdp Results() {return results;} ListAdp results = ListAdp_.new_();
|
||||
public List_adp Results() {return results;} List_adp results = List_adp_.new_();
|
||||
public KeyValHash Vars() {return vars;} KeyValHash vars = KeyValHash.new_();
|
||||
public Object Vars_get_by_key(String key) {return vars.FetchValOr(key, null);}
|
||||
public String Vars_get_bry_as_str(String key, int bgn, int end) {
|
||||
byte[] bry = (byte[])vars.FetchValOr(key, null); if (bry == null) return String_.Empty;
|
||||
if (bgn < 0 || end > bry.length || end < bgn || end < 0) return "<<OUT OF BOUNDS>>";
|
||||
return String_.new_utf8_(Bry_.Mid(bry, bgn, end));
|
||||
return String_.new_u8(Bry_.Mid(bry, bgn, end));
|
||||
}
|
||||
public int Tst_val(boolean skip, String path, String name, Object expd, Object actl) {
|
||||
Tst_itm itm = Tst_itm.eq_(skip, path, name, expd, actl);
|
||||
@@ -83,7 +83,7 @@ public class Tst_mgr {
|
||||
if (ary == null) return "<NULL>";
|
||||
int len = Array_.Len(ary);
|
||||
for (int i = 0; i < len; i++) {
|
||||
Object itm = Array_.FetchAt(ary, i);
|
||||
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();
|
||||
@@ -93,13 +93,13 @@ public class Tst_mgr {
|
||||
int comp_max = 0, path_max =0, name_max = 0;
|
||||
int len = results.Count();
|
||||
for (int i = 0; i < len; i++) {
|
||||
Tst_itm itm = (Tst_itm)results.FetchAt(i);
|
||||
Tst_itm itm = (Tst_itm)results.Get_at(i);
|
||||
comp_max = Max(comp_max, itm.Comp());
|
||||
path_max = Max(path_max, itm.Path());
|
||||
name_max = Max(name_max, itm.Name());
|
||||
}
|
||||
for (int i = 0; i < len; i++) {
|
||||
Tst_itm itm = (Tst_itm)results.FetchAt(i);
|
||||
Tst_itm itm = (Tst_itm)results.Get_at(i);
|
||||
sb.Add_fmt("\n{0} {1} {2} '{3}'", String_.PadEnd(itm.Comp(), comp_max, " "), "#" + String_.PadEnd(itm.Path(), path_max, " "), "@" + String_.PadEnd(itm.Name(), name_max, " ") + ":", itm.Expd());
|
||||
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());
|
||||
|
||||
@@ -80,12 +80,12 @@ public class Url_encoder implements Url_encoder_interface {
|
||||
}
|
||||
public String Encode_str(String str) {
|
||||
synchronized (thread_lock) {
|
||||
byte[] bry = Bry_.new_utf8_(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.Xto_str_and_clear();
|
||||
}
|
||||
}
|
||||
public byte[] Encode_bry(String str) {
|
||||
synchronized (thread_lock) {
|
||||
byte[] bry = Bry_.new_utf8_(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.Xto_bry_and_clear();
|
||||
}
|
||||
}
|
||||
public byte[] Encode(byte[] bry) {Encode(tmp_bfr, bry, 0, bry.length); return tmp_bfr.Xto_bry_and_clear();}
|
||||
@@ -106,7 +106,7 @@ public class Url_encoder implements Url_encoder_interface {
|
||||
}
|
||||
public String Decode_str(String str) {
|
||||
synchronized (thread_lock) {
|
||||
byte[] bry = Bry_.new_utf8_(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.Xto_str_and_clear();
|
||||
}
|
||||
}
|
||||
public byte[] Decode(byte[] bry) {
|
||||
@@ -224,13 +224,6 @@ public class Url_encoder implements Url_encoder_interface {
|
||||
rv.Itms_raw_diff(Byte_ascii.Space, Byte_ascii.Underline); // convert " " to "_"
|
||||
return rv;
|
||||
}
|
||||
public static Url_encoder url_comma() {
|
||||
Url_encoder rv = new Url_encoder();
|
||||
rv.Itms_ini(Byte_ascii.Percent);
|
||||
mediawiki_base(rv, true);
|
||||
rv.Itms_raw_same_many(Byte_ascii.Comma);
|
||||
return rv;
|
||||
}
|
||||
}
|
||||
interface Url_encoder_itm {
|
||||
int Encode(Bry_bfr bfr, byte[] src, int end, int idx, byte b);
|
||||
@@ -257,7 +250,7 @@ class Url_encoder_itm_hex implements Url_encoder_itm {
|
||||
}
|
||||
public int Decode(Bry_bfr bfr, byte[] src, int end, int idx, byte b, boolean fail_when_invalid) {
|
||||
if (idx + 2 >= end) {
|
||||
if (fail_when_invalid) throw Err_.new_fmt_("decode needs 3 bytes: idx={0} len={1} snip={2}", idx, end, String_.new_utf8_(Bry_.Mid_by_len_safe(src, idx, 3)));
|
||||
if (fail_when_invalid) throw Err_.new_fmt_("decode needs 3 bytes: idx={0} len={1} snip={2}", idx, end, String_.new_u8(Bry_.Mid_by_len_safe(src, idx, 3)));
|
||||
else {
|
||||
bfr.Add_byte(b);
|
||||
return 0;
|
||||
@@ -277,7 +270,7 @@ class Url_encoder_itm_hex implements Url_encoder_itm {
|
||||
}
|
||||
}
|
||||
if (fail_when_invalid)
|
||||
throw Err_.new_fmt_("decode is invalid: idx={0}, snip={1}", idx, String_.new_utf8_(Bry_.Mid_by_len_safe(src, idx, 3)));
|
||||
throw Err_.new_fmt_("decode is invalid: idx={0}, snip={1}", idx, String_.new_u8(Bry_.Mid_by_len_safe(src, idx, 3)));
|
||||
else {
|
||||
bfr.Add_byte(b);
|
||||
return 0;
|
||||
|
||||
@@ -26,7 +26,7 @@ public class Url_encoder_tst {
|
||||
@Test public void Id_foreign() {fxt.Encoder_id().Test_encode_decode("aéb", "a.C3.A9b");}
|
||||
@Test public void Id_space() {fxt.Encoder_id().Test_encode_decode("a b", "a_b");}
|
||||
@Test public void Id_err() {
|
||||
byte[] raw = Bry_.new_ascii_("0%.jpg");
|
||||
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());
|
||||
@@ -62,11 +62,11 @@ class Url_encoder_fxt {
|
||||
tst_decode(encoded, raw);
|
||||
}
|
||||
public void Test_encode(String raw, String expd) {
|
||||
byte[] bry = encoder.Encode(Bry_.new_utf8_(raw));
|
||||
Tfds.Eq(expd, String_.new_utf8_(bry));
|
||||
byte[] bry = encoder.Encode(Bry_.new_u8(raw));
|
||||
Tfds.Eq(expd, String_.new_u8(bry));
|
||||
}
|
||||
public void tst_decode(String raw, String expd) {
|
||||
byte[] bry = encoder.Decode(Bry_.new_utf8_(raw));
|
||||
Tfds.Eq(expd, String_.new_utf8_(bry));
|
||||
byte[] bry = encoder.Decode(Bry_.new_u8(raw));
|
||||
Tfds.Eq(expd, String_.new_u8(bry));
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user