middleman-core 3.3.2 → 3.3.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/features/helpers_select_tag.feature +6 -8
- data/lib/middleman-core.rb +1 -2
- data/lib/middleman-core/application.rb +10 -9
- data/lib/middleman-core/cli.rb +9 -13
- data/lib/middleman-core/cli/build.rb +26 -27
- data/lib/middleman-core/cli/bundler.rb +6 -7
- data/lib/middleman-core/cli/console.rb +10 -13
- data/lib/middleman-core/cli/extension.rb +2 -4
- data/lib/middleman-core/cli/init.rb +27 -28
- data/lib/middleman-core/cli/server.rb +43 -44
- data/lib/middleman-core/configuration.rb +13 -11
- data/lib/middleman-core/core_extensions/data.rb +21 -29
- data/lib/middleman-core/core_extensions/extensions.rb +8 -8
- data/lib/middleman-core/core_extensions/external_helpers.rb +3 -5
- data/lib/middleman-core/core_extensions/file_watcher.rb +7 -11
- data/lib/middleman-core/core_extensions/front_matter.rb +5 -6
- data/lib/middleman-core/core_extensions/rendering.rb +40 -30
- data/lib/middleman-core/core_extensions/request.rb +16 -19
- data/lib/middleman-core/core_extensions/routing.rb +37 -36
- data/lib/middleman-core/core_extensions/show_exceptions.rb +1 -5
- data/lib/middleman-core/extension.rb +14 -16
- data/lib/middleman-core/extensions.rb +4 -6
- data/lib/middleman-core/load_paths.rb +3 -6
- data/lib/middleman-core/logger.rb +1 -3
- data/lib/middleman-core/meta_pages.rb +11 -11
- data/lib/middleman-core/meta_pages/config_setting.rb +4 -4
- data/lib/middleman-core/meta_pages/sitemap_resource.rb +2 -2
- data/lib/middleman-core/meta_pages/sitemap_tree.rb +4 -4
- data/lib/middleman-core/preview_server.rb +12 -11
- data/lib/middleman-core/profiling.rb +6 -8
- data/lib/middleman-core/renderers/asciidoc.rb +12 -13
- data/lib/middleman-core/renderers/coffee_script.rb +2 -4
- data/lib/middleman-core/renderers/erb.rb +3 -4
- data/lib/middleman-core/renderers/haml.rb +2 -4
- data/lib/middleman-core/renderers/kramdown.rb +3 -4
- data/lib/middleman-core/renderers/less.rb +3 -9
- data/lib/middleman-core/renderers/liquid.rb +4 -8
- data/lib/middleman-core/renderers/markdown.rb +7 -11
- data/lib/middleman-core/renderers/redcarpet.rb +14 -16
- data/lib/middleman-core/renderers/sass.rb +36 -15
- data/lib/middleman-core/renderers/slim.rb +7 -10
- data/lib/middleman-core/renderers/stylus.rb +2 -6
- data/lib/middleman-core/sitemap.rb +6 -13
- data/lib/middleman-core/sitemap/extensions/ignores.rb +4 -10
- data/lib/middleman-core/sitemap/extensions/on_disk.rb +3 -7
- data/lib/middleman-core/sitemap/extensions/proxies.rb +7 -12
- data/lib/middleman-core/sitemap/extensions/redirects.rb +7 -15
- data/lib/middleman-core/sitemap/extensions/request_endpoints.rb +7 -15
- data/lib/middleman-core/sitemap/extensions/traversal.rb +4 -7
- data/lib/middleman-core/sitemap/queryable.rb +22 -27
- data/lib/middleman-core/sitemap/resource.rb +13 -25
- data/lib/middleman-core/sitemap/store.rb +11 -15
- data/lib/middleman-core/templates.rb +9 -12
- data/lib/middleman-core/templates/default.rb +6 -7
- data/lib/middleman-core/templates/empty.rb +0 -1
- data/lib/middleman-core/templates/extension/Gemfile +1 -1
- data/lib/middleman-core/templates/extension/Rakefile +2 -2
- data/lib/middleman-core/templates/extension/lib/lib.rb +0 -1
- data/lib/middleman-core/templates/html5.rb +6 -7
- data/lib/middleman-core/templates/local.rb +1 -2
- data/lib/middleman-core/templates/mobile.rb +3 -4
- data/lib/middleman-core/templates/shared/config.ru +1 -1
- data/lib/middleman-core/util.rb +5 -6
- data/lib/middleman-core/version.rb +1 -1
- data/lib/middleman-more/core_extensions/compass.rb +0 -1
- data/lib/middleman-more/core_extensions/default_helpers.rb +25 -16
- data/lib/middleman-more/core_extensions/i18n.rb +24 -23
- data/lib/middleman-more/extensions/asset_hash.rb +4 -6
- data/lib/middleman-more/extensions/asset_host.rb +1 -1
- data/lib/middleman-more/extensions/automatic_alt_tags.rb +2 -3
- data/lib/middleman-more/extensions/automatic_image_sizes.rb +4 -5
- data/lib/middleman-more/extensions/cache_buster.rb +0 -1
- data/lib/middleman-more/extensions/gzip.rb +1 -1
- data/lib/middleman-more/extensions/lorem.rb +8 -8
- data/lib/middleman-more/extensions/minify_css.rb +9 -8
- data/lib/middleman-more/extensions/minify_javascript.rb +5 -6
- data/lib/middleman-more/extensions/relative_assets.rb +0 -1
- data/lib/middleman-more/templates/smacss.rb +6 -7
- data/middleman-core.gemspec +1 -1
- metadata +5 -5
@@ -9,10 +9,8 @@ require 'active_support/json'
|
|
9
9
|
|
10
10
|
# Extensions namespace
|
11
11
|
module Middleman::CoreExtensions
|
12
|
-
|
13
12
|
class FrontMatter < ::Middleman::Extension
|
14
|
-
|
15
|
-
YAML_ERRORS = [ StandardError ]
|
13
|
+
YAML_ERRORS = [StandardError]
|
16
14
|
|
17
15
|
# https://github.com/tenderlove/psych/issues/23
|
18
16
|
if defined?(Psych) && defined?(Psych::SyntaxError)
|
@@ -45,7 +43,7 @@ module Middleman::CoreExtensions
|
|
45
43
|
data[opt] = fmdata[opt] unless fmdata[opt].nil?
|
46
44
|
end
|
47
45
|
|
48
|
-
{ :
|
46
|
+
{ options: data, page: ::Middleman::Util.recursively_enhance(fmdata).freeze }
|
49
47
|
end
|
50
48
|
end
|
51
49
|
|
@@ -115,7 +113,8 @@ module Middleman::CoreExtensions
|
|
115
113
|
@cache.delete(path)
|
116
114
|
end
|
117
115
|
|
118
|
-
|
116
|
+
private
|
117
|
+
|
119
118
|
# Parse YAML frontmatter out of a string
|
120
119
|
# @param [String] content
|
121
120
|
# @return [Array<Hash, String>]
|
@@ -147,7 +146,7 @@ module Middleman::CoreExtensions
|
|
147
146
|
content = content.sub(json_regex, '')
|
148
147
|
|
149
148
|
begin
|
150
|
-
json = ($1
|
149
|
+
json = ($1 + $2).sub(';;;', '{').sub(';;;', '}')
|
151
150
|
data = ActiveSupport::JSON.decode(json).symbolize_keys
|
152
151
|
rescue => e
|
153
152
|
app.logger.error "JSON Exception parsing #{full_path}: #{e.message}"
|
@@ -1,19 +1,17 @@
|
|
1
1
|
# Shutup Tilt Warnings
|
2
2
|
# @private
|
3
3
|
class Tilt::Template
|
4
|
-
def warn(*
|
5
|
-
# Kernel.warn(*args)
|
4
|
+
def warn(*)
|
6
5
|
end
|
7
6
|
end
|
8
7
|
|
9
8
|
# Rendering extension
|
9
|
+
# rubocop:disable UnderscorePrefixedVariableName
|
10
10
|
module Middleman
|
11
11
|
module CoreExtensions
|
12
12
|
module Rendering
|
13
|
-
|
14
13
|
# Setup extension
|
15
14
|
class << self
|
16
|
-
|
17
15
|
# Once registered
|
18
16
|
def registered(app)
|
19
17
|
# Include methods
|
@@ -93,7 +91,7 @@ module Middleman
|
|
93
91
|
|
94
92
|
# Clean up missing Tilt exts
|
95
93
|
app.after_configuration do
|
96
|
-
Tilt.mappings.each do |key,
|
94
|
+
Tilt.mappings.each do |key, _|
|
97
95
|
begin
|
98
96
|
Tilt[".#{key}"]
|
99
97
|
rescue LoadError, NameError
|
@@ -103,7 +101,7 @@ module Middleman
|
|
103
101
|
end
|
104
102
|
end
|
105
103
|
|
106
|
-
|
104
|
+
alias_method :included, :registered
|
107
105
|
end
|
108
106
|
|
109
107
|
# Custom error class for handling
|
@@ -112,7 +110,6 @@ module Middleman
|
|
112
110
|
|
113
111
|
# Rendering instance methods
|
114
112
|
module InstanceMethods
|
115
|
-
|
116
113
|
# Add or overwrite a default template extension
|
117
114
|
#
|
118
115
|
# @param [Hash] extension_map
|
@@ -140,13 +137,14 @@ module Middleman
|
|
140
137
|
|
141
138
|
# Use a dup of self as a context so that instance variables set within
|
142
139
|
# the template don't persist for other templates.
|
143
|
-
context =
|
140
|
+
context = dup
|
144
141
|
blocks.each do |block|
|
145
142
|
context.instance_eval(&block)
|
146
143
|
end
|
147
144
|
|
148
145
|
# Store current locs/opts for later
|
149
|
-
@current_locs = locs
|
146
|
+
@current_locs = locs
|
147
|
+
@current_opts = opts
|
150
148
|
|
151
149
|
# Keep rendering template until we've used up all extensions. This
|
152
150
|
# handles cases like `style.css.sass.erb`
|
@@ -184,7 +182,7 @@ module Middleman
|
|
184
182
|
# @param [String, Symbol] data
|
185
183
|
# @param [Hash] options
|
186
184
|
# @return [String]
|
187
|
-
def render(
|
185
|
+
def render(_, data, options={}, &block)
|
188
186
|
data = data.to_s
|
189
187
|
|
190
188
|
locals = options[:locals]
|
@@ -198,13 +196,13 @@ module Middleman
|
|
198
196
|
resolve_opts[:preferred_engine] = File.extname(resource.source_file)[1..-1].to_sym
|
199
197
|
|
200
198
|
# Look for partials relative to the current path
|
201
|
-
relative_dir = File.join(current_dir.sub(%r{^#{Regexp.escape(
|
199
|
+
relative_dir = File.join(current_dir.sub(%r{^#{Regexp.escape(source_dir)}/?}, ''), data)
|
202
200
|
|
203
201
|
found_partial = resolve_template(relative_dir, resolve_opts)
|
204
202
|
end
|
205
203
|
|
206
204
|
# Look in the partials_dir for the partial with the current engine
|
207
|
-
|
205
|
+
unless found_partial
|
208
206
|
partials_path = File.join(config[:partials_dir], data)
|
209
207
|
found_partial = resolve_template(partials_path, resolve_opts)
|
210
208
|
end
|
@@ -222,9 +220,13 @@ module Middleman
|
|
222
220
|
# @param [Hash] opts
|
223
221
|
# @param [Class] context
|
224
222
|
# @return [String]
|
225
|
-
def render_individual_file(path, locs
|
223
|
+
def render_individual_file(path, locs={}, opts={}, context=self, &block)
|
226
224
|
path = path.to_s
|
227
225
|
|
226
|
+
# Mutability is FUN!
|
227
|
+
# Try to work around: https://github.com/middleman/middleman/issues/501
|
228
|
+
locs = locs.dup
|
229
|
+
|
228
230
|
# Detect the remdering engine from the extension
|
229
231
|
extension = File.extname(path)
|
230
232
|
engine = extension[1..-1].to_sym
|
@@ -254,13 +256,18 @@ module Middleman
|
|
254
256
|
template_class = Tilt[path]
|
255
257
|
# Allow hooks to manipulate the template before render
|
256
258
|
self.class.callbacks_for_hook(:before_render).each do |callback|
|
257
|
-
|
259
|
+
# Uber::Options::Value doesn't respond to call
|
260
|
+
newbody = if callback.respond_to?(:call)
|
261
|
+
callback.call(body, path, locs, template_class)
|
262
|
+
elsif callback.respond_to?(:evaluate)
|
263
|
+
callback.evaluate(self, body, path, locs, template_class)
|
264
|
+
end
|
258
265
|
body = newbody if newbody # Allow the callback to return nil to skip it
|
259
266
|
end
|
260
267
|
|
261
268
|
# Read compiled template from disk or cache
|
262
269
|
template = cache.fetch(:compiled_template, extension, options, body) do
|
263
|
-
|
270
|
+
::Tilt.new(path, 1, options) { body }
|
264
271
|
end
|
265
272
|
|
266
273
|
# Render using Tilt
|
@@ -268,7 +275,13 @@ module Middleman
|
|
268
275
|
|
269
276
|
# Allow hooks to manipulate the result after render
|
270
277
|
self.class.callbacks_for_hook(:after_render).each do |callback|
|
271
|
-
|
278
|
+
# Uber::Options::Value doesn't respond to call
|
279
|
+
newcontent = if callback.respond_to?(:call)
|
280
|
+
content = callback.call(content, path, locs, template_class)
|
281
|
+
elsif callback.respond_to?(:evaluate)
|
282
|
+
content = callback.evaluate(self, content, path, locs, template_class)
|
283
|
+
end
|
284
|
+
content = newcontent if newcontent # Allow the callback to return nil to skip it
|
272
285
|
end
|
273
286
|
|
274
287
|
output = ::ActiveSupport::SafeBuffer.new ''
|
@@ -317,7 +330,7 @@ module Middleman
|
|
317
330
|
# @return [String]
|
318
331
|
def fetch_layout(engine, opts)
|
319
332
|
# The layout name comes from either the system default or the options
|
320
|
-
local_layout = opts.
|
333
|
+
local_layout = opts.key?(:layout) ? opts[:layout] : config[:layout]
|
321
334
|
return false unless local_layout
|
322
335
|
|
323
336
|
# Look for engine-specific options
|
@@ -325,9 +338,9 @@ module Middleman
|
|
325
338
|
|
326
339
|
# The engine for the layout can be set in options, engine_options or passed
|
327
340
|
# into this method
|
328
|
-
layout_engine = if opts.
|
341
|
+
layout_engine = if opts.key?(:layout_engine)
|
329
342
|
opts[:layout_engine]
|
330
|
-
elsif engine_options.
|
343
|
+
elsif engine_options.key?(:layout_engine)
|
331
344
|
engine_options[:layout_engine]
|
332
345
|
else
|
333
346
|
engine
|
@@ -354,11 +367,8 @@ module Middleman
|
|
354
367
|
# @param [Symbol] preferred_engine
|
355
368
|
# @return [String]
|
356
369
|
def locate_layout(name, preferred_engine=nil)
|
357
|
-
# Whether we've found the layout
|
358
|
-
layout_path = false
|
359
|
-
|
360
370
|
resolve_opts = {}
|
361
|
-
resolve_opts[:preferred_engine] = preferred_engine
|
371
|
+
resolve_opts[:preferred_engine] = preferred_engine unless preferred_engine.nil?
|
362
372
|
|
363
373
|
# Check layouts folder
|
364
374
|
layout_path = resolve_template(File.join(config[:layouts_dir], name.to_s), resolve_opts)
|
@@ -377,13 +387,13 @@ module Middleman
|
|
377
387
|
# Save current buffer for later
|
378
388
|
@_out_buf, _buf_was = '', @_out_buf
|
379
389
|
|
380
|
-
layout_path = locate_layout(layout_name,
|
390
|
+
layout_path = locate_layout(layout_name, current_engine)
|
381
391
|
|
382
392
|
extension = File.extname(layout_path)
|
383
393
|
engine = extension[1..-1].to_sym
|
384
394
|
|
385
395
|
# Store last engine for later (could be inside nested renders)
|
386
|
-
self.current_engine, engine_was = engine,
|
396
|
+
self.current_engine, engine_was = engine, current_engine
|
387
397
|
|
388
398
|
begin
|
389
399
|
content = if block_given?
|
@@ -408,6 +418,7 @@ module Middleman
|
|
408
418
|
end
|
409
419
|
|
410
420
|
# The currently rendering engine
|
421
|
+
# rubocop:disable TrivialAccessors
|
411
422
|
# @return [Symbol, nil]
|
412
423
|
def current_engine=(v)
|
413
424
|
@_current_engine = v
|
@@ -423,18 +434,17 @@ module Middleman
|
|
423
434
|
request_path = request_path.to_s
|
424
435
|
cache.fetch(:resolve_template, request_path, options) do
|
425
436
|
relative_path = Util.strip_leading_slash(request_path)
|
426
|
-
on_disk_path = File.expand_path(relative_path,
|
437
|
+
on_disk_path = File.expand_path(relative_path, source_dir)
|
427
438
|
|
428
439
|
# By default, any engine will do
|
429
440
|
preferred_engines = ['*']
|
430
441
|
|
431
442
|
# If we're specifically looking for a preferred engine
|
432
|
-
if options.
|
443
|
+
if options.key?(:preferred_engine)
|
433
444
|
extension_class = ::Tilt[options[:preferred_engine]]
|
434
|
-
matched_exts = []
|
435
445
|
|
436
446
|
# Get a list of extensions for a preferred engine
|
437
|
-
matched_exts = ::Tilt.mappings.select do |
|
447
|
+
matched_exts = ::Tilt.mappings.select do |_, engines|
|
438
448
|
engines.include? extension_class
|
439
449
|
end.keys
|
440
450
|
|
@@ -464,7 +474,7 @@ module Middleman
|
|
464
474
|
# If we found one, return it and the found engine
|
465
475
|
if found_path
|
466
476
|
found_path
|
467
|
-
elsif File.
|
477
|
+
elsif File.exist?(on_disk_path)
|
468
478
|
on_disk_path
|
469
479
|
else
|
470
480
|
false
|
@@ -8,15 +8,12 @@ require 'middleman-core/util'
|
|
8
8
|
|
9
9
|
module Middleman
|
10
10
|
module CoreExtensions
|
11
|
-
|
12
11
|
# Base helper to manipulate asset paths
|
13
12
|
module Request
|
14
|
-
|
15
13
|
# Extension registered
|
16
14
|
class << self
|
17
15
|
# @private
|
18
16
|
def registered(app)
|
19
|
-
|
20
17
|
# CSSPIE HTC File
|
21
18
|
::Rack::Mime::MIME_TYPES['.htc'] = 'text/x-component'
|
22
19
|
|
@@ -32,7 +29,7 @@ module Middleman
|
|
32
29
|
# Include instance methods
|
33
30
|
app.send :include, InstanceMethods
|
34
31
|
end
|
35
|
-
|
32
|
+
alias_method :included, :registered
|
36
33
|
end
|
37
34
|
|
38
35
|
module ClassMethods
|
@@ -60,9 +57,7 @@ module Middleman
|
|
60
57
|
# @private
|
61
58
|
# @param [Middleman::Application] inst
|
62
59
|
# @return [void]
|
63
|
-
|
64
|
-
@inst = inst
|
65
|
-
end
|
60
|
+
attr_writer :inst
|
66
61
|
|
67
62
|
# Return built Rack app
|
68
63
|
#
|
@@ -74,15 +69,15 @@ module Middleman
|
|
74
69
|
app.use Rack::Lint
|
75
70
|
app.use Rack::Head
|
76
71
|
|
77
|
-
Array(@middleware).each do |klass, options,
|
78
|
-
app.use(klass, *options, &
|
72
|
+
Array(@middleware).each do |klass, options, middleware_block|
|
73
|
+
app.use(klass, *options, &middleware_block)
|
79
74
|
end
|
80
75
|
|
81
76
|
inner_app = inst(&block)
|
82
77
|
app.map('/') { run inner_app }
|
83
78
|
|
84
|
-
Array(@mappings).each do |path,
|
85
|
-
app.map(path, &
|
79
|
+
Array(@mappings).each do |path, map_block|
|
80
|
+
app.map(path, &map_block)
|
86
81
|
end
|
87
82
|
|
88
83
|
app
|
@@ -130,6 +125,7 @@ module Middleman
|
|
130
125
|
# configuration can be included later without impacting
|
131
126
|
# other classes and instances.
|
132
127
|
#
|
128
|
+
# rubocop:disable ClassVars
|
133
129
|
# @return [Class]
|
134
130
|
def server(&block)
|
135
131
|
@@servercounter ||= 0
|
@@ -169,20 +165,21 @@ module Middleman
|
|
169
165
|
# @return [void]
|
170
166
|
def current_path=(path)
|
171
167
|
Thread.current[:current_path] = path
|
172
|
-
Thread.current[:legacy_request] = ::Thor::CoreExt::HashWithIndifferentAccess.new(
|
173
|
-
|
174
|
-
|
175
|
-
|
168
|
+
Thread.current[:legacy_request] = ::Thor::CoreExt::HashWithIndifferentAccess.new(
|
169
|
+
path: path,
|
170
|
+
params: req ? ::Thor::CoreExt::HashWithIndifferentAccess.new(req.params) : {}
|
171
|
+
)
|
176
172
|
end
|
177
173
|
|
178
|
-
delegate :use, :
|
179
|
-
delegate :map, :
|
174
|
+
delegate :use, to: :"self.class"
|
175
|
+
delegate :map, to: :"self.class"
|
180
176
|
|
181
177
|
# Rack request
|
182
178
|
# @return [Rack::Request]
|
183
179
|
def req
|
184
180
|
Thread.current[:req]
|
185
181
|
end
|
182
|
+
|
186
183
|
def req=(value)
|
187
184
|
Thread.current[:req] = value
|
188
185
|
end
|
@@ -199,7 +196,7 @@ module Middleman
|
|
199
196
|
self.req = req = ::Rack::Request.new(env)
|
200
197
|
res = ::Rack::Response.new
|
201
198
|
|
202
|
-
logger.debug "== Request: #{env[
|
199
|
+
logger.debug "== Request: #{env['PATH_INFO']}"
|
203
200
|
|
204
201
|
# Catch :halt exceptions and use that response if given
|
205
202
|
catch(:halt) do
|
@@ -277,7 +274,7 @@ module Middleman
|
|
277
274
|
# @param [String] value Mime type
|
278
275
|
# @return [void]
|
279
276
|
def mime_type(type, value)
|
280
|
-
type = ".#{type}" unless type.to_s[0] ==
|
277
|
+
type = ".#{type}" unless type.to_s[0] == '.'
|
281
278
|
::Rack::Mime::MIME_TYPES[type] = value
|
282
279
|
end
|
283
280
|
|
@@ -11,14 +11,14 @@ module Middleman
|
|
11
11
|
#
|
12
12
|
# @param [String, Symbol] layout_name
|
13
13
|
# @return [void]
|
14
|
-
|
15
|
-
|
14
|
+
def with_layout(layout_name, &block)
|
15
|
+
old_layout = config[:layout]
|
16
16
|
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
17
|
+
config[:layout] = layout_name
|
18
|
+
instance_exec(&block) if block_given?
|
19
|
+
ensure
|
20
|
+
config[:layout] = old_layout
|
21
|
+
end
|
22
22
|
|
23
23
|
# The page method allows the layout to be set on a specific path
|
24
24
|
#
|
@@ -28,43 +28,44 @@ module Middleman
|
|
28
28
|
# @param [String] url
|
29
29
|
# @param [Hash] opts
|
30
30
|
# @return [void]
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
# Default layout
|
35
|
-
opts[:layout] = config[:layout] if opts[:layout].nil?
|
31
|
+
def page(url, opts={}, &block)
|
32
|
+
blocks = Array(block)
|
36
33
|
|
37
|
-
|
38
|
-
|
34
|
+
# Default layout
|
35
|
+
opts[:layout] = config[:layout] if opts[:layout].nil?
|
39
36
|
|
40
|
-
|
41
|
-
|
42
|
-
{ :options => opts, :blocks => blocks }
|
43
|
-
end
|
37
|
+
# If the url is a regexp
|
38
|
+
if url.is_a?(Regexp) || url.include?('*')
|
44
39
|
|
45
|
-
|
40
|
+
# Use the metadata loop for matching against paths at runtime
|
41
|
+
sitemap.provides_metadata_for_path(url) do |_|
|
42
|
+
{ options: opts, blocks: blocks }
|
46
43
|
end
|
47
44
|
|
48
|
-
|
49
|
-
|
50
|
-
if url.end_with?('/') || File.directory?(File.join(source_dir, url))
|
51
|
-
url = File.join(url, config[:index_file])
|
52
|
-
end
|
45
|
+
return
|
46
|
+
end
|
53
47
|
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
# TODO: deprecate ignore through page?
|
60
|
-
ignore(url)
|
61
|
-
end
|
48
|
+
# Normalized path
|
49
|
+
url = '/' + Middleman::Util.normalize_path(url)
|
50
|
+
if url.end_with?('/') || File.directory?(File.join(source_dir, url))
|
51
|
+
url = File.join(url, config[:index_file])
|
52
|
+
end
|
62
53
|
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
54
|
+
# Setup proxy
|
55
|
+
if target = opts.delete(:proxy)
|
56
|
+
# TODO: deprecate proxy through page?
|
57
|
+
proxy(url, target, opts, &block)
|
58
|
+
return
|
59
|
+
elsif opts.delete(:ignore)
|
60
|
+
# TODO: deprecate ignore through page?
|
61
|
+
ignore(url)
|
62
|
+
end
|
63
|
+
|
64
|
+
# Setup a metadata matcher for rendering those options
|
65
|
+
sitemap.provides_metadata_for_path(url) do |_|
|
66
|
+
{ options: opts, blocks: blocks }
|
67
67
|
end
|
68
|
+
end
|
68
69
|
end
|
69
70
|
end
|
70
71
|
end
|