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:
@@ -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);}
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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);}
|
||||
}
|
||||
|
||||
@@ -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);}
|
||||
|
||||
@@ -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() {}
|
||||
}
|
||||
|
||||
@@ -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;}
|
||||
|
||||
@@ -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;}
|
||||
|
||||
@@ -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;}
|
||||
|
||||
@@ -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;}
|
||||
|
||||
@@ -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
|
||||
)
|
||||
) {
|
||||
|
||||
@@ -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();}
|
||||
|
||||
@@ -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);}
|
||||
}
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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");}
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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);}
|
||||
|
||||
@@ -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Вики");
|
||||
|
||||
@@ -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() {
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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;}
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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() {}
|
||||
}
|
||||
|
||||
@@ -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() {}
|
||||
}
|
||||
|
||||
@@ -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() {}
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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;}
|
||||
|
||||
@@ -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>");}
|
||||
|
||||
@@ -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;}
|
||||
|
||||
@@ -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;}
|
||||
|
||||
@@ -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;}
|
||||
|
||||
@@ -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;}
|
||||
|
||||
@@ -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;}
|
||||
|
||||
@@ -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;}
|
||||
|
||||
@@ -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;}
|
||||
|
||||
@@ -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;}
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;}
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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");
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
@@ -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;}
|
||||
|
||||
@@ -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() {
|
||||
|
||||
@@ -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"));
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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.*;
|
||||
|
||||
@@ -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", "");
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;}
|
||||
|
||||
@@ -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;}
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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;}
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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");
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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() {}
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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;}
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user