Sha256: 37170a7cf4fb3c32c3a2d2b1333d35fc62075c9875a2fccd257b5d4850ea65b0

Contents?: true

Size: 1.55 KB

Versions: 11

Compression:

Stored size: 1.55 KB

Contents

module Lita
  # Finds the file path of the most appropriate template for the given adapter.
  # @api private
  # @since 4.2.0
  class TemplateResolver
    # @param template_root [String] The directory to search for templates.
    # @param template_name [String] The name of the template to search for.
    # @param adapter_name [String, Symbol] The name of the current adapter.
    def initialize(template_root, template_name, adapter_name)
      @template_root = template_root
      @template_name = template_name
      @adapter_name = adapter_name
    end

    # Returns the adapter-specific template, falling back to a generic template.
    # @return [String] The path of the template to use.
    # @raise [MissingTemplateError] If no templates with the given name exist.
    def resolve
      return adapter_template if File.exist?(adapter_template)
      return generic_template if File.exist?(generic_template)
      raise MissingTemplateError, I18n.t("lita.template.missing_template", path: generic_template)
    end

    private

    # The directory to search for templates.
    attr_reader :template_root

    # The name of the template to search for.
    attr_reader :template_name

    # The name of the current adapter.
    attr_reader :adapter_name

    # Path to the adapter-specific template.
    def adapter_template
      @adapter_template ||= File.join(template_root, "#{template_name}.#{adapter_name}.erb")
    end

    # Path to the generic template.
    def generic_template
      @generic_template ||= File.join(template_root, "#{template_name}.erb")
    end
  end
end

Version data entries

11 entries across 11 versions & 1 rubygems

Version Path
lita-4.8.0 lib/lita/template_resolver.rb
lita-4.8.0.beta1 lib/lita/template_resolver.rb
lita-4.7.1 lib/lita/template_resolver.rb
lita-4.7.0 lib/lita/template_resolver.rb
lita-4.6.1 lib/lita/template_resolver.rb
lita-4.6.0 lib/lita/template_resolver.rb
lita-4.5.0 lib/lita/template_resolver.rb
lita-4.4.3 lib/lita/template_resolver.rb
lita-4.4.2 lib/lita/template_resolver.rb
lita-4.4.1 lib/lita/template_resolver.rb
lita-4.4.0 lib/lita/template_resolver.rb