postmarkdown 0.0.3 → 0.0.4

Sign up to get free protection for your applications and to get access to all the features.
data/Appraisals CHANGED
@@ -6,3 +6,8 @@ appraise 'rails3_1' do
6
6
  gem 'rails', '~> 3.1.0'
7
7
  gem 'combustion', '~> 0.3.1'
8
8
  end
9
+
10
+ appraise 'rails3_2' do
11
+ gem 'rails', '~> 3.2.0'
12
+ gem 'combustion', '~> 0.3.1'
13
+ end
@@ -21,7 +21,17 @@ class PostsController < ApplicationController
21
21
  helper_method :resource
22
22
 
23
23
  def collection
24
- @collection ||= Post.where(params.slice(:year, :month, :day))
24
+ @collection ||= begin
25
+ posts = Post.where(params.slice(:year, :month, :day))
26
+ posts = Kaminari.paginate_array(posts).page(params[:page]).per(posts_per_page)
27
+ posts
28
+ end
25
29
  end
26
30
  helper_method :collection
31
+
32
+ private
33
+
34
+ def posts_per_page
35
+ params[:count] || Postmarkdown::Config.options[:posts_per_page]
36
+ end
27
37
  end
@@ -2,6 +2,7 @@ require 'active_record/errors'
2
2
 
3
3
  class Post
4
4
  extend ActiveModel::Naming
5
+ include ActiveModel::Conversion
5
6
 
6
7
  include Gravtastic
7
8
  is_gravtastic
@@ -3,8 +3,9 @@
3
3
  %h1= link_to post.title, post
4
4
  = image_tag post.gravatar_url(:size => 32, :default => 'identicon'), :height => 32, :width => 32
5
5
  .meta
6
+ Posted on
6
7
  %time{:pubdate => 'true', :datetime => post.timestamp.iso8601}
7
- Posted on #{post.date.strftime '%e %B %Y'}
8
+ = post.date.strftime '%e %B %Y'
8
9
  %span
9
10
  by
10
11
  = post.author
@@ -3,5 +3,6 @@
3
3
  %section#posts
4
4
  - if collection.present?
5
5
  = render collection, :summary => true
6
+ = paginate collection
6
7
  - else
7
8
  No posts found.
@@ -0,0 +1,9 @@
1
+ # This file was generated by Appraisal
2
+
3
+ source "http://rubygems.org"
4
+
5
+ gem "ruby-debug19", :require=>false
6
+ gem "rails", "~> 3.2.0"
7
+ gem "combustion", "~> 0.3.1"
8
+
9
+ gemspec :path=>"../"
@@ -11,6 +11,8 @@ Postmarkdown::Config.options[:feed_title] = nil
11
11
 
12
12
  Postmarkdown::Config.options[:permalink_format] = :day
13
13
 
14
+ Postmarkdown::Config.options[:posts_per_page] = 5
15
+
14
16
  Postmarkdown::Config.options[:use_theme] = false
15
17
 
16
18
  Postmarkdown::Config.options[:permalink_regex] = {}
@@ -5,6 +5,7 @@ module Postmarkdown
5
5
  require 'rdiscount'
6
6
  require 'nokogiri'
7
7
  require 'haml'
8
+ require 'kaminari'
8
9
 
9
10
  class Engine < Rails::Engine
10
11
  end
@@ -1,3 +1,3 @@
1
1
  module Postmarkdown
2
- VERSION = '0.0.3'
2
+ VERSION = '0.0.4'
3
3
  end
@@ -26,6 +26,7 @@ Gem::Specification.new do |s|
26
26
  s.add_dependency 'gravtastic'
27
27
  s.add_dependency 'nokogiri'
28
28
  s.add_dependency 'rdiscount'
29
+ s.add_dependency 'kaminari'
29
30
 
30
31
  s.add_development_dependency 'appraisal'
31
32
  s.add_development_dependency 'rspec-rails', '~> 2.5'
data/readme.md CHANGED
@@ -137,6 +137,16 @@ What about mapping Postmarkdown to root? We got you covered:
137
137
  * Syntax highlighting for code blocks
138
138
  * Generated routes should show example usage
