middleman-blog 3.5.1 → 3.5.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +10 -0
- data/Gemfile +1 -1
- data/features/blog_sources.feature +5 -0
- data/features/custom_collections.feature +2 -0
- data/features/ignored_files.feature +25 -0
- data/features/language.feature +8 -0
- data/features/tags.feature +3 -0
- data/fixtures/blog-sources-subdirs-app/config.rb +4 -0
- data/fixtures/blog-sources-subdirs-app/source/blog.html.erb +3 -0
- data/fixtures/blog-sources-subdirs-app/source/blog/another-post.md.erb +8 -0
- data/fixtures/blog-sources-subdirs-app/source/blog/subdir/yet-another-post.md.erb +8 -0
- data/fixtures/blog-sources-subdirs-app/source/layout.erb +1 -0
- data/fixtures/custom-collections-app/source/blog/2011-01-03-no-category-article.html.markdown +6 -0
- data/fixtures/lang-path-app/config.rb +6 -0
- data/fixtures/lang-path-app/source/blog/2013-12-24-a-humble-test.en.html.markdown +5 -0
- data/fixtures/lang-path-app/source/blog/2013-12-24-a-humble-test.ru.html.markdown +5 -0
- data/fixtures/lang-path-app/source/layouts/layout.erb +6 -0
- data/fixtures/tags-app/source/blog/2011-01-02-another-article.html.markdown +2 -1
- data/lib/middleman-blog/blog_article.rb +4 -7
- data/lib/middleman-blog/blog_data.rb +6 -0
- data/lib/middleman-blog/commands/article.rb +1 -1
- data/lib/middleman-blog/custom_pages.rb +3 -1
- data/lib/middleman-blog/template/source/layout.erb +2 -2
- data/lib/middleman-blog/uri_templates.rb +1 -1
- data/lib/middleman-blog/version.rb +1 -1
- data/spec/uri_templates_spec.rb +4 -0
- metadata +37 -15
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 22770d35db1f34d0390f3f54b1e81f83f82db571
|
4
|
+
data.tar.gz: 2881759a6e49a107f918874b861e582dd606091c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 50e210cc5210809498128aa105265f4056b39e31af63d0dc37faa18a015dd6b43ca10af5cd89f282bad0775472bace318f6e5aee61573f5763b866ba739fa311
|
7
|
+
data.tar.gz: 93fde692a714779f015ec18a2a6fcb46c72eba7912c90b12fdb7d6fd2c7cd15b5cf1efaefc59425ed54b92fc773d6e1f6392ab1adaa7bf38be43c7e944d61868
|
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,13 @@
|
|
1
|
+
3.5.2
|
2
|
+
===
|
3
|
+
|
4
|
+
* Ignored pages won't be processed by the blog extension.
|
5
|
+
* Avoid creating an empty-string collection when a post does not have a custom collection property set. #192
|
6
|
+
* Fix blog sources matching blog entries that are in a subdirectory that's not explicitly stated as part of the blog.sources template. #196
|
7
|
+
* Fixed tag and year links in blog template. #195
|
8
|
+
* An article's language can be set via the {lang} parameter in its sources URL template. #187
|
9
|
+
* Tags that are just a number work now. #188
|
10
|
+
|
1
11
|
3.5.1
|
2
12
|
===
|
3
13
|
|
data/Gemfile
CHANGED
@@ -25,3 +25,8 @@ Feature: Flexible article sources
|
|
25
25
|
Given the Server is running at "blog-sources-app"
|
26
26
|
When I go to "/2013/08/08/slug-from-frontmatter.html"
|
27
27
|
Then I should see "Article with slug specified in frontmatter"
|
28
|
+
|
29
|
+
Scenario: There can be subdirectories in the blog sources dir
|
30
|
+
Given the Server is running at "blog-sources-subdirs-app"
|
31
|
+
When I go to "/blog.html"
|
32
|
+
Then I should see "Yet another post"
|
@@ -10,6 +10,8 @@ Feature: Custom collection pages
|
|
10
10
|
Then I should see "/2011-01-02-another-article.html"
|
11
11
|
When I go to "/index.html"
|
12
12
|
Then I should see "Category Path: '/categories/ruby-on-rails.html'"
|
13
|
+
When I go to "/categories/.html"
|
14
|
+
Then I should see "Not Found"
|
13
15
|
|
14
16
|
Scenario: Collection pages are accessbile from preview server with directory_indexes
|
15
17
|
Given a fixture app "custom-collections-app"
|
@@ -0,0 +1,25 @@
|
|
1
|
+
Feature: Files can be ignored from within blog
|
2
|
+
Scenario: A file can be ignored
|
3
|
+
Given a fixture app "preview-app"
|
4
|
+
And a file named "config.rb" with:
|
5
|
+
"""
|
6
|
+
activate :blog do |blog|
|
7
|
+
blog.sources = ":year/:month/:day/:title.html"
|
8
|
+
end
|
9
|
+
ignore '2011/01/02/newer-article.html'
|
10
|
+
"""
|
11
|
+
# This file would give an error if it weren't ignored
|
12
|
+
And a file named "source/2011/01/02/newer-article.html.markdown" with:
|
13
|
+
"""
|
14
|
+
---
|
15
|
+
title: "Newer Article"
|
16
|
+
date: 2013-01-15
|
17
|
+
---
|
18
|
+
|
19
|
+
Newer Article Content
|
20
|
+
"""
|
21
|
+
Given the Server is running
|
22
|
+
When I go to "/2011/01/01/new-article.html"
|
23
|
+
Then I should see "Article"
|
24
|
+
When I go to "/2011/01/02/newer-article.html"
|
25
|
+
Then I should see "Not Found"
|
data/features/language.feature
CHANGED
@@ -23,6 +23,14 @@ Feature: Internationalized articles
|
|
23
23
|
Then I should see "Некоторый текст на русском языке. Всё отлично."
|
24
24
|
Then I should not see "Some text in English. All is OK."
|
25
25
|
|
26
|
+
Scenario: Article has lang in source path
|
27
|
+
Given a fixture app "lang-path-app"
|
28
|
+
Given the Server is running at "lang-path-app"
|
29
|
+
When I go to "/en/a-humble-test.html"
|
30
|
+
Then I should see "English!"
|
31
|
+
When I go to "/ru/a-humble-test.html"
|
32
|
+
Then I should see "Russian!"
|
33
|
+
|
26
34
|
Scenario: Custom locales in articles
|
27
35
|
Given a fixture app "language-app"
|
28
36
|
And a file named "config.rb" with:
|
data/features/tags.feature
CHANGED
@@ -9,6 +9,9 @@ Feature: Tag pages
|
|
9
9
|
Then I should see "/2011-01-01-new-article.html"
|
10
10
|
Then I should not see "/2011-01-02-another-article.html"
|
11
11
|
Then I should see "Tag: bar"
|
12
|
+
When I go to "/tags/120.html"
|
13
|
+
Then I should see "/2011-01-02-another-article.html"
|
14
|
+
Then I should see "Tag: 120"
|
12
15
|
When I go to "/index.html"
|
13
16
|
Then I should see "Tag Path: '/tags/foo.html'"
|
14
17
|
|
@@ -0,0 +1 @@
|
|
1
|
+
<%= yield %>
|
@@ -124,7 +124,7 @@ module Middleman
|
|
124
124
|
if article_tags.is_a? String
|
125
125
|
article_tags.split(',').map(&:strip)
|
126
126
|
else
|
127
|
-
Array(article_tags)
|
127
|
+
Array(article_tags).map(&:to_s)
|
128
128
|
end
|
129
129
|
end
|
130
130
|
|
@@ -136,11 +136,8 @@ module Middleman
|
|
136
136
|
#
|
137
137
|
# @return [Symbol] Language code (for example, +:en+ or +:de+)
|
138
138
|
def lang
|
139
|
-
frontmatter_lang = data[
|
140
|
-
|
141
|
-
if blog_options.sources.include? ":lang"
|
142
|
-
filename_lang = path_part("lang")
|
143
|
-
end
|
139
|
+
frontmatter_lang = data['lang']
|
140
|
+
filename_lang = path_part('lang')
|
144
141
|
|
145
142
|
if frontmatter_lang && filename_lang && frontmatter_lang != filename_lang
|
146
143
|
raise "The lang in #{path}'s filename (#{filename_lang.inspect}) doesn't match the lang in its frontmatter (#{frontmatter_lang.inspect})"
|
@@ -232,7 +229,7 @@ module Middleman
|
|
232
229
|
# @param [String] part The part of the path, e.g. "lang", "year", "month", "day", "title"
|
233
230
|
# @return [String]
|
234
231
|
def path_part(part)
|
235
|
-
@_path_parts ||= blog_data.source_template
|
232
|
+
@_path_parts ||= Blog::UriTemplates.extract_params(blog_data.source_template, path)
|
236
233
|
@_path_parts[part.to_s]
|
237
234
|
end
|
238
235
|
end
|
@@ -78,6 +78,12 @@ module Middleman
|
|
78
78
|
used_resources = []
|
79
79
|
|
80
80
|
resources.each do |resource|
|
81
|
+
if resource.ignored?
|
82
|
+
# Don't bother blog-processing ignored stuff
|
83
|
+
used_resources << resource
|
84
|
+
next
|
85
|
+
end
|
86
|
+
|
81
87
|
if (params = extract_params(@source_template, resource.path))
|
82
88
|
article = convert_to_article(resource)
|
83
89
|
next unless publishable?(article)
|
@@ -31,7 +31,7 @@ module Middleman
|
|
31
31
|
desc: "The language to create the post with (defaults to I18n.default_locale if avaliable)"
|
32
32
|
method_option "blog",
|
33
33
|
aliases: "-b",
|
34
|
-
desc: "The name of the blog to
|
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)"
|
35
35
|
def article(title)
|
36
36
|
shared_instance = ::Middleman::Application.server.inst
|
37
37
|
|
@@ -26,7 +26,9 @@ module Middleman
|
|
26
26
|
end
|
27
27
|
|
28
28
|
def manipulate_resource_list(resources)
|
29
|
-
articles_by_property = @blog_data.articles.
|
29
|
+
articles_by_property = @blog_data.articles.
|
30
|
+
select {|a| a.metadata[:page][property.to_s] }.
|
31
|
+
group_by {|a| a.metadata[:page][property.to_s] }
|
30
32
|
resources + articles_by_property.map do |property_value, articles|
|
31
33
|
build_resource(link(property_value), property_value, articles)
|
32
34
|
end
|
@@ -23,14 +23,14 @@
|
|
23
23
|
<h2>Tags</h2>
|
24
24
|
<ol>
|
25
25
|
<% blog.tags.each do |tag, articles| %>
|
26
|
-
<li><%= link_to tag, tag_path(tag)
|
26
|
+
<li><%= link_to "#{tag} (#{articles.size})", tag_path(tag) %></li>
|
27
27
|
<% end %>
|
28
28
|
</ol>
|
29
29
|
|
30
30
|
<h2>By Year</h2>
|
31
31
|
<ol>
|
32
32
|
<% blog.articles.group_by {|a| a.date.year }.each do |year, articles| %>
|
33
|
-
<li><%= link_to year, blog_year_path(year)
|
33
|
+
<li><%= link_to "#{year} (#{articles.size})", blog_year_path(year) %></li>
|
34
34
|
<% end %>
|
35
35
|
</ol>
|
36
36
|
</aside>
|
@@ -49,7 +49,7 @@ module Middleman
|
|
49
49
|
sep = '-'
|
50
50
|
|
51
51
|
# Reimplementation of http://api.rubyonrails.org/classes/ActiveSupport/Inflector.html#method-i-parameterize that preserves un-transliterate-able multibyte chars.
|
52
|
-
parameterized_string = ActiveSupport::Inflector.transliterate(str).downcase
|
52
|
+
parameterized_string = ActiveSupport::Inflector.transliterate(str.to_s).downcase
|
53
53
|
parameterized_string.gsub!(/[^a-z0-9\-_\?]+/, sep)
|
54
54
|
|
55
55
|
parameterized_string.chars.to_a.each_with_index do |char, i|
|
data/spec/uri_templates_spec.rb
CHANGED
@@ -22,6 +22,10 @@ describe 'Middleman::Blog::UriTemplates' do
|
|
22
22
|
it "can handle mixed strings" do
|
23
23
|
safe_parameterize('What ☆☆☆!').should == 'what-☆☆☆'
|
24
24
|
end
|
25
|
+
|
26
|
+
it "can handle numbers" do
|
27
|
+
safe_parameterize(1).should == '1'
|
28
|
+
end
|
25
29
|
end
|
26
30
|
|
27
31
|
describe 'extract_params' do
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: middleman-blog
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 3.5.
|
4
|
+
version: 3.5.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Thomas Reynolds
|
@@ -9,48 +9,48 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date:
|
12
|
+
date: 2014-03-02 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: middleman-core
|
16
16
|
requirement: !ruby/object:Gem::Requirement
|
17
17
|
requirements:
|
18
|
-
- - ~>
|
18
|
+
- - "~>"
|
19
19
|
- !ruby/object:Gem::Version
|
20
20
|
version: '3.2'
|
21
21
|
type: :runtime
|
22
22
|
prerelease: false
|
23
23
|
version_requirements: !ruby/object:Gem::Requirement
|
24
24
|
requirements:
|
25
|
-
- - ~>
|
25
|
+
- - "~>"
|
26
26
|
- !ruby/object:Gem::Version
|
27
27
|
version: '3.2'
|
28
28
|
- !ruby/object:Gem::Dependency
|
29
29
|
name: tzinfo
|
30
30
|
requirement: !ruby/object:Gem::Requirement
|
31
31
|
requirements:
|
32
|
-
- -
|
32
|
+
- - ">="
|
33
33
|
- !ruby/object:Gem::Version
|
34
34
|
version: 0.3.0
|
35
35
|
type: :runtime
|
36
36
|
prerelease: false
|
37
37
|
version_requirements: !ruby/object:Gem::Requirement
|
38
38
|
requirements:
|
39
|
-
- -
|
39
|
+
- - ">="
|
40
40
|
- !ruby/object:Gem::Version
|
41
41
|
version: 0.3.0
|
42
42
|
- !ruby/object:Gem::Dependency
|
43
43
|
name: addressable
|
44
44
|
requirement: !ruby/object:Gem::Requirement
|
45
45
|
requirements:
|
46
|
-
- - ~>
|
46
|
+
- - "~>"
|
47
47
|
- !ruby/object:Gem::Version
|
48
48
|
version: 2.3.5
|
49
49
|
type: :runtime
|
50
50
|
prerelease: false
|
51
51
|
version_requirements: !ruby/object:Gem::Requirement
|
52
52
|
requirements:
|
53
|
-
- - ~>
|
53
|
+
- - "~>"
|
54
54
|
- !ruby/object:Gem::Version
|
55
55
|
version: 2.3.5
|
56
56
|
description: Blog engine for Middleman
|
@@ -61,10 +61,10 @@ executables: []
|
|
61
61
|
extensions: []
|
62
62
|
extra_rdoc_files: []
|
63
63
|
files:
|
64
|
-
- .gemtest
|
65
|
-
- .gitignore
|
66
|
-
- .travis.yml
|
67
|
-
- .yardopts
|
64
|
+
- ".gemtest"
|
65
|
+
- ".gitignore"
|
66
|
+
- ".travis.yml"
|
67
|
+
- ".yardopts"
|
68
68
|
- CHANGELOG.md
|
69
69
|
- CONTRIBUTING.md
|
70
70
|
- Gemfile
|
@@ -83,6 +83,7 @@ files:
|
|
83
83
|
- features/directory_indexes.feature
|
84
84
|
- features/filename_date.feature
|
85
85
|
- features/future_date.feature
|
86
|
+
- features/ignored_files.feature
|
86
87
|
- features/language.feature
|
87
88
|
- features/layouts.feature
|
88
89
|
- features/multiblog.feature
|
@@ -110,6 +111,11 @@ files:
|
|
110
111
|
- fixtures/blog-sources-app/source/blog/2013-08-08-slug-from-filename.html.markdown
|
111
112
|
- fixtures/blog-sources-app/source/index.html.erb
|
112
113
|
- fixtures/blog-sources-app/source/layout.erb
|
114
|
+
- fixtures/blog-sources-subdirs-app/config.rb
|
115
|
+
- fixtures/blog-sources-subdirs-app/source/blog.html.erb
|
116
|
+
- fixtures/blog-sources-subdirs-app/source/blog/another-post.md.erb
|
117
|
+
- fixtures/blog-sources-subdirs-app/source/blog/subdir/yet-another-post.md.erb
|
118
|
+
- fixtures/blog-sources-subdirs-app/source/layout.erb
|
113
119
|
- fixtures/calendar-and-tag-app/config-directory-indexes.rb
|
114
120
|
- fixtures/calendar-and-tag-app/config.rb
|
115
121
|
- fixtures/calendar-and-tag-app/source/archive.html.erb
|
@@ -142,6 +148,7 @@ files:
|
|
142
148
|
- fixtures/custom-collections-app/config.rb
|
143
149
|
- fixtures/custom-collections-app/source/blog/2011-01-01-new-article.html.markdown
|
144
150
|
- fixtures/custom-collections-app/source/blog/2011-01-02-another-article.html.markdown
|
151
|
+
- fixtures/custom-collections-app/source/blog/2011-01-03-no-category-article.html.markdown
|
145
152
|
- fixtures/custom-collections-app/source/category.html.erb
|
146
153
|
- fixtures/custom-collections-app/source/index.html.erb
|
147
154
|
- fixtures/custom-collections-app/source/layout.erb
|
@@ -193,6 +200,10 @@ files:
|
|
193
200
|
- fixtures/indexes-app/source/2011/01/01/new-article.html.markdown
|
194
201
|
- fixtures/indexes-app/source/index.html.erb
|
195
202
|
- fixtures/indexes-app/source/layout.erb
|
203
|
+
- fixtures/lang-path-app/config.rb
|
204
|
+
- fixtures/lang-path-app/source/blog/2013-12-24-a-humble-test.en.html.markdown
|
205
|
+
- fixtures/lang-path-app/source/blog/2013-12-24-a-humble-test.ru.html.markdown
|
206
|
+
- fixtures/lang-path-app/source/layouts/layout.erb
|
196
207
|
- fixtures/language-app/config.rb
|
197
208
|
- fixtures/language-app/locales/en.yml
|
198
209
|
- fixtures/language-app/locales/ru.yml
|
@@ -353,17 +364,17 @@ require_paths:
|
|
353
364
|
- lib
|
354
365
|
required_ruby_version: !ruby/object:Gem::Requirement
|
355
366
|
requirements:
|
356
|
-
- -
|
367
|
+
- - ">="
|
357
368
|
- !ruby/object:Gem::Version
|
358
369
|
version: 1.9.3
|
359
370
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
360
371
|
requirements:
|
361
|
-
- -
|
372
|
+
- - ">="
|
362
373
|
- !ruby/object:Gem::Version
|
363
374
|
version: '0'
|
364
375
|
requirements: []
|
365
376
|
rubyforge_project:
|
366
|
-
rubygems_version: 2.
|
377
|
+
rubygems_version: 2.2.2
|
367
378
|
signing_key:
|
368
379
|
specification_version: 4
|
369
380
|
summary: Blog engine for Middleman
|
@@ -380,6 +391,7 @@ test_files:
|
|
380
391
|
- features/directory_indexes.feature
|
381
392
|
- features/filename_date.feature
|
382
393
|
- features/future_date.feature
|
394
|
+
- features/ignored_files.feature
|
383
395
|
- features/language.feature
|
384
396
|
- features/layouts.feature
|
385
397
|
- features/multiblog.feature
|
@@ -407,6 +419,11 @@ test_files:
|
|
407
419
|
- fixtures/blog-sources-app/source/blog/2013-08-08-slug-from-filename.html.markdown
|
408
420
|
- fixtures/blog-sources-app/source/index.html.erb
|
409
421
|
- fixtures/blog-sources-app/source/layout.erb
|
422
|
+
- fixtures/blog-sources-subdirs-app/config.rb
|
423
|
+
- fixtures/blog-sources-subdirs-app/source/blog.html.erb
|
424
|
+
- fixtures/blog-sources-subdirs-app/source/blog/another-post.md.erb
|
425
|
+
- fixtures/blog-sources-subdirs-app/source/blog/subdir/yet-another-post.md.erb
|
426
|
+
- fixtures/blog-sources-subdirs-app/source/layout.erb
|
410
427
|
- fixtures/calendar-and-tag-app/config-directory-indexes.rb
|
411
428
|
- fixtures/calendar-and-tag-app/config.rb
|
412
429
|
- fixtures/calendar-and-tag-app/source/archive.html.erb
|
@@ -439,6 +456,7 @@ test_files:
|
|
439
456
|
- fixtures/custom-collections-app/config.rb
|
440
457
|
- fixtures/custom-collections-app/source/blog/2011-01-01-new-article.html.markdown
|
441
458
|
- fixtures/custom-collections-app/source/blog/2011-01-02-another-article.html.markdown
|
459
|
+
- fixtures/custom-collections-app/source/blog/2011-01-03-no-category-article.html.markdown
|
442
460
|
- fixtures/custom-collections-app/source/category.html.erb
|
443
461
|
- fixtures/custom-collections-app/source/index.html.erb
|
444
462
|
- fixtures/custom-collections-app/source/layout.erb
|
@@ -490,6 +508,10 @@ test_files:
|
|
490
508
|
- fixtures/indexes-app/source/2011/01/01/new-article.html.markdown
|
491
509
|
- fixtures/indexes-app/source/index.html.erb
|
492
510
|
- fixtures/indexes-app/source/layout.erb
|
511
|
+
- fixtures/lang-path-app/config.rb
|
512
|
+
- fixtures/lang-path-app/source/blog/2013-12-24-a-humble-test.en.html.markdown
|
513
|
+
- fixtures/lang-path-app/source/blog/2013-12-24-a-humble-test.ru.html.markdown
|
514
|
+
- fixtures/lang-path-app/source/layouts/layout.erb
|
493
515
|
- fixtures/language-app/config.rb
|
494
516
|
- fixtures/language-app/locales/en.yml
|
495
517
|
- fixtures/language-app/locales/ru.yml
|