From bdb1ef3b478538d2286da986340fa326c14239fa Mon Sep 17 00:00:00 2001 From: "Amir E. Aharoni" Date: Sun, 16 Dec 2012 19:09:08 +0200 Subject: [PATCH] Add isRedirect (from an old Gerrit commit) --- src/jquery.uls.data.utils.js | 28 ++++++++++++++++++++++++++++ test/jquery.uls.test.js | 6 +++--- 2 files changed, 31 insertions(+), 3 deletions(-) diff --git a/src/jquery.uls.data.utils.js b/src/jquery.uls.data.utils.js index 0f290fe..b09fb4d 100644 --- a/src/jquery.uls.data.utils.js +++ b/src/jquery.uls.data.utils.js @@ -29,12 +29,28 @@ } } + /** + * Is this language a redirect to another language? + * @param string language code + * @return Target language code if it's a redirect or false if it's not + */ + $.uls.data.isRedirect = function( language ) { + return ( $.uls.data.languages[language] !== undefined && + $.uls.data.languages[language].length === 1 ) ? $.uls.data.languages[language][0] : false; + } + /** * Returns the script of the language. * @param string language code * @return string */ $.uls.data.getScript = function( language ) { + var target = $.uls.data.isRedirect( language ); + + if ( target ) { + return $.uls.data.getScript( target ); + } + return $.uls.data.languages[language][0]; }; @@ -49,6 +65,12 @@ * @return array|string 'UNKNOWN' */ $.uls.data.getRegions = function( language ) { + var target = $.uls.data.isRedirect( language ); + + if ( target ) { + return $.uls.data.getRegions( target ); + } + return ( $.uls.data.languages[language] && $.uls.data.languages[language][1] ) || 'UNKNOWN'; }; @@ -63,6 +85,12 @@ * @return string */ $.uls.data.getAutonym = function( language ) { + var target = $.uls.data.isRedirect( language ); + + if ( target ) { + return $.uls.data.getAutonym( target ); + } + return ( $.uls.data.languages[language] && $.uls.data.languages[language][2] ) || language; }; diff --git a/test/jquery.uls.test.js b/test/jquery.uls.test.js index 55eb9c4..6ca5581 100644 --- a/test/jquery.uls.test.js +++ b/test/jquery.uls.test.js @@ -94,8 +94,8 @@ "languages of region PA are selected correctly" ); assert.deepEqual( $.uls.data.getLanguagesInRegions( ["AM", "WW"] ), [ - "akz", "arn", "aro", "ase", "avk", "ay", "cho", "chr", "chy", "cr-cans", "cr-latn", - "cr", "en-ca", "en", "eo", "es-419", "es-formal", "es", "esu", "fr", "gcf", "gn", + "akz", "arn", "aro", "ase", "avk", "ay", "cho", "chr", "chy", "cr", "cr-cans", "cr-latn", + "en-ca", "en", "eo", "es-419", "es-formal", "es", "esu", "fr", "gcf", "gn", "guc", "haw", "ht", "ia", "ie", "ik", "ike-cans", "ike-latn", "io", "iu", "jam", "jbo", "kgp", "kl", "lad", "lfn", "mfe", "mic", "mus", "nah", "nl-informal", "nl", "nov", "nv", "pap", "pdc", "pdt", "ppl", "pt-br", "pt", "qu", "qug", "rap", "sei", @@ -124,7 +124,7 @@ var languagesByScriptInAM = $.uls.data.getLanguagesByScriptInRegion( "AM" ); assert.deepEqual( languagesByScriptInAM['Cans'], [ - "cr-cans", "cr", "ike-cans", "iu" + "cr", "cr-cans", "ike-cans", "iu" ], "correct languages in Cans in AM selected" ); assert.strictEqual( $.uls.data.getAutonym( 'pa' ), 'ਪੰਜਾਬੀ', 'Correct autonym of the Punjabi language was selected' );