openfl
Version:
A fast, productive library for 2D cross-platform development.
257 lines (239 loc) • 10.3 kB
JavaScript
// Class: openfl.globalization._DateTimeFormatter.DateTimeFormatTokenizer
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 openfl_globalization__$DateTimeFormatter_DateTimeFormatToken() {return require("./../../../openfl/globalization/_DateTimeFormatter/DateTimeFormatToken");}
function EReg() {return require("./../../../EReg");}
function Type() {return require("./../../../Type");}
function Std() {return require("./../../../Std");}
// Constructor
var DateTimeFormatTokenizer = function(){}
// Meta
DateTimeFormatTokenizer.__name__ = "openfl.globalization._DateTimeFormatter.DateTimeFormatTokenizer";
DateTimeFormatTokenizer.__isInterface__ = false;
DateTimeFormatTokenizer.prototype = {
};
DateTimeFormatTokenizer.prototype.__class__ = DateTimeFormatTokenizer.prototype.constructor = $hxClasses["openfl.globalization._DateTimeFormatter.DateTimeFormatTokenizer"] = DateTimeFormatTokenizer;
// Init
// Statics
DateTimeFormatTokenizer.tokenize = function(format) {
var tokens = [];
var unquotedText = "";
var currentToken = null;
var i = 0;
while(i < format.length) {
var char = format.charAt(i);
++i;
if(currentToken != null) {
if(currentToken._hx_index == 0) {
var text = currentToken.text;
if(char == "'") {
var nextChar = i < format.length ? format.charAt(i) : null;
if(nextChar == "'") {
currentToken = (openfl_globalization__$DateTimeFormatter_DateTimeFormatToken().default).Text(text + char);
++i;
} else {
tokens.push(currentToken);
currentToken = null;
}
} else {
currentToken = (openfl_globalization__$DateTimeFormatter_DateTimeFormatToken().default).Text(text + char);
}
continue;
}
}
var newToken;
switch(char) {
case "'":
newToken = (openfl_globalization__$DateTimeFormatter_DateTimeFormatToken().default).Text("");
break;
case "D":
newToken = (openfl_globalization__$DateTimeFormatter_DateTimeFormatToken().default).DayOfYear(1);
break;
case "E":
newToken = (openfl_globalization__$DateTimeFormatter_DateTimeFormatToken().default).Weekday(1);
break;
case "F":
newToken = (openfl_globalization__$DateTimeFormatter_DateTimeFormatToken().default).DayOfWeekOccurence;
break;
case "G":
newToken = (openfl_globalization__$DateTimeFormatter_DateTimeFormatToken().default).Era(1);
break;
case "H":
newToken = (openfl_globalization__$DateTimeFormatter_DateTimeFormatToken().default).Hour23(1);
break;
case "K":
newToken = (openfl_globalization__$DateTimeFormatter_DateTimeFormatToken().default).Hour11(1);
break;
case "M":
newToken = (openfl_globalization__$DateTimeFormatter_DateTimeFormatToken().default).Month(1);
break;
case "Q":
newToken = (openfl_globalization__$DateTimeFormatter_DateTimeFormatToken().default).Quarter(1);
break;
case "S":
newToken = (openfl_globalization__$DateTimeFormatter_DateTimeFormatToken().default).Millisecond(1);
break;
case "W":
newToken = (openfl_globalization__$DateTimeFormatter_DateTimeFormatToken().default).WeekOfMonth;
break;
case "Z":
newToken = (openfl_globalization__$DateTimeFormatter_DateTimeFormatToken().default).TimeZoneOffset(1);
break;
case "a":
newToken = (openfl_globalization__$DateTimeFormatter_DateTimeFormatToken().default).AMPM;
break;
case "d":
newToken = (openfl_globalization__$DateTimeFormatter_DateTimeFormatToken().default).Date(1);
break;
case "h":
newToken = (openfl_globalization__$DateTimeFormatter_DateTimeFormatToken().default).Hour12(1);
break;
case "k":
newToken = (openfl_globalization__$DateTimeFormatter_DateTimeFormatToken().default).Hour24(1);
break;
case "m":
newToken = (openfl_globalization__$DateTimeFormatter_DateTimeFormatToken().default).Minute(1);
break;
case "s":
newToken = (openfl_globalization__$DateTimeFormatter_DateTimeFormatToken().default).Second(1);
break;
case "v":
newToken = (openfl_globalization__$DateTimeFormatter_DateTimeFormatToken().default).TimeZone(1);
break;
case "w":
newToken = (openfl_globalization__$DateTimeFormatter_DateTimeFormatToken().default).WeekOfYear(1);
break;
case "y":
newToken = (openfl_globalization__$DateTimeFormatter_DateTimeFormatToken().default).Year(1);
break;
case "z":
newToken = (openfl_globalization__$DateTimeFormatter_DateTimeFormatToken().default).TimeZoneDST(1);
break;
default:
if(new (EReg().default)("^[A-Za-z]$","").match(char)) {
newToken = (openfl_globalization__$DateTimeFormatter_DateTimeFormatToken().default).Invalid(char);
} else {
unquotedText += char;
newToken = null;
}
}
if(newToken != null && unquotedText.length > 0) {
tokens.push((openfl_globalization__$DateTimeFormatter_DateTimeFormatToken().default).Text(unquotedText));
unquotedText = "";
}
if(currentToken != null && newToken != null && (Type().default).enumConstructor(newToken) == (Type().default).enumConstructor(currentToken)) {
switch(currentToken._hx_index) {
case 0:
var text1 = currentToken.text;
currentToken = (openfl_globalization__$DateTimeFormatter_DateTimeFormatToken().default).Invalid(text1);
break;
case 1:
var text2 = currentToken.text;
currentToken = (openfl_globalization__$DateTimeFormatter_DateTimeFormatToken().default).Invalid(text2);
break;
case 2:
var length = currentToken.length;
currentToken = (openfl_globalization__$DateTimeFormatter_DateTimeFormatToken().default).Weekday((Std().default).int(Math.min(5,length + 1)));
break;
case 3:
var length1 = currentToken.length;
currentToken = (openfl_globalization__$DateTimeFormatter_DateTimeFormatToken().default).Era((Std().default).int(Math.min(5,length1 + 1)));
break;
case 4:
var length2 = currentToken.length;
currentToken = (openfl_globalization__$DateTimeFormatter_DateTimeFormatToken().default).Year((Std().default).int(Math.min(5,length2 + 1)));
break;
case 5:
var length3 = currentToken.length;
currentToken = (openfl_globalization__$DateTimeFormatter_DateTimeFormatToken().default).Month((Std().default).int(Math.min(5,length3 + 1)));
break;
case 6:
var length4 = currentToken.length;
currentToken = (openfl_globalization__$DateTimeFormatter_DateTimeFormatToken().default).Date((Std().default).int(Math.min(2,length4 + 1)));
break;
case 7:
var length5 = currentToken.length;
currentToken = (openfl_globalization__$DateTimeFormatter_DateTimeFormatToken().default).Quarter((Std().default).int(Math.min(4,length5 + 1)));
break;
case 8:
var length6 = currentToken.length;
currentToken = (openfl_globalization__$DateTimeFormatter_DateTimeFormatToken().default).WeekOfYear((Std().default).int(Math.min(2,length6 + 1)));
break;
case 9:
currentToken = (openfl_globalization__$DateTimeFormatter_DateTimeFormatToken().default).WeekOfMonth;
break;
case 10:
var length7 = currentToken.length;
currentToken = (openfl_globalization__$DateTimeFormatter_DateTimeFormatToken().default).DayOfYear((Std().default).int(Math.min(3,length7 + 1)));
break;
case 11:
currentToken = (openfl_globalization__$DateTimeFormatter_DateTimeFormatToken().default).DayOfWeekOccurence;
break;
case 12:
currentToken = (openfl_globalization__$DateTimeFormatter_DateTimeFormatToken().default).AMPM;
break;
case 13:
var length8 = currentToken.length;
currentToken = (openfl_globalization__$DateTimeFormatter_DateTimeFormatToken().default).Hour11((Std().default).int(Math.min(2,length8 + 1)));
break;
case 14:
var length9 = currentToken.length;
currentToken = (openfl_globalization__$DateTimeFormatter_DateTimeFormatToken().default).Hour12((Std().default).int(Math.min(2,length9 + 1)));
break;
case 15:
var length10 = currentToken.length;
currentToken = (openfl_globalization__$DateTimeFormatter_DateTimeFormatToken().default).Hour23((Std().default).int(Math.min(2,length10 + 1)));
break;
case 16:
var length11 = currentToken.length;
currentToken = (openfl_globalization__$DateTimeFormatter_DateTimeFormatToken().default).Hour24((Std().default).int(Math.min(2,length11 + 1)));
break;
case 17:
var length12 = currentToken.length;
currentToken = (openfl_globalization__$DateTimeFormatter_DateTimeFormatToken().default).Minute((Std().default).int(Math.min(2,length12 + 1)));
break;
case 18:
var length13 = currentToken.length;
currentToken = (openfl_globalization__$DateTimeFormatter_DateTimeFormatToken().default).Second((Std().default).int(Math.min(2,length13 + 1)));
break;
case 19:
var length14 = currentToken.length;
currentToken = (openfl_globalization__$DateTimeFormatter_DateTimeFormatToken().default).Millisecond((Std().default).int(Math.min(5,length14 + 1)));
break;
case 20:
var length15 = currentToken.length;
currentToken = (openfl_globalization__$DateTimeFormatter_DateTimeFormatToken().default).TimeZone((Std().default).int(Math.min(4,length15 + 1)));
break;
case 21:
var length16 = currentToken.length;
currentToken = (openfl_globalization__$DateTimeFormatter_DateTimeFormatToken().default).TimeZoneDST((Std().default).int(Math.min(4,length16 + 1)));
break;
case 22:
var length17 = currentToken.length;
currentToken = (openfl_globalization__$DateTimeFormatter_DateTimeFormatToken().default).TimeZoneOffset((Std().default).int(Math.min(4,length17 + 1)));
break;
}
} else {
if(currentToken != null) {
tokens.push(currentToken);
}
currentToken = newToken;
}
}
if(currentToken != null) {
tokens.push(currentToken);
currentToken = null;
}
if(unquotedText.length > 0) {
tokens.push((openfl_globalization__$DateTimeFormatter_DateTimeFormatToken().default).Text(unquotedText));
unquotedText = "";
}
return tokens;
}
// Export
exports.default = DateTimeFormatTokenizer;