Remove Object support from getLanguagesByScriptGroup
This commit is contained in:
22
index.js
22
index.js
@@ -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
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -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'
|
||||||
);
|
);
|
||||||
} );
|
} );
|
||||||
|
|||||||
Reference in New Issue
Block a user