class JekyllFeed::Generator

Constants

MINIFY_REGEX

Matches all whitespace that follows

1. A '>', which closes an XML tag or
2. A '}', which closes a Liquid tag

We will strip all of this whitespace to minify the template

Public Instance Methods

generate(site) click to toggle source

Main plugin action, called by Jekyll-core

# File lib/jekyll-feed/generator.rb, line 9
def generate(site)
  @site = site
  return if file_exists?(feed_path)
  @site.pages << content_for_file(feed_path, feed_source_path)
end

Private Instance Methods

content_for_file(file_path, file_source_path) click to toggle source

Generates contents for a file

# File lib/jekyll-feed/generator.rb, line 47
def content_for_file(file_path, file_source_path)
  file = PageWithoutAFile.new(@site, __dir__, "", file_path)
  file.content = File.read(file_source_path).gsub(MINIFY_REGEX, "")
  file.data["layout"] = nil
  file.data["sitemap"] = false
  file.data["xsl"] = file_exists?("feed.xslt.xml")
  file.output
  file
end
feed_path() click to toggle source

Path to feed from config, or feed.xml for default

# File lib/jekyll-feed/generator.rb, line 24
def feed_path
  if @site.config["feed"] && @site.config["feed"]["path"]
    @site.config["feed"]["path"]
  else
    "feed.xml"
  end
end
feed_source_path() click to toggle source

Path to feed.xml template file

# File lib/jekyll-feed/generator.rb, line 33
def feed_source_path
  File.expand_path "feed.xml", __dir__
end
file_exists?(file_path) click to toggle source

Checks if a file already exists in the site source

# File lib/jekyll-feed/generator.rb, line 38
def file_exists?(file_path)
  if @site.respond_to?(:in_source_dir)
    File.exist? @site.in_source_dir(file_path)
  else
    File.exist? Jekyll.sanitized_path(@site.source, file_path)
  end
end