middleman-core 3.2.1 → 3.2.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.
Files changed (82) hide show
  1. checksums.yaml +4 -4
  2. data/Rakefile +1 -1
  3. data/features/helpers_select_tag.feature +19 -0
  4. data/lib/middleman-core.rb +4 -4
  5. data/lib/middleman-core/application.rb +40 -46
  6. data/lib/middleman-core/cli.rb +15 -15
  7. data/lib/middleman-core/cli/build.rb +26 -24
  8. data/lib/middleman-core/cli/bundler.rb +4 -4
  9. data/lib/middleman-core/cli/console.rb +6 -6
  10. data/lib/middleman-core/cli/extension.rb +12 -12
  11. data/lib/middleman-core/cli/init.rb +17 -17
  12. data/lib/middleman-core/cli/server.rb +28 -28
  13. data/lib/middleman-core/configuration.rb +2 -2
  14. data/lib/middleman-core/core_extensions.rb +23 -23
  15. data/lib/middleman-core/core_extensions/data.rb +5 -5
  16. data/lib/middleman-core/core_extensions/extensions.rb +6 -6
  17. data/lib/middleman-core/core_extensions/external_helpers.rb +2 -2
  18. data/lib/middleman-core/core_extensions/file_watcher.rb +3 -3
  19. data/lib/middleman-core/core_extensions/front_matter.rb +11 -11
  20. data/lib/middleman-core/core_extensions/rendering.rb +21 -21
  21. data/lib/middleman-core/core_extensions/request.rb +10 -8
  22. data/lib/middleman-core/core_extensions/routing.rb +1 -1
  23. data/lib/middleman-core/extensions.rb +5 -5
  24. data/lib/middleman-core/load_paths.rb +7 -7
  25. data/lib/middleman-core/logger.rb +13 -1
  26. data/lib/middleman-core/meta_pages.rb +2 -2
  27. data/lib/middleman-core/meta_pages/config_setting.rb +3 -3
  28. data/lib/middleman-core/meta_pages/sitemap_resource.rb +2 -2
  29. data/lib/middleman-core/meta_pages/sitemap_tree.rb +4 -4
  30. data/lib/middleman-core/preview_server.rb +16 -12
  31. data/lib/middleman-core/profiling.rb +1 -1
  32. data/lib/middleman-core/renderers/coffee_script.rb +1 -1
  33. data/lib/middleman-core/renderers/erb.rb +1 -1
  34. data/lib/middleman-core/renderers/haml.rb +1 -1
  35. data/lib/middleman-core/renderers/kramdown.rb +2 -2
  36. data/lib/middleman-core/renderers/less.rb +2 -2
  37. data/lib/middleman-core/renderers/liquid.rb +1 -1
  38. data/lib/middleman-core/renderers/markdown.rb +3 -3
  39. data/lib/middleman-core/renderers/redcarpet.rb +1 -1
  40. data/lib/middleman-core/renderers/sass.rb +7 -7
  41. data/lib/middleman-core/renderers/slim.rb +2 -2
  42. data/lib/middleman-core/renderers/stylus.rb +2 -2
  43. data/lib/middleman-core/sitemap.rb +8 -8
  44. data/lib/middleman-core/sitemap/extensions/ignores.rb +2 -2
  45. data/lib/middleman-core/sitemap/extensions/redirects.rb +4 -1
  46. data/lib/middleman-core/sitemap/extensions/traversal.rb +6 -6
  47. data/lib/middleman-core/sitemap/queryable.rb +3 -3
  48. data/lib/middleman-core/sitemap/resource.rb +6 -6
  49. data/lib/middleman-core/sitemap/store.rb +12 -12
  50. data/lib/middleman-core/step_definitions.rb +5 -5
  51. data/lib/middleman-core/step_definitions/builder_steps.rb +5 -5
  52. data/lib/middleman-core/step_definitions/server_steps.rb +6 -6
  53. data/lib/middleman-core/templates.rb +14 -14
  54. data/lib/middleman-core/templates/default.rb +17 -17
  55. data/lib/middleman-core/templates/empty.rb +3 -3
  56. data/lib/middleman-core/templates/extension/Gemfile +7 -7
  57. data/lib/middleman-core/templates/extension/Rakefile +1 -1
  58. data/lib/middleman-core/templates/extension/features/support/env.rb +2 -2
  59. data/lib/middleman-core/templates/extension/lib/lib.rb +2 -2
  60. data/lib/middleman-core/templates/extension/lib/middleman_extension.rb +1 -1
  61. data/lib/middleman-core/templates/html5.rb +9 -9
  62. data/lib/middleman-core/templates/local.rb +3 -3
  63. data/lib/middleman-core/templates/mobile.rb +6 -6
  64. data/lib/middleman-core/templates/shared/config.tt +1 -1
  65. data/lib/middleman-core/util.rb +234 -182
  66. data/lib/middleman-core/version.rb +1 -1
  67. data/lib/middleman-more/core_extensions/compass.rb +3 -3
  68. data/lib/middleman-more/core_extensions/default_helpers.rb +21 -10
  69. data/lib/middleman-more/core_extensions/i18n.rb +18 -18
  70. data/lib/middleman-more/extensions/asset_hash.rb +7 -5
  71. data/lib/middleman-more/extensions/asset_host.rb +2 -2
  72. data/lib/middleman-more/extensions/automatic_alt_tags.rb +4 -4
  73. data/lib/middleman-more/extensions/automatic_image_sizes.rb +3 -3
  74. data/lib/middleman-more/extensions/cache_buster.rb +7 -7
  75. data/lib/middleman-more/extensions/lorem.rb +5 -5
  76. data/lib/middleman-more/extensions/minify_css.rb +4 -4
  77. data/lib/middleman-more/extensions/minify_javascript.rb +3 -3
  78. data/lib/middleman-more/extensions/relative_assets.rb +1 -1
  79. data/lib/middleman-more/templates/smacss.rb +10 -10
  80. data/lib/middleman/rack.rb +2 -2
  81. data/middleman-core.gemspec +1 -1
  82. 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 << "<summary>"
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 << "</details>"
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
- "Sitemap Tree"
69
+ 'Sitemap Tree'
70
70
  end
