openfl
Version:
A fast, productive library for 2D cross-platform development.
515 lines (498 loc) • 17.9 kB
JavaScript
// 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;