387 lines
		
	
	
		
			9.5 KiB
		
	
	
	
		
			Haxe
		
	
	
	
	
	
			
		
		
	
	
			387 lines
		
	
	
		
			9.5 KiB
		
	
	
	
		
			Haxe
		
	
	
	
	
	
/*
 | 
						||
 * Copyright (C)2005-2019 Haxe Foundation
 | 
						||
 *
 | 
						||
 * Permission is hereby granted, free of charge, to any person obtaining a
 | 
						||
 * copy of this software and associated documentation files (the "Software"),
 | 
						||
 * to deal in the Software without restriction, including without limitation
 | 
						||
 * the rights to use, copy, modify, merge, publish, distribute, sublicense,
 | 
						||
 * and/or sell copies of the Software, and to permit persons to whom the
 | 
						||
 * Software is furnished to do so, subject to the following conditions:
 | 
						||
 *
 | 
						||
 * The above copyright notice and this permission notice shall be included in
 | 
						||
 * all copies or substantial portions of the Software.
 | 
						||
 *
 | 
						||
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 | 
						||
 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 | 
						||
 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
 | 
						||
 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 | 
						||
 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
 | 
						||
 * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
 | 
						||
 * DEALINGS IN THE SOFTWARE.
 | 
						||
 */
 | 
						||
 | 
						||
package js.lib.intl;
 | 
						||
 | 
						||
/**
 | 
						||
	The `DateTimeFormat` object is a constructor for objects that enable language-sensitive
 | 
						||
	date and time formatting.
 | 
						||
 | 
						||
	Documentation [DateTimeFormat](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/DateTimeFormat) by [Mozilla Contributors](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/DateTimeFormat$history), licensed under [CC-BY-SA 2.5](https://creativecommons.org/licenses/by-sa/2.5/).
 | 
						||
**/
 | 
						||
@:native("Intl.DateTimeFormat")
 | 
						||
extern class DateTimeFormat {
 | 
						||
	@:overload(function(?locales:Array<String>, ?options:DateTimeFormatOptions):Void {})
 | 
						||
	@:pure function new(?locales:String, ?options:DateTimeFormatOptions);
 | 
						||
 | 
						||
	/**
 | 
						||
		Getter function that formats a date according to the locale and formatting options
 | 
						||
		of this `DateTimeFormat` object.
 | 
						||
	**/
 | 
						||
	@:overload(function(date:js.lib.Date):String {})
 | 
						||
	@:pure function format(date:Date):String;
 | 
						||
 | 
						||
	/**
 | 
						||
		Returns an `Array` of objects representing the date string in parts that can be used
 | 
						||
		for custom locale-aware formatting.
 | 
						||
	**/
 | 
						||
	@:overload(function(date:js.lib.Date):Array<DateTimeFormatPart> {})
 | 
						||
	@:pure function formatToParts(date:Date):Array<DateTimeFormatPart>;
 | 
						||
 | 
						||
	/**
 | 
						||
		Returns a new object with properties reflecting the locale and formatting options
 | 
						||
		computed during initialization of the object.
 | 
						||
	**/
 | 
						||
	@:pure function resolvedOptions():DateTimeFormatResolvedOptions;
 | 
						||
 | 
						||
	/**
 | 
						||
		Returns an array containing those of the provided locales that are supported
 | 
						||
		without having to fall back to the runtime's default locale.
 | 
						||
	**/
 | 
						||
	@:overload(function(locales:Array<String>, ?options:DateTimeFormatSupportedLocalesOfOptions):Array<String> {})
 | 
						||
	@:pure static function supportedLocalesOf(locales:String, ?options:DateTimeFormatSupportedLocalesOfOptions):Array<String>;
 | 
						||
}
 | 
						||
 | 
						||
