Sha256: a5fb66c11fa13b6354ae3457243b012dde055300970362b8f1ce6f60422e38ce
Contents?: true
Size: 1.82 KB
Versions: 1
Compression:
Stored size: 1.82 KB
Contents
module Middleman module Sitemap module Extensions # Class to handle managing ignores class Ignores < Extension # Expose `create_ignore` as `app.ignore` expose_to_application ignore: :create_ignore # Expose `create_ignore` to config as `ignore` expose_to_config ignore: :create_ignore def initialize(app, config={}, &block) super # Array of callbacks which can assign ignored @ignored_callbacks = Set.new @app.sitemap.define_singleton_method(:ignored?, &method(:ignored?)) end # Ignore a path or add an ignore callback # @param [String, Regexp] path Path glob expression, or path regex # @return [void] Contract Maybe[Or[String, Regexp]], Maybe[Proc] => Any def create_ignore(path=nil, &block) if path.is_a? Regexp @ignored_callbacks << proc { |p| p =~ path } elsif path.is_a? String path_clean = ::Middleman::Util.normalize_path(path) if path_clean.include?('*') # It's a glob @ignored_callbacks << proc { |p| File.fnmatch(path_clean, p) } else # Add a specific-path ignore unless that path is already covered return if ignored?(path_clean) @ignored_callbacks << proc { |p| p == path_clean } end elsif block_given? @ignored_callbacks << block end @app.sitemap.invalidate_resources_not_ignored_cache! end # Whether a path is ignored # @param [String] path # @return [Boolean] Contract String => Bool def ignored?(path) path_clean = ::Middleman::Util.normalize_path(path) @ignored_callbacks.any? { |b| b.call(path_clean) } end end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
middleman-core-4.0.0.beta.2 | lib/middleman-core/sitemap/extensions/ignores.rb |