Przeglądaj źródła

Html: Do not remove `role=` attributes from html tags [#785]

gnosygnu 4 lat temu
rodzic
commit
ea9b592cfd

+ 33 - 21
400_xowa/src/gplx/xowa/parsers/xndes/Xop_xatr_whitelist_mgr.java

@@ -1,23 +1,34 @@
-/*
-XOWA: the XOWA Offline Wiki Application
-Copyright (C) 2012-2017 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.parsers.xndes; import gplx.*; import gplx.xowa.*; import gplx.xowa.parsers.*;
-import gplx.core.primitives.*; import gplx.core.btries.*; import gplx.xowa.parsers.htmls.*;
+/*
+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.parsers.xndes;
+
+import gplx.Bry_;
+import gplx.Byte_ascii;
+import gplx.Hash_adp_bry;
+import gplx.List_adp;
+import gplx.List_adp_;
+import gplx.core.btries.Btrie_rv;
+import gplx.core.btries.Btrie_slim_mgr;
+import gplx.core.primitives.Byte_obj_val;
+import gplx.xowa.parsers.htmls.Mwh_atr_itm;
+import gplx.xowa.parsers.htmls.Mwh_atr_itm_;
+
 public class Xop_xatr_whitelist_mgr {
 public class Xop_xatr_whitelist_mgr {
-	private final    Hash_adp_bry grp_hash = Hash_adp_bry.cs();
-	private final    Btrie_rv trv = new Btrie_rv();
+	private final Hash_adp_bry grp_hash = Hash_adp_bry.cs();
+	private final Btrie_rv trv = new Btrie_rv();
 	public boolean Chk(int tag_id, Mwh_atr_itm xatr) {
 	public boolean Chk(int tag_id, Mwh_atr_itm xatr) {
 		byte[] src = xatr.Src();
 		byte[] src = xatr.Src();
 		byte[] key_bry = xatr.Key_bry();
 		byte[] key_bry = xatr.Key_bry();
@@ -47,7 +58,9 @@ public class Xop_xatr_whitelist_mgr {
 				xatr.Val_bry_(gplx.xowa.parsers.amps.Xop_amp_mgr.Instance.Decode_as_bry(xatr.Val_as_bry()));	// NOTE: must decode style values; "&#amp;#000000" -> "#000000"; see MW:checkCss; PAGE:en.w:Boron DATE:2015-07-29
 				xatr.Val_bry_(gplx.xowa.parsers.amps.Xop_amp_mgr.Instance.Decode_as_bry(xatr.Val_as_bry()));	// NOTE: must decode style values; "&#amp;#000000" -> "#000000"; see MW:checkCss; PAGE:en.w:Boron DATE:2015-07-29
 				break;
 				break;
 			case Mwh_atr_itm_.Key_tid__role:
 			case Mwh_atr_itm_.Key_tid__role:
-				if (!Bry_.Eq(Val_role_presentation, xatr.Val_as_bry())) return false; // MW: For now we only support role="presentation"; DATE:2014-04-05
+				// 2020-08-17|ISSUE#:785|TOMBSTONE: originally put in for vertical whitespace issues in en.w:Supreme_Court_of_the_United_States, but could not reproduce
+				//	if (!Bry_.Eq(Val_role_presentation, xatr.Val_as_bry()))
+				//		return false; // MW: For now we only support role="presentation"; DATE:2014-04-05
 				break;
 				break;
 		}
 		}
 		return rv;
 		return rv;
@@ -397,7 +410,6 @@ public class Xop_xatr_whitelist_mgr {
 	.Add_str_byte("image-set"	, Style_image_set)
 	.Add_str_byte("image-set"	, Style_image_set)
 	.Add_str_byte("/*"			, Style_comment)
 	.Add_str_byte("/*"			, Style_comment)
 	;
 	;
-	private static final    byte[] Val_role_presentation = Bry_.new_a7("presentation");
 }
 }
 class Xop_xatr_whitelist_itm {
 class Xop_xatr_whitelist_itm {
 	public Xop_xatr_whitelist_itm(byte[] key, byte key_tid, boolean exact) {this.key = key; this.key_tid = key_tid; this.exact = exact;}
 	public Xop_xatr_whitelist_itm(byte[] key, byte key_tid, boolean exact) {this.key = key; this.key_tid = key_tid; this.exact = exact;}

+ 36 - 29
400_xowa/src/gplx/xowa/parsers/xndes/Xop_xatr_whitelist_mgr_tst.java

@@ -1,37 +1,44 @@
-/*
-XOWA: the XOWA Offline Wiki Application
-Copyright (C) 2012-2017 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.parsers.xndes; import gplx.*; import gplx.xowa.*; import gplx.xowa.parsers.*;
-import org.junit.*; import gplx.xowa.parsers.htmls.*;
+/*
+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.parsers.xndes;
+
+import gplx.Bry_;
+import gplx.String_;
+import gplx.Tfds;
+import gplx.xowa.parsers.htmls.Mwh_atr_itm;
+import org.junit.Before;
+import org.junit.Test;
+
 public class Xop_xatr_whitelist_mgr_tst {
 public class Xop_xatr_whitelist_mgr_tst {
-	private final    Xop_xatr_whitelist_fxt fxt = new Xop_xatr_whitelist_fxt();
+	private final Xop_xatr_whitelist_fxt fxt = new Xop_xatr_whitelist_fxt();
 	@Before public void init() {fxt.Clear();}
 	@Before public void init() {fxt.Clear();}
 	@Test  public void Basic() {
 	@Test  public void Basic() {
-		fxt.Whitelist(Xop_xnde_tag_.Tid__div		, "style"			, true);
-		fxt.Whitelist(Xop_xnde_tag_.Tid__div		, "xstyle"			, false);
-		fxt.Whitelist(Xop_xnde_tag_.Tid__div		, "stylex"			, false);
-		fxt.Whitelist(Xop_xnde_tag_.Tid__div		, "styl"			, false);
-		fxt.Whitelist(Xop_xnde_tag_.Tid__img		, "alt"				, true);
-		fxt.Whitelist(Xop_xnde_tag_.Tid__img		, "span"			, false);
-		fxt.Whitelist(Xop_xnde_tag_.Tid__div		, "data-sort-type"	, true);
-		fxt.Whitelist(Xop_xnde_tag_.Tid__data	, "value"			, true);
-		fxt.Whitelist(Xop_xnde_tag_.Tid__data	, "valuex"			, false);
+		fxt.Whitelist(Xop_xnde_tag_.Tid__div   , "style"          , true);
+		fxt.Whitelist(Xop_xnde_tag_.Tid__div   , "xstyle"         , false);
+		fxt.Whitelist(Xop_xnde_tag_.Tid__div   , "stylex"         , false);
+		fxt.Whitelist(Xop_xnde_tag_.Tid__div   , "styl"           , false);
+		fxt.Whitelist(Xop_xnde_tag_.Tid__img   , "alt"            , true);
+		fxt.Whitelist(Xop_xnde_tag_.Tid__img   , "span"           , false);
+		fxt.Whitelist(Xop_xnde_tag_.Tid__div   , "data-sort-type" , true);
+		fxt.Whitelist(Xop_xnde_tag_.Tid__data  , "value"          , true);
+		fxt.Whitelist(Xop_xnde_tag_.Tid__data  , "valuex"         , false);
 	}
 	}
 	@Test  public void Role() {
 	@Test  public void Role() {
-		fxt.Whitelist(Xop_xnde_tag_.Tid__div		, "role"			, "presentation", true);
-		fxt.Whitelist(Xop_xnde_tag_.Tid__div		, "role"			, "other", false);
+		fxt.Whitelist(Xop_xnde_tag_.Tid__div   , "role"           , "presentation", true);
+		fxt.Whitelist(Xop_xnde_tag_.Tid__div   , "role"           , "other", true);
 	}
 	}
 	@Test  public void Scrub() {
 	@Test  public void Scrub() {
 		fxt.Scrub_style_fail("expression");
 		fxt.Scrub_style_fail("expression");

+ 1 - 1
400_xowa/src/gplx/xowa/xtns/pagebanners/Pgbnr_xtn_mgr.java

@@ -51,7 +51,7 @@ public class Pgbnr_xtn_mgr extends Xox_mgr_base implements Bfr_arg {
 				enabled = true;
 				enabled = true;
 				break;
 				break;
 			case Xow_domain_tid_.Tid__wikivoyage:
 			case Xow_domain_tid_.Tid__wikivoyage:
-				// 2020-08-16|#748:include project for en.v; PAGE:en.v:Wikivoyage:Past_events/World_Cup_2010
+				// 2020-08-16|ISSUE#:748|include project for en.v; PAGE:en.v:Wikivoyage:Past_events/World_Cup_2010
 				ns_ary = Int_ary_.New(Xow_ns_.Tid__main, Xow_ns_.Tid__user, Xow_ns_.Tid__main, Xow_ns_.Tid__project);
 				ns_ary = Int_ary_.New(Xow_ns_.Tid__main, Xow_ns_.Tid__user, Xow_ns_.Tid__main, Xow_ns_.Tid__project);
 				switch (wiki.Lang().Lang_id()) {
 				switch (wiki.Lang().Lang_id()) {
 					case Xol_lang_stub_.Id_en:
 					case Xol_lang_stub_.Id_en: