UNPKG

openfl

Version:

A fast, productive library for 2D cross-platform development.

515 lines (498 loc) 17.9 kB
// Class: openfl.globalization.DateTimeFormatter var $global = typeof window != "undefined" ? window : typeof global != "undefined" ? global : typeof self != "undefined" ? self : this $global.Object.defineProperty(exports, "__esModule", {value: true}); var __map_reserved = {}; // Imports var $hxClasses = require("./../../hxClasses_stub").default; var $hxEnums = require("./../../hxEnums_stub").default; var $import = require("./../../import_stub").default; function haxe_CallStack() {return require("./../../haxe/CallStack");} function js__$Boot_HaxeError() {return require("./../../js/_Boot/HaxeError");} function openfl_globalization__$DateTimeFormatter_DateTimeFormatTokenizer() {return require("./../../openfl/globalization/_DateTimeFormatter/DateTimeFormatTokenizer");} function StringTools() {return require("./../../StringTools");} function Std() {return require("./../../Std");} function openfl__$Vector_Vector_$Impl_$() {return require("./../../openfl/_Vector/Vector_Impl_");} function haxe_Log() {return require("./../../haxe/Log");} function openfl_globalization_LocaleID() {return require("./../../openfl/globalization/LocaleID");} // Constructor var DateTimeFormatter = function(requestedLocaleIDName,dateStyle,timeStyle) { if(timeStyle == null) { timeStyle = "long"; } if(dateStyle == null) { dateStyle = "long"; } this.requestedLocaleIDName = requestedLocaleIDName; this._normalizedRequestedLocaleIDName = (openfl_globalization_LocaleID().default).normalizeRequestedLocaleIDName(requestedLocaleIDName); this.setDateTimeStyles(dateStyle,timeStyle); this.actualLocaleIDName = this.intlDateTimeFormat.resolvedOptions().locale; this.lastOperationStatus = "noError"; } // Meta DateTimeFormatter.__name__ = "openfl.globalization.DateTimeFormatter"; DateTimeFormatter.__isInterface__ = false; DateTimeFormatter.prototype = { getDateStyle: function() { this.lastOperationStatus = "noError"; return this.dateStyle; }, getTimeStyle: function() { this.lastOperationStatus = "noError"; return this.timeStyle; }, getDateTimePattern: function() { this.lastOperationStatus = "noError"; return this.dateTimePattern; }, getFirstWeekday: function() { this.lastOperationStatus = "platformAPIFailed"; return 0; }, format: function(date) { var jsDate = date; if(this.dateStyle == "custom" || this.timeStyle == "custom") { var result = this.formatPatternJS(jsDate,false); this.lastOperationStatus = "noError"; return result; } else { try { var result1 = this.intlDateTimeFormat.format(jsDate); this.lastOperationStatus = "noError"; return result1; } catch( e ) { (haxe_CallStack().default).lastException = e; var e1 = ((e) instanceof (js__$Boot_HaxeError().default)) ? e.val : e; this.lastOperationStatus = "errorCodeUnknown"; return null; } } }, formatUTC: function(date) { var jsDate = date; if(this.dateTimePattern != null) { var result = this.formatPatternJS(jsDate,true); this.lastOperationStatus = "noError"; return result; } else { try { var result1 = this.intlDateTimeFormatUTC.format(jsDate); this.lastOperationStatus = "noError"; return result1; } catch( e ) { (haxe_CallStack().default).lastException = e; var e1 = ((e) instanceof (js__$Boot_HaxeError().default)) ? e.val : e; this.lastOperationStatus = "errorCodeUnknown"; return null; } } }, formatPatternJS: function(date,utc) { var result = ""; var tokens = (openfl_globalization__$DateTimeFormatter_DateTimeFormatTokenizer().default).tokenize(this.dateTimePattern); var timeZone = utc ? "UTC" : undefined; var _g = 0; while(_g < tokens.length) { var token = tokens[_g]; ++_g; var result1; switch(token._hx_index) { case 0: var text = token.text; result1 = text; break; case 1: var _g2 = token.text; result1 = ""; break; case 2: var length = token.length; var result2; switch(length) { case 4: result2 = new Intl.DateTimeFormat(this._normalizedRequestedLocaleIDName,{ weekday : "long", timeZone : timeZone}).formatToParts(date); break; case 5: result2 = new Intl.DateTimeFormat(this._normalizedRequestedLocaleIDName,{ weekday : "narrow", timeZone : timeZone}).formatToParts(date); break; default: result2 = new Intl.DateTimeFormat(this._normalizedRequestedLocaleIDName,{ weekday : "short", timeZone : timeZone}).formatToParts(date); } result1 = this.getDateFormatPart("weekday",result2); break; case 3: var length1 = token.length; var result3; switch(length1) { case 4: result3 = new Intl.DateTimeFormat(this._normalizedRequestedLocaleIDName,{ era : "long", timeZone : timeZone}).formatToParts(date); break; case 5: result3 = new Intl.DateTimeFormat(this._normalizedRequestedLocaleIDName,{ era : "narrow", timeZone : timeZone}).formatToParts(date); break; default: result3 = new Intl.DateTimeFormat(this._normalizedRequestedLocaleIDName,{ era : "short", timeZone : timeZone}).formatToParts(date); } result1 = this.getDateFormatPart("era",result3); break; case 4: var length2 = token.length; switch(length2) { case 1: result1 = new Intl.DateTimeFormat(this._normalizedRequestedLocaleIDName,{ year : "numeric", timeZone : timeZone}).formatToParts(date)[0].value; break; case 2: result1 = new Intl.DateTimeFormat(this._normalizedRequestedLocaleIDName,{ year : "2-digit", timeZone : timeZone}).formatToParts(date)[0].value; break; default: result1 = (StringTools().default).lpad(new Intl.DateTimeFormat(this._normalizedRequestedLocaleIDName,{ year : "numeric", timeZone : timeZone}).formatToParts(date)[0].value,"0",(Std().default).int(Math.min(4,length2))); } break; case 5: var length3 = token.length; var result4; switch(length3) { case 1: result4 = new Intl.DateTimeFormat(this._normalizedRequestedLocaleIDName,{ month : "numeric", timeZone : timeZone}).formatToParts(date); break; case 2: result4 = new Intl.DateTimeFormat(this._normalizedRequestedLocaleIDName,{ month : "2-digit", timeZone : timeZone}).formatToParts(date); break; case 3: result4 = new Intl.DateTimeFormat(this._normalizedRequestedLocaleIDName,{ month : "short", timeZone : timeZone}).formatToParts(date); break; case 4: result4 = new Intl.DateTimeFormat(this._normalizedRequestedLocaleIDName,{ month : "long", timeZone : timeZone}).formatToParts(date); break; default: result4 = new Intl.DateTimeFormat(this._normalizedRequestedLocaleIDName,{ month : "narrow", timeZone : timeZone}).formatToParts(date); } result1 = this.getDateFormatPart("month",result4); break; case 6: var length4 = token.length; result1 = this.getDateFormatPart("day",length4 == 1 ? new Intl.DateTimeFormat(this._normalizedRequestedLocaleIDName,{ day : "numeric", timeZone : timeZone}).formatToParts(date) : new Intl.DateTimeFormat(this._normalizedRequestedLocaleIDName,{ day : "2-digit", timeZone : timeZone}).formatToParts(date)); break; case 7: var _g9 = token.length; result1 = ""; break; case 8: var _g18 = token.length; result1 = ""; break; case 9: result1 = ""; break; case 10: var _g14 = token.length; result1 = ""; break; case 11: result1 = ""; break; case 12: result1 = this.getDateFormatPart("dayPeriod",new Intl.DateTimeFormat(this._normalizedRequestedLocaleIDName,{ hour : "numeric", hour12 : true, timeZone : timeZone}).formatToParts(date)); break; case 13: var length5 = token.length; result1 = this.getDateFormatPart("hour",length5 == 1 ? new Intl.DateTimeFormat(this._normalizedRequestedLocaleIDName,{ hour : "numeric", hourCycle : "h11", timeZone : timeZone}).formatToParts(date) : new Intl.DateTimeFormat(this._normalizedRequestedLocaleIDName,{ hour : "2-digit", hourCycle : "h11", timeZone : timeZone}).formatToParts(date)); break; case 14: var length6 = token.length; result1 = this.getDateFormatPart("hour",length6 == 1 ? new Intl.DateTimeFormat(this._normalizedRequestedLocaleIDName,{ hour : "numeric", hourCycle : "h12", timeZone : timeZone}).formatToParts(date) : new Intl.DateTimeFormat(this._normalizedRequestedLocaleIDName,{ hour : "2-digit", hourCycle : "h12", timeZone : timeZone}).formatToParts(date)); break; case 15: var length7 = token.length; result1 = this.getDateFormatPart("hour",length7 == 1 ? new Intl.DateTimeFormat(this._normalizedRequestedLocaleIDName,{ hour : "numeric", hourCycle : "h23", timeZone : timeZone}).formatToParts(date) : new Intl.DateTimeFormat(this._normalizedRequestedLocaleIDName,{ hour : "2-digit", hourCycle : "h23", timeZone : timeZone}).formatToParts(date)); break; case 16: var length8 = token.length; result1 = this.getDateFormatPart("hour",length8 == 1 ? new Intl.DateTimeFormat(this._normalizedRequestedLocaleIDName,{ hour : "numeric", hourCycle : "h24", timeZone : timeZone}).formatToParts(date) : new Intl.DateTimeFormat(this._normalizedRequestedLocaleIDName,{ hour : "2-digit", hourCycle : "h24", timeZone : timeZone}).formatToParts(date)); break; case 17: var length9 = token.length; result1 = this.getDateFormatPart("minute",length9 == 1 ? new Intl.DateTimeFormat(this._normalizedRequestedLocaleIDName,{ minute : "numeric", timeZone : timeZone}).formatToParts(date) : new Intl.DateTimeFormat(this._normalizedRequestedLocaleIDName,{ minute : "2-digit", timeZone : timeZone}).formatToParts(date)); break; case 18: var length10 = token.length; result1 = this.getDateFormatPart("second",length10 == 1 ? new Intl.DateTimeFormat(this._normalizedRequestedLocaleIDName,{ second : "numeric", timeZone : timeZone}).formatToParts(date) : new Intl.DateTimeFormat(this._normalizedRequestedLocaleIDName,{ second : "2-digit", timeZone : timeZone}).formatToParts(date)); break; case 19: var length11 = token.length; result1 = ""; break; case 20: var length12 = token.length; result1 = ""; break; case 21: var length13 = token.length; result1 = this.getDateFormatPart("timeZoneName",length13 == 4 ? new Intl.DateTimeFormat(this._normalizedRequestedLocaleIDName,{ timeZoneName : "long", timeZone : timeZone}).formatToParts(date) : new Intl.DateTimeFormat(this._normalizedRequestedLocaleIDName,{ timeZoneName : "short", timeZone : timeZone}).formatToParts(date)); break; case 22: var length14 = token.length; result1 = ""; break; } result += result1; } return result; }, getDateFormatPart: function(partName,parts) { var result = ""; var _g = 0; while(_g < parts.length) { var part = parts[_g]; ++_g; var typeAsString = (Std().default).string(part.type); if(typeAsString != partName) { continue; } result = part.value; } return result; }, getMonthNames: function(nameStyle,context) { if(context == null) { context = "standalone"; } if(nameStyle == null) { nameStyle = "full"; } try { var monthStyle = nameStyle == "full" ? "long" : "short"; var intlDateTimeFormat = new Intl.DateTimeFormat(this.actualLocaleIDName,{ month : monthStyle}); var monthNames = []; var _g = 0; while(_g < 12) { var i = _g++; var date = new Date(2000,i,1,0,0,0); monthNames[i] = intlDateTimeFormat.format(date); } this.lastOperationStatus = "noError"; return (openfl__$Vector_Vector_$Impl_$().default)._new(monthNames.length,true,monthNames); } catch( e ) { (haxe_CallStack().default).lastException = e; var e1 = ((e) instanceof (js__$Boot_HaxeError().default)) ? e.val : e; this.lastOperationStatus = "errorCodeUnknown"; return null; } }, getWeekdayNames: function(nameStyle,context) { if(context == null) { context = "standalone"; } if(nameStyle == null) { nameStyle = "full"; } try { var weekdayStyle; switch(nameStyle) { case "full": weekdayStyle = "long"; break; case "shortAbbreviation": weekdayStyle = "narrow"; break; default: weekdayStyle = "short"; } var intlDateTimeFormat = new Intl.DateTimeFormat(this.actualLocaleIDName,{ weekday : weekdayStyle}); var weekdayNames = []; var date = new Date(2006,0,1,0,0,0); weekdayNames[0] = intlDateTimeFormat.format(date); var date1 = new Date(2006,0,2,0,0,0); weekdayNames[1] = intlDateTimeFormat.format(date1); var date2 = new Date(2006,0,3,0,0,0); weekdayNames[2] = intlDateTimeFormat.format(date2); var date3 = new Date(2006,0,4,0,0,0); weekdayNames[3] = intlDateTimeFormat.format(date3); var date4 = new Date(2006,0,5,0,0,0); weekdayNames[4] = intlDateTimeFormat.format(date4); var date5 = new Date(2006,0,6,0,0,0); weekdayNames[5] = intlDateTimeFormat.format(date5); var date6 = new Date(2006,0,7,0,0,0); weekdayNames[6] = intlDateTimeFormat.format(date6); this.lastOperationStatus = "noError"; return (openfl__$Vector_Vector_$Impl_$().default)._new(weekdayNames.length,true,weekdayNames); } catch( e ) { (haxe_CallStack().default).lastException = e; var e1 = ((e) instanceof (js__$Boot_HaxeError().default)) ? e.val : e; this.lastOperationStatus = "errorCodeUnknown"; return null; } }, setDateTimeStyles: function(dateStyle,timeStyle) { if(timeStyle == null) { timeStyle = "long"; } if(dateStyle == null) { dateStyle = "long"; } if(dateStyle == "custom" || timeStyle == "custom") { this.lastOperationStatus = "illegalArgumentError"; return; } this.dateStyle = dateStyle; this.timeStyle = timeStyle; this.dateTimePattern = null; var options = { }; if(dateStyle != "none") { var tmp; switch(dateStyle) { case "long": tmp = "full"; break; case "medium": tmp = "long"; break; default: tmp = "short"; } options.dateStyle = tmp; } if(timeStyle != "none") { var tmp1; switch(timeStyle) { case "long": tmp1 = "medium"; break; case "medium": tmp1 = "medium"; break; default: tmp1 = "short"; } options.timeStyle = tmp1; } try { this.intlDateTimeFormat = new Intl.DateTimeFormat(this._normalizedRequestedLocaleIDName,options); options.timeZone = "UTC"; this.intlDateTimeFormatUTC = new Intl.DateTimeFormat(this._normalizedRequestedLocaleIDName,options); this.resolveDateTimePattern(); this.lastOperationStatus = "noError"; } catch( e ) { (haxe_CallStack().default).lastException = e; var e1 = ((e) instanceof (js__$Boot_HaxeError().default)) ? e.val : e; this.lastOperationStatus = "errorCodeUnknown"; } }, setDateTimePattern: function(pattern) { if(pattern == null || pattern.length > 255) { this.lastOperationStatus = "patternSyntaxError"; return; } this.dateStyle = "custom"; this.timeStyle = "custom"; this.dateTimePattern = pattern; try { var tokens = (openfl_globalization__$DateTimeFormatter_DateTimeFormatTokenizer().default).tokenize(this.dateTimePattern); this.lastOperationStatus = "noError"; var _g = 0; while(_g < tokens.length) { var token = tokens[_g]; ++_g; switch(token._hx_index) { case 1: var text = token.text; this.lastOperationStatus = "patternSyntaxError"; return; case 7: var _g1 = token.length; this.lastOperationStatus = "unsupportedError"; return; case 8: var _g5 = token.length; this.lastOperationStatus = "unsupportedError"; return; case 9: this.lastOperationStatus = "unsupportedError"; return; case 10: var _g4 = token.length; this.lastOperationStatus = "unsupportedError"; return; case 11: this.lastOperationStatus = "unsupportedError"; return; case 19: var _g3 = token.length; this.lastOperationStatus = "unsupportedError"; break; case 20: var _g6 = token.length; this.lastOperationStatus = "unsupportedError"; return; case 22: var _g2 = token.length; this.lastOperationStatus = "unsupportedError"; return; default: } } } catch( e ) { (haxe_CallStack().default).lastException = e; (haxe_Log().default).trace("Date time tokenization error: " + (Std().default).string(((e) instanceof (js__$Boot_HaxeError().default)) ? e.val : e),{ fileName : "../node_modules/openfl-haxelib/src/openfl/globalization/DateTimeFormatter.hx", lineNumber : 819, className : "openfl.globalization.DateTimeFormatter", methodName : "setDateTimePattern"}); this.dateTimePattern = ""; this.lastOperationStatus = "patternSyntaxError"; return; } }, resolveDateTimePattern: function() { var pattern = ""; var parts = this.intlDateTimeFormat.formatToParts(new Date(2021,9,12,0,0,0)); var _g = 0; while(_g < parts.length) { var part = parts[_g]; ++_g; var pattern1; switch(part.type) { case "day": pattern1 = "d"; break; case "dayPeriod": pattern1 = "a"; break; case "era": pattern1 = "G"; break; case "hour": pattern1 = "h"; break; case "literal": pattern1 = part.value; break; case "minute": pattern1 = "m"; break; case "month": pattern1 = "M"; break; case "second": pattern1 = "s"; break; case "timeZoneName": pattern1 = "z"; break; case "weekday": pattern1 = "E"; break; case "year": pattern1 = "y"; break; default: pattern1 = ""; } pattern += pattern1; } this.dateTimePattern = pattern; } }; DateTimeFormatter.prototype.__class__ = DateTimeFormatter.prototype.constructor = $hxClasses["openfl.globalization.DateTimeFormatter"] = DateTimeFormatter; // Init // Statics DateTimeFormatter.getAvailableLocaleIDNames = function() { return (openfl__$Vector_Vector_$Impl_$().default)._new(); } // Export exports.default = DateTimeFormatter;