summaryrefslogtreecommitdiff
path: root/node_modules/iso-639-1/src/index.js
diff options
context:
space:
mode:
Diffstat (limited to 'node_modules/iso-639-1/src/index.js')
-rw-r--r--node_modules/iso-639-1/src/index.js59
1 files changed, 59 insertions, 0 deletions
diff --git a/node_modules/iso-639-1/src/index.js b/node_modules/iso-639-1/src/index.js
new file mode 100644
index 0000000..abfef8d
--- /dev/null
+++ b/node_modules/iso-639-1/src/index.js
@@ -0,0 +1,59 @@
+const LANGUAGES_LIST = require('./data.js');
+
+const LANGUAGES = {};
+const LANGUAGES_BY_NAME = {};
+const LANGUAGE_CODES = [];
+const LANGUAGE_NAMES = [];
+const LANGUAGE_NATIVE_NAMES = [];
+
+for (const code in LANGUAGES_LIST) {
+ const { name, nativeName } = LANGUAGES_LIST[code];
+ LANGUAGES[code] =
+ LANGUAGES_BY_NAME[name.toLowerCase()] =
+ LANGUAGES_BY_NAME[nativeName.toLowerCase()] =
+ { code, name, nativeName };
+ LANGUAGE_CODES.push(code);
+ LANGUAGE_NAMES.push(name);
+ LANGUAGE_NATIVE_NAMES.push(nativeName);
+}
+
+module.exports = class ISO6391 {
+ static getLanguages(codes = []) {
+ return codes.map(code =>
+ ISO6391.validate(code)
+ ? Object.assign({}, LANGUAGES[code])
+ : { code, name: '', nativeName: '' }
+ );
+ }
+
+ static getName(code) {
+ return ISO6391.validate(code) ? LANGUAGES_LIST[code].name : '';
+ }
+
+ static getAllNames() {
+ return LANGUAGE_NAMES.slice();
+ }
+
+ static getNativeName(code) {
+ return ISO6391.validate(code) ? LANGUAGES_LIST[code].nativeName : '';
+ }
+
+ static getAllNativeNames() {
+ return LANGUAGE_NATIVE_NAMES.slice();
+ }
+
+ static getCode(name) {
+ name = name.toLowerCase();
+ return LANGUAGES_BY_NAME.hasOwnProperty(name)
+ ? LANGUAGES_BY_NAME[name].code
+ : '';
+ }
+
+ static getAllCodes() {
+ return LANGUAGE_CODES.slice();
+ }
+
+ static validate(code) {
+ return LANGUAGES_LIST.hasOwnProperty(code);
+ }
+}