middleman-core 3.3.2 → 3.3.3

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 (81) hide show
  1. checksums.yaml +4 -4
  2. data/features/helpers_select_tag.feature +6 -8
  3. data/lib/middleman-core.rb +1 -2
  4. data/lib/middleman-core/application.rb +10 -9
  5. data/lib/middleman-core/cli.rb +9 -13
  6. data/lib/middleman-core/cli/build.rb +26 -27
  7. data/lib/middleman-core/cli/bundler.rb +6 -7
  8. data/lib/middleman-core/cli/console.rb +10 -13
  9. data/lib/middleman-core/cli/extension.rb +2 -4
  10. data/lib/middleman-core/cli/init.rb +27 -28
  11. data/lib/middleman-core/cli/server.rb +43 -44
  12. data/lib/middleman-core/configuration.rb +13 -11
  13. data/lib/middleman-core/core_extensions/data.rb +21 -29
  14. data/lib/middleman-core/core_extensions/extensions.rb +8 -8
  15. data/lib/middleman-core/core_extensions/external_helpers.rb +3 -5
  16. data/lib/middleman-core/core_extensions/file_watcher.rb +7 -11
  17. data/lib/middleman-core/core_extensions/front_matter.rb +5 -6
  18. data/lib/middleman-core/core_extensions/rendering.rb +40 -30
  19. data/lib/middleman-core/core_extensions/request.rb +16 -19
  20. data/lib/middleman-core/core_extensions/routing.rb +37 -36
  21. data/lib/middleman-core/core_extensions/show_exceptions.rb +1 -5
  22. data/lib/middleman-core/extension.rb +14 -16
  23. data/lib/middleman-core/extensions.rb +4 -6
  24. data/lib/middleman-core/load_paths.rb +3 -6
  25. data/lib/middleman-core/logger.rb +1 -3
  26. data/lib/middleman-core/meta_pages.rb +11 -11
  27. data/lib/middleman-core/meta_pages/config_setting.rb +4 -4
  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 +12 -11
  31. data/lib/middleman-core/profiling.rb +6 -8
  32. data/lib/middleman-core/renderers/asciidoc.rb +12 -13
  33. data/lib/middleman-core/renderers/coffee_script.rb +2 -4
  34. data/lib/middleman-core/renderers/erb.rb +3 -4
  35. data/lib/middleman-core/renderers/haml.rb +2 -4
  36. data/lib/middleman-core/renderers/kramdown.rb +3 -4
  37. data/lib/middleman-core/renderers/less.rb +3 -9
  38. data/lib/middleman-core/renderers/liquid.rb +4 -8
  39. data/lib/middleman-core/renderers/markdown.rb +7 -11
  40. data/lib/middleman-core/renderers/redcarpet.rb +14 -16
  41. data/lib/middleman-core/renderers/sass.rb +36 -15
  42. data/lib/middleman-core/renderers/slim.rb +7 -10
  43. data/lib/middleman-core/renderers/stylus.rb +2 -6
  44. data/lib/middleman-core/sitemap.rb +6 -13
  45. data/lib/middleman-core/sitemap/extensions/ignores.rb +4 -10
  46. data/lib/middleman-core/sitemap/extensions/on_disk.rb +3 -7
  47. data/lib/middleman-core/sitemap/extensions/proxies.rb +7 -12
  48. data/lib/middleman-core/sitemap/extensions/redirects.rb +7 -15
  49. data/lib/middleman-core/sitemap/extensions/request_endpoints.rb +7 -15
  50. data/lib/middleman-core/sitemap/extensions/traversal.rb +4 -7
  51. data/lib/middleman-core/sitemap/queryable.rb +22 -27
  52. data/lib/middleman-core/sitemap/resource.rb +13 -25
  53. data/lib/middleman-core/sitemap/store.rb +11 -15
  54. data/lib/middleman-core/templates.rb +9 -12
  55. data/lib/middleman-core/templates/default.rb +6 -7
  56. data/lib/middleman-core/templates/empty.rb +0 -1
  57. data/lib/middleman-core/templates/extension/Gemfile +1 -1
  58. data/lib/middleman-core/templates/extension/Rakefile +2 -2
  59. data/lib/middleman-core/templates/extension/lib/lib.rb +0 -1
  60. data/lib/middleman-core/templates/html5.rb +6 -7
  61. data/lib/middleman-core/templates/local.rb +1 -2
  62. data/lib/middleman-core/templates/mobile.rb +3 -4
  63. data/lib/middleman-core/templates/shared/config.ru +1 -1
  64. data/lib/middleman-core/util.rb +5 -6
  65. data/lib/middleman-core/version.rb +1 -1
  66. data/lib/middleman-more/core_extensions/compass.rb +0 -1
  67. data/lib/middleman-more/core_extensions/default_helpers.rb +25 -16
  68. data/lib/middleman-more/core_extensions/i18n.rb +24 -23
  69. data/lib/middleman-more/extensions/asset_hash.rb +4 -6
  70. data/lib/middleman-more/extensions/asset_host.rb +1 -1
  71. data/lib/middleman-more/extensions/automatic_alt_tags.rb +2 -3
  72. data/lib/middleman-more/extensions/automatic_image_sizes.rb +4 -5
  73. data/lib/middleman-more/extensions/cache_buster.rb +0 -1
  74. data/lib/middleman-more/extensions/gzip.rb +1 -1
  75. data/lib/middleman-more/extensions/lorem.rb +8 -8
  76. data/lib/middleman-more/extensions/minify_css.rb +9 -8
  77. data/lib/middleman-more/extensions/minify_javascript.rb +5 -6
  78. data/lib/middleman-more/extensions/relative_assets.rb +0 -1
  79. data/lib/middleman-more/templates/smacss.rb +6 -7
  80. data/middleman-core.gemspec +1 -1
  81. metadata +5 -5
