Remove Object support from getLanguagesByScriptGroup

This commit is contained in:
Amire80
2018-05-22 15:42:15 +03:00
committed by Niklas Laxström
parent 30ee731727
commit 16d6409be1
2 changed files with 13 additions and 31 deletions

View File

@@ -141,19 +141,15 @@ function getScriptGroupOfLanguage( language ) {
/** /**
* Get the given list of languages grouped by script. * Get the given list of languages grouped by script.
* @param {string[]|Object} languages Array of language codes or associative array of autonyms indexed by language code * @param {string[]} languages Array of language codes to group
* @return {Object} Associative array of languages indexed by script groups * @return {string[]} Array of language codes
*/ */
function getLanguagesByScriptGroup( languages ) { function getLanguagesByScriptGroup( languages ) {
var languagesByScriptGroup = {}, var languagesByScriptGroup = {},
languagesList, language, languageIndex, resolvedRedirect, langScriptGroup; languages, language, languageIndex, resolvedRedirect, langScriptGroup;
languagesList = Array.isArray( languages ) for ( languageIndex = 0; languageIndex < languages.length; languageIndex++ ) {
? languages language = languages[ languageIndex ];
: Object.keys( languages );
for ( languageIndex = 0; languageIndex < languagesList.length; languageIndex++ ) {
language = languagesList[ languageIndex ];
resolvedRedirect = isRedirect( language ) || language; resolvedRedirect = isRedirect( language ) || language;
langScriptGroup = getScriptGroupOfLanguage( resolvedRedirect ); langScriptGroup = getScriptGroupOfLanguage( resolvedRedirect );
if ( !languagesByScriptGroup[ langScriptGroup ] ) { if ( !languagesByScriptGroup[ langScriptGroup ] ) {
@@ -202,11 +198,11 @@ function getLanguagesByScriptGroupInRegion( region ) {
} }
/** /**
* Get the given list of languages grouped by script. * Return the list of languages sorted by script groups.
* @param {string[], Object} languages Array of language codes or associative array of autonyms indexed by language code * @param {string[]} languages Array of language codes to sort
* @return {string[]} Array of language codes * @return {string[]} Array of language codes
*/ */
function sortByScriptGroupAndAutonym( languages ) { function sortByScriptGroup( languages ) {
var groupedLanguages, scriptGroups, i, var groupedLanguages, scriptGroups, i,
sortedByAutonym = [], sortedByAutonym = [],
allLanguages = []; allLanguages = [];
@@ -296,6 +292,6 @@ module.exports = {
isKnown, isKnown,
isRedirect, isRedirect,
isRtl, isRtl,
sortByScriptGroupAndAutonym, sortByScriptGroup,
sortByAutonym sortByAutonym
}; };

View File

@@ -114,25 +114,11 @@ describe( 'languagedata', function () {
], 'Languages are correctly sorted by autonym' ); ], 'Languages are correctly sorted by autonym' );
} ); } );
it( 'regions and groups', function () { it( 'regions and groups', function () {
var languagesToGroup, groupedLanguages, languagesAM; var languagesAM;
// 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.
assert.deepEqual( orphanScripts(), [], 'All scripts belong to script groups.' ); assert.deepEqual( orphanScripts(), [], 'All scripts belong to script groups.' );
languagesToGroup = {
en: 'English',
'fiu-vro': 'Võro', // Alias before target
ru: 'русский',
sr: 'српски', // Alias before target
'sr-cyrl': 'српски', // Target before alias
'sr-latn': 'srpski', // Target before alias
'sr-el': 'srpski', // Alias after target
vro: 'Võro' // Target after alias
};
groupedLanguages = {
Latin: [ 'en', 'fiu-vro', 'sr-latn', 'sr-el', 'vro' ],
Cyrillic: [ 'ru', 'sr', 'sr-cyrl' ]
};
assert.deepEqual( languageData.getLanguagesByScriptGroup( languagesToGroup ), groupedLanguages, 'A custom list of languages is grouped correctly using getLanguagesByScriptGroup.' );
assert.deepEqual( languageData.getRegions( 'lzz' ), [ assert.deepEqual( languageData.getRegions( 'lzz' ), [
'EU', 'ME' 'EU', 'ME'
], 'Correct regions of the Laz language were selected' ); ], 'Correct regions of the Laz language were selected' );
@@ -141,8 +127,8 @@ describe( 'languagedata', function () {
languagesAM = [ 'atj', 'chr', 'chy', 'cr', 'en', 'es', 'fr', 'gn', 'haw', 'ike-cans', 'ik', 'kl', 'nl', 'pt', 'qu', 'srn', 'yi' ]; languagesAM = [ 'atj', 'chr', 'chy', 'cr', 'en', 'es', 'fr', 'gn', 'haw', 'ike-cans', 'ik', 'kl', 'nl', 'pt', 'qu', 'srn', 'yi' ];
assert.deepEqual( assert.deepEqual(
languageData.sortByScriptGroupAndAutonym( languagesAM ), languageData.sortByScriptGroup( languagesAM ),
[ 'atj', 'gn', 'en', 'es', 'fr', 'haw', 'ik', 'kl', 'nl', 'pt', 'qu', 'srn', 'chy', 'yi', 'chr', 'ike-cans', 'cr' ], [ 'atj', 'gn', 'en', 'es', 'fr', 'haw', 'ik', 'kl', 'nl', 'pt', 'qu', 'srn', 'chy', 'yi', 'ike-cans', 'cr', 'chr' ],
'languages in region AM are ordered correctly by script group' 'languages in region AM are ordered correctly by script group'
); );
} ); } );