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