@@ -5,10 +5,8 @@ require 'rack/showexceptions'
5
5
  module Middleman
6
6
  module CoreExtensions
7
7
  module ShowExceptions
8
-
9
8
  # Setup extension
10
9
  class << self
11
-
12
10
  # Once registered
13
11
  def registered(app)
14
12
  # Whether to catch and display exceptions
@@ -18,9 +16,7 @@ module Middleman
18
16
  # When in dev
19
17
  app.configure :development do
20
18
  # Include middlemare
21
- if config[:show_exceptions]
22
- use ::Rack::ShowExceptions
23
- end
19
+ use ::Rack::ShowExceptions if config[:show_exceptions]
24
20
  end
25
21
  end
26
22
  end
@@ -2,11 +2,10 @@ require 'active_support/core_ext/module/delegation'
2
2
  require 'active_support/core_ext/class/attribute'
3
3
 
4
4
  module Middleman
5
-
6
5
  class Extension
7
- class_attribute :supports_multiple_instances, :instance_reader => false, :instance_writer => false
8
- class_attribute :defined_helpers, :instance_reader => false, :instance_writer => false
9
- class_attribute :ext_name, :instance_reader => false, :instance_writer => false
6
+ class_attribute :supports_multiple_instances, instance_reader: false, instance_writer: false
7
+ class_attribute :defined_helpers, instance_reader: false, instance_writer: false
8
+ class_attribute :ext_name, instance_reader: false, instance_writer: false
10
9
 
11
10
  class << self
12
11
  def config
@@ -24,7 +23,7 @@ module Middleman
24
23
  def helpers(*m, &block)
25
24
  self.defined_helpers ||= []
26
25
 
27
- if block
26
+ if block_given?
28
27
  mod = Module.new
29
28
  mod.module_eval(&block)
30
29
  m = [mod]
@@ -34,10 +33,10 @@ module Middleman
34
33
  end
35
34
 
36
35
  def extension_name
37
- self.ext_name || self.name.underscore.split('/').last.to_sym
36
+ ext_name || name.underscore.split('/').last.to_sym
38
37
  end
39
38
 
40
- def register(n=self.extension_name)
39
+ def register(n=extension_name)
41
40
  ::Middleman::Extensions.register(n, self)
42
41
  end
43
42
 
@@ -59,7 +58,7 @@ module Middleman
59
58
  name = instance.class.extension_name
60
59
  return unless @_extension_activation_callbacks && @_extension_activation_callbacks[name]
61
60
  @_extension_activation_callbacks[name].each do |block|
