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:
parent
4f22548121
commit
82bee2e877
@ -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();
|
||||
|
@ -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;
|
||||
|
@ -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())));
|
||||
}
|
||||
|
@ -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();
|
||||
|
@ -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();
|
||||
|
@ -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);}
|
||||
|
@ -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) {
|
||||
|
@ -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);
|
||||
|
@ -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);
|
||||
|
@ -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);
|
||||
|
Loading…
Reference in New Issue
Block a user