139
139
  * Support more file formats, eg. textile
140
+ * Built-in theme should have a link to the RSS Feed
141
+ * Generator tests
142
+
143
+ ## Development
144
+
145
+ ```
146
+ bundle
147
+ rake appraisal:install
148
+ rake # run the tests
149
+ ```
140
150
 
141
151
  ## License
142
152
 
@@ -9,39 +9,66 @@ describe 'Post views', :type => :request do
9
9
  after { back_to_the_present }
10
10
 
11
11
  context 'Posts#index' do
12
- before { visit posts_path }
13
-
14
- it 'should show published posts' do
15
- # 2011-05-01-full-metadata (published today)
16
- page.should have_content('Post with full metadata') # title
17
- page.should have_content('Posted on 1 May 2011') # publish date
18
- page.should have_content('by John Smith') # author
19
- page.should have_content('This is another custom & test summary.') # summary
20
-
21
- # 2011-04-28-summary
22
- page.should have_content('A Test Post') # title
23
- page.should have_content('Posted on 28 April 2011') # publish date
24
- page.should have_content('This is a custom & test summary.') # summary
25
-
26
- # 2011-04-28-image
27
- page.should have_content('Image') # title
28
- page.should have_content('Posted on 28 April 2011') # publish date
29
- page.should have_content('Image description.') # summary
30
-
31
- # 2011-04-01-first-post
32
- page.should have_content('First Post') # title
33
- page.should have_content('Posted on 1 April 2011') # publish date
34
- page.should have_content('Lorem ipsum dolor sit amet') # part of summary
35
- end
36
-
37
- it 'should not show unpublished posts' do
38
- # 2015-02-13-custom-title (not published yet)
39
- page.should_not have_content('This is a custom title') # title
40
- page.should_not have_content('Content goes here.') # summary
41
- end
42
-
43
- it 'should have the correct number of posts' do
44
- all('section#posts article.post').size.should == 4
12
+ context 'default index' do
13
+ before { visit posts_path }
14
+
15
+ it 'should show published posts' do
16
+ # 2011-05-01-full-metadata (published today)
17
+ page.should have_content('Post with full metadata') # title
18
+ page.should have_content('Posted on 1 May 2011') # publish date
19
+ page.should have_content('by John Smith') # author
20
+ page.should have_content('This is another custom & test summary.') # summary
21
+
22
+ # 2011-04-28-summary
23
+ page.should have_content('A Test Post') # title
24
+ page.should have_content('Posted on 28 April 2011') # publish date
25
+ page.should have_content('This is a custom & test summary.') # summary
26
+
27
+ # 2011-04-28-image
28
+ page.should have_content('Image') # title
29
+ page.should have_content('Posted on 28 April 2011') # publish date
30
+ page.should have_content('Image description.') # summary
31
+
32
+ # 2011-04-01-first-post
33
+ page.should have_content('First Post') # title
34
+ page.should have_content('Posted on 1 April 2011') # publish date
35
+ page.should have_content('Lorem ipsum dolor sit amet') # part of summary
36
+ end
37
+
38
+ it 'should not show unpublished posts' do
39
+ # 2015-02-13-custom-title (not published yet)
40
+ page.should_not have_content('This is a custom title') # title
41
+ page.should_not have_content('Content goes here.') # summary
42
+ end
43
+
44
+ it 'should have the correct number of posts' do
45
+ all('section#posts article.post').size.should == 4
46
+ end
47
+ end
48
+
49
+ describe 'pagination' do
50
+ def article_titles
51
+ all('article header h1').map(&:text)
52
+ end
53
+
54
+ before do
55
+ visit posts_path(:count => 2)
56
+ end
57
+
58
+ it 'returns the latest posts on the first page' do
59
+ article_titles.should eq [
60
+ 'Post with full metadata',
61
+ 'A Test Post',
62
+ ]
63
+ end
64
+
65
+ it 'returns earlier posts on the second page' do
66
+ click_link 'Next'
67
+ article_titles.should eq [
68
+ 'Image',
69
+ 'First Post',
70
+ ]
71
+ end
45
72
  end
46
73
  end
47
74
 
@@ -24,3 +24,5 @@ RSpec.configure do |config|
24
24
  config.mock_with :rspec
25
25
  config.include Delorean
26
26
  end
27
+
28
+ ActiveSupport::Deprecation.debug = true
@@ -63,5 +63,7 @@ section#content article header h1{}
63
63
  section#content article header img{display:none;}
64
64
  section#content article header .meta{color:#999;font-size:12px;}
65
65
 
66
+ nav.pagination{margin-bottom:20px;}
67
+
66
68
  /* -- Footer ---------------------------------------------------------------- */
67
69
  footer{margin-bottom:20px;}
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: postmarkdown
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.3
4
+ version: 0.0.4
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -12,11 +12,11 @@ authors:
12
12
  autorequire:
13
13
  bindir: bin
14
14
  cert_chain: []
15
- date: 2012-02-13 00:00:00.000000000 Z
15
+ date: 2012-08-24 00:00:00.000000000 Z
16
16
  dependencies:
17
17
  - !ruby/object:Gem::Dependency
18
18
  name: rails
19
- requirement: &70152203859260 !ruby/object:Gem::Requirement
19
+ requirement: !ruby/object:Gem::Requirement
20
20
  none: false
21
21
  requirements:
22
22
  - - ~>
@@ -24,10 +24,15 @@ dependencies:
24
24
  version: '3.0'
25
25
  type: :runtime
26
26
  prerelease: false
27
- version_requirements: *70152203859260
27
+ version_requirements: !ruby/object:Gem::Requirement
28
+ none: false
29
+ requirements:
30
+ - - ~>
31
+ - !ruby/object:Gem::Version
32
+ version: '3.0'
28
33
  - !ruby/object:Gem::Dependency
29
34
  name: haml
30
- requirement: &70152203858160 !ruby/object:Gem::Requirement
35
+ requirement: !ruby/object:Gem::Requirement
31
36
  none: false
32
37
  requirements:
33
38
  - - ~>
@@ -35,10 +40,15 @@ dependencies:
35
40
  version: '3.1'
36
41
  type: :runtime
37
42
  prerelease: false
38
- version_requirements: *70152203858160
43
+ version_requirements: !ruby/object:Gem::Requirement
44
+ none: false
45
+ requirements:
46
+ - - ~>
47
+ - !ruby/object:Gem::Version
48
+ version: '3.1'
39
49
  - !ruby/object:Gem::Dependency
40
50
  name: gravtastic
41
- requirement: &70152203857240 !ruby/object:Gem::Requirement
51
+ requirement: !ruby/object:Gem::Requirement
42
52
  none: false
43
53
  requirements:
44
54
  - - ! '>='
@@ -46,10 +56,15 @@ dependencies:
46
56
  version: '0'
47
57
  type: :runtime
48
58
  prerelease: false
49
- version_requirements: *70152203857240
59
+ version_requirements: !ruby/object:Gem::Requirement
60
+ none: false
61
+ requirements:
62
+ - - ! '>='
63
+ - !ruby/object:Gem::Version
64
+ version: '0'
50
65
  - !ruby/object:Gem::Dependency
51
66
  name: nokogiri
52
- requirement: &70152203854740 !ruby/object:Gem::Requirement
67
+ requirement: !ruby/object:Gem::Requirement
53
68
  none: false
54
69
  requirements:
55
70
  - - ! '>='
@@ -57,10 +72,15 @@ dependencies:
57
72
  version: '0'
58
73
  type: :runtime
59
74
  prerelease: false
60
- version_requirements: *70152203854740
75
+ version_requirements: !ruby/object:Gem::Requirement
76
+ none: false
77
+ requirements:
78
+ - - ! '>='
79
+ - !ruby/object:Gem::Version
80
+ version: '0'
61
81
  - !ruby/object:Gem::Dependency
62
82
  name: rdiscount
63
- requirement: &70152203872800 !ruby/object:Gem::Requirement
83
+ requirement: !ruby/object:Gem::Requirement
64
84
  none: false
65
85
  requirements:
66
86
  - - ! '>='
@@ -68,10 +88,31 @@ dependencies:
68
88
  version: '0'
69
89
  type: :runtime
70
90
  prerelease: false
71
- version_requirements: *70152203872800
91
+ version_requirements: !ruby/object:Gem::Requirement
92
+ none: false
93
+ requirements:
94
+ - - ! '>='
95
+ - !ruby/object:Gem::Version
96
+ version: '0'
97
+ - !ruby/object:Gem::Dependency
98
+ name: kaminari
99
+ requirement: !ruby/object:Gem::Requirement
100
+ none: false
101
+ requirements:
102
+ - - ! '>='
103
+ - !ruby/object:Gem::Version
104
+ version: '0'
105
+ type: :runtime
106
+ prerelease: false
107
+ version_requirements: !ruby/object:Gem::Requirement
108
+ none: false
109
+ requirements:
110
+ - - ! '>='
111
+ - !ruby/object:Gem::Version
112
+ version: '0'
72
113
  - !ruby/object:Gem::Dependency
73
114
  name: appraisal
74
- requirement: &70152203871500 !ruby/object:Gem::Requirement
115
+ requirement: !ruby/object:Gem::Requirement
75
116
  none: false
76
117
  requirements:
77
118
  - - ! '>='
@@ -79,10 +120,15 @@ dependencies:
79
120
  version: '0'
80
121
  type: :development
81
122
  prerelease: false
82
- version_requirements: *70152203871500
123
+ version_requirements: !ruby/object:Gem::Requirement
124
+ none: false
125
+ requirements:
126
+ - - ! '>='
127
+ - !ruby/object:Gem::Version
128
+ version: '0'
83
129
  - !ruby/object:Gem::Dependency
84
130
  name: rspec-rails
85
- requirement: &70152203869080 !ruby/object:Gem::Requirement
131
+ requirement: !ruby/object:Gem::Requirement
86
132
  none: false
87
133
  requirements:
88
134
  - - ~>
@@ -90,10 +136,15 @@ dependencies:
90
136
  version: '2.5'
91
137
  type: :development
92
138
  prerelease: false
93
- version_requirements: *70152203869080
139
+ version_requirements: !ruby/object:Gem::Requirement
140
+ none: false
141
+ requirements:
142
+ - - ~>
143
+ - !ruby/object:Gem::Version
144
+ version: '2.5'
94
145
  - !ruby/object:Gem::Dependency
95
146
  name: capybara
96
- requirement: &70152203886600 !ruby/object:Gem::Requirement
147
+ requirement: !ruby/object:Gem::Requirement
97
148
  none: false
98
149
  requirements:
99
150
  - - ~>
@@ -101,10 +152,15 @@ dependencies:
101
152
  version: 1.0.0.beta
102
153
  type: :development
103
154
  prerelease: false
104
- version_requirements: *70152203886600
155
+ version_requirements: !ruby/object:Gem::Requirement
156
+ none: false
157
+ requirements:
158
+ - - ~>
159
+ - !ruby/object:Gem::Version
160
+ version: 1.0.0.beta
105
161
  - !ruby/object:Gem::Dependency
106
162
  name: sqlite3
107
- requirement: &70152203885940 !ruby/object:Gem::Requirement
163
+ requirement: !ruby/object:Gem::Requirement
108
164
  none: false
109
165
  requirements:
110
166
  - - ! '>='
@@ -112,10 +168,15 @@ dependencies:
112
168
  version: '0'
113
169
  type: :development
114
170
  prerelease: false
115
- version_requirements: *70152203885940
171
+ version_requirements: !ruby/object:Gem::Requirement
172
+ none: false
173
+ requirements:
174
+ - - ! '>='
175
+ - !ruby/object:Gem::Version
176
+ version: '0'
116
177
  - !ruby/object:Gem::Dependency
117
178
  name: delorean
118
- requirement: &70152203884620 !ruby/object:Gem::Requirement
179
+ requirement: !ruby/object:Gem::Requirement
119
180
  none: false
120
181
  requirements:
121
182
  - - ! '>='
@@ -123,7 +184,12 @@ dependencies:
123
184
  version: '0.2'
124
185
  type: :development
125
186
  prerelease: false
