Socket
Socket
Sign inDemoInstall

globalize

Package Overview
Dependencies
Maintainers
4
Versions
68
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

globalize - npm Package Compare versions

Comparing version 1.0.0-alpha.11 to 1.0.0-alpha.12

src/util/out-of-range.js

2

bower.json
{
"name": "globalize",
"version": "1.0.0-alpha.11",
"version": "1.0.0-alpha.12",
"license": "MIT",

@@ -5,0 +5,0 @@ "ignore": [

/**
* Globalize v1.0.0-alpha.11
* Globalize v1.0.0-alpha.12
*

@@ -10,6 +10,6 @@ * http://github.com/jquery/globalize

*
* Date: 2014-12-03T12:09Z
* Date: 2014-12-08T10:21Z
*/
/*!
* Globalize v1.0.0-alpha.11 2014-12-03T12:09Z Released under the MIT license
* Globalize v1.0.0-alpha.12 2014-12-08T10:21Z Released under the MIT license
* http://git.io/TrdQbw

@@ -16,0 +16,0 @@ */

/**
* Globalize v1.0.0-alpha.11
* Globalize v1.0.0-alpha.12
*

@@ -10,6 +10,6 @@ * http://github.com/jquery/globalize

*
* Date: 2014-12-03T12:09Z
* Date: 2014-12-08T10:21Z
*/
/*!
* Globalize v1.0.0-alpha.11 2014-12-03T12:09Z Released under the MIT license
* Globalize v1.0.0-alpha.12 2014-12-08T10:21Z Released under the MIT license
* http://git.io/TrdQbw

@@ -26,2 +26,3 @@ */

"../globalize",
"./number",
"cldr/event",

@@ -42,9 +43,13 @@ "cldr/supplemental"

var createError = Globalize._createError,
createErrorUnsupportedFeature = Globalize._createErrorUnsupportedFeature,
formatMessage = Globalize._formatMessage,
isPlainObject = Globalize._isPlainObject,
numberSymbol = Globalize._numberSymbol,
regexpEscape = Globalize._regexpEscape,
stringPad = Globalize._stringPad,
validateCldr = Globalize._validateCldr,
validateDefaultLocale = Globalize._validateDefaultLocale,
validateParameterPresence = Globalize._validateParameterPresence,
validateParameterType = Globalize._validateParameterType;
validateParameterType = Globalize._validateParameterType,
validateParameterTypeString = Globalize._validateParameterTypeString;

@@ -71,14 +76,2 @@

var validateParameterTypeString = function( value, name ) {
validateParameterType(
value,
name,
value === undefined || typeof value === "string",
"a string"
);
};
var createErrorInvalidParameterValue = function( name, value ) {

@@ -287,18 +280,4 @@ return createError( "E_INVALID_PAR_VALUE", "Invalid `{name}` value ({value}).", {

var stringPad = function( str, count, right ) {
var length;
if ( typeof str !== "string" ) {
str = String( str );
}
for ( length = str.length; length < count; length += 1 ) {
str = ( right ? ( str + "0" ) : ( "0" + str ) );
}
return str;
};
/**
* hourFormat( date, format )
* hourFormat( date, format, timeSeparator, formatNumber )
*

@@ -311,15 +290,33 @@ * Return date's timezone offset according to the format passed.

*/
var dateTimezoneHourFormat = function( date, format ) {
var offset = date.getTimezoneOffset();
var dateTimezoneHourFormat = function( date, format, timeSeparator, formatNumber ) {
var absOffset,
offset = date.getTimezoneOffset();
// Pick the correct sign side (+ or -).
format = format.split( ";" )[ offset > 0 ? 1 : 0 ];
absOffset = Math.abs( offset );
formatNumber = formatNumber || {
1: function( value ) {
return stringPad( value, 1 );
},
2: function( value ) {
return stringPad( value, 2 );
}
};
// Update hours offset.
format = format.replace( /HH?/, function( match ) {
return stringPad( Math.floor( Math.abs( offset ) / 60 ), match.length );
});
return format
// Update minutes offset and return.
return format.replace( /mm/, stringPad( Math.abs( offset ) % 60, 2 ) );
// Pick the correct sign side (+ or -).
.split( ";" )[ offset > 0 ? 1 : 0 ]
// Localize time separator
.replace( ":", timeSeparator )
// Update hours offset.
.replace( /HH?/, function( match ) {
return formatNumber[ match.length ]( Math.floor( absOffset / 60 ) );
})
// Update minutes offset and return.
.replace( /mm/, function() {
return formatNumber[ 2 ]( absOffset % 60 );
});
};

@@ -342,4 +339,7 @@

var dateFormat = function( date, properties ) {
var formatNumber = properties.formatNumber,
timeSeparator = properties.timeSeparator;
return properties.pattern.replace( datePatternRe, function( current ) {
var pad, ret,
var ret,
chr = current.charAt( 0 ),

@@ -384,6 +384,6 @@ length = current.length;

// maximum length.
ret = String( date.getFullYear() );
pad = true;
ret = date.getFullYear();
if ( length === 2 ) {
ret = ret.substr( ret.length - 2 );
ret = String( ret );
ret = +ret.substr( ret.length - 2 );
}

@@ -404,6 +404,6 @@ break;

);
ret = String( ret.getFullYear() );
pad = true;
ret = ret.getFullYear();
if ( length === 2 ) {
ret = ret.substr( ret.length - 2 );
ret = String( ret );
ret = +ret.substr( ret.length - 2 );
}

@@ -416,5 +416,3 @@ break;

ret = Math.ceil( ( date.getMonth() + 1 ) / 3 );
if ( length <= 2 ) {
pad = true;
} else {
if ( length > 2 ) {
ret = properties.quarters[ chr ][ length ][ ret ];

@@ -428,5 +426,3 @@ }

ret = date.getMonth() + 1;
if ( length <= 2 ) {
pad = true;
} else {
if ( length > 2 ) {
ret = properties.months[ chr ][ length ][ ret ];

@@ -444,3 +440,2 @@ }

( 7 - ret >= properties.minDays ? 0 : 1 );
pad = true;
break;

@@ -459,3 +454,2 @@

ret = date.getDate();
pad = true;
break;

@@ -465,3 +459,2 @@

ret = dateDayOfYear( date ) + 1;
pad = true;
break;

@@ -481,3 +474,2 @@

ret = dateDayOfWeek( date, properties.firstDay ) + 1;
pad = true;
break;

@@ -500,3 +492,2 @@ }

ret = ( date.getHours() % 12 ) || 12;
pad = true;
break;

@@ -506,3 +497,2 @@

ret = date.getHours();
pad = true;
break;

@@ -512,3 +502,2 @@

ret = date.getHours() % 12;
pad = true;
break;

@@ -518,3 +507,2 @@

ret = date.getHours() || 24;
pad = true;
break;

@@ -525,3 +513,2 @@

ret = date.getMinutes();
pad = true;
break;

@@ -532,3 +519,2 @@

ret = date.getSeconds();
pad = true;
break;

@@ -538,3 +524,2 @@

ret = Math.round( date.getMilliseconds() * Math.pow( 10, length - 3 ) );
pad = true;
break;

@@ -544,3 +529,2 @@

ret = Math.round( dateMillisecondsInDay( date ) * Math.pow( 10, length - 3 ) );
pad = true;
break;

@@ -558,3 +542,5 @@

date,
length < 4 ? "+H;-H" : properties.tzLongHourFormat
length < 4 ? "+H;-H" : properties.tzLongHourFormat,
timeSeparator,
formatNumber
);

@@ -578,5 +564,10 @@ ret = properties.gmtFormat.replace( /\{0\}/, ret );

ret = length === 1 ? "+HH;-HH" : ( length % 2 ? "+HH:mm;-HH:mm" : "+HHmm;-HHmm" );
ret = dateTimezoneHourFormat( date, ret );
ret = dateTimezoneHourFormat( date, ret, ":" );
break;
// timeSeparator
case ":":
ret = timeSeparator;
break;
// ' literals.

@@ -588,3 +579,4 @@ case "'":

}
return current;
ret = current;
break;

@@ -594,6 +586,6 @@ // Anything else is considered a literal, including [ ,:/.@#], chinese, japonese, and

default:
return current;
ret = current;
}
if ( pad ) {
ret = stringPad( ret, length );
if ( typeof ret === "number" ) {
ret = formatNumber[ length ]( ret );
}

@@ -607,11 +599,2 @@ return ret;

var createErrorUnsupportedFeature = function( feature ) {
return createError( "E_UNSUPPORTED", "Unsupported {feature}.", {
feature: feature
});
};
/**

@@ -630,8 +613,18 @@ * properties( pattern, cldr )

var dateFormatProperties = function( pattern, cldr ) {
var properties = {},
var properties = {
pattern: pattern,
timeSeparator: numberSymbol( "timeSeparator", cldr )
},
widths = [ "abbreviated", "wide", "narrow" ];
properties.pattern = pattern;
function setFormatNumberPattern( pad ) {
if ( !properties.formatNumber ) {
properties.formatNumber = {};
}
properties.formatNumber[ pad ] = stringPad( "", pad );
}
pattern.replace( datePatternRe, function( current ) {
var chr = current.charAt( 0 ),
var formatNumber,
chr = current.charAt( 0 ),
length = current.length;

@@ -661,2 +654,8 @@

// Year
case "y":
// Plain year.
formatNumber = true;
break;
case "Y":

@@ -666,2 +665,3 @@ // Year in "Week of Year"

properties.minDays = cldr.supplemental.weekData.minDays();
formatNumber = true;
break;

@@ -690,2 +690,4 @@

]);
} else {
formatNumber = true;
}

@@ -709,2 +711,4 @@ break;

]);
} else {
formatNumber = true;
}

@@ -718,5 +722,12 @@ break;

properties.minDays = cldr.supplemental.weekData.minDays();
formatNumber = true;
break;
// Day
case "d":
case "D":
case "F":
formatNumber = true;
break;
case "g":

@@ -733,2 +744,3 @@ // Modified Julian day. Need to be implemented.

properties.firstDay = dateFirstDayOfWeek( cldr );
formatNumber = true;
break;

@@ -776,2 +788,18 @@ }

// Hour
case "h": // 1-12
case "H": // 0-23
case "K": // 0-11
case "k": // 1-24
// Minute
case "m":
// Second
case "s":
case "S":
case "A":
formatNumber = true;
break;
// Zone

@@ -785,2 +813,9 @@ case "z":

properties.tzLongHourFormat = cldr.main( "dates/timeZoneNames/hourFormat" );
/* falls through */
case "Z":
case "X":
case "x":
setFormatNumberPattern( 1 );
setFormatNumberPattern( 2 );
break;

@@ -793,3 +828,6 @@

});
}
if ( formatNumber ) {
setFormatNumberPattern( length );
}

@@ -836,8 +874,11 @@ });

var dateParse = (function() {
function outOfRange( value, low, high ) {
var outOfRange = function( value, low, high ) {
return value < low || value > high;
}
};
/**

@@ -854,3 +895,3 @@ * parse( value, tokens, properties )

*/
return function( value, tokens, properties ) {
var dateParse = function( value, tokens, properties ) {
var amPm, era, hour, hour12, timezoneOffset, valid,

@@ -899,3 +940,3 @@ YEAR = 0,

case "y":
value = +token.lexeme;
value = token.value;
if ( length === 2 ) {

@@ -931,3 +972,3 @@ if ( outOfRange( value, 0, 99 ) ) {

if ( length <= 2 ) {
value = +token.lexeme;
value = token.value;
} else {

@@ -950,3 +991,3 @@ value = +token.value;

case "d":
value = +token.lexeme;
value = token.value;
if ( outOfRange( value, 1, 31 ) ) {

@@ -960,3 +1001,3 @@ return false;

case "D":
value = +token.lexeme;
value = token.value;
if ( outOfRange( value, 1, 366 ) ) {

@@ -990,3 +1031,3 @@ return false;

case "h": // 1-12
value = +token.lexeme;
value = token.value;
if ( outOfRange( value, 1, 12 ) ) {

@@ -1001,3 +1042,3 @@ return false;

case "K": // 0-11
value = +token.lexeme;
value = token.value;
if ( outOfRange( value, 0, 11 ) ) {

@@ -1012,3 +1053,3 @@ return false;

case "k": // 1-24
value = +token.lexeme;
value = token.value;
if ( outOfRange( value, 1, 24 ) ) {

@@ -1023,3 +1064,3 @@ return false;

case "H": // 0-23
value = +token.lexeme;
value = token.value;
if ( outOfRange( value, 0, 23 ) ) {

@@ -1035,3 +1076,3 @@ return false;

case "m":
value = +token.lexeme;
value = token.value;
if ( outOfRange( value, 0, 59 ) ) {

@@ -1046,3 +1087,3 @@ return false;

case "s":
value = +token.lexeme;
value = token.value;
if ( outOfRange( value, 0, 59 ) ) {

@@ -1062,3 +1103,3 @@ return false;

case "S":
value = Math.round( +token.lexeme * Math.pow( 10, 3 - length ) );
value = Math.round( token.value * Math.pow( 10, 3 - length ) );
date.setMilliseconds( value );

@@ -1076,3 +1117,2 @@ truncateAt.push( MILLISECONDS );

break;
}

@@ -1115,5 +1155,5 @@

}());
/**

@@ -1136,2 +1176,15 @@ * parseProperties( cldr )

/**
* Generated by:
*
* regenerate().add( require( "unicode-7.0.0/categories/N/symbols" ) ).toString();
*
* https://github.com/mathiasbynens/regenerate
* https://github.com/mathiasbynens/unicode-7.0.0
*/
var regexpN = /[0-9\xB2\xB3\xB9\xBC-\xBE\u0660-\u0669\u06F0-\u06F9\u07C0-\u07C9\u0966-\u096F\u09E6-\u09EF\u09F4-\u09F9\u0A66-\u0A6F\u0AE6-\u0AEF\u0B66-\u0B6F\u0B72-\u0B77\u0BE6-\u0BF2\u0C66-\u0C6F\u0C78-\u0C7E\u0CE6-\u0CEF\u0D66-\u0D75\u0DE6-\u0DEF\u0E50-\u0E59\u0ED0-\u0ED9\u0F20-\u0F33\u1040-\u1049\u1090-\u1099\u1369-\u137C\u16EE-\u16F0\u17E0-\u17E9\u17F0-\u17F9\u1810-\u1819\u1946-\u194F\u19D0-\u19DA\u1A80-\u1A89\u1A90-\u1A99\u1B50-\u1B59\u1BB0-\u1BB9\u1C40-\u1C49\u1C50-\u1C59\u2070\u2074-\u2079\u2080-\u2089\u2150-\u2182\u2185-\u2189\u2460-\u249B\u24EA-\u24FF\u2776-\u2793\u2CFD\u3007\u3021-\u3029\u3038-\u303A\u3192-\u3195\u3220-\u3229\u3248-\u324F\u3251-\u325F\u3280-\u3289\u32B1-\u32BF\uA620-\uA629\uA6E6-\uA6EF\uA830-\uA835\uA8D0-\uA8D9\uA900-\uA909\uA9D0-\uA9D9\uA9F0-\uA9F9\uAA50-\uAA59\uABF0-\uABF9\uFF10-\uFF19]|\uD800[\uDD07-\uDD33\uDD40-\uDD78\uDD8A\uDD8B\uDEE1-\uDEFB\uDF20-\uDF23\uDF41\uDF4A\uDFD1-\uDFD5]|\uD801[\uDCA0-\uDCA9]|\uD802[\uDC58-\uDC5F\uDC79-\uDC7F\uDCA7-\uDCAF\uDD16-\uDD1B\uDE40-\uDE47\uDE7D\uDE7E\uDE9D-\uDE9F\uDEEB-\uDEEF\uDF58-\uDF5F\uDF78-\uDF7F\uDFA9-\uDFAF]|\uD803[\uDE60-\uDE7E]|\uD804[\uDC52-\uDC6F\uDCF0-\uDCF9\uDD36-\uDD3F\uDDD0-\uDDD9\uDDE1-\uDDF4\uDEF0-\uDEF9]|\uD805[\uDCD0-\uDCD9\uDE50-\uDE59\uDEC0-\uDEC9]|\uD806[\uDCE0-\uDCF2]|\uD809[\uDC00-\uDC6E]|\uD81A[\uDE60-\uDE69\uDF50-\uDF59\uDF5B-\uDF61]|\uD834[\uDF60-\uDF71]|\uD835[\uDFCE-\uDFFF]|\uD83A[\uDCC7-\uDCCF]|\uD83C[\uDD00-\uDD0C]/;
/**
* tokenizer( value, pattern, properties )

@@ -1169,2 +1222,4 @@ *

var valid,
parseNumber = properties.parseNumber,
timeSeparator = properties.timeSeparator,
tokens = [],

@@ -1174,7 +1229,10 @@ widths = [ "abbreviated", "wide", "narrow" ];

valid = properties.pattern.match( datePatternRe ).every(function( current ) {
var chr, length, tokenRe,
var chr, length, numeric, tokenRe,
token = {};
function hourFormatParse( tokenRe ) {
function hourFormatParse( tokenRe, parseNumber ) {
var aux = value.match( tokenRe );
parseNumber = parseNumber || function( value ) {
return +value;
};

@@ -1186,9 +1244,11 @@ if ( !aux ) {

// hourFormat containing H only, e.g., `+H;-H`
if ( aux.length < 4 ) {
token.value = ( aux[ 1 ] ? -aux[ 1 ] : +aux[ 2 ] ) * 60;
if ( aux.length < 8 ) {
token.value =
( aux[ 1 ] ? -parseNumber( aux[ 1 ] ) : parseNumber( aux[ 4 ] ) ) * 60;
// hourFormat containing H and m, e.g., `+HHmm;-HHmm`
} else {
token.value = ( aux[ 1 ] ? -aux[ 1 ] : +aux[ 3 ] ) * 60 +
( aux[ 1 ] ? -aux[ 2 ] : +aux[ 4 ] );
token.value =
( aux[ 1 ] ? -parseNumber( aux[ 1 ] ) : parseNumber( aux[ 7 ] ) ) * 60 +
( aux[ 1 ] ? -parseNumber( aux[ 4 ] ) : parseNumber( aux[ 10 ] ) );
}

@@ -1207,3 +1267,3 @@

// - "+H;-H" -> /GMT\+(\d\d?)|GMT-(\d\d?)/
function hourFormatRe( hourFormat, gmtFormat ) {
function hourFormatRe( hourFormat, gmtFormat, timeSeparator ) {
var re;

@@ -1217,5 +1277,13 @@

.replace( "+", "\\+" )
.replace( /HH|mm/g, "(\\d\\d)" )
.replace( /H|m/g, "(\\d\\d?)" );
// Unicode equivalent to (\\d\\d)
.replace( /HH|mm/g, "((" + regexpN.source + ")(" + regexpN.source + "))" )
// Unicode equivalent to (\\d\\d?)
.replace( /H|m/g, "((" + regexpN.source + ")(" + regexpN.source + ")?)" );
if ( timeSeparator ) {
re = re.replace( /:/g, timeSeparator );
}
re = re.split( ";" ).map(function( part ) {

@@ -1230,3 +1298,6 @@ return gmtFormat.replace( "{0}", part );

if ( length === 1 ) {
return tokenRe = /\d/;
// Unicode equivalent to /\d/
numeric = true;
return tokenRe = regexpN;
}

@@ -1237,3 +1308,6 @@ }

if ( length === 1 ) {
return tokenRe = /\d\d?/;
// Unicode equivalent to /\d\d?/
numeric = true;
return tokenRe = new RegExp( "(" + regexpN.source + ")(" + regexpN.source + ")?" );
}

@@ -1244,3 +1318,6 @@ }

if ( length === 2 ) {
return tokenRe = /\d\d/;
// Unicode equivalent to /\d\d/
numeric = true;
return tokenRe = new RegExp( "(" + regexpN.source + ")(" + regexpN.source + ")" );
}

@@ -1300,9 +1377,17 @@ }

case "Y":
numeric = true;
// number l=1:+, l=2:{2}, l=3:{3,}, l=4:{4,}, ...
if ( length === 1 ) {
tokenRe = /\d+/;
// Unicode equivalent to /\d+/.
tokenRe = new RegExp( "(" + regexpN.source + ")+" );
} else if ( length === 2 ) {
tokenRe = /\d\d/;
// Unicode equivalent to /\d\d/
tokenRe = new RegExp( "(" + regexpN.source + ")(" + regexpN.source + ")" );
} else {
tokenRe = new RegExp( "\\d{" + length + ",}" );
// Unicode equivalent to /\d{length,}/
tokenRe = new RegExp( "(" + regexpN.source + "){" + length + ",}" );
}

@@ -1339,3 +1424,6 @@ break;

if ( length <= 3 ) {
tokenRe = new RegExp( "\\d{" + length + ",3}" );
// Unicode equivalent to /\d{length,3}/
numeric = true;
tokenRe = new RegExp( "(" + regexpN.source + "){" + length + ",3}" );
}

@@ -1406,3 +1494,6 @@ break;

// number {l}.
tokenRe = new RegExp( "\\d{" + length + "}" );
// Unicode equivalent to /\d{length}/
numeric = true;
tokenRe = new RegExp( "(" + regexpN.source + "){" + length + "}" );
break;

@@ -1412,3 +1503,6 @@

// number {l+5}.
tokenRe = new RegExp( "\\d{" + ( length + 5 ) + "}" );
// Unicode equivalent to /\d{length+5}/
numeric = true;
tokenRe = new RegExp( "(" + regexpN.source + "){" + ( length + 5 ) + "}" );
break;

@@ -1427,5 +1521,6 @@

length < 4 ? "+H;-H" : properties[ "timeZoneNames/hourFormat" ],
properties[ "timeZoneNames/gmtFormat" ]
properties[ "timeZoneNames/gmtFormat" ],
timeSeparator
);
if ( !hourFormatParse( tokenRe ) ) {
if ( !hourFormatParse( tokenRe, parseNumber ) ) {
return null;

@@ -1478,2 +1573,5 @@ }

token.lexeme = lexeme;
if ( numeric ) {
token.value = parseNumber( lexeme );
}
return "";

@@ -1507,3 +1605,4 @@ });

var properties = {
pattern: pattern
pattern: pattern,
timeSeparator: numberSymbol( "timeSeparator", cldr )
},

@@ -1670,3 +1769,3 @@ widths = [ "abbreviated", "wide", "narrow" ];

Globalize.prototype.dateFormatter = function( pattern ) {
var cldr, properties;
var cldr, formatNumber, pad, properties;

@@ -1685,2 +1784,11 @@ validateParameterPresence( pattern, "pattern" );

// Create needed number formatters.
formatNumber = properties.formatNumber;
for ( pad in formatNumber ) {
formatNumber[ pad ] = this.numberFormatter({
pattern: formatNumber[ pad ]
});
}
properties.formatNumber = formatNumber;
return function( value ) {

@@ -1718,2 +1826,4 @@ validateParameterPresence( value, "value" );

tokenizerProperties.parseNumber = this.numberParser({ pattern: "0" });
return function( value ) {

@@ -1720,0 +1830,0 @@ var tokens;

/**
* Globalize v1.0.0-alpha.11
* Globalize v1.0.0-alpha.12
*

@@ -10,6 +10,6 @@ * http://github.com/jquery/globalize

*
* Date: 2014-12-03T12:09Z
* Date: 2014-12-08T10:21Z
*/
/*!
* Globalize v1.0.0-alpha.11 2014-12-03T12:09Z Released under the MIT license
* Globalize v1.0.0-alpha.12 2014-12-08T10:21Z Released under the MIT license
* http://git.io/TrdQbw

@@ -16,0 +16,0 @@ */

/**
* Globalize v1.0.0-alpha.11
* Globalize v1.0.0-alpha.12
*

@@ -10,6 +10,6 @@ * http://github.com/jquery/globalize

*
* Date: 2014-12-03T12:09Z
* Date: 2014-12-08T10:21Z
*/
/*!
* Globalize v1.0.0-alpha.11 2014-12-03T12:09Z Released under the MIT license
* Globalize v1.0.0-alpha.12 2014-12-08T10:21Z Released under the MIT license
* http://git.io/TrdQbw

@@ -50,2 +50,11 @@ */

var createErrorUnsupportedFeature = function( feature ) {
return createError( "E_UNSUPPORTED", "Unsupported {feature}.", {
feature: feature
});
};
var validateParameterTypeNumber = function( value, name ) {

@@ -198,11 +207,2 @@ validateParameterType(

var createErrorUnsupportedFeature = function( feature ) {
return createError( "E_UNSUPPORTED", "Unsupported {feature}.", {
feature: feature
});
};
/**

@@ -1124,3 +1124,5 @@ * toPrecision( number, precision, round )

if ( !options.pattern ) {
if ( options.pattern ) {
pattern = options.pattern;
} else {
pattern = numberPattern( options.style || "decimal", cldr );

@@ -1186,3 +1188,5 @@ }

if ( !options.pattern ) {
if ( options.pattern ) {
pattern = options.pattern;
} else {
pattern = numberPattern( options.style || "decimal", cldr );

@@ -1236,2 +1240,10 @@ }

/**
* Optimization to avoid duplicating some internal functions across modules.
*/
Globalize._createErrorUnsupportedFeature = createErrorUnsupportedFeature;
Globalize._numberSymbol = numberSymbol;
Globalize._stringPad = stringPad;
Globalize._validateParameterTypeString = validateParameterTypeString;
return Globalize;

@@ -1238,0 +1250,0 @@

/**
* Globalize v1.0.0-alpha.11
* Globalize v1.0.0-alpha.12
*

@@ -10,6 +10,6 @@ * http://github.com/jquery/globalize

*
* Date: 2014-12-03T12:09Z
* Date: 2014-12-08T10:21Z
*/
/*!
* Globalize v1.0.0-alpha.11 2014-12-03T12:09Z Released under the MIT license
* Globalize v1.0.0-alpha.12 2014-12-08T10:21Z Released under the MIT license
* http://git.io/TrdQbw

@@ -16,0 +16,0 @@ */

/*!
* Globalize v1.0.0-alpha.11
* Globalize v1.0.0-alpha.12
*

@@ -10,3 +10,3 @@ * http://github.com/jquery/globalize

*
* Date: 2014-12-03T12:09Z
* Date: 2014-12-08T10:21Z
*/

@@ -18,5 +18,7 @@

// Extent core with the following modules
require( "./globalize/date" );
require( "./globalize/message" );
require( "./globalize/number" );
require( "./globalize/plural" );
// Load after globalize/number
require( "./globalize/date" );

@@ -32,5 +32,5 @@ ## .formatDate( value, pattern )

```javascript
var de = new Globalize( "de" );
de.formatDate( new Date( 2010, 10, 30, 17, 55 ), { datetime: "short" } );
// "30.11.10 17:55"
var ar = new Globalize( "ar" );
ar.formatDate( new Date( 2010, 10, 30, 17, 55 ), { datetime: "short" } );
// "٣٠‏/١١‏/٢٠١٠ ٥،٥٥ م"
```

@@ -44,6 +44,7 @@

| *en_GB* | `"01/11/2010 17:55"` |
| *zh* | `"10/11/1 下午5:55"` |
| *zh-u-nu-native* | `"一〇/一一/一 下午五:五五"` |
| *es* | `"1/11/10 17:55"` |
| *de* | `"01.11.10 17:55"` |
| *zh* | `"10/11/1 下午5:55"` |
| *ar* | `"1‏/11‏/2010 5:55 م"` |
| *pt* | `"01/11/10 17:55"` |
| *es* | `"1/11/10 17:55"` |
| *ar* | `"١‏/١١‏/٢٠١٠ ٥،٥٥ م"` |

@@ -37,5 +37,5 @@ ## .parseDate( value, pattern )

```javascript
var es = new Globalize( "es" );
es.parseDate( "1/2/13", { date: "short" } );
// Fri Feb 01 2013 00:00:00
var ar = new Globalize( "ar" );
ar.parseDate( "٢‏/١‏/٢٠١٣ ١٢،٠٠ ص" , { date: "short" } );
// Wed Jan 02 2013 00:00:00
```

@@ -118,6 +118,5 @@ module.exports = function( grunt ) {

// converted to a var declaration.
// b) "Not as simple as a single return" means the define wrappers are replaced by
// a function wrapper call and the returned value is assigned to a var.
// c) "Module" means the define wrappers are removed, but content is untouched.
// Only for root id's (the ones in src, not in src's subpaths).
// b) "Module" means the define wrappers are removed, but content is untouched.
// Only for root id's (the ones in src, not in src's subpaths). Note there's no
// conditional code checking for this type.
onBuildWrite: function( id, path, contents ) {

@@ -170,8 +169,4 @@ var name = camelCase( id.replace( /util\/|common\//, "" ) );

// Type b (not as simple as a single return)
if ( [ "date/parse" ].indexOf( id ) !== -1 ) {
contents = "var " + name + " = (function() {" +
contents + "}());";
// Type a (single return)
} else if ( ( /\// ).test( id ) ) {
if ( ( /\// ).test( id ) ) {
contents = contents

@@ -202,3 +197,3 @@ .replace( /\nreturn/, "\nvar " + name + " =" );

include: [ "date" ],
exclude: [ "cldr", "cldr/supplemental", "./core" ],
exclude: [ "cldr", "cldr/supplemental", "./core", "./number" ],
create: true,

@@ -205,0 +200,0 @@ override: {

{
"name": "globalize",
"version": "1.0.0-alpha.11",
"version": "1.0.0-alpha.12",
"description": "A JavaScript library for internationalization and localization that leverage the official Unicode CLDR JSON data.",

@@ -5,0 +5,0 @@ "keywords": [

@@ -100,7 +100,6 @@ # Globalize

| globalize.js | 1.1KB | [Core library](#core) |
| globalize/date.js | +3.8KB | [Date module](#date_module) provides date formatting and parsing |
| globalize/date.js | +4.8KB | [Date module](#date_module) provides date formatting and parsing |
| globalize/message.js | +0.5KB | [Message module](#message_module) provides message translation |
| globalize/number.js | +2.6KB | [Number module](#number_module) provides number formatting and parsing |
| globalize/number.js | +3.0KB | [Number module](#number_module) provides number formatting and parsing |
| globalize/plural.js | +1.7KB | [Plural module](#plural_module) provides pluralization support |
<!--- By updating this table, also update its clone in #usage -->

@@ -171,3 +170,3 @@ <a name="browser_support"></a>

| Core module | cldr/supplemental/likelySubtags.json |
| Date module | cldr/main/`locale`/ca-gregorian.json<br>cldr/main/`locale`/timeZoneNames.json<br>cldr/supplemental/timeData.json<br>cldr/supplemental/weekData.json |
| Date module | cldr/main/`locale`/ca-gregorian.json<br>cldr/main/`locale`/timeZoneNames.json<br>cldr/supplemental/timeData.json<br>cldr/supplemental/weekData.json<br>+CLDR JSON files from number module |
| Number module | cldr/main/`locale`/numbers.json<br>cldr/supplemental/numberingSystems.json |

@@ -174,0 +173,0 @@ | Plural module | cldr/supplemental/plurals.json |

@@ -25,2 +25,3 @@ /**

"../globalize",
"./number",
"cldr/event",

@@ -41,8 +42,12 @@ "cldr/supplemental"

var createError = Globalize._createError,
createErrorUnsupportedFeature = Globalize._createErrorUnsupportedFeature,
formatMessage = Globalize._formatMessage,
isPlainObject = Globalize._isPlainObject,
numberSymbol = Globalize._numberSymbol,
regexpEscape = Globalize._regexpEscape,
stringPad = Globalize._stringPad,
validateCldr = Globalize._validateCldr,
validateDefaultLocale = Globalize._validateDefaultLocale,
validateParameterPresence = Globalize._validateParameterPresence,
validateParameterType = Globalize._validateParameterType;
validateParameterType = Globalize._validateParameterType,
validateParameterTypeString = Globalize._validateParameterTypeString;

@@ -17,5 +17,7 @@ /*!

// Extent core with the following modules
require( "./globalize/date" );
require( "./globalize/message" );
require( "./globalize/number" );
require( "./globalize/plural" );
// Load after globalize/number
require( "./globalize/date" );

@@ -19,3 +19,4 @@ define([

"cldr/event",
"cldr/supplemental"
"cldr/supplemental",
"./number"
], function( Cldr, validateCldr, validateDefaultLocale, validateParameterPresence,

@@ -53,3 +54,3 @@ validateParameterTypeDataType, validateParameterTypeDate, validateParameterTypeDatePattern,

Globalize.prototype.dateFormatter = function( pattern ) {
var cldr, properties;
var cldr, formatNumber, pad, properties;

@@ -68,2 +69,11 @@ validateParameterPresence( pattern, "pattern" );

// Create needed number formatters.
formatNumber = properties.formatNumber;
for ( pad in formatNumber ) {
formatNumber[ pad ] = this.numberFormatter({
pattern: formatNumber[ pad ]
});
}
properties.formatNumber = formatNumber;
return function( value ) {

@@ -101,2 +111,4 @@ validateParameterPresence( value, "value" );

tokenizerProperties.parseNumber = this.numberParser({ pattern: "0" });
return function( value ) {

@@ -103,0 +115,0 @@ var tokens;

define([
"./first-day-of-week",
"./pattern-re",
"../common/create-error/unsupported-feature"
], function( dateFirstDayOfWeek, datePatternRe, createErrorUnsupportedFeature ) {
"../common/create-error/unsupported-feature",
"../number/symbol",
"../util/string/pad"
], function( dateFirstDayOfWeek, datePatternRe, createErrorUnsupportedFeature, numberSymbol,
stringPad ) {

@@ -20,8 +23,18 @@ /**

return function( pattern, cldr ) {
var properties = {},
var properties = {
pattern: pattern,
timeSeparator: numberSymbol( "timeSeparator", cldr )
},
widths = [ "abbreviated", "wide", "narrow" ];
properties.pattern = pattern;
function setFormatNumberPattern( pad ) {
if ( !properties.formatNumber ) {
properties.formatNumber = {};
}
properties.formatNumber[ pad ] = stringPad( "", pad );
}
pattern.replace( datePatternRe, function( current ) {
var chr = current.charAt( 0 ),
var formatNumber,
chr = current.charAt( 0 ),
length = current.length;

@@ -51,2 +64,8 @@

// Year
case "y":
// Plain year.
formatNumber = true;
break;
case "Y":

@@ -56,2 +75,3 @@ // Year in "Week of Year"

properties.minDays = cldr.supplemental.weekData.minDays();
formatNumber = true;
break;

@@ -80,2 +100,4 @@

]);
} else {
formatNumber = true;
}

@@ -99,2 +121,4 @@ break;

]);
} else {
formatNumber = true;
}

@@ -108,5 +132,12 @@ break;

properties.minDays = cldr.supplemental.weekData.minDays();
formatNumber = true;
break;
// Day
case "d":
case "D":
case "F":
formatNumber = true;
break;
case "g":

@@ -123,2 +154,3 @@ // Modified Julian day. Need to be implemented.

properties.firstDay = dateFirstDayOfWeek( cldr );
formatNumber = true;
break;

@@ -166,2 +198,18 @@ }

// Hour
case "h": // 1-12
case "H": // 0-23
case "K": // 0-11
case "k": // 1-24
// Minute
case "m":
// Second
case "s":
case "S":
case "A":
formatNumber = true;
break;
// Zone

@@ -175,2 +223,9 @@ case "z":

properties.tzLongHourFormat = cldr.main( "dates/timeZoneNames/hourFormat" );
/* falls through */
case "Z":
case "X":
case "x":
setFormatNumberPattern( 1 );
setFormatNumberPattern( 2 );
break;

@@ -183,3 +238,6 @@

});
}
if ( formatNumber ) {
setFormatNumberPattern( length );
}

@@ -186,0 +244,0 @@ });

@@ -9,6 +9,5 @@ define([

"./timezone-hour-format",
"./week-days",
"../util/string/pad"
"./week-days"
], function( dateDayOfWeek, dateDayOfYear, dateFirstDayOfWeek, dateMillisecondsInDay,
datePatternRe, dateStartOf, dateTimezoneHourFormat, dateWeekDays, stringPad ) {
datePatternRe, dateStartOf, dateTimezoneHourFormat, dateWeekDays ) {

@@ -27,4 +26,7 @@ /**

return function( date, properties ) {
var formatNumber = properties.formatNumber,
timeSeparator = properties.timeSeparator;
return properties.pattern.replace( datePatternRe, function( current ) {
var pad, ret,
var ret,
chr = current.charAt( 0 ),

@@ -69,6 +71,6 @@ length = current.length;

// maximum length.
ret = String( date.getFullYear() );
pad = true;
ret = date.getFullYear();
if ( length === 2 ) {
ret = ret.substr( ret.length - 2 );
ret = String( ret );
ret = +ret.substr( ret.length - 2 );
}

@@ -89,6 +91,6 @@ break;

);
ret = String( ret.getFullYear() );
pad = true;
ret = ret.getFullYear();
if ( length === 2 ) {
ret = ret.substr( ret.length - 2 );
ret = String( ret );
ret = +ret.substr( ret.length - 2 );
}

@@ -101,5 +103,3 @@ break;

ret = Math.ceil( ( date.getMonth() + 1 ) / 3 );
if ( length <= 2 ) {
pad = true;
} else {
if ( length > 2 ) {
ret = properties.quarters[ chr ][ length ][ ret ];

@@ -113,5 +113,3 @@ }

ret = date.getMonth() + 1;
if ( length <= 2 ) {
pad = true;
} else {
if ( length > 2 ) {
ret = properties.months[ chr ][ length ][ ret ];

@@ -129,3 +127,2 @@ }

( 7 - ret >= properties.minDays ? 0 : 1 );
pad = true;
break;

@@ -144,3 +141,2 @@

ret = date.getDate();
pad = true;
break;

@@ -150,3 +146,2 @@

ret = dateDayOfYear( date ) + 1;
pad = true;
break;

@@ -166,3 +161,2 @@

ret = dateDayOfWeek( date, properties.firstDay ) + 1;
pad = true;
break;

@@ -185,3 +179,2 @@ }

ret = ( date.getHours() % 12 ) || 12;
pad = true;
break;

@@ -191,3 +184,2 @@

ret = date.getHours();
pad = true;
break;

@@ -197,3 +189,2 @@

ret = date.getHours() % 12;
pad = true;
break;

@@ -203,3 +194,2 @@

ret = date.getHours() || 24;
pad = true;
break;

@@ -210,3 +200,2 @@

ret = date.getMinutes();
pad = true;
break;

@@ -217,3 +206,2 @@

ret = date.getSeconds();
pad = true;
break;

@@ -223,3 +211,2 @@

ret = Math.round( date.getMilliseconds() * Math.pow( 10, length - 3 ) );
pad = true;
break;

@@ -229,3 +216,2 @@

ret = Math.round( dateMillisecondsInDay( date ) * Math.pow( 10, length - 3 ) );
pad = true;
break;

@@ -243,3 +229,5 @@

date,
length < 4 ? "+H;-H" : properties.tzLongHourFormat
length < 4 ? "+H;-H" : properties.tzLongHourFormat,
timeSeparator,
formatNumber
);

@@ -263,5 +251,10 @@ ret = properties.gmtFormat.replace( /\{0\}/, ret );

ret = length === 1 ? "+HH;-HH" : ( length % 2 ? "+HH:mm;-HH:mm" : "+HHmm;-HHmm" );
ret = dateTimezoneHourFormat( date, ret );
ret = dateTimezoneHourFormat( date, ret, ":" );
break;
// timeSeparator
case ":":
ret = timeSeparator;
break;
// ' literals.

@@ -273,3 +266,4 @@ case "'":

}
return current;
ret = current;
break;

@@ -279,6 +273,6 @@ // Anything else is considered a literal, including [ ,:/.@#], chinese, japonese, and

default:
return current;
ret = current;
}
if ( pad ) {
ret = stringPad( ret, length );
if ( typeof ret === "number" ) {
ret = formatNumber[ length ]( ret );
}

@@ -285,0 +279,0 @@ return ret;

@@ -6,10 +6,7 @@ define([

"../util/date/set-date",
"../util/date/set-month"
"../util/date/set-month",
"../util/out-of-range"
], function( datePatternRe, dateStartOf, createErrorUnsupportedFeature, dateSetDate,
dateSetMonth ) {
dateSetMonth, outOfRange ) {
function outOfRange( value, low, high ) {
return value < low || value > high;
}
/**

@@ -70,3 +67,3 @@ * parse( value, tokens, properties )

case "y":
value = +token.lexeme;
value = token.value;
if ( length === 2 ) {

@@ -102,3 +99,3 @@ if ( outOfRange( value, 0, 99 ) ) {

if ( length <= 2 ) {
value = +token.lexeme;
value = token.value;
} else {

@@ -121,3 +118,3 @@ value = +token.value;

case "d":
value = +token.lexeme;
value = token.value;
if ( outOfRange( value, 1, 31 ) ) {

@@ -131,3 +128,3 @@ return false;

case "D":
value = +token.lexeme;
value = token.value;
if ( outOfRange( value, 1, 366 ) ) {

@@ -161,3 +158,3 @@ return false;

case "h": // 1-12
value = +token.lexeme;
value = token.value;
if ( outOfRange( value, 1, 12 ) ) {

@@ -172,3 +169,3 @@ return false;

case "K": // 0-11
value = +token.lexeme;
value = token.value;
if ( outOfRange( value, 0, 11 ) ) {

@@ -183,3 +180,3 @@ return false;

case "k": // 1-24
value = +token.lexeme;
value = token.value;
if ( outOfRange( value, 1, 24 ) ) {

@@ -194,3 +191,3 @@ return false;

case "H": // 0-23
value = +token.lexeme;
value = token.value;
if ( outOfRange( value, 0, 23 ) ) {

@@ -206,3 +203,3 @@ return false;

case "m":
value = +token.lexeme;
value = token.value;
if ( outOfRange( value, 0, 59 ) ) {

@@ -217,3 +214,3 @@ return false;

case "s":
value = +token.lexeme;
value = token.value;
if ( outOfRange( value, 0, 59 ) ) {

@@ -233,3 +230,3 @@ return false;

case "S":
value = Math.round( +token.lexeme * Math.pow( 10, 3 - length ) );
value = Math.round( token.value * Math.pow( 10, 3 - length ) );
date.setMilliseconds( value );

@@ -247,3 +244,2 @@ truncateAt.push( MILLISECONDS );

break;
}

@@ -250,0 +246,0 @@

@@ -6,3 +6,3 @@ define([

/**
* hourFormat( date, format )
* hourFormat( date, format, timeSeparator, formatNumber )
*

@@ -15,17 +15,35 @@ * Return date's timezone offset according to the format passed.

*/
return function( date, format ) {
var offset = date.getTimezoneOffset();
return function( date, format, timeSeparator, formatNumber ) {
var absOffset,
offset = date.getTimezoneOffset();
// Pick the correct sign side (+ or -).
format = format.split( ";" )[ offset > 0 ? 1 : 0 ];
absOffset = Math.abs( offset );
formatNumber = formatNumber || {
1: function( value ) {
return stringPad( value, 1 );
},
2: function( value ) {
return stringPad( value, 2 );
}
};
// Update hours offset.
format = format.replace( /HH?/, function( match ) {
return stringPad( Math.floor( Math.abs( offset ) / 60 ), match.length );
});
return format
// Update minutes offset and return.
return format.replace( /mm/, stringPad( Math.abs( offset ) % 60, 2 ) );
// Pick the correct sign side (+ or -).
.split( ";" )[ offset > 0 ? 1 : 0 ]
// Localize time separator
.replace( ":", timeSeparator )
// Update hours offset.
.replace( /HH?/, function( match ) {
return formatNumber[ match.length ]( Math.floor( absOffset / 60 ) );
})
// Update minutes offset and return.
.replace( /mm/, function() {
return formatNumber[ 2 ]( absOffset % 60 );
});
};
});
define([
"./pattern-re",
"../common/create-error/unsupported-feature"
], function( datePatternRe, createErrorUnsupportedFeature ) {
"../common/create-error/unsupported-feature",
"../number/symbol"
], function( datePatternRe, createErrorUnsupportedFeature, numberSymbol ) {

@@ -17,3 +18,4 @@ /**

var properties = {
pattern: pattern
pattern: pattern,
timeSeparator: numberSymbol( "timeSeparator", cldr )
},

@@ -20,0 +22,0 @@ widths = [ "abbreviated", "wide", "narrow" ];

define([
"./pattern-re",
"../util/regexp/escape"
], function( datePatternRe, regexpEscape ) {
"../util/regexp/escape",
"../util/regexp/n"
], function( datePatternRe, regexpEscape, regexpN ) {

@@ -39,2 +40,4 @@ /**

var valid,
parseNumber = properties.parseNumber,
timeSeparator = properties.timeSeparator,
tokens = [],

@@ -44,7 +47,10 @@ widths = [ "abbreviated", "wide", "narrow" ];

valid = properties.pattern.match( datePatternRe ).every(function( current ) {
var chr, length, tokenRe,
var chr, length, numeric, tokenRe,
token = {};
function hourFormatParse( tokenRe ) {
function hourFormatParse( tokenRe, parseNumber ) {
var aux = value.match( tokenRe );
parseNumber = parseNumber || function( value ) {
return +value;
};

@@ -56,9 +62,11 @@ if ( !aux ) {

// hourFormat containing H only, e.g., `+H;-H`
if ( aux.length < 4 ) {
token.value = ( aux[ 1 ] ? -aux[ 1 ] : +aux[ 2 ] ) * 60;
if ( aux.length < 8 ) {
token.value =
( aux[ 1 ] ? -parseNumber( aux[ 1 ] ) : parseNumber( aux[ 4 ] ) ) * 60;
// hourFormat containing H and m, e.g., `+HHmm;-HHmm`
} else {
token.value = ( aux[ 1 ] ? -aux[ 1 ] : +aux[ 3 ] ) * 60 +
( aux[ 1 ] ? -aux[ 2 ] : +aux[ 4 ] );
token.value =
( aux[ 1 ] ? -parseNumber( aux[ 1 ] ) : parseNumber( aux[ 7 ] ) ) * 60 +
( aux[ 1 ] ? -parseNumber( aux[ 4 ] ) : parseNumber( aux[ 10 ] ) );
}

@@ -77,3 +85,3 @@

// - "+H;-H" -> /GMT\+(\d\d?)|GMT-(\d\d?)/
function hourFormatRe( hourFormat, gmtFormat ) {
function hourFormatRe( hourFormat, gmtFormat, timeSeparator ) {
var re;

@@ -87,5 +95,13 @@

.replace( "+", "\\+" )
.replace( /HH|mm/g, "(\\d\\d)" )
.replace( /H|m/g, "(\\d\\d?)" );
// Unicode equivalent to (\\d\\d)
.replace( /HH|mm/g, "((" + regexpN.source + ")(" + regexpN.source + "))" )
// Unicode equivalent to (\\d\\d?)
.replace( /H|m/g, "((" + regexpN.source + ")(" + regexpN.source + ")?)" );
if ( timeSeparator ) {
re = re.replace( /:/g, timeSeparator );
}
re = re.split( ";" ).map(function( part ) {

@@ -100,3 +116,6 @@ return gmtFormat.replace( "{0}", part );

if ( length === 1 ) {
return tokenRe = /\d/;
// Unicode equivalent to /\d/
numeric = true;
return tokenRe = regexpN;
}

@@ -107,3 +126,6 @@ }

if ( length === 1 ) {
return tokenRe = /\d\d?/;
// Unicode equivalent to /\d\d?/
numeric = true;
return tokenRe = new RegExp( "(" + regexpN.source + ")(" + regexpN.source + ")?" );
}

@@ -114,3 +136,6 @@ }

if ( length === 2 ) {
return tokenRe = /\d\d/;
// Unicode equivalent to /\d\d/
numeric = true;
return tokenRe = new RegExp( "(" + regexpN.source + ")(" + regexpN.source + ")" );
}

@@ -170,9 +195,17 @@ }

case "Y":
numeric = true;
// number l=1:+, l=2:{2}, l=3:{3,}, l=4:{4,}, ...
if ( length === 1 ) {
tokenRe = /\d+/;
// Unicode equivalent to /\d+/.
tokenRe = new RegExp( "(" + regexpN.source + ")+" );
} else if ( length === 2 ) {
tokenRe = /\d\d/;
// Unicode equivalent to /\d\d/
tokenRe = new RegExp( "(" + regexpN.source + ")(" + regexpN.source + ")" );
} else {
tokenRe = new RegExp( "\\d{" + length + ",}" );
// Unicode equivalent to /\d{length,}/
tokenRe = new RegExp( "(" + regexpN.source + "){" + length + ",}" );
}

@@ -209,3 +242,6 @@ break;

if ( length <= 3 ) {
tokenRe = new RegExp( "\\d{" + length + ",3}" );
// Unicode equivalent to /\d{length,3}/
numeric = true;
tokenRe = new RegExp( "(" + regexpN.source + "){" + length + ",3}" );
}

@@ -276,3 +312,6 @@ break;

// number {l}.
tokenRe = new RegExp( "\\d{" + length + "}" );
// Unicode equivalent to /\d{length}/
numeric = true;
tokenRe = new RegExp( "(" + regexpN.source + "){" + length + "}" );
break;

@@ -282,3 +321,6 @@

// number {l+5}.
tokenRe = new RegExp( "\\d{" + ( length + 5 ) + "}" );
// Unicode equivalent to /\d{length+5}/
numeric = true;
tokenRe = new RegExp( "(" + regexpN.source + "){" + ( length + 5 ) + "}" );
break;

@@ -297,5 +339,6 @@

length < 4 ? "+H;-H" : properties[ "timeZoneNames/hourFormat" ],
properties[ "timeZoneNames/gmtFormat" ]
properties[ "timeZoneNames/gmtFormat" ],
timeSeparator
);
if ( !hourFormatParse( tokenRe ) ) {
if ( !hourFormatParse( tokenRe, parseNumber ) ) {
return null;

@@ -348,2 +391,5 @@ }

token.lexeme = lexeme;
if ( numeric ) {
token.value = parseNumber( lexeme );
}
return "";

@@ -350,0 +396,0 @@ });

define([
"./core",
"./common/create-error/unsupported-feature",
"./common/validate/cldr",

@@ -15,7 +16,10 @@ "./common/validate/default-locale",

"./number/pattern",
"./number/symbol",
"./util/string/pad",
"cldr/event"
], function( Globalize, validateCldr, validateDefaultLocale, validateParameterPresence,
validateParameterRange, validateParameterTypeNumber, validateParameterTypePlainObject,
validateParameterTypeString, numberFormat, numberFormatProperties, numberParse,
numberParseProperties, numberPattern ) {
], function( Globalize, createErrorUnsupportedFeature, validateCldr, validateDefaultLocale,
validateParameterPresence, validateParameterRange, validateParameterTypeNumber,
validateParameterTypePlainObject, validateParameterTypeString, numberFormat,
numberFormatProperties, numberParse, numberParseProperties, numberPattern, numberSymbol,
stringPad ) {

@@ -46,3 +50,5 @@ /**

if ( !options.pattern ) {
if ( options.pattern ) {
pattern = options.pattern;
} else {
pattern = numberPattern( options.style || "decimal", cldr );

@@ -108,3 +114,5 @@ }

if ( !options.pattern ) {
if ( options.pattern ) {
pattern = options.pattern;
} else {
pattern = numberPattern( options.style || "decimal", cldr );

@@ -158,4 +166,12 @@ }

/**
* Optimization to avoid duplicating some internal functions across modules.
*/
Globalize._createErrorUnsupportedFeature = createErrorUnsupportedFeature;
Globalize._numberSymbol = numberSymbol;
Globalize._stringPad = stringPad;
Globalize._validateParameterTypeString = validateParameterTypeString;
return Globalize;
});
define([
"globalize",
"json!cldr-data/main/en/numbers.json",
"json!cldr-data/main/en/ca-gregorian.json",
"json!cldr-data/supplemental/likelySubtags.json",
"json!cldr-data/supplemental/numberingSystems.json",
"json!cldr-data/supplemental/timeData.json",

@@ -9,3 +11,4 @@ "json!cldr-data/supplemental/weekData.json",

"globalize/date"
], function( Globalize, enCaGregorian, likelySubtags, timeData, weekData, util ) {
], function( Globalize, enNumbers, enCaGregorian, likelySubtags, numberingSystems, timeData,
weekData, util ) {

@@ -17,2 +20,4 @@ var date = new Date( 2010, 8, 15, 17, 35, 7, 369 );

enCaGregorian,
enNumbers,
numberingSystems,
timeData,

@@ -19,0 +24,0 @@ weekData

@@ -5,4 +5,7 @@ define([

"json!cldr-data/main/en/ca-gregorian.json",
"json!cldr-data/main/en/numbers.json",
"json!cldr-data/main/pt/ca-gregorian.json",
"json!cldr-data/main/pt/numbers.json",
"json!cldr-data/supplemental/likelySubtags.json",
"json!cldr-data/supplemental/numberingSystems.json",
"json!cldr-data/supplemental/timeData.json",

@@ -12,3 +15,4 @@ "json!cldr-data/supplemental/weekData.json",

"globalize/date"
], function( Globalize, startOf, enCaGregorian, ptCaGregorian, likelySubtags, timeData, weekData, util ) {
], function( Globalize, startOf, enCaGregorian, enNumbers, ptCaGregorian, ptNumbers, likelySubtags,
numberingSystems, timeData, weekData, util ) {

@@ -22,3 +26,6 @@ function assertParseDate( assert, input, options, output ) {

enCaGregorian,
enNumbers,
ptCaGregorian,
ptNumbers,
numberingSystems,
timeData,

@@ -25,0 +32,0 @@ weekData

define([
"globalize",
"json!cldr-data/main/ar/ca-gregorian.json",
"json!cldr-data/main/ar/numbers.json",
"json!cldr-data/main/ar/timeZoneNames.json",
"json!cldr-data/main/en/ca-gregorian.json",
"json!cldr-data/main/en/numbers.json",
"json!cldr-data/main/en/timeZoneNames.json",
"json!cldr-data/main/pt/ca-gregorian.json",
"json!cldr-data/main/pt/numbers.json",
"json!cldr-data/supplemental/likelySubtags.json",
"json!cldr-data/supplemental/numberingSystems.json",
"json!cldr-data/supplemental/timeData.json",

@@ -10,10 +17,20 @@ "json!cldr-data/supplemental/weekData.json",

"globalize/date"
], function( Globalize, enCaGregorian, ptCaGregorian, likelySubtags, timeData, weekData, util ) {
], function( Globalize, arCaGregorian, arNumbers, arTimeZoneNames, enCaGregorian, enNumbers,
enTimeZoneNames, ptCaGregorian, ptNumbers, likelySubtags, numberingSystems, timeData, weekData,
util ) {
var date = new Date( 2010, 8, 15, 17, 35, 7, 369 );
var ar,
date = new Date( 2010, 8, 15, 17, 35, 7, 369 );
function extraSetup() {
Globalize.load(
arCaGregorian,
arNumbers,
arTimeZoneNames,
enCaGregorian,
enNumbers,
enTimeZoneNames,
numberingSystems,
ptCaGregorian,
ptNumbers,
timeData,

@@ -63,2 +80,4 @@ weekData

ar = Globalize( "ar" );
assert.equal( Globalize.formatDate( date, { skeleton: "d" } ), "15" );

@@ -70,5 +89,7 @@ assert.equal( Globalize.formatDate( date, { skeleton: "Ed" } ), "15 Wed" );

assert.equal( Globalize.formatDate( date, { skeleton: "yQQQ" } ), "Q3 2010" );
assert.equal( ar.formatDate( date, { skeleton: "yQQQ" } ), "الربع الثالث ٢٠١٠" );
// Passed as string
assert.equal( Globalize.formatDate( date, "GyMMMEd" ), "Wed, Sep 15, 2010 AD" );
assert.equal( ar.formatDate( date, "GyMMMEd" ), "الأربعاء، ١٥ سبتمبر، ٢٠١٠ م" );

@@ -83,4 +104,9 @@ // Via instance .formatDate().

ar = Globalize( "ar" );
assert.equal( Globalize.formatDate( date, { time: "medium" } ), "5:35:07 PM" );
assert.equal( ar.formatDate( date, { time: "medium" } ), "٥،٣٥،٠٧ م" );
assert.equal( Globalize.formatDate( date, { time: "short" } ), "5:35 PM" );
assert.equal( ar.formatDate( date, { time: "short" } ), "٥،٣٥ م" );
});

@@ -87,0 +113,0 @@

define([
"globalize",
"src/date/start-of",
"json!cldr-data/main/ar/ca-gregorian.json",
"json!cldr-data/main/ar/numbers.json",
"json!cldr-data/main/ar/timeZoneNames.json",
"json!cldr-data/main/en/ca-gregorian.json",
"json!cldr-data/main/en/numbers.json",
"json!cldr-data/main/en/timeZoneNames.json",
"json!cldr-data/main/pt/ca-gregorian.json",
"json!cldr-data/main/pt/numbers.json",
"json!cldr-data/supplemental/likelySubtags.json",
"json!cldr-data/supplemental/numberingSystems.json",
"json!cldr-data/supplemental/timeData.json",

@@ -12,12 +18,19 @@ "json!cldr-data/supplemental/weekData.json",

"globalize/date"
], function( Globalize, startOf, enCaGregorian, enTimeZoneNames, ptCaGregorian, likelySubtags,
timeData, weekData, util ) {
], function( Globalize, startOf, arCaGregorian, arNumbers, arTimeZoneNames, enCaGregorian,
enNumbers, enTimeZoneNames, ptCaGregorian, ptNumbers, likelySubtags, numberingSystems, timeData,
weekData, util ) {
var date;
var ar, date;
function extraSetup() {
Globalize.load(
arCaGregorian,
arNumbers,
arTimeZoneNames,
enCaGregorian,
enNumbers,
enTimeZoneNames,
numberingSystems,
ptCaGregorian,
ptNumbers,
timeData,

@@ -36,4 +49,4 @@ weekData

function assertParseDate( assert, input, options, output ) {
assert.deepEqual( Globalize.parseDate( input, options ), output, JSON.stringify( options ) );
function assertParseDate( assert, input, options, output, globalize ) {
assert.deepEqual( ( globalize || Globalize ).parseDate( input, options ), output, JSON.stringify( options ) );
}

@@ -68,2 +81,4 @@

ar = Globalize( "ar" );
date = new Date();

@@ -86,2 +101,3 @@ date.setDate( 15 );

assertParseDate( assert, "9/15/2010", { skeleton: "yMd" }, date );
assertParseDate( assert, "الأربعاء، ١٥ سبتمبر، ٢٠١٠ م", "GyMMMEd", date, ar );

@@ -91,2 +107,3 @@ date = new Date( 2010, 0 );

assertParseDate( assert, "Q3 2010", { skeleton: "yQQQ" }, date );
assertParseDate( assert, "الربع الثالث ٢٠١٠", "yQQQ", date, ar );

@@ -100,2 +117,4 @@ // Via instance globalize.parseDate().

ar = Globalize( "ar" );
date = new Date();

@@ -107,4 +126,6 @@ date.setHours( 17 );

assertParseDate( assert, "5:35:07 PM", { time: "medium" }, date );
assertParseDate( assert, "٥،٣٥،٠٧ م", { time: "medium" }, date, ar );
date = startOf( date, "minute" );
assertParseDate( assert, "5:35 PM", { time: "short" }, date );
assertParseDate( assert, "٥،٣٥ م", { time: "short" }, date, ar );
});

@@ -146,7 +167,10 @@

ar = Globalize( "ar" );
date = new Date();
date = startOf( date, "minute" );
assert.deepEqual( Globalize.parseDate( Globalize.formatDate( date, { datetime: "full" } ), { datetime: "full" } ), date );
assert.deepEqual( ar.parseDate( ar.formatDate( date, { datetime: "full" } ), { datetime: "full" } ), date );
});
});

@@ -5,2 +5,3 @@ define([

"src/date/format-properties",
"src/util/string/pad",
"json!cldr-data/main/en/ca-gregorian.json",

@@ -12,4 +13,4 @@ "json!cldr-data/main/en/timeZoneNames.json",

"cldr/supplemental"
], function( Cldr, format, properties, enCaGregorian, timeZoneNames, likelySubtags, timeData,
weekData ) {
], function( Cldr, format, formatProperties, stringPad, enCaGregorian, timeZoneNames, likelySubtags,
timeData, weekData ) {

@@ -28,2 +29,20 @@ var cldr,

function simpleFormat( pad ) {
return function( value ) {
return stringPad( value, pad );
};
}
function properties( pattern, cldr ) {
var pad,
aux = formatProperties( pattern, cldr );
// Create simple number formatters for this test purposes.
for ( pad in aux.formatNumber ) {
aux.formatNumber[ pad ] = simpleFormat( pad );
}
return aux;
}
FakeDate.prototype.getTimezoneOffset = function() {

@@ -30,0 +49,0 @@ return this.timezoneOffset * -60;

@@ -9,2 +9,3 @@ define([

"json!cldr-data/main/en/ca-gregorian.json",
"json!cldr-data/main/en/numbers.json",
"json!cldr-data/supplemental/likelySubtags.json",

@@ -14,4 +15,4 @@ "json!cldr-data/supplemental/timeData.json",

"cldr/supplemental"
], function( Cldr, parse, parseProperties, startOf, tokenizer, tokenizerProperties, enCaGregorian,
likelySubtags, timeData, weekData ) {
], function( Cldr, parse, parseProperties, startOf, tokenizer, numberTokenizerProperties,
enCaGregorian, enNumbers, likelySubtags, timeData, weekData ) {

@@ -21,3 +22,8 @@ var cldr, date1, date2, midnight;

function assertParse( assert, stringDate, pattern, cldr, date ) {
var tokens = tokenizer( stringDate, tokenizerProperties( pattern, cldr ) );
var tokenizerProperties, tokens;
tokenizerProperties = numberTokenizerProperties( pattern, cldr );
tokenizerProperties.parseNumber = simpleParseNumber;
tokens = tokenizer( stringDate, tokenizerProperties );
assert.deepEqual( parse( stringDate, tokens, parseProperties( cldr ) ), date );

@@ -27,8 +33,12 @@ }

function assertParseTimezone( assert, stringDate, pattern, cldr, timezoneOffset ) {
var parsedTimezoneOffset, parsedDate, tokens,
var parsedTimezoneOffset, parsedDate, tokenizerProperties, tokens,
testPattern = "HH:mm " + pattern,
testStringDate = "00:00 " + stringDate;
tokens = tokenizer( testStringDate, tokenizerProperties( testPattern, cldr ) );
tokenizerProperties = numberTokenizerProperties( testPattern, cldr );
tokenizerProperties.parseNumber = simpleParseNumber;
tokens = tokenizer( testStringDate, tokenizerProperties );
parsedDate = parse( testStringDate, tokens, parseProperties( cldr ) );
parsedTimezoneOffset = ( parsedDate - midnight ) / 1000 / 60 + midnight.getTimezoneOffset();
assert.equal( parsedTimezoneOffset, timezoneOffset, "stringDate `" + stringDate +

@@ -38,4 +48,10 @@ "` pattern `" + pattern + "`" );

// Simple number parser for this test purposes.
function simpleParseNumber( value ) {
return +value;
}
Cldr.load(
enCaGregorian,
enNumbers,
likelySubtags,

@@ -42,0 +58,0 @@ timeData,

@@ -11,2 +11,6 @@ define([

function foo() {
return "foo";
}
FakeDate.prototype.getTimezoneOffset = function() {

@@ -24,22 +28,25 @@ return this.timezoneOffset;

QUnit.test( "should format +H;-H", function( assert ) {
assert.equal( hourFormat( BRT, "+H;-H" ), "-3", "" );
assert.equal( hourFormat( UTC, "+H;-H" ), "+0", "" );
assert.equal( hourFormat( IST, "+H;-H" ), "+5", "" );
assert.equal( hourFormat( HST, "+H;-H" ), "+10", "" );
assert.equal( hourFormat( BRT, "+H;-H", ":" ), "-3", "" );
assert.equal( hourFormat( UTC, "+H;-H", ":" ), "+0", "" );
assert.equal( hourFormat( IST, "+H;-H", ":" ), "+5", "" );
assert.equal( hourFormat( HST, "+H;-H", ":" ), "+10", "" );
assert.equal( hourFormat( IST, "+H;-H", "،", { 1: foo } ), "+foo", "" );
});
QUnit.test( "should format +HHmm;-HHmm", function( assert ) {
assert.equal( hourFormat( BRT, "+HHmm;-HHmm" ), "-0300", "" );
assert.equal( hourFormat( UTC, "+HHmm;-HHmm" ), "+0000", "" );
assert.equal( hourFormat( IST, "+HHmm;-HHmm" ), "+0530", "" );
assert.equal( hourFormat( HST, "+HHmm;-HHmm" ), "+1000", "" );
assert.equal( hourFormat( BRT, "+HHmm;-HHmm", ":" ), "-0300", "" );
assert.equal( hourFormat( UTC, "+HHmm;-HHmm", ":" ), "+0000", "" );
assert.equal( hourFormat( IST, "+HHmm;-HHmm", ":" ), "+0530", "" );
assert.equal( hourFormat( HST, "+HHmm;-HHmm", ":" ), "+1000", "" );
assert.equal( hourFormat( IST, "+HHmm;-HHmm", "،", { 2: foo } ), "+foofoo", "" );
});
QUnit.test( "should format +HH:mm;-HH:mm", function( assert ) {
assert.equal( hourFormat( BRT, "+HH:mm;-HH:mm" ), "-03:00", "" );
assert.equal( hourFormat( UTC, "+HH:mm;-HH:mm" ), "+00:00", "" );
assert.equal( hourFormat( IST, "+HH:mm;-HH:mm" ), "+05:30", "" );
assert.equal( hourFormat( HST, "+HH:mm;-HH:mm" ), "+10:00", "" );
assert.equal( hourFormat( BRT, "+HH:mm;-HH:mm", ":" ), "-03:00", "" );
assert.equal( hourFormat( UTC, "+HH:mm;-HH:mm", ":" ), "+00:00", "" );
assert.equal( hourFormat( IST, "+HH:mm;-HH:mm", ":" ), "+05:30", "" );
assert.equal( hourFormat( HST, "+HH:mm;-HH:mm", ":" ), "+10:00", "" );
assert.equal( hourFormat( IST, "+HH:mm;-HH:mm", "،", { 2: foo } ), "+foo،foo", "" );
});
});

@@ -6,11 +6,25 @@ define([

"json!cldr-data/main/en/ca-gregorian.json",
"json!cldr-data/main/en/numbers.json",
"json!cldr-data/supplemental/likelySubtags.json",
"json!cldr-data/supplemental/timeData.json",
"json!cldr-data/supplemental/weekData.json"
], function( Cldr, tokenizer, properties, enCaGregorian, likelySubtags, timeData, weekData ) {
], function( Cldr, tokenizer, tokenizerProperties, enCaGregorian, enNumbers, likelySubtags,
timeData, weekData ) {
var cldr;
function properties( pattern, cldr ) {
var aux = tokenizerProperties( pattern, cldr );
// Simple number parser for this test purposes.
aux.parseNumber = function( value ) {
return +value;
};
return aux;
}
Cldr.load(
enCaGregorian,
enNumbers,
likelySubtags,

@@ -70,3 +84,4 @@ timeData,

type: "y",
lexeme: "1982"
lexeme: "1982",
value: 1982
}] );

@@ -78,3 +93,4 @@ });

type: "yy",
lexeme: "82"
lexeme: "82",
value: 82
}] );

@@ -86,7 +102,9 @@ });

type: "yyy",
lexeme: "1982"
lexeme: "1982",
value: 1982
}] );
assert.deepEqual( tokenizer( "01982", properties( "yyyyy", cldr ) ), [{
type: "yyyyy",
lexeme: "01982"
lexeme: "01982",
value: 1982
}] );

@@ -98,3 +116,4 @@ });

type: "Y",
lexeme: "1982"
lexeme: "1982",
value: 1982
}] );

@@ -106,3 +125,4 @@ });

type: "YY",
lexeme: "82"
lexeme: "82",
value: 82
}] );

@@ -114,7 +134,9 @@ });

type: "YYY",
lexeme: "1982"
lexeme: "1982",
value: 1982
}] );
assert.deepEqual( tokenizer( "01982", properties( "YYYYY", cldr ) ), [{
type: "YYYYY",
lexeme: "01982"
lexeme: "01982",
value: 1982
}] );

@@ -130,7 +152,9 @@ });

type: "Q",
lexeme: "1"
lexeme: "1",
value: 1
}] );
assert.deepEqual( tokenizer( "1", properties( "q", cldr ) ), [{
type: "q",
lexeme: "1"
lexeme: "1",
value: 1
}] );

@@ -142,7 +166,9 @@ });

type: "QQ",
lexeme: "01"
lexeme: "01",
value: 1
}] );
assert.deepEqual( tokenizer( "01", properties( "qq", cldr ) ), [{
type: "qq",
lexeme: "01"
lexeme: "01",
value: 1
}] );

@@ -184,7 +210,9 @@ });

type: "M",
lexeme: "1"
lexeme: "1",
value: 1
}] );
assert.deepEqual( tokenizer( "1", properties( "L", cldr ) ), [{
type: "L",
lexeme: "1"
lexeme: "1",
value: 1
}] );

@@ -196,7 +224,9 @@ });

type: "MM",
lexeme: "01"
lexeme: "01",
value: 1
}] );
assert.deepEqual( tokenizer( "01", properties( "LL", cldr ) ), [{
type: "LL",
lexeme: "01"
lexeme: "01",
value: 1
}] );

