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 9
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 15
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 26
def build_index
  self.class.lsi ||= begin
    lsi = ClassifierReborn::LSI.new(:auto_rebuild => false)
    display("Populating LSI...")

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

    display("Rebuilding index...")
    lsi.build_index
    display("")
    lsi
  end
end
display(output) click to toggle source
# File lib/jekyll/related_posts.rb, line 50
def display(output)
  $stdout.print("\n")
  $stdout.print(Jekyll.logger.formatted_topic(output))
  $stdout.flush
end
most_recent_posts() click to toggle source
# File lib/jekyll/related_posts.rb, line 46
def most_recent_posts
  @most_recent_posts ||= (site.posts.docs.reverse - [post]).first(10)
end