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.



307
308
309
# File 'lib/starter_web/_plugins/lunr_index.rb', line 307

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.



305
306
307
# File 'lib/starter_web/_plugins/lunr_index.rb', line 305

def body
  @body
end

#categoriesObject (readonly)

Returns the value of attribute categories.



305
306
307
# File 'lib/starter_web/_plugins/lunr_index.rb', line 305

def categories
  @categories
end

#collectionObject (readonly)

Returns the value of attribute collection.



305
306
307
# File 'lib/starter_web/_plugins/lunr_index.rb', line 305

def collection
  @collection
end

#dateObject (readonly)

Returns the value of attribute date.



305
306
307
# File 'lib/starter_web/_plugins/lunr_index.rb', line 305

def date
  @date
end

#descriptionObject (readonly)

Returns the value of attribute description.



305
306
307
# File 'lib/starter_web/_plugins/lunr_index.rb', line 305

def description
  @description
end

#is_postObject (readonly)

Returns the value of attribute is_post.



305
306
307
# File 'lib/starter_web/_plugins/lunr_index.rb', line 305

def is_post
  @is_post
end

#taglineObject (readonly)

Returns the value of attribute tagline.



305
306
307
# File 'lib/starter_web/_plugins/lunr_index.rb', line 305

def tagline
  @tagline
end

#tagsObject (readonly)

Returns the value of attribute tags.



305
306
307
# File 'lib/starter_web/_plugins/lunr_index.rb', line 305

def tags
  @tags
end

#titleObject (readonly)

Returns the value of attribute title.



305
306
307
# File 'lib/starter_web/_plugins/lunr_index.rb', line 305

def title
  @title
end

#urlObject (readonly)

Returns the value of attribute url.



305
306
307
# File 'lib/starter_web/_plugins/lunr_index.rb', line 305

def url
  @url
end

Class Method Details

.create(site, renderer) ⇒ Object



256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
# File 'lib/starter_web/_plugins/lunr_index.rb', line 256

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



297
298
299
300
301
302
303
# File 'lib/starter_web/_plugins/lunr_index.rb', line 297

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



292
293
294
295
# File 'lib/starter_web/_plugins/lunr_index.rb', line 292

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



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

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



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

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