lib/jekyll-feed.rb in jekyll-feed-0.3.1 vs lib/jekyll-feed.rb in jekyll-feed-0.4.0
- old
+ new
@@ -1,14 +1,20 @@
-require 'fileutils'
+require "fileutils"
module Jekyll
class PageWithoutAFile < Page
def read_yaml(*)
@data ||= {}
end
end
+ module StripWhitespace
+ def strip(input)
+ input.to_s.strip
+ end
+ end
+
class FeedMetaTag < Liquid::Tag
def config
@context.registers[:site].config
end
@@ -50,42 +56,26 @@
# Main plugin action, called by Jekyll-core
def generate(site)
@site = site
@site.config["time"] = Time.new
unless feed_exists?
- write
- @site.keep_files ||= []
- @site.keep_files << path
+ @site.pages << feed_content
end
end
# Path to feed.xml template file
def source_path
File.expand_path "feed.xml", File.dirname(__FILE__)
end
- # Destination for feed.xml file within the site source directory
- def destination_path
- if @site.respond_to?(:in_dest_dir)
- @site.in_dest_dir(path)
- else
- Jekyll.sanitized_path(@site.dest, path)
- end
- end
-
- # copy feed template from source to destination
- def write
- FileUtils.mkdir_p File.dirname(destination_path)
- File.open(destination_path, 'w') { |f| f.write(feed_content) }
- end
-
def feed_content
- site_map = PageWithoutAFile.new(@site, File.dirname(__FILE__), "", path)
- site_map.content = File.read(source_path).gsub(/\s*\n\s*/, "\n").gsub(/\n{%/, "{%")
- site_map.data["layout"] = nil
- site_map.render(Hash.new, @site.site_payload)
- site_map.output
+ feed = PageWithoutAFile.new(@site, File.dirname(__FILE__), "", path)
+ feed.content = File.read(source_path).gsub(/\s*\n\s*/, "\n").gsub(/\s+{%/, "{%").gsub(/\s+</,"<")
+ feed.data["layout"] = nil
+ feed.data["sitemap"] = false
+ feed.output
+ feed
end
# Checks if a feed already exists in the site source
def feed_exists?
if @site.respond_to?(:in_source_dir)
@@ -95,6 +85,10 @@
end
end
end
end
-Liquid::Template.register_tag('feed_meta', Jekyll::FeedMetaTag)
+unless defined? Liquid::StandardFilters.strip
+ Liquid::Template.register_filter(Jekyll::StripWhitespace)
+end
+
+Liquid::Template.register_tag("feed_meta", Jekyll::FeedMetaTag)