~xdavidwu/xdavidwu.link

877ec9ca2f34086847433a3b4163d6c9e1a2e6a6 — Nick Garlis 6 years ago a726e30
 Minimize JSON data (#1449)

* Remove Lunr trimmer & bring back colons

* Add Greek Stemmer

* Translate search_placeholder_text and results_found to Greek

* Minimize JSON data

* Truncate Words

* Move store variable into a new file

* Move Lunr files into a new folder

* Add defer to lunr scripts

* Add search_full_content switch
6 files changed, 64 insertions(+), 88 deletions(-)

M _config.yml
M _includes/scripts.html
R assets/js/{lunr-en.js => lunr/lunr-en.js}
R assets/js/{lunr-gr.js => lunr/lunr-gr.js}
A assets/js/lunr/lunr-store.js
R assets/js/{lunr.min.js => lunr/lunr.min.js}
M _config.yml => _config.yml +2 -1
@@ 8,7 8,7 @@
minimal_mistakes_skin    : "default" # "air", "aqua", "contrast", "dark", "dirt", "neon", "mint", "plum", "sunrise"

# Site Settings
locale                   : "en"
locale                   : "en-US"
title                    : "Site Title"
title_separator          : "-"
name                     : "Your Name"


@@ 52,6 52,7 @@ reCaptcha:
atom_feed:
  path                   : # blank (default) uses feed.xml
search                   : # true, false (default)
search_full_content      : # true, false (default)

# SEO Related
google_site_verification :

M _includes/scripts.html => _includes/scripts.html +3 -2
@@ 20,8 20,9 @@
  {% else %}
    {% assign lang = "en" %}
  {% endcase %}
  <script src="{{ '/assets/js/lunr.min.js' | absolute_url }}"></script>
  <script src="{{ '/assets/js/lunr-' | append: lang | append: '.js' | absolute_url }}"></script>
  <script defer src="{{ '/assets/js/lunr/lunr.min.js' | absolute_url }}"></script>
  <script defer src="{{ '/assets/js/lunr/lunr-store.js' | absolute_url }}"></script>
  <script defer src="{{ '/assets/js/lunr/lunr-' | append: lang | append: '.js' | absolute_url }}"></script>
{% endif %}

{% include analytics.html %}

R assets/js/lunr-en.js => assets/js/lunr/lunr-en.js +12 -43
@@ 11,50 11,19 @@ var idx = lunr(function () {

  this.pipeline.remove(lunr.trimmer)

  {% assign count = 0 %}
  {% for c in site.collections %}
    {% assign docs = c.docs | where_exp:'doc','doc.search != false' %}
    {% for doc in docs %}
      this.add({
          title: {{ doc.title | jsonify }},
          excerpt: {{ doc.content | strip_html | truncatewords: 20 | jsonify }},
          categories: {{ doc.categories | jsonify }},
          tags: {{ doc.tags | jsonify }},
          id: {{ count }}
      })
      {% assign count = count | plus: 1 %}
    {% endfor %}
  {% endfor %}
  for (var item in store) {
    this.add({
      title: store[item].title,
      excerpt: store[item].excerpt,
      categories: store[item].categories,
      tags: store[item].tags,
      id: item
    })
  }
});

console.log( jQuery.type(idx) );

var store = [
  {% for c in site.collections %}
    {% if forloop.last %}
      {% assign l = true %}
    {% endif %}
    {% assign docs = c.docs | where_exp:'doc','doc.search != false' %}
    {% for doc in docs %}
      {% if doc.header.teaser %}
        {% capture teaser %}{{ doc.header.teaser }}{% endcapture %}
      {% else %}
        {% assign teaser = site.teaser %}
      {% endif %}
      {
        "title": {{ doc.title | jsonify }},
        "url": {{ doc.url | absolute_url | jsonify }},
        "excerpt": {{ doc.content | strip_html | truncatewords: 20 | jsonify }},
        "teaser":
          {% if teaser contains "://" %}
            {{ teaser | jsonify }}
          {% else %}
            {{ teaser | absolute_url | jsonify }}
          {% endif %}
      }{% unless forloop.last and l %},{% endunless %}
    {% endfor %}
  {% endfor %}]

$(document).ready(function() {
  $('input#search').on('keyup', function () {
    var resultdiv = $('#results');


@@ 62,7 31,7 @@ $(document).ready(function() {
    var result =
      idx.query(function (q) {
        query.split(lunr.tokenizer.separator).forEach(function (term) {
          q.term(term, {  boost: 100 })
          q.term(term, { boost: 100 })
          if(query.lastIndexOf(" ") != query.length-1){
            q.term(term, {  usePipeline: false, wildcard: lunr.Query.wildcard.TRAILING, boost: 10 })
          }


@@ 85,7 54,7 @@ $(document).ready(function() {
              '<div class="archive__item-teaser">'+
                '<img src="'+store[ref].teaser+'" alt="">'+
              '</div>'+
              '<p class="archive__item-excerpt" itemprop="description">'+store[ref].excerpt+'</p>'+
              '<p class="archive__item-excerpt" itemprop="description">'+store[ref].excerpt.split(" ").splice(0,20).join(" ")+'...</p>'+
            '</article>'+
          '</div>';
      }


@@ 96,7 65,7 @@ $(document).ready(function() {
              '<h2 class="archive__item-title" itemprop="headline">'+
                '<a href="'+store[ref].url+'" rel="permalink">'+store[ref].title+'</a>'+
              '</h2>'+
              '<p class="archive__item-excerpt" itemprop="description">'+store[ref].excerpt+'</p>'+
              '<p class="archive__item-excerpt" itemprop="description">'+store[ref].excerpt.split(" ").splice(0,20).join(" ")+'...</p>'+
            '</article>'+
          '</div>';
      }

R assets/js/lunr-gr.js => assets/js/lunr/lunr-gr.js +11 -42
@@ 464,50 464,19 @@ var idx = lunr(function () {
  this.pipeline.add(greekStemmer)
  this.pipeline.remove(lunr.stemmer)

  {% assign count = 0 %}
  {% for c in site.collections %}
    {% assign docs = c.docs | where_exp:'doc','doc.search != false' %}
    {% for doc in docs %}
      this.add({
          title: {{ doc.title | jsonify }},
          excerpt: {{ doc.content | strip_html | truncatewords: 20 | jsonify }},
          categories: {{ doc.categories | jsonify }},
          tags: {{ doc.tags | jsonify }},
          id: {{ count }}
      })
      {% assign count = count | plus: 1 %}
    {% endfor %}
  {% endfor %}
  for (var item in store) {
    this.add({
      title: store[item].title,
      excerpt: store[item].excerpt,
      categories: store[item].categories,
      tags: store[item].tags,
      id: item
    })
  }
});

console.log( jQuery.type(idx) );

var store = [
  {% for c in site.collections %}
    {% if forloop.last %}
      {% assign l = true %}
    {% endif %}
    {% assign docs = c.docs | where_exp:'doc','doc.search != false' %}
    {% for doc in docs %}
      {% if doc.header.teaser %}
        {% capture teaser %}{{ doc.header.teaser }}{% endcapture %}
      {% else %}
        {% assign teaser = site.teaser %}
      {% endif %}
      {
        "title": {{ doc.title | jsonify }},
        "url": {{ doc.url | absolute_url | jsonify }},
        "excerpt": {{ doc.content | strip_html | truncatewords: 20 | jsonify }},
        "teaser":
          {% if teaser contains "://" %}
            {{ teaser | jsonify }}
          {% else %}
            {{ teaser | absolute_url | jsonify }}
          {% endif %}
      }{% unless forloop.last and l %},{% endunless %}
    {% endfor %}
  {% endfor %}]

$(document).ready(function() {
  $('input#search').on('keyup', function () {
    var resultdiv = $('#results');


@@ 538,7 507,7 @@ $(document).ready(function() {
              '<div class="archive__item-teaser">'+
                '<img src="'+store[ref].teaser+'" alt="">'+
              '</div>'+
              '<p class="archive__item-excerpt" itemprop="description">'+store[ref].excerpt+'</p>'+
              '<p class="archive__item-excerpt" itemprop="description">'+store[ref].excerpt.split(" ").splice(0,20).join(" ")+'...</p>'+
            '</article>'+
          '</div>';
      }


@@ 549,7 518,7 @@ $(document).ready(function() {
              '<h2 class="archive__item-title" itemprop="headline">'+
                '<a href="'+store[ref].url+'" rel="permalink">'+store[ref].title+'</a>'+
              '</h2>'+
              '<p class="archive__item-excerpt" itemprop="description">'+store[ref].excerpt+'</p>'+
              '<p class="archive__item-excerpt" itemprop="description">'+store[ref].excerpt.split(" ").splice(0,20).join(" ")+'...</p>'+
            '</article>'+
          '</div>';
      }

A assets/js/lunr/lunr-store.js => assets/js/lunr/lunr-store.js +36 -0
@@ 0,0 1,36 @@
---
layout: null
---

var store = [
  {% for c in site.collections %}
    {% if forloop.last %}
      {% assign l = true %}
    {% endif %}
    {% assign docs = c.docs | where_exp:'doc','doc.search != false' %}
    {% for doc in docs %}
      {% if doc.header.teaser %}
        {% capture teaser %}{{ doc.header.teaser }}{% endcapture %}
      {% else %}
        {% assign teaser = site.teaser %}
      {% endif %}
      {
        "title": {{ doc.title | jsonify }},
        "excerpt":
          {% if site.search_full_content == true %}
            {{ doc.content | strip_html | strip_newlines | jsonify }},
          {% else %}
            {{ doc.content | strip_html | strip_newlines | truncatewords: 50 | jsonify }},
          {% endif %}
        "categories": {{ doc.categories | jsonify }},
        "tags": {{ doc.tags | jsonify }},
        "url": {{ doc.url | absolute_url | jsonify }},
        "teaser":
          {% if teaser contains "://" %}
            {{ teaser | jsonify }}
          {% else %}
            {{ teaser | absolute_url | jsonify }}
          {% endif %}
      }{% unless forloop.last and l %},{% endunless %}
    {% endfor %}
  {% endfor %}]

R assets/js/lunr.min.js => assets/js/lunr/lunr.min.js +0 -0