class Kentico::Kontent::Resolvers::FrontMatterResolver

This class resolve the front matter of the page. It will be merged with internally generated front matter.

Public Class Methods

new(global_config) click to toggle source
# File lib/kontent-jekyll/resolvers/front_matter_resolver.rb, line 98
def initialize(global_config)
  @global_config = global_config
end

Public Instance Methods

execute(content_item, page_type) click to toggle source
# File lib/kontent-jekyll/resolvers/front_matter_resolver.rb, line 102
def execute(content_item, page_type)
  front_matter = resolve_internal(content_item, page_type)

  if custom_resolver
    extra_data = custom_resolver.resolve(content_item, page_type)
    front_matter.merge!(extra_data) if extra_data
  end

  front_matter
end

Private Instance Methods

custom_resolver() click to toggle source

User-provided provided resolver is instantiated based on the name from configuration.

# File lib/kontent-jekyll/resolvers/front_matter_resolver.rb, line 118
def custom_resolver
  return @custom_resolver if @custom_resolver

  resolver_name = @global_config.front_matter_resolver
  return unless resolver_name

  @custom_resolver = Module.const_get(resolver_name).new
end
page?() click to toggle source
# File lib/kontent-jekyll/resolvers/front_matter_resolver.rb, line 153
def page?
  @page_type == Constants::PageType::PAGE
end
post?() click to toggle source
# File lib/kontent-jekyll/resolvers/front_matter_resolver.rb, line 157
def post?
  @page_type == Constants::PageType::POST
end
resolve_internal(content_item, page_type) click to toggle source

Posts and pages have different default front matter (tags, categories etc) so we need to determine the correct internal resolver based on the page type.

# File lib/kontent-jekyll/resolvers/front_matter_resolver.rb, line 131
def resolve_internal(content_item, page_type)
  @content_item = content_item
  @page_type = page_type

  resolver_factory
    .new(@global_config, type_config, content_item)
    .resolve
end
resolver_factory() click to toggle source

Determines default front matter resolver based on the page type.

# File lib/kontent-jekyll/resolvers/front_matter_resolver.rb, line 143
def resolver_factory
  return PostFrontMatterResolver if post?
  PageFrontMatterResolver if page?
end
type_config() click to toggle source
# File lib/kontent-jekyll/resolvers/front_matter_resolver.rb, line 148
def type_config
  return @global_config.posts if post?
  @global_config.pages[@content_item.system.type] if page?
end