class Rbexy::Rails::ComponentTemplateResolver

Public Instance Methods

_find_all(name, prefix, partial, details, key, locals) click to toggle source

Rails 6 requires us to override `_find_all` in order to hook

# File lib/rbexy/rails/component_template_resolver.rb, line 7
def _find_all(name, prefix, partial, details, key, locals)
  find_templates(name, prefix, partial, details, locals)
end
find_templates(name, prefix, partial, details, locals = []) click to toggle source

Rails 5 only requires `find_templates` (which tbh is the proper way to implement subclasses of ActionView::Resolver)

# File lib/rbexy/rails/component_template_resolver.rb, line 13
def find_templates(name, prefix, partial, details, locals = [])
  return [] unless name.is_a? Rbexy::Component::TemplatePath

  templates_path = File.join(@path, prefix, name)
  extensions = details[:handlers].join(",")

  Dir["#{templates_path}.*{#{extensions}}"].map do |template_path|
    source = File.binread(template_path)
    handler = ActionView::Template.handler_for_extension(File.extname(template_path)[1..-1])
    virtual_path = ["rbexy_component", prefix, name].join("/")

    ActionView::Template.new(
      source,
      template_path,
      handler,
      locals: [],
      virtual_path: virtual_path
    )
  end
end