Class: Jekyll::J1LunrSearch::SearchEntry

Inherits:
Object
  • Object
show all
Defined in:
lib/starter_web/_plugins/lunr_index.rb

Overview

noinspection RubyTooManyInstanceVariablesInspection

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(title, tagline, url, date, tags, categories, description, is_post, body, collection) ⇒ SearchEntry

Returns a new instance of SearchEntry.



335
336
337
# File 'lib/starter_web/_plugins/lunr_index.rb', line 335

def initialize(title, tagline, url, date, tags, categories, description, is_post, body, collection)
  @title, @tagline, @url, @date,@tags,  @categories, @description, @is_post, @body, @collection = title, tagline, url, date, tags, categories, description, is_post, body, collection
end

Instance Attribute Details

#bodyObject (readonly)

Returns the value of attribute body.



333
334
335
# File 'lib/starter_web/_plugins/lunr_index.rb', line 333

def body
  @body
end

#categoriesObject (readonly)

Returns the value of attribute categories.



333
334
335
# File 'lib/starter_web/_plugins/lunr_index.rb', line 333

def categories
  @categories
end

#collectionObject (readonly)

Returns the value of attribute collection.



333
334
335
# File 'lib/starter_web/_plugins/lunr_index.rb', line 333

def collection
  @collection
end

#dateObject (readonly)

Returns the value of attribute date.



333
334
335
# File 'lib/starter_web/_plugins/lunr_index.rb', line 333

def date
  @date
end

#descriptionObject (readonly)

Returns the value of attribute description.



333
334
335
# File 'lib/starter_web/_plugins/lunr_index.rb', line 333

def description
  @description
end

#is_postObject (readonly)

Returns the value of attribute is_post.



333
334
335
# File 'lib/starter_web/_plugins/lunr_index.rb', line 333

def is_post
  @is_post
end

#taglineObject (readonly)

Returns the value of attribute tagline.



333
334
335
# File 'lib/starter_web/_plugins/lunr_index.rb', line 333

def tagline
  @tagline
end

#tagsObject (readonly)

Returns the value of attribute tags.



333
334
335
# File 'lib/starter_web/_plugins/lunr_index.rb', line 333

def tags
  @tags
end

#titleObject (readonly)

Returns the value of attribute title.



333
334
335
# File 'lib/starter_web/_plugins/lunr_index.rb', line 333

def title
  @title
end

#urlObject (readonly)

Returns the value of attribute url.



333
334
335
# File 'lib/starter_web/_plugins/lunr_index.rb', line 333

def url
  @url
end

Class Method Details

.create(site, renderer) ⇒ Object



284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
# File 'lib/starter_web/_plugins/lunr_index.rb', line 284

def self.create(site, renderer)
  if site.is_a?(Jekyll::Page) or site.is_a?(Jekyll::Document)

    if defined?(site.date)
      date = site.date
    elsif defined?(site.data['date'])
      date = site.data['date']
    else
      date = '2022-01-01 00:00:00'
    end

    tagline     = site.data['tagline']
    tags        = site.data['tags']
    categories  = site.data['categories']
    description = site.data['description']
    title, url  = extract_title_and_url(site)
    is_post     = site.is_a?(Jekyll::Document)
    body        = renderer.render(site)

    if description.nil? || description.length == 0
      description = 'No description available.'
    end

    if site.is_a?(Jekyll::Document)
      excerpt = extract_excerpt(site)
      unless excerpt.nil? || excerpt.length == 0
        description = excerpt
      end
    end

    SearchEntry.new(title, tagline, url, date, tags, categories, description, is_post, body, renderer)
  else
    raise 'Not supported'
  end
end

.extract_excerpt(item) ⇒ Object



325
326
327
328
329
330
331
# File 'lib/starter_web/_plugins/lunr_index.rb', line 325

def self.extract_excerpt(item)
  data = item.to_liquid
  parsed_data = Nokogiri::HTML.parse(data['excerpt']).text
  parsed_data.gsub!(/\n+/, ' ')
  parsed_data.gsub!(/^\s+/, '')
  parsed_data.gsub!(/\s+$/, '')
end

.extract_title_and_url(item) ⇒ Object



320
321
322
323
# File 'lib/starter_web/_plugins/lunr_index.rb', line 320

def self.extract_title_and_url(item)
  data = item.to_liquid
  [ data['title'], data['url'] ]
end

Instance Method Details

#strip_index_suffix_from_url!Object



339
340
341
# File 'lib/starter_web/_plugins/lunr_index.rb', line 339

def strip_index_suffix_from_url!
  @url.gsub!(/index\.html$/, '')
end

#strip_stopwords!(stopwords, min_length) ⇒ Object

remove anything that is in the stop words list from the text to be indexed



346
347
348
349
350
351
352
# File 'lib/starter_web/_plugins/lunr_index.rb', line 346

def strip_stopwords!(stopwords, min_length)
  #noinspection RubyParenthesesAfterMethodCallInspection
  @body = @body.split.delete_if() do |x|
    t = x.downcase.gsub(/[^a-z]/, '')
    t.length < min_length || stopwords.include?(t)
  end.join(' ')
end