1
0
mirror of https://github.com/gnosygnu/xowa.git synced 2024-09-28 14:30:51 +00:00

Scribunto: Trim whitespace for keys

This commit is contained in:
gnosygnu 2017-10-23 08:18:23 -04:00
parent 3157551d1d
commit ecc27daec8
2 changed files with 9 additions and 4 deletions

View File

@ -142,15 +142,16 @@ public class Scrib_lib_mw implements Scrib_lib {
return null; // return null since index does not exist; EX: args[2] when {{#invoke:mod|test|3=abc}} PAGE:en.w:Sainte-Catherine,_Quebec DATE:2017-09-16
}
private static boolean Verify_arg_key(byte[] src, int idx, Arg_nde_tkn nde) {
// NOTE: key must trim ws; EX: "1 =val_1"; PAGE:c:File:Torsåker_kyrka01.JPG; DATE:2017-10-23
int key_int = Bry_find_.Not_found;
byte[] key_dat_ary = nde.Key_tkn().Dat_ary();
if (Env_.Mode_testing() && src == null) // some tests will always pass a null src;
key_int = Bry_.To_int_or(key_dat_ary, 0, key_dat_ary.length, Bry_find_.Not_found);
key_int = Bry_.To_int_or__trim_ws(key_dat_ary, 0, key_dat_ary.length, Bry_find_.Not_found);
else {
if (Bry_.Len_eq_0(key_dat_ary)) // should be called by current context;
key_int = Bry_.To_int_or(src, nde.Key_tkn().Src_bgn(), nde.Key_tkn().Src_end(), Bry_find_.Not_found);
key_int = Bry_.To_int_or__trim_ws(src, nde.Key_tkn().Src_bgn(), nde.Key_tkn().Src_end(), Bry_find_.Not_found);
else // will be called by parent context; note that this calls Xot_defn_tmpl_.Make_itm which sets a key_dat_ary; DATE:2013-09-23
key_int = Bry_.To_int_or(key_dat_ary, 0, key_dat_ary.length, Bry_find_.Not_found);
key_int = Bry_.To_int_or__trim_ws(key_dat_ary, 0, key_dat_ary.length, Bry_find_.Not_found);
}
if (key_int == Bry_find_.Not_found) // key is not-numeric
return false;

View File

@ -28,7 +28,7 @@ public class Scrib_lib_mw__lib_tst {
@Test public void ParentFrameExists_false() {
fxt.Test_scrib_proc_bool(lib, Scrib_lib_mw.Invk_parentFrameExists, Object_.Ary_empty, false);
}
@Test public void FrameExists_false() { // no args should not throw error; PAGE:fr.u:Projet:Laboratoire/Espaces_de_noms/Mod<EFBFBD>le/Liste_des_pages DATE:2017-05-28
@Test public void FrameExists_false() { // no args should not throw error; PAGE:fr.u:Projet:Laboratoire/Espaces_de_noms/Modèle/Liste_des_pages DATE:2017-05-28
fxt.Test_scrib_proc_bool(lib, Scrib_lib_mw.Invk_frameExists, Object_.Ary_empty, false);
}
@Test public void GetAllExpandedArguments() {
@ -66,6 +66,10 @@ public class Scrib_lib_mw__lib_tst {
fxt.Test_scrib_proc_str(lib, Scrib_lib_mw.Invk_getExpandedArgument, Object_.Ary("parent", "1"), null); // PAGE:en.w:Sainte-Catherine,_Quebec; DATE:2017-09-16
fxt.Test_scrib_proc_str(lib, Scrib_lib_mw.Invk_getExpandedArgument, Object_.Ary("parent", "2"), "a1"); // get 1st by idx, even though idx is String
}
@Test public void GetExpandedArgument_ws() { // PURPOSE: key must trim ws; EX: "1 =val_1"; PAGE:c:File:Torsåker_kyrka01.JPG; DATE:2017-10-23
fxt.Init_frame_current(Keyval_.new_(" 1 ", "val_1"));
fxt.Test_scrib_proc_str(lib, Scrib_lib_mw.Invk_getExpandedArgument, Object_.Ary("current", "1"), "val_1");
}
@Test public void GetExpandedArgument_out_of_bounds() {
fxt.Init_frame_parent ("test");
fxt.Test_scrib_proc_str(lib, Scrib_lib_mw.Invk_getExpandedArgument, Object_.Ary("parent", "2"), null);