62
- block.arity == 1 ? block.call(instance) : block.call()
61
+ block.arity == 1 ? block.call(instance) : block.call
63
62
  end
64
63
  end
65
64
  end
@@ -67,7 +66,7 @@ module Middleman
67
66
  attr_accessor :options
68
67
  attr_reader :app
69
68
 
70
- delegate :after_extension_activated, :to => :"::Middleman::Extension"
69
+ delegate :after_extension_activated, to: :"::Middleman::Extension"
71
70
 
72
71
  def initialize(klass, options_hash={}, &block)
73
72
  @_helpers = []
@@ -91,9 +90,9 @@ module Middleman
91
90
  end
92
91
  end
93
92
 
94
- protected
93
+ protected
95
94
 
96
- def setup_options(options_hash, &block)
95
+ def setup_options(options_hash)
97
96
  @options = self.class.config.dup
98
97
  @options.finalize!
99
98
 
@@ -128,10 +127,9 @@ module Middleman
128
127
  def bind_after_configuration
129
128
  ext = self
130
129
  @klass.after_configuration do
131
- if ext.respond_to?(:after_configuration)
132
- ext.after_configuration
133
- end
130
+ ext.after_configuration if ext.respond_to?(:after_configuration)
134
131
 
132
+ # rubocop:disable IfUnlessModifier
135
133
  if ext.respond_to?(:manipulate_resource_list)
136
134
  ext.app.sitemap.register_resource_list_manipulator(ext.class.extension_name, ext)
137
135
  end
@@ -142,7 +140,7 @@ module Middleman
142
140
  ext = self
143
141
  if ext.respond_to?(:before_build)
144
142
  @klass.before_build do |builder|
145
- if ext.method(:before_build).arity === 1
143
+ if ext.method(:before_build).arity == 1
146
144
  ext.before_build(builder)
147
145
  else
148
146
  ext.before_build
@@ -155,7 +153,7 @@ module Middleman
155
153
  ext = self
156
154
  if ext.respond_to?(:after_build)
157
155
  @klass.after_build do |builder|
158
- if ext.method(:after_build).arity === 1
156
+ if ext.method(:after_build).arity == 1
159
157
  ext.after_build(builder)
160
158
  else
161
159
  ext.after_build
@@ -1,7 +1,5 @@
1
1
  module Middleman
2
-
3
2
  module Extensions
4
-
5
3
  class << self
6
4
  def registered
7
5
  @_registered ||= {}
@@ -24,7 +22,7 @@ module Middleman
24
22
  def register(name, namespace=nil, &block)
25
23
  # If we've already got a matching extension that passed the
26
24
  # version check, bail out.
27
- return if registered.has_key?(name.to_sym) &&
25
+ return if registered.key?(name.to_sym) &&
28
26
  !registered[name.to_sym].is_a?(String)
29
27
 
30
28
  registered[name.to_sym] = if block_given?
@@ -36,11 +34,11 @@ module Middleman
36
34
 
37
35
  def load(name)
38
36
  name = name.to_sym
39
- return nil unless registered.has_key?(name)
37
+ return nil unless registered.key?(name)
40
38
 
41
39
  extension = registered[name]
42
40
  if extension.is_a?(Proc)
43
- extension = extension.call() || nil
41
+ extension = extension.call || nil
44
42
  registered[name] = extension
45
43
  end
46
44
 
@@ -92,7 +90,7 @@ module Middleman
92
90
  # @return [Boolean] Whether the file exists
93
91
  def spec_has_file?(spec, path)
94
92
  full_path = File.join(spec.full_gem_path, path)
95
- File.exists?(full_path)
93
+ File.exist?(full_path)
96
94
  end
97
95
  end
98
96
  end
@@ -2,7 +2,6 @@
2
2
  require 'pathname'
3
3
 
4
4
  module Middleman
5
-
6
5
  class << self
7
6
  def setup_load_paths
8
7
  @_is_setup ||= begin
@@ -20,12 +19,12 @@ module Middleman
20
19
  root_gemfile = File.expand_path('Gemfile', ENV['MM_ROOT'])
21
20
  ENV['BUNDLE_GEMFILE'] ||= root_gemfile
22
21
 
