summaryrefslogtreecommitdiff
path: root/docs/docsearch.js
blob: b35504cd3a282816130a16881f3ebeead9c1bcb4 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
$(function() {

  // register a handler to move the focus to the search bar
  // upon pressing shift + "/" (i.e. "?")
  $(document).on('keydown', function(e) {
    if (e.shiftKey && e.keyCode == 191) {
      e.preventDefault();
      $("#search-input").focus();
    }
  });

  $(document).ready(function() {
    // do keyword highlighting
    /* modified from https://jsfiddle.net/julmot/bL6bb5oo/ */
    var mark = function() {

      var referrer = document.URL ;
      var paramKey = "q" ;

      if (referrer.indexOf("?") !== -1) {
        var qs = referrer.substr(referrer.indexOf('?') + 1);
        var qs_noanchor = qs.split('#')[0];
        var qsa = qs_noanchor.split('&');
        var keyword = "";

        for (var i = 0; i < qsa.length; i++) {
          var currentParam = qsa[i].split('=');

          if (currentParam.length !== 2) {
            continue;
          }

          if (currentParam[0] == paramKey) {
            keyword = decodeURIComponent(currentParam[1].replace(/\+/g, "%20"));
          }
        }

        if (keyword !== "") {
          $(".contents").unmark({
            done: function() {
              $(".contents").mark(keyword);
            }
          });
        }
      }
    };

    mark();
  });
});

/* Search term highlighting ------------------------------*/

function matchedWords(hit) {
  var words = [];

  var hierarchy = hit._highlightResult.hierarchy;
  // loop to fetch from lvl0, lvl1, etc.
  for (var idx in hierarchy) {
    words = words.concat(hierarchy[idx].matchedWords);
  }

  var content = hit._highlightResult.content;
  if (content) {
    words = words.concat(content.matchedWords);
  }

  // return unique words
  var words_uniq = [...new Set(words)];
  return words_uniq;
}

function updateHitURL(hit) {

  var words = matchedWords(hit);
  var url = "";

  if (hit.anchor) {
    url = hit.url_without_anchor + '?q=' + escape(words.join(" ")) + '#' + hit.anchor;
  } else {
    url = hit.url + '?q=' + escape(words.join(" "));
  }

  return url;
}

Contact - Imprint