middleman-blog 4.0.2 → 4.0.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (68) hide show
  1. checksums.yaml +5 -5
  2. data/.rubocop.yml +69 -0
  3. data/.travis.yml +20 -28
  4. data/CHANGELOG.md +4 -4
  5. data/Gemfile +20 -21
  6. data/Gemfile-4.x +38 -0
  7. data/README.md +0 -6
  8. data/Rakefile +14 -12
  9. data/features/summary.feature +3 -6
  10. data/features/support/env.rb +7 -10
  11. data/features/support/time_steps.rb +7 -10
  12. data/features/tags.feature +1 -1
  13. data/fixtures/article-dirs-app/config-directory-indexes.rb +2 -2
  14. data/fixtures/article-dirs-app/config-permalink-with-dot.rb +2 -2
  15. data/fixtures/article-dirs-app/config.rb +2 -2
  16. data/fixtures/blog-sources-app/config.rb +2 -5
  17. data/fixtures/blog-sources-no-date-app/config.rb +2 -5
  18. data/fixtures/blog-sources-no-day-app/config.rb +2 -5
  19. data/fixtures/blog-sources-no-title-app/config.rb +1 -4
  20. data/fixtures/blog-sources-subdirs-app/config.rb +3 -6
  21. data/fixtures/calendar-and-tag-app/config-directory-indexes.rb +3 -3
  22. data/fixtures/calendar-and-tag-app/config.rb +4 -4
  23. data/fixtures/calendar-app/config-directory-indexes.rb +5 -7
  24. data/fixtures/calendar-app/config-only-year.rb +7 -9
  25. data/fixtures/calendar-app/config.rb +5 -7
  26. data/fixtures/calendar-multiblog-app/config.rb +12 -12
  27. data/fixtures/custom-collections-app/config-blog-prefix.rb +7 -7
  28. data/fixtures/custom-collections-app/config-directory-indexes.rb +6 -6
  29. data/fixtures/custom-collections-app/config.rb +6 -6
  30. data/fixtures/custom-collections-multiblog-app/config.rb +14 -14
  31. data/fixtures/custom-collections-sources-app/config.rb +5 -5
  32. data/fixtures/custom-permalinks-app/config-directory-indexes.rb +3 -3
  33. data/fixtures/custom-permalinks-app/config.rb +3 -3
  34. data/fixtures/default-template-app/Gemfile +5 -5
  35. data/fixtures/default-template-app/config.rb +11 -11
  36. data/fixtures/filename-date-app/config.rb +1 -1
  37. data/fixtures/future-date-app/config.rb +2 -2
  38. data/fixtures/indexes-app/config.rb +2 -2
  39. data/fixtures/lang-path-app/config.rb +2 -2
  40. data/fixtures/layouts-app/config.rb +1 -1
  41. data/fixtures/paginate-app/config-directory-indexes.rb +12 -14
  42. data/fixtures/paginate-app/config-paginate-off.rb +12 -14
  43. data/fixtures/paginate-app/config.rb +12 -14
  44. data/fixtures/paginate-multiblog-app/config.rb +13 -13
  45. data/fixtures/permalink-app/config.rb +3 -6
  46. data/fixtures/preview-app/config.rb +2 -2
  47. data/fixtures/published-app/config.rb +2 -2
  48. data/fixtures/tags-app/config-directory-indexes.rb +5 -5
  49. data/fixtures/tags-app/config.rb +5 -5
  50. data/fixtures/tags-multiblog-app/config.rb +10 -10
  51. data/lib/middleman-blog.rb +6 -8
  52. data/lib/middleman-blog/blog_article.rb +20 -40
  53. data/lib/middleman-blog/blog_data.rb +20 -27
  54. data/lib/middleman-blog/calendar_pages.rb +8 -14
  55. data/lib/middleman-blog/commands/article.rb +54 -63
  56. data/lib/middleman-blog/custom_pages.rb +8 -9
  57. data/lib/middleman-blog/extension.rb +7 -8
  58. data/lib/middleman-blog/helpers.rb +17 -26
  59. data/lib/middleman-blog/paginator.rb +5 -4
  60. data/lib/middleman-blog/tag_pages.rb +11 -23
  61. data/lib/middleman-blog/truncate_html.rb +8 -7
  62. data/lib/middleman-blog/uri_templates.rb +31 -17
  63. data/lib/middleman-blog/version.rb +1 -3
  64. data/lib/middleman_extension.rb +1 -1
  65. data/middleman-blog.gemspec +15 -15
  66. data/spec/spec_helper.rb +1 -4
  67. data/spec/uri_templates_spec.rb +23 -30
  68. metadata +10 -9
