class Contentful::MiddlemanPages::Extension
Constants
- SOURCE_PATH
Public Class Methods
new(app, options, &block)
click to toggle source
Calls superclass method
# File lib/contentful/middleman-pages/extension.rb, line 61 def initialize(app, options, &block) super @contentful_resources = [] end
Public Instance Methods
after_configuration()
click to toggle source
Middleman hooks
# File lib/contentful/middleman-pages/extension.rb, line 70 def after_configuration massage_options end
manipulate_resource_list(resources)
click to toggle source
# File lib/contentful/middleman-pages/extension.rb, line 74 def manipulate_resource_list(resources) new_resources_list = resources @contentful_resources += options.data.map do |entry_id, entry_data| expanded_permalink = expand_permalink entry_data resource = ::Middleman::Sitemap::Resource.new( @app.sitemap, expanded_permalink, options.template ) resource.extend ResourceInstanceMethods resource.data = entry_data resource.add_metadata locals: entry_data if (index = is_existing_resource?(resource, new_resources_list)) new_resources_list[index] = resource else new_resources_list << resource end resource end (resources + @contentful_resources).map do |resource| contentful_metadata = resource.metadata.fetch(:locals).fetch(:contentful, {}.to_hashugar) contentful_metadata[@space_name] = {@content_type_name => @contentful_resources}.to_hashugar resource.add_metadata locals: {contentful: contentful_metadata} resource end new_resources_list end
Private Instance Methods
apply_prefix_option()
click to toggle source
# File lib/contentful/middleman-pages/extension.rb, line 108 def apply_prefix_option unless options.prefix.nil? options.template = ::File.join(options.prefix, options.template) template_path = ::File.join(::File.expand_path(::Dir.pwd), SOURCE_PATH, options.template) app.logger.warn "contentful_pages: template not found at #{template_path}" unless ::File.exist?(template_path) options.permalink = ::File.join(options.prefix, options.permalink) unless options.permalink.nil? end end
expand_permalink(entry_data)
click to toggle source
# File lib/contentful/middleman-pages/extension.rb, line 119 def expand_permalink(entry_data) apply_uri_template(uri_template, entry_data).to_s end
is_existing_resource?(resource, resources)
click to toggle source
# File lib/contentful/middleman-pages/extension.rb, line 123 def is_existing_resource?(resource, resources) resource_id = resource.data.fetch("id") resources.find_index do |existing_resource| existing_resource.data["id"] == resource_id end end
massage_data_option()
click to toggle source
# File lib/contentful/middleman-pages/extension.rb, line 142 def massage_data_option data_option = options.data space_name, content_type_name = *data_option.split(".") @space_name = space_name @content_type_name = content_type_name unless app.data[space_name] && app.data[space_name][content_type_name] app.logger.warn "contentful_pages: no local data for key #{data_option}" options.data = [] return end options.data = app.data[space_name].fetch(content_type_name) end
massage_options()
click to toggle source
# File lib/contentful/middleman-pages/extension.rb, line 134 def massage_options apply_prefix_option massage_data_option massage_permalink_option massage_template_option end
massage_permalink_option()
click to toggle source
# File lib/contentful/middleman-pages/extension.rb, line 158 def massage_permalink_option if options.permalink.nil? template_dirname = Pathname(options.template).dirname options.permalink = ::File.join(template_dirname, "{id}.html" ) end end
massage_template_option()
click to toggle source
# File lib/contentful/middleman-pages/extension.rb, line 165 def massage_template_option # Ignore the template used to render this page. Otherwise # Middleman will try to render it but the resource won't have # the required local variables and there'll be an error app.ignore options.template options.template = ::File.join(app.source_dir, options.template) end
uri_template()
click to toggle source
Calls superclass method
Contentful::MiddlemanPages::UriTemplate#uri_template
# File lib/contentful/middleman-pages/extension.rb, line 130 def uri_template @path_template ||= super options.permalink end