diff --git a/Definitions/globalize.d.ts b/Definitions/globalize.d.ts new file mode 100644 index 0000000000..7cd83b8b69 --- /dev/null +++ b/Definitions/globalize.d.ts @@ -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; \ No newline at end of file diff --git a/README.md b/README.md index 2883ed2551..67c7c386cd 100644 --- a/README.md +++ b/README.md @@ -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 \ No newline at end of file +* jQuery.Validate \ No newline at end of file diff --git a/Tests/globalize-tests.ts b/Tests/globalize-tests.ts new file mode 100644 index 0000000000..21a5580da3 --- /dev/null +++ b/Tests/globalize-tests.ts @@ -0,0 +1,129 @@ +/// + +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: {} +} \ No newline at end of file