mirror of
https://github.com/gnosygnu/xowa.git
synced 2026-03-02 03:49:30 +00:00
v2.10.3.1
This commit is contained in:
@@ -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
|
||||
}
|
||||
|
||||
@@ -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;}
|
||||
|
||||
@@ -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_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);
|
||||
|
||||
@@ -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];
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -17,9 +17,9 @@ 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.*;
|
||||
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 {
|
||||
|
||||
@@ -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();
|
||||
|
||||
@@ -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_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;
|
||||
|
||||
@@ -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_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);}
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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("</span><br/>");
|
||||
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();
|
||||
|
||||
@@ -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")) {
|
||||
|
||||
@@ -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);}
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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() {
|
||||
|
||||
@@ -17,7 +17,7 @@ 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 {
|
||||
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) {
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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 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() {
|
||||
|
||||
@@ -17,8 +17,8 @@ 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.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();
|
||||
}
|
||||
|
||||
@@ -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);}
|
||||
|
||||
@@ -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.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() {}
|
||||
}
|
||||
|
||||
@@ -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.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;
|
||||
|
||||
@@ -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.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();
|
||||
|
||||
@@ -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(":");
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -17,10 +17,10 @@ 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.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;
|
||||
|
||||
@@ -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=<<NULL>>"
|
||||
);
|
||||
}
|
||||
|
||||
@@ -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.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());
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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) {
|
||||
|
||||
Reference in New Issue
Block a user