From a6540d6200734ca8350670077bd13bbb49cd68fe Mon Sep 17 00:00:00 2001 From: gnosygnu Date: Wed, 23 Nov 2016 13:47:24 -0500 Subject: [PATCH] Scribunto: Do not convert zero padded numbers to integer --- 400_xowa/src/gplx/xowa/xtns/scribunto/libs/Scrib_lib_mw.java | 3 ++- .../gplx/xowa/xtns/scribunto/libs/Scrib_lib_mw__lib_tst.java | 4 ++++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/400_xowa/src/gplx/xowa/xtns/scribunto/libs/Scrib_lib_mw.java b/400_xowa/src/gplx/xowa/xtns/scribunto/libs/Scrib_lib_mw.java index 3a953b2e3..65f143183 100644 --- a/400_xowa/src/gplx/xowa/xtns/scribunto/libs/Scrib_lib_mw.java +++ b/400_xowa/src/gplx/xowa/xtns/scribunto/libs/Scrib_lib_mw.java @@ -191,7 +191,8 @@ public class Scrib_lib_mw implements Scrib_lib { if (key_missing) // key missing; EX: {{a|val}} key_as_int = ++arg_idx;// NOTE: MW requires a key; if none, then default to int index; NOTE: must be int, not String; NOTE: must be indexed to keyless args; EX: in "key1=val1,val2", "val2" must be "1" (1st keyless arg) not "2" (2nd arg); DATE:2013-11-09 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_len > 0 && tmp_bfr.Bfr()[0] != Byte_ascii.Num_0) // do not convert zero-padded numbers to int; EX: "01" -> "01" x> 1; PAGE:ru.w:Красноказарменный_проезд; DATE:2016-11-23 + 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.To_str_and_clear(); key_is_str = true; diff --git a/400_xowa/src/gplx/xowa/xtns/scribunto/libs/Scrib_lib_mw__lib_tst.java b/400_xowa/src/gplx/xowa/xtns/scribunto/libs/Scrib_lib_mw__lib_tst.java index a6ed2fc36..01cf92cf9 100644 --- a/400_xowa/src/gplx/xowa/xtns/scribunto/libs/Scrib_lib_mw__lib_tst.java +++ b/400_xowa/src/gplx/xowa/xtns/scribunto/libs/Scrib_lib_mw__lib_tst.java @@ -38,6 +38,10 @@ public class Scrib_lib_mw__lib_tst { fxt.Init_frame_parent("test", Keyval_.new_("1", "a1"), Keyval_.new_("2", "a2")); fxt.Test_scrib_proc_str_ary(lib, Scrib_lib_mw.Invk_getAllExpandedArguments, Object_.Ary("parent"), "1=\n 1=a1\n 2=a2"); } + @Test public void GetAllExpandedArguments__zero_padded_number() { // PURPOSE: DATE:2016-11-23 + fxt.Init_frame_current(Keyval_.new_("01", "v1")); + fxt.Test_scrib_proc_str_ary(lib, Scrib_lib_mw.Invk_getAllExpandedArguments, Object_.Ary("current"), "1=\n 01=v1"); + } @Test public void GetExpandedArgument() { fxt.Init_frame_current(Keyval_.int_(1, "val_1"), Keyval_.new_("key_2", "val_2"), Keyval_.int_(3, "val_3")); fxt.Test_scrib_proc_str (lib, Scrib_lib_mw.Invk_getExpandedArgument, Object_.Ary("current", "1") , "val_1"); // get 1st by idx