1
0
mirror of https://github.com/gnosygnu/xowa.git synced 2026-03-02 03:49:30 +00:00

'v3.7.3.1'

This commit is contained in:
gnosygnu
2016-07-17 21:10:59 -04:00
parent b333db45f8
commit 7a851a41a5
290 changed files with 3048 additions and 2124 deletions

View File

@@ -20,5 +20,5 @@ import gplx.xowa.htmls.*; import gplx.xowa.htmls.core.htmls.*;
import gplx.xowa.parsers.*; import gplx.xowa.parsers.xndes.*;
public interface Xox_xnde {
void Xtn_parse(Xowe_wiki wiki, Xop_ctx ctx, Xop_root_tkn root, byte[] src, Xop_xnde_tkn xnde);
void Xtn_write(Bry_bfr bfr, Xoae_app app, Xop_ctx ctx, Xoh_html_wtr html_wtr, Xoh_wtr_ctx hctx, Xop_xnde_tkn xnde, byte[] src);
void Xtn_write(Bry_bfr bfr, Xoae_app app, Xop_ctx ctx, Xoh_html_wtr html_wtr, Xoh_wtr_ctx hctx, Xoae_page wpg, Xop_xnde_tkn xnde, byte[] src);
}

View File

@@ -20,5 +20,5 @@ import gplx.xowa.htmls.*; import gplx.xowa.htmls.core.htmls.*;
import gplx.xowa.parsers.*; import gplx.xowa.parsers.xndes.*; import gplx.xowa.parsers.htmls.*;
public class Xtn_categorylist_nde implements Xox_xnde {
public void Xtn_parse(Xowe_wiki wiki, Xop_ctx ctx, Xop_root_tkn root, byte[] src, Xop_xnde_tkn xnde) {}
public void Xtn_write(Bry_bfr bfr, Xoae_app app, Xop_ctx ctx, Xoh_html_wtr html_wtr, Xoh_wtr_ctx hctx, Xop_xnde_tkn xnde, byte[] src) {}
public void Xtn_write(Bry_bfr bfr, Xoae_app app, Xop_ctx ctx, Xoh_html_wtr html_wtr, Xoh_wtr_ctx hctx, Xoae_page wpg, Xop_xnde_tkn xnde, byte[] src) {}
}

View File

