class SimpleJson::SimpleJsonRenderer

Attributes

controller[R]

Public Class Methods

clear_renderers() click to toggle source
# File lib/simple_json/simple_json_renderer.rb, line 51
def clear_renderers
  @renderers = {}
  @templates_loaded = false
end
load_all_templates!() click to toggle source
# File lib/simple_json/simple_json_renderer.rb, line 16
def load_all_templates!
  @renderers = {}

  SimpleJson.template_paths.each do |path|
    template_files = Rails.root.glob("#{path}/**/*.simple_json.rb")
    template_files.each do |file_path|
      template_path = file_path.relative_path_from(Rails.root.join(path)).to_path.delete_suffix('.simple_json.rb')
      @renderers[template_path] = SimpleJsonTemplate.new(file_path.to_path).renderer
    end
  end
  @templates_loaded = true
end
load_template(template_path) click to toggle source
# File lib/simple_json/simple_json_renderer.rb, line 29
def load_template(template_path)
  if SimpleJson.template_cache_enabled?
    load_all_templates! unless templates_loaded?
    renderers[template_path]
  else
    load_template_from_file(template_path)
  end
end
load_template_from_file(template_path) click to toggle source
# File lib/simple_json/simple_json_renderer.rb, line 38
def load_template_from_file(template_path)
  SimpleJson.template_paths.each do |path|
    file_path = Rails.root.join("#{path}/#{template_path}.simple_json.rb").to_path
    return SimpleJsonTemplate.new(file_path).renderer if File.exist?(file_path)
  end

  nil
end
new(controller) click to toggle source
# File lib/simple_json/simple_json_renderer.rb, line 57
def initialize(controller)
  @controller = controller
  @_assigns = controller.view_assigns.each { |key, value| instance_variable_set("@#{key}", value) }
end
renderers() click to toggle source
# File lib/simple_json/simple_json_renderer.rb, line 47
def renderers
  @renderers ||= {}
end
templates_loaded?() click to toggle source
# File lib/simple_json/simple_json_renderer.rb, line 12
def templates_loaded?
  @templates_loaded
end

Public Instance Methods

cache!(key, **options) { || ... } click to toggle source
# File lib/simple_json/simple_json_renderer.rb, line 86
def cache!(key, **options, &block)
  if controller.perform_caching
    key = Array.wrap(key).unshift(SimpleJson.cache_key_prefix)
    Rails.cache.fetch(key, options, &block)
  else
    yield
  end
end
cache_if!(condition, *args, **options) { || ... } click to toggle source
# File lib/simple_json/simple_json_renderer.rb, line 95
def cache_if!(condition, *args, **options, &block)
  condition ? cache!(*args, **options, &block) : yield
end
partial!(template_name, **params) click to toggle source
# File lib/simple_json/simple_json_renderer.rb, line 80
def partial!(template_name, **params)
  raise TemplateNotFound, "#{template_name} not found" unless renderer(template_name)

  render(template_name, **params)
end
render(template_name, **params) click to toggle source
# File lib/simple_json/simple_json_renderer.rb, line 72
def render(template_name, **params)
  if !params.empty?
    instance_exec(**params, &renderer(template_name))
  else
    instance_exec(&renderer(template_name))
  end
end
Also aliased as: render_without_tracing
render_with_tracing(template_name, params) click to toggle source
# File lib/simple_json/simple_json_renderer.rb, line 102
def render_with_tracing(template_name, params)
  self.class.trace_execution_scoped("View/#{template_name}.simple_json.rb/Rendering") do
    render_without_tracing(template_name, params)
  end
end
Also aliased as: render
render_without_tracing(template_name, **params)
Alias for: render
renderer(template_path) click to toggle source
# File lib/simple_json/simple_json_renderer.rb, line 62
def renderer(template_path)
  renderers[template_path] || self.class.load_template(template_path).tap do |renderer|
    renderers[template_path] = renderer
  end
end
renderers() click to toggle source
# File lib/simple_json/simple_json_renderer.rb, line 68
def renderers
  @renderers ||= {}
end