diff --git a/400_xowa/src/gplx/xowa/xtns/template_styles/XoCssTransformer.java b/400_xowa/src/gplx/xowa/xtns/template_styles/XoCssTransformer.java index 4e3054879..18879b60c 100644 --- a/400_xowa/src/gplx/xowa/xtns/template_styles/XoCssTransformer.java +++ b/400_xowa/src/gplx/xowa/xtns/template_styles/XoCssTransformer.java @@ -1,8 +1,22 @@ +/* +XOWA: the XOWA Offline Wiki Application +Copyright (C) 2012-2020 gnosygnu@gmail.com + +XOWA is licensed under the terms of the General Public License (GPL) Version 3, +or alternatively under the terms of the Apache License Version 2.0. + +You may use XOWA according to either of these licenses as is most appropriate +for your project on a case-by-case basis. + +The terms of each license can be found in the source code repository: + +GPLv3 License: https://github.com/gnosygnu/xowa/blob/master/LICENSE-GPLv3.txt +Apache License: https://github.com/gnosygnu/xowa/blob/master/LICENSE-APACHE2.txt +*/ package gplx.xowa.xtns.template_styles; import gplx.Bry_; import gplx.String_; -import gplx.langs.javascripts.JsString_; import gplx.langs.javascripts.util.regex.JsPattern_; import gplx.xowa.htmls.minifys.XoCssMin; @@ -65,19 +79,19 @@ public class XoCssTransformer { if (i > 0) sb.append(","); - // prepend the selector - sb.append(selector); + String item = items[i].trim(); + if (item.length() > 0) { // ignore empty items + // prepend the selector, except if it starts with 'body' + if (!String_.MidByLenSafe(item, 0, 4).equals("body")) { + sb.append(selector); + sb.append(' '); + } - // for pretty-printing, only add `\s` if item doesn't start with space - String item = items[i]; - if (item.length() > 0 && !Character.isWhitespace(item.charAt(0))) { - sb.append(' '); + // put back the item + sb.append(item); } - - // put back the item - sb.append(item); - } - } + } + } else { // EX: `@media` sb.append(match); diff --git a/400_xowa/tst/gplx/xowa/xtns/template_styles/XoCssTransformerTest.java b/400_xowa/tst/gplx/xowa/xtns/template_styles/XoCssTransformerTest.java index 221f7779b..8e4158f37 100644 --- a/400_xowa/tst/gplx/xowa/xtns/template_styles/XoCssTransformerTest.java +++ b/400_xowa/tst/gplx/xowa/xtns/template_styles/XoCssTransformerTest.java @@ -1,3 +1,18 @@ +/* +XOWA: the XOWA Offline Wiki Application +Copyright (C) 2012-2020 gnosygnu@gmail.com + +XOWA is licensed under the terms of the General Public License (GPL) Version 3, +or alternatively under the terms of the Apache License Version 2.0. + +You may use XOWA according to either of these licenses as is most appropriate +for your project on a case-by-case basis. + +The terms of each license can be found in the source code repository: + +GPLv3 License: https://github.com/gnosygnu/xowa/blob/master/LICENSE-GPLv3.txt +Apache License: https://github.com/gnosygnu/xowa/blob/master/LICENSE-APACHE2.txt +*/ package gplx.xowa.xtns.template_styles; import gplx.core.tests.Gftest; @@ -13,32 +28,37 @@ public class XoCssTransformerTest { @Test public void PrependBasic() { - tstr.Test_Prepend("x {}", "a", "a x {}"); + tstr.Test_Prepend(".x {}", ".a", ".a .x{}"); } @Test public void PrependManyClasses() { - tstr.Test_Prepend("x,y,z {}", "a", "a x,a y,a z {}"); + tstr.Test_Prepend("x,y,z {}", ".a", ".a x,.a y,.a z{}"); } @Test public void PrependManyNodes() { - tstr.Test_Prepend("x {} y {} z {}", "a", "a x {}a y {}a z {}"); + tstr.Test_Prepend("x {} y {} z {}", ".a", ".a x{}.a y{}.a z{}"); } @Test public void PrependEmpty() { - tstr.Test_Prepend("x {}{}", "a", "a x {}{}"); + tstr.Test_Prepend("x {}{}", ".a", ".a x{}{}"); } @Test public void PrependMediaAtBos() { - tstr.Test_Prepend("@media {} x {}", "a", "@media {}a x {}"); + tstr.Test_Prepend("@media {} x {}", ".a", "@media {}.a x{}"); } @Test public void PrependMediaAtMid() { - tstr.Test_Prepend("x {} @media {} y {}", "a", "a x {} @media {}a y {}"); + tstr.Test_Prepend("x {} @media {} y {}", ".a", ".a x{} @media {}.a y{}"); + } + + @Test + public void PrependIgnoreBody() { + tstr.Test_Prepend("body {}", ".a", "body{}"); } @Test