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.



326
327
328
# File 'lib/starter_web/_plugins/lunr_index.rb', line 326

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.



324
325
326
# File 'lib/starter_web/_plugins/lunr_index.rb', line 324

def body
  @body
end

#categoriesObject (readonly)

Returns the value of attribute categories.



324
325
326
# File 'lib/starter_web/_plugins/lunr_index.rb', line 324

def categories
  @categories
end

#collectionObject (readonly)

Returns the value of attribute collection.



324
325
326
# File 'lib/starter_web/_plugins/lunr_index.rb', line 324

def collection
  @collection
end

#dateObject (readonly)

Returns the value of attribute date.



324
325
326
# File 'lib/starter_web/_plugins/lunr_index.rb', line 324

def date
  @date
end

#descriptionObject (readonly)

Returns the value of attribute description.



324
325
326
# File 'lib/starter_web/_plugins/lunr_index.rb', line 324

def description
  @description
end

#is_postObject (readonly)

Returns the value of attribute is_post.



324
325
326
# File 'lib/starter_web/_plugins/lunr_index.rb', line 324

def is_post
  @is_post
end

#taglineObject (readonly)

Returns the value of attribute tagline.



324
325
326
# File 'lib/starter_web/_plugins/lunr_index.rb', line 324

def tagline
  @tagline
end

#tagsObject (readonly)

Returns the value of attribute tags.



324
325
326
# File 'lib/starter_web/_plugins/lunr_index.rb', line 324

def tags
  @tags
end

#titleObject (readonly)

Returns the value of attribute title.



324
325
326
# File 'lib/starter_web/_plugins/lunr_index.rb', line 324

def title
  @title
end

#urlObject (readonly)

Returns the value of attribute url.



324
325
326
# File 'lib/starter_web/_plugins/lunr_index.rb', line 324

def url
  @url
end

Class Method Details

.create(site, renderer) ⇒ Object



275
276
277
278
279
280
281
282
283
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
# File 'lib/starter_web/_plugins/lunr_index.rb', line 275

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 = '2021-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



316
317
318
319
320
321
322
# File 'lib/starter_web/_plugins/lunr_index.rb', line 316

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



311
312
313
314
# File 'lib/starter_web/_plugins/lunr_index.rb', line 311

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



330
331
332
# File 'lib/starter_web/_plugins/lunr_index.rb', line 330

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



337
338
339
340
341
342
343
# File 'lib/starter_web/_plugins/lunr_index.rb', line 337

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