smooth out some edges for blog extension
This commit is contained in:
parent
de077201bd
commit
e920cef76a
4 changed files with 37 additions and 7 deletions
|
@ -375,8 +375,17 @@ class Middleman::Base
|
||||||
# @param [Hash] Rendering locals
|
# @param [Hash] Rendering locals
|
||||||
# @return [String] Output
|
# @return [String] Output
|
||||||
def render(engine, data, options={}, locals={}, &block)
|
def render(engine, data, options={}, locals={}, &block)
|
||||||
|
data = data.to_s
|
||||||
|
template_path = File.join(source_dir, data)
|
||||||
|
|
||||||
if sitemap.exists?(data)
|
if sitemap.exists?(data)
|
||||||
sitemap.page(data).render(options, locals, &block)
|
sitemap.page(data).render(options, locals, &block)
|
||||||
|
elsif File.exists?(template_path)
|
||||||
|
body = app.cache.fetch(:raw_template, template_path) do
|
||||||
|
File.read(template_path)
|
||||||
|
end
|
||||||
|
|
||||||
|
Middleman::Sitemap::Template.static_render(self, template_path, body, locals, options, &block)
|
||||||
else
|
else
|
||||||
throw "Could not find file to render: #{data}"
|
throw "Could not find file to render: #{data}"
|
||||||
end
|
end
|
||||||
|
|
|
@ -8,6 +8,14 @@ module Middleman
|
||||||
@cache[key] ||= yield
|
@cache[key] ||= yield
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def has_key?(key)
|
||||||
|
@cache.has_key?(key)
|
||||||
|
end
|
||||||
|
|
||||||
|
def get(key)
|
||||||
|
@cache[key]
|
||||||
|
end
|
||||||
|
|
||||||
def clear
|
def clear
|
||||||
@cache = {}
|
@cache = {}
|
||||||
end
|
end
|
||||||
|
|
|
@ -71,20 +71,30 @@ module Middleman::Sitemap
|
||||||
def touch
|
def touch
|
||||||
end
|
end
|
||||||
|
|
||||||
def render(&block)
|
def custom_render(&block)
|
||||||
|
@_custom_renderer ||= nil
|
||||||
|
@_custom_renderer = block if block_given?
|
||||||
|
@_custom_renderer
|
||||||
|
end
|
||||||
|
|
||||||
|
def render(*args, &block)
|
||||||
return unless template?
|
return unless template?
|
||||||
|
|
||||||
if proxy?
|
if proxy?
|
||||||
# Forward blocks
|
# Forward blocks
|
||||||
forward_blocks = template.blocks.compact
|
forward_blocks = template.blocks.compact
|
||||||
forward_blocks << block if block_given?
|
forward_blocks << block if block_given?
|
||||||
store.page(proxied_to).template.render do
|
store.page(proxied_to).template.render(*args) do
|
||||||
forward_blocks.each do |block|
|
forward_blocks.each do |block|
|
||||||
instance_exec(&block)
|
instance_exec(&block)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
elsif !custom_render.nil?
|
||||||
|
params = args.dup
|
||||||
|
params << block if block_given?
|
||||||
|
instance_exec(*params, &custom_renderer)
|
||||||
else
|
else
|
||||||
template.render(&block)
|
template.render(*args, &block)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
@ -69,7 +69,7 @@ module Middleman::Sitemap
|
||||||
self.class.cache
|
self.class.cache
|
||||||
end
|
end
|
||||||
|
|
||||||
def options_for_ext(ext)
|
def self.options_for_ext(ext)
|
||||||
cache.fetch(:options_for_ext, ext) do
|
cache.fetch(:options_for_ext, ext) do
|
||||||
options = {}
|
options = {}
|
||||||
|
|
||||||
|
@ -151,13 +151,16 @@ module Middleman::Sitemap
|
||||||
|
|
||||||
def internal_render(path, locs = {}, opts = {}, &block)
|
def internal_render(path, locs = {}, opts = {}, &block)
|
||||||
path = path.to_s
|
path = path.to_s
|
||||||
|
|
||||||
opts.merge!(options_for_ext(File.extname(path)))
|
|
||||||
|
|
||||||
body = app.cache.fetch(:raw_template, path) do
|
body = app.cache.fetch(:raw_template, path) do
|
||||||
File.read(path)
|
File.read(path)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
self.class.static_render(app, path, body, locs, opts, &block)
|
||||||
|
end
|
||||||
|
|
||||||
|
def self.static_render(app, path, body, locs = {}, opts = {}, &block)
|
||||||
|
options = opts.merge(options_for_ext(File.extname(path)))
|
||||||
|
|
||||||
template = cache.fetch(:compiled_template, options, body) do
|
template = cache.fetch(:compiled_template, options, body) do
|
||||||
::Tilt.new(path, 1, options) { body }
|
::Tilt.new(path, 1, options) { body }
|
||||||
end
|
end
|
||||||
|
|
Loading…
Add table
Reference in a new issue