@@ -20,6 +20,7 @@ import gplx.core.brys.*; import gplx.core.brys.fmtrs.*; import gplx.core.brys.ar
import gplx.xowa.htmls.*; import gplx.xowa.htmls.core.htmls.*;
import gplx.xowa.parsers.*; import gplx.xowa.parsers.xndes.*;
public class Ref_html_wtr {
private final Xoh_ref_list_fmtr grp_list_fmtr = new Xoh_ref_list_fmtr();
public Ref_html_wtr(Xowe_wiki wiki) {
cfg = Ref_html_wtr_cfg.new_();
}
@@ -65,9 +66,9 @@ public class Ref_html_wtr {
}
return rv;
}
public void Xnde_references(Xoh_html_wtr wtr, Xop_ctx ctx, Xoh_wtr_ctx opts, Bry_bfr bfr, byte[] src, Xop_xnde_tkn xnde) {
public void Xnde_references(Xoh_html_wtr wtr, Xop_ctx ctx, Xoh_wtr_ctx opts, Xoae_page wpg, Bry_bfr bfr, byte[] src, Xop_xnde_tkn xnde) {
References_nde references = (References_nde)xnde.Xnde_xtn();
Ref_itm_lst lst = ctx.Page().Ref_mgr().Lst_get(references.Group(), references.List_idx()); // get group; EX: <references group="note"/>
Ref_itm_lst lst = wpg.Ref_mgr().Lst_get(references.Group(), references.List_idx()); // get group; EX: <references group="note"/>
if (lst == null) return; // NOTE: possible to have a grouped references without references; EX: Infobox planet; <references group=note> in sidebar, but no refs
if (lst.Itms_len() == 0) return;
bfr.Add(cfg.Grp_bgn());
@@ -79,7 +80,7 @@ public class Ref_html_wtr {
grp_list_fmtr.Init(ctx.Wiki(), cfg, head_itm);
Ref_nde text_itm = grp_list_fmtr.IdentifyTxt(); // find the item that has the text (there should only be 0 or 1)
if (text_itm.Body() != null)
wtr.Write_tkn(tmp, ctx, opts, text_itm.Body().Root_src(), null, Xoh_html_wtr.Sub_idx_null, text_itm.Body());
wtr.Write_tkn_to_html(tmp, ctx, opts, text_itm.Body().Root_src(), null, Xoh_html_wtr.Sub_idx_null, text_itm.Body());
// add follows
int related_len = head_itm.Related_len();
@@ -87,7 +88,7 @@ public class Ref_html_wtr {
Ref_nde related_itm = head_itm.Related_get(k);
if (related_itm.Follow_y()) { // NOTE: both follow and related are in the related list; only add follow
tmp.Add_byte_space(); // always add space; REF.MW:Cite_body.php;$this->mRefs[$group][$follow]['text'] = $this->mRefs[$group][$follow]['text'] . ' ' . $str;
wtr.Write_tkn(tmp, ctx, opts, related_itm.Body().Root_src(), null, Xoh_html_wtr.Sub_idx_null, related_itm.Body());
wtr.Write_tkn_to_html(tmp, ctx, opts, related_itm.Body().Root_src(), null, Xoh_html_wtr.Sub_idx_null, related_itm.Body());
}
}
@@ -108,44 +109,4 @@ public class Ref_html_wtr {
}
bfr.Add(cfg.Grp_end());
}
private static Xoh_ref_list_fmtr grp_list_fmtr = new Xoh_ref_list_fmtr();
}
class Xoh_ref_list_fmtr implements gplx.core.brys.Bfr_arg {
public void Init(Xowe_wiki wiki, Ref_html_wtr_cfg cfg, Ref_nde itm) {
this.wiki = wiki; this.cfg = cfg; this.itm = itm;
} private Xowe_wiki wiki; private Ref_nde itm; private Ref_html_wtr_cfg cfg;
public Ref_nde IdentifyTxt() {
if (HasTxt(itm)) return itm;
int itm_related_len = itm.Related_len();
for (int i = 0; i < itm_related_len; i++) {
Ref_nde rel = itm.Related_get(i);
if (HasTxt(rel)) return rel;
}
return itm; // no itm has text; TODO_OLD:WARN
}
private boolean HasTxt(Ref_nde v) {return v.Body() != null && v.Body().Root_src().length > 0;}
public void Bfr_arg__add(Bry_bfr bfr) {
int related_len = itm.Related_len();
Bry_fmtr itm_fmtr = cfg.Grp_html_list();
Fmt(itm_fmtr, wiki, bfr, itm);
for (int i = 0; i < related_len; i++) {
Ref_nde link_itm = itm.Related_get(i);
if (link_itm.Nested()) continue;
Fmt(itm_fmtr, wiki, bfr, link_itm);
}
}
private void Fmt(Bry_fmtr itm_fmtr, Xowe_wiki wiki, Bry_bfr trg, Ref_nde itm) {
int itm_idx_minor = itm.Idx_minor();
if (itm_idx_minor < 0) return; // HACK: <ref follow created a negative index; ignore these references for now; de.wikisource.org/wiki/Seite:Die Trunksucht.pdf/63; DATE:2013-06-22
byte[] backlabel
= itm_idx_minor < cfg.Backlabels_len()
? cfg.Backlabels()[itm.Idx_minor()]
: wiki.Parser_mgr().Main().Parse_text_to_html(wiki.Parser_mgr().Ctx(), wiki.Msg_mgr().Val_by_key_args(Ref_html_wtr_cfg.Msg_backlabels_err, itm.Idx_minor()))
;
itm_fmtr.Bld_bfr_many(trg
, fmtr.Set(cfg.Itm_id_key_one(), itm.Name(), itm.Idx_major(), itm.Idx_minor())
, backlabel
);
}
private Bfr_arg__bry_fmtr fmtr = Bfr_arg_.New_bry_fmtr__null();
}

View File

@@ -56,7 +56,7 @@ public class Ref_nde implements Xox_xnde, Mwh_atr_itm_owner1 {
ctx.Page().Ref_mgr().Grps_add(group, name, follow, this);
this.xnde = xnde;
}
public void Xtn_write(Bry_bfr bfr, Xoae_app app, Xop_ctx ctx, Xoh_html_wtr html_wtr, Xoh_wtr_ctx hctx, Xop_xnde_tkn xnde, byte[] src) {
public void Xtn_write(Bry_bfr bfr, Xoae_app app, Xop_ctx ctx, Xoh_html_wtr html_wtr, Xoh_wtr_ctx hctx, Xoae_page wpg, Xop_xnde_tkn xnde, byte[] src) {
html_wtr.Ref_wtr().Xnde_ref(hctx, bfr, src, xnde);
}
private static final Ref_nde[] Ary_empty = new Ref_nde[0];

View File

@@ -37,7 +37,7 @@ public class References_nde implements Xox_xnde, Mwh_atr_itm_owner1 {
Xox_xnde_.Xatr__set(wiki, this, xatrs_hash, src, xnde);
if (xnde.CloseMode() == Xop_xnde_tkn.CloseMode_pair) { // "<references>", "</references>"; parse anything in between but only to pick up <ref> tags; discard everything else; DATE:2014-06-27
int itm_bgn = xnde.Tag_open_end(), itm_end = xnde.Tag_close_bgn();
Xop_ctx references_ctx = Xop_ctx.new_sub_page_(wiki, ctx, ctx.Lst_page_regy()).References_group_(group); // changed from following: "Xop_ctx references_ctx = Xop_ctx.new_sub_(wiki).References_group_(group);"; DATE:2015-05-16;
Xop_ctx references_ctx = Xop_ctx.New__sub__reuse_lst(wiki, ctx, ctx.Lst_page_regy()).References_group_(group); // changed from following: "Xop_ctx references_ctx = Xop_ctx.New__sub(wiki).References_group_(group);"; DATE:2015-05-16;
references_ctx.Para().Enabled_n_(); // disable para during <references> parsing
byte[] references_src = Bry_.Mid(src, itm_bgn, itm_end);
Xop_tkn_mkr tkn_mkr = ctx.Tkn_mkr();
@@ -49,8 +49,8 @@ public class References_nde implements Xox_xnde, Mwh_atr_itm_owner1 {
}
list_idx = ref_mgr.Grps_get(group).Grp_seal(); // NOTE: needs to be sealed at end; else inner refs will end up in new group; EX: <references><ref>don't seal prematurely</ref></references>
}
public void Xtn_write(Bry_bfr bfr, Xoae_app app, Xop_ctx ctx, Xoh_html_wtr html_wtr, Xoh_wtr_ctx hctx, Xop_xnde_tkn xnde, byte[] src) {
html_wtr.Ref_wtr().Xnde_references(html_wtr, ctx, hctx, bfr, src, xnde);
public void Xtn_write(Bry_bfr bfr, Xoae_app app, Xop_ctx ctx, Xoh_html_wtr html_wtr, Xoh_wtr_ctx hctx, Xoae_page wpg, Xop_xnde_tkn xnde, byte[] src) {
html_wtr.Ref_wtr().Xnde_references(html_wtr, ctx, hctx, wpg, bfr, src, xnde);
}
private static final byte Xatr_id_group = 0;
public static boolean Enabled = true;

View File

@@ -0,0 +1,59 @@
/*
XOWA: the XOWA Offline Wiki Application
Copyright (C) 2012 gnosygnu@gmail.com
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as
published by the Free Software Foundation, either version 3 of the
License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package gplx.xowa.xtns.cites; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*;
import gplx.core.brys.*; import gplx.core.brys.fmtrs.*; import gplx.core.brys.args.*;
class Xoh_ref_list_fmtr implements gplx.core.brys.Bfr_arg {
private Xowe_wiki wiki; private Ref_html_wtr_cfg cfg; private Ref_nde itm;
private final Bfr_arg__bry_fmtr fmtr = Bfr_arg_.New_bry_fmtr__null();
public void Init(Xowe_wiki wiki, Ref_html_wtr_cfg cfg, Ref_nde itm) {
this.wiki = wiki; this.cfg = cfg; this.itm = itm;
}
public Ref_nde IdentifyTxt() {
if (HasTxt(itm)) return itm;
int itm_related_len = itm.Related_len();
for (int i = 0; i < itm_related_len; i++) {
Ref_nde rel = itm.Related_get(i);
if (HasTxt(rel)) return rel;
}
return itm; // no itm has text; TODO_OLD:WARN
}
private boolean HasTxt(Ref_nde v) {return v.Body() != null && v.Body().Root_src().length > 0;}
public void Bfr_arg__add(Bry_bfr bfr) {
int related_len = itm.Related_len();
Bry_fmtr itm_fmtr = cfg.Grp_html_list();
Fmt(itm_fmtr, wiki, bfr, itm);
for (int i = 0; i < related_len; i++) {
Ref_nde link_itm = itm.Related_get(i);
if (link_itm.Nested()) continue;
Fmt(itm_fmtr, wiki, bfr, link_itm);
}
}
private void Fmt(Bry_fmtr itm_fmtr, Xowe_wiki wiki, Bry_bfr trg, Ref_nde itm) {
int itm_idx_minor = itm.Idx_minor();
if (itm_idx_minor < 0) return; // HACK: <ref follow created a negative index; ignore these references for now; de.wikisource.org/wiki/Seite:Die Trunksucht.pdf/63; DATE:2013-06-22
byte[] backlabel
= itm_idx_minor < cfg.Backlabels_len()
? cfg.Backlabels()[itm.Idx_minor()]
: wiki.Parser_mgr().Main().Parse_text_to_html(wiki.Parser_mgr().Ctx(), wiki.Msg_mgr().Val_by_key_args(Ref_html_wtr_cfg.Msg_backlabels_err, itm.Idx_minor()))
;
itm_fmtr.Bld_bfr_many(trg
, fmtr.Set(cfg.Itm_id_key_one(), itm.Name(), itm.Idx_major(), itm.Idx_minor())
, backlabel
);
}
}

View File

@@ -42,7 +42,7 @@ class Dpl_itm {
public byte Stable_pages() {return stable_pages;} private byte stable_pages;
private Xop_ctx sub_ctx; private Xop_tkn_mkr sub_tkn_mkr; private Xop_root_tkn sub_root;
public void Parse(Xowe_wiki wiki, Xop_ctx ctx, byte[] page_ttl, byte[] src, Xop_xnde_tkn xnde) { // parse kvps in xnde; EX:<dpl>category=abc\nredirects=y\n</dpl>
sub_ctx = Xop_ctx.new_sub_(ctx);
sub_ctx = Xop_ctx.New__sub__reuse_page(ctx);
sub_tkn_mkr = sub_ctx.Tkn_mkr();
sub_root = sub_tkn_mkr.Root(Bry_.Empty);
int content_bgn = xnde.Tag_open_end(), content_end = xnde.Tag_close_bgn();
@@ -101,7 +101,7 @@ class Dpl_itm {
}
public void Parse_cmd(Xowe_wiki wiki, byte key_id, byte[] val) {
sub_root.Clear();
val = wiki.Parser_mgr().Main().Parse_text_to_wtxt(sub_root, sub_ctx, sub_tkn_mkr, val);
val = wiki.Parser_mgr().Main().Expand_tmpl(sub_root, sub_ctx, sub_tkn_mkr, val);
switch (key_id) {
case Dpl_itm_keys.Key_category: if (ctg_includes == null) ctg_includes = List_adp_.New(); ctg_includes.Add(Xoa_ttl.Replace_spaces(val)); break;
case Dpl_itm_keys.Key_notcategory: if (ctg_excludes == null) ctg_excludes = List_adp_.New(); ctg_excludes.Add(Xoa_ttl.Replace_spaces(val)); break;

View File

@@ -29,7 +29,7 @@ public class Dpl_xnde implements Xox_xnde {
if (itm.Sort_ascending() != Bool_.__byte)
pages.Sort_by(new Dpl_page_sorter(itm));
}
public void Xtn_write(Bry_bfr bfr, Xoae_app app, Xop_ctx ctx, Xoh_html_wtr html_wtr, Xoh_wtr_ctx hctx, Xop_xnde_tkn xnde, byte[] src) {
public void Xtn_write(Bry_bfr bfr, Xoae_app app, Xop_ctx ctx, Xoh_html_wtr html_wtr, Xoh_wtr_ctx hctx, Xoae_page wpg, Xop_xnde_tkn xnde, byte[] src) {
Xowe_wiki wiki = ctx.Wiki();
Dpl_html_data html_mode = Dpl_html_data.new_(Dpl_itm_keys.Key_unordered);
int itms_len = pages.Count();

View File

@@ -39,7 +39,7 @@ public class Gallery_mgr_wtr {
ul_style = Fmt_and_add(tmp_bfr, Gallery_mgr_wtr_.Fmtr__ul__style, ul_style, max_width);
}
byte[] ul_cls = Fmt_and_add(tmp_bfr, Gallery_mgr_wtr_.Fmtr__ul__cls, xnde.Atr_cls(), Gallery_mgr_base_.To_bry(mgr.Tid()));
Write_ul_lhs(bfr, tmp_bfr, hctx_is_hdump, wiki.Appe().Html_mgr().Whitelist_mgr(), src, xnde, ul_id, ul_cls, ul_style, xnde.Atrs_other());
Write_ul_lhs(bfr, tmp_bfr, hctx_is_hdump, wiki.Html_mgr().Whitelist_mgr(), src, xnde, ul_id, ul_cls, ul_style, xnde.Atrs_other());
// write gallery_caption; EX: <li class='gallerycaption'>caption</li>
byte[] mgr_caption = xnde.Mgr_caption();
@@ -147,7 +147,7 @@ public class Gallery_mgr_wtr {
}
// write caption
wiki.Parser_mgr().Main().Parse_text_to_html(tmp_bfr, page, hctx, true, itm_caption);
wiki.Parser_mgr().Main().Parse_text_to_html(tmp_bfr, ctx, page, hctx, true, itm_caption);
itm_caption = tmp_bfr.To_bry_and_clear();
itm_caption = tmp_bfr.Add(show_filenames_link).Add(itm_caption).To_bry_and_clear();
mgr.Wrap_gallery_text(bfr, itm_caption, html_w_expand, html_h_expand);

View File

@@ -43,7 +43,7 @@ public class Gallery_mgr_wtr_ {
if (Bry_.Len_gt_0(rv)) {
Bry_bfr caption_bfr = wiki.Utl__bfr_mkr().Get_k004();
Xop_root_tkn caption_root = itm.Caption_tkn();
wtr.Write_tkn(caption_bfr, ctx, hctx, caption_root.Root_src(), caption_root, Xoh_html_wtr.Sub_idx_null, caption_root);
wtr.Write_tkn_to_html(caption_bfr, ctx, hctx, caption_root.Root_src(), caption_root, Xoh_html_wtr.Sub_idx_null, caption_root);
rv = caption_bfr.To_bry_and_rls();
}
return rv;

View File

@@ -30,6 +30,7 @@ public class Gallery_parser {
private int itm_bgn;
private Bry_bfr caption_bfr = Bry_bfr_.Reset(255); private int caption_bgn;
private Xop_ctx ctx;
private final Btrie_rv trv = new Btrie_rv();
public Gallery_parser Init_by_wiki(Xowe_wiki wiki) {
this.wiki = wiki; Xol_lang_itm lang = wiki.Lang();
this.ctx = wiki.Parser_mgr().Ctx();
@@ -105,10 +106,10 @@ public class Gallery_parser {
case Mode_eos:
return mode;
}
Object o = trie.Match_bgn_w_byte(cur_byte, src, cur_pos, end_pos);
Object o = trie.Match_at_w_b0(trv, cur_byte, src, cur_pos, end_pos);
if (o != null) { // either "alt" or "link"
int old_pos = cur_pos;
cur_pos = trie.Match_pos();
cur_pos = trv.Pos();
Skip_ws();
if (cur_byte == Byte_ascii.Eq) { // "="
++cur_pos; // position after eq

View File

@@ -70,7 +70,7 @@ public class Gallery_xnde implements Xox_xnde, Mwh_atr_itm_owner2 {
ctx.Para().Process_block__xnde(xnde.Tag(), Xop_xnde_tag.Block_end); // cancel pre for <gallery>; DATE:2014-03-11
boolean log_wkr_enabled = Log_wkr != Xop_log_basic_wkr.Null; if (log_wkr_enabled) Log_wkr.Log_end_xnde(ctx.Page(), Xop_log_basic_wkr.Tid_gallery, src, xnde);
} public static Xop_log_basic_wkr Log_wkr = Xop_log_basic_wkr.Null;
public void Xtn_write(Bry_bfr bfr, Xoae_app app, Xop_ctx ctx, Xoh_html_wtr html_wtr, Xoh_wtr_ctx hctx, Xop_xnde_tkn xnde, byte[] src) {
public void Xtn_write(Bry_bfr bfr, Xoae_app app, Xop_ctx ctx, Xoh_html_wtr html_wtr, Xoh_wtr_ctx hctx, Xoae_page wpg, Xop_xnde_tkn xnde, byte[] src) {
try {Gallery_mgr_wtr.Write_mgr(bfr, gallery_mgr, ctx.Wiki(), ctx.Page(), ctx, hctx, src, this);}
catch (Exception e) {Gfo_usr_dlg_.Instance.Warn_many("", "", "failed to write gallery; src=~{0} err=~{1}", String_.new_u8(src, xnde.Src_bgn(), xnde.Src_end()), Err_.Message_gplx_log(e));}
}

View File

@@ -28,7 +28,7 @@ public class Geoc_isin_func extends Pf_func_base {
Xoa_ttl ttl = Xoa_ttl.Parse(wiki, ttl_bry); if (ttl == null) return;
byte[] lnki_ttl = Bry_.Add(Xop_tkn_.Lnki_bgn, ttl_bry, Xop_tkn_.Lnki_end); // make "[[ttl]]"
Bry_bfr tmp_bfr = wiki.Utl__bfr_mkr().Get_b128();
wiki.Parser_mgr().Main().Parse_text_to_html(tmp_bfr, ctx.Page(), false, lnki_ttl);
wiki.Parser_mgr().Main().Parse_text_to_html(tmp_bfr, ctx, ctx.Page(), false, lnki_ttl);
ctx.Page().Html_data().Content_sub_(tmp_bfr.To_bry_and_rls());
}
public static final Geoc_isin_func Instance = new Geoc_isin_func();

View File

@@ -26,13 +26,13 @@ public class Graph_xnde implements Xox_xnde {
boolean log_wkr_enabled = Log_wkr != Xop_log_basic_wkr.Null; if (log_wkr_enabled) Log_wkr.Log_end_xnde(ctx.Page(), Xop_log_basic_wkr.Tid_graph, src, xnde);
ctx.Para().Process_block__xnde(xnde.Tag(), Xop_xnde_tag.Block_end);
}
public void Xtn_write(Bry_bfr bfr, Xoae_app app, Xop_ctx ctx, Xoh_html_wtr html_wtr, Xoh_wtr_ctx hctx, Xop_xnde_tkn xnde, byte[] src) {
public void Xtn_write(Bry_bfr bfr, Xoae_app app, Xop_ctx ctx, Xoh_html_wtr html_wtr, Xoh_wtr_ctx hctx, Xoae_page wpg, Xop_xnde_tkn xnde, byte[] src) {
bfr.Add(Html__div_bgn);
bfr.Add_mid(src, xnde.Tag_open_end(), xnde.Tag_close_bgn());
bfr.Add(Html__div_end);
}
public static Xop_log_basic_wkr Log_wkr = Xop_log_basic_wkr.Null;
private static final byte[]
private static final byte[]
Html__div_bgn = Bry_.new_a7("<div class='mw-wiki-graph'>\n")
, Html__div_end = Bry_.new_a7("</div>\n")
;

View File

@@ -18,7 +18,8 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
package gplx.xowa.xtns.hieros; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*;
import gplx.core.btries.*; import gplx.langs.htmls.*; import gplx.xowa.htmls.*;
class Hiero_parser {
private Btrie_slim_mgr trie = Btrie_slim_mgr.cs();
private final Btrie_slim_mgr trie = Btrie_slim_mgr.cs();
private final Btrie_rv trv = new Btrie_rv();
private List_adp blocks = List_adp_.New();
private Hiero_block cur_block;
private Bry_bfr cur_tkn = Bry_bfr_.Reset(16);
@@ -30,14 +31,14 @@ class Hiero_parser {
while (true) {
if (pos == end) break;
byte b = src[pos];
Object o = trie.Match_bgn_w_byte(b, src, pos, end);
Object o = trie.Match_at_w_b0(trv, b, src, pos, end);
if (o == null) {
New_char(b);
++pos;
}
else {
Hiero_parser_itm itm = (Hiero_parser_itm)o;
int new_pos = trie.Match_pos();
int new_pos = trv.Pos();
switch (itm.Tid()) {
case Hiero_parser_itm.Tid_comment:
int end_comm = Bry_find_.Find_fwd(src, Gfh_tag_.Comm_end, new_pos, end);

View File

@@ -39,7 +39,7 @@ public class Hiero_xnde implements Xox_xnde {
}
}
public static Xop_log_basic_wkr Log_wkr = Xop_log_basic_wkr.Null;
public void Xtn_write(Bry_bfr bfr, Xoae_app app, Xop_ctx ctx, Xoh_html_wtr html_wtr, Xoh_wtr_ctx hctx, Xop_xnde_tkn xnde, byte[] src) {
public void Xtn_write(Bry_bfr bfr, Xoae_app app, Xop_ctx ctx, Xoh_html_wtr html_wtr, Xoh_wtr_ctx hctx, Xoae_page wpg, Xop_xnde_tkn xnde, byte[] src) {
xtn_mgr.Html_wtr().Render_blocks(bfr, hctx, blocks, Hiero_html_mgr.scale, false);
}
}

View File

@@ -29,11 +29,12 @@ public class Imap_parser {
private byte[] src;
private int itm_idx; private int itm_bgn, itm_end;
private Xoae_app app; private Xowe_wiki wiki; private Xop_ctx wiki_ctx, imap_ctx; private Xop_root_tkn imap_root;
private final Btrie_rv trv = new Btrie_rv();
public Imap_parser(Imap_xtn_mgr xtn_mgr) {this.xtn_mgr = xtn_mgr;}
public void Init(Xowe_wiki wiki, Xoae_page page, Gfo_usr_dlg usr_dlg) {// SCOPE.PAGE
this.app = wiki.Appe(); this.wiki = wiki; this.page_url = page.Url(); this.usr_dlg = usr_dlg;
this.wiki_ctx = wiki.Parser_mgr().Ctx();
imap_ctx = Xop_ctx.new_(wiki, wiki.Parser_mgr(), page.Ttl().Raw()); // NOTE: must update page ttl for Modules; PAGE:it.s:Patria_Esercito_Re/Indice_generale; DATE:2015-12-02
imap_ctx = Xop_ctx.New__top(wiki, page.Ttl().Raw()); // NOTE: must update page ttl for Modules; PAGE:it.s:Patria_Esercito_Re/Indice_generale; DATE:2015-12-02
imap_root = app.Parser_mgr().Tkn_mkr().Root(Bry_.Empty);
}
public void Clear() {
@@ -68,9 +69,9 @@ public class Imap_parser {
if (itm_idx == 0)
itm_end = Parse_img(rv, itm_bgn, itm_end, src_end);
else {
Object tid_obj = tid_trie.Match_bgn_w_byte(b, src, itm_bgn, itm_end);
Object tid_obj = tid_trie.Match_at_w_b0(trv, b, src, itm_bgn, itm_end);
byte tid_val = tid_obj == null ? Imap_part_.Tid_invalid : ((Byte_obj_val)tid_obj).Val();
int tid_end_pos = tid_trie.Match_pos();
int tid_end_pos = trv.Pos();
switch (tid_val) {
case Imap_part_.Tid_desc: Parse_desc(tid_end_pos, itm_end); break;
case Imap_part_.Tid_dflt: Parse_dflt(tid_end_pos, itm_end); break;

View File

@@ -35,8 +35,8 @@ public class Imap_xnde implements Xox_xnde {
boolean log_wkr_enabled = Log_wkr != Xop_log_basic_wkr.Null; if (log_wkr_enabled) Log_wkr.Log_end_xnde(ctx.Page(), Xop_log_basic_wkr.Tid_imageMap, src, xnde);
} public static Xop_log_basic_wkr Log_wkr = Xop_log_basic_wkr.Null;
public void Xtn_write(Bry_bfr bfr, Xoae_app app, Xop_ctx ctx, Xoh_html_wtr html_wtr, Xoh_wtr_ctx hctx, Xop_xnde_tkn xnde, byte[] src) {
public void Xtn_write(Bry_bfr bfr, Xoae_app app, Xop_ctx ctx, Xoh_html_wtr html_wtr, Xoh_wtr_ctx hctx, Xoae_page wpg, Xop_xnde_tkn xnde, byte[] src) {
if (imap_data.Invalid()) return;
html_wtr.Write_tkn(bfr, ctx, hctx, imap_data.Img_src(), xnde, Xoh_html_wtr.Sub_idx_null, imap_data.Img().Img_link());
html_wtr.Write_tkn_to_html(bfr, ctx, hctx, imap_data.Img_src(), xnde, Xoh_html_wtr.Sub_idx_null, imap_data.Img().Img_link());
}
}

View File

@@ -28,7 +28,7 @@ public class Imap_link_owner_ {
switch (tkn_tid) {
case Xop_tkn_itm_.Tid_lnki: {
Xop_lnki_tkn lnki_tkn = (Xop_lnki_tkn)tkn;
link_owner.Link_href_(app.Html__href_wtr().Build_to_bry(wiki, lnki_tkn.Ttl()));
link_owner.Link_href_(wiki.Html__href_wtr().Build_to_bry(wiki, lnki_tkn.Ttl()));
wiki.Html_mgr().Html_wtr().Lnki_wtr().Write_caption(bfr, Xoh_wtr_ctx.Alt, src, lnki_tkn, lnki_tkn.Ttl());
link_owner.Link_text_(bfr.To_bry_and_clear());
break;
@@ -54,7 +54,7 @@ public class Imap_link_owner_ {
switch (link_owner.Link_tid()) {
case Xop_tkn_itm_.Tid_lnki: {
Xop_lnki_tkn lnki_tkn = (Xop_lnki_tkn)link_owner.Link_tkn();
link_owner.Link_href_(app.Html__href_wtr().Build_to_bry(wiki, lnki_tkn.Ttl()));
link_owner.Link_href_(wiki.Html__href_wtr().Build_to_bry(wiki, lnki_tkn.Ttl()));
wiki.Html_mgr().Html_wtr().Lnki_wtr().Write_caption(bfr, hctx, src, lnki_tkn, lnki_tkn.Ttl());
link_owner.Link_text_(bfr.To_bry_and_clear());
break;

View File

@@ -31,11 +31,11 @@ public class Indicator_xnde implements Xox_xnde, Mwh_atr_itm_owner1 {
}
public void Xtn_parse(Xowe_wiki wiki, Xop_ctx ctx, Xop_root_tkn root, byte[] src, Xop_xnde_tkn xnde) {
Xox_xnde_.Xatr__set(wiki, this, xatrs_hash, src, xnde);
this.html = Xop_parser_.Parse_text_to_html(wiki, ctx.Page(), ctx.Page().Ttl(), Bry_.Mid(src, xnde.Tag_open_end(), xnde.Tag_close_bgn()), false);
this.html = Xop_parser_.Parse_text_to_html(wiki, ctx, ctx.Page(), ctx.Page().Ttl(), Bry_.Mid(src, xnde.Tag_open_end(), xnde.Tag_close_bgn()), false);
Indicator_html_bldr html_bldr = ctx.Page().Html_data().Indicators();
if (this.name != null) html_bldr.Add(this); // NOTE: must do null-check b/c Add will use Name as key for hashtable
}
public void Xtn_write(Bry_bfr bfr, Xoae_app app, Xop_ctx ctx, Xoh_html_wtr html_wtr, Xoh_wtr_ctx hctx, Xop_xnde_tkn xnde, byte[] src) {
public void Xtn_write(Bry_bfr bfr, Xoae_app app, Xop_ctx ctx, Xoh_html_wtr html_wtr, Xoh_wtr_ctx hctx, Xoae_page wpg, Xop_xnde_tkn xnde, byte[] src) {
if (this.name == null) bfr.Add_str_a7("Error: Page status indicators' name attribute must not be empty.");
}
private static final byte Xatr_name = 0;

View File

@@ -20,5 +20,5 @@ import gplx.xowa.htmls.*; import gplx.xowa.htmls.core.htmls.*;
import gplx.xowa.parsers.*; import gplx.xowa.parsers.xndes.*;
public class Xtn_inputbox_nde implements Xox_xnde {
public void Xtn_parse(Xowe_wiki wiki, Xop_ctx ctx, Xop_root_tkn root, byte[] src, Xop_xnde_tkn xnde) {} // FUTURE: noop for now so it doesn't show (since it's useless)
public void Xtn_write(Bry_bfr bfr, Xoae_app app, Xop_ctx ctx, Xoh_html_wtr html_wtr, Xoh_wtr_ctx hctx, Xop_xnde_tkn xnde, byte[] src) {}
public void Xtn_write(Bry_bfr bfr, Xoae_app app, Xop_ctx ctx, Xoh_html_wtr html_wtr, Xoh_wtr_ctx hctx, Xoae_page wpg, Xop_xnde_tkn xnde, byte[] src) {}
}

View File

@@ -56,7 +56,7 @@ public class Listing_xnde implements Xox_xnde, Mwh_atr_itm_owner1 {
private Xowe_wiki wiki; private Xop_parser parser; private Xop_ctx sub_ctx; private Xol_msg_mgr msg_mgr;
private byte[] Parse_wikitext(Xop_ctx ctx, byte[] v) {
if (Bry_.Len_eq_0(v)) return v; // ignore null, ""
if (sub_ctx == null) sub_ctx = Xop_ctx.new_sub_(ctx);
if (sub_ctx == null) sub_ctx = Xop_ctx.New__sub__reuse_page(ctx);
return parser.Parse_text_to_html(sub_ctx, v);
}
private Listing_xtn_mgr xtn_mgr;
@@ -73,7 +73,7 @@ public class Listing_xnde implements Xox_xnde, Mwh_atr_itm_owner1 {
html_output = hwtr.To_bry_and_clear();
}
}
public void Xtn_write(Bry_bfr bfr, Xoae_app app, Xop_ctx ctx, Xoh_html_wtr html_wtr, Xoh_wtr_ctx hctx, Xop_xnde_tkn xnde, byte[] src) {
public void Xtn_write(Bry_bfr bfr, Xoae_app app, Xop_ctx ctx, Xoh_html_wtr html_wtr, Xoh_wtr_ctx hctx, Xoae_page wpg, Xop_xnde_tkn xnde, byte[] src) {
if (xtn_mgr == null || !xtn_mgr.Enabled())
Xox_mgr_base.Xtn_write_escape(app, bfr, src, xnde);
else
@@ -99,7 +99,7 @@ public class Listing_xnde implements Xox_xnde, Mwh_atr_itm_owner1 {
bfr.Add_mid(src, xnde.Tag_open_end(), xnde.Tag_close_bgn());
}
bfr.Add(Bry__invk_end); // "}}"
Xop_ctx sub_ctx = Xop_ctx.new_sub_(ctx);
Xop_ctx sub_ctx = Xop_ctx.New__sub__reuse_page(ctx);
html_output = wiki.Parser_mgr().Main().Parse_text_to_html(sub_ctx, bfr.To_bry_and_rls());
return true;
}
@@ -199,7 +199,7 @@ public class Listing_xnde implements Xox_xnde, Mwh_atr_itm_owner1 {
tmp_bfr.Add(Bry__invk_bgn); // "{{"
tmp_bfr.Add(rv); // rv is not message, but actually template precursor
tmp_bfr.Add(Bry__invk_end); // "}}"
Xop_ctx sub_ctx = Xop_ctx.new_sub_(ctx);
Xop_ctx sub_ctx = Xop_ctx.New__sub__reuse_page(ctx);
rv = wiki.Parser_mgr().Main().Parse_text_to_html(sub_ctx, tmp_bfr.To_bry_and_clear());
Xol_msg_itm position_text = xtn_mgr.Position_text();
if (Bry_.Len_eq_0(position_text.Val())) return rv;

View File

@@ -35,7 +35,7 @@ public class Listing_xtn_mgr extends Xox_mgr_base {
}
private void Reset(Xowe_wiki wiki, Xop_ctx ctx) {
hwtr = new Gfh_wtr();
Xop_ctx sub_ctx = Xop_ctx.new_sub_(ctx);
Xop_ctx sub_ctx = Xop_ctx.New__sub__reuse_page(ctx);
listings_template = Load_txt(wiki, sub_ctx, "listings-template");
phone_symbol = Load_txt(wiki, sub_ctx, "listings-phone-symbol", "listings-phone");
tollfree_symbol = Load_txt(wiki, sub_ctx, "listings-tollfree-symbol", "listings-tollfree");

View File

@@ -37,7 +37,7 @@ public class Lst_pfunc_wkr {
Xop_ctx sub_ctx = null;
byte[] src = null;
if (defn_tmpl == null) { // cache transclusions to prevent multiple parsings; DATE:2014-02-22
sub_ctx = Xop_ctx.new_sub_(ctx).Ref_ignore_(true);
sub_ctx = Xop_ctx.New__sub__reuse_page(ctx).Ref_ignore_(true);
byte[] src_page_bry = wiki.Cache_mgr().Page_cache().Get_or_load_as_src(src_ttl);
if (src_page_bry == null) return; // {{#lst:missing}} -> ""
Xoae_page page = ctx.Page();

View File

@@ -37,7 +37,7 @@ public class Lst_section_nde implements Xox_xnde, Mwh_atr_itm_owner1 {
xnde.Atrs_ary_(atrs);
ctx.Lst_section_mgr().Add(this);
}
public void Xtn_write(Bry_bfr bfr, Xoae_app app, Xop_ctx ctx, Xoh_html_wtr html_wtr, Xoh_wtr_ctx hctx, Xop_xnde_tkn xnde, byte[] src) {} // NOTE: write nothing; <section> is just a bookmark
public void Xtn_write(Bry_bfr bfr, Xoae_app app, Xop_ctx ctx, Xoh_html_wtr html_wtr, Xoh_wtr_ctx hctx, Xoae_page wpg, Xop_xnde_tkn xnde, byte[] src) {} // NOTE: write nothing; <section> is just a bookmark
public static final byte Xatr_name = 0, Xatr_bgn = 1, Xatr_end = 2;
public static Hash_adp_bry new_xatrs_(Xol_lang_itm lang) {
Hash_adp_bry rv = Hash_adp_bry.ci_u8(lang.Case_mgr()); // UTF8:see xatrs below

View File

@@ -27,7 +27,7 @@ public class Math_nde implements Xox_xnde {
if (math_mgr.Enabled() && math_mgr.Renderer_is_mathjax())
ctx.Page().Html_data().Head_mgr().Itm__mathjax().Enabled_y_();
}
public void Xtn_write(Bry_bfr bfr, Xoae_app app, Xop_ctx ctx, Xoh_html_wtr html_wtr, Xoh_wtr_ctx hctx, Xop_xnde_tkn xnde, byte[] src) {
public void Xtn_write(Bry_bfr bfr, Xoae_app app, Xop_ctx ctx, Xoh_html_wtr html_wtr, Xoh_wtr_ctx hctx, Xoae_page wpg, Xop_xnde_tkn xnde, byte[] src) {
app.File_mgr().Math_mgr().Html_wtr().Write(html_wtr, ctx, hctx, bfr, src, xnde);
}
public static Xop_log_basic_wkr Log_wkr = Xop_log_basic_wkr.Null;

View File

@@ -29,7 +29,7 @@ public class Xof_math_html_wtr {
byte[] math_bry = Bry_.Mid(src, xnde.Tag_open_end(), xnde.Tag_close_bgn());
Bry_bfr tmp_bfr = app.Utl__bfr_mkr().Get_b512().Mkr_rls();
math_bry = Escape_tex(tmp_bfr, !renderer_is_latex, math_bry);
byte[] math_bry_clean = app.Html_mgr().Js_cleaner().Clean(wiki, math_bry, 0, math_bry.length); // check for js;
byte[] math_bry_clean = wiki.Html_mgr().Js_cleaner().Clean(wiki, math_bry, 0, math_bry.length); // check for js;
if (math_bry_clean != null) math_bry = math_bry_clean; // js found; use clean version; DATE:2013-08-26
boolean enabled = app.File_mgr().Math_mgr().Enabled();
if (renderer_is_latex && app.File_mgr().Math_mgr().Find_itm(tmp_math_itm, page.Wiki().Domain_str(), math_bry)) {

View File

@@ -18,7 +18,8 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
package gplx.xowa.xtns.math.texvcs; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.math.*;
import gplx.core.btries.*;
import gplx.xowa.xtns.math.texvcs.lxrs.*; import gplx.xowa.xtns.math.texvcs.tkns.*;
class Texvc_parser {
class Texvc_parser {
private final Btrie_rv trv = new Btrie_rv();
public void Parse(Texvc_ctx ctx, Texvc_root root, byte[] src) {
int src_len = src.length;
ctx.Clear();
@@ -30,13 +31,13 @@ class Texvc_parser {
int txt_bgn = pos, txt_uid = -1;
byte b = src[pos];
while (true) {
Object o = lxr_trie.Match_bgn_w_byte(b, src, pos, src_len);
Object o = lxr_trie.Match_at_w_b0(trv, b, src, pos, src_len);
if (o == null) // no lxr found; char is txt; increment pos
pos++;
else { // lxr found
Texvc_lxr lxr = (Texvc_lxr)o;
if (txt_bgn != pos) txt_uid = Txt_calc(ctx, root, src, src_len, pos, txt_bgn, txt_uid);// chars exist between pos and txt_bgn; make txt_tkn;
pos = lxr.Make_tkn(ctx, root, src, src_len, pos, lxr_trie.Match_pos());
pos = lxr.Make_tkn(ctx, root, src, src_len, pos, trv.Pos());
if (pos > 0) {txt_bgn = pos; txt_uid = -1;} // reset txt_tkn
}
if (pos == end_pos) break;

View File

@@ -18,7 +18,8 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
package gplx.xowa.xtns.pagebanners; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*;
import gplx.core.btries.*; import gplx.langs.mustaches.*;
import gplx.xowa.parsers.*; import gplx.xowa.parsers.tmpls.*; import gplx.xowa.xtns.pfuncs.*; import gplx.xowa.langs.kwds.*; import gplx.xowa.parsers.utils.*; import gplx.xowa.parsers.lnkis.*; import gplx.xowa.parsers.lnkis.files.*;
import gplx.xowa.files.*; import gplx.xowa.htmls.core.htmls.*;
import gplx.xowa.files.*;
import gplx.xowa.htmls.core.htmls.*; import gplx.langs.htmls.encoders.*;
public class Pgbnr_func extends Pf_func_base {
@Override public int Id() {return Xol_kwd_grp_.Id_pagebanner;}
@Override public Pf_func New(int id, byte[] name) {return new Pgbnr_func().Name_(name);}
@@ -85,18 +86,24 @@ public class Pgbnr_func extends Pf_func_base {
}
}
}
if (tid == -1) Gfo_usr_dlg_.Instance.Warn_many("", "", "unknown arg type; page=~{0} key=~{1} val=~{2}", page.Url_bry_safe(), key, val);
if (tid == -1) Gfo_usr_dlg_.Instance.Warn_many("", "", "unknown arg type; page=~{0} key=~{1} val=~{2}", page.Ttl().Full_db(), key, val);
}
byte[] banner_name = Eval_argx(ctx, src, caller, self);
Xoa_ttl banner_ttl = wiki.Ttl_parse(banner_name); // NOTE: MW also creates title to auto-register page and image in imagelinks
if (banner_ttl == null) // if ttl is invalid, get it from wikidata; PAGE:en.v:Diving_the_Cape_Peninsula_and_False_Bay/Whale_Rock; DATE:2016-07-12
banner_ttl = Get_wikidata_banner(wiki.Appe(), wiki, wiki.Xtn_mgr().Xtn_pgbnr().Cfg(), page.Ttl());
if (banner_ttl == null) { // if ttl is still invalid, exit now else will fail with nullref below; PAGE:en.v:Peterborough (New Hampshire); DATE:2016-07-12
Gfo_usr_dlg_.Instance.Warn_many("", "", "banner file is invalid; page=~{0} banner=~{1}", page.Url_bry_safe(), banner_name);
return;
}
Xof_file_itm banner_file_itm = File__make_tkn(ctx, Xop_file_logger_.Tid__pgbnr_main, banner_ttl, Xop_lnki_tkn.Width_null, Xop_lnki_tkn.Height_null);
Pgbnr_itm itm = new Pgbnr_itm();
itm.Init_from_wtxt(banner_ttl, banner_file_itm, tooltip, title, bottomtoc, toc, data_pos_x, data_pos_y, origin_x, icons_list == null ? Pgbnr_icon.Ary_empty : (Pgbnr_icon[])icons_list.To_ary_and_clear(Pgbnr_icon.class));
page.Html_data().Xtn_pgbnr_(itm);
page.Html_data().Head_mgr().Itm__pgbnr().Enabled_y_(); // register css / js during parse stage
page.Hdr_mgr().Toc_manual_(); // NOTE: must mark toc_manual else will show 2nd TOC in edit mode; DATE:2016-07-10
page.Wtxt().Toc().Flag__toc_y_(); // NOTE: must mark toc_manual else will show 2nd TOC in edit mode; DATE:2016-07-10
}
public static void Add_banner(Bry_bfr bfr, Xoae_page wpg, Xop_ctx ctx, Xoh_wtr_ctx hctx, Pgbnr_itm itm) {
Xowe_wiki wiki = ctx.Wiki(); Xoae_app app = wiki.Appe();
@@ -147,10 +154,11 @@ public class Pgbnr_func extends Pf_func_base {
if (hctx.Mode_is_hdump()) {
gplx.xowa.htmls.core.wkrs.tocs.Xoh_toc_wtr.Write_tag(tmp_bfr, true);
toc_html = tmp_bfr.To_bry_and_clear();
banner_file = Bry_.Add(gplx.xowa.htmls.hrefs.Xoh_href_.Bry__wiki, gplx.xowa.wikis.nss.Xow_ns_.Bry__file, Byte_ascii.Colon_bry, banner_ttl.Full_db());
banner_file = Bry_.Add(gplx.xowa.htmls.hrefs.Xoh_href_.Bry__wiki, gplx.xowa.wikis.nss.Xow_ns_.Bry__file, Byte_ascii.Colon_bry
, Gfo_url_encoder_.Href.Encode(banner_ttl.Full_db())); // NOTE: must encode so "'" becomes "%27", not "&#39;"; PAGE:en.v:'s-Hertogenbosch; DATE:2016-07-12
}
else {
wiki.Html_mgr().Toc_mgr().Html(ctx.Page(), gplx.xowa.htmls.core.htmls.Xoh_wtr_ctx.Basic, tmp_bfr, true);
ctx.Page().Html_data().Toc_mgr().To_html(tmp_bfr, Xoh_wtr_ctx.Basic, true);
toc_html = tmp_bfr.To_bry_and_clear();
}
itm.Init_from_html(max_width, banner_file, banner_url, srcset, cfg.enable_heading_override, toc_html);

View File

@@ -25,21 +25,40 @@ public class Pgbnr_func_tst {
( "<div class='ext-wpb-pagebanner noprint pre-content'>"
, " <div class='wpb-topbanner'>"
, " <h1 class='wpb-name'>Test page</h1>"
, " <a href='' class='image' title='Test page' xowa_title='A.png'><img id='xoimg_0' class='wpb-banner-image ' alt='' src='file:///mem/wiki/repo/trg/orig/7/0/A.png' srcset='' data-pos-x='0' data-pos-y='0' style='max-width:0px'></a>"
, " <a href='' class='image' title='Test page' xowa_title='A.png'><img id='xoimg_0' src='file:///mem/wiki/repo/trg/orig/7/0/A.png' width='0' height='0' class='wpb-banner-image ' alt='' srcset='' data-pos-x='0' data-pos-y='0' style='max-width:0px'></a>"
, " <div class='wpb-iconbox'>"
, " <a href='/wiki/Star_article'><span aria-disabled='false' title='Star article' class='oo-ui-widget oo-ui-widget-enabled oo-ui-iconElement-icon oo-ui-icon-star oo-ui-iconElement oo-ui-iconWidget'></span></a>"
, " </div>"
, " </div>"
, " <div class='wpb-topbanner-toc'><div class='wpb-banner-toc'></div></div>"
, " <div class='wpb-topbanner-toc'><div class='wpb-banner-toc'><div>"
, " <div id=\"toctitle\">"
, " <h2>Contents</h2>"
, " </div>"
, "</div>"
, "</div></div>"
, "</div>"
));
}
@Test public void Hdump() {
@Test public void Hdump__basic() {
fxt.Test__parse(Bool_.Y, "{{PAGEBANNER:A.png|icon-star=Star_article}}", String_.Concat_lines_nl_apos_skip_last
( "<div class='ext-wpb-pagebanner noprint pre-content'>"
, " <div class='wpb-topbanner'>"
, " <h1 class='wpb-name'>Test page</h1>"
, " <a href='/wiki/File:A.png' class='image' title='Test page' xowa_title='A.png'><img data-xowa-title=\"A.png\" data-xoimg=\"0|-1|-1|-1|-1|-1\" class='wpb-banner-image ' alt='' src='file:///mem/wiki/repo/trg/orig/7/0/A.png' srcset='' data-pos-x='0' data-pos-y='0' style='max-width:0px'></a>"
, " <a href='/wiki/File:A.png' class='image' title='Test page' xowa_title='A.png'><img data-xowa-title=\"A.png\" data-xoimg=\"1|-1|-1|-1|-1|-1\" src='file:///mem/wiki/repo/trg/orig/7/0/A.png' width='0' height='0' class='wpb-banner-image ' alt='' srcset='' data-pos-x='0' data-pos-y='0' style='max-width:0px'></a>"
, " <div class='wpb-iconbox'>"
, " <a href='/wiki/Star_article'><span aria-disabled='false' title='Star article' class='oo-ui-widget oo-ui-widget-enabled oo-ui-iconElement-icon oo-ui-icon-star oo-ui-iconElement oo-ui-iconWidget'></span></a>"
, " </div>"
, " </div>"
, " <div class='wpb-topbanner-toc'><div class='wpb-banner-toc'><div class=\"xo-toc\" data-toc-mode=\"1\"></div></div></div>"
, "</div>"
));
}
@Test public void Hdump__quote() { // PAGE:en.v:Europe; DATE:2016-07-12
fxt.Test__parse(Bool_.Y, "{{PAGEBANNER:A\"b.png|icon-star=Star_article}}", String_.Concat_lines_nl_apos_skip_last
( "<div class='ext-wpb-pagebanner noprint pre-content'>"
, " <div class='wpb-topbanner'>"
, " <h1 class='wpb-name'>Test page</h1>"
, " <a href='/wiki/File:A%22b.png' class='image' title='Test page' xowa_title='A%22b.png'><img data-xowa-title=\"A%22b.png\" data-xoimg=\"1|-1|-1|-1|-1|-1\" src='file:///mem/wiki/repo/trg/orig/d/4/A%22b.png' width='0' height='0' class='wpb-banner-image ' alt='' srcset='' data-pos-x='0' data-pos-y='0' style='max-width:0px'></a>"
, " <div class='wpb-iconbox'>"
, " <a href='/wiki/Star_article'><span aria-disabled='false' title='Star article' class='oo-ui-widget oo-ui-widget-enabled oo-ui-iconElement-icon oo-ui-icon-star oo-ui-iconElement oo-ui-iconWidget'></span></a>"
, " </div>"

View File

@@ -18,7 +18,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
package gplx.xowa.xtns.pagebanners; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*;
import gplx.langs.mustaches.*; import gplx.xowa.parsers.lnkis.*;
import gplx.xowa.files.*;
import gplx.langs.htmls.*; import gplx.xowa.htmls.core.wkrs.imgs.atrs.*;
import gplx.langs.htmls.*; import gplx.langs.htmls.docs.*; import gplx.xowa.htmls.core.wkrs.imgs.atrs.*; import gplx.xowa.htmls.core.wkrs.lnkis.htmls.*; import gplx.langs.htmls.encoders.*;
public class Pgbnr_itm implements Mustache_doc_itm {
public Xoa_ttl banner_ttl;
public byte[] banner_img_src;
@@ -26,21 +26,49 @@ public class Pgbnr_itm implements Mustache_doc_itm {
public Xof_file_itm banner_file_itm;
private byte[] banner_anch_title, banner_hdr_text, originx, banner_anch_href, srcset;
private double data_pos_x, data_pos_y;
private int maxWidth;
private int max_width;
private boolean bottomtoc, isHeadingOverrideEnabled;
private byte[] file_ttl;
private Pgbnr_icon[] icons;
private byte[] img_id_atr, img_xottl_atr, img_xoimg_atr;
// NOTE: used by hdump
public boolean Exists() {return exists;} private boolean exists;
public byte[] Srcset() {return srcset;}
public byte[] Style_if_not_dflt() {return Bry_.Eq(style, Atr_val__style_dflt) ? Bry_.Empty : style;}
public byte[] Style() {return style;} private byte[] style;
public double Data_pos_x() {return data_pos_x;}
public double Data_pos_y() {return data_pos_y;}
public void Clear_by_hdump() {
this.exists = false;
this.srcset = style = null;
this.data_pos_x = this.data_pos_y = 0;
}
public void Init_by_parse(Gfh_tag tag) {
this.exists = true;
this.srcset = tag.Atrs__get_as_bry(Atr_key__srcset);
this.style = tag.Atrs__get_as_bry(Gfh_atr_.Bry__style);
this.data_pos_x = tag.Atrs__get_as_double_or(Atr_key__data_pos_x, 0);
this.data_pos_y = tag.Atrs__get_as_double_or(Atr_key__data_pos_y, 0);
}
public void Init_by_decode(double data_pos_x, double data_pos_y, byte[] srcset, byte[] style_if_not_dflt) {
this.data_pos_x = data_pos_x;
this.data_pos_y = data_pos_y;
this.srcset = srcset;
this.style = Bry_.Eq(style_if_not_dflt, Bry_.Empty) ? Atr_val__style_dflt : style_if_not_dflt;
this.exists = true;
}
public void Init_from_wtxt(Xoa_ttl banner_ttl, Xof_file_itm banner_file_itm, byte[] banner_anch_title, byte[] banner_hdr_text, boolean bottomtoc
, byte[] toc, double data_pos_x, double data_pos_y, byte[] originx, Pgbnr_icon[] icons) {
this.banner_ttl = banner_ttl; this.banner_file_itm = banner_file_itm;
this.banner_anch_title = banner_anch_title; this.banner_hdr_text = banner_hdr_text; this.bottomtoc = bottomtoc; this.toc = toc; this.icons = icons;
this.data_pos_x = data_pos_x; this.data_pos_y = data_pos_y; this.originx = originx;
this.banner_img_src = banner_file_itm.Html_view_url().To_http_file_bry();
this.file_ttl = banner_file_itm.Orig_ttl();
this.file_ttl = Gfo_url_encoder_.Href_quotes.Encode(banner_file_itm.Lnki_ttl()); // NOTE: Encode(Lnki_ttl) not Orig_ttl; else "%27s" instead of "'s" PAGE:en.v:'s-Hertogenbosch; DATE:2016-07-12
}
public void Init_from_html(int maxWidth, byte[] banner_anch_href, byte[] banner_img_src, byte[] srcset, boolean isHeadingOverrideEnabled, byte[] toc) {
this.maxWidth = maxWidth;
public void Init_from_html(int max_width, byte[] banner_anch_href, byte[] banner_img_src, byte[] srcset, boolean isHeadingOverrideEnabled, byte[] toc) {
this.max_width = max_width;
this.banner_anch_href = banner_anch_href;
this.banner_img_src = banner_img_src;
this.srcset = srcset;
@@ -68,7 +96,7 @@ public class Pgbnr_itm implements Mustache_doc_itm {
else if (String_.Eq(key, "originx")) bfr.Add_bry(originx);
else if (String_.Eq(key, "data-pos-x")) bfr.Add_double(data_pos_x);
else if (String_.Eq(key, "data-pos-y")) bfr.Add_double(data_pos_y);
else if (String_.Eq(key, "maxWidth")) bfr.Add_int(maxWidth);
else if (String_.Eq(key, "maxWidth")) bfr.Add_int(max_width);
else if (String_.Eq(key, "toc")) bfr.Add_bry(toc);
else if (String_.Eq(key, "img_id_atr")) bfr.Add_bry(img_id_atr);
else if (String_.Eq(key, "img_xottl")) bfr.Add_bry(img_xottl_atr);
@@ -85,4 +113,10 @@ public class Pgbnr_itm implements Mustache_doc_itm {
return Mustache_doc_itm_.Ary__empty;
}
private static final byte[] Bry__anch_atr_id = Bry_.new_a7(" id=\"xoimg_");
public static final byte[]
Atr_key__srcset = Bry_.new_a7("srcset")
, Atr_key__data_pos_x = Bry_.new_a7("data-pos-x")
, Atr_key__data_pos_y = Bry_.new_a7("data-pos-y")
, Atr_val__style_dflt = Bry_.new_a7("max-width:-1px")
;
}

View File

@@ -82,12 +82,13 @@ public class Pgbnr_xtn_mgr extends Xox_mgr_base implements Bfr_arg {
Pgbnr_itm itm = wpg.Html_data().Xtn_pgbnr(); if (itm == null) return;
Pgbnr_func.Add_banner(bfr, wpg, pctx, hctx, itm);
}
public static final byte[] Bry__cls__wpb_banner_image = Bry_.new_a7("wpb-banner-image");
private static final byte[] Template_dflt = Bry_.New_u8_nl_apos
( "<div class='ext-wpb-pagebanner noprint pre-content'>"
, " <div class='wpb-topbanner'>"
, " {{#isHeadingOverrideEnabled}}<h1 class='wpb-name'>{{title}}</h1>{{/isHeadingOverrideEnabled}}"
, " <a href='{{bannerfile}}' class='image' title='{{tooltip}}' xowa_title='{{file_ttl}}'><img{{{img_id_atr}}}{{{img_xottl}}}{{{img_xoimg}}} class='wpb-banner-image {{originx}}' alt='' src='{{banner}}' srcset='{{srcset}}' data-pos-x='{{data-pos-x}}' data-pos-y='{{data-pos-y}}' style='max-width:{{maxWidth}}px'></a>"
, " <a href='{{bannerfile}}' class='image' title='{{tooltip}}' xowa_title='{{file_ttl}}'><img{{{img_id_atr}}}{{{img_xottl}}}{{{img_xoimg}}} src='{{banner}}' width='0' height='0' class='wpb-banner-image {{originx}}' alt='' srcset='{{srcset}}' data-pos-x='{{data-pos-x}}' data-pos-y='{{data-pos-y}}' style='max-width:{{maxWidth}}px'></a>"
, " {{#hasIcons}}"
, " <div class='wpb-iconbox'>"
, " {{#icons}}"

View File

@@ -20,7 +20,7 @@ import gplx.core.btries.*; import gplx.core.brys.fmtrs.*;
import gplx.xowa.langs.*; import gplx.xowa.langs.msgs.*;
import gplx.xowa.parsers.*;
public class Pfunc_expr_shunter {
Btrie_fast_mgr trie = expression_();
private Btrie_fast_mgr trie = expression_(); private final Btrie_rv trv = new Btrie_rv();
Val_stack val_stack = new Val_stack();
Func_tkn_stack prc_stack = new Func_tkn_stack();
public static final Decimal_adp Null_rslt = null;
@@ -46,7 +46,7 @@ public class Pfunc_expr_shunter {
while (true) {
// can't think of a way for this to happen; note that operators will automatically push values/operators off stack that are lower; can't get up to 100
// if (val_stack.Len() > 100 || prc_stack.Len() > 100) return Err_set(ctx, Xol_msg_itm_.Id_pfunc_expr_err__stack_exhausted);
Object o = trie.Match_bgn_w_byte(cur_byt, src, cur_pos, src_len);
Object o = trie.Match_at_w_b0(trv, cur_byt, src, cur_pos, src_len);
int bgn_pos = cur_pos;
if (o == null) { // letter or unknown symbol
while (cur_pos < src_len) {
@@ -60,7 +60,7 @@ public class Pfunc_expr_shunter {
}
else {
Expr_tkn t = (Expr_tkn)o;
cur_pos = trie.Match_pos();
cur_pos = trv.Pos();
switch (t.Tid()) {
case Expr_tkn_.Tid_space: break;
case Expr_tkn_.Tid_number:

View File

@@ -43,15 +43,16 @@ public class Pfunc_iferror extends Pf_func_base {
byte state = State_null;
int pos = 0;
boolean valid = false;
Btrie_rv trv = new Btrie_rv();
while (true) {
if (pos == src_len) break;
byte b = src[pos];
Object o = trie.Match_bgn_w_byte(b, src, pos, src_len);
Object o = trie.Match_at_w_b0(trv, b, src, pos, src_len);
if (o == null)
++pos;
else {
Byte_obj_val bv = (Byte_obj_val)o;
int pos_nxt = trie.Match_pos();
int pos_nxt = trv.Pos();
if (pos_nxt == src_len) return false; // each of the three states requires at least one character afterwards
switch (bv.Val()) {
case State_close: // >: reset state
@@ -108,7 +109,7 @@ public class Pfunc_iferror extends Pf_func_base {
}
return false;
}
private static final Btrie_slim_mgr trie = trie_();
private static final Btrie_slim_mgr trie = trie_();
static final byte State_null = 0, State_nde = 1, State_class = 2, State_error = 3, State_close = 4;
private static Btrie_slim_mgr trie_() {
Btrie_slim_mgr rv = Btrie_slim_mgr.ci_a7(); // NOTE:ci.ascii:MW_const.en

View File

@@ -31,7 +31,6 @@ public class Pfunc_ifexist extends Pf_func_base {
bfr.Add(Pf_func_.Eval_arg_or_empty(ctx, src, caller, self, args_len, 1));
}
public static boolean Exists(Xowe_wiki wiki, byte[] ttl_bry) {
synchronized (Mgr) {return Mgr.Exists(wiki, ttl_bry);}
return wiki.Parser_mgr().Ifexist_mgr().Exists(wiki, ttl_bry);
}
public static final Pfunc_ifexist_mgr Mgr = new Pfunc_ifexist_mgr();
}

View File

@@ -18,8 +18,11 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
package gplx.xowa.xtns.pfuncs.ifs; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.pfuncs.*;
import org.junit.*; import gplx.xowa.wikis.tdbs.metas.*;
public class Pfunc_ifexist_tst {
private final Xop_fxt fxt = new Xop_fxt();
@Before public void init() {fxt.Reset();}
private final Xop_fxt fxt = new Xop_fxt();
@Before public void init() {
fxt.Reset();
fxt.Wiki().Parser_mgr().Ifexist_mgr().Clear();
}
@Test public void Basic_pass() {fxt.Test_parse_tmpl_str_test("{{#ifexist: Abc | exists | doesn't exist }}" , "{{test}}" , "doesn't exist");}
@Test public void Empty() {fxt.Test_parse_tmpl_str_test("{{#ifexist:|y|n}}" , "{{test}}" , "n");} // NOTE: {{autolink}} can pass in ""
@Test public void Db_key() { // PURPOSE: test that (1) & is encoded; (2) " " becomes "_"; EX: {{#ifexist:File:Peter & Paul fortress in SPB 03.jpg|y|n}}
@@ -27,22 +30,18 @@ public class Pfunc_ifexist_tst {
fxt.Test_parse_tmpl_str_test("{{#ifexist:A & b|y|n}}", "{{test}}", "y");
}
@Test public void Media_n() {// DATE:2014-07-04
Pfunc_ifexist.Mgr.Clear();
fxt.Test_parse_tmpl_str_test("{{#ifexist:Media:A.png|y|n}}", "{{test}}", "n");
}
@Test public void Media_y_wiki() {// DATE:2014-07-04
Pfunc_ifexist.Mgr.Clear();
fxt.Init_page_create("File:A.png", "");
fxt.Test_parse_tmpl_str_test("{{#ifexist:Media:A.png|y|n}}", "{{test}}", "y");
}
@Test public void Media_y_commons() {// DATE:2014-07-04
Pfunc_ifexist.Mgr.Clear();
Xowe_wiki commons_wiki = fxt.App().Wiki_mgr().Get_by_or_make(gplx.xowa.wikis.domains.Xow_domain_itm_.Bry__commons);
fxt.Init_page_create(commons_wiki, "File:A.png", "");
fxt.Test_parse_tmpl_str_test("{{#ifexist:Media:A.png|y|n}}", "{{test}}", "y");
}
@Test public void Media_y_file_v1() {// DATE:2014-07-04
Pfunc_ifexist.Mgr.Clear();
Xof_meta_itm meta_itm = fxt.Wiki().File_mgr().Dbmeta_mgr().Get_itm_or_new(Bry_.new_a7("A.png"));
meta_itm.Orig_exists_(Bool_.Y_byte);
fxt.Test_parse_tmpl_str_test("{{#ifexist:Media:A.png|y|n}}", "{{test}}", "y");

View File

@@ -25,16 +25,16 @@ public class Pfunc_displaytitle extends Pf_func_base {
@Override public void Func_evaluate(Bry_bfr bfr, Xop_ctx ctx, Xot_invk caller, Xot_invk self, byte[] src) {
byte[] val_dat_ary = Eval_argx(ctx, src, caller, self);
Xowe_wiki wiki = ctx.Wiki(); Xop_parser parser = wiki.Parser_mgr().Main();
Xop_ctx display_ttl_ctx = Xop_ctx.new_sub_(ctx);
Xop_ctx display_ttl_ctx = Xop_ctx.New__sub__reuse_page(ctx);
Xop_root_tkn display_ttl_root = parser.Parse_text_to_wdom(display_ttl_ctx, val_dat_ary, false);
Bry_bfr tmp_bfr = wiki.Utl__bfr_mkr().Get_b512();
boolean restrict = wiki.Cfg_parser().Display_title_restrict();
Xoh_wtr_ctx hctx = restrict ? Xoh_wtr_ctx.Display_title : Xoh_wtr_ctx.Basic; // restrict removes certain HTML (display:none)
wiki.Html_mgr().Html_wtr().Write_tkn(tmp_bfr, display_ttl_ctx, hctx, display_ttl_root.Data_mid(), display_ttl_root, 0, display_ttl_root);
wiki.Html_mgr().Html_wtr().Write_tkn_to_html(tmp_bfr, display_ttl_ctx, hctx, display_ttl_root.Data_mid(), display_ttl_root, 0, display_ttl_root);
byte[] val_html = tmp_bfr.To_bry_and_clear();
if (restrict) { // restrict only allows displayTitles which have text similar to the pageTitle; PAGE:de.b:Kochbuch/_Druckversion; DATE:2014-08-18
Xoae_page page = ctx.Page();
wiki.Html_mgr().Html_wtr().Write_tkn(tmp_bfr, display_ttl_ctx, Xoh_wtr_ctx.Alt, display_ttl_root.Data_mid(), display_ttl_root, 0, display_ttl_root);
wiki.Html_mgr().Html_wtr().Write_tkn_to_html(tmp_bfr, display_ttl_ctx, Xoh_wtr_ctx.Alt, display_ttl_root.Data_mid(), display_ttl_root, 0, display_ttl_root);
byte[] val_html_lc = tmp_bfr.To_bry_and_clear();
Xol_case_mgr case_mgr = wiki.Lang().Case_mgr();
val_html_lc = Standardize_displaytitle_text(case_mgr, val_html_lc);

View File

@@ -18,6 +18,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
package gplx.xowa.xtns.pfuncs.times; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.pfuncs.*;
import gplx.core.brys.*; import gplx.core.brys.fmtrs.*; import gplx.core.btries.*; import gplx.core.log_msgs.*;
class Pxd_parser {
private final Btrie_rv trv = new Btrie_rv();
byte[] src; int cur_pos, tkn_bgn_pos, src_len, tkn_type;
public Pxd_itm[] Tkns() {return tkns;} Pxd_itm[] tkns;
public int Tkns_len() {return tkns_len;} private int tkns_len;
@@ -80,11 +81,11 @@ class Pxd_parser {
case Byte_ascii.Ltr_u: case Byte_ascii.Ltr_v: case Byte_ascii.Ltr_w: case Byte_ascii.Ltr_x: case Byte_ascii.Ltr_y: case Byte_ascii.Ltr_z:
case Byte_ascii.At:
MakePrvTkn(cur_pos, Pxd_itm_.Tid_null); // first, make prv tkn
Object o = trie.Match_bgn_w_byte(b, src, cur_pos, src_len); // now match String against tkn
Object o = trie.Match_at_w_b0(trv, b, src, cur_pos, src_len); // now match String against tkn
if (o == null) return false; // unknown letter / word; exit now;
tkns[tkns_len] = ((Pxd_itm_prototype)o).MakeNew(tkns_len);
++tkns_len;
cur_pos = trie.Match_pos() - 1; // -1 b/c trie matches to next char, and ++ below
cur_pos = trv.Pos() - 1; // -1 b/c trie matches to next char, and ++ below
break;
case Byte_ascii.Comma: case Byte_ascii.Plus:
MakePrvTkn(cur_pos, Pxd_itm_.Tid_null);

View File

@@ -27,7 +27,7 @@ public class Pfunc_anchorencode extends Pf_func_base { // EX: {{anchorencode:a b
if (anchor_ctx != null) return;// NOTE: called by Scrib_uri
encode_trie.Add(Byte_ascii.Colon, Bfr_arg_.New_byte(Byte_ascii.Colon));
encode_trie.Add(Byte_ascii.Space, Bfr_arg_.New_byte(Byte_ascii.Underline));
anchor_ctx = Xop_ctx.new_sub_(ctx);
anchor_ctx = Xop_ctx.New__sub__reuse_page(ctx);
anchor_ctx.Para().Enabled_n_();
anchor_tkn_mkr = anchor_ctx.Tkn_mkr();
anchor_parser = ctx.Wiki().Parser_mgr().Anchor_encoder();

View File

@@ -53,10 +53,12 @@ public class Pfunc_filepath extends Pf_func_base {
if (page.Db().Page().Exists_n()) { // file not found in current wiki; try commons;
Xowe_wiki commons_wiki = (Xowe_wiki)wiki.Appe().Wiki_mgr().Get_by_or_null(wiki.Commons_wiki_key());
if (commons_wiki != null) { // commons_wiki not installed; exit; DATE:2013-06-08
synchronized (commons_wiki) { // LOCK:app-level; wiki.commons; DATE:2016-07-06
if (!Env_.Mode_testing()) commons_wiki.Init_assert();// must assert load else page_zip never detected; DATE:2013-03-10
page = commons_wiki.Data_mgr().Load_page_by_ttl(ttl);
if (!Env_.Mode_testing()) {
synchronized (commons_wiki) { // LOCK:app-level; wiki.commons; DATE:2016-07-06
commons_wiki.Init_assert();// must assert load else page_zip never detected; DATE:2013-03-10
}
}
page = commons_wiki.Data_mgr().Load_page_by_ttl(ttl);
}
}
return page;

View File

@@ -67,8 +67,9 @@ public class Pfunc_rel2abs extends Pf_func_base {
if (qry_len == 0) return src;// no qry; return src; EX:{{#rel2abs:|a/b}} -> a/b
byte[] tmp = src;
int tmp_adj = 0, i = 0, prv_slash_end = 0, tmp_len = src_len, seg_pos = 0;
boolean tmp_is_1st = true;
Object o = qry_bgns_with.Match_bgn(qry, 0, qry_len); // check if qry begins with ".", "/", "./", "../"; if it doesn't return;
boolean tmp_is_1st = true;
Btrie_rv trv = new Btrie_rv();
Object o = qry_bgns_with.Match_at(trv, qry, 0, qry_len); // check if qry begins with ".", "/", "./", "../"; if it doesn't return;
if (o != null) {
int id = ((Int_obj_ref)o).Val();
rel2abs_tid.Val_(id);
@@ -80,7 +81,7 @@ public class Pfunc_rel2abs extends Pf_func_base {
case Id_dot_dot_slash: // "../"
break; // qry is relative to src; noop
case Id_dot_dot: // ".."
int match_end = qry_bgns_with.Match_pos();
int match_end = trv.Pos();
if (match_end < qry_len && qry[match_end] == Byte_ascii.Dot) // NOTE: handles "..."; if "...*" then treat as invalid and return; needed for en.wiktionary.org/wiki/Wiktionary:Requests for cleanup/archive/2006
return qry;
break;

View File

@@ -30,12 +30,12 @@ public class Poem_nde implements Xox_xnde {
Poem_xtn_mgr xtn_mgr = (Poem_xtn_mgr)wiki.Xtn_mgr().Get_or_fail(Poem_xtn_mgr.XTN_KEY);
byte[] poem_bry = Parse_lines(wiki.Utl__bfr_mkr(), src, itm_bgn, itm_end);
// xtn_root = xtn_mgr.Parser().Parse_text_to_wdom_old_ctx(ctx, poem_bry, true); // NOTE: ignoring paragraph mode; technically MW enables para mode, but by replacing "\n" with "<br/>\n" all the logic with para/pre mode is skipped
xtn_root = xtn_mgr.Parser().Parse_text_to_wdom(Xop_ctx.New_sub_by_ctx(ctx), poem_bry, true); // NOTE: ignoring paragraph mode; technically MW enables para mode, but by replacing "\n" with "<br/>\n" all the logic with para/pre mode is skipped
xtn_root = xtn_mgr.Parser().Parse_text_to_wdom(Xop_ctx.New__sub_and_page(wiki, ctx), poem_bry, true); // NOTE: ignoring paragraph mode; technically MW enables para mode, but by replacing "\n" with "<br/>\n" all the logic with para/pre mode is skipped
}
public void Xtn_write(Bry_bfr bfr, Xoae_app app, Xop_ctx ctx, Xoh_html_wtr html_wtr, Xoh_wtr_ctx hctx, Xop_xnde_tkn xnde, byte[] src) {
public void Xtn_write(Bry_bfr bfr, Xoae_app app, Xop_ctx ctx, Xoh_html_wtr html_wtr, Xoh_wtr_ctx hctx, Xoae_page wpg, Xop_xnde_tkn xnde, byte[] src) {
if (xtn_root == null) return; // inline poem; write nothing; EX: <poem/>
bfr.Add(Div_poem_bgn);
html_wtr.Write_tkn(bfr, ctx, hctx, xtn_root.Root_src(), xnde, Xoh_html_wtr.Sub_idx_null, xtn_root);
html_wtr.Write_tkn_to_html(bfr, ctx, hctx, xtn_root.Root_src(), xnde, Xoh_html_wtr.Sub_idx_null, xtn_root);
bfr.Add(Div_poem_end);
}
private static byte[] Parse_lines(Bry_bfr_mkr bfr_mkr, byte[] src, int src_bgn, int src_end) {

View File

@@ -24,10 +24,10 @@ class Pp_index_parser {
byte[] src = wiki.Cache_mgr().Page_cache().Get_or_load_as_src(index_ttl);
if (src == null) return Pp_index_page.Null;
Xop_parser sub_parser = Xop_parser.new_(wiki, wiki.Parser_mgr().Main().Tmpl_lxr_mgr(), wiki.Parser_mgr().Main().Wtxt_lxr_mgr());
Xop_ctx sub_ctx = Xop_ctx.new_sub_(ctx);
Xop_ctx sub_ctx = Xop_ctx.New__sub__reuse_page(ctx);
Xop_tkn_mkr tkn_mkr = sub_ctx.Tkn_mkr();
Xop_root_tkn index_root = tkn_mkr.Root(src);
byte[] mid_text = sub_parser.Parse_text_to_wtxt(index_root, sub_ctx, tkn_mkr, src);
byte[] mid_text = sub_parser.Expand_tmpl(index_root, sub_ctx, tkn_mkr, src);
Pp_index_page rv = new Pp_index_page();
Inspect_tmpl(rv, src, index_root, index_root.Subs_len(), ns_page_id, 1);
sub_parser.Parse_wtxt_to_wdom(index_root, sub_ctx, tkn_mkr, mid_text, Xop_parser_.Doc_bgn_bos);

View File

@@ -23,5 +23,5 @@ public class Pp_pagelist_nde implements Xox_xnde { // TODO_OLD:
public void Xtn_parse(Xowe_wiki wiki, Xop_ctx ctx, Xop_root_tkn root, byte[] src, Xop_xnde_tkn xnde) {
boolean log_wkr_enabled = Log_wkr != Xop_log_basic_wkr.Null; if (log_wkr_enabled) Log_wkr.Log_end_xnde(ctx.Page(), Xop_log_basic_wkr.Tid_hiero, src, xnde);
} public static Xop_log_basic_wkr Log_wkr = Xop_log_basic_wkr.Null;
public void Xtn_write(Bry_bfr bfr, Xoae_app app, Xop_ctx ctx, Xoh_html_wtr html_wtr, Xoh_wtr_ctx hctx, Xop_xnde_tkn xnde, byte[] src) {}
public void Xtn_write(Bry_bfr bfr, Xoae_app app, Xop_ctx ctx, Xoh_html_wtr html_wtr, Xoh_wtr_ctx hctx, Xoae_page wpg, Xop_xnde_tkn xnde, byte[] src) {}
}

View File

@@ -20,5 +20,5 @@ import gplx.xowa.htmls.*; import gplx.xowa.htmls.core.htmls.*;
import gplx.xowa.parsers.*; import gplx.xowa.parsers.xndes.*;
public class Pp_pagequality_nde implements Xox_xnde {
public void Xtn_parse(Xowe_wiki wiki, Xop_ctx ctx, Xop_root_tkn root, byte[] src, Xop_xnde_tkn xnde) {} // FUTURE: noop for now so it doesn't show (since it's useless)
public void Xtn_write(Bry_bfr bfr, Xoae_app app, Xop_ctx ctx, Xoh_html_wtr html_wtr, Xoh_wtr_ctx hctx, Xop_xnde_tkn xnde, byte[] src) {}
public void Xtn_write(Bry_bfr bfr, Xoae_app app, Xop_ctx ctx, Xoh_html_wtr html_wtr, Xoh_wtr_ctx hctx, Xoae_page wpg, Xop_xnde_tkn xnde, byte[] src) {}
}

View File

@@ -72,12 +72,12 @@ public class Pp_pages_nde implements Xox_xnde, Mwh_atr_itm_owner1 {
full_bfr.Mkr_rls();
page.Html_data().Indicators().Enabled_(Bool_.Y);
}
public void Xtn_write(Bry_bfr bfr, Xoae_app app, Xop_ctx ctx, Xoh_html_wtr html_wtr, Xoh_wtr_ctx hctx, Xop_xnde_tkn xnde, byte[] src) {
public void Xtn_write(Bry_bfr bfr, Xoae_app app, Xop_ctx ctx, Xoh_html_wtr html_wtr, Xoh_wtr_ctx hctx, Xoae_page wpg, Xop_xnde_tkn xnde, byte[] src) {
if (xtn_literal)
Xox_mgr_base.Xtn_write_escape(app, bfr, src, xnde);
else {
if (xtn_root == null) return; // xtn_root is null when Xtn_parse exits early; occurs for recursion; DATE:2014-05-21
html_wtr.Write_tkn(bfr, ctx, hctx, xtn_root.Root_src(), xnde, Xoh_html_wtr.Sub_idx_null, xtn_root);
html_wtr.Write_tkn_to_html(bfr, ctx, hctx, xtn_root.Root_src(), xnde, Xoh_html_wtr.Sub_idx_null, xtn_root);
}
}
private boolean Init_vars(Xowe_wiki wiki, Xop_ctx ctx, byte[] src, Xop_xnde_tkn xnde) {
@@ -140,7 +140,7 @@ public class Pp_pages_nde implements Xox_xnde, Mwh_atr_itm_owner1 {
private byte[] Get_caption(Bry_bfr full_bfr, byte[] index_page_src, Xop_lnki_tkn lnki) {
byte[] rv = Bry_.Empty;
try {
wiki.Html_mgr().Html_wtr().Write_tkn(full_bfr, ctx, Xoh_wtr_ctx.Basic, index_page_src, null, -1, lnki.Caption_tkn());
wiki.Html_mgr().Html_wtr().Write_tkn_to_html(full_bfr, ctx, Xoh_wtr_ctx.Basic, index_page_src, null, -1, lnki.Caption_tkn());
rv = full_bfr.To_bry_and_clear();
}
catch (Exception e) {
@@ -363,10 +363,10 @@ public class Pp_pages_nde implements Xox_xnde, Mwh_atr_itm_owner1 {
return full_bfr.To_bry_and_clear();
}
private Xop_root_tkn Bld_root_nde(Bry_bfr page_bfr, Hash_adp_bry lst_page_regy, byte[] wikitext) {
Xop_ctx tmp_ctx = Xop_ctx.new_sub_page_(wiki, ctx, lst_page_regy);
Xop_ctx tmp_ctx = Xop_ctx.New__sub__reuse_lst(wiki, ctx, lst_page_regy);
tmp_ctx.Page().Ttl_(ctx.Page().Ttl()); // NOTE: must set tmp_ctx.Ttl to ctx.Ttl; EX: Flatland and First World; DATE:2013-04-29
tmp_ctx.Lnki().File_logger_(Xop_file_logger_.Noop); // NOTE: set file_wkr to null, else items will be double-counted
tmp_ctx.Parse_tid_(Xop_parser_.Parse_tid_tmpl);
tmp_ctx.Parse_tid_(Xop_parser_tid_.Tid__defn);
Xop_parser tmp_parser = Xop_parser.new_(wiki, wiki.Parser_mgr().Main().Tmpl_lxr_mgr(), wiki.Parser_mgr().Main().Wtxt_lxr_mgr());
Xop_root_tkn rv = tmp_ctx.Tkn_mkr().Root(wikitext);
tmp_parser.Parse_text_to_wdom(rv, tmp_ctx, tmp_ctx.Tkn_mkr(), wikitext, Xop_parser_.Doc_bgn_bos);

View File

@@ -20,7 +20,7 @@ import gplx.xowa.htmls.*; import gplx.xowa.htmls.core.htmls.*;
import gplx.xowa.parsers.*; import gplx.xowa.parsers.logs.*; import gplx.xowa.parsers.lnkis.*; import gplx.xowa.parsers.xndes.*;
public class Quiz_xnde implements Xox_xnde {
public void Xtn_parse(Xowe_wiki wiki, Xop_ctx ctx, Xop_root_tkn root, byte[] src, Xop_xnde_tkn xnde) {}
public void Xtn_write(Bry_bfr bfr, Xoae_app app, Xop_ctx ctx, Xoh_html_wtr html_wtr, Xoh_wtr_ctx hctx, Xop_xnde_tkn xnde, byte[] src) {
public void Xtn_write(Bry_bfr bfr, Xoae_app app, Xop_ctx ctx, Xoh_html_wtr html_wtr, Xoh_wtr_ctx hctx, Xoae_page wpg, Xop_xnde_tkn xnde, byte[] src) {
Xox_mgr_base.Xtn_write_unsupported(app, ctx, bfr, src, xnde, Xox_mgr_base.Parse_content_tid_none);
}
}

View File

@@ -20,7 +20,7 @@ import gplx.xowa.htmls.*; import gplx.xowa.htmls.core.htmls.*;
import gplx.xowa.parsers.*; import gplx.xowa.parsers.logs.*; import gplx.xowa.parsers.lnkis.*; import gplx.xowa.parsers.xndes.*;
public class Rss_xnde implements Xox_xnde {
public void Xtn_parse(Xowe_wiki wiki, Xop_ctx ctx, Xop_root_tkn root, byte[] src, Xop_xnde_tkn xnde) {}
public void Xtn_write(Bry_bfr bfr, Xoae_app app, Xop_ctx ctx, Xoh_html_wtr html_wtr, Xoh_wtr_ctx hctx, Xop_xnde_tkn xnde, byte[] src) {
public void Xtn_write(Bry_bfr bfr, Xoae_app app, Xop_ctx ctx, Xoh_html_wtr html_wtr, Xoh_wtr_ctx hctx, Xoae_page wpg, Xop_xnde_tkn xnde, byte[] src) {
Xox_mgr_base.Xtn_write_unsupported(app, ctx, bfr, src, xnde, Xox_mgr_base.Parse_content_tid_html);
}
}

View File

@@ -57,7 +57,7 @@ public class Score_xnde implements Xox_xnde, Mwh_atr_itm_owner1, Xoh_cmd_itm {
bfr.Add(Xoh_consts.Pre_end);
}
private static final gplx.core.security.Hash_algo sha1_hash = gplx.core.security.Hash_algo_.New__sha1();
public void Xtn_write(Bry_bfr bfr, Xoae_app app, Xop_ctx ctx, Xoh_html_wtr html_wtr, Xoh_wtr_ctx hctx, Xop_xnde_tkn xnde, byte[] src) {
public void Xtn_write(Bry_bfr bfr, Xoae_app app, Xop_ctx ctx, Xoh_html_wtr html_wtr, Xoh_wtr_ctx hctx, Xoae_page wpg, Xop_xnde_tkn xnde, byte[] src) {
Xowe_wiki wiki = ctx.Wiki(); Xoae_page page = ctx.Page();
Score_xtn_mgr score_xtn = (Score_xtn_mgr)wiki.Xtn_mgr().Get_or_fail(Score_xtn_mgr.XTN_KEY);
if (!score_xtn.Enabled()) {Html_write_code_as_pre(bfr, app); return;}

View File

@@ -224,7 +224,7 @@ public class Scrib_lib_mw implements Scrib_lib {
String text_str = args.Pull_str(1);
byte[] text_bry = Bry_.new_u8(text_str);
Xop_root_tkn tmp_root = ctx.Tkn_mkr().Root(text_bry);
Xop_ctx tmp_ctx = Xop_ctx.new_sub_(core.Ctx());
Xop_ctx tmp_ctx = Xop_ctx.New__sub__reuse_page(core.Ctx());
int args_adj = Scrib_frame_.Get_arg_adj(frame_tid);
int args_len = frame.Args_len() - args_adj;
Keyval[] kv_args = new Keyval[args_len];
@@ -239,12 +239,11 @@ public class Scrib_lib_mw implements Scrib_lib {
kv_args[i] = Keyval_.new_(key, val);
}
Xot_invk_mock mock_frame = Xot_invk_mock.new_(Bry_.new_u8(frame_id), kv_args); // use frame_id for Frame_ttl; in lieu of a better candidate; DATE:2014-09-21
tmp_ctx.Parse_tid_(Xop_parser_.Parse_tid_page_tmpl); // default xnde names to template; needed for test, but should be in place; DATE:2014-06-27
cur_wiki.Parser_mgr().Main().Parse_text_to_wtxt(tmp_root, tmp_ctx, tmp_ctx.Tkn_mkr(), text_bry);
tmp_ctx.Parse_tid_(Xop_parser_tid_.Tid__tmpl); // default xnde names to template; needed for test, but should be in place; DATE:2014-06-27
cur_wiki.Parser_mgr().Main().Expand_tmpl(tmp_root, tmp_ctx, tmp_ctx.Tkn_mkr(), text_bry);
tmp_root.Tmpl_evaluate(tmp_ctx, text_bry, mock_frame, tmp_bfr);
return rslt.Init_obj(tmp_bfr.To_str_and_rls());
}
private static final Xol_func_itm finder = new Xol_func_itm();
public boolean CallParserFunction(Scrib_proc_args args, Scrib_proc_rslt rslt) {
String frame_id = args.Pull_str(0);
int frame_tid = Scrib_frame_.Get_frame_tid(frame_id);
@@ -256,17 +255,14 @@ public class Scrib_lib_mw implements Scrib_lib {
Keyval[] parser_func_args = CallParserFunction_parse_args(cur_wiki.Appe().Utl_num_parser(), argx_ref, fnc_name_ref, args.Ary());
Xot_invk_mock frame = Xot_invk_mock.new_(parent_frame.Defn_tid(), 0, fnc_name, parser_func_args); // pass something as frame_ttl; choosng fnc_name; DATE:2014-09-21
Xot_defn defn;
synchronized (finder) {
cur_wiki.Lang().Func_regy().Find_defn(finder, fnc_name, 0, fnc_name_len);
defn = finder.Func();
}
Xol_func_itm finder = new Xol_func_itm(); // TS.MEM: DATE:2016-07-12
cur_wiki.Lang().Func_regy().Find_defn(finder, fnc_name, 0, fnc_name_len);
Xot_defn defn = finder.Func();
if (defn == Xot_defn_.Null) throw Err_.new_wo_type("callParserFunction: function was not found", "function", String_.new_u8(fnc_name));
Bry_bfr bfr = cur_wiki.Utl__bfr_mkr().Get_k004();
Xop_ctx fnc_ctx = Xop_ctx.new_sub_(core.Ctx());
fnc_ctx.Parse_tid_(Xop_parser_.Parse_tid_page_tmpl); // default xnde names to template; needed for test, but should be in place; DATE:2014-06-27
Xop_ctx fnc_ctx = Xop_ctx.New__sub__reuse_page(core.Ctx());
fnc_ctx.Parse_tid_(Xop_parser_tid_.Tid__tmpl); // default xnde names to template; needed for test, but should be in place; DATE:2014-06-27
Xot_invk_tkn.Eval_func(fnc_ctx, src, parent_frame, frame, bfr, defn, argx_ref.Val());
bfr.Mkr_rls();
return rslt.Init_obj(bfr.To_str_and_clear());

View File

@@ -86,6 +86,8 @@ public class Scrib_lib_title_tst {
}
@Test public void GetContent() {
fxt.Test__proc__objs__flat(lib, Scrib_lib_title.Invk_getContent, Object_.Ary("A") , Scrib_invoke_func_fxt.Null_rslt);
fxt.Parser_fxt().Ctx().Wiki().Cache_mgr().Page_cache().Free_mem_all();
fxt.Parser_fxt().Init_page_create("A", "test");
fxt.Test__proc__objs__flat(lib, Scrib_lib_title.Invk_getContent, Object_.Ary("A") , "test");
}

View File

@@ -41,7 +41,7 @@ public class Synh_xtn_nde implements Xox_xnde, Mwh_atr_itm_owner1 {
Xox_xnde_.Xatr__set(wiki, this, xatrs_hash, src, xnde);
ctx.Para().Process_block__xnde(tag, tag.Block_close()); // deactivate pre; pre; PAGE:en.w:Comment_(computer_programming); DATE:2014-06-24
}
public void Xtn_write(Bry_bfr bfr, Xoae_app app, Xop_ctx ctx, Xoh_html_wtr html_wtr, Xoh_wtr_ctx hctx, Xop_xnde_tkn xnde, byte[] src) {
public void Xtn_write(Bry_bfr bfr, Xoae_app app, Xop_ctx ctx, Xoh_html_wtr html_wtr, Xoh_wtr_ctx hctx, Xoae_page wpg, Xop_xnde_tkn xnde, byte[] src) {
Synh_xtn_nde_.Make(bfr, app, src, xnde.Tag_open_end(), xnde.Tag_close_bgn(), lang, enclose, style, line_enabled, start, highlight_idxs);
}
private static final byte Xatr_enclose = 1, Xatr_lang = 2, Xatr_style = 3, Xatr_line = 4, Xatr_start = 5, Xatr_highlight = 6;

View File

@@ -24,7 +24,7 @@ public class Xtn_templateData_nde implements Xox_xnde {
public void Xtn_parse(Xowe_wiki wiki, Xop_ctx ctx, Xop_root_tkn root, byte[] src, Xop_xnde_tkn xnde) {
this.xnde = xnde;
}
public void Xtn_write(Bry_bfr bfr, Xoae_app app, Xop_ctx ctx, Xoh_html_wtr html_wtr, Xoh_wtr_ctx hctx, Xop_xnde_tkn xnde, byte[] src) {
public void Xtn_write(Bry_bfr bfr, Xoae_app app, Xop_ctx ctx, Xoh_html_wtr html_wtr, Xoh_wtr_ctx hctx, Xoae_page wpg, Xop_xnde_tkn xnde, byte[] src) {
bfr.Add(Xoh_consts.Pre_bgn_overflow);
Xox_mgr_base.Xtn_write_escape(app, bfr, src, xnde.Tag_open_end(), xnde.Tag_close_bgn());
bfr.Add(Xoh_consts.Pre_end);

View File

@@ -69,7 +69,7 @@ public class Xop_languages_xnde implements Xox_xnde {
rv.Sort_by(Xol_lang_stub_.Comparer_key);
return rv;
}
public void Xtn_write(Bry_bfr bfr, Xoae_app app, Xop_ctx ctx, Xoh_html_wtr html_wtr, Xoh_wtr_ctx hctx, Xop_xnde_tkn xnde, byte[] src) {
public void Xtn_write(Bry_bfr bfr, Xoae_app app, Xop_ctx ctx, Xoh_html_wtr html_wtr, Xoh_wtr_ctx hctx, Xoae_page wpg, Xop_xnde_tkn xnde, byte[] src) {
if (langs.Count() == 0) return; // no langs; don't write anything;
fmtr_mgr_itms.Init(langs, ctx.Wiki(), root_ttl, ctx.Page().Lang().Key_bry());
fmtr_all.Bld_bfr_many(bfr, "Other languages", fmtr_mgr_itms);
@@ -110,7 +110,7 @@ class Xop_languages_fmtr implements gplx.core.brys.Bfr_arg {
} private List_adp langs; private Xowe_wiki wiki; private Xoa_ttl root_ttl; private byte[] cur_lang;
public void Bfr_arg__add(Bry_bfr bfr) {
int len = langs.Count();
Xoh_href_wtr href_wtr = wiki.Appe().Html__href_wtr();
Xoh_href_wtr href_wtr = wiki.Html__href_wtr();
int ns_id = root_ttl.Ns().Id();
byte[] root_ttl_bry = root_ttl.Page_db(); // NOTE: do not use .Full(); ns will be added in Xoa_ttl.Parse below
for (int i = 0; i < len; i++) {
@@ -120,7 +120,7 @@ class Xop_languages_fmtr implements gplx.core.brys.Bfr_arg {
byte[] lang_ttl_bry = lang_is_en ? root_ttl_bry : Bry_.Add_w_dlm(Xoa_ttl.Subpage_spr, root_ttl_bry, lang_key);
Xoa_ttl lang_ttl = Xoa_ttl.Parse(wiki, ns_id, lang_ttl_bry);
byte[] lang_href = href_wtr.Build_to_bry(wiki, lang_ttl);
byte[] lang_title = Xoh_html_wtr.Ttl_to_title(lang_ttl.Full_txt_w_ttl_case());
byte[] lang_title = lang_ttl.Full_txt_w_ttl_case();
Bry_fmtr fmtr = null;
if (Bry_.Eq(lang_key, Xol_lang_itm_.Key_en)) fmtr = Xop_languages_xnde.fmtr_itm_english;
else if (Bry_.Eq(lang_key, cur_lang)) fmtr = Xop_languages_xnde.fmtr_itm_selected;

View File

@@ -24,10 +24,10 @@ public class Xop_translate_xnde implements Xox_xnde {
public void Xtn_parse(Xowe_wiki wiki, Xop_ctx ctx, Xop_root_tkn root, byte[] src, Xop_xnde_tkn xnde) {
byte[] translate_src = Bry_.Mid(src, xnde.Tag_open_end(), xnde.Tag_close_bgn());
translate_src = Bry_.Trim(translate_src, 0, translate_src.length);
Xop_ctx sub_ctx = Xop_ctx.new_sub_(ctx);
Xop_ctx sub_ctx = Xop_ctx.New__sub__reuse_page(ctx);
xtn_root = wiki.Parser_mgr().Main().Parse_text_to_wdom_old_ctx(sub_ctx, translate_src, true);
}
public void Xtn_write(Bry_bfr bfr, Xoae_app app, Xop_ctx ctx, Xoh_html_wtr html_wtr, Xoh_wtr_ctx hctx, Xop_xnde_tkn xnde, byte[] src) {
html_wtr.Write_tkn(bfr, ctx, hctx, xtn_root.Root_src(), xnde, Xoh_html_wtr.Sub_idx_null, xtn_root);
public void Xtn_write(Bry_bfr bfr, Xoae_app app, Xop_ctx ctx, Xoh_html_wtr html_wtr, Xoh_wtr_ctx hctx, Xoae_page wpg, Xop_xnde_tkn xnde, byte[] src) {
html_wtr.Write_tkn_to_html(bfr, ctx, hctx, xtn_root.Root_src(), xnde, Xoh_html_wtr.Sub_idx_null, xtn_root);
}
}

View File

@@ -28,9 +28,9 @@ public class Xop_tvar_lxr implements Xop_lxr {
int rhs_end = Bry_find_.Find_fwd(src, Byte_ascii.Gt, cur_pos); if (rhs_end == Bry_find_.Not_found) return ctx.Lxr_make_txt_(cur_pos);
int lhs_bgn = Bry_find_.Find_fwd(src, Close_nde , rhs_end); if (lhs_bgn == Bry_find_.Not_found) return ctx.Lxr_make_txt_(cur_pos);
byte[] body = Bry_.Mid(src, rhs_end + Int_.Const_position_after_char, lhs_bgn);
Xop_ctx sub_ctx = Xop_ctx.new_sub_(ctx);
Xop_ctx sub_ctx = Xop_ctx.New__sub__reuse_page(ctx);
Xop_root_tkn sub_root = tkn_mkr.Root(body);
body = ctx.Wiki().Parser_mgr().Main().Parse_text_to_wtxt(sub_root, sub_ctx, tkn_mkr, body); // NOTE: must parse inner text for templates; EX:<tvar|a>{{B}}</>; PAGE:mw:Download; DATE:2014-04-27
body = ctx.Wiki().Parser_mgr().Main().Expand_tmpl(sub_root, sub_ctx, tkn_mkr, body); // NOTE: must parse inner text for templates; EX:<tvar|a>{{B}}</>; PAGE:mw:Download; DATE:2014-04-27
int end_pos = lhs_bgn + Close_nde.length;
ctx.Subs_add(root, tkn_mkr.Tvar(bgn_pos, end_pos, cur_pos, rhs_end, rhs_end + Int_.Const_position_after_char, lhs_bgn, body));
return end_pos;

View File

@@ -18,6 +18,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
package gplx.xowa.xtns.wdatas.hwtrs; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.wdatas.*;
import gplx.core.brys.fmtrs.*;
import gplx.langs.htmls.encoders.*;
import gplx.xowa.wikis.pages.wtxts.*;
class Wdata_fmtr__toc_div implements gplx.core.brys.Bfr_arg {
private final List_adp itms = List_adp_.New(); private final Wdata_fmtr__toc_itm fmtr_itm = new Wdata_fmtr__toc_itm();
private byte[] tbl_hdr;
@@ -26,7 +27,7 @@ class Wdata_fmtr__toc_div implements gplx.core.brys.Bfr_arg {
public void Add(Wdata_toc_data toc_data) {itms.Add(toc_data);}
public void Bfr_arg__add(Bry_bfr bfr) {
int itms_len = itms.Count();
if (itms_len <= gplx.xowa.htmls.tocs.Xow_hdr_mgr.Toc_min) return;
if (itms_len <= Xopg_toc_mgr.Hdrs_min) return;
fmtr_itm.Init_by_itm((Wdata_toc_data[])itms.To_ary_and_clear(Wdata_toc_data.class));
fmtr.Bld_bfr_many(bfr, tbl_hdr, fmtr_itm);
}

View File

@@ -44,7 +44,7 @@ class Wdata_pf_property_data_fxt {
Xop_tkn_mkr tkn_mkr = app.Parser_mgr().Tkn_mkr();
Wdata_pf_property pfunc = new Wdata_pf_property();
Xop_root_tkn root = tkn_mkr.Root(raw_bry);
wiki.Parser_mgr().Main().Parse_text_to_wtxt(root, ctx, tkn_mkr, raw_bry);
wiki.Parser_mgr().Main().Expand_tmpl(root, ctx, tkn_mkr, raw_bry);
Xot_invk tkn = (Xot_invk)root.Subs_get(0);
this.actl = Wdata_pf_property_data.Parse(ctx, raw_bry, Xot_invk_mock.Null, tkn, pfunc);
return this;

View File

@@ -92,10 +92,10 @@ public class Random_selection_xnde implements Xox_xnde, Mwh_atr_itm_owner2 {
if (!Bry_.Eq(atr_before, Bry_.Empty)) option_bry = Bry_.Add(atr_before, option_bry);
if (!Bry_.Eq(atr_after , Bry_.Empty)) option_bry = Bry_.Add(option_bry, atr_after);
this.val = Xop_parser_.Parse_text_to_html(wiki, ctx.Page(), ctx.Page().Ttl(), option_bry, false);
this.val = Xop_parser_.Parse_text_to_html(wiki, ctx, ctx.Page(), ctx.Page().Ttl(), option_bry, false);
ctx.Para().Process_block__xnde(xnde.Tag(), Xop_xnde_tag.Block_end);
}
public void Xtn_write(Bry_bfr bfr, Xoae_app app, Xop_ctx ctx, Xoh_html_wtr html_wtr, Xoh_wtr_ctx hctx, Xop_xnde_tkn xnde, byte[] src) {
public void Xtn_write(Bry_bfr bfr, Xoae_app app, Xop_ctx ctx, Xoh_html_wtr html_wtr, Xoh_wtr_ctx hctx, Xoae_page wpg, Xop_xnde_tkn xnde, byte[] src) {
if (val != null) bfr.Add(val);
}
public static final byte Xatr__before = 0, Xatr__after = 1;

View File

@@ -46,7 +46,7 @@ public class Tabber_xnde implements Xox_xnde {
else {
tab_head = Bry_.Mid(tab_itm, 0, eq_pos);
tab_body = Bry_.Mid(tab_itm, eq_pos + 1, tab_itm_len);
tab_body = Xop_parser_.Parse_text_to_html(wiki, ctx.Page(), ctx.Page().Ttl(), tab_body, false);
tab_body = Xop_parser_.Parse_text_to_html(wiki, ctx, ctx.Page(), ctx.Page().Ttl(), tab_body, false);
}
tab_itms_list.Add(new Tabber_tab_itm(Bool_.N, tab_head, tab_body));
}
@@ -55,7 +55,7 @@ public class Tabber_xnde implements Xox_xnde {
ctx.Page().Html_data().Head_mgr().Itm__tabber().Enabled_y_();
ctx.Para().Process_block__xnde(xnde.Tag(), Xop_xnde_tag.Block_end);
}
public void Xtn_write(Bry_bfr bfr, Xoae_app app, Xop_ctx ctx, Xoh_html_wtr html_wtr, Xoh_wtr_ctx hctx, Xop_xnde_tkn xnde, byte[] src) {
public void Xtn_write(Bry_bfr bfr, Xoae_app app, Xop_ctx ctx, Xoh_html_wtr html_wtr, Xoh_wtr_ctx hctx, Xoae_page wpg, Xop_xnde_tkn xnde, byte[] src) {
if (tab_itms_ary != null) Tabber_tab_itm.Write(bfr, id, tab_itms_ary);
}

View File

@@ -52,7 +52,7 @@ public class Tabview_xnde implements Xox_xnde, Mwh_atr_itm_owner2 {
ctx.Page().Html_data().Head_mgr().Itm__tabber().Enabled_y_();
ctx.Para().Process_block__xnde(xnde.Tag(), Xop_xnde_tag.Block_end);
}
public void Xtn_write(Bry_bfr bfr, Xoae_app app, Xop_ctx ctx, Xoh_html_wtr html_wtr, Xoh_wtr_ctx hctx, Xop_xnde_tkn xnde, byte[] src) {
public void Xtn_write(Bry_bfr bfr, Xoae_app app, Xop_ctx ctx, Xoh_html_wtr html_wtr, Xoh_wtr_ctx hctx, Xoae_page wpg, Xop_xnde_tkn xnde, byte[] src) {
if (tab_itms_ary != null) Tabber_tab_itm.Write(bfr, id, tab_itms_ary);
// write html
//Bry_bfr bfr = Bry_bfr_.New();
@@ -125,7 +125,7 @@ class Tabview_tab_itm {
gplx.xowa.wikis.caches.Xow_page_cache_itm page_itm = wiki.Cache_mgr().Page_cache().Get_or_load_as_itm(page_ttl);
if (page_itm == null) return null;
page_body = page_itm.Wtxt__redirect_or_direct();
page_body = Xop_parser_.Parse_text_to_html(wiki, ctx.Page(), ctx.Page().Ttl(), page_body, false);
page_body = Xop_parser_.Parse_text_to_html(wiki, ctx, ctx.Page(), ctx.Page().Ttl(), page_body, false);
break;
case 1:
tab_name = args_itm;

View File

@@ -33,11 +33,11 @@ public class Xop_xowa_cmd implements Xox_xnde {
xtn_src = Bry_.new_u8(Object_.Xto_str_strict_or_null_mark(rslt));
}
Xop_tkn_mkr tkn_mkr = ctx.Tkn_mkr();
Xop_ctx sub_ctx = Xop_ctx.new_sub_(ctx);
Xop_ctx sub_ctx = Xop_ctx.New__sub__reuse_page(ctx);
Xop_root_tkn sub_root = tkn_mkr.Root(xtn_src);
xtn_html = wiki.Parser_mgr().Main().Parse_text_to_wtxt(sub_root, sub_ctx, ctx.Tkn_mkr(), xtn_src);
xtn_html = wiki.Parser_mgr().Main().Expand_tmpl(sub_root, sub_ctx, ctx.Tkn_mkr(), xtn_src);
}
public void Xtn_write(Bry_bfr bfr, Xoae_app app, Xop_ctx ctx, Xoh_html_wtr html_wtr, Xoh_wtr_ctx hctx, Xop_xnde_tkn xnde, byte[] src) {
public void Xtn_write(Bry_bfr bfr, Xoae_app app, Xop_ctx ctx, Xoh_html_wtr html_wtr, Xoh_wtr_ctx hctx, Xoae_page wpg, Xop_xnde_tkn xnde, byte[] src) {
bfr.Add(xtn_html);
//throw Err_.new_unimplemented_w_msg("xowa_cmd.xtn_write should not be called");
}

View File

@@ -50,7 +50,7 @@ public class Xox_xowa_html_cmd implements Xox_xnde, Mwh_atr_itm_owner2 {
Xopg_tag_itm tag_itm = Bry_.Eq(name, Gfh_tag_.Bry__style) ? Xopg_tag_itm.New_css_code(raw) : Xopg_tag_itm.New_js_code(raw);
tag_mgr.Add(tag_itm);
}
public void Xtn_write(Bry_bfr bfr, Xoae_app app, Xop_ctx ctx, Xoh_html_wtr html_wtr, Xoh_wtr_ctx hctx, Xop_xnde_tkn xnde, byte[] src) {}
public void Xtn_write(Bry_bfr bfr, Xoae_app app, Xop_ctx ctx, Xoh_html_wtr html_wtr, Xoh_wtr_ctx hctx, Xoae_page wpg, Xop_xnde_tkn xnde, byte[] src) {}
public Xop_root_tkn Xtn_root() {throw Err_.new_unimplemented_w_msg("xowa_html_cmd.xtn_root should not be called");}
public byte[] Xtn_html() {throw Err_.new_unimplemented_w_msg("xowa_html_cmd.xtn_html should not be called");}

View File

@@ -50,8 +50,8 @@ class Xox_xowa_html_cmd_fxt {
byte[] raw_bry = Bry_.new_u8(raw);
Xop_root_tkn root = fxt.Exec_parse_page_all_as_root(raw_bry);
fxt.Page().Root_(root);
html_mgr.Html_wtr().Write_all(bfr, fxt.Ctx(), raw_bry, root);
byte[] actl = html_mgr.Page_wtr_mgr().Wkr(Xopg_page_.Tid_read).Write_page(fxt.Page(), fxt.Ctx(), bfr);
Tfds.Eq_str_lines(expd, String_.new_u8(actl));
html_mgr.Html_wtr().Write_doc(bfr, fxt.Ctx(), raw_bry, root);
html_mgr.Page_wtr_mgr().Wkr(Xopg_page_.Tid_read).Write_page(bfr, fxt.Page(), fxt.Ctx());
Tfds.Eq_str_lines(expd, bfr.To_str_and_clear());
}
}