1
0
mirror of https://github.com/gnosygnu/xowa.git synced 2026-03-02 03:49:30 +00:00

'v3.6.3.1'

This commit is contained in:
gnosygnu
2016-06-19 23:58:10 -04:00
parent 96636f3161
commit d4e8590345
1960 changed files with 20790 additions and 9272 deletions

View File

@@ -38,7 +38,7 @@ public class Scrib_core_fxt {
core.When_page_changed(wiki.Parser_mgr().Ctx().Page());
expd_server_rcvd_list.Clear();
return this;
} private Xoae_app app; Xowe_wiki wiki; Bry_bfr tmp_bfr = Bry_bfr.reset_(255);
} private Xoae_app app; Xowe_wiki wiki; Bry_bfr tmp_bfr = Bry_bfr_.Reset(255);
public Scrib_core Core() {return core;} private Scrib_core core;
public Process_server_mock Server() {return server;} Process_server_mock server;
public Keyval kv_(Object key, Object val) {return Keyval_.obj_(key, val);}
@@ -63,7 +63,7 @@ public class Scrib_core_fxt {
core.Proc_mgr().Set(core.Lib_mw(), func, idx);
return this;
}
public Scrib_core_fxt Expd_server_rcvd_add(String v) {expd_server_rcvd_list.Add(v); return this;} List_adp expd_server_rcvd_list = List_adp_.new_();
public Scrib_core_fxt Expd_server_rcvd_add(String v) {expd_server_rcvd_list.Add(v); return this;} List_adp expd_server_rcvd_list = List_adp_.New();
public Scrib_core_fxt Test_LoadString(String name, String text, int expd_id) {
int actl_id = core.Interpreter().LoadString(name, text).Id();
Test_server_logs();
@@ -135,7 +135,7 @@ public class Scrib_core_fxt {
core.Invoke(wiki, core.Ctx(), Bry_.Empty, Xot_invk_mock.Null, Xot_invk_mock.new_(Frame_ttl_test, args), tmp_bfr, Bry_.new_u8(mod_name), Bry_.new_u8(mod_code), Bry_.new_u8(prc_name));
Test_server_logs();
return this;
} private static final byte[] Frame_ttl_test = Bry_.new_a7("test");
} private static final byte[] Frame_ttl_test = Bry_.new_a7("test");
private void Test_server_logs() {
if (expd_server_rcvd_list.Count() > 0) {
Tfds.Eq_ary_str(expd_server_rcvd_list.To_str_ary(), server.Log_rcvd().To_str_ary());

View File

@@ -16,8 +16,8 @@ You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
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();
public class Scrib_err_filter_mgr implements Gfo_invk {
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) {
@@ -40,7 +40,7 @@ public class Scrib_err_filter_mgr implements GfoInvkAble {
itms.Add(new Scrib_err_filter_itm(count_expd, mod, fnc, err, comment));
}
public String Print() {
Bry_bfr bfr = Bry_bfr.new_(8);
Bry_bfr bfr = Bry_bfr_.New_w_size(8);
int i_len = hash_by_mod.Count();
for (int i = 0; i < i_len; ++i) {
Ordered_hash fncs = (Ordered_hash)hash_by_mod.Get_at(i);
@@ -71,24 +71,24 @@ public class Scrib_err_filter_mgr implements GfoInvkAble {
}
List_adp list_of_err = (List_adp)hash_by_fnc.Get_by(fnc);
if (list_of_err == null) {
list_of_err = List_adp_.new_();
list_of_err = List_adp_.New();
hash_by_fnc.Add(fnc, list_of_err);
}
return list_of_err;
}
public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) {
if (ctx.Match(k, Invk_add)) Add(m.ReadInt("count_expd"), m.ReadStr("mod"), m.ReadStr("fnc"), m.ReadStr("err"), m.ReadStr("comment"));
else return GfoInvkAble_.Rv_unhandled;
else return Gfo_invk_.Rv_unhandled;
return this;
} private static final String Invk_add = "add";
}
class Scrib_err_filter_itm {
public Scrib_err_filter_itm(int count_expd, String mod, String fnc, String err, String comment) {this.count_expd = count_expd; this.mod = mod; this.err = err; this.fnc = fnc; this.comment = comment;}
public String Mod() {return mod;} private final String mod;
public String Fnc() {return fnc;} private final String fnc;
public String Err() {return err;} private final String err;
public String Comment() {return comment;} private final String comment;
public int Count_expd() {return count_expd;} private final int count_expd;
public String Mod() {return mod;} private final String mod;
public String Fnc() {return fnc;} private final String fnc;
public String Err() {return err;} private final String err;
public String Comment() {return comment;} private final String comment;
public int Count_expd() {return count_expd;} private final int count_expd;
public int Count_actl() {return count_actl;} private int count_actl;
public void Count_actl_add_1() {++count_actl;}
}

View File

@@ -19,7 +19,7 @@ package gplx.xowa.xtns.scribunto; import gplx.*; import gplx.xowa.*; import gplx
import gplx.xowa.xtns.scribunto.libs.*; import gplx.xowa.xtns.scribunto.engines.process.*;
import gplx.xowa.parsers.tmpls.*;
public class Scrib_invoke_func_fxt {
private Xop_fxt fxt; Bry_bfr tmp_bfr = Bry_bfr.reset_(255); Scrib_core core; Process_server_mock server; Scrib_lua_rsp_bldr rsp_bldr = new Scrib_lua_rsp_bldr();
private Xop_fxt fxt; Bry_bfr tmp_bfr = Bry_bfr_.Reset(255); Scrib_core core; Process_server_mock server; Scrib_lua_rsp_bldr rsp_bldr = new Scrib_lua_rsp_bldr();
public Xop_fxt Parser_fxt() {return fxt;}
public Scrib_core_fxt Core_fxt() {return core_fxt;} Scrib_core_fxt core_fxt;
public Scrib_core Core() {return core;}
@@ -137,6 +137,14 @@ public class Scrib_invoke_func_fxt {
Object[] actl_ary = KeyVal_to_obj_ary(actl_kvs);
Tfds.Eq_ary(expd_ary, actl_ary);
}
public void Test_scrib_proc_err(Scrib_lib lib, String proc_name, Object[] args, String expd) {
Scrib_proc proc = lib.Procs().Get_by_key(proc_name);
Scrib_proc_rslt rslt = new Scrib_proc_rslt();
boolean exec_rslt = proc.Proc_exec(new Scrib_proc_args(Scrib_kv_utl_.base1_many_(args)), rslt);
Tfds.Eq(Bool_.N, exec_rslt);
Tfds.Eq(null, rslt.Ary());
Tfds.Eq(expd, rslt.Fail_msg());
}
private static Object[] KeyVal_to_obj_ary(Keyval[] kv_ary) {
int len = kv_ary.length;
Object[] rv = new Object[len];
@@ -147,7 +155,7 @@ public class Scrib_invoke_func_fxt {
return rv;
}
private String Kv_ary_to_kv_vals_str(Keyval[] ary) {
Bry_bfr bfr = Bry_bfr.new_();
Bry_bfr bfr = Bry_bfr_.New();
int len = ary.length;
for (int i = 0; i < len; ++i) {
if (i != 0) bfr.Add_byte(Byte_ascii.Semic);
@@ -192,7 +200,7 @@ public class Scrib_invoke_func_fxt {
public static final String Null_rslt_ary = "1=<<NULL>>";
}
class Scrib_lua_rsp_bldr {
Bry_bfr bfr = Bry_bfr.reset_(255);
Bry_bfr bfr = Bry_bfr_.Reset(255);
public String Bld_mw_cbk(String cbk_name, Keyval... ary) {
cbk_name = "mw_interface-" + cbk_name;
bfr.Add_str_a7("a:4:{s:2:\"id\";");

View File

@@ -17,7 +17,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package gplx.xowa.xtns.scribunto; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*;
public class Scrib_lib_mgr {
private List_adp list = List_adp_.new_();
private List_adp list = List_adp_.New();
public int Len() {return list.Count();}
public void Add(Scrib_lib v) {list.Add(v); v.Init();}
public Scrib_lib Get_at(int i) {return (Scrib_lib)list.Get_at(i);}

View File

@@ -37,7 +37,7 @@ public class Scrib_proc_args {
int key_int = Int_.cast(kv.Key_as_obj());
if (key_int != i + 1) { // key_int should match i; if not, then gaps exist; EX:[2:v2] should be 2nd element, not 1st
if (list == null) {
list = List_adp_.new_();
list = List_adp_.New();
rv = null;
}
for (int j = 0; j < key_int - 1; ++j) // add everything up to key_int as null; EX: [2:v2] -> [1:null]

View File

@@ -19,9 +19,9 @@ package gplx.xowa.xtns.scribunto; import gplx.*; import gplx.xowa.*; import gplx
import gplx.xowa.parsers.logs.*;
import gplx.xowa.xtns.scribunto.engines.*;
public class Scrib_xtn_mgr extends Xox_mgr_base {
@Override public byte[] Xtn_key() {return XTN_KEY;} public static final byte[] XTN_KEY = Bry_.new_a7("scribunto");
@Override public byte[] Xtn_key() {return XTN_KEY;} public static final byte[] XTN_KEY = Bry_.new_a7("scribunto");
@Override public void Xtn_ctor_by_app(Xoae_app app) {this.app = app;} private Xoae_app app;
@Override public Xox_mgr Clone_new() {return new Scrib_xtn_mgr();}
@Override public Xox_mgr Xtn_clone_new() {return new Scrib_xtn_mgr();}
public Scrib_lib_mgr Lib_mgr() {return lib_mgr;} private Scrib_lib_mgr lib_mgr = new Scrib_lib_mgr();
public byte Engine_type() {return engine_type;} private byte engine_type = Scrib_engine_type.Type_luaj;
public void Engine_type_(byte cmd) {
@@ -55,7 +55,7 @@ public class Scrib_xtn_mgr extends Xox_mgr_base {
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.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 if (ctx.Match(k, Invk_invoke_wkr)) return m.ReadYnOrY("v") ? Invoke_wkr_or_new() : Gfo_invk_.Noop;
else return super.Invk(ctx, ikey, k, m);
return this;
}

View File

@@ -26,7 +26,7 @@ public class Luaj_server_func_dbg extends VarArgFunction {
public void Core_(Scrib_core v) {this.core = v;}
public Varargs invoke(Varargs args) {
int len = args.narg();
Bry_bfr bfr = Bry_bfr.new_();
Bry_bfr bfr = Bry_bfr_.New();
bfr.Add_str_a7("<span class='xowa_dbg' style='color:red'>");
for (int i = 1; i <= len; ++i) {
String s = args.arg(i).toString();

View File

@@ -30,7 +30,7 @@ class Luaj_value_ {
return Luaj_value_.Lua_tbl_to_kv_ary(server, table);
}
public static Keyval[] Lua_tbl_to_kv_ary(Luaj_server server, LuaTable tbl) {
List_adp temp = List_adp_.new_();
List_adp temp = List_adp_.New();
LuaValue cur = LuaValue.NIL;
int len = 0;
while (true) { // iterate over pairs in tbl; no direct way to get kvs

View File

@@ -25,8 +25,8 @@ public abstract class Mock_proc_fxt {
public abstract Keyval[] Exec_by_scrib(Keyval[] args);
}
class Mock_engine implements Scrib_engine {
private final Hash_adp hash = Hash_adp_.new_();
private final Int_obj_ref tmp_hash_id = Int_obj_ref.neg1_();
private final Hash_adp hash = Hash_adp_.New();
private final Int_obj_ref tmp_hash_id = Int_obj_ref.New_neg1();
public boolean Dbg_print() {return false;} public void Dbg_print_(boolean v) {}
public Scrib_server Server() {return server;} public void Server_(Scrib_server v) {} private final Mock_server server = new Mock_server();
public Scrib_lua_proc LoadString(String name, String text) {return null;}
@@ -39,6 +39,6 @@ class Mock_engine implements Scrib_engine {
public void CleanupChunks(Keyval[] ids) {}
public void Clear() {hash.Clear();}
public void RegisterLibraryForTest(Mock_proc_fxt proc) {
hash.Add(Int_obj_ref.new_(proc.Id()), proc);
hash.Add(Int_obj_ref.New(proc.Id()), proc);
}
}

View File

@@ -79,7 +79,7 @@ class Mock_scrib_fxt_ {
return rv;
}
public static String Kvp_vals_to_str(Keyval[] ary) {
Bry_bfr bfr = Bry_bfr.new_();
Bry_bfr bfr = Bry_bfr_.New();
int len = ary.length;
for (int i = 0; i < len; ++i) {
if (i != 0) bfr.Add_byte(Byte_ascii.Semic);

View File

@@ -24,7 +24,7 @@ public class Process_recv_msg {
arg_keys.Add("values" , Byte_obj_val.new_(Arg_values));
arg_keys.Add("id" , Byte_obj_val.new_(Arg_id));
arg_keys.Add("args" , Byte_obj_val.new_(Arg_args));
} private Hash_adp arg_keys = Hash_adp_.new_(); private static final byte Arg_op = 0, Arg_values = 1, Arg_id = 2, Arg_args = 3;
} private Hash_adp arg_keys = Hash_adp_.New(); private static final byte Arg_op = 0, Arg_values = 1, Arg_id = 2, Arg_args = 3;
public String Op() {return op;} private String op;
public String Call_id() {return call_id;} private String call_id;
public Keyval[] Rslt_ary() {return rslt_ary;} private Keyval[] rslt_ary;

View File

@@ -19,7 +19,7 @@ package gplx.xowa.xtns.scribunto.engines.process; import gplx.*; import gplx.xow
public class Process_send_wtr {
public Process_send_wtr(Gfo_usr_dlg usr_dlg) {this.usr_dlg = usr_dlg;} private Gfo_usr_dlg usr_dlg;
public String Encode(Object o) {
Bry_bfr tmp_bfr = Bry_bfr.reset_(Io_mgr.Len_kb);
Bry_bfr tmp_bfr = Bry_bfr_.Reset(Io_mgr.Len_kb);
Encode_obj(tmp_bfr, o);
return tmp_bfr.To_str_and_clear();
}

View File

@@ -17,7 +17,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package gplx.xowa.xtns.scribunto.engines.process; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.scribunto.*; import gplx.xowa.xtns.scribunto.engines.*;
public class Process_server_mock implements Scrib_server {
private List_adp rsps = List_adp_.new_(); private int rsps_idx = 0;
private List_adp rsps = List_adp_.New(); private int rsps_idx = 0;
public void Init(String... process_args) {}
public int Server_timeout() {return server_timeout;} public Scrib_server Server_timeout_(int v) {server_timeout = v; return this;} private int server_timeout = 8000;
public int Server_timeout_polling() {return server_timeout_polling;} public Scrib_server Server_timeout_polling_(int v) {server_timeout_polling = v; return this;} private int server_timeout_polling = 1;
@@ -41,8 +41,8 @@ public class Process_server_mock implements Scrib_server {
public boolean Print_key() {return print_key;} public Process_server_mock Print_key_(boolean v) {print_key = v; return this;} private boolean print_key;
public void Prep_add(String v) {rsps.Add(new Process_server_mock_rcvd_str(v));}
public void Prep_add_dynamic_val() {rsps.Add(new Process_server_mock_rcvd_val(print_key));}
public List_adp Log_rcvd() {return log_rcvd;} private List_adp log_rcvd = List_adp_.new_();
public List_adp Log_sent() {return log_sent;} private List_adp log_sent = List_adp_.new_();
public List_adp Log_rcvd() {return log_rcvd;} private List_adp log_rcvd = List_adp_.New();
public List_adp Log_sent() {return log_sent;} private List_adp log_sent = List_adp_.New();
}
interface Process_server_mock_rcvd {
String Bld(Object[] cmd_obs);
@@ -54,7 +54,7 @@ class Process_server_mock_rcvd_str implements Process_server_mock_rcvd {
class Process_server_mock_rcvd_val implements Process_server_mock_rcvd {
public Process_server_mock_rcvd_val(boolean print_key) {this.print_key = print_key;} private boolean print_key;
public String Bld(Object[] cmd_objs) {
Bry_bfr tmp_bfr = Bry_bfr.new_();
Bry_bfr tmp_bfr = Bry_bfr_.New();
Bld_recursive(tmp_bfr, 0, (Keyval[])cmd_objs[5]);
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);
@@ -90,5 +90,5 @@ class Process_server_mock_rcvd_val implements Process_server_mock_rcvd {
}
}
private static final byte[] Bry_rv_bgn = Bry_.new_a7("a:3:{s:2:\"op\";s:6:\"return\";s:7:\"nvalues\";i:1;s:6:\"values\";a:1:{i:1;s:"), Bry_rv_mid = Bry_.new_a7(":\""), Bry_rv_end = Bry_.new_a7("\";}}");
private static final byte[] Bry_rv_bgn = Bry_.new_a7("a:3:{s:2:\"op\";s:6:\"return\";s:7:\"nvalues\";i:1;s:6:\"values\";a:1:{i:1;s:"), Bry_rv_mid = Bry_.new_a7(":\""), Bry_rv_end = Bry_.new_a7("\";}}");
}

View File

@@ -16,7 +16,7 @@ You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package gplx.xowa.xtns.scribunto.engines.process; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.scribunto.*; import gplx.xowa.xtns.scribunto.engines.*;
import gplx.core.ios.*; import gplx.core.encoders.*;
import gplx.core.ios.*; import gplx.core.ios.streams.*; import gplx.core.encoders.*;
public class Process_stream_rdr {
public Process_stream_rdr(byte[] bry_header, byte[] bry_body) {this.bry_header = bry_header; this.bry_body = bry_body;} private byte[] bry_header, bry_body;
public IoStream_stream_rdr Rdr() {return rdr;} IoStream_stream_rdr rdr = new IoStream_stream_rdr();

View File

@@ -17,7 +17,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package gplx.xowa.xtns.scribunto.engines.process; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.scribunto.*; import gplx.xowa.xtns.scribunto.engines.*;
import org.junit.*;
import gplx.core.ios.*;
import gplx.core.ios.*; import gplx.core.ios.streams.*;
public class Process_stream_rdr_tst {
@Before public void init() {fxt.Clear();} Scrib_lua_srl_fxt fxt = new Scrib_lua_srl_fxt();
@Test public void Body_basic() {
@@ -67,7 +67,7 @@ class Process_stream_rdr_fxt {
}
expd_str = bfr.To_str_and_clear();
return this;
} Bry_bfr bfr = Bry_bfr.reset_(128);
} Bry_bfr bfr = Bry_bfr_.Reset(128);
public void Test_read_body() {
rdr.Data_bry_(src_bry);
byte[] bry_body = new byte[src_len];

View File

@@ -16,10 +16,10 @@ You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
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 {
class Scrib_err_mgr implements Gfo_invk {
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 static final byte[] Key_prefix = Bry_.new_a7("scrib_err_");
private Scrib_err_cmd Set(byte[] key) {
if (key == null) Bry_.Add(Key_prefix, Bry_.new_by_int(key_id++));
Scrib_err_cmd rv = new Scrib_err_cmd(key);
@@ -46,7 +46,7 @@ class Scrib_err_mgr implements GfoInvkAble {
public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) {
if (ctx.Match(k, Invk_set)) return Set(m.ReadBryOr("v", null));
else if (ctx.Match(k, Invk_clear)) Clear();
else return GfoInvkAble_.Rv_unhandled;
else return Gfo_invk_.Rv_unhandled;
return this;
} private static final String Invk_set = "set", Invk_clear = "clear";
}
@@ -57,7 +57,7 @@ class Scrib_err_data {
public byte[] Err() {return err;} private byte[] err;
public byte[] Src() {return src;} private byte[] src;
}
class Scrib_err_cmd implements GfoInvkAble {
class Scrib_err_cmd implements Gfo_invk {
public Scrib_err_cmd(byte[] key) {this.key = key;}
public byte[] Key() {return key;} private byte[] key;
public int Fail_after() {return fail_after;} private int fail_after = Int_.Max_value;
@@ -78,7 +78,7 @@ class Scrib_err_cmd implements GfoInvkAble {
else if (ctx.Match(k, Invk_fail_after_)) fail_after = m.ReadInt("v");
else if (ctx.Match(k, Invk_warn_every_)) fail_after = m.ReadInt("v");
else if (ctx.Match(k, Invk_summary_ttls_len_)) summary_ttls_len = m.ReadInt("v");
else return GfoInvkAble_.Rv_unhandled;
else return Gfo_invk_.Rv_unhandled;
return this;
}
private static final String

View File

@@ -131,7 +131,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;
// byte[] trans_code = args.Get_bry_or_null(1); // TODO_OLD: FetchLanguageName("en", "fr") -> Anglais; WHEN: needs global database of languages;
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()));
}

View File

@@ -117,7 +117,7 @@ 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_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);
Gfo_invk_.Invk_by_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() {

View File

@@ -36,7 +36,7 @@ public class Scrib_lib_mw implements Scrib_lib {
if (src != null) // src exists; indicates that Invoke being called recursively; push existing src onto stack
src_stack.Add(src);
this.cur_wiki = wiki; this.ctx = ctx; this.src = new_src;
} private Xowe_wiki cur_wiki; private byte[] src; private Xop_ctx ctx; private List_adp src_stack = List_adp_.new_();
} private Xowe_wiki cur_wiki; private byte[] src; private Xop_ctx ctx; private List_adp src_stack = List_adp_.New();
public void Invoke_end() {
if (src_stack.Count() > 0) // src_stack item exists; pop
src = (byte[])List_adp_.Pop(src_stack);
@@ -97,7 +97,7 @@ public class Scrib_lib_mw implements Scrib_lib {
return rslt.Init_obj(core.Interpreter().LoadString("@" + mod_name + ".lua", mod_code));
Xoa_ttl ttl = Xoa_ttl.parse(cur_wiki, Bry_.new_u8(mod_name));// NOTE: should have Module: prefix
if (ttl == null) return rslt.Init_ary_empty();
Xoae_page page = cur_wiki.Data_mgr().Get_page(ttl, false);
Xoae_page page = cur_wiki.Data_mgr().Load_page_by_ttl(ttl);
if (page.Missing()) return rslt.Init_ary_empty();
Scrib_lua_mod mod = new Scrib_lua_mod(core, mod_name);
return rslt.Init_obj(mod.LoadString(String_.new_u8(page.Data_raw())));
@@ -111,7 +111,7 @@ public class Scrib_lib_mw implements Scrib_lib {
int frame_arg_adj = Scrib_frame_.Get_arg_adj(frame.Frame_tid());
String idx_str = args.Pull_str(1);
int idx_int = Int_.parse_or(idx_str, Int_.Min_value); // NOTE: should not receive int value < -1; idx >= 0
Bry_bfr tmp_bfr = Bry_bfr.new_(); // NOTE: do not make modular level variable, else random failures; DATE:2013-10-14
Bry_bfr tmp_bfr = Bry_bfr_.New(); // NOTE: do not make modular level variable, else random failures; DATE:2013-10-14
if (idx_int != Int_.Min_value) { // idx is integer
Arg_nde_tkn nde = Get_arg(frame, idx_int, frame_arg_adj);
//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"
@@ -166,7 +166,7 @@ public class Scrib_lib_mw implements Scrib_lib {
int args_len = frame.Args_len() - frame_arg_adj;
if (args_len < 1) return rslt.Init_obj(Keyval_.Ary_empty); // occurs when "frame:getParent().args" but no parent frame
Bry_bfr tmp_bfr = ctx.Wiki().Utl__bfr_mkr().Get_b128(); // NOTE: do not make modular level variable, else random failures; DATE:2013-10-14
List_adp rv = List_adp_.new_();
List_adp rv = List_adp_.New();
int arg_idx = 0;
for (int i = 0; i < args_len; i++) {
Arg_nde_tkn nde = frame.Args_get_by_idx(i + frame_arg_adj);
@@ -265,7 +265,7 @@ public class Scrib_lib_mw implements Scrib_lib {
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_();
List_adp rv = List_adp_.New();
// flatten args
int args_len = args.length;
for (int i = 2; i < args_len; i++) {
@@ -323,9 +323,7 @@ public class Scrib_lib_mw implements Scrib_lib {
return rslt.Init_obj(sub_bfr.To_str_and_rls());
}
else {
// String err_msg = "expand_template failed; ttl=" + ttl_str;
// cur_wiki.App().Usr_dlg().Warn_many("", "", err_msg);
return rslt.Init_ary_empty();
return rslt.Init_fail("expandTemplate: template \"" + ttl_str + "\" does not exist"); // NOTE: must return error if template is missing; PAGE:en.w:Flag_of_Greenland DATE:2016-05-02
}
// BLOCK.end:Xot_invk_tkn.Transclude
}

View File

@@ -80,10 +80,14 @@ public class Scrib_lib_mw__lib_tst {
@Test public void NewChildFrame() {
fxt.Test_scrib_proc_str(lib, Scrib_lib_mw.Invk_newChildFrame, Object_.Ary("current", "Page_0", Scrib_kv_utl_.flat_many_("key1", "val1")), "frame0");
}
@Test public void ExpandTemplate__null_arg() {
@Test public void ExpandTemplate__null_arg() { // PURPOSE: auto-fill in arg "1" b/c "2" is specified; PAGE:en.w:Category:Nouns_by_language DATE:2016-04-29
fxt.Init_page("{{#invoke:Mod_0|Prc_0}}");
fxt.Parser_fxt().Data_create("Template:A", "b{{{1}}}c");
fxt.Test_scrib_proc_str(lib, Scrib_lib_mw.Invk_expandTemplate, Object_.Ary("current", "A", Scrib_kv_utl_.flat_many_(2, "v2")), "bc"); // list: args is ary
fxt.Test_scrib_proc_str(lib, Scrib_lib_mw.Invk_expandTemplate, Object_.Ary("current", "A", Scrib_kv_utl_.flat_many_(2, "x")), "bc"); // fails if "bxc"; note that "2" is passed, but should not be read as "1"
}
@Test public void ExpandTemplate__missing_template() {// PURPOSE: return error if template is missing; PAGE:en.w:Flag_of_Greenland DATE:2016-05-02
fxt.Init_page("{{#invoke:Mod_0|Prc_0}}");
fxt.Test_scrib_proc_err(lib, Scrib_lib_mw.Invk_expandTemplate, Object_.Ary("current", "A", Scrib_kv_utl_.flat_many_(1, "a")), "expandTemplate: template \"A\" does not exist");
}
@Test public void SetTTL() {
fxt.Test_scrib_proc_empty(lib, Scrib_lib_mw.Invk_setTTL, Object_.Ary(123));

View File

@@ -17,7 +17,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
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.langs.msgs.*;
import gplx.xowa.wikis.nss.*; import gplx.xowa.addons.apps.ctgs.*;
import gplx.xowa.wikis.nss.*; import gplx.xowa.addons.wikis.ctgs.*;
import gplx.xowa.wikis.metas.*; import gplx.xowa.wikis.data.site_stats.*; import gplx.xowa.wikis.xwikis.*;
public class Scrib_lib_site implements Scrib_lib {
public Scrib_lib_site(Scrib_core core) {this.core = core;} private final Scrib_core core;
@@ -86,7 +86,7 @@ public class Scrib_lib_site implements Scrib_lib {
int ns_count = ns == null ? 0 : ns.Count();
return rslt.Init_obj(ns_count);
}
public boolean UsersInGroup(Scrib_proc_args args, Scrib_proc_rslt rslt) { // TODO.9: get user_groups table
public boolean UsersInGroup(Scrib_proc_args args, Scrib_proc_rslt rslt) { // TODO_OLD.9: get user_groups table
// byte[] grp_name = args.Pull_bry(0);
return rslt.Init_obj(0);
}
@@ -105,7 +105,7 @@ public class Scrib_lib_site implements Scrib_lib {
if (rv == null) {
Xow_xwiki_mgr xwiki_mgr = core.Wiki().Xwiki_mgr();
int xwiki_len = xwiki_mgr.Len();
List_adp list = List_adp_.new_();
List_adp list = List_adp_.New();
for (int i = 0; i < xwiki_len; ++i) {
Xow_xwiki_itm itm = xwiki_mgr.Get_at(i);
boolean itm_is_local = itm.Offline();

View File

@@ -36,7 +36,7 @@ public class Scrib_lib_site_tst {
fxt.Test__proc__ints(lib, Scrib_lib_site.Invk_pagesInCategory, Object_.Ary("A|"), 0);
}
@Test public void PagesInCategory__exists() {
gplx.xowa.addons.apps.ctgs.Xoax_ctg_addon.Get(fxt.Core().Wiki()).Itms__add(Bry_.new_a7("A"), 3, 2, 1);
gplx.xowa.addons.wikis.ctgs.Xoax_ctg_addon.Get(fxt.Core().Wiki()).Itms__add(Bry_.new_a7("A"), 3, 2, 1);
fxt.Test__proc__ints(lib, Scrib_lib_site.Invk_pagesInCategory, Object_.Ary("A", "pages") , 3);
fxt.Test__proc__ints(lib, Scrib_lib_site.Invk_pagesInCategory, Object_.Ary("A", "subcats") , 2);
fxt.Test__proc__ints(lib, Scrib_lib_site.Invk_pagesInCategory, Object_.Ary("A", "files") , 1);

View File

@@ -22,7 +22,7 @@ class Scrib_lib_text_ {
Bry_bfr bfr = wiki.Utl__bfr_mkr().Get_b128();
Ordered_hash protocols = Gfo_protocol_itm.Regy;
int len = protocols.Count();
List_adp rv = List_adp_.new_();
List_adp rv = List_adp_.New();
for (int i = 0; i < len; i++) {
Gfo_protocol_itm itm = (Gfo_protocol_itm)protocols.Get_at(i);
if (itm.Text_ends_w_colon()) { // To convert the protocol into a case-insensitive Lua pattern, we need to replace letters with a character class like [Xx] and insert a '%' before various punctuation.
@@ -63,5 +63,5 @@ class Scrib_lib_text_ {
}
bfr.Add(Colon_encoded);
return Keyval_.new_(itm.Key_wo_colon_str(), bfr.To_str_and_clear());
} private static final byte[] Colon_encoded = Bry_.new_a7("&#58;");
} private static final byte[] Colon_encoded = Bry_.new_a7("&#58;");
}

View File

@@ -20,7 +20,7 @@ import gplx.core.primitives.*;
class Scrib_lib_text_html_entities {
public static Keyval[] new_() {
Keyval[] rv = new Keyval[1510];
Int_obj_ref idx = Int_obj_ref.zero_();
Int_obj_ref idx = Int_obj_ref.New_zero();
new_itm_(rv, idx, Bry_.New_by_ints(9), "&Tab;");
new_itm_(rv, idx, Bry_.New_by_ints(10), "&NewLine;");
new_itm_(rv, idx, Bry_.New_by_ints(33), "&excl;");

View File

@@ -132,7 +132,7 @@ public class Scrib_lib_title implements Scrib_lib {
byte[] ttl_bry = args.Pull_bry(0);
Xoa_ttl ttl = Xoa_ttl.parse(core.Wiki(), ttl_bry);
if (ttl == Xoa_ttl.Null) return rslt.Init_null();
// TODO: MW does extra logic here to cache ttl in ttl cache to avoid extra title lookups
// TODO_OLD: MW does extra logic here to cache ttl in ttl cache to avoid extra title lookups
boolean ttl_exists = false, ttl_redirect = false; int ttl_id = 0;
synchronized (tmp_db_page) {
ttl_exists = core.Wiki().Db_mgr().Load_mgr().Load_by_ttl(tmp_db_page, ttl.Ns(), ttl.Page_db());
@@ -145,7 +145,7 @@ public class Scrib_lib_title implements Scrib_lib {
rv[ 0] = Keyval_.new_("isRedirect" , ttl_redirect); // title.isRedirect
rv[ 1] = Keyval_.new_("id" , ttl_id); // $title->getArticleID(),
rv[ 2] = Keyval_.new_("contentModel" , Key_wikitext); // $title->getContentModel(); see Defines.php and CONTENT_MODEL_
rv[ 3] = Keyval_.new_("exists" , ttl_exists); // $ret['id'] > 0; TODO: if Special: check regy of implemented pages
rv[ 3] = Keyval_.new_("exists" , ttl_exists); // $ret['id'] > 0; TODO_OLD: if Special: check regy of implemented pages
return rslt.Init_obj(rv);
}
public boolean GetFileInfo(Scrib_proc_args args, Scrib_proc_rslt rslt) {
@@ -167,7 +167,7 @@ public class Scrib_lib_title implements Scrib_lib {
( Keyval_.new_("exists" , true)
, Keyval_.new_("width" , itm.W())
, Keyval_.new_("height" , itm.H())
, Keyval_.new_("pages" , null) // TODO: get pages info
, Keyval_.new_("pages" , null) // TODO_OLD: get pages info
);
return rslt.Init_obj(rv);
}
@@ -176,7 +176,7 @@ public class Scrib_lib_title implements Scrib_lib {
byte[] ttl_bry = args.Pull_bry(0);
Xowe_wiki wiki = core.Wiki();
Xoa_ttl ttl = Xoa_ttl.parse(wiki, ttl_bry); if (ttl == null) return rslt.Init_obj(null);
Xow_page_cache_itm page_itm = wiki.Cache_mgr().Page_cache().Get_or_load_as_itm(ttl);
Xow_page_cache_itm page_itm = wiki.Cache_mgr().Page_cache().Get_or_load_as_itm_2(ttl);
byte[] rv = null;
if (page_itm != null) {
byte[] redirected_src = page_itm.Wtxt__redirect();
@@ -222,7 +222,7 @@ public class Scrib_lib_title implements Scrib_lib {
rv[ 5] = Keyval_.new_("fragment" , ttl.Anch_txt()); // $title->getFragment(),
rv[ 6] = Keyval_.new_("thePartialUrl" , ttl.Page_db()); // $title->getPartialUrl(),
if (ns_special)
rv[rv_idx++] = Keyval_.new_("exists" , false); // TODO: lookup specials
rv[rv_idx++] = Keyval_.new_("exists" , false); // TODO_OLD: lookup specials
if (!ns_file_or_media)
rv[rv_idx++] = Keyval_.new_("file" , false); // REF.MW: if ( $ns !== NS_FILE && $ns !== NS_MEDIA ) $ret['file'] = false;
return rv;

View File

@@ -42,7 +42,7 @@ public class Scrib_lib_title_tst {
fxt.Test__proc__objs__flat(lib, Scrib_lib_title.Invk_getUrl, Object_.Ary("Main_Page", "fullUrl", "action=edit") , "//en.wikipedia.org/wiki/Main_Page?action=edit");
fxt.Test__proc__objs__flat(lib, Scrib_lib_title.Invk_getUrl, Object_.Ary("Main_Page", "localUrl") , "/wiki/Main_Page");
fxt.Test__proc__objs__flat(lib, Scrib_lib_title.Invk_getUrl, Object_.Ary("Main_Page", "canonicalUrl") , "https://en.wikipedia.org/wiki/Main_Page");
// fxt.Test_scrib_proc_str(lib, Scrib_lib_title.Invk_getUrl, Object_.Ary("Main_Page", "fullUrl", "", "http") , "http://en.wikipedia.org/wiki/Main_Page"); // TODO
// fxt.Test_scrib_proc_str(lib, Scrib_lib_title.Invk_getUrl, Object_.Ary("Main_Page", "fullUrl", "", "http") , "http://en.wikipedia.org/wiki/Main_Page"); // TODO_OLD
}
@Test public void GetUrl__args_many() { // PUPROSE: GetUrl sometimes passes in kvs for qry_args; fr.w:Wikip<69>dia:Image_du_jour/Date; DATE:2013-12-24
fxt.Test__proc__objs__flat(lib, Scrib_lib_title.Invk_getUrl, Object_.Ary("Main_Page", "canonicalUrl", Keyval_.Ary(Keyval_.new_("action", "edit"), Keyval_.new_("preload", "b"))), "https://en.wikipedia.org/wiki/Main_Page?action=edit&preload=b");
@@ -95,6 +95,10 @@ public class Scrib_lib_title_tst {
fxt.Parser_fxt().Init_page_create("B", "C");
fxt.Test__proc__objs__flat(lib, Scrib_lib_title.Invk_getContent, Object_.Ary("A") , "#REDIRECT [[B]]"); // should not be "C"
}
@Test public void GetContent__redirect_missing() {// PURPOSE: // page redirects to missing page; note that page.Missing == true and page.Redirected_src() != null; PAGE: en.w:Shah_Rukh_Khan; DATE:2016-05-02
fxt.Parser_fxt().Init_page_create("A", "#REDIRECT [[B]]");
fxt.Test__proc__objs__flat(lib, Scrib_lib_title.Invk_getContent, Object_.Ary("A") , "#REDIRECT [[B]]"); // fails with null
}
@Test public void ProtectionLevels() {
fxt.Test__proc__objs__flat(lib, Scrib_lib_title.Invk_protectionLevels, Object_.Ary("A") , "");
}
@@ -103,7 +107,7 @@ public class Scrib_lib_title_tst {
}
private static void Wiki_orig_tbl__create(Xowe_wiki wiki) {
Xowe_wiki_.Create(wiki, 1, "dump.xml");
gplx.xowa.wikis.data.Xowd_db_file text_db = wiki.Data__core_mgr().Dbs__make_by_tid(gplx.xowa.wikis.data.Xowd_db_file_.Tid_text); text_db.Tbl__text().Create_tbl();
gplx.xowa.wikis.data.Xow_db_file text_db = wiki.Data__core_mgr().Dbs__make_by_tid(gplx.xowa.wikis.data.Xow_db_file_.Tid__text); text_db.Tbl__text().Create_tbl();
gplx.fsdb.Fsdb_db_mgr__v2_bldr.Get_or_make(wiki, Bool_.Y);
wiki.File_mgr().Init_file_mgr_by_load(wiki);
}

View File

@@ -74,7 +74,7 @@ public class Scrib_lib_ustring implements Scrib_lib {
Regx_match[] regx_rslts = regx_adp.Match_all(text_str, bgn_codepoint_idx); // NOTE: MW calculates an offset to handle mb strings. however, java's regex always takes offset in chars (not bytes like PHP preg_match); DATE:2014-03-04
int len = regx_rslts.length;
if (len == 0) return rslt.Init_ary_empty();
List_adp tmp_list = List_adp_.new_();
List_adp tmp_list = List_adp_.New();
Regx_match match = regx_rslts[0]; // NOTE: take only 1st result; DATE:2014-08-27
int match_find_bgn_codepoint = match.Find_bgn(); // NOTE: java regex returns results in codepoint; PAGE:zh.w:南北鐵路 (越南) DATE:2014-08-27
int match_find_bgn_adj = -surrogate_utl.Count_surrogates__codepoint_idx1(text_bry, text_bry_len, bgn_byte_pos, match_find_bgn_codepoint - bgn_codepoint_idx); // NOTE: convert from java regex codepoint to lua / php char_idx; PAGE:zh.w:南北鐵路 (越南) DATE:2014-08-27
@@ -105,7 +105,7 @@ public class Scrib_lib_ustring implements Scrib_lib {
Regx_match[] regx_rslts = regx_adp.Match_all(text, bgn);
int len = regx_rslts.length;
if (len == 0) return rslt.Init_null(); // return null if no matches found; EX:w:Mount_Gambier_(volcano); DATE:2014-04-02; confirmed with en.d:民; DATE:2015-01-30
List_adp tmp_list = List_adp_.new_();
List_adp tmp_list = List_adp_.New();
for (int i = 0; i < len; i++) {
Regx_match match = regx_rslts[i];
AddCapturesFromMatch(tmp_list, match, text, regx_converter.Capt_ary(), true);
@@ -152,7 +152,7 @@ public class Scrib_lib_ustring implements Scrib_lib {
int len = regx_rslts.length;
if (len == 0) return rslt.Init_many_objs(pos, Keyval_.Ary_empty);
Regx_match match = regx_rslts[0]; // NOTE: take only 1st result
List_adp tmp_list = List_adp_.new_();
List_adp tmp_list = List_adp_.New();
AddCapturesFromMatch(tmp_list, match, text, capt, true); // NOTE: was incorrectly set as false; DATE:2014-04-23
return rslt.Init_many_objs(match.Find_end(), Scrib_kv_utl_.base1_list_(tmp_list));
}
@@ -219,7 +219,7 @@ class Scrib_lib_ustring_gsub_mgr {
tmp_repl_tid = Repl_tid_table;
Keyval[] repl_tbl = (Keyval[])repl_obj;
if (repl_hash == null)
repl_hash = Hash_adp_.new_();
repl_hash = Hash_adp_.New();
else
repl_hash.Clear();
int repl_tbl_len = repl_tbl.length;
@@ -245,7 +245,7 @@ class Scrib_lib_ustring_gsub_mgr {
if ( rslts.length == 0 // PHP: If matches are found, the new subject will be returned, otherwise subject will be returned unchanged.; http://php.net/manual/en/function.preg-replace-callback.php
|| regx_mgr.Pattern_is_invalid() // NOTE: invalid patterns should return self; EX:[^]; DATE:2014-09-02
) return text;
Bry_bfr tmp_bfr = Bry_bfr.new_();
Bry_bfr tmp_bfr = Bry_bfr_.New();
int len = rslts.length;
int pos = 0;
for (int i = 0; i < len; i++) {
@@ -282,7 +282,7 @@ class Scrib_lib_ustring_gsub_mgr {
tmp_bfr.Add_str_u8(String_.Mid(text, match.Find_bgn(), match.Find_end()));
else { // NOTE: > 0 means get from groups if it exists; REF.MW:elseif (isset($m["m$x"])) return $m["m$x"]; PAGE:Wikipedia:Wikipedia_Signpost/Templates/Voter/testcases; DATE:2015-08-02
idx -= List_adp_.Base1;
if (idx < match.Groups().length) { // retrieve numbered capture; TODO: support more than 9 captures
if (idx < match.Groups().length) { // retrieve numbered capture; TODO_OLD: support more than 9 captures
Regx_group grp = match.Groups()[idx];
tmp_bfr.Add_str_u8(String_.Mid(text, grp.Bgn(), grp.End())); // NOTE: grp.Bgn() / .End() is for String pos (bry pos will fail for utf8 strings)
}

View File

@@ -48,7 +48,7 @@ public class Scrib_lib_ustring__gsub__tst {
Exec_gsub("a%b%c", "%%(%w+)%%" , -1, Scrib_kv_utl_.flat_many_("b", "B") , "aBc;1");
}
@Test public void Replace__proc__recursive() { // PURPOSE:handle recursive gsub calls; PAGE:en.d:כלב; DATE:2016-01-22
Bry_bfr bfr = Bry_bfr.new_();
Bry_bfr bfr = Bry_bfr_.New();
Mock_proc__recursive proc_lvl2 = new Mock_proc__recursive(fxt, lib, bfr, 2, null);
Mock_proc__recursive proc_lvl1 = new Mock_proc__recursive(fxt, lib, bfr, 1, proc_lvl2);
Mock_proc__recursive proc_root = new Mock_proc__recursive(fxt, lib, bfr, 0, proc_lvl1);

View File

@@ -20,7 +20,7 @@ import gplx.xowa.xtns.wdatas.*; import gplx.xowa.xtns.wdatas.core.*; import gplx
class Scrib_lib_wikibase_srl {
public static Keyval[] Srl(Wdata_doc wdoc, boolean header_enabled, boolean legacy_style) {// REF.MW:/Wikibase/lib/includes/serializers/EntitySerializer.php!getSerialized; http://www.mediawiki.org/wiki/Extension:Wikibase_Client/Lua
int base_adj = legacy_style ? 0 : 1;
List_adp rv = List_adp_.new_();
List_adp rv = List_adp_.New();
if (header_enabled) {
rv.Add(Keyval_.new_("id", wdoc.Qid()));
rv.Add(Keyval_.new_("type", Wdata_dict_value_entity_tid.Str_item));
@@ -112,7 +112,7 @@ class Scrib_lib_wikibase_srl {
return rv;
}
private static Keyval[] Srl_claims_prop_itm(String pid, Wdata_claim_itm_core itm, int base_adj) {
List_adp list = List_adp_.new_();
List_adp list = List_adp_.New();
list.Add(Keyval_.new_("id", pid));
list.Add(Keyval_.new_("mainsnak", Srl_claims_prop_itm_core(pid, itm)));
list.Add(Keyval_.new_(Wdata_dict_claim_v1.Str_rank, Wdata_dict_rank.Xto_str(itm.Rank_tid())));
@@ -123,8 +123,8 @@ class Scrib_lib_wikibase_srl {
private static Keyval[] Srl_qualifiers(Wdata_claim_grp_list list, int base_adj) {
if (list == null) return null;
int list_len = list.Len(); if (list_len == 0) return Keyval_.Ary_empty;
List_adp rv = List_adp_.new_();
List_adp pid_list = List_adp_.new_();
List_adp rv = List_adp_.New();
List_adp pid_list = List_adp_.New();
for (int i = 0; i < list_len; ++i) {
Wdata_claim_grp grp = list.Get_at(i);
int grp_len = grp.Len();
@@ -149,17 +149,17 @@ class Scrib_lib_wikibase_srl {
rv[2 + snak_is_valued_adj] = Keyval_.new_("datatype", Wdata_dict_val_tid.To_str__srl(itm.Val_tid())); // NOTE: datatype needed for Modules; PAGE:eo.w:WikidataKoord; DATE:2015-11-08
return rv;
}
private static final Scrib_lib_wikibase_srl_visitor visitor = new Scrib_lib_wikibase_srl_visitor();
private static final Scrib_lib_wikibase_srl_visitor visitor = new Scrib_lib_wikibase_srl_visitor();
private static Keyval[] Srl_claims_prop_itm_core_val(Wdata_claim_itm_core itm) {
switch (itm.Snak_tid()) {
case Wdata_dict_snak_tid.Tid_somevalue: return Datavalue_somevalue;
case Wdata_dict_snak_tid.Tid_novalue: return Datavalue_novalue; // TODO: throw exc
case Wdata_dict_snak_tid.Tid_novalue: return Datavalue_novalue; // TODO_OLD: throw exc
default:
itm.Welcome(visitor);
return visitor.Rv();
}
}
public static final String Key_type = "type", Key_value = "value";
private static final Keyval[] Datavalue_somevalue = Keyval_.Ary_empty; // changed to not return value-node; PAGE:it.s:Autore:Anonimo DATE:2015-12-06 // new Keyval[] {Keyval_.new_(Key_type, ""), Keyval_.new_(Key_value, "")}; // NOTE: must return ""; null fails; EX:w:Joseph-François_Malgaigne; DATE:2014-04-07
private static final Keyval[] Datavalue_novalue = Keyval_.Ary_empty;
private static final Keyval[] Datavalue_somevalue = Keyval_.Ary_empty; // changed to not return value-node; PAGE:it.s:Autore:Anonimo DATE:2015-12-06 // new Keyval[] {Keyval_.new_(Key_type, ""), Keyval_.new_(Key_value, "")}; // NOTE: must return ""; null fails; EX:w:Joseph-François_Malgaigne; DATE:2014-04-07
private static final Keyval[] Datavalue_novalue = Keyval_.Ary_empty;
}

View File

@@ -402,7 +402,7 @@ class Scrib_lib_wikibase_srl_fxt {
return this;
}
private String Xto_str(Keyval[] ary) {
Bry_bfr bfr = Bry_bfr.new_();
Bry_bfr bfr = Bry_bfr_.New();
Xto_str(bfr, ary, 0);
return bfr.To_str_and_clear();
}

View File

@@ -19,7 +19,7 @@ package gplx.xowa.xtns.scribunto.libs; import gplx.*; import gplx.xowa.*; import
import gplx.core.brys.fmtrs.*;
import gplx.langs.regxs.*;
public class Scrib_regx_converter {
private List_adp capt_list = List_adp_.new_(), grps_parens = List_adp_.new_(); private List_adp grps_open = List_adp_.new_();
private List_adp capt_list = List_adp_.New(), grps_parens = List_adp_.New(); private List_adp grps_open = List_adp_.New();
public Scrib_regx_converter() {Init();}
public String Regx() {return regx;} private String regx;
public List_adp Capt_list() {return capt_list;}
@@ -57,7 +57,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_.To_str(i));
List_adp_.DelAt_last(grps_open);
List_adp_.Del_at_last(grps_open);
bfr.Add_byte(Byte_ascii.Paren_end);
break;
case Byte_ascii.Percent:
@@ -87,7 +87,7 @@ public class Scrib_regx_converter {
else { // diff char: harder regex; REF.MW: $bfr .= "(?<b$bct>$d1(?:(?>[^$d1$d2]+)|(?P>b$bct))*$d2)";
if (fmtr_balanced == null) {
fmtr_balanced = Bry_fmtr.new_("(?<b~{0}>\\~{1}(?:(?>[^\\~{1}\\~{2}]*)|\\~{1}[^\\~{1}\\~{2}]*\\~{2})*\\~{2})", "0", "1", "2"); // NOTE: complicated regex; represents 3 level depth of balanced parens; 4+ won't work; EX:(3(2(1)2)3) PAGE:en.w:Electricity_sector_in_Switzerland DATE:2015-01-23
bfr_balanced = Bry_bfr.reset_(255);
bfr_balanced = Bry_bfr_.Reset(255);
}
synchronized (fmtr_balanced) {
++bct;
@@ -160,7 +160,7 @@ public class Scrib_regx_converter {
// 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.To_str_and_clear();
return regx;
} private Bry_bfr bfr = Bry_bfr.new_();
} private Bry_bfr bfr = Bry_bfr_.New();
private int bracketedCharSetToRegex(Bry_bfr bfr, byte[] src, int i, int len) {
bfr.Add_byte(Byte_ascii.Brack_bgn);
++i;
@@ -250,13 +250,13 @@ public class Scrib_regx_converter {
return false;
}
}
private static final byte[] Bry_pow_escaped = Bry_.new_a7("\\^")
private static final byte[] Bry_pow_escaped = Bry_.new_a7("\\^")
, Bry_dollar_literal = Bry_.new_a7("$"), Bry_dollar_escaped = Bry_.new_a7("\\$")
, Bry_bf0_seg_0 = Bry_.new_a7("{"), Bry_bf0_seg_1 = Bry_.new_a7("}[^"), Bry_bf0_seg_2 = Bry_.new_a7("]*")
, Bry_bf2_seg_0 = Bry_.new_a7("\\")//, Bry_bf2_seg_1 = Bry_.new_a7("")
, Bry_regx_dash = Bry_.new_a7("*?") // was *?
;
public static final byte[] Anchor_null = null, Anchor_G = Bry_.new_a7("\\G"), Anchor_pow = Bry_.new_a7("^");
public static final byte[] Anchor_null = null, Anchor_G = Bry_.new_a7("\\G"), Anchor_pow = Bry_.new_a7("^");
private void Init() {
String regx_w = "\\w"; // JRE.7: \w not support in JRE.6; PAGE:en.w:A♯_(musical_note) DATE:2015-06-10
String regx_W = "\\W"; // JRE.7: \w not support in JRE.6; PAGE:en.w:A♯_(musical_note) DATE:2015-06-10
@@ -297,5 +297,5 @@ public class Scrib_regx_converter {
brack_hash.Add_if_dupe_use_nth(lua_bry, php_bry); // replace percent_hash definitions
}
}
private final Hash_adp_bry percent_hash = Hash_adp_bry.cs(), brack_hash = Hash_adp_bry.cs();
private final Hash_adp_bry percent_hash = Hash_adp_bry.cs(), brack_hash = Hash_adp_bry.cs();
}

View File

@@ -19,7 +19,7 @@ package gplx.xowa.xtns.scribunto.libs; import gplx.*; import gplx.xowa.*; import
import org.junit.*;
public class Xow_wiki_tst {
@Before public void init() {fxt.Clear();} private Xow_wiki_fxt fxt = new Xow_wiki_fxt();
@Test public void Load_page_by_ttl() { // PURPOSE.fix: unknown page causes null reference error in scribunto; DATE:2013-08-27
@Test public void Load_page_and_parse() { // PURPOSE.fix: unknown page causes null reference error in scribunto; DATE:2013-08-27
Scrib_core.Core_new_(fxt.Fxt().App(), fxt.Fxt().Ctx());
fxt.Test_getPageByTtl("Does_not_exist", null);
}
@@ -34,7 +34,7 @@ class Xow_wiki_fxt {
byte[] ttl_bry = Bry_.new_a7(ttl_str);
Xoa_url url = Xoa_url.new_(wiki.Domain_bry(), ttl_bry);
Xoa_ttl ttl = Xoa_ttl.parse(wiki, ttl_bry);
Xoae_page actl = fxt.Wiki().Data_mgr().Load_page_by_ttl(url, ttl);
Xoae_page actl = fxt.Wiki().Data_mgr().Load_page_and_parse(url, ttl);
if (expd == null) Tfds.Eq_true(actl.Missing());
else Tfds.Eq(expd, String_.new_u8(actl.Ttl().Raw()));
}