mirror of
https://github.com/gnosygnu/xowa.git
synced 2026-03-02 03:49:30 +00:00
'v3.7.3.1'
This commit is contained in:
@@ -76,7 +76,7 @@ public class Xot_defn_tmpl implements Xot_defn {
|
||||
if (!onlyinclude_parsed) {
|
||||
onlyinclude_parsed = true;
|
||||
byte[] new_data = Extract_onlyinclude(data_raw, wiki.Utl__bfr_mkr());
|
||||
Xop_ctx new_ctx = Xop_ctx.new_sub_(wiki, ctx);
|
||||
Xop_ctx new_ctx = Xop_ctx.New__sub(wiki, ctx, page); // COMMENT:changed from ctx.Page() to page; DATE:2016-07-11
|
||||
Xot_defn_tmpl tmpl = wiki.Parser_mgr().Main().Parse_text_to_defn_obj(new_ctx, new_ctx.Tkn_mkr(), wiki.Ns_mgr().Ns_template(), Bry_.Empty, new_data);
|
||||
tmpl.Root().Tmpl_compile(new_ctx, new_data, Xot_compile_data.Null);
|
||||
data_raw = new_data;
|
||||
|
||||
@@ -48,7 +48,6 @@ public class Xot_invk_tkn extends Xop_tkn_itm_base implements Xot_invk {
|
||||
val.Subs_get(j).Tmpl_compile(ctx, src, prep_data);
|
||||
}
|
||||
}
|
||||
private static final Xol_func_itm finder = new Xol_func_itm();
|
||||
@Override public boolean Tmpl_evaluate(Xop_ctx ctx, byte[] src, Xot_invk caller, Bry_bfr bfr) { // this="{{t|{{{0}}}}}" caller="{{t|1}}"
|
||||
boolean rv = false;
|
||||
Xot_defn defn = tmpl_defn; Xowe_wiki wiki = ctx.Wiki(); Xol_lang_itm lang = wiki.Lang();
|
||||
@@ -101,14 +100,12 @@ public class Xot_invk_tkn extends Xop_tkn_itm_base implements Xot_invk {
|
||||
if (ns_eval != null && !template_prefix_found) // do not transclude ns if Template prefix seen earlier; EX: {{Template:Wikipedia:A}} should not transclude "Wikipedia:A"; DATE:2013-04-03
|
||||
return SubEval(ctx, wiki, bfr, name_ary, caller, src);
|
||||
|
||||
int finder_tid, finder_colon_pos, finder_subst_end;
|
||||
synchronized (finder) {
|
||||
lang.Func_regy().Find_defn(finder, name_ary, name_bgn, name_ary_len);
|
||||
defn = finder.Func();
|
||||
finder_tid = finder.Tid();
|
||||
finder_colon_pos = finder.Colon_pos();
|
||||
finder_subst_end = finder.Subst_end();
|
||||
}
|
||||
Xol_func_itm finder = new Xol_func_itm(); // TS.MEM: DATE:2016-07-12
|
||||
lang.Func_regy().Find_defn(finder, name_ary, name_bgn, name_ary_len);
|
||||
defn = finder.Func();
|
||||
int finder_tid = finder.Tid();
|
||||
int finder_colon_pos = finder.Colon_pos();
|
||||
int finder_subst_end = finder.Subst_end();
|
||||
|
||||
int colon_pos = -1;
|
||||
switch (finder_tid) {
|
||||
@@ -283,7 +280,7 @@ public class Xot_invk_tkn extends Xop_tkn_itm_base implements Xot_invk {
|
||||
prepend_mgr.End(ctx, bfr, rslt_bfr.Bfr(), rslt_bfr.Len(), Bool_.Y);
|
||||
if (name_had_subst) { // current invk had "subst:"; parse incoming invk again to remove effects of subst; PAGE:pt.w:Argentina DATE:2014-09-24
|
||||
byte[] tmp_src = rslt_bfr.To_bry_and_clear();
|
||||
rslt_bfr.Add(wiki.Parser_mgr().Main().Parse_text_to_wtxt(tmp_src)); // this could be cleaner / more optimized
|
||||
rslt_bfr.Add(wiki.Parser_mgr().Main().Expand_tmpl(tmp_src)); // this could be cleaner / more optimized
|
||||
}
|
||||
if (Cache_enabled) {
|
||||
byte[] rslt_val = rslt_bfr.To_bry_and_clear();
|
||||
|
||||
@@ -52,7 +52,6 @@ public class Xot_invk_wkr implements Xop_ctx_wkr, Xop_arg_wkr {
|
||||
invk.Args_add(ctx, nde);
|
||||
return true;
|
||||
}
|
||||
private static final Xol_func_itm finder = new Xol_func_itm();
|
||||
private static void AddNameArg(Xop_ctx ctx, byte[] src, Xot_invk_tkn invk, Arg_nde_tkn nde) {
|
||||
// make valTkn into a keyTkn; note that argBldr will only generate a valTkn
|
||||
Arg_itm_tkn key_tkn = nde.Val_tkn(), val_tkn = nde.Key_tkn();
|
||||
@@ -62,15 +61,14 @@ public class Xot_invk_wkr implements Xop_ctx_wkr, Xop_arg_wkr {
|
||||
if (key_tkn.Itm_static() != Bool_.Y_byte) return; // dynamic tkn; can't identify func/name
|
||||
int colon_pos = -1, txt_bgn = key_tkn.Dat_bgn(), txt_end = key_tkn.Dat_end();
|
||||
|
||||
Xot_defn finder_func; byte finder_tid; int finder_colon_pos, finder_subst_bgn, finder_subst_end;;
|
||||
synchronized (finder) {
|
||||
ctx.Wiki().Lang().Func_regy().Find_defn(finder, src, txt_bgn, txt_end);
|
||||
finder_func = finder.Func();
|
||||
finder_tid = finder.Tid();
|
||||
finder_colon_pos = finder.Colon_pos();
|
||||
finder_subst_bgn = finder.Subst_bgn();
|
||||
finder_subst_end = finder.Subst_end();
|
||||
}
|
||||
|
||||
Xol_func_itm finder = new Xol_func_itm(); // TS.MEM: DATE:2016-07-12
|
||||
ctx.Wiki().Lang().Func_regy().Find_defn(finder, src, txt_bgn, txt_end);
|
||||
Xot_defn finder_func = finder.Func();
|
||||
byte finder_tid = finder.Tid();
|
||||
int finder_colon_pos = finder.Colon_pos();
|
||||
int finder_subst_bgn = finder.Subst_bgn();
|
||||
int finder_subst_end = finder.Subst_end();
|
||||
|
||||
switch (finder_tid) {
|
||||
case Xot_defn_.Tid_func: // func
|
||||
@@ -80,7 +78,7 @@ public class Xot_invk_wkr implements Xop_ctx_wkr, Xop_arg_wkr {
|
||||
case Xot_defn_.Tid_safesubst:
|
||||
int subst_bgn = finder_subst_bgn, subst_end = finder_subst_end;
|
||||
invk.Tmpl_subst_props_(finder_tid, subst_bgn, subst_end);
|
||||
if ((ctx.Parse_tid() == Xop_parser_.Parse_tid_tmpl && finder_tid == Xot_defn_.Tid_subst) // NOTE: if subst, but in tmpl stage, do not actually subst; PAGE:en.w:Unreferenced; DATE:2013-01-31
|
||||
if ((ctx.Parse_tid() == Xop_parser_tid_.Tid__defn && finder_tid == Xot_defn_.Tid_subst) // NOTE: if subst, but in tmpl stage, do not actually subst; PAGE:en.w:Unreferenced; DATE:2013-01-31
|
||||
|| ctx.Page().Ttl().Ns().Id_is_tmpl()) { // also, if on tmpl page, never evaluate (questionable, but seems to be needed)
|
||||
}
|
||||
else {
|
||||
|
||||
@@ -54,7 +54,7 @@ public class Xot_tmpl_wtr {
|
||||
int xnde_tag_id = xnde.Tag().Id();
|
||||
switch (xnde_tag_id) {
|
||||
case Xop_xnde_tag_.Tid__onlyinclude: {
|
||||
// NOTE: originally "if (ctx.Parse_tid() == Xop_parser_.Parse_tid_page_tmpl) {" but if not needed; Xot_tmpl_wtr should not be called for tmpls and <oi> should not make it to page_wiki
|
||||
// NOTE: originally "if (ctx.Parse_tid() == Xop_parser_tid_.Tid__tmpl) {" but if not needed; Xot_tmpl_wtr should not be called for tmpls and <oi> should not make it to page_wiki
|
||||
Bry_bfr tmp_bfr = Bry_bfr_.New();
|
||||
ctx.Only_include_evaluate_(true);
|
||||
xnde.Tmpl_evaluate(ctx, src, Xot_invk_temp.Page_is_caller, tmp_bfr);
|
||||
|
||||
Reference in New Issue
Block a user