Globalize definitions and tests

This commit is contained in:
Boris Yankov
2012-10-09 03:30:44 +03:00
parent a56f53c376
commit 61439ee57e
3 changed files with 243 additions and 2 deletions
+112
View File
@@ -0,0 +1,112 @@
// Type definitions for Globalize
// https://github.com/borisyankov/DefinitelyTyped
interface GlobalizePercent {
pattern: string[];
decimals: number;
groupSizes: number[];
//",": string;
//".": string;
symbol: string;
}
interface GlobalizeCurrency {
pattern: string[];
decimals: number;
groupSizes: number[];
//",": string;
//".": string;
symbol: string;
}
interface GlobalizeNumberFormat {
pattern: string[];
decimals: string;
//",": string;
//".": string;
groupSizes: number[];
//"+": string;
//"-": string;
NaN: string;
negativeInfinity: string;
positiveInfinity: string;
percent: GlobalizePercent;
currency: GlobalizeCurrency;
}
interface GlobalizeEra {
name: string;
start: any;
offset: number;
}
interface GlobalizeDays {
names: string[];
namesAbbr: string[];
namesShort: string[];
}
interface GlobalizePatterns {
d: string;
D: string;
t: string;
T: string;
f: string;
F: string;
M: string;
Y: string;
S: string;
}
interface GlobalizeCalendar {
name: string;
// "/": string,
// ":": string,
firstDay: number;
days: GlobalizeDays;
months: any[];
AM: string[];
PM: string[];
eras: GlobalizeEra[];
twoDigitYearMax: number;
patterns: GlobalizePatterns;
}
interface GlobalizeCalendars {
standard: GlobalizeCalendar;
}
interface GlobalizeCulture {
name: string;
englishName: string;
nativeName: string;
isRTL: bool;
language: string;
numberFormat: GlobalizeNumberFormat;
calendars: GlobalizeCalendars;
messages: any;
}
interface GlobalizeCultures {
[index: number]: GlobalizeCulture;
}
class GlobalizeStatic {
cultures: GlobalizeCultures;
init(cultureSelector: string);
cultureSelector: string;
culture(): GlobalizeCulture;
culture(cultureSelector: string): GlobalizeCulture;
culture(cultureSelector: string[]): GlobalizeCulture;
addCultureInfo(cultureName, baseCultureName, info? );
findClosestCulture(cultureSelector: string);
format(value, format, cultureSelector? );
localize(key, cultureSelector);
parseDate(value: string, formats? , cultureSelector?: string): Date;
parseInt(value: string, radix? , cultureSelector?: string): number;
parseFloat(value: string, radix? , cultureSelector?: string): number;
}
declare var Globalize: GlobalizeStatic;
+2 -2
View File
@@ -10,6 +10,7 @@ Complete
* Backbone.js
* Bootstrap
* Express (from TypeScript samples)
* jQuery.Globalize
* jQuery (from TypeScript samples)
* Modernizr
* Node.js (from TypeScript samples)
@@ -24,5 +25,4 @@ In Progress
Next
----
* Angular.js
* jQuery.Validate
* Globalize
* jQuery.Validate
+129
View File
@@ -0,0 +1,129 @@
/// <reference path="../Definitions/globalize.d.ts" />
Globalize.culture("fr");
console.log(Globalize.culture().name);
Globalize.culture("fr-FR");
console.log(Globalize.culture().name);
Globalize.culture(["es-MX", "fr-FR"]);
console.log(Globalize.culture().name);
Globalize.culture("fr;q=0.4, es;q=0.5, he");
Globalize.format(1234.567, "n");
Globalize.format(1234.567, "n1");
Globalize.format(1234.567, "n0");
Globalize.format(new Date(1955, 10, 5), "yyyy/MM/dd");
Globalize.format(new Date(1955, 10, 5), "dddd MMMM d, yyyy");
Globalize.addCultureInfo("fr", { messages: { "translate": "traduire" } });
console.log(Globalize.localize("translate", "fr"));
Globalize.parseInt("1,234.56");
Globalize.parseInt("1.234,56");
Globalize.parseFloat("1,234.56");
Globalize.parseFloat("1.234,56");
Globalize.parseDate("1/2/2003");
Globalize.culture("fr");
Globalize.parseDate("1/2/2003");
Globalize.addCultureInfo("fr", { numberFormat: { billionZeroes: 12 } });
//Globalize.culture().calendar = Globalize.culture().calendars.SomeOtherCalendar;
//Globalize.culture().calendar = Globalize.culture().calendars.standard;
Globalize.format(123.45, "n");
Globalize.format(123.45, "n0");
Globalize.format(123.45, "n1");
Globalize.format(123.45, "d");
Globalize.format(12, "d3");
Globalize.format(123.45, "c");
Globalize.format(123.45, "c0");
Globalize.format(123.45, "c1");
Globalize.format(-123.45, "c");
Globalize.format(0.12345, "p");
Globalize.format(0.12345, "p0");
Globalize.format(0.12345, "p4");
Globalize.format(1234.56, "c");
Globalize.culture("en-US").numberFormat.currency.symbol = '\u20ac';
var currSym;
Globalize.culture().numberFormat.currency.symbol = currSym;
Globalize.format(new Date(2012, 1, 20), 'd');
Globalize.format(new Date(2012, 1, 20), 'D');
Globalize.cultures[ "default" ] = {
name: "English",
englishName: "English",
nativeName: "English",
isRTL: false,
language: "en",
numberFormat: {
pattern: [ "-n" ],
decimals: 2,
",": ",",
".": ".",
groupSizes: [ 3 ],
"+": "+",
"-": "-",
percent: {
pattern: [ "-n %", "n %" ],
decimals: 2,
groupSizes: [ 3 ],
",": ",",
".": ".",
symbol: "%"
},
currency: {
pattern: [ "($n)", "$n" ],
decimals: 2,
groupSizes: [ 3 ],
",": ",",
".": ".",
symbol: "$"
}
},
calendars: {
standard: {
name: "Gregorian_USEnglish",
"/": "/",
":": ":",
firstDay: 0,
days: {
names: [ "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday" ],
namesAbbr: [ "Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat" ],
namesShort: [ "Su", "Mo", "Tu", "We", "Th", "Fr", "Sa" ]
},
//months: [
// names: [ "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December", "" ],
// namesAbbr: [ "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec", "" ]
//],
AM: [ "AM", "am", "AM" ],
PM: [ "PM", "pm", "PM" ],
eras: [
{"name":"A.D.","start":null,"offset":0}
],
twoDigitYearMax: 2029,
patterns: {
d: "M/d/yyyy",
D: "dddd, MMMM dd, yyyy",
t: "h:mm tt",
T: "h:mm:ss tt",
f: "dddd, MMMM dd, yyyy h:mm tt",
F: "dddd, MMMM dd, yyyy h:mm:ss tt",
M: "MMMM dd",
Y: "yyyy MMMM",
S: "yyyy\u0027-\u0027MM\u0027-\u0027dd\u0027T\u0027HH\u0027:\u0027mm\u0027:\u0027ss"
}
}
},
messages: {}
}