typedef DateTimeFormatOptions = {
 | 
						||
	/**
 | 
						||
		The locale matching algorithm to use.
 | 
						||
		The default is `BestFit`.
 | 
						||
	**/
 | 
						||
	var ?localeMatcher:LocaleMatcher;
 | 
						||
 | 
						||
	/**
 | 
						||
		The time zone to use. The only value implementations must recognize is `"UTC"`;
 | 
						||
		the default is the runtime's default time zone. Implementations may also recognize
 | 
						||
		the time zone names of the [IANA time zone database](https://www.iana.org/time-zones),
 | 
						||
		such as `"Asia/Shanghai"`, `"Asia/Kolkata"`, `"America/New_York"`.
 | 
						||
	**/
 | 
						||
	var ?timeZone:String;
 | 
						||
 | 
						||
	/**
 | 
						||
		Whether to use 12-hour time (as opposed to 24-hour time).
 | 
						||
		The default is locale dependent.
 | 
						||
		This option overrides the hc language tag and/or the `hourCycle` option in case both are present.
 | 
						||
	**/
 | 
						||
	var ?hour12:Bool;
 | 
						||
 | 
						||
	/**
 | 
						||
		The hour cycle to use. This option overrides the `hc` language tag, if both are present,
 | 
						||
		and the `Hour12` option takes precedence in case both options have been specified.
 | 
						||
	**/
 | 
						||
	var ?hourCycle:HourCycle;
 | 
						||
 | 
						||
	/**
 | 
						||
		The format matching algorithm to use.
 | 
						||
		The default is `BestFit`.
 | 
						||
		See the following paragraphs for information about the use of this property.
 | 
						||
	**/
 | 
						||
	var ?formatMatcher:FormatMatcher;
 | 
						||
 | 
						||
	/**
 | 
						||
		The representation of the weekday.
 | 
						||
	**/
 | 
						||
	var ?weekday:WeekdayRepresentation;
 | 
						||
 | 
						||
	/**
 | 
						||
		The representation of the era.
 | 
						||
	**/
 | 
						||
	var ?era:EraRepresentation;
 | 
						||
 | 
						||
	/**
 | 
						||
		The representation of the year.
 | 
						||
	**/
 | 
						||
	var ?year:YearRepresentation;
 | 
						||
 | 
						||
	/**
 | 
						||
		The representation of the month.
 | 
						||
	**/
 | 
						||
	var ?month:MonthRepresentation;
 | 
						||
 | 
						||
	/**
 | 
						||
		The representation of the day.
 | 
						||
	**/
 | 
						||
	var ?day:DayRepresentation;
 | 
						||
 | 
						||
	/**
 | 
						||
		The representation of the hour.
 | 
						||
	**/
 | 
						||
	var ?hour:HourRepresentation;
 | 
						||
 | 
						||
	/**
 | 
						||
		The representation of the minute.
 | 
						||
	**/
 | 
						||
	var ?minute:MinuteRepresentation;
 | 
						||
 | 
						||
	/**
 | 
						||
		The representation of the second.
 | 
						||
	**/
 | 
						||
	var ?second:SecondRepresentation;
 | 
						||
 | 
						||
	/**
 | 
						||
		The representation of the time zone name.
 | 
						||
	**/
 | 
						||
	var ?timeZoneName:TimeZoneName;
 | 
						||
}
 | 
						||
 | 
						||
typedef DateTimeFormatResolvedOptions = {
 | 
						||
	/**
 | 
						||
		The BCP 47 language tag for the locale actually used.
 | 
						||
		If any Unicode extension values were requested in the input BCP 47 language tag that led to this locale,
 | 
						||
		the key-value pairs that were requested and are supported for this locale are included in `locale`.
 | 
						||
	**/
 | 
						||
	final locale:String;
 | 
						||
 | 
						||
	/**
 | 
						||
		E.g. "gregory"
 | 
						||
	**/
 | 
						||
	final calendar:String;
 | 
						||
 | 
						||
	/**
 | 
						||
		The values requested using the Unicode extension keys "ca" and "nu" or filled in as default values.
 | 
						||
	**/
 | 
						||
	final numberingSystem:String;
 | 
						||
 | 
						||
	/**
 | 
						||
		The value provided for this property in the options argument; `undefined` (representing the runtime's
 | 
						||
		default time zone) if none was provided.
 | 
						||
		Warning: Applications should not rely on `undefined` being returned, as future versions may return
 | 
						||
		a String value identifying the runtime’s default time zone instead.
 | 
						||
	**/
 | 
						||
	final timeZone:Null<String>;
 | 
						||
 | 
						||
	/**
 | 
						||
		The value provided for this property in the `options` argument or filled in as a default.
 | 
						||
	**/
 | 
						||
	final hour12:Bool;
 | 
						||
 | 
						||
	final weekday:WeekdayRepresentation;
 | 
						||
	final era:EraRepresentation;
 | 
						||
	final year:YearRepresentation;
 | 
						||
	final month:MonthRepresentation;
 | 
						||
	final day:DayRepresentation;
 | 
						||
	final hour:HourRepresentation;
 | 
						||
	final minute:MinuteRepresentation;
 | 
						||
	final second:SecondRepresentation;
 | 
						||
 | 
						||
	/**
 | 
						||
		The values resulting from format matching between the corresponding properties in the `options` argument
 | 
						||
		and the available combinations and representations for date-time formatting in the selected locale.
 | 
						||
		Some of these properties may not be present, indicating that the corresponding components will not be
 | 
						||
		represented in formatted output.
 | 
						||
	**/
 | 
						||
	final timeZoneName:TimeZoneName;
 | 
						||
}
 | 
						||
 | 
						||