@@ -251,3 +281,4 @@ });

type: "w",
lexeme: "1"
lexeme: "1",
value: 1
}] );

@@ -259,3 +290,4 @@ });

type: "ww",
lexeme: "01"
lexeme: "01",
value: 1
}] );

@@ -267,3 +299,4 @@ });

type: "W",
lexeme: "1"
lexeme: "1",
value: 1
}] );

@@ -279,3 +312,4 @@ });

type: "d",
lexeme: "2"
lexeme: "2",
value: 2
}] );

@@ -287,3 +321,4 @@ });

type: "dd",
lexeme: "02"
lexeme: "02",
value: 2
}] );

@@ -295,3 +330,4 @@ });

type: "D",
lexeme: "2"
lexeme: "2",
value: 2
}] );

@@ -303,7 +339,9 @@ });

type: "DD",
lexeme: "02"
lexeme: "02",
value: 2
}] );
assert.deepEqual( tokenizer( "002", properties( "DDD", cldr ) ), [{
type: "DDD",
lexeme: "002"
lexeme: "002",
value: 2
}] );

@@ -315,3 +353,4 @@ });

type: "F",
lexeme: "1"
lexeme: "1",
value: 1
}] );

@@ -327,7 +366,9 @@ });

type: "e",
lexeme: "7"
lexeme: "7",
value: 7
}] );
assert.deepEqual( tokenizer( "7", properties( "c", cldr ) ), [{
type: "c",
lexeme: "7"
lexeme: "7",
value: 7
}] );

