Skip redirects in util functions

This commit is contained in:
Amir E. Aharoni
2012-12-16 22:21:45 +02:00
parent 8f75d69997
commit 13e249907a
2 changed files with 48 additions and 3 deletions

View File

@@ -107,6 +107,10 @@
var autonymsByCode = {}; var autonymsByCode = {};
for ( var language in $.uls.data.languages ) { for ( var language in $.uls.data.languages ) {
if ( $.uls.data.isRedirect( language ) ) {
continue;
}
autonymsByCode[language] = $.uls.data.getAutonym( language ); autonymsByCode[language] = $.uls.data.getAutonym( language );
} }
@@ -203,6 +207,10 @@
var languagesInRegions = []; var languagesInRegions = [];
for ( var language in $.uls.data.languages ) { for ( var language in $.uls.data.languages ) {
if ( $.uls.data.isRedirect( language ) ) {
continue;
}
for ( var i = 0; i < regions.length; i++ ) { for ( var i = 0; i < regions.length; i++ ) {
if ( $.inArray( regions[i], $.uls.data.getRegions( language ) ) !== -1 ) { if ( $.inArray( regions[i], $.uls.data.getRegions( language ) ) !== -1 ) {
languagesInRegions.push( language ); languagesInRegions.push( language );
@@ -243,6 +251,10 @@
var languagesByScriptInRegion = {}; var languagesByScriptInRegion = {};
for ( var language in $.uls.data.languages ) { for ( var language in $.uls.data.languages ) {
if ( $.uls.data.isRedirect( language ) ) {
continue;
}
if ( $.inArray( region, $.uls.data.getRegions( language ) ) !== -1 ) { if ( $.inArray( region, $.uls.data.getRegions( language ) ) !== -1 ) {
var script = $.uls.data.getScript( language ); var script = $.uls.data.getScript( language );
if ( languagesByScriptInRegion[script] === undefined ) { if ( languagesByScriptInRegion[script] === undefined ) {
@@ -331,12 +343,18 @@
var languagesByScriptGroupInRegions = {}; var languagesByScriptGroupInRegions = {};
for ( var language in $.uls.data.languages ) { for ( var language in $.uls.data.languages ) {
if ( $.uls.data.isRedirect( language ) ) {
continue;
}
for ( var i = 0; i < regions.length; i++ ) { for ( var i = 0; i < regions.length; i++ ) {
if ( $.inArray( regions[i], $.uls.data.getRegions( language ) ) !== -1 ) { if ( $.inArray( regions[i], $.uls.data.getRegions( language ) ) !== -1 ) {
var scriptGroup = $.uls.data.getScriptGroupOfLanguage( language ); var scriptGroup = $.uls.data.getScriptGroupOfLanguage( language );
if ( languagesByScriptGroupInRegions[scriptGroup] === undefined ) { if ( languagesByScriptGroupInRegions[scriptGroup] === undefined ) {
languagesByScriptGroupInRegions[scriptGroup] = []; languagesByScriptGroupInRegions[scriptGroup] = [];
} }
languagesByScriptGroupInRegions[scriptGroup].push( language ); languagesByScriptGroupInRegions[scriptGroup].push( language );
break; break;
} }
@@ -363,13 +381,19 @@
for ( region in $.uls.data.regiongroups ) { for ( region in $.uls.data.regiongroups ) {
regionGroup = $.uls.data.regiongroups[region]; regionGroup = $.uls.data.regiongroups[region];
if ( allLanguagesByRegionAndScript[regionGroup] === undefined ) { if ( allLanguagesByRegionAndScript[regionGroup] === undefined ) {
allLanguagesByRegionAndScript[regionGroup] = {}; allLanguagesByRegionAndScript[regionGroup] = {};
} }
allLanguagesByRegionAndScript[regionGroup][region] = {}; allLanguagesByRegionAndScript[regionGroup][region] = {};
} }
for ( var language in $.uls.data.languages ) { for ( var language in $.uls.data.languages ) {
if ( $.uls.data.isRedirect( language ) ) {
continue;
}
var script = $.uls.data.getScript( language ); var script = $.uls.data.getScript( language );
var scriptGroup = $.uls.data.getGroupOfScript( script ); var scriptGroup = $.uls.data.getGroupOfScript( script );
var regions = $.uls.data.getRegions( language ); var regions = $.uls.data.getRegions( language );

View File

@@ -54,10 +54,13 @@
assert.ok( $.fn.uls, "$.fn.uls is defined" ); assert.ok( $.fn.uls, "$.fn.uls is defined" );
} ); } );
test( "-- $.uls.data testing", 29, function ( assert ) { test( "-- $.uls.data testing", 39, function ( assert ) {
assert.strictEqual( $.uls.data.isRedirect( 'sr-ec' ), 'sr-cyrl', "'sr-ec' is a redirect to 'sr-cyrl'" ); assert.strictEqual( $.uls.data.isRedirect( 'sr-ec' ), 'sr-cyrl', "'sr-ec' is a redirect to 'sr-cyrl'" );
assert.strictEqual( $.uls.data.getAutonyms()['he'], 'עברית', 'Correct autonym is returned for Hebrew using getAutonyms().' ); var autonyms = $.uls.data.getAutonyms();
assert.strictEqual( autonyms['he'], 'עברית', 'Correct autonym is returned for Hebrew using getAutonyms().' );
assert.strictEqual( autonyms['pa'], undefined, "Language 'pa' is not listed in autonyms, because it's a redirect" );
assert.strictEqual( autonyms['pa-guru'], 'ਪੰਜਾਬੀ', "Language 'pa-guru' has the correct autonym" );
// This test assumes that we don't want any scripts to be in the 'Other' // This test assumes that we don't want any scripts to be in the 'Other'
// group. Actually, this may become wrong some day. // group. Actually, this may become wrong some day.
@@ -85,6 +88,13 @@
assert.deepEqual( allLanguagesByRegionAndScript['4']['AS']['SouthEastAsian']['Bugi'], [ assert.deepEqual( allLanguagesByRegionAndScript['4']['AS']['SouthEastAsian']['Bugi'], [
'bug' 'bug'
], 'All languages in the Buginese script in Asia were selected' ); ], 'All languages in the Buginese script in Asia were selected' );
assert.deepEqual( allLanguagesByRegionAndScript['4']['AS']['SouthAsian']['Guru'], [
'pa-guru'
], 'Only language pa-guru appears as a language in script Guru in SouthAsian languages in Asia' );
var languagesInEU = $.uls.data.getLanguagesInRegion( 'EU' );
assert.strictEqual( $.inArray( 'sr-ec', languagesInEU ), -1, "Language 'sr-ec' doesn't appear in languages of region EU, because it's a redirect" );
assert.ok( $.inArray( 'sr-cyrl', languagesInEU ) > -1, "Language 'sr-cyrl' appears in languages of region EU, because it's not a redirect" );
assert.deepEqual( $.uls.data.getLanguagesInRegion( "PA" ), assert.deepEqual( $.uls.data.getLanguagesInRegion( "PA" ),
[ [
@@ -132,12 +142,23 @@
"cr", "cr-cans", "ike-cans", "iu" "cr", "cr-cans", "ike-cans", "iu"
], "correct languages in Cans in AM selected" ); ], "correct languages in Cans in AM selected" );
assert.strictEqual( $.uls.data.getAutonym( 'pa' ), 'ਪੰਜਾਬੀ', 'Correct autonym of the Punjabi language was selected' ); var languagesByScriptInEU = $.uls.data.getLanguagesByScriptInRegion( "EU" );
assert.strictEqual( $.inArray( 'sr-el', languagesByScriptInEU['Latn'] ), -1,
"Language 'sr-el' doesn't appear as a Latin-script language in EU, because it's a redirect" );
assert.ok( $.inArray( 'sr-latn', languagesByScriptInEU['Latn'] ) > -1,
"Language 'sr-latn' appears as a Latin-script language in EU, because it's not a redirect" );
assert.strictEqual( $.uls.data.getAutonym( 'pa' ), 'ਪੰਜਾਬੀ', 'Correct autonym of the Punjabi language was selected using code pa.' );
assert.strictEqual( $.uls.data.getAutonym( 'pa-guru' ), 'ਪੰਜਾਬੀ', 'Correct autonym of the Punjabi language was selected using code pa.' );
var languagesByScriptGroupInEMEA = $.uls.data.getLanguagesByScriptGroupInRegions( $.uls.data.getRegionsInGroup( 3 ) ); var languagesByScriptGroupInEMEA = $.uls.data.getLanguagesByScriptGroupInRegions( $.uls.data.getRegionsInGroup( 3 ) );
assert.deepEqual( languagesByScriptGroupInEMEA['WestCaucasian'], [ assert.deepEqual( languagesByScriptGroupInEMEA['WestCaucasian'], [
'hy', 'ka', 'xmf' 'hy', 'ka', 'xmf'
], 'Correct languages in WestCaucasian script group in EMEA selected' ); ], 'Correct languages in WestCaucasian script group in EMEA selected' );
assert.strictEqual( $.inArray( 'sr-ec', languagesByScriptGroupInEMEA['Cyrillic'] ), -1,
"Language 'sr-ec' doesn't appear as a Cyrillic-scriptgroup language in EMEA, because it's a redirect" );
assert.ok( $.inArray( 'sr-cyrl', languagesByScriptGroupInEMEA['Cyrillic'] ) > -1,
"Language 'sr-cyrl' appears as a Cyrillic-scriptgroup language in EMEA, because it's not a redirect" );
var allLanguagesByScriptGroup = $.uls.data.getAllLanguagesByScriptGroup(); var allLanguagesByScriptGroup = $.uls.data.getAllLanguagesByScriptGroup();
assert.deepEqual( allLanguagesByScriptGroup['Greek'], [ assert.deepEqual( allLanguagesByScriptGroup['Greek'], [