Sha256: a31e0ad18ae6bbec1666b6ff3c544621cb4bc5094b23fd9e737356cd5f369d4a

Contents?: true

Size: 1.85 KB

Versions: 2

Compression:

Stored size: 1.85 KB

Contents

require 'lotus/view/rendering/template_finder'

module Lotus
  module View
    module Rendering
      # Find a partial for the current view context.
      # It's used when a template wants to render a partial.
      #
      # @see Lotus::View::Rendering::Partial
      # @see Lotus::View::Rendering::TemplateFinder
      #
      # @api private
      # @since 0.1.0
      class PartialFinder < TemplateFinder
        # Template file name prefix.
        # By convention a partial file name starts with this prefix.
        #
        # @api private
        # @since 0.1.0
        #
        # @example
        #   "_sidebar.html.erb"
        PREFIX = '_'.freeze

        # Find a template for a partial. Initially it will look for the
        # partial template under the directory of the parent directory 
        # view template, if not found it will search recursivly from 
        # the view root.
        #
        # @return [Lotus::View::Template] the requested template
        #
        # @see Lotus::View::Rendering::TemplateFinder#find
        #
        # @since 0.4.3
        # @api private
        def find
          if path = partial_template_under_view_path
            View::Template.new path
          else
            super
          end
        end

        protected
        # @since 0.4.3
        # @api private
        def partial_template_under_view_path
          _find(view_template_dir).first
        end

        # @since 0.4.3
        # @api private
        def view_template_dir
          *all, _ = @view.template.split(separator)
          all.join(separator)
        end

        def template_name
          *all, last = partial_name.split(separator)
          all.push( last.prepend(prefix) ).join(separator)
        end

        def partial_name
          @options[:partial]
        end

        def prefix
          PREFIX
        end
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
lotus-view-0.4.4 lib/lotus/view/rendering/partial_finder.rb
lotus-view-0.4.3 lib/lotus/view/rendering/partial_finder.rb