71
71
  end
72
72
  end
@@ -1,5 +1,6 @@
1
- require "webrick"
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("server_start")
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 "== The Middleman is shutting down"
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 "== The Middleman is reloading"
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 "== The Middleman is still running the application from before the error"
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 "== The Middleman has reloaded"
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 "listen"
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 "/", ::Rack::Handler::WEBrick, rack_app
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("profile", report_name)
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|
@@ -1,5 +1,5 @@
1
1
  # Require gem
2
- require "coffee_script"
2
+ require 'coffee_script'
3
3
 
4
4
  module Middleman
5
5
  module Renderers
@@ -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 == "erb" ? "ERB" : engine.camelize
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,5 +1,5 @@
1
1
  # Require gem
2
- require "haml"
2
+ require 'haml'
3
3
 
4
4
  module Middleman
5
5
  module Renderers
@@ -1,4 +1,4 @@
1
- require "kramdown"
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') << ":" << obfuscate(mail_addr)
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 "less"
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 => [".", File.dirname(eval_file)])
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
@@ -1,5 +1,5 @@
1
1
  # Require Gem
2
- require "liquid"
2
+ require 'liquid'
3
3
 
4
4
  module Middleman
5
5
  module Renderers
@@ -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 "middleman-core/renderers/redcarpet"
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 "middleman-core/renderers/kramdown"
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 == "rdiscount" ? "RDiscount" : engine.camelize
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 "redcarpet"
1
+ require 'redcarpet'
2
2
 
3
3
  module Middleman
4
4
  module Renderers
@@ -1,4 +1,4 @@
1
- require "sass"
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 "slim"
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,5 +1,5 @@
1
- require "stylus"
2
- require "stylus/tilt"
1
+ require 'stylus'
2
+ require 'stylus/tilt'
3
3
 
4
4
  module Middleman
5
5
  module Renderers
@@ -1,11 +1,11 @@
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"
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?("*") # It's a glob
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, :relative => false, :find_resource => true)
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 = "/" + parts.join("/")
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 "active_support/core_ext/object/inclusion"
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 "middleman-core/sitemap/extensions/traversal"
2
- require "middleman-core/sitemap/extensions/content_type"
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 "render.resource", :path => relative_source do
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]["renderer_options"]
119
+ if md[:page]['renderer_options']
120
120
  opts[:renderer_options] = {}
121
- md[:page]["renderer_options"].each do |k, v|
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("page", md[:page])
130
+ app.data.store('page', md[:page])
131
131
  end
132
132
 
133
133
  blocks = Array(md[:blocks]).dup