pidgin/nest
Clone
Summary
Browse
Changes
Graph
do not provide support... pkgin
S-P/added-pkgin-for-macos-1587338026022
2020-04-19, S P
2e6c253a634e
do not provide support... pkgin
var
lunrIndex
,
pagesIndex
;
function
endsWith
(
str
,
suffix
)
{
return
str
.
indexOf
(
suffix
,
str
.
length
-
suffix
.
length
)
!==
-
1
;
}
// Initialize lunrjs using our generated index file
function
initLunr
()
{
if
(
!
endsWith
(
baseurl
,
"/"
)){
baseurl
=
baseurl
+
'/'
};
// First retrieve the index file
$
.
getJSON
(
baseurl
+
"index.json"
)
.
done
(
function
(
index
)
{
pagesIndex
=
index
;
// Set up lunrjs by declaring the fields we use
// Also provide their boost level for the ranking
lunrIndex
=
new
lunr
.
Index
lunrIndex
.
ref
(
"uri"
);
lunrIndex
.
field
(
'title'
,
{
boost
:
15
});
lunrIndex
.
field
(
'tags'
,
{
boost
:
10
});
lunrIndex
.
field
(
"content"
,
{
boost
:
5
});
// Feed lunr with each file and let lunr actually index them
pagesIndex
.
forEach
(
function
(
page
)
{
lunrIndex
.
add
(
page
);
});
lunrIndex
.
pipeline
.
remove
(
lunrIndex
.
stemmer
)
})
.
fail
(
function
(
jqxhr
,
textStatus
,
error
)
{
var
err
=
textStatus
+
", "
+
error
;
console
.
error
(
"Error getting Hugo index flie:"
,
err
);
});
}
/**
* Trigger a search in lunr and transform the result
*
* @param {String} query
* @return {Array} results
*/
function
search
(
query
)
{
// Find the item in our index corresponding to the lunr one to have more info
return
lunrIndex
.
search
(
query
).
map
(
function
(
result
)
{
return
pagesIndex
.
filter
(
function
(
page
)
{
return
page
.
uri
===
result
.
ref
;
})[
0
];
});
}
// Let's get started
initLunr
();
$
(
document
).
ready
(
function
()
{
var
searchList
=
new
autoComplete
({
/* selector for the search box element */
selector
:
$
(
"#search-by"
).
get
(
0
),
/* source is the callback to perform the search */
source
:
function
(
term
,
response
)
{
response
(
search
(
term
));
},
/* renderItem displays individual search results */
renderItem
:
function
(
item
,
term
)
{
var
numContextWords
=
2
;
var
text
=
item
.
content
.
match
(
"(?:\\s?(?:[\\w]+)\\s?){0,"
+
numContextWords
+
"}"
+
term
+
"(?:\\s?(?:[\\w]+)\\s?){0,"
+
numContextWords
+
"}"
);
item
.
context
=
text
;
return
'<div class="autocomplete-suggestion" '
+
'data-term="'
+
term
+
'" '
+
'data-title="'
+
item
.
title
+
'" '
+
'data-uri="'
+
item
.
uri
+
'" '
+
'data-context="'
+
item
.
context
+
'">'
+
'ยป '
+
item
.
title
+
'<div class="context">'
+
(
item
.
context
||
''
)
+
'</div>'
+
'</div>'
;
},
/* onSelect callback fires when a search suggestion is chosen */
onSelect
:
function
(
e
,
term
,
item
)
{
location
.
href
=
item
.
getAttribute
(
'data-uri'
);
}
});
});