1
0
mirror of https://github.com/gnosygnu/xowa.git synced 2024-10-27 20:34:16 +00:00

Html: Write full page url to log file, not just page title [#387]

This commit is contained in:
gnosygnu 2019-03-20 01:44:22 -04:00
parent 4f22548121
commit 82bee2e877
10 changed files with 24 additions and 22 deletions

View File

@ -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();

View File

@ -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;

View File

@ -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())));
}

View File

@ -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();

View File

@ -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: <h2>Abc</h2> -> 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();

View File

@ -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);}

View File

@ -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) {

View File

@ -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);

View File

@ -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);

View File

@ -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);