middleman-core 4.1.2 → 4.1.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/features/partials.feature +10 -5
- data/fixtures/partials-app/source/index_missing.html.erb +3 -0
- data/lib/middleman-core/application.rb +5 -1
- data/lib/middleman-core/builder.rb +7 -1
- data/lib/middleman-core/extensions.rb +1 -1
- data/lib/middleman-core/extensions/directory_indexes.rb +8 -2
- data/lib/middleman-core/preview_server.rb +11 -12
- data/lib/middleman-core/sitemap/extensions/import.rb +2 -2
- data/lib/middleman-core/sitemap/store.rb +11 -0
- data/lib/middleman-core/sources.rb +2 -1
- data/lib/middleman-core/sources/source_watcher.rb +2 -1
- data/lib/middleman-core/template_context.rb +0 -1
- data/lib/middleman-core/version.rb +1 -1
- data/middleman-core.gemspec +2 -2
- metadata +8 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 07f3019963e912c90ffd23f7781a1e2708916d99
|
4
|
+
data.tar.gz: 390ae3524c422182a88efcc01cf84b99406819b2
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 808225bf5afa002a4ce07c597bcc3bf9db8896214701b7d07ca279c3a5549101a147617b3c285c9d912d4edad6aa2d8315cc0e026e9f68cb7105b8e464520371
|
7
|
+
data.tar.gz: 6252c9056ac15fac4b34ad46a7853b0855a0d7d89ad1fffc605b2eaa23a78e240af0bba31dcb3d6f96a65951f728c4422f665a3d0771e5ff4b10c0ce42cbc81f
|
data/features/partials.feature
CHANGED
@@ -5,25 +5,30 @@ Feature: Provide Sane Defaults for Partial Behavior
|
|
5
5
|
When I go to "/index.html"
|
6
6
|
Then I should see "Header"
|
7
7
|
And I should see "Footer"
|
8
|
-
|
8
|
+
|
9
9
|
Scenario: Finds shared partials relative to the root (sub)
|
10
10
|
Given the Server is running at "partials-app"
|
11
11
|
When I go to "/sub/index.html"
|
12
12
|
Then I should see "Header"
|
13
13
|
And I should see "Footer"
|
14
|
-
|
14
|
+
|
15
|
+
Scenario: Flags error when partial is not found
|
16
|
+
Given the Server is running at "partials-app"
|
17
|
+
When I go to "/index_missing.html"
|
18
|
+
Then I should see "Error: Could not locate partial"
|
19
|
+
|
15
20
|
Scenario: Prefers partials of the same engine type
|
16
21
|
Given the Server is running at "partials-app"
|
17
22
|
When I go to "/index.html"
|
18
23
|
Then I should see "ERb Main"
|
19
|
-
|
24
|
+
|
20
25
|
Scenario: Prefers partials of the same engine type
|
21
26
|
Given the Server is running at "partials-app"
|
22
27
|
When I go to "/second.html"
|
23
28
|
Then I should see "Str Main"
|
24
29
|
And I should see "Header"
|
25
30
|
And I should see "Footer"
|
26
|
-
|
31
|
+
|
27
32
|
Scenario: Finds partial relative to template
|
28
33
|
Given the Server is running at "partials-app"
|
29
34
|
When I go to "/sub/index.html"
|
@@ -33,7 +38,7 @@ Feature: Provide Sane Defaults for Partial Behavior
|
|
33
38
|
Given the Server is running at "partials-app"
|
34
39
|
When I go to "/locals.html"
|
35
40
|
Then I should see "Local var is bar"
|
36
|
-
|
41
|
+
|
37
42
|
Scenario: Partial and Layout use different engines
|
38
43
|
Given the Server is running at "different-engine-partial"
|
39
44
|
When I go to "/index.html"
|
@@ -96,6 +96,10 @@ module Middleman
|
|
96
96
|
# @return [String]
|
97
97
|
define_setting :source, 'source', 'Name of the source directory'
|
98
98
|
|
99
|
+
# If we should not run the sitemap.
|
100
|
+
# @return [Boolean]
|
101
|
+
define_setting :disable_sitemap, false, 'If we should not run the sitemap.'
|
102
|
+
|
99
103
|
# If we should exit before ready event.
|
100
104
|
# @return [Boolean]
|
101
105
|
define_setting :exit_before_ready, false, 'If we should exit before ready event.'
|
@@ -106,7 +110,7 @@ module Middleman
|
|
106
110
|
|
107
111
|
# Middleman environment. Defaults to :development
|
108
112
|
# @return [String]
|
109
|
-
define_setting :environment, ((ENV['MM_ENV'] && ENV['MM_ENV'].to_sym) || :development), 'Middleman environment. Defaults to :development'
|
113
|
+
define_setting :environment, ((ENV['MM_ENV'] && ENV['MM_ENV'].to_sym) || :development), 'Middleman environment. Defaults to :development', import: proc { |s| s.to_sym }
|
110
114
|
|
111
115
|
# Which file should be used for directory indexes
|
112
116
|
# @return [String]
|
@@ -117,7 +117,13 @@ module Middleman
|
|
117
117
|
.sort_by { |resource| SORT_ORDER.index(resource.ext) || 100 }
|
118
118
|
|
119
119
|
if @glob
|
120
|
-
resources = resources.select
|
120
|
+
resources = resources.select do |resource|
|
121
|
+
if defined?(::File::FNM_EXTGLOB)
|
122
|
+
File.fnmatch(@glob, resource.destination_path, ::File::FNM_EXTGLOB)
|
123
|
+
else
|
124
|
+
File.fnmatch(@glob, resource.destination_path)
|
125
|
+
end
|
126
|
+
end
|
121
127
|
end
|
122
128
|
|
123
129
|
output_resources(resources)
|
@@ -52,7 +52,7 @@ module Middleman
|
|
52
52
|
def register(name, extension_class=nil, options={}, &block)
|
53
53
|
raise 'Extension name must be a symbol' unless name.is_a?(Symbol)
|
54
54
|
# If we've already got an extension registered under this name, bail out
|
55
|
-
raise "There is already an extension registered with the name '#{name}'" if registered.key?(name)
|
55
|
+
# raise "There is a already an extension registered with the name '#{name}'" if registered.key?(name)
|
56
56
|
|
57
57
|
# If the extension is defined with a block, grab options out of the "extension_class" parameter.
|
58
58
|
if extension_class && block_given? && options.empty? && extension_class.is_a?(Hash)
|
@@ -11,16 +11,22 @@ class Middleman::Extensions::DirectoryIndexes < ::Middleman::Extension
|
|
11
11
|
index_file = app.config[:index_file]
|
12
12
|
new_index_path = "/#{index_file}"
|
13
13
|
|
14
|
+
extensions = %w(.htm .html .php)
|
15
|
+
|
14
16
|
resources.each do |resource|
|
15
17
|
# Check if it would be pointless to reroute
|
16
18
|
next if resource.destination_path == index_file ||
|
17
19
|
resource.destination_path.end_with?(new_index_path) ||
|
18
|
-
|
20
|
+
!extensions.include?(resource.ext)
|
19
21
|
|
20
22
|
# Check if file metadata (options set by "page" in config.rb or frontmatter) turns directory_index off
|
21
23
|
next if resource.options[:directory_index] == false
|
22
24
|
|
23
|
-
|
25
|
+
extensions.each do |ext|
|
26
|
+
resource.destination_path = resource.destination_path.chomp(ext)
|
27
|
+
end
|
28
|
+
|
29
|
+
resource.destination_path += new_index_path
|
24
30
|
end
|
25
31
|
end
|
26
32
|
end
|
@@ -18,12 +18,13 @@ module Middleman
|
|
18
18
|
|
19
19
|
# Start an instance of Middleman::Application
|
20
20
|
# @return [void]
|
21
|
-
def start(opts={})
|
21
|
+
def start(opts={}, cli_options={})
|
22
22
|
# Do not buffer output, otherwise testing of output does not work
|
23
23
|
$stdout.sync = true
|
24
24
|
$stderr.sync = true
|
25
25
|
|
26
26
|
@options = opts
|
27
|
+
@cli_options = cli_options
|
27
28
|
@server_information = ServerInformation.new
|
28
29
|
@server_information.https = (@options[:https] == true)
|
29
30
|
|
@@ -131,6 +132,7 @@ module Middleman
|
|
131
132
|
|
132
133
|
def initialize_new_app
|
133
134
|
opts = @options.dup
|
135
|
+
cli_options = @cli_options.dup
|
134
136
|
|
135
137
|
::Middleman::Logger.singleton(
|
136
138
|
opts[:debug] ? 0 : 1,
|
@@ -138,17 +140,14 @@ module Middleman
|
|
138
140
|
)
|
139
141
|
|
140
142
|
app = ::Middleman::Application.new do
|
141
|
-
|
142
|
-
|
143
|
-
|
144
|
-
|
145
|
-
|
146
|
-
|
147
|
-
|
148
|
-
|
149
|
-
config[:https] = opts[:https] unless opts[:https].nil?
|
150
|
-
config[:ssl_certificate] = opts[:ssl_certificate] if opts[:ssl_certificate]
|
151
|
-
config[:ssl_private_key] = opts[:ssl_private_key] if opts[:ssl_private_key]
|
143
|
+
cli_options.each do |k, v|
|
144
|
+
setting = config.setting(k.to_sym)
|
145
|
+
next unless setting
|
146
|
+
|
147
|
+
v = setting.options[:import].call(v) if setting.options[:import]
|
148
|
+
|
149
|
+
config[k.to_sym] = v
|
150
|
+
end
|
152
151
|
|
153
152
|
ready do
|
154
153
|
unless config[:watcher_disable]
|
@@ -23,8 +23,8 @@ module Middleman
|
|
23
23
|
ImportPathDescriptor = Struct.new(:from, :renameProc) do
|
24
24
|
def execute_descriptor(app, resources)
|
25
25
|
resources + ::Middleman::Util.glob_directory(File.join(from, '**/*'))
|
26
|
-
|
27
|
-
|
26
|
+
.reject { |path| File.directory?(path) }
|
27
|
+
.map do |path|
|
28
28
|
target_path = Pathname(path).relative_path_from(Pathname(from).parent).to_s
|
29
29
|
|
30
30
|
::Middleman::Sitemap::Resource.new(
|
@@ -216,6 +216,8 @@ module Middleman
|
|
216
216
|
# rebuild_resource_list! since the last time it was run. This is
|
217
217
|
# very expensive!
|
218
218
|
def ensure_resource_list_updated!
|
219
|
+
return if @app.config[:disable_sitemap]
|
220
|
+
|
219
221
|
@lock.synchronize do
|
220
222
|
return unless @needs_sitemap_rebuild
|
221
223
|
|
@@ -237,7 +239,16 @@ module Middleman
|
|
237
239
|
# Rebuild cache
|
238
240
|
@resources.each do |resource|
|
239
241
|
@_lookup_by_path[resource.path] = resource
|
242
|
+
end
|
243
|
+
|
244
|
+
@resources.each do |resource|
|
240
245
|
@_lookup_by_destination_path[resource.destination_path] = resource
|
246
|
+
end
|
247
|
+
|
248
|
+
# NB: This needs to be done after the previous two steps,
|
249
|
+
# since some proxy resources are looked up by path in order to
|
250
|
+
# get their metadata and subsequently their page_id.
|
251
|
+
@resources.each do |resource|
|
241
252
|
@_lookup_by_page_id[resource.page_id.to_sym] = resource
|
242
253
|
end
|
243
254
|
|
@@ -116,7 +116,8 @@ module Middleman
|
|
116
116
|
Contract Or[Symbol, HANDLER], Maybe[Hash] => HANDLER
|
117
117
|
def watch(type_or_handler, options={})
|
118
118
|
handler = if type_or_handler.is_a? Symbol
|
119
|
-
|
119
|
+
path = File.expand_path(options.delete(:path), app.root)
|
120
|
+
SourceWatcher.new(self, type_or_handler, path, options)
|
120
121
|
else
|
121
122
|
type_or_handler
|
122
123
|
end
|
@@ -92,7 +92,7 @@ module Middleman
|
|
92
92
|
# @return [void]
|
93
93
|
Contract String => Any
|
94
94
|
def update_path(directory)
|
95
|
-
@directory = Pathname(directory)
|
95
|
+
@directory = Pathname(File.expand_path(directory, app.root))
|
96
96
|
|
97
97
|
stop_listener! if @listener
|
98
98
|
|
@@ -133,6 +133,7 @@ module Middleman
|
|
133
133
|
return nil if p.absolute? && !p.to_s.start_with?(@directory.to_s)
|
134
134
|
|
135
135
|
p = @directory + p if p.relative?
|
136
|
+
|
136
137
|
if glob
|
137
138
|
@extensionless_files[p]
|
138
139
|
else
|
@@ -104,7 +104,6 @@ module Middleman
|
|
104
104
|
|
105
105
|
partial_file = locate_partial(name, false) || locate_partial(name, true)
|
106
106
|
|
107
|
-
return '' unless partial_file
|
108
107
|
raise ::Middleman::TemplateRenderer::TemplateNotFound, "Could not locate partial: #{name}" unless partial_file
|
109
108
|
|
110
109
|
source_path = sitemap.file_to_path(partial_file)
|
data/middleman-core.gemspec
CHANGED
@@ -29,7 +29,7 @@ Gem::Specification.new do |s|
|
|
29
29
|
# Helpers
|
30
30
|
s.add_dependency('activesupport', ['~> 4.2'])
|
31
31
|
s.add_dependency('padrino-helpers', ['~> 0.13.0'])
|
32
|
-
s.add_dependency("addressable", ["~> 2.
|
32
|
+
s.add_dependency("addressable", ["~> 2.3"])
|
33
33
|
|
34
34
|
# Watcher
|
35
35
|
s.add_dependency('listen', ['~> 3.0'])
|
@@ -41,7 +41,7 @@ Gem::Specification.new do |s|
|
|
41
41
|
s.add_dependency('i18n', ['~> 0.7.0'])
|
42
42
|
|
43
43
|
# Automatic Image Sizes
|
44
|
-
s.add_dependency('fastimage', ['~> 1.
|
44
|
+
s.add_dependency('fastimage', ['~> 1.7'])
|
45
45
|
|
46
46
|
# Minify CSS
|
47
47
|
s.add_dependency('sass', ['>= 3.4'])
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: middleman-core
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 4.1.
|
4
|
+
version: 4.1.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Thomas Reynolds
|
@@ -10,7 +10,7 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date: 2016-
|
13
|
+
date: 2016-03-17 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: bundler
|
@@ -136,14 +136,14 @@ dependencies:
|
|
136
136
|
requirements:
|
137
137
|
- - "~>"
|
138
138
|
- !ruby/object:Gem::Version
|
139
|
-
version: 2.
|
139
|
+
version: '2.3'
|
140
140
|
type: :runtime
|
141
141
|
prerelease: false
|
142
142
|
version_requirements: !ruby/object:Gem::Requirement
|
143
143
|
requirements:
|
144
144
|
- - "~>"
|
145
145
|
- !ruby/object:Gem::Version
|
146
|
-
version: 2.
|
146
|
+
version: '2.3'
|
147
147
|
- !ruby/object:Gem::Dependency
|
148
148
|
name: listen
|
149
149
|
requirement: !ruby/object:Gem::Requirement
|
@@ -192,14 +192,14 @@ dependencies:
|
|
192
192
|
requirements:
|
193
193
|
- - "~>"
|
194
194
|
- !ruby/object:Gem::Version
|
195
|
-
version: '1.
|
195
|
+
version: '1.7'
|
196
196
|
type: :runtime
|
197
197
|
prerelease: false
|
198
198
|
version_requirements: !ruby/object:Gem::Requirement
|
199
199
|
requirements:
|
200
200
|
- - "~>"
|
201
201
|
- !ruby/object:Gem::Version
|
202
|
-
version: '1.
|
202
|
+
version: '1.7'
|
203
203
|
- !ruby/object:Gem::Dependency
|
204
204
|
name: sass
|
205
205
|
requirement: !ruby/object:Gem::Requirement
|
@@ -1202,6 +1202,7 @@ files:
|
|
1202
1202
|
- fixtures/partials-app/source/block.html.erb
|
1203
1203
|
- fixtures/partials-app/source/images/tiger.svg
|
1204
1204
|
- fixtures/partials-app/source/index.html.erb
|
1205
|
+
- fixtures/partials-app/source/index_missing.html.erb
|
1205
1206
|
- fixtures/partials-app/source/locals.html.erb
|
1206
1207
|
- fixtures/partials-app/source/second.html.str
|
1207
1208
|
- fixtures/partials-app/source/shared/_footer.erb
|
@@ -2356,6 +2357,7 @@ test_files:
|
|
2356
2357
|
- fixtures/partials-app/source/block.html.erb
|
2357
2358
|
- fixtures/partials-app/source/images/tiger.svg
|
2358
2359
|
- fixtures/partials-app/source/index.html.erb
|
2360
|
+
- fixtures/partials-app/source/index_missing.html.erb
|
2359
2361
|
- fixtures/partials-app/source/locals.html.erb
|
2360
2362
|
- fixtures/partials-app/source/second.html.str
|
2361
2363
|
- fixtures/partials-app/source/shared/_footer.erb
|