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
@@ -17,10 +17,10 @@ module Middleman
|
|
17
17
|
def render
|
18
18
|
content_tag :div, :class => 'resource-details' do
|
19
19
|
content_tag :table do
|
20
|
-
content =
|
20
|
+
content = ''
|
21
21
|
resource_properties.each do |label, value|
|
22
22
|
content << content_tag(:tr) do
|
23
|
-
row_content =
|
23
|
+
row_content = ''
|
24
24
|
row_content << content_tag(:th, label)
|
25
25
|
row_content << content_tag(:td, value)
|
26
26
|
row_content.html_safe
|
@@ -13,7 +13,7 @@ module Middleman
|
|
13
13
|
end
|
14
14
|
|
15
15
|
def render
|
16
|
-
content =
|
16
|
+
content = ''
|
17
17
|
@children.keys.sort do |a,b|
|
18
18
|
a_subtree = @children[a]
|
19
19
|
b_subtree = @children[b]
|
@@ -35,11 +35,11 @@ module Middleman
|
|
35
35
|
end.each do |path_part|
|
36
36
|
subtree = @children[path_part]
|
37
37
|
content << "<details class='#{subtree.css_classes.join(' ')}'>"
|
38
|
-
content <<
|
38
|
+
content << '<summary>'
|
39
39
|
content << "<i class='icon-folder-open'></i>" unless subtree.is_a? SitemapResource
|
40
40
|
content << "#{path_part}</summary>"
|
41
41
|
content << subtree.render
|
42
|
-
content <<
|
42
|
+
content << '</details>'
|
43
43
|
end
|
44
44
|
content
|
45
45
|
end
|
@@ -66,7 +66,7 @@ module Middleman
|
|
66
66
|
end
|
67
67
|
|
68
68
|
def to_s
|
69
|
-
|
69
|
+
'Sitemap Tree'
|
70
70
|
end
|
71
71
|
end
|
72
72
|
end
|
@@ -1,5 +1,6 @@
|
|
1
|
-
require
|
1
|
+
require 'webrick'
|
2
2
|
require 'middleman-core/meta_pages'
|
3
|
+
require 'middleman-core/logger'
|
3
4
|
|
4
5
|
module Middleman
|
5
6
|
module PreviewServer
|
@@ -29,7 +30,7 @@ module Middleman
|
|
29
30
|
|
30
31
|
# Save the last-used @options so it may be re-used when
|
31
32
|
# reloading later on.
|
32
|
-
::Middleman::Profiling.report(
|
33
|
+
::Middleman::Profiling.report('server_start')
|
33
34
|
|
34
35
|
loop do
|
35
36
|
@webrick.start
|
@@ -50,7 +51,7 @@ module Middleman
|
|
50
51
|
# @return [void]
|
51
52
|
def stop
|
52
53
|
begin
|
53
|
-
logger.info
|
54
|
+
logger.info '== The Middleman is shutting down'
|
54
55
|
rescue
|
55
56
|
# if the user closed their terminal STDOUT/STDERR won't exist
|
56
57
|
end
|
@@ -65,20 +66,20 @@ module Middleman
|
|
65
66
|
# Simply stop, then start the server
|
66
67
|
# @return [void]
|
67
68
|
def reload
|
68
|
-
logger.info
|
69
|
+
logger.info '== The Middleman is reloading'
|
69
70
|
|
70
71
|
begin
|
71
72
|
app = new_app
|
72
73
|
rescue Exception => e
|
73
74
|
logger.error "Error reloading Middleman: #{e}\n#{e.backtrace.join("\n")}"
|
74
|
-
logger.info
|
75
|
+
logger.info '== The Middleman is still running the application from before the error'
|
75
76
|
return
|
76
77
|
end
|
77
78
|
|
78
79
|
unmount_instance
|
79
80
|
mount_instance(app)
|
80
81
|
|
81
|
-
logger.info
|
82
|
+
logger.info '== The Middleman has reloaded'
|
82
83
|
end
|
83
84
|
|
84
85
|
# Stop the current instance, exit Webrick
|
@@ -90,7 +91,7 @@ module Middleman
|
|
90
91
|
|
91
92
|
private
|
92
93
|
def new_app
|
93
|
-
opts = @options
|
94
|
+
opts = @options.dup
|
94
95
|
server = ::Middleman::Application.server
|
95
96
|
|
96
97
|
# Add in the meta pages application
|
@@ -100,11 +101,14 @@ module Middleman
|
|
100
101
|
end
|
101
102
|
|
102
103
|
@app = server.inst do
|
104
|
+
::Middleman::Logger.singleton(
|
105
|
+
opts[:debug] ? 0 : 1,
|
106
|
+
opts[:instrumenting] || false
|
107
|
+
)
|
108
|
+
|
103
109
|
if opts[:environment]
|
104
110
|
config[:environment] = opts[:environment].to_sym
|
105
111
|
end
|
106
|
-
|
107
|
-
logger(opts[:debug] ? 0 : 1, opts[:instrumenting] || false)
|
108
112
|
end
|
109
113
|
end
|
110
114
|
|
@@ -115,7 +119,7 @@ module Middleman
|
|
115
119
|
|
116
120
|
if first_run
|
117
121
|
# Watcher Library
|
118
|
-
require
|
122
|
+
require 'listen'
|
119
123
|
@listener = Listen.to(Dir.pwd, :relative_paths => true, :force_polling => @options[:force_polling])
|
120
124
|
@listener.latency(@options[:latency])
|
121
125
|
end
|
@@ -190,13 +194,13 @@ module Middleman
|
|
190
194
|
start_file_watcher
|
191
195
|
|
192
196
|
rack_app = app.class.to_rack_app
|
193
|
-
@webrick.mount
|
197
|
+
@webrick.mount '/', ::Rack::Handler::WEBrick, rack_app
|
194
198
|
end
|
195
199
|
|
196
200
|
# Detach the current Middleman::Application instance
|
197
201
|
# @return [void]
|
198
202
|
def unmount_instance
|
199
|
-
@webrick.unmount
|
203
|
+
@webrick.unmount '/'
|
200
204
|
@app = nil
|
201
205
|
end
|
202
206
|
|
@@ -46,7 +46,7 @@ module Middleman
|
|
46
46
|
result = RubyProf.stop
|
47
47
|
|
48
48
|
printer = RubyProf::GraphHtmlPrinter.new(result)
|
49
|
-
outfile = File.join(
|
49
|
+
outfile = File.join('profile', report_name)
|
50
50
|
outfile = (outfile + '.html') unless outfile.end_with? '.html'
|
51
51
|
FileUtils.mkdir_p(File.dirname(outfile))
|
52
52
|
File.open(outfile, 'w') do |f|
|
@@ -21,7 +21,7 @@ module Middleman
|
|
21
21
|
# Convert symbols to classes
|
22
22
|
if config[:erb_engine].is_a? Symbol
|
23
23
|
engine = engine.to_s
|
24
|
-
engine = engine ==
|
24
|
+
engine = engine == 'erb' ? 'ERB' : engine.camelize
|
25
25
|
config[:erb_engine] = config[:erb_engine_prefix].const_get("#{engine}Template")
|
26
26
|
end
|
27
27
|
|
@@ -1,4 +1,4 @@
|
|
1
|
-
require
|
1
|
+
require 'kramdown'
|
2
2
|
|
3
3
|
module Middleman
|
4
4
|
module Renderers
|
@@ -30,7 +30,7 @@ module Middleman
|
|
30
30
|
|
31
31
|
if el.attr['href'] =~ /\Amailto:/
|
32
32
|
mail_addr = el.attr['href'].sub(/\Amailto:/, '')
|
33
|
-
href = obfuscate('mailto') <<
|
33
|
+
href = obfuscate('mailto') << ':' << obfuscate(mail_addr)
|
34
34
|
content = obfuscate(content) if content == mail_addr
|
35
35
|
return %Q{<a href="#{href}">#{content}</a>}
|
36
36
|
end
|
@@ -1,4 +1,4 @@
|
|
1
|
-
require
|
1
|
+
require 'less'
|
2
2
|
|
3
3
|
module Middleman
|
4
4
|
module Renderers
|
@@ -37,7 +37,7 @@ module Middleman
|
|
37
37
|
if ::Less.const_defined? :Engine
|
38
38
|
@engine = ::Less::Engine.new(data)
|
39
39
|
else
|
40
|
-
parser = ::Less::Parser.new(options.merge :filename => eval_file, :line => line, :paths => [
|
40
|
+
parser = ::Less::Parser.new(options.merge :filename => eval_file, :line => line, :paths => ['.', File.dirname(eval_file)])
|
41
41
|
@engine = parser.parse(data)
|
42
42
|
end
|
43
43
|
end
|
@@ -28,18 +28,18 @@ module Middleman
|
|
28
28
|
begin
|
29
29
|
# Look for the user's preferred engine
|
30
30
|
if config[:markdown_engine] == :redcarpet
|
31
|
-
require
|
31
|
+
require 'middleman-core/renderers/redcarpet'
|
32
32
|
::Tilt.prefer(::Middleman::Renderers::RedcarpetTemplate, *markdown_exts)
|
33
33
|
MiddlemanRedcarpetHTML.middleman_app = self
|
34
34
|
elsif config[:markdown_engine] == :kramdown
|
35
|
-
require
|
35
|
+
require 'middleman-core/renderers/kramdown'
|
36
36
|
::Tilt.prefer(::Middleman::Renderers::KramdownTemplate, *markdown_exts)
|
37
37
|
MiddlemanKramdownHTML.middleman_app = self
|
38
38
|
elsif !config[:markdown_engine].nil?
|
39
39
|
# Map symbols to classes
|
40
40
|
markdown_engine_klass = if config[:markdown_engine].is_a? Symbol
|
41
41
|
engine = config[:markdown_engine].to_s
|
42
|
-
engine = engine ==
|
42
|
+
engine = engine == 'rdiscount' ? 'RDiscount' : engine.camelize
|
43
43
|
config[:markdown_engine_prefix].const_get("#{engine}Template")
|
44
44
|
else
|
45
45
|
config[:markdown_engine_prefix]
|
@@ -1,4 +1,4 @@
|
|
1
|
-
require
|
1
|
+
require 'sass'
|
2
2
|
|
3
3
|
module Middleman
|
4
4
|
module Renderers
|
@@ -40,12 +40,12 @@ module Middleman
|
|
40
40
|
|
41
41
|
def initialize(*args, &block)
|
42
42
|
super
|
43
|
-
|
43
|
+
|
44
44
|
if @options.has_key?(:context)
|
45
45
|
@context = @options[:context]
|
46
46
|
end
|
47
47
|
end
|
48
|
-
|
48
|
+
|
49
49
|
# Define the expected syntax for the template
|
50
50
|
# @return [Symbol]
|
51
51
|
def syntax
|
@@ -73,15 +73,15 @@ module Middleman
|
|
73
73
|
# @return [Hash]
|
74
74
|
def sass_options
|
75
75
|
more_opts = { :filename => eval_file, :line => line, :syntax => syntax }
|
76
|
-
|
76
|
+
|
77
77
|
if @context.is_a?(::Middleman::Application) && file
|
78
78
|
location_of_sass_file = @context.source_dir
|
79
|
-
|
79
|
+
|
80
80
|
parts = basename.split('.')
|
81
81
|
parts.pop
|
82
|
-
more_opts[:css_filename] = File.join(location_of_sass_file, @context.config[:css_dir], parts.join(
|
82
|
+
more_opts[:css_filename] = File.join(location_of_sass_file, @context.config[:css_dir], parts.join('.'))
|
83
83
|
end
|
84
|
-
|
84
|
+
|
85
85
|
options.merge(more_opts)
|
86
86
|
end
|
87
87
|
end
|
@@ -1,5 +1,5 @@
|
|
1
1
|
# Load gem
|
2
|
-
require
|
2
|
+
require 'slim'
|
3
3
|
|
4
4
|
module Middleman
|
5
5
|
module Renderers
|
@@ -23,7 +23,7 @@ module Middleman
|
|
23
23
|
:generator => ::Temple::Generators::RailsOutputBuffer,
|
24
24
|
:disable_escape => true
|
25
25
|
)
|
26
|
-
|
26
|
+
|
27
27
|
app.after_configuration do
|
28
28
|
context_hack = {
|
29
29
|
:context => self
|
@@ -1,11 +1,11 @@
|
|
1
|
-
require
|
2
|
-
require
|
3
|
-
|
4
|
-
require
|
5
|
-
require
|
6
|
-
require
|
7
|
-
require
|
8
|
-
require
|
1
|
+
require 'middleman-core/sitemap/store'
|
2
|
+
require 'middleman-core/sitemap/resource'
|
3
|
+
|
4
|
+
require 'middleman-core/sitemap/extensions/on_disk'
|
5
|
+
require 'middleman-core/sitemap/extensions/redirects'
|
6
|
+
require 'middleman-core/sitemap/extensions/request_endpoints'
|
7
|
+
require 'middleman-core/sitemap/extensions/proxies'
|
8
|
+
require 'middleman-core/sitemap/extensions/ignores'
|
9
9
|
|
10
10
|
# Core Sitemap Extensions
|
11
11
|
module Middleman
|
@@ -28,7 +28,7 @@ module Middleman
|
|
28
28
|
def ignored?
|
29
29
|
@app.ignore_manager.ignored?(path) ||
|
30
30
|
(!proxy? &&
|
31
|
-
@app.ignore_manager.ignored?(source_file.sub("#{@app.source_dir}/",
|
31
|
+
@app.ignore_manager.ignored?(source_file.sub("#{@app.source_dir}/", ''))
|
32
32
|
)
|
33
33
|
end
|
34
34
|
end
|
@@ -64,7 +64,7 @@ module Middleman
|
|
64
64
|
@ignored_callbacks << Proc.new {|p| p =~ path }
|
65
65
|
elsif path.is_a? String
|
66
66
|
path_clean = ::Middleman::Util.normalize_path(path)
|
67
|
-
if path_clean.include?(
|
67
|
+
if path_clean.include?('*') # It's a glob
|
68
68
|
@ignored_callbacks << Proc.new {|p| File.fnmatch(path_clean, p) }
|
69
69
|
else
|
70
70
|
# Add a specific-path ignore unless that path is already covered
|
@@ -78,7 +78,10 @@ module Middleman
|
|
78
78
|
end
|
79
79
|
|
80
80
|
def render(*args, &block)
|
81
|
-
url = ::Middleman::Util.url_for(store.app, @request_path,
|
81
|
+
url = ::Middleman::Util.url_for(store.app, @request_path, {
|
82
|
+
:relative => false,
|
83
|
+
:find_resource => true
|
84
|
+
})
|
82
85
|
|
83
86
|
if output
|
84
87
|
output.call(path, url)
|
@@ -8,7 +8,7 @@ module Middleman
|
|
8
8
|
# This resource's parent resource
|
9
9
|
# @return [Middleman::Sitemap::Resource, nil]
|
10
10
|
def parent
|
11
|
-
parts = path.split(
|
11
|
+
parts = path.split('/')
|
12
12
|
parts.pop if path.include?(app.index_file)
|
13
13
|
|
14
14
|
return nil if parts.length < 1
|
@@ -16,7 +16,7 @@ module Middleman
|
|
16
16
|
parts.pop
|
17
17
|
parts << app.index_file
|
18
18
|
|
19
|
-
parent_path =
|
19
|
+
parent_path = '/' + parts.join('/')
|
20
20
|
|
21
21
|
store.find_resource_by_destination_path(parent_path)
|
22
22
|
end
|
@@ -30,7 +30,7 @@ module Middleman
|
|
30
30
|
base_path = eponymous_directory_path
|
31
31
|
prefix = %r|^#{base_path.sub("/", "\\/")}|
|
32
32
|
else
|
33
|
-
base_path = path.sub("#{app.index_file}",
|
33
|
+
base_path = path.sub("#{app.index_file}", '')
|
34
34
|
prefix = %r|^#{base_path.sub("/", "\\/")}|
|
35
35
|
end
|
36
36
|
|
@@ -38,8 +38,8 @@ module Middleman
|
|
38
38
|
if sub_resource.path == self.path || sub_resource.path !~ prefix
|
39
39
|
false
|
40
40
|
else
|
41
|
-
inner_path = sub_resource.path.sub(prefix,
|
42
|
-
parts = inner_path.split(
|
41
|
+
inner_path = sub_resource.path.sub(prefix, '')
|
42
|
+
parts = inner_path.split('/')
|
43
43
|
if parts.length == 1
|
44
44
|
true
|
45
45
|
elsif parts.length == 2
|
@@ -79,7 +79,7 @@ module Middleman
|
|
79
79
|
# (e.g., for 'gallery.html' this would return 'gallery/')
|
80
80
|
# @return [String]
|
81
81
|
def eponymous_directory_path
|
82
|
-
path.sub(ext, '/').sub(/\/$/,
|
82
|
+
path.sub(ext, '/').sub(/\/$/, '') + '/'
|
83
83
|
end
|
84
84
|
end
|
85
85
|
end
|
@@ -1,8 +1,8 @@
|
|
1
|
-
require
|
1
|
+
require 'active_support/core_ext/object/inclusion'
|
2
2
|
|
3
3
|
module Middleman
|
4
4
|
module Sitemap
|
5
|
-
|
5
|
+
|
6
6
|
# Code adapted from https://github.com/ralph/document_mapper/
|
7
7
|
module Queryable
|
8
8
|
OPERATOR_MAPPING = {
|
@@ -146,7 +146,7 @@ class Symbol
|
|
146
146
|
end
|
147
147
|
OPERATORS
|
148
148
|
end
|
149
|
-
|
149
|
+
|
150
150
|
unless method_defined?(:"<=>")
|
151
151
|
def <=>(other)
|
152
152
|
self.to_s <=> other.to_s
|
@@ -1,5 +1,5 @@
|
|
1
|
-
require
|
2
|
-
require
|
1
|
+
require 'middleman-core/sitemap/extensions/traversal'
|
2
|
+
require 'middleman-core/sitemap/extensions/content_type'
|
3
3
|
|
4
4
|
module Middleman
|
5
5
|
|
@@ -111,14 +111,14 @@ module Middleman
|
|
111
111
|
|
112
112
|
relative_source = Pathname(source_file).relative_path_from(Pathname(app.root))
|
113
113
|
|
114
|
-
instrument
|
114
|
+
instrument 'render.resource', :path => relative_source do
|
115
115
|
md = metadata.dup
|
116
116
|
opts = md[:options].deep_merge(opts)
|
117
117
|
|
118
118
|
# Pass "renderer_options" hash from frontmatter along to renderer
|
119
|
-
if md[:page][
|
119
|
+
if md[:page]['renderer_options']
|
120
120
|
opts[:renderer_options] = {}
|
121
|
-
md[:page][
|
121
|
+
md[:page]['renderer_options'].each do |k, v|
|
122
122
|
opts[:renderer_options][k.to_sym] = v
|
123
123
|
end
|
124
124
|
end
|
@@ -127,7 +127,7 @@ module Middleman
|
|
127
127
|
|
128
128
|
# Forward remaining data to helpers
|
129
129
|
if md.has_key?(:page)
|
130
|
-
app.data.store(
|
130
|
+
app.data.store('page', md[:page])
|
131
131
|
end
|
132
132
|
|
133
133
|
blocks = Array(md[:blocks]).dup
|