1
0
mirror of https://github.com/gnosygnu/xowa.git synced 2024-10-27 20:34:16 +00:00

TemplateStyles: Support wrapper argument [#712]

This commit is contained in:
gnosygnu 2020-04-23 08:18:03 -04:00
parent a6ac592212
commit 8807dcfbeb
2 changed files with 24 additions and 6 deletions

View File

@ -40,6 +40,7 @@ import gplx.xowa.xtns.Xox_xnde;
import gplx.xowa.xtns.Xox_xnde_; import gplx.xowa.xtns.Xox_xnde_;
public class Template_styles_nde implements Xox_xnde, Mwh_atr_itm_owner2 { public class Template_styles_nde implements Xox_xnde, Mwh_atr_itm_owner2 {
private byte[] css_ttl_bry; private byte[] css_ttl_bry;
private byte[] wrapper;
private byte[] css_src; private byte[] css_src;
private boolean css_ignore; private boolean css_ignore;
private int css_page_id; 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) { public void Xatr__set(Xowe_wiki wiki, byte[] src, Mwh_atr_itm xatr, byte xatr_id) {
switch (xatr_id) { switch (xatr_id) {
case Xatr__src: css_ttl_bry = xatr.Val_as_bry(); break; 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) { 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) { if (!css_ignore) {
Bry_bfr tmp_bfr = ctx.Wiki().Utl__bfr_mkr().Get_b512(); Bry_bfr tmp_bfr = ctx.Wiki().Utl__bfr_mkr().Get_b512();
try { 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(); Xoh_head_itm__css_dynamic css_dynamic = ctx.Page().Html_data().Head_mgr().Itm__css_dynamic();
css_dynamic.Enabled_y_(); css_dynamic.Enabled_y_();
css_dynamic.Add(tmp_bfr.To_bry_and_clear()); 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); return html_error.Bld_many_to_str_auto_bfr(msg);
} }
public static final byte Xatr__src = 0; 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); 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 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("<strong class=\"error\">~{msg}</strong>") , html_error = Bry_fmt.Auto("<strong class=\"error\">~{msg}</strong>")
; ;
} }

View File

@ -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
( "<templatestyles src='Test.css' wrapper='.wrapper_class' />"
, ""
, fxt.Make__style(0, ".wrapper_class", css)
);
}
} }
class Template_styles_nde_fxt { class Template_styles_nde_fxt {
private final Xop_fxt parser_fxt = new Xop_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) { public String Make__css_color(String color) {
return ".style0{color:" + color + "}"; return ".style0{color:" + color + "}";
} }
public String Make__style(int id, String css) { public String Make__style(int id, String css) {return Make__style(id, null, 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 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) { public void Test__parse(String src, String expd_html, String expd_head) {
parser_fxt.Test__parse__tmpl_to_html(src, expd_html); parser_fxt.Test__parse__tmpl_to_html(src, expd_html);