middleman-core 4.1.0.rc.1 → 4.1.0.rc.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/Rakefile +1 -1
- data/features/asset_hash.feature +44 -6
- data/features/asset_host.feature +1 -0
- data/features/automatic_image_sizes.feature +18 -5
- data/fixtures/asset-hash-host-app/source/index.html.erb +1 -1
- data/fixtures/asset-host-app/config.rb +1 -0
- data/fixtures/asset-host-app/source/asset_host.html.erb +9 -0
- data/fixtures/automatic-image-size-app/source/markdown-sizes.html.markdown +1 -0
- data/lib/middleman-core/application.rb +68 -58
- data/lib/middleman-core/builder.rb +24 -18
- data/lib/middleman-core/callback_manager.rb +8 -1
- data/lib/middleman-core/contracts.rb +13 -102
- data/lib/middleman-core/core_extensions.rb +6 -0
- data/lib/middleman-core/core_extensions/collections/lazy_step.rb +1 -1
- data/lib/middleman-core/core_extensions/data.rb +3 -2
- data/lib/middleman-core/core_extensions/default_helpers.rb +5 -5
- data/lib/middleman-core/core_extensions/external_helpers.rb +6 -11
- data/lib/middleman-core/core_extensions/file_watcher.rb +1 -1
- data/lib/middleman-core/core_extensions/front_matter.rb +1 -0
- data/lib/middleman-core/core_extensions/i18n.rb +4 -4
- data/lib/middleman-core/core_extensions/inline_url_rewriter.rb +150 -0
- data/lib/middleman-core/core_extensions/routing.rb +22 -28
- data/lib/middleman-core/core_extensions/show_exceptions.rb +1 -7
- data/lib/middleman-core/extension.rb +19 -2
- data/lib/middleman-core/extension_manager.rb +2 -0
- data/lib/middleman-core/extensions.rb +12 -0
- data/lib/middleman-core/extensions/asset_hash.rb +21 -20
- data/lib/middleman-core/extensions/asset_host.rb +9 -10
- data/lib/middleman-core/extensions/automatic_image_sizes.rb +1 -1
- data/lib/middleman-core/extensions/cache_buster.rb +6 -12
- data/lib/middleman-core/extensions/gzip.rb +2 -2
- data/lib/middleman-core/extensions/lorem.rb +1 -1
- data/lib/middleman-core/extensions/minify_css.rb +2 -2
- data/lib/middleman-core/extensions/minify_javascript.rb +2 -2
- data/lib/middleman-core/extensions/relative_assets.rb +6 -12
- data/lib/middleman-core/preview_server.rb +11 -9
- data/lib/middleman-core/preview_server/server_hostname.rb +2 -2
- data/lib/middleman-core/rack.rb +1 -1
- data/lib/middleman-core/renderers/kramdown.rb +1 -1
- data/lib/middleman-core/renderers/less.rb +3 -4
- data/lib/middleman-core/renderers/markdown.rb +2 -8
- data/lib/middleman-core/renderers/redcarpet.rb +1 -1
- data/lib/middleman-core/renderers/sass.rb +8 -11
- data/lib/middleman-core/renderers/stylus.rb +1 -5
- data/lib/middleman-core/sitemap/extensions/ignores.rb +5 -4
- data/lib/middleman-core/sitemap/extensions/import.rb +12 -15
- data/lib/middleman-core/sitemap/extensions/move_file.rb +3 -3
- data/lib/middleman-core/sitemap/extensions/proxies.rb +4 -4
- data/lib/middleman-core/sitemap/extensions/redirects.rb +16 -28
- data/lib/middleman-core/sitemap/extensions/request_endpoints.rb +17 -35
- data/lib/middleman-core/sitemap/extensions/traversal.rb +5 -5
- data/lib/middleman-core/sitemap/resource.rb +16 -16
- data/lib/middleman-core/sitemap/store.rb +42 -31
- data/lib/middleman-core/sources.rb +9 -9
- data/lib/middleman-core/sources/source_watcher.rb +14 -10
- data/lib/middleman-core/step_definitions/server_steps.rb +12 -4
- data/lib/middleman-core/template_context.rb +1 -1
- data/lib/middleman-core/template_renderer.rb +74 -75
- data/lib/middleman-core/util.rb +19 -16
- data/lib/middleman-core/util/data.rb +86 -82
- data/lib/middleman-core/version.rb +1 -1
- data/middleman-core.gemspec +1 -0
- metadata +19 -39
- data/features/cli/preview_server-hook.feature +0 -17
- data/features/cli/preview_server.feature +0 -536
- data/features/cli_extension.feature +0 -14
- data/features/cli_init.feature +0 -89
- data/fixtures/asset-hash-host-app/config.rb +0 -4
- data/fixtures/preview-server-app/bin/dns_server.rb +0 -33
- data/fixtures/preview-server-app/config.rb +0 -0
- data/fixtures/preview-server-app/source/index.html.erb +0 -1
- data/fixtures/preview-server-app/source/layout.erb +0 -9
- data/fixtures/preview-server-app/source/layouts/custom.erb +0 -8
- data/fixtures/preview-server-app/source/real.html +0 -1
- data/fixtures/preview-server-app/source/real/index.html.erb +0 -5
- data/fixtures/preview-server-app/source/should_be_ignored.html +0 -1
- data/fixtures/preview-server-app/source/should_be_ignored2.html +0 -1
- data/fixtures/preview-server-app/source/should_be_ignored3.html +0 -1
- data/fixtures/preview-server-app/source/static.html +0 -1
- data/fixtures/preview-server-hook-app/config.rb +0 -19
- data/fixtures/preview-server-hook-app/source/index.html.erb +0 -9
- data/lib/middleman-core/middleware/inline_url_rewriter.rb +0 -109
@@ -35,7 +35,7 @@ module Middleman
|
|
35
35
|
def convert_a(el, indent)
|
36
36
|
content = inner(el, indent)
|
37
37
|
|
38
|
-
if el.attr['href']
|
38
|
+
if el.attr['href'].start_with?('mailto:')
|
39
39
|
mail_addr = el.attr['href'].sub(/\Amailto:/, '')
|
40
40
|
href = obfuscate('mailto') << ':' << obfuscate(mail_addr)
|
41
41
|
content = obfuscate(content) if content == mail_addr
|
@@ -4,12 +4,11 @@ module Middleman
|
|
4
4
|
module Renderers
|
5
5
|
# Sass renderer
|
6
6
|
class Less < ::Middleman::Extension
|
7
|
+
define_setting :less, {}, 'LESS compiler options'
|
8
|
+
|
7
9
|
def initialize(app, options={}, &block)
|
8
10
|
super
|
9
11
|
|
10
|
-
# Default less options
|
11
|
-
app.config.define_setting :less, {}, 'LESS compiler options'
|
12
|
-
|
13
12
|
# Tell Tilt to use it as well (for inline sass blocks)
|
14
13
|
::Tilt.register 'less', LocalLoadingLessTemplate
|
15
14
|
::Tilt.prefer(LocalLoadingLessTemplate)
|
@@ -27,7 +26,7 @@ module Middleman
|
|
27
26
|
if ::Less.const_defined? :Engine
|
28
27
|
@engine = ::Less::Engine.new(data)
|
29
28
|
else
|
30
|
-
parser = ::Less::Parser.new(options.merge
|
29
|
+
parser = ::Less::Parser.new(options.merge(filename: eval_file, line: line, paths: ['.', File.dirname(eval_file)]))
|
31
30
|
@engine = parser.parse(data)
|
32
31
|
end
|
33
32
|
end
|
@@ -2,14 +2,8 @@ module Middleman
|
|
2
2
|
module Renderers
|
3
3
|
# Markdown renderer
|
4
4
|
class Markdown < ::Middleman::Extension
|
5
|
-
|
6
|
-
|
7
|
-
super
|
8
|
-
|
9
|
-
# Set our preference for a markdown engine
|
10
|
-
app.config.define_setting :markdown_engine, :kramdown, 'Preferred markdown engine'
|
11
|
-
app.config.define_setting :markdown_engine_prefix, ::Tilt, 'The parent module for markdown template engines'
|
12
|
-
end
|
5
|
+
define_setting :markdown_engine, :kramdown, 'Preferred markdown engine'
|
6
|
+
define_setting :markdown_engine_prefix, ::Tilt, 'The parent module for markdown template engines'
|
13
7
|
|
14
8
|
# Once configuration is parsed
|
15
9
|
def after_configuration
|
@@ -4,6 +4,12 @@ module Middleman
|
|
4
4
|
module Renderers
|
5
5
|
# Sass renderer
|
6
6
|
class Sass < ::Middleman::Extension
|
7
|
+
opts = { output_style: :nested }
|
8
|
+
opts[:line_comments] = false if ENV['TEST']
|
9
|
+
define_setting :sass, opts, 'Sass engine options'
|
10
|
+
define_setting :sass_assets_paths, [], 'Paths to extra SASS/SCSS files'
|
11
|
+
define_setting :sass_source_maps, nil, 'Whether to inline sourcemap into Sass'
|
12
|
+
|
7
13
|
# Setup extension
|
8
14
|
def initialize(app, options={}, &block)
|
9
15
|
super
|
@@ -12,15 +18,6 @@ module Middleman
|
|
12
18
|
|
13
19
|
app.files.ignore :sass_cache, :source, /(^|\/)\.sass-cache\//
|
14
20
|
|
15
|
-
opts = { output_style: :nested }
|
16
|
-
opts[:line_comments] = false if ENV['TEST']
|
17
|
-
|
18
|
-
# Default sass options
|
19
|
-
app.config.define_setting :sass, opts, 'Sass engine options'
|
20
|
-
|
21
|
-
app.config.define_setting :sass_assets_paths, [], 'Paths to extra SASS/SCSS files'
|
22
|
-
app.config.define_setting :sass_source_maps, app.development?, 'Whether to inline sourcemap into Sass'
|
23
|
-
|
24
21
|
# Tell Tilt to use it as well (for inline sass blocks)
|
25
22
|
::Tilt.register 'sass', SassPlusCSSFilenameTemplate
|
26
23
|
::Tilt.prefer(SassPlusCSSFilenameTemplate)
|
@@ -75,7 +72,7 @@ module Middleman
|
|
75
72
|
ctx = @context
|
76
73
|
|
77
74
|
more_opts = {
|
78
|
-
load_paths: ::Sass.load_paths | ctx.config[:sass_assets_paths],
|
75
|
+
load_paths: ::Sass.load_paths | ctx.app.config[:sass_assets_paths],
|
79
76
|
filename: eval_file,
|
80
77
|
line: line,
|
81
78
|
syntax: syntax,
|
@@ -85,7 +82,7 @@ module Middleman
|
|
85
82
|
)
|
86
83
|
}
|
87
84
|
|
88
|
-
if ctx.config[:sass_source_maps]
|
85
|
+
if ctx.app.config[:sass_source_maps] || (ctx.app.config[:sass_source_maps].nil? && ctx.app.development?)
|
89
86
|
more_opts[:source_map_file] = '.'
|
90
87
|
more_opts[:source_map_embed] = true
|
91
88
|
more_opts[:source_map_contents] = true
|
@@ -4,11 +4,7 @@ require 'stylus/tilt'
|
|
4
4
|
module Middleman
|
5
5
|
module Renderers
|
6
6
|
class Stylus < ::Middleman::Extension
|
7
|
-
|
8
|
-
super
|
9
|
-
|
10
|
-
app.config.define_setting :styl, {}, 'Stylus config options'
|
11
|
-
end
|
7
|
+
define_setting :styl, {}, 'Stylus config options'
|
12
8
|
end
|
13
9
|
end
|
14
10
|
end
|
@@ -5,13 +5,14 @@ module Middleman
|
|
5
5
|
class Ignores < ConfigExtension
|
6
6
|
self.resource_list_manipulator_priority = 0
|
7
7
|
|
8
|
-
|
8
|
+
expose_to_application :ignore
|
9
|
+
expose_to_config :ignore
|
9
10
|
|
10
11
|
# Ignore a path or add an ignore callback
|
11
12
|
# @param [String, Regexp] path Path glob expression, or path regex
|
12
13
|
# @return [IgnoreDescriptor]
|
13
14
|
Contract Maybe[Or[String, Regexp]], Maybe[Proc] => RespondTo[:execute_descriptor]
|
14
|
-
def
|
15
|
+
def ignore(path=nil, &block)
|
15
16
|
@app.sitemap.invalidate_resources_not_ignored_cache!
|
16
17
|
IgnoreDescriptor.new(path, block)
|
17
18
|
end
|
@@ -22,9 +23,9 @@ module Middleman
|
|
22
23
|
# Ignore based on the source path (without template extensions)
|
23
24
|
if ignored?(r.path)
|
24
25
|
r.ignore!
|
25
|
-
|
26
|
+
elsif !r.is_a?(ProxyResource) && r.file_descriptor && ignored?(r.file_descriptor[:relative_path].to_s)
|
26
27
|
# This allows files to be ignored by their source file name (with template extensions)
|
27
|
-
r.ignore!
|
28
|
+
r.ignore!
|
28
29
|
end
|
29
30
|
|
30
31
|
r
|
@@ -7,11 +7,8 @@ module Middleman
|
|
7
7
|
class Import < ConfigExtension
|
8
8
|
self.resource_list_manipulator_priority = 1
|
9
9
|
|
10
|
-
# Expose
|
11
|
-
expose_to_config import_file
|
12
|
-
|
13
|
-
# Expose `create_import_path` to config as `import_path`
|
14
|
-
expose_to_config import_path: :create_import_path
|
10
|
+
# Expose methods
|
11
|
+
expose_to_config :import_file, :import_path
|
15
12
|
|
16
13
|
ImportFileDescriptor = Struct.new(:from, :to) do
|
17
14
|
def execute_descriptor(app, resources)
|
@@ -26,14 +23,14 @@ module Middleman
|
|
26
23
|
resources + ::Middleman::Util.glob_directory(File.join(from, '**/*'))
|
27
24
|
.reject { |path| File.directory?(path) }
|
28
25
|
.map do |path|
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
26
|
+
target_path = Pathname(path).relative_path_from(Pathname(from).parent).to_s
|
27
|
+
|
28
|
+
::Middleman::Sitemap::Resource.new(
|
29
|
+
app.sitemap,
|
30
|
+
renameProc.call(target_path, path),
|
31
|
+
path
|
32
|
+
)
|
33
|
+
end
|
37
34
|
end
|
38
35
|
end
|
39
36
|
|
@@ -42,7 +39,7 @@ module Middleman
|
|
42
39
|
# @param [String] to The new path.
|
43
40
|
# @return [void]
|
44
41
|
Contract String, String => ImportFileDescriptor
|
45
|
-
def
|
42
|
+
def import_file(from, to)
|
46
43
|
ImportFileDescriptor.new(
|
47
44
|
File.expand_path(from, @app.root),
|
48
45
|
::Middleman::Util.normalize_path(to)
|
@@ -54,7 +51,7 @@ module Middleman
|
|
54
51
|
# @param [Proc] block Renaming method
|
55
52
|
# @return [void]
|
56
53
|
Contract String, Maybe[Proc] => ImportPathDescriptor
|
57
|
-
def
|
54
|
+
def import_path(from, &block)
|
58
55
|
ImportPathDescriptor.new(
|
59
56
|
from,
|
60
57
|
block_given? ? block : proc { |path| path }
|
@@ -9,8 +9,8 @@ module Middleman
|
|
9
9
|
class MoveFile < ConfigExtension
|
10
10
|
self.resource_list_manipulator_priority = 101
|
11
11
|
|
12
|
-
# Expose `
|
13
|
-
expose_to_config move_file
|
12
|
+
# Expose `move_file`
|
13
|
+
expose_to_config :move_file
|
14
14
|
|
15
15
|
MoveFileDescriptor = Struct.new(:from, :to) do
|
16
16
|
def execute_descriptor(_app, resources)
|
@@ -27,7 +27,7 @@ module Middleman
|
|
27
27
|
# @param [String] to The new path.
|
28
28
|
# @return [void]
|
29
29
|
Contract String, String => MoveFileDescriptor
|
30
|
-
def
|
30
|
+
def move_file(from, to)
|
31
31
|
MoveFileDescriptor.new(
|
32
32
|
::Middleman::Util.normalize_path(from),
|
33
33
|
::Middleman::Util.normalize_path(to)
|
@@ -9,8 +9,8 @@ module Middleman
|
|
9
9
|
class Proxies < ConfigExtension
|
10
10
|
self.resource_list_manipulator_priority = 0
|
11
11
|
|
12
|
-
# Expose `
|
13
|
-
expose_to_config proxy
|
12
|
+
# Expose `proxy`
|
13
|
+
expose_to_config :proxy
|
14
14
|
|
15
15
|
# Setup a proxy from a path to a target
|
16
16
|
# @param [String] path The new, proxied path to create
|
@@ -22,7 +22,7 @@ module Middleman
|
|
22
22
|
# @option opts [Hash] data Extra metadata to add to the page. This is the same as frontmatter, though frontmatter will take precedence over metadata defined here. Available via {Resource#data}.
|
23
23
|
# @return [ProxyDescriptor]
|
24
24
|
Contract String, String, Maybe[Hash] => RespondTo[:execute_descriptor]
|
25
|
-
def
|
25
|
+
def proxy(path, target, opts={})
|
26
26
|
ProxyDescriptor.new(
|
27
27
|
::Middleman::Util.normalize_path(path),
|
28
28
|
::Middleman::Util.normalize_path(target),
|
@@ -113,7 +113,7 @@ module Middleman
|
|
113
113
|
def to_s
|
114
114
|
"#<#{self.class} path=#{@path} target=#{@target}>"
|
115
115
|
end
|
116
|
-
|
116
|
+
alias inspect to_s
|
117
117
|
end
|
118
118
|
end
|
119
119
|
end
|
@@ -6,43 +6,31 @@ module Middleman
|
|
6
6
|
module Extensions
|
7
7
|
# Manages the list of proxy configurations and manipulates the sitemap
|
8
8
|
# to include new resources based on those configurations
|
9
|
-
class Redirects <
|
9
|
+
class Redirects < ConfigExtension
|
10
10
|
self.resource_list_manipulator_priority = 0
|
11
11
|
|
12
|
-
# Expose `
|
13
|
-
expose_to_config redirect
|
12
|
+
# Expose `redirect`
|
13
|
+
expose_to_config :redirect
|
14
14
|
|
15
|
-
|
16
|
-
|
15
|
+
RedirectDescriptor = Struct.new(:path, :to, :template) do
|
16
|
+
def execute_descriptor(app, resources)
|
17
|
+
r = RedirectResource.new(
|
18
|
+
app.sitemap,
|
19
|
+
path,
|
20
|
+
to
|
21
|
+
)
|
22
|
+
r.output = template if template
|
17
23
|
|
18
|
-
|
24
|
+
resources + [r]
|
25
|
+
end
|
19
26
|
end
|
20
27
|
|
21
28
|
# Setup a redirect from a path to a target
|
22
29
|
# @param [String] path
|
23
30
|
# @param [Hash] opts The :to value gives a target path
|
24
|
-
Contract String,
|
25
|
-
def
|
26
|
-
opts[:
|
27
|
-
|
28
|
-
@redirects[path] = opts
|
29
|
-
|
30
|
-
@app.sitemap.rebuild_resource_list!(:added_redirect)
|
31
|
-
end
|
32
|
-
|
33
|
-
# Update the main sitemap resource list
|
34
|
-
# @return Array<Middleman::Sitemap::Resource>
|
35
|
-
Contract ResourceList => ResourceList
|
36
|
-
def manipulate_resource_list(resources)
|
37
|
-
resources + @redirects.map do |path, opts|
|
38
|
-
r = RedirectResource.new(
|
39
|
-
@app.sitemap,
|
40
|
-
path,
|
41
|
-
opts[:to]
|
42
|
-
)
|
43
|
-
r.output = opts[:template] if opts[:template]
|
44
|
-
r
|
45
|
-
end
|
31
|
+
Contract String, { to: Or[String, ::Middleman::Sitemap::Resource] }, Maybe[Proc] => RedirectDescriptor
|
32
|
+
def redirect(path, opts={}, &block)
|
33
|
+
RedirectDescriptor.new(path, opts[:to], block_given? ? block : nil)
|
46
34
|
end
|
47
35
|
end
|
48
36
|
|
@@ -3,53 +3,35 @@ require 'middleman-core/sitemap/resource'
|
|
3
3
|
module Middleman
|
4
4
|
module Sitemap
|
5
5
|
module Extensions
|
6
|
-
class RequestEndpoints <
|
6
|
+
class RequestEndpoints < ConfigExtension
|
7
7
|
self.resource_list_manipulator_priority = 0
|
8
8
|
|
9
|
-
# Expose `
|
10
|
-
expose_to_config endpoint
|
9
|
+
# Expose `endpoint`
|
10
|
+
expose_to_config :endpoint
|
11
11
|
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
12
|
+
EndpointDescriptor = Struct.new(:path, :request_path, :block) do
|
13
|
+
def execute_descriptor(app, resources)
|
14
|
+
r = EndpointResource.new(
|
15
|
+
app.sitemap,
|
16
|
+
path,
|
17
|
+
request_path
|
18
|
+
)
|
19
|
+
r.output = block if block
|
16
20
|
|
17
|
-
|
21
|
+
resources + [r]
|
22
|
+
end
|
18
23
|
end
|
19
24
|
|
20
25
|
# Setup a proxy from a path to a target
|
21
26
|
# @param [String] path
|
22
27
|
# @param [Hash] opts The :path value gives a request path if it
|
23
28
|
# differs from the output path
|
24
|
-
Contract String, Or[
|
25
|
-
def
|
26
|
-
endpoint = {
|
27
|
-
request_path: path
|
28
|
-
}
|
29
|
-
|
29
|
+
Contract String, Or[{ path: String }, Proc] => EndpointDescriptor
|
30
|
+
def endpoint(path, opts={}, &block)
|
30
31
|
if block_given?
|
31
|
-
|
32
|
+
EndpointDescriptor.new(path, path, block)
|
32
33
|
else
|
33
|
-
|
34
|
-
end
|
35
|
-
|
36
|
-
@endpoints[path] = endpoint
|
37
|
-
|
38
|
-
@app.sitemap.rebuild_resource_list!(:added_endpoint)
|
39
|
-
end
|
40
|
-
|
41
|
-
# Update the main sitemap resource list
|
42
|
-
# @return Array<Middleman::Sitemap::Resource>
|
43
|
-
Contract ResourceList => ResourceList
|
44
|
-
def manipulate_resource_list(resources)
|
45
|
-
resources + @endpoints.map do |path, config|
|
46
|
-
r = EndpointResource.new(
|
47
|
-
@app.sitemap,
|
48
|
-
path,
|
49
|
-
config[:request_path]
|
50
|
-
)
|
51
|
-
r.output = config[:output] if config.key?(:output)
|
52
|
-
r
|
34
|
+
EndpointDescriptor.new(path, opts[:path] || path, nil)
|
53
35
|
end
|
54
36
|
end
|
55
37
|
end
|
@@ -44,14 +44,14 @@ module Middleman
|
|
44
44
|
def children
|
45
45
|
return [] unless directory_index?
|
46
46
|
|
47
|
-
if eponymous_directory?
|
48
|
-
|
49
|
-
prefix = %r{^#{base_path.sub("/", "\\/")}}
|
47
|
+
base_path = if eponymous_directory?
|
48
|
+
eponymous_directory_path
|
50
49
|
else
|
51
|
-
|
52
|
-
prefix = %r{^#{base_path.sub("/", "\\/")}}
|
50
|
+
path.sub(@app.config[:index_file].to_s, '')
|
53
51
|
end
|
54
52
|
|
53
|
+
prefix = %r{^#{base_path.sub("/", "\\/")}}
|
54
|
+
|
55
55
|
@store.resources.select do |sub_resource|
|
56
56
|
if sub_resource.path == path || sub_resource.path !~ prefix
|
57
57
|
false
|
@@ -29,9 +29,9 @@ module Middleman
|
|
29
29
|
# The path to use when requesting this resource. Normally it's
|
30
30
|
# the same as {#destination_path} but it can be overridden in subclasses.
|
31
31
|
# @return [String]
|
32
|
-
|
32
|
+
alias request_path destination_path
|
33
33
|
|
34
|
-
METADATA_HASH =
|
34
|
+
METADATA_HASH = { options: Maybe[Hash], locals: Maybe[Hash], page: Maybe[Hash] }.freeze
|
35
35
|
|
36
36
|
# The metadata for this resource
|
37
37
|
# @return [Hash]
|
@@ -53,10 +53,10 @@ module Middleman
|
|
53
53
|
|
54
54
|
source = Pathname(source) if source && source.is_a?(String)
|
55
55
|
|
56
|
-
if source && source.is_a?(Pathname)
|
57
|
-
|
56
|
+
@file_descriptor = if source && source.is_a?(Pathname)
|
57
|
+
::Middleman::SourceFile.new(source.relative_path_from(@app.source_dir), source, @app.source_dir, Set.new([:source]))
|
58
58
|
else
|
59
|
-
|
59
|
+
source
|
60
60
|
end
|
61
61
|
|
62
62
|
@destination_path = @path
|
@@ -129,18 +129,18 @@ module Middleman
|
|
129
129
|
def render(opts={}, locs={})
|
130
130
|
return ::Middleman::FileRenderer.new(@app, file_descriptor[:full_path].to_s).template_data_for_file unless template?
|
131
131
|
|
132
|
-
::Middleman::Util.instrument 'render.resource', path: file_descriptor[:full_path].to_s, destination_path: destination_path do
|
133
|
-
|
134
|
-
|
135
|
-
|
136
|
-
|
132
|
+
# ::Middleman::Util.instrument 'render.resource', path: file_descriptor[:full_path].to_s, destination_path: destination_path do
|
133
|
+
md = metadata
|
134
|
+
opts = md[:options].deep_merge(opts)
|
135
|
+
locs = md[:locals].deep_merge(locs)
|
136
|
+
locs[:current_path] ||= destination_path
|
137
137
|
|
138
|
-
|
139
|
-
|
138
|
+
# Certain output file types don't use layouts
|
139
|
+
opts[:layout] = false if !opts.key?(:layout) && ext != '.html'
|
140
140
|
|
141
|
-
|
142
|
-
|
143
|
-
end
|
141
|
+
renderer = ::Middleman::TemplateRenderer.new(@app, file_descriptor[:full_path].to_s)
|
142
|
+
renderer.render(locs, opts)
|
143
|
+
# end
|
144
144
|
end
|
145
145
|
|
146
146
|
# A path without the directory index - so foo/index.html becomes
|
@@ -189,7 +189,7 @@ module Middleman
|
|
189
189
|
def to_s
|
190
190
|
"#<#{self.class} path=#{@path}>"
|
191
191
|
end
|
192
|
-
|
192
|
+
alias inspect to_s # Ruby 2.0 calls inspect for NoMethodError instead of to_s
|
193
193
|
end
|
194
194
|
|
195
195
|
class StringResource < Resource
|