ilib
Version:
iLib is a cross-engine library of internationalization (i18n) classes written in pure JS
1 lines • 1.41 kB
JavaScript
var ilib=require("./ilib.js");var Locale=require("./Locale.js");var LocaleInfo=require("./LocaleInfo.js");var Calendar=require("./Calendar.js");var CalendarFactory=function(a){var r,n,e=true,o;if(a){if(a.locale){r=typeof a.locale==="string"?new Locale(a.locale):a.locale}n=a.type||a.calendar;if(typeof a.sync==="boolean"){e=a.sync}}if(!r){r=new Locale}if(!n){new LocaleInfo(r,{sync:e,loadParams:a&&a.loadParams,onLoad:ilib.bind(this,function(r){n=r.getCalendar();o=CalendarFactory._init(n,a);if(a&&typeof a.onLoad==="function"){a.onLoad(o)}})})}else{o=CalendarFactory._init(n,a)}return o};CalendarFactory._dynMap={coptic:"Coptic",ethiopic:"Ethiopic",gregorian:"Gregorian",han:"Han",hebrew:"Hebrew",islamic:"Islamic",julian:"Julian",persian:"Persian","persian-algo":"PersianAlgo",thaisolar:"ThaiSolar"};CalendarFactory._dynLoadCalendar=function(a){if(!Calendar._constructors[a]){var r=CalendarFactory._dynMap[a];if(r){Calendar._constructors[a]=require("./"+r+"Cal.js")}}return Calendar._constructors[a]};CalendarFactory._init=function(a,r){var n;if(ilib.isDynCode()){CalendarFactory._dynLoadCalendar(a)}n=Calendar._constructors[a];return n&&new n(r)};CalendarFactory.getCalendars=function(){var a=[],r;if(ilib.isDynCode()){for(r in CalendarFactory._dynMap){CalendarFactory._dynLoadCalendar(r)}}for(r in Calendar._constructors){if(r&&Calendar._constructors[r]){a.push(r)}}return a};module.exports=CalendarFactory;