middleman/middleman-core/lib/middleman-core/meta_pages/sitemap_resource.rb

69 lines
2.0 KiB
Ruby

require 'padrino-helpers'
require 'padrino-helpers/output_helpers'
require 'padrino-helpers/tag_helpers'
module Middleman
module MetaPages
# View class for a sitemap resource
class SitemapResource
include Padrino::Helpers::OutputHelpers
include Padrino::Helpers::TagHelpers
def initialize(resource)
@resource = resource
end
def render
classes = 'resource-details'
classes << ' ignored' if @resource.ignored?
content_tag :div, class: classes do
content_tag :table do
content = ''
resource_properties.each do |label, value|
content << content_tag(:tr) do
row_content = ''
row_content << content_tag(:th, label)
row_content << content_tag(:td, value)
row_content.html_safe
end
end
content.html_safe
end
end
end
# A hash of label to value for all the properties we want to display
def resource_properties
props = {}
props['Path'] = @resource.path
build_path = @resource.destination_path
build_path = 'Not built' if ignored?
props['Build Path'] = build_path if @resource.path != build_path
props['URL'] = content_tag(:a, @resource.url, href: @resource.url) unless ignored?
props['Source File'] = @resource.source_file ? @resource.source_file.sub(/^#{Regexp.escape(ENV['MM_ROOT'] + '/')}/, '') : 'Dynamic'
data = @resource.data
props['Data'] = data.inspect unless data.empty?
meta = @resource.metadata
options = meta[:options]
props['Options'] = options.inspect unless options.empty?
locals = meta[:locals].keys
props['Locals'] = locals.join(', ') unless locals.empty?
props
end
def ignored?
@resource.ignored?
end
def css_classes
['resource'].concat(ignored? ? ['ignored'] : [])
end
end
end
end