20
index.js
20
index.js
@@ -4,13 +4,24 @@ var languageData = require( './language-data.json' );
|
|||||||
* Utility functions for querying language data.
|
* Utility functions for querying language data.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Check whether the languageCode is known to the language database.
|
||||||
|
* For practical purposes it may be same as checking if given language code is valid,
|
||||||
|
* but not guaranteed that all valid language codes are in our database.
|
||||||
|
* @param {string} languageCode language code
|
||||||
|
* @return {boolean}
|
||||||
|
*/
|
||||||
|
function isKnown( languageCode ) {
|
||||||
|
return !!languageData.languages[ languageCode ];
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Is this language a redirect to another language?
|
* Is this language a redirect to another language?
|
||||||
* @param {string} language Language code
|
* @param {string} language Language code
|
||||||
* @return {string} Target language code if it's a redirect or false if it's not
|
* @return {string} Target language code if it's a redirect or false if it's not
|
||||||
*/
|
*/
|
||||||
function isRedirect( language ) {
|
function isRedirect( language ) {
|
||||||
return ( languageData.languages[ language ] !== undefined && languageData.languages[ language ].length === 1 ) ? languageData.languages[ language ][ 0 ] : false;
|
return ( isKnown( language ) && languageData.languages[ language ].length === 1 ) ? languageData.languages[ language ][ 0 ] : false;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -23,7 +34,7 @@ function getScript( language ) {
|
|||||||
if ( target ) {
|
if ( target ) {
|
||||||
return getScript( target );
|
return getScript( target );
|
||||||
}
|
}
|
||||||
if ( !languageData.languages[ language ] ) {
|
if ( !isKnown( language ) ) {
|
||||||
// Undetermined
|
// Undetermined
|
||||||
return 'Zyyy';
|
return 'Zyyy';
|
||||||
}
|
}
|
||||||
@@ -40,7 +51,7 @@ function getRegions( language ) {
|
|||||||
if ( target ) {
|
if ( target ) {
|
||||||
return getRegions( target );
|
return getRegions( target );
|
||||||
}
|
}
|
||||||
return ( languageData.languages[ language ] && languageData.languages[ language ][ 1 ] ) || 'UNKNOWN';
|
return ( isKnown( language ) && languageData.languages[ language ][ 1 ] ) || 'UNKNOWN';
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -53,7 +64,7 @@ function getAutonym( language ) {
|
|||||||
if ( target ) {
|
if ( target ) {
|
||||||
return getAutonym( target );
|
return getAutonym( target );
|
||||||
}
|
}
|
||||||
return ( languageData.languages[ language ] && languageData.languages[ language ][ 2 ] ) || language;
|
return ( isKnown( language ) && languageData.languages[ language ][ 2 ] ) || language;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -255,6 +266,7 @@ module.exports = {
|
|||||||
getRegions,
|
getRegions,
|
||||||
getScript,
|
getScript,
|
||||||
getScriptGroupOfLanguage,
|
getScriptGroupOfLanguage,
|
||||||
|
isKnown,
|
||||||
isRedirect,
|
isRedirect,
|
||||||
isRtl,
|
isRtl,
|
||||||
sortByAutonym
|
sortByAutonym
|
||||||
|
|||||||
@@ -85,6 +85,12 @@ describe( 'languagedata', function () {
|
|||||||
}
|
}
|
||||||
return result;
|
return result;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
it( 'language tags', function () {
|
||||||
|
assert.ok( languageData.isKnown( 'ar' ), 'Language is unknown' );
|
||||||
|
assert.ok( !languageData.isKnown( 'unknownLanguageCode!' ), 'Language is known' );
|
||||||
|
} );
|
||||||
|
|
||||||
it( 'autonyms', function () {
|
it( 'autonyms', function () {
|
||||||
var autonyms;
|
var autonyms;
|
||||||
// Add a language in run time.
|
// Add a language in run time.
|
||||||
|
|||||||
Reference in New Issue
Block a user