ilib
Version:
iLib is a cross-engine library of internationalization (i18n) classes written in pure JS
3 lines • 2.32 kB
JavaScript
var ilib=require("../index.js"),JSUtils=require("./JSUtils.js"),Locale=require("./Locale.js"),LocaleInfo=require("./LocaleInfo.js"),JulianDay=require("./JulianDay.js"),CalendarFactory=require("./CalendarFactory.js"),IDate=require("./IDate.js"),DateFactory=function(options){var locale,type,obj,sync=!0;return options&&(options.locale&&(locale="string"==typeof options.locale?new Locale(options.locale):options.locale),type=options.type||options.calendar,"boolean"==typeof options.sync)&&(sync=options.sync),locale=locale||new Locale(),type?obj=DateFactory._init(type,options):new LocaleInfo(locale,{sync:sync,loadParams:options&&options.loadParams,onLoad:function(info){type=info.getCalendar(),obj=DateFactory._init(type,options)}}),obj};function circumventWebPackDate(x){return"./"+x+"Date.js"}function circumventWebPackCal(x){return"./"+x+"Cal.js"}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(name,fnc){var entry;return IDate._constructors[name]||(entry=DateFactory._dynMap[name])&&(
// eslint-disable-next-line
IDate._constructors[name]=require(fnc(entry))),IDate._constructors[name]},DateFactory._init=function(type,options){return ilib.isDynCode()&&(DateFactory._dynLoadDate(type,circumventWebPackDate),CalendarFactory._dynLoadCalendar(type,circumventWebPackCal)),!(type=IDate._constructors[type])&&options&&"function"==typeof options.onLoad&&options.onLoad(void 0),type&&new type(options)},DateFactory._dateToIlib=function(inDate,timezone,locale){return null==inDate||inDate instanceof IDate?inDate:"number"==typeof inDate?DateFactory({unixtime:inDate,timezone:timezone,locale:locale}):("string"==typeof inDate&&(inDate=new Date(inDate)),JSUtils.isDate(inDate)?DateFactory({unixtime:inDate.getTime(),timezone:timezone,locale:locale}):inDate instanceof JulianDay?DateFactory({jd:inDate,timezone:timezone,locale:locale}):DateFactory("object"==typeof inDate?inDate:{unixtime:inDate.getTime(),timezone:timezone,locale:locale}))},DateFactory._ilibToDate=function(ilibDate,timezone,locale){return"object"==typeof ilibDate&&ilibDate instanceof IDate?new Date(ilibDate.getTimeExtended()):ilibDate},module.exports=DateFactory;