Skip to content

Commit dad5ee2

Browse files
committed
Fix search results and keep them working in Safari
1 parent 1f59bb0 commit dad5ee2

File tree

2 files changed

+14
-0
lines changed

2 files changed

+14
-0
lines changed

static/search.js

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -320,6 +320,7 @@ var Search = Control.extend({
320320
if (index && currentIndexVersion === indexVersion) {
321321
searchEngine = lunr.Index.load(index);
322322
}else{
323+
var dummyContainer = document.createElement('div');
323324
searchEngine = lunr(function(){
324325
lunr.tokenizer.separator = /[\s]+/;
325326

@@ -340,6 +341,10 @@ var Search = Control.extend({
340341
if(!item.title){
341342
item.title = item.name;
342343
}
344+
// Convert HTML to text
345+
dummyContainer.innerHTML = item.description;
346+
item.description = dummyContainer.innerText;
347+
343348
this.add(item);
344349
}
345350
}
@@ -379,6 +384,8 @@ var Search = Control.extend({
379384
var split = searchTerm.split(lunr.tokenizer.separator);
380385
split.forEach(function(term) {
381386
q.term(term, { boost: 10, fields: q.allFields });
387+
388+
q.term(term, { usePipeline: false, fields: q.allFields, wildcard: lunr.Query.wildcard.TRAILING });
382389
});
383390
});
384391

test/search.js

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ QUnit.test('Search for “about”', function(assert) {
2828
var done = assert.async();
2929
search.searchEngineSearch('about').then(function(results) {
3030
assert.equal(results.length > 0, true, 'got results');
31+
assert.equal(results.length > 1, true, 'got more than 1 result');
3132
assert.equal(indexOfPageInResults('about', results), 0, 'first result is the About page');
3233
done();
3334
});
@@ -37,6 +38,7 @@ QUnit.test('Search for “can-component”', function(assert) {
3738
var done = assert.async();
3839
search.searchEngineSearch('can-component').then(function(results) {
3940
assert.equal(results.length > 0, true, 'got results');
41+
assert.equal(results.length > 1, true, 'got more than 1 result');
4042
assert.equal(indexOfPageInResults('can-component', results), 0, 'first result is the can-component page');
4143
done();
4244
});
@@ -46,6 +48,7 @@ QUnit.test('Search for “can-connect”', function(assert) {
4648
var done = assert.async();
4749
search.searchEngineSearch('can-connect').then(function(results) {
4850
assert.equal(results.length > 0, true, 'got results');
51+
assert.equal(results.length > 1, true, 'got more than 1 result');
4952
assert.equal(indexOfPageInResults('can-connect', results), 0, 'first result is the can-connect page');
5053
done();
5154
});
@@ -55,6 +58,7 @@ QUnit.test('Search for “helpers/', function(assert) {
5558
var done = assert.async();
5659
search.searchEngineSearch('helpers/').then(function(results) {
5760
assert.equal(results.length > 0, true, 'got results');
61+
assert.equal(results.length > 1, true, 'got more than 1 result');
5862
done();
5963
});
6064
});
@@ -63,6 +67,7 @@ QUnit.test('Search for “Live Binding”', function(assert) {
6367
var done = assert.async();
6468
search.searchEngineSearch('Live Binding').then(function(results) {
6569
assert.equal(results.length > 0, true, 'got results');
70+
assert.equal(results.length > 1, true, 'got more than 1 result');
6671
assert.equal(indexOfPageInResults('can-stache.Binding', results) < 2, true, 'first result is the can-stache Live Binding page');
6772
done();
6873
});
@@ -81,6 +86,7 @@ QUnit.test('Search for “stache”', function(assert) {
8186
var done = assert.async();
8287
search.searchEngineSearch('stache').then(function(results) {
8388
assert.equal(results.length > 0, true, 'got results');
89+
assert.equal(results.length > 1, true, 'got more than 1 result');
8490
assert.equal(indexOfPageInResults('can-stache', results), 0, 'first result is the can-stache page');
8591
done();
8692
});
@@ -99,6 +105,7 @@ QUnit.test('Search for “define/map”', function(assert) {
99105
var done = assert.async();
100106
search.searchEngineSearch('define/map').then(function(results) {
101107
assert.equal(results.length > 0, true, 'got results');
108+
assert.equal(results.length > 1, true, 'got more than 1 result');
102109
assert.equal(indexOfPageInResults('can-define/map/map', results), 0, 'first result is the can-define/map/map page');
103110
done();
104111
});

0 commit comments

Comments
 (0)