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

v2.10.3.1

This commit is contained in:
gnosygnu
2015-10-18 22:17:57 -04:00
parent 8e18af05b6
commit 4f43f51b18
1935 changed files with 12500 additions and 12889 deletions

View File

@@ -20,7 +20,7 @@ import gplx.core.primitives.*; import gplx.core.btries.*;
import gplx.xowa.xtns.cite.*; import gplx.xowa.xtns.imaps.*; import gplx.xowa.xtns.relatedSites.*; import gplx.xowa.xtns.proofreadPage.*; import gplx.xowa.xtns.wdatas.*;
import gplx.xowa.xtns.insiders.*; import gplx.xowa.xtns.indicators.*;
public class Xow_xtn_mgr implements GfoInvkAble {
private Ordered_hash regy = Ordered_hash_.new_bry_();
private Ordered_hash regy = Ordered_hash_.New_bry();
public int Count() {return regy.Count();}
public Cite_xtn_mgr Xtn_cite() {return xtn_cite;} private Cite_xtn_mgr xtn_cite;
public Imap_xtn_mgr Xtn_imap() {return xtn_imap;} private Imap_xtn_mgr xtn_imap;

View File

@@ -16,7 +16,7 @@ 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; import gplx.*; import gplx.xowa.*;
import gplx.xowa.bldrs.langs.*; import gplx.xowa.html.*;
import gplx.xowa.langs.bldrs.*; import gplx.xowa.htmls.*;
import gplx.xowa.parsers.*; import gplx.xowa.parsers.xndes.*;
public abstract class Xox_mgr_base implements Xox_mgr {
public Xox_mgr_base() {
@@ -34,15 +34,16 @@ public abstract class Xox_mgr_base implements Xox_mgr {
@gplx.Virtual public void Xtn_init_by_app(Xoae_app app) {}
@gplx.Virtual public void Xtn_init_by_wiki(Xowe_wiki wiki) {}
@gplx.Virtual public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) {
if (ctx.Match(k, Invk_enabled)) return Yn.Xto_str(enabled);
if (ctx.Match(k, Invk_enabled)) return Yn.To_str(enabled);
else if (ctx.Match(k, Invk_enabled_)) {enabled = m.ReadYn("v"); enabled_manually = true;}
else return GfoInvkAble_.Rv_unhandled;
return this;
}
private static final String Invk_enabled = "enabled", Invk_enabled_ = "enabled_";
public static void Xtn_write_escape(Xoae_app app, Bry_bfr bfr, byte[] src, Xop_xnde_tkn xnde) {Xtn_write_escape(app, bfr, src, xnde.Src_bgn(), xnde.Src_end());}
public static void Xtn_write_escape(Xoae_app app, Bry_bfr bfr, byte[] src) {Xtn_write_escape(app, bfr, src, 0, src.length);}
public static void Xtn_write_escape(Xoae_app app, Bry_bfr bfr, byte[] src, Xop_xnde_tkn xnde) {Xtn_write_escape(app, bfr, src, xnde.Src_bgn(), xnde.Src_end());}
public static void Xtn_write_escape(Xoae_app app, Bry_bfr bfr, byte[] src) {Xtn_write_escape(app, bfr, src, 0, src.length);}
public static void Xtn_write_escape(Xoae_app app, Bry_bfr bfr, byte[] src, int bgn, int end) {Xoh_html_wtr_escaper.Escape(app.Parser_amp_mgr(), bfr, src, bgn, end, true, false);}
public static void Xtn_write_escape_pre(Xoae_app app, Bry_bfr bfr, byte[] src, int bgn, int end){Xoh_html_wtr_escaper.Escape(app.Parser_amp_mgr(), bfr, src, bgn, end, false, false);}
public static void Xtn_write_unsupported(Xoae_app app, Xop_ctx ctx, Bry_bfr bfr, byte[] src, Xop_xnde_tkn xnde, byte parse_content_tid) {
bfr.Add(Xowa_not_implemented);
Xox_mgr_base.Xtn_write_escape(app, bfr, src, xnde.Tag_open_bgn(), xnde.Tag_open_end());

View File

@@ -16,7 +16,7 @@ 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; import gplx.*; import gplx.xowa.*;
import gplx.xowa.html.*;
import gplx.xowa.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);

View File

@@ -0,0 +1,30 @@
/*
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; import gplx.*; import gplx.xowa.*;
import gplx.xowa.parsers.htmls.*; import gplx.xowa.parsers.xndes.*;
public class Xox_xnde_ {
public static Mwh_atr_itm[] Xatr__set(Xowe_wiki wiki, Mwh_atr_itm_owner owner, Hash_adp_bry hash, byte[] src, Xop_xnde_tkn xnde) {
Mwh_atr_itm[] rv = wiki.Appe().Parser_mgr().Xnde__parse_atrs(src, xnde.Atrs_bgn(), xnde.Atrs_end());
int len = rv.length;
for (int i = 0; i < len; ++i) {
Mwh_atr_itm xatr = rv[i]; if (xatr.Invalid()) continue;
owner.Xatr__set(wiki, src, xatr, hash.Get_by_bry(xatr.Key_bry()));
}
return rv;
}
}

View File

@@ -16,10 +16,9 @@ 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.categoryList; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*;
import gplx.xowa.html.*;
import gplx.xowa.parsers.*; import gplx.xowa.parsers.xndes.*;
public class Xtn_categorylist_nde implements Xox_xnde, Xop_xnde_atr_parser {
import gplx.xowa.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 Xatr_parse(Xowe_wiki wiki, byte[] src, Xop_xatr_itm xatr, Object xatr_key_obj) {}
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) {}
}

View File

@@ -16,7 +16,7 @@ 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.cite; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*;
import gplx.xowa.html.*;
import gplx.xowa.htmls.*;
import gplx.xowa.parsers.*; import gplx.xowa.parsers.xndes.*;
public class Ref_html_wtr {
public Ref_html_wtr(Xowe_wiki wiki) {
@@ -123,14 +123,14 @@ class Xoh_ref_list_fmtr implements Bry_fmtr_arg {
return itm; // no itm has text; TODO:WARN
}
private boolean HasTxt(Ref_nde v) {return v.Body() != null && v.Body().Root_src().length > 0;}
public void XferAry(Bry_bfr trg, int idx) {
public void Fmt__do(Bry_bfr bfr) {
int related_len = itm.Related_len();
Bry_fmtr itm_fmtr = cfg.Grp_html_list();
Fmt(itm_fmtr, wiki, trg, itm);
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, trg, link_itm);
Fmt(itm_fmtr, wiki, bfr, link_itm);
}
}
private void Fmt(Bry_fmtr itm_fmtr, Xowe_wiki wiki, Bry_bfr trg, Ref_nde itm) {

View File

@@ -17,9 +17,9 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package gplx.xowa.xtns.cite; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*;
import gplx.core.primitives.*;
import gplx.xowa.html.*;
import gplx.xowa.parsers.*; import gplx.xowa.parsers.xndes.*;
public class Ref_nde implements Xox_xnde, Xop_xnde_atr_parser {
import gplx.xowa.htmls.*;
import gplx.xowa.parsers.*; import gplx.xowa.parsers.xndes.*; import gplx.xowa.parsers.htmls.*;
public class Ref_nde implements Xox_xnde, Mwh_atr_itm_owner {
public byte[] Name() {return name;} public Ref_nde Name_(byte[] v) {name = v; return this;} private byte[] name = Bry_.Empty;
public byte[] Group() {return group;} private byte[] group = Bry_.Empty;
public byte[] Follow() {return follow;} private byte[] follow = Bry_.Empty;
@@ -32,18 +32,18 @@ public class Ref_nde implements Xox_xnde, Xop_xnde_atr_parser {
public Xop_xnde_tkn Xnde() {return xnde;} private Xop_xnde_tkn xnde;
public Xop_root_tkn Body() {return body;} private Xop_root_tkn body;
public boolean Exists_in_lnki_title() {return exists_in_lnki_title;} public Ref_nde Exists_in_lnki_title_(boolean v) {exists_in_lnki_title = v; return this;} private boolean exists_in_lnki_title;
public void Xatr_parse(Xowe_wiki wiki, byte[] src, Xop_xatr_itm xatr, Object xatr_key_obj) {
if (xatr_key_obj == null) return;
Byte_obj_val xatr_key = (Byte_obj_val)xatr_key_obj;
switch (xatr_key.Val()) {
case Xatr_id_name: name = wiki.Appe().Sanitizer().Escape_id(xatr.Val_as_bry(src)); break;
case Xatr_id_follow: follow = xatr.Val_as_bry(src); break;
case Xatr_id_group: group = xatr.Val_as_bry(src); break;
public void Xatr__set(Xowe_wiki wiki, byte[] src, Mwh_atr_itm xatr, Object xatr_id_obj) {
if (xatr_id_obj == null) return;
Byte_obj_val xatr_id = (Byte_obj_val)xatr_id_obj;
switch (xatr_id.Val()) {
case Xatr_id_name: name = wiki.Appe().Sanitizer().Escape_id(xatr.Val_as_bry()); break;
case Xatr_id_follow: follow = xatr.Val_as_bry(); break;
case Xatr_id_group: group = xatr.Val_as_bry(); break;
}
}
public void Xtn_parse(Xowe_wiki wiki, Xop_ctx ctx, Xop_root_tkn root, byte[] src, Xop_xnde_tkn xnde) {
if (ctx.Tid_is_popup()) return;
Xop_xatr_itm.Xatr_parse(wiki.Appe(), this, xatrs_hash, wiki, src, xnde);
Xox_xnde_.Xatr__set(wiki, this, xatrs_hash, src, xnde);
if (xnde.CloseMode() == Xop_xnde_tkn.CloseMode_pair)
body = wiki.Parser_mgr().Main().Parse_text_to_wdom_old_ctx(ctx, Bry_.Mid(src, xnde.Tag_open_end(), xnde.Tag_close_bgn()), false);
byte[] references_group = ctx.References_group(); // set by <references>
@@ -72,8 +72,8 @@ public class Ref_nde implements Xox_xnde, Xop_xnde_atr_parser {
related[related_len] = itm;
related_len = new_len;
}
public static final byte Xatr_id_name = 0, Xatr_id_group = 1, Xatr_id_follow = 2;
public static final int Idx_minor_follow = -2;
public static final byte Xatr_id_name = 0, Xatr_id_group = 1, Xatr_id_follow = 2;
private static final Hash_adp_bry xatrs_hash = Hash_adp_bry.ci_a7()
.Add_str_obj("name", Byte_obj_val.new_(Ref_nde.Xatr_id_name))
.Add_str_obj("group", Byte_obj_val.new_(Ref_nde.Xatr_id_group))

View File

@@ -17,16 +17,16 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package gplx.xowa.xtns.cite; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*;
import gplx.core.primitives.*;
import gplx.xowa.html.*;
import gplx.xowa.parsers.*; import gplx.xowa.parsers.xndes.*;
public class References_nde implements Xox_xnde, Xop_xnde_atr_parser {
import gplx.xowa.htmls.*;
import gplx.xowa.parsers.*; import gplx.xowa.parsers.xndes.*; import gplx.xowa.parsers.htmls.*;
public class References_nde implements Xox_xnde, Mwh_atr_itm_owner {
public byte[] Group() {return group;} public References_nde Group_(byte[] v) {group = v; return this;} private byte[] group = Bry_.Empty;
public int List_idx() {return list_idx;} public References_nde List_idx_(int v) {list_idx = v; return this;} private int list_idx;
public void Xatr_parse(Xowe_wiki wiki, byte[] src, Xop_xatr_itm xatr, Object xatr_key_obj) {
if (xatr_key_obj == null) return;
Byte_obj_val xatr_key = (Byte_obj_val)xatr_key_obj;
switch (xatr_key.Val()) {
case Xatr_id_group: group = xatr.Val_as_bry(src); break;
public void Xatr__set(Xowe_wiki wiki, byte[] src, Mwh_atr_itm xatr, Object xatr_id_obj) {
if (xatr_id_obj == null) return;
Byte_obj_val xatr_id = (Byte_obj_val)xatr_id_obj;
switch (xatr_id.Val()) {
case Xatr_id_group: group = xatr.Val_as_bry(); break;
}
}
public void Xtn_parse(Xowe_wiki wiki, Xop_ctx ctx, Xop_root_tkn root, byte[] src, Xop_xnde_tkn xnde) {
@@ -34,7 +34,7 @@ public class References_nde implements Xox_xnde, Xop_xnde_atr_parser {
Ref_itm_mgr ref_mgr = ctx.Cur_page().Ref_mgr();
if (ref_mgr.References__recursing()) return; // skip nested <references> else refs will be lost; EX:"<references><references/></references>"; PAGE:en.w:Hwair; DATE:2014-06-27
ctx.Para().Process_block__bgn_n__end_y(Xop_xnde_tag_.Tag_div); // xnde generates <block_node>; <references> -> <ol>; close any blocks; PAGE:fr.w:Heidi_(roman); DATE:2014-02-17
Xop_xatr_itm.Xatr_parse(wiki.Appe(), this, xatrs_hash, wiki, src, xnde);
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;

View File

@@ -0,0 +1,47 @@
/*
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.cldrs; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*;
import gplx.dbs.*;
class Cldr_lang_tbl implements RlsAble {
private final String tbl_name = "cldr_lang"; private final Db_meta_fld_list flds = Db_meta_fld_list.new_();
private final String fld_cldr_code, fld_lang_code, fld_lang_name;
private final Db_conn conn; private Db_stmt stmt_select, stmt_insert;
public Cldr_lang_tbl(Db_conn conn) {
this.conn = conn;
this.fld_cldr_code = flds.Add_str("cldr_code", 32);
this.fld_lang_code = flds.Add_str("lang_code", 32);
this.fld_lang_name = flds.Add_str("lang_name", 2048);
conn.Rls_reg(this);
}
public void Create_tbl() {conn.Ddl_create_tbl(Db_meta_tbl.new_(tbl_name, flds, Db_meta_idx.new_unique_by_tbl(tbl_name, "main", fld_cldr_code, fld_lang_code)));}
public void Insert_bgn() {conn.Txn_bgn("cldr_lang__inser"); stmt_insert = conn.Stmt_insert(tbl_name, flds);}
public void Insert_end() {conn.Txn_end(); stmt_insert = Db_stmt_.Rls(stmt_insert);}
public void Insert_cmd_by_batch(byte[] cldr_code, byte[] lang_code, byte[] lang_name) {
stmt_insert.Clear().Val_bry_as_str(fld_cldr_code, cldr_code).Val_bry_as_str(fld_lang_code, lang_code).Val_bry_as_str(fld_lang_name, lang_name).Exec_insert();
}
public byte[] Select(byte[] cldr_code, byte[] lang_code) {
if (stmt_select == null) stmt_select = conn.Stmt_select(tbl_name, flds, fld_cldr_code, fld_lang_code);
Db_rdr rdr = stmt_select.Clear().Val_bry_as_str(fld_cldr_code, cldr_code).Val_bry_as_str(fld_lang_code, lang_code).Exec_select__rls_manual();
try {return (byte[])rdr.Read_bry(fld_lang_name);}
finally {rdr.Rls();}
}
public void Rls() {
stmt_select = Db_stmt_.Rls(stmt_select);
stmt_insert = Db_stmt_.Rls(stmt_insert);
}
}

View File

@@ -17,9 +17,9 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package gplx.xowa.xtns.dynamicPageList; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*;
import gplx.core.primitives.*;
import gplx.langs.htmls.*; import gplx.xowa.html.*;
import gplx.langs.htmls.*; import gplx.xowa.htmls.*;
import gplx.xowa.parsers.*; import gplx.xowa.parsers.xndes.*;
import gplx.xowa.nss.*;
import gplx.xowa.wikis.nss.*;
class Dpl_itm {
public List_adp Ctg_includes() {return ctg_includes;} private List_adp ctg_includes;
public List_adp Ctg_excludes() {return ctg_excludes;} private List_adp ctg_excludes;
@@ -118,7 +118,7 @@ class Dpl_itm {
case Dpl_itm_keys.Key_gallerycaption: gallery_caption = val; break; // FUTURE: parse for {{int:}}?
case Dpl_itm_keys.Key_galleryshowfilesize: gallery_filesize = Dpl_itm_keys.Parse_as_bool(val, true); break;
case Dpl_itm_keys.Key_galleryshowfilename: gallery_filename = Dpl_itm_keys.Parse_as_bool(val, true); break;
case Dpl_itm_keys.Key_ordermethod: sort_tid = Dpl_sort.Parse(val); break;
case Dpl_itm_keys.Key_ordermethod: sort_tid = Dpl_sort.Parse_ordermethod(val); break;
}
}
private void Parse_ctg_date(byte[] val) {

View File

@@ -21,23 +21,23 @@ class Dpl_sort {
public static byte Parse_as_bool_byte(byte[] bry) {
byte val = Dpl_itm_keys.Parse(bry, Dpl_itm_keys.Key_null);
switch (val) {
case Dpl_itm_keys.Key_ascending: return Bool_.Y_byte;
case Dpl_itm_keys.Key_descending: return Bool_.N_byte;
case Dpl_itm_keys.Key_null:
default: return Bool_.__byte;
case Dpl_itm_keys.Key_ascending: return Bool_.Y_byte;
case Dpl_itm_keys.Key_descending: return Bool_.N_byte;
case Dpl_itm_keys.Key_null:
default: return Bool_.__byte;
}
}
public static byte Parse(byte[] bry) {
public static byte Parse_ordermethod(byte[] bry) {
byte key = Dpl_itm_keys.Parse(bry, Dpl_itm_keys.Key_categoryadd);
switch (key) {
case Dpl_itm_keys.Key_lastedit: return Tid_lastedit;
case Dpl_itm_keys.Key_length: return Tid_length;
case Dpl_itm_keys.Key_created: return Tid_created;
case Dpl_itm_keys.Key_sortkey: return Tid_sortkey;
case Dpl_itm_keys.Key_categorysortkey: return Tid_categorysortkey;
case Dpl_itm_keys.Key_popularity: return Tid_popularity; // FUTURE: default to categoryadd if counters disabled
case Dpl_itm_keys.Key_categoryadd: return Tid_categoryadd;
default: throw Err_.new_unhandled(key);
case Dpl_itm_keys.Key_lastedit: return Tid_lastedit;
case Dpl_itm_keys.Key_length: return Tid_length;
case Dpl_itm_keys.Key_created: return Tid_created;
case Dpl_itm_keys.Key_sortkey: return Tid_sortkey;
case Dpl_itm_keys.Key_categorysortkey: return Tid_categorysortkey;
case Dpl_itm_keys.Key_popularity: return Tid_popularity; // FUTURE: default to categoryadd if counters disabled
case Dpl_itm_keys.Key_categoryadd: return Tid_categoryadd;
default: return Tid_categoryadd; // NOTE: "ordermethod=ascending" will return Dpl_itm_keys.Key_ascending; default to Tid_categoryadd; PAGE:sr.d:Викиречник:Википројекат_1001_арапска_реч/Списак_уноса; DATE:2015-10-16
}
}
}

View File

@@ -17,12 +17,12 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package gplx.xowa.xtns.dynamicPageList; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*;
import gplx.core.primitives.*;
import gplx.xowa.html.*;
import gplx.xowa.dbs.*; import gplx.xowa.ctgs.*; import gplx.xowa.wikis.data.tbls.*;
import gplx.xowa.parsers.*; import gplx.xowa.parsers.xndes.*;
public class Dpl_xnde implements Xox_xnde, Xop_xnde_atr_parser {
import gplx.xowa.htmls.*;
import gplx.xowa.wikis.dbs.*; import gplx.xowa.wikis.ctgs.*; import gplx.xowa.wikis.data.tbls.*;
import gplx.xowa.parsers.*; import gplx.xowa.parsers.xndes.*; import gplx.xowa.parsers.htmls.*;
public class Dpl_xnde implements Xox_xnde {
private Dpl_itm itm = new Dpl_itm(); private List_adp pages = List_adp_.new_();
public void Xatr_parse(Xowe_wiki wiki, byte[] src, Xop_xatr_itm xatr, Object xatr_key_obj) {} // NOTE: <dynamicPageList> has no attributes
public void Xatr__set(Xowe_wiki wiki, byte[] src, Mwh_atr_itm xatr, Object xatr_id_obj) {} // NOTE: <dynamicPageList> has no attributes
public void Xtn_parse(Xowe_wiki wiki, Xop_ctx ctx, Xop_root_tkn root, byte[] src, Xop_xnde_tkn xnde) {
itm.Parse(wiki, ctx, ctx.Cur_page().Ttl().Full_txt(), src, xnde);
Dpl_page_finder.Find_pages(pages, wiki, itm);
@@ -76,13 +76,13 @@ class Dpl_page_finder {
rv.Clear();
List_adp includes = itm.Ctg_includes(); if (includes == null) return;
int includes_len = includes.Count();
Ordered_hash old_regy = Ordered_hash_.new_(), new_regy = Ordered_hash_.new_(), cur_regy = Ordered_hash_.new_();
Ordered_hash old_regy = Ordered_hash_.New(), new_regy = Ordered_hash_.New(), cur_regy = Ordered_hash_.New();
Xodb_load_mgr load_mgr = wiki.Db_mgr().Load_mgr();
Xowd_page_itm tmp_page = new Xowd_page_itm();
Int_obj_ref tmp_id = Int_obj_ref.zero_();
List_adp del_list = List_adp_.new_();
int ns_filter = itm.Ns_filter();
Ordered_hash exclude_pages = Ordered_hash_.new_();
Ordered_hash exclude_pages = Ordered_hash_.New();
Find_excludes(exclude_pages, load_mgr, tmp_page, tmp_id, itm.Ctg_excludes());
for (int i = 0; i < includes_len; i++) { // loop over includes
@@ -92,7 +92,7 @@ class Dpl_page_finder {
Del_old_pages_not_in_cur(i, tmp_id, old_regy, cur_regy, del_list);
Add_cur_pages_also_in_old(i, tmp_id, old_regy, cur_regy, new_regy, exclude_pages, ns_filter);
old_regy = new_regy;
new_regy = Ordered_hash_.new_();
new_regy = Ordered_hash_.New();
}
int pages_len = old_regy.Count();
for (int i = 0; i < pages_len; i++) { // loop over old and create pages

View File

@@ -16,7 +16,7 @@ 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.dynamicPageList; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*;
import org.junit.*; import gplx.core.strings.*; import gplx.xowa.cfgs.*; import gplx.xowa.nss.*;
import org.junit.*; import gplx.core.strings.*; import gplx.xowa.apps.cfgs.*; import gplx.xowa.wikis.nss.*;
public class Dpl_xnde_tst {
private Dpl_xnde_fxt fxt = new Dpl_xnde_fxt();
@Before public void init() {fxt.Clear();}
@@ -173,6 +173,16 @@ public class Dpl_xnde_tst {
fxt.Fxt().Test_parse_page_wiki_str("<dynamicpagelist>category=a</dynamicpagelist>", "No pages meet these criteria.");
fxt.Wiki().Cfg_parser().Xtns().Itm_pages().Reset(); // must reset to clear cached invalid ns_page for next tests
}
@Test public void Ordermethod__invalid() { // PURPOSE: do not fail if ordermethod is invalid; PAGE:sr.d:Викиречник:Википројекат_1001_арапска_реч/Списак_уноса; DATE:2015-10-16
fxt.Ctg_create("Ctg_0", "A", "B", "C");
fxt.Ul_pages(String_.Concat_lines_nl_skip_last
( "<DynamicPageList>"
, "category=Ctg_0"
, "ordermethod=ascending" // should not throw error
, "ordermethod=sortkey"
, "</DynamicPageList>")
, fxt.Ul(Itm_html_null, "A", "B", "C"));
}
private static final String Itm_html_null = null;
}
class Dpl_page_mok {
@@ -194,7 +204,7 @@ class Dpl_xnde_fxt {
fxt.Wiki().Xtn_mgr().Xtn_proofread().Enabled_y_();
fxt.Wiki().Db_mgr().Load_mgr().Clear(); // must clear; otherwise fails b/c files get deleted, but wiki.data_mgr caches the Xowd_regy_mgr (the .reg file) in memory;
fxt.Wiki().Ns_mgr().Add_new(Xowc_xtn_pages.Ns_page_id_default, "Page").Add_new(Xowc_xtn_pages.Ns_index_id_default, "Index").Init();
Io_mgr.I.InitEngine_mem();
Io_mgr.Instance.InitEngine_mem();
}
public Xowe_wiki Wiki() {return fxt.Wiki();}
public Xop_fxt Fxt() {return fxt;}
@@ -234,7 +244,7 @@ class Dpl_xnde_fxt {
bfr.Add(">").Add(page).Add("</a></li>").Add_char_nl();
}
bfr.Add("</ul>").Add_char_nl();
return bfr.Xto_str_and_clear();
return bfr.To_str_and_clear();
}
public void Ul_pages(String raw, String expd) {
fxt.Test_parse_page_wiki_str(raw, expd);

View File

@@ -16,8 +16,8 @@ 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.flaggedRevs; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*;
import gplx.xowa.langs.*;
import gplx.xowa.html.*; import gplx.xowa.pages.skins.*; import gplx.xowa.xtns.pfuncs.*;
import gplx.xowa.langs.*; import gplx.xowa.langs.kwds.*;
import gplx.xowa.htmls.*; import gplx.xowa.wikis.pages.skins.*; import gplx.xowa.xtns.pfuncs.*;
import gplx.xowa.parsers.*; import gplx.xowa.parsers.tmpls.*;
public class Pages_using_pending_changes_func extends Pf_func_base {
@Override public int Id() {return Xol_kwd_grp_.Id_pagesUsingPendingChanges;}
@@ -25,5 +25,5 @@ public class Pages_using_pending_changes_func extends Pf_func_base {
@Override public void Func_evaluate(Xop_ctx ctx, byte[] src, Xot_invk caller, Xot_invk self, Bry_bfr bfr) {
bfr.Add_int_fixed(0, 1);
}
public static final Pages_using_pending_changes_func _ = new Pages_using_pending_changes_func(); Pages_using_pending_changes_func() {}
public static final Pages_using_pending_changes_func Instance = new Pages_using_pending_changes_func(); Pages_using_pending_changes_func() {}
}

View File

@@ -16,7 +16,7 @@ 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.flaggedRevs; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*;
import org.junit.*; import gplx.xowa.pages.skins.*;
import org.junit.*; import gplx.xowa.wikis.pages.skins.*;
public class Pages_using_pending_changes_func_tst {
@Before public void init() {fxt.Reset();} private Xop_fxt fxt = new Xop_fxt();
@Test public void Basic() {

View File

@@ -16,12 +16,12 @@ 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.flaggedRevs; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*;
import gplx.xowa.langs.*;
import gplx.xowa.html.*; import gplx.xowa.pages.skins.*; import gplx.xowa.xtns.pfuncs.*;
import gplx.xowa.langs.*; import gplx.xowa.langs.kwds.*;
import gplx.xowa.htmls.*; import gplx.xowa.wikis.pages.skins.*; import gplx.xowa.xtns.pfuncs.*;
import gplx.xowa.parsers.*; import gplx.xowa.parsers.tmpls.*;
public class Pending_change_level_func extends Pf_func_base {
@Override public int Id() {return Xol_kwd_grp_.Id_pendingChangeLevel;}
@Override public Pf_func New(int id, byte[] name) {return new Pending_change_level_func().Name_(name);}
@Override public void Func_evaluate(Xop_ctx ctx, byte[] src, Xot_invk caller, Xot_invk self, Bry_bfr bfr) {}// NOOP
public static final Pending_change_level_func _ = new Pending_change_level_func(); Pending_change_level_func() {}
public static final Pending_change_level_func Instance = new Pending_change_level_func(); Pending_change_level_func() {}
}

View File

@@ -16,7 +16,7 @@ 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.flaggedRevs; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*;
import org.junit.*; import gplx.xowa.pages.skins.*;
import org.junit.*; import gplx.xowa.wikis.pages.skins.*;
public class Pending_change_level_func_tst {
@Before public void init() {fxt.Reset();} private Xop_fxt fxt = new Xop_fxt();
@Test public void Basic() {

View File

@@ -16,14 +16,14 @@ 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.gallery; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*;
import gplx.langs.htmls.*; import gplx.xowa.html.hdumps.abrvs.*;
import gplx.langs.htmls.*; import gplx.xowa.htmls.hdumps.abrvs.*;
public interface Gallery_box_w_fmtr_arg extends Bry_fmtr_arg {
Gallery_box_w_fmtr_arg Init(int uid, int width);
}
class Gallery_box_w_fmtr_arg__basic implements Gallery_box_w_fmtr_arg {
private int width;
public Gallery_box_w_fmtr_arg Init(int uid, int width) {this.width = width; return this;}
public void XferAry(Bry_bfr bfr, int idx) {
public void Fmt__do(Bry_bfr bfr) {
bfr.Add(Style_bgn);
bfr.Add_int_variable(width);
bfr.Add(Style_end);
@@ -33,7 +33,7 @@ class Gallery_box_w_fmtr_arg__basic implements Gallery_box_w_fmtr_arg {
class Gallery_box_w_fmtr_arg__hdump implements Gallery_box_w_fmtr_arg {
private int uid;
public Gallery_box_w_fmtr_arg Init(int uid, int width) {this.uid = uid; return this;}
public void XferAry(Bry_bfr bfr, int idx) {
public void Fmt__do(Bry_bfr bfr) {
bfr.Add(Xohd_abrv_.Key_gallery_box_w);
bfr.Add_int_variable(uid);
bfr.Add_byte_apos();
@@ -45,7 +45,7 @@ interface Gallery_img_pad_fmtr_arg extends Bry_fmtr_arg {
class Gallery_img_pad_fmtr_arg__basic implements Gallery_img_pad_fmtr_arg {
private int vpad;
public Gallery_img_pad_fmtr_arg Init(int uid, int vpad) {this.vpad = vpad; return this;}
public void XferAry(Bry_bfr bfr, int idx) {
public void Fmt__do(Bry_bfr bfr) {
bfr.Add(Style_bgn);
bfr.Add_int_variable(vpad);
bfr.Add(Style_end);
@@ -55,7 +55,7 @@ class Gallery_img_pad_fmtr_arg__basic implements Gallery_img_pad_fmtr_arg {
class Gallery_img_pad_fmtr_arg__hdump implements Gallery_img_pad_fmtr_arg {
private int uid;
public Gallery_img_pad_fmtr_arg Init(int uid, int width) {this.uid = uid; return this;}
public void XferAry(Bry_bfr bfr, int idx) {
public void Fmt__do(Bry_bfr bfr) {
bfr.Add(Xohd_abrv_.Key_gallery_img_pad);
bfr.Add_int_variable(uid);
bfr.Add_byte_apos();

View File

@@ -16,7 +16,7 @@ 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.gallery; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*;
import gplx.xowa.files.*; import gplx.xowa.html.*; import gplx.xowa.html.lnkis.*; import gplx.xowa.html.hdumps.core.*; import gplx.xowa.html.hdumps.pages.*; import gplx.xowa.parsers.lnkis.*;
import gplx.xowa.files.*; import gplx.xowa.htmls.*; import gplx.xowa.htmls.lnkis.*; import gplx.xowa.htmls.hdumps.core.*; import gplx.xowa.htmls.hdumps.pages.*; import gplx.xowa.parsers.lnkis.*;
import gplx.xowa.parsers.*;
public class Gallery_html_wtr {
private final Xoh_arg_img_core img_core_fmtr_basic = new Xoh_arg_img_core__basic(), img_core_fmtr_hdump = new Xoh_arg_img_core__hdump();

View File

@@ -16,7 +16,7 @@ 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.gallery; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*;
import gplx.xowa.files.*; import gplx.xowa.files.gui.*; import gplx.xowa.gui.views.*; import gplx.xowa.html.*;
import gplx.xowa.files.*; import gplx.xowa.files.gui.*; import gplx.xowa.guis.views.*; import gplx.xowa.htmls.*;
import gplx.xowa.parsers.*; import gplx.xowa.parsers.lnkis.*;
public class Gallery_itm implements Js_img_wkr {
private Gallery_xnde xnde; private Xof_file_itm xfer_itm; private Xowe_wiki wiki; private Xop_ctx ctx; private byte[] src; private byte[] gallery_li_id_bry; private int gallery_itm_idx;
@@ -51,7 +51,7 @@ public class Gallery_itm implements Js_img_wkr {
try {
xfer_itm.Init_at_gallery_end(html_w, html_h, html_view_url, html_orig_url);
gallery_mgr.Write_html_itm(bfr, tmp_bfr, wiki.Appe(), wiki, ctx.Cur_page(), ctx, wiki.Html_mgr().Html_wtr(), Xoh_wtr_ctx.Basic, src, xnde, Bry_.Empty, gallery_itm_idx, xfer_itm, false);
String itm_html = bfr.Xto_str_and_clear();
String itm_html = bfr.To_str_and_clear();
js_wkr.Html_elem_replace_html(String_.new_u8(gallery_li_id_bry), itm_html);
if (gallery_itm_idx == xnde.Itms_len() - 1 && Gallery_mgr_base_.Mode_is_packed(xnde.Mode()))
page.Xtn_gallery_packed_exists_y_(); // set flag for packed_gallery; don't fire multiple times; PAGE:en.w:National_Sculpture_Museum_(Valladolid); DATE:2014-07-21

View File

@@ -17,8 +17,8 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package gplx.xowa.xtns.gallery; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*;
import gplx.core.primitives.*; import gplx.core.btries.*;
import gplx.xowa.langs.*;
import gplx.xowa.nss.*;
import gplx.xowa.langs.*; import gplx.xowa.langs.kwds.*;
import gplx.xowa.wikis.nss.*;
import gplx.xowa.parsers.*; import gplx.xowa.parsers.lnkis.*; import gplx.xowa.parsers.lnkis.redlinks.*; import gplx.xowa.parsers.tmpls.*;
import gplx.xowa.files.*;
public class Gallery_itm_parser {
@@ -31,7 +31,7 @@ public class Gallery_itm_parser {
private Bry_bfr caption_bfr = Bry_bfr.reset_(255); private int caption_bgn;
private Xop_ctx ctx;
public Gallery_itm_parser Init_by_wiki(Xowe_wiki wiki) {
this.wiki = wiki; Xol_lang lang = wiki.Lang();
this.wiki = wiki; Xol_lang_itm lang = wiki.Lang();
this.ctx = wiki.Parser_mgr().Ctx();
trie.Clear();
Byte_obj_ref tmp_bref = Byte_obj_ref.zero_();
@@ -52,7 +52,7 @@ public class Gallery_itm_parser {
byte cur_mode = Parse_itm();
if (cur_itm.Ttl() != null) {
if (caption_bfr.Len() > 0)
cur_itm.Caption_bry_(caption_bfr.Xto_bry_and_clear_and_trim());
cur_itm.Caption_bry_(caption_bfr.To_bry_and_clear_and_trim());
Make_lnki_tkn(mgr, xnde, src);
rv.Add(cur_itm);
cur_itm = new Gallery_itm();
@@ -226,9 +226,9 @@ public class Gallery_itm_parser {
}
private static final byte Fld_null = 0, Fld_ttl = 1, Fld_caption = 2, Fld_alt = 3, Fld_link = 4, Fld_page = 5;
private static final byte Mode_eos = 1, Mode_nl = 2, Mode_pipe = 3, Mode_text = 4;
private void Init_keyword(Byte_obj_ref tmp_bref, Xol_lang lang, int kwd_id, byte trie_key) {
private void Init_keyword(Byte_obj_ref tmp_bref, Xol_lang_itm lang, int kwd_id, byte trie_key) {
Xol_kwd_grp grp = lang.Kwd_mgr().Get_at(kwd_id);
if (grp == null) {Gfo_usr_dlg_.I.Warn_many("", "", "could not find gallery keyword: ~{0}", String_.new_u8(Xol_kwd_grp_.Bry_by_id(kwd_id))); return;}
if (grp == null) {Gfo_usr_dlg_.Instance.Warn_many("", "", "could not find gallery keyword: ~{0}", String_.new_u8(Xol_kwd_grp_.Bry_by_id(kwd_id))); return;}
Xol_kwd_itm[] itms = grp.Itms();
int len = itms.length;
Byte_obj_val trie_ref = Byte_obj_val.new_(trie_key);

View File

@@ -16,7 +16,7 @@ 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.gallery; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*;
import org.junit.*; import gplx.xowa.langs.*;
import org.junit.*; import gplx.xowa.langs.*; import gplx.xowa.langs.kwds.*;
public class Gallery_itm_parser_tst {
@Before public void init() {fxt.Init();} private Gallery_itm_parser_fxt fxt = new Gallery_itm_parser_fxt();
@Test public void All() {fxt.Test_parse("File:A.png|a|alt=b|link=c" , fxt.Expd("File:A.png", "a" , "b" , "c"));}
@@ -79,7 +79,7 @@ class Gallery_itm_parser_fxt {
public String[] Expd(String ttl, String caption) {return new String[] {ttl, caption, null, null, null};}
public String[] Expd(String ttl, String caption, String alt) {return new String[] {ttl, caption, alt, null, null};}
public String[] Expd(String ttl, String caption, String alt, String link) {return new String[] {ttl, caption, alt, link, null};}
public String[] Expd(String ttl, String caption, String alt, String link, int page) {return new String[] {ttl, caption, alt, link, Int_.Xto_str(page)};}
public String[] Expd(String ttl, String caption, String alt, String link, int page) {return new String[] {ttl, caption, alt, link, Int_.To_str(page)};}
public void Init_kwd_set(int kwd_id, String kwd_val) {
wiki.Lang().Kwd_mgr().Get_or_new(kwd_id).Itms()[0].Val_(Bry_.new_a7(kwd_val));
parser.Init_by_wiki(wiki);

View File

@@ -16,8 +16,8 @@ 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.gallery; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*;
import gplx.langs.htmls.*; import gplx.xowa.html.*; import gplx.xowa.html.modules.*; import gplx.xowa.files.*; import gplx.xowa.html.hdumps.abrvs.*; import gplx.xowa.html.hdumps.core.*;
import gplx.xowa.parsers.*; import gplx.xowa.parsers.xndes.*; import gplx.xowa.parsers.lnkis.*;
import gplx.langs.htmls.*; import gplx.xowa.htmls.*; import gplx.xowa.htmls.modules.*; import gplx.xowa.files.*; import gplx.xowa.htmls.hdumps.abrvs.*; import gplx.xowa.htmls.hdumps.core.*;
import gplx.xowa.parsers.*; import gplx.xowa.parsers.xndes.*; import gplx.xowa.parsers.htmls.*; import gplx.xowa.parsers.lnkis.*;
public abstract class Gallery_mgr_base {
private Gallery_box_w_fmtr_arg__basic box_w_fmtr__basic = new Gallery_box_w_fmtr_arg__basic(); private Gallery_box_w_fmtr_arg__hdump box_w_fmtr__hdump = new Gallery_box_w_fmtr_arg__hdump();
private Gallery_img_pad_fmtr_arg__basic img_pad_fmtr__basic = new Gallery_img_pad_fmtr_arg__basic(); private Gallery_img_pad_fmtr_arg__hdump img_pad_fmtr__hdump = new Gallery_img_pad_fmtr_arg__hdump();
@@ -63,7 +63,7 @@ public abstract class Gallery_mgr_base {
page.Hdump_data().Imgs_add(new Xohd_data_itm__gallery_mgr(gallery_uid, max_width));
}
byte[] box_cls = Fmt_and_add(tmp_bfr, box_cls_fmtr, xnde.Atr_cls(), this.Tid_bry());
byte[] gallery_ul_id = tmp_bfr.Add(box_id_prefix_bry).Add_int_variable(gallery_uid).Xto_bry_and_clear();
byte[] gallery_ul_id = tmp_bfr.Add(box_id_prefix_bry).Add_int_variable(gallery_uid).To_bry_and_clear();
Box_hdr_write(bfr, wiki.Appe().Html_mgr().Whitelist_mgr(), src, gallery_ul_id, box_cls, box_style, xnde.Atrs_other(), hctx_is_hdump, gallery_uid);
byte[] box_caption = xnde.Atr_caption();
if (Bry_.Len_gt_0(box_caption)) box_caption_fmtr.Bld_bfr_many(bfr, box_caption);
@@ -91,7 +91,7 @@ public abstract class Gallery_mgr_base {
xfer_itm.Html_elem_tid_(Xof_html_elem.Tid_gallery_v2);
}
int img_uid = xfer_itm.Html_uid();
byte[] gallery_li_id = tmp_bfr.Add(itm_id_prefix_bry).Add_int_variable(img_uid).Xto_bry_and_clear();
byte[] gallery_li_id = tmp_bfr.Add(itm_id_prefix_bry).Add_int_variable(img_uid).To_bry_and_clear();
byte[] itm_html = Bry_.Empty;
int html_w_expand = xfer_itm.Html_w();
int html_h_expand = xfer_itm.Html_h();
@@ -131,7 +131,7 @@ public abstract class Gallery_mgr_base {
itm_div1_fmtr.Bld_bfr_many(tmp_bfr, vpad_fmtr.Init(img_uid, vpad)); // <div style="margin:~{vpad}px auto;">
wiki.Html_mgr().Html_wtr().Lnki_wtr().Write_file(tmp_bfr, ctx, hctx, src, lnki, xfer_itm, alt);
tmp_bfr.Add(itm_divs_end_bry);
itm_html = tmp_bfr.Xto_bry_and_clear();
itm_html = tmp_bfr.To_bry_and_clear();
}
byte[] show_filenames_link = Bry_.Empty;
@@ -146,8 +146,8 @@ public abstract class Gallery_mgr_base {
itm_li_bgn_fmtr.Bld_bfr_many(bfr, gallery_li_id, box_w_fmtr_arg.Init(img_uid, itm_div_width));
bfr.Add(itm_html);
wiki.Parser_mgr().Main().Parse_text_to_html(tmp_bfr, page, true, itm_caption);
itm_caption = tmp_bfr.Xto_bry_and_clear();
itm_caption = tmp_bfr.Add(show_filenames_link).Add(itm_caption).Xto_bry_and_clear();
itm_caption = tmp_bfr.To_bry_and_clear();
itm_caption = tmp_bfr.Add(show_filenames_link).Add(itm_caption).To_bry_and_clear();
Wrap_gallery_text(bfr, itm_caption, html_w_expand, html_h_expand);
bfr.Add(itm_li_end_bry);
if (hctx_is_hdump)
@@ -187,7 +187,7 @@ public abstract class Gallery_mgr_base {
tmp_bfr.Add_byte_space();
tmp_bfr.Add(trailer);
}
return tmp_bfr.Xto_bry_and_clear();
return tmp_bfr.To_bry_and_clear();
}
private static void Box_hdr_write(Bry_bfr bfr, Xop_xatr_whitelist_mgr whitelist_mgr, byte[] src, byte[] gallery_ul_uid, byte[] cls, byte[] style, List_adp xatr_list, boolean hctx_is_hdump, int uid) {
bfr.Add_byte(Byte_ascii.Lt).Add(Html_tag_.Ul_name_bry);
@@ -204,10 +204,10 @@ public abstract class Gallery_mgr_base {
if (xatr_list != null) {
int len = xatr_list.Count();
for (int i = 0; i < len; i++) {
Xop_xatr_itm xatr = (Xop_xatr_itm)xatr_list.Get_at(i);
Mwh_atr_itm xatr = (Mwh_atr_itm)xatr_list.Get_at(i);
if (!whitelist_mgr.Chk(Xop_xnde_tag_.Tid_ul, src, xatr)) continue;
byte[] key = xatr.Key_bry();
byte[] val = xatr.Val_as_bry(src);
byte[] val = xatr.Val_as_bry();
Html_wtr.Write_atr_bry(bfr, key, val);
}
}

View File

@@ -17,7 +17,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package gplx.xowa.xtns.gallery; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*;
import org.junit.*;
import gplx.xowa.html.*; import gplx.xowa.files.fsdb.*;
import gplx.xowa.htmls.*; import gplx.xowa.files.fsdb.*;
public class Gallery_mgr_base_basic_tst {
private Gallery_mgr_base_fxt fxt = new Gallery_mgr_base_fxt();
@Before public void init() {fxt.Reset();}

View File

@@ -17,7 +17,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package gplx.xowa.xtns.gallery; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*;
import org.junit.*;
import gplx.xowa.html.*;
import gplx.xowa.htmls.*;
public class Gallery_mgr_base_xnde_atrs_tst {
private Gallery_mgr_base_fxt fxt = new Gallery_mgr_base_fxt();
@Before public void init() {fxt.Reset();}

View File

@@ -16,7 +16,7 @@ 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.gallery; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*;
import gplx.xowa.files.*; import gplx.xowa.html.modules.*;
import gplx.xowa.files.*; import gplx.xowa.htmls.modules.*;
import gplx.xowa.parsers.lnkis.*;
public class Gallery_mgr_packed_base extends Gallery_mgr_base {
@Override public byte Tid() {return Gallery_mgr_base_.Packed_tid;}

View File

@@ -19,9 +19,9 @@ package gplx.xowa.xtns.gallery; import gplx.*; import gplx.xowa.*; import gplx.x
import gplx.core.primitives.*; import gplx.dbs.cfgs.*;
import gplx.fsdb.meta.*;
import gplx.xowa.parsers.logs.*;
import gplx.xowa.html.*; import gplx.xowa.files.*; import gplx.xowa.files.fsdb.*;
import gplx.xowa.parsers.*; import gplx.xowa.parsers.xndes.*;
public class Gallery_xnde implements Xox_xnde, Xop_xnde_atr_parser {
import gplx.xowa.htmls.*; import gplx.xowa.files.*; import gplx.xowa.files.fsdb.*;
import gplx.xowa.parsers.*; import gplx.xowa.parsers.xndes.*; import gplx.xowa.parsers.htmls.*;
public class Gallery_xnde implements Xox_xnde, Mwh_atr_itm_owner {
private Gallery_xtn_mgr xtn_mgr;
public byte Mode() {return mode;} private byte mode;
public int Itm_w() {return itm_w;} private int itm_w = Null;
@@ -38,18 +38,18 @@ public class Gallery_xnde implements Xox_xnde, Xop_xnde_atr_parser {
public Gallery_itm Itms_get_at(int i) {return (Gallery_itm)itms.Get_at(i);}
public Gallery_mgr_base Gallery_mgr() {return gallery_mgr;} private Gallery_mgr_base gallery_mgr;
private boolean html_wtr_v1 = false;
public void Xatr_parse(Xowe_wiki wiki, byte[] src, Xop_xatr_itm xatr, Object xatr_key_obj) {
if (xatr_key_obj != null) {
Byte_obj_val xatr_key = (Byte_obj_val)xatr_key_obj;
switch (xatr_key.Val()) {
case Gallery_xnde_atrs.Mode_tid: mode = Gallery_mgr_base_.Get_or_traditional(xatr.Val_as_bry(src)); break;
case Gallery_xnde_atrs.Perrow_tid: itms_per_row = xatr.Val_as_int_or(src, Null); break;
case Gallery_xnde_atrs.Widths_tid: itm_w = xatr.Val_as_int_or(src, Null); break;
case Gallery_xnde_atrs.Heights_tid: itm_h = xatr.Val_as_int_or(src, Null); break;
case Gallery_xnde_atrs.Showfilename_tid: show_filename = xatr.Val_as_bool(src); break;
case Gallery_xnde_atrs.Caption_tid: if (!xatr.Tid_is_key_only()) atr_caption = xatr.Val_as_bry(src); break; // NOTE: do not create caption for key only; EX:<gallery caption=> PAGE:fr.w:Chronologie_du_si<73>ge_de_Paris_(1870); DATE:2014-08-15
case Gallery_xnde_atrs.Style_tid: atr_style = xatr.Val_as_bry(src); break;
case Gallery_xnde_atrs.Class_tid: atr_cls = xatr.Val_as_bry(src); break;
public void Xatr__set(Xowe_wiki wiki, byte[] src, Mwh_atr_itm xatr, Object xatr_id_obj) {
if (xatr_id_obj != null) {
Byte_obj_val xatr_id = (Byte_obj_val)xatr_id_obj;
switch (xatr_id.Val()) {
case Gallery_xnde_atrs.Mode_tid: mode = Gallery_mgr_base_.Get_or_traditional(xatr.Val_as_bry()); break;
case Gallery_xnde_atrs.Perrow_tid: itms_per_row = xatr.Val_as_int_or(Null); break;
case Gallery_xnde_atrs.Widths_tid: itm_w = xatr.Val_as_int_or(Null); break;
case Gallery_xnde_atrs.Heights_tid: itm_h = xatr.Val_as_int_or(Null); break;
case Gallery_xnde_atrs.Showfilename_tid: show_filename = xatr.Val_as_bool(); break;
case Gallery_xnde_atrs.Caption_tid: if (xatr.Key_exists()) atr_caption = xatr.Val_as_bry(); break; // NOTE: do not create caption for key only; EX:<gallery caption=> PAGE:fr.w:Chronologie_du_si<73>ge_de_Paris_(1870); DATE:2014-08-15
case Gallery_xnde_atrs.Style_tid: atr_style = xatr.Val_as_bry(); break;
case Gallery_xnde_atrs.Class_tid: atr_cls = xatr.Val_as_bry(); break;
}
}
else {
@@ -60,7 +60,7 @@ public class Gallery_xnde implements Xox_xnde, Xop_xnde_atr_parser {
public void Xtn_parse(Xowe_wiki wiki, Xop_ctx ctx, Xop_root_tkn root, byte[] src, Xop_xnde_tkn xnde) {
try {
ctx.Para().Process_block__xnde(xnde.Tag(), Xop_xnde_tag.Block_bgn); // cancel pre for <gallery>; DATE:2014-03-11
Xop_xatr_itm.Xatr_parse(wiki.Appe(), this, Gallery_xnde_atrs.Key_hash, wiki, src, xnde);
Xox_xnde_.Xatr__set(wiki, this, Gallery_xnde_atrs.Key_hash, src, xnde);
xtn_mgr = (Gallery_xtn_mgr)wiki.Xtn_mgr().Get_or_fail(Gallery_xtn_mgr.XTN_KEY);
Init_atrs(wiki);
gallery_mgr.Get_modules(ctx.Cur_page());
@@ -87,7 +87,7 @@ public class Gallery_xnde implements Xox_xnde, Xop_xnde_atr_parser {
}
private void Init_atrs(Xowe_wiki wiki) {
Db_cfg_hash cfg_grp = wiki.File_mgr().Cfg_get(Xof_fsdb_mgr_cfg.Grp_xowa);
if (cfg_grp.Get(Xof_fsdb_mgr_cfg.Key_gallery_fix_defaults).To_yn_or_n()) {
if (cfg_grp.Get_by(Xof_fsdb_mgr_cfg.Key_gallery_fix_defaults).To_yn_or_n()) {
if (itm_w == Gallery_xnde.Null && itm_h == Gallery_xnde.Null) // if no w/h specified, set both to default (just like v1)
itm_w = itm_h = Gallery_xnde.Default;
}
@@ -97,7 +97,7 @@ public class Gallery_xnde implements Xox_xnde, Xop_xnde_atr_parser {
}
gallery_mgr = Gallery_mgr_base_.New_by_mode(mode);
if ( !wiki.File_mgr().Version_1_y() // v2: fsdb
&& !cfg_grp.Get(Xof_fsdb_mgr_cfg.Key_gallery_packed).To_yn_or_n() // packed not supported
&& !cfg_grp.Get_by(Xof_fsdb_mgr_cfg.Key_gallery_packed).To_yn_or_n() // packed not supported
) {
gallery_mgr = Gallery_mgr_base_.New_by_mode(Gallery_mgr_base_.Traditional_tid); // always go to traditional
html_wtr_v1 = true;

View File

@@ -16,7 +16,7 @@ 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.gallery; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*;
import gplx.xowa.html.modules.*;
import gplx.xowa.htmls.modules.*;
public class Gallery_xtn_mgr extends Xox_mgr_base {
@Override public byte[] Xtn_key() {return XTN_KEY;} public static final byte[] XTN_KEY = Bry_.new_a7("gallery");
@Override public Xox_mgr Clone_new() {return new Gallery_xtn_mgr();}

View File

@@ -17,7 +17,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package gplx.xowa.xtns.geoCrumbs; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*;
import gplx.xowa.xtns.pfuncs.*;
import gplx.xowa.langs.*;
import gplx.xowa.langs.*; import gplx.xowa.langs.kwds.*;
import gplx.xowa.parsers.*; import gplx.xowa.parsers.tmpls.*;
public class Geoc_isin_func extends Pf_func_base {
@Override public int Id() {return Xol_kwd_grp_.Id_geoCrumbs_isin;}
@@ -31,5 +31,5 @@ public class Geoc_isin_func extends Pf_func_base {
wiki.Parser_mgr().Main().Parse_text_to_html(tmp_bfr, ctx.Cur_page(), false, lnki_ttl);
ctx.Cur_page().Html_data().Content_sub_(tmp_bfr.To_bry_and_rls());
}
public static final Geoc_isin_func _ = new Geoc_isin_func();
public static final Geoc_isin_func Instance = new Geoc_isin_func();
}

View File

@@ -17,11 +17,11 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package gplx.xowa.xtns.geodata; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*;
import gplx.xowa.xtns.pfuncs.*;
import gplx.xowa.langs.*;
import gplx.xowa.langs.*; import gplx.xowa.langs.kwds.*;
import gplx.xowa.parsers.*; import gplx.xowa.parsers.tmpls.*;
public class Geo_coordinates_func extends Pf_func_base {
@Override public void Func_evaluate(Xop_ctx ctx, byte[] src, Xot_invk caller, Xot_invk self, Bry_bfr bfr) {} // NOOP: MW uses to save coordinates for API retrieval
@Override public int Id() {return Xol_kwd_grp_.Id_xtn_geodata_coordinates;}
@Override public Pf_func New(int id, byte[] name) {return new Geo_coordinates_func().Name_(name);}
public static final Geo_coordinates_func _ = new Geo_coordinates_func(); Geo_coordinates_func() {}
public static final Geo_coordinates_func Instance = new Geo_coordinates_func(); Geo_coordinates_func() {}
}

View File

@@ -16,11 +16,11 @@ 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.graphs; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*;
import gplx.xowa.html.*;
import gplx.xowa.parsers.*; import gplx.xowa.parsers.logs.*; import gplx.xowa.parsers.xndes.*;
public class Graph_xnde implements Xox_xnde, Xop_xnde_atr_parser {
import gplx.xowa.htmls.*;
import gplx.xowa.parsers.*; import gplx.xowa.parsers.logs.*; import gplx.xowa.parsers.xndes.*; import gplx.xowa.parsers.htmls.*;
public class Graph_xnde implements Xox_xnde {
private Graph_xtn xtn;
public void Xatr_parse(Xowe_wiki wiki, byte[] src, Xop_xatr_itm xatr, Object xatr_key_obj) {}
public void Xatr__set(Xowe_wiki wiki, byte[] src, Mwh_atr_itm xatr, Object xatr_id_obj) {}
public void Xtn_parse(Xowe_wiki wiki, Xop_ctx ctx, Xop_root_tkn root, byte[] src, Xop_xnde_tkn xnde) {
ctx.Para().Process_block__xnde(xnde.Tag(), Xop_xnde_tag.Block_bgn);
this.xtn = (Graph_xtn)wiki.Xtn_mgr().Get_or_fail(Graph_xtn.Xtn_key_static);

View File

@@ -16,7 +16,7 @@ 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.graphs; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*;
import gplx.xowa.wikis.*; import gplx.xowa.html.modules.*; import gplx.xowa.apps.fsys.*;
import gplx.xowa.wikis.*; import gplx.xowa.htmls.modules.*; import gplx.xowa.apps.fsys.*;
public class Graph_xtn extends Xox_mgr_base implements GfoInvkAble {
@Override public boolean Enabled_default() {return true;}
@Override public byte[] Xtn_key() {return Xtn_key_static;} public static final byte[] Xtn_key_static = Bry_.new_a7("graph");

View File

@@ -18,7 +18,7 @@ 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.langs.dsvs.*;
class Hiero_file_mgr implements GfoInvkAble {
private Ordered_hash hash = Ordered_hash_.new_bry_();
private Ordered_hash hash = Ordered_hash_.New_bry();
private Hiero_file_srl srl;
public Hiero_file_mgr() {srl = new Hiero_file_srl(this);}
public int Len() {return hash.Count();}

View File

@@ -16,7 +16,7 @@ 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.hieros; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*;
import gplx.langs.htmls.*; import gplx.xowa.html.*;
import gplx.langs.htmls.*; import gplx.xowa.htmls.*;
class Hiero_html_mgr {
private Bry_bfr html_bfr = Bry_bfr.reset_(Io_mgr.Len_kb), content_bfr = Bry_bfr.reset_(255), tbl_content_bfr = Bry_bfr.reset_(Io_mgr.Len_kb), temp_bfr = Bry_bfr.reset_(255);
private Xoh_wtr_ctx hctx;
@@ -102,7 +102,7 @@ class Hiero_html_mgr {
else
temp_bfr.Add(v);
}
byte[] prefab_bry = temp_bfr.Xto_bry_and_clear();
byte[] prefab_bry = temp_bfr.To_bry_and_clear();
Hiero_prefab_itm prefab_itm = prefab_mgr.Get_by_key(prefab_bry);
if (prefab_itm != null) {
byte[] td_height = wtr.Td_height(Resize_glyph(prefab_bry, cartouche_opened));
@@ -159,7 +159,7 @@ class Hiero_html_mgr {
byte[] td_height = wtr.Td_height(Resize_glyph(v, cartouche_opened, total));
temp_bfr.Add(Render_glyph(v, td_height));
}
wtr.Td(content_bfr, temp_bfr.Xto_bry_and_clear());
wtr.Td(content_bfr, temp_bfr.To_bry_and_clear());
}
}
private byte[] Render_glyph(byte[] src) {return Render_glyph(src, Bry_.Empty);}

View File

@@ -16,16 +16,16 @@ 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.hieros; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*;
import gplx.langs.htmls.*; import gplx.xowa.html.*;
import gplx.langs.htmls.*; import gplx.xowa.htmls.*;
class Hiero_html_wtr {
private Hiero_phoneme_mgr phoneme_mgr;
private Bry_bfr temp_bfr = Bry_bfr.reset_(255);
public Hiero_html_wtr(Hiero_html_mgr mgr, Hiero_phoneme_mgr phoneme_mgr) {this.phoneme_mgr = phoneme_mgr;}
public void Init_for_write(Xoh_wtr_ctx hctx) {this.hiero_img_dir = hctx.Mode_is_hdump() ? gplx.xowa.html.hdumps.abrvs.Xohd_abrv_.Key_hiero_dir : Hiero_xtn_mgr.Img_src_dir;} private byte[] hiero_img_dir = null;
public void Init_for_write(Xoh_wtr_ctx hctx) {this.hiero_img_dir = hctx.Mode_is_hdump() ? gplx.xowa.htmls.hdumps.abrvs.Xohd_abrv_.Key_hiero_dir : Hiero_xtn_mgr.Img_src_dir;} private byte[] hiero_img_dir = null;
public void Hr(Bry_bfr bfr) {bfr.Add(Html_tag_.Hr_inl).Add_byte_nl();}
public void Tbl_eol(Bry_bfr bfr) {bfr.Add(Tbl_eol_bry);}
public byte[] Td_height(int height) {
return temp_bfr.Add(Option_bgn_bry).Add_int_variable(height).Add(Option_end_bry).Xto_bry_and_clear();
return temp_bfr.Add(Option_bgn_bry).Add_int_variable(height).Add(Option_end_bry).To_bry_and_clear();
}
private static final byte[]
Option_bgn_bry = Bry_.new_a7("height: ")
@@ -130,7 +130,7 @@ class Hiero_html_wtr {
;
public byte[] Img_phoneme(byte[] img_cls, byte[] td_height, byte[] glyph_esc, byte[] code) {
byte[] code_esc = Html_utl.Escape_html_as_bry(temp_bfr, code);
byte[] img_title = temp_bfr.Add(code_esc).Add_byte_space().Add_byte(Byte_ascii.Brack_bgn).Add(glyph_esc).Add_byte(Byte_ascii.Brack_end).Xto_bry_and_clear(); // "~{code} [~{glyph}]"
byte[] img_title = temp_bfr.Add(code_esc).Add_byte_space().Add_byte(Byte_ascii.Brack_bgn).Add(glyph_esc).Add_byte(Byte_ascii.Brack_end).To_bry_and_clear(); // "~{code} [~{glyph}]"
return Img(img_cls, td_height, glyph_esc, code_esc, img_title);
}
public byte[] Img_file(byte[] img_cls, byte[] td_height, byte[] glyph_esc) {return Img(img_cls, td_height, glyph_esc, glyph_esc, glyph_esc);}

View File

@@ -18,7 +18,7 @@ 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.primitives.*;
import gplx.langs.phps.*; import gplx.langs.dsvs.*;
import gplx.xowa.apps.gfss.*;
import gplx.xowa.apps.gfs.*;
public class Hiero_mw_tables_parser {
private Php_parser parser = new Php_parser(); private Php_evaluator evaluator;
private Php_text_itm_parser quote_parser = new Php_text_itm_parser();
@@ -31,7 +31,7 @@ public class Hiero_mw_tables_parser {
}
public void Load_data(Hiero_xtn_mgr xtn_mgr, Io_url load_fil) {// NOTE: parsing tables.php instead of tables.ser b/c latter is too difficult to read / debug
evaluator.Clear();
parser.Parse_tkns(Io_mgr.I.LoadFilBry(load_fil), evaluator);
parser.Parse_tkns(Io_mgr.Instance.LoadFilBry(load_fil), evaluator);
Php_line[] lines = (Php_line[])evaluator.List().To_ary(Php_line.class);
int lines_len = lines.length;
for (int i = 0; i < lines_len; i++) {
@@ -79,7 +79,7 @@ public class Hiero_mw_tables_parser {
}
}
public void Save_data(Hiero_xtn_mgr xtn_mgr, Io_url save_fil) {
Gfs_bldr bldr = new Gfs_bldr();
Xoa_gfs_bldr bldr = new Xoa_gfs_bldr();
int len = -1;
Hiero_prefab_mgr prefab_mgr = xtn_mgr.Prefab_mgr();
@@ -112,7 +112,7 @@ public class Hiero_mw_tables_parser {
}
bldr.Add_quote_xtn_end();
bldr.Add_paren_end().Add_term_nl();
Io_mgr.I.SaveFilBfr(save_fil, bldr.Bfr());
Io_mgr.Instance.SaveFilBfr(save_fil, bldr.Bfr());
}
private static final byte Tid_prefabs = 0, Tid_files = 1, Tid_phonemes = 2;
private static Hash_adp_bry Tid_hash = Hash_adp_bry.cs().Add_str_byte("wh_prefabs", Tid_prefabs).Add_str_byte("wh_files", Tid_files).Add_str_byte("wh_phonemes", Tid_phonemes);

View File

@@ -65,9 +65,9 @@ class Hiero_mw_tables_parser_fxt {
public void Test_bld_all(String raw, String expd) {
Io_url load_url = Io_url_.mem_fil_("mem/hiero/load.php");
Io_url save_url = Io_url_.mem_fil_("mem/hiero/save.php");
Io_mgr.I.SaveFilStr(load_url, raw);
Io_mgr.Instance.SaveFilStr(load_url, raw);
parser.Bld_all(load_url, save_url);
Tfds.Eq_str_lines(expd, Io_mgr.I.LoadFilStr(save_url));
Tfds.Eq_str_lines(expd, Io_mgr.Instance.LoadFilStr(save_url));
}
public void Exec_bld_all(String load, String save) {
parser.Bld_all(Io_url_.new_fil_(load), Io_url_.new_fil_(save));

View File

@@ -16,7 +16,7 @@ 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.hieros; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*;
import gplx.core.btries.*; import gplx.langs.htmls.*; import gplx.xowa.html.*;
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 List_adp blocks = List_adp_.new_();
@@ -75,7 +75,7 @@ class Hiero_parser {
}
private void New_token(Hiero_parser_itm itm) {
if (cur_tkn.Len_gt_0())
cur_block.Add(cur_tkn.Xto_bry_and_clear());
cur_block.Add(cur_tkn.To_bry_and_clear());
if (itm != null)
cur_block.Add(itm.Key());
}

View File

@@ -18,7 +18,7 @@ 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.langs.dsvs.*;
class Hiero_phoneme_mgr implements GfoInvkAble {
private Ordered_hash hash = Ordered_hash_.new_bry_();
private Ordered_hash hash = Ordered_hash_.New_bry();
private Hiero_phoneme_srl srl;
public Hiero_phoneme_mgr() {srl = new Hiero_phoneme_srl(this);}
public int Len() {return hash.Count();}

View File

@@ -18,7 +18,7 @@ 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.langs.dsvs.*;
class Hiero_prefab_mgr implements GfoInvkAble {
private Ordered_hash hash = Ordered_hash_.new_bry_();
private Ordered_hash hash = Ordered_hash_.New_bry();
private Hiero_prefab_srl srl;
public Hiero_prefab_mgr() {srl = new Hiero_prefab_srl(this);}
public int Len() {return hash.Count();}

View File

@@ -16,12 +16,12 @@ 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.hieros; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*;
import gplx.xowa.html.*;
import gplx.xowa.parsers.*; import gplx.xowa.parsers.logs.*; import gplx.xowa.parsers.xndes.*;
public class Hiero_xnde implements Xox_xnde, Xop_xnde_atr_parser {
import gplx.xowa.htmls.*;
import gplx.xowa.parsers.*; import gplx.xowa.parsers.logs.*; import gplx.xowa.parsers.xndes.*; import gplx.xowa.parsers.htmls.*;
public class Hiero_xnde implements Xox_xnde {
private Hiero_xtn_mgr xtn_mgr;
private Hiero_block[] blocks;
public void Xatr_parse(Xowe_wiki wiki, byte[] src, Xop_xatr_itm xatr, Object xatr_key_obj) {}
public void Xatr__set(Xowe_wiki wiki, byte[] src, Mwh_atr_itm xatr, Object xatr_id_obj) {}
public void Xtn_parse(Xowe_wiki wiki, Xop_ctx ctx, Xop_root_tkn root, byte[] src, Xop_xnde_tkn xnde) {
ctx.Para().Process_block__xnde(xnde.Tag(), Xop_xnde_tag.Block_bgn);
xtn_mgr = (Hiero_xtn_mgr)wiki.Xtn_mgr().Get_or_fail(Hiero_xtn_mgr.Xtn_key_static);

View File

@@ -16,7 +16,7 @@ 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.hieros; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*;
import gplx.xowa.wikis.*; import gplx.xowa.html.modules.*; import gplx.xowa.apps.fsys.*;
import gplx.xowa.wikis.*; import gplx.xowa.htmls.modules.*; import gplx.xowa.apps.fsys.*;
public class Hiero_xtn_mgr extends Xox_mgr_base implements GfoInvkAble {
@Override public boolean Enabled_default() {return true;}
@Override public byte[] Xtn_key() {return Xtn_key_static;} public static final byte[] Xtn_key_static = Bry_.new_a7("hiero");

View File

@@ -17,7 +17,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package gplx.xowa.xtns.imaps; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*;
import gplx.core.primitives.*;
import gplx.xowa.html.*; import gplx.xowa.html.lnkis.*;
import gplx.xowa.htmls.*; import gplx.xowa.htmls.lnkis.*;
import gplx.xowa.parsers.*;
class Imap_img_fmtr_arg implements Bry_fmtr_arg {
private Xoh_wtr_ctx hctx; private Imap_map map; private Imap_xtn_mgr xtn_mgr;
@@ -32,7 +32,7 @@ class Imap_img_fmtr_arg implements Bry_fmtr_arg {
this.img_cls = img_cls;
this.img_href = img_href;
}
public void XferAry(Bry_bfr bfr, int idx) {
public void Fmt__do(Bry_bfr bfr) {
Bry_fmtr fmtr = Imap_html_fmtrs.Img_anchor_none;
byte[] anchor_href = Bry_.Empty, anchor_text = Bry_.Empty;
Imap_itm_dflt itm_dflt = map.Dflt();

View File

@@ -17,7 +17,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package gplx.xowa.xtns.imaps; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*;
import gplx.core.primitives.*; import gplx.core.net.*;
import gplx.xowa.parsers.*; import gplx.xowa.parsers.lnkis.*; import gplx.xowa.parsers.lnkes.*; import gplx.xowa.html.*;
import gplx.xowa.parsers.*; import gplx.xowa.parsers.lnkis.*; import gplx.xowa.parsers.lnkes.*; import gplx.xowa.htmls.*;
interface Imap_link_owner {
void Link_tid_(int v);
void Link_href_(byte[] v);
@@ -34,7 +34,7 @@ class Imap_link_owner_ {
Xop_lnki_tkn lnki_tkn = (Xop_lnki_tkn)tkn;
link_owner.Link_href_(app.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.Xto_bry_and_clear());
link_owner.Link_text_(bfr.To_bry_and_clear());
break;
}
case Xop_tkn_itm_.Tid_lnke: {
@@ -43,9 +43,9 @@ class Imap_link_owner_ {
int lnke_bgn = lnke.Lnke_bgn(), lnke_end = lnke.Lnke_end(); boolean proto_is_xowa = lnke.Proto_tid() == Gfo_protocol_itm.Tid_xowa;
Xoh_lnke_wtr lnke_wtr = wiki.Html_mgr().Html_wtr().Lnke_wtr();
lnke_wtr.Write_href(bfr, ctx, src, lnke, lnke_bgn, lnke_end, proto_is_xowa);
link_owner.Link_href_(bfr.Xto_bry_and_clear());
link_owner.Link_href_(bfr.To_bry_and_clear());
lnke_wtr.Write_caption(bfr, wiki.Html_mgr().Html_wtr(), Xoh_wtr_ctx.Basic, ctx, src, lnke, lnke_bgn, lnke_end, proto_is_xowa);
link_owner.Link_text_(bfr.Xto_bry_and_clear());
link_owner.Link_text_(bfr.To_bry_and_clear());
break;
}
}

View File

@@ -16,8 +16,8 @@ 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.imaps; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*;
import gplx.xowa.files.*; import gplx.xowa.html.*; import gplx.xowa.files.gui.*; import gplx.xowa.gui.views.*; import gplx.xowa.html.lnkis.*;
import gplx.xowa.html.hdumps.core.*;
import gplx.xowa.files.*; import gplx.xowa.htmls.*; import gplx.xowa.files.gui.*; import gplx.xowa.guis.views.*; import gplx.xowa.htmls.lnkis.*;
import gplx.xowa.htmls.hdumps.core.*;
public class Imap_map implements Xoh_file_img_wkr, Js_img_wkr {
private static final Imap_map_fmtr map_fmtr_arg = new Imap_map_fmtr();
public Imap_map(int id) {this.id = id;}
@@ -50,7 +50,7 @@ public class Imap_map implements Xoh_file_img_wkr, Js_img_wkr {
Xowe_wiki wiki = xtn_mgr.Wiki();
Bry_bfr tmp_bfr = wiki.Utl__bfr_mkr().Get_k004();
Write_imap_div(tmp_bfr, Xoh_wtr_ctx.Basic, html_uid, html_w, html_h, html_view_url.To_http_file_bry(), orig_w, orig_h);
js_wkr.Html_elem_replace_html("imap_div_" + Int_.Xto_str(html_uid), tmp_bfr.To_str_and_rls());
js_wkr.Html_elem_replace_html("imap_div_" + Int_.To_str(html_uid), tmp_bfr.To_str_and_rls());
}
private void Write_imap_div(Bry_bfr bfr, Xoh_wtr_ctx hctx, int html_uid, int html_w, int html_h, byte[] html_src, int orig_w, int orig_h) {
byte[] desc_style = Calc_desc_style(html_w, html_h);

View File

@@ -20,7 +20,7 @@ class Imap_map_fmtr implements Bry_fmtr_arg {
private int imap_id;
public void Init(int imap_id, Imap_itm_shape[] shapes, double scale) {this.imap_id = imap_id; shapes_fmtr_arg.Init(shapes, scale);}
public Imap_pts_fmtr_arg Pts_fmtr() {return shapes_fmtr_arg.Pts_fmtr();}
public void XferAry(Bry_bfr bfr, int idx) {
public void Fmt__do(Bry_bfr bfr) {
Imap_html_fmtrs.Map.Bld_bfr_many(bfr, imap_id, shapes_fmtr_arg);
}
private static final Imap_shapes_fmtr shapes_fmtr_arg = new Imap_shapes_fmtr();
@@ -29,7 +29,7 @@ class Imap_shapes_fmtr implements Bry_fmtr_arg {
private Imap_itm_shape[] shapes;
public void Init(Imap_itm_shape[] shapes, double scale) {this.shapes = shapes; pts_fmtr_arg.Scale_(scale);}
public Imap_pts_fmtr_arg Pts_fmtr() {return pts_fmtr_arg;}
public void XferAry(Bry_bfr bfr, int idx) {
public void Fmt__do(Bry_bfr bfr) {
int shapes_len = shapes.length;
Bry_fmtr fmtr = Imap_html_fmtrs.Area;
for (int i = 0; i < shapes_len; ++i) {

View File

@@ -19,7 +19,7 @@ package gplx.xowa.xtns.imaps; import gplx.*; import gplx.xowa.*; import gplx.xow
import gplx.core.btries.*; import gplx.core.primitives.*;
import gplx.xowa.parsers.*; import gplx.xowa.parsers.lnkis.*; import gplx.xowa.parsers.lnkis.redlinks.*; import gplx.xowa.parsers.xndes.*; import gplx.xowa.parsers.tmpls.*;
class Imap_parser {
private Imap_xtn_mgr xtn_mgr; private Xoa_url page_url; private Gfo_usr_dlg usr_dlg = Gfo_usr_dlg_.I;
private Imap_xtn_mgr xtn_mgr; private Xoa_url page_url; private Gfo_usr_dlg usr_dlg = Gfo_usr_dlg_.Instance;
private byte[] imap_img_src;
private Imap_itm_img imap_img;
private Imap_itm_dflt imap_dflt;
@@ -92,7 +92,7 @@ class Imap_parser {
private boolean Parse_desc(int itm_bgn, int itm_end) {
xtn_mgr.Desc_assert();
Btrie_slim_mgr trie = xtn_mgr.Desc_trie();
byte tid_desc = Imap_desc_tid.parse(trie, src, Bry_find_.Trim_fwd_space_tab(src, itm_bgn, itm_end), Bry_find_.Trim_bwd_space_tab(src, itm_bgn, itm_end));
byte tid_desc = Imap_desc_tid.parse(trie, src, Bry_find_.Trim_fwd_space_tab(src, itm_bgn, itm_end), Bry_find_.Trim_bwd_space_tab(src, itm_end, itm_bgn));
switch (tid_desc) {
case Imap_desc_tid.Tid_null: return Add_err(Bool_.N, itm_bgn, itm_end, "imagemap_invalid_coord");
case Imap_desc_tid.Tid_none: return true;

View File

@@ -21,7 +21,7 @@ class Imap_pts_fmtr_arg implements Bry_fmtr_arg {
private double scale = 1; private Double_obj_val[] pts;
public void Scale_(double v) {this.scale = v;}
public void Pts_(Double_obj_val[] v) {this.pts = v;}
public void XferAry(Bry_bfr bfr, int idx) {
public void Fmt__do(Bry_bfr bfr) {
int pts_len = pts.length;
for (int i = 0; i < pts_len; ++i) {
Double_obj_val pt = pts[i];

View File

@@ -16,7 +16,7 @@ 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.imaps; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*;
import gplx.xowa.html.*;
import gplx.xowa.htmls.*;
import gplx.xowa.parsers.*; import gplx.xowa.parsers.logs.*; import gplx.xowa.parsers.xndes.*;
public class Imap_xnde implements Xox_xnde {
private Imap_xtn_mgr xtn_mgr;

View File

@@ -16,9 +16,9 @@ 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.imaps; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*;
import org.junit.*; import gplx.xowa.langs.*;
import org.junit.*; import gplx.xowa.langs.*; import gplx.xowa.langs.msgs.*;
public class Imap_xnde_html_all_tst {
@Before public void init() {fxt.Reset();} private Imap_xnde_html_fxt fxt = new Imap_xnde_html_fxt();
@Before public void init() {fxt.Reset();} private final Imap_xnde_html_fxt fxt = new Imap_xnde_html_fxt();
@Test public void Basic() {
fxt.Test_html_full_str(String_.Concat_lines_nl_skip_last
( "<imagemap>"

View File

@@ -28,6 +28,6 @@ class Imap_html_bldr_fxt extends Imap_fxt_base {
private Imap_pts_fmtr_arg pts_fmtr_arg = new Imap_pts_fmtr_arg();
public void Test_shape_html(Imap_itm_shape shape, String expd) {
Imap_shapes_fmtr.Fmt_shape(bfr, Imap_html_fmtrs.Area, pts_fmtr_arg, shape);
Tfds.Eq(expd, bfr.Xto_str_and_clear());
Tfds.Eq(expd, bfr.To_str_and_clear());
}
}

View File

@@ -16,7 +16,7 @@ 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.imaps; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*;
import gplx.core.btries.*; import gplx.xowa.wikis.*; import gplx.xowa.html.*; import gplx.xowa.html.lnkis.*;
import gplx.core.btries.*; import gplx.xowa.wikis.*; import gplx.xowa.htmls.*; import gplx.xowa.htmls.lnkis.*;
public class Imap_xtn_mgr extends Xox_mgr_base implements GfoInvkAble {
private boolean init;
@Override public boolean Enabled_default() {return true;}

View File

@@ -18,7 +18,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
package gplx.xowa.xtns.indicators; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*;
public class Indicator_html_bldr implements Bry_fmtr_arg {
private Indicator_html_bldr_itm bldr_itm = new Indicator_html_bldr_itm();
private Ordered_hash list = Ordered_hash_.new_();
private Ordered_hash list = Ordered_hash_.New();
public void Enabled_(boolean v) {enabled = v;} private boolean enabled = Bool_.Y;
public void Clear() {
enabled = Bool_.Y;
@@ -30,7 +30,7 @@ public class Indicator_html_bldr implements Bry_fmtr_arg {
if (!enabled) return; // do not add if disabled; called from <page>; PAGE:en.s:The_Parochial_System_(Wilberforce,_1838); DATE:2015-04-29
list.Add_if_dupe_use_nth(xnde.Name(), xnde); // Add_if_dupe_use_nth: 2nd indicator overwrites 1st; DATE:2015-04-29
}
public void XferAry(Bry_bfr bfr, int idx) {
public void Fmt__do(Bry_bfr bfr) {
if (list.Count() == 0) return; // do not build html if no items; DATE:2015-04-29
bldr_itm.Init(list);
fmtr_grp.Bld_bfr_many(bfr, bldr_itm);
@@ -46,7 +46,7 @@ public class Indicator_html_bldr implements Bry_fmtr_arg {
class Indicator_html_bldr_itm implements Bry_fmtr_arg {
private Ordered_hash list;
public void Init(Ordered_hash list) {this.list = list;}
public void XferAry(Bry_bfr bfr, int idx) {
public void Fmt__do(Bry_bfr bfr) {
int list_len = list.Count();
for (int i = list_len - 1; i > -1; --i) { // reverse order
Indicator_xnde xnde = (Indicator_xnde)list.Get_at(i);

View File

@@ -60,7 +60,7 @@ class Indicator_html_bldr_fxt {
}
public void Test_bld(String expd) {
Bry_bfr tmp_bfr = Bry_bfr.reset_(255);
page.Html_data().Indicators().XferAry(tmp_bfr, 0);
Tfds.Eq_str_lines(expd, tmp_bfr.Xto_str_and_clear());
page.Html_data().Indicators().Fmt__do(tmp_bfr);
Tfds.Eq_str_lines(expd, tmp_bfr.To_str_and_clear());
}
}

View File

@@ -16,26 +16,27 @@ 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.indicators; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*;
import gplx.core.primitives.*; import gplx.xowa.html.*; import gplx.xowa.pages.skins.*;
import gplx.xowa.parsers.*; import gplx.xowa.parsers.xndes.*;
public class Indicator_xnde implements Xox_xnde, Xop_xnde_atr_parser {
import gplx.core.primitives.*; import gplx.xowa.htmls.*; import gplx.xowa.wikis.pages.skins.*;
import gplx.xowa.parsers.*; import gplx.xowa.parsers.xndes.*; import gplx.xowa.parsers.htmls.*;
public class Indicator_xnde implements Xox_xnde, Mwh_atr_itm_owner {
public String Name() {return name;} private String name;
public byte[] Html() {return html;} private byte[] html;
public void Init_for_test(String name, byte[] html) {this.name = name; this.html = html;} // TEST
public void Xatr_parse(Xowe_wiki wiki, byte[] src, Xop_xatr_itm xatr, Object xatr_key_obj) {
if (xatr_key_obj == null) return;
Byte_obj_val xatr_key = (Byte_obj_val)xatr_key_obj;
switch (xatr_key.Val()) {
case Xatr_name: this.name = xatr.Val_as_str(src); break;
public void Xatr__set(Xowe_wiki wiki, byte[] src, Mwh_atr_itm xatr, Object xatr_id_obj) {
if (xatr_id_obj == null) return;
Byte_obj_val xatr_id = (Byte_obj_val)xatr_id_obj;
switch (xatr_id.Val()) {
case Xatr_name: this.name = xatr.Val_as_str(); break;
}
}
public void Xtn_parse(Xowe_wiki wiki, Xop_ctx ctx, Xop_root_tkn root, byte[] src, Xop_xnde_tkn xnde) {
Xop_xatr_itm.Xatr_parse(wiki.Appe(), this, xatrs_hash, wiki, src, xnde);
Xox_xnde_.Xatr__set(wiki, this, xatrs_hash, src, xnde);
this.html = Xop_parser_.Parse_text_to_html(wiki, ctx.Cur_page(), ctx.Cur_page().Ttl(), Bry_.Mid(src, xnde.Tag_open_end(), xnde.Tag_close_bgn()), false);
Indicator_html_bldr html_bldr = ctx.Cur_page().Html_data().Indicators();
html_bldr.Add(this);
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) {
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;
private static final Hash_adp_bry xatrs_hash = Hash_adp_bry.ci_a7()

View File

@@ -16,7 +16,7 @@ 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.inputBox; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*;
import gplx.xowa.html.*;
import gplx.xowa.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)

View File

@@ -16,8 +16,8 @@ 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.insiders; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*;
import gplx.xowa.xtns.pfuncs.*; import gplx.xowa.pages.skins.*;
import gplx.xowa.langs.*;
import gplx.xowa.xtns.pfuncs.*; import gplx.xowa.wikis.pages.skins.*;
import gplx.xowa.langs.*; import gplx.xowa.langs.kwds.*;
import gplx.xowa.parsers.*; import gplx.xowa.parsers.tmpls.*;
public class Insider_func extends Pf_func_base {
@Override public int Id() {return Xol_kwd_grp_.Id_insider;}
@@ -32,5 +32,5 @@ public class Insider_func extends Pf_func_base {
}
skin_itm.Add(val);
}
public static final Insider_func _ = new Insider_func(); Insider_func() {}
public static final Insider_func Instance = new Insider_func(); Insider_func() {}
}

View File

@@ -17,9 +17,9 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package gplx.xowa.xtns.insiders; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*;
import gplx.langs.htmls.encoders.*;
import gplx.xowa.wikis.*; import gplx.xowa.wikis.xwikis.*; import gplx.xowa.pages.skins.*;
import gplx.xowa.html.hrefs.*;
import gplx.xowa.nss.*;
import gplx.xowa.wikis.*; import gplx.xowa.wikis.xwikis.*; import gplx.xowa.wikis.pages.skins.*;
import gplx.xowa.htmls.hrefs.*;
import gplx.xowa.wikis.nss.*;
class Insider_xtn_skin_itm implements Xopg_xtn_skin_itm {
private List_adp itms = List_adp_.new_();
private Insider_html_bldr html_bldr;
@@ -43,7 +43,7 @@ public class Insider_html_bldr implements Bry_fmtr_arg {
hash.Clear();
fmtr_grp.Bld_bfr_many(bfr, xtn_mgr.Msg_sidebar_ttl(), xtn_mgr.Msg_about_page(), xtn_mgr.Msg_about_ttl(), this);
}
public void XferAry(Bry_bfr bfr, int idx) {
public void Fmt__do(Bry_bfr bfr) {
Xowe_wiki wiki = xtn_mgr.Wiki();
Url_encoder href_encoder = Xoa_app_.Utl__encoder_mgr().Href();
for (int i = 0; i < list_len; ++i) {
@@ -54,7 +54,7 @@ public class Insider_html_bldr implements Bry_fmtr_arg {
if (hash.Has(user_ttl_bry)) continue;
hash.Add(user_ttl_bry, user_ttl_bry);
href_encoder.Encode(tmp_ttl, user_ttl_bry);
user_ttl_bry = tmp_ttl.Xto_bry_and_clear();
user_ttl_bry = tmp_ttl.To_bry_and_clear();
fmtr_itm.Bld_bfr(bfr, user_ttl_bry, user_ttl.Page_txt());
}
}

View File

@@ -57,6 +57,6 @@ class Insider_html_bldr_fxt {
public void Test_bld(String expd) {
Bry_bfr tmp_bfr = Bry_bfr.reset_(255);
skin_itm.Write(tmp_bfr, page);
Tfds.Eq_str_lines(expd, tmp_bfr.Xto_str_and_clear());
Tfds.Eq_str_lines(expd, tmp_bfr.To_str_and_clear());
}
}

View File

@@ -17,32 +17,32 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package gplx.xowa.xtns.listings; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*;
import gplx.core.primitives.*;
import gplx.langs.htmls.*; import gplx.xowa.html.*;
import gplx.xowa.langs.*;
import gplx.xowa.parsers.*; import gplx.xowa.parsers.xndes.*;
public class Listing_xnde implements Xox_xnde, Xop_xnde_atr_parser {
import gplx.langs.htmls.*; import gplx.xowa.htmls.*;
import gplx.xowa.langs.*; import gplx.xowa.langs.msgs.*;
import gplx.xowa.parsers.*; import gplx.xowa.parsers.xndes.*; import gplx.xowa.parsers.htmls.*;
public class Listing_xnde implements Xox_xnde, Mwh_atr_itm_owner {
public Listing_xnde(int tag_id) {}
private byte[] xatr_name, xatr_alt, xatr_address, xatr_directions, xatr_phone, xatr_tollfree, xatr_email, xatr_fax, xatr_url, xatr_hours, xatr_price, xatr_checkin, xatr_checkout;
private int xatr_lat = Xatr_meridian_null, xatr_long = Xatr_meridian_null;
public void Xatr_parse(Xowe_wiki wiki, byte[] src, Xop_xatr_itm xatr, Object xatr_obj) {
if (xatr_obj == null) return;
byte xatr_tid = ((Byte_obj_val)xatr_obj).Val();
switch (xatr_tid) {
case Listing_xatrs.Tid_name: xatr_name = xatr.Val_as_bry__blank_to_null(src); break;
case Listing_xatrs.Tid_alt: xatr_alt = xatr.Val_as_bry__blank_to_null(src); break;
case Listing_xatrs.Tid_address: xatr_address = xatr.Val_as_bry__blank_to_null(src); break;
case Listing_xatrs.Tid_directions: xatr_directions = xatr.Val_as_bry__blank_to_null(src); break;
case Listing_xatrs.Tid_phone: xatr_phone = xatr.Val_as_bry__blank_to_null(src); break;
case Listing_xatrs.Tid_tollfree: xatr_tollfree = xatr.Val_as_bry__blank_to_null(src); break;
case Listing_xatrs.Tid_email: xatr_email = xatr.Val_as_bry__blank_to_null(src); break;
case Listing_xatrs.Tid_fax: xatr_fax = xatr.Val_as_bry__blank_to_null(src); break;
case Listing_xatrs.Tid_url: xatr_url = xatr.Val_as_bry__blank_to_null(src); break;
case Listing_xatrs.Tid_hours: xatr_hours = xatr.Val_as_bry__blank_to_null(src); break;
case Listing_xatrs.Tid_price: xatr_price = xatr.Val_as_bry__blank_to_null(src); break;
case Listing_xatrs.Tid_checkin: xatr_checkin = xatr.Val_as_bry__blank_to_null(src); break;
case Listing_xatrs.Tid_checkout: xatr_checkout = xatr.Val_as_bry__blank_to_null(src); break;
case Listing_xatrs.Tid_lat: xatr_lat = xatr.Val_as_int_or(src, Xatr_meridian_null); break;
case Listing_xatrs.Tid_long: xatr_long = xatr.Val_as_int_or(src, Xatr_meridian_null); break;
public void Xatr__set(Xowe_wiki wiki, byte[] src, Mwh_atr_itm xatr, Object xatr_id_obj) {
if (xatr_id_obj == null) return;
Byte_obj_val xatr_id = (Byte_obj_val)xatr_id_obj;
switch (xatr_id.Val()) {
case Listing_xatrs.Tid_name: xatr_name = xatr.Val_as_bry__blank_to_null(); break;
case Listing_xatrs.Tid_alt: xatr_alt = xatr.Val_as_bry__blank_to_null(); break;
case Listing_xatrs.Tid_address: xatr_address = xatr.Val_as_bry__blank_to_null(); break;
case Listing_xatrs.Tid_directions: xatr_directions = xatr.Val_as_bry__blank_to_null(); break;
case Listing_xatrs.Tid_phone: xatr_phone = xatr.Val_as_bry__blank_to_null(); break;
case Listing_xatrs.Tid_tollfree: xatr_tollfree = xatr.Val_as_bry__blank_to_null(); break;
case Listing_xatrs.Tid_email: xatr_email = xatr.Val_as_bry__blank_to_null(); break;
case Listing_xatrs.Tid_fax: xatr_fax = xatr.Val_as_bry__blank_to_null(); break;
case Listing_xatrs.Tid_url: xatr_url = xatr.Val_as_bry__blank_to_null(); break;
case Listing_xatrs.Tid_hours: xatr_hours = xatr.Val_as_bry__blank_to_null(); break;
case Listing_xatrs.Tid_price: xatr_price = xatr.Val_as_bry__blank_to_null(); break;
case Listing_xatrs.Tid_checkin: xatr_checkin = xatr.Val_as_bry__blank_to_null(); break;
case Listing_xatrs.Tid_checkout: xatr_checkout = xatr.Val_as_bry__blank_to_null(); break;
case Listing_xatrs.Tid_lat: xatr_lat = xatr.Val_as_int_or(Xatr_meridian_null); break;
case Listing_xatrs.Tid_long: xatr_long = xatr.Val_as_int_or(Xatr_meridian_null); break;
}
}
private void Init_args() {
@@ -68,13 +68,12 @@ public class Listing_xnde implements Xox_xnde, Xop_xnde_atr_parser {
this.wiki = wiki; this.parser = wiki.Parser_mgr().Main(); this.msg_mgr = wiki.Lang().Msg_mgr();
xtn_mgr = (Listing_xtn_mgr)wiki.Xtn_mgr().Get_or_fail(Listing_xtn_mgr.Xtn_key_static);
if (xtn_mgr == null || !xtn_mgr.Enabled()) return;
Xoae_app app = wiki.Appe();
Xop_xatr_itm[] atrs = Xop_xatr_itm.Xatr_parse(app, this, Listing_xatrs.Key_hash, wiki, src, xnde);
Mwh_atr_itm[] atrs = Xox_xnde_.Xatr__set(wiki, this, Listing_xatrs.Key_hash, src, xnde);
Init_args();
Html_wtr hwtr = xtn_mgr.Hwtr();
if (!Bld_by_template(xnde, atrs, src)) {
Bld_by_args(xtn_mgr, hwtr, xnde, src);
html_output = hwtr.Xto_bry_and_clear();
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) {
@@ -83,26 +82,26 @@ public class Listing_xnde implements Xox_xnde, Xop_xnde_atr_parser {
else
bfr.Add(html_output);
}
private boolean Bld_by_template(Xop_xnde_tkn xnde, Xop_xatr_itm[] atrs, byte[] src) {
private boolean Bld_by_template(Xop_xnde_tkn xnde, Mwh_atr_itm[] atrs, byte[] src) {
byte[] listings_template = xtn_mgr.Listings_template();
if (listings_template == null) return false;
Bry_bfr bfr = wiki.Utl__bfr_mkr().Get_b512();
bfr.Add(Xoa_consts.Invk_bgn); // "{{"
bfr.Add(Bry__invk_bgn); // "{{"
bfr.Add(listings_template); // name
int atrs_len = atrs.length;
for (int i = 0; i < atrs_len; i++) {
Xop_xatr_itm atr = atrs[i];
Mwh_atr_itm atr = atrs[i];
bfr.Add_byte_pipe(); // "|"
byte[] atr_key = atr.Key_bry(); if (atr_key == null) continue; // skip keyless atrs; PAGE:nl.v:Rome;EX:<sleep phone='' "abc"/> DATE:2014-06-04
bfr.Add(atr_key); // key
bfr.Add_byte(Byte_ascii.Eq); // "="
bfr.Add(atr.Val_as_bry(src)); // val; NOTE: must use Val_as_bry(src), not Val_bry, else int or "" will not be captured; DATE:2014-05-21
bfr.Add(atr.Val_as_bry()); // val; NOTE: must use Val_as_bry(src), not Val_bry, else int or "" will not be captured; DATE:2014-05-21
}
if (xnde.CloseMode() == Xop_xnde_tkn.CloseMode_pair) {
bfr.Add_byte_pipe(); // "|"
bfr.Add_mid(src, xnde.Tag_open_end(), xnde.Tag_close_bgn());
}
bfr.Add(Xoa_consts.Invk_end); // "}}"
bfr.Add(Bry__invk_end); // "}}"
Xop_ctx sub_ctx = Xop_ctx.new_sub_(wiki);
html_output = wiki.Parser_mgr().Main().Parse_text_to_html(sub_ctx, bfr.To_bry_and_rls());
return true;
@@ -110,7 +109,7 @@ public class Listing_xnde implements Xox_xnde, Xop_xnde_atr_parser {
private void Bld_by_args(Listing_xtn_mgr xtn_mgr, Html_wtr wtr, Xop_xnde_tkn xnde, byte[] src) {
wtr.Nde_full(Tag_strong, xatr_name); // <strong>name</strong>
if (xatr_url != null)
wtr.Nde_full_atrs(Tag_a, wtr.Xto_bry_and_clear(), false
wtr.Nde_full_atrs(Tag_a, wtr.To_bry_and_clear(), false
, Atr_a_href , xatr_url
, Atr_a_class , Atr_a_class_external_text
, Atr_a_rel , Atr_a_rel_nofollow
@@ -200,11 +199,11 @@ public class Listing_xnde implements Xox_xnde, Xop_xnde_atr_parser {
if (position_template == null) return null;
Bry_bfr tmp_bfr = wiki.Utl__bfr_mkr().Get_b128().Mkr_rls();
byte[] rv = position_template.Fmt(tmp_bfr, xatr_lat, xatr_long);
tmp_bfr.Add(Xoa_consts.Invk_bgn); // "{{"
tmp_bfr.Add(Bry__invk_bgn); // "{{"
tmp_bfr.Add(rv); // rv is not message, but actually template precursor
tmp_bfr.Add(Xoa_consts.Invk_end); // "}}"
tmp_bfr.Add(Bry__invk_end); // "}}"
Xop_ctx sub_ctx = Xop_ctx.new_sub_(wiki);
rv = wiki.Parser_mgr().Main().Parse_text_to_html(sub_ctx, tmp_bfr.Xto_bry_and_clear());
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;
return position_text.Fmt(tmp_bfr, rv);
@@ -228,6 +227,10 @@ public class Listing_xnde implements Xox_xnde, Xop_xnde_atr_parser {
, Txt_dot_space = Bry_.new_a7(". ")
, Txt_mailto = Bry_.new_a7("mailto:")
;
private static final byte[]
Bry__invk_bgn = gplx.xowa.parsers.tmpls.Xop_curly_bgn_lxr.Hook
, Bry__invk_end = gplx.xowa.parsers.tmpls.Xop_curly_end_lxr.Hook
;
}
class Listing_xatrs {
public static final byte Tid_name = 0, Tid_alt = 1, Tid_address = 2, Tid_directions = 3, Tid_phone = 4, Tid_tollfree = 5, Tid_email = 6, Tid_fax = 7, Tid_url = 8

View File

@@ -16,7 +16,7 @@ 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.listings; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*;
import org.junit.*; import gplx.xowa.langs.*;
import org.junit.*; import gplx.xowa.langs.*; import gplx.xowa.langs.msgs.*;
public class Listing_xnde_basic_tst {
private Xop_fxt fxt = new Xop_fxt();
private Listing_xtn_mgr listings_xtn_mgr;

View File

@@ -17,7 +17,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package gplx.xowa.xtns.listings; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*;
import gplx.langs.htmls.*;
import gplx.xowa.langs.*;
import gplx.xowa.langs.*; import gplx.xowa.langs.msgs.*;
import gplx.xowa.wikis.*;
import gplx.xowa.parsers.*;
public class Listing_xtn_mgr extends Xox_mgr_base {
@@ -63,7 +63,7 @@ public class Listing_xtn_mgr extends Xox_mgr_base {
hwtr.Nde_full_atrs(Listing_xnde.Tag_abbr, symbol_text, true
, Listing_xnde.Atr_a_title, Html_utl.Escape_html_as_bry(template_text)
);
rv = hwtr.Xto_bry_and_clear();
rv = hwtr.To_bry_and_clear();
}
else {
rv = template_text;

View File

@@ -17,7 +17,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package gplx.xowa.xtns.lst; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*;
import gplx.xowa.xtns.pfuncs.*;
import gplx.xowa.langs.*;
import gplx.xowa.langs.*; import gplx.xowa.langs.kwds.*;
import gplx.xowa.parsers.*; import gplx.xowa.parsers.tmpls.*;
public class Lst_pfunc_lst extends Pf_func_base {
@Override public int Id() {return Xol_kwd_grp_.Id_lst;}
@@ -29,5 +29,5 @@ public class Lst_pfunc_lst extends Pf_func_base {
byte[] sect_end = Pf_func_.Eval_arg_or(ctx, src, caller, self, args_len, 1, Lst_pfunc_wkr.Null_arg);
new Lst_pfunc_wkr().Init_include(src_ttl_bry, sect_bgn, sect_end).Exec(bfr, ctx);
}
public static final Lst_pfunc_lst _ = new Lst_pfunc_lst(); Lst_pfunc_lst() {}
public static final Lst_pfunc_lst Instance = new Lst_pfunc_lst(); Lst_pfunc_lst() {}
}

View File

@@ -89,7 +89,7 @@ class Lst_pfunc_lst_fxt {
if (fxt == null) fxt = new Xop_fxt();
fxt.Reset();
fxt.Wiki().Cache_mgr().Free_mem_all();
Io_mgr.I.InitEngine_mem();
Io_mgr.Instance.InitEngine_mem();
return this;
}
public Xop_fxt Fxt() {return fxt;} private Xop_fxt fxt;

View File

@@ -17,7 +17,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package gplx.xowa.xtns.lst; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*;
import gplx.xowa.xtns.pfuncs.*;
import gplx.xowa.langs.*;
import gplx.xowa.langs.*; import gplx.xowa.langs.kwds.*;
import gplx.xowa.parsers.*; import gplx.xowa.parsers.tmpls.*;
public class Lst_pfunc_lstx extends Pf_func_base {
@Override public int Id() {return Xol_kwd_grp_.Id_lstx;}
@@ -29,5 +29,5 @@ public class Lst_pfunc_lstx extends Pf_func_base {
byte[] sect_replace = Pf_func_.Eval_arg_or(ctx, src, caller, self, args_len, 1, Lst_pfunc_wkr.Null_arg);
new Lst_pfunc_wkr().Init_exclude(src_ttl_bry, sect_exclude, sect_replace).Exec(bfr, ctx);
}
public static final Lst_pfunc_lstx _ = new Lst_pfunc_lstx(); Lst_pfunc_lstx() {}
public static final Lst_pfunc_lstx Instance = new Lst_pfunc_lstx(); Lst_pfunc_lstx() {}
}

View File

@@ -16,7 +16,7 @@ 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.lst; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*;
import gplx.xowa.nss.*;
import gplx.xowa.wikis.nss.*;
import gplx.xowa.parsers.*; import gplx.xowa.parsers.tmpls.*;
public class Lst_pfunc_wkr {
private boolean mode_include = true;

View File

@@ -17,37 +17,36 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package gplx.xowa.xtns.lst; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*;
import gplx.core.primitives.*;
import gplx.xowa.langs.*; import gplx.xowa.html.*;
import gplx.xowa.parsers.*; import gplx.xowa.parsers.xndes.*;
public class Lst_section_nde implements Xox_xnde, Xop_xnde_atr_parser {
import gplx.xowa.langs.*; import gplx.xowa.htmls.*;
import gplx.xowa.parsers.*; import gplx.xowa.parsers.xndes.*; import gplx.xowa.parsers.htmls.*;
public class Lst_section_nde implements Xox_xnde, Mwh_atr_itm_owner {
public byte[] Section_name() {return section_name;} private byte[] section_name;
public void Xatr_parse(Xowe_wiki wiki, byte[] src, Xop_xatr_itm xatr, Object xatr_obj) {
if (xatr_obj == null) return;
byte xatr_tid = ((Byte_obj_val)xatr_obj).Val();
switch (xatr_tid) {
public void Xatr__set(Xowe_wiki wiki, byte[] src, Mwh_atr_itm xatr, Object xatr_id_obj) {
if (xatr_id_obj == null) return;
byte xatr_id = ((Byte_obj_val)xatr_id_obj).Val();
switch (xatr_id) {
case Xatr_name: case Xatr_bgn: case Xatr_end:
section_name = xatr.Val_as_bry(src); name_tid = xatr_tid; break;
section_name = xatr.Val_as_bry(); name_tid = xatr_id; break;
}
}
public Xop_xnde_tkn Xnde() {return xnde;} private Xop_xnde_tkn xnde;
public byte Name_tid() {return name_tid;} private byte name_tid;
public void Xtn_parse(Xowe_wiki wiki, Xop_ctx ctx, Xop_root_tkn root, byte[] src, Xop_xnde_tkn xnde) {
Xoae_app app = ctx.App();
Xop_xatr_itm[] atrs = Xop_xatr_itm.Xatr_parse(app, this, wiki.Lang().Xatrs_section(), wiki, src, xnde);
Mwh_atr_itm[] atrs = Xox_xnde_.Xatr__set(wiki, this, wiki.Lang().Xatrs_section(), src, xnde);
this.xnde = xnde;
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 static final byte Xatr_name = 0, Xatr_bgn = 1, Xatr_end = 2;
public static Hash_adp_bry new_xatrs_(Xol_lang lang) {
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
rv.Add_str_byte("name", Lst_section_nde.Xatr_name);
Xatrs_add(rv, "begin", "end");
switch (lang.Lang_id()) { // NOTE: as of v315572b, i18n is done directly in code, not in magic.php; am wary of adding keywords for general words like begin/end, so adding them manually per language; DATE:2013-02-09
case Xol_lang_itm_.Id_de: Xatrs_add(rv, "Anfang", "Ende"); break;
case Xol_lang_itm_.Id_he: Xatrs_add(rv, "התחלה", "סוף"); break;
case Xol_lang_itm_.Id_pt: Xatrs_add(rv, "começo", "fim"); break;
case Xol_lang_stub_.Id_de: Xatrs_add(rv, "Anfang", "Ende"); break;
case Xol_lang_stub_.Id_he: Xatrs_add(rv, "התחלה", "סוף"); break;
case Xol_lang_stub_.Id_pt: Xatrs_add(rv, "começo", "fim"); break;
}
return rv;
}

View File

@@ -23,7 +23,7 @@ public class Lst_section_nde_tst {
fxt.Test_parse_page_all_str("a<section name=\"b\">c</section>d", "ad");
}
@Test public void German() { // PURPOSE: non-english tags for section DATE:2014-07-18
fxt.Lang_by_id_(Xol_lang_itm_.Id_de);
fxt.Lang_by_id_(Xol_lang_stub_.Id_de);
fxt.Test_parse_page_all_str("a<abschnitt name=\"b\">c</abschnitt>d" , "ad"); // check that German works
fxt.Test_parse_page_all_str("a<section name=\"b\">c</section>d" , "ad"); // check that English still works
fxt.Test_parse_page_all_str("a<trecho name=\"b\">c</trecho>d" , "a&lt;trecho name=&quot;b&quot;&gt;c&lt;/trecho&gt;d"); // check that Portuguese does not work

View File

@@ -18,7 +18,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
package gplx.xowa.xtns.mapSources; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*;
import gplx.core.primitives.*;
import gplx.xowa.xtns.pfuncs.*;
import gplx.xowa.langs.*;
import gplx.xowa.langs.*; import gplx.xowa.langs.kwds.*;
import gplx.xowa.parsers.*; import gplx.xowa.parsers.tmpls.*;
public class Map_dd2dms_func extends Pf_func_base {
@Override public int Id() {return Xol_kwd_grp_.Id_mapSources_dd2dms;}
@@ -43,21 +43,21 @@ public class Map_dd2dms_func extends Pf_func_base {
}
}
tmp_bfr.Mkr_rls();
Map_math map_math = Map_math._;
Map_math map_math = Map_math.Instance;
if (map_math.Ctor(coord, prec, Bry_.Empty, 2))
bfr.Add(map_math.Get_dms(plus, minus));
else
map_math.Fail(ctx, src, self, bfr, this.Name());
}
public static void Deg_to_dms(Bry_bfr bfr, boolean coord_is_lng, byte[] coord, int prec) {
Map_math map_math = Map_math._;
Map_math map_math = Map_math.Instance;
if (map_math.Ctor(coord, prec, Bry_.Empty, 2)) {
bfr.Add(map_math.Get_dms(Bry_.Empty, Bry_.Empty));
byte[] dir = coord_is_lng ? map_math.Coord_dir_ns() : map_math.Coord_dir_ew();
bfr.Add_byte_space().Add(dir);
}
}
public static final Map_dd2dms_func _ = new Map_dd2dms_func(); Map_dd2dms_func() {}
public static final Map_dd2dms_func Instance = new Map_dd2dms_func(); Map_dd2dms_func() {}
private static final byte Key_tid_plus = 1, Key_tid_minus = 2, Key_tid_precision = 3;
private static final Hash_adp_bry Key_hash = Hash_adp_bry.cs()
.Add_str_byte("plus" , Key_tid_plus)

View File

@@ -17,7 +17,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package gplx.xowa.xtns.mapSources; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*;
import gplx.xowa.xtns.pfuncs.*;
import gplx.xowa.langs.*;
import gplx.xowa.langs.*; import gplx.xowa.langs.kwds.*;
import gplx.xowa.parsers.*; import gplx.xowa.parsers.tmpls.*;
public class Map_deg2dd_func extends Pf_func_base {
@Override public int Id() {return Xol_kwd_grp_.Id_mapSources_deg2dd;}
@@ -26,11 +26,11 @@ public class Map_deg2dd_func extends Pf_func_base {
byte[] coord = Eval_argx(ctx, src, caller, self);
byte[] precision_bry = Pf_func_.Eval_val_or(ctx, src, caller, self, self.Args_len(), 0, null);
int prec = precision_bry == null ? -1 : Bry_.To_int_or(precision_bry, -1);
Map_math map_math = Map_math._;
Map_math map_math = Map_math.Instance;
if (map_math.Ctor(coord, prec, Bry_.Empty, 2))
bfr.Add_double(map_math.Coord_dec());
else
map_math.Fail(ctx, src, self, bfr, this.Name());
}
public static final Map_deg2dd_func _ = new Map_deg2dd_func(); Map_deg2dd_func() {}
public static final Map_deg2dd_func Instance = new Map_deg2dd_func(); Map_deg2dd_func() {}
}

View File

@@ -17,7 +17,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package gplx.xowa.xtns.mapSources; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*;
import gplx.core.primitives.*;
import gplx.xowa.langs.*;
import gplx.xowa.langs.*; import gplx.xowa.langs.msgs.*; import gplx.xowa.langs.kwds.*;
import gplx.xowa.xtns.pfuncs.*;
import gplx.xowa.parsers.*; import gplx.xowa.parsers.tmpls.*;
public class Map_geolink_func extends Pf_func_base {
@@ -66,7 +66,7 @@ public class Map_geolink_func extends Pf_func_base {
private static final Xol_msg_itm tmp_msg_itm = new Xol_msg_itm(-1, Bry_.Empty);
private static byte[] Xto_coord(Bry_bfr bfr, Map_math math, boolean pass, byte[] dir, byte[] or) {
return pass
? bfr.Add_double(Math_.Abs_double(math.Dec())).Add_byte(Byte_ascii.Underline).Add(dir).Xto_bry_and_clear()
? bfr.Add_double(Math_.Abs_double(math.Dec())).Add_byte(Byte_ascii.Underline).Add(dir).To_bry_and_clear()
: or
;
}
@@ -78,7 +78,7 @@ public class Map_geolink_func extends Pf_func_base {
}
private static byte[] Xto_dec(Bry_bfr bfr, Map_math math, boolean pass) {
return pass
? bfr.Add_double(math.Dec()).Xto_bry_and_clear()
? bfr.Add_double(math.Dec()).To_bry_and_clear()
: Bry_arg_5_fail
;
}
@@ -90,7 +90,7 @@ public class Map_geolink_func extends Pf_func_base {
/*
return wfMsgReplaceArgs( $pattern, $args );
*/
public static final Map_geolink_func _ = new Map_geolink_func(); Map_geolink_func() {}
public static final Map_geolink_func Instance = new Map_geolink_func(); Map_geolink_func() {}
private static final byte Key_tid_lat_val = 1, Key_tid_long_val = 2, Key_tid_lat_pos = 3, Key_tid_lat_neg = 4, Key_tid_long_pos = 5, Key_tid_long_min = 6, Key_tid_prec = 7;
private static final Hash_adp_bry Key_hash = Hash_adp_bry.cs()
.Add_str_byte("lat" , Key_tid_lat_val)

View File

@@ -136,7 +136,7 @@ class Map_math {// REF.MW:MapSources_math.php
letter = minus;
if (letter != null)
tmp_bfr.Add_byte_space().Add(letter);
return tmp_bfr.Xto_bry_and_clear();
return tmp_bfr.To_bry_and_clear();
}
private void Parse_input(byte[] src) { // REF.MW: toDec
src = Parse_input_normalize(tmp_bfr, src);
@@ -268,7 +268,7 @@ class Map_math {// REF.MW:MapSources_math.php
i = Input_trie.Match_pos();
}
}
return bfr.Xto_bry_and_clear_and_trim();
return bfr.To_bry_and_clear_and_trim();
}
private static final byte Dir_unknown_id = 0, Dir_lat_id = 1, Dir_long_id = 2;
public static final byte[] Dir_lat_bry = Bry_.new_a7("lat"), Dir_long_bry = Bry_.new_a7("long");
@@ -315,5 +315,5 @@ class Map_math {// REF.MW:MapSources_math.php
.Add_str_byte("e" , Input_tid_compass)
.Add_str_byte("w" , Input_tid_compass)
;
public static final Map_math _ = new Map_math();
public static final Map_math Instance = new Map_math();
}

View File

@@ -17,7 +17,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package gplx.xowa.xtns.massMessage; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*;
import gplx.xowa.xtns.pfuncs.*;
import gplx.xowa.langs.*;
import gplx.xowa.langs.*; import gplx.xowa.langs.kwds.*;
import gplx.xowa.parsers.*; import gplx.xowa.parsers.tmpls.*;
public class Message_target_func extends Pf_func_base {
@Override public int Id() {return Xol_kwd_grp_.Id_massMessage_target;}
@@ -26,5 +26,5 @@ public class Message_target_func extends Pf_func_base {
byte[] argx = Eval_argx(ctx, src, caller, self); if (argx == null) return;
bfr.Add(Xop_tkn_.Lnki_bgn).Add(argx).Add(Xop_tkn_.Lnki_end); // TODO: evaluate 2nd arg; {{#target:A|en.wikipedia.org}}
}
public static final Message_target_func _ = new Message_target_func(); Message_target_func() {}
public static final Message_target_func Instance = new Message_target_func(); Message_target_func() {}
}

View File

@@ -16,11 +16,11 @@ 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.math; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*;
import gplx.xowa.html.*;
import gplx.xowa.parsers.*; import gplx.xowa.parsers.logs.*; import gplx.xowa.parsers.xndes.*;
public class Math_nde implements Xox_xnde, Xop_xnde_atr_parser {
import gplx.xowa.htmls.*;
import gplx.xowa.parsers.*; import gplx.xowa.parsers.logs.*; import gplx.xowa.parsers.xndes.*; import gplx.xowa.parsers.htmls.*;
public class Math_nde implements Xox_xnde {
public Xop_xnde_tkn Xnde() {throw Err_.new_unimplemented();}
public void Xatr_parse(Xowe_wiki wiki, byte[] src, Xop_xatr_itm xatr, Object xatr_obj) {}
public void Xatr__set(Xowe_wiki wiki, byte[] src, Mwh_atr_itm xatr, Object xatr_id_obj) {}
public void Xtn_parse(Xowe_wiki wiki, Xop_ctx ctx, Xop_root_tkn root, byte[] src, Xop_xnde_tkn xnde) {
Xof_math_mgr math_mgr = wiki.Appe().File_mgr().Math_mgr();
boolean log_wkr_enabled = Log_wkr != Xop_log_basic_wkr.Null; if (log_wkr_enabled) Log_wkr.Log_end_xnde(ctx.Cur_page(), Xop_log_basic_wkr.Tid_math, src, xnde);

View File

@@ -16,8 +16,8 @@ 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.math; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*;
import gplx.xowa.html.*;
import gplx.xowa.parsers.*; import gplx.xowa.parsers.xndes.*;
import gplx.xowa.htmls.*;
import gplx.xowa.parsers.*; import gplx.xowa.parsers.xndes.*; import gplx.xowa.parsers.vnts.*;
public class Xof_math_html_wtr {
private Xof_math_itm tmp_math_itm = new Xof_math_itm();
private Bry_fmtr math_fmtr_latex = Bry_fmtr.new_("<img id='xowa_math_img_~{math_idx}' src='' width='' height=''/><span id='xowa_math_txt_~{math_idx}'>~{math_text}</span>", "math_idx", "math_text");
@@ -36,15 +36,20 @@ public class Xof_math_html_wtr {
bfr.Add_str(tmp_math_itm.Png_url().To_http_file_str());
bfr.Add(Xoh_consts.__inline_quote);
}
else {
int id = page.File_math().Count();
Xof_math_itm new_math_itm = tmp_math_itm.Clone().Id_(id);
Bry_fmtr math_fmtr = renderer_is_latex ? math_fmtr_latex : math_fmtr_mathjax;
math_fmtr.Bld_bfr_many(tmp_bfr, id, math_bry);
bfr.Add_bfr_and_clear(tmp_bfr);
if (enabled && renderer_is_latex) // NOTE: only generate images if math is enabled; otherwise "downloading" prints at bottom of screen, but no action (also a lot of file IO)
page.File_math().Add(new_math_itm);
}
else
Write_for_mathjax(bfr, page, enabled, renderer_is_latex, math_bry, tmp_bfr);
}
private void Write_for_mathjax(Bry_bfr bfr, Xoae_page page, boolean enabled, boolean renderer_is_latex, byte[] math_bry, Bry_bfr tmp_bfr) {
int id = page.File_math().Count();
Xof_math_itm new_math_itm = tmp_math_itm.Clone().Id_(id);
Bry_fmtr math_fmtr = renderer_is_latex ? math_fmtr_latex : math_fmtr_mathjax;
boolean armor_math = page.Lang().Vnt_mgr().Enabled() && !renderer_is_latex; // REF.MW:LangConverter.php|armourMath
if (armor_math) bfr.Add(Vnt_convert_lang.Bry__armor_bgn);
math_fmtr.Bld_bfr_many(tmp_bfr, id, math_bry);
bfr.Add_bfr_and_clear(tmp_bfr);
if (armor_math) bfr.Add(Vnt_convert_lang.Bry__armor_end);
if (enabled && renderer_is_latex) // NOTE: only generate images if math is enabled; otherwise "downloading" prints at bottom of screen, but no action (also a lot of file IO)
page.File_math().Add(new_math_itm);
}
private static byte[] Escape_tex(Bry_bfr tmp_bfr, boolean mathjax, byte[] bry) {return Escape_tex(false, tmp_bfr, mathjax, bry, 0, bry.length);}
private static byte[] Escape_tex(boolean write_to_bfr, Bry_bfr bfr, boolean mathjax, byte[] bry, int bgn, int end) {
@@ -80,6 +85,6 @@ public class Xof_math_html_wtr {
if (write_to_bfr)
return null;
else
return dirty ? bfr.Xto_bry_and_clear() : bry;
return dirty ? bfr.To_bry_and_clear() : bry;
}
}

View File

@@ -38,7 +38,7 @@ public class Xof_math_mgr implements GfoInvkAble {
}
public boolean Find_itm(Xof_math_itm rv, String wiki_key, byte[] math_bry) {
Make_itm(rv, wiki_key, math_bry);
return Io_mgr.I.ExistsFil(rv.Png_url());
return Io_mgr.Instance.ExistsFil(rv.Png_url());
}
public boolean Renderer_is_mathjax() {return renderer_is_mathjax;} public void Renderer_is_mathjax_(boolean v) {renderer_is_mathjax = v;} private boolean renderer_is_mathjax = true;
private Io_url Make_png_fil(Io_url math_dir, String hash) {
@@ -49,7 +49,7 @@ public class Xof_math_mgr implements GfoInvkAble {
.Add(String_.CharAt(hash, 2)).Add(Math_dir_spr)
.Add(hash).Add(".png")
;
return Io_url_.new_fil_(tmp_sb.Xto_str_and_clear());
return Io_url_.new_fil_(tmp_sb.To_str_and_clear());
}
public boolean MakePng(byte[] math, String hash, Io_url png_url, String prog_fmt) {
if (!enabled) return false;
@@ -57,14 +57,14 @@ public class Xof_math_mgr implements GfoInvkAble {
Io_url tex_url = tmp_dir.GenSubFil("xowa_math_temp.tex");
String latex = Latex_wrap(math);
prog_fmt = String_.Replace(prog_fmt, "~", "~~"); // double-up ~ or else will break in progress bar
Io_mgr.I.SaveFilStr(tex_url, latex);
Io_mgr.Instance.SaveFilStr(tex_url, latex);
cmd_convert_tex_to_dvi.Prog_fmt_(prog_fmt + " tex_to_dvi: ~{process_seconds} second(s); ~{process_exe_name} ~{process_exe_args}");
boolean pass = cmd_convert_tex_to_dvi.Run(tex_url.Raw(), tmp_dir.Xto_api()).Exit_code_pass();
if (!pass) {
app.Usr_dlg().Warn_many(GRP_KEY, "tex_to_dvi.fail", "fail: tex_to_dvi: error=~{0} latex=~{1}", cmd_convert_tex_to_dvi.Rslt_out(), latex);
}
// NOTE: latex sometimes throws errors, but will generate .dvi; for sake of simplicity; always try to run dvipng
Io_mgr.I.CreateDirIfAbsent(png_url.OwnerDir());
Io_mgr.Instance.CreateDirIfAbsent(png_url.OwnerDir());
cmd_convert_dvi_to_png.Prog_fmt_(prog_fmt + " dvi_to_png: ~{process_seconds} second(s); ~{process_exe_name} ~{process_exe_args}");
pass = cmd_convert_dvi_to_png.Run(tex_url.GenNewExt(".dvi"), png_url, tmp_dir.Xto_api()).Exit_code_pass();
if (!pass) {
@@ -93,7 +93,7 @@ public class Xof_math_mgr implements GfoInvkAble {
));
public boolean Enabled() {return enabled;} public Xof_math_mgr Enabled_(boolean v) {enabled = v; return this;} private boolean enabled = true;
public Object Invk(GfsCtx ctx, int ikey, String k, GfoMsg m) {
if (ctx.Match(k, Invk_enabled)) return Yn.Xto_str(enabled);
if (ctx.Match(k, Invk_enabled)) return Yn.To_str(enabled);
else if (ctx.Match(k, Invk_enabled_)) enabled = m.ReadYn("v");
else if (ctx.Match(k, Invk_renderer)) return renderer_is_mathjax ? "mathjax" : "latex";
else if (ctx.Match(k, Invk_renderer_)) renderer_is_mathjax = String_.Eq(m.ReadStr("v"), "mathjax");

View File

@@ -33,4 +33,9 @@ public class Xof_math_mgr_html_tst {
@Test public void Quote() { // PURPOSE: assert that quote is not escaped; DATE:2014-07-20
fxt.Test_html_full_str("<math>a\"b</math>", "<span id='xowa_math_txt_0'>a\"b</span>");
}
@Test public void Vnt() { // PURPOSE: if vnt, armor math; PAGE:sr.w:Земља; DATE:2015-10-11
fxt.Wiki().Lang().Vnt_mgr().Enabled_(Bool_.Y);
fxt.Test_html_full_str("<math>abc</math>", "-{R|<span id='xowa_math_txt_0'>abc</span>}-"); // NOTE: this also armors the id which is good for the mathjax.js
fxt.Wiki().Lang().Vnt_mgr().Enabled_(Bool_.N);
}
}

View File

@@ -56,7 +56,7 @@ public class Xof_math_subst_regy {
}
for (int i = 0; i < dollarSignCount; i++)
bfr.Add_byte(Byte_ascii.Dollar);
return bfr.Xto_bry_and_clear_and_trim();
return bfr.To_bry_and_clear_and_trim();
} boolean init = false;
public Xof_math_subst_regy Init() {
if (init) return this;

View File

@@ -77,7 +77,7 @@ public class Texvc_root implements Texvc_tkn {
if (regy_tkn.Update_end(uid, end))
regy_nde.Update_end(uid, end);
}
public String Print_tex_str(Bry_bfr bfr) {Print_tex_bry(bfr, src, 0); return bfr.Xto_str_and_clear();}
public String Print_tex_str(Bry_bfr bfr) {Print_tex_bry(bfr, src, 0); return bfr.To_str_and_clear();}
public void Print_tex_bry(Bry_bfr bfr, byte[] src, int indent) {
int subs_len = Subs__len();
for (int i = 0; i < subs_len; ++i) {
@@ -85,7 +85,7 @@ public class Texvc_root implements Texvc_tkn {
sub_tkn.Print_tex_bry(bfr, src, indent + 1);
}
}
public String Print_dbg_str(Bry_bfr bfr) {Print_dbg_bry(bfr, 0); return bfr.Xto_str_and_clear();}
public String Print_dbg_str(Bry_bfr bfr) {Print_dbg_bry(bfr, 0); return bfr.To_str_and_clear();}
public void Print_dbg_bry(Bry_bfr bfr, int indent) {
int len = this.Subs__len();
for (int i = 0; i < len; ++i) {

View File

@@ -49,7 +49,7 @@ public class Texvc_tkn_ {
int len = ary.length;
for (int i = 0; i < len; ++i)
ary[i].Print_dbg_bry(bfr, 0);
return bfr.Xto_str_and_clear();
return bfr.To_str_and_clear();
}
public static void Print_dbg_str__bgn(Bry_bfr bfr, int indent, Texvc_tkn tkn) {
if (indent > 0) bfr.Add_byte_repeat(Byte_ascii.Space, indent * 2);

View File

@@ -17,7 +17,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package gplx.xowa.xtns.pfuncs; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*;
import gplx.core.primitives.*;
import gplx.xowa.langs.*;
import gplx.xowa.langs.*; import gplx.xowa.langs.msgs.*; import gplx.xowa.langs.kwds.*;
import gplx.xowa.xtns.pfuncs.ifs.*; import gplx.xowa.xtns.pfuncs.times.*; import gplx.xowa.xtns.pfuncs.numbers.*; import gplx.xowa.xtns.pfuncs.ttls.*; import gplx.xowa.xtns.pfuncs.langs.*; import gplx.xowa.xtns.pfuncs.strings.*; import gplx.xowa.xtns.pfuncs.stringutils.*; import gplx.xowa.xtns.pfuncs.pages.*; import gplx.xowa.xtns.pfuncs.wikis.*;
import gplx.xowa.parsers.*; import gplx.xowa.parsers.tmpls.*;
public class Pf_func_ {
@@ -30,18 +30,18 @@ public class Pf_func_ {
nde.Key_tkn().Tmpl_evaluate(ctx, src, caller, bfr); // NOTE: must add key b/c parser functions do not have keys and some usages pass in xml_tkns; EX: {{#if|<a href='{{{1}}}'|}}; "<a href" should not be interpreted as key
if (nde.KeyTkn_exists()) bfr.Add_byte(Byte_ascii.Eq);
nde.Val_tkn().Tmpl_evaluate(ctx, src, caller, bfr);
return bfr.Xto_bry_and_clear_and_trim();
return bfr.To_bry_and_clear_and_trim();
}
public static byte[] Eval_val_or(Xop_ctx ctx, byte[] src, Xot_invk caller, Xot_invk self, int self_args_len, int i, byte[] or) {
if (i >= self_args_len) return or;
Bry_bfr bfr = Bry_bfr.new_();
Arg_nde_tkn nde = self.Args_get_by_idx(i);
nde.Val_tkn().Tmpl_evaluate(ctx, src, caller, bfr);
return bfr.Xto_bry_and_clear_and_trim();
return bfr.To_bry_and_clear_and_trim();
}
public static byte[] Eval_tkn(Bry_bfr bfr, Xop_ctx ctx, byte[] src, Xot_invk caller, Xop_tkn_itm tkn) {
tkn.Tmpl_evaluate(ctx, src, caller, bfr);
return bfr.Xto_bry_and_clear();
return bfr.To_bry_and_clear();
}
private static final Number_parser lhs_parser = new Number_parser().Hex_enabled_(true), rhs_parser = new Number_parser().Hex_enabled_(true);
public static boolean Eq_(byte[] lhs, byte[] rhs) { // PATCH.PHP: php allows "003" == "3.0"; ASSUME: numbers are either int or int-like decimal; long, float, decimal not supported
@@ -64,7 +64,7 @@ public class Pf_func_ {
if (rhs_parser.Has_err()) return false;
return lhs_parser.Has_frac() || rhs_parser.Has_frac() ? lhs_parser.Rv_as_dec().Eq(rhs_parser.Rv_as_dec()) : lhs_parser.Rv_as_int() == rhs_parser.Rv_as_int();
}
public static void Reg(gplx.xowa.langs.Xol_func_name_regy func_regy, Xol_lang lang) {
public static void Reg(gplx.xowa.langs.funcs.Xol_func_regy func_regy, Xol_lang_itm lang) {
Xol_kwd_mgr kwd_mgr = lang.Kwd_mgr();
int[] kwd_ary = Ary_get(!lang.Kwd_mgr__strx());
int len = kwd_ary.length;
@@ -295,7 +295,7 @@ public class Pf_func_ {
case Xol_kwd_grp_.Id_ttl_subj_txt:
case Xol_kwd_grp_.Id_ttl_subj_url:
case Xol_kwd_grp_.Id_ttl_talk_txt:
case Xol_kwd_grp_.Id_ttl_talk_url: return Pfunc_ttl._;
case Xol_kwd_grp_.Id_ttl_talk_url: return Pfunc_ttl.Instance;
case Xol_kwd_grp_.Id_site_sitename:
case Xol_kwd_grp_.Id_site_servername:
@@ -305,7 +305,7 @@ public class Pf_func_ {
case Xol_kwd_grp_.Id_site_stylepath:
case Xol_kwd_grp_.Id_site_contentlanguage:
case Xol_kwd_grp_.Id_site_directionmark:
case Xol_kwd_grp_.Id_site_currentversion: return Pfunc_wiki_props._;
case Xol_kwd_grp_.Id_site_currentversion: return Pfunc_wiki_props.Instance;
case Xol_kwd_grp_.Id_num_pages:
case Xol_kwd_grp_.Id_num_articles:
@@ -314,25 +314,25 @@ public class Pf_func_ {
case Xol_kwd_grp_.Id_num_views:
case Xol_kwd_grp_.Id_num_users:
case Xol_kwd_grp_.Id_num_users_active:
case Xol_kwd_grp_.Id_num_admins: return Pfunc_wiki_stats._;
case Xol_kwd_grp_.Id_num_admins: return Pfunc_wiki_stats.Instance;
case Xol_kwd_grp_.Id_page_id:
case Xol_kwd_grp_.Id_rev_id:
case Xol_kwd_grp_.Id_rev_pagesize:
case Xol_kwd_grp_.Id_rev_user:
case Xol_kwd_grp_.Id_rev_protectionlevel: return Pfunc_rev_props._;
case Xol_kwd_grp_.Id_page_displaytitle: return Pfunc_displaytitle._;
case Xol_kwd_grp_.Id_page_defaultsort: return Pfunc_defaultsort._;
case Xol_kwd_grp_.Id_noeditsection: return Pfunc_noeditsection._;
case Xol_kwd_grp_.Id_site_pagesincategory: return Pfunc_pagesincategory._;
case Xol_kwd_grp_.Id_rev_protectionlevel: return Pfunc_rev_props.Instance;
case Xol_kwd_grp_.Id_page_displaytitle: return Pfunc_displaytitle.Instance;
case Xol_kwd_grp_.Id_page_defaultsort: return Pfunc_defaultsort.Instance;
case Xol_kwd_grp_.Id_noeditsection: return Pfunc_noeditsection.Instance;
case Xol_kwd_grp_.Id_site_pagesincategory: return Pfunc_pagesincategory.Instance;
case Xol_kwd_grp_.Id_url_ns: return new Pfunc_ns(false);
case Xol_kwd_grp_.Id_url_nse: return new Pfunc_ns(true);
case Xol_kwd_grp_.Id_url_urlencode: return new Pfunc_urlencode();
case Xol_kwd_grp_.Id_str_lc: return new Pfunc_case(Xol_lang.Tid_lower, false);
case Xol_kwd_grp_.Id_str_lcfirst: return new Pfunc_case(Xol_lang.Tid_lower, true);
case Xol_kwd_grp_.Id_str_uc: return new Pfunc_case(Xol_lang.Tid_upper, false);
case Xol_kwd_grp_.Id_str_ucfirst: return new Pfunc_case(Xol_lang.Tid_upper, true);
case Xol_kwd_grp_.Id_str_lc: return new Pfunc_case(Xol_lang_itm.Tid_lower, false);
case Xol_kwd_grp_.Id_str_lcfirst: return new Pfunc_case(Xol_lang_itm.Tid_lower, true);
case Xol_kwd_grp_.Id_str_uc: return new Pfunc_case(Xol_lang_itm.Tid_upper, false);
case Xol_kwd_grp_.Id_str_ucfirst: return new Pfunc_case(Xol_lang_itm.Tid_upper, true);
case Xol_kwd_grp_.Id_str_padleft: return new Pfunc_pad(Xol_kwd_grp_.Id_str_padleft, false);
case Xol_kwd_grp_.Id_str_padright: return new Pfunc_pad(Xol_kwd_grp_.Id_str_padright, true);
case Xol_kwd_grp_.Id_str_formatnum: return new Pf_formatnum();
@@ -381,32 +381,32 @@ public class Pf_func_ {
case Xol_kwd_grp_.Id_xowa_dbg: return new Xop_xowa_dbg();
case Xol_kwd_grp_.Id_xowa: return new gplx.xowa.xtns.xowa_cmds.Xop_xowa_func();
case Xol_kwd_grp_.Id_xtn_geodata_coordinates: return gplx.xowa.xtns.geodata.Geo_coordinates_func._;
case Xol_kwd_grp_.Id_lst: return gplx.xowa.xtns.lst.Lst_pfunc_lst._;
case Xol_kwd_grp_.Id_lstx: return gplx.xowa.xtns.lst.Lst_pfunc_lstx._;
case Xol_kwd_grp_.Id_xtn_geodata_coordinates: return gplx.xowa.xtns.geodata.Geo_coordinates_func.Instance;
case Xol_kwd_grp_.Id_lst: return gplx.xowa.xtns.lst.Lst_pfunc_lst.Instance;
case Xol_kwd_grp_.Id_lstx: return gplx.xowa.xtns.lst.Lst_pfunc_lstx.Instance;
case Xol_kwd_grp_.Id_invoke: return new gplx.xowa.xtns.scribunto.Scrib_invoke_func();
case Xol_kwd_grp_.Id_property: return new gplx.xowa.xtns.wdatas.pfuncs.Wdata_pf_property();
case Xol_kwd_grp_.Id_noexternallanglinks: return new gplx.xowa.xtns.wdatas.pfuncs.Wdata_pf_noExternalLangLinks();
case Xol_kwd_grp_.Id_wbreponame: return new gplx.xowa.xtns.wdatas.pfuncs.Wdata_pf_wbreponame();
case Xol_kwd_grp_.Id_mapSources_deg2dd: return gplx.xowa.xtns.mapSources.Map_deg2dd_func._;
case Xol_kwd_grp_.Id_mapSources_dd2dms: return gplx.xowa.xtns.mapSources.Map_dd2dms_func._;
case Xol_kwd_grp_.Id_mapSources_geoLink: return gplx.xowa.xtns.mapSources.Map_geolink_func._;
case Xol_kwd_grp_.Id_mapSources_deg2dd: return gplx.xowa.xtns.mapSources.Map_deg2dd_func.Instance;
case Xol_kwd_grp_.Id_mapSources_dd2dms: return gplx.xowa.xtns.mapSources.Map_dd2dms_func.Instance;
case Xol_kwd_grp_.Id_mapSources_geoLink: return gplx.xowa.xtns.mapSources.Map_geolink_func.Instance;
case Xol_kwd_grp_.Id_geoCrumbs_isin: return gplx.xowa.xtns.geoCrumbs.Geoc_isin_func._;
case Xol_kwd_grp_.Id_geoCrumbs_isin: return gplx.xowa.xtns.geoCrumbs.Geoc_isin_func.Instance;
case Xol_kwd_grp_.Id_relatedArticles: return gplx.xowa.xtns.relatedArticles.Articles_func._;
case Xol_kwd_grp_.Id_insider: return gplx.xowa.xtns.insiders.Insider_func._;
case Xol_kwd_grp_.Id_relatedArticles: return gplx.xowa.xtns.relatedArticles.Articles_func.Instance;
case Xol_kwd_grp_.Id_insider: return gplx.xowa.xtns.insiders.Insider_func.Instance;
case Xol_kwd_grp_.Id_massMessage_target: return gplx.xowa.xtns.massMessage.Message_target_func._;
case Xol_kwd_grp_.Id_massMessage_target: return gplx.xowa.xtns.massMessage.Message_target_func.Instance;
case Xol_kwd_grp_.Id_pendingChangeLevel: return gplx.xowa.xtns.flaggedRevs.Pending_change_level_func._;
case Xol_kwd_grp_.Id_pagesUsingPendingChanges: return gplx.xowa.xtns.flaggedRevs.Pages_using_pending_changes_func._;
case Xol_kwd_grp_.Id_pendingChangeLevel: return gplx.xowa.xtns.flaggedRevs.Pending_change_level_func.Instance;
case Xol_kwd_grp_.Id_pagesUsingPendingChanges: return gplx.xowa.xtns.flaggedRevs.Pages_using_pending_changes_func.Instance;
case Xol_kwd_grp_.Id_cascadingSources:
return new Pf_func_noop(id);
case Xol_kwd_grp_.Id_bang: return Pf_func_bang._;
case Xol_kwd_grp_.Id_bang: return Pf_func_bang.Instance;
default: throw Err_.new_unhandled(id);
}
}
@@ -421,6 +421,6 @@ class Pf_func_bang extends Pf_func_base {
@Override public int Id() {return Xol_kwd_grp_.Id_bang;}
@Override public void Func_evaluate(Xop_ctx ctx, byte[] src, Xot_invk caller, Xot_invk self, Bry_bfr bfr) {bfr.Add_byte_pipe();}
@Override public Pf_func New(int id, byte[] name) {return this;}
public static final Pf_func_bang _ = new Pf_func_bang();
public static final Pf_func_bang Instance = new Pf_func_bang();
Pf_func_bang() {this.Name_(Byte_ascii.Bang_bry);}
}

View File

@@ -37,7 +37,7 @@ public abstract class Pf_func_base implements Pf_func {
Bry_bfr tmp = Bry_bfr.new_();
for (int i = 0; i < subs_len; i++)
name_val_tkn.Subs_get(i).Tmpl_evaluate(ctx, src, caller, tmp);
argx_dat = tmp.Xto_bry_and_clear_and_trim();
argx_dat = tmp.To_bry_and_clear_and_trim();
}
}
return argx_dat;
@@ -63,7 +63,7 @@ public abstract class Pf_func_base implements Pf_func {
Bry_bfr tmp = Bry_bfr.new_();
for (int i = 0; i < subs_len; i++)
name_val_tkn.Subs_get(i).Tmpl_evaluate(ctx, src, caller, tmp);
argx_dat = tmp.Xto_bry_and_clear_and_trim();
argx_dat = tmp.To_bry_and_clear_and_trim();
}
}
return argx_dat;

View File

@@ -16,7 +16,7 @@ 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.pfuncs.exprs; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.pfuncs.*;
import gplx.xowa.langs.*;
import gplx.xowa.langs.*; import gplx.xowa.langs.kwds.*;
import gplx.xowa.parsers.*; import gplx.xowa.parsers.tmpls.*;
public class Pfunc_expr extends Pf_func_base {
@Override public boolean Func_require_colon_arg() {return true;}
@@ -36,7 +36,7 @@ public class Pfunc_expr extends Pf_func_base {
return true;
}
}
private static Pfunc_expr_shunter shunter = Pfunc_expr_shunter._;
private static Pfunc_expr_shunter shunter = Pfunc_expr_shunter.Instance;
@Override public int Id() {return Xol_kwd_grp_.Id_xtn_expr;}
@Override public Pf_func New(int id, byte[] name) {return new Pfunc_expr().Name_(name);}
}

View File

@@ -16,7 +16,7 @@ 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.pfuncs.exprs; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.pfuncs.*;
import gplx.xowa.langs.*;
import gplx.xowa.langs.*; import gplx.xowa.langs.msgs.*;
import gplx.xowa.parsers.*;
interface Expr_tkn {
int Tid();
@@ -37,7 +37,7 @@ class Ws_tkn implements Expr_tkn {
public int Tid() {return Expr_tkn_.Tid_space;}
public byte[] Val_ary() {return val_ary;} private byte[] val_ary;
public String Val_str() {return val_str;} private String val_str;
public Ws_tkn(byte b) {this.val_ary = new byte[] {b}; this.val_str = Char_.To_str(Char_.XbyInt(b));}
public Ws_tkn(byte b) {this.val_ary = new byte[] {b}; this.val_str = Char_.To_str(Char_.By_int(b));}
}
class Paren_bgn_tkn implements Expr_tkn, Func_tkn {
public int Tid() {return Expr_tkn_.Tid_paren_lhs;}
@@ -48,13 +48,13 @@ class Paren_bgn_tkn implements Expr_tkn, Func_tkn {
public int Precedence() {return -1;}
public Func_tkn GetAlt() {return this;}
public boolean Calc(Xop_ctx ctx, Pfunc_expr_shunter shunter, Val_stack val_stack) {throw Err_.new_unimplemented();}
public static Paren_bgn_tkn _ = new Paren_bgn_tkn(); Paren_bgn_tkn() {}
public static Paren_bgn_tkn Instance = new Paren_bgn_tkn(); Paren_bgn_tkn() {}
}
class Paren_end_tkn implements Expr_tkn {
public int Tid() {return Expr_tkn_.Tid_paren_rhs;}
public byte[] Val_ary() {return val_ary;} private byte[] val_ary = Bry_.new_u8(val_str);
public String Val_str() {return val_str;} static final String val_str = ")";
public static Paren_end_tkn _ = new Paren_end_tkn(); Paren_end_tkn() {}
public static Paren_end_tkn Instance = new Paren_end_tkn(); Paren_end_tkn() {}
}
class Num_tkn implements Expr_tkn {
public int Tid() {return Expr_tkn_.Tid_number;}
@@ -131,27 +131,27 @@ class Func_tkn_plus extends Func_tkn_base {
public Func_tkn_plus(String v) {this.Ctor(v);}
@Override public int ArgCount() {return 2;}
@Override public int Precedence() {return 6;}
@Override public Func_tkn GetAlt() {return Func_tkn_plus_positive._;}
@Override public Func_tkn GetAlt() {return Func_tkn_plus_positive.Instance;}
@Override public boolean Calc_hook(Xop_ctx ctx, Pfunc_expr_shunter shunter, Val_stack val_stack) {
Decimal_adp rhs = val_stack.Pop();
Decimal_adp lhs = val_stack.Pop();
val_stack.Push(lhs.Add(rhs));
return true;
}
public static final Func_tkn_plus _ = new Func_tkn_plus(); Func_tkn_plus() {}
public static final Func_tkn_plus Instance = new Func_tkn_plus(); Func_tkn_plus() {}
}
class Func_tkn_plus_positive extends Func_tkn_base {
Func_tkn_plus_positive(String v) {this.Ctor(v);}
@Override public int ArgCount() {return 1;}
@Override public int Precedence() {return 10;}
@Override public boolean Calc_hook(Xop_ctx ctx, Pfunc_expr_shunter shunter, Val_stack val_stack) {return true;}// effectively a noop
public static final Func_tkn_plus_positive _ = new Func_tkn_plus_positive("+");
public static final Func_tkn_plus_positive Instance = new Func_tkn_plus_positive("+");
}
class Func_tkn_minus extends Func_tkn_base {
public Func_tkn_minus(String v) {this.Ctor(v);}
@Override public int ArgCount() {return 2;}
@Override public int Precedence() {return 6;}
@Override public Func_tkn GetAlt() {return Func_tkn_minus_negative._;}
@Override public Func_tkn GetAlt() {return Func_tkn_minus_negative.Instance;}
@Override public boolean Calc_hook(Xop_ctx ctx, Pfunc_expr_shunter shunter, Val_stack val_stack) {
Decimal_adp rhs = val_stack.Pop();
Decimal_adp lhs = val_stack.Pop();
@@ -168,7 +168,7 @@ class Func_tkn_minus_negative extends Func_tkn_base {
val_stack.Push(val.Multiply(Decimal_adp_.Neg1));
return true;
}
public static final Func_tkn_minus_negative _ = new Func_tkn_minus_negative("-");
public static final Func_tkn_minus_negative Instance = new Func_tkn_minus_negative("-");
}
class Func_tkn_divide extends Func_tkn_base {
public Func_tkn_divide(String v) {this.Ctor(v);}
@@ -222,7 +222,7 @@ class Func_tkn_e_op extends Func_tkn_base {
public Func_tkn_e_op(String v) {this.Ctor(v);}
@Override public int ArgCount() {return 2;}
@Override public int Precedence() {return 9;} // NOTE: needs to be < than - sign
@Override public Func_tkn GetAlt() {return Func_tkn_e_const._;}
@Override public Func_tkn GetAlt() {return Func_tkn_e_const.Instance;}
@Override public boolean Calc_hook(Xop_ctx ctx, Pfunc_expr_shunter shunter, Val_stack val_stack) {
Decimal_adp rhs = val_stack.Pop();
Decimal_adp lhs = val_stack.Pop();
@@ -364,7 +364,7 @@ class Func_tkn_e_const extends Func_tkn_base {
val_stack.Push(Decimal_adp_.Const_e);
return true;
}
public static final Func_tkn_e_const _ = new Func_tkn_e_const("e");
public static final Func_tkn_e_const Instance = new Func_tkn_e_const("e");
}
class Func_tkn_pi extends Func_tkn_base {
public Func_tkn_pi(String v) {this.Ctor(v);}

View File

@@ -17,7 +17,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package gplx.xowa.xtns.pfuncs.exprs; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.pfuncs.*;
import gplx.core.btries.*;
import gplx.xowa.langs.*;
import gplx.xowa.langs.*; import gplx.xowa.langs.msgs.*;
import gplx.xowa.parsers.*;
public class Pfunc_expr_shunter {
Btrie_fast_mgr trie = expression_();
@@ -140,7 +140,7 @@ public class Pfunc_expr_shunter {
prc_stack.Pop();
prv_prc = prc_stack.GetLast();
}
if (prv_prc == Paren_bgn_tkn._)
if (prv_prc == Paren_bgn_tkn.Instance)
prc_stack.Pop();
else
return Err_set(ctx, Xol_msg_itm_.Id_pfunc_expr_unexpected_closing_bracket);
@@ -164,8 +164,8 @@ public class Pfunc_expr_shunter {
Trie_add(rv, new Ws_tkn(Byte_ascii.Space));
Trie_add(rv, new Ws_tkn(Byte_ascii.Tab));
Trie_add(rv, new Ws_tkn(Byte_ascii.Nl));
Trie_add(rv, Paren_bgn_tkn._);
Trie_add(rv, Paren_end_tkn._);
Trie_add(rv, Paren_bgn_tkn.Instance);
Trie_add(rv, Paren_end_tkn.Instance);
Trie_add(rv, new Func_tkn_plus("+"));
Trie_add(rv, new Func_tkn_minus("-"));
Trie_add(rv, new Func_tkn_minus(Char_.To_str((char)8722)));
@@ -218,5 +218,5 @@ public class Pfunc_expr_shunter {
return rv;
}
private static void Trie_add(Btrie_fast_mgr trie, Expr_tkn tkn) {trie.Add(tkn.Val_ary(), tkn);}
public static final Pfunc_expr_shunter _ = new Pfunc_expr_shunter(); Pfunc_expr_shunter() {}
public static final Pfunc_expr_shunter Instance = new Pfunc_expr_shunter(); Pfunc_expr_shunter() {}
}

View File

@@ -16,7 +16,7 @@ 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.pfuncs.ifs; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.pfuncs.*;
import gplx.xowa.langs.*;
import gplx.xowa.langs.*; import gplx.xowa.langs.kwds.*;
import gplx.xowa.parsers.*; import gplx.xowa.parsers.tmpls.*;
public class Pfunc_if extends Pf_func_base {
@Override public boolean Func_require_colon_arg() {return true;}

View File

@@ -16,7 +16,7 @@ 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.pfuncs.ifs; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.pfuncs.*;
import gplx.xowa.langs.*;
import gplx.xowa.langs.*; import gplx.xowa.langs.kwds.*;
import gplx.xowa.parsers.*; import gplx.xowa.parsers.tmpls.*;
public class Pfunc_ifeq extends Pf_func_base {
@Override public boolean Func_require_colon_arg() {return true;}

View File

@@ -17,7 +17,7 @@ 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 gplx.core.primitives.*; import gplx.core.btries.*;
import gplx.xowa.langs.*;
import gplx.xowa.langs.*; import gplx.xowa.langs.kwds.*;
import gplx.xowa.parsers.*; import gplx.xowa.parsers.tmpls.*;
public class Pfunc_iferror extends Pf_func_base {
@Override public boolean Func_require_colon_arg() {return true;}

View File

@@ -16,7 +16,7 @@ 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.pfuncs.ifs; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.pfuncs.*;
import gplx.xowa.langs.*;
import gplx.xowa.langs.*; import gplx.xowa.langs.kwds.*;
import gplx.xowa.parsers.*; import gplx.xowa.parsers.tmpls.*;
public class Pfunc_ifexist extends Pf_func_base {
@Override public int Id() {return Xol_kwd_grp_.Id_xtn_iferror;}

View File

@@ -16,8 +16,8 @@ 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.pfuncs.ifs; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.pfuncs.*;
import gplx.xowa.wms.apis.*; import gplx.xowa.wikis.data.tbls.*;
import gplx.xowa.nss.*;
import gplx.xowa.bldrs.wms.apis.*; import gplx.xowa.wikis.data.tbls.*;
import gplx.xowa.wikis.nss.*;
public class Pfunc_ifexist_mgr {
private Xowd_page_itm db_page = Xowd_page_itm.new_tmp();
private Hash_adp regy = Hash_adp_bry.cs();
@@ -58,7 +58,7 @@ public class Pfunc_ifexist_mgr {
Xowe_wiki commons_wiki = wiki.Appe().Wiki_mgr().Wiki_commons();
boolean env_is_testing = Env_.Mode_testing();
if ( commons_wiki != null // null check
&& ( commons_wiki.Init_assert().Db_mgr().Tid() == gplx.xowa.dbs.Xodb_mgr_sql.Tid_sql // make sure tid=sql; tid=txt automatically created for online images; DATE:2014-09-21
&& ( commons_wiki.Init_assert().Db_mgr().Tid() == gplx.xowa.wikis.dbs.Xodb_mgr_sql.Tid_sql // make sure tid=sql; tid=txt automatically created for online images; DATE:2014-09-21
|| env_is_testing
)
) {

View File

@@ -16,7 +16,7 @@ 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.pfuncs.ifs; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.pfuncs.*;
import org.junit.*; import gplx.xowa.tdbs.metas.*;
import org.junit.*; import gplx.xowa.wikis.tdbs.metas.*;
public class Pfunc_ifexist_tst {
private Xop_fxt fxt = new Xop_fxt();
@Before public void init() {fxt.Reset();}

View File

@@ -17,7 +17,7 @@ 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 gplx.xowa.xtns.pfuncs.exprs.*;
import gplx.xowa.langs.*;
import gplx.xowa.langs.*; import gplx.xowa.langs.kwds.*;
import gplx.xowa.parsers.*; import gplx.xowa.parsers.tmpls.*;
public class Pfunc_ifexpr extends Pf_func_base {
@Override public boolean Func_require_colon_arg() {return true;}
@@ -38,7 +38,7 @@ public class Pfunc_ifexpr extends Pf_func_base {
bb.Add(Pf_func_.Eval_arg_or_empty(ctx, src, caller, self, self_args_len, 0));
}
}
Pfunc_expr_shunter shunter = Pfunc_expr_shunter._;
Pfunc_expr_shunter shunter = Pfunc_expr_shunter.Instance;
@Override public int Id() {return Xol_kwd_grp_.Id_xtn_ifexpr;}
@Override public Pf_func New(int id, byte[] name) {return new Pfunc_ifexpr().Name_(name);}
}

View File

@@ -16,7 +16,7 @@ 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.pfuncs.ifs; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.pfuncs.*;
import gplx.xowa.langs.*;
import gplx.xowa.langs.*; import gplx.xowa.langs.kwds.*;
import gplx.xowa.parsers.*; import gplx.xowa.parsers.tmpls.*;
public class Pfunc_switch extends Pf_func_base {
@Override public int Id() {return Xol_kwd_grp_.Id_xtn_switch;}
@@ -83,7 +83,7 @@ public class Pfunc_switch extends Pf_func_base {
return Bry_.Trim(src, itm.Dat_bgn(), itm.Dat_end());
else {
itm.Tmpl_evaluate(ctx, src, caller, tmp);
return tmp.Xto_bry_and_clear_and_trim();
return tmp.To_bry_and_clear_and_trim();
}
}
public static final byte[] Dflt_keyword = Bry_.new_a7("#default"); // NOTE: technically should pull from messages, but would need to cache Dflt_keyword on wiki level; checked all Messages files, and no one overrides it; DATE:2014-05-29

View File

@@ -16,7 +16,7 @@ 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.pfuncs.ifs; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.pfuncs.*;
import org.junit.*; import gplx.xowa.langs.*;
import org.junit.*; import gplx.xowa.langs.*; import gplx.xowa.langs.kwds.*;
public class Pfunc_switch_tst {
@Before public void init() {fxt.Reset();} private Xop_fxt fxt = new Xop_fxt();
@Test public void Basic_a() {fxt.Test_parse_tmpl_str_test("{{#switch:a|a=1|b=2|3}}" , "{{test}}" , "1");}

View File

@@ -16,7 +16,7 @@ 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.pfuncs.ifs; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.pfuncs.*;
import gplx.xowa.langs.*;
import gplx.xowa.langs.*; import gplx.xowa.langs.kwds.*;
import gplx.xowa.parsers.*; import gplx.xowa.parsers.tmpls.*;
public class Xop_xowa_dbg extends Pf_func_base {
@Override public void Func_evaluate(Xop_ctx ctx, byte[] src, Xot_invk caller, Xot_invk self, Bry_bfr bfr) {

View File

@@ -17,7 +17,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package gplx.xowa.xtns.pfuncs.langs; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.pfuncs.*;
import gplx.core.primitives.*; import gplx.xowa.users.*;
import gplx.xowa.langs.*; import gplx.xowa.langs.genders.*;
import gplx.xowa.langs.*; import gplx.xowa.langs.kwds.*; import gplx.xowa.langs.genders.*;
import gplx.xowa.parsers.*; import gplx.xowa.parsers.tmpls.*;
public class Pfunc_gender extends Pf_func_base {
@Override public int Id() {return Xol_kwd_grp_.Id_i18n_gender;}
@@ -41,7 +41,7 @@ public class Pfunc_gender extends Pf_func_base {
}
if (self_args_len == 1) {bfr.Add(when_m); return;} // per MW: EX: {{gender:name|a}} -> "a"
int gender = Get_gender(ctx.App().User(), user_name);
Xol_lang lang = ctx.Cur_page().Lang();
Xol_lang_itm lang = ctx.Cur_page().Lang();
bfr.Add(lang.Gender().Gender_eval(gender, when_m, when_f, when_u));
}
private static int Get_gender(Xou_user user, byte[] user_name) {

View File

@@ -16,7 +16,7 @@ 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.pfuncs.langs; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.pfuncs.*;
import gplx.xowa.langs.*;
import gplx.xowa.langs.*; import gplx.xowa.langs.kwds.*;
import gplx.xowa.parsers.*; import gplx.xowa.parsers.tmpls.*;
public class Pfunc_grammar extends Pf_func_base {
@Override public int Id() {return Xol_kwd_grp_.Id_i18n_grammar;}
@@ -25,7 +25,7 @@ public class Pfunc_grammar extends Pf_func_base {
@Override public void Func_evaluate(Xop_ctx ctx, byte[] src, Xot_invk caller, Xot_invk self, Bry_bfr bfr) {
byte[] argx = Eval_argx(ctx, src, caller, self);
byte[] word = Pf_func_.Eval_arg_or_empty(ctx, src, caller, self, self.Args_len(), 0);
Xol_lang lang = ctx.Cur_page().Lang();
Xol_lang_itm lang = ctx.Cur_page().Lang();
boolean pass = false;
try {pass = lang.Grammar().Grammar_eval(bfr, lang, word, argx);}
catch (Exception e) {Err_.Noop(e);}

View File

@@ -24,7 +24,7 @@ public class Pfunc_grammar_tst {
fxt.Test_parse_tmpl_str_test("{{grammar:a|b}}" , "{{test}}" , "[[:Template:grammar]]");
}
@Test public void Finnish() {
fxt.Lang_by_id_(Xol_lang_itm_.Id_fi);
fxt.Lang_by_id_(Xol_lang_stub_.Id_fi);
fxt.Reset().Test_parse_tmpl_str_test("{{grammar:elative|Wikiuutiset}}" , "{{test}}" , "Wikiuutisista");
fxt.Reset().Test_parse_tmpl_str_test("{{grammar:talo}}" , "{{test}}" , "");
fxt.Reset().Test_parse_tmpl_str_test("{{grammar:genitive|talo}}" , "{{test}}" , "talon");
@@ -39,7 +39,7 @@ public class Pfunc_grammar_tst {
fxt.Reset().Test_parse_tmpl_str_test("{{grammar:illative|sängy}}" , "{{test}}" , "sängyyn");
}
@Test public void Russian() {
fxt.Lang_by_id_(Xol_lang_itm_.Id_ru);
fxt.Lang_by_id_(Xol_lang_stub_.Id_ru);
fxt.Reset().Test_parse_tmpl_str_test("{{grammar:unknown}}" , "{{test}}" , "");
fxt.Reset().Test_parse_tmpl_str_test("{{grammar:genitive|aвики}}" , "{{test}}" , "aвики");
fxt.Reset().Test_parse_tmpl_str_test("{{grammar:genitive|aВики}}" , "{{test}}" , "aВики");

View File

@@ -30,21 +30,21 @@ class Pfunc_i18n_fxt {
if (app == null) app = Xoa_app_fxt.app_();
app.Lang_mgr().Clear(); // else lang values retained from last run
app.Free_mem(false); // else tmpl_result_cache will get reused from last run for {{test}}
lang = app.Lang_mgr().Get_by_key_or_new(Bry_.new_a7(lang_key));
lang = app.Lang_mgr().Get_by_or_new(Bry_.new_a7(lang_key));
wiki = Xoa_app_fxt.wiki_(app, lang_key + ".wikipedia.org", lang);
fxt = new Xop_fxt(app, wiki);
return this;
} private Xoae_app app; private Xop_fxt fxt; Xol_lang lang; Xowe_wiki wiki;
} private Xoae_app app; private Xop_fxt fxt; Xol_lang_itm lang; Xowe_wiki wiki;
public Pfunc_i18n_fxt Reg_func(String name, boolean case_match, String word) {
Io_url url = Io_url_.mem_fil_("mem/xowa/bin/any/xowa/cfg/lang/core/" + lang_key + ".gfs");
String func = "keywords.load_text('" + name + "|" + (case_match ? "1" : "0") + "|" + name + "~" + word + "~');";
Io_mgr.I.SaveFilStr(url, func);
Io_mgr.Instance.SaveFilStr(url, func);
return this;
}
public Pfunc_i18n_fxt Reg_msg(String key, String val) {
Io_url url = Io_url_.mem_fil_("mem/xowa/bin/any/xowa/cfg/lang/core/" + lang_key + ".gfs");
String func = "messages.load_text('" + key + "|" + val + "');";
Io_mgr.I.SaveFilStr(url, func);
Io_mgr.Instance.SaveFilStr(url, func);
return this;
}
public Pfunc_i18n_fxt Load() {

View File

@@ -17,7 +17,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package gplx.xowa.xtns.pfuncs.langs; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.pfuncs.*;
import gplx.langs.phps.*;
import gplx.xowa.langs.*; import gplx.xowa.langs.msgs.*;
import gplx.xowa.langs.*; import gplx.xowa.langs.kwds.*; import gplx.xowa.langs.msgs.*;
import gplx.xowa.parsers.*; import gplx.xowa.parsers.tmpls.*;
public class Pfunc_int extends Pf_func_base {
@Override public int Id() {return Xol_kwd_grp_.Id_i18n_int;}
@@ -25,7 +25,7 @@ public class Pfunc_int extends Pf_func_base {
@Override public void Func_evaluate(Xop_ctx ctx, byte[] src, Xot_invk caller, Xot_invk self, Bry_bfr bfr) {
byte[] msg_key = Eval_argx(ctx, src, caller, self);
Xowe_wiki wiki = ctx.Wiki();
Xol_lang page_lang = ctx.Cur_page().Lang();
Xol_lang_itm page_lang = ctx.Cur_page().Lang();
byte[][] args_ary = Bry_.Ary_empty;
int args_len = self.Args_len();
if (args_len > 0) {

Some files were not shown because too many files have changed in this diff Show More