MCPcopy Create free account
hub / github.com/apache/cloudstack / createInternalInjector

Function createInternalInjector

tools/ngui/static/js/lib/angular.js:2847–2925  ·  view source on GitHub ↗
(cache, factory)

Source from the content-addressed store, hash-verified

2845 ////////////////////////////////////
2846
2847 function createInternalInjector(cache, factory) {
2848
2849 function getService(serviceName) {
2850 if (typeof serviceName !== 'string') {
2851 throw Error('Service name expected');
2852 }
2853 if (cache.hasOwnProperty(serviceName)) {
2854 if (cache[serviceName] === INSTANTIATING) {
2855 throw Error('Circular dependency: ' + path.join(' <- '));
2856 }
2857 return cache[serviceName];
2858 } else {
2859 try {
2860 path.unshift(serviceName);
2861 cache[serviceName] = INSTANTIATING;
2862 return cache[serviceName] = factory(serviceName);
2863 } finally {
2864 path.shift();
2865 }
2866 }
2867 }
2868
2869 function invoke(fn, self, locals){
2870 var args = [],
2871 $inject = annotate(fn),
2872 length, i,
2873 key;
2874
2875 for(i = 0, length = $inject.length; i < length; i++) {
2876 key = $inject[i];
2877 args.push(
2878 locals && locals.hasOwnProperty(key)
2879 ? locals[key]
2880 : getService(key)
2881 );
2882 }
2883 if (!fn.$inject) {
2884 // this means that we must be an array.
2885 fn = fn[length];
2886 }
2887
2888
2889 // Performance optimization: http://jsperf.com/apply-vs-call-vs-invoke
2890 switch (self ? -1 : args.length) {
2891 case 0: return fn();
2892 case 1: return fn(args[0]);
2893 case 2: return fn(args[0], args[1]);
2894 case 3: return fn(args[0], args[1], args[2]);
2895 case 4: return fn(args[0], args[1], args[2], args[3]);
2896 case 5: return fn(args[0], args[1], args[2], args[3], args[4]);
2897 case 6: return fn(args[0], args[1], args[2], args[3], args[4], args[5]);
2898 case 7: return fn(args[0], args[1], args[2], args[3], args[4], args[5], args[6]);
2899 case 8: return fn(args[0], args[1], args[2], args[3], args[4], args[5], args[6], args[7]);
2900 case 9: return fn(args[0], args[1], args[2], args[3], args[4], args[5], args[6], args[7], args[8]);
2901 case 10: return fn(args[0], args[1], args[2], args[3], args[4], args[5], args[6], args[7], args[8], args[9]);
2902 default: return fn.apply(self, args);
2903 }
2904 }

Callers 1

createInjectorFunction · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected