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.
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