summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYehonal <yehonal.azeroth@gmail.com>2018-12-17 16:16:43 +0100
committerYehonal <yehonal.azeroth@gmail.com>2018-12-17 21:00:26 +0100
commit4feaace4929a07cc34c4bcd6c57334be2d95ec31 (patch)
tree8b2b272a40a9c002d8d0c18831fd95bd03a246e3
parent1ffe35e8bed26b833bf873f6062a548aa26e2598 (diff)
downloadwiki-4feaace4929a07cc34c4bcd6c57334be2d95ec31.tar.gz
wiki-4feaace4929a07cc34c4bcd6c57334be2d95ec31.tar.bz2
wiki-4feaace4929a07cc34c4bcd6c57334be2d95ec31.zip
Implemented js search and SEO optimizations
-rw-r--r--_config.yml.dist174
-rw-r--r--_includes/gw_head/meta.html3
-rw-r--r--_includes/gw_tools/search_github.html10
-rw-r--r--_includes/gw_tools/search_google.html12
-rw-r--r--_includes/gw_tools/search_js.html15
-rw-r--r--_includes/gw_tools/search_module.html28
-rw-r--r--assets/js/jquery.camelhunter.min.js5
-rw-r--r--sitemap_full.xml37
8 files changed, 175 insertions, 109 deletions
diff --git a/_config.yml.dist b/_config.yml.dist
index f1bf919..1d11648 100644
--- a/_config.yml.dist
+++ b/_config.yml.dist
@@ -1,83 +1,91 @@
-# (string) Title of your wiki
-title:
-# (string) Description of your wiki
-description:
-# (boolean) Enable/disable download buttons in sidebar
-show_downloads: true
-# (string) Specify branch rendered by gitpages allowing wiki tool buttons to work
-git_branch: "master"
-# (string) Url of logo image, it can be full, absolute or relative.
-logo_url:
-# (string) The UA-XXXXX-Y code from google analytic to enable GA on your wiki
-google_analytics:
-# (string) folder where wiki pages are stored, it's needed for tool buttons
-wiki_folder: wiki
-# (boolean) if you're using github wiki as submodule then this config
-# must be enabled to allow tool buttons to work properly
-use_github_wiki: false
-# (boolean) Enable "Edit with Prose.io" button in tools, it's a 3rd party
-# service to edit github markdown pages easily
-use_prose_io: true
-# Setting google custom search engine token will enable the
-# cse search bar (https://cse.google.it/cse/) instead of default
-# one based on github search that could not work on forks
-google_cse_token:
-
-#
-# Jekyll configurations
-#
-
-# You can customize it changing default layout for all pages
-# More info: https://jekyllrb.com/docs/configuration/
-#
-# git-wiki includes some internal themes that you can choose
-# check _layouts folder
-#
-defaults:
- -
- scope:
- path: "" # an empty string here means all files in the project
- values:
- layout: "git-wiki-default"
- -
- scope:
- path: ""
- type: "pages"
- values:
- layout: "git-wiki-default"
-sass:
- style: compressed
-plugins:
- - jekyll-sitemap
- - jekyll-mentions
- - jemoji
- - jekyll-redirect-from
- - jekyll-feed
-
-
-#
-# INCLUDING HOOKS
-# They are optional, change them only if you need
-# Check wiki documentation to learn how they work
-#
-
-inc_before_toc :
-inc_after_toc :
-inc_before_content :
-inc_after_content :
-inc_before_footer :
-inc_after_footer :
-inc_before_head :
-inc_after_head :
-inc_before_meta :
-inc_after_meta :
-inc_before_scripts :
-inc_after_scripts :
-inc_before_styles :
-inc_after_styles :
-inc_before_header :
-inc_after_header :
-inc_before_tail :
-inc_after_tail :
-inc_before_tools :
-inc_after_tools :
+# (string) Title of your wiki
+title:
+# (string) Description of your wiki
+description:
+# (boolean) Enable/disable download buttons in sidebar
+show_downloads: true
+# (string) Specify branch rendered by gitpages allowing wiki tool buttons to work
+git_branch: "master"
+# (string) Url of logo image, it can be full, absolute or relative.
+logo_url:
+# (string) The UA-XXXXX-Y code from google analytic to enable GA on your wiki
+google_analytics:
+# (string) folder where wiki pages are stored, it's needed for tool buttons
+wiki_folder: wiki
+# (boolean) if you're using github wiki as submodule then this config
+# must be enabled to allow tool buttons to work properly
+use_github_wiki: false
+# (boolean) Enable "Edit with Prose.io" button in tools, it's a 3rd party
+# service to edit github markdown pages easily
+use_prose_io: true
+# Select search_engine component from:
+# - js: it uses a built in javascript component that uses generated sitemap_full.xml to search inside your wiki
+# - github : it uses internal github repository search
+# - google : it uses cse search bar, you need to configure google_cse_token
+#
+search_engine : "js"
+# Setting google custom search engine for google
+# cse search bar (https://cse.google.it/cse/)
+google_cse_token:
+
+#
+# Jekyll configurations
+#
+
+# You can customize it changing default layout for all pages
+# More info: https://jekyllrb.com/docs/configuration/
+#
+# git-wiki includes some internal themes that you can choose
+# check _layouts folder
+#
+defaults:
+ -
+ scope:
+ path: "" # an empty string here means all files in the project
+ values:
+ layout: "git-wiki-default"
+ -
+ scope:
+ path: ""
+ type: "pages"
+ values:
+ layout: "git-wiki-default"
+sass:
+ style: compressed
+plugins:
+ - jekyll-feed
+ - jekyll-redirect-from
+ - jekyll-seo-tag
+ - jekyll-sitemap
+ - jekyll-avatar
+ - jemoji
+ - jekyll-mentions
+ - jekyll-include-cache
+
+
+#
+# INCLUDING HOOKS
+# They are optional, change them only if you need
+# Check wiki documentation to learn how they work
+#
+
+inc_before_toc :
+inc_after_toc :
+inc_before_content :
+inc_after_content :
+inc_before_footer :
+inc_after_footer :
+inc_before_head :
+inc_after_head :
+inc_before_meta :
+inc_after_meta :
+inc_before_scripts :
+inc_after_scripts :
+inc_before_styles :
+inc_after_styles :
+inc_before_header :
+inc_after_header :
+inc_before_tail :
+inc_after_tail :
+inc_before_tools :
+inc_after_tools :
diff --git a/_includes/gw_head/meta.html b/_includes/gw_head/meta.html
index 141ab05..bfae3da 100644
--- a/_includes/gw_head/meta.html
+++ b/_includes/gw_head/meta.html
@@ -5,7 +5,8 @@
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="chrome=1">
<meta name="viewport" content="width=device-width">
-<title>{{ site.title | default: site.github.repository_name }} by {{ site.github.owner_name }}</title>
+
+{% seo %}
{% if site.inc_after_meta %}
{% include {{ site.inc_after_meta }} %}
diff --git a/_includes/gw_tools/search_github.html b/_includes/gw_tools/search_github.html
new file mode 100644
index 0000000..efcc5e8
--- /dev/null
+++ b/_includes/gw_tools/search_github.html
@@ -0,0 +1,10 @@
+<form method="GET" action="{{ site.github.repository_url }}/search">
+ <input type="text" name="q[]" placeholder="Text to search">
+ {% if site.use_github_wiki %}
+ <input type="hidden" name="type" value="Wikis">
+ {% else %}
+ <!-- <input type="hidden" name="l" value="Markdown"> -->
+ <input type="hidden" name="q[]" value="path:/{{ site.wiki_folder }}">
+ {% endif %}
+ <input type="submit" value="Search">
+</form> \ No newline at end of file
diff --git a/_includes/gw_tools/search_google.html b/_includes/gw_tools/search_google.html
new file mode 100644
index 0000000..0c3e675
--- /dev/null
+++ b/_includes/gw_tools/search_google.html
@@ -0,0 +1,12 @@
+<script>
+ (function () {
+ var cx = "{{site.google_cse_token}}";
+ var gcse = document.createElement('script');
+ gcse.type = 'text/javascript';
+ gcse.async = true;
+ gcse.src = 'https://cse.google.com/cse.js?cx=' + cx;
+ var s = document.getElementsByTagName('script')[0];
+ s.parentNode.insertBefore(gcse, s);
+ })();
+</script>
+<gcse:search></gcse:search> \ No newline at end of file
diff --git a/_includes/gw_tools/search_js.html b/_includes/gw_tools/search_js.html
new file mode 100644
index 0000000..673fb39
--- /dev/null
+++ b/_includes/gw_tools/search_js.html
@@ -0,0 +1,15 @@
+<div class="container">
+ <div class="well" id="searchbox">
+ <input id="search-field" placeholder="Search the Site"/>
+ <ul id="results"></ul>
+ </div>
+</div>
+
+<script src="{{ '/assets/js/jquery.camelhunter.min.js' | relative_url }}"></script>
+<script type="text/javascript">
+ $("#search-field").camelHunter({
+ onKeyUp : true,
+ rss: "/sitemap_full.xml",
+ results : "#results"
+ });
+</script> \ No newline at end of file
diff --git a/_includes/gw_tools/search_module.html b/_includes/gw_tools/search_module.html
index f79335a..7664e19 100644
--- a/_includes/gw_tools/search_module.html
+++ b/_includes/gw_tools/search_module.html
@@ -1,25 +1,3 @@
-{% if site.google_cse_token %}
-<script>
- (function () {
- var cx = "{{site.google_cse_token}}";
- var gcse = document.createElement('script');
- gcse.type = 'text/javascript';
- gcse.async = true;
- gcse.src = 'https://cse.google.com/cse.js?cx=' + cx;
- var s = document.getElementsByTagName('script')[0];
- s.parentNode.insertBefore(gcse, s);
- })();
-</script>
-<gcse:search></gcse:search>
-{% else %}
-<form method="GET" action="{{ site.github.repository_url }}/search">
- <input type="text" name="q[]" placeholder="Text to search">
- {% if site.use_github_wiki %}
- <input type="hidden" name="type" value="Wikis">
- {% else %}
- <!-- <input type="hidden" name="l" value="Markdown"> -->
- <input type="hidden" name="q[]" value="path:/{{ site.wiki_folder }}">
- {% endif %}
- <input type="submit" value="Search">
-</form>
-{% endif %} \ No newline at end of file
+{% assign se = site.search_engine | default: "github" %}
+{% assign file = "gw_tools/search_" | append: se | append: ".html" %}
+{% include {{file}} %} \ No newline at end of file
diff --git a/assets/js/jquery.camelhunter.min.js b/assets/js/jquery.camelhunter.min.js
new file mode 100644
index 0000000..0c664d8
--- /dev/null
+++ b/assets/js/jquery.camelhunter.min.js
@@ -0,0 +1,5 @@
+!function(t){
+
+ /* The lunr 0.4.3 library is included here to perform the fulltext searching. lunr is copyright (C) 2013 Oliver Nightingale. MIT Licensed */
+ var lunr=function(t){var e=new lunr.Index;return e.pipeline.add(lunr.stopWordFilter,lunr.stemmer),t&&t.call(e,e),e};lunr.version="0.4.3","undefined"!=typeof module&&(module.exports=lunr),lunr.utils={},lunr.utils.warn=function(t){return function(e){t.console&&console.warn&&console.warn(e)}}(this),lunr.utils.zeroFillArray=function(){var t=[0];return function(e){for(;e>t.length;)t=t.concat(t);return t.slice(0,e)}}(),lunr.EventEmitter=function(){this.events={}},lunr.EventEmitter.prototype.addListener=function(){var t=Array.prototype.slice.call(arguments),e=t.pop(),n=t;if("function"!=typeof e)throw new TypeError("last argument must be a function");n.forEach(function(t){this.hasHandler(t)||(this.events[t]=[]),this.events[t].push(e)},this)},lunr.EventEmitter.prototype.removeListener=function(t,e){if(this.hasHandler(t)){var n=this.events[t].indexOf(e);this.events[t].splice(n,1),this.events[t].length||delete this.events[t]}},lunr.EventEmitter.prototype.emit=function(t){if(this.hasHandler(t)){var e=Array.prototype.slice.call(arguments,1);this.events[t].forEach(function(t){t.apply(void 0,e)})}},lunr.EventEmitter.prototype.hasHandler=function(t){return t in this.events},lunr.tokenizer=function(t){if(!arguments.length||null==t||void 0==t)return[];if(Array.isArray(t))return t.map(function(t){return t.toLowerCase()});for(var e=(""+t).replace(/^\s+/,""),n=e.length-1;n>=0;n--)if(/\S/.test(e.charAt(n))){e=e.substring(0,n+1);break}return e.split(/\s+/).map(function(t){return t.replace(/^\W+/,"").replace(/\W+$/,"").toLowerCase()})},lunr.Pipeline=function(){this._stack=[]},lunr.Pipeline.registeredFunctions={},lunr.Pipeline.registerFunction=function(t,e){e in this.registeredFunctions&&lunr.utils.warn("Overwriting existing registered function: "+e),t.label=e,lunr.Pipeline.registeredFunctions[t.label]=t},lunr.Pipeline.warnIfFunctionNotRegistered=function(t){var e=t.label&&t.label in this.registeredFunctions;e||lunr.utils.warn("Function is not registered with pipeline. This may cause problems when serialising the index.\n",t)},lunr.Pipeline.load=function(t){var e=new lunr.Pipeline;return t.forEach(function(t){var n=lunr.Pipeline.registeredFunctions[t];if(!n)throw Error("Cannot load un-registered function: "+t);e.add(n)}),e},lunr.Pipeline.prototype.add=function(){var t=Array.prototype.slice.call(arguments);t.forEach(function(t){lunr.Pipeline.warnIfFunctionNotRegistered(t),this._stack.push(t)},this)},lunr.Pipeline.prototype.after=function(t,e){lunr.Pipeline.warnIfFunctionNotRegistered(e);var n=this._stack.indexOf(t)+1;this._stack.splice(n,0,e)},lunr.Pipeline.prototype.before=function(t,e){lunr.Pipeline.warnIfFunctionNotRegistered(e);var n=this._stack.indexOf(t);this._stack.splice(n,0,e)},lunr.Pipeline.prototype.remove=function(t){var e=this._stack.indexOf(t);this._stack.splice(e,1)},lunr.Pipeline.prototype.run=function(t){for(var e=[],n=t.length,r=this._stack.length,o=0;n>o;o++){for(var i=t[o],s=0;r>s&&(i=this._stack[s](i,o,t),void 0!==i);s++);void 0!==i&&e.push(i)}return e},lunr.Pipeline.prototype.toJSON=function(){return this._stack.map(function(t){return lunr.Pipeline.warnIfFunctionNotRegistered(t),t.label})},lunr.Vector=function(t){this.elements=t},lunr.Vector.prototype.magnitude=function(){if(this._magnitude)return this._magnitude;for(var t,e=0,n=this.elements,r=n.length,o=0;r>o;o++)t=n[o],e+=t*t;return this._magnitude=Math.sqrt(e)},lunr.Vector.prototype.dot=function(t){for(var e=this.elements,n=t.elements,r=e.length,o=0,i=0;r>i;i++)o+=e[i]*n[i];return o},lunr.Vector.prototype.similarity=function(t){return this.dot(t)/(this.magnitude()*t.magnitude())},lunr.Vector.prototype.toArray=function(){return this.elements},lunr.SortedSet=function(){this.length=0,this.elements=[]},lunr.SortedSet.load=function(t){var e=new this;return e.elements=t,e.length=t.length,e},lunr.SortedSet.prototype.add=function(){Array.prototype.slice.call(arguments).forEach(function(t){~this.indexOf(t)||this.elements.splice(this.locationFor(t),0,t)},this),this.length=this.elements.length},lunr.SortedSet.prototype.toArray=function(){return this.elements.slice()},lunr.SortedSet.prototype.map=function(t,e){return this.elements.map(t,e)},lunr.SortedSet.prototype.forEach=function(t,e){return this.elements.forEach(t,e)},lunr.SortedSet.prototype.indexOf=function(t,e,n){var e=e||0,n=n||this.elements.length,r=n-e,o=e+Math.floor(r/2),i=this.elements[o];return 1>=r?i===t?o:-1:t>i?this.indexOf(t,o,n):i>t?this.indexOf(t,e,o):i===t?o:void 0},lunr.SortedSet.prototype.locationFor=function(t,e,n){var e=e||0,n=n||this.elements.length,r=n-e,o=e+Math.floor(r/2),i=this.elements[o];if(1>=r){if(i>t)return o;if(t>i)return o+1}return t>i?this.locationFor(t,o,n):i>t?this.locationFor(t,e,o):void 0},lunr.SortedSet.prototype.intersect=function(t){for(var e=new lunr.SortedSet,n=0,r=0,o=this.length,i=t.length,s=this.elements,l=t.elements;;){if(n>o-1||r>i-1)break;s[n]!==l[r]?s[n]<l[r]?n++:s[n]>l[r]&&r++:(e.add(s[n]),n++,r++)}return e},lunr.SortedSet.prototype.clone=function(){var t=new lunr.SortedSet;return t.elements=this.toArray(),t.length=t.elements.length,t},lunr.SortedSet.prototype.union=function(t){var e,n,r;return this.length>=t.length?(e=this,n=t):(e=t,n=this),r=e.clone(),r.add.apply(r,n.toArray()),r},lunr.SortedSet.prototype.toJSON=function(){return this.toArray()},lunr.Index=function(){this._fields=[],this._ref="id",this.pipeline=new lunr.Pipeline,this.documentStore=new lunr.Store,this.tokenStore=new lunr.TokenStore,this.corpusTokens=new lunr.SortedSet,this.eventEmitter=new lunr.EventEmitter,this._idfCache={},this.on("add","remove","update",function(){this._idfCache={}}.bind(this))},lunr.Index.prototype.on=function(){var t=Array.prototype.slice.call(arguments);return this.eventEmitter.addListener.apply(this.eventEmitter,t)},lunr.Index.prototype.off=function(t,e){return this.eventEmitter.removeListener(t,e)},lunr.Index.load=function(t){t.version!==lunr.version&&lunr.utils.warn("version mismatch: current "+lunr.version+" importing "+t.version);var e=new this;return e._fields=t.fields,e._ref=t.ref,e.documentStore=lunr.Store.load(t.documentStore),e.tokenStore=lunr.TokenStore.load(t.tokenStore),e.corpusTokens=lunr.SortedSet.load(t.corpusTokens),e.pipeline=lunr.Pipeline.load(t.pipeline),e},lunr.Index.prototype.field=function(t,e){var e=e||{},n={name:t,boost:e.boost||1};return this._fields.push(n),this},lunr.Index.prototype.ref=function(t){return this._ref=t,this},lunr.Index.prototype.add=function(t,e){var n={},r=new lunr.SortedSet,o=t[this._ref],e=void 0===e?!0:e;this._fields.forEach(function(e){var o=this.pipeline.run(lunr.tokenizer(t[e.name]));n[e.name]=o,lunr.SortedSet.prototype.add.apply(r,o)},this),this.documentStore.set(o,r),lunr.SortedSet.prototype.add.apply(this.corpusTokens,r.toArray());for(var i=0;r.length>i;i++){var s=r.elements[i],l=this._fields.reduce(function(t,e){var r=n[e.name].length;if(!r)return t;var o=n[e.name].filter(function(t){return t===s}).length;return t+o/r*e.boost},0);this.tokenStore.add(s,{ref:o,tf:l})}e&&this.eventEmitter.emit("add",t,this)},lunr.Index.prototype.remove=function(t,e){var n=t[this._ref],e=void 0===e?!0:e;if(this.documentStore.has(n)){var r=this.documentStore.get(n);this.documentStore.remove(n),r.forEach(function(t){this.tokenStore.remove(t,n)},this),e&&this.eventEmitter.emit("remove",t,this)}},lunr.Index.prototype.update=function(t,e){var e=void 0===e?!0:e;this.remove(t,!1),this.add(t,!1),e&&this.eventEmitter.emit("update",t,this)},lunr.Index.prototype.idf=function(t){if(this._idfCache[t])return this._idfCache[t];var e=this.tokenStore.count(t),n=1;return e>0&&(n=1+Math.log(this.tokenStore.length/e)),this._idfCache[t]=n},lunr.Index.prototype.search=function(t){var e=this.pipeline.run(lunr.tokenizer(t)),n=lunr.utils.zeroFillArray(this.corpusTokens.length),r=[],o=this._fields.reduce(function(t,e){return t+e.boost},0),i=e.some(function(t){return this.tokenStore.has(t)},this);if(!i)return[];e.forEach(function(t,e,i){var s=1/i.length*this._fields.length*o,l=this,u=this.tokenStore.expand(t).reduce(function(e,r){var o=l.corpusTokens.indexOf(r),i=l.idf(r),u=1,a=new lunr.SortedSet;if(r!==t){var h=Math.max(3,r.length-t.length);u=1/Math.log(h)}return o>-1&&(n[o]=s*i*u),Object.keys(l.tokenStore.get(r)).forEach(function(t){a.add(t)}),e.union(a)},new lunr.SortedSet);r.push(u)},this);var s=r.reduce(function(t,e){return t.intersect(e)}),l=new lunr.Vector(n);return s.map(function(t){return{ref:t,score:l.similarity(this.documentVector(t))}},this).sort(function(t,e){return e.score-t.score})},lunr.Index.prototype.documentVector=function(t){for(var e=this.documentStore.get(t),n=e.length,r=lunr.utils.zeroFillArray(this.corpusTokens.length),o=0;n>o;o++){var i=e.elements[o],s=this.tokenStore.get(i)[t].tf,l=this.idf(i);r[this.corpusTokens.indexOf(i)]=s*l}return new lunr.Vector(r)},lunr.Index.prototype.toJSON=function(){return{version:lunr.version,fields:this._fields,ref:this._ref,documentStore:this.documentStore.toJSON(),tokenStore:this.tokenStore.toJSON(),corpusTokens:this.corpusTokens.toJSON(),pipeline:this.pipeline.toJSON()}},lunr.Store=function(){this.store={},this.length=0},lunr.Store.load=function(t){var e=new this;return e.length=t.length,e.store=Object.keys(t.store).reduce(function(e,n){return e[n]=lunr.SortedSet.load(t.store[n]),e},{}),e},lunr.Store.prototype.set=function(t,e){this.store[t]=e,this.length=Object.keys(this.store).length},lunr.Store.prototype.get=function(t){return this.store[t]},lunr.Store.prototype.has=function(t){return t in this.store},lunr.Store.prototype.remove=function(t){this.has(t)&&(delete this.store[t],this.length--)},lunr.Store.prototype.toJSON=function(){return{store:this.store,length:this.length}},lunr.stemmer=function(){var t={ational:"ate",tional:"tion",enci:"ence",anci:"ance",izer:"ize",bli:"ble",alli:"al",entli:"ent",eli:"e",ousli:"ous",ization:"ize",ation:"ate",ator:"ate",alism:"al",iveness:"ive",fulness:"ful",ousness:"ous",aliti:"al",iviti:"ive",biliti:"ble",logi:"log"},e={icate:"ic",ative:"",alize:"al",iciti:"ic",ical:"ic",ful:"",ness:""},n="[^aeiou]",r="[aeiouy]",o=n+"[^aeiouy]*",i=r+"[aeiou]*",s="^("+o+")?"+i+o,l="^("+o+")?"+i+o+"("+i+")?$",u="^("+o+")?"+i+o+i+o,a="^("+o+")?"+r;return function(n){var i,h,c,p,f,d,v;if(3>n.length)return n;if(c=n.substr(0,1),"y"==c&&(n=c.toUpperCase()+n.substr(1)),p=/^(.+?)(ss|i)es$/,f=/^(.+?)([^s])s$/,p.test(n)?n=n.replace(p,"$1$2"):f.test(n)&&(n=n.replace(f,"$1$2")),p=/^(.+?)eed$/,f=/^(.+?)(ed|ing)$/,p.test(n)){var m=p.exec(n);p=RegExp(s),p.test(m[1])&&(p=/.$/,n=n.replace(p,""))}else if(f.test(n)){var m=f.exec(n);i=m[1],f=RegExp(a),f.test(i)&&(n=i,f=/(at|bl|iz)$/,d=RegExp("([^aeiouylsz])\\1$"),v=RegExp("^"+o+r+"[^aeiouwxy]$"),f.test(n)?n+="e":d.test(n)?(p=/.$/,n=n.replace(p,"")):v.test(n)&&(n+="e"))}if(p=/^(.+?)y$/,p.test(n)){var m=p.exec(n);i=m[1],p=RegExp(a),p.test(i)&&(n=i+"i")}if(p=/^(.+?)(ational|tional|enci|anci|izer|bli|alli|entli|eli|ousli|ization|ation|ator|alism|iveness|fulness|ousness|aliti|iviti|biliti|logi)$/,p.test(n)){var m=p.exec(n);i=m[1],h=m[2],p=RegExp(s),p.test(i)&&(n=i+t[h])}if(p=/^(.+?)(icate|ative|alize|iciti|ical|ful|ness)$/,p.test(n)){var m=p.exec(n);i=m[1],h=m[2],p=RegExp(s),p.test(i)&&(n=i+e[h])}if(p=/^(.+?)(al|ance|ence|er|ic|able|ible|ant|ement|ment|ent|ou|ism|ate|iti|ous|ive|ize)$/,f=/^(.+?)(s|t)(ion)$/,p.test(n)){var m=p.exec(n);i=m[1],p=RegExp(u),p.test(i)&&(n=i)}else if(f.test(n)){var m=f.exec(n);i=m[1]+m[2],f=RegExp(u),f.test(i)&&(n=i)}if(p=/^(.+?)e$/,p.test(n)){var m=p.exec(n);i=m[1],p=RegExp(u),f=RegExp(l),d=RegExp("^"+o+r+"[^aeiouwxy]$"),(p.test(i)||f.test(i)&&!d.test(i))&&(n=i)}return p=/ll$/,f=RegExp(u),p.test(n)&&f.test(n)&&(p=/.$/,n=n.replace(p,"")),"y"==c&&(n=c.toLowerCase()+n.substr(1)),n}}(),lunr.Pipeline.registerFunction(lunr.stemmer,"stemmer"),lunr.stopWordFilter=function(t){return-1===lunr.stopWordFilter.stopWords.indexOf(t)?t:void 0},lunr.stopWordFilter.stopWords=new lunr.SortedSet,lunr.stopWordFilter.stopWords.length=119,lunr.stopWordFilter.stopWords.elements=["","a","able","about","across","after","all","almost","also","am","among","an","and","any","are","as","at","be","because","been","but","by","can","cannot","could","dear","did","do","does","either","else","ever","every","for","from","get","got","had","has","have","he","her","hers","him","his","how","however","i","if","in","into","is","it","its","just","least","let","like","likely","may","me","might","most","must","my","neither","no","nor","not","of","off","often","on","only","or","other","our","own","rather","said","say","says","she","should","since","so","some","than","that","the","their","them","then","there","these","they","this","tis","to","too","twas","us","wants","was","we","were","what","when","where","which","while","who","whom","why","will","with","would","yet","you","your"],lunr.Pipeline.registerFunction(lunr.stopWordFilter,"stopWordFilter"),lunr.TokenStore=function(){this.root={docs:{}},this.length=0},lunr.TokenStore.load=function(t){var e=new this;return e.root=t.root,e.length=t.length,e},lunr.TokenStore.prototype.add=function(t,e,n){var n=n||this.root,r=t[0],o=t.slice(1);return r in n||(n[r]={docs:{}}),0===o.length?(n[r].docs[e.ref]=e,this.length+=1,void 0):this.add(o,e,n[r])},lunr.TokenStore.prototype.has=function(t){if(!t)return!1;for(var e=this.root,n=0;t.length>n;n++){if(!e[t[n]])return!1;e=e[t[n]]}return!0},lunr.TokenStore.prototype.getNode=function(t){if(!t)return{};for(var e=this.root,n=0;t.length>n;n++){if(!e[t[n]])return{};e=e[t[n]]}return e},lunr.TokenStore.prototype.get=function(t,e){return this.getNode(t,e).docs||{}},lunr.TokenStore.prototype.count=function(t,e){return Object.keys(this.get(t,e)).length},lunr.TokenStore.prototype.remove=function(t,e){if(t){for(var n=this.root,r=0;t.length>r;r++){if(!(t[r]in n))return;n=n[t[r]]}delete n.docs[e]}},lunr.TokenStore.prototype.expand=function(t,e){var n=this.getNode(t),r=n.docs||{},e=e||[];return Object.keys(r).length&&e.push(t),Object.keys(n).forEach(function(n){"docs"!==n&&e.concat(this.expand(t+n,e))},this),e},lunr.TokenStore.prototype.toJSON=function(){return{root:this.root,length:this.length}};
+t.fn.camelHunter=function(i){var s=t.extend({},t.fn.camelHunter.defaults,i);return s.results?(e.init(this,s),e):void 0},t.fn.camelHunter.defaults={results:!1,rss:"/rss-alternate",onKeyUp:!1,result_template:"<a href='{{link}}'><p><h2>{{title}}</h2><h4>{{pubDate}}</h4></p></a>",info_template:"<p>Number of posts found: {{amount}}</p>",displaySearchInfo:!0,zeroResultsInfo:!0,before:!1,onComplete:!1};var e={isInit:!1,init:function(t,e){var i=this;this.target=t,this.rss=e.rss,this.results=e.results,this.blogData=[],this.result_template=e.result_template,this.info_template=e.info_template,this.zeroResultsInfo=e.zeroResultsInfo,this.displaySearchInfo=e.displaySearchInfo,this.before=e.before,this.onComplete=e.onComplete,this.index=lunr(function(){this.field("title",{boost:10}),this.field("description"),this.field("link"),this.field("category"),this.field("pubDate"),this.ref("id")}),t.focus(function(){i.loadRSS()}),t.closest("form").submit(function(e){e.preventDefault(),i.find(t.val())}),e.onKeyUp&&(i.loadRSS(),t.keyup(function(){i.find(t.val())}))},loadRSS:function(){if(this.isInit)return!1;var e=this.index,i=this.rss,s=this.blogData;t.get(i,function(i){for(var n=t(i).find("item"),o=0;n&&o<n.length;o++){var r=n.eq(o),l={id:o+1,title:r.find("title").text(),description:r.find("description").text(),category:r.find("category").text(),pubDate:r.find("pubDate").text(),link:r.find("link").text()};e.add(l),s.push(l)}}),this.isInit=!0},find:function(e){var i=this.index.search(e),s=t(this.results),n=[];s.empty(),this.before&&this.before(),(this.zeroResultsInfo||i.length>0)&&this.displaySearchInfo&&s.append(this.format(this.info_template,{amount:i.length}));for(var o=0;o<i.length;o++){var r=this.blogData[i[o].ref-1];s.append(this.format(this.result_template,r)),n.push(r)}this.onComplete&&this.onComplete(n)},clear:function(){t(this.results).empty(),this.target.val("")},format:function(t,e){return t.replace(/{{([^{}]*)}}/g,function(t,i){var s=e[i];return"string"==typeof s||"number"==typeof s?s:t})}}}(jQuery);
diff --git a/sitemap_full.xml b/sitemap_full.xml
new file mode 100644
index 0000000..be981b6
--- /dev/null
+++ b/sitemap_full.xml
@@ -0,0 +1,37 @@
+---
+layout: null
+sitemap: false
+---
+<?xml version="1.0" encoding="UTF-8"?>
+<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
+<channel>
+ <title>{{ site.name | xml_escape }}</title>
+ <description>{{ site.description | xml_escape }}</description>
+ <link>{{ site.url }}</link>
+ <atom:link href="{{ site.url }}/search.xml" rel="self" type="application/rss+xml" />
+ {% for post in site.posts %}
+ {% if post.published != false %}
+ <item>
+ <title>{{ post.title | xml_escape }}</title>
+ <description>{{ post.content | xml_escape }}</description>
+ <pubDate>{{ post.date | date: "%a, %d %b %Y %H:%M:%S %z" }}</pubDate>
+ <link>{{ site.url }}{{ post.url }}</link>
+ <guid isPermaLink="true">{{ site.url }}{{ post.url }}</guid>
+ </item>
+ {% endif %}
+ {% endfor %}
+ {% for post in site.pages %}
+ {% if post.layout != "null" %}
+ {% if post.sitemap != false %}
+ <item>
+ <title>{{ post.title | xml_escape }}</title>
+ <description>{{ post.content | xml_escape }}</description>
+ <pubDate>{{ post.date | date: "%a, %d %b %Y %H:%M:%S %z" }}</pubDate>
+ <link>{{ site.url }}{{ post.url }}</link>
+ <guid isPermaLink="true">{{ site.url }}{{ post.url }}</guid>
+ </item>
+ {% endif %}
+ {% endif %}
+ {% endfor %}
+</channel>
+</rss> \ No newline at end of file