hexo-theme-sukax
Version:
Modern, powerful and simple theme for Hexo
7 lines • 2.49 kB
JavaScript
/*!
* Hexo Theme Suka | local-search.js
* Author: SukkaW
* Link: https://github.com/SukkaW/hexo-theme-suka
* License: GPL-3.0
*/
!function(){window.getParameterByName=function(e){e=e.replace(/[\[]/,"\\[").replace(/[\]]/,"\\]");var t=new RegExp("[\\?&]"+e+"=([^&#]*)").exec(window.location.search);return null==t?"":decodeURIComponent(t[1])};var o=window.getParameterByName("s");window.searchEscape=function(e){var t={"&":"&","<":"<",">":">",'"':""","'":"'","/":"/"};return e.replace(/[&<>"'/]/g,function(e){return t[e]})},window.searchFunc=function(e,i){"use strict";fetch(e).then(function(e){return e.json()}).then(function(t){var n=document.getElementById("search-output"),r=document.getElementById("search-result-num"),a=document.getElementById("search-result-info"),y=[];void 0!==o&&(function(m){var w=function(){var e=m.trim().toLowerCase().split(/[\s\-]+/),t=[];for(var n in e){var r=e[n];if(-1<r.indexOf("+")){var a=r.split("+");for(var i in a)t.push(a[i])}else t.push(r)}return t}();window.searchKeyword=w;var E=0;if(n.innerHTML="",!(m.trim().length<=0)){t.forEach(function(e){if(void 0!==e.title&&void 0!==e.content){var n=!0,r=e.title.trim().toLowerCase(),t=new Date(e.date).toLocaleDateString(),a=void 0!==e.tags?e.tags:[],i=e.content.trim().replace(/<[^>]+>/g,"").toLowerCase(),o=-1,c=-1,s=-1,l=-1,u=0;if(""!==r&&""!==i&&w.forEach(function(e,t){o=r.indexOf(e),c=a.indexOf(e),s=i.indexOf(e),o<0&&c<0&&s<0?n=!1:(0<=o&&(u+=4),0<=c&&(u+=2),0<=s&&(u+=1),0===t&&(l=s),E++)}),n){var d="";d+='<div class="tile"><div class="tile-content">';var f=e.title;w.forEach(function(e){var t=new RegExp(e,"gi");f=f.replace(t,"<strong><mark>"+window.searchEscape(e)+"</mark></strong>")}),d+='<a href="'+e.url+'"><p class="tile-title search-result-title">'+f+"</p></a>",d+='<p class="text-gray search-result-summary">',d+='<span class="saerch-result-date">'+t+"</span>";var v=e.content;if(0<=l){var p=l-15,h=l+20;p<0&&(p=0),0===p&&(h=20),h>v.length&&(h=v.length-20);var g=v.substr(p,h);w.forEach(function(e){var t=new RegExp(e,"gi");g=g.replace(t,"<strong><mark>"+window.searchEscape(m)+"</mark></strong>")}),d+=g+"...</p>"}d+="</div></div>",y.push([d,u])}}});var e=function(){var e="";for(var t in y.sort(function(e,t){return t[1]-e[1]}),y)e+=y[t][0];return e}();r.appendChild(document.createTextNode(y.length)),E<=0?(a.style.display="none",n.innerHTML=i):(a.style.display="block",n.innerHTML=e)}}(o),document.getElementById("search-field").setAttribute("value",o))})}}();