From 8807dcfbeba7f7393d7f6d80dea97c0246f90ef6 Mon Sep 17 00:00:00 2001 From: gnosygnu Date: Thu, 23 Apr 2020 08:18:03 -0400 Subject: [PATCH] TemplateStyles: Support wrapper argument [#712] --- .../xtns/template_styles/Template_styles_nde.java | 15 +++++++++++---- .../template_styles/Template_styles_nde_tst.java | 15 +++++++++++++-- 2 files changed, 24 insertions(+), 6 deletions(-) diff --git a/400_xowa/src/gplx/xowa/xtns/template_styles/Template_styles_nde.java b/400_xowa/src/gplx/xowa/xtns/template_styles/Template_styles_nde.java index 01a2229b1..d5cd1e0b1 100644 --- a/400_xowa/src/gplx/xowa/xtns/template_styles/Template_styles_nde.java +++ b/400_xowa/src/gplx/xowa/xtns/template_styles/Template_styles_nde.java @@ -40,6 +40,7 @@ import gplx.xowa.xtns.Xox_xnde; import gplx.xowa.xtns.Xox_xnde_; public class Template_styles_nde implements Xox_xnde, Mwh_atr_itm_owner2 { private byte[] css_ttl_bry; + private byte[] wrapper; private byte[] css_src; private boolean css_ignore; private int css_page_id; @@ -48,6 +49,9 @@ public class Template_styles_nde implements Xox_xnde, Mwh_atr_itm_owner2 { public void Xatr__set(Xowe_wiki wiki, byte[] src, Mwh_atr_itm xatr, byte xatr_id) { switch (xatr_id) { case Xatr__src: css_ttl_bry = xatr.Val_as_bry(); break; + case Xatr__wrapper: + wrapper = Bry_.Add(xatr.Val_as_bry(), Byte_ascii.Space); // add trailing space for html_head.format + break; } } public void Xtn_parse(Xowe_wiki wiki, Xop_ctx ctx, Xop_root_tkn root, byte[] src, Xop_xnde_tkn xnde) { @@ -100,7 +104,7 @@ public class Template_styles_nde implements Xox_xnde, Mwh_atr_itm_owner2 { if (!css_ignore) { Bry_bfr tmp_bfr = ctx.Wiki().Utl__bfr_mkr().Get_b512(); try { - html_head.Bld_many(tmp_bfr, css_page_id, Bry_.new_u8(cssMin.cssmin(String_.new_u8(css_src), -1)) ); + html_head.Bld_many(tmp_bfr, css_page_id, wrapper, Bry_.new_u8(cssMin.cssmin(String_.new_u8(css_src), -1)) ); Xoh_head_itm__css_dynamic css_dynamic = ctx.Page().Html_data().Head_mgr().Itm__css_dynamic(); css_dynamic.Enabled_y_(); css_dynamic.Add(tmp_bfr.To_bry_and_clear()); @@ -120,10 +124,13 @@ public class Template_styles_nde implements Xox_xnde, Mwh_atr_itm_owner2 { return html_error.Bld_many_to_str_auto_bfr(msg); } - public static final byte Xatr__src = 0; - private static final Hash_adp_bry xatrs_hash = Hash_adp_bry.ci_a7().Add_str_byte("src", Xatr__src); + public static final byte Xatr__src = 0, Xatr__wrapper = 1; + private static final Hash_adp_bry xatrs_hash = Hash_adp_bry.ci_a7() + .Add_str_byte("src", Xatr__src) + .Add_str_byte("wrapper", Xatr__wrapper) + ; private static final Bry_fmt - html_head = Bry_fmt.Auto("\n/*TemplateStyles:r~{id}*/\n~{css}") + html_head = Bry_fmt.Auto("\n/*TemplateStyles:r~{id}*/\n~{wrapper}~{css}") , html_error = Bry_fmt.Auto("~{msg}") ; } diff --git a/400_xowa/src/gplx/xowa/xtns/template_styles/Template_styles_nde_tst.java b/400_xowa/src/gplx/xowa/xtns/template_styles/Template_styles_nde_tst.java index 64bc69d12..ee37ffa34 100644 --- a/400_xowa/src/gplx/xowa/xtns/template_styles/Template_styles_nde_tst.java +++ b/400_xowa/src/gplx/xowa/xtns/template_styles/Template_styles_nde_tst.java @@ -121,6 +121,15 @@ public class Template_styles_nde_tst { , "" ); } + @Test public void Wrapper() { + String css = fxt.Make__css_color("red"); + fxt.Init__page("Template:Test.css", css); + fxt.Test__parse + ( "" + , "" + , fxt.Make__style(0, ".wrapper_class", css) + ); + } } class Template_styles_nde_fxt { private final Xop_fxt parser_fxt = new Xop_fxt(); @@ -135,8 +144,10 @@ class Template_styles_nde_fxt { public String Make__css_color(String color) { return ".style0{color:" + color + "}"; } - public String Make__style(int id, String css) { - return "\n/*TemplateStyles:r" + id + "*/\n.mw-parser-output " + css; // .mw-parser-output needs to be added to all TemplateStyles CSS, else TS ids called "portal" will affect sidebar; ISSUE#:426; PAGE:en.w:Poland DATE:2020-04-10 + public String Make__style(int id, String css) {return Make__style(id, null, css);} + public String Make__style(int id, String wrapper, String css) { + wrapper = wrapper == null ? "" : wrapper + " "; + return "\n/*TemplateStyles:r" + id + "*/\n" + wrapper + ".mw-parser-output " + css; // .mw-parser-output needs to be added to all TemplateStyles CSS, else TS ids called "portal" will affect sidebar; ISSUE#:426; PAGE:en.w:Poland DATE:2020-04-10 } public void Test__parse(String src, String expd_html, String expd_head) { parser_fxt.Test__parse__tmpl_to_html(src, expd_html);