//= require ../lib/_lunr //= require ../lib/_jquery //= require ../lib/_jquery.highlight (function () { 'use strict'; var content, searchResults; var highlightOpts = { element: 'span', className: 'search-highlight' }; var index = new lunr.Index(); index.ref('id'); index.field('title', { boost: 10 }); index.field('body'); index.pipeline.add(lunr.trimmer, lunr.stopWordFilter); $(populate); $(bind); function populate() { $('h1, h2, h3').each(function() { var title = $(this); var body = title.nextUntil('h1, h2, h3'); index.add({ id: title.prop('id'), title: title.text(), body: body.text() }); }); } function bind() { content = $('.content'); searchResults = $('.search-results'); $('#input-search').on('keyup', search); } function search(event) { unhighlight(); searchResults.addClass('visible'); // ESC clears the field if (event.keyCode === 27) this.value = ''; if (this.value) { var results = index.search(this.value).filter(function(r) { return r.score > 0.0001; }); if (results.length) { searchResults.empty(); $.each(results, function (index, result) { var elem = document.getElementById(result.ref); searchResults.append("
  • " + $(elem).text() + "
  • "); }); highlight.call(this); } else { searchResults.html('
  • '); $('.search-results li').text('No Results Found for "' + this.value + '"'); } } else { unhighlight(); searchResults.removeClass('visible'); } } function highlight() { if (this.value) content.highlight(this.value, highlightOpts); } function unhighlight() { content.unhighlight(highlightOpts); } })();