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:
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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) {}
|
||||
}
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
|
||||
@@ -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];
|
||||
|
||||
@@ -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;
|
||||
|
||||
59
400_xowa/src/gplx/xowa/xtns/cites/Xoh_ref_list_fmtr.java
Normal file
59
400_xowa/src/gplx/xowa/xtns/cites/Xoh_ref_list_fmtr.java
Normal 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
|
||||
);
|
||||
}
|
||||
}
|
||||
@@ -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;
|
||||
|
||||
@@ -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();
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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));}
|
||||
}
|
||||
|
||||
@@ -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();
|
||||
|
||||
@@ -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")
|
||||
;
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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) {}
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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");
|
||||
|
||||
@@ -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();
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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)) {
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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 "'"; 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);
|
||||
|
||||
@@ -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>"
|
||||
|
||||
@@ -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")
|
||||
;
|
||||
}
|
||||
|
||||
@@ -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}}"
|
||||
|
||||
@@ -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:
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
|
||||
@@ -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");
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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();
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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) {}
|
||||
}
|
||||
|
||||
@@ -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) {}
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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;}
|
||||
|
||||
@@ -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());
|
||||
|
||||
@@ -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");
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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");
|
||||
}
|
||||
|
||||
@@ -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");}
|
||||
|
||||
@@ -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());
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user