enum abstract HourCycle(String) {
 | 
						||
	var H11 = "h11";
 | 
						||
	var H12 = "h12";
 | 
						||
	var H23 = "h23";
 | 
						||
	var H24 = "h24";
 | 
						||
}
 | 
						||
 | 
						||
enum abstract FormatMatcher(String) {
 | 
						||
	var Basic = "basic";
 | 
						||
	var BestFit = "best fit";
 | 
						||
}
 | 
						||
 | 
						||
enum abstract WeekdayRepresentation(String) {
 | 
						||
	/**
 | 
						||
		(e.g., Thursday)
 | 
						||
	 */
 | 
						||
	var Long = "long";
 | 
						||
 | 
						||
	/**
 | 
						||
		(e.g., Thu)
 | 
						||
	 */
 | 
						||
	var Short = "short";
 | 
						||
 | 
						||
	/**
 | 
						||
		(e.g., T). Two weekdays may have the same narrow style for some locales (e.g. Tuesday's narrow style is also T).
 | 
						||
	 */
 | 
						||
	var Narrow = "narrow";
 | 
						||
}
 | 
						||
 | 
						||
enum abstract EraRepresentation(String) {
 | 
						||
	/**
 | 
						||
		(e.g., Anno Domini)
 | 
						||
	 */
 | 
						||
	var Long = "long";
 | 
						||
 | 
						||
	/**
 | 
						||
		(e.g., AD)
 | 
						||
	 */
 | 
						||
	var Short = "short";
 | 
						||
 | 
						||
	/**
 | 
						||
		(e.g., A)
 | 
						||
	 */
 | 
						||
	var Narrow = "narrow";
 | 
						||
}
 | 
						||
 | 
						||
enum abstract YearRepresentation(String) {
 | 
						||
	/**
 | 
						||
		(e.g., 2012)
 | 
						||
	**/
 | 
						||
	var Numeric = "numeric";
 | 
						||
 | 
						||
	/**
 | 
						||
		(e.g., 12)
 | 
						||
	**/
 | 
						||
	var TwoDigit = "2-digit";
 | 
						||
}
 | 
						||
 | 
						||
enum abstract MonthRepresentation(String) {
 | 
						||
	/**
 | 
						||
		(e.g., 2)
 | 
						||
	**/
 | 
						||
	var Numeric = "numeric";
 | 
						||
 | 
						||
	/**
 | 
						||
		(e.g., 02)
 | 
						||
	**/
 | 
						||
	var TwoDigit = "2-digit";
 | 
						||
 | 
						||
	/**
 | 
						||
		(e.g., March)
 | 
						||
	**/
 | 
						||
	var Long = "long";
 | 
						||
 | 
						||
	/**
 | 
						||
		(e.g., Mar)
 | 
						||
	**/
 | 
						||
	var Short = "short";
 | 
						||
 | 
						||
	/**
 | 
						||
		(e.g., M). Two months may have the same narrow style for some locales (e.g. May's narrow style is also M).
 | 
						||
	**/
 | 
						||
	var Narrow = "narrow";
 | 
						||
}
 | 
						||
 | 
						||
