"use strict";

angular.module('arethusa.morph').service('LexicalInventoryRetriever', function(configurator) {
  function buildDictionaryLinksQuery(urn) {
    var q = '\
      select ?object from <http://data.perseus.org/ds/lexical>\
      where {' +
        '<' + urn  + '>\
        <http://purl.org/dc/terms/isReferencedBy> ?object\
      }\
    ';
    return q;
  }

  function linkProvider(link) {
    if (link.match('alpheios')) {
      return 'Alpheios';
    } else {
      if (link.match('logeion')) {
        return 'Logeion';
      } else {
        if (link.match('perseus')) {
          return 'Perseus';
        }
      }
    }
  }

  function extractLinks(data) {
    var objs = data.results.bindings;
    return arethusaUtil.inject({}, objs, function(memo, obj) {
      var link = obj.object.value;
      memo[linkProvider(link)] = link;
    });
  }

  return function(conf) {
    var resource = configurator.provideResource(conf.resource);

    this.getData = function(urn, form) {
      form.lexInv = {
        uri: form.lexInvLocation.uri,
        urn: form.lexInvLocation.urn
      };

      var query = buildDictionaryLinksQuery(urn);
      resource.get({ query: query }).then(function(res) {
        form.lexInv.dictionaries = extractLinks(res.data);
      });
    };
  };
});

@@ -77,16 +77,38 @@
 riever',
+ %5B%0A  'configurator',%0A 
  functio
@@ -125,16 +125,18 @@
 ator) %7B%0A
+  
   functi
@@ -171,24 +171,26 @@
 (urn) %7B%0A    
+  
 var q = '%5C%0A 
@@ -188,16 +188,18 @@
  q = '%5C%0A
+  
       se
@@ -260,16 +260,18 @@
 %5C%0A      
+ 
+ 
 where %7B'
@@ -273,16 +273,18 @@
 re %7B' +%0A
+  
         
@@ -300,16 +300,18 @@
   + '%3E%5C%0A
+  
         
@@ -361,16 +361,18 @@
 object%5C%0A
+  
       %7D%5C
@@ -376,19 +376,23 @@
  %7D%5C%0A    
+  
 ';%0A
+  
     retu
@@ -397,23 +397,27 @@
 turn q;%0A
+  
   %7D%0A%0A  
+ 
+ 
 function
@@ -434,24 +434,26 @@
 der(link) %7B%0A
+  
     if (link
@@ -476,24 +476,26 @@
 ')) %7B%0A      
+ 
+ 
 return 'Alph
@@ -497,24 +497,26 @@
 'Alpheios';%0A
+  
     %7D else %7B
@@ -514,32 +514,34 @@
  %7D else %7B%0A      
+  
 if (link.match('
@@ -549,24 +549,26 @@
 ogeion')) %7B%0A
+  
         retu
@@ -579,32 +579,34 @@
 Logeion';%0A      
+  
 %7D else %7B%0A       
@@ -598,32 +598,34 @@
  else %7B%0A        
+ 
+ 
 if (link.match('
@@ -639,32 +639,34 @@
 ')) %7B%0A          
+  
 return 'Perseus'
@@ -671,26 +671,30 @@
 s';%0A        
-%7D%0A
+  %7D%0A  
       %7D%0A    
@@ -697,15 +697,21 @@
     
+  
 %7D%0A  
+ 
+ 
 %7D%0A%0A
+  
   fu
@@ -738,24 +738,26 @@
 data) %7B%0A    
+ 
+ 
 var objs = d
@@ -778,16 +778,18 @@
 ndings;%0A
+  
     retu
@@ -845,24 +845,26 @@
 bj) %7B%0A      
+ 
+ 
 var link = o
@@ -880,16 +880,18 @@
 .value;%0A
+  
       me
@@ -929,17 +929,23 @@
     
+  
 %7D);%0A  
+ 
+ 
 %7D%0A%0A
+  
   re
@@ -966,24 +966,26 @@
 conf) %7B%0A    
+ 
+ 
 var resource
@@ -1037,16 +1037,18 @@
 );%0A%0A    
+  
 this.get
@@ -1078,24 +1078,26 @@
 rm) %7B%0A      
+ 
+ 
 form.lexInv 
@@ -1100,16 +1100,18 @@
 Inv = %7B%0A
+  
         
@@ -1148,16 +1148,18 @@
         
+  
 urn: for
@@ -1189,12 +1189,16 @@
     
+  
 %7D;%0A%0A
+  
     
@@ -1249,16 +1249,18 @@
 ;%0A      
+ 
+ 
 resource
@@ -1299,24 +1299,26 @@
 tion(res) %7B%0A
+  
         form
@@ -1366,26 +1366,37 @@
 ata);%0A      
+  %7D);%0A      
 %7D
-)
 ;%0A    %7D;%0A  %7D
@@ -1399,10 +1399,9 @@
 %0A  %7D
-;%0A%7D
+%0A%5D
 );%0A

Update lexInvRetriever minification compatibility