@@ -29,7 +29,7 @@ module Middleman
29
29
  # @param [Number] month
30
30
  # @param [Number] day
31
31
  # @return [String]
32
- def link(year, month=nil, day=nil)
32
+ def link(year, month = nil, day = nil)
33
33
  template = if day
34
34
  @day_link_template
35
35
  elsif month
@@ -47,20 +47,14 @@ module Middleman
47
47
  new_resources = []
48
48
 
49
49
  # Set up date pages if the appropriate templates have been specified
50
- @blog_data.articles.group_by {|a| a.date.year }.each do |year, year_articles|
51
- if @generate_year_pages && @year_template
52
- new_resources << year_page_resource(year, year_articles)
53
- end
50
+ @blog_data.articles.group_by { |a| a.date.year }.each do |year, year_articles|
51
+ new_resources << year_page_resource(year, year_articles) if @generate_year_pages && @year_template
54
52
 
55
- year_articles.group_by {|a| a.date.month }.each do |month, month_articles|
56
- if @generate_month_pages && @month_template
57
- new_resources << month_page_resource(year, month, month_articles)
58
- end
53
+ year_articles.group_by { |a| a.date.month }.each do |month, month_articles|
54
+ new_resources << month_page_resource(year, month, month_articles) if @generate_month_pages && @month_template
59
55
 
60
- month_articles.group_by {|a| a.date.day }.each do |day, day_articles|
61
- if @generate_day_pages && @day_template
62
- new_resources << day_page_resource(year, month, day, day_articles)
63
- end
56
+ month_articles.group_by { |a| a.date.day }.each do |day, day_articles|
57
+ new_resources << day_page_resource(year, month, day, day_articles) if @generate_day_pages && @day_template
64
58
  end
65
59
  end
66
60
  end
@@ -109,4 +103,4 @@ module Middleman
109
103
  end
110
104
  end
111
105
  end
112
- end
106
+ end
@@ -3,9 +3,7 @@ require 'date'
3
3
  require 'middleman-blog/uri_templates'
4
4
 
5
5
  module Middleman
6
-
7
6
  module Cli
8
-
9
7
  ##
10
8
  # This class provides an "article" command for the middleman CLI.
11
9
  #
@@ -18,7 +16,6 @@ module Middleman
18
16
  # @todo Tags should be removed from the template if they are not required
19
17
  ##
20
18
  class Article < ::Thor::Group
21
-
22
19
  include Thor::Actions
23
20
  include Blog::UriTemplates
24
21
 
@@ -27,110 +24,104 @@ module Middleman
27
24
  # Template files are relative to this file
28
25
  # @return [String]
29
26
  def self.source_root
30
- File.dirname( __FILE__ )
27
+ File.dirname(__FILE__)
31
28
  end
32
29
 
33
30
  argument :title, type: :string
34
31
 
35
- class_option "blog",
36
- aliases: "-b",
37
- desc: "The name of the blog to create the post inside (for multi-blog apps, defaults to the only blog in single-blog apps)"
32
+ class_option 'blog',
33
+ aliases: '-b',
34
+ desc: 'The name of the blog to create the post inside (for multi-blog apps, defaults to the only blog in single-blog apps)'
38
35
 
39
- class_option "content",
40
- aliases: "-c",
41
- desc: "Content of the post"
36
+ class_option 'content',
37
+ aliases: '-c',
38
+ desc: 'Content of the post'
42
39
 
43
- class_option "date",
44
- aliases: "-d",
45
- desc: "The date to create the post with (defaults to now)"
40
+ class_option 'date',
41
+ aliases: '-d',
42
+ desc: 'The date to create the post with (defaults to now)'
46
43
 
47
- class_option "locale",
48
- aliases: "-l",
49
- desc: "The locale to create the post with (defaults to I18n.default_locale if available)"
44
+ class_option 'locale',
45
+ aliases: '-l',
46
+ desc: 'The locale to create the post with (defaults to I18n.default_locale if available)'
50
47
 
51
- class_option "edit",
52
- aliases: "-e",
53
- desc: "Edit the newly created blog post",
54
- default: false,
55
- type: :boolean
48
+ class_option 'edit',
49
+ aliases: '-e',
50
+ desc: 'Edit the newly created blog post',
51
+ default: false,
52
+ type: :boolean
56
53
 
57
- class_option "subdirectory",
58
- aliases: "-s",
59
- desc: "Generate an article subdirectory (for directory indexes, defaults to false)",
60
- default: false,
61
- type: :boolean
54
+ class_option 'subdirectory',
55
+ aliases: '-s',
56
+ desc: 'Generate an article subdirectory (for directory indexes, defaults to false)',
57
+ default: false,
58
+ type: :boolean
62
59
 
63
- class_option "tags",
64
- aliases: "-t",
65
- desc: "A list of comma-separated tags for the post"
60
+ class_option 'tags',
61
+ aliases: '-t',
62
+ desc: 'A list of comma-separated tags for the post'
66
63
 
67
64
  def article
68
-
69
- @content = options[:content] || ""
70
- @date = options[ :date ] ? ::Time.zone.parse( options[ :date ] ) : Time.zone.now
71
- @locale = options[ :locale ] || ( ::I18n.default_locale if defined? ::I18n )
72
- @slug = safe_parameterize( title )
73
- @tags = options[:tags] && options[:tags].split(/\s*,\s*/) || []
65
+ @content = options[:content] || ''
66
+ @date = options[:date] ? ::Time.zone.parse(options[:date]) : Time.zone.now
67
+ @locale = options[:locale] || (::I18n.default_locale if defined? ::I18n)
68
+ @slug = safe_parameterize(title)
69
+ @tags = options[:tags]&.split(/\s*,\s*/) || []
74
70
  @title = title
75
71
 
76
72
  app = ::Middleman::Application.new do
77
- config[ :mode ] = :config
78
- config[ :disable_sitemap ] = true
79
- config[ :watcher_disable ] = true
80
- config[ :exit_before_ready ] = true
73
+ config[:mode] = :config
74
+ config[:disable_sitemap] = true
75
+ config[:watcher_disable] = true
76
+ config[:exit_before_ready] = true
81
77
  end
82
78
 
83
- blog_inst = if options[ :blog ]
84
- app.extensions[ :blog ].find { | key, instance | instance.options[ :name ] == options[ :blog ] }[ 1 ]
85
- else
86
- app.extensions[ :blog ].values.first
87
- end
79
+ blog_inst = if options[:blog]
80
+ app.extensions[:blog].find { |_key, instance| instance.options[:name] == options[:blog] }[ 1 ]
81
+ else
82
+ app.extensions[:blog].values.first
83
+ end
88
84
 
89
85
  unless blog_inst
90
- msg = "Could not find an active blog instance"
91
- msg << " named #{ options[ :blog ] }" if options[ :blog ]
86
+ msg = 'Could not find an active blog instance'
87
+ msg << " named #{options[:blog]}" if options[:blog]
92
88
  throw msg
93
89
  end
94
90
 
95
91
  path_template = blog_inst.data.source_template
96
- params = date_to_params( @date ).merge( locale: @locale.to_s, title: @slug )
92
+ params = date_to_params(@date).merge(locale: @locale.to_s, title: @slug)
97
93
  article_path = apply_uri_template path_template, params
98
- absolute_article_path = File.join( app.source_dir, article_path + blog_inst.options.default_extension )
94
+ absolute_article_path = File.join(app.source_dir, article_path + blog_inst.options.default_extension)
99
95
 
100
96
  template blog_inst.options.new_article_template, absolute_article_path
101
97
 
102
98
  # Edit option process
103
- if options[ :edit ]
99
+ if options[:edit]
104
100
 
105
- editor = ENV.fetch( 'MM_EDITOR', ENV.fetch( 'EDITOR', nil ) )
101
+ editor = ENV.fetch('MM_EDITOR', ENV.fetch('EDITOR', nil))
106
102
 
107
103
  if editor
108
- system( "#{ editor } #{ absolute_article_path }" )
104
+ system("#{editor} #{absolute_article_path}")
109
105
  else
110
- throw "Could not find a suitable editor. Try setting the environment variable MM_EDITOR."
106
+ throw 'Could not find a suitable editor. Try setting the environment variable MM_EDITOR.'
111
107
  end
112
108
 
113
109
  end
114
110
 
115
111
  # Subdirectory option process
116
- if options[ :subdirectory ]
117
- empty_directory extract_directory_path( File.join( app.source_dir, article_path ) )
118
- end
119
-
112
+ empty_directory extract_directory_path(File.join(app.source_dir, article_path)) if options[:subdirectory]
120
113
  end
121
114
 
122
115
  protected
123
116
 
124
- def blog_instance( key )
125
- return nil unless app.extensions[ :blog ]
126
- return app.extensions[ :blog ][ key ]
117
+ def blog_instance(key)
118
+ return nil unless app.extensions[:blog]
119
+
120
+ app.extensions[:blog][key]
127
121
  end
128
122
 
129
123
  # Add to CLI
130
- Base.register( self, 'article', 'article TITLE [options]', 'Create a new blog article' )
131
-
124
+ Base.register(self, 'article', 'article TITLE [options]', 'Create a new blog article')
132
125
  end
133
-
134
126
  end
135
-
136
127
  end
@@ -2,7 +2,6 @@ require 'middleman-blog/uri_templates'
2
2
 
3
3
  module Middleman
4
4
  module Blog
5
-
6
5
  # This adds new summary pages for arbitrarily defined blog article properties
7
6
  class CustomPages
8
7
  include UriTemplates
@@ -26,9 +25,9 @@ module Middleman
26
25
  end
27
26
 
28
27
  def manipulate_resource_list(resources)
29
- articles_by_property = @blog_data.articles.
30
- select {|a| a.data[property] }.
31
- group_by {|a| a.data[property] }
28
+ articles_by_property = @blog_data.articles
29
+ .select { |a| a.data[property] }
30
+ .group_by { |a| a.data[property] }
32
31
  resources + articles_by_property.map do |property_value, articles|
33
32
  build_resource(link(property_value), property_value, articles)
34
33
  end
@@ -40,13 +39,13 @@ module Middleman
40
39
  articles = articles.sort_by(&:date).reverse
41
40
  Sitemap::ProxyResource.new(@sitemap, path, @page_template).tap do |p|
42
41
  p.add_metadata locals: {
43
- "page_type" => property.to_s,
44
- property => value,
45
- "articles" => articles,
46
- "blog_controller" => @blog_controller
42
+ 'page_type' => property.to_s,
43
+ property => value,
44
+ 'articles' => articles,
45
+ 'blog_controller' => @blog_controller
47
46
  }
48
47
  end
49
48
  end
50
49
  end
51
50
  end
52
- end
51
+ end
@@ -39,7 +39,7 @@ module Middleman
39
39
  option :publish_future_dated, false, 'Whether articles with a date in the future should be considered published'
40
40
  option :custom_collections, {}, 'Hash of custom frontmatter properties to collect articles on and their options (link, template)'
41
41
  option :preserve_locale, false, 'Use the global Middleman I18n.locale instead of the lang in the article\'s frontmatter'
42
- option :new_article_template, File.expand_path('../commands/article.tt', __FILE__), 'Path (relative to project root) to an ERb template that will be used to generate new articles from the "middleman article" command.'
42
+ option :new_article_template, File.expand_path('commands/article.tt', __dir__), 'Path (relative to project root) to an ERb template that will be used to generate new articles from the "middleman article" command.'
43
43
  option :default_extension, '.markdown', 'Default template extension for articles (used by "middleman article")'
44
44
 
45
45
  # @return [BlogData] blog data for this blog, which has all information about the blog articles
@@ -61,9 +61,9 @@ module Middleman
61
61
  attr_reader :custom_pages
62
62
 
63
63
  # Helpers for use within templates and layouts.
64
- self.defined_helpers = [ Middleman::Blog::Helpers ]
64
+ self.defined_helpers = [Middleman::Blog::Helpers]
65
65
 
66
- def initialize(app, options_hash={}, &block)
66
+ def initialize(app, options_hash = {}, &block)
67
67
  super
68
68
 
69
69
  @custom_pages = {}
@@ -88,7 +88,7 @@ module Middleman
88
88
  options.month_link = File.join(options.prefix, options.month_link)
89
89
  options.day_link = File.join(options.prefix, options.day_link)
90
90
 
91
- options.custom_collections.each do |key, opts|
91
+ options.custom_collections.each do |_key, opts|
92
92
  opts[:link] = File.join(options.prefix, opts[:link])
93
93
  end
94
94
  end
@@ -99,7 +99,7 @@ module Middleman
99
99
  found_name = nil
100
100
 
101
101
  app.extensions[:blog].values.each_with_index do |ext, i|
102
- found_name = "blog#{i+1}" if ext == self
102
+ found_name = "blog#{i + 1}" if ext == self
103
103
  end
104
104
 
105
105
  found_name
@@ -119,9 +119,8 @@ module Middleman
119
119
  Time.zone = app.config[:time_zone] if app.config[:time_zone]
120
120
  time_zone = Time.zone || 'UTC'
121
121
  zone_default = Time.find_zone!(time_zone)
122
- unless zone_default
123
- raise 'Value assigned to time_zone not recognized.'
124
- end
122
+ raise 'Value assigned to time_zone not recognized.' unless zone_default
123
+
125
124
  Time.zone_default = zone_default
126
125
 
127
126
  # Initialize blog with options
@@ -26,25 +26,21 @@ module Middleman
26
26
  #
27
27
  # @param [Symbol, String] blog_name Optional name of the blog to get a controller for.
28
28
  # @return [BlogExtension]
29
- def blog_controller(blog_name=nil)
29
+ def blog_controller(blog_name = nil)
30
30
  if !blog_name && current_resource
31
31
  blog_name = current_resource.metadata[:page][:blog]
32
32
 
33
- if !blog_name
33
+ unless blog_name
34
34
  blog_controller = current_resource.blog_controller if current_resource.respond_to?(:blog_controller)
35
35
  return blog_controller if blog_controller
36
36
  end
37
37
  end
38
38
 
39
39
  # In multiblog situations, force people to specify the blog
40
- if !blog_name && blog_instances.size > 1
41
- raise "You have more than one blog so you must either use the flag --blog (ex. --blog 'myBlog') when calling this method, or add blog: [blog_name] to your page's frontmatter"
42
- end
40
+ raise "You have more than one blog so you must either use the flag --blog (ex. --blog 'myBlog') when calling this method, or add blog: [blog_name] to your page's frontmatter" if !blog_name && blog_instances.size > 1
43
41
 
44
42
  # Warn if a non-existent blog name provided
45
- if blog_name && !blog_instances.keys.include?(blog_name.to_sym)
46
- raise "Non-existent blog name provided: #{blog_name}."
47
- end
43
+ raise "Non-existent blog name provided: #{blog_name}." if blog_name && !blog_instances.key?(blog_name.to_sym)
48
44
 
49
45
  blog_name ||= blog_instances.keys.first
50
46
  blog_instances[blog_name.to_sym]
@@ -56,14 +52,14 @@ module Middleman
56
52
  # @param [Symbol, String] blog_name Optional name of the blog to get data for.
57
53
  # Blogs can be named as an option or will default to 'blog0', 'blog1', etc..
58
54
  # @return [BlogData]
59
- def blog(blog_name=nil)
55
+ def blog(blog_name = nil)
60
56
  blog_controller(blog_name).data
61
57
  end
62
58
 
63
59
  # Determine whether the currently rendering template is a {BlogArticle}.
64
60
  # This can be useful in layouts and helpers.
65
61
  # @return [Boolean]
66
- def is_blog_article?
62
+ def is_blog_article? # rubocop:disable Naming/PredicateName
67
63
  !current_article.nil?
68
64
  end
69
65
 
@@ -71,18 +67,14 @@ module Middleman
71
67
  # @return [BlogArticle]
72
68
  def current_article
73
69
  article = current_resource
74
- if article && article.is_a?(BlogArticle)
75
- article
76
- else
77
- nil
78
- end
70
+ article if article&.is_a?(BlogArticle)
79
71
  end
80
72
 
81
73
  # Get a path to the given tag page, based on the +taglink+ blog setting.
82
74
  # @param [String] tag
83
75
  # @param [Symbol, String] blog_name Optional name of the blog to use.
84
76
  # @return [String]
85
- def tag_path(tag, blog_name=nil)
77
+ def tag_path(tag, blog_name = nil)
86
78
  build_url blog_controller(blog_name).tag_pages.link(tag)
87
79
  end
88
80
 
@@ -90,7 +82,7 @@ module Middleman
90
82
  # @param [Number] year
91
83
  # @param [Symbol, String] blog_name Optional name of the blog to use.
92
84
  # @return [String]
93
- def blog_year_path(year, blog_name=nil)
85
+ def blog_year_path(year, blog_name = nil)
94
86
  build_url blog_controller(blog_name).calendar_pages.link(year)
95
87
  end
96
88
 
@@ -99,7 +91,7 @@ module Middleman
99
91
  # @param [Number] month
