1
0
mirror of https://github.com/gnosygnu/xowa.git synced 2026-03-02 03:49:30 +00:00

v2.11.2.1

This commit is contained in:
gnosygnu
2015-11-08 23:48:07 -05:00
parent b990ec409f
commit d9f45cec19
298 changed files with 3908 additions and 2141 deletions

View File

@@ -170,7 +170,7 @@ public class Arg_bldr {
trim = false;
switch (wkr_typ) {
case Xop_arg_wkr_.Typ_prm : trim = arg_idx == 0; break;
case Xop_arg_wkr_.Typ_tmpl: trim = key_exists || arg_idx == 0; break;
case Xop_arg_wkr_.Typ_tmpl: trim = true; break; // NOTE: was "key_exists || arg_idx == 0;"; PAGE:s.w:Gothic_architecture; DATE:2015-11-07
case Xop_arg_wkr_.Typ_lnki: trim = !cur_itm_is_key; break;
}
if (trim) {

View File

@@ -66,7 +66,7 @@ public class Xot_defn_tmpl implements Xot_defn {
Xoae_page page = ctx.Cur_page();
if (!page.Tmpl_stack_add(full_name)) {
bfr.Add_str_a7("<!-- template loop detected:" + gplx.langs.htmls.Html_utl.Escape_html_as_str(String_.new_u8(name)) + " -->");
Xoa_app_.Usr_dlg().Warn_many("", "", "template loop detected: url=~{0} name=~{1}", ctx.Cur_page().Url().To_str(), name);
Xoa_app_.Usr_dlg().Log_many("", "", "template loop detected: url=~{0} name=~{1}", ctx.Cur_page().Url().To_str(), name);
return false;
}
boolean rv = true;

View File

@@ -337,7 +337,7 @@ public class Xot_invk_tkn extends Xop_tkn_itm_base implements Xot_invk {
private boolean Transclude(Xop_ctx ctx, Xowe_wiki wiki, Bry_bfr bfr, byte[] name_ary, Xot_invk caller, byte[] src) {
Xoa_ttl page_ttl = Xoa_ttl.parse(wiki, name_ary); if (page_ttl == null) return false; // ttl not valid; EX: {{:[[abc]]}}
byte[] transclude_src = null;
if (page_ttl.Ns().Id_tmpl()) { // ttl is template; check tmpl_regy first before going to data_mgr
if (page_ttl.Ns().Id_is_tmpl()) { // ttl is template; check tmpl_regy first before going to data_mgr
Xot_defn_tmpl tmpl = (Xot_defn_tmpl)wiki.Cache_mgr().Defn_cache().Get_by_key(page_ttl.Page_db());
if (tmpl != null) transclude_src = tmpl.Data_raw();
}
@@ -385,21 +385,21 @@ public class Xot_invk_tkn extends Xop_tkn_itm_base implements Xot_invk {
return rv;
}
public static void Print_not_found(Bry_bfr bfr, Xow_ns_mgr ns_mgr, byte[] name_ary) { // print missing as [[:Template:Missing]]; REF:MW: Parser.php|braceSubstitution|$text = "[[:$titleText]]"; EX:en.d:Kazakhstan; DATE:2014-03-25
byte[] template_ns_name = ns_mgr.Ns_template().Name_bry();
byte[] template_ns_name = ns_mgr.Ns_template().Name_db();
bfr.Add(Xop_tkn_.Lnki_bgn).Add_byte(Byte_ascii.Colon).Add(template_ns_name).Add_byte(Byte_ascii.Colon).Add(name_ary).Add(Xop_tkn_.Lnki_end);
}
private boolean SubEval(Xop_ctx ctx, Xowe_wiki wiki, Bry_bfr bfr, byte[] name_ary, Xot_invk caller, byte[] src_for_tkn) {
Xoa_ttl page_ttl = Xoa_ttl.parse(wiki, name_ary); if (page_ttl == null) return false; // ttl not valid; EX: {{:[[abc]]}}
Xot_defn_tmpl transclude_tmpl = null;
switch (page_ttl.Ns().Id()) {
case Xow_ns_.Id_template: // ttl is template not in cache, or some other ns; do load
case Xow_ns_.Tid__template: // ttl is template not in cache, or some other ns; do load
Xot_defn_tmpl tmpl = (Xot_defn_tmpl)wiki.Cache_mgr().Defn_cache().Get_by_key(page_ttl.Page_db());
if (tmpl != null) {
if (tmpl.Root() == null) tmpl.Parse_tmpl(ctx);
transclude_tmpl = tmpl;
}
break;
case Xow_ns_.Id_special:
case Xow_ns_.Tid__special:
bfr.Add(Xop_tkn_.Lnki_bgn).Add_byte(Byte_ascii.Colon).Add(name_ary).Add(Xop_tkn_.Lnki_end);
return true;
}

View File

@@ -72,7 +72,7 @@ public class Xot_invk_wkr implements Xop_ctx_wkr, Xop_arg_wkr {
int subst_bgn = finder.Subst_bgn(), subst_end = finder.Subst_end();
invk.Tmpl_subst_props_(finder_typeId, subst_bgn, subst_end);
if ((ctx.Parse_tid() == Xop_parser_.Parse_tid_tmpl && finder_typeId == Xot_defn_.Tid_subst) // NOTE: if subst, but in tmpl stage, do not actually subst; PAGE:en.w:Unreferenced; DATE:2013-01-31
|| ctx.Cur_page().Ttl().Ns().Id_tmpl()) { // also, if on tmpl page, never evaluate (questionable, but seems to be needed)
|| ctx.Cur_page().Ttl().Ns().Id_is_tmpl()) { // also, if on tmpl page, never evaluate (questionable, but seems to be needed)
}
else {
key_tkn.Dat_rng_ary_(src, subst_end, txt_end); // redo txt_rng to ignore subst

View File

@@ -209,7 +209,7 @@ public class Xot_invk_wkr_basic_tst {
}
@Test public void Missing_foreign() {
Xow_ns ns = fxt.Wiki().Ns_mgr().Ns_template();
byte[] old_ns = ns.Name_bry();
byte[] old_ns = ns.Name_db();
ns.Name_bry_(Bry_.new_a7("Template_foreign"));
fxt.Test_parse_tmpl_str("{{Missing}}", "[[:Template_foreign:Missing]]");
ns.Name_bry_(old_ns);
@@ -233,7 +233,7 @@ public class Xot_invk_wkr_basic_tst {
fxt.Init_defn_clear();
fxt.Init_defn_add("test_1", "{{test_2|{{{1}}}}}");
fxt.Init_defn_add("test_2", "{{{1}}}");
fxt.Test_parse_tmpl_str("{{test_1| a }}", " a ");
fxt.Test_parse_tmpl_str("{{test_1| a }}", " a"); // tmpl.trim_end: always trim end; DATE:2015-11-07
fxt.Init_defn_clear();
}
@Test public void Ws_trimmed_key_1() { // PURPOSE: trim prm when passed as key;
@@ -254,7 +254,7 @@ public class Xot_invk_wkr_basic_tst {
fxt.Init_defn_clear();
fxt.Init_defn_add("test_1", "{{test_2|1={{{1}}}{{{2}}}}}");
fxt.Init_defn_add("test_2", "{{{1}}}");
fxt.Test_parse_tmpl_str("{{test_1| a | b }}", "a b");
fxt.Test_parse_tmpl_str("{{test_1| a | b }}", "a b"); // tmpl.trim_end: always trim end; DATE:2015-11-07
fxt.Init_defn_clear();
}
@Test public void Ws_eval_prm() { // PURPOSE: skip ws in prm_idx; EX:it.w:Portale:Giochi_da_tavolo; it.w:Template:Alternate; DATE:2014-02-09
@@ -316,7 +316,7 @@ public class Xot_invk_wkr_basic_tst {
fxt.Init_defn_clear();
}
@Test public void Tmpl_aliases() { // PURPOSE: handled aliases for Template ns
fxt.Wiki().Ns_mgr().Aliases_add(Xow_ns_.Id_template, "TemplateAlias");
fxt.Wiki().Ns_mgr().Aliases_add(Xow_ns_.Tid__template, "TemplateAlias");
fxt.Wiki().Ns_mgr().Init();
fxt.Init_defn_clear();
fxt.Init_defn_add("tmpl_key", "tmpl_val");
@@ -324,7 +324,7 @@ public class Xot_invk_wkr_basic_tst {
fxt.Init_defn_clear();
}
@Test public void Tmpl_aliases_2() { // PURPOSE: handled aliases for other ns; DATE:2013-02-08
fxt.Wiki().Ns_mgr().Aliases_add(Xow_ns_.Id_project, "WP");
fxt.Wiki().Ns_mgr().Aliases_add(Xow_ns_.Tid__project, "WP");
fxt.Wiki().Ns_mgr().Init();
fxt.Init_defn_clear();
fxt.Init_page_create("Project:tmpl_key", "tmpl_val");