@@ -339,7 +380,9 @@ });

type: "ee",
lexeme: "07"
lexeme: "07",
value: 7
}] );
assert.deepEqual( tokenizer( "07", properties( "cc", cldr ) ), [{
type: "cc",
lexeme: "07"
lexeme: "07",
value: 7
}] );

@@ -450,3 +493,4 @@ });

type: "h",
lexeme: "9"
lexeme: "9",
value: 9
}] );

@@ -458,3 +502,4 @@ });

type: "hh",
lexeme: "09"
lexeme: "09",
value: 9
}] );

@@ -466,3 +511,4 @@ });

type: "H",
lexeme: "9"
lexeme: "9",
value: 9
}] );

@@ -474,3 +520,4 @@ });

type: "HH",
lexeme: "09"
lexeme: "09",
value: 9
}] );

@@ -482,3 +529,4 @@ });

type: "K",
lexeme: "9"
lexeme: "9",
value: 9
}] );

@@ -490,3 +538,4 @@ });

type: "KK",
lexeme: "09"
lexeme: "09",
value: 9
}] );

@@ -498,3 +547,4 @@ });

type: "k",
lexeme: "9"
lexeme: "9",
value: 9
}] );

@@ -506,3 +556,4 @@ });

type: "kk",
lexeme: "09"
lexeme: "09",
value: 9
}] );

