diff --git a/400_xowa/src/gplx/xowa/Xoa_url.java b/400_xowa/src/gplx/xowa/Xoa_url.java index 551756c00..489073061 100644 --- a/400_xowa/src/gplx/xowa/Xoa_url.java +++ b/400_xowa/src/gplx/xowa/Xoa_url.java @@ -63,7 +63,8 @@ public class Xoa_url { byte[] anch_spr = anch == null ? null : Byte_ascii.Hash_bry; return Bry_.Add(page, anch_spr, anch); } - public byte[] To_bry_full_wo_qargs() {return To_bry(Bool_.Y, Bool_.N);} + public byte[] To_bry() {return To_bry(Bool_.Y, Bool_.Y);} + public byte[] To_bry_full_wo_qargs() {return To_bry(Bool_.Y, Bool_.N);} public byte[] To_bry(boolean full, boolean show_qargs) { // currently used for status bar; not embedded in any html switch (tid) { case Xoa_url_.Tid_unknown: // unknown; should not occur? @@ -104,6 +105,7 @@ public class Xoa_url { } public static final Xoa_url Null = null; public static Xoa_url blank() {return new Xoa_url();} + public static Xoa_url Test() {return New(Bry_.new_a7("test_wiki"), Bry_.new_a7("test_page"));} public static Xoa_url New(Xow_wiki wiki, Xoa_ttl ttl) {return New(wiki.Domain_bry(), ttl.Full_txt_w_ttl_case());} public static Xoa_url New(byte[] wiki, byte[] page) { Xoa_url rv = new Xoa_url(); diff --git a/400_xowa/src/gplx/xowa/Xoae_page.java b/400_xowa/src/gplx/xowa/Xoae_page.java index cf7a7dab7..e3473c806 100644 --- a/400_xowa/src/gplx/xowa/Xoae_page.java +++ b/400_xowa/src/gplx/xowa/Xoae_page.java @@ -26,8 +26,8 @@ public class Xoae_page implements Xoa_page { this.wiki = wiki; this.ttl = ttl; this.lang = wiki.Lang(); // default to wiki.lang; can be override later by wikitext html.Init_by_page(ttl); - html.Toc_mgr().Init(wiki.Html_mgr().Tidy_mgr(), wiki.Lang().Msg_mgr().Itm_by_id_or_null(gplx.xowa.langs.msgs.Xol_msg_itm_.Id_toc).Val(), ttl.Page_db()); Ttl_(ttl); + html.Toc_mgr().Init(wiki.Html_mgr().Tidy_mgr(), url, wiki.Lang().Msg_mgr().Itm_by_id_or_null(gplx.xowa.langs.msgs.Xol_msg_itm_.Id_toc).Val()); } Xoae_page() {} // called by Empty public Xow_wiki Wiki() {return wiki;} public Xoa_ttl Ttl() {return ttl;} private Xoa_ttl ttl; diff --git a/400_xowa/src/gplx/xowa/addons/htmls/tocs/Xoh_toc_htmlr__basic__tst.java b/400_xowa/src/gplx/xowa/addons/htmls/tocs/Xoh_toc_htmlr__basic__tst.java index 82050394d..7cf813e5f 100644 --- a/400_xowa/src/gplx/xowa/addons/htmls/tocs/Xoh_toc_htmlr__basic__tst.java +++ b/400_xowa/src/gplx/xowa/addons/htmls/tocs/Xoh_toc_htmlr__basic__tst.java @@ -164,7 +164,7 @@ class Xoh_toc_htmlr__basic__fxt { private final Bry_bfr bfr = Bry_bfr_.New(); public void Clear() {wtr.Clear();} public void Init__add(int hdr_num, String hdr_txt) {wtr.Add(hdr_num, Bry_.new_u8(hdr_txt));} - public void Init__init_page(String toc_title, boolean page_banner) {wtr.Init(gplx.xowa.htmls.core.htmls.tidy.Xow_tidy_mgr_interface_.Noop, Bry_.new_u8(toc_title), Bry_.Empty);} + public void Init__init_page(String toc_title, boolean page_banner) {wtr.Init(gplx.xowa.htmls.core.htmls.tidy.Xow_tidy_mgr_interface_.Noop, Xoa_url.Test(), Bry_.new_u8(toc_title));} public void Test__html_itms(String... expd_ary) { Gftest.Eq__ary(expd_ary, String_.Ary(Bry_split_.Split_lines(wtr.Test__to_html()))); } diff --git a/400_xowa/src/gplx/xowa/addons/htmls/tocs/Xoh_toc_mgr.java b/400_xowa/src/gplx/xowa/addons/htmls/tocs/Xoh_toc_mgr.java index 9f566c0c7..69524faa3 100644 --- a/400_xowa/src/gplx/xowa/addons/htmls/tocs/Xoh_toc_mgr.java +++ b/400_xowa/src/gplx/xowa/addons/htmls/tocs/Xoh_toc_mgr.java @@ -32,10 +32,10 @@ public class Xoh_toc_mgr { htmlr.Clear(); toc_bgn = -1; } - public void Init(Xow_tidy_mgr_interface tidy_mgr, byte[] toc_title, byte[] page_name) { + public void Init(Xow_tidy_mgr_interface tidy_mgr, Xoa_url page_url, byte[] toc_title) { this.Clear(); htmlr.Init(toc_title); - txt_wkr.Init(tidy_mgr, page_name); + txt_wkr.Init(tidy_mgr, page_url); } public Xoh_toc_itm Add(int hdr_num, byte[] hdr_txt) { Xoh_toc_itm itm = new Xoh_toc_itm(); diff --git a/400_xowa/src/gplx/xowa/addons/htmls/tocs/Xoh_toc_wkr__txt.java b/400_xowa/src/gplx/xowa/addons/htmls/tocs/Xoh_toc_wkr__txt.java index 4c7b116f4..d388eac80 100644 --- a/400_xowa/src/gplx/xowa/addons/htmls/tocs/Xoh_toc_wkr__txt.java +++ b/400_xowa/src/gplx/xowa/addons/htmls/tocs/Xoh_toc_wkr__txt.java @@ -23,38 +23,38 @@ class Xoh_toc_wkr__txt { private final Xop_amp_mgr amp_mgr = Xop_amp_mgr.Instance; private final Hash_adp anch_hash = Hash_adp_bry.ci_u8(gplx.xowa.langs.cases.Xol_case_mgr_.U8()); private Xow_tidy_mgr_interface tidy_mgr; - private byte[] page_name; + private byte[] page_url_bry; public void Clear() { anch_bfr.Clear(); text_bfr.Clear(); anch_hash.Clear(); } - public void Init(Xow_tidy_mgr_interface tidy_mgr, byte[] page_name) { + public void Init(Xow_tidy_mgr_interface tidy_mgr, Xoa_url page_url) { this.tidy_mgr = tidy_mgr; - this.page_name = page_name; + this.page_url_bry = page_url == null ? Bry_.new_a7("null_url") : page_url.To_bry(); } public void Calc_anch_text(Xoh_toc_itm rv, byte[] src) { // text within hdr; EX:

Abc

-> Abc int end = src.length; src = Gfh_utl.Del_comments(text_bfr, src, 0, end); end = src.length; - tag_rdr.Init(page_name, src, 0, end); + tag_rdr.Init(page_url_bry, src, 0, end); try { if (!Calc_anch_text_recurse(src, 0, end)) { - Gfo_usr_dlg_.Instance.Log_many("", "", "toc:invalid html; page=~{0} src=~{1}", page_name, src); + Gfo_usr_dlg_.Instance.Log_many("", "", "toc:invalid html; page=~{0} src=~{1}", page_url_bry, src); // tidy html; note reusing text_bfr as temp bfr text_bfr.Clear().Add(src); - tidy_mgr.Exec_tidy(text_bfr, Bool_.N, page_name); + tidy_mgr.Exec_tidy(text_bfr, Bool_.N, page_url_bry); src = text_bfr.To_bry_and_clear(); end = src.length; - tag_rdr.Init(page_name, src, 0, end); + tag_rdr.Init(page_url_bry, src, 0, end); // try to calc again; if fail, give up if (!Calc_anch_text_recurse(src, 0, end)) throw Err_.new_wo_type("could not tidy html"); } } catch (Exception e) { - Gfo_usr_dlg_.Instance.Warn_many("", "", "toc:failed while generating anch_text; page=~{0} src=~{1} err=~{2}", page_name, src, Err_.Message_gplx_log(e)); + Gfo_usr_dlg_.Instance.Warn_many("", "", "toc:failed while generating anch_text; page=~{0} src=~{1} err=~{2}", page_url_bry, src, Err_.Message_gplx_log(e)); text_bfr.Clear().Add(src); anch_encoder.Encode(anch_bfr, src); } @@ -138,7 +138,7 @@ class Xoh_toc_wkr__txt { int rhs_bgn = -1, rhs_end = -1, new_pos = lhs_end; if (lhs_is_pair) { // get rhs unless inline if (tag_id == Gfh_tag_.Id__any) { - Gfo_usr_dlg_.Instance.Warn_many("", "", "unknown tag in toc: page=~{0} tag=~{1}", page_name, lhs_bry); + Gfo_usr_dlg_.Instance.Warn_many("", "", "unknown tag in toc: page=~{0} tag=~{1}", page_url_bry, lhs_bry); Gfh_tag rhs = tag_rdr.Tag__peek_fwd_tail(lhs_bry); if (rhs.Name_id() == Gfh_tag_.Id__eos) return false; rhs_bgn = rhs.Src_bgn(); rhs_end = rhs.Src_end(); diff --git a/400_xowa/src/gplx/xowa/addons/htmls/tocs/Xoh_toc_wkr__txt__basic__tst.java b/400_xowa/src/gplx/xowa/addons/htmls/tocs/Xoh_toc_wkr__txt__basic__tst.java index b43de84d9..50bc82eed 100644 --- a/400_xowa/src/gplx/xowa/addons/htmls/tocs/Xoh_toc_wkr__txt__basic__tst.java +++ b/400_xowa/src/gplx/xowa/addons/htmls/tocs/Xoh_toc_wkr__txt__basic__tst.java @@ -56,7 +56,7 @@ class Xoh_toc_wkr__txt__fxt { public void Clear() { wkr.Clear(); tidy_mgr.Clear(); - wkr.Init(tidy_mgr, Xoa_page_.Main_page_bry); + wkr.Init(tidy_mgr, Xoa_url.Test()); } public void Init__tidy(String html, String tidy) {tidy_mgr.Add(Bry_.new_u8(html), Bry_.new_u8(tidy));} public void Test__anch(String html, String expd_anch) {Test__both(html, expd_anch, null);} diff --git a/400_xowa/src/gplx/xowa/htmls/Xoh_page.java b/400_xowa/src/gplx/xowa/htmls/Xoh_page.java index c5f3ad062..e07f67b4e 100644 --- a/400_xowa/src/gplx/xowa/htmls/Xoh_page.java +++ b/400_xowa/src/gplx/xowa/htmls/Xoh_page.java @@ -60,7 +60,7 @@ public class Xoh_page implements Xoa_page { this.lang = wiki.Lang(); this.Clear(); html.Redlink_list().Disabled_(page_ttl.Ns().Id_is_module()); // never redlink in Module ns; particularly since Lua has multi-line comments for [[ ]] - html.Toc_mgr().Init(gplx.xowa.htmls.core.htmls.tidy.Xow_tidy_mgr_interface_.Noop, wiki.Lang().Msg_mgr().Itm_by_id_or_null(gplx.xowa.langs.msgs.Xol_msg_itm_.Id_toc).Val(), page_url.Raw()); + html.Toc_mgr().Init(gplx.xowa.htmls.core.htmls.tidy.Xow_tidy_mgr_interface_.Noop, page_url, wiki.Lang().Msg_mgr().Itm_by_id_or_null(gplx.xowa.langs.msgs.Xol_msg_itm_.Id_toc).Val()); } public Xoh_page Ctor_by_hdiff(Bry_bfr tmp_bfr, Xoae_page page, byte[] toc_label) { this.wiki = page.Wiki(); this.page_url = page.Url(); this.page_ttl = page.Ttl(); this.page_id = page.Db().Page().Id(); @@ -76,7 +76,7 @@ public class Xoh_page implements Xoa_page { this.content_sub = html.Content_sub(); this.sidebar_div = Xoh_page_.Save_sidebars(tmp_bfr, page, html); - html.Toc_mgr().Init(page.Wikie().Html_mgr().Tidy_mgr(), toc_label, page_url.Page_bry()); // NOTE: do not pass in noop tidy_mgr, else broken TOC html will never get corrected during hdump; DATE:2016-08-14 + html.Toc_mgr().Init(page.Wikie().Html_mgr().Tidy_mgr(), page_url, toc_label); // NOTE: do not pass in noop tidy_mgr, else broken TOC html will never get corrected during hdump; DATE:2016-08-14 return this; } public void Ctor_by_db(int head_flag, byte[] display_ttl, byte[] content_sub, byte[] sidebar_div, int zip_tid, int hzip_tid, byte[] body) { diff --git a/400_xowa/src/gplx/xowa/parsers/hdrs/sections/Xop_section_list.java b/400_xowa/src/gplx/xowa/parsers/hdrs/sections/Xop_section_list.java index e66352846..baac5a686 100644 --- a/400_xowa/src/gplx/xowa/parsers/hdrs/sections/Xop_section_list.java +++ b/400_xowa/src/gplx/xowa/parsers/hdrs/sections/Xop_section_list.java @@ -23,13 +23,13 @@ class Xop_section_list implements Xomw_heading_cbk { private byte[] src; private Xowe_wiki wiki; - public Xop_section_list Parse(Xowe_wiki wiki, Xow_tidy_mgr_interface tidy_mgr, byte[] src) { + public Xop_section_list Parse(Xowe_wiki wiki, Xow_tidy_mgr_interface tidy_mgr, Xoa_url page_url, byte[] src) { // clear this.wiki = wiki; this.src = src; hash.Clear(); toc_mgr.Clear(); - toc_mgr.Init(tidy_mgr, Bry_.Empty, Bry_.Empty); + toc_mgr.Init(tidy_mgr, page_url, Bry_.Empty); // parse hdr_wkr.Parse(src, 0, src.length, this); diff --git a/400_xowa/src/gplx/xowa/parsers/hdrs/sections/Xop_section_list__slice__tst.java b/400_xowa/src/gplx/xowa/parsers/hdrs/sections/Xop_section_list__slice__tst.java index 044d9d965..e318aef6c 100644 --- a/400_xowa/src/gplx/xowa/parsers/hdrs/sections/Xop_section_list__slice__tst.java +++ b/400_xowa/src/gplx/xowa/parsers/hdrs/sections/Xop_section_list__slice__tst.java @@ -146,7 +146,7 @@ class Xop_section_list__fxt { private final Xop_fxt parser_fxt = new Xop_fxt(); public void Init__template(String page, String text) {parser_fxt.Init_defn_add(page, text);} public void Exec__parse(String... lines) { - list.Parse(parser_fxt.Wiki(), Xow_tidy_mgr_interface_.Noop, Bry_.new_u8(String_.Concat_lines_nl_skip_last(lines))); + list.Parse(parser_fxt.Wiki(), Xow_tidy_mgr_interface_.Noop, Xoa_url.Test(), Bry_.new_u8(String_.Concat_lines_nl_skip_last(lines))); } public void Test__slice_bry_or_null(String key, String... lines) { String expd = String_.Concat_lines_nl_skip_last(lines); diff --git a/400_xowa/src/gplx/xowa/parsers/hdrs/sections/Xop_section_mgr.java b/400_xowa/src/gplx/xowa/parsers/hdrs/sections/Xop_section_mgr.java index 0b4771d76..0ebf45538 100644 --- a/400_xowa/src/gplx/xowa/parsers/hdrs/sections/Xop_section_mgr.java +++ b/400_xowa/src/gplx/xowa/parsers/hdrs/sections/Xop_section_mgr.java @@ -42,7 +42,7 @@ public class Xop_section_mgr implements Gfo_invk { if (section_key == null) return src; // parse wikitext into list of headers - Xop_section_list section_list = new Xop_section_list().Parse(wiki, tidy_mgr, src); + Xop_section_list section_list = new Xop_section_list().Parse(wiki, tidy_mgr, url, src); byte[] rv = section_list.Slice_bry_or_null(section_key); if (rv == null) { app.Gui_mgr().Kit().Ask_ok("", "", String_.Format("Section extraction failed!\nPlease do not edit this page else data will be lost!!\n\nwiki={0}\npage={1}\nsection={2}", url.Wiki_bry(), ttl.Full_db(), section_key)); @@ -59,7 +59,7 @@ public class Xop_section_mgr implements Gfo_invk { if (section_key == null) return edit; // parse orig - Xop_section_list section_list = new Xop_section_list().Parse(wiki, tidy_mgr, orig); + Xop_section_list section_list = new Xop_section_list().Parse(wiki, tidy_mgr, url, orig); byte[] rv = section_list.Merge_bry_or_null(section_key, edit); if (rv == null) throw Err_.new_wo_type("could not merge section_key", "page", url.To_str(), "section_key", section_key);