mirror of
https://github.com/gnosygnu/xowa.git
synced 2026-03-02 03:49:30 +00:00
'v3.3.4.1'
This commit is contained in:
@@ -89,6 +89,7 @@ public class Pf_func_ {
|
||||
, Xol_kwd_grp_.Id_strx_replace
|
||||
, Xol_kwd_grp_.Id_strx_explode
|
||||
, Xol_kwd_grp_.Id_strx_urldecode
|
||||
, Xol_kwd_grp_.Id_new_window_link
|
||||
);
|
||||
Ary_nonwmf = (int[])list.To_ary_and_clear(int.class);
|
||||
}
|
||||
@@ -390,6 +391,7 @@ public class Pf_func_ {
|
||||
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_pagebanner: return new gplx.xowa.xtns.pagebanners.Pgbnr_func();
|
||||
case Xol_kwd_grp_.Id_new_window_link: return new gplx.xowa.xtns.new_window_links.New_window_link_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();
|
||||
|
||||
@@ -27,11 +27,11 @@ class Pfunc_i18n_fxt {
|
||||
public Xop_fxt Fxt() {return fxt;}
|
||||
public Pfunc_i18n_fxt lang_(String v) {lang_key = v; return this;} private String lang_key;
|
||||
public Pfunc_i18n_fxt Ini() {
|
||||
if (app == null) app = Xoa_app_fxt.app_();
|
||||
if (app == null) app = Xoa_app_fxt.Make__app__edit();
|
||||
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_or_new(Bry_.new_a7(lang_key));
|
||||
wiki = Xoa_app_fxt.wiki_(app, lang_key + ".wikipedia.org", lang);
|
||||
wiki = Xoa_app_fxt.Make__wiki__edit(app, lang_key + ".wikipedia.org", lang);
|
||||
fxt = new Xop_fxt(app, wiki);
|
||||
return this;
|
||||
} private Xoae_app app; private Xop_fxt fxt; Xol_lang_itm lang; Xowe_wiki wiki;
|
||||
|
||||
@@ -21,9 +21,9 @@ import gplx.core.intls.*; import gplx.xowa.langs.numbers.*;
|
||||
public class Pf_formatnum_es_tst {
|
||||
private Xop_fxt fxt;
|
||||
@Before public void init() {
|
||||
Xoae_app app = Xoa_app_fxt.app_();
|
||||
Xoae_app app = Xoa_app_fxt.Make__app__edit();
|
||||
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);
|
||||
Xowe_wiki wiki = Xoa_app_fxt.Make__wiki__edit(app, "es.wikipedia.org", lang);
|
||||
fxt = new Xop_fxt(app, wiki);
|
||||
}
|
||||
@Test public void Basic() {
|
||||
|
||||
@@ -21,10 +21,10 @@ import gplx.core.intls.*; import gplx.xowa.langs.*; import gplx.xowa.langs.numbe
|
||||
public class Pf_formatnum_fa_tst {
|
||||
private Xop_fxt fxt;
|
||||
@Before public void init() {
|
||||
Xoae_app app = Xoa_app_fxt.app_();
|
||||
Xoae_app app = Xoa_app_fxt.Make__app__edit();
|
||||
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);
|
||||
Xowe_wiki wiki = Xoa_app_fxt.Make__wiki__edit(app, "fa.wikipedia.org", lang);
|
||||
fxt = new Xop_fxt(app, wiki);
|
||||
}
|
||||
@Test public void Basic() {
|
||||
|
||||
@@ -31,7 +31,7 @@ public class Pfunc_tag extends Pf_func_base {
|
||||
try {
|
||||
int tag_idx = ++tag__next_id;
|
||||
Xop_xnde_tag tag = (Xop_xnde_tag)ctx.Xnde_tag_regy().Get_trie(ctx.Xnde_names_tid()).Match_exact(tag_name, 0, tag_name.length);
|
||||
boolean tag_is_ref = tag != null && tag.Id() == Xop_xnde_tag_.Tid_ref;
|
||||
boolean tag_is_ref = tag != null && tag.Id() == Xop_xnde_tag_.Tid__ref;
|
||||
if (tag_is_ref) // <ref>; add <xtag_bgn> to handle nested refs; PAGE:en.w:Battle_of_Midway; DATE:2014-06-27
|
||||
tmp.Add(Xtag_bgn_lhs).Add_int_pad_bgn(Byte_ascii.Num_0, 10, tag_idx).Add(Xtag_rhs);
|
||||
tmp.Add_byte(Byte_ascii.Lt).Add(tag_name);
|
||||
|
||||
@@ -49,7 +49,6 @@ class Pft_fmt_itm_hebrew_ {
|
||||
public static boolean Calc_hebrew_date(int[] rv, int year, int month, int day) { // REF.MW:Language.php|tsToHebrew
|
||||
// Calculate Hebrew year
|
||||
int hebrewYear = year + 3760;
|
||||
|
||||
// Month number when September = 1, August = 12
|
||||
month += 4;
|
||||
if (month > 12) {
|
||||
@@ -58,7 +57,6 @@ class Pft_fmt_itm_hebrew_ {
|
||||
year++;
|
||||
hebrewYear++;
|
||||
}
|
||||
|
||||
// Calculate day of year from 1 September
|
||||
int dayOfYear = day;
|
||||
for (int i = 1; i < month; i++) {
|
||||
@@ -75,10 +73,8 @@ class Pft_fmt_itm_hebrew_ {
|
||||
dayOfYear += 31;
|
||||
}
|
||||
}
|
||||
|
||||
// Calculate the start of the Hebrew year
|
||||
int start = Calc_hebrew_year_num_start(hebrewYear);
|
||||
|
||||
// Calculate next year's start
|
||||
int nextStart = 0;
|
||||
if (dayOfYear <= start) {
|
||||
@@ -100,10 +96,8 @@ class Pft_fmt_itm_hebrew_ {
|
||||
// Next year's start
|
||||
nextStart = Calc_hebrew_year_num_start(hebrewYear + 1);
|
||||
}
|
||||
|
||||
// Calculate Hebrew day of year
|
||||
int hebrewDayOfYear = dayOfYear - start;
|
||||
|
||||
// Difference between year's days
|
||||
int diff = nextStart - start;
|
||||
// Add 12 (or 13 for leap years) days to ignore the difference between
|
||||
@@ -114,7 +108,6 @@ class Pft_fmt_itm_hebrew_ {
|
||||
} else {
|
||||
diff += 12;
|
||||
}
|
||||
|
||||
// Check the year pattern, and is leap year
|
||||
// 0 means an incomplete year, 1 means a regular year, 2 means a complete year
|
||||
// This is mod 30, to work on both leap years (which add 30 days of Adar I)
|
||||
@@ -122,14 +115,12 @@ class Pft_fmt_itm_hebrew_ {
|
||||
int yearPattern = diff % 30;
|
||||
// Check if leap year
|
||||
boolean isLeap = diff >= 30;
|
||||
|
||||
// Calculate day in the month from number of day in the Hebrew year
|
||||
// Don't check Adar - if the day is not in Adar, we will stop before;
|
||||
// if it is in Adar, we will use it to check if it is Adar I or Adar II
|
||||
int hebrewDay = hebrewDayOfYear;
|
||||
int hebrewMonth = 1;
|
||||
int days = 0;
|
||||
|
||||
while (hebrewMonth <= 12) {
|
||||
// Calculate days in this month
|
||||
if (isLeap && hebrewMonth == 6) {
|
||||
@@ -205,7 +196,6 @@ class Pft_fmt_itm_hebrew_ {
|
||||
, Rslt_day_num = 2
|
||||
, Rslt_month_days_count = 3
|
||||
;
|
||||
|
||||
private static final byte[][][] Numeral_tbls = new byte[][][]
|
||||
{ new byte[][] {Bry_.Empty, Bry_.new_u8("א"), Bry_.new_u8("ב"), Bry_.new_u8("ג"), Bry_.new_u8("ד"), Bry_.new_u8("ה") , Bry_.new_u8("ו") , Bry_.new_u8("ז") , Bry_.new_u8("ח") , Bry_.new_u8("ט") , Bry_.new_u8("י")}
|
||||
, new byte[][] {Bry_.Empty, Bry_.new_u8("י"), Bry_.new_u8("כ"), Bry_.new_u8("ל"), Bry_.new_u8("מ"), Bry_.new_u8("נ") , Bry_.new_u8("ס") , Bry_.new_u8("ע") , Bry_.new_u8("פ") , Bry_.new_u8("צ") , Bry_.new_u8("ק")}
|
||||
|
||||
@@ -28,7 +28,6 @@ class Pft_fmt_itm_hijiri {
|
||||
int hiji_d = greg_d;
|
||||
int hiji_m = greg_m;
|
||||
int hiji_y = greg_y;
|
||||
|
||||
int tmp_jd = 0;
|
||||
if (
|
||||
(hiji_y > 1582) || ((hiji_y == 1582) && (hiji_m > 10)) ||
|
||||
@@ -43,7 +42,6 @@ class Pft_fmt_itm_hijiri {
|
||||
tmp_jd = 367 * hiji_y - (int)((7 * (hiji_y + 5001 + (int)((hiji_m - 9) / 7))) / 4) +
|
||||
(int)((275 * hiji_m) / 9) + hiji_d + 1729777;
|
||||
}
|
||||
|
||||
int tmp_l = tmp_jd -1948440 + 10632;
|
||||
int tmp_n = (int)((tmp_l - 1) / 10631);
|
||||
tmp_l = tmp_l - 10631 * tmp_n + 354;
|
||||
@@ -52,7 +50,6 @@ class Pft_fmt_itm_hijiri {
|
||||
hiji_m = (int)((24 * tmp_l) / 709);
|
||||
hiji_d = tmp_l - (int)((709 * hiji_m) / 24);
|
||||
hiji_y = 30 * tmp_n + tmp_j - 30;
|
||||
|
||||
rv[0] = hiji_y;
|
||||
rv[1] = hiji_m;
|
||||
rv[2] = hiji_d;
|
||||
|
||||
@@ -31,7 +31,7 @@ public class Pfunc_filepath_tst {
|
||||
Xoae_app app = fxt.App();
|
||||
en_wiki = fxt.Wiki();
|
||||
// Init_orig_mgr(en_wiki);
|
||||
commons_wiki = Xoa_app_fxt.wiki_(app, Xow_domain_itm_.Str__commons);
|
||||
commons_wiki = Xoa_app_fxt.Make__wiki__edit(app, Xow_domain_itm_.Str__commons);
|
||||
mock_wkr.Clear_commons(); // assume all files are in repo 0
|
||||
en_wiki.File_mgr().Repo_mgr().Page_finder_(mock_wkr);
|
||||
commons_wiki.Db_mgr().Load_mgr().Clear();
|
||||
|
||||
@@ -21,7 +21,7 @@ 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;}
|
||||
private static final byte[] Ary_dot_slash = Bry_.new_a7("./"), Ary_dot_dot = Bry_.new_a7(".."), Ary_dot_dot_slash = Bry_.new_a7("../");
|
||||
private static final byte[] Ary_dot_slash = Bry_.new_a7("./"), Ary_dot_dot = Bry_.new_a7(".."), Ary_dot_dot_slash = Bry_.new_a7("../");
|
||||
private static void qry_bgns_with_init() {
|
||||
qry_bgns_with = Btrie_fast_mgr.cs();
|
||||
qry_bgns_with.Add(Byte_ascii.Slash, Int_obj_ref.new_(Id_slash));
|
||||
@@ -33,7 +33,7 @@ public class Pfunc_rel2abs extends Pf_func_base {
|
||||
@Override public void Func_evaluate(Bry_bfr bfr, Xop_ctx ctx, Xot_invk caller, Xot_invk self, byte[] src) {// REF.MW:ParserFunctions_body.php
|
||||
byte[] qry = Eval_argx(ctx, src, caller, self);
|
||||
byte[] orig = Pf_func_.Eval_arg_or_empty(ctx, src, caller, self, self.Args_len(), 0);
|
||||
if (orig.length == 0) orig = ctx.Page().Ttl().Full_txt();
|
||||
if (orig.length == 0) orig = ctx.Page().Ttl().Full_txt_w_ttl_case();
|
||||
bfr.Add(Rel2abs(ctx.App().Utl__bfr_mkr().Get_b512().Mkr_rls(), qry, orig));
|
||||
}
|
||||
public static boolean Rel2abs_ttl(byte[] ttl, int bgn, int end) {
|
||||
@@ -57,7 +57,7 @@ public class Pfunc_rel2abs extends Pf_func_base {
|
||||
}
|
||||
return rv;
|
||||
}
|
||||
private static final Int_obj_ref ignore_rel2abs_tid = Int_obj_ref.zero_();
|
||||
private static final Int_obj_ref ignore_rel2abs_tid = Int_obj_ref.zero_();
|
||||
public static byte[] Rel2abs(Bry_bfr tmp_bfr, byte[] qry, byte[] src) {return Rel2abs(tmp_bfr, qry, src, ignore_rel2abs_tid);}
|
||||
public static byte[] Rel2abs(Bry_bfr tmp_bfr, byte[] qry, byte[] src, Int_obj_ref rel2abs_tid) {
|
||||
if (qry_bgns_with == null) qry_bgns_with_init();
|
||||
@@ -65,7 +65,6 @@ public class Pfunc_rel2abs extends Pf_func_base {
|
||||
|
||||
// qry_len = RTrim(qry, Byte_ascii.Slash, qry_bgn, qry_len); // not needed, but test anyway
|
||||
if (qry_len == 0) return src;// no qry; return src; EX:{{#rel2abs:|a/b}} -> a/b
|
||||
|
||||
byte[] tmp = src;
|
||||
int tmp_adj = 0, i = 0, prv_slash_end = 0, tmp_len = src_len, seg_pos = 0;
|
||||
boolean tmp_is_1st = true;
|
||||
@@ -182,4 +181,4 @@ B -> [A, B] add
|
||||
C -> [A, C] add
|
||||
. -> [A, C] noop
|
||||
D -> [A, C, D] add
|
||||
*/
|
||||
*/
|
||||
|
||||
@@ -38,7 +38,7 @@ public class Pfunc_rel2abs_tst {
|
||||
@Test public void Err_owner() {fxt.Test_parse_tmpl_str_test("{{#rel2abs:..}}" , "{{test}}" , "");} // PURPOSE.fix: should not fail
|
||||
@Test public void Err_owner_2() {fxt.Test_parse_tmpl_str_test("{{#rel2abs:/../../b|a}}" , "{{test}}" , "");} // PURPOSE.fix: should not fail
|
||||
@Test public void Ns_should_be_included_for_cur_page() {// PURPOSE.fix: current title was not returning ns; EX: de.wikipedia.org/wiki/Hilfe:Vorlagenprogrammierung#Funktion_rel2abs
|
||||
fxt.Page_ttl_("Help:A"); // set page to title with namespace
|
||||
fxt.Page_ttl_("Help:A"); // set page to title with Srch_rslt_cbk
|
||||
fxt.Test_parse_tmpl_str_test("{{#rel2abs:.}}" , "{{test}}" , "Help:A");
|
||||
}
|
||||
@Test public void Owner_lvl0() {// PURPOSE.fix: old rel2abs was producing "/c"; EX: de.wikipedia.org/wiki/Hilfe:Vorlagenprogrammierung#Funktion_rel2abs
|
||||
|
||||
@@ -27,8 +27,7 @@ public class Pfunc_titleparts extends Pf_func_base {
|
||||
byte[] argx = Eval_argx(ctx, src, caller, self); if (argx == null) return; // no argx; return empty
|
||||
Xoa_ttl argx_as_ttl = Xoa_ttl.new_(ctx.Wiki(), ctx.App().Msg_log_null(), argx, 0, argx.length); // transform to title in order to upper first, replace _, etc..
|
||||
if (argx_as_ttl == null) {bfr.Add(argx); return;} // NOTE: argx_as_ttl will be null if invalid, such as [[a|b]]; PAGE:en.w:owl and {{taxobox/showtaxon|Dinosauria}}
|
||||
else argx = argx_as_ttl.Full_txt();
|
||||
|
||||
else argx = argx_as_ttl.Full_txt_w_ttl_case();
|
||||
// get parts_len
|
||||
byte[] parts_len_ary = Pf_func_.Eval_arg_or_empty(ctx, src, caller, self, args_len, 0);
|
||||
int parts_len = parts_len_ary == Bry_.Empty ? Int_.Min_value : Bry_.To_int_or(parts_len_ary, Int_.Max_value);
|
||||
@@ -37,7 +36,6 @@ public class Pfunc_titleparts extends Pf_func_base {
|
||||
bfr.Add(argx);
|
||||
return;
|
||||
}
|
||||
|
||||
// get parts_bgn
|
||||
byte[] parts_bgn_arg = Pf_func_.Eval_arg_or_empty(ctx, src, caller, self, args_len, 1);
|
||||
int parts_bgn = parts_bgn_arg == Bry_.Empty ? 0 : Bry_.To_int_or(parts_bgn_arg, Int_.Min_value);
|
||||
@@ -55,12 +53,10 @@ public class Pfunc_titleparts extends Pf_func_base {
|
||||
if (src[i] == Byte_ascii.Slash) dlms_ary[dlms_ary_len++] = i;
|
||||
}
|
||||
dlms_ary[dlms_ary_len] = src_len; // put src_len into last dlms_ary; makes dlms_ary[] logic easier
|
||||
|
||||
// calc bgn_idx; must occur before adjust parts_len
|
||||
int bgn_idx = parts_bgn > -1 ? parts_bgn : parts_bgn + dlms_ary_len; // negative parts_bgn means calc from end of dlms_ary_len; EX a/b/c|1|-1 means start from 2
|
||||
if ( bgn_idx < 0 // bgn_idx can be negative when parts_len is negative and greater than array; EX: {{#titleparts:a/b|-1|-2}} results in dlms_ary_len of 1 and parts_bgn of -2 which will be parts_bgn of -1
|
||||
|| bgn_idx > dlms_ary_len) return Bry_.Empty; // if bgn > len, return ""; EX: {{#titleparts:a/b|1|3}} should return ""
|
||||
|
||||
// adjust parts_len for negative/null
|
||||
if (parts_len == Int_.Min_value) parts_len = dlms_ary_len; // no parts_len; default to dlms_ary_len
|
||||
else if (parts_len < 0) { // neg parts_len; shorten parts now and default to rest of String; EX: a/b/c|-1 -> makes String a/b/c and get 2 parts
|
||||
@@ -69,7 +65,6 @@ public class Pfunc_titleparts extends Pf_func_base {
|
||||
if (parts_len < 1) return Bry_.Empty; // NOTE: if zerod'd b/c of neg length, return empty; contrast with line below; EX: a/b/c|-4
|
||||
}
|
||||
if (parts_len == 0) return src; // if no dlms, return orig
|
||||
|
||||
// calc idxs for extraction
|
||||
int bgn_pos = dlms_ary[bgn_idx] + 1; // +1 to start after slash
|
||||
int end_idx = bgn_idx + parts_len;
|
||||
|
||||
@@ -27,7 +27,7 @@ public class Pfunc_ttl extends Pf_func_base {
|
||||
switch (id) {
|
||||
case Xol_kwd_grp_.Id_ttl_page_txt: bfr.Add(ttl.Page_txt()); break;
|
||||
case Xol_kwd_grp_.Id_ttl_page_url: bfr.Add(ttl.Page_url()); break;
|
||||
case Xol_kwd_grp_.Id_ttl_full_txt: bfr.Add(ttl.Full_txt()); break;
|
||||
case Xol_kwd_grp_.Id_ttl_full_txt: bfr.Add(ttl.Full_txt_w_ttl_case()); break;
|
||||
case Xol_kwd_grp_.Id_ttl_full_url: bfr.Add(ttl.Full_url()); break;
|
||||
case Xol_kwd_grp_.Id_ttl_leaf_txt: bfr.Add(ttl.Leaf_txt()); break;
|
||||
case Xol_kwd_grp_.Id_ttl_leaf_url: bfr.Add(ttl.Leaf_url()); break;
|
||||
@@ -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 Instance = new Pfunc_ttl(-1);
|
||||
public static final Pfunc_ttl Instance = new Pfunc_ttl(-1);
|
||||
}
|
||||
|
||||
@@ -39,9 +39,9 @@ class Pfunc_pagesincategory_tstr {
|
||||
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.app = Xoa_app_fxt.Make__app__edit();
|
||||
this.wiki = Xoa_app_fxt.Make__wiki__edit(app);
|
||||
Xoa_test_.Init__db__edit(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();
|
||||
|
||||
@@ -19,7 +19,7 @@ package gplx.xowa.xtns.pfuncs.wikis; import gplx.*; import gplx.xowa.*; import g
|
||||
import org.junit.*; import gplx.xowa.langs.*;
|
||||
public class Pfunc_wiki_props_tst {
|
||||
private final Xop_fxt fxt = new Xop_fxt();
|
||||
@Before public void setup() {fxt.Reset(); fxt.Wiki().Stats().NumPages_(1).NumArticles_(2).NumFiles_(3).NumEdits_(4).NumViews_(5).NumUsers_(6).NumUsersActive_(7).NumAdmins_(8);}
|
||||
@Before public void setup() {fxt.Reset(); fxt.Wiki().Stats().Load_by_db(1, 2, 3, 4, 5, 6, 7, 8);}
|
||||
@Test public void NumPages() {fxt.Test_parse_tmpl_str_test("{{NUMBEROFPAGES}}" , "{{test}}", "1");}
|
||||
@Test public void NumArticles() {fxt.Test_parse_tmpl_str_test("{{NUMBEROFARTICLES}}" , "{{test}}", "2");}
|
||||
@Test public void NumFiles() {fxt.Test_parse_tmpl_str_test("{{NUMBEROFFILES}}" , "{{test}}", "3");}
|
||||
@@ -35,5 +35,5 @@ public class Pfunc_wiki_props_tst {
|
||||
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;}
|
||||
private Pfunc_wiki_props_tst Init_numArticles(int v) {fxt.Wiki().Stats().Load_by_db(1, v, 3, 4, 5, 6, 7, 8); return this;}
|
||||
}
|
||||
|
||||
@@ -18,7 +18,7 @@ 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.kwds.*;
|
||||
import gplx.xowa.parsers.*; import gplx.xowa.parsers.tmpls.*;
|
||||
import gplx.xowa.wikis.metas.*;
|
||||
import gplx.xowa.wikis.data.site_stats.*;
|
||||
public class Pfunc_wiki_stats extends Pf_func_base {
|
||||
@Override public void Func_evaluate(Bry_bfr bfr, Xop_ctx ctx, Xot_invk caller, Xot_invk self, byte[] src) {
|
||||
byte[] argx = Eval_argx(ctx, src, caller, self);
|
||||
@@ -27,23 +27,23 @@ public class Pfunc_wiki_stats extends Pf_func_base {
|
||||
byte argx_0 = argx[0];
|
||||
switch (argx_0) {case Byte_ascii.Ltr_R: case Byte_ascii.Ltr_r: raw = true; break;}
|
||||
}
|
||||
Xow_wiki_stats stats = ctx.Wiki().Stats();
|
||||
int v = 0;
|
||||
Xow_site_stats_mgr stats = ctx.Wiki().Stats();
|
||||
long v = 0;
|
||||
switch (id) {
|
||||
case Xol_kwd_grp_.Id_num_pages: v = stats.NumPages(); break;
|
||||
case Xol_kwd_grp_.Id_num_articles: v = stats.NumArticles(); break;
|
||||
case Xol_kwd_grp_.Id_num_files: v = stats.NumFiles(); break;
|
||||
case Xol_kwd_grp_.Id_num_edits: v = stats.NumEdits(); break;
|
||||
case Xol_kwd_grp_.Id_num_views: v = stats.NumViews(); break;
|
||||
case Xol_kwd_grp_.Id_num_users: v = stats.NumUsers(); break;
|
||||
case Xol_kwd_grp_.Id_num_users_active: v = stats.NumUsersActive(); break;
|
||||
case Xol_kwd_grp_.Id_num_admins: v = stats.NumAdmins(); break;
|
||||
case Xol_kwd_grp_.Id_num_pages: v = stats.Num_pages(); break;
|
||||
case Xol_kwd_grp_.Id_num_articles: v = stats.Num_articles(); break;
|
||||
case Xol_kwd_grp_.Id_num_files: v = stats.Num_files(); break;
|
||||
case Xol_kwd_grp_.Id_num_edits: v = stats.Num_edits(); break;
|
||||
case Xol_kwd_grp_.Id_num_views: v = stats.Num_views(); break;
|
||||
case Xol_kwd_grp_.Id_num_users: v = stats.Num_users(); break;
|
||||
case Xol_kwd_grp_.Id_num_users_active: v = stats.Num_active(); break;
|
||||
case Xol_kwd_grp_.Id_num_admins: v = stats.Num_admins(); break;
|
||||
default: throw Err_.new_unhandled(id);
|
||||
}
|
||||
if (raw)
|
||||
bfr.Add_int_variable(v);
|
||||
bfr.Add_long_variable(v);
|
||||
else
|
||||
bfr.Add(ctx.Page().Lang().Num_mgr().Format_num(v));
|
||||
bfr.Add(ctx.Page().Lang().Num_mgr().Format_num_by_long(v));
|
||||
}
|
||||
public Pfunc_wiki_stats(int id) {this.id = id;}
|
||||
@Override public int Id() {return id;} private int id;
|
||||
|
||||
Reference in New Issue
Block a user