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

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

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 org.junit.*; import gplx.xowa.langs.*;
import org.junit.*; import gplx.xowa.langs.*; import gplx.xowa.langs.msgs.*;
public class Pfunc_int_tst {
@Before public void init() {fxt.Reset();} private Pf_msg_mgr_fxt fxt = new Pf_msg_mgr_fxt();
@Test public void Basic() {fxt.Test_parse_en("{{int:january}}" , "January");}
@@ -35,7 +35,7 @@ public class Pfunc_int_tst {
fxt.Test_parse_en("{{int:january/en}}", "January");
}
@Test public void Lang_specified_by_page() {
fxt.Test_parse_lang("fr", "{{int:Lang}}", "fr"); // NOTE: "Lang" msg is added by Xol_lang; message_mgr.Itm_by_key_or_new(Bry_.new_a7("Lang")).Atrs_set(key_bry, false, false);
fxt.Test_parse_lang("fr", "{{int:Lang}}", "fr"); // NOTE: "Lang" msg is added by Xol_lang_itm; message_mgr.Itm_by_key_or_new(Bry_.new_a7("Lang")).Atrs_set(key_bry, false, false);
}
@Test public void Lang_missing_msg_return_en() { // PURPOSE: if key does not exist in non-english language, use English; EX: la.w:Fasciculus:HannibalFrescoCapitolinec1510.jpg; DATE:2013-09-10
fxt.Init_msg_gfs("en_only_key", "en_only_val", false, false);
@@ -81,7 +81,7 @@ public class Pfunc_int_tst {
}
class Pf_msg_mgr_fxt {
private Xop_fxt fxt;
private Xol_lang en_lang;
private Xol_lang_itm en_lang;
private Xowe_wiki en_wiki;
public void Reset() {
fxt = new Xop_fxt(); // new fxt, else transclude tests will fail
@@ -89,7 +89,7 @@ class Pf_msg_mgr_fxt {
en_lang = en_wiki.Lang();
}
public void Init_msg_gfs(String key, String val, boolean fmt, boolean tmpl) {Init_msg_gfs(en_lang, key, val, fmt, tmpl);}
public void Init_msg_gfs(Xol_lang lang, String key, String val, boolean fmt, boolean tmpl) {
public void Init_msg_gfs(Xol_lang_itm lang, String key, String val, boolean fmt, boolean tmpl) {
Xol_msg_itm msg_itm = lang.Msg_mgr().Itm_by_key_or_new(Bry_.new_u8(key));
msg_itm.Atrs_set(Bry_.new_u8(val), fmt, tmpl);
}
@@ -106,7 +106,7 @@ class Pf_msg_mgr_fxt {
alt_fxt.Test_parse_tmpl_str_test(raw, "{{test}}" , expd);
}
public void Test_parse_lang(String other_lang_id, String raw, String expd) {
Xol_lang other_lang = fxt.App().Lang_mgr().Get_by_key_or_new(Bry_.new_a7(other_lang_id));
Xol_lang_itm other_lang = fxt.App().Lang_mgr().Get_by_or_new(Bry_.new_a7(other_lang_id));
other_lang.Init_by_load();
fxt.Page().Lang_(other_lang);
fxt.Test_parse_tmpl_str_test(raw, "{{test}}", expd);

View File

@@ -16,20 +16,20 @@ 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_language extends Pf_func_base {
@Override public int Id() {return Xol_kwd_grp_.Id_i18n_language;}
@Override public Pf_func New(int id, byte[] name) {return new Pfunc_language().Name_(name);}
@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);
Hash_adp_bry regy = Xol_lang_itm_.Regy();
Hash_adp_bry regy = Xol_lang_stub_.Regy();
if (argx.length == 0) return; // {{#language:}} should return ""; note that byte[0] will fail in Match_exact
Object o = regy.Get_by_bry(argx);
if (o == null)
bfr.Add(argx);
else {
Xol_lang_itm lang_itm = (Xol_lang_itm)o;
Xol_lang_stub lang_itm = (Xol_lang_stub)o;
bfr.Add(lang_itm.Canonical_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_plural extends Pf_func_base {
@Override public boolean Func_require_colon_arg() {return true;}

View File

@@ -17,20 +17,20 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package gplx.xowa.xtns.pfuncs.numbers; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.pfuncs.*;
import gplx.core.btries.*; import gplx.core.intls.*;
import gplx.xowa.langs.*; import gplx.xowa.langs.numbers.*;
import gplx.xowa.langs.*; import gplx.xowa.langs.kwds.*; import gplx.xowa.langs.numbers.*;
import gplx.xowa.parsers.*; import gplx.xowa.parsers.tmpls.*;
public class Pf_formatnum extends Pf_func_base {
@Override public int Id() {return Xol_kwd_grp_.Id_str_formatnum;}
@Override public Pf_func New(int id, byte[] name) {return new Pf_formatnum().Name_(name);}
@Override public boolean Func_require_colon_arg() {return true;}
@Override public void Func_evaluate(Xop_ctx ctx, byte[] src, Xot_invk caller, Xot_invk self, Bry_bfr bfr) {
Xol_lang lang = ctx.Wiki().Lang();
Xol_lang_itm lang = ctx.Wiki().Lang();
int self_args_len = self.Args_len();
byte[] argx = Eval_argx(ctx, src, caller, self);
byte[] arg1 = Pf_func_.Eval_arg_or_empty(ctx, src, caller, self, self_args_len, 0);
bfr.Add(Format_num(lang, argx, arg1));
}
public static byte[] Format_num(Xol_lang lang, byte[] num, byte[] arg1) {
public static byte[] Format_num(Xol_lang_itm lang, byte[] num, byte[] arg1) {
Btrie_slim_mgr trie_raw = lang.Kwd_mgr().Trie_raw();
Btrie_slim_mgr trie_nosep = lang.Kwd_mgr().Trie_nosep();
int arg1_len = arg1.length;

View File

@@ -22,7 +22,7 @@ public class Pf_formatnum_es_tst {
private Xop_fxt fxt;
@Before public void init() {
Xoae_app app = Xoa_app_fxt.app_();
Xol_lang lang = new Xol_lang(app.Lang_mgr(), Bry_.new_a7("es")).Init_by_load_assert();
Xol_lang_itm lang = new Xol_lang_itm(app.Lang_mgr(), Bry_.new_a7("es")).Init_by_load_assert();
Xowe_wiki wiki = Xoa_app_fxt.wiki_(app, "es.wikipedia.org", lang);
fxt = new Xop_fxt(app, wiki);
}

View File

@@ -22,7 +22,7 @@ public class Pf_formatnum_fa_tst {
private Xop_fxt fxt;
@Before public void init() {
Xoae_app app = Xoa_app_fxt.app_();
Xol_lang lang = new Xol_lang(app.Lang_mgr(), Bry_.new_a7("fa")).Init_by_load_assert();
Xol_lang_itm lang = new Xol_lang_itm(app.Lang_mgr(), Bry_.new_a7("fa")).Init_by_load_assert();
app.Gfs_mgr().Run_str_for(lang, Persian_numbers_gfs);
Xowe_wiki wiki = Xoa_app_fxt.wiki_(app, "fa.wikipedia.org", lang);
fxt = new Xop_fxt(app, wiki);

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.pfuncs.pages; 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_defaultsort extends Pf_func_base {
@Override public void Func_evaluate(Xop_ctx ctx, byte[] src, Xot_invk caller, Xot_invk self, Bry_bfr bb) {}
@Override public int Id() {return Xol_kwd_grp_.Id_page_defaultsort;}
@Override public Pf_func New(int id, byte[] name) {return new Pfunc_defaultsort().Name_(name);}
public static final Pfunc_defaultsort _ = new Pfunc_defaultsort(); Pfunc_defaultsort() {}
public static final Pfunc_defaultsort Instance = new Pfunc_defaultsort(); Pfunc_defaultsort() {}
}

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.pages; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.pfuncs.*;
import gplx.xowa.html.*;
import gplx.xowa.langs.*; import gplx.xowa.langs.cases.*;
import gplx.xowa.htmls.*;
import gplx.xowa.langs.kwds.*; import gplx.xowa.langs.cases.*;
import gplx.xowa.parsers.*; import gplx.xowa.parsers.tmpls.*;
public class Pfunc_displaytitle extends Pf_func_base {
@Override public int Id() {return Xol_kwd_grp_.Id_page_displaytitle;}
@@ -31,11 +31,11 @@ public class Pfunc_displaytitle extends Pf_func_base {
boolean restrict = wiki.Cfg_parser().Display_title_restrict();
Xoh_wtr_ctx hctx = restrict ? Xoh_wtr_ctx.Display_title : Xoh_wtr_ctx.Basic; // restrict removes certain HTML (display:none)
wiki.Html_mgr().Html_wtr().Write_tkn(tmp_bfr, display_ttl_ctx, hctx, display_ttl_root.Data_mid(), display_ttl_root, 0, display_ttl_root);
byte[] val_html = tmp_bfr.Xto_bry_and_clear();
byte[] val_html = tmp_bfr.To_bry_and_clear();
if (restrict) { // restrict only allows displayTitles which have text similar to the pageTitle; PAGE:de.b:Kochbuch/_Druckversion; DATE:2014-08-18
Xoae_page page = ctx.Cur_page();
wiki.Html_mgr().Html_wtr().Write_tkn(tmp_bfr, display_ttl_ctx, Xoh_wtr_ctx.Alt, display_ttl_root.Data_mid(), display_ttl_root, 0, display_ttl_root);
byte[] val_html_lc = tmp_bfr.Xto_bry_and_clear();
byte[] val_html_lc = tmp_bfr.To_bry_and_clear();
Xol_case_mgr case_mgr = wiki.Lang().Case_mgr();
val_html_lc = Standardize_displaytitle_text(case_mgr, val_html_lc);
byte[] page_ttl_lc = Standardize_displaytitle_text(case_mgr, page.Ttl().Page_db());
@@ -49,5 +49,5 @@ public class Pfunc_displaytitle extends Pf_func_base {
byte[] rv = case_mgr.Case_build_lower(val); // lower-case
return Bry_.Replace(rv, Byte_ascii.Space, Byte_ascii.Underline); // force underline; PAGE:de.w:Mod_qos DATE:2014-11-06
}
public static final Pfunc_displaytitle _ = new Pfunc_displaytitle(); Pfunc_displaytitle() {}
public static final Pfunc_displaytitle Instance = new Pfunc_displaytitle(); Pfunc_displaytitle() {}
}

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.pfuncs.pages; 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_noeditsection extends Pf_func_base {
@Override public void Func_evaluate(Xop_ctx ctx, byte[] src, Xot_invk caller, Xot_invk self, Bry_bfr bb) {}
@Override public int Id() {return Xol_kwd_grp_.Id_noeditsection;}
@Override public Pf_func New(int id, byte[] name) {return new Pfunc_noeditsection().Name_(name);}
public static final Pfunc_noeditsection _ = new Pfunc_noeditsection(); Pfunc_noeditsection() {}
public static final Pfunc_noeditsection Instance = new Pfunc_noeditsection(); Pfunc_noeditsection() {}
}

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.pages; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.pfuncs.*;
import gplx.xowa.langs.*;
import gplx.xowa.pages.*; import gplx.xowa.parsers.*; import gplx.xowa.parsers.tmpls.*;
import gplx.xowa.langs.*; import gplx.xowa.langs.kwds.*;
import gplx.xowa.wikis.pages.*; import gplx.xowa.parsers.*; import gplx.xowa.parsers.tmpls.*;
public class Pfunc_rev_props 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);
@@ -48,5 +48,5 @@ public class Pfunc_rev_props extends Pf_func_base {
public Pfunc_rev_props(int id) {this.id = id;}
@Override public int Id() {return id;} private int id;
@Override public Pf_func New(int id, byte[] name) {return new Pfunc_rev_props(id).Name_(name);}
public static final Pfunc_rev_props _ = new Pfunc_rev_props(-1);
public static final Pfunc_rev_props Instance = new Pfunc_rev_props(-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.strings; 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_case extends Pf_func_base { // EX: {{lc:A}} -> a
private boolean first; private int case_type;
@@ -27,8 +27,8 @@ public class Pfunc_case extends Pf_func_base { // EX: {{lc:A}} -> a
@Override public void Func_evaluate(Xop_ctx ctx, byte[] src, Xot_invk caller, Xot_invk self, Bry_bfr trg) {
byte[] val_dat_ary = Eval_argx(ctx, src, caller, self); if (val_dat_ary == Bry_.Empty) return;
int val_dat_ary_len = val_dat_ary.length; if (val_dat_ary_len == 0) return; // nothing to uc / lc; just return
Xol_lang lang = ctx.Wiki().Lang();
boolean upper = case_type == Xol_lang.Tid_upper;
Xol_lang_itm lang = ctx.Wiki().Lang();
boolean upper = case_type == Xol_lang_itm.Tid_upper;
if (first) {
Bry_bfr tmp_bfr = ctx.App().Utl__bfr_mkr().Get_b512();
val_dat_ary = lang.Case_mgr().Case_build_1st(tmp_bfr, upper, val_dat_ary, 0, val_dat_ary_len);

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.strings; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.pfuncs.*;
import gplx.xowa.html.*;
import gplx.xowa.langs.*;
import gplx.xowa.htmls.*;
import gplx.xowa.langs.*; import gplx.xowa.langs.kwds.*;
import gplx.xowa.parsers.*; import gplx.xowa.parsers.xndes.*; import gplx.xowa.parsers.tmpls.*;
public class Pfunc_tag extends Pf_func_base {
@Override public int Id() {return Xol_kwd_grp_.Id_misc_tag;}

View File

@@ -20,7 +20,7 @@ import org.junit.*;
public class Pfunc_tag_tst {
@Before public void init() {fxt.Reset();} private Xop_fxt fxt = new Xop_fxt();
@Test public void Basic() {fxt.Test_html_full_str("{{#tag:pre|a|id=b|style=c}}" , "<pre id=\"b\" style=\"c\">a</pre>");}
// @Test public void Missing_val() {fxt.ini_Msg(Mwl_tag_rsc._.Invalid).Test_parse_tmpl_str_test("{{#tag:pre|a|id=}}" , "{{test}}" , "");} // see {{Reflist|colwidth=30em}} -> <ref group=a>a</ref>{{#tag:references||group=}} -> ""
// @Test public void Missing_val() {fxt.ini_Msg(Mwl_tag_rsc.Instance.Invalid).Test_parse_tmpl_str_test("{{#tag:pre|a|id=}}" , "{{test}}" , "");} // see {{Reflist|colwidth=30em}} -> <ref group=a>a</ref>{{#tag:references||group=}} -> ""
@Test public void Atr2_empty() {fxt.Test_html_full_str("{{#tag:pre|a|id=b|}}" , "<pre id=\"b\">a</pre>");} // see {{Reflist|colwidth=30em}} -> <ref group=a>a</ref>{{#tag:references||group=a|}} -> "<references group=a/>"
@Test public void Val_apos() {fxt.Test_html_full_str("{{#tag:pre|a|id='b'}}" , "<pre id=\"b\">a</pre>");}
@Test public void Val_quote() {fxt.Test_html_full_str("{{#tag:pre|a|id=\"b\"}}" , "<pre id=\"b\">a</pre>");}

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.stringutils; 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_count extends Pf_func_base {
@Override public int Id() {return Xol_kwd_grp_.Id_strx_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.pfuncs.stringutils; 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_explode extends Pf_func_base {
@Override public int Id() {return Xol_kwd_grp_.Id_strx_explode;}

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.stringutils; 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_len extends Pf_func_base {
@Override public int Id() {return Xol_kwd_grp_.Id_strx_len;}

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.stringutils; 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_pos extends Pf_func_base {
@Override public int Id() {return Xol_kwd_grp_.Id_strx_pos;}

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.stringutils; 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_replace extends Pf_func_base {
@Override public int Id() {return Xol_kwd_grp_.Id_strx_replace;}

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.stringutils; 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_rpos extends Pf_func_base {
@Override public int Id() {return Xol_kwd_grp_.Id_strx_rpos;}

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.stringutils; 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_sub extends Pf_func_base {
@Override public int Id() {return Xol_kwd_grp_.Id_strx_sub;}

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.stringutils; 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_urldecode extends Pf_func_base {
@Override public int Id() {return Xol_kwd_grp_.Id_strx_urldecode;}

View File

@@ -19,5 +19,5 @@ package gplx.xowa.xtns.pfuncs.times; import gplx.*; import gplx.xowa.*; import g
import gplx.xowa.langs.*;
public interface Pft_fmt_itm {
int TypeId();
void Fmt(Bry_bfr bfr, Xowe_wiki wiki, Xol_lang lang, DateAdp date, Pft_func_formatdate_bldr bldr);
void Fmt(Bry_bfr bfr, Xowe_wiki wiki, Xol_lang_itm lang, DateAdp date, Pft_func_formatdate_bldr bldr);
}

View File

@@ -17,7 +17,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package gplx.xowa.xtns.pfuncs.times; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.pfuncs.*;
import gplx.core.btries.*;
import gplx.xowa.langs.*;
import gplx.xowa.langs.*; import gplx.xowa.langs.msgs.*;
import gplx.xowa.parsers.*;
public class Pft_fmt_itm_ {
public static final int

View File

@@ -19,7 +19,7 @@ package gplx.xowa.xtns.pfuncs.times; import gplx.*; import gplx.xowa.*; import g
import gplx.xowa.langs.*;
class Pft_fmt_itm_roman implements Pft_fmt_itm {
public int TypeId() {return Pft_fmt_itm_.Tid_roman;}
public void Fmt(Bry_bfr bfr, Xowe_wiki wiki, Xol_lang lang, DateAdp date, Pft_func_formatdate_bldr bldr) {
public void Fmt(Bry_bfr bfr, Xowe_wiki wiki, Xol_lang_itm lang, DateAdp date, Pft_func_formatdate_bldr bldr) {
int nxt_idx = bldr.Idx_cur() + 1;
Pft_fmt_itm[] ary = bldr.Fmt_itms();
if (nxt_idx < ary.length) {
@@ -37,113 +37,113 @@ class Pft_fmt_itm_roman implements Pft_fmt_itm {
}
class Pft_fmt_itm_thai implements Pft_fmt_itm {
public int TypeId() {return Pft_fmt_itm_.Tid_thai;}
public void Fmt(Bry_bfr bfr, Xowe_wiki wiki, Xol_lang lang, DateAdp date, Pft_func_formatdate_bldr bldr) {
public void Fmt(Bry_bfr bfr, Xowe_wiki wiki, Xol_lang_itm lang, DateAdp date, Pft_func_formatdate_bldr bldr) {
bfr.Add_int_variable(date.Year() + 543);
}
}
class Pft_fmt_itm_minguo implements Pft_fmt_itm {
public int TypeId() {return Pft_fmt_itm_.Tid_minguo;}
public void Fmt(Bry_bfr bfr, Xowe_wiki wiki, Xol_lang lang, DateAdp date, Pft_func_formatdate_bldr bldr) {
public void Fmt(Bry_bfr bfr, Xowe_wiki wiki, Xol_lang_itm lang, DateAdp date, Pft_func_formatdate_bldr bldr) {
bfr.Add_int_variable(date.Year() - 1911);
}
}
class Pft_fmt_itm_hebrew_year_num implements Pft_fmt_itm {
public int TypeId() {return Pft_fmt_itm_.Tid_hebrew_year_num;}
public void Fmt(Bry_bfr bfr, Xowe_wiki wiki, Xol_lang lang, DateAdp date, Pft_func_formatdate_bldr bldr) {
public void Fmt(Bry_bfr bfr, Xowe_wiki wiki, Xol_lang_itm lang, DateAdp date, Pft_func_formatdate_bldr bldr) {
int[] hebrew_date = Pft_fmt_itm_hebrew_.Calc_hebrew_date(date);
bfr.Add_int_variable(hebrew_date[Pft_fmt_itm_hebrew_.Rslt_year_num]);
}
}
class Pft_fmt_itm_hebrew_month_num implements Pft_fmt_itm {
public int TypeId() {return Pft_fmt_itm_.Tid_hebrew_month_num;}
public void Fmt(Bry_bfr bfr, Xowe_wiki wiki, Xol_lang lang, DateAdp date, Pft_func_formatdate_bldr bldr) {
public void Fmt(Bry_bfr bfr, Xowe_wiki wiki, Xol_lang_itm lang, DateAdp date, Pft_func_formatdate_bldr bldr) {
int[] hebrew_date = Pft_fmt_itm_hebrew_.Calc_hebrew_date(date);
bfr.Add_int_variable(hebrew_date[Pft_fmt_itm_hebrew_.Rslt_month_num]);
}
}
class Pft_fmt_itm_hebrew_day_num implements Pft_fmt_itm {
public int TypeId() {return Pft_fmt_itm_.Tid_hebrew_day_num;}
public void Fmt(Bry_bfr bfr, Xowe_wiki wiki, Xol_lang lang, DateAdp date, Pft_func_formatdate_bldr bldr) {
public void Fmt(Bry_bfr bfr, Xowe_wiki wiki, Xol_lang_itm lang, DateAdp date, Pft_func_formatdate_bldr bldr) {
int[] hebrew_date = Pft_fmt_itm_hebrew_.Calc_hebrew_date(date);
bfr.Add_int_variable(hebrew_date[Pft_fmt_itm_hebrew_.Rslt_day_num]);
}
}
class Pft_fmt_itm_hebrew_month_days_count implements Pft_fmt_itm {
public int TypeId() {return Pft_fmt_itm_.Tid_hebrew_month_days_count;}
public void Fmt(Bry_bfr bfr, Xowe_wiki wiki, Xol_lang lang, DateAdp date, Pft_func_formatdate_bldr bldr) {
public void Fmt(Bry_bfr bfr, Xowe_wiki wiki, Xol_lang_itm lang, DateAdp date, Pft_func_formatdate_bldr bldr) {
int[] hebrew_date = Pft_fmt_itm_hebrew_.Calc_hebrew_date(date);
bfr.Add_int_variable(hebrew_date[Pft_fmt_itm_hebrew_.Rslt_month_days_count]);
}
}
class Pft_fmt_itm_hebrew_month_name_full implements Pft_fmt_itm {
public int TypeId() {return Pft_fmt_itm_.Tid_hebrew_month_name_full;}
public void Fmt(Bry_bfr bfr, Xowe_wiki wiki, Xol_lang lang, DateAdp date, Pft_func_formatdate_bldr bldr) {
public void Fmt(Bry_bfr bfr, Xowe_wiki wiki, Xol_lang_itm lang, DateAdp date, Pft_func_formatdate_bldr bldr) {
bfr.Add(Pft_fmt_itm_hebrew_.Get_hebrew_month_name_full(wiki, date));
}
}
class Pft_fmt_itm_hebrew_month_name_gen implements Pft_fmt_itm {
public int TypeId() {return Pft_fmt_itm_.Tid_hebrew_month_name_gen;}
public void Fmt(Bry_bfr bfr, Xowe_wiki wiki, Xol_lang lang, DateAdp date, Pft_func_formatdate_bldr bldr) {
public void Fmt(Bry_bfr bfr, Xowe_wiki wiki, Xol_lang_itm lang, DateAdp date, Pft_func_formatdate_bldr bldr) {
bfr.Add(Pft_fmt_itm_hebrew_.Get_hebrew_month_name_gen(wiki, date));
}
}
class Pft_fmt_itm_hebrew_numeral implements Pft_fmt_itm {
public int TypeId() {return Pft_fmt_itm_.Tid_hebrew_numeral;}
public void Fmt(Bry_bfr bfr, Xowe_wiki wiki, Xol_lang lang, DateAdp date, Pft_func_formatdate_bldr bldr) {
public void Fmt(Bry_bfr bfr, Xowe_wiki wiki, Xol_lang_itm lang, DateAdp date, Pft_func_formatdate_bldr bldr) {
bfr.Add_str(Pft_fmt_itm_hebrew_.Calc_hebrew_numeral(date.Year()));
}
}
class Pft_fmt_itm_iranian_year_idx implements Pft_fmt_itm {
public int TypeId() {return Pft_fmt_itm_.Tid_iranian_year_idx;}
public void Fmt(Bry_bfr bfr, Xowe_wiki wiki, Xol_lang lang, DateAdp date, Pft_func_formatdate_bldr bldr) {
public void Fmt(Bry_bfr bfr, Xowe_wiki wiki, Xol_lang_itm lang, DateAdp date, Pft_func_formatdate_bldr bldr) {
int[] seg_ary = Pft_fmt_itm_iranian.Calc_date(date);
bfr.Add_int_variable(seg_ary[Pft_fmt_itm_iranian.Rslt__year]);
}
}
class Pft_fmt_itm_iranian_month_idx implements Pft_fmt_itm {
public int TypeId() {return Pft_fmt_itm_.Tid_iranian_month_idx;}
public void Fmt(Bry_bfr bfr, Xowe_wiki wiki, Xol_lang lang, DateAdp date, Pft_func_formatdate_bldr bldr) {
public void Fmt(Bry_bfr bfr, Xowe_wiki wiki, Xol_lang_itm lang, DateAdp date, Pft_func_formatdate_bldr bldr) {
int[] seg_ary = Pft_fmt_itm_iranian.Calc_date(date);
bfr.Add_int_variable(seg_ary[Pft_fmt_itm_iranian.Rslt__month]);
}
}
class Pft_fmt_itm_iranian_day_idx implements Pft_fmt_itm {
public int TypeId() {return Pft_fmt_itm_.Tid_iranian_day_idx;}
public void Fmt(Bry_bfr bfr, Xowe_wiki wiki, Xol_lang lang, DateAdp date, Pft_func_formatdate_bldr bldr) {
public void Fmt(Bry_bfr bfr, Xowe_wiki wiki, Xol_lang_itm lang, DateAdp date, Pft_func_formatdate_bldr bldr) {
int[] seg_ary = Pft_fmt_itm_iranian.Calc_date(date);
bfr.Add_int_variable(seg_ary[Pft_fmt_itm_iranian.Rslt__day]);
}
}
class Pft_fmt_itm_iranian_month_name implements Pft_fmt_itm {
public int TypeId() {return Pft_fmt_itm_.Tid_iranian_month_name;}
public void Fmt(Bry_bfr bfr, Xowe_wiki wiki, Xol_lang lang, DateAdp date, Pft_func_formatdate_bldr bldr) {
public void Fmt(Bry_bfr bfr, Xowe_wiki wiki, Xol_lang_itm lang, DateAdp date, Pft_func_formatdate_bldr bldr) {
bfr.Add(Pft_fmt_itm_iranian.Get_month_name(wiki, date));
}
}
class Pft_fmt_itm_hijiri_year_idx implements Pft_fmt_itm {
public int TypeId() {return Pft_fmt_itm_.Tid_hijiri_year_idx;}
public void Fmt(Bry_bfr bfr, Xowe_wiki wiki, Xol_lang lang, DateAdp date, Pft_func_formatdate_bldr bldr) {
public void Fmt(Bry_bfr bfr, Xowe_wiki wiki, Xol_lang_itm lang, DateAdp date, Pft_func_formatdate_bldr bldr) {
int[] seg_ary = Pft_fmt_itm_hijiri.Calc_date(date);
bfr.Add_int_variable(seg_ary[Pft_fmt_itm_hijiri.Rslt__year]);
}
}
class Pft_fmt_itm_hijiri_month_idx implements Pft_fmt_itm {
public int TypeId() {return Pft_fmt_itm_.Tid_hijiri_month_idx;}
public void Fmt(Bry_bfr bfr, Xowe_wiki wiki, Xol_lang lang, DateAdp date, Pft_func_formatdate_bldr bldr) {
public void Fmt(Bry_bfr bfr, Xowe_wiki wiki, Xol_lang_itm lang, DateAdp date, Pft_func_formatdate_bldr bldr) {
int[] seg_ary = Pft_fmt_itm_hijiri.Calc_date(date);
bfr.Add_int_variable(seg_ary[Pft_fmt_itm_hijiri.Rslt__month]);
}
}
class Pft_fmt_itm_hijiri_day_idx implements Pft_fmt_itm {
public int TypeId() {return Pft_fmt_itm_.Tid_hijiri_day_idx;}
public void Fmt(Bry_bfr bfr, Xowe_wiki wiki, Xol_lang lang, DateAdp date, Pft_func_formatdate_bldr bldr) {
public void Fmt(Bry_bfr bfr, Xowe_wiki wiki, Xol_lang_itm lang, DateAdp date, Pft_func_formatdate_bldr bldr) {
int[] seg_ary = Pft_fmt_itm_hijiri.Calc_date(date);
bfr.Add_int_variable(seg_ary[Pft_fmt_itm_hijiri.Rslt__day]);
}
}
class Pft_fmt_itm_hijiri_month_name implements Pft_fmt_itm {
public int TypeId() {return Pft_fmt_itm_.Tid_hijiri_month_name;}
public void Fmt(Bry_bfr bfr, Xowe_wiki wiki, Xol_lang lang, DateAdp date, Pft_func_formatdate_bldr bldr) {
public void Fmt(Bry_bfr bfr, Xowe_wiki wiki, Xol_lang_itm lang, DateAdp date, Pft_func_formatdate_bldr bldr) {
bfr.Add(Pft_fmt_itm_hijiri.Get_month_name(wiki, date));
}
}

View File

@@ -214,7 +214,7 @@ class Pft_fmt_itm_hebrew_ {
};
public static String Calc_hebrew_numeral(int num) {
if (num > 9999 || num <= 0)
return Int_.Xto_str(num);
return Int_.To_str(num);
String tmp = "";
int pow10 = 1000;

View File

@@ -21,7 +21,7 @@ class Pft_fmt_itm_seg_int implements Pft_fmt_itm {
public Pft_fmt_itm_seg_int(int segIdx, int len, boolean fixed_len) {this.segIdx = segIdx; this.fixed_len = fixed_len; this.len = len;} private int segIdx, len; boolean fixed_len;
public int TypeId() {return Pft_fmt_itm_.Tid_seg_int;}
public int SegIdx() {return segIdx;}
public void Fmt(Bry_bfr bfr, Xowe_wiki wiki, Xol_lang lang, DateAdp date, Pft_func_formatdate_bldr bldr) {
public void Fmt(Bry_bfr bfr, Xowe_wiki wiki, Xol_lang_itm lang, DateAdp date, Pft_func_formatdate_bldr bldr) {
int val = date.Segment(segIdx);
if (fixed_len) bfr.Add_int_fixed(val, len);
else bfr.Add_int_variable(val);
@@ -29,24 +29,24 @@ class Pft_fmt_itm_seg_int implements Pft_fmt_itm {
}
class Pft_fmt_itm_raw implements Pft_fmt_itm {
public int TypeId() {return Pft_fmt_itm_.Tid_raw;}
public void Fmt(Bry_bfr bfr, Xowe_wiki wiki, Xol_lang lang, DateAdp date, Pft_func_formatdate_bldr bldr) {
public void Fmt(Bry_bfr bfr, Xowe_wiki wiki, Xol_lang_itm lang, DateAdp date, Pft_func_formatdate_bldr bldr) {
// TODO: should flag .Raw() on bldr to skip transliterating numerals in foreign languages; DATE:2013-12-31
}
}
class Pft_fmt_itm_seg_str implements Pft_fmt_itm {
public Pft_fmt_itm_seg_str(int segIdx, int type) {this.segIdx = segIdx; this.type = type;} private int segIdx, type;
public int TypeId() {return Pft_fmt_itm_.Tid_seg_str;}
public void Fmt(Bry_bfr bfr, Xowe_wiki wiki, Xol_lang lang, DateAdp date, Pft_func_formatdate_bldr bldr) {
public void Fmt(Bry_bfr bfr, Xowe_wiki wiki, Xol_lang_itm lang, DateAdp date, Pft_func_formatdate_bldr bldr) {
DateAdpTranslator_xapp.Translate(wiki, lang, type, date.Segment(segIdx), bfr);
}
}
class Pft_fmt_itm_year_isLeap implements Pft_fmt_itm {
public int TypeId() {return Pft_fmt_itm_.Tid_year_isLeap;}
public void Fmt(Bry_bfr bfr, Xowe_wiki wiki, Xol_lang lang, DateAdp date, Pft_func_formatdate_bldr bldr) {bfr.Add_int_fixed(DateAdp_.IsLeapYear(date.Year()) ? 1 : 0, 1);}
public void Fmt(Bry_bfr bfr, Xowe_wiki wiki, Xol_lang_itm lang, DateAdp date, Pft_func_formatdate_bldr bldr) {bfr.Add_int_fixed(DateAdp_.IsLeapYear(date.Year()) ? 1 : 0, 1);}
}
class Pft_fmt_itm_hour_base12 implements Pft_fmt_itm {
public int TypeId() {return Pft_fmt_itm_.Tid_hour_base12;}
public void Fmt(Bry_bfr bfr, Xowe_wiki wiki, Xol_lang lang, DateAdp date, Pft_func_formatdate_bldr bldr) {
public void Fmt(Bry_bfr bfr, Xowe_wiki wiki, Xol_lang_itm lang, DateAdp date, Pft_func_formatdate_bldr bldr) {
int val = date.Hour();
switch (val) {
case 0: val = 12; break;
@@ -60,29 +60,29 @@ class Pft_fmt_itm_hour_base12 implements Pft_fmt_itm {
}
class Pft_fmt_itm_timestamp_unix implements Pft_fmt_itm {
public int TypeId() {return Pft_fmt_itm_.Tid_timestamp_unix;}
public void Fmt(Bry_bfr bfr, Xowe_wiki wiki, Xol_lang lang, DateAdp date, Pft_func_formatdate_bldr bldr) {bfr.Add_long_variable(date.Timestamp_unix());}
public void Fmt(Bry_bfr bfr, Xowe_wiki wiki, Xol_lang_itm lang, DateAdp date, Pft_func_formatdate_bldr bldr) {bfr.Add_long_variable(date.Timestamp_unix());}
}
class Pft_fmt_itm_raw_ary implements Pft_fmt_itm {
public int TypeId() {return Pft_fmt_itm_.Tid_raw_ary;}
public void Fmt(Bry_bfr bfr, Xowe_wiki wiki, Xol_lang lang, DateAdp date, Pft_func_formatdate_bldr bldr) {bfr.Add_mid(src, bgn, end);}
public void Fmt(Bry_bfr bfr, Xowe_wiki wiki, Xol_lang_itm lang, DateAdp date, Pft_func_formatdate_bldr bldr) {bfr.Add_mid(src, bgn, end);}
public Pft_fmt_itm_raw_ary(byte[] src, int bgn, int end) {this.src = src; this.bgn = bgn; this.end = end;} private byte[] src; int bgn; int end;
}
class Pft_fmt_itm_raw_byt implements Pft_fmt_itm {
public int TypeId() {return Pft_fmt_itm_.Tid_raw_byt;}
public void Fmt(Bry_bfr bfr, Xowe_wiki wiki, Xol_lang lang, DateAdp date, Pft_func_formatdate_bldr bldr) {bfr.Add_byte(b);}
public void Fmt(Bry_bfr bfr, Xowe_wiki wiki, Xol_lang_itm lang, DateAdp date, Pft_func_formatdate_bldr bldr) {bfr.Add_byte(b);}
public Pft_fmt_itm_raw_byt(byte b) {this.b = b;} private byte b;
}
class Pft_fmt_itm_daysInMonth implements Pft_fmt_itm {
public int TypeId() {return Pft_fmt_itm_.Tid_daysInMonth;}
public void Fmt(Bry_bfr bfr, Xowe_wiki wiki, Xol_lang lang, DateAdp date, Pft_func_formatdate_bldr bldr) {bfr.Add_int_variable(DateAdp_.DaysInMonth(date));}
public void Fmt(Bry_bfr bfr, Xowe_wiki wiki, Xol_lang_itm lang, DateAdp date, Pft_func_formatdate_bldr bldr) {bfr.Add_int_variable(DateAdp_.DaysInMonth(date));}
}
class Pft_fmt_itm_dayOfYear implements Pft_fmt_itm {
public int TypeId() {return Pft_fmt_itm_.Tid_dayOfYear;}
public void Fmt(Bry_bfr bfr, Xowe_wiki wiki, Xol_lang lang, DateAdp date, Pft_func_formatdate_bldr bldr) {bfr.Add_int_variable(date.DayOfYear() - Int_.Base1);} // php is base1; .net/java is base0
public void Fmt(Bry_bfr bfr, Xowe_wiki wiki, Xol_lang_itm lang, DateAdp date, Pft_func_formatdate_bldr bldr) {bfr.Add_int_variable(date.DayOfYear() - Int_.Base1);} // php is base1; .net/java is base0
}
class Pft_fmt_itm_am_pm implements Pft_fmt_itm {
public int TypeId() {return Pft_fmt_itm_.Tid_AmPm;}
public void Fmt(Bry_bfr bfr, Xowe_wiki wiki, Xol_lang lang, DateAdp date, Pft_func_formatdate_bldr bldr) {
public void Fmt(Bry_bfr bfr, Xowe_wiki wiki, Xol_lang_itm lang, DateAdp date, Pft_func_formatdate_bldr bldr) {
boolean am = date.Hour() < 13;
byte[] val = null;
if ( am && lower) val = Ary_am_lower;
@@ -95,7 +95,7 @@ class Pft_fmt_itm_am_pm implements Pft_fmt_itm {
}
class Pft_fmt_itm_dow_base0 implements Pft_fmt_itm {
public int TypeId() {return Pft_fmt_itm_.Tid_dow_base0;}
public void Fmt(Bry_bfr bfr, Xowe_wiki wiki, Xol_lang lang, DateAdp date, Pft_func_formatdate_bldr bldr) {
public void Fmt(Bry_bfr bfr, Xowe_wiki wiki, Xol_lang_itm lang, DateAdp date, Pft_func_formatdate_bldr bldr) {
int dow = date.DayOfWeek();
if (dow == 0) dow = 7;
bfr.Add_int_fixed(dow, 1);
@@ -104,7 +104,7 @@ class Pft_fmt_itm_dow_base0 implements Pft_fmt_itm {
class Pft_fmt_itm_iso_fmt implements Pft_fmt_itm {
public Pft_fmt_itm_iso_fmt() {}
public int TypeId() {return Pft_fmt_itm_.Tid_iso_fmt;}
public void Fmt(Bry_bfr bfr, Xowe_wiki wiki, Xol_lang lang, DateAdp date, Pft_func_formatdate_bldr bldr) {
public void Fmt(Bry_bfr bfr, Xowe_wiki wiki, Xol_lang_itm lang, DateAdp date, Pft_func_formatdate_bldr bldr) {
bfr.Add_str(date.XtoStr_fmt("yyyy-MM-dd"));
bfr.Add_byte(Byte_ascii.Ltr_T);
bfr.Add_str(date.XtoStr_fmt("HH:mm:ss"));
@@ -114,7 +114,7 @@ class Pft_fmt_itm_iso_fmt implements Pft_fmt_itm {
class Pft_fmt_itm_rfc_5322 implements Pft_fmt_itm {
public Pft_fmt_itm_rfc_5322() {}
public int TypeId() {return Pft_fmt_itm_.Tid_rfc_5322;}
public void Fmt(Bry_bfr bfr, Xowe_wiki wiki, Xol_lang lang, DateAdp date, Pft_func_formatdate_bldr bldr) {// Mon, 02 Jan 2012 10:15:01 +0000
public void Fmt(Bry_bfr bfr, Xowe_wiki wiki, Xol_lang_itm lang, DateAdp date, Pft_func_formatdate_bldr bldr) {// Mon, 02 Jan 2012 10:15:01 +0000
int dow = date.DayOfWeek();
DateAdpTranslator_xapp.Translate(wiki, lang, DateAdp_.SegIdx_dayOfWeek, dow, bfr);
bfr.Add_byte(Byte_ascii.Comma).Add_byte(Byte_ascii.Space);
@@ -125,7 +125,7 @@ class Pft_fmt_itm_rfc_5322 implements Pft_fmt_itm {
class Pft_fmt_itm_timezone_offset implements Pft_fmt_itm {
public Pft_fmt_itm_timezone_offset() {}
public int TypeId() {return Pft_fmt_itm_.Tid_timezone_offset;}
public void Fmt(Bry_bfr bfr, Xowe_wiki wiki, Xol_lang lang, DateAdp date, Pft_func_formatdate_bldr bldr) {
public void Fmt(Bry_bfr bfr, Xowe_wiki wiki, Xol_lang_itm lang, DateAdp date, Pft_func_formatdate_bldr bldr) {
bfr.Add_int_variable(date.Timezone_offset());
}
}

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.times; 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 Pft_func_date_int extends Pf_func_base {
public Pft_func_date_int(int id, int date_tid) {this.id = id; this.date_tid = date_tid;} private int date_tid;
@@ -24,7 +24,7 @@ public class Pft_func_date_int extends Pf_func_base {
@Override public Pf_func New(int id, byte[] name) {return new Pft_func_date_int(id, date_tid).Name_(name);}
@Override public void Func_evaluate(Xop_ctx ctx, byte[] src, Xot_invk caller, Xot_invk self, Bry_bfr bfr) {
DateAdp date = DateAdp_.MinValue;
Xowe_wiki wiki = ctx.Wiki(); Xol_lang lang = ctx.Lang();
Xowe_wiki wiki = ctx.Wiki(); Xol_lang_itm lang = ctx.Lang();
switch (date_tid) {
case Date_tid_lcl: date = DateAdp_.Now(); break;
case Date_tid_utc: date = DateAdp_.Now().XtoUtc(); break;

View File

@@ -17,7 +17,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package gplx.xowa.xtns.pfuncs.times; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.pfuncs.*;
import gplx.core.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 Pft_func_formatdate extends Pf_func_base {
@Override public int Id() {return Xol_kwd_grp_.Id_str_formatdate;}

View File

@@ -21,10 +21,10 @@ public class Pft_func_formatdate_bldr {
public int Idx_cur() {return idx_cur;} private int idx_cur;
public Pft_func_formatdate_bldr Idx_nxt_(int v) {idx_nxt = v; return this;} private int idx_nxt;
public Pft_fmt_itm[] Fmt_itms() {return fmt_itms;} Pft_fmt_itm[] fmt_itms;
public void Format(Bry_bfr bfr, Xowe_wiki wiki, Xol_lang lang, DateAdp date, Pft_fmt_itm fmt_itm) {
public void Format(Bry_bfr bfr, Xowe_wiki wiki, Xol_lang_itm lang, DateAdp date, Pft_fmt_itm fmt_itm) {
fmt_itm.Fmt(bfr, wiki, lang, date, this);
}
public void Format(Bry_bfr bfr, Xowe_wiki wiki, Xol_lang lang, DateAdp date, Pft_fmt_itm[] fmt_itms) {
public void Format(Bry_bfr bfr, Xowe_wiki wiki, Xol_lang_itm lang, DateAdp date, Pft_fmt_itm[] fmt_itms) {
this.fmt_itms = fmt_itms;
int len = fmt_itms.length;
idx_cur = 0; idx_nxt = -1;
@@ -44,7 +44,7 @@ public class Pft_func_formatdate_bldr {
}
}
if (last != null) {
int year_int = bfr.XtoIntAndClear(-1);
int year_int = bfr.To_int_and_clear(-1);
if (year_int != -1) { // handle no format; EX:{{#time:xh}} DATE:2014-07-20
date = DateAdp_.seg_(new int[] {year_int, date.Month(), date.Day(), date.Hour(), date.Minute(), date.Second(), date.Frac()});
last.Fmt(bfr, wiki, lang, date, this);

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.times; 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 Pft_func_time extends Pf_func_base {
Pft_func_time(boolean utc) {this.utc = utc;} private boolean utc;
@@ -33,11 +33,11 @@ public class Pft_func_time extends Pf_func_base {
if (date == null || error_bfr.Len() > 0)
bfr.Add_str_a7("<strong class=\"error\">").Add_bfr_and_clear(error_bfr).Add_str("</strong>");
else {
Xol_lang lang = ctx.Lang();
Xol_lang_itm lang = ctx.Lang();
if (Bry_.Len_gt_0(arg_lang)) {
Xol_lang_itm specified_lang_itm = Xol_lang_itm_.Get_by_key(arg_lang);
Xol_lang_stub specified_lang_itm = Xol_lang_stub_.Get_by_key_or_null(arg_lang);
if (specified_lang_itm != null) { // NOTE: if lang_code is bad, then ignore (EX:bad_code)
Xol_lang specified_lang = ctx.Wiki().Appe().Lang_mgr().Get_by_key_or_new(arg_lang);
Xol_lang_itm specified_lang = ctx.Wiki().Appe().Lang_mgr().Get_by_or_new(arg_lang);
lang = specified_lang;
}
}
@@ -59,7 +59,7 @@ public class Pft_func_time extends Pf_func_base {
public static final Pft_func_time _Lcl = new Pft_func_time(false), _Utc = new Pft_func_time(true);
}
class DateAdpTranslator_xapp {
public static void Translate(Xowe_wiki wiki, Xol_lang lang, int type, int val, Bry_bfr bb) {
public static void Translate(Xowe_wiki wiki, Xol_lang_itm lang, int type, int val, Bry_bfr bb) {
lang.Init_by_load_assert();
byte[] itm_val = lang.Msg_mgr().Val_by_id(type + val); if (itm_val == null) return;
bb.Add(itm_val);

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.times; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.pfuncs.*;
import org.junit.*; import gplx.xowa.langs.*;
public class Pft_func_time_basic_tst {
import org.junit.*; import gplx.xowa.langs.*; import gplx.xowa.langs.msgs.*;
public class Pft_func_time_basic_tst {
@Before public void init() {fxt.Reset(); Tfds.Now_set(DateAdp_.new_(2012, 1, 2, 3, 4, 5, 6));} private Xop_fxt fxt = new Xop_fxt();
@After public void term() {Tfds.Now_enabled_n_();}
@Test public void Utc_date() {fxt.Test_parse_tmpl_str("{{#time:Y-m-d|2012-01-02 03:04:05}}" , "2012-01-02");}
@@ -84,7 +84,7 @@ public class Pft_func_time_basic_tst {
@Test public void Timezone_wrap() {fxt.Test_parse_tmpl_str("{{#time:Y-m-d H:i:s|2012-01-31 22:30:05+01:30}}" , "2012-02-01 00:00:05");} // PURPOSE: handle timezone wrap ; DATE:2014-08-26
@Test public void Rfc5322() {fxt.Test_parse_tmpl_str("{{#time:r|}}" , "Mon, 02 Jan 2012 08:04:05 +0000");}
@Test public void Lang() {
Xol_lang fr_lang = fxt.App().Lang_mgr().Get_by_key_or_new(Bry_.new_a7("fr"));
Xol_lang_itm fr_lang = fxt.App().Lang_mgr().Get_by_or_new(Bry_.new_a7("fr"));
Xol_msg_itm msg_itm = fr_lang.Msg_mgr().Itm_by_key_or_new(Bry_.new_a7("January"));
msg_itm.Atrs_set(Bry_.new_a7("Janvier"), false, false);
fxt.Test_parse_tmpl_str("{{#time:F|2012-01|fr}}" , "Janvier");

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.times; 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.msgs.*;
public class Pft_func_time_foreign_tst {
@Before public void init() {fxt.Clear();} private Pft_func_time_foreign_fxt fxt = new Pft_func_time_foreign_fxt();
@After public void term() {fxt.Term();}
@@ -79,7 +79,7 @@ class Pft_func_time_foreign_fxt {
public void Test_Roman(int v, String expd) {
Bry_bfr bfr = Bry_bfr.new_(16);
Pfxtp_roman.ToRoman(v, bfr);
String actl = bfr.Xto_str_and_clear();
String actl = bfr.To_str_and_clear();
Tfds.Eq(expd, actl);
}
}

View File

@@ -54,7 +54,7 @@ class Pxd_itm_colon extends Pxd_itm_base {
class Pxd_itm_null extends Pxd_itm_base {
@Override public byte Tkn_tid() {return Pxd_itm_.Tid_null;}
@Override public int Eval_idx() {return 99;}
public static final Pxd_itm_null _ = new Pxd_itm_null();
public static final Pxd_itm_null Instance = new Pxd_itm_null();
}
class Pxd_itm_dash extends Pxd_itm_base {
@Override public byte Tkn_tid() {return Pxd_itm_.Tid_dash;}
@@ -123,12 +123,12 @@ class Pxd_itm_sorter implements gplx.lists.ComparerAble {
Pxd_itm rhs = (Pxd_itm)rhsObj;
return Int_.Compare(lhs.Eval_idx(), rhs.Eval_idx());
}
public static final Pxd_itm_sorter _ = new Pxd_itm_sorter();
public static final Pxd_itm_sorter Instance = new Pxd_itm_sorter();
public static Pxd_itm[] XtoAryAndSort(Pxd_itm[] src, int src_len) {
Pxd_itm[] rv = new Pxd_itm[src_len];
for (int i = 0; i < src_len; i++)
rv[i] = src[i];
Array_.Sort(rv, Pxd_itm_sorter._);
Array_.Sort(rv, Pxd_itm_sorter.Instance);
return rv;
}
}

View File

@@ -237,7 +237,7 @@ class Pxd_itm_day_suffix extends Pxd_itm_base implements Pxd_itm_prototype {
state.Err_set(Pft_func_time_log.Invalid_day, Bry_fmtr_arg_.int_(Int_.Min_value));
}
}
public static final Pxd_itm_day_suffix _ = new Pxd_itm_day_suffix(); Pxd_itm_day_suffix() {}
public static final Pxd_itm_day_suffix Instance = new Pxd_itm_day_suffix(); Pxd_itm_day_suffix() {}
}
class Pxd_itm_day_relative extends Pxd_itm_base implements Pxd_itm_prototype {
public Pxd_itm_day_relative(int adj, int ary_idx) {Ctor(ary_idx); this.adj = adj;}

View File

@@ -233,7 +233,7 @@ class Pxd_parser_ {
int len = suffix_ary.length;
for (int i = 0; i < len; i++) {
String suffix = suffix_ary[i];
trie.Add_obj(suffix, Pxd_itm_day_suffix._);
trie.Add_obj(suffix, Pxd_itm_day_suffix.Instance);
}
}
private static void Init_relative() {

View File

@@ -66,7 +66,7 @@ public class Pxd_parser_tst {
byte[] raw_ary = Bry_.new_u8(raw);
DateAdp date = parser.Parse(raw_ary, bfr);
if (date == DateAdp_.MinValue)
Tfds.Eq(expd, bfr.Xto_str_and_clear(), raw);
Tfds.Eq(expd, bfr.To_str_and_clear(), raw);
else
Tfds.Eq(expd, date.XtoStr_fmt_yyyy_MM_dd());
}
@@ -74,7 +74,7 @@ public class Pxd_parser_tst {
byte[] raw_ary = Bry_.new_u8(raw);
DateAdp date = parser.Parse(raw_ary, bfr);
if (date == DateAdp_.MinValue)
Tfds.Eq(expd, bfr.Xto_str_and_clear(), raw);
Tfds.Eq(expd, bfr.To_str_and_clear(), raw);
else
Tfds.Eq(expd, date.XtoStr_fmt("HH:mm:ss.fff"));
}
@@ -82,7 +82,7 @@ public class Pxd_parser_tst {
byte[] raw_ary = Bry_.new_u8(raw);
DateAdp date = parser.Parse(raw_ary, bfr);
if (date == DateAdp_.MinValue)
Tfds.Eq(expd, bfr.Xto_str_and_clear(), raw);
Tfds.Eq(expd, bfr.To_str_and_clear(), raw);
else
Tfds.Eq(expd, date.XtoStr_fmt("yyyy-MM-dd HH:mm:ss.fff"));
}

View File

@@ -17,7 +17,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package gplx.xowa.xtns.pfuncs.ttls; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.pfuncs.*;
import gplx.core.btries.*; import gplx.langs.htmls.encoders.*;
import gplx.xowa.langs.*;
import gplx.xowa.langs.*; import gplx.xowa.langs.kwds.*;
import gplx.xowa.parsers.*; import gplx.xowa.parsers.amps.*; import gplx.xowa.parsers.lnkes.*; import gplx.xowa.parsers.xndes.*; import gplx.xowa.parsers.lnkis.*; import gplx.xowa.parsers.tmpls.*;
public class Pfunc_anchorencode extends Pf_func_base { // EX: {{anchorencode:a b}} -> a+b
@Override public boolean Func_require_colon_arg() {return true;}
@@ -46,7 +46,7 @@ public class Pfunc_anchorencode extends Pf_func_base { // EX: {{anchorencode:a b
Xop_tkn_itm sub = root.Subs_get(i);
Tkn(src, sub, root, i, tmp_bfr);
}
byte[] unencoded = tmp_bfr.Xto_bry_and_clear();
byte[] unencoded = tmp_bfr.To_bry_and_clear();
encoder.Encode(tmp_bfr, unencoded);
bfr.Add_bfr_and_clear(tmp_bfr);
}

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.ttls; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.pfuncs.*;
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.files.*; import gplx.xowa.files.repos.*;
import gplx.xowa.files.origs.*;
import gplx.xowa.parsers.*; import gplx.xowa.parsers.tmpls.*;

View File

@@ -17,7 +17,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package gplx.xowa.xtns.pfuncs.ttls; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.pfuncs.*;
import org.junit.*; import gplx.dbs.*;
import gplx.xowa.tdbs.*;
import gplx.xowa.wikis.tdbs.*;
import gplx.xowa.files.*; import gplx.xowa.files.exts.*; import gplx.xowa.files.origs.*; import gplx.xowa.files.repos.*;
import gplx.xowa.wikis.domains.*; import gplx.xowa.wikis.ttls.*;
public class Pfunc_filepath_tst {
@@ -26,8 +26,8 @@ public class Pfunc_filepath_tst {
private Xowe_wiki en_wiki, commons_wiki;
@Before public void init() {
fxt.Reset();
Io_mgr.I.InitEngine_mem();
Db_conn_bldr.I.Reg_default_mem();
Io_mgr.Instance.InitEngine_mem();
Db_conn_bldr.Instance.Reg_default_mem();
Xoae_app app = fxt.App();
en_wiki = fxt.Wiki();
// Init_orig_mgr(en_wiki);
@@ -40,7 +40,7 @@ public class Pfunc_filepath_tst {
app.File_mgr().Repo_mgr().Set("src_commons", "mem/xowa/file/commons/src/", commons_wiki.Domain_str());
app.File_mgr().Repo_mgr().Set("trg_commons", "mem/xowa/file/commons/trg/", commons_wiki.Domain_str());
en_wiki.File_mgr().Repo_mgr().Add_repo(Bry_.new_a7("src_commons"), Bry_.new_a7("trg_commons"));
Io_mgr.I.CreateDir(Io_url_.new_dir_("mem/xowa/wiki/commons.wikimedia.org/ns/000/page/")); // HACK: create page_dir so Scan_dirs_zip will not identify commons as zipped; FIX: remove; WHEN: after redoing commons.css download logic
Io_mgr.Instance.CreateDir(Io_url_.new_dir_("mem/xowa/wiki/commons.wikimedia.org/ns/000/page/")); // HACK: create page_dir so Scan_dirs_zip will not identify commons as zipped; FIX: remove; WHEN: after redoing commons.css download logic
}
@Test public void Wiki_is_local() {
fxt.Init_page_create(en_wiki, "File:A.png", "");

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.ttls; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.pfuncs.*;
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.tmpls.*;
public class Pfunc_ns extends Pf_func_base { // EX: {{ns:6}} -> File
private boolean encode;
@@ -33,7 +33,7 @@ public class Pfunc_ns extends Pf_func_base { // EX: {{ns:6}} -> File
if (ns_id == Int_.Min_value) {
Object o = ctx.Wiki().Ns_mgr().Names_get_or_null(val_dat_ary, 0, val_dat_ary_len);
if (o == null
&& !Bry_.Eq(ctx.Lang().Key_bry(), Xol_lang_.Key_en)) // foreign language; english canonical names are still valid; REF.MW: Language.php|getNsIndex
&& !Bry_.Eq(ctx.Lang().Key_bry(), Xol_lang_itm_.Key_en)) // foreign language; english canonical names are still valid; REF.MW: Language.php|getNsIndex
o = canonical.Get_by_mid(val_dat_ary, 0, val_dat_ary_len);
if (o != null) {
Xow_ns itm = (Xow_ns)o;

View File

@@ -17,7 +17,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package gplx.xowa.xtns.pfuncs.ttls; 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_rel2abs extends Pf_func_base {
@Override public boolean Func_require_colon_arg() {return true;}
@@ -164,7 +164,7 @@ public class Pfunc_rel2abs extends Pf_func_base {
}
tmp_bfr.Add_mid(tmp, seg_ary[j] - tmp_adj, seg_ary[j+1] - tmp_adj);
}
return tmp_bfr.Xto_bry_and_clear();
return tmp_bfr.To_bry_and_clear();
}
private static int[] seg_ary = new int[Xoa_ttl.Max_len];
@Override public int Id() {return Xol_kwd_grp_.Id_xtn_rel2abs;}

View File

@@ -17,7 +17,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package gplx.xowa.xtns.pfuncs.ttls; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.pfuncs.*;
import gplx.core.primitives.*; import gplx.xowa.xtns.pfuncs.times.*;
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_titleparts 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.ttls; 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_ttl extends Pf_func_base {
@Override public void Func_evaluate(Xop_ctx ctx, byte[] src, Xot_invk caller, Xot_invk self, Bry_bfr bfr) {
@@ -49,5 +49,5 @@ public class Pfunc_ttl extends Pf_func_base {
public Pfunc_ttl(int id) {this.id = id;}
@Override public int Id() {return id;} private int id;
@Override public Pf_func New(int id, byte[] name) {return new Pfunc_ttl(id).Name_(name);}
public static final Pfunc_ttl _ = new Pfunc_ttl(-1);
public static final Pfunc_ttl Instance = new Pfunc_ttl(-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.ttls; 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_urlencode extends Pf_func_base { // EX: {{urlencode:a b}} -> a+b
@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.ttls; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.pfuncs.*;
import gplx.xowa.wikis.xwikis.*;
import gplx.xowa.html.hrefs.*;
import gplx.xowa.htmls.hrefs.*;
import gplx.xowa.parsers.*; import gplx.xowa.parsers.tmpls.*;
public class Pfunc_urlfunc extends Pf_func_base { // EX: {{lc:A}} -> a
@Override public boolean Func_require_colon_arg() {return true;}
@@ -36,7 +36,7 @@ public class Pfunc_urlfunc extends Pf_func_base { // EX: {{lc:A}} -> a
if (tid == Tid_canonical)
trg.Add(Xoh_href_.Bry__https); // "https://"
else
trg.Add(Xoa_consts.Url_relative_prefix); // "//"
trg.Add(gplx.core.net.Gfo_protocol_itm.Bry_relative); // "//"
trg.Add(xwiki.Domain_bry()) // "commons.wikimedia.org"
.Add(Xoh_href_.Bry__wiki) // "/wiki/"
.Add_mid(ttl_ary, xwiki.Key_bry().length + 1, ttl_ary.length); // "A#b?c=d"; +1 for colon after "commons:"; NOTE: ugly way of getting rest of url, but ttl currently does not have Full_wo_wiki

View File

@@ -30,13 +30,13 @@ public class Pfunc_urlfunc_tst {
@Test public void Fullurl_arg() {fxt.Test_parse_tmpl_str_test("{{fullurle:a&b! c|action=edit}}" , "{{test}}", "//en.wikipedia.org/wiki/A%26b!_c?action=edit");}
@Test public void Random() {fxt.Test_parse_tmpl_str_test("{{fullurle:a&b! c|action=edit}}" , "{{test|a|b|c}}", "//en.wikipedia.org/wiki/A%26b!_c?action=edit");}
@Test public void Xwiki() {
fxt.Wiki().Xwiki_mgr().Add_full("commons", "commons.wikimedia.org");
fxt.Wiki().Xwiki_mgr().Add_by_atrs("commons", "commons.wikimedia.org");
fxt.Reset().Test_parse_tmpl_str_test("{{localurl:commons:A}}" , "{{test}}", "//commons.wikimedia.org/wiki/A");
fxt.Reset().Test_parse_tmpl_str_test("{{fullurl:commons:A}}" , "{{test}}", "//commons.wikimedia.org/wiki/A");
fxt.Reset().Test_parse_tmpl_str_test("{{canonicalurl:commons:A}}" , "{{test}}", "https://commons.wikimedia.org/wiki/A");
}
@Test public void Xwiki_qarg_fix() {
fxt.Wiki().Xwiki_mgr().Add_full("commons", "commons.wikimedia.org");
fxt.Wiki().Xwiki_mgr().Add_by_atrs("commons", "commons.wikimedia.org");
fxt.Reset().Test_parse_tmpl_str_test("{{fullurl:commons:A|key=val}}" , "{{test}}", "//commons.wikimedia.org/wiki/A?key=val");
}
}

View File

@@ -17,31 +17,70 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package gplx.xowa.xtns.pfuncs.wikis; 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.numbers.*;
import gplx.xowa.langs.*; import gplx.xowa.langs.kwds.*; import gplx.xowa.langs.numbers.*;
import gplx.xowa.wikis.nss.*; import gplx.xowa.wikis.data.*; import gplx.xowa.wikis.data.tbls.*;
import gplx.xowa.parsers.*; import gplx.xowa.parsers.tmpls.*;
public class Pfunc_pagesincategory extends Pf_func_base {
@Override public void Func_evaluate(Xop_ctx ctx, byte[] src, Xot_invk caller, Xot_invk self, Bry_bfr bb) {
byte[] val_dat_ary = Eval_argx(ctx, src, caller, self); if (Bry_.Len_eq_0(val_dat_ary)) {bb.Add_int_fixed(0, 1); return;}
val_dat_ary = Xoa_ttl.Replace_spaces(val_dat_ary);
@Override public int Id() {return Xol_kwd_grp_.Id_site_pagesincategory;}
@Override public Pf_func New(int id, byte[] name) {return new Pfunc_pagesincategory().Name_(name);}
@Override public void Func_evaluate(Xop_ctx ctx, byte[] src, Xot_invk caller, Xot_invk self, Bry_bfr bfr) { // REF.MW: /includes/parser/CoreParserFunctions.php|pagesincategory
byte[] ctg_ttl_bry = Eval_argx(ctx, src, caller, self);
if (Bry_.Len_eq_0(ctg_ttl_bry)) {bfr.Add_int_digits(1, 0); return;} // no title; EX: "{{PAGESINCATEGORY:}}"
Xowe_wiki wiki = ctx.Wiki();
int ctg_len = wiki.Db_mgr().Load_mgr().Load_ctg_count(val_dat_ary);
if (ctg_len == 0) {bb.Add_int_fixed(0, 1); return;}
Xol_lang lang = wiki.Lang();
if (trie == null) trie = Xol_kwd_mgr.trie_(lang.Kwd_mgr(), Xol_kwd_grp_.Id_str_rawsuffix);
Xowd_db_mgr core_data_mgr = wiki.Data__core_mgr();
int ctg_id = core_data_mgr.Tbl__page().Select_id(Xow_ns_.Id_category, Xoa_ttl.Replace_spaces(ctg_ttl_bry));
if (ctg_id == Xowd_page_itm.Id_null) {bfr.Add_int_digits(1, 0); return;} // category doesn't exist; EX: "{{PAGESINCATEGORY:Unknown_category}}"
Xowd_category_itm ctg_itm = core_data_mgr.Db__cat_core().Tbl__cat_core().Select(ctg_id);
if (ctg_itm == null) {bfr.Add_int_digits(1, 0); return;} // category counts don't exist; shouldn't happen
Xol_lang_itm lang = wiki.Lang();
Btrie_slim_mgr num_format_trie = Xol_kwd_mgr.trie_(lang.Kwd_mgr(), Xol_kwd_grp_.Id_str_rawsuffix);
Btrie_slim_mgr type_page_trie = Xol_kwd_mgr.trie_(lang.Kwd_mgr(), Xol_kwd_grp_.Id_pagesincategory_pages);
Btrie_slim_mgr type_subc_trie = Xol_kwd_mgr.trie_(lang.Kwd_mgr(), Xol_kwd_grp_.Id_pagesincategory_subcats);
Btrie_slim_mgr type_file_trie = Xol_kwd_mgr.trie_(lang.Kwd_mgr(), Xol_kwd_grp_.Id_pagesincategory_files);
boolean fmt_num = true; byte[] type_bry = null;
int self_args_len = self.Args_len();
byte[] arg_1 = self_args_len < 1 ? null : Pf_func_.Eval_arg_or_empty(ctx, src, caller, self, self_args_len, 0);
byte[] arg_2 = self_args_len < 2 ? null : Pf_func_.Eval_arg_or_empty(ctx, src, caller, self, self_args_len, 1);
if (num_format_trie.Match_exact(arg_1) != null) { // is arg_1 raw?
fmt_num = false;
type_bry = arg_2;
}
else {
type_bry = arg_1;
fmt_num = num_format_trie.Match_exact(arg_2) == null;
}
int num = ctg_itm.Count_all();
if (type_bry != null) {
if (type_page_trie.Match_exact(type_bry) != null) num = ctg_itm.Count_pages();
else if (type_subc_trie.Match_exact(type_bry) != null) num = ctg_itm.Count_subcs();
else if (type_file_trie.Match_exact(type_bry) != null) num = ctg_itm.Count_files();
}
byte[] num_bry = Int_.To_bry(num);
byte[] rslt = fmt_num ? lang.Num_mgr().Format_num(num_bry) : lang.Num_mgr().Raw(num_bry);
bfr.Add(rslt);
}
public void Func_evaluate_old(Xop_ctx ctx, byte[] src, Xot_invk caller, Xot_invk self, Bry_bfr bfr) {
byte[] ctg_ttl_bry = Eval_argx(ctx, src, caller, self); if (Bry_.Len_eq_0(ctg_ttl_bry)) {bfr.Add_int_digits(1, 0); return;} // no title; return 0; EX: "{{PAGESINCATEGORY:}}"
ctg_ttl_bry = Xoa_ttl.Replace_spaces(ctg_ttl_bry);
Xowe_wiki wiki = ctx.Wiki();
int ctg_len = wiki.Db_mgr().Load_mgr().Load_ctg_count(ctg_ttl_bry);
if (ctg_len == 0) {bfr.Add_int_digits(1, 0); return;}
Xol_lang_itm lang = wiki.Lang();
Btrie_slim_mgr num_format_trie = Xol_kwd_mgr.trie_(lang.Kwd_mgr(), Xol_kwd_grp_.Id_str_rawsuffix);
// Btrie_slim_mgr type_page_trie = Xol_kwd_mgr.trie_(lang.Kwd_mgr(), Xol_kwd_grp_.Id_pagesincategory_pages);
// Btrie_slim_mgr type_subc_trie = Xol_kwd_mgr.trie_(lang.Kwd_mgr(), Xol_kwd_grp_.Id_pagesincategory_subcats);
// Btrie_slim_mgr type_file_trie = Xol_kwd_mgr.trie_(lang.Kwd_mgr(), Xol_kwd_grp_.Id_pagesincategory_files);
int self_args_len = self.Args_len();
boolean fmt_num = true;
if (self_args_len == 1) {
byte[] arg1 = Pf_func_.Eval_arg_or_empty(ctx, src, caller, self, self_args_len, 0);
if (arg1 != Bry_.Empty && trie.Match_exact(arg1, 0, arg1.length) != null)
if (arg1 != Bry_.Empty && num_format_trie.Match_exact(arg1, 0, arg1.length) != null)
fmt_num = false;
}
Bry_bfr tmp_bfr = wiki.Utl__bfr_mkr().Get_b128().Mkr_rls();
byte[] ctg_len_bry = tmp_bfr.Add_int_variable(ctg_len).Xto_bry_and_clear();
byte[] ctg_len_bry = tmp_bfr.Add_int_variable(ctg_len).To_bry_and_clear();
byte[] rslt = fmt_num ? lang.Num_mgr().Format_num(ctg_len_bry) : lang.Num_mgr().Raw(ctg_len_bry);
bb.Add(rslt);
} private Btrie_slim_mgr trie;
@Override public int Id() {return Xol_kwd_grp_.Id_site_pagesincategory;}
@Override public Pf_func New(int id, byte[] name) {return new Pfunc_pagesincategory().Name_(name);}
public static final Pfunc_pagesincategory _ = new Pfunc_pagesincategory(); Pfunc_pagesincategory() {}
bfr.Add(rslt);
}
public static final Pfunc_pagesincategory Instance = new Pfunc_pagesincategory(); Pfunc_pagesincategory() {}
}

View File

@@ -0,0 +1,65 @@
/*
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.pfuncs.wikis; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.pfuncs.*;
import org.junit.*; import gplx.xowa.wikis.nss.*; import gplx.xowa.wikis.data.*; import gplx.xowa.wikis.data.tbls.*;
public class Pfunc_pagesincategory_tst {
private final Pfunc_pagesincategory_tstr tstr = new Pfunc_pagesincategory_tstr();
@Before public void setup() {tstr.Init(); tstr.Init_category_counts("A", 1000, 2000, 3000);}
@Test public void Type__none() {tstr.Test_parse("{{PAGESINCATEGORY:A}}" , "6,000");}
@Test public void Type__none__fmt() {tstr.Test_parse("{{PAGESINCATEGORY:A|R}}" , "6000");}
@Test public void Type__page__1st() {tstr.Test_parse("{{PAGESINCATEGORY:A|pages}}" , "1,000");}
@Test public void Type__subc__1st() {tstr.Test_parse("{{PAGESINCATEGORY:A|subcats}}" , "2,000");}
@Test public void Type__file__1st() {tstr.Test_parse("{{PAGESINCATEGORY:A|files}}" , "3,000");}
@Test public void Type__page__2nd() {tstr.Test_parse("{{PAGESINCATEGORY:A|R|pages}}" , "1000");}
@Test public void Type__subc__2nd() {tstr.Test_parse("{{PAGESINCATEGORY:A|R|subcats}}" , "2000");}
@Test public void Type__file__2nd() {tstr.Test_parse("{{PAGESINCATEGORY:A|R|files}}" , "3000");}
@Test public void Zero__no_title() {tstr.Test_parse("{{PAGESINCATEGORY:}}" , "0");}
@Test public void Zero__missing_title() {tstr.Test_parse("{{PAGESINCATEGORY:Missing}}" , "0");}
@Test public void Wrong_args() {tstr.Test_parse("{{PAGESINCATEGORY:A|invalid|x}}" , "6,000");} // defaults to all,fmt
}
class Pfunc_pagesincategory_tstr {
private final Xop_fxt parser_tstr;
private final Xoae_app app; private final Xowe_wiki wiki;
private final Xowd_db_mgr core_data_mgr;
private final Xowd_page_tbl page_tbl; private final Xowd_cat_core_tbl cat_core_tbl;
public Pfunc_pagesincategory_tstr() {
Xoa_test_.Inet__init();
this.app = Xoa_app_fxt.app_();
this.wiki = Xoa_app_fxt.wiki_tst_(app);
Xoa_test_.Db__init__mem(wiki);
this.parser_tstr = new Xop_fxt(app, wiki);
this.core_data_mgr = wiki.Data__core_mgr();
this.page_tbl = core_data_mgr.Tbl__page();
this.cat_core_tbl = core_data_mgr.Db__cat_core().Tbl__cat_core();
}
public void Init() {
parser_tstr.Reset();
}
public void Init_category_counts(String category_title, int pages, int subcs, int files) {
int page_id = 1;
page_tbl.Insert_bgn();
page_tbl.Insert_cmd_by_batch(page_id, Xow_ns_.Id_category, Bry_.new_u8(category_title), Bool_.N, DateAdp_.Now(), 1, 1, 1, 1);
page_tbl.Insert_end();
cat_core_tbl.Insert_bgn();
cat_core_tbl.Insert_cmd_by_batch(page_id, pages, subcs, files, Byte_.Zero, 1);
cat_core_tbl.Insert_end();
}
public void Test_parse(String raw, String expd) {
parser_tstr.Test_html_full_str(raw, expd);
}
}

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.wikis; 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.*;
import gplx.xowa.wikis.metas.*;
public class Pfunc_wiki_props extends Pf_func_base {
@@ -38,5 +38,5 @@ public class Pfunc_wiki_props extends Pf_func_base {
}
}
@Override public Pf_func New(int id, byte[] name) {return new Pfunc_wiki_props(id).Name_(name);}
public static final Pfunc_wiki_props _ = new Pfunc_wiki_props(-1);
public static final Pfunc_wiki_props Instance = new Pfunc_wiki_props(-1);
}

View File

@@ -32,7 +32,7 @@ public class Pfunc_wiki_props_tst {
@Test public void NumArticles_raw() {Init_numArticles(1234); fxt.Test_parse_tmpl_str_test("{{NUMBEROFARTICLES:R}}" , "{{test}}", "1234"); Init_numArticles(2);}
@Test public void NumArticles_fmt() {Init_numArticles(1234); fxt.Test_parse_tmpl_str_test("{{NUMBEROFARTICLES}}" , "{{test}}", "1,234"); Init_numArticles(2);}
@Test public void NumArticles_fmt_i18n() { // PURPOSE: use lang's num_mgr; PAGE:ru.u:Main_Page; DATE:2014-07-03
fxt.Lang_by_id_(Xol_lang_itm_.Id_ru);
fxt.Lang_by_id_(Xol_lang_stub_.Id_ru);
Init_numArticles(1234); fxt.Test_parse_tmpl_str_test("{{NUMBEROFARTICLES}}" , "{{test}}", "1234"); Init_numArticles(2);
}
private Pfunc_wiki_props_tst Init_numArticles(int v) {fxt.Wiki().Stats().NumArticles_(v); return this;}

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.wikis; 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.*;
import gplx.xowa.wikis.metas.*;
public class Pfunc_wiki_stats extends Pf_func_base {
@@ -48,5 +48,5 @@ public class Pfunc_wiki_stats extends Pf_func_base {
public Pfunc_wiki_stats(int id) {this.id = id;}
@Override public int Id() {return id;} private int id;
@Override public Pf_func New(int id, byte[] name) {return new Pfunc_wiki_stats(id).Name_(name);}
public static final Pfunc_wiki_stats _ = new Pfunc_wiki_stats(-1);
public static final Pfunc_wiki_stats Instance = new Pfunc_wiki_stats(-1);
}