1
0
mirror of https://github.com/gnosygnu/xowa.git synced 2024-10-27 20:34:16 +00:00

XOMW: Consolidate XophpArray_ into XophpArray [#632]

This commit is contained in:
gnosygnu 2020-05-09 07:21:14 -04:00
parent ee68162a4a
commit a9367eaca8
45 changed files with 1140 additions and 1179 deletions

View File

@ -20,17 +20,20 @@ import gplx.Bry_bfr;
import gplx.Bry_bfr_; import gplx.Bry_bfr_;
import gplx.Char_; import gplx.Char_;
import gplx.Int_; import gplx.Int_;
import gplx.List_adp;
import gplx.List_adp_;
import gplx.Object_; import gplx.Object_;
import gplx.Ordered_hash; import gplx.Ordered_hash;
import gplx.Ordered_hash_; import gplx.Ordered_hash_;
import gplx.Type_; import gplx.Type_;
import gplx.core.brys.*; import gplx.core.brys.Bry_bfr_able;
import gplx.core.strings.String_bldr;
import gplx.core.strings.String_bldr_;
import java.util.Iterator; import java.util.Iterator;
import java.util.function.Consumer;
// REF.PHP: https://www.php.net/manual/en/language.types.array.php // REF.PHP: https://www.php.net/manual/en/language.types.array.php
// Will also will have static functions but "array_" will be stripped; REF.PHP: https://www.php.net/manual/en/ref.array.php // also has static functions; REF.PHP: https://www.php.net/manual/en/ref.array.php
public class XophpArray<T> implements Bry_bfr_able, Iterable<T> { public class XophpArray<T> implements Bry_bfr_able, Iterable<T> {
private final Ordered_hash hash = Ordered_hash_.New(); private final Ordered_hash hash = Ordered_hash_.New();
private int newMemberIdx; private int newMemberIdx;
@ -41,65 +44,39 @@ public class XophpArray<T> implements Bry_bfr_able, Iterable<T> {
internalPointerIndex = 0; internalPointerIndex = 0;
} }
public int Len() {return hash.Len();} public int Len() {return hash.Len();}
public int count() {return hash.Len();} public boolean Has_obj(Object key) {return Has(Object_.Xto_str_strict_or_null(key));}
public boolean count_bool() {return hash.Len() > 0;} public boolean Has(String key) {
public boolean isset(String key) {return hash.Has(key);} return hash.Has(key);
public boolean isset(int idx) {return idx >= 0 && idx < hash.Count();}
public boolean in_array(String v) {return Has(v);}
public Object end() {
int len = hash.Len();
return len == 0 ? null : ((XophpArrayItm)hash.Get_at(len - 1)).Val();
}
public boolean Eq_to_new() {return hash.Count() == 0;}// same as "array === []"
public void unset(int key) {unset(Int_.To_str(key));}
public void unset(String key) {
hash.Del(key);
}
public Object pop() {// "array_pop"
int pos = this.count() - 1;
if (pos < 0) return null;
XophpArrayItm itm = (XophpArrayItm)hash.Get_at(pos);
this.Del_at(pos);
return itm.Val();
}
// REF.PHP: https://www.php.net/manual/en/function.array-values.php
public XophpArray values() {
XophpArray rv = new XophpArray();
int len = this.count();
for (int i = 0; i < len; i++) {
rv.Add(i, this.Get_at(i));
}
return rv;
} }
public XophpArray Add(T val) { public XophpArray Add(T val) {
int key = newMemberIdx++; int key = newMemberIdx++;
Set(XophpArrayItm.New_int(key, val)); Set(XophpArrayItm.NewInt(key, val));
return this; return this;
} }
public XophpArray Add(int key, Object val) { public XophpArray Add(int key, Object val) {
newMemberIdx = key + 1; newMemberIdx = key + 1;
Set(XophpArrayItm.New_int(key, val)); Set(XophpArrayItm.NewInt(key, val));
return this; return this;
} }
public XophpArray Add(double key, Object val) { public XophpArray Add(double key, Object val) {
int key_as_int = (int)key; int key_as_int = (int)key;
newMemberIdx = key_as_int + 1; newMemberIdx = key_as_int + 1;
Set(XophpArrayItm.New_int(key_as_int, val)); Set(XophpArrayItm.NewInt(key_as_int, val));
return this; return this;
} }
public XophpArray Add(boolean key, Object val) { public XophpArray Add(boolean key, Object val) {
int key_as_int = key ? 1 : 0; int key_as_int = key ? 1 : 0;
newMemberIdx = key_as_int + 1; newMemberIdx = key_as_int + 1;
Set(XophpArrayItm.New_int(key_as_int, val)); Set(XophpArrayItm.NewInt(key_as_int, val));
return this; return this;
} }
public XophpArray Add(String key, Object val) { public XophpArray Add(String key, Object val) {
int key_as_int = Int_.Parse_or(key, Int_.Min_value); int key_as_int = Int_.Parse_or(key, Int_.Min_value);
if (key_as_int == Int_.Min_value) { if (key_as_int == Int_.Min_value) {
Set(XophpArrayItm.New_str(key, val)); Set(XophpArrayItm.NewStr(key, val));
} }
else { else {
Set(XophpArrayItm.New_int(key_as_int, val)); Set(XophpArrayItm.NewInt(key_as_int, val));
newMemberIdx = key_as_int + 1; newMemberIdx = key_as_int + 1;
} }
return this; return this;
@ -124,7 +101,6 @@ public class XophpArray<T> implements Bry_bfr_able, Iterable<T> {
return Type_.Eq_by_obj(rv, XophpArray.class) ? (XophpArray)rv : null; return Type_.Eq_by_obj(rv, XophpArray.class) ? (XophpArray)rv : null;
} }
public XophpArray Get_at_ary(int i) {return (XophpArray)Get_at(i);} public XophpArray Get_at_ary(int i) {return (XophpArray)Get_at(i);}
public boolean Get_at_bool(int i) {return Bool_.Cast(Get_at(i));}
public int Get_at_int(int i) {return Int_.Cast(Get_at(i));} public int Get_at_int(int i) {return Int_.Cast(Get_at(i));}
public String Get_at_str(int i) {return (String)Get_at(i);} public String Get_at_str(int i) {return (String)Get_at(i);}
public Object Get_at(int i) { public Object Get_at(int i) {
@ -136,12 +112,6 @@ public class XophpArray<T> implements Bry_bfr_able, Iterable<T> {
if (i < 0 || i >= hash.Len()) return null; if (i < 0 || i >= hash.Len()) return null;
return (XophpArrayItm)hash.Get_at(i); return (XophpArrayItm)hash.Get_at(i);
} }
public void Del_at(int i) {
XophpArrayItm itm = (XophpArrayItm)hash.Get_at(i);
if (itm != null) {
hash.Del(itm.Key());
}
}
public Object Get_by_obj(Object key) {return Get_by(Object_.Xto_str_strict_or_null(key));} public Object Get_by_obj(Object key) {return Get_by(Object_.Xto_str_strict_or_null(key));}
public Object Get_by(int key) {return Get_by(Int_.To_str(key));} public Object Get_by(int key) {return Get_by(Int_.To_str(key));}
public boolean Get_by_bool_or(String key, boolean or) {Object rv = this.Get_by(key); return rv == null ? or : Bool_.Cast(rv);} public boolean Get_by_bool_or(String key, boolean or) {Object rv = this.Get_by(key); return rv == null ? or : Bool_.Cast(rv);}
@ -163,21 +133,32 @@ public class XophpArray<T> implements Bry_bfr_able, Iterable<T> {
public XophpArray Get_by_ary(String key) {return (XophpArray)this.Get_by(key);} public XophpArray Get_by_ary(String key) {return (XophpArray)this.Get_by(key);}
public String Get_by_str(char key) {return (String)this.Get_by(Char_.To_str(key));} public String Get_by_str(char key) {return (String)this.Get_by(Char_.To_str(key));}
public String Get_by_str(int key) {return (String)this.Get_by(Int_.To_str(key));} public String Get_by_str(int key) {return (String)this.Get_by(Int_.To_str(key));}
public String Get_by_str_or(String key, String or) {Object rv = this.Get_by(key); return rv == null ? or : (String)rv;}
public String Get_by_str(String key) {return (String)this.Get_by(key);} public String Get_by_str(String key) {return (String)this.Get_by(key);}
public T Get_by(String key) { public T Get_by(String key) {
XophpArrayItm itm = (XophpArrayItm)hash.Get_by(key); XophpArrayItm itm = (XophpArrayItm)hash.Get_by(key);
return itm == null ? null : (T)itm.Val(); return itm == null ? null : (T)itm.Val();
} }
public void Set(int key, Object val) { public void Set(int key, Object val) {
this.Set(XophpArrayItm.New_int(key, val)); this.Set(XophpArrayItm.NewInt(key, val));
} }
public void Set(String key, Object val) { public void Set(String key, Object val) {
this.Set(XophpArrayItm.New_str(key, val)); this.Set(XophpArrayItm.NewStr(key, val));
} }
public boolean Has_obj(Object key) {return Has(Object_.Xto_str_strict_or_null(key));} private void Set(XophpArrayItm itm) {
public boolean Has(String key) { String key = itm.Key();
return hash.Has(key); XophpArrayItm cur = (XophpArrayItm)hash.Get_by(key);
if (cur == null) {
hash.Add(key, itm);
}
else {
cur.Val_(itm.Val());
}
}
public void Del_at(int i) {
XophpArrayItm itm = (XophpArrayItm)hash.Get_at(i);
if (itm != null) {
hash.Del(itm.Key());
}
} }
public XophpArrayItm[] To_ary() { public XophpArrayItm[] To_ary() {
return (XophpArrayItm[])hash.To_ary(XophpArrayItm.class); return (XophpArrayItm[])hash.To_ary(XophpArrayItm.class);
@ -193,16 +174,6 @@ public class XophpArray<T> implements Bry_bfr_able, Iterable<T> {
itm.To_bfr(bfr); itm.To_bfr(bfr);
} }
} }
private void Set(XophpArrayItm itm) {
String key = itm.Key();
XophpArrayItm cur = (XophpArrayItm)hash.Get_by(key);
if (cur == null) {
hash.Add(key, itm);
}
else {
cur.Val_(itm.Val());
}
}
public void Itm_str_concat_end(int idx, String v) { public void Itm_str_concat_end(int idx, String v) {
String itm = (String)this.Get_at(idx); String itm = (String)this.Get_at(idx);
itm += v; itm += v;
@ -275,6 +246,80 @@ public class XophpArray<T> implements Bry_bfr_able, Iterable<T> {
} }
} }
// DEPRECATE:use XophpArray
public static boolean popBoolOrN(List_adp list) {return Bool_.Cast(List_adp_.Pop_or(list, false));}
public static byte[] popBryOrNull(List_adp list) {return (byte[])List_adp_.Pop_or(list, null);}
public static String[] array_keys_str(Ordered_hash array) {
int len = array.Len();
String[] rv = new String[len];
for (int i = 0; i < len; i++) {
rv[i] = (String)array.Get_at(i);
}
return rv;
}
public static byte[][] array_keys_bry(Ordered_hash array) {
int len = array.Len();
byte[][] rv = new byte[len][];
for (int i = 0; i < len; i++) {
rv[i] = (byte[])array.Get_at(i);
}
return rv;
}
public static boolean array_key_exists(int key, Ordered_hash array) {return array.Has(key);}
public static boolean array_key_exists(String key, Ordered_hash array) {return array.Has(key);}
public static boolean array_key_exists(byte[] key, Ordered_hash array) {return array.Has(key);}
public static boolean empty(Ordered_hash array) {
return array.Len() == 0;
}
// **********
// * STATIC *
// **********
public static final XophpArray False = null; // handles code like "if ($var === false)" where var is an Object;
public static XophpArray New(Object... vals) {
XophpArray rv = new XophpArray();
for (Object val : vals)
rv.Add(val);
return rv;
}
public static boolean Eq_to_new(XophpArray array) {return array.hash.Count() == 0;}// same as "array === []"
public static boolean empty(XophpArray array) {return array.Len() == 0;}
public static int count(XophpArray array) {return array.Len();}
public static boolean count_bool(XophpArray array) {return array.Len() > 0;}
public static boolean isset(XophpArray array, int key) {return array.Get_at(key) != null;}
public static boolean isset(XophpArray array, String key) {return array.Get_by(key) != null;}
public static boolean is_array(Object array) {return XophpType_.instance_of(array, XophpArray.class);}
public static void unset(XophpArray array, String key) {array.hash.Del(key);}
public static void unset(XophpArray array, int key) {array.hash.Del(Int_.To_str(key));}
public static void unset(Ordered_hash array, Object key) {array.Del(key);}
public static boolean array_key_exists(String key, XophpArray array) {return array.Has(key);}
public static boolean array_key_exists(int key, XophpArray array) {return array.Has(Int_.To_str(key));}
public static Object array_pop(XophpArray array) {// "array_pop"
int pos = array.Len() - 1;
if (pos < 0) return null;
XophpArrayItm itm = (XophpArrayItm)array.hash.Get_at(pos);
array.Del_at(pos);
return itm.Val();
}
public static Object end(XophpArray array) {
int len = array.Len();
return len == 0 ? null : ((XophpArrayItm)array.hash.Get_at(len - 1)).Val();
}
// REF.PHP: https://www.php.net/manual/en/function.array-values.php
public static XophpArray array_values(XophpArray array) {
XophpArray rv = new XophpArray();
int len = array.Len();
for (int i = 0; i < len; i++) {
XophpArrayItm itm = array.Get_at_itm(i);
rv.Add(i, itm.Val());
}
return rv;
}
// REF.PHP:https://www.php.net/manual/en/function.reset.php // REF.PHP:https://www.php.net/manual/en/function.reset.php
private int internalPointerIndex = 0; private int internalPointerIndex = 0;
private Object internalPointerAdd(int v) { private Object internalPointerAdd(int v) {
@ -292,14 +337,245 @@ public class XophpArray<T> implements Bry_bfr_able, Iterable<T> {
return array.internalPointerAdd(1); return array.internalPointerAdd(1);
} }
public static boolean is_array(Object val) { // REF.PHP:https://www.php.net/manual/en/function.array-merge.php
return Type_.Eq_by_obj(val, XophpArray.class); public static XophpArray array_merge(XophpArray... vals) {
}
public static final XophpArray False = null; // handles code like "if ($var === false)" where var is an Object;
public static XophpArray New(Object... vals) {
XophpArray rv = new XophpArray(); XophpArray rv = new XophpArray();
for (Object val : vals) for (XophpArray ary : vals) {
rv.Add(val); XophpArrayItm[] itms = ary.To_ary();
for (XophpArrayItm itm : itms) {
array_itm_add(rv, itm);
}
}
return rv; return rv;
} }
// REF.PHP:https://www.php.net/manual/en/function.array-merge.php
// "If you want to append array elements from the second array to the first array while not overwriting the elements from the first array and not re-indexing, use the + array union operator:"
public static XophpArray array_add(XophpArray lhs, XophpArray... vals) {
for (XophpArray ary : vals) {
XophpArrayItm[] itms = ary.To_ary();
for (XophpArrayItm itm : itms) {
if (lhs.Has(itm.Key())) {
continue;
}
else {
lhs.Add(itm.Key(), itm.Val());
}
}
}
return lhs;
}
private static void array_itm_add(XophpArray ary, XophpArrayItm itm) {
if (itm.KeyIsInt())
ary.Add(itm.Val());
else
ary.Add(itm.Key(), itm.Val());
}
public static XophpArray array_splice(XophpArray src, int bgn) {return array_splice(src, bgn, src.Len(), null);}
public static XophpArray array_splice(XophpArray src, int bgn, int len) {return array_splice(src, bgn, len , null);}
public static XophpArray array_splice(XophpArray src, int bgn, int len, XophpArray repl) {
// get itms before clearing it
int src_len = src.Len();
XophpArrayItm[] itms = src.To_ary();
src.Clear();
// calc bgn
if (bgn < 0) { // negative bgn should be adusted from src_len; EX: -1 means start at last item
bgn += src_len;
if (bgn < 0) // large negative bgn should be capped at 0; EX: -99
bgn = 0;
}
else if (bgn > src_len) // large positive bgn should be capped at src_len; EX: 99
bgn = src_len;
// add src from 0 to bgn
for (int i = 0; i < bgn; i++) {
array_itm_add(src, itms[i]);
}
// add repl
if (repl != null) {
XophpArrayItm[] repl_itms = repl.To_ary();
for (XophpArrayItm itm : repl_itms) {
array_itm_add(src, itm);
}
}
// calc end
int end;
if (len < 0) { // negative len should be adjusted from src_len; EX: -1 means stop at last itm
end = src_len + len;
if (end < 0) // large_negative len should be capped at 0; EX: -99
end = 0;
}
else { // positive len should be added to bgn to find end
end = bgn + len;
}
if (end < bgn) // end should never be less than bgn; EX: splice(1, -99)
end = bgn;
else if (end > src_len) // end should not be more then end;
end = src_len;
// add src from end to len
for (int i = end; i < src_len; i++) {
array_itm_add(src, itms[i]);
}
// add del to rv
XophpArray rv = new XophpArray();
for (int i = bgn; i < end; i++) {
array_itm_add(rv, itms[i]);
}
return rv;
}
// ( array $array , int $offset [, int $length = NULL [, boolean $preserve_keys = FALSE ]] ) :
public static XophpArray array_slice(XophpArray array, int offset) {return array_slice(array, offset, array.Len());}
public static XophpArray array_slice(XophpArray array, int offset, int length) {
XophpArray rv = new XophpArray();
int end = offset + length;
for (int i = offset; i< end; i++) {
rv.Add(array.Get_at(i));
}
return rv;
}
public static XophpArray<String> array_keys(XophpArray array) {
XophpArray rv = XophpArray.New();
int len = array.Len();
for (int i = 0; i < len; i++) {
XophpArrayItm itm = array.Get_at_itm(i);
rv.Add(itm.Key());
}
return rv;
}
// REF.PHP:https://www.php.net/manual/en/function.array-map.php
public static XophpArray array_map(XophpCallbackOwner callback_owner, String method, XophpArray array) {
XophpArray rv = XophpArray.New();
int len = array.Len();
for (int i = 0; i < len; i++) {
String itm = array.Get_at_str(i);
rv.Add((String)callback_owner.Call(method, itm));
}
return rv;
}
// REF.PHP:https://www.php.net/manual/en/function.array-flip.php
public static XophpArray array_flip(XophpArray array) {
XophpArray rv = XophpArray.New();
int len = array.Len();
for (int i = 0; i < len; i++) {
XophpArrayItm itm = array.Get_at_itm(i);
rv.Set(Object_.Xto_str_strict_or_null(itm.Val()), itm.Key());
}
return rv;
}
// REF.PHP:https://www.php.net/manual/en/function.implode.php
public static String implode(String glue, XophpArray pieces) {
String_bldr sb = String_bldr_.new_();
int len = pieces.Len();
for (int i = 0; i < len; i++) {
if (i != 0) sb.Add(glue);
sb.Add(pieces.Get_at_str(i));
}
return sb.To_str_and_clear();
}
// REF.PHP: https://www.php.net/manual/en/function.in-array.php
public static boolean in_array(Object needle, XophpArray haystack) {return in_array(needle, haystack, false);}
public static boolean in_array(Object needle, XophpArray haystack, boolean strict) {
// if strict, cache needleType
Class<?> needleType = null;
if (strict && needle != null) {
needleType = Type_.Type_by_obj(needle);
}
// loop haystack to find match
int haystack_len = haystack.Len();
for (int i = 0; i < haystack_len; i++) {
Object val = haystack.Get_at(i);
// if strict, compare types
if (strict) {
if (needle != null && val == null) {
return false;
}
else if (needle == null && val != null) {
return false;
}
else if (needle != null && val != null) {
if (!Type_.Eq_by_obj(val, needleType)) {
return false;
}
}
}
// compare objects
if (Object_.Eq(needle, val)) {
return true;
}
}
return false;
}
// REF.PHP: https://www.php.net/manual/en/function.array-shift.php
// Returns the shifted value, or NULL if array is empty or is not an array.
public static Object array_shift(XophpArray array) {
if (array == null) {
return null;
}
int len = array.Len();
if (len == 0) {
return null;
}
XophpArrayItm[] itms = array.To_ary();
array.Clear();
int idx = 0;
for (int i = 1; i < len; i++) {
XophpArrayItm itm = itms[i];
if (itm.KeyIsInt()) {
array.Add(idx++, itm.Val());
}
else {
array.Add(itm.Key(), itm.Val());
}
}
return itms[0].Val();
}
// REF.PHP: https://www.php.net/manual/en/function.array-filter.php
public static final int ARRAY_FILTER_USE_BOTH = 1, ARRAY_FILTER_USE_KEY = 2, ARRAY_FILTER_USE_VAL = 0; // XO:USE_VAL is not PHP
public static XophpArray array_filter(XophpArray array) {return array_filter(array, NULL_CALLBACK, 0);}
public static XophpArray array_filter(XophpArray array, XophpCallback callback) {return array_filter(array, callback, 0);}
public static XophpArray array_filter(XophpArray array, XophpCallback callback, int flag) {
XophpArray rv = new XophpArray();
int len = array.Len();
for (int i = 0; i < len; i++) {
XophpArrayItm itm = array.Get_at_itm(i);
boolean filter = false;
switch (flag) {
case ARRAY_FILTER_USE_VAL:
filter = Bool_.Cast(callback.Call(itm.Val()));
break;
case ARRAY_FILTER_USE_KEY:
filter = Bool_.Cast(callback.Call(itm.Key()));
break;
case ARRAY_FILTER_USE_BOTH:
filter = Bool_.Cast(callback.Call(itm.Key(), itm.Val()));
break;
}
if (filter)
rv.Add(itm.Key(), itm.Val());
}
return rv;
}
public static XophpCallback NULL_CALLBACK = new XophpCallback(new XophpArray.XophpArrayFilterNullCallback(), "");
static class XophpArrayFilterNullCallback implements XophpCallbackOwner {
public Object Call(String method, Object... args) {
if (args.length != 1) throw new XophpRuntimeException("ArrayFilterNullCallback requires 1 arg");
Object arg = args[0];
return !XophpObject_.empty_obj(arg);
}
}
} }

View File

@ -1,6 +1,6 @@
/* /*
XOWA: the XOWA Offline Wiki Application XOWA: the XOWA Offline Wiki Application
Copyright (C) 2012-2017 gnosygnu@gmail.com Copyright (C) 2012-2020 gnosygnu@gmail.com
XOWA is licensed under the terms of the General Public License (GPL) Version 3, XOWA is licensed under the terms of the General Public License (GPL) Version 3,
or alternatively under the terms of the Apache License Version 2.0. or alternatively under the terms of the Apache License Version 2.0.
@ -13,18 +13,26 @@ The terms of each license can be found in the source code repository:
GPLv3 License: https://github.com/gnosygnu/xowa/blob/master/LICENSE-GPLv3.txt GPLv3 License: https://github.com/gnosygnu/xowa/blob/master/LICENSE-GPLv3.txt
Apache License: https://github.com/gnosygnu/xowa/blob/master/LICENSE-APACHE2.txt Apache License: https://github.com/gnosygnu/xowa/blob/master/LICENSE-APACHE2.txt
*/ */
package gplx.xowa.mediawiki; import gplx.*; import gplx.xowa.*; package gplx.xowa.mediawiki;
import gplx.core.brys.*;
import gplx.Bool_;
import gplx.Bry_bfr;
import gplx.Int_;
import gplx.Object_;
import gplx.String_;
import gplx.Type_;
import gplx.core.brys.Bry_bfr_able;
public class XophpArrayItm implements Bry_bfr_able { public class XophpArrayItm implements Bry_bfr_able {
XophpArrayItm(boolean key_is_int, int key_as_int, String key, Object val) { XophpArrayItm(boolean keyIsInt, int keyAsInt, String key, Object val) {
this.key_is_int = key_is_int; this.keyIsInt = keyIsInt;
this.key_as_int = key_as_int; this.keyAsInt = keyAsInt;
this.key = key; this.key = key;
this.val = val; this.val = val;
} }
public boolean Key_is_int() {return key_is_int;} private final boolean key_is_int; public boolean KeyIsInt() {return keyIsInt;} private final boolean keyIsInt;
public int Key_as_int() {return key_as_int;} private final int key_as_int; public int KeyAsInt() {return keyAsInt;} private final int keyAsInt;
public String Key() {return key;} private final String key; public String Key() {return key;} private final String key;
public Object Val() {return val;} public void Val_(Object v) {this.val = v;} private Object val; public Object Val() {return val;} public void Val_(Object v) {this.val = v;} private Object val;
public void To_bfr(Bry_bfr bfr) { public void To_bfr(Bry_bfr bfr) {
@ -44,8 +52,8 @@ public class XophpArrayItm implements Bry_bfr_able {
XophpArrayItm comp = (XophpArrayItm)obj; XophpArrayItm comp = (XophpArrayItm)obj;
// compare key // compare key
if (key_is_int) { if (keyIsInt) {
if (this.key_as_int != comp.key_as_int) if (this.keyAsInt != comp.keyAsInt)
return false; return false;
} }
else { else {
@ -65,11 +73,12 @@ public class XophpArrayItm implements Bry_bfr_able {
} }
@Override public int hashCode() { @Override public int hashCode() {
int rv = 0; int rv = 0;
rv = (31 * rv) + (key_is_int ? key_as_int : key.hashCode()); rv = (31 * rv) + (keyIsInt ? keyAsInt : key.hashCode());
rv = (31 * rv) + val.hashCode(); rv = (31 * rv) + val.hashCode();
return rv; return rv;
} }
public static XophpArrayItm New_int(int key, Object val) {return new XophpArrayItm(Bool_.Y, key, Int_.To_str(key), val);} private static final int NULL_KEY_INT = -1;
public static XophpArrayItm New_str(String key, Object val) {return new XophpArrayItm(Bool_.N, -1, key , val);} public static XophpArrayItm NewInt(int key, Object val) {return new XophpArrayItm(Bool_.Y, key, Int_.To_str(key), val);}
public static XophpArrayItm NewStr(String key, Object val) {return new XophpArrayItm(Bool_.N, NULL_KEY_INT, key, val);}
} }

View File

@ -1,325 +0,0 @@
/*
XOWA: the XOWA Offline Wiki Application
Copyright (C) 2012-2017 gnosygnu@gmail.com
XOWA is licensed under the terms of the General Public License (GPL) Version 3,
or alternatively under the terms of the Apache License Version 2.0.
You may use XOWA according to either of these licenses as is most appropriate
for your project on a case-by-case basis.
The terms of each license can be found in the source code repository:
GPLv3 License: https://github.com/gnosygnu/xowa/blob/master/LICENSE-GPLv3.txt
Apache License: https://github.com/gnosygnu/xowa/blob/master/LICENSE-APACHE2.txt
*/
package gplx.xowa.mediawiki;
import gplx.*;
import gplx.core.strings.*;
public class XophpArray_ {
// REF.PHP:https://www.php.net/manual/en/function.array-merge.php
public static XophpArray array_merge(XophpArray... vals) {
XophpArray rv = new XophpArray();
for (XophpArray ary : vals) {
XophpArrayItm[] itms = ary.To_ary();
for (XophpArrayItm itm : itms) {
array_itm_add(rv, itm);
}
}
return rv;
}
// REF.PHP:https://www.php.net/manual/en/function.array-merge.php
// "If you want to append array elements from the second array to the first array while not overwriting the elements from the first array and not re-indexing, use the + array union operator:"
public static XophpArray array_add(XophpArray lhs, XophpArray... vals) {
for (XophpArray ary : vals) {
XophpArrayItm[] itms = ary.To_ary();
for (XophpArrayItm itm : itms) {
if (lhs.Has(itm.Key())) {
continue;
}
else {
lhs.Add(itm.Key(), itm.Val());
}
}
}
return lhs;
}
private static void array_itm_add(XophpArray ary, XophpArrayItm itm) {
if (itm.Key_is_int())
ary.Add(itm.Val());
else
ary.Add(itm.Key(), itm.Val());
}
public static XophpArray array_splice(XophpArray src, int bgn) {return array_splice(src, bgn, src.count(), null);}
public static XophpArray array_splice(XophpArray src, int bgn, int len) {return array_splice(src, bgn, len , null);}
public static XophpArray array_splice(XophpArray src, int bgn, int len, XophpArray repl) {
// get itms before clearing it
int src_len = src.count();
XophpArrayItm[] itms = src.To_ary();
src.Clear();
// calc bgn
if (bgn < 0) { // negative bgn should be adusted from src_len; EX: -1 means start at last item
bgn += src_len;
if (bgn < 0) // large negative bgn should be capped at 0; EX: -99
bgn = 0;
}
else if (bgn > src_len) // large positive bgn should be capped at src_len; EX: 99
bgn = src_len;
// add src from 0 to bgn
for (int i = 0; i < bgn; i++) {
array_itm_add(src, itms[i]);
}
// add repl
if (repl != null) {
XophpArrayItm[] repl_itms = repl.To_ary();
for (XophpArrayItm itm : repl_itms) {
array_itm_add(src, itm);
}
}
// calc end
int end;
if (len < 0) { // negative len should be adjusted from src_len; EX: -1 means stop at last itm
end = src_len + len;
if (end < 0) // large_negative len should be capped at 0; EX: -99
end = 0;
}
else { // positive len should be added to bgn to find end
end = bgn + len;
}
if (end < bgn) // end should never be less than bgn; EX: splice(1, -99)
end = bgn;
else if (end > src_len) // end should not be more then end;
end = src_len;
// add src from end to len
for (int i = end; i < src_len; i++) {
array_itm_add(src, itms[i]);
}
// add del to rv
XophpArray rv = new XophpArray();
for (int i = bgn; i < end; i++) {
array_itm_add(rv, itms[i]);
}
return rv;
}
// ( array $array , int $offset [, int $length = NULL [, boolean $preserve_keys = FALSE ]] ) :
public static XophpArray array_slice(XophpArray array, int offset) {return array_slice(array, offset, array.count());}
public static XophpArray array_slice(XophpArray array, int offset, int length) {
XophpArray rv = new XophpArray();
int end = offset + length;
for (int i = offset; i< end; i++) {
rv.Add(array.Get_at(i));
}
return rv;
}
public static XophpArray<String> array_keys(XophpArray array) {
XophpArray rv = XophpArray.New();
int len = array.count();
for (int i = 0; i < len; i++) {
XophpArrayItm itm = array.Get_at_itm(i);
rv.Add(itm.Key());
}
return rv;
}
public static XophpArray array_values(XophpArray array) {
XophpArray rv = XophpArray.New();
int len = array.count();
for (int i = 0; i < len; i++) {
XophpArrayItm itm = array.Get_at_itm(i);
rv.Add(itm.Val());
}
return rv;
}
// DEPRECATE:use XophpArray
public static boolean popBoolOrN(List_adp list) {return Bool_.Cast(List_adp_.Pop_or(list, false));}
public static byte[] popBryOrNull(List_adp list) {return (byte[])List_adp_.Pop_or(list, null);}
public static String[] array_keys_str(Ordered_hash array) {
int len = array.Len();
String[] rv = new String[len];
for (int i = 0; i < len; i++) {
rv[i] = (String)array.Get_at(i);
}
return rv;
}
public static byte[][] array_keys_bry(Ordered_hash array) {
int len = array.Len();
byte[][] rv = new byte[len][];
for (int i = 0; i < len; i++) {
rv[i] = (byte[])array.Get_at(i);
}
return rv;
}
public static boolean array_key_exists(int key, Ordered_hash array) {return array.Has(key);}
public static boolean array_key_exists(String key, Ordered_hash array) {return array.Has(key);}
public static boolean array_key_exists(byte[] key, Ordered_hash array) {return array.Has(key);}
public static boolean empty(Ordered_hash array) {
return array.Len() == 0;
}
public static boolean empty(XophpArray array) {
return array.Len() == 0;
}
public static boolean array_key_exists(String key, XophpArray array) {return array.Has(key);}
public static boolean array_key_exists(int key, XophpArray array) {return array.Has(Int_.To_str(key));}
public static void unset(XophpArray array, String s) {array.unset(s);}
public static void unset(XophpArray array, int i) {array.unset(i);}
public static void unset(Ordered_hash array, Object key) {
array.Del(key);
}
public static Object[] unset_by_idx(Object[] ary, int idx) {
int ary_len = ary.length;
Object[] rv = new Object[ary_len];
for (int i = 0; i < idx; i++)
rv[i] = ary[i];
for (int i = idx + 1; i < ary_len; i++)
rv[i - 1] = ary[i];
return rv;
}
// REF.PHP:https://www.php.net/manual/en/function.array-map.php
public static XophpArray array_map(XophpCallbackOwner callback_owner, String method, XophpArray array) {
XophpArray rv = XophpArray.New();
int len = array.count();
for (int i = 0; i < len; i++) {
String itm = array.Get_at_str(i);
rv.Add((String)callback_owner.Call(method, itm));
}
return rv;
}
// REF.PHP:https://www.php.net/manual/en/function.array-flip.php
public static XophpArray array_flip(XophpArray array) {
XophpArray rv = XophpArray.New();
int len = array.count();
for (int i = 0; i < len; i++) {
XophpArrayItm itm = array.Get_at_itm(i);
rv.Set(Object_.Xto_str_strict_or_null(itm.Val()), itm.Key());
}
return rv;
}
// REF.PHP:https://www.php.net/manual/en/function.implode.php
public static String implode(String glue, XophpArray pieces) {
String_bldr sb = String_bldr_.new_();
int len = pieces.count();
for (int i = 0; i < len; i++) {
if (i != 0) sb.Add(glue);
sb.Add(pieces.Get_at_str(i));
}
return sb.To_str_and_clear();
}
public static int count(XophpArray array) {return array.count();}
public static boolean count_bool(XophpArray array) {return array.count_bool();}
public static Object array_pop(XophpArray array) {return array.pop();}
public static boolean isset(XophpArray array, int key) {return XophpObject_.isset_obj(array.Get_at(key));}
public static boolean isset(XophpArray array, String key) {return XophpObject_.isset_obj(array.Get_by(key));}
public static boolean is_array(Object array) {return XophpType_.instance_of(array, XophpArray.class);}
// REF.PHP: https://www.php.net/manual/en/function.in-array.php
public static boolean in_array(Object needle, XophpArray haystack) {return in_array(needle, haystack, false);}
public static boolean in_array(Object needle, XophpArray haystack, boolean strict) {
// if strict, cache needleType
Class<?> needleType = null;
if (strict && needle != null) {
needleType = Type_.Type_by_obj(needle);
}
// loop haystack to find match
int haystack_len = haystack.Len();
for (int i = 0; i < haystack_len; i++) {
Object val = haystack.Get_at(i);
// if strict, compare types
if (strict) {
if (needle != null && val == null) {
return false;
}
else if (needle == null && val != null) {
return false;
}
else if (needle != null && val != null) {
if (!Type_.Eq_by_obj(val, needleType)) {
return false;
}
}
}
// compare objects
if (Object_.Eq(needle, val)) {
return true;
}
}
return false;
}
// REF.PHP: https://www.php.net/manual/en/function.array-shift.php
// Returns the shifted value, or NULL if array is empty or is not an array.
public static Object array_shift(XophpArray array) {
if (array == null) {
return null;
}
int len = array.Len();
if (len == 0) {
return null;
}
XophpArrayItm[] itms = array.To_ary();
array.Clear();
int idx = 0;
for (int i = 1; i < len; i++) {
XophpArrayItm itm = itms[i];
if (itm.Key_is_int()) {
array.Add(idx++, itm.Val());
}
else {
array.Add(itm.Key(), itm.Val());
}
}
return itms[0].Val();
}
// REF.PHP: https://www.php.net/manual/en/function.array-filter.php
public static final int ARRAY_FILTER_USE_BOTH = 1, ARRAY_FILTER_USE_KEY = 2, ARRAY_FILTER_USE_VAL = 0; // XO:USE_VAL is not PHP
public static XophpArray array_filter(XophpArray array) {return array_filter(array, XophpArrayFilterNullCallback.Instance, 0);}
public static XophpArray array_filter(XophpArray array, XophpCallback callback) {return array_filter(array, callback, 0);}
public static XophpArray array_filter(XophpArray array, XophpCallback callback, int flag) {
XophpArray rv = new XophpArray();
int len = array.count();
for (int i = 0; i < len; i++) {
XophpArrayItm itm = array.Get_at_itm(i);
boolean filter = false;
switch (flag) {
case ARRAY_FILTER_USE_VAL:
filter = Bool_.Cast(callback.Call(itm.Val()));
break;
case ARRAY_FILTER_USE_KEY:
filter = Bool_.Cast(callback.Call(itm.Key()));
break;
case ARRAY_FILTER_USE_BOTH:
filter = Bool_.Cast(callback.Call(itm.Key(), itm.Val()));
break;
}
if (filter)
rv.Add(itm.Key(), itm.Val());
}
return rv;
}
}
class XophpArrayFilterNullCallback implements XophpCallbackOwner {
public Object Call(String method, Object... args) {
if (args.length != 1) throw new XophpRuntimeException("ArrayFilterNullCallback requires 1 arg");
Object arg = args[0];
return !XophpObject_.empty_obj(arg);
}
public static XophpCallback Instance = new XophpCallback(new XophpArrayFilterNullCallback(), "");
}

View File

@ -181,9 +181,9 @@ public class JCValue {
else if (value_tid == Value_tid__ary && (fld_type == Type_ids_.Id__str || fld_type == Type_ids_.Id__int)) { else if (value_tid == Value_tid__ary && (fld_type == Type_ids_.Id__str || fld_type == Type_ids_.Id__int)) {
tmp = value_as_ary.Get_by_obj(fld); tmp = value_as_ary.Get_by_obj(fld);
if (fld_type == Type_ids_.Id__str) if (fld_type == Type_ids_.Id__str)
value_as_ary.unset((String)fld); XophpArray.unset(value_as_ary, (String)fld);
else else
value_as_ary.unset(Int_.Cast(fld)); XophpArray.unset(value_as_ary, Int_.Cast(fld));
value.Del(fld); value.Del(fld);
} }
else { else {

View File

@ -38,7 +38,7 @@ abstract class XomwWikiTextPropertyOrderProvider implements XomwPropertyOrderPro
} }
XophpArray parsedList = this.parseList(pageContent); XophpArray parsedList = this.parseList(pageContent);
return XophpArray_.array_flip(parsedList); return XophpArray.array_flip(parsedList);
} }
/** /**
@ -65,7 +65,7 @@ abstract class XomwWikiTextPropertyOrderProvider implements XomwPropertyOrderPro
XophpRegex_.PREG_PATTERN_ORDER XophpRegex_.PREG_PATTERN_ORDER
); );
XophpArray orderedProperties = XophpArray_.array_map(XophpString_.Callback_owner, "strtoupper", (XophpArray)orderedPropertiesMatches.Get_at_ary(1)); XophpArray orderedProperties = XophpArray.array_map(XophpString_.Callback_owner, "strtoupper", (XophpArray)orderedPropertiesMatches.Get_at_ary(1));
return orderedProperties; return orderedProperties;
} }

View File

@ -560,18 +560,18 @@ public class XomwCategoryViewer {// extends ContextSource
// Kind of like array_flip() here, but we keep duplicates in an // Kind of like array_flip() here, but we keep duplicates in an
// array instead of dropping them. // array instead of dropping them.
int columns_len = columns.count(); int columns_len = XophpArray.count(columns);
for (int i = 0; i < columns_len; i++) { for (int i = 0; i < columns_len; i++) {
XophpArrayItm itm = columns.Get_at_itm(i); XophpArrayItm itm = columns.Get_at_itm(i);
String article = itm.Key(); String article = itm.Key();
String charVal = (String)itm.Val(); String charVal = (String)itm.Val();
if (!colContents.isset((String)colContents.Get_by(charVal))) { if (!XophpArray.isset(colContents, (String)colContents.Get_by(charVal))) {
colContents.Set(charVal, XophpArray.New()); colContents.Set(charVal, XophpArray.New());
} }
colContents.Set(charVal, article); // colContents[char][] = article; colContents.Set(charVal, article); // colContents[char][] = article;
} }
int colContentsLen = colContents.count(); int colContentsLen = colContents.Len();
for (int i = 0; i < colContentsLen; i++) { for (int i = 0; i < colContentsLen; i++) {
XophpArrayItm itm = columns.Get_at_itm(i); XophpArrayItm itm = columns.Get_at_itm(i);
String charVal = itm.Key(); String charVal = itm.Key();
@ -583,7 +583,7 @@ public class XomwCategoryViewer {// extends ContextSource
ret += "</h3>\n"; ret += "</h3>\n";
ret += "<ul><li>"; ret += "<ul><li>";
ret += XophpArray_.implode("</li>\n<li>", articlesItm); ret += XophpArray.implode("</li>\n<li>", articlesItm);
ret += "</li></ul></div>"; ret += "</li></ul></div>";
} }

View File

@ -19,7 +19,7 @@ import gplx.String_;
import gplx.core.primitives.String_obj_ref; import gplx.core.primitives.String_obj_ref;
import gplx.core.tests.GfoTestMethod; import gplx.core.tests.GfoTestMethod;
import gplx.xowa.mediawiki.XophpArray; import gplx.xowa.mediawiki.XophpArray;
import gplx.xowa.mediawiki.XophpArray_; import gplx.xowa.mediawiki.XophpArray;
import gplx.xowa.mediawiki.XophpCallback; import gplx.xowa.mediawiki.XophpCallback;
import gplx.xowa.mediawiki.XophpCallbackOwner; import gplx.xowa.mediawiki.XophpCallbackOwner;
import gplx.xowa.mediawiki.XophpFatalException; import gplx.xowa.mediawiki.XophpFatalException;
@ -71,7 +71,7 @@ public class XomwHooks {
// throw new MWException('Cannot reset hooks in operation.'); // throw new MWException('Cannot reset hooks in operation.');
// } // }
XophpArray_.unset(handlers, name); XophpArray.unset(handlers, name);
} }
/** /**
@ -99,12 +99,12 @@ public class XomwHooks {
public static XophpArray getHandlers(String name) { public static XophpArray getHandlers(String name) {
if (!isRegistered(name)) { if (!isRegistered(name)) {
return XophpArray.New(); return XophpArray.New();
} else if (!XophpArray_.isset(handlers, name)) { } else if (!XophpArray.isset(handlers, name)) {
return XomwDefaultSettings.wgHooks.Get_by_ary(name); return XomwDefaultSettings.wgHooks.Get_by_ary(name);
} else if (!XophpArray_.isset(XomwDefaultSettings.wgHooks, name)) { } else if (!XophpArray.isset(XomwDefaultSettings.wgHooks, name)) {
return handlers.Get_by_ary(name); return handlers.Get_by_ary(name);
} else { } else {
return XophpArray_.array_merge(handlers.Get_by_ary(name), XomwDefaultSettings.wgHooks.Get_by_ary(name)); return XophpArray.array_merge(handlers.Get_by_ary(name), XomwDefaultSettings.wgHooks.Get_by_ary(name));
} }
} }
@ -123,7 +123,7 @@ public class XomwHooks {
) { ) {
XophpArray hook; XophpArray hook;
// Turn non-array values into an array. (Can't use casting because of objects.) // Turn non-array values into an array. (Can't use casting because of objects.)
if (!XophpArray_.is_array(hookObj)) { if (!XophpArray.is_array(hookObj)) {
hook = XophpArray.New(hookObj); hook = XophpArray.New(hookObj);
} }
else { // XO: cast it to XophpArray else { // XO: cast it to XophpArray
@ -135,11 +135,11 @@ public class XomwHooks {
return null; return null;
} }
if (XophpArray_.is_array(hook.Get_at(0))) { if (XophpArray.is_array(hook.Get_at(0))) {
// First element is an array, meaning the developer intended // First element is an array, meaning the developer intended
// the first element to be a callback. Merge it in so that // the first element to be a callback. Merge it in so that
// processing can be uniform. // processing can be uniform.
hook = XophpArray_.array_merge(hook.Get_at_ary(0), XophpArray_.array_slice(hook, 1)); hook = XophpArray.array_merge(hook.Get_at_ary(0), XophpArray.array_slice(hook, 1));
} }
/** /**
@ -150,10 +150,10 @@ public class XomwHooks {
XophpCallback callback = null; XophpCallback callback = null;
if (XophpType_.instance_of(hook.Get_at(0), XophpCallback.class)) { // XophpClosure if (XophpType_.instance_of(hook.Get_at(0), XophpCallback.class)) { // XophpClosure
if (fname != null) fname.Val_("hook-" + event + "-closure"); if (fname != null) fname.Val_("hook-" + event + "-closure");
callback = (XophpCallback) XophpArray_.array_shift(hook); callback = (XophpCallback) XophpArray.array_shift(hook);
} else if (XophpObject_.is_object(hook.Get_at_str(0))) { } else if (XophpObject_.is_object(hook.Get_at_str(0))) {
XophpCallbackOwner object = (XophpCallbackOwner)XophpArray_.array_shift(hook); XophpCallbackOwner object = (XophpCallbackOwner)XophpArray.array_shift(hook);
String method = (String)XophpArray_.array_shift(hook); String method = (String)XophpArray.array_shift(hook);
// If no method was specified, default to on$event. // If no method was specified, default to on$event.
if (XophpObject_.is_null(method)) { if (XophpObject_.is_null(method)) {
@ -163,7 +163,7 @@ public class XomwHooks {
if (fname != null) fname.Val_(XophpType_.get_class(object).getName() + "::" + method); if (fname != null) fname.Val_(XophpType_.get_class(object).getName() + "::" + method);
callback = new XophpCallback(object, method); callback = new XophpCallback(object, method);
} else if (XophpString_.is_string(hook.Get_at(0))) { } else if (XophpString_.is_string(hook.Get_at(0))) {
throw new XomwMWException("XOMW does not support string callbacks! Should not have been passed here!; event={0}; fname={1}\n", event, XophpArray_.array_shift(hook)); throw new XomwMWException("XOMW does not support string callbacks! Should not have been passed here!; event={0}; fname={1}\n", event, XophpArray.array_shift(hook));
} else { } else {
throw new XomwMWException("Unknown datatype in hooks for {0}\n", event); throw new XomwMWException("Unknown datatype in hooks for {0}\n", event);
} }
@ -181,7 +181,7 @@ public class XomwHooks {
} }
// Call the hook. // Call the hook.
XophpArray hook_args = XophpArray_.array_merge(hook, args); XophpArray hook_args = XophpArray.array_merge(hook, args);
return (String) XophpCallback.call_user_func_array(callback, hook_args); return (String) XophpCallback.call_user_func_array(callback, hook_args);
} }
/** /**
@ -211,7 +211,7 @@ public class XomwHooks {
public static boolean run(String event, XophpArray args) {return run(event, args, null);} public static boolean run(String event, XophpArray args) {return run(event, args, null);}
public static boolean run(String event, XophpArray args, String deprecatedVersion) { public static boolean run(String event, XophpArray args, String deprecatedVersion) {
XophpArray handlers = getHandlers(event); XophpArray handlers = getHandlers(event);
for (int i = 0; i < handlers.count(); i++) { for (int i = 0; i < handlers.Len(); i++) {
XophpCallback hook = (XophpCallback)handlers.Get_at(i); XophpCallback hook = (XophpCallback)handlers.Get_at(i);
Object retval = callHook(event, hook, args, deprecatedVersion); Object retval = callHook(event, hook, args, deprecatedVersion);
if (retval == null) { if (retval == null) {
@ -245,7 +245,7 @@ public class XomwHooks {
public static boolean runWithoutAbort(String event) {return runWithoutAbort(event, XophpArray.New(), null);} public static boolean runWithoutAbort(String event) {return runWithoutAbort(event, XophpArray.New(), null);}
public static boolean runWithoutAbort(String event, XophpArray args, String deprecatedVersion) { public static boolean runWithoutAbort(String event, XophpArray args, String deprecatedVersion) {
XophpArray handlers = getHandlers(event); XophpArray handlers = getHandlers(event);
int len = handlers.count(); int len = handlers.Len();
for (int i = 0; i < len; i++) { for (int i = 0; i < len; i++) {
Object hookObj = handlers.Get_at(i); Object hookObj = handlers.Get_at(i);
String_obj_ref fname = String_obj_ref.empty_(); String_obj_ref fname = String_obj_ref.empty_();

View File

@ -17,7 +17,7 @@ package gplx.xowa.mediawiki.includes;
import gplx.String_; import gplx.String_;
import gplx.xowa.mediawiki.XophpArray; import gplx.xowa.mediawiki.XophpArray;
import gplx.xowa.mediawiki.XophpArray_; import gplx.xowa.mediawiki.XophpArray;
import gplx.xowa.mediawiki.XophpInvalidArgumentException; import gplx.xowa.mediawiki.XophpInvalidArgumentException;
import gplx.xowa.mediawiki.XophpObject_; import gplx.xowa.mediawiki.XophpObject_;
import gplx.xowa.mediawiki.XophpString_; import gplx.xowa.mediawiki.XophpString_;
@ -266,7 +266,7 @@ class XomwMessage { // implements MessageSpecifier, Serializable
if (XophpString_.is_string(key)) { if (XophpString_.is_string(key)) {
this.keysToTry = XophpArray.New(key); this.keysToTry = XophpArray.New(key);
} }
else if (XophpArray_.is_array(key)) { else if (XophpArray.is_array(key)) {
this.keysToTry = (XophpArray)key; this.keysToTry = (XophpArray)key;
} }
else { else {
@ -274,13 +274,13 @@ class XomwMessage { // implements MessageSpecifier, Serializable
} }
// XOMW.TYPE.END // XOMW.TYPE.END
if (XophpArray_.empty(this.keysToTry)) { if (XophpArray.empty(this.keysToTry)) {
throw new XophpInvalidArgumentException("{0} must not be an empty list", key); throw new XophpInvalidArgumentException("{0} must not be an empty list", key);
} }
this.key = (String)XophpArray.reset(this.keysToTry); this.key = (String)XophpArray.reset(this.keysToTry);
this.parameters = XophpArray_.array_values(params); this.parameters = XophpArray.array_values(params);
// User language is only resolved in getLanguage(). This helps preserve the // User language is only resolved in getLanguage(). This helps preserve the
// semantic intent of "user language" across serialize() and unserialize(). // semantic intent of "user language" across serialize() and unserialize().
this.language = (XomwLanguage)XophpObject_.Elvis(language, null); this.language = (XomwLanguage)XophpObject_.Elvis(language, null);

View File

@ -18,7 +18,7 @@ package gplx.xowa.mediawiki.includes;
// MW.SRC:1.33.1 // MW.SRC:1.33.1
import gplx.xowa.mediawiki.XophpArray; import gplx.xowa.mediawiki.XophpArray;
import gplx.xowa.mediawiki.XophpArray_; import gplx.xowa.mediawiki.XophpArray;
import gplx.xowa.mediawiki.XophpObject_; import gplx.xowa.mediawiki.XophpObject_;
import gplx.xowa.mediawiki.XophpString_; import gplx.xowa.mediawiki.XophpString_;
@ -88,7 +88,7 @@ public class XomwWebRequest {
// POST overrides GET data // POST overrides GET data
// We don't use $_REQUEST here to avoid interference from cookies... // We don't use $_REQUEST here to avoid interference from cookies...
this.data = XophpArray_.array_merge(_POST, _GET); this.data = XophpArray.array_merge(_POST, _GET);
} }
// /** // /**
@ -378,9 +378,9 @@ public class XomwWebRequest {
// https://secure.php.net/variables.external#language.variables.external.dot-in-names // https://secure.php.net/variables.external#language.variables.external.dot-in-names
// Work around PHP *feature* to avoid *bugs* elsewhere. // Work around PHP *feature* to avoid *bugs* elsewhere.
name = XophpString_.strtr(name, ".", "_"); name = XophpString_.strtr(name, ".", "_");
if (XophpArray_.isset(arr, name)) { if (XophpArray.isset(arr, name)) {
Object data = arr.Get_by(name); Object data = arr.Get_by(name);
if (XophpArray_.isset(_GET, name) && XophpString_.is_string(data)) { if (XophpArray.isset(_GET, name) && XophpString_.is_string(data)) {
// Check for alternate/legacy character encoding. // Check for alternate/legacy character encoding.
// $contLang = MediaWikiServices::getInstance().getContentLanguage(); // $contLang = MediaWikiServices::getInstance().getContentLanguage();
// $data = $contLang.checkTitleEncoding($data); // $data = $contLang.checkTitleEncoding($data);

View File

@ -250,11 +250,11 @@ public class XomwLocalisationCache {
* @return mixed * @return mixed
*/ */
public Object getItem(String code, String key) { public Object getItem(String code, String key) {
if (!this.loadedItems.Get_by_ary(code).isset(key)) { if (!XophpArray.isset(this.loadedItems.Get_by_ary(code), key)) {
// this.loadItem(code, key); // this.loadItem(code, key);
} }
if (String_.Eq(key, "fallback") && this.shallowFallbacks.isset(code)) { if (String_.Eq(key, "fallback") && XophpArray.isset(this.shallowFallbacks, code)) {
return this.shallowFallbacks.Get_by(code); return this.shallowFallbacks.Get_by(code);
} }

View File

@ -532,7 +532,7 @@ public abstract class ContentHandler {
return true; // this means "use the default" return true; // this means "use the default"
} }
return XophpArray_.in_array(format, this.mSupportedFormats); return XophpArray.in_array(format, this.mSupportedFormats);
} }
/** /**

View File

@ -41,7 +41,7 @@ public class XomwInterwikiLookupAdapter implements XomwInterwikiLookup {
* @return boolean Whether it exists * @return boolean Whether it exists
*/ */
public boolean isValidInterwiki(byte[] prefix) { public boolean isValidInterwiki(byte[] prefix) {
return XophpArray_.array_key_exists(prefix, this.getInterwikiMap()); return XophpArray.array_key_exists(prefix, this.getInterwikiMap());
} }
/** /**
@ -71,7 +71,7 @@ public class XomwInterwikiLookupAdapter implements XomwInterwikiLookup {
*/ */
public byte[][] getAllPrefixes(boolean local) { public byte[][] getAllPrefixes(boolean local) {
if (!local) { if (!local) {
XophpArray_.array_keys_bry(this.getInterwikiMap()); XophpArray.array_keys_bry(this.getInterwikiMap());
} }
List_adp res = List_adp_.New(); List_adp res = List_adp_.New();
Ordered_hash hash = this.getInterwikiMap(); Ordered_hash hash = this.getInterwikiMap();

View File

@ -16,7 +16,7 @@ Apache License: https://github.com/gnosygnu/xowa/blob/master/LICENSE-APACHE2.txt
package gplx.xowa.mediawiki.includes.libs.services; package gplx.xowa.mediawiki.includes.libs.services;
import gplx.xowa.mediawiki.XophpArray; import gplx.xowa.mediawiki.XophpArray;
import gplx.xowa.mediawiki.XophpArray_; import gplx.xowa.mediawiki.XophpArray;
import gplx.xowa.mediawiki.XophpCallback; import gplx.xowa.mediawiki.XophpCallback;
import gplx.xowa.mediawiki.XophpObject_; import gplx.xowa.mediawiki.XophpObject_;
import gplx.xowa.mediawiki.XophpType_; import gplx.xowa.mediawiki.XophpType_;
@ -154,24 +154,24 @@ public class XomwServiceContainer implements XomwDestructibleService {
*/ */
public void importWiring(XomwServiceContainer container) {this.importWiring(container, new XophpArray<>());} public void importWiring(XomwServiceContainer container) {this.importWiring(container, new XophpArray<>());}
public void importWiring(XomwServiceContainer container, XophpArray<String> skip) { public void importWiring(XomwServiceContainer container, XophpArray<String> skip) {
// XophpArray<String> newInstantiators = XophpArray_.array_diff_key( // XophpArray<String> newInstantiators = XophpArray.array_diff_key(
// container.serviceInstantiators, // container.serviceInstantiators,
// XophpArray_.array_flip(skip) // XophpArray.array_flip(skip)
// ); // );
// //
// this.serviceInstantiators = XophpArray_.array_merge( // this.serviceInstantiators = XophpArray.array_merge(
// this.serviceInstantiators, // this.serviceInstantiators,
// newInstantiators // newInstantiators
// ); // );
// //
// XophpArray<String> newManipulators = XophpArray_.array_diff( // XophpArray<String> newManipulators = XophpArray.array_diff(
// XophpArray_.array_keys(container.serviceManipulators), // XophpArray.array_keys(container.serviceManipulators),
// skip // skip
// ); // );
// //
// for (String name : newManipulators) { // for (String name : newManipulators) {
// if (XophpArray_.isset(this.serviceManipulators, name)) { // if (XophpArray.isset(this.serviceManipulators, name)) {
// this.serviceManipulators.Set(name, XophpArray_.array_merge( // this.serviceManipulators.Set(name, XophpArray.array_merge(
// this.serviceManipulators.Get_by(name), // this.serviceManipulators.Get_by(name),
// container.serviceManipulators.Get_by(name) // container.serviceManipulators.Get_by(name)
// )); // ));
@ -190,7 +190,7 @@ public class XomwServiceContainer implements XomwDestructibleService {
* @return bool * @return bool
*/ */
public boolean hasService(String name) { public boolean hasService(String name) {
return XophpArray_.isset(this.serviceInstantiators, name); return XophpArray.isset(this.serviceInstantiators, name);
} }
/** /**
@ -220,7 +220,7 @@ public class XomwServiceContainer implements XomwDestructibleService {
* @return string[] * @return string[]
*/ */
public XophpArray<String> getServiceNames() { public XophpArray<String> getServiceNames() {
return XophpArray_.array_keys(this.serviceInstantiators); return XophpArray.array_keys(this.serviceInstantiators);
} }
/** /**
@ -273,12 +273,12 @@ public class XomwServiceContainer implements XomwDestructibleService {
throw new XomwNoSuchServiceException(name); throw new XomwNoSuchServiceException(name);
} }
if (XophpArray_.isset(this.services, name)) { if (XophpArray.isset(this.services, name)) {
throw new XomwCannotReplaceActiveServiceException(name); throw new XomwCannotReplaceActiveServiceException(name);
} }
this.serviceInstantiators.Set(name, instantiator); this.serviceInstantiators.Set(name, instantiator);
XophpArray_.unset(this.disabled, name); XophpArray.unset(this.disabled, name);
} }
/** /**
@ -314,7 +314,7 @@ public class XomwServiceContainer implements XomwDestructibleService {
throw new XomwNoSuchServiceException(name); throw new XomwNoSuchServiceException(name);
} }
if (XophpArray_.isset(this.services, name)) { if (XophpArray.isset(this.services, name)) {
throw new XomwCannotReplaceActiveServiceException(name); throw new XomwCannotReplaceActiveServiceException(name);
} }
@ -379,8 +379,8 @@ public class XomwServiceContainer implements XomwDestructibleService {
((XomwDestructibleService)instance).destroy(); ((XomwDestructibleService)instance).destroy();
} }
XophpArray_.unset(this.services, name); XophpArray.unset(this.services, name);
XophpArray_.unset(this.disabled, name); XophpArray.unset(this.disabled, name);
} }
/** /**
@ -408,11 +408,11 @@ public class XomwServiceContainer implements XomwDestructibleService {
throw new XomwContainerDisabledException(); throw new XomwContainerDisabledException();
} }
if (XophpArray_.isset(this.disabled, name)) { if (XophpArray.isset(this.disabled, name)) {
throw new XomwServiceDisabledException(name); throw new XomwServiceDisabledException(name);
} }
if (!XophpArray_.isset(this.services, name)) { if (!XophpArray.isset(this.services, name)) {
this.services.Set(name, this.createService(name)); this.services.Set(name, this.createService(name));
} }
@ -427,18 +427,18 @@ public class XomwServiceContainer implements XomwDestructibleService {
*/ */
private Object createService(String name) { private Object createService(String name) {
Object service; Object service;
if (XophpArray_.isset(this.serviceInstantiators, name)) { if (XophpArray.isset(this.serviceInstantiators, name)) {
service = (this.serviceInstantiators.Get_by(name)).Call( service = (this.serviceInstantiators.Get_by(name)).Call(
this, this,
this.extraInstantiationParams this.extraInstantiationParams
); );
if (XophpArray_.isset(this.serviceManipulators, name)) { if (XophpArray.isset(this.serviceManipulators, name)) {
Object ret; Object ret;
for (XophpCallback callback : this.serviceManipulators.Get_by(name)) { for (XophpCallback callback : this.serviceManipulators.Get_by(name)) {
ret = XophpCallback.call_user_func_array( ret = XophpCallback.call_user_func_array(
callback, callback,
XophpArray_.array_merge(XophpArray.New(service, this), this.extraInstantiationParams) XophpArray.array_merge(XophpArray.New(service, this), this.extraInstantiationParams)
); );
// If the manipulator callback returns an object, that object replaces // If the manipulator callback returns an object, that object replaces
@ -464,6 +464,6 @@ public class XomwServiceContainer implements XomwDestructibleService {
* @since 1.28 * @since 1.28
*/ */
public boolean isServiceDisabled(String name) { public boolean isServiceDisabled(String name) {
return XophpArray_.isset(this.disabled, name); return XophpArray.isset(this.disabled, name);
} }
} }

View File

@ -4051,29 +4051,29 @@ public class XomwParser implements XomwParserIface {
// result = this.callParserFunction(frame, func, funcArgs); // result = this.callParserFunction(frame, func, funcArgs);
// Extract any forwarded flags // Extract any forwarded flags
if (XophpArray_.isset(result, "title")) { if (XophpArray.isset(result, "title")) {
title = (XomwTitleOld)result.Get_by("title"); title = (XomwTitleOld)result.Get_by("title");
} }
if (XophpArray_.isset(result, "found")) { if (XophpArray.isset(result, "found")) {
found = result.Get_by_bool("found"); found = result.Get_by_bool("found");
} }
if (XophpArray_.array_key_exists("text", result)) { if (XophpArray.array_key_exists("text", result)) {
// a String or null // a String or null
text = result.Get_by_str("text"); text = result.Get_by_str("text");
} }
if (XophpArray_.isset(result, "nowiki")) { if (XophpArray.isset(result, "nowiki")) {
nowiki = result.Get_by_bool("nowiki"); nowiki = result.Get_by_bool("nowiki");
} }
if (XophpArray_.isset(result, "isHTML")) { if (XophpArray.isset(result, "isHTML")) {
isHTML = result.Get_by_bool("isHTML"); isHTML = result.Get_by_bool("isHTML");
} }
if (XophpArray_.isset(result, "forceRawInterwiki")) { if (XophpArray.isset(result, "forceRawInterwiki")) {
forceRawInterwiki = result.Get_by_bool("forceRawInterwiki"); forceRawInterwiki = result.Get_by_bool("forceRawInterwiki");
} }
if (XophpArray_.isset(result, "isChildObj")) { if (XophpArray.isset(result, "isChildObj")) {
isChildObj = result.Get_by_bool("isChildObj"); isChildObj = result.Get_by_bool("isChildObj");
} }
if (XophpArray_.isset(result, "isLocalObj")) { if (XophpArray.isset(result, "isLocalObj")) {
isLocalObj = result.Get_by_bool("isLocalObj"); isLocalObj = result.Get_by_bool("isLocalObj");
} }
} }

View File

@ -118,7 +118,7 @@ class XomwPreprocessor_DOM extends XomwPreprocessor { private final Bry_bfr
tmp_bfr.Add_str_a7("<title>").Add(title).Add_str_a7("</title>"); tmp_bfr.Add_str_a7("<title>").Add(title).Add_str_a7("</title>");
int arg_idx = 1; int arg_idx = 1;
int parts_len = parts.count(); int parts_len = parts.Len();
for (int j = 0; j < parts_len; j++) { for (int j = 0; j < parts_len; j++) {
XomwPPDPart_DOM part = (XomwPPDPart_DOM)parts.Get_at(j); XomwPPDPart_DOM part = (XomwPPDPart_DOM)parts.Get_at(j);
if (part.eqpos != 0) { if (part.eqpos != 0) {
@ -144,7 +144,7 @@ class XomwPreprocessor_DOM extends XomwPreprocessor { private final Bry_bfr
} }
@Override protected Object preprocessToObj_term(XomwPPDStack stack) { @Override protected Object preprocessToObj_term(XomwPPDStack stack) {
Bry_bfr root_accum = Bry_bfr_.New().Add_str_u8(((Xomw_prepro_accum__dom)stack.Get_root_accum()).To_str()); Bry_bfr root_accum = Bry_bfr_.New().Add_str_u8(((Xomw_prepro_accum__dom)stack.Get_root_accum()).To_str());
int stack_len = stack.stack.count(); int stack_len = stack.stack.Len();
for (int j = 0; j < stack_len; j++) { for (int j = 0; j < stack_len; j++) {
// XomwPPDStackElement_Hash piece = (XomwPPDStackElement_Hash)stack.stack.Get_at(j); // XomwPPDStackElement_Hash piece = (XomwPPDStackElement_Hash)stack.stack.Get_at(j);
// root_accum.Add((XophpArray)piece.breakSyntax(tmp_bfr)); // root_accum.Add((XophpArray)piece.breakSyntax(tmp_bfr));

View File

@ -55,7 +55,7 @@ class XomwPreprocessor_Hash extends XomwPreprocessor { private XophpArray accum
accum.Add(XophpArray.New("comment", XophpArray.New(XophpString_.substr(src, bgn, end - bgn)))); accum.Add(XophpArray.New("comment", XophpArray.New(XophpString_.substr(src, bgn, end - bgn))));
} }
@Override protected void preprocessToObj_removeLeadingWhitespaceFromEnd(int ws_len) { @Override protected void preprocessToObj_removeLeadingWhitespaceFromEnd(int ws_len) {
int endIndex = accum.count() - 1; int endIndex = accum.Len() - 1;
if ( ws_len > 0 if ( ws_len > 0
&& endIndex >= 0) { && endIndex >= 0) {
Object itm_obj = accum.Get_at(endIndex); Object itm_obj = accum.Get_at(endIndex);
@ -86,7 +86,7 @@ class XomwPreprocessor_Hash extends XomwPreprocessor { private XophpArray accum
rv.Ary().Add rv.Ary().Add
( XophpArray.New ( XophpArray.New
( "h", ( "h",
XophpArray_.array_merge XophpArray.array_merge
( XophpArray.New ( XophpArray.New
( XophpArray.New("@level", XophpArray.New(count)) ( XophpArray.New("@level", XophpArray.New(count))
, XophpArray.New("@i" , XophpArray.New(heading_index)) , XophpArray.New("@i" , XophpArray.New(heading_index))
@ -98,7 +98,7 @@ class XomwPreprocessor_Hash extends XomwPreprocessor { private XophpArray accum
return rv; return rv;
} }
@Override protected void preprocessToObj_heading_end(Xomw_prepro_accum element) { @Override protected void preprocessToObj_heading_end(Xomw_prepro_accum element) {
XophpArray_.array_splice(accum, accum.count(), 0, ((Xomw_prepro_accum__hash)element).Ary()); XophpArray.array_splice(accum, XophpArray.count(accum), 0, ((Xomw_prepro_accum__hash)element).Ary());
} }
@Override protected Xomw_prepro_accum preprocessToObj_text(XomwPPDStackElement piece, byte[] rule_end, int matching_count) { @Override protected Xomw_prepro_accum preprocessToObj_text(XomwPPDStackElement piece, byte[] rule_end, int matching_count) {
@ -122,14 +122,14 @@ class XomwPreprocessor_Hash extends XomwPreprocessor { private XophpArray accum
children.Add(titleNode); children.Add(titleNode);
int argIndex = 1; int argIndex = 1;
int parts_len = parts.count(); int parts_len = parts.Len();
for (int j = 0; j < parts_len; j++) { for (int j = 0; j < parts_len; j++) {
XomwPPDPart_Hash part = (XomwPPDPart_Hash)parts.Get_at(j); XomwPPDPart_Hash part = (XomwPPDPart_Hash)parts.Get_at(j);
XophpArray part_out = (XophpArray)part.Accum_hash().Ary(); XophpArray part_out = (XophpArray)part.Accum_hash().Ary();
if (part.eqpos != 0) { if (part.eqpos != 0) {
Object equalsNode = part_out.Get_at(part.eqpos); Object equalsNode = part_out.Get_at(part.eqpos);
XophpArray nameNode = XophpArray.New("name" , XophpArray_.array_slice(part_out, 0, part.eqpos)); XophpArray nameNode = XophpArray.New("name" , XophpArray.array_slice(part_out, 0, part.eqpos));
XophpArray valueNode = XophpArray.New("value", XophpArray_.array_slice(part_out, part.eqpos + 1)); XophpArray valueNode = XophpArray.New("value", XophpArray.array_slice(part_out, part.eqpos + 1));
XophpArray partNode = XophpArray.New("part" , XophpArray.New(nameNode, equalsNode, valueNode)); XophpArray partNode = XophpArray.New("part" , XophpArray.New(nameNode, equalsNode, valueNode));
children.Add(partNode); children.Add(partNode);
} }
@ -144,19 +144,19 @@ class XomwPreprocessor_Hash extends XomwPreprocessor { private XophpArray accum
return new Xomw_prepro_accum__hash(element); return new Xomw_prepro_accum__hash(element);
} }
@Override protected void preprocessToObj_add_element(Xomw_prepro_accum element) { @Override protected void preprocessToObj_add_element(Xomw_prepro_accum element) {
XophpArray_.array_splice(accum, accum.count(), 0, ((Xomw_prepro_accum__hash)element).Ary()); XophpArray.array_splice(accum, XophpArray.count(accum), 0, ((Xomw_prepro_accum__hash)element).Ary());
} }
@Override protected void preprocessToObj_equals(XomwPPDStack stack) { @Override protected void preprocessToObj_equals(XomwPPDStack stack) {
accum.Add(XophpArray.New("equals", XophpArray.New("="))); accum.Add(XophpArray.New("equals", XophpArray.New("=")));
stack.getCurrentPart().eqpos = accum.count() - 1; stack.getCurrentPart().eqpos = XophpArray.count(accum) - 1;
} }
@Override protected Object preprocessToObj_term(XomwPPDStack stack) { @Override protected Object preprocessToObj_term(XomwPPDStack stack) {
Xomw_prepro_accum__hash stack_accum = (Xomw_prepro_accum__hash)stack.getAccum(); Xomw_prepro_accum__hash stack_accum = (Xomw_prepro_accum__hash)stack.getAccum();
XophpArray stack_ary = stack_accum.Ary(); XophpArray stack_ary = stack_accum.Ary();
int len = stack_ary.count(); int len = stack_ary.Len();
for (int i = 0; i < len; i++) { for (int i = 0; i < len; i++) {
// XomwPPDPart_Hash piece = (XomwPPDPart_Hash)(stack_ary.Get_at(i).Val()); // XomwPPDPart_Hash piece = (XomwPPDPart_Hash)(stack_ary.Get_at(i).Val());
// XophpArray_.array_splice(stack_ary, stack_ary.Len(), 0, piece.breakSyntax()); // XophpArray.array_splice(stack_ary, stack_ary.Len(), 0, piece.breakSyntax());
} }
// for ( $stack->stack as $piece ) { // for ( $stack->stack as $piece ) {
// array_splice( $stack->rootAccum, count( $stack->rootAccum ), 0, $piece->breakSyntax() ); // array_splice( $stack->rootAccum, count( $stack->rootAccum ), 0, $piece->breakSyntax() );
@ -184,7 +184,7 @@ class XomwPreprocessor_Hash extends XomwPreprocessor { private XophpArray accum
private static void addLiteral(XophpArray accum, byte[] text) {addLiteral(accum, String_.new_u8(text));} private static void addLiteral(XophpArray accum, byte[] text) {addLiteral(accum, String_.new_u8(text));}
private static void addLiteral(XophpArray accum, String text) { private static void addLiteral(XophpArray accum, String text) {
int n = accum.count(); int n = accum.Len();
Object itm = accum.Get_at(n - 1); Object itm = accum.Get_at(n - 1);
if (n > 0 && XophpType_.is_string(itm)) { if (n > 0 && XophpType_.is_string(itm)) {
accum.Set(n - 1, ((String)itm) + text); accum.Set(n - 1, ((String)itm) + text);

View File

@ -43,7 +43,7 @@ public class XomwPPDStack {
* @return int * @return int
*/ */
public int count() { public int count() {
return this.stack.count(); return XophpArray.count(this.stack);
} }
public Xomw_prepro_accum getAccum() { public Xomw_prepro_accum getAccum() {
@ -65,17 +65,17 @@ public class XomwPPDStack {
// $class = this.elementClass; // $class = this.elementClass;
// this.stack[] = new $class($data); // this.stack[] = new $class($data);
// } // }
this.top = (XomwPPDStackElement)this.stack.Get_at(this.stack.count() - 1); this.top = (XomwPPDStackElement)this.stack.Get_at(XophpArray.count(this.stack) - 1);
this.accum = this.top.getAccum(); this.accum = this.top.getAccum();
} }
public XomwPPDStackElement pop() { public XomwPPDStackElement pop() {
if (this.stack.count() == 0) { if (XophpArray.count(this.stack) == 0) {
throw XomwMWException.New_by_method(XomwPPDStack.class, "pop", "no elements remaining"); throw XomwMWException.New_by_method(XomwPPDStack.class, "pop", "no elements remaining");
} }
XomwPPDStackElement temp = (XomwPPDStackElement)this.stack.pop(); XomwPPDStackElement temp = (XomwPPDStackElement)XophpArray.array_pop(this.stack);
if (this.stack.count()> 0) { if (XophpArray.count(this.stack)> 0) {
this.top = (XomwPPDStackElement)this.stack.Get_at(this.stack.count() - 1); this.top = (XomwPPDStackElement)this.stack.Get_at(XophpArray.count(this.stack) - 1);
this.accum = this.top.getAccum(); this.accum = this.top.getAccum();
} else { } else {
this.top = null; this.top = null;
@ -93,7 +93,7 @@ public class XomwPPDStack {
* @return array * @return array
*/ */
public XomwPPDStackElementFlags getFlags() { public XomwPPDStackElementFlags getFlags() {
if (this.stack.count() == 0) { if (XophpArray.count(this.stack) == 0) {
return XomwPPDStackElementFlags.Empty; return XomwPPDStackElementFlags.Empty;
} }
else { else {

View File

@ -63,7 +63,7 @@ public class XomwPPDStackElement {
} }
public Xomw_prepro_accum getAccum() { public Xomw_prepro_accum getAccum() {
return (Xomw_prepro_accum)Get_at(this.parts.count() - 1).Accum(); return (Xomw_prepro_accum)Get_at(XophpArray.count(this.parts) - 1).Accum();
} }
public void addPart(String s) { public void addPart(String s) {
@ -74,14 +74,14 @@ public class XomwPPDStackElement {
} }
public XomwPPDPart getCurrentPart() { public XomwPPDPart getCurrentPart() {
return (XomwPPDPart)Get_at(this.parts.count() - 1); return (XomwPPDPart)Get_at(XophpArray.count(this.parts) - 1);
} }
/** /**
* @return array * @return array
*/ */
public XomwPPDStackElementFlags getFlags() { public XomwPPDStackElementFlags getFlags() {
int partCount = this.parts.count(); int partCount = XophpArray.count(this.parts);
boolean findPipe = String_.EqNot(this.open, "\n") && String_.EqNot(this.open, "["); boolean findPipe = String_.EqNot(this.open, "\n") && String_.EqNot(this.open, "[");
return new XomwPPDStackElementFlags return new XomwPPDStackElementFlags
( findPipe ( findPipe
@ -108,7 +108,7 @@ public class XomwPPDStackElement {
} }
bfr.Add_str(XophpString_.str_repeat(this.open, openingCount)); bfr.Add_str(XophpString_.str_repeat(this.open, openingCount));
boolean first = true; boolean first = true;
int parts_len = parts.count(); int parts_len = parts.Len();
for (int i = 0; i < parts_len; i++) { for (int i = 0; i < parts_len; i++) {
XomwPPDPart_DOM part = (XomwPPDPart_DOM)Get_at(i); XomwPPDPart_DOM part = (XomwPPDPart_DOM)Get_at(i);
if (first) { if (first) {

View File

@ -42,7 +42,7 @@ public class XomwPPDStackElement_Hash extends XomwPPDStackElement { public Xomw
accum = XophpArray.New(XophpString_.str_repeat(this.open, openingCount)); accum = XophpArray.New(XophpString_.str_repeat(this.open, openingCount));
int lastIndex = 0; int lastIndex = 0;
boolean first = true; boolean first = true;
int parts_len = parts.count(); int parts_len = parts.Len();
for (int i = 0; i < parts_len; i++) { for (int i = 0; i < parts_len; i++) {
XomwPPDPart_Hash part = Get_at_hash(i); XomwPPDPart_Hash part = Get_at_hash(i);
if (first) { if (first) {
@ -55,7 +55,7 @@ public class XomwPPDStackElement_Hash extends XomwPPDStackElement { public Xomw
} }
XophpArray part_out = ((Xomw_prepro_accum__hash)part.Accum()).Ary(); XophpArray part_out = ((Xomw_prepro_accum__hash)part.Accum()).Ary();
int part_out_len = part_out.count(); int part_out_len = part_out.Len();
for (int j = 0; j < part_out_len; j++) { for (int j = 0; j < part_out_len; j++) {
Object node = part_out.Get_at(j); Object node = part_out.Get_at(j);
if (XophpType_.is_string(node) && XophpType_.is_string(accum.Get_at(lastIndex))) { if (XophpType_.is_string(node) && XophpType_.is_string(accum.Get_at(lastIndex))) {

View File

@ -97,14 +97,14 @@ public class XomwPPFrame_Hash extends XomwPPFrame { /**
args = (XophpArray)argsObj; args = (XophpArray)argsObj;
} }
int argsLen = args.count(); int argsLen = args.Len();
for (int i = 0; i < argsLen; i++) { for (int i = 0; i < argsLen; i++) {
XomwPPNode arg = (XomwPPNode)args.Get_at(i); XomwPPNode arg = (XomwPPNode)args.Get_at(i);
XophpArray bits = arg.splitArg(); XophpArray bits = arg.splitArg();
if (bits.Has("index")) { if (bits.Has("index")) {
// Numbered parameter // Numbered parameter
int index = bits.Get_by_int("index") - indexOffset; int index = bits.Get_by_int("index") - indexOffset;
if (namedArgs.isset(index) || numberedArgs.isset(index)) { if (XophpArray.isset(namedArgs, index) || XophpArray.isset(numberedArgs, index)) {
// this.parser.getOutput().addWarning(wfMessage('duplicate-args-warning', // this.parser.getOutput().addWarning(wfMessage('duplicate-args-warning',
// wfEscapeWikiText(this.title), // wfEscapeWikiText(this.title),
// wfEscapeWikiText(title), // wfEscapeWikiText(title),
@ -112,11 +112,11 @@ public class XomwPPFrame_Hash extends XomwPPFrame { /**
// this.parser.addTrackingCategory('duplicate-args-category'); // this.parser.addTrackingCategory('duplicate-args-category');
} }
numberedArgs.Set(index, bits.Get_by("value")); numberedArgs.Set(index, bits.Get_by("value"));
namedArgs.unset(index); XophpArray.unset(namedArgs, index);
} else { } else {
// Named parameter // Named parameter
String name = String_.Trim(this.expand(bits.Get_by("name"), XomwPPFrame.STRIP_COMMENTS)); String name = String_.Trim(this.expand(bits.Get_by("name"), XomwPPFrame.STRIP_COMMENTS));
if (namedArgs.isset(name) || numberedArgs.isset(name)) { if (XophpArray.isset(namedArgs, name) || XophpArray.isset(numberedArgs, name)) {
// this.parser.getOutput().addWarning(wfMessage('duplicate-args-warning', // this.parser.getOutput().addWarning(wfMessage('duplicate-args-warning',
// wfEscapeWikiText(this.title), // wfEscapeWikiText(this.title),
// wfEscapeWikiText(title), // wfEscapeWikiText(title),
@ -124,7 +124,7 @@ public class XomwPPFrame_Hash extends XomwPPFrame { /**
// this.parser.addTrackingCategory('duplicate-args-category'); // this.parser.addTrackingCategory('duplicate-args-category');
} }
namedArgs.Set(name, bits.Get_by("value")); namedArgs.Set(name, bits.Get_by("value"));
numberedArgs.unset(name); XophpArray.unset(numberedArgs, name);
} }
} }
} }
@ -179,15 +179,15 @@ public class XomwPPFrame_Hash extends XomwPPFrame { /**
XophpArray iteratorStack = XophpArray.New(XophpObject_.False, root); XophpArray iteratorStack = XophpArray.New(XophpObject_.False, root);
XophpArray indexStack = XophpArray.New(0, 0); XophpArray indexStack = XophpArray.New(0, 0);
while (iteratorStack.count() > 1) { while (XophpArray.count(iteratorStack) > 1) {
int level = outStack.count() - 1; int level = XophpArray.count(outStack) - 1;
Object iteratorNode = iteratorStack.Get_at(level); Object iteratorNode = iteratorStack.Get_at(level);
String outItm = outStack.Get_at_str(level); String outItm = outStack.Get_at_str(level);
int index = indexStack.Get_at_int(level); int index = indexStack.Get_at_int(level);
Object contextNode; Object contextNode;
if (XophpArray.is_array(iteratorNode)) { if (XophpArray.is_array(iteratorNode)) {
XophpArray iteratorNodeArray = (XophpArray)iteratorNode; XophpArray iteratorNodeArray = (XophpArray)iteratorNode;
if (index >= iteratorNodeArray.count()) { if (index >= XophpArray.count(iteratorNodeArray)) {
// All done with this iterator // All done with this iterator
iteratorStack.Set(level, XophpObject_.False); iteratorStack.Set(level, XophpObject_.False);
contextNode = XophpObject_.False; contextNode = XophpObject_.False;
@ -233,7 +233,7 @@ public class XomwPPFrame_Hash extends XomwPPFrame { /**
} else if (XophpArray.is_array(contextNode)) { } else if (XophpArray.is_array(contextNode)) {
XophpArray contextNodeArray = (XophpArray)contextNode; XophpArray contextNodeArray = (XophpArray)contextNode;
// Node descriptor array // Node descriptor array
if (contextNodeArray.count() != 2) { if (XophpArray.count(contextNodeArray) != 2) {
throw XomwMWException.New_by_method(XomwPPFrame_Hash.class, "expand", throw XomwMWException.New_by_method(XomwPPFrame_Hash.class, "expand",
": found an array where a node descriptor should be"); ": found an array where a node descriptor should be");
} }
@ -259,7 +259,7 @@ public class XomwPPFrame_Hash extends XomwPPFrame { /**
); );
} else { } else {
XophpArray ret = this.parser.braceSubstitution(bits, this); XophpArray ret = this.parser.braceSubstitution(bits, this);
if (ret.isset(Object_.Cls_val_name)) {// NOTE: using Cls_val_name b/c of transpilation and Object . Object if (XophpArray.isset(ret, Object_.Cls_val_name)) {// NOTE: using Cls_val_name b/c of transpilation and Object . Object
newIterator = ret.Get_by(Object_.Cls_val_name); newIterator = ret.Get_by(Object_.Cls_val_name);
} else { } else {
outItm += ret.Get_by_str("text"); outItm += ret.Get_by_str("text");
@ -276,7 +276,7 @@ public class XomwPPFrame_Hash extends XomwPPFrame { /**
); );
} else { } else {
XophpArray ret = this.parser.argSubstitution(bits, this); XophpArray ret = this.parser.argSubstitution(bits, this);
if (ret.isset(Object_.Cls_val_name)) {// NOTE: using Cls_val_name b/c of transpilation and Object . Object if (XophpArray.isset(ret, Object_.Cls_val_name)) {// NOTE: using Cls_val_name b/c of transpilation and Object . Object
newIterator = ret.Get_by("Object"); newIterator = ret.Get_by("Object");
} else { } else {
outItm += ret.Get_by_str("text"); outItm += ret.Get_by_str("text");
@ -343,7 +343,7 @@ public class XomwPPFrame_Hash extends XomwPPFrame { /**
XophpArray bits = XomwPPNode_Hash_Tree.splitRawHeading(contextChildren); XophpArray bits = XomwPPNode_Hash_Tree.splitRawHeading(contextChildren);
String titleText = this.title.getPrefixedDBkeyStr(); String titleText = this.title.getPrefixedDBkeyStr();
this.parser.mHeadings.Add(titleText, bits.Get_by("i")); this.parser.mHeadings.Add(titleText, bits.Get_by("i"));
int serial = XophpArray_.count(this.parser.mHeadings) - 1; int serial = XophpArray.count(this.parser.mHeadings) - 1;
String marker = XomwParser.MARKER_PREFIX + "-h-" + Int_.To_str(serial) + "-" + XomwParser.MARKER_SUFFIX; String marker = XomwParser.MARKER_PREFIX + "-h-" + Int_.To_str(serial) + "-" + XomwParser.MARKER_SUFFIX;
s = XophpString_.substr(s, 0, bits.Get_by_int("level")) + marker + XophpString_.substr(s, bits.Get_by_int("level")); s = XophpString_.substr(s, 0, bits.Get_by_int("level")) + marker + XophpString_.substr(s, bits.Get_by_int("level"));
this.parser.mStripState.addGeneral(marker, ""); this.parser.mStripState.addGeneral(marker, "");
@ -366,9 +366,9 @@ public class XomwPPFrame_Hash extends XomwPPFrame { /**
// With tail recursion // With tail recursion
while (!XophpObject_.is_true(iteratorStack.Get_at(level)) && level > 0) { while (!XophpObject_.is_true(iteratorStack.Get_at(level)) && level > 0) {
outStack.Itm_str_concat_end(level - 1, outItm); outStack.Itm_str_concat_end(level - 1, outItm);
outStack.pop(); XophpArray.array_pop(outStack);
iteratorStack.pop(); XophpArray.array_pop(iteratorStack);
indexStack.pop(); XophpArray.array_pop(indexStack);
level--; level--;
} }
} }
@ -384,7 +384,7 @@ public class XomwPPFrame_Hash extends XomwPPFrame { /**
* @return String * @return String
*/ */
public String implodeWithFlags(String sep, int flags, XophpArray args) { public String implodeWithFlags(String sep, int flags, XophpArray args) {
// args = XophpArray_.array_slice(func_get_args(), 2); // args = XophpArray.array_slice(func_get_args(), 2);
boolean first = true; boolean first = true;
String s = ""; String s = "";
@ -430,7 +430,7 @@ public class XomwPPFrame_Hash extends XomwPPFrame { /**
if (!XophpArray.is_array(rootObj)) { if (!XophpArray.is_array(rootObj)) {
root = XophpArray.New(root); root = XophpArray.New(root);
} }
int rootLen = root.count(); int rootLen = root.Len();
for (int i = 0; i < rootLen; i++) { for (int i = 0; i < rootLen; i++) {
Object node = root.Get_at(i); Object node = root.Get_at(i);
if (first) { if (first) {
@ -464,7 +464,7 @@ public class XomwPPFrame_Hash extends XomwPPFrame { /**
if (!XophpArray.is_array(rootObj)) { if (!XophpArray.is_array(rootObj)) {
root = XophpArray.New(root); root = XophpArray.New(root);
} }
int rootLen = root.count(); int rootLen = root.Len();
for (int i = 0; i < rootLen; i++) { for (int i = 0; i < rootLen; i++) {
Object node = root.Get_at(i); Object node = root.Get_at(i);
if (first) { if (first) {
@ -499,7 +499,7 @@ public class XomwPPFrame_Hash extends XomwPPFrame { /**
if (!XophpArray.is_array(rootObj)) { if (!XophpArray.is_array(rootObj)) {
root = XophpArray.New((String)rootObj); root = XophpArray.New((String)rootObj);
} }
int root_len = root.count(); int root_len = root.Len();
for (int i = 0; i < root_len; i++) { for (int i = 0; i < root_len; i++) {
String node = root.Get_at_str(i); String node = root.Get_at_str(i);
if (first) { if (first) {
@ -527,7 +527,7 @@ public class XomwPPFrame_Hash extends XomwPPFrame { /**
return this.title.getPrefixedDBkeyStr(); return this.title.getPrefixedDBkeyStr();
} else { } else {
// return isset( $this->titleCache[$level] ) ? $this->titleCache[$level] : false; // return isset( $this->titleCache[$level] ) ? $this->titleCache[$level] : false;
return this.titleCache.count() > 0 ? ((String)this.titleCache.Get_at(0)) : XophpString_.False; return XophpArray.count(this.titleCache) > 0 ? ((String)this.titleCache.Get_at(0)) : XophpString_.False;
} }
} }
@ -577,7 +577,7 @@ public class XomwPPFrame_Hash extends XomwPPFrame { /**
* @return boolean * @return boolean
*/ */
@Override public boolean loopCheck(XomwTitleOld title) { @Override public boolean loopCheck(XomwTitleOld title) {
return !this.loopCheckHash.isset(title.getPrefixedDBkeyStr()); return !XophpArray.isset(this.loopCheckHash, title.getPrefixedDBkeyStr());
} }
/** /**

View File

@ -31,7 +31,7 @@ public class XomwPPNode_Hash_Array extends XomwPPNode { public XophpArray value
} }
@Override public int getLength() { @Override public int getLength() {
return XophpArray_.count(this.value); return XophpArray.count(this.value);
} }
@Override public XomwPPNode item(int i) { @Override public XomwPPNode item(int i) {

View File

@ -13,7 +13,8 @@ The terms of each license can be found in the source code repository:
GPLv3 License: https://github.com/gnosygnu/xowa/blob/master/LICENSE-GPLv3.txt GPLv3 License: https://github.com/gnosygnu/xowa/blob/master/LICENSE-GPLv3.txt
Apache License: https://github.com/gnosygnu/xowa/blob/master/LICENSE-APACHE2.txt Apache License: https://github.com/gnosygnu/xowa/blob/master/LICENSE-APACHE2.txt
*/ */
package gplx.xowa.mediawiki.includes.parsers.preprocessors; import gplx.*; import gplx.xowa.*; import gplx.xowa.mediawiki.*; import gplx.xowa.mediawiki.includes.*; import gplx.xowa.mediawiki.includes.parsers.*; package gplx.xowa.mediawiki.includes.parsers.preprocessors; import gplx.*;
import gplx.xowa.mediawiki.*;
// MW.FILE:Preprocessor_Hash // MW.FILE:Preprocessor_Hash
/** /**
* @ingroup Parser * @ingroup Parser
@ -138,7 +139,7 @@ public class XomwPPNode_Hash_Tree extends XomwPPNode { public final String na
int rawChildrenLen = rawChildren.Len(); int rawChildrenLen = rawChildren.Len();
for (int i = 0; i < rawChildrenLen; i++) { for (int i = 0; i < rawChildrenLen; i++) {
XophpArrayItm itm = rawChildren.Get_at_itm(i); XophpArrayItm itm = rawChildren.Get_at_itm(i);
children.Add(XomwPPNode_Hash_Tree.factory(this.rawChildren, itm.Key_as_int())); children.Add(XomwPPNode_Hash_Tree.factory(this.rawChildren, itm.KeyAsInt()));
} }
return new XomwPPNode_Hash_Array(children); return new XomwPPNode_Hash_Array(children);
} }
@ -151,7 +152,7 @@ public class XomwPPNode_Hash_Tree extends XomwPPNode { public final String na
* @return PPNode_Hash_Tree|PPNode_Hash_Attr|PPNode_Hash_Text|boolean * @return PPNode_Hash_Tree|PPNode_Hash_Attr|PPNode_Hash_Text|boolean
*/ */
@Override public XomwPPNode getFirstChild() { @Override public XomwPPNode getFirstChild() {
if (this.rawChildren.isset(0)) { if (XophpArray.isset(this.rawChildren, 0)) {
return null; return null;
} }
else { else {
@ -183,7 +184,7 @@ public class XomwPPNode_Hash_Tree extends XomwPPNode { public final String na
XophpArrayItm itm = this.rawChildren.Get_at_itm(idx); XophpArrayItm itm = this.rawChildren.Get_at_itm(idx);
Object child = itm.Val(); Object child = itm.Val();
if (XophpType_.is_array(child) && String_.Eq(((XophpArray)child).Get_at_str(XomwPPNode_Hash_Tree.NAME), name)) { if (XophpType_.is_array(child) && String_.Eq(((XophpArray)child).Get_at_str(XomwPPNode_Hash_Tree.NAME), name)) {
children.Add(XomwPPNode_Hash_Tree.factory(this.rawChildren, itm.Key_as_int())); children.Add(XomwPPNode_Hash_Tree.factory(this.rawChildren, itm.KeyAsInt()));
} }
} }
return new XomwPPNode_Hash_Array(children); return new XomwPPNode_Hash_Array(children);
@ -245,7 +246,7 @@ public class XomwPPNode_Hash_Tree extends XomwPPNode { public final String na
continue; continue;
} }
XophpArray child = (XophpArray)childObj; XophpArray child = (XophpArray)childObj;
int i = itm.Key_as_int(); int i = itm.KeyAsInt();
if (String_.Eq(child.Get_at_str(XomwPPNode_Hash_Tree.NAME), "name")) { if (String_.Eq(child.Get_at_str(XomwPPNode_Hash_Tree.NAME), "name")) {
bits.Set("name", new XomwPPNode_Hash_Tree(children, i)); bits.Set("name", new XomwPPNode_Hash_Tree(children, i));
if (XophpObject_.isset_obj(child.Get_at_ary(XomwPPNode_Hash_Tree.CHILDREN).Get_at_ary(0).Get_at(XomwPPNode_Hash_Tree.NAME)) if (XophpObject_.isset_obj(child.Get_at_ary(XomwPPNode_Hash_Tree.CHILDREN).Get_at_ary(0).Get_at(XomwPPNode_Hash_Tree.NAME))
@ -284,7 +285,7 @@ public class XomwPPNode_Hash_Tree extends XomwPPNode { public final String na
*/ */
public static XophpArray splitRawExt(XophpArray children) { public static XophpArray splitRawExt(XophpArray children) {
XophpArray bits = XophpArray.New(); XophpArray bits = XophpArray.New();
int len = children.count(); int len = children.Len();
for (int i = 0; i < len; i++) { for (int i = 0; i < len; i++) {
Object childObj = children.Get_at(i); Object childObj = children.Get_at(i);
if (!XophpArray.is_array(childObj)) { if (!XophpArray.is_array(childObj)) {
@ -305,7 +306,7 @@ public class XomwPPNode_Hash_Tree extends XomwPPNode { public final String na
bits.Add("close", new XomwPPNode_Hash_Tree(children, i)); bits.Add("close", new XomwPPNode_Hash_Tree(children, i));
} }
} }
if (!bits.isset("name")) { if (!XophpArray.isset(bits, "name")) {
throw new XomwMWException("Invalid ext node passed to " + "splitRawExt"); throw new XomwMWException("Invalid ext node passed to " + "splitRawExt");
} }
return bits; return bits;
@ -329,7 +330,7 @@ public class XomwPPNode_Hash_Tree extends XomwPPNode { public final String na
*/ */
public static XophpArray splitRawHeading(XophpArray children) { public static XophpArray splitRawHeading(XophpArray children) {
XophpArray bits = XophpArray.New(); XophpArray bits = XophpArray.New();
int len = children.count(); int len = children.Len();
for (int i = 0; i < len; i++) { for (int i = 0; i < len; i++) {
Object childObj = children.Get_at(i); Object childObj = children.Get_at(i);
if (!XophpArray.is_array(childObj)) { if (!XophpArray.is_array(childObj)) {
@ -344,7 +345,7 @@ public class XomwPPNode_Hash_Tree extends XomwPPNode { public final String na
bits.Add("level", childChildren.Get_at(0)); bits.Add("level", childChildren.Get_at(0));
} }
} }
if (!bits.isset("i")) { if (!XophpArray.isset(bits, "i")) {
throw new XomwMWException("Invalid h node passed to " + "splitRawHeading"); throw new XomwMWException("Invalid h node passed to " + "splitRawHeading");
} }
return bits; return bits;
@ -366,7 +367,7 @@ public class XomwPPNode_Hash_Tree extends XomwPPNode { public final String na
public static XophpArray splitRawTemplate(XophpArray children) { public static XophpArray splitRawTemplate(XophpArray children) {
XophpArray parts = XophpArray.New(); XophpArray parts = XophpArray.New();
XophpArray bits = XophpArray.New("lineStart" , ""); XophpArray bits = XophpArray.New("lineStart" , "");
int len = children.count(); int len = children.Len();
for (int i = 0; i < len; i++) { for (int i = 0; i < len; i++) {
Object childObj = children.Get_at(i); Object childObj = children.Get_at(i);
if (!XophpArray.is_array(childObj)) { if (!XophpArray.is_array(childObj)) {
@ -383,7 +384,7 @@ public class XomwPPNode_Hash_Tree extends XomwPPNode { public final String na
bits.Add("lineStart", "1"); bits.Add("lineStart", "1");
} }
} }
if (!bits.isset("title")) { if (!XophpArray.isset(bits, "title")) {
throw new XomwMWException("Invalid node passed to " + "splitRawTemplate"); throw new XomwMWException("Invalid node passed to " + "splitRawTemplate");
} }
bits.Add("parts", new XomwPPNode_Hash_Array(parts)); bits.Add("parts", new XomwPPNode_Hash_Array(parts));

View File

@ -51,8 +51,8 @@ class XomwPPTemplateFrame_Hash extends XomwPPFrame_Hash { public XophpArray num
@Override public String toString() { @Override public String toString() {
String s = "tplframe{"; String s = "tplframe{";
boolean first = true; boolean first = true;
XophpArray args = XophpArray_.array_add(this.numberedArgs, this.namedArgs); XophpArray args = XophpArray.array_add(this.numberedArgs, this.namedArgs);
int args_len = args.count(); int args_len = args.Len();
for (int i = 0; i < args_len; i++) { for (int i = 0; i < args_len; i++) {
XophpArrayItm itm = args.Get_at_itm(i); XophpArrayItm itm = args.Get_at_itm(i);
if (first) { if (first) {
@ -91,7 +91,7 @@ class XomwPPTemplateFrame_Hash extends XomwPPFrame_Hash { public XophpArray num
* @return boolean * @return boolean
*/ */
@Override public boolean isEmpty() { @Override public boolean isEmpty() {
return !this.numberedArgs.count_bool() && !this.namedArgs.count_bool(); return !XophpArray.count_bool(this.numberedArgs) && !XophpArray.count_bool(this.namedArgs);
} }
/** /**
@ -99,10 +99,10 @@ class XomwPPTemplateFrame_Hash extends XomwPPFrame_Hash { public XophpArray num
*/ */
@Override public XophpArray getArguments() { @Override public XophpArray getArguments() {
XophpArray arguments = XophpArray.New(); XophpArray arguments = XophpArray.New();
XophpArray merged = XophpArray_.array_merge( XophpArray merged = XophpArray.array_merge(
XophpArray_.array_keys(this.numberedArgs), XophpArray.array_keys(this.numberedArgs),
XophpArray_.array_keys(this.namedArgs)); XophpArray.array_keys(this.namedArgs));
int merged_len = merged.count(); int merged_len = merged.Len();
for (int i = 0; i < merged_len; i++) { for (int i = 0; i < merged_len; i++) {
String key = merged.Get_at_str(i); String key = merged.Get_at_str(i);
arguments.Set(key, this.getArgument(key)); arguments.Set(key, this.getArgument(key));
@ -115,8 +115,8 @@ class XomwPPTemplateFrame_Hash extends XomwPPFrame_Hash { public XophpArray num
*/ */
@Override public XophpArray getNumberedArguments() { @Override public XophpArray getNumberedArguments() {
XophpArray arguments = XophpArray.New(); XophpArray arguments = XophpArray.New();
XophpArray temp = XophpArray_.array_keys(this.numberedArgs); XophpArray temp = XophpArray.array_keys(this.numberedArgs);
int temp_len = temp.count(); int temp_len = temp.Len();
for (int i = 0; i < temp_len; i++) { for (int i = 0; i < temp_len; i++) {
String key = temp.Get_at_str(i); String key = temp.Get_at_str(i);
arguments.Set(key, this.getArgument(key)); arguments.Set(key, this.getArgument(key));
@ -129,8 +129,8 @@ class XomwPPTemplateFrame_Hash extends XomwPPFrame_Hash { public XophpArray num
*/ */
@Override public XophpArray getNamedArguments() { @Override public XophpArray getNamedArguments() {
XophpArray arguments = XophpArray.New(); XophpArray arguments = XophpArray.New();
XophpArray temp = XophpArray_.array_keys(this.namedArgs); XophpArray temp = XophpArray.array_keys(this.namedArgs);
int temp_len = temp.count(); int temp_len = temp.Len();
for (int i = 0; i < temp_len; i++) { for (int i = 0; i < temp_len; i++) {
String key = temp.Get_at_str(i); String key = temp.Get_at_str(i);
arguments.Set(key, this.getArgument(key)); arguments.Set(key, this.getArgument(key));

View File

@ -48,7 +48,7 @@ public class XomwPPDStack {
* @return int * @return int
*/ */
public int count() { public int count() {
return XophpArray_.count(this.stack); return XophpArray.count(this.stack);
} }
public XophpArray getAccum() { // &getAccum public XophpArray getAccum() { // &getAccum
@ -73,18 +73,18 @@ public class XomwPPDStack {
XophpArray array = (XophpArray)data; XophpArray array = (XophpArray)data;
this.stack.Add(elementClass.New(partClass, array.Get_by_str("open"), array.Get_by_str("close"), array.Get_by_ary_or("parts", null), array.Get_by_int_or("count", 0), array.Get_by_bool_or("lineStart", false), array.Get_by_int_or("startPos", 0))); this.stack.Add(elementClass.New(partClass, array.Get_by_str("open"), array.Get_by_str("close"), array.Get_by_ary_or("parts", null), array.Get_by_int_or("count", 0), array.Get_by_bool_or("lineStart", false), array.Get_by_int_or("startPos", 0)));
} }
this.top = (XomwPPDStackElement)this.stack.Get_at(XophpArray_.count(this.stack) - 1); this.top = (XomwPPDStackElement)this.stack.Get_at(XophpArray.count(this.stack) - 1);
this.accum = this.top.getAccum(); //=& this.accum = this.top.getAccum(); //=&
} }
public XomwPPDStackElement pop() { public XomwPPDStackElement pop() {
if (this.stack.Eq_to_new()) { if (XophpArray.Eq_to_new(this.stack)) {
throw XomwMWException.New_by_method_obj(this, "pop", ": no elements remaining"); throw XomwMWException.New_by_method_obj(this, "pop", ": no elements remaining");
} }
XomwPPDStackElement temp = (XomwPPDStackElement)XophpArray_.array_pop(this.stack); XomwPPDStackElement temp = (XomwPPDStackElement)XophpArray.array_pop(this.stack);
if (XophpArray_.count_bool(this.stack)) { if (XophpArray.count_bool(this.stack)) {
this.top = (XomwPPDStackElement)this.stack.Get_at(XophpArray_.count(this.stack) - 1); this.top = (XomwPPDStackElement)this.stack.Get_at(XophpArray.count(this.stack) - 1);
this.accum = this.top.getAccum(); // =& this.accum = this.top.getAccum(); // =&
} else { } else {
this.top = null; this.top = null;
@ -103,7 +103,7 @@ public class XomwPPDStack {
* @return array * @return array
*/ */
public XophpArray getFlags() { public XophpArray getFlags() {
if (this.stack.Eq_to_new()) { if (XophpArray.Eq_to_new(this.stack)) {
return XophpArray.New() return XophpArray.New()
.Add("findEquals", false) .Add("findEquals", false)
.Add("findPipe", false) .Add("findPipe", false)

View File

@ -70,7 +70,7 @@ public abstract class XomwPPDStackElement {
} }
public XophpArray getAccum() { public XophpArray getAccum() {
return (XophpArray)((XomwPPDPart)(this.parts.Get_at(XophpArray_.count(this.parts) - 1))).output; return (XophpArray)((XomwPPDPart)(this.parts.Get_at(XophpArray.count(this.parts) - 1))).output;
} }
public void addPart(String s) { // s = "" public void addPart(String s) { // s = ""
@ -82,14 +82,14 @@ public abstract class XomwPPDStackElement {
* @return PPDPart * @return PPDPart
*/ */
public XomwPPDPart getCurrentPart() { public XomwPPDPart getCurrentPart() {
return (XomwPPDPart)this.parts.Get_at(XophpArray_.count(this.parts) - 1); return (XomwPPDPart)this.parts.Get_at(XophpArray.count(this.parts) - 1);
} }
/** /**
* @return array * @return array
*/ */
public XophpArray getFlags() { public XophpArray getFlags() {
int partCount = XophpArray_.count(this.parts); int partCount = XophpArray.count(this.parts);
boolean findPipe = !String_.Eq(this.open, "\n") && !String_.Eq(this.open, "["); boolean findPipe = !String_.Eq(this.open, "\n") && !String_.Eq(this.open, "[");
return XophpArray.New() return XophpArray.New()
.Add("findPipe", findPipe) .Add("findPipe", findPipe)

View File

@ -29,7 +29,7 @@ class XomwPPDStackElement_Hash extends XomwPPDStackElement {
public XophpArray breakSyntax(int openingCount) { public XophpArray breakSyntax(int openingCount) {
XophpArray accum; XophpArray accum;
if (String_.Eq(this.open, "\n")) { if (String_.Eq(this.open, "\n")) {
accum = XophpArray_.array_merge(XophpArray.New(this.savedPrefix), XophpArray.New(((XomwPPDPart)this.parts.Get_at(0)).output)); accum = XophpArray.array_merge(XophpArray.New(this.savedPrefix), XophpArray.New(((XomwPPDPart)this.parts.Get_at(0)).output));
} else { } else {
if (XophpInt_.is_false(openingCount)) { if (XophpInt_.is_false(openingCount)) {
openingCount = this.count; openingCount = this.count;

View File

@ -343,7 +343,7 @@ public class XomwPPFrame_Hash extends XomwPPFrame { // /**
// XophpArray bits = XomwPPNode_Hash_Tree.splitRawHeading(contextChildren); // XophpArray bits = XomwPPNode_Hash_Tree.splitRawHeading(contextChildren);
// String titleText = this.title.getPrefixedDBkeyStr(); // String titleText = this.title.getPrefixedDBkeyStr();
// this.parser.mHeadings.Add(titleText, bits.Get_by("i")); // this.parser.mHeadings.Add(titleText, bits.Get_by("i"));
// int serial = XophpArray_.count(this.parser.mHeadings) - 1; // int serial = XophpArray.count(this.parser.mHeadings) - 1;
// String marker = XomwParser.MARKER_PREFIX + "-h-" + Int_.To_str(serial) + "-" + XomwParser.MARKER_SUFFIX; // String marker = XomwParser.MARKER_PREFIX + "-h-" + Int_.To_str(serial) + "-" + XomwParser.MARKER_SUFFIX;
// s = XophpString_.substr(s, 0, bits.Get_by_int("level")) + marker + XophpString_.substr(s, bits.Get_by_int("level")); // s = XophpString_.substr(s, 0, bits.Get_by_int("level")) + marker + XophpString_.substr(s, bits.Get_by_int("level"));
// this.parser.mStripState.addGeneral(marker, ""); // this.parser.mStripState.addGeneral(marker, "");
@ -384,7 +384,7 @@ public class XomwPPFrame_Hash extends XomwPPFrame { // /**
// * @return String // * @return String
// */ // */
// public String implodeWithFlags(String sep, int flags, XophpArray args) { // public String implodeWithFlags(String sep, int flags, XophpArray args) {
// // args = XophpArray_.array_slice(func_get_args(), 2); // // args = XophpArray.array_slice(func_get_args(), 2);
// //
// boolean first = true; // boolean first = true;
// String s = ""; // String s = "";

View File

@ -31,7 +31,7 @@ public class XomwPPNode_Hash_Array extends XomwPPNode { public XophpArray value
} }
@Override public int getLength() { @Override public int getLength() {
return XophpArray_.count(this.value); return XophpArray.count(this.value);
} }
@Override public XomwPPNode item(int i) { @Override public XomwPPNode item(int i) {

View File

@ -13,7 +13,8 @@ The terms of each license can be found in the source code repository:
GPLv3 License: https://github.com/gnosygnu/xowa/blob/master/LICENSE-GPLv3.txt GPLv3 License: https://github.com/gnosygnu/xowa/blob/master/LICENSE-GPLv3.txt
Apache License: https://github.com/gnosygnu/xowa/blob/master/LICENSE-APACHE2.txt Apache License: https://github.com/gnosygnu/xowa/blob/master/LICENSE-APACHE2.txt
*/ */
package gplx.xowa.mediawiki.includes.parsers.preprocessors_new; import gplx.*; import gplx.xowa.*; import gplx.xowa.mediawiki.*; import gplx.xowa.mediawiki.includes.*; import gplx.xowa.mediawiki.includes.parsers.*; package gplx.xowa.mediawiki.includes.parsers.preprocessors_new; import gplx.*;
import gplx.xowa.mediawiki.*;
// MW.FILE:Preprocessor_Hash // MW.FILE:Preprocessor_Hash
/** /**
* @ingroup Parser * @ingroup Parser
@ -138,7 +139,7 @@ public class XomwPPNode_Hash_Tree extends XomwPPNode { public final String na
int rawChildrenLen = rawChildren.Len(); int rawChildrenLen = rawChildren.Len();
for (int i = 0; i < rawChildrenLen; i++) { for (int i = 0; i < rawChildrenLen; i++) {
XophpArrayItm itm = rawChildren.Get_at_itm(i); XophpArrayItm itm = rawChildren.Get_at_itm(i);
children.Add(XomwPPNode_Hash_Tree.factory(this.rawChildren, itm.Key_as_int())); children.Add(XomwPPNode_Hash_Tree.factory(this.rawChildren, itm.KeyAsInt()));
} }
return new XomwPPNode_Hash_Array(children); return new XomwPPNode_Hash_Array(children);
} }
@ -151,7 +152,7 @@ public class XomwPPNode_Hash_Tree extends XomwPPNode { public final String na
* @return PPNode_Hash_Tree|PPNode_Hash_Attr|PPNode_Hash_Text|boolean * @return PPNode_Hash_Tree|PPNode_Hash_Attr|PPNode_Hash_Text|boolean
*/ */
@Override public XomwPPNode getFirstChild() { @Override public XomwPPNode getFirstChild() {
if (!XophpArray_.isset(this.rawChildren, 0)) { if (!XophpArray.isset(this.rawChildren, 0)) {
return null; return null;
} }
else { else {
@ -183,7 +184,7 @@ public class XomwPPNode_Hash_Tree extends XomwPPNode { public final String na
XophpArrayItm itm = this.rawChildren.Get_at_itm(idx); XophpArrayItm itm = this.rawChildren.Get_at_itm(idx);
Object child = itm.Val(); Object child = itm.Val();
if (XophpType_.is_array(child) && String_.Eq(((XophpArray)child).Get_at_str(XomwPPNode_Hash_Tree.NAME), name)) { if (XophpType_.is_array(child) && String_.Eq(((XophpArray)child).Get_at_str(XomwPPNode_Hash_Tree.NAME), name)) {
children.Add(XomwPPNode_Hash_Tree.factory(this.rawChildren, itm.Key_as_int())); children.Add(XomwPPNode_Hash_Tree.factory(this.rawChildren, itm.KeyAsInt()));
} }
} }
return new XomwPPNode_Hash_Array(children); return new XomwPPNode_Hash_Array(children);
@ -245,7 +246,7 @@ public class XomwPPNode_Hash_Tree extends XomwPPNode { public final String na
continue; continue;
} }
XophpArray child = (XophpArray)childObj; XophpArray child = (XophpArray)childObj;
int i = itm.Key_as_int(); int i = itm.KeyAsInt();
if (String_.Eq(child.Get_at_str(XomwPPNode_Hash_Tree.NAME), "name")) { if (String_.Eq(child.Get_at_str(XomwPPNode_Hash_Tree.NAME), "name")) {
bits.Set("name", new XomwPPNode_Hash_Tree(children, i)); bits.Set("name", new XomwPPNode_Hash_Tree(children, i));
if (XophpObject_.isset_obj(child.Get_at_ary(XomwPPNode_Hash_Tree.CHILDREN).Get_at_ary(0).Get_at(XomwPPNode_Hash_Tree.NAME)) if (XophpObject_.isset_obj(child.Get_at_ary(XomwPPNode_Hash_Tree.CHILDREN).Get_at_ary(0).Get_at(XomwPPNode_Hash_Tree.NAME))
@ -284,7 +285,7 @@ public class XomwPPNode_Hash_Tree extends XomwPPNode { public final String na
*/ */
public static XophpArray splitRawExt(XophpArray children) { public static XophpArray splitRawExt(XophpArray children) {
XophpArray bits = XophpArray.New(); XophpArray bits = XophpArray.New();
int len = children.count(); int len = children.Len();
for (int i = 0; i < len; i++) { for (int i = 0; i < len; i++) {
Object childObj = children.Get_at(i); Object childObj = children.Get_at(i);
if (!XophpArray.is_array(childObj)) { if (!XophpArray.is_array(childObj)) {
@ -305,7 +306,7 @@ public class XomwPPNode_Hash_Tree extends XomwPPNode { public final String na
bits.Add("close", new XomwPPNode_Hash_Tree(children, i)); bits.Add("close", new XomwPPNode_Hash_Tree(children, i));
} }
} }
if (!bits.isset("name")) { if (!XophpArray.isset(bits, "name")) {
throw new XomwMWException("Invalid ext node passed to " + "splitRawExt"); throw new XomwMWException("Invalid ext node passed to " + "splitRawExt");
} }
return bits; return bits;
@ -329,7 +330,7 @@ public class XomwPPNode_Hash_Tree extends XomwPPNode { public final String na
*/ */
public static XophpArray splitRawHeading(XophpArray children) { public static XophpArray splitRawHeading(XophpArray children) {
XophpArray bits = XophpArray.New(); XophpArray bits = XophpArray.New();
int len = children.count(); int len = children.Len();
for (int i = 0; i < len; i++) { for (int i = 0; i < len; i++) {
Object childObj = children.Get_at(i); Object childObj = children.Get_at(i);
if (!XophpArray.is_array(childObj)) { if (!XophpArray.is_array(childObj)) {
@ -344,7 +345,7 @@ public class XomwPPNode_Hash_Tree extends XomwPPNode { public final String na
bits.Add("level", childChildren.Get_at(0)); bits.Add("level", childChildren.Get_at(0));
} }
} }
if (!bits.isset("i")) { if (!XophpArray.isset(bits, "i")) {
throw new XomwMWException("Invalid h node passed to " + "splitRawHeading"); throw new XomwMWException("Invalid h node passed to " + "splitRawHeading");
} }
return bits; return bits;
@ -366,7 +367,7 @@ public class XomwPPNode_Hash_Tree extends XomwPPNode { public final String na
public static XophpArray splitRawTemplate(XophpArray children) { public static XophpArray splitRawTemplate(XophpArray children) {
XophpArray parts = XophpArray.New(); XophpArray parts = XophpArray.New();
XophpArray bits = XophpArray.New("lineStart" , ""); XophpArray bits = XophpArray.New("lineStart" , "");
int len = children.count(); int len = children.Len();
for (int i = 0; i < len; i++) { for (int i = 0; i < len; i++) {
Object childObj = children.Get_at(i); Object childObj = children.Get_at(i);
if (!XophpArray.is_array(childObj)) { if (!XophpArray.is_array(childObj)) {
@ -383,7 +384,7 @@ public class XomwPPNode_Hash_Tree extends XomwPPNode { public final String na
bits.Add("lineStart", "1"); bits.Add("lineStart", "1");
} }
} }
if (!bits.isset("title")) { if (!XophpArray.isset(bits, "title")) {
throw new XomwMWException("Invalid node passed to " + "splitRawTemplate"); throw new XomwMWException("Invalid node passed to " + "splitRawTemplate");
} }
bits.Add("parts", new XomwPPNode_Hash_Array(parts)); bits.Add("parts", new XomwPPNode_Hash_Array(parts));

View File

@ -51,7 +51,7 @@ Apache License: https://github.com/gnosygnu/xowa/blob/master/LICENSE-APACHE2.txt
// public override String toString() { // public override String toString() {
// String s = "tplframe{"; // String s = "tplframe{";
// boolean first = true; // boolean first = true;
// XophpArray args = XophpArray_.array_add(this.numberedArgs, this.namedArgs); // XophpArray args = XophpArray.array_add(this.numberedArgs, this.namedArgs);
// int args_len = args.count(); // int args_len = args.count();
// for (int i = 0; i < args_len; i++) { // for (int i = 0; i < args_len; i++) {
// XophpArrayItm itm = args.Get_at_itm(i); // XophpArrayItm itm = args.Get_at_itm(i);
@ -99,9 +99,9 @@ Apache License: https://github.com/gnosygnu/xowa/blob/master/LICENSE-APACHE2.txt
// */ // */
// public override XophpArray getArguments() { // public override XophpArray getArguments() {
// XophpArray arguments = XophpArray.New(); // XophpArray arguments = XophpArray.New();
// XophpArray merged = XophpArray_.array_merge( // XophpArray merged = XophpArray.array_merge(
// XophpArray_.array_keys(this.numberedArgs), // XophpArray.array_keys(this.numberedArgs),
// XophpArray_.array_keys(this.namedArgs)); // XophpArray.array_keys(this.namedArgs));
// int merged_len = merged.count(); // int merged_len = merged.count();
// for (int i = 0; i < merged_len; i++) { // for (int i = 0; i < merged_len; i++) {
// String key = merged.Get_at_str(i); // String key = merged.Get_at_str(i);
@ -115,7 +115,7 @@ Apache License: https://github.com/gnosygnu/xowa/blob/master/LICENSE-APACHE2.txt
// */ // */
// public override XophpArray getNumberedArguments() { // public override XophpArray getNumberedArguments() {
// XophpArray arguments = XophpArray.New(); // XophpArray arguments = XophpArray.New();
// XophpArray temp = XophpArray_.array_keys(this.numberedArgs); // XophpArray temp = XophpArray.array_keys(this.numberedArgs);
// int temp_len = temp.count(); // int temp_len = temp.count();
// for (int i = 0; i < temp_len; i++) { // for (int i = 0; i < temp_len; i++) {
// String key = temp.Get_at_str(i); // String key = temp.Get_at_str(i);
@ -129,7 +129,7 @@ Apache License: https://github.com/gnosygnu/xowa/blob/master/LICENSE-APACHE2.txt
// */ // */
// public override XophpArray getNamedArguments() { // public override XophpArray getNamedArguments() {
// XophpArray arguments = XophpArray.New(); // XophpArray arguments = XophpArray.New();
// XophpArray temp = XophpArray_.array_keys(this.namedArgs); // XophpArray temp = XophpArray.array_keys(this.namedArgs);
// int temp_len = temp.count(); // int temp_len = temp.count();
// for (int i = 0; i < temp_len; i++) { // for (int i = 0; i < temp_len; i++) {
// String key = temp.Get_at_str(i); // String key = temp.Get_at_str(i);

View File

@ -13,12 +13,11 @@ The terms of each license can be found in the source code repository:
GPLv3 License: https://github.com/gnosygnu/xowa/blob/master/LICENSE-GPLv3.txt GPLv3 License: https://github.com/gnosygnu/xowa/blob/master/LICENSE-GPLv3.txt
Apache License: https://github.com/gnosygnu/xowa/blob/master/LICENSE-APACHE2.txt Apache License: https://github.com/gnosygnu/xowa/blob/master/LICENSE-APACHE2.txt
*/ */
package gplx.xowa.mediawiki.includes.parsers.preprocessors_new; import gplx.*; import gplx.xowa.*; import gplx.xowa.mediawiki.*; import gplx.xowa.mediawiki.includes.*; import gplx.xowa.mediawiki.includes.parsers.*; package gplx.xowa.mediawiki.includes.parsers.preprocessors_new; import gplx.*;
import gplx.xowa.mediawiki.*; import gplx.xowa.mediawiki.includes.*; import gplx.xowa.mediawiki.includes.parsers.*;
// MW.SRC:1.33 // MW.SRC:1.33
import gplx.core.bits.*;
import gplx.langs.regxs.*; import gplx.langs.regxs.*;
import gplx.xowa.mediawiki.includes.exception.*;
import gplx.xowa.mediawiki.includes.parsers.preprocessors.*;
/** /**
* Differences from DOM schema: * Differences from DOM schema:
* * attribute nodes are children * * attribute nodes are children
@ -145,7 +144,7 @@ public class XomwPreprocessor_Hash extends XomwPreprocessor {
ignoredElements = XophpArray.New("includeonly"); ignoredElements = XophpArray.New("includeonly");
xmlishElements.Add("includeonly"); xmlishElements.Add("includeonly");
} }
String xmlishRegex = XophpArray_.implode("|", XophpArray_.array_merge(xmlishElements, ignoredTags)); String xmlishRegex = XophpArray.implode("|", XophpArray.array_merge(xmlishElements, ignoredTags));
// Use "A" modifier (anchored) instead of "^", because ^ doesn"t work with an offset // Use "A" modifier (anchored) instead of "^", because ^ doesn"t work with an offset
Regx_adp elementsRegex = XophpRegex_.Pattern("(" + xmlishRegex + ")(?:\\s|\\/>|>)|(!--)", XophpRegex_.MODIFIER_i | XophpRegex_.MODIFIER_A); Regx_adp elementsRegex = XophpRegex_.Pattern("(" + xmlishRegex + ")(?:\\s|\\/>|>)|(!--)", XophpRegex_.MODIFIER_i | XophpRegex_.MODIFIER_A);
@ -302,7 +301,7 @@ public class XomwPreprocessor_Hash extends XomwPreprocessor {
continue; continue;
} }
// Handle comments // Handle comments
if (XophpArray_.isset(matches, 2) && String_.Eq(matches.Get_at_str(2), "!--")) { if (XophpArray.isset(matches, 2) && String_.Eq(matches.Get_at_str(2), "!--")) {
// To avoid leaving blank lines, when a sequence of // To avoid leaving blank lines, when a sequence of
// space-separated comments is both preceded and followed by // space-separated comments is both preceded and followed by
// a newline (ignoring spaces), then // a newline (ignoring spaces), then
@ -345,7 +344,7 @@ public class XomwPreprocessor_Hash extends XomwPreprocessor {
) { ) {
// Remove leading whitespace from the end of the accumulator // Remove leading whitespace from the end of the accumulator
int wsLength = i - wsStart; int wsLength = i - wsStart;
int endIndex = XophpArray_.count(accum) - 1; int endIndex = XophpArray.count(accum) - 1;
// Sanity check // Sanity check
if (wsLength > 0 if (wsLength > 0
@ -360,11 +359,11 @@ public class XomwPreprocessor_Hash extends XomwPreprocessor {
int commentsLen = comments.Len(); int commentsLen = comments.Len();
for (int commentsIdx = 0; commentsIdx < commentsLen; commentsIdx++) { for (int commentsIdx = 0; commentsIdx < commentsLen; commentsIdx++) {
XophpArrayItm itm = comments.Get_at_itm(commentsIdx); XophpArrayItm itm = comments.Get_at_itm(commentsIdx);
int j = itm.Key_as_int(); int j = itm.KeyAsInt();
XophpArray com = (XophpArray)itm.Val(); XophpArray com = (XophpArray)itm.Val();
startPos = com.Get_at_int(0); startPos = com.Get_at_int(0);
endPos = com.Get_at_int(1) + 1; endPos = com.Get_at_int(1) + 1;
if (j == (XophpArray_.count(comments) - 1)) { if (j == (XophpArray.count(comments) - 1)) {
break; break;
} }
inner = XophpString_.substr(text, startPos, endPos - startPos); inner = XophpString_.substr(text, startPos, endPos - startPos);
@ -409,7 +408,7 @@ public class XomwPreprocessor_Hash extends XomwPreprocessor {
} }
// Handle ignored tags // Handle ignored tags
if (XophpArray_.in_array(lowerName, ignoredTags)) { if (XophpArray.in_array(lowerName, ignoredTags)) {
accum.Add(XophpArray.New("ignore", XophpArray.New(XophpString_.substr(text, i, tagEndPos - i + 1)))); accum.Add(XophpArray.New("ignore", XophpArray.New(XophpString_.substr(text, i, tagEndPos - i + 1))));
i = tagEndPos + 1; i = tagEndPos + 1;
continue; continue;
@ -436,7 +435,7 @@ public class XomwPreprocessor_Hash extends XomwPreprocessor {
close = matches.Get_at_ary(0).Get_at_str(0); close = matches.Get_at_ary(0).Get_at_str(0);
} else { } else {
// No end tag // No end tag
if (XophpArray_.in_array(name, xmlishAllowMissingEndTag)) { if (XophpArray.in_array(name, xmlishAllowMissingEndTag)) {
// Let it run out to the end of the text. // Let it run out to the end of the text.
inner = XophpString_.substr(text, tagEndPos + 1); inner = XophpString_.substr(text, tagEndPos + 1);
i = lengthText; i = lengthText;
@ -453,7 +452,7 @@ public class XomwPreprocessor_Hash extends XomwPreprocessor {
} }
} }
// <includeonly> and <noinclude> just become <ignore> tags // <includeonly> and <noinclude> just become <ignore> tags
if (XophpArray_.in_array(lowerName, ignoredElements)) { if (XophpArray.in_array(lowerName, ignoredElements)) {
accum.Add(XophpArray.New("ignore", XophpArray.New(XophpString_.substr(text, tagStartPos, i - tagStartPos)))); accum.Add(XophpArray.New("ignore", XophpArray.New(XophpString_.substr(text, tagStartPos, i - tagStartPos))));
continue; continue;
} }
@ -503,13 +502,13 @@ public class XomwPreprocessor_Hash extends XomwPreprocessor {
stack.push(piece); stack.push(piece);
accum = stack.getAccum(); // =& accum = stack.getAccum(); // =&
XophpArray stackFlags = stack.getFlags(); XophpArray stackFlags = stack.getFlags();
if (XophpArray_.isset(stackFlags, "findEquals")) { if (XophpArray.isset(stackFlags, "findEquals")) {
findEquals = stackFlags.Get_by_bool("findEquals"); findEquals = stackFlags.Get_by_bool("findEquals");
} }
if (XophpArray_.isset(stackFlags, "findPipe")) { if (XophpArray.isset(stackFlags, "findPipe")) {
findPipe = stackFlags.Get_by_bool("findPipe"); findPipe = stackFlags.Get_by_bool("findPipe");
} }
if (XophpArray_.isset(stackFlags, "inHeading")) { if (XophpArray.isset(stackFlags, "inHeading")) {
inHeading = stackFlags.Get_by_bool("inHeading"); inHeading = stackFlags.Get_by_bool("inHeading");
} }
i += count; i += count;
@ -553,7 +552,7 @@ public class XomwPreprocessor_Hash extends XomwPreprocessor {
if (count > 0) { if (count > 0) {
// Normal match, output <h> // Normal match, output <h>
element = XophpArray.New(XophpArray.New("possible-h", element = XophpArray.New(XophpArray.New("possible-h",
XophpArray_.array_merge( XophpArray.array_merge(
XophpArray.New( XophpArray.New(
XophpArray.New("@level", XophpArray.New(count)), XophpArray.New("@level", XophpArray.New(count)),
XophpArray.New("@i", XophpArray.New(headingIndex++)) XophpArray.New("@i", XophpArray.New(headingIndex++))
@ -573,18 +572,18 @@ public class XomwPreprocessor_Hash extends XomwPreprocessor {
stack.pop(); stack.pop();
accum = stack.getAccum(); // =& accum = stack.getAccum(); // =&
XophpArray stackFlags = stack.getFlags(); XophpArray stackFlags = stack.getFlags();
if (XophpArray_.isset(stackFlags, "findEquals")) { if (XophpArray.isset(stackFlags, "findEquals")) {
findEquals = stackFlags.Get_by_bool("findEquals"); findEquals = stackFlags.Get_by_bool("findEquals");
} }
if (XophpArray_.isset(stackFlags, "findPipe")) { if (XophpArray.isset(stackFlags, "findPipe")) {
findPipe = stackFlags.Get_by_bool("findPipe"); findPipe = stackFlags.Get_by_bool("findPipe");
} }
if (XophpArray_.isset(stackFlags, "inHeading")) { if (XophpArray.isset(stackFlags, "inHeading")) {
inHeading = stackFlags.Get_by_bool("inHeading"); inHeading = stackFlags.Get_by_bool("inHeading");
} }
// Append the result to the enclosing accumulator // Append the result to the enclosing accumulator
XophpArray_.array_splice(accum, XophpArray_.count(accum), 0, element); XophpArray.array_splice(accum, XophpArray.count(accum), 0, element);
// Note that we do NOT increment the input pointer. // Note that we do NOT increment the input pointer.
// This is because the closing linebreak could be the opening linebreak of // This is because the closing linebreak could be the opening linebreak of
@ -625,13 +624,13 @@ public class XomwPreprocessor_Hash extends XomwPreprocessor {
stack.push(piece); stack.push(piece);
accum = stack.getAccum(); // =& accum = stack.getAccum(); // =&
XophpArray stackFlags = stack.getFlags(); XophpArray stackFlags = stack.getFlags();
if (XophpArray_.isset(stackFlags, "findEquals")) { if (XophpArray.isset(stackFlags, "findEquals")) {
findEquals = stackFlags.Get_by_bool("findEquals"); findEquals = stackFlags.Get_by_bool("findEquals");
} }
if (XophpArray_.isset(stackFlags, "findPipe")) { if (XophpArray.isset(stackFlags, "findPipe")) {
findPipe = stackFlags.Get_by_bool("findPipe"); findPipe = stackFlags.Get_by_bool("findPipe");
} }
if (XophpArray_.isset(stackFlags, "inHeading")) { if (XophpArray.isset(stackFlags, "inHeading")) {
inHeading = stackFlags.Get_by_bool("inHeading"); inHeading = stackFlags.Get_by_bool("inHeading");
} }
} else { } else {
@ -663,7 +662,7 @@ public class XomwPreprocessor_Hash extends XomwPreprocessor {
// Skip any gaps in the callback array to find the true largest match // Skip any gaps in the callback array to find the true largest match
// Need to use array_key_exists not isset because the callback can be null // Need to use array_key_exists not isset because the callback can be null
matchingCount = count; matchingCount = count;
while (matchingCount > 0 && !XophpArray_.array_key_exists(matchingCount, rule.Get_by_ary("names"))) { while (matchingCount > 0 && !XophpArray.array_key_exists(matchingCount, rule.Get_by_ary("names"))) {
--matchingCount; --matchingCount;
} }
} }
@ -688,7 +687,7 @@ public class XomwPreprocessor_Hash extends XomwPreprocessor {
// Create XML element // Create XML element
XophpArray parts = piece.parts; XophpArray parts = piece.parts;
XophpArray titleAccum = ((XomwPPDPart)parts.Get_at(0)).output; XophpArray titleAccum = ((XomwPPDPart)parts.Get_at(0)).output;
XophpArray_.unset(parts, 0); XophpArray.unset(parts, 0);
XophpArray children = XophpArray.New(); XophpArray children = XophpArray.New();
@ -707,8 +706,8 @@ public class XomwPreprocessor_Hash extends XomwPreprocessor {
XomwPPDPart_Hash part = (XomwPPDPart_Hash)parts.Get_at(j); XomwPPDPart_Hash part = (XomwPPDPart_Hash)parts.Get_at(j);
if (XophpInt_.is_true(part.eqpos)) { // XO.NOTE: MW says isset(part.commentEnd) b/c commentEnd can be null due to magic property if (XophpInt_.is_true(part.eqpos)) { // XO.NOTE: MW says isset(part.commentEnd) b/c commentEnd can be null due to magic property
Object equalsNode = part.output.Get_at(part.eqpos); Object equalsNode = part.output.Get_at(part.eqpos);
XophpArray nameNode = XophpArray.New("name", XophpArray_.array_slice(part.output, 0, part.eqpos)); XophpArray nameNode = XophpArray.New("name", XophpArray.array_slice(part.output, 0, part.eqpos));
XophpArray valueNode = XophpArray.New("value", XophpArray_.array_slice(part.output, part.eqpos + 1)); XophpArray valueNode = XophpArray.New("value", XophpArray.array_slice(part.output, part.eqpos + 1));
XophpArray partNode = XophpArray.New("part", XophpArray.New(nameNode, equalsNode, valueNode)); XophpArray partNode = XophpArray.New("part", XophpArray.New(nameNode, equalsNode, valueNode));
children.Add(partNode); children.Add(partNode);
} else { } else {
@ -757,18 +756,18 @@ public class XomwPreprocessor_Hash extends XomwPreprocessor {
} }
XophpArray stackFlags = stack.getFlags(); XophpArray stackFlags = stack.getFlags();
if (XophpArray_.isset(stackFlags, "findEquals")) { if (XophpArray.isset(stackFlags, "findEquals")) {
findEquals = stackFlags.Get_by_bool("findEquals"); findEquals = stackFlags.Get_by_bool("findEquals");
} }
if (XophpArray_.isset(stackFlags, "findPipe")) { if (XophpArray.isset(stackFlags, "findPipe")) {
findPipe = stackFlags.Get_by_bool("findPipe"); findPipe = stackFlags.Get_by_bool("findPipe");
} }
if (XophpArray_.isset(stackFlags, "inHeading")) { if (XophpArray.isset(stackFlags, "inHeading")) {
inHeading = stackFlags.Get_by_bool("inHeading"); inHeading = stackFlags.Get_by_bool("inHeading");
} }
// Add XML element to the enclosing accumulator // Add XML element to the enclosing accumulator
XophpArray_.array_splice(accum, XophpArray_.count(accum), 0, element); XophpArray.array_splice(accum, XophpArray.count(accum), 0, element);
} else if (String_.Eq(found, "pipe")) { } else if (String_.Eq(found, "pipe")) {
findEquals = true; // shortcut for getFlags() findEquals = true; // shortcut for getFlags()
stack.addPart(); stack.addPart();
@ -777,7 +776,7 @@ public class XomwPreprocessor_Hash extends XomwPreprocessor {
} else if (String_.Eq(found, "equals")) { } else if (String_.Eq(found, "equals")) {
findEquals = false; // shortcut for getFlags() findEquals = false; // shortcut for getFlags()
accum.Add(XophpArray.New("equals", XophpArray.New("="))); accum.Add(XophpArray.New("equals", XophpArray.New("=")));
stack.getCurrentPart().eqpos = XophpArray_.count(accum) - 1; stack.getCurrentPart().eqpos = XophpArray.count(accum) - 1;
++i; ++i;
} }
} }
@ -787,7 +786,7 @@ public class XomwPreprocessor_Hash extends XomwPreprocessor {
int tempStackLen = tempStack.Len(); int tempStackLen = tempStack.Len();
for (int j = 0; j < tempStackLen; j++) { for (int j = 0; j < tempStackLen; j++) {
XomwPPDStackElement_Hash piece = (XomwPPDStackElement_Hash)tempStack.Get_at(j); XomwPPDStackElement_Hash piece = (XomwPPDStackElement_Hash)tempStack.Get_at(j);
XophpArray_.array_splice(stack.rootAccum, XophpArray_.count(stack.rootAccum), 0, piece.breakSyntax()); XophpArray.array_splice(stack.rootAccum, XophpArray.count(stack.rootAccum), 0, piece.breakSyntax());
} }
// Enable top-level headings // Enable top-level headings
@ -795,7 +794,7 @@ public class XomwPreprocessor_Hash extends XomwPreprocessor {
int rootAccumLen = rootAccum.Len(); int rootAccumLen = rootAccum.Len();
for (int j = 0; j < rootAccumLen; j++) { for (int j = 0; j < rootAccumLen; j++) {
XophpArray node = rootAccum.Get_at_ary_or_null(j); // stack.rootAccum as &node XophpArray node = rootAccum.Get_at_ary_or_null(j); // stack.rootAccum as &node
if (XophpArray_.is_array(node) && String_.Eq(node.Get_at_str(XomwPPNode_Hash_Tree.NAME), "possible-h")) { if (XophpArray.is_array(node) && String_.Eq(node.Get_at_str(XomwPPNode_Hash_Tree.NAME), "possible-h")) {
node.Set(XomwPPNode_Hash_Tree.NAME, "h"); node.Set(XomwPPNode_Hash_Tree.NAME, "h");
} }
} }
@ -813,7 +812,7 @@ public class XomwPreprocessor_Hash extends XomwPreprocessor {
} }
private static void addLiteral(XophpArray accum, String text) { private static void addLiteral(XophpArray accum, String text) {
int n = XophpArray_.count(accum); int n = XophpArray.count(accum);
if (XophpInt_.is_true(n) && XophpType_.is_string(accum.Get_at(n - 1))) { if (XophpInt_.is_true(n) && XophpType_.is_string(accum.Get_at(n - 1))) {
accum.Concat_str(n - 1, text); accum.Concat_str(n - 1, text);
} else { } else {

View File

@ -48,13 +48,13 @@ public class Xomw_table_wkr implements gplx.core.brys.Bry_split_wkr {// THREAD.U
// Closing open td, tr && table // Closing open td, tr && table
while (td_history.Len() > 0) { while (td_history.Len() > 0) {
if (XophpArray_.popBoolOrN(td_history)) { if (XophpArray.popBoolOrN(td_history)) {
bfr.Add_str_a7("</td>\n"); bfr.Add_str_a7("</td>\n");
} }
if (XophpArray_.popBoolOrN(tr_history)) { if (XophpArray.popBoolOrN(tr_history)) {
bfr.Add_str_a7("</tr>\n"); bfr.Add_str_a7("</tr>\n");
} }
if (!XophpArray_.popBoolOrN(has_opened_tr)) { if (!XophpArray.popBoolOrN(has_opened_tr)) {
bfr.Add_str_a7("<tr><td></td></tr>\n"); bfr.Add_str_a7("<tr><td></td></tr>\n");
} }
bfr.Add_str_a7("</table>\n"); bfr.Add_str_a7("</table>\n");
@ -123,20 +123,20 @@ public class Xomw_table_wkr implements gplx.core.brys.Bry_split_wkr {// THREAD.U
else if (Bry_.Eq(first_2, Wtxt__tb__end)) { else if (Bry_.Eq(first_2, Wtxt__tb__end)) {
// We are ending a table // We are ending a table
line = tmp.Add_str_a7("</table>").Add_mid(line, 2, line.length).To_bry_and_clear(); line = tmp.Add_str_a7("</table>").Add_mid(line, 2, line.length).To_bry_and_clear();
byte[] last_tag = XophpArray_.popBryOrNull(last_tag_history); byte[] last_tag = XophpArray.popBryOrNull(last_tag_history);
if (!XophpArray_.popBoolOrN(has_opened_tr)) { if (!XophpArray.popBoolOrN(has_opened_tr)) {
line = tmp.Add_str_a7("<tr><td></td></tr>").Add(line).To_bry_and_clear(); line = tmp.Add_str_a7("<tr><td></td></tr>").Add(line).To_bry_and_clear();
} }
if (XophpArray_.popBoolOrN(tr_history)) { if (XophpArray.popBoolOrN(tr_history)) {
line = tmp.Add_str_a7("</tr>").Add(line).To_bry_and_clear(); line = tmp.Add_str_a7("</tr>").Add(line).To_bry_and_clear();
} }
if (XophpArray_.popBoolOrN(td_history)) { if (XophpArray.popBoolOrN(td_history)) {
line = tmp.Add_str_a7("</").Add(last_tag).Add_byte(Byte_ascii.Angle_end).Add(line).To_bry_and_clear(); line = tmp.Add_str_a7("</").Add(last_tag).Add_byte(Byte_ascii.Angle_end).Add(line).To_bry_and_clear();
} }
XophpArray_.popBryOrNull(tr_attributes); XophpArray.popBryOrNull(tr_attributes);
// PORTED:$outLine = $line . str_repeat( '</dd></dl>', $indent_level ); // PORTED:$outLine = $line . str_repeat( '</dd></dl>', $indent_level );
tmp.Add(line); tmp.Add(line);
for (int j = 0; j < indent_level; j++) for (int j = 0; j < indent_level; j++)
@ -152,19 +152,19 @@ public class Xomw_table_wkr implements gplx.core.brys.Bry_split_wkr {// THREAD.U
sanitizer.fixTagAttributes(tmp, Name__tr, atrs); sanitizer.fixTagAttributes(tmp, Name__tr, atrs);
atrs = tmp.To_bry_and_clear(); atrs = tmp.To_bry_and_clear();
XophpArray_.popBryOrNull(tr_attributes); XophpArray.popBryOrNull(tr_attributes);
tr_attributes.Add(atrs); tr_attributes.Add(atrs);
line = Bry_.Empty; line = Bry_.Empty;
byte[] last_tag = XophpArray_.popBryOrNull(last_tag_history); byte[] last_tag = XophpArray.popBryOrNull(last_tag_history);
XophpArray_.popBoolOrN(has_opened_tr); XophpArray.popBoolOrN(has_opened_tr);
has_opened_tr.Add(true); has_opened_tr.Add(true);
if (XophpArray_.popBoolOrN(tr_history)) { if (XophpArray.popBoolOrN(tr_history)) {
line = Html__tr__end; line = Html__tr__end;
} }
if (XophpArray_.popBoolOrN(td_history)) { if (XophpArray.popBoolOrN(td_history)) {
line = tmp.Add_str_a7("</").Add(last_tag).Add_byte(Byte_ascii.Gt).Add(line).To_bry_and_clear(); line = tmp.Add_str_a7("</").Add(last_tag).Add_byte(Byte_ascii.Gt).Add(line).To_bry_and_clear();
} }
@ -205,19 +205,19 @@ public class Xomw_table_wkr implements gplx.core.brys.Bry_split_wkr {// THREAD.U
byte[] cell = cells[j]; byte[] cell = cells[j];
previous = Bry_.Empty; previous = Bry_.Empty;
if (first_char != Byte_ascii.Plus) { if (first_char != Byte_ascii.Plus) {
byte[] tr_after = XophpArray_.popBryOrNull(tr_attributes); byte[] tr_after = XophpArray.popBryOrNull(tr_attributes);
if (!XophpArray_.popBoolOrN(tr_history)) { if (!XophpArray.popBoolOrN(tr_history)) {
previous = tmp.Add_str_a7("<tr").Add(tr_after).Add_str_a7(">\n").To_bry_and_clear(); previous = tmp.Add_str_a7("<tr").Add(tr_after).Add_str_a7(">\n").To_bry_and_clear();
} }
tr_history.Add(true); tr_history.Add(true);
tr_attributes.Add(Bry_.Empty); tr_attributes.Add(Bry_.Empty);
XophpArray_.popBoolOrN(has_opened_tr); XophpArray.popBoolOrN(has_opened_tr);
has_opened_tr.Add(true); has_opened_tr.Add(true);
} }
byte[] last_tag = XophpArray_.popBryOrNull(last_tag_history); byte[] last_tag = XophpArray.popBryOrNull(last_tag_history);
if (XophpArray_.popBoolOrN(td_history)) { if (XophpArray.popBoolOrN(td_history)) {
previous = tmp.Add_str_a7("</").Add(last_tag).Add_str_a7(">\n").Add(previous).To_bry_and_clear(); previous = tmp.Add_str_a7("</").Add(last_tag).Add_str_a7(">\n").Add(previous).To_bry_and_clear();
} }

View File

@ -104,14 +104,14 @@ public class XomwSiteList extends XomwGenericArrayObject { public int Len() {ret
*/ */
XomwSite site = (XomwSite)this.offsetGet(index); XomwSite site = (XomwSite)this.offsetGet(index);
XophpArray_.unset(this.byGlobalId, site.getGlobalId()); XophpArray.unset(this.byGlobalId, site.getGlobalId());
XophpArray_.unset(this.byInternalId, site.getInternalId()); XophpArray.unset(this.byInternalId, site.getInternalId());
Ordered_hash ids = site.getNavigationIds(); Ordered_hash ids = site.getNavigationIds();
int len = ids.Len(); int len = ids.Len();
for (int i = 0; i < len; i++) { for (int i = 0; i < len; i++) {
int navId = Int_.Cast(ids.Get_at(i)); int navId = Int_.Cast(ids.Get_at(i));
XophpArray_.unset(this.byNavigationId, navId); XophpArray.unset(this.byNavigationId, navId);
} }
} }
@ -127,7 +127,7 @@ public class XomwSiteList extends XomwGenericArrayObject { public int Len() {ret
* @return array * @return array
*/ */
public String[] getGlobalIdentifiers() { public String[] getGlobalIdentifiers() {
return XophpArray_.array_keys_str(this.byGlobalId); return XophpArray.array_keys_str(this.byGlobalId);
} }
/** /**
@ -138,7 +138,7 @@ public class XomwSiteList extends XomwGenericArrayObject { public int Len() {ret
* @return boolean * @return boolean
*/ */
public boolean hasSite(String globalSiteId) { public boolean hasSite(String globalSiteId) {
return XophpArray_.array_key_exists(globalSiteId, this.byGlobalId); return XophpArray.array_key_exists(globalSiteId, this.byGlobalId);
} }
/** /**
@ -175,7 +175,7 @@ public class XomwSiteList extends XomwGenericArrayObject { public int Len() {ret
* @return boolean * @return boolean
*/ */
@Override public boolean isEmpty() { @Override public boolean isEmpty() {
return XophpArray_.empty(this.byGlobalId); return XophpArray.empty(this.byGlobalId);
} }
/** /**
@ -186,7 +186,7 @@ public class XomwSiteList extends XomwGenericArrayObject { public int Len() {ret
* @return boolean * @return boolean
*/ */
public boolean hasInternalId(int id) { public boolean hasInternalId(int id) {
return XophpArray_.array_key_exists(id, this.byInternalId); return XophpArray.array_key_exists(id, this.byInternalId);
} }
/** /**
@ -223,7 +223,7 @@ public class XomwSiteList extends XomwGenericArrayObject { public int Len() {ret
* @return boolean * @return boolean
*/ */
public boolean hasNavigationId(String id) { public boolean hasNavigationId(String id) {
return XophpArray_.array_key_exists(id, this.byNavigationId); return XophpArray.array_key_exists(id, this.byNavigationId);
} }
/** /**

View File

@ -18,7 +18,7 @@ package gplx.xowa.mediawiki.includes.user;
// MW.SRC:1.33.1 // MW.SRC:1.33.1
import gplx.xowa.mediawiki.XophpArray; import gplx.xowa.mediawiki.XophpArray;
import gplx.xowa.mediawiki.XophpArray_; import gplx.xowa.mediawiki.XophpArray;
import gplx.xowa.mediawiki.includes.XomwWebRequest; import gplx.xowa.mediawiki.includes.XomwWebRequest;
import gplx.xowa.mediawiki.includes.dao.XomwIDBAccessObject; import gplx.xowa.mediawiki.includes.dao.XomwIDBAccessObject;
@ -3167,11 +3167,11 @@ public class XomwUser implements XomwIDBAccessObject { //, UserIdentity
// set it, and then it was disabled removing their ability to change it). But // set it, and then it was disabled removing their ability to change it). But
// we don't want to erase the preferences in the database in case the preference // we don't want to erase the preferences in the database in case the preference
// is re-enabled again. So don't touch $mOptions, just override the returned value // is re-enabled again. So don't touch $mOptions, just override the returned value
if (!ignoreHidden && XophpArray_.in_array(oname, wgHiddenPrefs)) { if (!ignoreHidden && XophpArray.in_array(oname, wgHiddenPrefs)) {
// return getDefaultOption(oname); // return getDefaultOption(oname);
} }
if (XophpArray_.array_key_exists(oname, this.mOptions)) { if (XophpArray.array_key_exists(oname, this.mOptions)) {
return this.mOptions.Get_by(oname); return this.mOptions.Get_by(oname);
} }

View File

@ -4038,12 +4038,12 @@ public class XomwLanguage {
return (String)formsObject; return (String)formsObject;
} }
forms = (XophpArray)formsObject; forms = (XophpArray)formsObject;
if (!forms.count_bool()) { if (!XophpArray.count_bool(forms)) {
return ""; return "";
} }
int pluralForm = this.getPluralRuleIndexNumber(count); int pluralForm = this.getPluralRuleIndexNumber(count);
pluralForm = XophpMath_.min(pluralForm, forms.count() - 1); pluralForm = XophpMath_.min(pluralForm, XophpArray.count(forms) - 1);
return forms.Get_at_str(pluralForm); return forms.Get_at_str(pluralForm);
} }
@ -4064,7 +4064,7 @@ public class XomwLanguage {
*/ */
public Object handleExplicitPluralForms(String count, XophpArray forms) { public Object handleExplicitPluralForms(String count, XophpArray forms) {
XophpArray mutable = forms.Clone(); XophpArray mutable = forms.Clone();
int len = forms.count(); int len = forms.Len();
for (int i = 0; i < len; i++) { for (int i = 0; i < len; i++) {
XophpArrayItm formItem = forms.Get_at_itm(i); XophpArrayItm formItem = forms.Get_at_itm(i);
String index = formItem.Key(); String index = formItem.Key();
@ -4074,11 +4074,11 @@ public class XomwLanguage {
if (String_.Eq(XophpString_.substr(form, 0, pos), count)) { if (String_.Eq(XophpString_.substr(form, 0, pos), count)) {
return XophpString_.substr(form, pos + 1); return XophpString_.substr(form, pos + 1);
} }
mutable.unset(index); XophpArray.unset(mutable, index);
} }
} }
return mutable.values(); return XophpArray.array_values(mutable);
} }
private static final Regx_adp handleExplicitPluralForms_digits = Regx_adp_.new_("\\d+="); private static final Regx_adp handleExplicitPluralForms_digits = Regx_adp_.new_("\\d+=");
@ -4987,7 +4987,7 @@ public class XomwLanguage {
if (pluralRules == null) return getCompiledPluralRulesEmpty; if (pluralRules == null) return getCompiledPluralRulesEmpty;
XophpArray fallbacks = XomwLanguage.getFallbacksFor(this.mCode); XophpArray fallbacks = XomwLanguage.getFallbacksFor(this.mCode);
if (!XophpObject_.is_true(pluralRules)) { if (!XophpObject_.is_true(pluralRules)) {
int fallbacks_len = fallbacks.count(); int fallbacks_len = fallbacks.Len();
for (int i = 0; i < fallbacks_len; i++) { for (int i = 0; i < fallbacks_len; i++) {
String fallbackCode = fallbacks.Get_at_str(i); String fallbackCode = fallbacks.Get_at_str(i);
pluralRules = XomwLanguage.dataCacheXowa.getItem_ary(XophpString_.strtolower(fallbackCode), "compiledPluralRules"); pluralRules = XomwLanguage.dataCacheXowa.getItem_ary(XophpString_.strtolower(fallbackCode), "compiledPluralRules");

View File

@ -77,7 +77,7 @@ public class XomwOperator extends XomwFragment { /** @var String The name */
* @param int length * @param int length
*/ */
public XomwOperator(XomwConverter parser, String name, int pos, int length) {super(parser, pos, length); public XomwOperator(XomwConverter parser, String name, int pos, int length) {super(parser, pos, length);
if (XomwOperator.aliasMap.isset(name)) { if (XophpArray.isset(XomwOperator.aliasMap, name)) {
name = XomwOperator.aliasMap.Get_by_str(name); name = XomwOperator.aliasMap.Get_by_str(name);
} }
this.name = name; this.name = name;

View File

@ -148,11 +148,11 @@ public class XomwConverter {
token.error("unexpected operator"); token.error("unexpected operator");
} }
// Resolve higher precedence levels // Resolve higher precedence levels
XomwOperator lastOp = (XomwOperator)this.operators.end(); XomwOperator lastOp = (XomwOperator)XophpArray.end(this.operators);
while (lastOp != null && Int_.Cast(XomwConverter.precedence.Get_by(((XomwOperator)token).name)) <= Int_.Cast(XomwConverter.precedence.Get_by(((XomwOperator)lastOp).name))) { while (lastOp != null && Int_.Cast(XomwConverter.precedence.Get_by(((XomwOperator)token).name)) <= Int_.Cast(XomwConverter.precedence.Get_by(((XomwOperator)lastOp).name))) {
this.doOperation(lastOp, this.operands); this.doOperation(lastOp, this.operands);
this.operators.pop(); XophpArray.array_pop(this.operators);
lastOp = (XomwOperator)this.operators.end(); lastOp = (XomwOperator)XophpArray.end(this.operators);
} }
this.operators.Add(token); this.operators.Add(token);
} }
@ -160,15 +160,15 @@ public class XomwConverter {
// Finish off the stack // Finish off the stack
XomwOperator op = null; XomwOperator op = null;
while (null != (op = (XomwOperator)this.operators.pop())) { while (null != (op = (XomwOperator)XophpArray.array_pop(this.operators))) {
this.doOperation(op, this.operands); this.doOperation(op, this.operands);
} }
// Make sure the result is sane. The first case is possible for an empty // Make sure the result is sane. The first case is possible for an empty
// String input, the second should be unreachable. // String input, the second should be unreachable.
if (!this.operands.count_bool()) { if (!XophpArray.count_bool(this.operands)) {
this.error("condition expected"); this.error("condition expected");
} else if (this.operands.count() > 1) { } else if (XophpArray.count(this.operands) > 1) {
this.error("missing operator or too many operands"); this.error("missing operator or too many operands");
} }
@ -248,7 +248,7 @@ public class XomwConverter {
// Two-word operators like "is not" take precedence over single-word operators like "is" // Two-word operators like "is not" take precedence over single-word operators like "is"
if (String_.Eq(word2, "")) { if (String_.Eq(word2, "")) {
String bothWords = word1 + "-" + word2; String bothWords = word1 + "-" + word2;
if (XomwConverter.precedence.isset(bothWords)) { if (XophpArray.isset(XomwConverter.precedence, bothWords)) {
XomwFragment token = this.newOperator(bothWords, this.pos, nextTokenPos - this.pos); XomwFragment token = this.newOperator(bothWords, this.pos, nextTokenPos - this.pos);
this.pos = nextTokenPos; this.pos = nextTokenPos;
@ -257,7 +257,7 @@ public class XomwConverter {
} }
// Single-word operators // Single-word operators
if (XomwConverter.precedence.isset(word1)) { if (XophpArray.isset(XomwConverter.precedence, word1)) {
XomwFragment token = this.newOperator(word1, this.pos, XophpString_.strlen(word1)); XomwFragment token = this.newOperator(word1, this.pos, XophpString_.strlen(word1));
this.pos += XophpString_.strlen(word1); this.pos += XophpString_.strlen(word1);
@ -293,11 +293,11 @@ public class XomwConverter {
* @param Operator op * @param Operator op
*/ */
protected void doOperation(XomwOperator op, Object ignore) { // NOTE: MW passes 2 args, but method only has 1 protected void doOperation(XomwOperator op, Object ignore) { // NOTE: MW passes 2 args, but method only has 1
if (this.operands.count() < 2) { if (XophpArray.count(this.operands) < 2) {
op.error("missing operand"); op.error("missing operand");
} }
XomwExpression right = (XomwExpression)this.operands.pop(); XomwExpression right = (XomwExpression)XophpArray.array_pop(this.operands);
XomwExpression left = (XomwExpression)this.operands.pop(); XomwExpression left = (XomwExpression)XophpArray.array_pop(this.operands);
XomwExpression result = op.operate(left, right); XomwExpression result = op.operate(left, right);
this.operands.Add(result); this.operands.Add(result);
} }

View File

@ -42,7 +42,7 @@ public class XomwEvaluator {
XophpArray rv = XophpArray.New(); XophpArray rv = XophpArray.New();
// We can't use array_map() for this because it generates a warning if // We can't use array_map() for this because it generates a warning if
// there is an exception. // there is an exception.
int rules_len = rules.count(); int rules_len = rules.Len();
for (int i = 0; i < rules_len; i++) { for (int i = 0; i < rules_len; i++) {
String rule = rules.Get_at_str(i); String rule = rules.Get_at_str(i);
rule = XomwConverter.convert(rule); rule = XomwConverter.convert(rule);
@ -69,11 +69,11 @@ public class XomwEvaluator {
XophpArray m = XophpArray.New(); XophpArray m = XophpArray.New();
if (!XophpRegex_.preg_match_bool(gplx.langs.regxs.Regx_adp_.new_("^-?(([0-9]+)(?:\\.([0-9]+))?)"), number_str, m, 0, 0)) { if (!XophpRegex_.preg_match_bool(gplx.langs.regxs.Regx_adp_.new_("^-?(([0-9]+)(?:\\.([0-9]+))?)"), number_str, m, 0, 0)) {
XomwLog_.wfDebug_by_method("evaluateCompiled", ": invalid number input, returning \"other\"\n"); XomwLog_.wfDebug_by_method("evaluateCompiled", ": invalid number input, returning \"other\"\n");
return rules.count(); return XophpArray.count(rules);
} }
XophpArray operandSymbols = null; XophpArray operandSymbols = null;
if (!m.isset(3)) { if (!XophpArray.isset(m, 3)) {
operandSymbols = XophpArray.New() operandSymbols = XophpArray.New()
.Add("n", Decimal_adp_.int_(XophpInt_.intval(m.Get_at_str(1)))) .Add("n", Decimal_adp_.int_(XophpInt_.intval(m.Get_at_str(1))))
.Add("i", Decimal_adp_.int_(XophpInt_.intval(m.Get_at_str(1)))) .Add("i", Decimal_adp_.int_(XophpInt_.intval(m.Get_at_str(1))))
@ -98,7 +98,7 @@ public class XomwEvaluator {
// The compiled form is RPN, with tokens strictly delimited by // The compiled form is RPN, with tokens strictly delimited by
// spaces, so this is a simple RPN evaluator. // spaces, so this is a simple RPN evaluator.
int rules_len = rules.count(); int rules_len = rules.Len();
for (int i = 0; i < rules_len; i++) { for (int i = 0; i < rules_len; i++) {
String rule = rules.Get_at_str(i); String rule = rules.Get_at_str(i);
XophpArray stack = XophpArray.New(); XophpArray stack = XophpArray.New();
@ -108,13 +108,13 @@ public class XomwEvaluator {
String[] tokens = XophpString_.explode(" ", rule); String[] tokens = XophpString_.explode(" ", rule);
for (String token : tokens) { for (String token : tokens) {
int ord = XophpString_.ord(token); int ord = XophpString_.ord(token);
if (operandSymbols.isset(token)) { if (XophpArray.isset(operandSymbols, token)) {
stack.Add(XomwStackItem.New__number((Decimal_adp)operandSymbols.Get_by(token))); stack.Add(XomwStackItem.New__number((Decimal_adp)operandSymbols.Get_by(token)));
} else if (ord >= zero && ord <= nine) { } else if (ord >= zero && ord <= nine) {
stack.Add(XomwStackItem.New__number(Decimal_adp_.int_(XophpInt_.intval(token)))); stack.Add(XomwStackItem.New__number(Decimal_adp_.int_(XophpInt_.intval(token))));
} else { } else {
XomwStackItem right = (XomwStackItem)stack.pop(); XomwStackItem right = (XomwStackItem)XophpArray.array_pop(stack);
XomwStackItem left = (XomwStackItem)stack.pop(); XomwStackItem left = (XomwStackItem)XophpArray.array_pop(stack);
XomwStackItem result = XomwEvaluator.doOperation(token, left, right); XomwStackItem result = XomwEvaluator.doOperation(token, left, right);
stack.Add(result); stack.Add(result);
} }
@ -125,7 +125,7 @@ public class XomwEvaluator {
} }
// None of the provided rules match. The number belongs to category // None of the provided rules match. The number belongs to category
// "other", which comes last. // "other", which comes last.
return rules.count(); return XophpArray.count(rules);
} }
/** /**

View File

@ -50,7 +50,7 @@ class XomwRange {
*/ */
public boolean isNumberIn(Decimal_adp number) {return isNumberIn(number, true);} public boolean isNumberIn(Decimal_adp number) {return isNumberIn(number, true);}
public boolean isNumberIn(Decimal_adp number, boolean integerConstraint) { public boolean isNumberIn(Decimal_adp number, boolean integerConstraint) {
int parts_len = parts.count(); int parts_len = parts.Len();
for (int i = 0; i < parts_len; i++) { for (int i = 0; i < parts_len; i++) {
Object part_obj = this.parts.Get_at(i); Object part_obj = this.parts.Get_at(i);
if (XophpArray.is_array(part_obj)) { if (XophpArray.is_array(part_obj)) {
@ -91,7 +91,7 @@ class XomwRange {
*/ */
public void add(Object otherObj) { public void add(Object otherObj) {
if (Type_.Eq_by_obj(otherObj, XomwRange.class)) { if (Type_.Eq_by_obj(otherObj, XomwRange.class)) {
this.parts = XophpArray_.array_merge(this.parts, ((XomwRange)otherObj).parts); this.parts = XophpArray.array_merge(this.parts, ((XomwRange)otherObj).parts);
} else { } else {
this.parts.Add(otherObj); this.parts.Add(otherObj);
} }
@ -105,7 +105,7 @@ class XomwRange {
*/ */
@Override public String toString() { @Override public String toString() {
String s = "Range("; String s = "Range(";
int parts_len = this.parts.count(); int parts_len = this.parts.Len();
for (int i = 0; i < parts_len; i++) { for (int i = 0; i < parts_len; i++) {
Object part_obj = this.parts.Get_at(i); Object part_obj = this.parts.Get_at(i);
if (i > 0) { if (i > 0) {

View File

@ -39,8 +39,8 @@ public class Pfunc_plural extends Pf_func_base {
// no match for explicit key; take results (which has removed all explicit keys) and get plural rule index; EX: {{plural:1|2=two|3=three|one|many}} -> {{plural:?|one|many}} // no match for explicit key; take results (which has removed all explicit keys) and get plural rule index; EX: {{plural:1|2=two|3=three|one|many}} -> {{plural:?|one|many}}
XophpArray resultArray = (XophpArray)result; XophpArray resultArray = (XophpArray)result;
int idx = ctx.Lang().Mw_lang().getPluralRuleIndexNumber(number_str); int idx = ctx.Lang().Mw_lang().getPluralRuleIndexNumber(number_str);
if (idx >= resultArray.count()) // bound-check; EX: {{plural:2|wiki}} -> idx = 1 -> idx = 0 if (idx >= XophpArray.count(resultArray)) // bound-check; EX: {{plural:2|wiki}} -> idx = 1 -> idx = 0
idx = resultArray.count() - 1; idx = XophpArray.count(resultArray) - 1;
bfr.Add_str_u8(resultArray.Get_at_str(idx)); bfr.Add_str_u8(resultArray.Get_at_str(idx));
} }
} }

View File

@ -359,11 +359,11 @@ public function formatValues( $snaksSerialization ) {
// } // }
// } // }
// ksort( orderedPropertiesPart ); // ksort( orderedPropertiesPart );
// orderedProperties = XophpArray_.array_merge(orderedPropertiesPart, unorderedProperties); // orderedProperties = XophpArray.array_merge(orderedPropertiesPart, unorderedProperties);
// Lua tables start at 1 // Lua tables start at 1
// XophpArray orderedPropertiesResult = XophpArray_.array_combine( // XophpArray orderedPropertiesResult = XophpArray.array_combine(
// range(1, count(orderedProperties)), XophpArray_.array_values(orderedProperties) // range(1, count(orderedProperties)), XophpArray.array_values(orderedProperties)
// ); // );
// return rslt.Init_obj(orderedPropertiesResult.To_kv_ary()); // return rslt.Init_obj(orderedPropertiesResult.To_kv_ary());
return rslt.Init_obj(propertyIds); return rslt.Init_obj(propertyIds);

View File

@ -13,18 +13,19 @@ The terms of each license can be found in the source code repository:
GPLv3 License: https://github.com/gnosygnu/xowa/blob/master/LICENSE-GPLv3.txt GPLv3 License: https://github.com/gnosygnu/xowa/blob/master/LICENSE-GPLv3.txt
Apache License: https://github.com/gnosygnu/xowa/blob/master/LICENSE-APACHE2.txt Apache License: https://github.com/gnosygnu/xowa/blob/master/LICENSE-APACHE2.txt
*/ */
package gplx.xowa.mediawiki; import gplx.*; import gplx.xowa.*; package gplx.xowa.mediawiki;
import org.junit.*; import gplx.core.tests.*; import org.junit.*; import gplx.core.tests.*;
public class XophpArray_tst { // REF: http://php.net/manual/en/language.types.array.php public class XophpArrayInstanceTest { // REF: http://php.net/manual/en/language.types.array.php
private final XophpArray_fxt fxt = new XophpArray_fxt(); private final XophpArrayfxt fxt = new XophpArrayfxt();
@Test public void array__kvs() { @Test public void array__kvs() {
// $array = array("foo" => "bar", "bar" => "foo",); // $array = array("foo" => "bar", "bar" => "foo",);
fxt.Test__array fxt.Test__array
( XophpArray.New() ( XophpArray.New()
. Add("foo", "bar") . Add("foo", "bar")
. Add("bar", "foo") . Add("bar", "foo")
, XophpArrayItm.New_str("foo", "bar") , XophpArrayItm.NewStr("foo", "bar")
, XophpArrayItm.New_str("bar", "foo") , XophpArrayItm.NewStr("bar", "foo")
); );
} }
@Test public void array__casting() { @Test public void array__casting() {
@ -35,7 +36,7 @@ public class XophpArray_tst { // REF: http://php.net/manual/en/language.types.ar
. Add("1" , "b") . Add("1" , "b")
. Add(1.5 , "c") . Add(1.5 , "c")
. Add(true, "d") . Add(true, "d")
, XophpArrayItm.New_int(1, "d")); , XophpArrayItm.NewInt(1, "d"));
} }
@Test public void array__mixed() { @Test public void array__mixed() {
// $array = array("foo" => "bar", "bar" => "foo", 100 => -100, -100 => 100); // $array = array("foo" => "bar", "bar" => "foo", 100 => -100, -100 => 100);
@ -45,10 +46,10 @@ public class XophpArray_tst { // REF: http://php.net/manual/en/language.types.ar
. Add("bar", "foo") . Add("bar", "foo")
. Add(100, -100) . Add(100, -100)
. Add(-100, 100) . Add(-100, 100)
, XophpArrayItm.New_str("foo", "bar") , XophpArrayItm.NewStr("foo", "bar")
, XophpArrayItm.New_str("bar", "foo") , XophpArrayItm.NewStr("bar", "foo")
, XophpArrayItm.New_int(100, -100) , XophpArrayItm.NewInt(100, -100)
, XophpArrayItm.New_int(-100, 100) , XophpArrayItm.NewInt(-100, 100)
); );
} }
@Test public void array__objs() { @Test public void array__objs() {
@ -59,10 +60,10 @@ public class XophpArray_tst { // REF: http://php.net/manual/en/language.types.ar
. Add("bar") . Add("bar")
. Add("hello") . Add("hello")
. Add("world") . Add("world")
, XophpArrayItm.New_int(0, "foo") , XophpArrayItm.NewInt(0, "foo")
, XophpArrayItm.New_int(1, "bar") , XophpArrayItm.NewInt(1, "bar")
, XophpArrayItm.New_int(2, "hello") , XophpArrayItm.NewInt(2, "hello")
, XophpArrayItm.New_int(3, "world") , XophpArrayItm.NewInt(3, "world")
); );
} }
@Test public void array__unkeyed() { @Test public void array__unkeyed() {
@ -73,10 +74,10 @@ public class XophpArray_tst { // REF: http://php.net/manual/en/language.types.ar
. Add("b") . Add("b")
. Add(6, "c") . Add(6, "c")
. Add("d") . Add("d")
, XophpArrayItm.New_int(0, "a") , XophpArrayItm.NewInt(0, "a")
, XophpArrayItm.New_int(1, "b") , XophpArrayItm.NewInt(1, "b")
, XophpArrayItm.New_int(6, "c") , XophpArrayItm.NewInt(6, "c")
, XophpArrayItm.New_int(7, "d") , XophpArrayItm.NewInt(7, "d")
); );
} }
@Test public void array__multidimensional() { @Test public void array__multidimensional() {
@ -99,9 +100,9 @@ public class XophpArray_tst { // REF: http://php.net/manual/en/language.types.ar
. Add("dimensional", XophpArray.New() . Add("dimensional", XophpArray.New()
. Add("array", "foo") . Add("array", "foo")
)) ))
, XophpArrayItm.New_str("foo", "bar") , XophpArrayItm.NewStr("foo", "bar")
, XophpArrayItm.New_int(42, "24") , XophpArrayItm.NewInt(42, "24")
, XophpArrayItm.New_str("multi", XophpArray.New() , XophpArrayItm.NewStr("multi", XophpArray.New()
. Add("dimensional", XophpArray.New() . Add("dimensional", XophpArray.New()
. Add("array", "foo") . Add("array", "foo")
)) ))
@ -112,13 +113,13 @@ public class XophpArray_tst { // REF: http://php.net/manual/en/language.types.ar
ary.Add(0, "a").Add(1, "b"); ary.Add(0, "a").Add(1, "b");
// delete all // delete all
ary.unset(0); XophpArray.unset(ary, 0);
ary.unset(1); XophpArray.unset(ary, 1);
fxt.Test__array(ary); fxt.Test__array(ary);
// add new and assert idx is 2 // add new and assert idx is 2
ary.Add("c"); ary.Add("c");
fxt.Test__array(ary, XophpArrayItm.New_int(2, "c")); fxt.Test__array(ary, XophpArrayItm.NewInt(2, "c"));
} }
@Test public void Pop() { @Test public void Pop() {
XophpArray ary = XophpArray.New(); XophpArray ary = XophpArray.New();
@ -154,9 +155,9 @@ public class XophpArray_tst { // REF: http://php.net/manual/en/language.types.ar
fxt.Test__Get_by(ary, "missing", null); fxt.Test__Get_by(ary, "missing", null);
} }
} }
class XophpArray_fxt { class XophpArrayfxt {
public void Test__Count(XophpArray ary, int expd) { public void Test__Count(XophpArray ary, int expd) {
Gftest.Eq__int(expd, ary.count()); Gftest.Eq__int(expd, ary.Len());
} }
public void Test__array(XophpArray ary, XophpArrayItm... expd) { public void Test__array(XophpArray ary, XophpArrayItm... expd) {
XophpArrayItm[] actl = ary.To_ary(); XophpArrayItm[] actl = ary.To_ary();
@ -167,7 +168,7 @@ class XophpArray_fxt {
Gftest.Eq__ary(expd, actl); Gftest.Eq__ary(expd, actl);
} }
public void Test__Pop(XophpArray ary, String expd) { public void Test__Pop(XophpArray ary, String expd) {
String actl = (String)ary.pop(); String actl = (String)XophpArray.array_pop(ary);
Gftest.Eq__str(expd, actl); Gftest.Eq__str(expd, actl);
} }
public void Test__Itm_str_concat_end(XophpArray ary, String expd, int idx, String v) { public void Test__Itm_str_concat_end(XophpArray ary, String expd, int idx, String v) {

View File

@ -22,61 +22,61 @@ import gplx.String_;
import gplx.core.tests.Gftest; import gplx.core.tests.Gftest;
import org.junit.Test; import org.junit.Test;
public class XophpArray__tst { public class XophpArrayStaticTest {
private final XophpArray__fxt fxt = new XophpArray__fxt(); private final XophpArray_fxt fxt = new XophpArray_fxt();
// REF.PHP:https://www.php.net/manual/en/function.array-merge.php // REF.PHP:https://www.php.net/manual/en/function.array-merge.php
@Test public void array_merge__basic() { @Test public void array_merge__basic() {
XophpArray ary1 = fxt.Make().Add("key1", "val1").Add("a"); XophpArray ary1 = fxt.Make().Add("key1", "val1").Add("a");
XophpArray ary2 = fxt.Make().Add("key2", "val2").Add("b"); XophpArray ary2 = fxt.Make().Add("key2", "val2").Add("b");
fxt.Test__eq fxt.Test__eq
( fxt.Make().Add("key1", "val1").Add("a").Add("key2", "val2").Add("b") ( fxt.Make().Add("key1", "val1").Add("a").Add("key2", "val2").Add("b")
, XophpArray_.array_merge(ary1, ary2)); , XophpArray.array_merge(ary1, ary2));
} }
@Test public void array_merge__same_key() { @Test public void array_merge__same_key() {
XophpArray ary1 = fxt.Make().Add("key", "val1"); XophpArray ary1 = fxt.Make().Add("key", "val1");
XophpArray ary2 = fxt.Make().Add("key", "val2"); XophpArray ary2 = fxt.Make().Add("key", "val2");
fxt.Test__eq fxt.Test__eq
( fxt.Make().Add("key", "val2") ( fxt.Make().Add("key", "val2")
, XophpArray_.array_merge(ary1, ary2)); , XophpArray.array_merge(ary1, ary2));
} }
@Test public void array_merge__same_idx() { @Test public void array_merge__same_idx() {
XophpArray ary1 = fxt.Make().Add(0, "a"); XophpArray ary1 = fxt.Make().Add(0, "a");
XophpArray ary2 = fxt.Make().Add(0, "b"); XophpArray ary2 = fxt.Make().Add(0, "b");
fxt.Test__eq fxt.Test__eq
( fxt.Make().Add(0, "a").Add(1, "b") ( fxt.Make().Add(0, "a").Add(1, "b")
, XophpArray_.array_merge(ary1, ary2)); , XophpArray.array_merge(ary1, ary2));
} }
@Test public void array_merge__renumber() { @Test public void array_merge__renumber() {
XophpArray ary1 = fxt.Make().Add(3, "a"); XophpArray ary1 = fxt.Make().Add(3, "a");
XophpArray ary2 = fxt.Make().Add(2, "b"); XophpArray ary2 = fxt.Make().Add(2, "b");
fxt.Test__eq fxt.Test__eq
( fxt.Make().Add(0, "a").Add(1, "b") ( fxt.Make().Add(0, "a").Add(1, "b")
, XophpArray_.array_merge(ary1, ary2)); , XophpArray.array_merge(ary1, ary2));
} }
@Test public void array_merge__example_1() { @Test public void array_merge__example_1() {
XophpArray ary1 = fxt.Make().Add("color", "red").Add_many(2, 4); XophpArray ary1 = fxt.Make().Add("color", "red").Add_many(2, 4);
XophpArray ary2 = fxt.Make().Add_many("a", "b").Add("color", "green").Add("shape", "trapezoid").Add(4); XophpArray ary2 = fxt.Make().Add_many("a", "b").Add("color", "green").Add("shape", "trapezoid").Add(4);
fxt.Test__eq fxt.Test__eq
( fxt.Make().Add("color", "green").Add_many(2, 4, "a", "b").Add("shape", "trapezoid").Add(4) ( fxt.Make().Add("color", "green").Add_many(2, 4, "a", "b").Add("shape", "trapezoid").Add(4)
, XophpArray_.array_merge(ary1, ary2)); , XophpArray.array_merge(ary1, ary2));
} }
@Test public void array_merge__example_2() { @Test public void array_merge__example_2() {
XophpArray ary1 = fxt.Make(); XophpArray ary1 = fxt.Make();
XophpArray ary2 = fxt.Make().Add(1, "data"); XophpArray ary2 = fxt.Make().Add(1, "data");
fxt.Test__eq fxt.Test__eq
( fxt.Make().Add(0, "data") ( fxt.Make().Add(0, "data")
, XophpArray_.array_merge(ary1, ary2)); , XophpArray.array_merge(ary1, ary2));
} }
@Test public void array_add() { @Test public void array_add() {
XophpArray ary1 = fxt.Make().Add(0, "zero_a").Add(2, "two_a").Add(3, "three_a"); XophpArray ary1 = fxt.Make().Add(0, "zero_a").Add(2, "two_a").Add(3, "three_a");
XophpArray ary2 = fxt.Make().Add(1, "one_b").Add(3, "three_b").Add(4, "four_b"); XophpArray ary2 = fxt.Make().Add(1, "one_b").Add(3, "three_b").Add(4, "four_b");
fxt.Test__eq fxt.Test__eq
( fxt.Make().Add(0, "zero_a").Add(2, "two_a").Add(3, "three_a").Add(1, "one_b").Add(4, "four_b") ( fxt.Make().Add(0, "zero_a").Add(2, "two_a").Add(3, "three_a").Add(1, "one_b").Add(4, "four_b")
, XophpArray_.array_add(ary1, ary2)); , XophpArray.array_add(ary1, ary2));
} }
@Test public void array_splice__bgn_is_positive() { @Test public void array_splice__bgn_is_positive() {
XophpArray src = fxt.Make().Add_many("a", "b", "c", "d"); XophpArray src = fxt.Make().Add_many("a", "b", "c", "d");
XophpArray del = XophpArray_.array_splice(src, 1); XophpArray del = XophpArray.array_splice(src, 1);
fxt.Test__eq fxt.Test__eq
( fxt.Make().Add_many("a") ( fxt.Make().Add_many("a")
, src , src
@ -88,7 +88,7 @@ public class XophpArray__tst {
} }
@Test public void array_splice__bgn_is_positive_large() { @Test public void array_splice__bgn_is_positive_large() {
XophpArray src = fxt.Make().Add_many("a", "b", "c", "d"); XophpArray src = fxt.Make().Add_many("a", "b", "c", "d");
XophpArray del = XophpArray_.array_splice(src, 99); XophpArray del = XophpArray.array_splice(src, 99);
fxt.Test__eq fxt.Test__eq
( fxt.Make().Add_many("a", "b", "c", "d") ( fxt.Make().Add_many("a", "b", "c", "d")
, src , src
@ -100,7 +100,7 @@ public class XophpArray__tst {
} }
@Test public void array_splice__bgn_is_negative() { @Test public void array_splice__bgn_is_negative() {
XophpArray src = fxt.Make().Add_many("a", "b", "c", "d"); XophpArray src = fxt.Make().Add_many("a", "b", "c", "d");
XophpArray del = XophpArray_.array_splice(src, -3); XophpArray del = XophpArray.array_splice(src, -3);
fxt.Test__eq fxt.Test__eq
( fxt.Make().Add_many("a") ( fxt.Make().Add_many("a")
, src , src
@ -112,7 +112,7 @@ public class XophpArray__tst {
} }
@Test public void array_splice__bgn_is_negative_large() { @Test public void array_splice__bgn_is_negative_large() {
XophpArray src = fxt.Make().Add_many("a", "b", "c", "d"); XophpArray src = fxt.Make().Add_many("a", "b", "c", "d");
XophpArray del = XophpArray_.array_splice(src, -99); XophpArray del = XophpArray.array_splice(src, -99);
fxt.Test__eq fxt.Test__eq
( fxt.Make() ( fxt.Make()
, src , src
@ -124,7 +124,7 @@ public class XophpArray__tst {
} }
@Test public void array_splice__len_is_positive() { @Test public void array_splice__len_is_positive() {
XophpArray src = fxt.Make().Add_many("a", "b", "c", "d"); XophpArray src = fxt.Make().Add_many("a", "b", "c", "d");
XophpArray del = XophpArray_.array_splice(src, 1, 2); XophpArray del = XophpArray.array_splice(src, 1, 2);
fxt.Test__eq fxt.Test__eq
( fxt.Make().Add_many("a", "d") ( fxt.Make().Add_many("a", "d")
, src , src
@ -136,7 +136,7 @@ public class XophpArray__tst {
} }
@Test public void array_splice__len_is_positive_large() { @Test public void array_splice__len_is_positive_large() {
XophpArray src = fxt.Make().Add_many("a", "b", "c", "d"); XophpArray src = fxt.Make().Add_many("a", "b", "c", "d");
XophpArray del = XophpArray_.array_splice(src, 1, 99); XophpArray del = XophpArray.array_splice(src, 1, 99);
fxt.Test__eq fxt.Test__eq
( fxt.Make().Add_many("a") ( fxt.Make().Add_many("a")
, src , src
@ -148,7 +148,7 @@ public class XophpArray__tst {
} }
@Test public void array_splice__len_is_negative() { @Test public void array_splice__len_is_negative() {
XophpArray src = fxt.Make().Add_many("a", "b", "c", "d"); XophpArray src = fxt.Make().Add_many("a", "b", "c", "d");
XophpArray del = XophpArray_.array_splice(src, 1, -2); XophpArray del = XophpArray.array_splice(src, 1, -2);
fxt.Test__eq fxt.Test__eq
( fxt.Make().Add_many("a", "c", "d") ( fxt.Make().Add_many("a", "c", "d")
, src , src
@ -160,7 +160,7 @@ public class XophpArray__tst {
} }
@Test public void array_splice__len_is_negative_large() { @Test public void array_splice__len_is_negative_large() {
XophpArray src = fxt.Make().Add_many("a", "b", "c", "d"); XophpArray src = fxt.Make().Add_many("a", "b", "c", "d");
XophpArray del = XophpArray_.array_splice(src, 1, -99); XophpArray del = XophpArray.array_splice(src, 1, -99);
fxt.Test__eq fxt.Test__eq
( fxt.Make().Add_many("a", "b", "c", "d") ( fxt.Make().Add_many("a", "b", "c", "d")
, src , src
@ -172,7 +172,7 @@ public class XophpArray__tst {
} }
@Test public void array_splice__repl() { @Test public void array_splice__repl() {
XophpArray src = fxt.Make().Add(0, "a").Add(1, "b").Add(2, "c").Add(3, "d"); XophpArray src = fxt.Make().Add(0, "a").Add(1, "b").Add(2, "c").Add(3, "d");
XophpArray del = XophpArray_.array_splice(src, 1, 2, fxt.Make().Add(0, "x")); XophpArray del = XophpArray.array_splice(src, 1, 2, fxt.Make().Add(0, "x"));
fxt.Test__eq fxt.Test__eq
( fxt.Make().Add(0, "a").Add(1, "x").Add(2, "d") ( fxt.Make().Add(0, "a").Add(1, "x").Add(2, "d")
, src , src
@ -184,7 +184,7 @@ public class XophpArray__tst {
} }
@Test public void array_splice__example_1a() { @Test public void array_splice__example_1a() {
XophpArray src = fxt.Make().Add_many("red", "green", "blue", "yellow"); XophpArray src = fxt.Make().Add_many("red", "green", "blue", "yellow");
XophpArray del = XophpArray_.array_splice(src, 2); XophpArray del = XophpArray.array_splice(src, 2);
fxt.Test__eq fxt.Test__eq
( fxt.Make().Add_many("red", "green") ( fxt.Make().Add_many("red", "green")
, src , src
@ -196,7 +196,7 @@ public class XophpArray__tst {
} }
@Test public void array_splice__example_1b() { @Test public void array_splice__example_1b() {
XophpArray src = fxt.Make().Add_many("red", "green", "blue", "yellow"); XophpArray src = fxt.Make().Add_many("red", "green", "blue", "yellow");
XophpArray del = XophpArray_.array_splice(src, 1, -1); XophpArray del = XophpArray.array_splice(src, 1, -1);
fxt.Test__eq fxt.Test__eq
( fxt.Make().Add_many("red", "yellow") ( fxt.Make().Add_many("red", "yellow")
, src , src
@ -208,7 +208,7 @@ public class XophpArray__tst {
} }
@Test public void array_splice__example_1c() { @Test public void array_splice__example_1c() {
XophpArray src = fxt.Make().Add_many("red", "green", "blue", "yellow"); XophpArray src = fxt.Make().Add_many("red", "green", "blue", "yellow");
XophpArray del = XophpArray_.array_splice(src, 1, 4, XophpArray.New("orange")); XophpArray del = XophpArray.array_splice(src, 1, 4, XophpArray.New("orange"));
fxt.Test__eq fxt.Test__eq
( fxt.Make().Add_many("red", "orange") ( fxt.Make().Add_many("red", "orange")
, src , src
@ -220,7 +220,7 @@ public class XophpArray__tst {
} }
@Test public void array_splice__example_1d() { @Test public void array_splice__example_1d() {
XophpArray src = fxt.Make().Add_many("red", "green", "blue", "yellow"); XophpArray src = fxt.Make().Add_many("red", "green", "blue", "yellow");
XophpArray del = XophpArray_.array_splice(src, -1, 1, XophpArray.New("black", "maroon")); XophpArray del = XophpArray.array_splice(src, -1, 1, XophpArray.New("black", "maroon"));
fxt.Test__eq fxt.Test__eq
( fxt.Make().Add_many("red", "green", "blue", "black", "maroon") ( fxt.Make().Add_many("red", "green", "blue", "black", "maroon")
, src , src
@ -234,35 +234,35 @@ public class XophpArray__tst {
XophpArray orig = fxt.Make().Add("size", "XL").Add("color", "gold"); XophpArray orig = fxt.Make().Add("size", "XL").Add("color", "gold");
fxt.Test__eq fxt.Test__eq
( fxt.Make().Add(0, "XL").Add(1, "gold") ( fxt.Make().Add(0, "XL").Add(1, "gold")
, orig.values() , XophpArray.array_values(orig)
); );
} }
@Test public void array_map() { @Test public void array_map() {
XophpArray orig = fxt.Make().Add_many("a", "b", "c"); XophpArray orig = fxt.Make().Add_many("a", "b", "c");
fxt.Test__eq fxt.Test__eq
( fxt.Make().Add_many("A", "B", "C") ( fxt.Make().Add_many("A", "B", "C")
, XophpArray_.array_map(XophpString_.Callback_owner, "strtoupper", orig) , XophpArray.array_map(XophpString_.Callback_owner, "strtoupper", orig)
); );
} }
@Test public void array_flip__basic() { @Test public void array_flip__basic() {
XophpArray orig = fxt.Make().Add_many("oranges", "apples", "pears"); XophpArray orig = fxt.Make().Add_many("oranges", "apples", "pears");
fxt.Test__eq fxt.Test__eq
( fxt.Make().Add("oranges", 0).Add("apples", 1).Add("pears", 2) ( fxt.Make().Add("oranges", 0).Add("apples", 1).Add("pears", 2)
, XophpArray_.array_flip(orig) , XophpArray.array_flip(orig)
); );
} }
@Test public void array_flip__collision() { @Test public void array_flip__collision() {
XophpArray orig = fxt.Make().Add("a", 1).Add("b", 1).Add("c", 2); XophpArray orig = fxt.Make().Add("a", 1).Add("b", 1).Add("c", 2);
fxt.Test__eq fxt.Test__eq
( fxt.Make().Add("1", "b").Add("2", "c") ( fxt.Make().Add("1", "b").Add("2", "c")
, XophpArray_.array_flip(orig) , XophpArray.array_flip(orig)
); );
} }
@Test public void implode() { @Test public void implode() {
XophpArray orig = fxt.Make().Add_many("a", "b", "c"); XophpArray orig = fxt.Make().Add_many("a", "b", "c");
Gftest.Eq__str Gftest.Eq__str
( "a b c" ( "a b c"
, XophpArray_.implode(" ", orig) , XophpArray.implode(" ", orig)
); );
} }
@Test public void in_array() { @Test public void in_array() {
@ -270,19 +270,19 @@ public class XophpArray__tst {
XophpArray array; XophpArray array;
// Example #1 // Example #1
array = XophpArray.New("Mac", "NT", "Irix", "Linux"); array = XophpArray.New("Mac", "NT", "Irix", "Linux");
Gftest.Eq__bool(Bool_.Y, XophpArray_.in_array("Irix", array)); Gftest.Eq__bool(Bool_.Y, XophpArray.in_array("Irix", array));
Gftest.Eq__bool(Bool_.N, XophpArray_.in_array("mac" , array)); Gftest.Eq__bool(Bool_.N, XophpArray.in_array("mac" , array));
// Example #2 // Example #2
array = XophpArray.New(12.4d, 1.13d); array = XophpArray.New(12.4d, 1.13d);
Gftest.Eq__bool(Bool_.N, XophpArray_.in_array("12.4", array, true)); Gftest.Eq__bool(Bool_.N, XophpArray.in_array("12.4", array, true));
Gftest.Eq__bool(Bool_.Y, XophpArray_.in_array( 1.13d, array, true)); Gftest.Eq__bool(Bool_.Y, XophpArray.in_array( 1.13d, array, true));
// Example #3 // Example #3
array = XophpArray.New(XophpArray.New('p', 'h'), XophpArray.New('p', 'r'), 'o'); array = XophpArray.New(XophpArray.New('p', 'h'), XophpArray.New('p', 'r'), 'o');
Gftest.Eq__bool(Bool_.Y, XophpArray_.in_array(XophpArray.New('p', 'h'), array)); Gftest.Eq__bool(Bool_.Y, XophpArray.in_array(XophpArray.New('p', 'h'), array));
Gftest.Eq__bool(Bool_.N, XophpArray_.in_array(XophpArray.New('f', 'i'), array)); Gftest.Eq__bool(Bool_.N, XophpArray.in_array(XophpArray.New('f', 'i'), array));
Gftest.Eq__bool(Bool_.Y, XophpArray_.in_array('o', array)); Gftest.Eq__bool(Bool_.Y, XophpArray.in_array('o', array));
} }
@Test public void array_shift() { @Test public void array_shift() {
XophpArray array; XophpArray array;
@ -290,7 +290,7 @@ public class XophpArray__tst {
// key is int // key is int
array = XophpArray.New("a", "b"); array = XophpArray.New("a", "b");
shifted = (String)XophpArray_.array_shift(array); shifted = (String)XophpArray.array_shift(array);
Gftest.Eq__str("a", shifted); Gftest.Eq__str("a", shifted);
fxt.Test__eq fxt.Test__eq
@ -300,7 +300,7 @@ public class XophpArray__tst {
// key is str and int // key is str and int
array = XophpArray.New().Add("a", "a").Add(2, "b").Add(5, "c"); array = XophpArray.New().Add("a", "a").Add(2, "b").Add(5, "c");
shifted = (String)XophpArray_.array_shift(array); shifted = (String)XophpArray.array_shift(array);
Gftest.Eq__str("a", shifted); Gftest.Eq__str("a", shifted);
fxt.Test__eq fxt.Test__eq
@ -310,7 +310,7 @@ public class XophpArray__tst {
// empty // empty
array = XophpArray.New(); array = XophpArray.New();
shifted = (String)XophpArray_.array_shift(array); shifted = (String)XophpArray.array_shift(array);
Gftest.Eq__bool_y(shifted == null); Gftest.Eq__bool_y(shifted == null);
fxt.Test__eq fxt.Test__eq
@ -320,7 +320,7 @@ public class XophpArray__tst {
// null // null
array = null; array = null;
shifted = (String)XophpArray_.array_shift(array); shifted = (String)XophpArray.array_shift(array);
Gftest.Eq__bool_y(shifted == null); Gftest.Eq__bool_y(shifted == null);
Gftest.Eq__bool_y(array == null); Gftest.Eq__bool_y(array == null);
@ -328,7 +328,7 @@ public class XophpArray__tst {
// PHP examples // PHP examples
// Example #1 // Example #1
array = XophpArray.New("orange", "banana", "apple", "strawberry"); array = XophpArray.New("orange", "banana", "apple", "strawberry");
shifted = (String)XophpArray_.array_shift(array); shifted = (String)XophpArray.array_shift(array);
Gftest.Eq__str("orange", shifted); Gftest.Eq__str("orange", shifted);
fxt.Test__eq fxt.Test__eq
@ -344,31 +344,31 @@ public class XophpArray__tst {
array = XophpArray.New().Add("a", 1).Add("b", 2).Add("c", 3).Add("d", 4).Add("e", 5); array = XophpArray.New().Add("a", 1).Add("b", 2).Add("c", 3).Add("d", 4).Add("e", 5);
fxt.Test__eq fxt.Test__eq
( XophpArray.New().Add("a", 1).Add("c", 3).Add("e", 5) ( XophpArray.New().Add("a", 1).Add("c", 3).Add("e", 5)
, XophpArray_.array_filter(array, callbackOwner.NewCallback("array_filter_odd")) , XophpArray.array_filter(array, callbackOwner.NewCallback("array_filter_odd"))
); );
array = XophpArray.New(6, 7, 8, 9, 10, 11, 12); array = XophpArray.New(6, 7, 8, 9, 10, 11, 12);
fxt.Test__eq fxt.Test__eq
( XophpArray.New().Add(0, 6).Add(2, 8).Add(4, 10).Add(6, 12) ( XophpArray.New().Add(0, 6).Add(2, 8).Add(4, 10).Add(6, 12)
, XophpArray_.array_filter(array, callbackOwner.NewCallback( "array_filter_even")) , XophpArray.array_filter(array, callbackOwner.NewCallback( "array_filter_even"))
); );
// Example #2 array_filter() without callback // Example #2 array_filter() without callback
array = XophpArray.New().Add(0, "foo").Add(1, false).Add(2, -1).Add(3, null).Add(4, "").Add(5, "0").Add(6, 0); array = XophpArray.New().Add(0, "foo").Add(1, false).Add(2, -1).Add(3, null).Add(4, "").Add(5, "0").Add(6, 0);
fxt.Test__eq fxt.Test__eq
( XophpArray.New().Add(0, "foo").Add(2, -1) ( XophpArray.New().Add(0, "foo").Add(2, -1)
, XophpArray_.array_filter(array) , XophpArray.array_filter(array)
); );
// Example #3 array_filter() with flag // Example #3 array_filter() with flag
array = XophpArray.New().Add("a", 1).Add("b", 2).Add("c", 3).Add("d", 4); array = XophpArray.New().Add("a", 1).Add("b", 2).Add("c", 3).Add("d", 4);
fxt.Test__eq fxt.Test__eq
( XophpArray.New().Add("b", 2) ( XophpArray.New().Add("b", 2)
, XophpArray_.array_filter(array, callbackOwner.NewCallback("array_filter_key"), XophpArray_.ARRAY_FILTER_USE_KEY) , XophpArray.array_filter(array, callbackOwner.NewCallback("array_filter_key"), XophpArray.ARRAY_FILTER_USE_KEY)
); );
fxt.Test__eq fxt.Test__eq
( XophpArray.New().Add("b", 2).Add("d", 4) ( XophpArray.New().Add("b", 2).Add("d", 4)
, XophpArray_.array_filter(array, callbackOwner.NewCallback("array_filter_both"), XophpArray_.ARRAY_FILTER_USE_BOTH) , XophpArray.array_filter(array, callbackOwner.NewCallback("array_filter_both"), XophpArray.ARRAY_FILTER_USE_BOTH)
); );
} }
@Test public void reset() { @Test public void reset() {
@ -390,7 +390,7 @@ public class XophpArray__tst {
Gftest.Eq__str("step one", (String)XophpArray.current(array)); Gftest.Eq__str("step one", (String)XophpArray.current(array));
} }
} }
class XophpArray__fxt { class XophpArray_fxt {
public XophpArray Make() {return new XophpArray();} public XophpArray Make() {return new XophpArray();}
public void Test__eq(XophpArray expd, XophpArray actl) { public void Test__eq(XophpArray expd, XophpArray actl) {
Gftest.Eq__str(expd.To_str(), actl.To_str()); Gftest.Eq__str(expd.To_str(), actl.To_str());

View File

@ -2,7 +2,6 @@ package gplx.xowa.mediawiki.includes;
import gplx.core.tests.Gftest; import gplx.core.tests.Gftest;
import gplx.xowa.mediawiki.XophpArray; import gplx.xowa.mediawiki.XophpArray;
import gplx.xowa.mediawiki.XophpArray__tst;
import gplx.xowa.mediawiki.XophpCallback; import gplx.xowa.mediawiki.XophpCallback;
import gplx.xowa.mediawiki.XophpCallbackOwner; import gplx.xowa.mediawiki.XophpCallbackOwner;
import org.junit.Before; import org.junit.Before;
@ -75,7 +74,7 @@ class XomwHooksTestCallbackOwner implements XophpCallbackOwner {
public String Result() {return result;} private String result = ""; public String Result() {return result;} private String result = "";
@Override @Override
public Object Call(String method, Object... args) { public Object Call(String method, Object... args) {
result += method + ":" + (args == null ? -1 : ((XophpArray)args[0]).count()) + ";"; result += method + ":" + (args == null ? -1 : ((XophpArray)args[0]).Len()) + ";";
return null; // NOTE: XomwHooks throws error if non-null return null; // NOTE: XomwHooks throws error if non-null
} }
} }