@@ -514,3 +565,4 @@ });

type: "j",
lexeme: "9"
lexeme: "9",
value: 9
}] );

@@ -522,3 +574,4 @@ });

type: "jj",
lexeme: "09"
lexeme: "09",
value: 9
}] );

@@ -534,3 +587,4 @@ });

type: "m",
lexeme: "5"
lexeme: "5",
value: 5
}] );

@@ -542,3 +596,4 @@ });

type: "mm",
lexeme: "05"
lexeme: "05",
value: 5
}] );

@@ -554,3 +609,4 @@ });

type: "s",
lexeme: "59"
lexeme: "59",
value: 59
}] );

@@ -562,3 +618,4 @@ });

type: "ss",
lexeme: "59"
lexeme: "59",
value: 59
}] );

@@ -570,19 +627,24 @@ });

type: "S",
lexeme: "4"
lexeme: "4",
value: 4
}] );
assert.deepEqual( tokenizer( "37", properties( "SS", cldr ) ), [{
type: "SS",
lexeme: "37"
lexeme: "37",
value: 37
}] );
assert.deepEqual( tokenizer( "369", properties( "SSS", cldr ) ), [{
type: "SSS",
lexeme: "369"
lexeme: "369",
value: 369
}] );
assert.deepEqual( tokenizer( "3690", properties( "SSSS", cldr ) ), [{
type: "SSSS",
lexeme: "3690"
lexeme: "3690",
value: 3690
}] );
assert.deepEqual( tokenizer( "36900", properties( "SSSSS", cldr ) ), [{
type: "SSSSS",
lexeme: "36900"
lexeme: "36900",
value: 36900
}] );

@@ -594,19 +656,24 @@ });

type: "A",
lexeme: "633074"
lexeme: "633074",
value: 633074
}] );
assert.deepEqual( tokenizer( "6330737", properties( "AA", cldr ) ), [{
type: "AA",
lexeme: "6330737"
lexeme: "6330737",
value: 6330737
}] );
assert.deepEqual( tokenizer( "63307369", properties( "AAA", cldr ) ), [{
type: "AAA",
lexeme: "63307369"
lexeme: "63307369",
value: 63307369
}] );
assert.deepEqual( tokenizer( "633073690", properties( "AAAA", cldr ) ), [{
type: "AAAA",
lexeme: "633073690"
lexeme: "633073690",
value: 633073690
}] );
assert.deepEqual( tokenizer( "6330736900", properties( "AAAAA", cldr ) ), [{
type: "AAAAA",
lexeme: "6330736900"
lexeme: "6330736900",
value: 6330736900
}] );

@@ -613,0 +680,0 @@ });

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc