middleman-blog 4.0.2 → 4.0.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 (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