23
- if !File.exists?(ENV['BUNDLE_GEMFILE'])
22
+ unless File.exist?(ENV['BUNDLE_GEMFILE'])
24
23
  git_gemfile = Pathname.new(__FILE__).expand_path.parent.parent.parent + 'Gemfile'
25
24
  ENV['BUNDLE_GEMFILE'] = git_gemfile.to_s
26
25
  end
27
26
 
28
- if File.exists?(ENV['BUNDLE_GEMFILE'])
27
+ if File.exist?(ENV['BUNDLE_GEMFILE'])
29
28
  is_bundler_setup = true
30
29
  require 'bundler/setup'
31
30
  end
@@ -45,12 +44,10 @@ module Middleman
45
44
  end
46
45
 
47
46
  # Recursive method to find config.rb
48
- def locate_root(cwd = Pathname.new(Dir.pwd))
47
+ def locate_root(cwd=Pathname.new(Dir.pwd))
49
48
  return cwd.to_s if (cwd + 'config.rb').exist?
50
49
  return false if cwd.root?
51
50
  locate_root(cwd.parent)
52
51
  end
53
-
54
52
  end
55
-
56
53
  end
@@ -4,10 +4,8 @@ require 'active_support/logger'
4
4
  require 'thread'
5
5
 
6
6
  module Middleman
7
-
8
7
  # The Middleman Logger
9
8
  class Logger < ActiveSupport::Logger
10
-
11
9
  def self.singleton(*args)
12
10
  if !@_logger || args.length > 0
13
11
  if args.length == 1 && (args.first.is_a?(::String) || args.first.respond_to?(:write))
@@ -42,7 +40,7 @@ module Middleman
42
40
  return if @instrumenting.is_a?(String) && @instrumenting != 'instrument' && !message.include?(@instrumenting)
43
41
 
44
42
  evt = ActiveSupport::Notifications::Event.new(message, *args)
45
- self.info "== Instrument (#{evt.name.sub(/.middleman$/, '')}): #{evt.duration}ms"
43
+ info "== Instrument (#{evt.name.sub(/.middleman$/, '')}): #{evt.duration}ms"
46
44
  end
47
45
  end
48
46
  end
@@ -19,7 +19,7 @@ module Middleman
19
19
  meta_pages = self
20
20
  @rack_app = Rack::Builder.new do
21
21
  # Serve assets from metadata/assets
22
- use Rack::Static, :urls => ['/assets'], :root => File.join(File.dirname(__FILE__), 'meta_pages')
22
+ use Rack::Static, urls: ['/assets'], root: File.join(File.dirname(__FILE__), 'meta_pages')
23
23
 
24
24
  map '/' do
25
25
  run meta_pages.method(:index)
@@ -40,12 +40,12 @@ module Middleman
40
40
  end
41
41
 
42
42
  # The index page
43
- def index(env)
43
+ def index(_)
44
44
  template('index.html.erb')
45
45
  end
46
46
 
47
47
  # Inspect the sitemap
48
- def sitemap(env)
48
+ def sitemap(_)
49
49
  resources = @middleman.inst.sitemap.resources(true)
50
50
 
51
51
  sitemap_tree = SitemapTree.new
@@ -54,12 +54,12 @@ module Middleman
54
54
  sitemap_tree.add_resource resource
55
55
  end
56
56
 
57
- template('sitemap.html.erb', :sitemap_tree => sitemap_tree)
57
+ template('sitemap.html.erb', sitemap_tree: sitemap_tree)
58
58
  end
59
59
 
60
60
  # Inspect configuration
61
- def config(env)
62
- global_config = @middleman.inst.config.all_settings.map {|c| ConfigSetting.new(c) }
61
+ def config(_)
62
+ global_config = @middleman.inst.config.all_settings.map { |c| ConfigSetting.new(c) }
63
63
  extension_config = {}
64
64
 
65
65
  @middleman.inst.extensions.each do |ext_name, extension|
@@ -80,9 +80,9 @@ module Middleman
80
80
  end
81
81
 
82
82
  template('config.html.erb',
83
- :global_config => global_config,
84
- :extension_config => extension_config,
85
- :registered_extensions => Middleman::Extensions.registered.dup)
83
+ global_config: global_config,
84
+ extension_config: extension_config,
85
+ registered_extensions: Middleman::Extensions.registered.dup)
86
86
  end
