implement a real related posts feature. up to 0.1.2
This commit is contained in:
parent
4d42e0d436
commit
c742fb7701
|
@ -1,4 +1,6 @@
|
|||
== 0.1.2 /
|
||||
== 0.1.2 / 2008-11-22
|
||||
* Major Features
|
||||
* Add a real "related posts" implementation using Classifier
|
||||
* Command Line Changes
|
||||
* Allow cli to be called with 0, 1, or 2 args intuiting dir paths
|
||||
if they are omitted
|
||||
|
|
2
Rakefile
2
Rakefile
|
@ -6,7 +6,7 @@ Hoe.new('jekyll', Jekyll::VERSION) do |p|
|
|||
# p.rubyforge_name = 'jekyllx' # if different than lowercase project name
|
||||
p.developer('Tom Preston-Werner', 'tom@mojombo.com')
|
||||
p.summary = "Jekyll is a simple, blog aware, static site generator."
|
||||
p.extra_deps = ['RedCloth', 'liquid']
|
||||
p.extra_deps = ['RedCloth', 'liquid', 'classifier']
|
||||
end
|
||||
|
||||
desc "Open an irb session preloaded with this library"
|
||||
|
|
|
@ -7,6 +7,7 @@ require 'jekyll'
|
|||
case ARGV.size
|
||||
when 0
|
||||
dest = File.join('.', '_site')
|
||||
FileUtils.rm_rf(dest)
|
||||
FileUtils.mkdir_p(dest)
|
||||
Jekyll.process('.', dest)
|
||||
when 1
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
Gem::Specification.new do |s|
|
||||
s.name = %q{jekyll}
|
||||
s.version = "0.1.1"
|
||||
s.version = "0.1.2"
|
||||
|
||||
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
||||
s.authors = ["Tom Preston-Werner"]
|
||||
|
@ -25,15 +25,18 @@ Gem::Specification.new do |s|
|
|||
if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
|
||||
s.add_runtime_dependency(%q<RedCloth>, [">= 0"])
|
||||
s.add_runtime_dependency(%q<liquid>, [">= 0"])
|
||||
s.add_runtime_dependency(%q<classifier>, [">= 0"])
|
||||
s.add_development_dependency(%q<hoe>, [">= 1.8.0"])
|
||||
else
|
||||
s.add_dependency(%q<RedCloth>, [">= 0"])
|
||||
s.add_dependency(%q<liquid>, [">= 0"])
|
||||
s.add_dependency(%q<classifier>, [">= 0"])
|
||||
s.add_dependency(%q<hoe>, [">= 1.8.0"])
|
||||
end
|
||||
else
|
||||
s.add_dependency(%q<RedCloth>, [">= 0"])
|
||||
s.add_dependency(%q<liquid>, [">= 0"])
|
||||
s.add_dependency(%q<classifier>, [">= 0"])
|
||||
s.add_dependency(%q<hoe>, [">= 1.8.0"])
|
||||
end
|
||||
end
|
||||
|
|
|
@ -12,6 +12,7 @@ require 'time'
|
|||
# 3rd party
|
||||
require 'liquid'
|
||||
require 'redcloth'
|
||||
require 'classifier'
|
||||
|
||||
# internal requires
|
||||
require 'jekyll/site'
|
||||
|
@ -22,7 +23,7 @@ require 'jekyll/post'
|
|||
require 'jekyll/filters'
|
||||
|
||||
module Jekyll
|
||||
VERSION = '0.1.1'
|
||||
VERSION = '0.1.2'
|
||||
|
||||
def self.process(source, dest)
|
||||
Jekyll::Site.new(source, dest).process
|
||||
|
|
|
@ -1,5 +1,10 @@
|
|||
module Jekyll
|
||||
module Convertible
|
||||
# Return the contents as a string
|
||||
def to_s
|
||||
self.content || ''
|
||||
end
|
||||
|
||||
# Read the YAML frontmatter
|
||||
# +base+ is the String path to the dir containing the file
|
||||
# +name+ is the String filename of the file
|
||||
|
|
|
@ -4,6 +4,10 @@ module Jekyll
|
|||
include Comparable
|
||||
include Convertible
|
||||
|
||||
class << self
|
||||
attr_accessor :lsi
|
||||
end
|
||||
|
||||
MATCHER = /^(\d+-\d+-\d+)-(.*)(\.[^.]+)$/
|
||||
|
||||
# Post name validator. Post filenames must be like:
|
||||
|
@ -77,7 +81,14 @@ module Jekyll
|
|||
#
|
||||
# Returns [<Post>]
|
||||
def related_posts(posts)
|
||||
related = posts - [self]
|
||||
self.class.lsi ||= begin
|
||||
lsi = Classifier::LSI.new
|
||||
posts.each { |x| lsi.add_item(x) }
|
||||
lsi
|
||||
end
|
||||
|
||||
related = self.class.lsi.find_related(self.content, 11)
|
||||
related - [self]
|
||||
end
|
||||
|
||||
# Add any necessary layouts to this post
|
||||
|
|
Loading…
Reference in New Issue