Sha256: 8efd4be1c55cdc953af0a883d5206fe872de139b89ea8dc0a9ab07178874e604
Contents?: true
Size: 1.94 KB
Versions: 1
Compression:
Stored size: 1.94 KB
Contents
# frozen_string_literal: true require "fileutils" module Jekyll class JekyllSitemap < Jekyll::Generator safe true priority :lowest # Main plugin action, called by Jekyll-core def generate(site) @site = site @site.pages << sitemap unless file_exists?("sitemap.xml") @site.pages << robots unless file_exists?("robots.txt") end private INCLUDED_EXTENSIONS = %w( .htm .html .xhtml .pdf ).freeze # Matches all whitespace that follows # 1. A '>' followed by a newline or # 2. A '}' which closes a Liquid tag # We will strip all of this whitespace to minify the template MINIFY_REGEX = %r!(?<=>\n|})\s+!.freeze # Array of all non-jekyll site files with an HTML extension def static_files @site.static_files.select { |file| INCLUDED_EXTENSIONS.include? file.extname } end # Path to sitemap.xml template file def source_path(file = "sitemap.xml") File.expand_path "../#{file}", __dir__ end # Destination for sitemap.xml file within the site source directory def destination_path(file = "sitemap.xml") @site.in_dest_dir(file) end def sitemap site_map = PageWithoutAFile.new(@site, __dir__, "", "sitemap.xml") site_map.content = File.read(source_path).gsub(MINIFY_REGEX, "") site_map.data["layout"] = nil site_map.data["static_files"] = static_files.map(&:to_liquid) site_map.data["xsl"] = file_exists?("sitemap.xsl") site_map end def robots robots = PageWithoutAFile.new(@site, __dir__, "", "robots.txt") robots.content = File.read(source_path("robots.txt")) robots.data["layout"] = nil robots end # Checks if a file already exists in the site source def file_exists?(file_path) pages_and_files.any? { |p| p.url == "/#{file_path}" } end def pages_and_files @pages_and_files ||= @site.pages + @site.static_files end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
jekyll-sitemap-1.4.0 | lib/jekyll/jekyll-sitemap.rb |