module Middleman::Sitemap::Extensions::Traversal
Public Instance Methods
children()
click to toggle source
This resource’s child resources @return [Array<Middleman::Sitemap::Resource>]
# File lib/middleman-core/sitemap/extensions/traversal.rb, line 30 def children return [] unless directory_index? if eponymous_directory? base_path = eponymous_directory_path prefix = %r{^#{base_path.sub("/", "\\/")}} else base_path = path.sub("#{app.index_file}", '') prefix = %r{^#{base_path.sub("/", "\\/")}} end store.resources.select do |sub_resource| if sub_resource.path == path || sub_resource.path !~ prefix false else inner_path = sub_resource.path.sub(prefix, '') parts = inner_path.split('/') if parts.length == 1 true elsif parts.length == 2 parts.last == app.index_file else false end end end end
directory_index?()
click to toggle source
Whether this resource either a directory index, or has the same name as an existing directory in the source @return [Boolean]
# File lib/middleman-core/sitemap/extensions/traversal.rb, line 67 def directory_index? path.include?(app.index_file) || path =~ /\/$/ || eponymous_directory? end
eponymous_directory?()
click to toggle source
Whether the resource has the same name as a directory in the source (e.g., if the resource is named ‘gallery.html’ and a path exists named ‘gallery/’, this would return true) @return [Boolean]
# File lib/middleman-core/sitemap/extensions/traversal.rb, line 74 def eponymous_directory? if !path.end_with?("/#{app.index_file}") && destination_path.end_with?("/#{app.index_file}") return true end full_path = File.join(app.source_dir, eponymous_directory_path) File.exist?(full_path) && File.directory?(full_path) end
eponymous_directory_path()
click to toggle source
The path for this resource if it were a directory, and not a file (e.g., for ‘gallery.html’ this would return ‘gallery/’) @return [String]
# File lib/middleman-core/sitemap/extensions/traversal.rb, line 86 def eponymous_directory_path path.sub(ext, '/').sub(/\/$/, '') + '/' end
parent()
click to toggle source
This resource’s parent resource @return [Middleman::Sitemap::Resource, nil]
# File lib/middleman-core/sitemap/extensions/traversal.rb, line 7 def parent parts = path.split('/') tail = parts.pop is_index = (tail == app.index_file) return nil if is_index && parts.length < 1 test_expr = parts.join('\\/') # A makeshift for eponymous reverse-lookup found = store.resources.find do |candidate| candidate.path =~ %r{^#{test_expr}(?:\.[a-zA-Z0-9]+|\/)$} end if found found else parts.pop if is_index store.find_resource_by_destination_path("#{parts.join('/')}/#{app.index_file}") end end
siblings()
click to toggle source
This resource’s sibling resources @return [Array<Middleman::Sitemap::Resource>]
# File lib/middleman-core/sitemap/extensions/traversal.rb, line 60 def siblings return [] unless parent parent.children.reject { |p| p == self } end