123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112 |
- /*!
- * angular-translate - v2.14.0 - 2017-02-11
- *
- * Copyright (c) 2017 The angular-translate team, Pascal Precht; Licensed MIT
- */
- (function (root, factory) {
- if (typeof define === 'function' && define.amd) {
- // AMD. Register as an anonymous module unless amdModuleId is set
- define([], function () {
- return (factory());
- });
- } else if (typeof exports === 'object') {
- // Node. Does not work with strict CommonJS, but
- // only CommonJS-like environments that support module.exports,
- // like Node.
- module.exports = factory();
- } else {
- factory();
- }
- }(this, function () {
- $translateStaticFilesLoader.$inject = ['$q', '$http'];
- 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';
- return 'pascalprecht.translate';
- }));
|