class Hanami::View::Renderer
@api private @since 2.1.0
Constants
- CURRENT_PATH_PREFIX
-
@api private @since 2.1.0
- PARTIAL_PREFIX
-
@api private @since 2.1.0
- PATH_DELIMITER
-
@api private @since 2.1.0
Attributes
@api private @since 2.1.0
@api private @since 2.1.0
Public Class Methods
Source
# File lib/hanami/view/renderer.rb, line 28 def initialize(config) @config = config @prefixes = [CURRENT_PATH_PREFIX] end
@api private @since 2.1.0
Public Instance Methods
Source
# File lib/hanami/view/renderer.rb, line 52 def partial(name, format, scope, &block) template(name_for_partial(name), format, scope, &block) end
@api private @since 2.1.0
Source
# File lib/hanami/view/renderer.rb, line 35 def template(name, format, scope, &block) old_prefixes = @prefixes.dup template_path = lookup(name, format) raise TemplateNotFoundError.new(name, format, config.paths) unless template_path new_prefix = File.dirname(name) @prefixes << new_prefix unless @prefixes.include?(new_prefix) render(template_path, scope, &block) ensure @prefixes = old_prefixes end
@api private @since 2.1.0
Private Instance Methods
Source
# File lib/hanami/view/renderer.rb, line 58 def lookup(name, format) View.cache.fetch_or_store(:lookup, name, format, config, prefixes) { catch :found do config.paths.reduce(nil) do |_, path| prefixes.reduce(nil) do |_, prefix| result = path.lookup(prefix, name, format) throw :found, result if result end end end } end
Source
# File lib/hanami/view/renderer.rb, line 71 def name_for_partial(name) segments = name.to_s.split(PATH_DELIMITER) segments[-1] = "#{PARTIAL_PREFIX}#{segments[-1]}" segments.join(PATH_DELIMITER) end
Source
# File lib/hanami/view/renderer.rb, line 77 def render(path, scope, &block) tilt(path).render(scope, {locals: scope._locals}, &block).html_safe end
Source
# File lib/hanami/view/renderer.rb, line 81 def tilt(path) View.cache.fetch_or_store(:tilt, path, config) { Hanami::View::Tilt[path, config.renderer_engine_mapping, config.renderer_options] } end