1
0
mirror of https://github.com/gnosygnu/xowa.git synced 2026-03-02 03:49:30 +00:00
This commit is contained in:
gnosygnu
2016-02-01 00:06:50 -05:00
parent 52c36aa4f8
commit 6d179ca59d
52 changed files with 505 additions and 253 deletions

View File

@@ -25,12 +25,15 @@ public class Pf_func_ {
public static final byte Name_dlm = Byte_ascii.Colon;
public static byte[] Eval_arg_or(Xop_ctx ctx, byte[] src, Xot_invk caller, Xot_invk self, int self_args_len, int i, byte[] or) {
if (i >= self_args_len) return or;
Bry_bfr bfr = Bry_bfr.new_();
Arg_nde_tkn nde = self.Args_get_by_idx(i);
Bry_bfr bfr = Bry_bfr.new_();
Eval_arg_or(bfr, ctx, src, caller, self, nde, or);
return bfr.To_bry_and_clear_and_trim();
}
public static void Eval_arg_or(Bry_bfr bfr, Xop_ctx ctx, byte[] src, Xot_invk caller, Xot_invk self, Arg_nde_tkn nde, byte[] or) {
nde.Key_tkn().Tmpl_evaluate(ctx, src, caller, bfr); // NOTE: must add key b/c parser functions do not have keys and some usages pass in xml_tkns; EX: {{#if|<a href='{{{1}}}'|}}; "<a href" should not be interpreted as key
if (nde.KeyTkn_exists()) bfr.Add_byte(Byte_ascii.Eq);
nde.Val_tkn().Tmpl_evaluate(ctx, src, caller, bfr);
return bfr.To_bry_and_clear_and_trim();
}
public static byte[] Eval_val_or(Xop_ctx ctx, byte[] src, Xot_invk caller, Xot_invk self, int self_args_len, int i, byte[] or) {
if (i >= self_args_len) return or;
@@ -39,10 +42,6 @@ public class Pf_func_ {
nde.Val_tkn().Tmpl_evaluate(ctx, src, caller, bfr);
return bfr.To_bry_and_clear_and_trim();
}
public static byte[] Eval_tkn(Bry_bfr bfr, Xop_ctx ctx, byte[] src, Xot_invk caller, Xop_tkn_itm tkn) {
tkn.Tmpl_evaluate(ctx, src, caller, bfr);
return bfr.To_bry_and_clear();
}
private static final Number_parser lhs_parser = new Number_parser().Hex_enabled_(true), rhs_parser = new Number_parser().Hex_enabled_(true);
public static boolean Eq_(byte[] lhs, byte[] rhs) { // PATCH.PHP: php allows "003" == "3.0"; ASSUME: numbers are either int or int-like decimal; long, float, decimal not supported
int lhs_len = lhs.length, rhs_len = rhs.length;