class Kentico::Kontent::Resolvers::FilenameResolver

This class resolve the filename of the page. If no user-defined resolver was provided or it returned nil then content will be resolved in a default way.

Public Class Methods

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

Public Instance Methods

execute(content_item) click to toggle source
# File lib/kontent-jekyll/resolvers/filename_resolver.rb, line 14
def execute(content_item)
  filename = custom_resolver && custom_resolver.resolve(content_item)
  filename || resolve_internal(content_item)
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/filename_resolver.rb, line 24
def custom_resolver
  return @custom_resolver if @custom_resolver

  resolver_name = @global_config.filename_resolver
  return unless resolver_name

  @custom_resolver = Module.const_get(resolver_name).new
end
get_url_slug(item) click to toggle source
# File lib/kontent-jekyll/resolvers/filename_resolver.rb, line 42
def get_url_slug(item)
  item.elements.each_pair { |_codename, element| return element if slug?(element) }
end
resolve_internal(content_item) click to toggle source

Internal resolver will try to locate the url slug element and return its value. If no slug was present then the item's codename will be used as the filename.

# File lib/kontent-jekyll/resolvers/filename_resolver.rb, line 37
def resolve_internal(content_item)
  url_slug = get_url_slug(content_item)
  url_slug&.value || content_item.system.codename
end
slug?(element) click to toggle source
# File lib/kontent-jekyll/resolvers/filename_resolver.rb, line 46
def slug?(element)
  element.type == Constants::ItemElementType::URL_SLUG
end