11'use strict' ;
22
33angular . module ( 'codeSearchApp' )
4- . factory ( 'apiRequest' , function ( $http , $timeout ) {
4+ . factory ( 'apiRequest' , function ( $http , $timeout , codeParser ) {
55 // Service logic
66 // ...
77 var apiRequest = { } ;
88
99 // Public API here
10+ var searchOptions ;
11+ var searchQuery ;
12+ var library ;
13+ var libFunction ;
14+
15+ var getDepVar = function ( lib , file ) {
16+ var parsedData = esprima . tokenize ( file ) ;
17+
18+ for ( var i = 0 ; i < parsedData . length ; i ++ ) {
19+ var o = parsedData [ i ] ;
20+
21+ if ( o . type === 'String' &&
22+ o . value . substring ( 1 , o . value . length - 1 ) === lib &&
23+ parsedData [ i + 1 ] . type === 'Punctuator' &&
24+ parsedData [ i + 1 ] . value === ')' &&
25+ parsedData [ i - 1 ] . type === 'Punctuator' &&
26+ parsedData [ i - 1 ] . value === '(' &&
27+ parsedData [ i - 2 ] . type === 'Identifier' &&
28+ parsedData [ i - 2 ] . value === 'require' &&
29+ parsedData [ i - 3 ] . type === 'Punctuator' &&
30+ parsedData [ i - 3 ] . value === '=' &&
31+ parsedData [ i - 4 ] . type === 'Identifier' ) {
32+
33+ return parsedData [ i - 4 ] . value ;
34+ }
35+ }
36+ } ;
37+
38+ var snippIterator = function ( doc , callback ) {
39+
40+ var docContent = doc . contents ;
41+ var repoUrl = doc . repoUrl || "" ;
42+ var filePath = doc . filePath || "" ;
43+ var snippitRatings = doc . snippitRatings ?
44+ doc . snippitRatings [ libFunction ] : { } ;
45+
46+ var dep ;
47+ if ( library . length > 0 && libFunction . length > 0 ) {
48+ dep = getDepVar ( library , docContent ) ;
49+
50+ if ( dep ) {
51+ searchQuery = dep + '.' + libFunction ;
52+ }
53+ }
54+
55+ var snippit = codeParser ( docContent , searchQuery , searchOptions ) ;
56+
57+ var resultsArr = [ ] ;
58+ snippit . forEach ( function ( snippit ) {
59+ // console.log(snippit.length);
60+ var snippitObj = {
61+ repoUrl : repoUrl ,
62+ filePath : filePath ,
63+ snippit : snippit ,
64+ docContent : docContent
65+ } ;
66+ resultsArr . push ( snippitObj ) ;
67+ } ) ;
68+ callback ( null , resultsArr ) ;
69+ } ;
1070
1171 apiRequest . findCode = function ( lib , func ) {
1272 return $http ( {
@@ -16,41 +76,58 @@ angular.module('codeSearchApp')
1676 library : lib ,
1777 libFunction : func
1878 }
19- } ) . then ( function ( data ) {
20- var parsedData = angular . fromJson ( data ) ;
21- parsedData . data . snippits . sort ( function ( a , b ) {
22- if ( a . snippitScore < b . snippitScore ) {
23- return 1 ;
24- } else if ( a . snippitScore > b . snippitScore ) {
25- return - 1 ;
26- } else {
27- return 0 ;
28- }
29- } ) ;
79+ } )
80+ . then ( function ( data ) {
81+ searchOptions = data . data . searchOptions ;
82+ searchQuery = data . data . searchQuery ;
83+ library = lib ;
84+ libFunction = func ;
3085
31- var snippitsReturned = { } ;
32- snippitsReturned . codeSnippits = parsedData . data . snippits ;
86+ var files = data . data . files ;
3387
34- var pages = Math . ceil ( snippitsReturned . codeSnippits . length / 10 ) ;
35- snippitsReturned . pageArray = [ ] ;
88+ console . log ( 'files' , files . length ) ;
89+ console . log ( 'sOpts' , searchOptions ) ;
90+ console . log ( 'sQuer' , searchQuery ) ;
3691
37- for ( var i = 0 ; i < pages ; i ++ ) {
38- snippitsReturned . pageArray . push ( i ) ;
39- }
92+ async . map ( files , snippIterator , function ( err , snippitsArr ) {
93+ snippitsArr = _ . flatten ( snippitsArr ) ;
94+ console . log ( 'done iterating through snippits' , snippitsArr . length ) ;
95+ console . log ( snippitsArr ) ;
96+ console . log ( 'populating snippit ids' ) ;
97+
98+ var snipPaths = _ . pluck ( snippitsArr , 'filePath' ) ;
4099
41- return snippitsReturned
100+ $http . post ( '/api/popSnips' , { snipPaths : snipPaths } )
101+ . then ( function ( data ) {
102+
103+ } ) ;
104+ } ) ;
42105 } )
43- }
106+ // .then(function(data){
107+ // var parsedData = angular.fromJson(data);
108+ // parsedData.data.snippits.sort(function(a, b) {
109+ // if (a.snippitScore < b.snippitScore) {
110+ // return 1;
111+ // } else if (a.snippitScore > b.snippitScore) {
112+ // return -1;
113+ // } else {
114+ // return 0;
115+ // }
116+ // });
44117
118+ // var snippitsReturned = {};
119+ // snippitsReturned.codeSnippits = parsedData.data.snippits;
45120
46- // apiRequest.snippitVote = function (vote, snippitObj) {
47- // return $http.post('/api/snippitVote', {
48- // snippit: snippitObj.snippit,
49- // votePreference: vote,
50- // filePath: snippitObj.filePath
51- // });
52- // }
121+ // var pages = Math.ceil(snippitsReturned.codeSnippits.length / 10 );
122+ // snippitsReturned.pageArray = [];
53123
124+ // for ( var i = 0; i < pages; i++ ) {
125+ // snippitsReturned.pageArray.push(i);
126+ // }
127+
128+ // return snippitsReturned
129+ // })
130+ }
54131
55132 return apiRequest
56133
0 commit comments