Skip to content

Commit 89b820c

Browse files
committed
Improve results parsing in code search
1 parent 4fd0c02 commit 89b820c

File tree

1 file changed

+20
-11
lines changed

1 file changed

+20
-11
lines changed

core/cb.search/code.js

Lines changed: 20 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,7 @@ var assembleCommand = function(options) {
7979

8080

8181
var search = function(root, args) {
82-
var d = Q.defer();
82+
var d = Q.defer(), prevfile = null;
8383
var results = {};
8484

8585
args = _.defaults(args || {}, {
@@ -103,19 +103,28 @@ var search = function(root, args) {
103103
var proc = spawn(command.command, command);
104104
proc.stdout.on('data', function(data) {
105105
data = data.toString();
106-
107-
_.each(data.toString().split("\n"), function(line) {
108-
var parts = line.split(":");
109-
if (parts.length < 3) return;
110-
111-
var _path = path.normalize(parts[0]);
112-
106+
var lines = data.toString().split(/([\n\r]+)/g);
107+
108+
for (var i = 0, l = lines.length; i < l; ++i) {
109+
var parts = lines[i].split(":");
110+
if (parts.length < 3) continue;
111+
112+
var _path = path.normalize(parts.shift().replace(root, "").trimRight());
113+
var _line = parseInt(parts.shift());
114+
if (!_line) {
115+
if (prevfile) {
116+
results[prevfile][results[prevfile].length - 1].content += "\n\r"+lines[i];
117+
}
118+
continue;
119+
}
120+
121+
prevfile = _path;
113122
results[_path] = results[_path] || [];
114123
results[_path].push({
115-
'line': parseInt(parts[1]),
116-
'content': parts[2]
124+
'line': _line,
125+
'content': parts.join(":")
117126
});
118-
});
127+
}
119128
});
120129

121130
proc.on('error', function(err) {

0 commit comments

Comments
 (0)