initial commit
This commit is contained in:
@@ -0,0 +1,41 @@
|
||||
# frozen_string_literal: true
|
||||
|
||||
require 'erb'
|
||||
|
||||
require_relative 'cache'
|
||||
|
||||
module FO
|
||||
class Renderer
|
||||
def initialize(layout, template, locals)
|
||||
@layout = layout
|
||||
@template = template
|
||||
@locals = locals
|
||||
@globals = {title: 'fullodds.club'}
|
||||
@cache = FO::Cache.new
|
||||
end
|
||||
|
||||
def render
|
||||
layout_content = @cache.file!(@layout)
|
||||
template_content = @cache.file!(@template)
|
||||
@locals.merge(@globals).each do |k,v|
|
||||
self.instance_variable_set("@#{k.to_s}".to_sym, v)
|
||||
end
|
||||
b = binding
|
||||
b.local_variable_set(:content, ERB.new(template_content).result(b))
|
||||
ERB.new(layout_content).result(b)
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def verify_templates!
|
||||
unless File.exist?(@layout)
|
||||
raise ArgumentError, "Layout #{@layout} does not exist!"
|
||||
end
|
||||
|
||||
unless File.exist?(@template)
|
||||
raise ArgumentError, "Template #{@template} does not exist!"
|
||||
end
|
||||
end
|
||||
|
||||
end
|
||||
end
|
||||
Reference in New Issue
Block a user