126
- version_requirements: *70152203884620
187
+ version_requirements: !ruby/object:Gem::Requirement
188
+ none: false
189
+ requirements:
190
+ - - ! '>='
191
+ - !ruby/object:Gem::Version
192
+ version: '0.2'
127
193
  description: A simple Rails blog engine powered by markdown.
128
194
  email:
129
195
  - jason.weathered@ennova.com.au
@@ -152,6 +218,7 @@ files:
152
218
  - config.ru
153
219
  - gemfiles/rails3_0.gemfile
154
220
  - gemfiles/rails3_1.gemfile
221
+ - gemfiles/rails3_2.gemfile
155
222
  - lib/generators/postmarkdown/install_generator.rb
156
223
  - lib/generators/postmarkdown/override_generator.rb
157
224
  - lib/generators/postmarkdown/post_generator.rb
@@ -168,7 +235,7 @@ files:
168
235
  - lib/postmarkdown/version.rb
169
236
  - postmarkdown.gemspec
170
237
  - readme.md
171
- - spec/acceptance/posts_spec.rb
238
+ - spec/integrations/posts_spec.rb
172
239
  - spec/internal/.gitignore
173
240
  - spec/internal/app/posts/2011-04-01-first-post.markdown
174
241
  - spec/internal/app/posts/2011-04-28-image.markdown
@@ -206,7 +273,6 @@ files:
206
273
  - spec/support/rails_app/config/routes.rb
207
274
  - spec/support/rails_app/db/seeds.rb
208
275
  - spec/support/rails_app/doc/README_FOR_APP
209
- - todo.txt
210
276
  - vendor/assets/stylesheets/postmarkdown/postmarkdown.css
211
277
  homepage: ''
212
278
  licenses:
@@ -224,7 +290,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
224
290
  version: '0'
225
291
  segments:
226
292
  - 0
227
- hash: -2286187286475211552
293
+ hash: -4469381754881994462
228
294
  required_rubygems_version: !ruby/object:Gem::Requirement
229
295
  none: false
230
296
  requirements:
@@ -233,15 +299,15 @@ required_rubygems_version: !ruby/object:Gem::Requirement
233
299
  version: '0'
234
300
  segments:
235
301
  - 0
236
- hash: -2286187286475211552
302
+ hash: -4469381754881994462
237
303
  requirements: []
238
304
  rubyforge_project: postmarkdown
239
- rubygems_version: 1.8.15
305
+ rubygems_version: 1.8.23
240
306
  signing_key:
241
307
  specification_version: 3
242
308
  summary: A simple Rails blog engine powered by markdown.
243
309
  test_files:
244
- - spec/acceptance/posts_spec.rb
310
+ - spec/integrations/posts_spec.rb
245
311
  - spec/internal/.gitignore
246
312
  - spec/internal/app/posts/2011-04-01-first-post.markdown
247
313
  - spec/internal/app/posts/2011-04-28-image.markdown
data/todo.txt DELETED
@@ -1,25 +0,0 @@
1
- TODO
2
- ----
3
- [ ] Pagination
4
- [ ] Built-in theme should have a link to the RSS Feed
5
- [ ] Generator tests
6
-
7
- DONE
8
- ----
9
- [x] Route: `postmarkdown :permalink_format => :slug`</del>
10
- [x] Add info about blog at root to readme</del>
11
- [x] RSpec tests for routes</del>
12
- [x] Support more markdown file extensions, eg. `*.md, *.mkd, *.mdown`</del>
13
- [x] Text for when there's no posts on the index page, eg. 'There are no posts'</del>
14
- [x] Fix pre code blocks</del>
15
- [x] RSpec model tests for author and email</del>
16
- [x] Set default feed title to app name + route path</del>
17
- [x] For example, `TestApp::Application` with the route `postmarkdown :as => :awesome_blog` would generate the feed title would be 'Test App Awesome Blog'</del>
18
- [x] RSpec acceptance test for pre code blocks (= vs ~)
19
- [x] RSpec tests for the xml feed
20
- [x] 404 for missing post or invalid slug
21
- [x] Add post author to feed
22
- [x] Better example post
23
- [x] Generator automagically figures out who the author is based on git config
24
- [x] Default theme
25
- [x] Config option for using built-in theme