diff --git a/400_xowa/src/gplx/xowa/htmls/portal/Xoh_subpages_bldr.java b/400_xowa/src/gplx/xowa/htmls/portal/Xoh_subpages_bldr.java index b3fe649e2..fb740d1df 100644 --- a/400_xowa/src/gplx/xowa/htmls/portal/Xoh_subpages_bldr.java +++ b/400_xowa/src/gplx/xowa/htmls/portal/Xoh_subpages_bldr.java @@ -17,6 +17,8 @@ package gplx.xowa.htmls.portal; import gplx.*; import gplx.xowa.*; import gplx.x import gplx.core.brys.fmtrs.*; import gplx.xowa.htmls.hrefs.*; import gplx.xowa.wikis.nss.*; +import gplx.langs.htmls.encoders.*; +import gplx.xowa.htmls.core.htmls.*; public class Xoh_subpages_bldr implements gplx.core.brys.Bfr_arg { private final Bry_bfr html_bfr = Bry_bfr_.Reset(255), path_bfr = Bry_bfr_.Reset(255), subpage_caption_bfr = Bry_bfr_.Reset(255); private Xowe_wiki wiki; @@ -77,11 +79,14 @@ public class Xoh_subpages_bldr implements gplx.core.brys.Bfr_arg { : subpage_caption_bfr.To_bry(); // nth seg is caption_bfr ("b", not "Help:A/b") subpage_caption_bfr.Clear(); // always clear subpage_caption_bfr; note that 1st seg will add to bfr, but never use it + // escape " as " PAGE:en.s:A_Critical_Examination_of_Dr_G._Birkbeck_Hills_"Johnsonian"_Editions/The_Preface_and_Dedication; ISSUE#:627; DATE:2020-03-10 + byte[] subpage_ttl_escaped = Xoh_html_wtr_escaper.Escape(wiki.Appe().Parser_amp_mgr(), subpage_caption_bfr, subpage_ttl_bry); + // add to subpage trail // NOTE: convert underscore to space; ISSUE#:308 PAGE:en.v:Computer-aided_design/Software DATE:2018-12-23 fmtr_itm.Bld_bfr(bfr, delimiter , Bry_.Add(Xoh_href_.Bry__wiki, subpage_ttl.Full_url()) // EX: /wiki/Help:A - , Xoa_ttl.Replace_unders(subpage_ttl_bry) + , Xoa_ttl.Replace_unders(subpage_ttl_escaped) , Xoa_ttl.Replace_unders(subpage_caption)); } path_bfr.Clear(); diff --git a/400_xowa/src/gplx/xowa/htmls/portal/Xoh_subpages_bldr_tst.java b/400_xowa/src/gplx/xowa/htmls/portal/Xoh_subpages_bldr_tst.java index 415158f6f..1f601ac80 100644 --- a/400_xowa/src/gplx/xowa/htmls/portal/Xoh_subpages_bldr_tst.java +++ b/400_xowa/src/gplx/xowa/htmls/portal/Xoh_subpages_bldr_tst.java @@ -32,6 +32,13 @@ public class Xoh_subpages_bldr_tst { , "" )); } + @Test public void Underscore_quote() { // PURPOSE: escape " as " PAGE:en.s:A_Critical_Examination_of_Dr_G._Birkbeck_Hills_"Johnsonian"_Editions/The_Preface_and_Dedication; ISSUE#:627; DATE:2020-03-10 + fxt.Init__Create_pages("Help:A", "Help:A/\"B\""); + fxt.Test__Parse("Help:A/\"B\"/C", String_.Concat_lines_nl_skip_last + ( "< Help:A‎ | \"B\"" + , "" + )); + } @Test public void Skip_page_ns() { fxt.Init__Page_ns(); fxt.Test__Parse("Page:A/B/C", "");