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:
parent
a6ac592212
commit
8807dcfbeb
@ -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>")
|
||||||
;
|
;
|
||||||
}
|
}
|
||||||
|
@ -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);
|
||||||
|
Loading…
Reference in New Issue
Block a user