100
92
  # @param [Symbol, String] blog_name Optional name of the blog to use.
101
93
  # @return [String]
102
- def blog_month_path(year, month, blog_name=nil)
94
+ def blog_month_path(year, month, blog_name = nil)
103
95
  build_url blog_controller(blog_name).calendar_pages.link(year, month)
104
96
  end
105
97
 
@@ -109,7 +101,7 @@ module Middleman
109
101
  # @param [Number] day
110
102
  # @param [Symbol, String] blog_name Optional name of the blog to use.
111
103
  # @return [String]
112
- def blog_day_path(year, month, day, blog_name=nil)
104
+ def blog_day_path(year, month, day, blog_name = nil)
113
105
  build_url blog_controller(blog_name).calendar_pages.link(year, month, day)
114
106
  end
115
107
 
@@ -123,13 +115,13 @@ module Middleman
123
115
  # Returns the list of articles to display on this particular page (when using pagination).
124
116
  # @param [Symbol, String] blog_name Optional name of the blog to use.
125
117
  # @return [Array<Middleman::Sitemap::Resource>]
126
- def page_articles(blog_name=nil)
118
+ def page_articles(blog_name = nil)
127
119
  meta = current_resource.metadata
128
120
  limit = current_resource.data[:per_page]
129
121
 
130
122
  # "articles" local variable is populated by Calendar and Tag page generators
131
123
  # If it's not set then use the complete list of articles
132
- articles = meta[:locals]["articles"] || blog(blog_name).articles
124
+ articles = meta[:locals]['articles'] || blog(blog_name).articles
133
125
 
134
126
  limit ? articles.first(limit) : articles
135
127
  end
@@ -142,12 +134,11 @@ module Middleman
142
134
  # @param [Symbol] property Custom property which is being used to collect articles on
143
135
  # @private
144
136
  def self.generate_custom_helper(property)
145
- define_method :"#{property}_path" do |value, blog_name=nil|
137
+ define_method :"#{property}_path" do |value, blog_name = nil|
146
138
  custom_pages = blog_controller(blog_name).custom_pages
147
139
 
148
- if !custom_pages.key?(property)
149
- raise "This blog does not know about the custom property #{property.inspect}"
150
- end
140
+ raise "This blog does not know about the custom property #{property.inspect}" unless custom_pages.key?(property)
141
+
151
142
  build_url custom_pages[property].link(value)
152
143
  end
153
144
  end
@@ -159,4 +150,4 @@ module Middleman
159
150
  end
160
151
  end
161
152
  end
162
- end
153
+ end
@@ -7,7 +7,7 @@ module Middleman
7
7
  class Paginator
8
8
  include UriTemplates
9
9
 
10
- def initialize( app, blog_controller )
10
+ def initialize(app, blog_controller)
11
11
  @app = app
12
12
  @blog_controller = blog_controller
13
13
  @per_page = blog_controller.options.per_page
@@ -33,8 +33,8 @@ module Middleman
33
33
  # "articles" local variable is populated by Calendar and Tag page generators
34
34
  # If it's not set then use the complete list of articles
35
35
  # TODO: Some way to allow the frontmatter to specify the article filter?
36
- articles = md[:locals]["articles"] || @blog_controller.data.articles
37
- articles.select!{|article| article.lang == md[:options][:locale]} if md.fetch(:options, false) and md[:options].fetch(:locale, false)
36
+ articles = md[:locals]['articles'] || @blog_controller.data.articles
37
+ articles.select! { |article| article.lang == md[:options][:locale] } if md.fetch(:options, false) && md[:options].fetch(:locale, false)
38
38
 
39
39
  # Allow blog.per_page and blog.page_link to be overridden in the frontmatter
40
40
  per_page = md[:page][:per_page] || @per_page
@@ -72,8 +72,9 @@ module Middleman
72
72
  # Does this resource match the blog controller for this paginator?
73
73
  # @return [Boolean]
74
74
  def match_blog(res, md)
75
- res_controller = md[:locals]["blog_controller"] || (res.respond_to?(:blog_controller) && res.blog_controller)
75
+ res_controller = md[:locals]['blog_controller'] || (res.respond_to?(:blog_controller) && res.blog_controller)
76
76
  return false if res_controller && res_controller != @blog_controller
77
+
77
78
  override_controller = md[:page][:blog]
78
79
  return false if override_controller && override_controller.to_s != @blog_controller.name.to_s
79
80