87
87
 
88
88
  private
@@ -96,11 +96,11 @@ module Middleman
96
96
 
97
97
  # Respond to an HTML request
98
98
  def response(content)
99
- [ 200, {'Content-Type' => 'text/html'}, Array(content) ]
99
+ [200, { 'Content-Type' => 'text/html' }, Array(content)]
100
100
  end
101
101
 
102
102
  def extension_options(extension)
103
- extension.options.all_settings.map {|c| ConfigSetting.new(c) }
103
+ extension.options.all_settings.map { |c| ConfigSetting.new(c) }
104
104
  end
105
105
  end
106
106
  end
@@ -15,17 +15,17 @@ module Middleman
15
15
  content = ''
16
16
  key_classes = ['key']
17
17
  key_classes << 'modified' if @setting.value_set?
18
- content << content_tag(:span, @setting.key.pretty_inspect.strip, :class => key_classes.join(' '))
18
+ content << content_tag(:span, @setting.key.pretty_inspect.strip, class: key_classes.join(' '))
19
19
  content << ' = '
20
- content << content_tag(:span, @setting.value.pretty_inspect.strip, :class => 'value')
20
+ content << content_tag(:span, @setting.value.pretty_inspect.strip, class: 'value')
21
21
  if @setting.default && @setting.value_set? && @setting.default != @setting.value
22
- content << content_tag(:span, :class => 'default') do
22
+ content << content_tag(:span, class: 'default') do
23
23
  "(Default: #{@setting.default.inspect})"
24
24
  end
25
25
  end
26
26
 
27
27
  if @setting.description
28
- content << content_tag(:p, :class => 'description') do
28
+ content << content_tag(:p, class: 'description') do
29
29
  @setting.description
30
30
  end
31
31
  end
@@ -14,7 +14,7 @@ module Middleman
14
14
  def render
15
15
  classes = 'resource-details'
16
16
  classes << ' ignored' if @resource.ignored?
17
- content_tag :div, :class => classes do
17
+ content_tag :div, class: classes do
18
18
  content_tag :table do
19
19
  content = ''
20
20
  resource_properties.each do |label, value|
@@ -38,7 +38,7 @@ module Middleman
38
38
  build_path = @resource.destination_path
39
39
  build_path = 'Not built' if ignored?
40
40
  props['Build Path'] = build_path if @resource.path != build_path
