1
0
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:
gnosygnu
2016-07-17 21:10:59 -04:00
parent b333db45f8
commit 7a851a41a5
290 changed files with 3048 additions and 2124 deletions

View File

@@ -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;

View File

@@ -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();

View File

@@ -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 {

View File

@@ -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);