middleman-core 3.2.1 → 3.2.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Rakefile +1 -1
- data/features/helpers_select_tag.feature +19 -0
- data/lib/middleman-core.rb +4 -4
- data/lib/middleman-core/application.rb +40 -46
- data/lib/middleman-core/cli.rb +15 -15
- data/lib/middleman-core/cli/build.rb +26 -24
- data/lib/middleman-core/cli/bundler.rb +4 -4
- data/lib/middleman-core/cli/console.rb +6 -6
- data/lib/middleman-core/cli/extension.rb +12 -12
- data/lib/middleman-core/cli/init.rb +17 -17
- data/lib/middleman-core/cli/server.rb +28 -28
- data/lib/middleman-core/configuration.rb +2 -2
- data/lib/middleman-core/core_extensions.rb +23 -23
- data/lib/middleman-core/core_extensions/data.rb +5 -5
- data/lib/middleman-core/core_extensions/extensions.rb +6 -6
- data/lib/middleman-core/core_extensions/external_helpers.rb +2 -2
- data/lib/middleman-core/core_extensions/file_watcher.rb +3 -3
- data/lib/middleman-core/core_extensions/front_matter.rb +11 -11
- data/lib/middleman-core/core_extensions/rendering.rb +21 -21
- data/lib/middleman-core/core_extensions/request.rb +10 -8
- data/lib/middleman-core/core_extensions/routing.rb +1 -1
- data/lib/middleman-core/extensions.rb +5 -5
- data/lib/middleman-core/load_paths.rb +7 -7
- data/lib/middleman-core/logger.rb +13 -1
- data/lib/middleman-core/meta_pages.rb +2 -2
- data/lib/middleman-core/meta_pages/config_setting.rb +3 -3
- 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 +16 -12
- data/lib/middleman-core/profiling.rb +1 -1
- data/lib/middleman-core/renderers/coffee_script.rb +1 -1
- data/lib/middleman-core/renderers/erb.rb +1 -1
- data/lib/middleman-core/renderers/haml.rb +1 -1
- data/lib/middleman-core/renderers/kramdown.rb +2 -2
- data/lib/middleman-core/renderers/less.rb +2 -2
- data/lib/middleman-core/renderers/liquid.rb +1 -1
- data/lib/middleman-core/renderers/markdown.rb +3 -3
- data/lib/middleman-core/renderers/redcarpet.rb +1 -1
- data/lib/middleman-core/renderers/sass.rb +7 -7
- data/lib/middleman-core/renderers/slim.rb +2 -2
- data/lib/middleman-core/renderers/stylus.rb +2 -2
- data/lib/middleman-core/sitemap.rb +8 -8
- data/lib/middleman-core/sitemap/extensions/ignores.rb +2 -2
- data/lib/middleman-core/sitemap/extensions/redirects.rb +4 -1
- data/lib/middleman-core/sitemap/extensions/traversal.rb +6 -6
- data/lib/middleman-core/sitemap/queryable.rb +3 -3
- data/lib/middleman-core/sitemap/resource.rb +6 -6
- data/lib/middleman-core/sitemap/store.rb +12 -12
- data/lib/middleman-core/step_definitions.rb +5 -5
- data/lib/middleman-core/step_definitions/builder_steps.rb +5 -5
- data/lib/middleman-core/step_definitions/server_steps.rb +6 -6
- data/lib/middleman-core/templates.rb +14 -14
- data/lib/middleman-core/templates/default.rb +17 -17
- data/lib/middleman-core/templates/empty.rb +3 -3
- data/lib/middleman-core/templates/extension/Gemfile +7 -7
- data/lib/middleman-core/templates/extension/Rakefile +1 -1
- data/lib/middleman-core/templates/extension/features/support/env.rb +2 -2
- data/lib/middleman-core/templates/extension/lib/lib.rb +2 -2
- data/lib/middleman-core/templates/extension/lib/middleman_extension.rb +1 -1
- data/lib/middleman-core/templates/html5.rb +9 -9
- data/lib/middleman-core/templates/local.rb +3 -3
- data/lib/middleman-core/templates/mobile.rb +6 -6
- data/lib/middleman-core/templates/shared/config.tt +1 -1
- data/lib/middleman-core/util.rb +234 -182
- data/lib/middleman-core/version.rb +1 -1
- data/lib/middleman-more/core_extensions/compass.rb +3 -3
- data/lib/middleman-more/core_extensions/default_helpers.rb +21 -10
- data/lib/middleman-more/core_extensions/i18n.rb +18 -18
- data/lib/middleman-more/extensions/asset_hash.rb +7 -5
- data/lib/middleman-more/extensions/asset_host.rb +2 -2
- data/lib/middleman-more/extensions/automatic_alt_tags.rb +4 -4
- data/lib/middleman-more/extensions/automatic_image_sizes.rb +3 -3
- data/lib/middleman-more/extensions/cache_buster.rb +7 -7
- data/lib/middleman-more/extensions/lorem.rb +5 -5
- data/lib/middleman-more/extensions/minify_css.rb +4 -4
- data/lib/middleman-more/extensions/minify_javascript.rb +3 -3
- data/lib/middleman-more/extensions/relative_assets.rb +1 -1
- data/lib/middleman-more/templates/smacss.rb +10 -10
- data/lib/middleman/rack.rb +2 -2
- data/middleman-core.gemspec +1 -1
- metadata +6 -4
@@ -1,5 +1,5 @@
|
|
1
|
-
require
|
2
|
-
require
|
1
|
+
require 'middleman-core/renderers/sass'
|
2
|
+
require 'compass'
|
3
3
|
|
4
4
|
class Middleman::CoreExtensions::Compass < ::Middleman::Extension
|
5
5
|
|
@@ -44,7 +44,7 @@ class Middleman::CoreExtensions::Compass < ::Middleman::Extension
|
|
44
44
|
compass_config.output_style = :nested
|
45
45
|
|
46
46
|
# No line-comments in test mode (changing paths mess with sha1)
|
47
|
-
compass_config.line_comments = false if ENV[
|
47
|
+
compass_config.line_comments = false if ENV['TEST']
|
48
48
|
end
|
49
49
|
|
50
50
|
# Call hook
|
@@ -6,9 +6,9 @@ end
|
|
6
6
|
class Padrino::Helpers::OutputHelpers::ErbHandler
|
7
7
|
# Force Erb capture not to use safebuffer
|
8
8
|
def capture_from_template(*args, &block)
|
9
|
-
self.output_buffer, _buf_was =
|
9
|
+
self.output_buffer, _buf_was = '', self.output_buffer
|
10
10
|
captured_block = block.call(*args)
|
11
|
-
ret = eval(
|
11
|
+
ret = eval('@_out_buf', block.binding)
|
12
12
|
self.output_buffer = _buf_was
|
13
13
|
[ ret, captured_block ]
|
14
14
|
end
|
@@ -49,7 +49,7 @@ class Middleman::CoreExtensions::DefaultHelpers < ::Middleman::Extension
|
|
49
49
|
output = ActiveSupport::SafeBuffer.new
|
50
50
|
output.safe_concat "<#{name}#{attributes}>"
|
51
51
|
if content.respond_to?(:each) && !content.is_a?(String)
|
52
|
-
content.each { |c| output.safe_concat c; output.safe_concat NEWLINE }
|
52
|
+
content.each { |c| output.safe_concat c; output.safe_concat ::Padrino::Helpers::TagHelpers::NEWLINE }
|
53
53
|
else
|
54
54
|
output.safe_concat "#{content}"
|
55
55
|
end
|
@@ -60,7 +60,7 @@ class Middleman::CoreExtensions::DefaultHelpers < ::Middleman::Extension
|
|
60
60
|
|
61
61
|
def capture_html(*args, &block)
|
62
62
|
handler = auto_find_proper_handler(&block)
|
63
|
-
captured_block, captured_html = nil,
|
63
|
+
captured_block, captured_html = nil, ''
|
64
64
|
if handler && handler.is_type? && handler.block_is_type?(block)
|
65
65
|
captured_html, captured_block = handler.capture_from_template(*args, &block)
|
66
66
|
end
|
@@ -134,7 +134,7 @@ class Middleman::CoreExtensions::DefaultHelpers < ::Middleman::Extension
|
|
134
134
|
parts = path.split('.').first.split('/')
|
135
135
|
parts.each_with_index { |_, i| classes << parts.first(i+1).join('_') }
|
136
136
|
|
137
|
-
prefix = options[:numeric_prefix] ||
|
137
|
+
prefix = options[:numeric_prefix] || 'x'
|
138
138
|
classes.map do |c|
|
139
139
|
# Replace weird class name characters
|
140
140
|
c = c.gsub(/[^a-zA-Z0-9\-_]/, '-')
|
@@ -162,7 +162,7 @@ class Middleman::CoreExtensions::DefaultHelpers < ::Middleman::Extension
|
|
162
162
|
source = source.to_s.tr(' ', '')
|
163
163
|
ignore_extension = (kind == :images || kind == :fonts) # don't append extension
|
164
164
|
source << ".#{kind}" unless ignore_extension || source.end_with?(".#{kind}")
|
165
|
-
asset_folder =
|
165
|
+
asset_folder = '' if source.start_with?('/') # absolute path
|
166
166
|
|
167
167
|
asset_url(source, asset_folder)
|
168
168
|
end
|
@@ -172,7 +172,7 @@ class Middleman::CoreExtensions::DefaultHelpers < ::Middleman::Extension
|
|
172
172
|
# @param [String] path The path (such as "photo.jpg")
|
173
173
|
# @param [String] prefix The type prefix (such as "images")
|
174
174
|
# @return [String] The fully qualified asset url
|
175
|
-
def asset_url(path, prefix=
|
175
|
+
def asset_url(path, prefix='')
|
176
176
|
# Don't touch assets which already have a full path
|
177
177
|
if path.include?('//') or path.start_with?('data:')
|
178
178
|
path
|
@@ -194,7 +194,10 @@ class Middleman::CoreExtensions::DefaultHelpers < ::Middleman::Extension
|
|
194
194
|
# or a Resource, this will produce the nice URL configured for that
|
195
195
|
# path, respecting :relative_links, directory indexes, etc.
|
196
196
|
def url_for(path_or_resource, options={})
|
197
|
-
|
197
|
+
options_with_resource = options.dup
|
198
|
+
options_with_resource[:current_resource] ||= current_resource
|
199
|
+
|
200
|
+
::Middleman::Util.url_for(self, path_or_resource, options_with_resource)
|
198
201
|
end
|
199
202
|
|
200
203
|
# Overload the regular link_to to be sitemap-aware - if you
|
@@ -215,15 +218,23 @@ class Middleman::CoreExtensions::DefaultHelpers < ::Middleman::Extension
|
|
215
218
|
options_index = block_given? ? 1 : 2
|
216
219
|
|
217
220
|
if block_given? && args.size > 2
|
218
|
-
raise ArgumentError.new(
|
221
|
+
raise ArgumentError.new('Too many arguments to link_to(url, options={}, &block)')
|
219
222
|
end
|
220
223
|
|
221
224
|
if url = args[url_arg_index]
|
222
225
|
options = args[options_index] || {}
|
223
|
-
raise ArgumentError.new(
|
226
|
+
raise ArgumentError.new('Options must be a hash') unless options.is_a?(Hash)
|
224
227
|
|
225
228
|
# Transform the url through our magic url_for method
|
226
229
|
args[url_arg_index] = url_for(url, options)
|
230
|
+
|
231
|
+
# Cleanup before passing to Padrino
|
232
|
+
options.delete(:relative)
|
233
|
+
options.delete(:current_resource)
|
234
|
+
options.delete(:find_resource)
|
235
|
+
options.delete(:query)
|
236
|
+
options.delete(:anchor)
|
237
|
+
options.delete(:fragment)
|
227
238
|
end
|
228
239
|
|
229
240
|
super(*args, &block)
|
@@ -1,11 +1,11 @@
|
|
1
1
|
class Middleman::CoreExtensions::Internationalization < ::Middleman::Extension
|
2
|
-
option :no_fallbacks, false,
|
3
|
-
option :langs, nil,
|
4
|
-
option :lang_map, {},
|
5
|
-
option :path,
|
6
|
-
option :templates_dir,
|
7
|
-
option :mount_at_root, nil,
|
8
|
-
option :data,
|
2
|
+
option :no_fallbacks, false, 'Disable I18n fallbacks'
|
3
|
+
option :langs, nil, 'List of langs, will autodiscover by default'
|
4
|
+
option :lang_map, {}, 'Language shortname map'
|
5
|
+
option :path, '/:locale/', 'URL prefix path'
|
6
|
+
option :templates_dir, 'localizable', 'Location of templates to be localized'
|
7
|
+
option :mount_at_root, nil, 'Mount a specific language at the root of the site'
|
8
|
+
option :data, 'locales', 'The directory holding your locale configurations'
|
9
9
|
|
10
10
|
def initialize(app, options_hash={}, &block)
|
11
11
|
super
|
@@ -17,11 +17,11 @@ class Middleman::CoreExtensions::Internationalization < ::Middleman::Extension
|
|
17
17
|
|
18
18
|
# See https://github.com/svenfuchs/i18n/wiki/Fallbacks
|
19
19
|
unless options[:no_fallbacks]
|
20
|
-
require
|
20
|
+
require 'i18n/backend/fallbacks'
|
21
21
|
::I18n::Backend::Simple.send(:include, ::I18n::Backend::Fallbacks)
|
22
22
|
end
|
23
23
|
|
24
|
-
app.config.define_setting :locales_dir,
|
24
|
+
app.config.define_setting :locales_dir, 'locales', 'The directory holding your locale configurations'
|
25
25
|
|
26
26
|
app.send :include, LocaleHelpers
|
27
27
|
end
|
@@ -29,7 +29,7 @@ class Middleman::CoreExtensions::Internationalization < ::Middleman::Extension
|
|
29
29
|
def after_configuration
|
30
30
|
app.files.reload_path(app.config[:locals_dir] || options[:data])
|
31
31
|
|
32
|
-
@locales_glob = File.join(app.config[:locals_dir] || options[:data],
|
32
|
+
@locales_glob = File.join(app.config[:locals_dir] || options[:data], '**', '*.{rb,yml,yaml}')
|
33
33
|
@locales_regex = convert_glob_to_regex(@locales_glob)
|
34
34
|
|
35
35
|
@maps = {}
|
@@ -42,7 +42,7 @@ class Middleman::CoreExtensions::Internationalization < ::Middleman::Extension
|
|
42
42
|
end
|
43
43
|
|
44
44
|
# Don't output localizable files
|
45
|
-
app.ignore File.join(options[:templates_dir],
|
45
|
+
app.ignore File.join(options[:templates_dir], '**')
|
46
46
|
|
47
47
|
app.sitemap.provides_metadata_for_path(&method(:metadata_for_path))
|
48
48
|
app.files.changed(&method(:on_file_changed))
|
@@ -75,11 +75,11 @@ class Middleman::CoreExtensions::Internationalization < ::Middleman::Extension
|
|
75
75
|
lang, path, page_id = result
|
76
76
|
new_resources << build_resource(path, resource.path, page_id, lang)
|
77
77
|
# If it's a "localizable template"
|
78
|
-
elsif File.fnmatch?(File.join(options[:templates_dir],
|
78
|
+
elsif File.fnmatch?(File.join(options[:templates_dir], '**'), resource.path)
|
79
79
|
page_id = File.basename(resource.path, File.extname(resource.path))
|
80
80
|
langs.each do |lang|
|
81
81
|
# Remove folder name
|
82
|
-
path = resource.path.sub(options[:templates_dir],
|
82
|
+
path = resource.path.sub(options[:templates_dir], '')
|
83
83
|
new_resources << build_resource(path, resource.path, page_id, lang)
|
84
84
|
end
|
85
85
|
end
|
@@ -100,7 +100,7 @@ class Middleman::CoreExtensions::Internationalization < ::Middleman::Extension
|
|
100
100
|
|
101
101
|
def convert_glob_to_regex(glob)
|
102
102
|
# File.fnmatch doesn't support brackets: {rb,yml,yaml}
|
103
|
-
regex = @locales_glob.sub(/\./, '\.').sub(File.join(
|
103
|
+
regex = @locales_glob.sub(/\./, '\.').sub(File.join('**', '*'), '.*').sub(/\//, '\/').sub('{rb,yml,yaml}', '(rb|ya?ml)')
|
104
104
|
%r{^#{regex}}
|
105
105
|
end
|
106
106
|
|
@@ -148,7 +148,7 @@ class Middleman::CoreExtensions::Internationalization < ::Middleman::Extension
|
|
148
148
|
known_langs = app.files.known_paths.select do |p|
|
149
149
|
p.to_s.match(@locales_regex) && (p.to_s.split(File::SEPARATOR).length === 2)
|
150
150
|
end.map { |p|
|
151
|
-
File.basename(p.to_s).sub(/\.ya?ml$/,
|
151
|
+
File.basename(p.to_s).sub(/\.ya?ml$/, '').sub(/\.rb$/, '')
|
152
152
|
}.sort.map(&:to_sym)
|
153
153
|
end
|
154
154
|
end
|
@@ -179,10 +179,10 @@ class Middleman::CoreExtensions::Internationalization < ::Middleman::Extension
|
|
179
179
|
localized_page_id = ::I18n.t("paths.#{page_id}", :default => page_id, :fallback => [])
|
180
180
|
|
181
181
|
prefix = if (options[:mount_at_root] == lang) || (options[:mount_at_root] == nil && langs[0] == lang)
|
182
|
-
|
182
|
+
'/'
|
183
183
|
else
|
184
184
|
replacement = options[:lang_map].fetch(lang, lang)
|
185
|
-
options[:path].sub(
|
185
|
+
options[:path].sub(':locale', replacement.to_s)
|
186
186
|
end
|
187
187
|
|
188
188
|
# path needs to be changed if file has a localizable extension. (options[mount_at_root] == lang)
|
@@ -190,7 +190,7 @@ class Middleman::CoreExtensions::Internationalization < ::Middleman::Extension
|
|
190
190
|
File.join(prefix, path.sub(page_id, localized_page_id))
|
191
191
|
)
|
192
192
|
|
193
|
-
path.gsub!(options[:templates_dir]+
|
193
|
+
path.gsub!(options[:templates_dir]+'/', '')
|
194
194
|
|
195
195
|
@_localization_data[path] = [lang, path, localized_page_id]
|
196
196
|
|
@@ -1,6 +1,8 @@
|
|
1
|
+
require 'middleman-core/util'
|
2
|
+
|
1
3
|
class Middleman::Extensions::AssetHash < ::Middleman::Extension
|
2
|
-
option :exts, %w(.jpg .jpeg .png .gif .js .css .otf .woff .eot .ttf .svg),
|
3
|
-
option :ignore, [],
|
4
|
+
option :exts, %w(.jpg .jpeg .png .gif .js .css .otf .woff .eot .ttf .svg), 'List of extensions that get asset hashes appended to them.'
|
5
|
+
option :ignore, [], 'Regexes of filenames to skip adding asset hashes to'
|
4
6
|
|
5
7
|
def initialize(app, options_hash={}, &block)
|
6
8
|
super
|
@@ -41,7 +43,7 @@ class Middleman::Extensions::AssetHash < ::Middleman::Extension
|
|
41
43
|
return if ignored_resource?(resource)
|
42
44
|
|
43
45
|
# Render through the Rack interface so middleware and mounted apps get a shot
|
44
|
-
response = @rack_client.get(URI.escape(resource.destination_path), {}, {
|
46
|
+
response = @rack_client.get(URI.escape(resource.destination_path), {}, { 'bypass_asset_hash' => 'true' })
|
45
47
|
raise "#{resource.path} should be in the sitemap!" unless response.status == 200
|
46
48
|
|
47
49
|
digest = Digest::SHA1.hexdigest(response.body)[0..7]
|
@@ -68,9 +70,9 @@ class Middleman::Extensions::AssetHash < ::Middleman::Extension
|
|
68
70
|
status, headers, response = @rack_app.call(env)
|
69
71
|
|
70
72
|
# We don't want to use this middleware when rendering files to figure out their hash!
|
71
|
-
return [status, headers, response] if env[
|
73
|
+
return [status, headers, response] if env['bypass_asset_hash'] == 'true'
|
72
74
|
|
73
|
-
path =
|
75
|
+
path = ::Middleman::Util.full_path(env['PATH_INFO'], @middleman_app)
|
74
76
|
|
75
77
|
if path =~ /(^\/$)|(\.(htm|html|php|css|js)$)/
|
76
78
|
body = ::Middleman::Util.extract_response_text(response)
|
@@ -26,13 +26,13 @@ class Middleman::Extensions::AssetHost < ::Middleman::Extension
|
|
26
26
|
app.config[:asset_host] || options[:host]
|
27
27
|
end
|
28
28
|
|
29
|
-
helpers do
|
29
|
+
helpers do
|
30
30
|
# Override default asset url helper to include asset hosts
|
31
31
|
#
|
32
32
|
# @param [String] path
|
33
33
|
# @param [String] prefix
|
34
34
|
# @return [String]
|
35
|
-
def asset_url(path, prefix=
|
35
|
+
def asset_url(path, prefix='')
|
36
36
|
controller = extensions[:asset_host]
|
37
37
|
|
38
38
|
original_output = super
|
@@ -8,10 +8,10 @@ class Middleman::Extensions::AutomaticAltTags < ::Middleman::Extension
|
|
8
8
|
helpers do
|
9
9
|
# Override default image_tag helper to automatically insert alt tag
|
10
10
|
# containing image name.
|
11
|
-
|
11
|
+
|
12
12
|
def image_tag(path)
|
13
|
-
if !path.include?(
|
14
|
-
params[:alt] ||=
|
13
|
+
if !path.include?('://')
|
14
|
+
params[:alt] ||= ''
|
15
15
|
|
16
16
|
real_path = path
|
17
17
|
real_path = File.join(images_dir, real_path) unless real_path.start_with?('/')
|
@@ -19,7 +19,7 @@ class Middleman::Extensions::AutomaticAltTags < ::Middleman::Extension
|
|
19
19
|
|
20
20
|
if File.exists?(full_path)
|
21
21
|
begin
|
22
|
-
alt_text = File.basename(full_path,
|
22
|
+
alt_text = File.basename(full_path, '.*')
|
23
23
|
alt_text.capitalize!
|
24
24
|
params[:alt] = alt_text
|
25
25
|
end
|
@@ -5,7 +5,7 @@ class Middleman::Extensions::AutomaticImageSizes < ::Middleman::Extension
|
|
5
5
|
super
|
6
6
|
|
7
7
|
# Include 3rd-party fastimage library
|
8
|
-
require
|
8
|
+
require 'vendored-middleman-deps/fastimage'
|
9
9
|
end
|
10
10
|
|
11
11
|
helpers do
|
@@ -16,8 +16,8 @@ class Middleman::Extensions::AutomaticImageSizes < ::Middleman::Extension
|
|
16
16
|
# @param [Hash] params
|
17
17
|
# @return [String]
|
18
18
|
def image_tag(path, params={})
|
19
|
-
if !params.has_key?(:width) && !params.has_key?(:height) && !path.include?(
|
20
|
-
params[:alt] ||=
|
19
|
+
if !params.has_key?(:width) && !params.has_key?(:height) && !path.include?('://')
|
20
|
+
params[:alt] ||= ''
|
21
21
|
|
22
22
|
real_path = path
|
23
23
|
real_path = File.join(images_dir, real_path) unless real_path.start_with?('/')
|
@@ -10,7 +10,7 @@ class Middleman::Extensions::CacheBuster < ::Middleman::Extension
|
|
10
10
|
real_path = real_path.path if real_path.is_a? File
|
11
11
|
real_path = real_path.gsub(File.join(root, build_dir), source)
|
12
12
|
if File.readable?(real_path)
|
13
|
-
File.mtime(real_path).strftime(
|
13
|
+
File.mtime(real_path).strftime('%s')
|
14
14
|
else
|
15
15
|
logger.warn "WARNING: '#{File.basename(path)}' was not found (or cannot be read) in #{File.dirname(real_path)}"
|
16
16
|
end
|
@@ -18,14 +18,14 @@ class Middleman::Extensions::CacheBuster < ::Middleman::Extension
|
|
18
18
|
end if app.respond_to?(:compass_config)
|
19
19
|
end
|
20
20
|
|
21
|
-
helpers do
|
21
|
+
helpers do
|
22
22
|
# asset_url override if we're using cache busting
|
23
23
|
# @param [String] path
|
24
24
|
# @param [String] prefix
|
25
|
-
def asset_url(path, prefix=
|
25
|
+
def asset_url(path, prefix='')
|
26
26
|
http_path = super
|
27
27
|
|
28
|
-
if http_path.include?(
|
28
|
+
if http_path.include?('://') || !%w(.css .png .jpg .jpeg .svg .svgz .js .gif).include?(File.extname(http_path))
|
29
29
|
http_path
|
30
30
|
else
|
31
31
|
if respond_to?(:http_images_path) && prefix == http_images_path
|
@@ -37,15 +37,15 @@ class Middleman::Extensions::CacheBuster < ::Middleman::Extension
|
|
37
37
|
if build?
|
38
38
|
real_path_dynamic = File.join(build_dir, prefix, path)
|
39
39
|
real_path_dynamic = File.expand_path(real_path_dynamic, root)
|
40
|
-
http_path <<
|
40
|
+
http_path << '?' + File.mtime(real_path_dynamic).strftime('%s') if File.readable?(real_path_dynamic)
|
41
41
|
elsif resource = sitemap.find_resource_by_path(real_path_static)
|
42
42
|
if !resource.template?
|
43
|
-
http_path <<
|
43
|
+
http_path << '?' + File.mtime(resource.source_file).strftime('%s')
|
44
44
|
else
|
45
45
|
# It's a template, possible with partials. We can't really
|
46
46
|
# know when it's updated, so generate fresh cache buster every
|
47
47
|
# time during developement
|
48
|
-
http_path <<
|
48
|
+
http_path << '?' + Time.now.strftime('%s')
|
49
49
|
end
|
50
50
|
end
|
51
51
|
|
@@ -12,7 +12,7 @@ class Middleman::Extensions::Lorem < ::Middleman::Extension
|
|
12
12
|
# @param [Hash] options
|
13
13
|
# @return [String]
|
14
14
|
def placekitten(size, options={})
|
15
|
-
options[:domain] =
|
15
|
+
options[:domain] = 'http://placekitten.com'
|
16
16
|
lorem.image(size, options)
|
17
17
|
end
|
18
18
|
end
|
@@ -110,14 +110,14 @@ class Middleman::Extensions::Lorem < ::Middleman::Extension
|
|
110
110
|
# Get a placeholder first name
|
111
111
|
# @return [String]
|
112
112
|
def first_name
|
113
|
-
names =
|
113
|
+
names = 'Judith Angelo Margarita Kerry Elaine Lorenzo Justice Doris Raul Liliana Kerry Elise Ciaran Johnny Moses Davion Penny Mohammed Harvey Sheryl Hudson Brendan Brooklynn Denis Sadie Trisha Jacquelyn Virgil Cindy Alexa Marianne Giselle Casey Alondra Angela Katherine Skyler Kyleigh Carly Abel Adrianna Luis Dominick Eoin Noel Ciara Roberto Skylar Brock Earl Dwayne Jackie Hamish Sienna Nolan Daren Jean Shirley Connor Geraldine Niall Kristi Monty Yvonne Tammie Zachariah Fatima Ruby Nadia Anahi Calum Peggy Alfredo Marybeth Bonnie Gordon Cara John Staci Samuel Carmen Rylee Yehudi Colm Beth Dulce Darius inley Javon Jason Perla Wayne Laila Kaleigh Maggie Don Quinn Collin Aniya Zoe Isabel Clint Leland Esmeralda Emma Madeline Byron Courtney Vanessa Terry Antoinette George Constance Preston Rolando Caleb Kenneth Lynette Carley Francesca Johnnie Jordyn Arturo Camila Skye Guy Ana Kaylin Nia Colton Bart Brendon Alvin Daryl Dirk Mya Pete Joann Uriel Alonzo Agnes Chris Alyson Paola Dora Elias Allen Jackie Eric Bonita Kelvin Emiliano Ashton Kyra Kailey Sonja Alberto Ty Summer Brayden Lori Kelly Tomas Joey Billie Katie Stephanie Danielle Alexis Jamal Kieran Lucinda Eliza Allyson Melinda Alma Piper Deana Harriet Bryce Eli Jadyn Rogelio Orlaith Janet Randal Toby Carla Lorie Caitlyn Annika Isabelle inn Ewan Maisie Michelle Grady Ida Reid Emely Tricia Beau Reese Vance Dalton Lexi Rafael Makenzie Mitzi Clinton Xena Angelina Kendrick Leslie Teddy Jerald Noelle Neil Marsha Gayle Omar Abigail Alexandra Phil Andre Billy Brenden Bianca Jared Gretchen Patrick Antonio Josephine Kyla Manuel Freya Kellie Tonia Jamie Sydney Andres Ruben Harrison Hector Clyde Wendell Kaden Ian Tracy Cathleen Shawn'.split(' ')
|
114
114
|
names[rand(names.size)]
|
115
115
|
end
|
116
116
|
|
117
117
|
# Get a placeholder last name
|
118
118
|
# @return [String]
|
119
119
|
def last_name
|
120
|
-
names = "Chung Chen Melton Hill Puckett Song Hamilton Bender Wagner McLaughlin McNamara Raynor Moon Woodard Desai Wallace Lawrence Griffin Dougherty Powers May Steele Teague Vick Gallagher Solomon Walsh Monroe Connolly Hawkins Middleton Goldstein Watts Johnston Weeks Wilkerson Barton Walton Hall Ross Chung Bender Woods Mangum Joseph Rosenthal Bowden Barton Underwood Jones Baker Merritt Cross Cooper Holmes Sharpe Morgan Hoyle Allen Rich Rich Grant Proctor Diaz Graham Watkins Hinton Marsh Hewitt Branch Walton O'Brien Case Watts Christensen Parks Hardin Lucas Eason Davidson Whitehead Rose Sparks Moore Pearson Rodgers Graves Scarborough Sutton Sinclair Bowman Olsen Love McLean Christian Lamb James Chandler Stout Cowan Golden Bowling Beasley Clapp Abrams Tilley Morse Boykin Sumner Cassidy Davidson Heath Blanchard McAllister McKenzie Byrne Schroeder Griffin Gross Perkins Robertson Palmer Brady Rowe Zhang Hodge Li Bowling Justice Glass Willis Hester Floyd Graves Fischer Norman Chan Hunt Byrd Lane Kaplan Heller May Jennings Hanna Locklear Holloway Jones Glover Vick O'Donnell Goldman McKenna Starr Stone McClure Watson Monroe Abbott Singer Hall Farrell Lucas Norman Atkins Monroe Robertson Sykes Reid Chandler Finch Hobbs Adkins Kinney Whitaker Alexander Conner Waters Becker Rollins Love Adkins Black Fox Hatcher Wu Lloyd Joyce Welch Matthews Chappell MacDonald Kane Butler Pickett Bowman Barton Kennedy Branch Thornton McNeill Weinstein Middleton Moss Lucas Rich Carlton Brady Schultz Nichols Harvey Stevenson Houston Dunn West O'Brien Barr Snyder Cain Heath Boswell Olsen Pittman Weiner Petersen Davis Coleman Terrell Norman Burch Weiner Parrott Henry Gray Chang McLean Eason Weeks Siegel Puckett Heath Hoyle Garrett Neal Baker Goldman Shaffer Choi Carver".split(
|
120
|
+
names = "Chung Chen Melton Hill Puckett Song Hamilton Bender Wagner McLaughlin McNamara Raynor Moon Woodard Desai Wallace Lawrence Griffin Dougherty Powers May Steele Teague Vick Gallagher Solomon Walsh Monroe Connolly Hawkins Middleton Goldstein Watts Johnston Weeks Wilkerson Barton Walton Hall Ross Chung Bender Woods Mangum Joseph Rosenthal Bowden Barton Underwood Jones Baker Merritt Cross Cooper Holmes Sharpe Morgan Hoyle Allen Rich Rich Grant Proctor Diaz Graham Watkins Hinton Marsh Hewitt Branch Walton O'Brien Case Watts Christensen Parks Hardin Lucas Eason Davidson Whitehead Rose Sparks Moore Pearson Rodgers Graves Scarborough Sutton Sinclair Bowman Olsen Love McLean Christian Lamb James Chandler Stout Cowan Golden Bowling Beasley Clapp Abrams Tilley Morse Boykin Sumner Cassidy Davidson Heath Blanchard McAllister McKenzie Byrne Schroeder Griffin Gross Perkins Robertson Palmer Brady Rowe Zhang Hodge Li Bowling Justice Glass Willis Hester Floyd Graves Fischer Norman Chan Hunt Byrd Lane Kaplan Heller May Jennings Hanna Locklear Holloway Jones Glover Vick O'Donnell Goldman McKenna Starr Stone McClure Watson Monroe Abbott Singer Hall Farrell Lucas Norman Atkins Monroe Robertson Sykes Reid Chandler Finch Hobbs Adkins Kinney Whitaker Alexander Conner Waters Becker Rollins Love Adkins Black Fox Hatcher Wu Lloyd Joyce Welch Matthews Chappell MacDonald Kane Butler Pickett Bowman Barton Kennedy Branch Thornton McNeill Weinstein Middleton Moss Lucas Rich Carlton Brady Schultz Nichols Harvey Stevenson Houston Dunn West O'Brien Barr Snyder Cain Heath Boswell Olsen Pittman Weiner Petersen Davis Coleman Terrell Norman Burch Weiner Parrott Henry Gray Chang McLean Eason Weeks Siegel Puckett Heath Hoyle Garrett Neal Baker Goldman Shaffer Choi Carver".split(' ')
|
121
121
|
names[rand(names.size)]
|
122
122
|
end
|
123
123
|
|
@@ -145,7 +145,7 @@ class Middleman::Extensions::Lorem < ::Middleman::Extension
|
|
145
145
|
# @param [Hash] options
|
146
146
|
# @return [String]
|
147
147
|
def image(size, options={})
|
148
|
-
domain = options[:domain] ||
|
148
|
+
domain = options[:domain] || 'http://placehold.it'
|
149
149
|
src = "#{domain}/#{size}"
|
150
150
|
hex = %w[a b c d e f 0 1 2 3 4 5 6 7 8 9]
|
151
151
|
background_color = options[:background_color]
|
@@ -157,7 +157,7 @@ class Middleman::Extensions::Lorem < ::Middleman::Extension
|
|
157
157
|
end
|
158
158
|
|
159
159
|
src << "/#{background_color.sub(/^#/, '')}" if background_color
|
160
|
-
src <<
|
160
|
+
src << '/ccc' if background_color.nil? && color
|
161
161
|
src << "/#{color.sub(/^#/, '')}" if color
|
162
162
|
src << "&text=#{Rack::Utils::escape(options[:text])}" if options[:text]
|
163
163
|
|
@@ -47,18 +47,18 @@ class Middleman::Extensions::MinifyCss < ::Middleman::Extension
|
|
47
47
|
def call(env)
|
48
48
|
status, headers, response = @app.call(env)
|
49
49
|
|
50
|
-
if inline_html_content?(env[
|
50
|
+
if inline_html_content?(env['PATH_INFO'])
|
51
51
|
minified = ::Middleman::Util.extract_response_text(response)
|
52
52
|
minified.gsub!(INLINE_CSS_REGEX) do |match|
|
53
53
|
$1 << @compressor.compress($2) << $3
|
54
54
|
end
|
55
55
|
|
56
|
-
headers[
|
56
|
+
headers['Content-Length'] = ::Rack::Utils.bytesize(minified).to_s
|
57
57
|
response = [minified]
|
58
|
-
elsif standalone_css_content?(env[
|
58
|
+
elsif standalone_css_content?(env['PATH_INFO'])
|
59
59
|
minified_css = @compressor.compress(::Middleman::Util.extract_response_text(response))
|
60
60
|
|
61
|
-
headers[
|
61
|
+
headers['Content-Length'] = ::Rack::Utils.bytesize(minified_css).to_s
|
62
62
|
response = [minified_css]
|
63
63
|
end
|
64
64
|
|
@@ -41,7 +41,7 @@ class Middleman::Extensions::MinifyJavascript < ::Middleman::Extension
|
|
41
41
|
def call(env)
|
42
42
|
status, headers, response = @app.call(env)
|
43
43
|
|
44
|
-
path = env[
|
44
|
+
path = env['PATH_INFO']
|
45
45
|
|
46
46
|
begin
|
47
47
|
if @inline && (path.end_with?('.html') || path.end_with?('.php'))
|
@@ -49,13 +49,13 @@ class Middleman::Extensions::MinifyJavascript < ::Middleman::Extension
|
|
49
49
|
|
50
50
|
minified = minify_inline_content(uncompressed_source)
|
51
51
|
|
52
|
-
headers[
|
52
|
+
headers['Content-Length'] = ::Rack::Utils.bytesize(minified).to_s
|
53
53
|
response = [minified]
|
54
54
|
elsif path.end_with?('.js') && @ignore.none? {|ignore| Middleman::Util.path_match(ignore, path) }
|
55
55
|
uncompressed_source = ::Middleman::Util.extract_response_text(response)
|
56
56
|
minified = @compressor.compress(uncompressed_source)
|
57
57
|
|
58
|
-
headers[
|
58
|
+
headers['Content-Length'] = ::Rack::Utils.bytesize(minified).to_s
|
59
59
|
response = [minified]
|
60
60
|
end
|
61
61
|
rescue ExecJS::ProgramError => e
|
@@ -15,7 +15,7 @@ class Middleman::Extensions::RelativeAssets < ::Middleman::Extension
|
|
15
15
|
# @param [String] path
|
16
16
|
# @param [String] prefix
|
17
17
|
# @return [String]
|
18
|
-
def asset_url(path, prefix=
|
18
|
+
def asset_url(path, prefix='')
|
19
19
|
path = super(path, prefix)
|
20
20
|
|
21
21
|
if path.include?('//') || path.start_with?('data:') || !current_resource
|