class Middleman::Sitemap::Extensions::OnDisk

Public Class Methods

new(app, config={}, &block) click to toggle source
Calls superclass method Middleman::Extension::new
# File lib/middleman-core/sitemap/extensions/on_disk.rb, line 10
def initialize(app, config={}, &block)
  super

  @file_paths_on_disk = Set.new
  @waiting_for_ready = true
end

Public Instance Methods

before_configuration() click to toggle source
# File lib/middleman-core/sitemap/extensions/on_disk.rb, line 25
def before_configuration
  app.files.on_change(:source, &method(:update_files))
end
files_for_sitemap() click to toggle source
# File lib/middleman-core/sitemap/extensions/on_disk.rb, line 55
def files_for_sitemap
  @app.files.by_type(:source).files.reject(&method(:ignored?))
end
ignored?(file) click to toggle source
# File lib/middleman-core/sitemap/extensions/on_disk.rb, line 30
def ignored?(file)
  @app.config[:ignored_sitemap_matchers].any? do |_, callback|
    callback.call(file, @app)
  end
end
manipulate_resource_list(resources) click to toggle source
# File lib/middleman-core/sitemap/extensions/on_disk.rb, line 62
def manipulate_resource_list(resources)
  resources + files_for_sitemap.map do |file|
    ::Middleman::Sitemap::Resource.new(
      @app.sitemap,
      @app.sitemap.file_to_path(file),
      file
    )
  end
end
ready() click to toggle source
# File lib/middleman-core/sitemap/extensions/on_disk.rb, line 17
def ready
  @waiting_for_ready = false

  # Make sure the sitemap is ready for the first request
  app.sitemap.ensure_resource_list_updated!
end
update_files(updated_files, removed_files) click to toggle source
# File lib/middleman-core/sitemap/extensions/on_disk.rb, line 40
def update_files(updated_files, removed_files)
  return if (updated_files + removed_files).all?(&method(:ignored?))

  # Rebuild the sitemap any time a file is touched
  # in case one of the other manipulators
  # (like asset_hash) cares about the contents of this file,
  # whether or not it belongs in the sitemap (like a partial)
  @app.sitemap.rebuild_resource_list!(:touched_file)

  # Force sitemap rebuild so the next request is ready to go.
  # Skip this during build because the builder will control sitemap refresh.
  @app.sitemap.ensure_resource_list_updated! unless @waiting_for_ready || @app.build?
end