enum abstract DayRepresentation(String) {
 | 
						||
	/**
 | 
						||
		(e.g., 1)
 | 
						||
	**/
 | 
						||
	var Numeric = "numeric";
 | 
						||
 | 
						||
	/**
 | 
						||
		(e.g., 01)
 | 
						||
	**/
 | 
						||
	var TwoDigit = "2-digit";
 | 
						||
}
 | 
						||
 | 
						||
enum abstract HourRepresentation(String) {
 | 
						||
	var Numeric = "numeric";
 | 
						||
	var TwoDigit = "2-digit";
 | 
						||
}
 | 
						||
 | 
						||
enum abstract MinuteRepresentation(String) {
 | 
						||
	var Numeric = "numeric";
 | 
						||
	var TwoDigit = "2-digit";
 | 
						||
}
 | 
						||
 | 
						||
enum abstract SecondRepresentation(String) {
 | 
						||
	var Numeric = "numeric";
 | 
						||
	var TwoDigit = "2-digit";
 | 
						||
}
 | 
						||
 | 
						||
enum abstract TimeZoneName(String) {
 | 
						||
	/**
 | 
						||
		(e.g., British Summer Time)
 | 
						||
	**/
 | 
						||
	var Long = "long";
 | 
						||
 | 
						||
	/**
 | 
						||
		(e.g., GMT+1)
 | 
						||
	**/
 | 
						||
	var Short = "short";
 | 
						||
}
 | 
						||
 | 
						||
typedef DateTimeFormatPart = {
 | 
						||
	var type(default, never):DateTimeFormatPartType;
 | 
						||
	var value(default, never):String;
 | 
						||
}
 | 
						||
 | 
						||
enum abstract DateTimeFormatPartType(String) {
 | 
						||
	/**
 | 
						||
		The string used for the day, for example "17".
 | 
						||
	**/
 | 
						||
	var Day = "day";
 | 
						||
 | 
						||
	/**
 | 
						||
		The string used for the day period, for example, "AM" or "PM".
 | 
						||
	**/
 | 
						||
	var DayPeriod = "dayPeriod";
 | 
						||
 | 
						||
	/**
 | 
						||
		The string used for the era, for example "BC" or "AD".
 | 
						||
	**/
 | 
						||
	var Era = "era";
 | 
						||
 | 
						||
	/**
 | 
						||
		The string used for the hour, for example "3" or "03".
 | 
						||
	**/
 | 
						||
	var Hour = "hour";
 | 
						||
 | 
						||
	/**
 | 
						||
		The string used for separating date and time values, for example "/", ",", "o'clock", "de", etc.
 | 
						||
	**/
 | 
						||
	var Literal = "literal";
 | 
						||
 | 
						||
	/**
 | 
						||
		The string used for the minute, for example "00".
 | 
						||
	**/
 | 
						||
	var Minute = "minute";
 | 
						||
 | 
						||
	/**
 | 
						||
		The string used for the month, for example "12".
 | 
						||
	**/
 | 
						||
	var Month = "month";
 | 
						||
 | 
						||
	/**
 | 
						||
		The string used for the second, for example "07" or "42".
 | 
						||
	**/
 | 
						||
	var Second = "second";
 | 
						||
 | 
						||
	/**
 | 
						||
		The string used for the name of the time zone, for example "UTC".
 | 
						||
	**/
 | 
						||
	var TimeZoneName = "timeZoneName";
 | 
						||
 | 
						||
	/**
 | 
						||
		The string used for the weekday, for example "M", "Monday", or "Montag".
 | 
						||
	**/
 | 
						||
	var Weekday = "weekday";
 | 
						||
 | 
						||
	/**
 | 
						||
		The string used for the year, for example "2012" or "96".
 | 
						||
	**/
 | 
						||
	var Year = "year";
 | 
						||
}
 | 
						||
 | 
						||
typedef DateTimeFormatSupportedLocalesOfOptions = {
 | 
						||
	/**
 | 
						||
		The locale matching algorithm to use.
 | 
						||
		The default is `BestFit`.
 | 
						||
	 */
 | 
						||
	var ?localeMatcher:LocaleMatcher;
 | 
						||
}
 |