UNPKG

ilib

Version:

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

1 lines 2.12 kB
var ilib=require("./ilib.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){if(!IDate._constructors[name]){var entry=DateFactory._dynMap[name];entry&&(IDate._constructors[name]=require(fnc(entry)))}return IDate._constructors[name]},DateFactory._init=function(type,options){var cons;return ilib.isDynCode()&&(DateFactory._dynLoadDate(type,circumventWebPackDate),CalendarFactory._dynLoadCalendar(type,circumventWebPackCal)),(cons=IDate._constructors[type])||"function"!=typeof options.onLoad||options.onLoad(void 0),cons&&new cons(options)},DateFactory._dateToIlib=function(inDate,timezone,locale){return null==inDate?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}):DateFactory(inDate instanceof JulianDay?{jd:inDate,timezone:timezone,locale:locale}:"object"==typeof inDate?inDate:{unixtime:inDate.getTime(),timezone:timezone,locale:locale}))},module.exports=DateFactory;