UNPKG

ilib

Version:

iLib is a cross-engine library of internationalization (i18n) classes written in pure JS

1 lines 1.84 kB
var ilib=require("./ilib.js");var JSUtils=require("./JSUtils.js");var Locale=require("./Locale.js");var LocaleInfo=require("./LocaleInfo.js");var JulianDay=require("./JulianDay.js");var CalendarFactory=require("./CalendarFactory.js");var IDate=require("./IDate.js");var GregorianDate=require("./GregorianDate.js");var DateFactory=function(e){var a,t,r,i=true,o;if(e){if(e.locale){a=typeof e.locale==="string"?new Locale(e.locale):e.locale}t=e.type||e.calendar;if(typeof e.sync==="boolean"){i=e.sync}}if(!a){a=new Locale}if(!t){new LocaleInfo(a,{sync:i,loadParams:e&&e.loadParams,onLoad:ilib.bind(this,function(a){t=a.getCalendar();o=DateFactory._init(t,e);if(e&&typeof e.onLoad==="function"){e.onLoad(o)}})})}else{o=DateFactory._init(t,e)}return o};DateFactory._dynMap={coptic:"Coptic",ethiopic:"Ethiopic",gregorian:"Gregorian",han:"Han",hebrew:"Hebrew",islamic:"Islamic",julian:"Julian",persian:"Persian","persian-algo":"PersianAlgo",thaisolar:"ThaiSolar"};DateFactory._dynLoadDate=function(e){if(!IDate._constructors[e]){var a=DateFactory._dynMap[e];if(a){IDate._constructors[e]=require("./"+a+"Date.js")}}return IDate._constructors[e]};DateFactory._init=function(e,a){var t;if(ilib.isDynCode()){DateFactory._dynLoadDate(e);CalendarFactory._dynLoadCalendar(e)}t=IDate._constructors[e];return t&&new t(a)};DateFactory._dateToIlib=function(e,a,t){if(typeof e==="undefined"||e===null){return e}if(e instanceof IDate){return e}if(JSUtils.isDate(e)){return DateFactory({unixtime:e.getTime(),timezone:a,locale:t})}if(e instanceof JulianDay){return DateFactory({jd:e,timezone:a,locale:t})}if(typeof e==="number"){return DateFactory({unixtime:e,timezone:a,locale:t})}if(typeof e==="object"){return DateFactory(e)}if(typeof e==="string"){e=new Date(e)}return DateFactory({unixtime:e.getTime(),timezone:a,locale:t})};module.exports=DateFactory;