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

'v3.8.1.1'

This commit is contained in:
gnosygnu
2016-07-31 21:41:19 -04:00
parent 8e91ac0bc4
commit b0fdf78a41
388 changed files with 3517 additions and 2553 deletions

View File

@@ -27,8 +27,8 @@ public class Pft_func_date_int extends Pf_func_base {
Xowe_wiki wiki = ctx.Wiki(); Xol_lang_itm lang = ctx.Lang();
Pft_func_formatdate_bldr date_fmt_bldr = wiki.Parser_mgr().Date_fmt_bldr();
switch (date_tid) {
case Date_tid_lcl: date = DateAdp_.Now(); break;
case Date_tid_utc: date = DateAdp_.Now().XtoUtc(); break;
case Date_tid_lcl: date = Datetime_now.Get(); break;
case Date_tid_utc: date = Datetime_now.Get().XtoUtc(); break;
case Date_tid_rev: date = ctx.Page().Db().Page().Modified_on(); break;
default: throw Err_.new_unhandled(date_tid);
}

View File

@@ -18,9 +18,9 @@ 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.*;
public class Pft_func_date_lcl_tst {
private final Xop_fxt fxt = new Xop_fxt();
@Before public void setup() {fxt.Reset(); Tfds.Now_set(DateAdp_.new_(2012, 1, 2, 3, 4, 5, 6));}
@After public void teardown() {Tfds.Now_enabled_n_();}
private final Xop_fxt fxt = new Xop_fxt();
@Before public void setup() {fxt.Reset(); Datetime_now.Manual_(DateAdp_.new_(2012, 1, 2, 3, 4, 5, 6));}
@After public void teardown() {Datetime_now.Manual_n_();}
@Test public void Lcl_year() {fxt.Test_parse_tmpl_str_test("{{LOCALYEAR}}" , "{{test}}", "2012");}
@Test public void Lcl_month_int() {fxt.Test_parse_tmpl_str_test("{{LOCALMONTH1}}" , "{{test}}", "1");}
@Test public void Lcl_month_int_len2() {fxt.Test_parse_tmpl_str_test("{{LOCALMONTH}}" , "{{test}}", "01");}

View File

@@ -24,8 +24,8 @@ public class Pft_func_date_name extends Pf_func_base {
@Override public void Func_evaluate(Bry_bfr bfr, Xop_ctx ctx, Xot_invk caller, Xot_invk self, byte[] src) {
DateAdp date = DateAdp_.MinValue;
switch (date_tid) {
case Pft_func_date_int.Date_tid_lcl: date = DateAdp_.Now(); break;
case Pft_func_date_int.Date_tid_utc: date = DateAdp_.Now().XtoUtc(); break;
case Pft_func_date_int.Date_tid_lcl: date = Datetime_now.Get(); break;
case Pft_func_date_int.Date_tid_utc: date = Datetime_now.Get().XtoUtc(); break;
case Pft_func_date_int.Date_tid_rev: date = ctx.Page().Db().Page().Modified_on(); break;
default: throw Err_.new_unhandled(date_tid);
}

View File

@@ -18,9 +18,9 @@ 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.*;
public class Pft_func_date_utc_tst {
private final Xop_fxt fxt = new Xop_fxt();
@Before public void setup() {fxt.Reset(); Tfds.Now_set(DateAdp_.new_(2011, 12, 31, 22, 4, 5, 6));} // ENV:Assumes Eastern Standard Time (-5)
@After public void teardown() {Tfds.Now_enabled_n_();}
private final Xop_fxt fxt = new Xop_fxt();
@Before public void setup() {fxt.Reset(); Datetime_now.Manual_(DateAdp_.new_(2011, 12, 31, 22, 4, 5, 6));} // ENV:Assumes Eastern Standard Time (-5)
@After public void teardown() {Datetime_now.Manual_n_();}
@Test public void Utc_year() {fxt.Test_parse_tmpl_str_test("{{CURRENTYEAR}}" , "{{test}}", "2012");}
@Test public void Utc_month_int() {fxt.Test_parse_tmpl_str_test("{{CURRENTMONTH1}}" , "{{test}}", "1");}
@Test public void Utc_month_int_len2() {fxt.Test_parse_tmpl_str_test("{{CURRENTMONTH}}" , "{{test}}", "01");}

View File

@@ -35,7 +35,10 @@ public class Pft_func_formatdate extends Pf_func_base {
bfr.Add(date_bry);
return;
}
DateAdp date = Pft_func_time.ParseDate(date_bry, false, ctx.Wiki().Utl__bfr_mkr().Get_b512().Mkr_rls());
Bry_bfr tmp_bfr = ctx.Wiki().Utl__bfr_mkr().Get_b512();
DateAdp date = null;
try {date = Pft_func_time.ParseDate(date_bry, false, tmp_bfr);}
finally {tmp_bfr.Mkr_rls();}
if (date == null) {bfr.Add(date_bry); return;} // date not parseable; return self; DATE:2014-04-13
ctx.Wiki().Parser_mgr().Date_fmt_bldr().Format(bfr, ctx.Wiki(), ctx.Lang(), date, (Pft_fmt_itm[])o);
}

View File

@@ -35,13 +35,16 @@ public class Pft_func_formatdate_bldr {
chained_fmt = fmt_itm;
else {
if (chained_fmt != null) {
Bry_bfr tmp_bfr = Xoa_app_.Utl__bfr_mkr().Get_b128();
synchronized (tmp_bfr) {
Bry_bfr tmp_bfr = wiki.Utl__bfr_mkr().Get_b128();
try {
fmt_itm.Fmt(tmp_bfr, wiki, lang, date, this);
chained_fmt.Fmt(tmp_bfr, wiki, lang, date, this);
bfr.Add(tmp_bfr.To_bry_and_rls());
bfr.Add(tmp_bfr.To_bry_and_clear());
chained_fmt = null;
}
finally {
tmp_bfr.Mkr_rls();
}
}
else
fmt_itm.Fmt(bfr, wiki, lang, date, this);

View File

@@ -46,7 +46,7 @@ public class Pft_func_time extends Pf_func_base {
}
}
public static DateAdp ParseDate(byte[] date, boolean utc, Bry_bfr error_bfr) {
if (date == Bry_.Empty) return utc ? DateAdp_.Now().XtoUtc() : DateAdp_.Now();
if (date == Bry_.Empty) return utc ? Datetime_now.Get().XtoUtc() : Datetime_now.Get();
try {
DateAdp rv = new Pxd_parser().Parse(date, error_bfr);
return rv;

View File

@@ -18,8 +18,8 @@ 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 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 final Xop_fxt fxt = new Xop_fxt();
@After public void term() {Tfds.Now_enabled_n_();}
@Before public void init() {fxt.Reset(); Datetime_now.Manual_(DateAdp_.new_(2012, 1, 2, 3, 4, 5, 6));} private final Xop_fxt fxt = new Xop_fxt();
@After public void term() {Datetime_now.Manual_n_();}
@Test public void Utc_date() {fxt.Test_parse_tmpl_str("{{#time:Y-m-d|2012-01-02 03:04:05}}" , "2012-01-02");}
@Test public void Utc_time() {fxt.Test_parse_tmpl_str("{{#time:h:i:s A|2012-01-02 03:04:05}}" , "03:04:05 AM");}
@Test public void Utc_dayOfYear() {fxt.Test_parse_tmpl_str("{{#time:z|2012-01-01 03:04:05}}" , "0");}
@@ -68,7 +68,7 @@ public class Pft_func_time__basic__tst {
@Test public void Unit_rel_year_last() {fxt.Test_parse_tmpl_str("{{#time:Y-m-d|last year}}" , "2011-01-02");}
@Test public void Unit_rel_year_previous(){fxt.Test_parse_tmpl_str("{{#time:Y-m-d|previous year}}" , "2011-01-02");}
@Test public void Unit_rel_year_this() {fxt.Test_parse_tmpl_str("{{#time:Y-m-d|this year}}" , "2012-01-02");}
@Test public void Time_rel_now() {fxt.Test_parse_tmpl_str("{{#time:Y-m-d h:i:s A|now}}" , "2012-01-02 03:05:05 AM");} // NOTE: minute is 5, not 4, b/c each call to DateAdp_.Now() automatically increments by 1 minute; DATE:2014-04-13
@Test public void Time_rel_now() {fxt.Test_parse_tmpl_str("{{#time:Y-m-d h:i:s A|now}}" , "2012-01-02 03:05:05 AM");} // NOTE: minute is 5, not 4, b/c each call to Datetime_now.Get() automatically increments by 1 minute; DATE:2014-04-13
@Test public void Empty_is_today() {fxt.Test_parse_tmpl_str("{{#time:Y-m-d|}}" , "2012-01-02");} // tested on MW
@Test public void Day_name_today() {fxt.Test_parse_tmpl_str("{{#time:Y-m-d|Monday}}" , "2012-01-02");} // 2012-01-02 is Monday, so return Monday; DATE:2014-05-02
@Test public void Day_name_future_1() {fxt.Test_parse_tmpl_str("{{#time:Y-m-d|Saturday}}" , "2012-01-07");} // return next Sunday; DATE:2014-05-02

View File

@@ -18,7 +18,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
package gplx.xowa.xtns.pfuncs.times; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.pfuncs.*;
import org.junit.*;
public class Pft_func_time__int__tst {
@Before public void init() {fxt.Reset(); Tfds.Now_set(DateAdp_.new_(2012, 1, 2, 3, 4, 5, 6));} private final Xop_fxt fxt = new Xop_fxt();
@Before public void init() {fxt.Reset(); Datetime_now.Manual_(DateAdp_.new_(2012, 1, 2, 3, 4, 5, 6));} private final Xop_fxt fxt = new Xop_fxt();
@Test public void Time_before_date__dmy() {fxt.Test_parse_tmpl_str("{{#time:Y-m-d H:i|01:02 3.4.2005}}" , "2005-04-03 01:02");} // PAGE:sk.w:Dr._House; DATE:2014-09-23
@Test public void Time_before_date__mdy() {fxt.Test_parse_tmpl_str("{{#time:Y-m-d H:i|01:02 3.14.2005}}" , "<strong class=\"error\">Invalid month: 14</strong>");} // mdy is invalid; DATE:2014-09-23
}

View File

@@ -18,8 +18,8 @@ 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.*;
public class Pft_func_time__uncommon__tst {
private final Xop_fxt fxt = new Xop_fxt();
@Before public void init() {fxt.Reset(); Tfds.Now_set(DateAdp_.new_(2012, 1, 2, 3, 4, 5, 6));}
@After public void term() {Tfds.Now_enabled_n_();}
private final Xop_fxt fxt = new Xop_fxt();
@Before public void init() {fxt.Reset(); Datetime_now.Manual_(DateAdp_.new_(2012, 1, 2, 3, 4, 5, 6));}
@After public void term() {Datetime_now.Manual_n_();}
@Test public void Year_5_digits() {fxt.Test_parse_tmpl_str_test("{{#time:Y-m-d|00123-4-5}}" , "{{test}}" , "2003-04-05");} // PURPOSE: emulate PHP's incorrect date parsing; EX:ca.w:Nicolau_de_Mira; DATE:2014-04-17
}

View File

@@ -21,10 +21,10 @@ class Pft_func_time_foreign_fxt {
private final Xop_fxt fxt = new Xop_fxt();
public void Clear() {
fxt.Reset();
Tfds.Now_set(DateAdp_.new_(2012, 1, 2, 3, 4, 5, 6));
Datetime_now.Manual_(DateAdp_.new_(2012, 1, 2, 3, 4, 5, 6));
}
public void Term() {
Tfds.Now_enabled_n_();
Datetime_now.Manual_n_();
}
public Pft_func_time_foreign_fxt Init_msg(String key, String val) {
Xol_msg_itm msg = fxt.Wiki().Msg_mgr().Get_or_make(Bry_.new_u8(key));

View File

@@ -89,7 +89,7 @@ class DateAdpBldr {
return date;
}
else
return DateAdp_.Now(); // not dirtied; default to now;
return Datetime_now.Get(); // not dirtied; default to now;
}
public DateAdpBldr Date_(DateAdp v) {date = v; return this;} DateAdp date = null;
public void Seg_set(int idx, int val) {

View File

@@ -188,7 +188,7 @@ class Pxd_itm_unit extends Pxd_itm_base implements Pxd_itm_prototype {
}
@Override public boolean Time_ini(DateAdpBldr bldr) {
DateAdp cur = bldr.Date();
if (cur == null) cur = DateAdp_.Now();
if (cur == null) cur = Datetime_now.Get();
int val = seg_val * seg_multiple;
switch (this.Seg_idx()) {
case DateAdp_.SegIdx_second: cur = cur.Add_second(val); break;
@@ -256,7 +256,7 @@ class Pxd_itm_day_relative extends Pxd_itm_base implements Pxd_itm_prototype {
public Pxd_itm MakeNew(int ary_idx) {return new Pxd_itm_day_relative(adj, ary_idx);}
@Override public boolean Eval(Pxd_parser state) {return true;}
@Override public boolean Time_ini(DateAdpBldr bldr) {
DateAdp date = DateAdp_.Now();
DateAdp date = Datetime_now.Get();
if (adj != 0) date = date.Add_day(adj);
bldr.Seg_set(DateAdp_.SegIdx_year , date.Year());
bldr.Seg_set(DateAdp_.SegIdx_month , date.Month());
@@ -278,7 +278,7 @@ class Pxd_itm_time_relative extends Pxd_itm_base implements Pxd_itm_prototype {
public Pxd_itm MakeNew(int ary_idx) {return new Pxd_itm_time_relative(ary_idx);}
@Override public boolean Eval(Pxd_parser state) {return true;}
@Override public boolean Time_ini(DateAdpBldr bldr) {
DateAdp date = DateAdp_.Now();
DateAdp date = Datetime_now.Get();
bldr.Seg_set(DateAdp_.SegIdx_year , date.Year());
bldr.Seg_set(DateAdp_.SegIdx_month , date.Month());
bldr.Seg_set(DateAdp_.SegIdx_day , date.Day());
@@ -347,7 +347,7 @@ class Pxd_itm_dow_name extends Pxd_itm_base implements Pxd_itm_prototype {
public Pxd_itm MakeNew(int ary_idx) {return new Pxd_itm_dow_name(ary_idx, dow_name, dow_idx);}
@Override public boolean Eval(Pxd_parser state) {return true;}
@Override public boolean Time_ini(DateAdpBldr bldr) {
DateAdp now = DateAdp_.Now();
DateAdp now = Datetime_now.Get();
int adj = dow_idx - now.DayOfWeek(); // adj = requested_dow - current_dow; EX: requesting Friday, and today is Wednesday; adj = 2 (4 - 2); DATE:2014-05-02
if (adj < 0) adj += 7; // requested_down is before current_dow; add 7 to get the next day
bldr.Date_(bldr.Date().Add_day(adj));

View File

@@ -145,7 +145,7 @@ class Pxd_parser {
return DateAdp_.MinValue;
}
}
DateAdp now = DateAdp_.Now();
DateAdp now = Datetime_now.Get();
DateAdpBldr bldr = new DateAdpBldr(now.Year(), now.Month(), now.Day(), 0, 0, 0, 0);
for (int i = 0; i < tkns_len; i++) {
Pxd_itm itm = (Pxd_itm)tkns[i];

View File

@@ -19,8 +19,8 @@ package gplx.xowa.xtns.pfuncs.times; import gplx.*; import gplx.xowa.*; import g
import org.junit.*;
public class Pxd_parser_tst {
Bry_bfr bfr = Bry_bfr_.New_w_size(16); Pxd_parser parser = new Pxd_parser();
@Before public void init() {Tfds.Now_enabled_y_(); Tfds.Now_set(test_date);} DateAdp test_date = DateAdp_.parse_fmt("2012-02-27", "yyyy-MM-dd");
@After public void teardown() {Tfds.Now_enabled_n_();}
@Before public void init() {Datetime_now.Manual_y_(); Datetime_now.Manual_(test_date);} DateAdp test_date = DateAdp_.parse_fmt("2012-02-27", "yyyy-MM-dd");
@After public void teardown() {Datetime_now.Manual_n_();}
@Test public void Month_name_0__day__year() {tst_date_("Mar 2 2001" , "2001-03-02");} // y:Mar-02-2001;Mar.02.2001;Mar 02, 2001 n:Mar/02/2001;Feb,05,2011
@Test public void Month_name_0__day__year__bad_day() {tst_date_("Mar 32 2001" , "Invalid day: 32");}
@Test public void Month_name_0__day__year__bad_year() {tst_date_("Mar 3 999" , "0999-03-03");}