class Jekyll::RelatedPosts

Attributes

lsi[RW]
post[R]
site[R]

Public Class Methods

new(post) click to toggle source
# File lib/jekyll/related_posts.rb, line 11
def initialize(post)
  @post = post
  @site = post.site
  Jekyll::External.require_with_graceful_fail("classifier-reborn") if site.lsi
end

Public Instance Methods

build() click to toggle source
# File lib/jekyll/related_posts.rb, line 17
def build
  return [] unless site.posts.docs.size > 1

  if site.lsi
    build_index
    lsi_related_posts
  else
    most_recent_posts
  end
end
build_index() click to toggle source
# File lib/jekyll/related_posts.rb, line 28
def build_index
  self.class.lsi ||= begin
    lsi = ClassifierReborn::LSI.new(:auto_rebuild => false)
    Jekyll.logger.info("Populating LSI...")

    site.posts.docs.each do |x|
      lsi.add_item(x)
    end

    Jekyll.logger.info("Rebuilding index...")
    lsi.build_index
    Jekyll.logger.info("")
    lsi
  end
end
most_recent_posts() click to toggle source
# File lib/jekyll/related_posts.rb, line 48
def most_recent_posts
  @most_recent_posts ||= (site.posts.docs.last(11).reverse! - [post]).first(10)
end