middleman-core 3.3.2 → 3.3.3

Sign up to get free protection for your applications and to get access to all the features.
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