mirror of
https://github.com/gnosygnu/xowa.git
synced 2026-03-02 03:49:30 +00:00
v2.12.1.1
This commit is contained in:
@@ -16,6 +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 gplx.core.bits.*;
|
||||
import gplx.xowa.langs.msgs.*;
|
||||
public class Scrib_lib_text implements Scrib_lib {
|
||||
private final Scrib_lib_text__json_util json_util = new Scrib_lib_text__json_util();
|
||||
|
||||
@@ -95,7 +95,8 @@ class Scrib_lib_text__json_util {
|
||||
Json_kv json_kv = root.Get_at_as_kv(i);
|
||||
String kv_str = json_kv.Key_as_str();
|
||||
Object kv_val = Decode_obj(json_kv.Val());
|
||||
decode_rslt_as_nde[i] = KeyVal_.new_(kv_str, kv_val);
|
||||
int kv_int = Int_.parse_or(kv_str, Int_.Min_value);
|
||||
decode_rslt_as_nde[i] = kv_int == Int_.Min_value ? KeyVal_.new_(kv_str, kv_val) : KeyVal_.int_(kv_int, kv_val); // use int_key if applicable; PAGE:it.s:Il_Re_Cervo; DATE:2015-12-06
|
||||
}
|
||||
return Bool_.Y_byte;
|
||||
}
|
||||
@@ -123,7 +124,10 @@ class Scrib_lib_text__json_util {
|
||||
KeyVal[] rv = new KeyVal[len];
|
||||
for (int i = 0; i < len; ++i) {
|
||||
Json_kv itm = nde.Get_at_as_kv(i);
|
||||
rv[i] = KeyVal_.new_(itm.Key_as_str(), Decode_obj(itm.Val()));
|
||||
String kv_str = itm.Key_as_str();
|
||||
int kv_int = Int_.parse_or(kv_str, Int_.Min_value);
|
||||
Object kv_val = Decode_obj(itm.Val());
|
||||
rv[i] = kv_int == Int_.Min_value ? KeyVal_.new_(kv_str, kv_val) : KeyVal_.int_(kv_int, kv_val); // use int_key if applicable; PAGE:it.s:Il_Re_Cervo; DATE:2015-12-06
|
||||
}
|
||||
return rv;
|
||||
}
|
||||
|
||||
@@ -215,6 +215,26 @@ public class Scrib_lib_text_json_tst {
|
||||
)
|
||||
);
|
||||
}
|
||||
@Test public void Decode__key__int() {
|
||||
KeyVal[] kv_ary = (KeyVal[])json_fxt.Test_json_decode(fxt, lib
|
||||
, Scrib_lib_text__json_util.Flag__none
|
||||
, Json_doc.Make_str_by_apos
|
||||
( "{ '1':"
|
||||
, " { '11':'aa'"
|
||||
, " }"
|
||||
, ", '2':'b'"
|
||||
, "}"
|
||||
)
|
||||
, KeyVal_.Ary
|
||||
( KeyVal_.int_(1, KeyVal_.Ary
|
||||
( KeyVal_.int_(11, "aa")
|
||||
))
|
||||
, KeyVal_.int_(2, "b")
|
||||
)
|
||||
);
|
||||
Tfds.Eq(kv_ary[0].Key_as_obj(), 1);
|
||||
Tfds.Eq(((KeyVal[])kv_ary[0].Val())[0].Key_as_obj(), 11);
|
||||
}
|
||||
}
|
||||
class Scrib_lib_json_fxt {
|
||||
private final Json_wtr wtr = new Json_wtr();
|
||||
@@ -222,9 +242,10 @@ class Scrib_lib_json_fxt {
|
||||
Test_json_decode(fxt, lib, Scrib_lib_text__json_util.Flag__none, json, obj);
|
||||
Test_json_encode(fxt, lib, Scrib_lib_text__json_util.Flag__none, obj, json);
|
||||
}
|
||||
public void Test_json_decode(Scrib_invoke_func_fxt fxt, Scrib_lib_text lib, int flag, String raw, Object expd) {
|
||||
public Object Test_json_decode(Scrib_invoke_func_fxt fxt, Scrib_lib_text lib, int flag, String raw, Object expd) {
|
||||
Object actl = fxt.Test_scrib_proc_rv_as_obj(lib, Scrib_lib_text.Invk_jsonDecode, Object_.Ary(raw, flag));
|
||||
Tfds.Eq_str_lines(To_str(expd), To_str(actl), raw);
|
||||
return actl;
|
||||
}
|
||||
public void Test_json_encode(Scrib_invoke_func_fxt fxt, Scrib_lib_text lib, int flag, Object raw, String expd) {
|
||||
fxt.Test_scrib_proc_str_ary(lib, Scrib_lib_text.Invk_jsonEncode, Object_.Ary(raw, flag), "1=" + String_.Replace(expd, "'", "\""));
|
||||
|
||||
@@ -139,7 +139,7 @@ class Scrib_lib_wikibase_srl {
|
||||
return (KeyVal[])rv.To_ary_and_clear(KeyVal.class);
|
||||
}
|
||||
private static KeyVal[] Srl_claims_prop_itm_core(String pid, Wdata_claim_itm_core itm) {
|
||||
boolean snak_is_valued = itm.Snak_tid() != Wdata_dict_snak_tid.Tid_novalue;
|
||||
boolean snak_is_valued = itm.Snak_tid() == Wdata_dict_snak_tid.Tid_value; // PURPOSE: was != Wdata_dict_snak_tid.Tid_novalue; PAGE:it.s:Autore:Anonimo DATE:2015-12-06
|
||||
int snak_is_valued_adj = snak_is_valued ? 1 : 0;
|
||||
KeyVal[] rv = new KeyVal[3 + snak_is_valued_adj];
|
||||
if (snak_is_valued) // NOTE: novalue must not return slot (no datavalue node in json); PAGE:ru.w:Лимонов,_Эдуард_Вениаминович; DATE:2015-02-16; ALSO: sv.w:Joseph_Jaquet; DATE:2015-07-31
|
||||
@@ -160,6 +160,6 @@ class Scrib_lib_wikibase_srl {
|
||||
}
|
||||
}
|
||||
public static final String Key_type = "type", Key_value = "value";
|
||||
private static final KeyVal[] Datavalue_somevalue = 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_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;
|
||||
}
|
||||
|
||||
@@ -144,7 +144,7 @@ public class Scrib_lib_wikibase_srl_tst {
|
||||
, ""
|
||||
);
|
||||
}
|
||||
@Test public void Claims_somevalue() { // PURPOSE: somevalue should always return value node; EX:w:Joseph-François_Malgaigne; DATE:2014-04-07
|
||||
@Test public void Claims_somevalue() { // PURPOSE: changed to not return value-node; PAGE:it.s:Autore:Anonimo DATE:2015-12-06 // somevalue should always return value node; EX:w:Joseph-François_Malgaigne; DATE:2014-04-07;
|
||||
fxt.Init_prop(fxt.Wdata_fxt().Make_claim_somevalue(2));
|
||||
fxt.Test
|
||||
( "claims:"
|
||||
@@ -152,9 +152,6 @@ public class Scrib_lib_wikibase_srl_tst {
|
||||
, " 1:"
|
||||
, " id:'P2'"
|
||||
, " mainsnak:"
|
||||
, " datavalue:"
|
||||
, " type:''"
|
||||
, " value:''"
|
||||
, " property:'P2'"
|
||||
, " snaktype:'somevalue'"
|
||||
, " datatype:'unknown'"
|
||||
|
||||
Reference in New Issue
Block a user