all files / src/ languages.js

12.5% Statements 3/24
0% Branches 0/12
0% Functions 0/7
12.5% Lines 3/24
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53                                                                                                   
'use strict';
 
var	fs = require('fs'),
	path = require('path'),
	async = require('async'),
 
	Languages = {};
 
Languages.list = function(callback) {
	var	languagesPath = path.join(__dirname, '../public/language'),
		languages = [];
 
	fs.readdir(languagesPath, function(err, files) {
		if (err) {
			return callback(err);
		}
 
		async.each(files, function(folder, next) {
			fs.stat(path.join(languagesPath, folder), function(err, stat) {
				if (err) {
					return next(err);
				}
 
				if (!stat.isDirectory()) {
					return next();
				}
 
				var configPath = path.join(languagesPath, folder, 'language.json');
 
				fs.readFile(configPath, function(err, stream) {
					if (err) {
						next();
					}
					languages.push(JSON.parse(stream.toString()));
					next();
				});
			});
		}, function(err) {
			if (err) {
				return callback(err);
			}
			// Sort alphabetically
			languages = languages.sort(function(a, b) {
				return a.code > b.code ? 1 : -1;
			});
 
			callback(err, languages);
		});
	});
};
 
module.exports = Languages;