Plato on Github
Report Home
service/loader-static-files.js
Maintainability
65.84
Lines of code
87
Difficulty
31.59
Estimated Errors
0.56
Function weight
By Complexity
By SLOC
angular.module('pascalprecht.translate') /** * @ngdoc object * @name pascalprecht.translate.$translateStaticFilesLoader * @requires $q * @requires $http * * @description * Creates a loading function for a typical static file url pattern: * "lang-en_US.json", "lang-de_DE.json", etc. Using this builder, * the response of these urls must be an object of key-value pairs. * * @param {object} options Options object, which gets prefix, suffix, key, and fileMap */ .factory('$translateStaticFilesLoader', $translateStaticFilesLoader); function $translateStaticFilesLoader($q, $http) { 'use strict'; return function (options) { if (!options || (!angular.isArray(options.files) && (!angular.isString(options.prefix) || !angular.isString(options.suffix)))) { throw new Error('Couldn\'t load static files, no files and prefix or suffix specified!'); } if (!options.files) { options.files = [{ prefix: options.prefix, suffix: options.suffix }]; } var load = function (file) { if (!file || (!angular.isString(file.prefix) || !angular.isString(file.suffix))) { throw new Error('Couldn\'t load static file, no prefix or suffix specified!'); } var fileUrl = [ file.prefix, options.key, file.suffix ].join(''); if (angular.isObject(options.fileMap) && options.fileMap[fileUrl]) { fileUrl = options.fileMap[fileUrl]; } return $http(angular.extend({ url: fileUrl, method: 'GET' }, options.$http)) .then(function(result) { return result.data; }, function () { return $q.reject(options.key); }); }; var promises = [], length = options.files.length; for (var i = 0; i < length; i++) { promises.push(load({ prefix: options.files[i].prefix, key: options.key, suffix: options.files[i].suffix })); } return $q.all(promises) .then(function (data) { var length = data.length, mergedData = {}; for (var i = 0; i < length; i++) { for (var key in data[i]) { mergedData[key] = data[i][key]; } } return mergedData; }); }; } $translateStaticFilesLoader.displayName = '$translateStaticFilesLoader';