middleman-blog 0.1.5 → 3.0.0.beta.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 (81) hide show
  1. data/.gemtest +0 -0
  2. data/.gitignore +5 -0
  3. data/.travis.yml +9 -0
  4. data/.yardopts +3 -0
  5. data/Gemfile +19 -0
  6. data/LICENSE +20 -0
  7. data/README.md +62 -0
  8. data/Rakefile +15 -0
  9. data/features/article_cli.feature +7 -0
  10. data/features/blog_sources.feature +9 -0
  11. data/features/calendar.feature +30 -0
  12. data/features/directory_indexes.feature +6 -0
  13. data/features/encoding.feature +0 -0
  14. data/features/filename_date.feature +9 -0
  15. data/features/next_previous.feature +8 -0
  16. data/features/preview.feature +29 -0
  17. data/features/support/env.rb +4 -0
  18. data/features/tags.feature +50 -0
  19. data/fixtures/blog-sources-app/config.rb +3 -0
  20. data/fixtures/blog-sources-app/source/_article_template.erb +1 -0
  21. data/fixtures/blog-sources-app/source/blog/2011-01-01-new-article.html.markdown +6 -0
  22. data/fixtures/blog-sources-app/source/index.html.erb +9 -0
  23. data/fixtures/blog-sources-app/source/layout.erb +13 -0
  24. data/fixtures/calendar-app/config.rb +5 -0
  25. data/fixtures/calendar-app/source/blog/2011-01-01-new-article.html.markdown +7 -0
  26. data/fixtures/calendar-app/source/blog/2011-01-02-another-article.html.markdown +8 -0
  27. data/fixtures/calendar-app/source/calendar.html.erb +13 -0
  28. data/fixtures/calendar-app/source/index.html.erb +3 -0
  29. data/fixtures/calendar-app/source/layout.erb +15 -0
  30. data/fixtures/filename-date-app/config.rb +1 -0
  31. data/fixtures/filename-date-app/source/2011-01-01-new-article.html.markdown +5 -0
  32. data/fixtures/filename-date-app/source/2011-01-03-filename-and-frontmatter.html.markdown +6 -0
  33. data/fixtures/filename-date-app/source/layout.erb +14 -0
  34. data/fixtures/indexes-app/config.rb +5 -0
  35. data/fixtures/indexes-app/source/2011/01/01/new-article.html.markdown +6 -0
  36. data/fixtures/indexes-app/source/_article_template.erb +1 -0
  37. data/fixtures/indexes-app/source/index.html.erb +9 -0
  38. data/fixtures/indexes-app/source/layout.erb +13 -0
  39. data/fixtures/preview-app/config.rb +3 -0
  40. data/fixtures/preview-app/source/2011/01/01/new-article.html.markdown +6 -0
  41. data/fixtures/preview-app/source/_article_template.erb +10 -0
  42. data/fixtures/preview-app/source/index.html.erb +9 -0
  43. data/fixtures/preview-app/source/layout.erb +22 -0
  44. data/fixtures/tags-app/config.rb +6 -0
  45. data/fixtures/tags-app/source/blog/2011-01-01-new-article.html.markdown +7 -0
  46. data/fixtures/tags-app/source/blog/2011-01-02-another-article.html.markdown +8 -0
  47. data/fixtures/tags-app/source/index.html.erb +3 -0
  48. data/fixtures/tags-app/source/layout.erb +13 -0
  49. data/fixtures/tags-app/source/tag.html.erb +7 -0
  50. data/fixtures/utf8ouch/config.rb +17 -0
  51. data/fixtures/utf8ouch/source/2010/11/13/telling-time.html.markdown +73 -0
  52. data/fixtures/utf8ouch/source/2011/01/01/new-article.html.markdown +6 -0
  53. data/{lib/middleman-blog/template → fixtures/utf8ouch}/source/_article_template.erb +0 -0
  54. data/{lib/middleman-blog/template → fixtures/utf8ouch}/source/archives/index.html.erb +0 -0
  55. data/fixtures/utf8ouch/source/feed.xml.builder +23 -0
  56. data/fixtures/utf8ouch/source/index.html.erb +9 -0
  57. data/fixtures/utf8ouch/source/layout.erb +30 -0
  58. data/lib/middleman-blog.rb +10 -2
  59. data/lib/middleman-blog/blog_article.rb +123 -0
  60. data/lib/middleman-blog/blog_data.rb +94 -0
  61. data/lib/middleman-blog/calendar_pages.rb +85 -0
  62. data/lib/middleman-blog/commands/article.rb +52 -0
  63. data/lib/middleman-blog/commands/article.tt +6 -0
  64. data/lib/middleman-blog/extension.rb +170 -0
  65. data/lib/middleman-blog/tag_pages.rb +33 -0
  66. data/lib/middleman-blog/template.rb +19 -8
  67. data/lib/middleman-blog/template/config.tt +101 -5
  68. data/lib/middleman-blog/template/shared/Gemfile.tt +4 -0
  69. data/lib/middleman-blog/template/source/2012-01-01-example-article.html.markdown +7 -0
  70. data/lib/middleman-blog/template/source/calendar.html.erb +15 -0
  71. data/lib/middleman-blog/template/source/feed.xml.builder +2 -2
  72. data/lib/middleman-blog/template/source/index.html.erb +8 -9
  73. data/lib/middleman-blog/template/source/layout.erb +18 -12
  74. data/lib/middleman-blog/template/source/tag.html.erb +7 -0
  75. data/lib/middleman-blog/version.rb +1 -1
  76. data/lib/{middleman_init.rb → middleman_extension.rb} +0 -0
  77. data/middleman-blog.gemspec +1 -2
  78. metadata +110 -63
  79. data/lib/middleman-blog/feature.rb +0 -162
  80. data/lib/middleman-blog/template/config.ru +0 -9
  81. data/lib/middleman-blog/template/source/2011/01/01/new-article.html.markdown +0 -6
@@ -1,162 +0,0 @@
1
- module Middleman
2
- module Features
3
- module Blog
4
- class << self
5
- def registered(app)
6
- # Include helpers
7
- app.helpers Middleman::Features::Blog::Helpers
8
-
9
- app.after_configuration do
10
- if !app.settings.respond_to? :blog_permalink
11
- app.set :blog_permalink, ":year/:month/:day/:title.html"
12
- end
13
-
14
- if !app.settings.respond_to? :blog_taglink
15
- app.set :blog_taglink, "tags/:tag.html"
16
- end
17
-
18
- if !app.settings.respond_to? :blog_layout
19
- app.set :blog_layout, "layout"
20
- end
21
-
22
- if !app.settings.respond_to? :blog_summary_separator
23
- app.set :blog_summary_separator, /READMORE/
24
- end
25
-
26
- if !app.settings.respond_to? :blog_summary_length
27
- app.set :blog_summary_length, 250
28
- end
29
-
30
- if !app.settings.respond_to? :blog_layout_engine
31
- app.set :blog_layout_engine, "erb"
32
- end
33
-
34
- if !app.settings.respond_to? :blog_index_template
35
- app.set :blog_index_template, "index_template"
36
- end
37
-
38
- if !app.settings.respond_to? :blog_article_template
39
- app.set :blog_article_template, "article_template"
40
- end
41
-
42
- if !app.build?
43
- $stderr.puts "== Blog: #{app.settings.blog_permalink}"
44
- end
45
-
46
- app.get("/#{app.blog_permalink}") do
47
- process_request({
48
- :layout => app.blog_layout,
49
- :layout_engine => app.blog_layout_engine
50
- })
51
-
52
- current_body = body
53
- current_body = current_body.first if current_body.class == Array
54
- # No need for separator on permalink page
55
- body current_body.gsub(app.blog_summary_separator, "")
56
- end
57
- end
58
-
59
- app.before_processing do
60
- articles_glob = File.join(app.views, app.settings.blog_permalink.gsub(/(:\w+)/, "*") + ".*")
61
-
62
- articles = Dir[articles_glob].map do |article|
63
- template_content = File.read(article)
64
- data, content = app.parse_front_matter(template_content)
65
- data["date"] = Date.parse("#{data['date']}")
66
-
67
- data["raw"] = content
68
- data["url"] = article.gsub(app.views, "").split(".html").first + ".html"
69
-
70
- all_content = Tilt.new(article).render
71
- data["body"] = all_content.gsub(app.settings.blog_summary_separator, "")
72
-
73
- sum = if data["raw"] =~ app.settings.blog_summary_separator
74
- data["raw"].split(app.settings.blog_summary_separator).first
75
- else
76
- data["raw"].match(/(.{1,#{app.settings.blog_summary_length}}.*?)(\n|\Z)/m).to_s
77
- end
78
-
79
- engine = app.settings.markdown_engine
80
- if engine.is_a? Symbol
81
- engine = app.tilt_template_from_symbol(engine)
82
- end
83
-
84
- engine = engine.new { sum }
85
- data["summary"] = engine.render
86
- data
87
- end.sort { |a, b| b["date"] <=> a["date"] }
88
-
89
- tags = {}
90
- articles.each do |article|
91
- article["tags"] ||= ""
92
- if !article["tags"].empty?
93
- tags_array = article["tags"].split(',').map{|t| t.strip}
94
- tags_array.each do |tag_title|
95
- tag_key = tag_title.parameterize
96
- tag_path = settings.blog_taglink.gsub(/(:\w+)/, tag_key)
97
- (tags[tag_path] ||= {})["title"] = tag_title
98
- tags[tag_path]["ident"] = tag_key
99
- (tags[tag_path]["pages"] ||= {})[article["title"]] = article["url"]
100
- end
101
- end
102
- end
103
-
104
- app.data_content("blog", { :articles => articles, :tags => tags })
105
- true
106
- end
107
- end
108
- alias :included :registered
109
- end
110
-
111
- module Helpers
112
- def is_blog_article?
113
- !current_article_title.blank?
114
- end
115
-
116
- def blog_title
117
- end
118
-
119
- def current_article_date
120
- DateTime.parse("#{current_article_metadata.date}")
121
- end
122
-
123
- def current_article_title
124
- current_article_metadata.title
125
- end
126
-
127
- def current_article_metadata
128
- data.page
129
- end
130
-
131
- def current_article_tags
132
- article_tags_hash = {}
133
- if is_blog_article? && current_article_metadata.tags
134
- article_tags = current_article_metadata.tags.split(',').map{|t| t.strip}
135
- article_tags.each do |tag_title|
136
- article_tags_hash[tag_title] = self.class.blog_taglink.gsub(/(:\w+)/, tag_title.parameterize)
137
- end
138
- end
139
- article_tags_hash
140
- end
141
-
142
- def blog_tags
143
- data.blog.tags
144
- end
145
-
146
- def current_tag_data
147
- data.blog.tags[request.path]
148
- end
149
-
150
- def current_tag_articles
151
- data.blog.articles.map do |article|
152
- article if current_tag_data.pages.has_value?(article.url)
153
- end.compact
154
- end
155
-
156
- def current_tag_title
157
- current_tag_data[:title]
158
- end
159
- end
160
- end
161
- end
162
- end
@@ -1,9 +0,0 @@
1
- # Rack config
2
-
3
- # Look for index files in folders like Apache
4
- require "rack/contrib/try_static"
5
- use Rack::TryStatic, :root => "build", :urls => %w[/], :try => ['.html', 'index.html', '/index.html']
6
-
7
- # Cache static assets
8
- require "rack/contrib/static_cache"
9
- use Rack::StaticCache, :urls => ['/'], :root => 'build'
@@ -1,6 +0,0 @@
1
- ---
2
- title: "New Article title"
3
- date: 01/01/2011
4
- ---
5
-
6
- Content of my article