class Solargraph::Page
Public Class Methods
new(directory = VIEWS_PATH)
click to toggle source
@param directory [String]
# File lib/solargraph/page.rb, line 43 def initialize directory = VIEWS_PATH directory = VIEWS_PATH if directory.nil? or !File.directory?(directory) directories = [directory] directories.push VIEWS_PATH if directory != VIEWS_PATH # @type [Proc] # @param template [String] # @param layout [Boolean] # @param locals [Hash] @render_method = proc { |template, layout: false, locals: {}| binder = Binder.new(locals, @render_method) if layout Tilt::ERBTemplate.new(Page.select_template(directories, 'layout')).render(binder) do Tilt::ERBTemplate.new(Page.select_template(directories, template)).render(binder) end else Tilt::ERBTemplate.new(Page.select_template(directories, template)).render(binder) end } end
select_template(directories, name)
click to toggle source
@param directories [Array<String>] @param name [String] @return [String]
# File lib/solargraph/page.rb, line 74 def self.select_template directories, name directories.each do |dir| path = File.join(dir, "#{name}.erb") return path if File.file?(path) end raise FileNotFoundError, "Template not found: #{name}" end
Public Instance Methods
render(template, layout: true, locals: {})
click to toggle source
@param template [String] @param layout [Boolean] @param locals [Hash] @return [String]
# File lib/solargraph/page.rb, line 67 def render template, layout: true, locals: {} @render_method.call(template, layout: layout, locals: locals) end