41
- props['URL'] = content_tag(:a, @resource.url, :href => @resource.url) unless ignored?
41
+ props['URL'] = content_tag(:a, @resource.url, href: @resource.url) unless ignored?
42
42
  props['Source File'] = @resource.source_file.sub(/^#{Regexp.escape(ENV['MM_ROOT'] + '/')}/, '')
43
43
 
44
44
  data = @resource.data
@@ -13,8 +13,7 @@ module Middleman
13
13
  end
14
14
 
15
15
  def render
16
- content = ''
17
- @children.keys.sort do |a,b|
16
+ sorted_children_keys = @children.keys.sort do |a, b|
18
17
  a_subtree = @children[a]
19
18
  b_subtree = @children[b]
20
19
  if a_subtree.is_a? SitemapResource
@@ -32,7 +31,9 @@ module Middleman
32
31
  else
33
32
  a.downcase <=> b.downcase
34
33
  end
35
- end.each do |path_part|
34
+ end
35
+
36
+ sorted_children_keys.reduce('') do |content, path_part|
36
37
  subtree = @children[path_part]
37
38
  content << "<details class='#{subtree.css_classes.join(' ')}'>"
38
39
  content << '<summary>'
@@ -41,7 +42,6 @@ module Middleman
41
42
  content << subtree.render
42
43
  content << '</details>'
43
44
  end
44
- content
45
45
  end
46
46
 
47
47
  def css_classes
@@ -2,20 +2,20 @@ require 'webrick'
2
2
  require 'middleman-core/meta_pages'
3
3
  require 'middleman-core/logger'
4
4
 
5
+ # rubocop:disable GlobalVars
5
6
  module Middleman
6
7
  module PreviewServer
7
-
8
8
  DEFAULT_PORT = 4567
9
9
 
10
10
  class << self
11
11
  attr_reader :app, :host, :port
12
- delegate :logger, :to => :app
12
+ delegate :logger, to: :app
13
13
 
14
14
  # Start an instance of Middleman::Application
15
15
  # @return [void]
16
16
  def start(opts={})
17
17
  @options = opts
18
- @host = @options[:host] || Socket.ip_address_list.find(&:ipv4_private?).ip_address
18
+ @host = @options[:host] || '0.0.0.0'
19
19
  @port = @options[:port] || DEFAULT_PORT
20
20
 
21
21
  mount_instance(new_app)
@@ -70,7 +70,7 @@ module Middleman
70
70
 
71
71
  begin
72
72
  app = new_app
73
- rescue Exception => e
73
+ rescue => e
74
74
  logger.error "Error reloading Middleman: #{e}\n#{e.backtrace.join("\n")}"
75
75
  logger.info '== The Middleman is still running the application from before the error'
76
76
  return
@@ -89,7 +89,8 @@ module Middleman
89
89
  @webrick.shutdown
90
90
  end
91
91
 
92
- private
92
+ private
93
+
93
94
  def new_app
94
95
  opts = @options.dup
95
96
  server = ::Middleman::Application.server
@@ -120,7 +121,7 @@ module Middleman
120
121
  if first_run
121
122
  # Watcher Library
122
123
  require 'listen'
123
- @listener = Listen.to(Dir.pwd, :relative_paths => true, :force_polling => @options[:force_polling])
124
+ @listener = Listen.to(Dir.pwd, relative_paths: true, force_polling: @options[:force_polling])
124
125
  @listener.latency(@options[:latency])
125
126
  end
126
127
 
@@ -166,10 +167,10 @@ module Middleman
166
167
  # @return [void]
167
168
  def setup_webrick(is_logging)
168
169
  http_opts = {
169
- :BindAddress => host,
170
- :Port => port,
171
- :AccessLog => [],
172
- :DoNotReverseLookup => true
170
+ BindAddress: host,
171
+ Port: port,
172
+ AccessLog: [],
173
+ DoNotReverseLookup: true
173
174
  }
174
175
 
175
176
  if is_logging
@@ -181,7 +182,7 @@ module Middleman
181
182
  begin
182
183
  ::WEBrick::HTTPServer.new(http_opts)
183
184
  rescue Errno::EADDRINUSE
184
- logger.error "== Port #{port} is unavailable. Either close the instance of Middleman already running on #{port} or start this Middleman on a new port with: --port=#{port.to_i+1}"
185
+ logger.error "== Port #{port} is unavailable. Either close the instance of Middleman already running on #{port} or start this Middleman on a new port with: --port=#{port.to_i + 1}"
185
186
  exit(1)
186
187
  end
187
188
  end
@@ -1,7 +1,7 @@
1
1
  module Middleman
2
2
  module Profiling
3
-
4
3
  # The profiler instance. There can only be one!
4
+ # rubocop:disable TrivialAccessors
5
5
  def self.profiler=(prof)
6
6
  @profiler = prof
7
7
  end
@@ -24,18 +24,16 @@ module Middleman
24
24
  def start
25
25
  end
26
26
 
27
- def report(report_name)
27
+ def report(_)
28
28
  end
29
29
  end
30
30
 
31
31
  # A profiler that uses ruby-prof
32
32
  class RubyProfProfiler
33
33
  def initialize
34
- begin
35
- require 'ruby-prof'
36
- rescue LoadError
37
- raise "To use the --profile option, you must add the 'ruby-prof' gem to your Gemfile"
38
- end
34
+ require 'ruby-prof'
35
+ rescue LoadError
36
+ raise "To use the --profile option, you must add the 'ruby-prof' gem to your Gemfile"
39
37
  end
40
38
 
41
39
  def start
@@ -50,7 +48,7 @@ module Middleman
50
48
  outfile = (outfile + '.html') unless outfile.end_with? '.html'
51
49
  FileUtils.mkdir_p(File.dirname(outfile))
52
50
  File.open(outfile, 'w') do |f|
53
- printer.print(f, :min_percent=> 1)
51
+ printer.print(f, min_percent: 1)
54
52
  end
55
53
  end
56
54
  end