| 
									
										
										
										
											2017-09-22 19:51:03 +02:00
										 |  |  | // tslint:disable:file-header
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-07-20 10:54:07 +02:00
										 |  |  | /** | 
					
						
							|  |  |  |  * Npm module for Unicode CLDR JSON data | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * @license | 
					
						
							|  |  |  |  * Copyright 2013 Rafael Xavier de Souza | 
					
						
							|  |  |  |  * Released under the MIT license | 
					
						
							|  |  |  |  * https://github.com/rxaviers/cldr-data-npm/blob/master/LICENSE-MIT
 | 
					
						
							|  |  |  |  */ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 'use strict'; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | const JSON_EXTENSION = /^(.*)\.json$/; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | const assert = require('assert'); | 
					
						
							|  |  |  | const _fs = require('fs'); | 
					
						
							|  |  |  | const _path = require('path'); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | function argsToArray(arg) { | 
					
						
							|  |  |  |   return [].slice.call(arg, 0); | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | function jsonFiles(dirName) { | 
					
						
							|  |  |  |   const fileList = _fs.readdirSync(_path.join(__dirname, 'cldr-data', dirName)); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   return fileList.reduce(function(sum, file) { | 
					
						
							|  |  |  |     if (JSON_EXTENSION.test(file)) { | 
					
						
							|  |  |  |       return sum.concat(file.match(JSON_EXTENSION)[1]); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  |   }, []); | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | function cldrData(path /*, ...*/) { | 
					
						
							|  |  |  |   assert( | 
					
						
							|  |  |  |       typeof path === 'string', 'must include path (e.g., ' + | 
					
						
							|  |  |  |           '"main/en/numbers" or "supplemental/likelySubtags")'); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   if (arguments.length > 1) { | 
					
						
							|  |  |  |     return argsToArray(arguments).reduce(function(sum, path) { | 
					
						
							|  |  |  |       sum.push(cldrData(path)); | 
					
						
							|  |  |  |       return sum; | 
					
						
							|  |  |  |     }, []); | 
					
						
							|  |  |  |   } | 
					
						
							|  |  |  |   return require('./cldr-data/' + path); | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | function mainPathsFor(locales) { | 
					
						
							|  |  |  |   return locales.reduce(function(sum, locale) { | 
					
						
							|  |  |  |     const mainFiles = jsonFiles(_path.join('main', locale)); | 
					
						
							|  |  |  |     mainFiles.forEach(function(mainFile) { sum.push(_path.join('main', locale, mainFile)); }); | 
					
						
							|  |  |  |     return sum; | 
					
						
							|  |  |  |   }, []); | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | function supplementalPaths() { | 
					
						
							|  |  |  |   const supplementalFiles = jsonFiles('supplemental'); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   return supplementalFiles.map(function(supplementalFile) { | 
					
						
							|  |  |  |     return _path.join('supplemental', supplementalFile); | 
					
						
							|  |  |  |   }); | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Object.defineProperty( | 
					
						
							|  |  |  |     cldrData, 'availableLocales', | 
					
						
							|  |  |  |     {get: function() { return cldrData('availableLocales').availableLocales; }}); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | cldrData.all = function() { | 
					
						
							|  |  |  |   const paths = supplementalPaths().concat(mainPathsFor(this.availableLocales)); | 
					
						
							|  |  |  |   return cldrData.apply({}, paths); | 
					
						
							|  |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | cldrData.entireMainFor = function(locale /*, ...*/) { | 
					
						
							|  |  |  |   assert( | 
					
						
							|  |  |  |       typeof locale === 'string', 'must include locale (e.g., ' + | 
					
						
							|  |  |  |           '"en")'); | 
					
						
							|  |  |  |   return cldrData.apply({}, mainPathsFor(argsToArray(arguments))); | 
					
						
							|  |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | cldrData.entireSupplemental = function() { | 
					
						
							|  |  |  |   return cldrData.apply({}, supplementalPaths()); | 
					
						
							|  |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | module.exports = cldrData; |